From 9e723479f8c1a91bcd8a79425ff1680b5c8b4771 Mon Sep 17 00:00:00 2001 From: Behzad Date: Mon, 27 Jul 2026 13:36:59 +0200 Subject: [PATCH] Drop internal vocabulary, and stop shipping dev files to users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six comments attributed decisions to "owner decision 2026-07-22", and one test cited a path inside the private monorepo (PromptFormatDropdown.tsx). Both are meaningless to anyone reading this repo: an outside contributor has no idea who the owner is, and cannot open that file. Each comment already gave its reason; only the attribution goes. Adds .comfyignore so tests/, scripts/ and .github/ stay in the repo but stay out of the archive published to the Registry. Installing a pack copies that archive into custom_nodes/ and leaves it there, and none of those directories is imported at runtime — __init__.py loads styleref_nodes/* and server_routes only. workflows/ is deliberately still shipped; the templates are the product. Co-Authored-By: Claude Sonnet 5 --- .comfyignore | 24 ++++++++++++++++++++++++ styleref_nodes/apply.py | 3 +-- styleref_nodes/facets.py | 4 ++-- tests/test_nodes.py | 23 +++++++++++------------ 4 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 .comfyignore diff --git a/.comfyignore b/.comfyignore new file mode 100644 index 0000000..57eacfd --- /dev/null +++ b/.comfyignore @@ -0,0 +1,24 @@ +# Excluded from the archive published to the Comfy Registry — NOT from the repo. +# +# Installing this pack copies the published archive into a user's custom_nodes/ +# directory, where it sits for as long as they have the pack. Nothing below is +# imported at runtime (__init__.py loads styleref_nodes/* and server_routes +# only), so shipping it would put files on thousands of machines that no +# install ever reads. +# +# Everything here stays in the repository, where it is load-bearing: the tests +# run in CI, and scripts/build_workflows.py generates workflows/ and is what a +# contributor edits. Only the shipped package is smaller. +# +# workflows/ is deliberately NOT excluded — the templates are the product. + +tests/ +scripts/ +.github/ + +# Tooling caches and editor droppings, in case a publish runs from a working +# directory rather than a clean checkout. +.pytest_cache/ +.ruff_cache/ +__pycache__/ +.DS_Store diff --git a/styleref_nodes/apply.py b/styleref_nodes/apply.py index 89b4893..85e7d2f 100644 --- a/styleref_nodes/apply.py +++ b/styleref_nodes/apply.py @@ -21,8 +21,7 @@ CATEGORY = "StyleRef" # Node-facing target → the server's `format` parameter. # -# The list is EXACTLY the web app's copy-box format list (owner decision -# 2026-07-22, superseding the earlier midjourney removal), in the same order: +# The list is EXACTLY the web app's copy-box format list, in the same order: # AI Tools, STYLE.md, Flux, Midjourney, Diffusion, JSON. The style means the # same thing here as on styleref.io, format for format. # diff --git a/styleref_nodes/facets.py b/styleref_nodes/facets.py index 9bd640e..953b843 100644 --- a/styleref_nodes/facets.py +++ b/styleref_nodes/facets.py @@ -5,8 +5,8 @@ Apply is the paved road. This is the escape hatch: the style's sections come out as individual STRING outputs so any field can drive things a prompt string cannot — IPAdapter weights, conditioning regions, per-section text encoders. -The output list is EXACTLY the style schema's section list (owner decision -2026-07-22), in schema order, plus the six custom style items individually — +The output list is EXACTLY the style schema's section list, in schema order, +plus the six custom style items individually — nothing derived, nothing invented, so the node reads one-to-one against the style board on styleref.io. Output names are the schema's own section ids. The section list is data-driven from one constant: a future schema section is diff --git a/tests/test_nodes.py b/tests/test_nodes.py index bc556d2..f538caf 100644 --- a/tests/test_nodes.py +++ b/tests/test_nodes.py @@ -65,10 +65,10 @@ def test_pack_registers_exactly_the_five_nodes(): def test_targets_are_exactly_the_web_apps_copy_list_in_order(): """ - Owner decision 2026-07-22: the target list mirrors the web - app's copy-box format list exactly — same entries, same order — so the - style means the same thing here as on styleref.io. Source of truth: - PROMPT_FORMAT_OPTIONS in src/components/ui/PromptFormatDropdown.tsx. + The target list mirrors the web app's copy-box format list exactly — same + entries, same order — so a style means the same thing here as it does on + styleref.io. The web app's list is the source of truth; this test is what + catches the two drifting apart. """ assert list(apply_node.TARGETS) == [ "ai_tools", @@ -149,9 +149,8 @@ def test_composition_handles_an_empty_side(): def test_negative_merges_guardrails_and_extra_only(): """ - No injected boilerplate (owner decision 2026-07-22): the style's guardrails - are the authority, and anything generic belongs in extra_negative where it - stays visible. + No injected boilerplate: the style's guardrails are the authority, and + anything generic belongs in extra_negative, where the user can see it. """ negative = apply_node.compose_negative(STYLE, "extra thing") assert "lens flares" in negative @@ -406,8 +405,8 @@ def test_load_returns_ui_text_and_result_tuple(monkeypatch): def test_load_never_fetches_style_text(monkeypatch): """ - STYLE.md moved to Apply's target list (owner decision 2026-07-22): Load has - no style_doc output and must never spend the extra text-fetch call. + STYLE.md is a target on Apply, not an output on Load — so Load has no + style_doc output and must never spend the extra text-fetch call. """ monkeypatch.setattr( api, "get_style_spec", lambda ref, etag=None: ({"name": "Warm", "sections": {}}, None, None) @@ -532,9 +531,9 @@ def test_sections_filter_reaches_the_api_and_the_cache_key(monkeypatch): def test_facets_outputs_are_exactly_the_schema_sections_plus_custom_items(): """ - Owner decision 2026-07-22: Facets mirrors the style board one-to-one — the - schema's section list in schema order, plus the six custom style items, - and NOTHING derived (no palette/primary_color/width/height/negative). + Facets mirrors the style board one-to-one — the schema's section list in + schema order, plus the six custom style items, and NOTHING derived (no + palette/primary_color/width/height/negative). """ from styleref_nodes import facets as facets_node