mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-09-26 13:34:08 -03:00
Add an opt-in 'centralized' sidecar storage mode alongside the default 'alongside' layout. In centralized mode, .metadata.json sidecars and preview assets live under a configurable root (sidecar_storage_path, default <settings_dir>/sidecars), mirroring the library-relative directory structure: <root>/<library>/<root_basename>/<rel_dir>/. Backend: - settings: sidecar_storage_mode / sidecar_storage_path with validation; changing either refreshes the preview allowlist - config: centralized root added to preview-serving allowlist - lifecycle: delete / move / rename / folder-rename / folder-delete and undoable-delete staging all operate on the mirror tree in centralized mode (model files themselves never move); EXDEV-tolerant cross- filesystem moves - scanners: pending-hash filesystem scan walks the mirror tree in centralized mode; preview discovery reads from the sidecar dir; .civitai.info stays co-located in both modes - migration: SidecarMigrationUseCase moves sidecars+previews between layouts both directions (keep-newer conflict resolution, preview_url rewriting, WebSocket progress), exposed as POST+GET /api/lm/sidecars/migrate with a mode guard (force=true for the settings-first flow) Frontend: - settings modal: sidecar storage section (mode select + path input with browse/validation), mode-change confirmation offering immediate migration (force=true), and a 'Migrate Sidecars Now' action - i18n keys synced to all locales ([TODO: Translate] placeholders) Docs: metadata-json-schema.md gains a storage-location section; AGENTS.md records the sidecar_paths helper convention.
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""Application-level orchestration services for model routes."""
|
|
|
|
from .auto_organize_use_case import (
|
|
AutoOrganizeInProgressError,
|
|
AutoOrganizeUseCase,
|
|
)
|
|
from .bulk_metadata_refresh_use_case import (
|
|
BulkMetadataRefreshUseCase,
|
|
MetadataRefreshProgressReporter,
|
|
)
|
|
from .download_model_use_case import (
|
|
DownloadModelEarlyAccessError,
|
|
DownloadModelUseCase,
|
|
DownloadModelValidationError,
|
|
)
|
|
from .example_images import (
|
|
DownloadExampleImagesConfigurationError,
|
|
DownloadExampleImagesInProgressError,
|
|
DownloadExampleImagesUseCase,
|
|
ImportExampleImagesUseCase,
|
|
ImportExampleImagesValidationError,
|
|
)
|
|
from .filename_template_use_case import FilenameTemplateUseCase
|
|
from .sidecar_migration_use_case import (
|
|
SidecarMigrationProgressReporter,
|
|
SidecarMigrationUseCase,
|
|
)
|
|
|
|
__all__ = [
|
|
"AutoOrganizeInProgressError",
|
|
"AutoOrganizeUseCase",
|
|
"BulkMetadataRefreshUseCase",
|
|
"MetadataRefreshProgressReporter",
|
|
"DownloadModelEarlyAccessError",
|
|
"DownloadModelUseCase",
|
|
"DownloadModelValidationError",
|
|
"DownloadExampleImagesConfigurationError",
|
|
"DownloadExampleImagesInProgressError",
|
|
"DownloadExampleImagesUseCase",
|
|
"ImportExampleImagesUseCase",
|
|
"ImportExampleImagesValidationError",
|
|
"FilenameTemplateUseCase",
|
|
"SidecarMigrationProgressReporter",
|
|
"SidecarMigrationUseCase",
|
|
]
|