Commit Graph
142 Commits
Author SHA1 Message Date
Dariusz L 9d0321bb81 refactor(frontend): extract base model aliases 2026-08-02 13:36:12 +02:00
Dariusz L 57e6f8c61d refactor(frontend): extract search source policies 2026-08-02 13:34:02 +02:00
Dariusz L c2aaf3b7e6 test(frontend): cover persisted search source flags 2026-08-02 13:32:11 +02:00
Dariusz L eb8f27cecb test(frontend): cover search source policies 2026-08-02 13:31:23 +02:00
Dariusz L 10ef9504dd test(frontend): cover download progress states 2026-08-02 13:28:17 +02:00
Dariusz L 396a28ba4f refactor(frontend): extract download progress policy 2026-08-02 13:27:21 +02:00
Dariusz L f2d11bd477 refactor(frontend): extract queue storage methods 2026-08-02 13:26:21 +02:00
Dariusz L 922a30fdd4 refactor(frontend): extract shared API client 2026-08-02 13:20:20 +02:00
Dariusz L 64022c8509 test(frontend): cover ComfyUI entrypoint contract 2026-08-02 13:17:54 +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 8eca219420 docs: document backend architecture and checks 2026-08-02 03:31:01 +02:00
Dariusz L e489c3fac7 test(integration): exercise public route entrypoint 2026-08-02 03:25:51 +02:00
Dariusz L c725dfa05f test(routes): cover compatibility registrations 2026-08-02 03:23:56 +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 23d3585395 test(workflow): cover workflow analysis service routes 2026-08-02 02:42:03 +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 ffc63529ed test(downloads): add download route tests for headers, metadata, and error handling 2026-08-02 01:56:23 +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 a6634a5f61 test(search): add SearchOrchestrator component tests 2026-08-02 01:24:41 +02:00
Dariusz L 1f82523bef test(search): add search service component tests, coverage config, and dev dependencies 2026-08-02 01:15:45 +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 632ce2a4ce Add route registry tests 2026-08-02 00:42:10 +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 9b5567f8e1 Add route tests and ClassVar typing to refactoring targets 2026-08-01 23:36:43 +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 422899e91b feat(resolver): keep model description separate from version notes 2026-08-01 21:12:53 +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