From 6603fe2c83f3c8d2a2c2eb40a47a593ca48c281f Mon Sep 17 00:00:00 2001 From: Crespin Alexandre <114501859+kunail0804@users.noreply.github.com> Date: Thu, 16 Jul 2026 16:44:54 +0200 Subject: [PATCH] release: v2.0.0 (Semantic Resolution) (#148) Bump version 1.1.0 -> 2.0.0, finalize the V2 changelog section (add analyzer config centralization, example-workflow fix, and relational fidelity entries; note the breaking removals), and update the release-readiness checks. Co-authored-by: kunail0804 Co-authored-by: Claude Opus 4.8 --- CHANGELOG.md | 34 +++++++++++++++++++++++++++++++-- pyproject.toml | 2 +- tests/test_release_readiness.py | 6 +++--- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aeeccb..9a8721a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to Scene Compiler are documented here. The project follows [Semantic Versioning](https://semver.org): `MAJOR.MINOR.PATCH`. -## [Unreleased] — V2: Semantic Resolution +## [2.0.0] — 2026-07-16 — V2: Semantic Resolution ### Added @@ -64,14 +64,37 @@ All notable changes to Scene Compiler are documented here. The project follows - The Analyzer system prompt now instructs full transcription of list inputs, and a deterministic post-parse check warns (`SC0021`, advisory) when a tag-list input yields fewer concepts than it has items. + - The Analyzer system prompt now preserves spatial/postural/possessive + relationships instead of collapsing them to the bare noun — a held object also + yields a `holding ` concept (`money in her hand` → `holding money` + + `money`), body positions survive (`hand on own hip`, `... in mouth`), every + conjunct of an "X and Y" enumeration is kept, and explicit/NSFW input gets the + same full fidelity. - A data-driven fidelity regression suite (`tests/regression/test_fidelity.py`) - pins both failure modes. + pins the modifier, list, relational, and conjunction failure modes. ### Changed - **`prompt_builder.remove_duplicate_tags` is now wired to real behaviour.** It gates the Resolver's post-expansion tag deduplication (`SC0007`); it defaults to `true`, so output is unchanged unless explicitly disabled. +- **Analyzer settings are centralized on the Configuration node.** The Scene + Analyzer node previously carried its own `model_name`/`temperature`/`timeout` + widgets and ignored the Configuration node entirely, so the model was set in two + disconnected places. It now takes an optional `config` input and those duplicated + widgets are removed; without a Configuration node the defaults apply (llama3, + temperature 0) with a 300 s cold-load-friendly timeout. The Knowledge Base Loader + likewise accepts an optional `config` whose path/version take precedence. Every + node input now carries a tooltip. + +### Fixed + +- **Example workflow widget drift.** The shipped example workflow carried stale + positional widget values from before `trim_empty_outputs` was removed, so ComfyUI + mapped a leftover boolean into `debug_level` (a spurious `false`) and, in older + saved workflows, into `prompt_separator` (`true` instead of `,`). The workflow is + rebuilt against the current node signatures, and a new test asserts every example + node's saved widget count matches the node so this drift fails CI. ### Removed @@ -79,6 +102,13 @@ All notable changes to Scene Compiler are documented here. The project follows removal of categories (there are no empty outputs to trim). Removed from the config dataclass, JSON Schema, Configuration node, and `default_config.json`. +### Breaking + +- The Scene Analyzer node's `model_name`/`temperature`/`timeout` widgets and the + `prompt_builder.trim_empty_outputs` config option were removed. Workflows saved + against V1 that set these will lose those widget values — delete and re-add the + affected nodes, or re-import the shipped example workflow. + ## [1.1.0] — Flat prompt, no categories A deliberate simplification of the pipeline's back half. diff --git a/pyproject.toml b/pyproject.toml index e5590bf..a16b7a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "comfyui-scene-compiler" -version = "1.1.0" +version = "2.0.0" description = "Deterministic natural-language-to-prompt compiler for ComfyUI (Illustrious)." readme = "README.md" requires-python = ">=3.11" diff --git a/tests/test_release_readiness.py b/tests/test_release_readiness.py index aa4047a..96d2ada 100644 --- a/tests/test_release_readiness.py +++ b/tests/test_release_readiness.py @@ -12,13 +12,13 @@ def _pyproject() -> dict: return tomllib.loads((REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8")) -def test_version_is_1_1_0() -> None: - assert _pyproject()["project"]["version"] == "1.1.0" +def test_version_is_2_0_0() -> None: + assert _pyproject()["project"]["version"] == "2.0.0" def test_changelog_documents_current_version() -> None: changelog = (REPO_ROOT / "CHANGELOG.md").read_text(encoding="utf-8") - assert "1.1.0" in changelog + assert "2.0.0" in changelog def test_definition_of_done_exists() -> None: