Commit Graph
265 Commits
Author SHA1 Message Date
Dariusz L c35f5bb5b2 refactor: extract aria2 transfer backend 2026-08-02 16:55:52 +02:00
Dariusz L 9360783628 refactor: extract Hugging Face Xet backend 2026-08-02 16:51:17 +02:00
Dariusz L 3e36d1ce6a refactor: extract aria2 daemon backend 2026-08-02 16:45:16 +02:00
Dariusz L 6ef551877d refactor: extract downloader backend helpers 2026-08-02 16:40:54 +02:00
Dariusz L 29a051e79a refactor: extract downloader preview handling 2026-08-02 16:37:17 +02:00
Dariusz L 7ba4b6fa8a refactor: extract downloader metadata helpers 2026-08-02 16:31:25 +02:00
Dariusz L 340fbdca59 refactor: extract downloader validation helpers 2026-08-02 16:21:58 +02:00
Dariusz L 1ce9b77de3 refactor: add download implementation package 2026-08-02 16:18:35 +02:00
Dariusz L ccd2585663 Add Comfy Registry fallback and retry logic to version checks
- Retry GitHub pyproject version fetch up to 3 times on failure
- Fall back to Comfy Registry install endpoint when GitHub is unavailable
- Avoid caching failed version checks, so stale unavailable states do not persist
- Add targeted tests for registry fallback and failed-check caching behavior
2026-08-02 13:04:47 +02:00
Dariusz L 57b79ba208 refactor: remove dead compatibility shims 2026-08-02 04:03:09 +02:00
Dariusz L bb0e921511 refactor(routes): remove unused compatibility facades 2026-08-02 03:45:51 +02:00
Dariusz L e09d3c2bf8 refactor(entrypoint): extract node definitions 2026-08-02 03:19:32 +02:00
Dariusz L a6e8fe1c55 refactor(entrypoint): extract extension runtime state 2026-08-02 03:15:43 +02:00
Dariusz L f3a6c9db6f fix(routes): preserve HTTP error statuses 2026-08-02 03:12:21 +02:00
Dariusz L 4d65a4dc87 refactor(search): extract search support service 2026-08-02 03:08:50 +02:00
Dariusz L 3f0359e1f4 refactor(context): require hash and download dependencies 2026-08-02 03:04:29 +02:00
Dariusz L 0b2166ae58 refactor(context): require metadata service dependencies 2026-08-02 03:01:10 +02:00
Dariusz L d43fd41d32 refactor(context): require loaded models dependencies 2026-08-02 02:59:38 +02:00
Dariusz L b7a1b1cf07 refactor(context): require workflow service dependencies 2026-08-02 02:58:08 +02:00
Dariusz L 9cd8966d13 refactor(context): require directory service dependencies 2026-08-02 02:55:06 +02:00
Dariusz L 39a0606afa refactor(context): require scanner service dependencies 2026-08-02 02:52:37 +02:00
Dariusz L 8744da536b refactor(settings): extract settings routes into SettingsService 2026-08-02 02:48:51 +02:00
Dariusz L 3fdec8c24e refactor(loaded): extract loaded model route handlers into service 2026-08-02 02:38:08 +02:00
Dariusz L d8aed83e04 refactor(directories): extract directory route handlers into DirectoryService 2026-08-02 02:25:08 +02:00
Dariusz L c2f44e7831 refactor(metadata): extract metadata route handlers into MetadataService and add tests 2026-08-02 02:14:10 +02:00
Dariusz L 627dd5a84a refactor(scanner): extract scanner route handlers into ScannerService and add tests 2026-08-02 02:05:27 +02:00
Dariusz L 68321b7799 refactor(downloads): extract download route handlers into DownloadService and add tests 2026-08-02 01:50:27 +02:00
Dariusz L e9ffb8f632 refactor(hash): extract hash route handlers into HashService and add tests 2026-08-02 01:38:01 +02:00
Dariusz L b9054f0d22 refactor(search): centralize route context dependency resolution in SearchDependencies 2026-08-02 01:04:10 +02:00
Dariusz L b4b03bb335 refactor(search): extract orchestrator, providers, and cache from SearchService
Replace the 1095-line monolithic SearchService with a thin facade that
delegates to SearchOrchestrator. Split the implementation into three
focused modules:

- search_orchestrator.py: request parsing, provider coordination, and
  response construction
- search_providers.py: per-source execution, progress callbacks, and
  async task creation
- search_cache.py: timestamping and stable cache stamping for results

Add unit tests for the new components in
tests/test_search_service_components.py. Preserve the existing HTTP
route behavior by keeping SearchService.search_sources as the stable
route-facing API.
2026-08-02 00:56:18 +02:00
Dariusz L 380e5d4f9b refactor: replace generic DependencyCallable with explicit Protocols for model services 2026-08-02 00:32:57 +02:00
Dariusz L 1dd1b50635 refactor: introduce typed dependency dataclasses for model services
Replace dynamic MODEL_SERVICE_DEPENDENCIES injection with frozen dataclasses
(CivitAISearchDependencies, CustomUrlDependencies, ModelDetailsDependencies)
to make service dependencies explicit and type-safe. Update model services to
construct via RouteContext, and add tests enforcing minimal dataclass fields.
2026-08-02 00:25:45 +02:00
Dariusz L c247c4a7a4 refactor: split model_service into focused service classes
Break down the monolithic model_service into smaller, single-responsibility
services: CivitAISearchService, CustomUrlService, and ModelDetailsService.
Introduce ModelServiceDependencies base class to centralize RouteContext
dependency injection. Update model_service to act as a thin facade that
delegates to the specialized services. Add unit tests validating the new
service boundaries and basic request validation behavior.
2026-08-02 00:17:45 +02:00
Dariusz L 5fd9bc5802 refactor: extract model route handlers into ModelService 2026-08-02 00:10:25 +02:00
Dariusz L be0794e36d refactor: extract workflow route handlers into WorkflowService 2026-08-01 23:56:17 +02:00
Dariusz L 91fa8f391d refactor(search): extract search orchestration into SearchService 2026-08-01 23:50:56 +02:00
Dariusz L db7977fb55 refactor(routes): split large route modules into focused submodules
Break monolithic model_info, search, and workflow route files into
smaller modules by responsibility: civitai_search, custom_url,
model_details, search_support, source_search, workflow_analysis,
hashes, and loaded_models. Update registry imports to preserve the
existing route registrations and API surface. Add partition coverage
tests to ensure no route endpoints are dropped or duplicated.
2026-08-01 23:19:56 +02:00
Dariusz L 6ff887f004 refactor: introduce RouteContext for route dependency registration 2026-08-01 23:09:51 +02:00
Dariusz L c7a0f2f78c fix: prefer selected-file hash over inherited workflow or source hash 2026-08-01 22:50:13 +02:00
Dariusz L d906a14804 refactor: split route registry into dedicated route modules 2026-08-01 22:32:20 +02:00
Dariusz L b12cc65a10 refactor: extract API routes into core/routes package
Move the inline route definitions out of __init__.py into a new core/routes
package (registry, base_models, helpers, settings, version). Add the
JobProgressTracker utility in core/progress.py and extract version discovery
logic into core/version.py. Update tests to cover the refactored structure.
2026-08-01 21:57:51 +02:00
Dariusz L 201936b79a feat(downloader): add SHA-256 verification for Python downloads
Implement streaming SHA-256 verification for Python download backend,
writing to a .part file first and publishing to the final path only after
the hash matches the source metadata. Mismatched downloads are preserved
at .badsha instead of being silently deleted. Close the download response
in a finally block to avoid leaking handles on cancellation or errors.
2026-08-01 20:28:18 +02:00
Dariusz L a8ba99800c Expand HuggingFace author fallback to multiple known publishers
Support both Comfy-Org and Kijai author indexes as known HuggingFace fallbacks, aggregate their status in the backend, refresh the cached author index, and update the frontend UI and tests.
2026-07-29 16:18:25 +02:00
Dariusz L f8a6e8b626 feat: add HuggingFace model details, variant table, and download context 2026-07-28 17:20:36 +02:00
Dariusz L 1e7cad595c refactor: extract custom-node model adapters from inline handlers 2026-07-28 14:43:37 +02:00
Dariusz L 36fa574562 Preserve workflow UI state and avoid redundant matching during refresh
- Skip fuzzy matching for already-resolved model references in the backend
- Keep existing nodes in their previous result positions during incremental workflow analysis
- Simplify frontend workflow sync and add a content-preserving refresh path
- Preserve scroll position and suppress progress overlay during background Missing/Loaded Models refresh
- Add backend and frontend tests for the new incremental refresh behavior
2026-07-27 18:02:10 +02:00
Dariusz L d29803aeff feat: incremental workflow analysis via node fingerprint cache and preserved loaded models refresh on widget changes 2026-07-27 17:24:17 +02:00
Dariusz L 15e0b932e8 Add shared workflow model inventory cache and improve progress/hash behavior 2026-07-27 17:05:17 +02:00
Dariusz L a5910e1354 Link parent model resources to Civitai images and preserve additional resources 2026-07-27 16:09:08 +02:00
Dariusz L 23af562721 Separate model description from version description in metadata, responses, and UI 2026-07-27 15:31:59 +02:00