Commit Graph
71 Commits
Author SHA1 Message Date
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
Dariusz L 16a69f6c47 refactor: unify provider JSON requests, catalog sync, and normalization across backend; add frontend HTML escaping helpers 2026-07-20 15:13:57 +02:00
Dariusz L 7ee358b2c5 Improve model matching by normalizing technical suffixes and family signatures 2026-07-20 14:15:41 +02:00
Dariusz L 6f1e6aea34 Show Bad type badge when local match file type is not accepted by node catalog 2026-07-20 12:46:04 +02:00
Dariusz L 2f7a2c5869 refactor(search): preserve workflow path context and standardize tooltips 2026-07-20 12:12:34 +02:00
Dariusz L a4460afa65 fix(workflow_analyzer): ignore generic model_name STRING widgets in metadata/search nodes
Generic widget names such as model_name are no longer treated as local
model references by default. Only folder-backed schemas, known widget
indexes, or a model-typed combo/output pairing now admit an extensionless
value.

This prevents metadata/search nodes (for example Civitai Hash Fetcher)
with a model_name STRING input from being incorrectly reported as missing
models.

Added test_model_name_string_used_as_metadata_query_is_ignored to cover
the regression.
2026-07-19 19:34:10 +02:00
Dariusz L fb600a3868 Refine workflow model reference detection
- Accept explicit model URNs without requiring model widget metadata
- Restrict model scanning to widgets with category/model hints or model-like filenames
- Remove over-broad single-widget-value detection path
- Add tests for cached model text, custom selectors, and constant/model slot edge cases
2026-07-19 19:10:54 +02:00
Dariusz L 8b2d200f77 Normalize select_safetensors to diffusion_models 2026-07-19 15:46:34 +02:00
Dariusz L c1e7dcfa1c Preserve resolver display mode when auto-opening for missing models
Add openResolverForDetectedMissingModels() in model_resolver.js to
keep the current resolver display state when missing models are
detected: if the resolver dialog is already visible, schedule an
active workflow refresh instead of re-activating the button; if it
is hidden, activate the resolver button as before.

Update the auto-open-on-missing path to use the new method, and
adjust/add tests to cover the preserved display mode behavior.
2026-07-19 15:28:47 +02:00
Dariusz L 0047514f7c Add auto_open_on_missing setting to control resolver auto-launch 2026-07-19 15:21:04 +02:00