Commit Graph
436 Commits
Author SHA1 Message Date
digital-garbage b734e5a2e6 feat: Reactive focus shows shot previews and takes several views / ordered targets per shot 2026-09-30 20:43:27 +03:00
digital-garbage 13e2001f47 fix: Reactive focus review crashed on projects with $variables; failures now show a notice 2026-09-30 20:30:51 +03:00
digital-garbageandClaude Sonnet 5.5 45535f4d91 feat: shot views learn from ratings, respect what a shot shows, and get a Reactive focus step
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 20:19:56 +03:00
digital-garbageandClaude Sonnet 5.5 5d419c97d9 feat: reactive focus backend: per-shot focus options, user choices and learning
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 20:10:19 +03:00
digital-garbageandClaude Sonnet 5.5 8bbed2b1f8 refactor: the recurring-word memory is its own file, not tied to a refinement key or the host pack
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 19:15:18 +03:00
digital-garbageandClaude Sonnet 5.5 459daebbc2 feat: camera targets favour words the user's prompts keep dwelling on (per key)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 19:08:22 +03:00
digital-garbageandClaude Sonnet 5.5 c3c3f0fe96 fix: cut times split the scene evenly, no shot under 2 s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 18:07:34 +03:00
digital-garbageandClaude Sonnet 5.5 c5ae2d8163 fix: shots are only cut between two shortcuts, never inside one
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 17:46:34 +03:00
digital-garbageandClaude Sonnet 5.5 cf5accae0d fix: shot cut times no longer split the shots you wrote unless asked (chance defaults to 0)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 17:41:14 +03:00
digital-garbageandClaude Sonnet 5.5 8e0c320af6 feat: shot cut times and shot views for H3 prompts, Editor toggles
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 17:31:48 +03:00
digital-garbageandClaude Sonnet 5.5 f87edd0895 feat: Composer shows the final prompt of every run, enhancer on or off
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 17:23:24 +03:00
digital-garbageandClaude Sonnet 5.5 0fc080b057 feat: camera moves are randomised per shot (chance, 1-3 moves, X to Y or not) and declare the camera
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 17:09:03 +03:00
digital-garbageandClaude Sonnet 5.5 f57910da2d feat: rule-based camera moves for [Shot N] blocks, Editor toggle
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 16:47:07 +03:00
digital-garbageandClaude Sonnet 5.5 a01ffbd154 feat: image-vs-composition dislikes and effect-weighted ratings for the rated dials
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 16:18:30 +03:00
digital-garbageandClaude Opus 5.5 ce2de22b2e feat: STAS for H3; late-branch guidance skips negative-prompt calls
STAS (arXiv 2603.17825) sets massive-activation channels on frame 0 and
frame edges to alpha x peak at one block over the first 40% of steps.
Rating-learned dials now share rated_dial.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:35:29 +03:00
digital-garbageandClaude Opus 5.5 a9c2bd30c3 feat: late-branch guidance for H3, strength learned from ratings
Skip guidance at CFG 1: the weak copy reuses blocks before the branch and
skips the branch block, so only the tail runs twice. Picture only; capture
hooks ignore the weak pass; compiler off while installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:26:26 +03:00
digital-garbageandClaude Opus 5.5 63bd1f5ed6 feat: editable reference intro for the prompt enhancer; typo fixed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 17:54:07 +03:00
digital-garbageandClaude Opus 5.5 2f3c9f5c1a feat: shot memory and decisiveness, both learned from ratings
Shot memory reuses a liked gen's coarse starting noise (layout) with fresh
fine noise; reuse-vs-fresh, which shot and how strongly are learned.
Decisiveness is Temporal Score Rescaling (arXiv 2510.01184) on the picture
rows, k learned per key or set by hand.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 15:19:45 +03:00
digital-garbageandClaude Opus 5.5 178e025a64 feat: chat runs show the whole message sent to the enhancer, instructions included
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:44:17 +03:00
digital-garbageandClaude Opus 5.5 eeddf46f71 fix: enhancer chat no longer echoes the conversation; it revises its last rewrite
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:30:57 +03:00
digital-garbageandClaude Opus 5.5 dfae8915fc feat: enhancer's Last run shows the chat the model was sent
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:06:54 +03:00
digital-garbageandClaude Opus 5.5 6ed743a930 feat: chat with the prompt enhancer; it reads its last rewrite and your comments
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 18:48:27 +03:00
digital-garbageandClaude Opus 5.5 94f755bb4b feat: prompt enhancer's rewrite shows in Enhance while the video still renders
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:41:11 +03:00
digital-garbageandClaude Opus 5.5 eadd455cbd feat: Enhance ▸ Last run shows the model's thinking
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:10:07 +03:00
digital-garbageandClaude Opus 5.5 ca3e460e03 fix: Enhance reference finds a shortcut by any meaningful word of its content
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 02:27:35 +03:00
digital-garbageandClaude Opus 5.5 18d1df960a fix: Enhance reference missed shortcuts holding $variables and matched partial words
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 01:21:43 +03:00
digital-garbageandClaude Opus 5.5 7313cb2dcf feat: Enhance ▸ Last run shows the reference sent with each prompt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 01:11:37 +03:00
digital-garbageandClaude Opus 5.5 dbe77d145f feat: Enhance ▸ Reference takes a whole shortcuts file
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 00:58:28 +03:00
digital-garbageandClaude Opus 5.5 7a7fb79d4a feat: Composer ▸ Enhance ▸ Reference — shortcuts and lorebooks for the enhancer
Name + content appended after the prompt: what it mentions, else the whole source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 00:54:48 +03:00
digital-garbageandClaude Opus 5.5 a44074fe52 fix: skip Studio's own prompt enhancement when nothing reads its conditioning
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 23:45:15 +03:00
digital-garbageandClaude Opus 5.5 85e5173c7c feat: linked input "Studio · Enhanced prompt (else prompt + postfix)"
Studio gains an enhanced_prompt output; the link wires to it. Enhancer off or failed sends prompt + postfix unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 23:41:03 +03:00
digital-garbageandClaude Opus 5.5 b48a6a2ead fix: enhancer instructions and image never reached ComfyUI text encoders
ComfyUI tokenizers drop an unknown system_prompt kwarg, and Gemma skips its chat template by default. Instructions now go in the user turn of the model's own template, which also places the image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 23:05:21 +03:00
digital-garbageandClaude Opus 5.5 fa04d6c200 fix: H3 enhancements that crashed, steered the wrong rows, or did nothing
- region lock: layout patch matched the old PackedLayout signature and crashed every H3 run; interior pins now use upstream's native any-frame placement
- REINS/Q-steer/AV decouple/probes: masks cover the target video/audio rows only, not pins, refs or vision pads
- video detail: works with the PDD FinalLayer signature; now in Engine Settings
- Q-steer: steers queries before RoPE, not after (old banks are not reused)
- ALG anchor: blurs the frame-0 pin on H3
- temporal style: hidden on H3
- shadow negative: main-window chip names what it switches off without compose

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 22:51:03 +03:00
digital-garbageandClaude Opus 5.5 0bb682b67c feat: prompt enhancer moves to Composer ▸ Enhance
Own tab with its full sampling settings (temperature, top-p, top-k, min-p,
repetition/presence penalty, seed, greedy) and a last-run before/after view.
Studio's source_image now reaches the enhancer on the per-scene path too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 22:11:42 +03:00
digital-garbageandClaude Sonnet 5 2ace081737 fix: re-enable output_guidance/trajectory_guidance/score_slider on H3
These were force-disabled for a gate bug, not a measured failure: they
all rode _make_steer_ramp's last-half window, which measured 0-of-4 and
0-of-12 real step coverage on H3's shift-based schedules because it read
sigma as schedule position, which is false there. That gate was already
rewritten to recover the true position from the schedule's own base grid
and is wired into all three call sites -- their correction steps are
also self-normalizing (a fraction of the live tensor/embedding's own
norm, not an LTXAV-tuned constant), and trajectory_guidance's buckets
were built for H3's schedules from the start. Re-enabled to actually
test them now that the thing that broke them is fixed.

embed_guidance/taste_nearest_prompt stay off: different value function,
and phrase emphasis's own manipulation check directly measured
near-invisible pushes from it at H3's calibration -- an actual negative
result, not a stale gate.

Unvalidated on real hardware -- this removes a stale reason for
disabling them, not a claim that any of the three help.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 19:21:38 +03:00
digital-garbageandClaude Sonnet 5 77cf37e18d fix: output value function -- train on H3 too, not just LTXAV
explore_first_step reads the same output-space value function
output_guidance trains, but training/snapshotting was gated off for H3
entirely -- a decision made before explore_first_step existed, when
output_guidance (still correctly forced off there) was its only consumer.
Result: the value function could never reach MIN_SAMPLES on H3 no matter how
many generations were rated, so explore_first_step printed "not ready yet"
forever. Un-gate the snapshot save and the training call for H3; leave
output_guidance's own application (and the separate conditioning-payload VF
for embed_guidance/value_guidance) forced off as before -- that decision is
unaffected.

No new automated test: no existing fixture exercises this rating-commit code
path (FunPackVideoRefiner.run's post-scene training block) cheaply enough to
extend honestly; verified by full suite pass (1491/1491) and direct tracing
that no other call site re-introduces the gate.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 14:43:33 +03:00
digital-garbageandClaude Sonnet 5 3052037519 fix: phrase blend -- position-by-position average, not a mean-vector blur
Corrected the actual design: encode two FULL conditionings ($style
SHORTCUT1 $postfix and $style SHORTCUT2 $postfix) and average them row by
row -- (1-strength)*A + strength*B per position, strength=0.5 giving
exactly (A+B)/2 as originally specified. The prior mean-vector version
collapsed phraseB's whole sentence into one flat direction applied
identically everywhere, discarding its own word-by-word content.

Resamples the shorter side (linear interpolation along the token axis)
when the two shortcuts tokenize to different lengths, so both sides line
up for the average without changing the output's token count.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 23:03:01 +03:00
digital-garbageandClaude Sonnet 5 dde02f5cd7 fix: phrase blend -- shift the whole prompt, not just the phrase's own rows
Confirmed on the rental: the previous version (phrase-scoped shift) showed
zero visible effect even at strength 1.5. Qwen's rows are contextual, so
every word in "a cat sits on a mat" already carries "sits", not just the
verb's own row -- editing 1-4 rows out of the sentence left the rest still
pointing at phraseA's action. Now shifts the whole prompt-token range toward
the alt sentence's own whole-prompt mean.

Multiple [a|b] spans in one prompt are additive: each span's delta is
measured against the original conditioning, not against a prior span's
already-shifted result, so they don't compound order-dependently.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 22:33:00 +03:00
digital-garbageandClaude Sonnet 5 8a6ab12ce6 feat: phrase blend -- per-blend strength override, [a|b:0.8]
Default 0.5 shift left phraseA dominating the video. [phraseA|phraseB:N]
overrides strength per blend. Fixed a shared regex gap along the way: every
weight/strength markup in this file (not just blend) silently rejected
leading-dot decimals like ".8" -- fell through to literal text with no
error, reproducing the exact "override did nothing" bug this feature exists
to fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 22:05:22 +03:00
digital-garbageandClaude Sonnet 5 38f059b889 fix: phrase blend -- alt phrase can't smuggle markup, can't double-apply on the wired path
Adversarial review of the previous commit found two real leaks and fixed
them: a colon in an alt phrase reached the real text encoder unstripped
(no bracket survives to re-catch it after substitution), and a wired
conditioning re-blended a second time because the re-tag guard only
checked for tag absence. Also reports per-span placement failures instead
of only counting successes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 21:05:18 +03:00
digital-garbageandClaude Sonnet 5 c6eab10c25 feat: [phraseA|phraseB] blends two H3 actions -- mean-vector shift, both encode paths
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 20:40:07 +03:00
digital-garbageandClaude Opus 5 8b680dc4aa revert: latent sharpness -- visible but bad at every strength on the rental
A latent unsharp on H3's 24-channel latent does not translate to picture
sharpness. Wrong mechanism, not wrong number; removed rather than tuned.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 02:19:12 +03:00
digital-garbageandClaude Opus 5 0b4ca1eb46 feat: latent sharpness -- spatial unsharp on the late x0 predictions (KSampler branch)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 02:08:19 +03:00
digital-garbageandClaude Opus 5 bc0da79ffc feat: typed (phrase:1.5) weights reach the H3 attention bias
The parser existed but nothing called it; the syntax went to Qwen as text.
One pass strips both markups so timed and weighted spans share one clean text;
both encode paths carry them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 01:46:26 +03:00
digital-garbageandClaude Opus 5 b3a4af3b39 feat: Studio liked/bad/axis directions fade old ratings the same way
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 01:16:52 +03:00
digital-garbageandClaude Opus 5 9a3ea8c35c fix: timed phrases reach the sampler when a wired conditioning owns the prompt
The editor strips the brackets before the encoding node sees them and hands the
windows to Studio as char spans on the text it gave that node.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 00:58:02 +03:00
digital-garbageandClaude Opus 5 25e5cc8de0 feat: timed phrases use square brackets so shortcut parentheses can sit inside
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 00:49:16 +03:00
digital-garbageandClaude Opus 5 1a1ca7a31e feat: H3 timed phrases -- (phrase@t0-t1) shapes the video only inside its window
Query rows are attended in chunks split at window edges, each with its own key
bias: exact, no SxS mask, no extra model call. Outside the window the phrase is
masked from video rows (H3-World single-egress); audio and text rows never see a
window. Composer lists the windows under the prompt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 00:34:24 +03:00
digital-garbage 41547469a8 fix: H3 query steering silently defeated by h3_av_decouple, and a misreported commit outcome
Two real faults found by a second adversarial review round on 608a97a:

- h3_av_decouple, installed after q_steering, becomes the OUTER
  optimized_attention_override and always calls its inner override with a
  non-None mask for the video-row partition -- exactly the case q_steering's
  own override treats as "already handled, back off". With both enabled,
  q_steering captured and injected nothing while still printing "applying"
  and paying the clone/hook cost. The two can't currently compose, so
  q_steering is now skipped entirely (with a declared reason) whenever
  h3_av_decouple is also active, rather than silently no-op.
- conditioning.py's q_steer commit call was silent on no_pending/no_key,
  justified by a comment claiming REINS' own commit is silent there too --
  that was wrong, REINS is loud on exactly those outcomes. Fixed to match.

Also tightened the shape-mismatch warning's wording: it checks total element
count, not the heads/head_dim split, so a same-total-different-split
mismatch would still reshape onto the wrong head boundaries undetected --
documented as a known narrow gap rather than fixed, since a real fix would
mean changing the persistence format REINS itself also depends on.

Added regression tests for the av_decouple interaction (both directions:
guard fires when it should, stays quiet when it shouldn't).
2026-09-07 04:10:21 +03:00
digital-garbage 299941a22e feat: H3 query steering -- REINS-style direction learned and applied on Q, not hidden state
Same liked-minus-disliked mean-difference as h3_repr_steering, captured off Q inside
optimized_attention_override instead of a block's hidden state, own kind="q_steer" sidecar
so the two vector spaces never collide. Only Q is biased: a uniform additive bias on K is a
provable softmax no-op, and on V it's mathematically identical to h3_repr_steering's own
mechanism, so neither is a genuinely different lever. Off by default (blank block spec).

h3_repr_steering.py's persistence functions take an optional kind= param (default unchanged)
so this reuses capture()/direction()/commit() verbatim instead of a parallel implementation.
2026-09-07 03:43:04 +03:00