Commit Graph

8 Commits

Author SHA1 Message Date
Ethanfel 86b9e9cf22 feat: loading-screen status overlay (no more silent 'Comfy' splash)
Adds a small status line on ComfyUI's loading splash showing whether
Tenaciousload is serving object_info from cache or building it (live node
count + elapsed time, with a 'scanning model folders over the network' hint
when the CIFS walk stalls progress). Removes itself on the app 'setup' hook.

Backend tracks build progress (_build_state) and exposes GET /tenaciousload/status;
frontend web/loading-status.js polls it and renders an unobtrusive overlay.
Unit-tested progress tracking + status shape.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 09:16:20 +02:00
Ethanfel ddbaa21b10 fix: make input-folder watching opt-in (default off) to keep restarts fast
Folding the input-dir mtime into the cache fingerprint backfired on busy input
folders (e.g. a video workflow constantly adding clips): the input dir changed
on nearly every restart, invalidating the cache and forcing a ~5-min rebuild of
the (now 74 MB) object_info over the CIFS model mount on each load -- the exact
slowness the pack exists to avoid.

Input watching is now opt-in via TENACIOUSLOAD_WATCH_INPUT=1. By default new
input files are picked up via a refresh button, same as new models. Node code
changes are still auto-detected. Unit-tested.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 08:50:57 +02:00
Ethanfel 4a1c2f3a99 feat: auto-invalidate cache when installed node set changes
Fingerprints NODE_CLASS_MAPPINGS; on the first object_info request after a
restart, drops the cached object_info if a node was installed/updated/enabled/
removed, so new nodes appear without a manual refresh. First run (no stored
signature) does not invalidate. Unit-tested.

Also documents that the pack has no deps and does not interfere with other
nodes' installs/updates or their own routes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 23:16:39 +02:00
Ethanfel a8d8b3792c feat: add Quick (incremental) and Register refresh modes
- quick:    incremental rescan — re-walks only folders whose mtime changed
            (per-dir snapshot persisted to cache/scan_snapshot.json); reuses
            the cache for unchanged folders. Catches new/removed/renamed files.
- register: append specific file path(s) with NO folder walk (instant disk-wise)
- full:     unchanged default (clear cache -> full re-walk)

Frontend exposes all three as Extensions-menu commands; the graph node gains a
quick/full mode widget. POST /tenaciousload/refresh now takes {mode, folder, files}.
Unit-tested: incremental scan rescans only the changed dir; register adds/skips.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 01:25:12 +02:00
Ethanfel 0084c0bd12 docs: soften remaining 'milliseconds' in alt-text for consistency
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 00:42:05 +02:00
Ethanfel e3a8af5a53 docs: honest 'minutes -> seconds' framing + document --enable-compress-response-body
- banner/diagram: replace localhost '4 ms' (server-only) with the real
  page-load experience (minutes -> seconds); soften tagline to 'Fast'
- README: add section on the optional --enable-compress-response-body flag
  for gzipping the rest of ComfyUI (frontend scripts, other APIs)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 00:41:41 +02:00
Ethanfel ee1932a534 docs: add banner + how-it-works SVG diagrams to README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 00:28:12 +02:00
Ethanfel 2c1777ae4e Initial commit: in-process object_info cache + refresh UI
ComfyUI-Tenaciousload speeds up ComfyUI page loads for large model/LoRA
collections by caching the slow /api/object_info response in memory and on
disk (survives restarts) and serving it gzipped in ~milliseconds, instead of
rebuilding it (and freezing the event loop) on every load.

Adds a "Refresh Models / LoRAs" menu button, a graph node, and a
POST /tenaciousload/refresh endpoint to rebuild the cache after adding or
removing models. No external dependencies; no nginx/docker required.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 00:25:41 +02:00