80 Commits
Author SHA1 Message Date
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 37d31b6782 Improve resolver docked-splitter responsiveness and external resize behavior 2026-07-28 12:12:09 +02:00
Dariusz L 8b2f9e81cb refactor: improve missing browser splitter drag with compositor preview and threshold
- Add drag threshold and layout frame stride to splitter drag utility
- Use onPreview callback to animate splitter offset via translate3d during drag
- Simplify resize class and cleanup logic in missing browser methods
- Replace deferred release UI cleanup with direct activation/cleanup calls
- Update CSS to add resizing overlay and remove transition during resize
- Add test covering compositor preview behavior and CSS constraints
2026-07-28 01:25:07 +02:00
Dariusz L 643e198737 feat: add docked drag-to-undock behavior for Model Resolver
Allow dragging the docked Model Resolver dialog from its drag handle to
undock it into a floating window, with a live undock drop preview.

- Remember the dock container width and reuse it for the undock preview
- Restore the pre-dock floating size instead of falling back to defaults
- Restrict topbar drag while docked to the dedicated drag handle
- Update tests to cover the new docked drag lifecycle and preview markup
2026-07-27 19:45:30 +02:00
Dariusz L c62a88f86a Make floating dialog drag compositor-friendly and avoid forced style reads 2026-07-27 19:33:19 +02:00
Dariusz L f6db340116 Refine download tab route CSS and corresponding expectations 2026-07-27 19:11:42 +02:00
Dariusz L c599a26f55 Implement two-line status card layout for manual model selection in downloads tab
- queue_methods.js: refactor updateSelectedBarForMissing to use a fixed two-line HTML structure with icon, label, code, and action buttons
- resolver-main.css: add .mr-selected-summary/.mr-selected-status-icon/.mr-selected-actions styling and adjust .mr-missing-detail-pane button/link treatments for the new layout
- test_downloads_tab_workflow_route.mjs: assert the new markup, class structure, and CSS selectors for the selected status card
2026-07-27 19:06:51 +02:00
Dariusz L aa2d08d995 Fix Missing Models row virtualization and add regression test 2026-07-27 18:53:39 +02:00
Dariusz L ef3453d604 Refactor workflow apply path to update graph widgets directly and suppress duplicate refresh hooks
Replace graph reconfigure with targeted widget updates so applying resolved models does not re-trigger node context analysis or duplicate dialog refreshes. Add workflow refresh suppression state, defer ComfyUI model catalog refresh until after widget linking, and track missing-workflow signatures separately from general workflow changes.
2026-07-27 18:37:44 +02:00
Dariusz L 92c8227bda Skip Missing Models refresh for strength-only widget changes 2026-07-27 18:22:04 +02:00
Dariusz L 726c3a9e02 Preserve missing model selection across workflow model changes
Add workflow slot key helpers and remap selected and batch-selected keys
when the underlying missing model list changes after a workflow update.
2026-07-27 18:12:34 +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 d8db1a05cb Use shared workflow model inventory in model-hashes route 2026-07-27 17:39:35 +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
Dariusz L 31ad1cde7c refactor: introduce Model Resolver-owned metadata sidecars and build modes 2026-07-27 15:00:18 +02:00
Dariusz L 63ed2b8ca7 feat: support video previews in model downloads, tooltips, and info dialogs 2026-07-26 23:39:09 +02:00
Dariusz L 895de19392 Hide model tooltip when context menu is shown 2026-07-26 21:50:01 +02:00
Dariusz L e1c4359dc3 Serve adjacent model previews in tooltips via /model_resolver/model-preview 2026-07-26 21:13:11 +02:00
Dariusz L c01c31df32 feat: generate model preview images during download 2026-07-26 20:58:31 +02:00
Dariusz L 2d6be246b4 Extract and display copyable CivitAI ComfyUI workflow metadata in model previews
- Preserve existing image metadata when re-normalizing CivitAI model images
- Add extractComfyWorkflow helper to recover pasteable editor workflows from image metadata, including nested/double-encoded JSON and non-finite number tolerance
- Surface recovered workflows as a copyable button in the model info image preview under Other metadata
- Add focused tests for workflow extraction, metadata preservation, and edge cases
2026-07-26 20:40:41 +02:00
Dariusz L 58e1aeff29 Preserve full CivitAI metadata in LoRA Manager sidecars 2026-07-26 19:56:29 +02:00
Dariusz L c6ff826028 Add Suggest Subfolder context menu for CivitAI and CivArchive download results 2026-07-26 19:38:41 +02:00
Dariusz L 21822224b7 Update AzLogs to 2.0.1 and centralize rotated log filename handling 2026-07-24 22:01:41 +02:00
Dariusz L e568f81f2b feat(civarchive): prioritize known mirrors for remote size probes 2026-07-24 21:42:11 +02:00
Dariusz L 486ff262f1 fix: normalize Windows backslash paths consistently in frontend path joins 2026-07-24 21:35:38 +02:00
Dariusz L 6ff9db2af6 normalize subfolder paths to forward slashes across backend and frontend 2026-07-24 21:22:31 +02:00
Dariusz L 90a3e7583e fix(file-manager): treat explorer exit code 1 as success on Windows 2026-07-24 21:07:05 +02:00
Dariusz L d614c454ef feat(file-manager): make open-containing-folder cross-platform
Replace the Windows-only Explorer behavior with a host-file-manager
implementation that supports Windows, macOS, and Linux. The endpoint
now validates input, handles frontend backslash paths on POSIX, returns
structured errors, and reports the launcher/platform. Update README
wording and add tests for the new module.
2026-07-24 21:03:45 +02:00
Dariusz L 79e01ab225 frontend: use exact download category folder keys as display labels 2026-07-24 20:37:29 +02:00
Dariusz L 390ed097a6 feat(civitai): handle devalue-serialized tRPC payloads in CivitAI search 2026-07-24 19:16:59 +02:00
Dariusz L 467b1987e1 Improve LoRA model strength detection across workflow analysis and UI 2026-07-24 17:57:27 +02:00
Dariusz L dcbb5dc8e1 Add locate-node context action for loaded models with subgraph awareness 2026-07-24 16:40:05 +02:00
Dariusz L 1b97cddc6f frontend: resolve pending node context menu models with immediate fallback 2026-07-24 16:27:07 +02:00
Dariusz L 21e6e4069d frontend: add Model Resolver node context menu icon and spacing 2026-07-24 16:13:44 +02:00
Dariusz L 668cecea2d Make resolver workflow model selection survive analysis timing
Queue workflow model reference selection requests in the dialog, wait for
workflow analysis to complete before attempting selection, and handle
superseded or timed-out requests gracefully.

- Track pending selection requests on the dialog with status fields
- Apply queued selections from lifecycle graph methods after analysis
- Await loadWorkflowData/loadLoadedModels so the caller can proceed
  after tab content is actually ready
- Add timeout handling with user-visible warnings when selection cannot
  complete
- Cover queueing, superseding, waiting, and completion in JS tests
2026-07-24 16:00:10 +02:00
Dariusz L d368a6dffc frontend: add Model Resolver node context menu action and workflow selection support 2026-07-24 15:49:52 +02:00
Dariusz L 1ee4c6ce4c workflow_analyzer: handle implicit control_after_generate widgets in dynamic layouts
Treat control_after_generate widgets that are implicitly inserted after seed
widgets as non-model widgets when analyzing dynamic node layouts. This
prevents the resolver from attempting to resolve control values such as
'fixed', 'randomize', 'increment', and 'decrement' as model paths.
2026-07-24 15:22:55 +02:00
Dariusz L ac9bf820c8 Handle control_after_generate widget indexes in workflow analyzer 2026-07-24 15:10:00 +02:00
Dariusz L 03c545e297 Improve workflow analyzer widget category hints and test coverage 2026-07-24 14:43:18 +02:00
Dariusz L 45ea998068 Resolve GGUF models by normalized download category alias 2026-07-24 14:11:25 +02:00
Dariusz L da7d9b3fc9 Skip non-model reference categories in workflow analyzer
Treat widget values under the configs and custom_nodes dynamic
categories as non-model references so the workflow analyzer does
not falsely mark them as missing models. Added a regression test
to verify a checkpoint widget is still detected when a config
widget is present.
2026-07-24 14:04:07 +02:00
Dariusz L 854cb2c08c track explicit search sources and gate local database download visibility 2026-07-22 13:25:33 +02:00
Dariusz L d293b0aaf8 Treat model_gguf as diffusion_models and render accepted file formats in missing-model UI 2026-07-20 16:54:28 +02:00
Dariusz L 097be623f4 feat: preserve CivArchive page URLs separate from HuggingFace mirrors, fix HTML array escaping, and accept provider array payloads
Backend:
- Keep CivArchive source page URL distinct from HuggingFace download mirrors in download metadata
- Handle CivitAI hash lookup HTTP errors and unexpected JSON shapes without caching failures
- Allow network JSON requests to return arrays as well as objects

Frontend:
- Escape each item individually when interpolating arrays into HTML templates
- Prefer the selected provider's page URL over cross-provider mirrors in context menus and download targets
- Reuse source link resolution for model info display

Tests:
- Add coverage for CivArchive metadata URL isolation, HTML array escaping, provider array responses, and CivitAI hash lookup caching behavior
2026-07-20 16:16:09 +02:00
Dariusz L 60ca3a381a fix: isolate manual/HuggingFace metadata from stale CivitAI provenance 2026-07-20 15:34:32 +02:00