Repository navigation
Storyboard panels: more framings and a separate camera angle - #14219
Merged
Merged
Conversation
The framing set skipped standard steps between wide and close, and folded the insert into the extreme close-up. Adds Full (head to toe), Medium wide / cowboy (knees up), Medium close-up (chest up) and Insert (an object detail), each with its own diagram, and relabels Close as Close-up and the extreme close-up as the face detail it now is. The picker drops its Not set tile: tapping the picked framing again clears it. Older peers would null the new values, so storyboards sync goes to v10 and pipeline issues to v5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012khEkDNrF7uL9f4Vu5TBMh
A panel's camera angle (eye level, high, low, bird's eye, worm's eye, Dutch tilt) is now its own setting, separate from the framing, picked from side-view diagrams that show where the camera sits. The drawing prompt gets an Angle line and the Video prompt names the angle. The framing picker becomes the shared ShotDiagramPicker. Storyboards sync v10 covers the new field. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012khEkDNrF7uL9f4Vu5TBMh
atomantic
force-pushed
the
claude/project-thread-wyek2j
branch
from
October 30, 2026 21:46
abbfb46 to
3c4d31f
Compare
atomantic
marked this pull request as ready for review
October 30, 2026 21:55
This was referenced Oct 30, 2026
atomantic
added a commit
that referenced
this pull request
Oct 30, 2026
#14231) ## Summary - The Framing and Angle pickers (#14219) now say how a panel is shot. The free-text **Camera move** field worked against them. Boards imported from a music video carried text like "a loose, natural wide shot" there, and the drawing prompt sent it as `Camera: …` no matter which framing was picked. - The panel editor no longer shows the field. `textNodeValue` no longer adds a `Camera:` line to the drawing prompt. - The stored `camera` value is kept for the animatic and video handoff (`toVideo`), so there is no schema change. ## Test plan - make.test: the drawn prompt has the framing and angle lines and no stored camera move. - StoryboardDetail.test: the music video panel dialog has no Camera move field. - Pregate passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
atomantic
added a commit
that referenced
this pull request
Oct 30, 2026
## What Image models drift to a 3/4 view when a panel should be head-on or from behind. A storyboard panel now has a third shot setting next to Framing and Angle (#14209, #14219): **Subject to camera**, `facing` ∈ `front`, `three-quarter`, `profile`, `three-quarter-back`, `back` (`SHOT_FACINGS` in `server/lib/shotGrammar.js`). - Picked in `PanelDrawer` with the shared `ShotDiagramPicker`; `ShotDiagram` draws each as a top view (shoulders, head, nose) turned away from a camera at the bottom. - Drawing prompt (`textNodeValue` in `storyboardRecipe.js`) gets a `Subject: …` line that names the view and what the camera does and doesn't see, e.g. front: "front view, the subject faces the camera head-on, body square to the lens, both shoulders and the whole face toward the viewer, not turned to the side"; back: "…only their back and the back of the head visible, no face". The words are visible in the panel's sent prompt like the Framing/Angle lines. - Video prompt (`storyboardVideo.js`) names it. - Validation, sanitizer, `PANEL_FIELDS`; storyboards sync 10 → 11 (a v10 peer would drop the field). Merged main after the Camera line left `textNodeValue`; the Subject line now follows Angle. ## Tests - `make.test.js`: a panel created through the route with `facing: 'back'` sends the `Subject: rear view …` line in the drawing prompt. - `ShotDiagramPicker.test.jsx`: every facing has a label, hint and diagram. Server storyboards/shotGrammar/schemaVersions suites and client storyboards + lib suites pass; biome clean. Local pregate can't run here (container Node 22.22.0 below the repo minimum). Co-authored-by: Claude <noreply@anthropic.com>
atomantic
added a commit
that referenced
this pull request
Oct 31, 2026
…4297) ## What Follow-up to #14209 / #14219 / #14232. - **Compact pickers.** `ShotDiagramPicker` tiles are half size: `grid-cols-4 sm:grid-cols-6` (the responsive-grid guard rejects a frozen six-column grid), tighter padding, 10px labels. Long labels shortened so they fit: "Wide / establishing" → Wide, "Medium wide / cowboy" → Medium wide (the hints keep "Establishing" and "cowboy shot"). - **Composition.** New panel field `composition` ∈ `center`, `left-third`, `right-third`, `cut-left`, `cut-right`, `low-in-frame` (`SHOT_COMPOSITIONS`). `ShotDiagram` draws a waist-up figure placed on a rule-of-thirds grid. Drawing prompt (`textNodeValue`) gets a `Composition: …` line, e.g. cut-left: "the subject at the left edge of the frame, partly cut off by the edge, the rest of the frame open". The Video prompt names it too. Validation, sanitizer, `PANEL_FIELDS`; storyboards sync 12 → 13. `ShotDiagram` looks every kind up in one table, so the vocabularies must not share a value (a first draft's composition `low` shadowed the angle `low`). `ShotDiagramPicker.test.jsx` now asserts they're disjoint. ## Tests - `make.test.js`: a panel created with `composition: 'cut-left'` sends the Composition line in the drawing prompt. - `ShotDiagramPicker.test.jsx`: every composition has a label, hint and diagram; vocabularies are disjoint. Server storyboards/shotGrammar/schemaVersions and client storyboards + lib suites pass; biome clean. Local pregate can't run here (container Node 22.22.0 below the repo minimum). --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Follow-up to #14209.
Framings. The set skipped standard steps between wide and close and folded the insert into the extreme close-up. Adds
full(head to toe),medium-wide(knees up, "cowboy"),medium-close(chest up) andinsert(object detail) toSHOT_TYPES, each with a diagram. Labels: Close → Close-up, "Extreme close / insert" → Extreme close-up. Wide now draws the setting with a small figure. Aliases updated (full shot→ full,mcu→ medium-close,cowboy/mws→ medium-wide,insert/detail→ insert).Camera angle, as its own panel field. New
SHOT_ANGLES(eye-level,high,low,birds-eye,worms-eye,dutch) and a panelangle(validation, sanitizer,PANEL_FIELDS). Picked from side-view diagrams showing where the camera sits (the Dutch tilt is a tilted frame). The drawing prompt gets anAngle: …line next toFraming: …(storyboardRecipe.js), and the Video prompt names it (storyboardVideo.js).Picker.
FramingPicker/FramingDiagrambecome the sharedShotDiagramPicker/ShotDiagram, used for both rows inPanelDrawer. The "Not set" tile is gone; tapping the picked tile again clears it.Compatibility
A peer on the old vocabulary would null the new values (or drop
angle) on re-sanitize and LWW that back, sostoryboardsgoes 9 → 10 andpipelineIssues4 → 5 (the pipeline shot editor sharesSHOT_TYPES).Tests
ShotDiagramPicker.test.jsx: every framing and angle the server accepts has a label, hint and drawn diagram; a second tap clears.make.test.js: a panel created withangle: 'low'through the route sendsAngle: low angle looking up.in the drawing prompt.shotGrammar.test.js: new aliases.Server storyboards/shotGrammar/schemaVersions/musicVideo suites and client storyboards + lib suites pass; biome clean. Local pregate can't run in this container (Node 22.22.0 below the repo minimum).