Commit Graph
675 Commits
Author SHA1 Message Date
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 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 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 4815cee748 Update huggingface-author-index.json 2026-08-01 22:51:04 +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 e3affba329 Add Model Resolver version status feature 2026-08-01 20:56:02 +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 74e4971e05 Update pyproject.toml v1.1.0 2026-08-01 17:08:06 +02:00
Dariusz L 7ba80de5d4 style(resolver): improve context menu accessibility and spacing 2026-08-01 17:07:56 +02:00
Dariusz L 9cbc3098c6 Preserve missing browser detail width across rerenders 2026-08-01 15:15:18 +02:00
Dariusz L 95699e72a8 Reorganize CSS design tokens and update README 2026-08-01 15:03:57 +02:00
Dariusz L 2abcf15406 chore(css): remove unused CSS custom properties from css-variables.css 2026-08-01 15:00:40 +02:00
Dariusz L 45c3aa19f1 Replace hardcoded CSS sizes with custom properties for resolver UI 2026-08-01 14:56:13 +02:00
Dariusz L e732f9c408 css: centralize repeated transition tokens into CSS variables 2026-08-01 14:52:41 +02:00
Dariusz L a4bc220b0f css: centralize repeated tokens into CSS variables for font stacks, shadows, and button heights 2026-08-01 14:46:34 +02:00
Dariusz L 851e7d5246 Replace CSS custom properties with literal values in resolver styles 2026-08-01 14:35:33 +02:00
Dariusz L e9ac7fb70b refactor(web/css): replace hardcoded colors with CSS custom properties
Adds new badge, gradient, and surface variables to css-variables.css,
then uses them across resolver-main.css and resolver-shell.css to
centralize theme values and simplify future color adjustments.
2026-08-01 14:28:09 +02:00
Dariusz L c31e724a8f refactor: replace additional hardcoded CSS values with design tokens in resolver stylesheets 2026-08-01 14:22:00 +02:00
Dariusz L 1f6d15da38 refactor: replace hardcoded CSS values with design tokens 2026-08-01 14:15:56 +02:00
Dariusz L 57a5a12aac chore: replace hardcoded CSS values with design tokens in resolver stylesheets 2026-08-01 13:59:10 +02:00
Dariusz L 7ba2a4c28a Increase resolver UI font size to 14px for better readability 2026-08-01 13:53:20 +02:00
Dariusz L d4cccde2c2 refactor: switch resolver UI to custom CSS variables and add dock drag preview 2026-08-01 13:48:02 +02:00
Dariusz L 25b09799fb Simplify Missing Models browser splitter resize behavior 2026-07-31 21:24:11 +02:00
Dariusz L df4d4a36ac Improve Missing Models browser resize behavior 2026-07-31 20:54:33 +02:00
Dariusz L 2afdf6d15d Update pyproject.toml v1.0.9 2026-07-29 17:03:58 +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 cb032c7c3d feat: track missing models for LoRA loader workflow signatures 2026-07-29 15:53:26 +02:00
Dariusz L 8822bb0064 Preserve Missing Models browser geometry during refresh 2026-07-28 19:05:43 +02:00
Dariusz L 10a0327328 feat: preserve Missing Models browser geometry during cached refresh 2026-07-28 19:03:08 +02:00
Dariusz L 48cc5c9050 Fix progress polling hover state regression in downloads tab 2026-07-28 18:59:45 +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 9aa7077a33 feat: preserve Missing Models browser during refresh instead of replacing it 2026-07-28 15:18:12 +02:00
Dariusz L df01b17148 Reuse visible missing model browser when navigating from resolved model
When the resolver dialog is already visible on the Missing Models tab,
showResolvedNodeModelInResolver now reuses the existing browser instead
of forcing a reload or requeuing the selection. This avoids unnecessary
UI refreshes and keeps the current view stable.

Changes:
- web/resolver/model_resolver.js: skip reopen/queue when the dialog is
  already visible on the missing tab; prefer existing browser selection
- web/resolver/views/missing_browser_methods.js: support
  preferExistingBrowser in selectWorkflowModelReference and center the
  selected row instead of scrolling to nearest
- tests/test_downloads_tab_workflow_route.mjs: cover reuse behavior and
  row-patching/centering
2026-07-28 14:50:53 +02:00
Dariusz L 1e7cad595c refactor: extract custom-node model adapters from inline handlers 2026-07-28 14:43:37 +02:00
Dariusz L 67a0fc27e7 feat: add callback-driven LoRA widget handling for Loaded Models refresh
- Configure callback-driven model widgets for LoRA Manager, LoraLoaderV2,
  Lora Stacker, and Power Lora Loader nodes in graph and loaded graph hooks
- Track callback-driven widget states to trigger context analysis and
  dialog refresh when LoRA lists or strengths change via widget callbacks
- Add signature helpers for callback-driven model list and strength changes,
  including Power Lora Loader dynamic lora_N widgets
- Extend Loaded Models tab with model DOM keys, identity normalization,
  copy-value updates with active/inactive grouping, and targeted strength
  updates from node widgets without full re-render
- Add tests verifying callback-driven refresh behavior, suppression respect,
  Power Lora Loader strength chip updates, and LoRA Manager list membership
  signature tracking
2026-07-28 14:23:11 +02:00
Dariusz L 2596ec804b Update pyproject.toml v1.0.8 2026-07-28 13:33:57 +02:00
Dariusz L 3d513f6587 Fix docked dialog drag snap threshold and add queue splitter resize feedback 2026-07-28 13:30:04 +02:00
Dariusz L fee001829b Pin missing browser list when saved detail width exceeds max 2026-07-28 13:17:31 +02:00
Dariusz L c0b7469b4d fix(missing-browser): keep detail pane available and table-preserving across widths
Remove the brittle is-detail-collapsed responsive behavior from the missing
browser. Replace the timeout-based width handler with requestAnimationFrame
split restoration, clamp the list min width to 340px, and drop the
collapsed-state guards so the detail pane, compositor preview, and Type
column remain usable regardless of container width.
2026-07-28 13:08:26 +02:00
Dariusz L e6c6de1c6f fix: show resize overlay during dialog shell gutter resize
Apply the is-resizing class at resize start and remove it on end,
and raise the related resize overlay z-index so sibling content stays
visible underneath the resize indicator.
2026-07-28 12:35:56 +02:00