14 Commits
Author SHA1 Message Date
Claude 09b6c70db7 Review fixes: removed file choices no longer refuse a render, stage LoRAs said when Two stages is not running, jobs run one at a time
A scene picture a video-only pipeline cannot use is named in Generate. CHANGELOG Brownian wording and Veda GPU labels match the code.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tw9fjVsBg3ixjnT1Fgdy12
2026-11-08 15:35:10 +00:00
digital-garbageandClaude Sonnet 5.5 0ed59f06d2 Two stages: Trilinear removed (migrated to Bicubic via renamed_options); Save Video: opt-in edge smoothing
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-05 20:19:14 +02:00
Claude 47f2bd7ca4 Settings: a value that is wrong for a setting hidden by another's choice no longer stops the run; its default stands
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tw9fjWzZx5QzcqkheSuhsy
2026-10-30 17:50:35 +00:00
Claude 3adebb731f Rename FunPack to FunUI (5.0.3 Classy Chopper): /fun endpoint, wink logo, load-time migration of old names
Old project/workflow names and browser settings migrate on load; /funpack redirects to /fun.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016acRss69eH1235eRdFTZHY
2026-10-25 13:11:03 +00:00
digital-garbageandClaude Opus 5.5 944aaadc0b fix: edits after a refused pipeline is replaced go through; Continuity hides on a pipeline with no start-picture input (ROLES)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 01:31:14 +03:00
digital-garbageandClaude Opus 5.5 62126c0320 fix: swapped-in settings node keeps the project's settings; retry that worked lets queued edits in; 5xx is an outage; Revert follows the open project; Sampler type-back during a save
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:10:14 +03:00
digital-garbageandClaude Opus 5.5 62e3c7fa07 fix: settings are read and written only where the server says they live, so a fresh pipeline mirrors at once and a hidden module's settings survive; a refused pipeline names the server's reason and the next edit replaces it; a refused value is not also called missing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:09:59 +03:00
digital-garbageandClaude Opus 5.5 83665a7234 fix: Taste key follows each learner's real store use (USES_WHEN); Sampler saves a value typed back; pipeline requests give up instead of freezing; a failed module list recovers; a stale waiting pipeline never lands on a later project; Shot camera memory appears once ComfyUI answers; Generate waits for a pipeline going in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:42:51 +03:00
digital-garbageandClaude Opus 5.5 ef84df4286 fix: views redraw when a project's pipeline goes in; project switches wait for edits in flight and load one at a time; modifier settings hide when the pipeline cannot install them; refusals name the setting the person sees; older SD1.x files are recognised; stale load retries are cancelled
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 09:23:18 +03:00
digital-garbageandClaude Opus 5.5 6fa6c4c6ee fix: a preset, import or wizard pipeline reopens exactly as saved (roles too); Taste key hides when no learning feature is on; a broken node schema no longer takes the module list down; a failed model probe is retried
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 04:40:32 +03:00
digital-garbageandClaude Opus 5.5 22df12a487 fix: a preset, import or wizard pipeline no longer regains the default's loaders on reopen; opening a project no longer rewrites it; Engine hides settings whose node is not in the pipeline; readiness knows Apple GPUs; a detected model with no traits is filtered
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 04:19:20 +03:00
digital-garbageandClaude Sonnet 5 29ac44ffcd feat: v4 UI port Phase A start -- module categories, legacy frontend served live
Two pieces of the "port v4's exact UI onto v5's backend" plan:

- core/contract.py: new optional ModuleSpec.category field (closed set:
  continuity, guidance, conditioning, sampling, post, system), validated in
  core/schema.py, threaded through core/registry.py's FIELDS and
  to_manifest(). Presentation grouping, independent of STAGE (execution
  order) -- a module can be stage="sampling" and category="guidance" at
  once. Only the 4 existing modules that actually render a settings panel
  (alg, sharpen, appearance, full_control) got a category assigned; the
  other 12 have none to categorize (no SETTINGS block) and stay
  uncategorised, which is valid.

- v4's frontend (movie_editor/frontend/*, ~29k lines, 61 files) copied
  verbatim into app/legacy/. core/routes.py's "/" route now serves
  legacy/index.html instead of the composer entry point; a <base> tag in
  that file resolves its own relative script/link tags against
  /funpack/app/legacy/ regardless of what URL it's served at, so every
  file moved as a unit with zero per-file path edits. Verified live: all
  61 assets load 200 OK, the real v4 onboarding screen renders pixel-for-
  pixel (it's the actual DOM/CSS, not a reimplementation), and several v4
  API calls (/api/media, /api/projects, /api/git/status) already succeed
  against v5's real backend by coincidence of shared route naming -- the
  rest 404/405 as expected, since api.js's ~90 functions haven't been
  rewired to v5's actual routes yet (next piece of this plan).

The old composer entry point (app/index.html, app/composer/**) stays in
the tree, unreferenced, until a later cleanup pass once nothing imports it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 23:58:51 +03:00
digital-garbageandClaude Opus 5 165bc6e9b6 foundation: the door nobody was watching, and ids that were not unique
A module's OWN default could be NaN or infinite. The override path refused
one and the declaration path did not -- and a default is the value most runs
use, because a setting nobody names never reaches the override check at all.
So the fault this project has already been bitten by, `sigma > nan` false at
every step and a modifier silently doing nothing, was reachable through the
one door that was never checked. Bounds too: an infinite min or max makes the
range check meaningless in one direction.

And two slots could share an id. The check for what exists was a set, which
cannot see a duplicate, so building the prompt by id overwrote one slot with
the other: a node silently missing from the queued graph, or one left reading
its own output. Refused now, before anything else is reported, because ids
are how a link names what feeds it and every later check is meaningless while
two slots answer to one name.

Both were found by attacking the whole tree rather than the diff, and both
are in code that already had tests -- the tests exercised the neighbouring
door in each case.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 18:19:54 +03:00
digital-garbage 835fab7864 core+shell: the bridge, and the first module through it
One declaration does three jobs: renders the panel, carries the defaults, names
the values that come back. A module writes no DOM and reads no DOM.

Validation refuses rather than repairs -- unknown type, a renderer its type does
not have, a label that is not text, a default outside its own bounds, a when
naming a key the module never declared. A module that is wrong does not get a
best-effort panel; it does not load, and says why once.

Ordering is by declared relation and stage, never priority numbers, and a cycle
drops only the modules in it. Compatibility is by trait, never model name.

The shell hands a module { composer, values, on, shell } and nothing else: no
node, no document, no kit internals. It cannot style anything because it is
never given anything that could.

catalogue/hide.html puts one good module and five broken ones through the real
shell and shows the result: one panel, five absent, no placeholders. The lint
fixtures make the scanner prove it catches each rule, so a clean scan means
something.

First slice: modules/system/appearance. Two settings, an optional ui.js, and
clicking Light actually turns the app light.
2026-08-28 19:58:06 +03:00