Skip to content

feat(webv2): video generation parameter recall - #134

Merged
lstein merged 5 commits into
mainfrom
feat/video-panel-08-recall
Aug 22, 2026
Merged

feat(webv2): video generation parameter recall#134
lstein merged 5 commits into
mainfrom
feat/video-panel-08-recall

Conversation

@lstein

@lstein lstein commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

PR 8 of the Video generation panel stack — stacked on #131. Gallery videos gain Recall Metadata.

Backend

Nothing needed — verified rather than assumed: VideosInterface.save already persists the graphs' core_metadata through the WithMetadata mixin fallback, and GET /api/v1/videos/i/{name}/metadata serves it (the August video-metadata groundwork plus PR 3's graph stamping pay off here).

Frontend

A sibling of the image-recall machinery (videoRecall.ts / executeVideoRecall.ts), with the video-specific semantics:

  • Verbs: Recall All / Remix Video / Use Prompt / Use Seed on the gallery video context menu, capability-gated by what each video's metadata actually contains (gated on the nine video generation_mode stamps — image metadata never recalls into the Video panel).
  • Model by key, family transition first — recalling a Wan run while the panel holds H3 snaps frames/fps/resolution before the recorded values land; an uninstalled model is skipped and everything validates against the current one.
  • Mode is part of the recall, but never recalled directly: conditioning media is restored (re-hydrated against the gallery for dimensions/probe data; deleted media drops) and the mode falls out. Held media the recorded run didn't have is cleared — media selects the graph family, so "Recall All" on a t2v video must not compile an i2v graph. In extend mode the recorded first_frame_image (the frame the graph extracted from the source clip) is deliberately not recalled.
  • LoRAs recalled by key — the first recall implementation to handle LoRAs at all — reproducing the recorded set exactly (including empty / no-longer-installed → cleared), with the accelerator toggle restored when the recalled set is precisely what the toggle would install at its step count.
  • Reuse-primary CFG semantics survive: a missing guidance_scale_low_noise key restores null (reuse), not a stale explicit value.
  • Size recall is exact-match only — recorded W×H inverts to an aspect+resolution preset only when a preset pair reproduces it precisely; a near-miss would claim a preset the run never used.
  • Prompts route through the shared project draft (where the compiler reads them); an empty recorded negative — indistinguishable from disabled — doesn't flip the toggle on.

Verification

  • 22 mapping tests covering round-trip fidelity, capabilities, media/mode rules, accelerator restoration, and the review regressions
  • Adversarial fresh-context review executed compile→recall→recompile round-trips against the real graph compiler; all four confirmed findings fixed (its own broken browser-test assertion, lost null-low-noise semantics, uncleaned absent media changing the generation mode, and the stale-snapshot window — now snapshotting after the metadata fetch and skipping the values write for prompt-only recalls). The remaining lost-update window during media hydration is shared with — and no wider than — the image recall path.
  • Full suite 478 files / 6359 tests; browser context-menu suite; tsc / oxlint / format / architecture:check clean

🤖 Generated with Claude Code

@lstein
lstein force-pushed the feat/video-panel-07-polish branch from 7361801 to 9f40c6a Compare August 21, 2026 02:44
@lstein
lstein force-pushed the feat/video-panel-08-recall branch from ab2dd77 to 0434c76 Compare August 21, 2026 02:51
@lstein
lstein force-pushed the feat/video-panel-07-polish branch from fe2f056 to c513754 Compare August 21, 2026 03:06
@lstein
lstein force-pushed the feat/video-panel-08-recall branch from f4cc91b to 49e6738 Compare August 21, 2026 03:06
@lstein
lstein force-pushed the feat/video-panel-07-polish branch from c513754 to 60a3a7f Compare August 21, 2026 03:31
@lstein
lstein force-pushed the feat/video-panel-08-recall branch from 49e6738 to 3b8ed68 Compare August 21, 2026 03:31
@lstein
lstein force-pushed the feat/video-panel-07-polish branch from 60a3a7f to daea7a9 Compare August 22, 2026 02:23
@lstein
lstein force-pushed the feat/video-panel-08-recall branch from 3b8ed68 to 457e24b Compare August 22, 2026 02:24
lstein and others added 3 commits August 21, 2026 22:44
Adds Recall Metadata for gallery videos (PR 8 of the video panel stack).
The backend was already complete — video records persist the graphs'
core_metadata via the WithMetadata fallback in VideosInterface.save, and
GET /videos/i/{name}/metadata serves it — so this is the frontend read
path, a sibling of the image recall machinery:

- videoRecall.ts: the pure metadata → panel-patch mapper. Gated on the
  nine video generation_mode stamps; model resolved by key against the
  installed catalog with the canonical family transition applied before
  the recorded values land; frames snapped to the resolved family's
  grid; recorded W×H inverted to an aspect + resolution preset on exact
  match only (a near-miss would recall a preset the run never used);
  LoRAs recalled by key — the first recall implementation to do so —
  with the accelerator flag restored when the recalled set is exactly
  what the toggle would install at its step count; prompts routed into
  the shared project draft (where the compiler reads them from). The
  conditioning mode is never recalled directly: media fields are
  restored and the mode falls out, and in extend mode the recorded
  first_frame_image (the frame the graph extracted from the source
  clip) is deliberately not recalled.
- executeVideoRecall.ts: account-scoped metadata cache, gallery
  re-hydration of media (names → dimensions/probe data; deleted media
  drops rather than resurrecting broken references; the source clip
  rebuilds through createVideoSourceClip with the default trim), then a
  widget-values patch + prompt-draft patch, with the same toast/error
  surface as image recall.
- Context menu: a Recall Metadata submenu on gallery videos (Recall
  All / Remix Video / Use Prompt / Use Seed), capability-gated by what
  the video's metadata actually contains, next to Extend in Video.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The whole-module gallery mock predated video recall, so the static
import of galleryVideos in executeVideoRecall failed to link and the
browser suite for useImageActions died at import time. Add the
galleryVideos.metadata and galleryImages.resolveMany seams the recall
path uses.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The recall modules join the editor's initial workbench chunk, so both
the build-size baseline and the browser measurement's source-owner set
needed re-capturing on the re-based parent baseline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@lstein
lstein force-pushed the feat/video-panel-07-polish branch from daea7a9 to 00abdab Compare August 22, 2026 02:50
@lstein
lstein force-pushed the feat/video-panel-08-recall branch from 457e24b to 9534686 Compare August 22, 2026 02:50
lstein and others added 2 commits August 22, 2026 11:26
…call

- Recall the recorded Wan fps (the write side landed in the 05 branch);
  it was the one user-settable Wan parameter recall silently reset.
- Restore the recorded source-clip trim (new source_video_start/end_frame
  metadata extras), clamped to the fresh estimate: the rebuilt clip's
  default trim made a recalled extension start from the wrong frame.
- Reconcile hydrated media against the effective model's modes: a deleted
  first frame left an interpolate recall holding last-frame-only (no Wan
  mode), and an uninstalled recorded model left i2v media on a t2v main —
  un-generatable panels behind a success toast.
- Make the prompts-only skip real: the builder always returns a fresh
  values copy, so the identity comparison never fired and every recall
  performed a full widget-values write.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LUjUcPHzQCoL7dqgsVzi63
Base automatically changed from feat/video-panel-07-polish to main August 22, 2026 17:27
@lstein
lstein merged commit 9ab2a1f into main Aug 22, 2026
19 checks passed
@lstein
lstein deleted the feat/video-panel-08-recall branch August 22, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant