Disable/enable no longer require ComfyUI Manager:
- New pack_fs.py moves packs in/out of custom_nodes/.disabled/ (no import,
delete, or re-clone). Fallback for hand-cloned packs, loose single-file
nodes, or when Manager is absent. enable strips the @version suffix so
packs restore as clean, importable dir names.
- Routes: native-disable, native-enable, disabled-packs.
- Frontend routes each disable per-pack (Manager queue vs native move), and
shows an Enable button on recoverable packs in the Uninstalled tier. The
restart banner degrades to a manual-restart notice when no Manager exists.
Whitelist (packages-only): a star toggle protects a pack — pulled into its
own pinned group, no Disable button, skipped by the 7-day trial auto-disable.
- New whitelist_packages table; whitelisted flag on package stats.
- Routes: whitelist, whitelist/add, whitelist/remove.
Tests: test_pack_fs.py, test_whitelist.py (60 passing).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
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>
Moves the SQLite database from the extension folder to
ComfyUI/user/nodes_stats/ so stats survive reinstalls.
Automatically migrates existing data on first load.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Directory names vary depending on how users clone or symlink
(e.g. ComfyUI-Manager vs comfyui-manager).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These are management/meta tools, not workflow node packages.
Showing them in the stats would be confusing since they're
never used in actual workflows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
node_counts already contains all packages from both mapper.mapping
and get_all_packages(), so the second call for installed_packages
was unnecessary duplicate work.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move SQLite schema creation from import time to the first
actual DB operation, which happens in a background thread.
Avoids blocking ComfyUI startup on slow storage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Packages that only exist in the DB but are no longer in
NODE_CLASS_MAPPINGS or LOADED_MODULE_DIRS get status
"uninstalled" and appear in a separate greyed-out section
at the bottom of the dialog.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Packages are now classified as:
- Used: actively used
- Recently Unused (<1 month): too early to judge
- Consider Removing (1-2 months unused): deletion suggestion
- Safe to Remove (2+ months unused): confident removal candidate
Never-used packages are classified based on how long tracking
has been active. Summary bar and sections are color-coded.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tracks every node used in every prompt submission via SQLite,
maps class_types to source packages, and exposes API endpoints
and a frontend dialog for viewing per-package usage stats.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>