From dc4e51563c24026c571ad1d3d5639dcd943387e2 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 13:44:56 +0000 Subject: [PATCH] 5.0.3: stale Decisiveness test, migration tests, changelog folded into the release Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_016acRss69eH1235eRdFTZHY --- CHANGELOG.md | 13 +++++++++---- core/tests/test_legacy.py | 15 +++++++++++++++ .../decisiveness/tests/test_decisiveness.py | 2 +- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07709380..00bfeac3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,18 +2,23 @@ ## [Unreleased] -### Added (experimental) - -- **PTD few-step** (Settings > Engine > Sampling, MiniMax H3 only): renders in the 4 to 8 hops of a PTD adapter file from `ComfyUI/models/ptd` instead of a long schedule, with no CFG. Reads the EPFL fl2va and taobao-content-ai Ref2VA releases, as bf16 or int8, on the full or pruned base; ordinary LoRAs stack with it. The chosen sampler, steps and scheduler are replaced while it is on. Ported from ComfyUI-PTD-Compact (Nynxz). Not yet run on a real H3. - ## [5.0.3] "Classy Chopper" - 2026-10-25 ### Changed - **FunPack is now FunUI.** It outgrew "pack": it is a full interface. New logo, a wink `;)`, before the name in the top-left corner and in Settings > About. Node ids, log lines and docs follow the new name (`FunUISampler`, `FunUI/Loaders` and so on). The 5.x codename is now "Classy Chopper". - **The app is served at `/fun/`** instead of `/funpack/`. The old address redirects. +- Picker wheel settings are saved with the project. - Repository moved to `digital-garbage/FunUI`; GitHub redirects the old address, so existing clones keep updating. +### Added (experimental) + +- **PTD few-step** (Settings > Engine > Sampling, MiniMax H3 only): renders in the 4 to 8 hops of a PTD adapter file from `ComfyUI/models/ptd` instead of a long schedule, with no CFG. Reads the EPFL fl2va and taobao-content-ai Ref2VA releases, as bf16 or int8, on the full or pruned base; ordinary LoRAs stack with it. The chosen sampler, steps and scheduler are replaced while it is on. Ported from ComfyUI-PTD-Compact (Nynxz). Runs on a real H3 (Ref2VA, 4 hops, int8); best with a turbo-merged base, SLA off and enhancements off. + +### Changed in Decisiveness + +- The manual setting is now a slider "Commitment" from -10 to +10 (0 is off). A value saved by an older version resets to 0. + ### Migrated on load - Projects, imported workflows and stored settings that carry old `FunPack…` names are renamed as they are read. Browser settings (wheel, welcome, timeline peek, model list) are carried over once. Nodes already placed in ComfyUI's own graph under the old `FunPack…` ids need adding again. diff --git a/core/tests/test_legacy.py b/core/tests/test_legacy.py index dbfd0e2a..3eff77b4 100644 --- a/core/tests/test_legacy.py +++ b/core/tests/test_legacy.py @@ -10,3 +10,18 @@ def test_prose_and_other_packs_are_left_alone(): assert legacy.name("FunPack is nice") == "FunPack is nice" assert legacy.name("funpackage") == "funpackage" assert legacy.name("KSampler") == "KSampler" + + +def test_a_project_saved_under_the_old_name_opens_with_the_new_one(): + from core import projects + old = {"name": "Old", "conditioning_slot": "funpack", "sampler_slot": "funpack", + "models": {"slots": [{"id": "sampler", "node": "FunPackSampler", "inputs": {"seed": 1}}]}} + p = projects.Project.from_dict(old) + assert p.conditioning_slot == "funui" and p.sampler_slot == "funui" + assert p.models["slots"][0]["node"] == "FunUISampler" + + +def test_an_imported_workflow_with_old_node_ids_is_read_with_the_new_ones(): + from core import workflow_import + wf = {"1": {"class_type": "FunPackSampler", "inputs": {"seed": 1}}} + assert workflow_import._from_api(legacy.data(wf), [])[0]["node"] == "FunUISampler" diff --git a/modules/sampling/decisiveness/tests/test_decisiveness.py b/modules/sampling/decisiveness/tests/test_decisiveness.py index 2134cd2e..a6286942 100644 --- a/modules/sampling/decisiveness/tests/test_decisiveness.py +++ b/modules/sampling/decisiveness/tests/test_decisiveness.py @@ -79,7 +79,7 @@ def _packed(): def test_manual_k_steers_the_picture_into_the_next_step_and_never_the_answer_or_the_sound(tiny_h3): from conftest import unpacked - wrap, outer, status = _load(tiny_h3, mode="manual", k=1.4) + wrap, outer, status = _load(tiny_h3, mode="manual", level=10) assert "manual k" in status x0, shapes = _packed() seen = []