APNext H3 Dailies Gate (print / punch up / cut)
Print, punch up, or cut — the APNext H3 Dailies Gate
- llm
- scenes
- scene_count
- status
This node is the most interesting thing in the pack, because it changes what a ComfyUI queue is. Instead of a linear fire-and-forget render, you get a screening room: the run reaches this node, the freshly written scenes land on a desk in the browser, and everything holds there - no interrupt, no re-queueing - until you make a call. Print it, punch it up, or cut the run. It moves again the moment you press a button.
The mental model is film dailies. The pack's H3 writers (Scenes, Crossover, Music Video, Presentation) generate a batch of MiniMax-H3 prompts, each one a scene. You don't want to blindly render all 24 of those and discover scene 7 is nonsense. So you drop the Dailies Gate between the writer and the video node and actually look at the takes first.
What's on the desk
- ▶ Print it - render exactly what's on the desk, hand edits included. The editor is the same colour-coded overlay as the pack's Prompt Preview, and you can view all takes at once or flip through them one at a time.
- ✍ Punch-up - type director's notes (optionally scoped to specific takes,
2, 4-5), and the selected scenes are rewritten inside the writer's own model session - synopsis, locks, lyrics, reference images all still in context. Hand edits you made are folded in first, so "fix a line by hand, then have the model rebuild the scene around it" is one round trip. - 🎲 New take - the same rewrite turn with no notes, asking for a noticeably different version. Roll as many as you like.
- ↩ Undo - every rewrite is kept in a server-side history for the gate's lifetime, so a bad punch-up rolls back instantly, and the history survives a browser reload.
- ✋ Cut - end the run cleanly; nothing renders.
How it works
Mechanically, the node's function is async: it publishes the scenes to the browser over ComfyUI's websocket, then awaits an asyncio.Future with a heartbeat that honours the Stop button and the optional auto-approve timer. The buttons POST to a custom /apnext/h3/review_gate endpoint that resolves the future. A browser reload re-attaches to a waiting desk. Because the gate sits before the render, no video-model weights are held while it waits. There's even a soft browser chime (chime) so you hear takes land while you're alt-tabbed.
The inputs that matter
scenes- the writer'ssceneslist (or a singleh3_prompt). Required.enabled- off turns the gate into a transparent pass-through. Handy when you want to keep the node in the graph but skip the screening.auto_approve_minutes- 0 holds indefinitely; any value prints automatically after that many minutes, so an unattended overnight run still renders. There's a live countdown on the desk.session_id(optional) - the writer'ssession_idoutput. This is what enables punch-ups; without it, the desk is edit-by-hand only, because the rewrite has to happen inside the writer's original conversation.durations(optional) - the writer'sdurationslist, so rewritten takes keep their exact lengths. Matters for music videos where a clip's length is locked to its audio slice.
Outputs are scenes (the list, edited or rewritten), scene_count, and status.
Gotchas
Punch-ups run in the writer's own backend, so the gate's model must match - it auto-switches to codex when you hand it a codex- session id, but a Claude Code session id and a local-model session id are not interchangeable (the error says so). Keep the writer's seed fixed, or the cache re-pays for fresh scenes. And remember the gate is the hold point: if you prefer the free stop-edit-requeue flow with a cached seed, the pack's other gate, H3 Scenes Review, is the non-blocking sibling - this one is for hands-on sessions where you're actively directing. Install is the usual pack route (ComfyUI Manager, search "comfyui_dagthomas"), no model files, no API key - it rides on your local Claude Code login or whatever LLM backend you connect.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| scenes | STRING | The writer's `scenes` list (or a single h3_prompt). | |
| enabled | BOOLEAN | true | Off = transparent pass-through (no pause). |
| auto_approve_minutes | FLOAT | 0.00–1440 | Print (approve) automatically after this many minutes, so an unattended run still renders. 0 holds indefinitely. |
| model | COMBO | sonnet | Who handles a punch-up: the same aliases as the writers. The rewrite continues the writer's session, so it must be the same backend - the gate auto-switches to codex for a `codex-` session id. |
| use_subscription | BOOLEAN | true | — |
| reroll_timeout_seconds | INT | 60060–7200 | Watchdog for one punch-up turn. |
| chime | BOOLEAN | false | Play a soft browser chime when takes land on the desk. |
| durationsopt | FLOAT | The writer's `durations` list; keeps every rewritten envelope on its original duration. | |
| session_idopt | STRING | The writer's `session_id` output. Required for punch-ups - the rewrite happens inside that session, so the synopsis, locks and images are still in context. | |
| llmopt | APNEXT_LLM | Optional. Connect an APNext H3 LLM Backend node to write with Ollama, LM Studio, another OpenAI-compatible server or an API model instead of Claude Code. Overrides the model dropdown while connected. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| scenes | STRING | — |
| scene_count | INT | — |
| status | STRING | — |