12 Commits

Author SHA1 Message Date
Ethanfel acaa9f0168 feat(search): draw real node box from disabled-pack source
Publish to Comfy registry / Publish Custom Node to registry (push) Has been cancelled
Click a node name (or 'Draw this node') in the mirror-search palette to render
an imitation ComfyUI node box with its real input sockets, widget defaults, and
output sockets. Since disabled packs aren't loaded (no /object_info entry), a
new read-only backend module (node_introspect.py) AST-parses the pack on disk —
never importing or executing it — to recover INPUT_TYPES / RETURN_TYPES from a
literal NODE_CLASS_MAPPINGS. New GET /nodes-stats/node-schema endpoint resolves
the disabled pack dir (handling @version suffixes / case) and returns the schema
off the event loop. Frontend lazily fetches + caches per node, renders sockets
vs widgets with type-colored dots, and falls back to a placeholder for packs
that build their node list dynamically.

End-to-end against the live install: 67/68 disabled packs resolve on disk, ~92%
of nodes render a real box, the rest fall back cleanly. Adds 7 parser unit
tests (36 total green). Bump to 1.6.0.
2026-06-21 15:23:58 +02:00
Ethanfel c53fdd8560 feat(trials): stop_trial and clear trials on reset 2026-06-21 12:27:37 +02:00
Ethanfel 4ebad1bd6c feat(trials): reset_trials_for zeroes counter on use 2026-06-21 12:27:05 +02:00
Ethanfel 69eef149eb feat(trials): tick_boot_days counts distinct boot-days 2026-06-21 12:26:31 +02:00
Ethanfel 7b5fb32b31 feat(trials): add trial_packages table, start_trial, get_trials 2026-06-21 12:25:52 +02:00
Ethanfel ba7f503e7d feat: disable unused packages via ComfyUI Manager
Add per-package and per-section "Disable" buttons on the Safe to Remove
and Consider Removing tiers. Uses ComfyUI Manager's queue API
(/customnode/installed, /manager/queue/disable|start|status) to move
packages into custom_nodes/.disabled, reconciling against Manager's
actual state and surfacing a restart banner. Hidden when Manager is
absent.

Also:
- tracker: extract shared _classify_age() recency helper (DRY), add tests
- js: centralize STATUS_META, replace inline hover handlers with CSS,
  de-duplicate summary bar
- bump version to 1.2.0, update README

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 10:36:19 +02:00
Ethanfel 38e95c150a fix: atomic ModelMapper build and isolate test NODE_CLASS_MAPPINGS mutations
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 18:03:16 +02:00
Ethanfel 9891b3ec41 feat: add ModelMapper with folder_paths introspection
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 18:00:06 +02:00
Ethanfel ff42016009 test: add tier coverage for safe_to_remove and consider_removing 2026-04-09 17:58:26 +02:00
Ethanfel 800692d190 feat: add model_usage table and tracker methods
Adds model_usage schema, record_model_usage(), get_raw_model_stats(), and get_model_stats() to UsageTracker, with reset() support and 8 passing tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 17:55:27 +02:00
Ethanfel 70edeb0631 fix: configure folder_paths mock to prevent disk pollution in tests 2026-04-09 17:53:18 +02:00
Ethanfel 3ed778a0d6 test: add conftest with ComfyUI module stubs 2026-04-09 17:47:16 +02:00