Commit Graph
25 Commits
Author SHA1 Message Date
Vito 2cf9f42e73 fix: diagnostics and monitor respect config, singleton lifecycle (#132) (#133)
* fix: diagnostics, backup, and restore now respect config.json db path (#132)

* test: add regression tests for config-aware diagnostics and backup (#132)

* fix(test): use fresh event loop to avoid aiohttp test pollution

* fix: don't kill singleton image monitor when node instance is garbage collected

The __del__ method was calling stop_monitoring() on the shared singleton
ImageMonitor, killing it for ALL nodes whenever any single node instance
was garbage collected between workflow runs. This caused the monitor to
restart on every execution and miss image save events due to race conditions.

* test: add regression tests for image monitor singleton lifecycle

Ensures cleanup/del never stops the shared monitor, singleton is
thread-safe, and observer survives across node instance lifecycles.

* style: address PR review — log suppressed exceptions, remove unused imports
2026-04-03 06:22:55 -07:00
Vito Sansevero c9ca4be8b8 fix: custom image scan directory ignored due to wrong import (#108)
start_monitoring() used an absolute import (from py.config) to read
MONITORING_DIRECTORIES, which either failed with ImportError or loaded
a separate module instance with empty defaults. The configured custom
directory was never used, and auto-detection always kicked in.

Fixed by consolidating into the single relative import (from ..py.config)
that was already used for the MONITORING_ENABLED check.
2026-02-08 05:38:42 -08:00
Vito Sansevero 2737a4b1ef style: apply Black formatter (line-length=88) to all Python files
Automated formatting pass across 30 files to establish consistent code
style enforced by CI. No logic changes.
2026-02-07 08:30:09 -08:00
Vito Sansevero 4f62066c63 fix: harden nodes, validators, and utility modules
Phase 0-3 fixes from codebase audit:
- Extract shared node logic into prompt_manager_base.py (DRY)
- Add input validation guards to validators.py
- Fix logging_config.py buffer management
- Harden image_monitor.py against race conditions
- Fix prompt_tracker.py cleanup edge cases
- Fix diagnostics.py import path
- Wire config.py server instance correctly
2026-02-07 07:02:10 -08:00
Vito Sansevero 6ef040b4b8 refactor(comfyui): remove class_type conversion logic 2026-02-06 14:32:55 -08:00
Vito Sansevero f485825bfb fix: resolve gallery crash when thumbnails exist and prevent thumbnail-as-image linking
- Fix AttributeError: 'str' has no attribute 'as_posix' on thumbnail_rel_path
  in get_output_images and find_duplicates (thumbnail_rel_path is already a
  string from f-string construction, not a Path object)
- Fix NameError: total_images undefined in generate_thumbnails (was defined as
  total_media, causing progress logging and response to fail)
- Add URL encoding for paths in scan_output_dir for filenames with spaces
- Exclude thumbnails directory from image monitor to prevent linking thumbnail
  files to prompts via fallback mechanism
- Bump version to 3.0.31
2026-02-03 14:07:23 -08:00
Vito Sansevero a7d842a51c feat(settings): add configurable gallery scan directory
Add ability to configure a custom image scan directory in Settings:
- New "Image Scan Directory" field in Settings modal
- "Currently Monitoring" display shows active directory path
- Settings API now returns/saves gallery_root_path and monitored_directories
- Image monitor checks GalleryConfig before auto-detecting
- Restart notification when gallery path changes

Closes #76
2026-02-02 15:58:54 -08:00
Vito Sansevero c3aa41d679 feat: Add singleton management for PromptTracker 2026-02-02 15:09:58 -08:00
Vito Sansevero c50a7292c7 refactor(image_monitor): use info log level instead of debug 2026-02-02 15:09:48 -08:00
Vito Sansevero 22593e8514 docs: add comprehensive docstrings to all Python modules
- Add Google-style docstrings to main node files (prompt_manager.py, prompt_manager_text.py)
- Enhance database module docstrings with detailed parameter and return documentation
- Add comprehensive docstrings to all utils modules with usage examples
- Document API endpoints and configuration classes thoroughly
- Update module-level docstrings in all __init__.py files
- Ensure consistent naming (ComfyUI_PromptManager) across all documentation
- Follow Python best practices for docstring formatting
2025-08-12 06:51:36 -07:00
Vito Sansevero e2eef54eb3 feat(utils): Add ComfyUI integration utilities 2025-07-25 14:03:49 -07:00
Vito Sansevero 685e44fde0 style: Change log level from info to debug 2025-06-19 13:06:18 -07:00
Vito Sansevero ecbd2b4ca2 style: Change log level from info to debug 2025-06-19 13:06:09 -07:00
Vito Sansevero 299e74ebd5 style: Replace emojis with tags in diagnostics logs 2025-05-28 09:17:21 -07:00
Vito Sansevero 20d2483c3a fix(logging): add safe encoding for Windows compatibility 2025-05-28 09:17:09 -07:00
Vito Sansevero d255be3c99 refactor(diagnostics): Replace print with logger info 2025-05-28 08:28:26 -07:00
Vito Sansevero 1ea4ac7565 refactor(image_monitor): Replace print with logger 2025-05-28 08:28:18 -07:00
Vito Sansevero 367bc6c745 refactor(metadata_extractor): Replace print with logger 2025-05-28 08:28:09 -07:00
Vito Sansevero 226263495b feat(prompt_tracker): integrate logging system 2025-05-28 08:27:58 -07:00
Vito Sansevero c87d376c25 feat(logging): Add centralized logging configuration 2025-05-28 08:27:13 -07:00
Vito Sansevero fb11ce5013 refactor(prompt_tracker): Avoid duplicate prompt saving Fixes: #3 2025-05-27 12:36:28 -07:00
Vito Sansevero 8b399e2d3e refactor(prompt_tracker): add detailed logging for prompts, fixes #3 2025-05-27 11:10:31 -07:00
Vito Sansevero 777d5e6a6a feat(image_monitor): add fallback prompt handling 2025-05-27 10:59:01 -07:00
Vito Sansevero 2de1596568 refactor(prompt_tracker): increase prompt timeout to 10m 2025-05-27 10:58:46 -07:00
Vito Sansevero de1fe46563 feat(utils): add utility modules for diagnostics, hashing, image monitoring, metadata extraction, prompt tracking, and validation 2025-05-24 12:26:31 -07:00