Commit Graph
33 Commits
Author SHA1 Message Date
James VeitchandClaude Sonnet 4.6 feea1c0960 fix(002): update @description to reflect actual nodes (T030-I)
Replaces stale 'model memory management' text with an accurate description
of FormatString, RandomChoice, and CircuitBreaker. Matches the text in
comfy-manager-entry.json exactly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:25:06 +01:00
James VeitchandClaude Sonnet 4.6 75a3efe021 test(002): failing tests for @description accuracy in __init__.py (T030-T)
2 tests RED: @description mentions non-existent 'model memory management'
and omits 'circuit' (CircuitBreaker). One test already passes (no Model
Unloader mention) — correct baseline.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:24:48 +01:00
James VeitchandClaude Sonnet 4.6 624ce0b11c feat(002): add comfy-manager-entry.json for ComfyUI Manager submission (T020-I)
Draft entry ready for PR to ltdrdata/ComfyUI-Manager/custom-node-list.json.
Contains author, title, reference, files, install_type=git-clone,
description (accurate, no non-existent nodes), and all 3 nodenames.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:24:23 +01:00
James VeitchandClaude Sonnet 4.6 62a0250939 test(002): failing tests for Manager entry JSON (T020-T)
4 tests RED: comfy-manager-entry.json does not exist yet. Tests validate
required fields, install_type=git-clone, and nodename list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:24:09 +01:00
James VeitchandClaude Sonnet 4.6 eec7192f4f fix(002): hand-author requirements.txt; promote aiohttp to runtime deps (T010-I, T011-I)
requirements.txt now lists only jinja2>=3.1.6 per ADR-003.
aiohttp>=3.9.0 moved from [dependency-groups].dev to
[project.dependencies] so pip-only installs get the dep too.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:23:48 +01:00
James VeitchandClaude Sonnet 4.6 67dff3efef test(002): failing tests for requirements.txt correctness and aiohttp dep (T010-T, T011-T)
5 tests RED as expected: jinja2 missing, colorama/termcolor/bare-dot
still present, aiohttp not in [project.dependencies].

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:23:21 +01:00
James VeitchandClaude Sonnet 4.6 80ecf9cc39 test(002): scaffold test_packaging.py and BDD feature files (T001, T002)
18 stub tests pass; 4 Gherkin feature files cover US1–US4 acceptance
scenarios verbatim from spec.md. No assertions yet — TDD pairs T010-T
through T041-T will fill these in next.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:22:49 +01:00
James VeitchandClaude Sonnet 4.6 ef8608db97 docs(002): add tasks.md with TDD pairs for manager-compatible install
Phases 1–6: setup scaffold, US1 dep install (T010/T011), US2 Manager
entry JSON (T020), US3 metadata accuracy (T030), US4 Docker harness
(T040/T041), and quality gates. All user stories decomposed into
-T/-I pairs per BEACON TDD discipline.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:22:06 +01:00
James VeitchandClaude Sonnet 4.6 b3ed126cd3 feat(spec): 002-manager-install plan.md + ADR-003
plan.md covers:
- requirements.txt fix (jinja2 only, hand-authored)
- aiohttp→production deps in pyproject.toml
- @description metadata update
- custom-node-list.json PR scope
- Docker Compose CPU-only test harness (US4)

ADR-003: hand-authored requirements.txt as curated subset of pyproject.toml —
cross-cutting policy for all future dep additions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:17:13 +01:00
James VeitchandClaude Sonnet 4.6 6d21a6c58e feat(spec): 002-manager-install spec.md — Manager-Compatible Install
3 user stories, 6 FRs, 5 SCs covering:
- requirements.txt fix (jinja2 only, hand-authored)
- aiohttp promoted to production deps in pyproject.toml
- ComfyUI Manager custom-node-list.json submission
- @description metadata accuracy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:14:40 +01:00
James VeitchandClaude Sonnet 4.6 1a42a2a0b2 chore(beacon): stub 4 specs for ux-and-install epic; archive logging-modernisation
Audit confirmed all 15 epic criteria are unowned. Four stubs created:
002-manager-compatible-install
003-formatstring-frontend-ux
004-node-logic-correctness
005-metadata-cleanup

logging-modernisation archived (1/1 specs shipped).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:10:22 +01:00
James VeitchandClaude Sonnet 4.6 61918e7436 chore(roadmap): update Gantt chart and table for ux-and-install epic
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:08:56 +01:00
James VeitchandClaude Sonnet 4.6 081651cbce chore(beacon): add ux-and-install epic from codebase audit
Parallel subagent audit (2026-06-28) identified four categories of defects:
- requirements.txt broken for ComfyUI Manager install
- FormatString: no debounce, clears connections, ID mismatch, class mutation
- RandomChoice/CircuitBreaker correctness bugs
- Stale metadata and dead code throughout

Epic captures 15 success criteria across installation, UX, and correctness.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:07:22 +01:00
3322f6f05e feat: standardise logging across all comfydv nodes (#5)
* chore: initialise BEACON framework with all bootstrap artefacts

- Problem statement, constitution, architecture doc, roadmap populated
- CHANGELOG.md created (Keep a Changelog); README expanded with
  What-is-this, Install, and Quickstart sections
- pyproject.toml gains [project.urls] (repository + documentation)
- beacon doctor: 32 pass, 2 pre-commit warns, 0 failures

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: Phase 1 — add NullHandler to package root, remove hardcoded setLevel

T001: logging.getLogger("comfydv").addHandler(NullHandler()) in __init__.py
T002: remove logger.setLevel(logging.DEBUG) from format_string.py
Also fix pyproject.toml TOML structure (project.urls was inside [project] block)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: failing tests for logging modernisation (T010-T through T030-T)

RED phase — 5 tests fail for the correct reasons before implementation:
T010-T: format_string produces stdout (print block)
T011-T: update_widget emits INFO records on hot path
T012-T: random_choice produces stdout (colorama/rich prints)
T020-T: load_node_state uses print() on error instead of logger.error
T021-T: circuit_breaker uses print() instead of logger

T001/T002/T030-T already green: NullHandler registered, setLevel removed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: standardise logging across all nodes (T010-I through T044)

GREEN phase — all 11 logging tests pass:

T010-I: Remove 8-line diagnostic print block from format_string()
T011-I: Downgrade all hot-path logger.info() calls to logger.debug();
        switch all logger calls to %-style formatting; remove rich import
T012-I: Replace colorama/termcolor/rich print calls in random_choice with
        logger.debug(); add logger = logging.getLogger(__name__)
T020-I: Convert print() on load_node_state error to logger.error()
T021-I: Add logger to circuit_breaker; replace print() with logger.debug();
        fix logic so status=False triggers the interrupt (per BDD spec)
T040:   Remove colorama, rich, termcolor from pyproject.toml dependencies
T042:   ruff check + format clean
T044:   beacon doctor --strict passes (34/34)

Also adds ADR-001 and ADR-002 capturing the stdlib logging and NullHandler
decisions, linked from the logging-modernisation epic.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: mark all 001-standardise-logging tasks complete in tasks.md

All [x] checkboxes flipped after 11/11 tests pass and beacon doctor --strict
reports 0 failures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: mark logging-modernisation epic success criteria complete

All success criteria verified: NullHandler added, setLevel removed, print()
calls converted, colorama/rich/termcolor removed from deps, zero stdout in
normal operation, errors surface at ERROR level, all tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: commit spec artefacts and dependency lock for 001-standardise-logging

Includes spec.md, plan.md, research.md, BDD feature files, contracts, .beacon.toml
backlink, and uv.lock after removing colorama/rich/termcolor.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: James Veitch <darthveitcher@office-mac-mini.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 16:00:43 +01:00
darth-veitcher abe055e63e Merge branch 'develop' 2025-11-05 15:48:55 +00:00
darth-veitcher a68b6e79b2 feat: reverse FormatString output order for reliability
BREAKING CHANGE: Output order changed to put primary outputs first

- formatted_string now always in output position 0 (was dynamic)
- saved_file_path now always in output position 1 (was dynamic)
- Variable pass-through outputs now in positions 2+ (were 0+)

This change ensures primary outputs are in fixed, predictable positions,
resolving ComfyUI output mapping issues when dynamic outputs are present.

Changes:
- Updated format_string() return statement to reverse output order
- Updated update_widget() to set RETURN_TYPES/RETURN_NAMES in new order
- Updated all 47 tests to expect new output positions
- Updated all docstrings and examples in format_string.py
- Added comprehensive "Output Structure" documentation to README.md
- Added same documentation to docs/index.md for consistency
- All tests passing ✅
2025-11-05 15:48:22 +00:00
darth-veitcher beaaf4a278 Merge branch 'develop' 2025-11-05 15:39:41 +00:00
darth-veitcher a3fa7b41f1 progress 2025-11-05 15:39:33 +00:00
darth-veitcher 522b7978e0 progress 2025-11-05 12:54:02 +00:00
darth-veitcher 8061a5007c progress 2025-11-05 12:41:34 +00:00
darth-veitcher 617834840f progress 2025-11-05 12:30:51 +00:00
darth-veitcher 9c9451b790 progress 2025-11-05 12:26:47 +00:00
darth-veitcher 884d180958 progress 2025-11-05 12:20:10 +00:00
darth-veitcher c9d9a58e8e progress 2025-11-05 12:08:22 +00:00
darth-veitcher 130c57f88b Add comprehensive pytest test suite and fix FormatString node issues
- Fixed Jinja2 regex pattern to handle spaces around filters ({{ var | filter }})
- Added null safety in IS_CHANGED method for empty/None templates
- Restored dynamic output functionality for variable chaining
- Created 47 comprehensive tests with 78% coverage on format_string.py
- Set up test infrastructure with ComfyUI dependency mocking
- Used importlib to bypass package imports during testing
- Added conditional imports in root __init__.py for test compatibility
- Configured pytest in pyproject.toml (removed outdated pytest.ini)
- Added pytest and pytest-cov to dev dependencies
- Updated .gitignore for test artifacts
- Removed deprecated model_unload.py
2025-11-05 11:59:31 +00:00
darth-veitcher 8bdfd0059f remove python requirements 2025-06-04 21:11:35 +01:00
James Veitch dd52cb2c71 Update pyproject.toml
downgrade python requirements to 3.10 for older installations
2025-05-13 08:24:56 +01:00
darth-veitcher 435e896e9c add docs 2025-03-27 15:59:49 +00:00
darth-veitcher 842aea3ef2 add docs with mike 2025-03-27 15:54:00 +00:00
darth-veitcher 4c96c41cf2 add requirements.txt 2025-03-27 14:11:18 +00:00
darth-veitcher 6078b6c04b add requirements.txt 2025-03-27 14:09:52 +00:00
darth-veitcher 3137698005 add requirements.txt 2025-03-27 14:07:18 +00:00
darth-veitcher e07c944b00 first commit, refactor for uv 2025-03-27 13:49:00 +00:00