← Files PicsartARCHIVED FILE
docs/widget-specs/shot-design-panel.retired.md
5.5 KB · Oct 10, 2026 · 18:02 UTC
# RETIRED — the shot design panel
**Removed 2026-08-21 by decision**, when the shotlist board was rebuilt on its
approved mock. The board's card now carries the whole shot: what happens, what is
said, and seven decisions each chosen by looking at a picture — shot size, camera
move, lens, light, colour, length and the rhythm inside the shot. There is no
second surface behind a row any more, so there is no panel to spec.
What the panel had that the card does not: aperture, camera angle, per-source
lighting rigs (role / direction / intensity / temperature), and per-character
acting rows (emotion, intensity, gaze, what they hide). Those were the retired
`picsart_shot_designer` console's vocabulary; they live on in
`../../skills/film-scenes/references/PRESETS-CAMERA.md`,
`PRESETS-LIGHTING.md` and `PRESETS-ACTING.md`, which is where the prompt blocks
that need them are authored from now.
Its `worldDefaults: { tempo, stylePrefix }` input is gone with it — `tempo` had
already stopped existing when the film-setup console replaced it with `pace`.
The original spec follows, unchanged, so bringing it back is a re-registration
rather than a redesign.
---
# Widget spec — the shot design panel (inside `picsart_shotlist_board`)
**Merged 2026-08-20.** This was `picsart_shot_designer`, a standalone console.
It now lives as the expanding panel inside a shotlist row, because the board
already asked for camera, move, FOV and light on the card and the console asked
the same questions again. The tool and its widget bundle are unregistered; the
tab components, preset vocabularies, previews, crop-path recipes and block
compiler live on as library code the board imports.
Per-shot design in four panels, each owning prompt blocks; selections compile to
block text, returned inside `shotlist_board_feedback` as `design` + `blocks`.
The sections below describe the panels; where they say "tool input", read it as
the board's `card.design` plus the board-level `modelId`,
`charactersInFrame` and `worldDefaults`.
## Tool input
```ts
{
film: string, scene: string, shot: string,
action: string, // the card's action line, display-only
worldDefaults: { // from the bible's film setup
tempo: string, stylePrefix: string
},
charactersInFrame: Array<{ tag: string, name: string }>,
current?: Design, // when revising
suggested?: Design, // assistant seed from the shot card + world defaults — ALWAYS filled
suggestedWhy?: Record<string,string>, // one line per seeded field
presets?: Array<{ name: string, design: Design }>, // saved signature setups
modelId?: string, // capability row lookup; unknown → default + note
aspectRatio?: string, // canvas the widget dispatches drafts at (default '16:9')
draft?: { url?: string, jobId?: string, progress?: number } // last take, if any
}
```
`Design` = the `design` object of `shot_designer_feedback` v1 (see
`WIDGET-FEEDBACK.md`): move, size, fov, aperture, angle, lighting
{preset, sources[]}, acting[] {tag, emotion, intensity, gaze, hides}, format
{mode, durationSec, time}. Sub-objects are passthrough; the implementation also
carries `moveDetail`, `lighting.darkSide`, `lighting.detail`, `acting[].eyeLife`,
and `format.cutTimes`, all consumed by block compilation.
## Layout
- **Stage** (top): the last take plays here when present (`VideoStage` from
cinema-studio, including the generating-progress wash); otherwise a placard
with scene/shot/action.
- **Four tabs** under the stage:
1. **Camera & Optics** — movement preset grid (thumbnail tiles, grouped
at-rest / in-motion / punctuation / POV / aerial), then `Pills` ladders for
size, FOV (ten anchors), aperture (three stops), angle.
2. **Lighting** — the seven setup tiles; expanding one exposes per-source dials
(direction clock, intensity, temperature). A guardrail note renders if both
sources go equal-and-frontal.
3. **Acting** — one row per character in frame: emotion wheel (8 spokes ×
3 rings), gaze-target text, hides-text.
4. **Format** — single take vs multi-cut (+cut times), duration pills from
`model.durations`, real-time/slow-mo.
- **Compiled preview** (collapsible): the five owned blocks as text, live.
- **Action bar**: `Save as preset…` · `Hold` · `Generate draft` (shows the
preflight quote before confirming; dispatches via the carried-over
`picsart_generate` async + `picsart_job_status` polling).
## Feedback → `shot_designer_feedback` v1
Per `WIDGET-FEEDBACK.md`: `design`, `blocks` (the five compiled texts, verbatim
from the preview), `savePreset?`, `verdict generate|hold`. `generate` may be sent
together with the widget's own dispatch — the message is still the record the
assistant acts on (log the take, update the plan). Publish design changes
silently.
## Build notes
From cinema-studio keep: `VideoStage.tsx` (stage + progress + filmstrip if takes
accumulate), `Compose`'s start-frame slot (frame-chained shots), `generate.ts`
(`buildGenerateArgs` + submit-and-poll — extend args from the compiled prompt
rather than a free-text motion field), `drive.ts` save layout, `popovers.tsx`
(`Popover`, `Pills`). Drop: free-text-first composing, hardcoded
`aspectRatio: '16:9'` and film title, the `{}` tool input. Add: the tabs, preset
constants mirroring `PRESETS-CAMERA/LIGHTING/ACTING.md`, block compilation,
`useWidgetState` persistence, the feedback contract (none exists today), and
re-enable the resource/tool in `mcp.module.ts` under the new name.
SHA-256: 61fd46680798ec66b9bc2db891754363b594b9d83f29096e6a2dcae2dddf9516