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>
Automatically publishes to Comfy registry when pyproject.toml
is updated on master. Can also be triggered manually.
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>
Replace ComfyButton (which rendered as text) with a plain
button using our custom SVG icon, inserted at the same
menu position via app.menu.settingsGroup.
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>
Updated documentation to reflect the 4-tier classification system
and uninstalled detection. Added SVG logo and color-coded status
indicator dots. Added architecture diagram and collapsible API
response example.
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>
Record usage in a daemon thread to avoid blocking the event loop
with SQLite fsync on slow storage. Replace text button label with
a bar-chart-with-nodes SVG icon in the legacy menu fallback.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds button via app.menu.settingsGroup using ComfyButton with
bar-chart-2 icon. Falls back to legacy .comfy-menu DOM for
older ComfyUI versions.
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>