Commit Graph
53 Commits
Author SHA1 Message Date
alisson-anjosandClaude Opus 5.5 7db9eca1c9 Shot Planner: points on several key frames of a shot, the mask over every frame (1.116.0)
- A selection (the shot's mask and each Colored Mark person) has key frames, each with its
  own points: SAM 3 selects the subject on a key frame and tracks it up to the next one
  (before the first, backward), so points added on a later frame correct the mask from there
  on. Plans with one key frame (points + key) work as before; keys are saved next to them.
- The points window: after Segment the mask is shown over every frame of the shot, with a
  play button, frame stepping (arrows), key-frame marks on the slider and a key-frame list
  (jump / remove). Edited points mark the preview as old until Segment again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 18:19:16 +00:00
alisson-anjosandClaude Opus 5.5 857ba260f3 Shot loop: every picture always reaches H3 (use_ref_2 removed); Auto prompt caption style; loop-proof writer (1.114.0)
- BFS Shot H3 Conditioning and its Simple version always pass every picture of the shot: the
  use_ref_2 switch is gone (the pictures are chosen in the planner). The published v1.1
  character-swap workflow had it off, so only <Picture 1> reached the model. Saved
  workflows are upgraded on load: their widget values are put back by name (checked with
  the published v1.1 and tutorial workflows).
- 🤖 Auto prompt: Style = H3 official (six sections) or OpenJutsu captions, the short
  'Replace the ... in the video with ... from <Picture n>. Keep ...' style of the training
  captions (written from the request, the frames and the pictures).
- The writer samples (repetition and presence penalties) instead of greedy decoding, which
  looped on long answers; repeated sentences and a cut sentence are removed, missing sound
  sections completed; an answer with problems (missing <Subject n> in detailed_description,
  a loop, H3 sections in a caption) is written once more, told what was wrong; labels still
  missing are tied after [Shot 1]. A subject acts with its own body (hands, not paws).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 15:22:30 +00:00
alisson-anjosandClaude Opus 5.5 a93cea17a9 Shot Planner: Auto prompt applies the panel request to the prompt input's template; real cut times (1.113.0)
- With Auto prompt on, the planner's prompt input is the template (e.g. a LoRA's body_swap
  prompt) and the panel's text is the request applied to it; the run tells the panel the
  template so 🤖 Write uses the same one (shown in the card). Without a VLM the template is the
  prompt. The template is part of a written prompt's 'made from'.
- The writer gets the shot's real cut times from the cut detector and at least one key frame
  per piece between cuts; a shot without cuts gets no timestamps (the ones the VLM writes from
  the frame times are removed), and [Shot 1] never has one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:08:18 +00:00
alisson-anjosandClaude Opus 5.5 0d831b0bb5 Shot Planner: 🤖 Auto prompt in H3's official format; duet out of the planner and conditioning (1.113.0)
- 🤖 Auto prompt (Prompts & refs): the prompt boxes become requests and the VLM writes each
  shot's MiniMax H3 prompt in the full-reference format of MiniMax-H3's
  VIDEO_PROMPT_WRITING_GUIDE_ref_en (six sections, task types, retention markers, [Shot N],
  official camera terms) from key frames of the shot (auto: ~1.5/s, 3-8), the shot's
  pictures and their descriptions, the request, Colored Marks, selection and mode, citing
  the source as the guide video or <Video 1>. Write all / missing in the panel, per shot
  Write again and edit; shots without one are written at run time (before SAM 3) and the
  panel stores them; out-of-date prompts are flagged. A written prompt is part of the
  stored shot's signature.
- Duet removed from the planner (its split-screen prompt writer, /bfs/shotloop/write) and
  from BFS Shot H3 Conditioning (Advanced): duet, panel_*, rope_gap, task, instruction.
  The model input stays as a pass-through so workflows that routed the model keep working.
  BFS Shot H3 Duet and the Side Panel nodes keep the duet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:44:46 +00:00
alisson-anjosandClaude Opus 5.5 d94e1c2b19 Shot Planner: Colored Mark per picture, refs outputs, object preset, fixed points window (1.113.0)
- Colored Mark: every picture has a mark color (12-color palette, editable under each
  global picture); a shot's selection and each extra person ("+ Mark another person",
  text or points) pick the picture they become ("Picture 3 · red", with its
  thumbnail) and are drawn in its color. The prompt gets a model-agnostic mapping
  ("the person marked in red becomes the character from <Picture 3>"). The
  conditioning node checks each marked picture is passed and colors are not shared.
  Plans with the old second region open with it as <Picture 2>.
- Points window: fixed size; the frame fits a fixed stage (points are stored relative to
  the frame); one point set per marked person.
- BFS Shot Planner outputs refs (every picture the shots use, as a list) and ref_count
  where ref_image / ref_image_2 were.
- Saved workflows are upgraded on load: the planner's ref_image / ref_image_2 inputs are
  removed, old ref outputs become refs / ref_count, and what fed Repack's ref_image
  feeds refs.
- New describe preset "object" (a noun phrase: what it is, shape, materials, colors,
  text), written for the prompt sentence like "short".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:27:19 +00:00
alisson-anjosandClaude Opus 5.5 6f335175d9 Shot Planner: one description per picture, Unpack refs list, PictureN chips (1.113.0)
- Describe references is per picture now: one row per picture the plan uses, each with
  its own preset (default = the card's; custom with its own instruction) and 🔄 to
  describe only that one. {details} = picture 1, {details2} = picture 2,
  {details@Picture n} = picture n. Descriptions saved per reference set by older plans
  are read as those pictures'. The separate "Describe each picture" section is gone.
- BFS Shot Unpack: refs (every picture of the shot, as a list: the next node runs once
  per picture) and ref_count replace ref_image / ref_image_2 in the same output slots.
  BFS Shot Repack's refs input takes the list back and splits it per shot; ref_image
  links from older workflows still work.
- Prompt chips read PictureN (they insert <Picture N>).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 01:16:27 +00:00
alisson-anjosandClaude Opus 5.5 7da6f7427f Shot Planner: up to 12 reference pictures, @Picture chips, {details@Picture n} (1.113.0)
- Plans keep a list of pictures (global_refs, per-shot refs) instead of ref / ref2; older
  plans are converted on load and ref / ref2 stay in the JSON as pictures 1 and 2. A
  shot's empty slot uses the global picture at the same position.
- Panel: the global list starts with one slot and + adds more (several files at once);
  drop image files on a slot to replace it or on the box to add them; recent thumbnails
  can be dragged onto any slot. Chips under every prompt insert <Picture N> at the cursor
  (@PictureN) or {details@Picture N} (📝).
- {details@Picture n}: the description of the shot's n-th picture alone. 📝 Describe each
  picture writes one per image (editable, saved as picture_details); without one, the
  planner's VLM, then the conditioning node's VLM, describes it at run time.
- The planner's ref_image / ref_image_2 inputs are gone (a workflow saved with them
  connected still runs and the log says they are ignored). Conditioning and Duet pass
  every picture of the shot (use_ref_2 off: only the first) and log when there are
  more than 9.
- Stored shots keep their signature when a shot has at most 2 pictures and no
  per-picture descriptions are set.
- A two-picture shot no longer gets the automatic <Subject 2> {details2} line when the
  prompt already names <Picture 2> or uses {details@Picture n}.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 00:18:36 +00:00
alisson-anjosandClaude Opus 5.5 084e1d22b5 Shot loop: a new LoRA, seed or sampler runs the shots again; no preview on BFS Shot Join (1.112.0)
- The stored-shot signature now includes what renders the shots: the planner reads the
  queued workflow (hidden PROMPT input) and fingerprints every node upstream of BFS Shot
  Join's images (loaders, LoRAs and strengths, sampler, seed, conditioning settings).
  Changing any of them runs every shot again on the next Run, instead of only
  re-assembling the stored ones. The join's own settings (crossfade, comparison) and
  display nodes don't count. A seed on "randomize" changes every Run, so fix it to keep
  the stored shots.
- BFS Shot Join no longer shows a video preview on the node; the video still goes out
  through images and the file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 14:48:59 +00:00
alisson-anjosandClaude Opus 5.5 ce3ca59b17 Shot loop: run again without changes only assembles; unload models before the join (1.108.0)
- Every shot stored and up to date: the planner hands out an assemble-only placeholder
  (no VLM, SAM 3 or history) and BFS Shot Join assembles the stored shots. Its images
  input is lazy, so conditioning, sampler and decode are not executed again (before,
  the last shot was generated again just so the join had something to join).
- Run tab: "Unload models before the join" (on by default): once every shot is
  rendered, unload the models so the join and the nodes after it get the memory.
  Not part of the shot signature, so toggling it keeps the stored shots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:15:41 +00:00
alisson-anjosandClaude Opus 5.5 c11f3f9f12 Shot Planner: second pass size in the Run tab (1.107.0)
The Run tab gets a 'Second pass (upscale)' section: on/off, and the upscaled
size by multiplier, target dimensions or megapixels with an alignment, the
same arithmetic as Minimax H3 Latent Upscaler (3D). The planner outputs
second_pass (BOOLEAN), upscale_width and upscale_height (INT); the graph does
the latent upscale and the second sampling with its own nodes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 20:04:57 +00:00
alisson-anjosandClaude Opus 5.5 35ef99090b Write MP4s without an ffmpeg program; manual splits beat Max shots (1.106.1)
Issue #12: on installs with no ffmpeg on PATH (Windows portable), Shot Join's
mp4 mode - also picked automatically for long videos when the RAM is short -
failed with WinError 2. Video files now go through bfs_video_io: ffmpeg from
PATH, else imageio-ffmpeg's, else PyAV (what ComfyUI's Save Video uses), for
writing and for reading the MP4 back. BFS Video Compare uses the same writer.

Issue #13: a workflow saved with Max shots = 1 silently dropped every shot
after the first, so double-click splits did nothing. A split made by hand now
raises Max shots to keep it, and the Video tab says when detected shots are
left out by the limit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 12:40:08 +00:00
alisson-anjosandClaude Opus 5.5 dd86935962 Store shots in the output folder, lossless and cached per shot; low-memory join
- Stored shots move from ComfyUI's temp folder (emptied at every start) to
  output/bfs_shotloop (Shot cache = keep; temp still available).
- Each shot is saved as a lossless FFV1 video next to a small .pt (~12x
  smaller than raw frames, exact); Smaller / Smallest (H.264 RGB) and Raw
  are selectable.
- One run folder per source video; each shot carries a signature of its
  settings, so a Queue runs only the shots that changed, plus the ones that
  continue from a new take. Redo (with or without cascade) from the panel.
- The final join reads one stored shot at a time into the output (measured
  +15.8 GB -> +8.2 GB on 11 shots at 960x544); save to = mp4 file streams
  the video and the comparison to ffmpeg (+2.1 GB). New video_path output.
- Combine stored shots: an MP4 of what is stored now, without generating.
- tools/bfs_assemble_shots.py reads the new format; docs updated.
Bump BFSNodes version to 1.104.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:05:16 +00:00
alisson-anjosandClaude Opus 5.5 e2784998ca Add a memory status and a between-shots memory option
BFS Shot Join records every shot it receives (latent tokens = generated
frames x resolution, with the continuity head) and the peak VRAM of its
run, per GPU. The panel compares each planned shot with the biggest one
that already ran on this GPU: a status at the top, a Memory card and a
warning in Checks when a shot is much bigger (possible out of memory).
No fixed GB guess, since ComfyUI offloads weights as needed.
New Run option 'Between shots': keep models loaded (default) or free
memory (unload every model between shots, for low VRAM).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:58:19 +00:00
alisson-anjosandClaude Opus 5.5 9f94159c83 Make the shot-by-shot run the default
Tested on real H3 runs: continuity holds and memory stays as in the other
modes. It needs no open browser tab, unlike the queue loop. Saved plans
keep their own run mode. Bump BFSNodes version to 1.102.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:48:43 +00:00
alisson-anjosandClaude Opus 5.5 e8533cc92c Keep the queue loop as the default run
The shot-by-shot run stays available as an option until it is tested
under a real H3 load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:04:02 +00:00
alisson-anjosandClaude Opus 5.5 23823f3cd1 Add a recursive shot-by-shot run mode
One Queue renders every shot in order inside the same prompt: after a shot
is stored, BFS Shot Join expands the planner-to-join body (ComfyUI node
expansion) for the next one, so continuity head/history works without the
browser re-queueing. Graph walk adapted from Ethanfel's MiniMax H3
Context Loop. Queue loop and auto loop are unchanged; new plans default to
the recursive run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:47:48 +00:00
alisson-anjosandClaude Opus 5.5 81576e4c99 Default the shot loop to the queue loop
Continuity head/history needs each shot to read the previous result, which
only exists in the queue loop (the auto loop conditions every shot before
sampling any). New plans start in the queue loop with auto-queue on, and
the Run checks warn when a shot asks for head/history in the auto loop.
Bump BFSNodes version to 1.101.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:40:14 +00:00
alisson-anjosandClaude Opus 5.5 18f500ac59 Fix H3 history lengths and add head continuity
H3's VAE encodes 17-frame clips into 5 latent steps and drops the last 3
steps of the whole video, so a 17/34/51-frame history came back as only
its first 5/22/39 frames: a 12-frame hole between the history and the
shot, seen as a jump/drift at every join. History now uses 5/22/39/56
(17k+5); old plans with 17/34/51 read as 22/39/56.

New continuity mode "head" (now the default, 22 frames): the shot is
generated from N frames earlier, the previous shot's result is encoded
into the first latent steps with noise mask 0 (kept, not swapped again),
and BFS Shot Join cuts those frames. Queue loop only; skipped at cuts,
after a skipped shot and off the H3 grid.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:23:51 +00:00
alisson-anjos 957f3e482c Set crop paste and seamless join defaults 2026-10-14 02:34:11 +00:00
alisson-anjos 22692236f6 Fix Colored Mark points modal syntax 2026-10-13 18:47:04 +00:00
alisson-anjos 1c99bba23d Add independent colored mark point regions 2026-10-13 17:51:29 +00:00
alisson-anjos ffa0e75362 Add dual-reference prompts and resolution controls 2026-10-13 17:35:52 +00:00
alisson-anjos 16efe73169 Expand second Colored Mark controls when ref two is set 2026-10-13 17:11:34 +00:00
alisson-anjos dca37ddc0f Apply Colored Mark color to mask previews 2026-10-13 17:06:14 +00:00
alisson-anjos 507d5bc60a Always show Colored Mark region color 2026-10-13 16:59:56 +00:00
alisson-anjos 383fed81a1 Refine Colored Mark on updated main 2026-10-13 16:34:09 +00:00
alisson-anjos 2b0caac30a Fix Color Guide reference history and add global colors 2026-10-13 16:28:18 +00:00
alisson-anjos 27090c979a Add Shot Planner language selector and optional tour 2026-10-13 16:27:56 +00:00
alisson-anjos 3e2d112b03 Add optional Color Guide to Shot Planner 2026-10-13 16:27:29 +00:00
alisson-anjos 5f6e3c8446 Add five-frame shot history continuity 2026-10-13 12:38:58 +00:00
alisson-anjos 72af0aa0c7 Move shot filters to People Filters Masks tab 2026-10-13 07:33:51 +00:00
alisson-anjos 391115b78a Remove duplicate total duration control 2026-10-13 07:23:12 +00:00
alisson-anjos a55054aa0c Move max shots control to Video tab 2026-10-13 07:20:45 +00:00
alisson-anjos 154698f46f Re-split shots when cut settings change 2026-10-13 07:19:54 +00:00
alisson-anjos f1f639f389 Fix Shot Planner splitting and TextGenerate compatibility 2026-10-13 07:12:26 +00:00
alisson-anjos ceeff4803d Add simplified H3 shot conditioning 2026-10-12 13:13:43 +00:00
alisson-anjosandClaude Opus 5.5 29cedad7be Shot loop: one-shot split mode, BFS Shot Seed, BFS Shot Noise, BFS Sigmas Preview (1.94.0)
- Planner: Mode "One shot (whole range)" (the range as a single shot, Max seconds / shot not applied) and
  "Range length, seconds" next to it, so a whole shot or pieces of at most X are set in the Video tab alone.
- BFS Shot Seed: one seed per shot from a base seed (same / increment / random per shot) with per-shot overrides.
- BFS Shot Noise (experimental, optional): starting noise for SamplerCustomAdvanced on H3's video + audio latent;
  every amount at 0 is exactly RandomNoise. shared_base (the coarse pattern from a base seed, the same across shots,
  resolutions and lengths), static_share, distribution, spectrum_tilt, pyramid, guide_structure, ref_tint.
- BFS Sigmas Preview: chart of a sigma schedule (steps on layout / shapes / detail), pass-through.

Tested: split logic, seed logic, noise statistics (unit variance, identity at 0) and the chart, in Python.
Not tested yet inside ComfyUI / the panel in a browser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:47:53 +00:00
alisson-anjosandClaude Opus 5.5 390f9e8714 Planner UI: ✕ clear all - removes every reference from the plan (global, shots, cast) and the recent list, after a confirm
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:50:53 +00:00
alisson-anjosandClaude Opus 5.5 515ab73c70 Planner UI: collapsible sections keep what the user clicked (re-renders snapped them shut); ✕ clear for the recent reference pictures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 07:47:46 +00:00
alisson-anjosandClaude Opus 5.5 a03e0be342 Shot Planner: continuity 'history' - the last 17/34/51 frames of the previous result placed just before frame 0 on H3's timeline (sliding history, after Akatz's H3 Relay / Ethanfel's Context Loop), with every mask mode, crop and the duet canvas; cuts reset it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:37:36 +00:00
alisson-anjosandClaude Opus 5.5 e43cc14d9a Points: Track -> whole video - one selection tracked by SAM 3 through the whole video or range (chunked, forward and backward, re-found by text after cuts); shots without their own selection take their part (1.81.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:47:21 +00:00
alisson-anjosandClaude Opus 5.5 4fab22caa9 Shot Planner range: a player in the Video tab, start / end in frames (start here / end here take the player's exact frame; seconds of older plans still read), aligned layout (1.80.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:09:13 +00:00
alisson-anjosandClaude Opus 5.5 96f7e8a1b1 VLM descriptions: temperature and seed (0 = greedy as before), a dice button to try another description, the short preset capped at 30 words (1.79.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 18:02:53 +00:00
alisson-anjosandClaude Opus 5.5 34ffcef172 Shot Planner: Start at / End at range - only that part of the video is split, analysed, generated and joined; timeline dims the rest; max total seconds counts from the start (1.79.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 17:42:42 +00:00
alisson-anjosandClaude Opus 5.5 8e573275b8 Fit the prompt: descriptions ({details}, {target}) are written for the prompt sentence that holds them (blank in place, article matched); {target} is described automatically at run time for shots with a selection and no text (1.78.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 13:34:08 +00:00
alisson-anjosandClaude Opus 5.5 a5535dc77c Describe refs for any subject (person, creature, robot, animal, cartoon: says what it is first); new default preset 'short' - a noun phrase that fits '<Subject 1> is the {details} shown in <Picture 1>'; {target} describes animals/creatures too (1.77.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 11:35:11 +00:00
alisson-anjosandClaude Opus 5.5 f1388f0463 mask_guide (renamed from person_guide, works for any subject): masked region as an extra guide, instead of the full guide, or as a native reference video (<Video n>, with mask_ref_size); Mask only shots only; Frame + paste takes a per-shot 'new subject' text for the new outline (1.75.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:51:56 +00:00
alisson-anjosandClaude Opus 5.5 7d9d7a9e26 Frame + paste mode: the whole frame is generated (pose follows the guide, the new person may be bigger) and BFS Shot Join pastes only the person (shot mask + the new outline found by SAM 3) onto the original frame; mask strength renamed mask opacity (1.73.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:22:16 +00:00
alisson-anjosandClaude Opus 5.5 1de7753be9 Mask strength per shot (mask modes): the masked rows start at strength x the noise level and keep part of the original, like an opacity (1.72.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:09:17 +00:00
alisson-anjosandClaude Opus 5.5 aa545097b7 External masks instead of SAM 3: a mask video per shot, the planner's optional mask input (whole video) or a mask video for the whole video in the panel; used by every mode, {target}, the setting picture and the comparison (1.71.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:01:13 +00:00