Script to Shot List
Script to Shot List & Schedule
Creative planning integrated with equipment logistics.
</div>Overview
The Script to Shot List & Schedule feature bridges the gap between creative pre-production and technical implementation. By allowing users to import a screenplay, automatically break it down into scenes, and create detailed shot lists with gear assignments, it ensures that your technical requirements directly align with the creative vision. It also features a fully interactive 2D floor plan for camera mapping and a continuous schedule integration.
Shot assignments are cross-checked against the project's Gear List — each shot's equipment must already be packed in the project, so you can't accidentally schedule gear you don't have.
Moving between the eight views
Preproduction holds eight views — Script, Moodboard, Location, Character / Cast, Shot List, Floor Plan, Schedule and Call Sheets.
- On a laptop or desktop (1024 px and wider) they sit in a tab strip across the top of the panel, exactly as they always have.
- On a phone or tablet (below 1024 px) they collapse to one button naming the view you are in. Tap it to open a sheet listing all eight, each with a line saying what it is for; tapping one takes you there and closes the sheet. Eight pills wrapped to three rows on a phone — most of a screen spent on navigation before the first shot. This is one row, matching the section switcher directly above it.
Below 1024 px that row carries the rest of the panel's chrome with it, so nothing above the content is a band of its own any more:
| Row | What it holds |
|---|---|
| 1 | the view switcher, then save status, Export and the keyboard-shortcut help |
| 2 | the scene filter beside the episode picker — only the parts that apply to the open view |
The page title ("Preproduction"), its ⌘K search pill and the separate Episode band are 1024 px and
wider only. They said what the section switcher above and the view switcher below already said, and on
a 390 px phone the four stacked bands measured 321 px — so opening Preproduction in an 844 px
viewport showed the header, the tabs, the episode row, the scene row, and no content whatsoever. The
same chrome now measures 113 px.
The scene list is a drawer below 1024 px, not a column. The scene sidebar used to appear as a fixed 256 px panel from 768 px up, with a collapse rail beside it. On a portrait tablet that left the Shot List grid 238 px to draw a row in — the Scene dropdown alone overflowed its box by 46 px, and three more fields were cut off. Below 1024 px the scene list now opens as a drawer over the page instead, from the same scene filter button in row 2 above: you get the whole list, and the grid keeps the full width — 550 px at 768 px, measured on the same row. From 1024 px up the pinned panel is back exactly as before, because there the column is wide enough for both.
The panel's collapsed/expanded state is remembered across projects, so this also fixes the case where expanding it once on a desktop left every narrow screen squeezed afterwards with no obvious cause.
Search folds into its icon below 640 px. The Shot List toolbar's search box is a magnifying-glass button beside More and Add Shot; tap it and it expands into a full-width bar, tap away (or press Escape on an empty field) and it folds back. Folded with something typed in it, the button carries a dot and its screen-reader name says the list is filtered. That took the toolbar from 133 px to 77 px at 375 px. From 640 px up it is the same inline field it always was. The same control is now on Character / Cast, Contacts, Owned Gear, Insurance, Templates, Sub-Rentals, Rental Houses and the Filter Finder.
Export works on a phone again. The shot-list / schedule / floor-plan PDF export was hidden below 640 px, which meant the feature simply did not exist there. It is now in row 1 at every width — an icon below 640 px, an icon and its label above.
1. Importing and Parsing Scripts
You can jump-start your shot list by uploading a standard film script.
- Upload Method: Go to the Shot List tab in your project workspace and click Upload Script.
- Supported Format: Currently supports standard text-based script imports (PDF text extraction is handled via copy-paste or pre-formatting).
- Smart Parsing Engine:
- The engine automatically detects Scene Headings (e.g.,
INT. KITCHEN - DAY), character dialogue, and action lines. - It builds an automatic narrative hierarchy.
- The engine automatically detects Scene Headings (e.g.,
- Script Reconciliation: If you upload a revised version of your script later, the Script Reconciliation Modal visually compares the old and new text, highlighting changes in green (additions) and red (deletions), allowing you to merge changes without losing your existing shot data.
2. Managing the Shot List
The core of the feature is the interactive Shot List Grid, which organizes your shoot from the macro to the micro level.
When typing is saved. The text fields on a shot — Name, Detail and Director's notes — keep up with you as you type and save a moment after you stop, or the instant you leave the field. Nothing waits for a Save button, and nothing is lost by clicking away, scrolling the row off screen or closing the tab mid-sentence. On a shared project a collaborator's edit to the same field still arrives while you type; it replaces what is in the field only if you are not the one typing.
Hierarchy
- Scenes: Represent the major script beats (derived automatically). Use the Scenes Split View to edit descriptions or reorder.
- Shots: Represent individual camera setups for a scene.
- Sub-shots: For complex movements, you can break a single shot down further (e.g., Shot 1A, Shot 1B) — either by splitting a shot in two, or by folding a shot you already wrote into another one.
How sub-shot numbering works
The part after the dot has its own format. Project settings → Shotlist → Sub-shot Number Format counts it in numbers (
2.1,2.2) or letters (2.A,2.B), independently of the shot format above it — so the common1.A/1.Bconvention is now expressible. It ships on Same as shots, which is exactly what every project does today, so choosing it is what changes numbering; upgrading does not.
Pressing the sub-shot button on a shot does not hang a child off it — it turns that shot into
the first member of a new group. Shot 2 becomes 2.1, and the shot you just created lands beside it
as 2.2. There is never a bare 2 row sitting above them; the group is shot 2.
Groups are independent of each other, and they stay independent when they sit next to each other.
A scene that reads 1.1, 1.2, 2.1, 2.2 is two shots, each broken into two parts — not one shot
broken into four. Shot numbers are recalculated from top to bottom whenever you add, delete or
reorder anything, so the numbers always run in the order the rows are actually in; if you drag a
whole group above another, the two groups swap their base numbers.
Dragging the shot moves its sub-shots with it. Grab the first row of a group — the one showing
2.1 — and the whole group travels as one block, in both the Shot List and the Schedule tab, and is
renumbered to wherever it lands. Drop it after shot 4 and it becomes 5.1, 5.2; drop it at the top
and it becomes 1.1, 1.2. In the Schedule tab this also means the parts of one shot cannot end up
split across two shooting days by accident: send the shot to Day 3 and its sub-shots go to Day 3.
Dragging a single sub-shot — any row after the first — still moves only that row, so you can pull a part out of its group or reorder the parts inside it. Dropped into another group it folds into that group, renumbered to fit.
Deleting sub-shots until one is left undoes the split: a group needs at least two parts to be a
group, so the survivor drops its decimal and goes back to a plain shot number. Delete 2.2 and the
2.1 beside it becomes shot 2 again.
Taking one part back out — the "Un-sub" button. Beside the sub-shot button on every row showing a decimal there is its opposite: it turns that row back into an ordinary shot. The rest of the group closes up and renumbers, and every shot below moves down accordingly. Where the row ends up depends on which part of the group it was: the first or last part stays exactly where it sits, and a part from the middle is placed immediately after the group, because leaving it in place would split the remaining parts into two halves and dissolve the whole group instead of freeing one row.
Before this button existed the only way out of a group was to drag the row somewhere no other sub-shot happened to sit — and dropping it beside another group silently made it part of that one.
Folding an existing shot into a group — the "Sub of" button. The other direction, and the one the sub-shot button does not cover: it creates a new part, so a shot you already wrote had no way in. Every row without a decimal carries Sub of beside it. Press it and pick any other shot in the same scene.
The row moves to sit behind the shot you picked and becomes its next part. Pick a plain shot and it
turns into the group's first member — shot 1 becomes 1.1 and the row you folded in becomes 1.2,
exactly as if you had pressed the sub-shot button on it. Pick a shot that already has parts and yours
is appended: 1.1, 1.2 becomes 1.1, 1.2, 1.3.
It moves the row on purpose. A group is a run of neighbouring rows — that is what makes it a
group — so "a part of shot 1" and "sitting several rows below shot 4" cannot both be true. A shot you
fold in brings anything hanging off it along, the same way dragging it would, and a number you typed
by hand is released, because it described where the row used to sit. A hand-typed number on the shot
you fold into is kept: pin a shot at 5 and folding a row into it gives you 5.1 and 5.2.
The list only offers shots from the same scene, and offers each shot once — a group appears as its
first row (2.1), not as one entry per part.
Numbering a shot yourself
Shot numbers are a field, not a label: click one and type. What you type is kept exactly as typed —
it is never renumbered again — and the shots after it continue from your number. Type 10 on the
third shot of five and the scene reads 1, 2, 10, 11, 12. Type 4.3 and the sub-shots beside it
continue 4.4, 4.5, and the next ordinary shot is 5.
This is how a shot is held at a fixed number while others are inserted above it, and how an imported or paper-slate numbering scheme survives contact with the automatic one. A hand-numbered shot is shown in the accent colour, so it is obvious at a glance which numbers are yours.
To hand a shot back to automatic numbering, clear the field, or use the ↻ button that appears beside a hand-numbered shot. To freeze a shot at the number it already has, clear the field and type the same number back.
Anything you type is accepted, including text an automatic scheme would never produce (12A,
INSERT). Text the app cannot read as a number is displayed as typed but does not move the count on
— the shots after it carry on from the last number that could be read.
Numbering a new scene
A new scene is numbered from the numbers already in use, not from how many scenes there are.
Add scene takes one past the highest number on the list. A script that imported as 1, 1A, 2
gets a 3 — four scenes, but the highest number is 2 — and a list you deleted a scene out of no
longer hands the new scene a number another scene is already wearing.
Insert scene here takes the number of the scene you pointed at and pushes that one, and
everything after it, up by one: insert before 5 and the new scene is 5. A slate the shift
cannot safely rewrite keeps its number — 1A and TBD carry meaning the app will not guess at —
and the new scene steps past it to the first free number instead.
Dragging scenes into a new order is the one place numbering is rewritten wholesale: a reorder
renumbers every scene 1, 2, 3… down the list, and offers an Undo while it does.
Telling the scene rows apart
The scene sidebar down the left is a list of rows, and each one is drawn as its own row: an own background and a hairline edge, so two neighbouring scenes never run together. Hovering lifts a row a shade; the scene you are looking at is tinted in the accent colour rather than filled with a lighter grey, because on a light theme "lighter than white" is not a thing you can see.
A scene with a colour tag keeps its coloured stripe down the left edge, on top of that.
On a phone the scene list is the dropdown at the top of the shot list, and it shows the same two cues — a divider between rows, the accent tint on the current scene.
Tiles or list
The toggle in the shot-list toolbar switches the whole view between two shapes:
- Tiles (the default) — the editable rows the tab has always had: every shot laid out in full, with its attribute selects, scenarios, lighting, cast, custom fields, notes and media strip. This is where a shot list is built, and nothing about it changed.
- List — the same shots as a spreadsheet, one compact row each: scene, size, angle, movement, camera, lens, setup, duration, day, and counts for cast, media and open comments. The shot number and name are pinned to the left edge, so a row you have scrolled sideways still belongs to a shot you can see. Action and Notes are available in the column picker but start hidden — two paragraph columns make every other column unreadably narrow.
The list is read-only on purpose. A shot carries twenty-odd controls and several of them depend on each other (the special setup is scoped by the camera package, and changing the camera can clear it); a second editable copy of that would be two editors that disagree the first time either changed. Switch back to Tiles to edit. Selection and drag-to-reorder do work in the list, because those belong to the list rather than to the shot.
Arranging the columns works exactly as it does on the cast roster, the crew roster and the Location tab: the Columns button beside the toggle reorders by dragging, hides by unticking and offers Reset columns; widths are dragged on a header's right-hand edge (← / → and Shift + ← / → also step it). That arrangement is kept with your account and follows you between devices. The Tiles/List choice itself is remembered per project on this device — it describes your screen, not the shoot, so it is never synced to collaborators.
A shot whose duration was never estimated shows a dash rather than 0:00, and an unscheduled shot shows a dash in Day for the same reason — a dash is "not recorded", where a 0 would read as a decision. The list keeps the grid's virtualization, so a two-hundred-shot episode renders no more rows than the tile view does.
Reading a shot's cast field
The Cast and Background cast pickers on a tile row name the people you picked rather than counting them. Two selections read as ANNA (Ann Lee), BEN (Bo Ray), not as 2 selected — the question you ask of a shot is who is in it, and a number cannot answer that without opening the list again.
Each entry is the character's role followed by whoever is cast in it, the same shape the scene editor and the bulk dialog already use; a role nobody is cast in yet shows on its own. The field grows downward as the list gets longer instead of clipping it, so a shot with five characters stays readable at the width its row gives it.
The ★ marking a character this shot's scene suggests belongs to the open list only. It is a hint for choosing, not part of anybody's name, so it does not appear in the closed field.
Choosing which fields a shot row shows
A tile row carries nineteen controls across three lines — the shot name and time of day, seven camera attributes (size, angle, movement, camera, special setup, lens, duration), and the picker strip beneath (scenarios, lighting, temp lighting, camera gear, temp camera, cast, background cast, background extras, custom fields, notes). Most productions do not use all of them: a documentary crew that never rigs temp lighting was reading two permanently empty dropdowns on every row of a two-hundred-shot list. The Fields button beside the view toggle switches off the ones you do not need; the number on it counts what is currently hidden.
The panel groups them the way the work does:
- Filled in for you — time of day, special setup, scenarios, lighting, temp lighting, camera gear and temp camera hold what the app inferred from the scene and the camera package. A lean workflow usually drops these first, and grouping them means switching off the whole inheritance machinery is a handful of ticks rather than a hunt.
- Your own notes — the shot name, the camera attributes, cast, background cast, background extras, custom fields and notes hold what you typed.
Two controls are not on the list and cannot be hidden: the scene select and the shot number. They are how a shot is identified and assigned rather than information about it, and a list whose rows cannot be told apart is not a leaner list. Everything else may go, the shot name included.
Hiding a field never deletes anything. The shot keeps its notes, its cast and its custom fields; the row just stops drawing them, and switching the field back on brings the content back untouched. Show all fields restores everything in one click.
Unlike the list view's Columns, this preference is stored with the project, not with your account. That is deliberate: on a shoot everyone should be reading the same row. A collaborator with read-only access does not see the Fields button, because they cannot change a project setting, but their rows follow whatever the project stores. The two controls are independent — Fields governs the tile rows, Columns governs the list — and only one of them is on screen at a time.
Linked takes: one setup, several rows
The chain button in a shot's row actions links that shot to another one in the same scene. The shot you pick becomes the master; the shot you pressed the button on becomes a linked take, shows the master's technical fields, and keeps everything that makes it its own row. It is for the same camera setup shot more than once — a second take, a pickup, a safety — so there is one place to change the lens, the size or the setup time instead of several.
Only shots in the same scene are offered, and chaining is refused in both directions: a take that is already linked can never be picked as a master, and a shot that already has takes of its own cannot become one — pressing its chain button answers "This shot has linked takes of its own. Unlink them before linking it to another shot." rather than offering a list. A link is therefore always exactly one hop deep, which is what keeps a take and its master showing the same values. Padding blocks (LUNCH, company move) are never offered either. The chain button on a master shows how many takes hang off it.
Eighteen fields are inherited from the master and rendered on the take: scene, shot type, shot size, camera angle, movement, time of day, camera and lens gear, expected duration, the three setup times (camera, lighting, other), cast, custom fields, images and video, and the special setup with its setup label.
What makes the take its own row stays its own: shot number, name, action description, notes, status and the check-off time that rides with it, the optional flag, the shoot day, and its place in both the Shot List order and the Schedule order. That is why two linked takes can sit on different days and be ticked off separately on set.
Editing an inherited field on a linked take is refused rather than silently dropped — the app answers "This shot inherits from a master. Unlink it to edit this field." Change the value on the master and every take follows, or unlink the take if it genuinely has to differ.
Linking is lossless. The take's own stored values are left untouched the whole time it is linked, so Unlink puts every field back exactly as it stood before you linked it. There is nothing to lose and no undo to remember.
Deleting the master does not orphan its takes: the earliest-created take is promoted to master with the inherited values copied onto it, and the remaining takes are re-pointed at the promoted one. Nothing appears to disappear.
Bulk actions respect the link. Assigning gear across a selection skips linked takes — they display
their master's gear, so a direct write would never be visible — Change any shot field across a
selection writes only the fields a take owns, and duplicating a selection skips them too. In the PDFs
a linked take is marked: the tile card carries a Linked chip, and the shot-list and schedule
tables put a small » after the value.
A variant is the other tool for the same situation: the row's … menu makes a full, freely
editable copy that is not linked. Reach for a linked take when the setups must stay identical, and
for a variant when they are meant to drift apart.
Features
- Drag-and-Drop Reordering: Move shots within a scene or across scenes by dragging.
- Shot Metadata: Add focal length, camera movement, subject size (CU, Wide, OTS), and custom notes to every shot.
- A shot can carry several camera movements: "Dolly in" says where the camera goes but nothing about how it gets there, so Movement takes as many entries as you want — pick the move, then the qualifiers that describe it. Alongside the moves (static and locked off, pans including whip and swish, tilts and dutch tilt, dolly, tracking and trucking, crane and jib, slider, the zooms including crash and dolly zoom, handheld, steadicam and gimbal, drone and vehicle mounts, arc, roll, push in, pull out, cablecam, technocrane) there are two families of qualifier: pace — slow, fast, accelerating, decelerating — and texture — smooth, steady, shaky, floating, erratic. A slow push in and a fast one are different shots and want different rehearsal time. The list is long, so the dropdown opens with a search box, and anything your crew already calls something else can be typed in and added as free text. Everything ticked is stored in the one Movement field, comma-separated, so it prints in the PDF, exports to CSV and turns up in search exactly as it reads on screen — and a shot that was created with a single movement, or imported from CSV, is unchanged.
- Comments on shots and scenes: Every shot (in its expanded details) and every scene (in the scene viewer panel) carries a discussion thread — say something without changing a field. Each entry keeps its author and timestamp; resolving a comment strikes it through but keeps it as history (never deleted), and an open-count badge (💬) appears beside the shot number and on the scene card while comments are unresolved.
- A scheduled shot says which day it is on: once a shot has been dragged onto a shoot day in the Schedule tab, its row in the shot list carries a Day 3 badge beside the status and optional chips — so you can see what is already placed without switching tabs. The badge appears only on shots that have a day; an unscheduled shot shows nothing, and the counts above the list ( "12 Scheduled / 4 Unscheduled" ) stay the summary of the same fact. In the List view the same value is the Day column. Two linked takes each show their own day, because linking deliberately leaves the shoot day per-take — one can be picked up a week after the other.
- A single-camera production gets its camera filled in: when the project has exactly one camera package, every shot you create opens with it already selected, because that dropdown offers no real alternative. With two or more packages the field stays blank on purpose — a guessed camera silently re-scopes the shot's Setup list, and blank at least reads as "not decided yet". The value is the shot's from then on: change it in the row whenever you like, and a shot you duplicated with the camera deliberately cleared stays cleared.
- Time of day comes from the scene: a shot you create for a scene opens with that scene's time of day already filled in, so you only touch the shot's own Time of Day when that shot differs — a dusk beat inside a day scene. From then on the value belongs to the shot: retagging the scene never rewrites shots that already exist. Add Shot puts a new shot on the project's first scene, so when you pick the real one in the row's Scene dropdown the time of day follows along — unless you had already set a different one on that shot, which is left alone. A scene marked CONTINUOUS passes nothing down: it is a script continuity marker, not a time of day.
- The scene's Location field suggests your scouted locations: open a scene in the Scene Edit Modal and the Location box offers everything you added in the Location sub-tab. Start typing to narrow the list, or ignore it entirely — the field is still free text, so a place you never scouted stays a perfectly valid answer and nothing you already typed is invalidated by scouting a location later. A set is listed under its master as
Villa Rossi · Kitchen, which is what keeps two different kitchens apart. Picking the suggestion rather than retyping keeps the spelling identical across scenes, and identical spelling is what lets the stripboard group them. - A picture goes on a shot by dropping it there: drag one or more image files from Finder, Explorer or another browser tab straight onto the shot row. A dashed brand outline and the label Drop image to add it to this shot mark the row under the cursor, so you can see which shot will receive it before you let go. Dropping several at once adds them all to that one shot, and non-image files in the same drop are ignored rather than rejecting the whole thing — a folder of mixed content still works. The picture chip in the row's action rail (a normal file picker) and Cmd/Ctrl+V on a focused row do exactly the same thing; all three end at the same pipeline, so HEIC off an iPhone is converted and everything is compressed to roughly 500 KB / 1024 px before upload. Dropping a file is not the same gesture as re-ordering a shot: reordering is press-and-move on the drag handle, while a file drop works anywhere on the row and never re-orders anything. On a read-only project the row accepts no drops, the same way the picture chip is hidden.
- The picture keeps its own shape, and the fields close in around it: a storyboard frame is shown at the aspect ratio it was uploaded at — 16:9, 4:3, a square, a vertical phone frame — instead of being cropped into a fixed widescreen box. Nothing is cut off any more, which matters most for a viewfinder capture, where the burnt-in strip naming the camera, format and focal length sits along the bottom edge and was the first thing the old crop removed. From 1280 px up the picture takes the left third of the row and the fields wrap around it: the rows that fit beside the picture sit next to it, and every row past its bottom edge takes the full width of the card. A short picture no longer leaves a tall empty column beneath it, and a tall one simply means more rows sit alongside. Below 1280 px the picture still stacks above the fields, exactly as before.
- Custom fields show everything attached to a shot, and only edit what is yours: the Custom Field Editor holds the free-text fields you invent ('Permit number', 'Rain cover') and also displays the structured fields other controls write onto the same shot — lighting equipment, camera equipment, scenarios. Free-text fields keep their two boxes (name, value). Structured fields render read-only as named chips under a readable heading, carrying the same names and ×N quantities the shot row and the PDF show, with a line saying where they are actually edited; a text box cannot hold a list of devices, so it no longer pretends to. The trash button still removes any field, structured included. Saving never alters a field you did not touch. This modal used to print those fields as
[object Object]and write that text back over the real selection on Save — if a shot lost its lighting after a visit here, re-pick it in the row's lighting control. - Script Syncing: View the script side-by-side with your shot list using the Split View interface.
- Bulk Schedule Stripboard: Instantly toggle to schedule view to drag entire scenes into a chronological shooting order, automatically calculating page counts and estimated durations.
- Per-shot timing on the stripboard row: four quick-edit boxes, each labelled with its unit — Dur. is the shot's own length in seconds, and Setup Cam / Light / Other are that department's setup in minutes. Required time is duration plus the longest of the three setups, not their sum, because departments rig in parallel. Below roughly 1024 px the labelled boxes wrap onto a second line rather than run off the row; below 768 px they are hidden and the same fields are edited by expanding the shot.
- On a phone, the row actions move under the fields: below 768 px each shot card renders drag, select, sub-shot, sub-of/un-sub, link, delete and add-image as a wrapping strip beneath its fields instead of a narrow column down the left edge. That hands roughly 56 px back to Scene, Name, Detail and the attribute selects — the difference between reading a scene heading and reading the first half of one. Every action keeps a 44 px tap target. At 768 px and wider the left-hand rail is exactly as it was.
- On a phone the toolbar collapses to one "More" menu: below 768 px the shot-list header keeps only Add Shot; Import CSV, Select all, Export shots as CSV, Export PDF and Add Padding move into a More control beside it, each keeping its written label rather than shrinking to an unlabelled glyph. That is roughly a full row of buttons handed back to the list, which is the difference between opening the tab on a shot and opening it on an empty toolbar. The menu is keyboard-operable (arrows to move, Escape to close) and every entry keeps a 44 px tap target. At 768 px and wider the button row is exactly as it was.
3. Episode Management
Multi-episode projects (series, anthologies, or any shoot with distinct episodic breaks) are first-class. The episode dropdown in the Shot List header is also the episode management surface.
Creating Episodes
- Open the episode dropdown. If your project has no episodes yet, the dropdown reads "No episodes yet".
- Click "+ Add Episode". Enter a number (defaults to the next available) and a name (e.g. "Pilot").
- If your project already has scenes when you create the first episode, those scenes are automatically absorbed into it — you will see a confirmation toast and nothing is lost.
Switching Episodes
- The dropdown shows all episodes sorted by number, plus an "All Episodes" row.
- Selecting an episode scopes every shotlist surface (scene sidebar, grid, schedule, script viewer, scene viewer, characters, floor plans, moodboard) to that episode.
- Selecting "All Episodes" clears the scope.
- The active episode is remembered per-project across reloads.
Renaming Episodes
- Click the pencil icon on any episode row.
- Adjust the number and/or name; submit to save.
Deleting Episodes
Deleting an episode is a two-step decision so you never lose data accidentally:
- Click the trash icon on an episode row. The "Delete Episode" dialog appears with two choices:
- Keep scenes — soft-deletes the episode only; scenes become unassigned and reappear under "All Episodes".
- Delete all data — cascades the delete to every scene, shot, and floor-plan link inside the episode.
- "Delete all data" requires a second destructive confirmation that shows the scene count.
Script Import and Episodes
- When you upload a script while an episode is active, the script and its parsed scenes are stamped with that episode's id automatically.
- Upload while "All Episodes" is selected to create unassigned scenes (they can later be moved by deleting the target episode with "Keep scenes" then creating a new one).
4. Character Management
The Shotlist Characters tab allows you to centrally manage all the roles and actors required for your scenes.
Roster layout
The roster is one cast member per full-width row, opening with a 3:4 headshot. Nothing on a row is cut off: long names, addresses, travel notes and descriptions wrap onto the next line instead of ending in an ellipsis, the description keeps the paragraph breaks you typed, and every skill chip and every scene badge is shown — there is no "+2 more". The detail lines (age, contact, residences, travel, appearance) sit in two or three columns across the row rather than stacking down its left edge, each with its label visible instead of hidden in a tooltip.
A cast member with no picture yet gets an initials tile of exactly the same size as a headshot, so rows stay aligned and the roster reads as a column of people. Click a headshot to open the media viewer; the small number in its corner counts the photos and self-tapes behind it.
Edit and Delete sit at the right of every row and are always visible — they used to appear only under the mouse pointer, which made them unreachable on a touch screen. Drag-to-reorder still works, now vertically, from the handle at the far left; it stays switched off while a search, a filter or a sort is narrowing the roster.
On a desktop screen the Character Editor is wide, and its longest step — Details — is laid out in two columns from a large screen up: the character, their travel, their measurements and their look on the left; skills, dietary profile, casting videos, custom columns, unavailability, per-day notes and correspondence on the right. Phone and tablet keep the fullscreen step-by-step page.
- Unified Profiles: Create profiles for each character to be used across the entire shoot.
- Photo: Add a reference photo (headshot / casting image) to each character in the Add/Edit dialog. Images — including iPhone HEIC/HEIF, JPEG, PNG and WebP — are automatically down-scaled to a small WebP (≤ 768 px, ≤ 400 KB) and uploaded to the project asset store; when offline, the compressed image is stored inline so it survives reload and syncs to collaborators. The photo appears as the portrait at the head of the cast member's roster row. Use Change to replace it or Remove to clear it.
- Skills: Capture the physical abilities a role requires — e.g. sword fighting, dancing, horse riding, competitive running, firearms handling. Type a skill and press Enter (or comma) to add it as a removable chip; common skills are offered as one-click suggestions. Skills are shown as compact chips on the character card. Both photo and skills are optional.
- Character Assignment: Use the MultiSelectDropdown on individual shots or scenes to indicate which characters are involved.
- Call Sheet Integration: Characters are synced natively with the Call Sheet Generator, automatically parsing out which actors are required based on the scheduled scenes for any given shooting day.
Cast numbers
Every cast member carries a cast number — the small integer a call sheet cites instead of spelling
the role out in every scene row. It is shown as a #3 badge beside the name in both roster views, and
it is the first field at the top of the character record, to the left of the character name.
- New characters are numbered automatically, with the next free number in the project. That covers the Add dialog, the script extractor and the Undo after a delete — an undone delete gives the cast member their old number back, not a new one.
- A roster that predates the feature is numbered the first time you open the project's Preproduction tab — any sub-tab of it, not just Characters — in the roster's own manual order, continuing from the highest number already in use. It is deliberately not the Characters tab alone: the call sheet is what spends the numbers, and a producer reaches it without ever opening the roster. Nothing is written while you are viewing somebody else's project read-only.
- Change a number by typing over it in the character record. Numbers are meant to be stable: a call sheet you printed last week cites them, so the app never renumbers anybody on its own, and a new cast member always gets the number after the highest one in use — a gap left in the middle of the roster is never filled. Leaving the field empty on an existing character keeps the number it has.
- Archived cast members have no number. Archiving takes the number away: an archived member shows no badge, the call sheet never cites them by number, and the number field in their character record is locked. Nobody else is renumbered. Restore gives them the next free number; the Undo straight after archiving gives back the number they had, unless someone else has been given it in the meantime. Because a new cast member gets the number after the highest one in use, archiving the highest-numbered member frees that number for the next person you add. See § Archiving a cast member.
- The number is its own sortable and filterable column in the list view — sorted ascending, an unnumbered cast member sorts last rather than first.
Where the numbers are read: the call sheet's schedule prints them instead of names, and the call
sheet's Cast table carries a # column as the key. See
CALL_SHEETS.md § The Schedule block is the shooting day.
Every cast dropdown names the role and the actor
Wherever the app offers the roster for assignment, a row reads ROLE (Actor) — MARY (Ann Lee)
— not the role alone. That holds for all six pickers: the scene's cast field and its background
sibling, the shot row, the shot list's bulk "Assign Character…" bar, the bulk-edit dialog, and the
call sheet's Also called today. A character with nobody cast yet shows the role by itself, and a
role you have not named yet shows Unnamed (Ann Lee) rather than a bare identifier, so a row is
never blank.
Casting status
The Casting status dropdown in the Character Editor — directly under the actor field — records where a role stands in the casting process, and the chosen status appears as a coloured chip on the character card. A roster of thirty then reads as a casting board: what is booked, what is still out for approval, what has fallen through.
| Status | Meaning |
|---|---|
| Open | The role exists, nobody has been approached |
| In casting | The role is being cast |
| Applied | An actor has applied or been submitted |
| Maybe | Kept in reserve — neither a yes nor a no |
| Shortlisted | On the short list |
| On hold | Dates optioned, not yet confirmed |
| Approved | Signed off by production or the client |
| Offer out | The offer is with the agency, awaiting an answer |
| Booked | Confirmed for the shoot |
| Declined | Dropped out, or not chosen |
The field is optional and starts at Not set — a cast member you have not classified shows no chip at all, so an existing roster is never retro-labelled as still being cast. Choosing Not set again clears the chip.
Above the cards, a Casting status dropdown filters the roster to one stage, with a count beside each option and a Not set bucket for whoever is still unclassified. It stays hidden until at least one cast member has a status, and it combines with the search box and the availability pills — Clear filters resets all three. Unclassified cast appear only under All and Not set, never inside a status you are filtering for. Because Email cast opens pre-selected with whatever the roster shows, filtering to Booked and hitting the button addresses exactly the confirmed cast.
Availability at a glance
Each card carries a colour-coded chip, judged against the project's whole shooting period — the shoot dates from the Calendar tab, weekend and holiday exclusions included:
| Colour | Chip | Meaning |
|---|---|---|
| 🟢 Green | Available | Free on every shoot day |
| 🟡 Yellow | Free n/m days | Blocked on some shoot days |
| 🔴 Red | Unavailable | Blocked on every shoot day |
The card border takes the same colour, and hovering the chip lists the blocking periods with their reasons. The blocking periods themselves are the Unavailability ranges set per character in the Character Editor. Until the project has shooting periods there is nothing to judge against, so the chips and the filter are hidden and a hint points at the Calendar tab.
Filter the roster with the All / Available / Partly free / Unavailable pills above the cards; each shows how many cast members it covers. Reordering is disabled while a filter or a sort is active, since dropping a card into a filtered or re-sorted view would scramble the characters you cannot see — or write an order you never chose.
Finding people: search, filters and sort
Three controls sit above the cards, and they compose — a search, a set of filters, and one ordering.
Search looks across everything a cast member carries: name, actor, description, skills, sizes and body measurements, residences and means of travel, contacted-by, custom-field values, dietary tags and notes, day notes and unavailability reasons. It takes several words at once and requires all of them, so Berlin riding finds the riders who live in Berlin even though the city is a residence and the skill is a skill. Quote anything that belongs together: "EU 43" matches that shoe size, not everyone who happens to carry a 43 somewhere else.
More filters opens the advanced panel — casting status, the attribute filter rows, and the skill chips. Every option is built from the roster itself, so a filter can never come back empty by offering something nobody has. The toggle carries a badge with the number of active filters, so one left on inside a closed panel is still visible, and while anything is narrowing the roster the toolbar reads Showing 4 of 30.
Filter by attribute is a list you build. Press Add filter, pick any attribute the roster records, then pick a value:
| Attribute group | What it covers |
|---|---|
| Role & actor | Character name, actor, age, description, profile link, phone, email |
| Wardrobe sizes | Shirt, trousers, dress, jacket, shoe, hat, glove |
| Body measurements | Height, weight, chest, waist, hips, inseam, sleeve, neck, shoulder |
| Appearance | Hair colour / length / style, beard, body type, eye colour, skin tone, tattoos, … |
| Contact & travel | Contacted by, primary and secondary residence, means of travel |
| Dietary | Diets, allergies, catering notes |
| Photos & videos | Headshots, casting videos |
| Scenes & schedule | Scenes, shots, day notes, unavailability ranges, correspondence, last contact, channel |
| Custom fields | Whichever columns this project defines |
Add as many rows as you like. Rows on different attributes must all match (lives in Berlin and shoe EU 43); two rows on the same attribute match either one (shoe EU 42 or EU 43). Every field and every value carries its count, so a combination that must come back empty is visible before you pick it, and only attributes somebody has actually filled in are offered.
Two values are always there. Any value selects everyone who has that attribute recorded at all; Not recorded selects exactly the cast members missing it — who still has no headshot, whose sizes wardrobe has not collected, who is in no scene, who nobody has written to. Not recorded appears only when somebody actually lacks the field.
Casting status, availability and skills keep their own controls rather than appearing in the rows as well: status has its own dropdown, availability its pills, and skills their chips — because a skill selection is conjunctive where a row's values are alternatives.
Attributes and skills are chips, and you can switch on as many as you like. A cast member has to carry all of them to stay on screen — Horse riding plus French is the shortlist of riders who speak French, not the two lists added together. Each chip shows how many cast members have that skill, so a combination that must come back empty is visible before you click it. Past eight skills a Find an attribute… box appears above the chips to search the list itself; a chip you already switched on stays on screen however you narrow that search, so an active filter can never hide from you.
Sort sits beside the search box, with a direction button next to it. Every attribute in the table above is also a sort key, grouped into the same sections. The ones with their own behaviour:
| Sort by | Ascending means |
|---|---|
| Manual order | The order you dragged the cards into (the default) |
| Casting status | Along the pipeline — Open → In casting → … → Booked → Declined |
| Availability | The cast who are free first, then partly free, then blocked |
| Character name | A → Z |
| Actor name | A → Z |
| Sizes and measurements | Numerically where they can — EU 9 before EU 43, 168 cm before 180 cm |
| Anything (count) | Fewest first — these open on Descending, i.e. the leads first |
| Last contact | Oldest first — opens on Descending, i.e. who you spoke to most recently |
A key marked (count) orders by how many, not by whether there is one: Headshots (count) ascending is the fastest way to find who still has no picture, and Scenes (count) ascending finds the cast nobody has scheduled yet. A count of zero is a real position there, not a blank — it is exactly what you are looking for.
Cast members with nothing recorded for the key you sorted on — no casting status, no actor attached, no shoot dates to judge availability against — always collect at the bottom, in both directions. An absence is not a position on the scale; Not set in the casting-status filter is how you go looking for them instead.
Sorting is a view, never a change to your roster: it reorders what you see and writes nothing, so switching back to Manual order restores the exact order you dragged the cards into. While any other sort is active, drag-to-reorder is paused and the toolbar says so — otherwise dropping a card into a sorted view would silently write an order you never chose. The same applies while a filter is on, for the same reason: the cards you cannot see would be scrambled.
Two roster views
Cards / List above the search box switches how the roster is drawn. The choice is remembered per project.
Cards is the full-width row: one cast member, headshot first, every value spelled out and nothing clipped. It is the right shape for reading a record, and it is where drag-to-reorder lives.
List is a spreadsheet — a small headshot and the character name pinned to the left so a row you have scrolled sideways still belongs to somebody, the actor printed underneath it, and every other attribute in its own column. It is the shape for comparing thirty records on four values that sit three screens apart on a card.
- Columns opens a panel listing everything the roster records — the same list the filters and the sort read from, so wardrobe sizes, body measurements, appearance, residences and means of travel, dietary tags, the counts (headshots, self-tapes, day notes, unavailability, correspondence), scenes and shots, and this project's own custom columns are all available. Past a dozen fields a search box appears above the list; a column you have switched off always stays on screen while you search, so you can find it again to switch back on. Tick to show or hide, and drag a row by its handle to reorder — the table re-orders as you drop. The last remaining column cannot be unticked: a table with no columns has no header left to fix it from. Reset columns puts everything back.
- Click a column header to sort by it, and click it again to flip the direction. It is the same sort the dropdown drives — the two are one control in two places, so the list, the cards and the cast email export can never disagree about the order.
- Chips stay chips in a cell (a green Available, a Booked pill), counts are right-aligned numbers, and something nobody recorded shows an em-dash rather than an ambiguous blank.
- Drag-to-reorder is a Cards-view capability. A table you can sort by any of forty columns is never reliably in your own order, so dropping a row into it would write an order you never chose. Switch back to Cards to rearrange by hand.
- Resize a column by dragging the right-hand edge of its header. With that edge focused, ← and → step the width and Shift + ← / → take a bigger step. Widths are held between a readable minimum and maximum, so a column cannot be dragged away to nothing. Resizing is a pointer and keyboard affordance on tablet and desktop; on a phone the table scrolls sideways instead.
The arrangement is kept with your account, not with the project: the layout you set on a laptop is the one your tablet opens on, it survives a reload even offline, and a collaborator hiding a column never hides it for you. It is remembered per project, because column sets differ per production. Reset columns appears as soon as the arrangement differs from the default and restores the original order, the default set of columns and the original widths.
More than one headshot per card
On a desktop or a tablet held sideways, a cast member with several photos shows several: the next pictures stack underneath the first, in gallery order, filling the column beside a long record instead of leaving it empty.
How many appear is measured against that cast member's own details, so a picture stack never makes a row taller — a short record still shows exactly one headshot, and a fully filled-in one shows two or three. Phones and portrait tablets keep the single headshot, where the row is narrow and a filmstrip would push the details off the screen.
The badge counts what is still hidden — +2, self-tapes included — and sits on the last visible picture. Clicking any picture opens the full-screen viewer at that picture, not at the first one. On a headshot the viewer offers a download arrow beside the close button, which saves that picture to your device; a casting video or an external link has nothing to download, so the arrow is not shown there.
Archiving a cast member
Roles get cut. Actors drop out. Audition candidates get entered and then passed over. Archive takes someone off the active roster without throwing away a thing you typed about them — contact details, measurements, sizes, casting tapes, correspondence and day notes all stay exactly where they were.
The Characters tab has an Active / Archived switch beside the cards/list toggle, with a count on each side, so you can see at a glance whether the archive holds anything. Archive from the card or the table row (the box icon, between Edit and Delete); restore from the same place in the Archived view.
While someone is archived they are gone from every place the app offers you a cast member to pick:
- the scene's cast and background-cast pickers,
- the shot grid's cast column and its bulk cast editor,
- the floor plan's actor node,
- the call sheet's Also called today picker,
- the cast roster's PDF and CSV exports, and the pre-production export dialog.
They also stop being matched out of the script text, so a scene that names them no longer counts them as present, and a call sheet you had added them to by hand with Also called today stops listing them. What restoring does there is in CALL_SHEETS.md § Cast the schedule doesn't call.
If they are still cast in something, archiving tells you first. The confirmation names the scenes they are in and how many shots, because confirming does remove them from those scenes and shots — that is what takes them out of the schedule, the day-out-of-days and the call sheets. Cancel and nothing at all is written. Confirm and an Undo appears for the next few seconds that puts back the archive flag and every assignment it stripped, background marks included — and the cast member's number, unless someone else has been given it in the meantime.
Archiving takes the cast number away: an archived member has none, and nobody else on the roster is renumbered. See § Cast numbers.
Restoring later is deliberately not the same as undoing. Restore brings the person back to the roster and to every picker with the next free cast number, but does not re-cast them into scenes they left weeks ago — put them back on the scenes you want them on.
Archiving is not deleting. Delete still exists beside it and still removes the record for good; archive is the reversible one.
Emailing the cast
Email cast builds an invite list from the roster — for casting invitations, schedule updates, or any round of "who do I need to tell".
- It opens with everyone the current filter shows pre-selected. Filter to Available first and the list is exactly the people who can work; Only those who can work does the same from inside the dialog by dropping anyone blocked for the whole shoot.
- Open email draft hands your mail client a message addressed to you with the cast in BCC — no actor sees another's address — and the project name as the subject.
- Copy list puts the addresses on the clipboard. The list is also rendered on screen, so you can read or paste it without a mail client at all. Three formats: bare addresses,
Name <address>(which mail clients expand into recipient chips), and CSV with character / actor / address columns. - Cast members with no email address are named under the list, not silently dropped. One actor cast in two roles is de-duplicated to a single recipient. If the list is too long for a
mailto:link to carry, the draft button is disabled and says so — copy the addresses instead.
Selecting several shots
Click a row to select it, click again to drop it. Shift-click a second row and everything between the two is selected as well.
That range follows the list as you are looking at it. With a scene, episode, character or search filter narrowing the grid, shift-click spans the rows on screen and stops there — it will not reach around a filter and quietly pick up shots you cannot see, which matters because the bulk bar below acts on the whole selection. If the row you first clicked has since been filtered away, the shift-click is treated as an ordinary click rather than measuring a range from a row that is no longer there.
Assigning gear to many shots at once
Select two or more shots and the bulk bar offers Assign Gear…. The dialog holds the same lighting and camera pickers as a single shot row, and applying adds what you picked to every selected shot.
It adds; it never replaces. A fixture a shot already carries keeps its entry and its quantity — a shot set up for four of something is not quietly reset to one. Only equipment the shot does not yet have is appended.
Padding blocks and linked shots are skipped: a linked shot shows its master's gear, so anything written to it directly would never be visible. The dialog tells you how many shots the apply will actually touch before you commit to it.
The project gear list is updated in the same step, exactly as it is when you pick gear on one shot.
Changing any shot field across a selection
The bulk bar keeps five one-click actions — time of day, shot size, scene, status and adding cast — because those are the properties you change often enough to want a single click. Everything else a shot row carries lives behind Edit fields…, which opens a dialog grouping every bulk-editable property under Camera, Timing and Content:
| Section | Fields |
|---|---|
| Camera | Camera package, special setup, lens, angle, movement |
| Timing | Shoot duration, camera / lighting / other-department setup times |
| Content | Cast, scenarios, background extras, notes, optional flag |
Tick a field to change it. Anything left unticked is not written at all, so an apply can never blank a property by omission — the dialog has no concept of "empty means clear".
Clearing is explicit. Every field offers a Clear mode: clearing a text field empties it, clearing a duration sets it back to unrecorded.
List fields offer Add, Remove and Replace. Removing is what the bar could never do — taking one character off thirty shots used to be thirty edits, and is now one apply. Add is a union that keeps the order already on the shot; Replace overwrites the list wholesale.
Changing the camera clears a special setup the new package does not carry. The dialog says how many shots that will affect before you apply, and confirms it afterwards. A setup the new package still offers survives the change untouched.
Padding blocks are never written. Linked shots take only the fields they own — notes and the optional flag — and inherit the rest from their master, so a skipped field's row tells you how many of your selected shots it will pass over.
The footer counts three things before you commit: how many shots will actually change, how many already hold the values you staged, and how many are being skipped. A shot that already matches is left alone rather than re-saved, so re-applying the same edit costs nothing.
Adding a shot lands in the scene you are looking at
With the shot grid filtered to a scene, Add Shot creates the shot in that scene. Unfiltered, it still falls back to the project's first scene, and it does the same if the saved filter points at a scene that has since been deleted. Every shot created from a scene — the grid, the scene viewer, the script viewer — is linked by scene id, so two episodes that each contain a scene "1" can no longer be confused for one another.
Cast on a scene, and one click onto its shots
Until now a scene's cast was worked out only by scanning its action lines for character names. That works for an imported screenplay and not at all for a scene you created by hand — no text, no cast, and the shot grid's ★ suggestions for it stayed empty forever.
- Assign directly. The scene editor has a Cast in this scene picker listing every character in the project (with the actor's name where one is cast). What you assign is stored on the scene.
- Extraction assigns too. The Characters tab's Extract from script does not only create the characters it finds — it puts each one into the scenes whose dialogue names them, writing the same explicit list the picker above shows. It is safe to re-run: it only ever adds what is missing, and it leaves cast you assigned by hand alone.
- Both sources count. The assignment is unioned with the script scan, never a replacement — a character the script names and a character you added are both in the scene. Everything that already reads scene cast picks this up: the ★-sorted cast dropdown on each shot row, the floor plan's actor list, the scene badges on a cast roster card, and the call sheet.
- One click onto the shots. When shots in the scene are missing some of that cast, the editor offers Add this cast to N shot(s) in the scene. The number is the exact set it will write, so it never claims work it will not do, and it disappears when there is nothing left to add. It only ever adds — a character you put on a single shot by hand is never removed.
- Everyone at once. Both cast pickers — the one on a scene and the one on each shot row — open with an Assign all cast row above the list, which writes the whole cast in one step instead of a tick per person. Once everybody is on, the row becomes Remove all cast rather than sitting there doing nothing. It only touches the people the list can show you: a character deleted after being assigned stays where it is.
- You can see where each person stands while you assign them. Every name in a cast picker carries a coloured dot and label for its casting status — Open, In casting, Shortlisted, Offer out, Booked, Declined — and then a second dot for that person's availability over the whole shooting period. Hovering either gives the long form, including which shoot days are blocked and why. Both follow the roster card's rule of staying quiet rather than guessing: a cast member whose status you never set shows no label, and the availability dot is absent entirely until the project has shooting periods to measure against. The bulk bar's Assign Character… is a plain dropdown that cannot draw a dot, so it writes the same two statuses as text after the name.
Background cast: the same actor, smaller in this scene
An actor is not the same size in every scene. ANNA carries scene 5 and walks past the window in scene 12. Marking her as full cast in scene 12 overstates her on the call sheet; typing her name into the background field loses the link to her record — no call time, no dietary requirements, no contact block. Background is a per-scene marking on someone who is already in your cast.
- Mark them. Under the cast picker the scene editor has Background in this scene, listing the same project characters. Ticking someone marks them background for that scene only — the same person can be a principal in scene 5 and background in scene 12, and nothing is written to their character record.
- One person, one list. The two pickers are mutually exclusive. Marking ANNA background unticks her in Cast in this scene; ticking her there again clears the mark and she is a principal once more. Nobody is ever ticked in both — a scene cannot hold the same actor twice.
- You never tick twice. Marking someone who is not yet in the scene's cast adds them to it in the same step. Removing someone from the cast clears their background mark with it, so a mark can never be left behind pointing at nobody.
- To drop a background actor from the scene entirely, click them twice in the Cast in this scene picker without closing it: the first click makes them a principal again, the second removes them.
- They are still in the scene. This is a modifier, not a second list. Every surface that asks who is in a scene still lists them — the ★-sorted cast dropdown on shot rows, the floor plan's actor list, the roster's scene badges, and the Cast Day-Spread. They are on set, so they book the day, and the DOOD grid is right without changing.
- You can see the split without opening the second list. Marked people are still listed in the Cast in this scene picker — unticked, with a BG tag — so the gap where they would otherwise be has a visible reason.
- Per shot too. Shot rows carry the same Background cast control — exclusive with the row's Cast picker in exactly the same way — so one shot can differ from its scene, and a BG Cast column counts them. Add this cast to N shot(s) carries the marks down with the cast — a shot that already has the cast but is missing a mark still counts, so the number on the button stays exactly what it will write.
- On the call sheet. Background cast stay in the normal cast table with a BG tag, keeping
their call time, dietary badges and contact block. They are only tagged BG for a day when every
scene scheduled that day has them as background — a principal in any of the day's scenes is a
principal, because a call sheet that understates somebody's day is the worse error. The scene
schedule prints them after the principals, as
ANNA, TOM · BG: PASSANT 1, on screen and in the PDF. - In the CSV. The Characters column marks them as
Name (BG), in the same cell — read away from the app, "who is in this shot" is one question.
Not the same thing as Background Extras below. Extras are a head count of people nobody cast by name; background cast are named people from your cast list. The extras head count deliberately does not include them — otherwise you could no longer tell how many bodies you still have to book. In German the short tag is HG (Hintergrund).
Formatting the action lines
The scene editor's action-line toolbar carries bold / italic / underline / strikethrough, a bulleted and a numbered list, the highlight categories, plus font, size (8–48 px) and text colour, and a clear formatting button that removes those three from the selection without touching bold or a highlight. Select the text first — with nothing selected there is nothing to style.
- Select All restyles everything, not just the unstyled parts. Picking a size, font or colour
after Cmd+A now strips whatever the selection already carried and applies the new value to all of
it. A nested
font-sizeused to beat the new one, so a scene that had ever been styled came back half-changed. - The selection survives the change. Size, then colour, then font can be applied one after the other without re-selecting the text between each.
- Colour and size reach the script PDF. Both are stored as real values (
pxfor size) and are rendered by the script export at the size you set. - Lists reach the PDF too, with their bullets and numbers, and each item counts as its own line for the page-eighths measurement.
- Font is on screen only. The PDF is typeset in the project's own face — the exporter embeds a single font, so an arbitrary family cannot be rendered there. Use font to separate passages while writing, not to style the printed script.
- Pasted text arrives in the editor's style, not the source's. Copying a scene out of Word, a PDF or another editor used to bring that document's fonts, sizes and colours with it. Now the paste keeps the structure — paragraphs, line breaks — and the emphasis (bold, italic, underline, which carry meaning in a script), and drops everything else. Paste plain text and its line breaks are preserved too.
4a. Background extras
Cast are named people with their own cards. Background is not — nobody casts "four pedestrians" by name, and what a producer needs is the head count. So background lives in its own field, beside cast rather than inside it.
On a shot. The shot row carries a Background control next to Cast. Open it and add one group
per kind of background — a number and what they are ("4 Pedestrians", "8 Restaurant guests"). The
trigger then reads BG 12 for a single group, or BG 12 (2 groups) when there are several. Like
every other control on that row it can be switched off per project from the Fields picker if you
never use it.
In the list view. A BG column shows each shot's total head count, sortable and hideable like
the others. The CSV export carries it as a Background Extras column, written out descriptively —
4 Pedestrians; 8 Guests — because a spreadsheet read away from the app needs the breakdown, not
just a number.
On the schedule. Each shoot day's header shows a BG chip with the day's total, beside the cast chips. Padding blocks and omitted shots are excluded, so the number is what you actually have to call. A day of pure background — a crowd plate, a stadium wide — now shows that chip even though it has no named cast; before, that row appeared empty.
On a scene. A scene already lists its background under Extras / Atmosphere in its breakdown, so that stays the one place a scene names it. What the scene edit modal adds is a bridge: "Add this scene's background to N shot(s)", which pushes each breakdown name down onto the scene's shots as a group of one for you to adjust. It skips names a shot already carries, so pressing it twice never doubles the crowd, and it is hidden entirely when there is nothing to add.
Sub-shots inherit their parent's background along with its cast.
A linked take is called with its master's cast. Link one take to another and the second takes the first's cast, lens, size, setup times and duration — it keeps only what is genuinely its own (its number, its notes, its status, its shoot day). The cast it had before you linked it is kept on disk so that unlinking gives it straight back, but it is no longer the cast of that take, and nothing on screen shows it any more.
The call sheet follows the same rule: the day's required cast and the printed day table both list the master's actors, so linking a take never adds a name to the call sheet for a shot that actor is not in. If you want the second take to have a different cast, unlink it first — while it is linked, its cast field is not yours to edit.
So does the Cast Day-Spread, and this is where it matters most, because linking deliberately leaves the shoot day per-take. Pick a take up a week after its master and the master's actors are booked for both days — the take's day counts as a work day for the people actually in the shot, and the days between it and the master show as holds. The cast the take was carrying before you linked it books nothing; it is not the cast of that take any more.
The day's own header follows too: the cast listed for a shoot day, and the scene numbers and page count shown beside them, all count the take under its master's scene with its master's actors — so a pickup day never advertises a scene it is not shooting, or an actor who is not in it.
And it is costed from the master too. The day's budget, and the over-target warning that reads it, count the take's time as its master's time — so a pickup day shows the work it really holds instead of whatever the take happened to be worth before you linked it. Whether a take counts at all is still its own business: omit it on set, or mark it optional, and the day responds exactly as it would for any other shot.
That carries through to the day's clock, which is where it is most visible: each shot's start time is the previous one's end, so a take timed from the wrong record would drag every shot after it along with it. The take advances the day by its master's time instead, and the rest of the day keeps the times you planned.
The daily shooting report reads the same way: a pickup is listed under its master's scene, on its master's camera, for its master's planned time — so the day you report is the day you actually shot, not one built from whatever the take was before you linked it.
5. Gear Assignment and Discrepancies
What sets this shot list apart is its integration with your project's gear list.
- Assigning Gear: You can assign specific cameras, lenses, filters, and grip equipment to a particular shot.
- Discrepancy Checking: If you assign a "50mm Cooke Lens" to a shot, but that lens is not in your project's main Gear List, a Discrepancy Badge will immediately alert you.
- Resolution: Click the badge to bulk-add the missing equipment directly to your equipment list without leaving the shot list view.
Lighting on scenes and shots — how many, and from where
Every scene carries a Lighting Equipment picker in its editor, and every shot carries one on its row; a Temp Lighting picker sits beside each for fixtures booked against a single shooting day.
- The picker opens on what is already selected. A pinned Selected · N block sits at the top of
the dropdown, above the search box, listing every fixture on that scene or shot with its own
− / count / + stepper and a ✕. It is built from the selection itself rather than from the
catalogue, so it survives a search that narrows the list to something else, and it still shows a
fixture whose catalogue entry has gone away — a retired device id, or an Owned Gear row whose link
no longer resolves.
Ncounts fixtures, not rows: two lamps plus a 4×4 frame readsSelected · 3. - Ask for more than one. Set that stepper to 4 when the scene calls for four of the same lamp. The
chip on the closed picker then reads
Aputure LS 600d Pro ×4, and the same×Nappears on the scene card, in the scene viewer, on the shot info panel, in Shoot Mode and in both PDF exports. A single fixture stays unadorned.−stops at 1 — removing a fixture is a ✕, not a decrement to zero. The matching catalogue row below stays ticked and repeats the count read-only, so the panel never offers the same fixture two sets of buttons. - The gear list follows. A fixture not yet on the list is added at the count you asked for; one already there has its quantity raised to match. Raising only ever goes up, so a larger number you set by hand on the gear list is never walked back.
- What you already own comes first. The picker's search opens with an In your gear list group ahead of the catalogue groups, each row badged In list ×N with what the project holds — the same badge the floor-plan fixture picker uses. Picking from there packs the truck you have rather than ordering another lamp.
- Your own gear is searchable too. Below it sits In your own gear: items from your Owned
Gear inventory that exist nowhere else — neither in the stock catalogue nor in your Device
Library. Your own Device Library devices appear as well, under Custom, regardless of the
category you filed them under: a reflector saved in a category you named Grip is still found as
a light modifier, and a C-stand as a stand. Search by a distinctive word or two rather than
pasting a whole product name — the search matches whole words, so a size suffix such as
1.5x2Mwill exclude a device whose stored name is written differently. - New shots start from their scene. A shot created inside a scene arrives with that scene's lighting already filled in; change it per shot without touching the scene. A shot whose lighting you deliberately cleared stays cleared. Temp Lighting is not inherited — it is filed against the shooting date, so seeding it per shot would book the same fixture on every date the scene is shot on.
- Temp gear is booked for every day it is used. The dates on a Temp Lighting or Temp Camera category are its rental window, and picking the same fixture or camera again on a later shooting day widens that window rather than adding a second row. A package used on day 1 and again on day 5 is booked for both — not just for the day you first reached for it. A category you switched to specific dates collects each day individually instead of a span, and a day already inside the window changes nothing.
5a. Bad-weather locations
An exterior scene has a second answer that never had anywhere to live: where it moves to if the weather turns. A scene now carries a Bad-weather location beside its normal one — free text with the same scouted-location suggestions, so the spelling the stripboard groups by stays identical across both fields.
Both travel outward:
- Schedule — the scene card and the stripboard's day group show it after the normal location, marked If wet. The schedule PDF prints it on a second line of the Location column.
- Call sheet — the Scenes table, its mobile card view and the call-sheet PDF show both.
The toggle. Above the Scenes table in the call-sheet builder, Lead with bad-weather locations flips every scene that has one so the fallback prints first, marked Bad weather. It is a decision, not a forecast: you looked at the sky, and nothing in the app reads a weather service to second-guess you.
Whichever way the toggle is set, the other location is still printed underneath, labelled. A call sheet that quietly drops an address is worse than one that carries two — the failure would not show up until a driver was at the wrong gate.
A scene with no bad-weather location is unchanged everywhere, at either setting.
6. The 2D Floor Plan Canvas
Plan your camera setups spatially using the built-in Floor Plan Canvas.
- Canvas Tools: A high-performance 2D canvas (powered by Konva.js) allows you to draw or import a location floor plan using the dedicated Wall Drawing mode.
- Architecture & Props: Add doors, windows, furniture, and vehicles to flesh out the layout space. The prop library covers grip & electric gear too — dolly track (straight and curved), jib/crane, drone, C-stand with flag, greenscreen, video-village monitor — plus vans, trucks, and set dressing such as a grand piano, fridge, counter, and plants. Rigging that lights hang from is there as well: truss (Traverse), polecats and wall spreaders. All three span a gap, so on a plan they are told apart by how they END — a truss by its bracing and coupling plates, a polecat by round pressure feet, a spreader by flat load-spreading plates, which is the same thing that decides which one the grip department loads. Every element accepts a custom color.
- Gym, park and fitness-trail props: The prop menu also carries the kit a sports or fitness location is made of — dumbbells, barbell, weight plates, kettlebell, weight bench, squat/power rack, dumbbell rack, weight machine, treadmill, exercise bike, rowing machine and lockers; yoga mat, exercise ball, medicine ball and sports ball; park bench, backless bench, conifer, palm and hedge; and a full Trimm-dich-Pfad set — pull-up bar, parallel bars, balance beam, monkey bars, climbing net, hurdles, stepping logs and the station sign. Gym and trail kit is drawn near its real footprint (~30 px/m) rather than as a symbol, because on these locations the question a plan answers is how much floor is left between two racks. The three balls are sized in true proportion to each other, so an exercise ball never reads as a football. The prop menu is grouped into sections and scrolls.
- Camera Placement: Drag camera icons onto the canvas to represent your setups. Placing a camera automatically creates a linked shot in the Shot List with the next free shot number (undo available from the toast); deleting the camera later keeps the shot. To point a camera at a different shot, use Link Shot in the properties panel: it offers this project's shots, narrowed to the plan's linked scenes once you link any.
- FOV Visualization: By inputting the sensor size and focal length of the assigned lens, the canvas automatically calculates and generates a shaded cone representing the Field of View (FOV) for that camera position.
- Animation Suite: Create multi-keyframe animations for complex blocking. Plot camera paths and adjust individual camera rotations on a per-keyframe basis to simulate changing orientations during a dolly or track. Positions along a path are lettered as marks (A at the start, then B, C, …) both on the canvas and in the keyframe list — add them with Track Mark (cameras) or Walk-To Mark (actors).
- Annotations: The Annotate toolbar menu places free text notes (adjustable font size and color) and direction arrows anywhere on the plan. Annotations stay visible in every department layer preset, so notes survive "cameras only" or "lighting only" prints.
- 180° Line of Action: A toolbar toggle draws the axis between the plan's two actors and flags any camera that crossed to the wrong side with a red "180°" warning — the reference side is set by the first camera you placed.
- Coverage Templates: New from Template offers nine starting points, including standard coverage patterns — dialogue OTS pair, master + two singles, three-camera interview, corridor walk & talk with dolly track, and a car process setup.
- Side view (heights): A collapsible strip at the top right plots every camera, light and actor at its rigged height (from each node's
properties.heightCm, set in the properties panel), so you can read eye-line against camera height against key-light trim before shoot day. Fixtures sharing a trim are listed on one line with a×ncount — hover for the full list. Rigging the key, fill and back at the same height is the normal case, and stacking them as separate rows made the readout unreadable. Where two heights sit too close to print apart, the row shifts just far enough to stay legible and a tick on the left rail marks the true position.
Lighting a plan
- Choosing a fixture: Add Light opens a configurator with three parts — a base fixture, an optional modifier, and the symbol the pair draws as. The library is filtered by type rather than by product name: chips show how many of each kind you own (COB, Panel, Fresnel, Tube, Mat, …), because searching "fresnel" only matches devices with the word in their name and most do not have it. Each row carries a silhouette of its family and a warm/cool dot, so the list is scannable by shape.
- Symbol and size: Floorplan Icon picks the symbol; Auto reads it from the device. Size is a separate control — a 1×1 and a 4×4 softbox are the same symbol at different sizes, inferred from the product name unless you override it. Grip surfaces offer six steps up to a 12×12 butterfly. A preview above the grid shows exactly what will be placed.
- Stand or rigging: Stand / Rigging records what holds the fixture up — C-stand, baby, combo, roller, low-boy, wind-up, polecat, truss, wall spreader or clamp, drawn from the stand catalogue merged with your own library, so the "In list" badges and the add-to-gear-list button behave exactly as they do for fixtures. The plan draws the difference that matters on a horizontal slice: a floor-standing mount shows its leg footprint — the floor the grip has to keep clear, and the reason two lamps will not both fit where you drew them — while a rigged mount draws a drop and a clamp and no legs at all.
- Stand budget: If a plan uses more of one stand than the gear list holds, the section says so and offers to add the difference (one owned against three placed adds two, not one); the count stays on the collapsed section's summary so it does not vanish when you move on. It is a warning, never a block — sketching a setup you intend to rent for is legitimate. The budget is counted per plan, so carrying one C-stand from one scene's plan to another's is one C-stand and never warns; only using it twice on the same plan does.
- Gels and grids: Frames, flags, nets and silks carry what is rigged INTO them — diffusion (216 / 250 / 251), CTO (204 / 205 / 206), CTB (201 / 202 / 203), ND (.3 / .6 / .9), and an egg crate. The header totals the stop loss, grid included. Gels are tinted by what they do to the light, so CTO reads warm and CTB reads cool on the plan rather than showing the colour of the roll.
- DMX patch: Give a fixture a channel, universe, address and footprint, then toggle the patch chips on the canvas. A double-patched address turns red.
- Plot symbols (print view): A toolbar toggle redraws the plan as a drafted lighting plot — outlined symbols on white paper, hatch for diffusion, net density for stop loss, and — once a fixture has a channel number (the desk channel — set it in that light's properties panel, which keeps it separate from the DMX universe/address) — its channel number in a bubble welded to the symbol. Fixtures without a channel simply carry no bubble. Coverage becomes outlines rather than filled washes, because a page of overlapping amber cones is unreadable printed: a light throws a finely dotted cone and a camera sees a long-dashed one, so throw and coverage stay tellable apart even in black and white. Use it for the copy the gaffer prints; leave it off for the director's blocking diagram. Switching modes never moves or resizes anything.
- Fixture Legend: Lists what is actually on the plan, split by size and by gel, so the legend matches the symbols on the page rather than showing a generic one.
- Practicals: Add Practical — beside Add Light, under a lamp icon — places the lamps that are already in the room: floor lamp, table / bedside lamp, pendant, ceiling light, wall sconce, tube light / batten, and a bare bulb. They need no device from the catalogue and are deliberately never written to the gear list: set dressing is not something the truck has to load, and they do not count toward the "fixtures with no device" row below. The six are told apart by their shade, because the shade is the optics — a drum shade draws two tight rings, a cone shade a wide gap, a pendant adds its ceiling rose and cord, a ceiling fitting glows edge to edge, a sconce is a half shade on a wall plate, a batten is a capped strip. The sconce is the only one with a direction: it is bolted to a wall and cannot throw backwards, so rotate it to aim the wash into the room; the shaded lamps are omnidirectional from above and draw a pool instead of a cone. Colour temperature, size and DMX work exactly as on any other fixture.
The plan and the gear list, in both directions
A lighting plan is only as good as the truck that shows up. These four surfaces keep the two in agreement.
- The library says what you already have. Every row in the fixture picker is badged against the project gear list: a green In list (with the quantity, when it is more than one) or an amber Temp gear for temporary gear. The In gear list chip narrows the library to just those, and they sort above the rest of the catalogue — so the twelve fixtures actually coming on the truck are not scattered through 218 alphabetical entries.
- Add to the gear list without plotting. A fixture that is not listed carries a + on its row: it goes onto the gear list, under Lighting, without being placed. The picker stays open, so you can work through several.
- Plot what you already own. Gear-list fixtures that are not yet on the plan appear in the suggestion bar above the canvas — tinted green, labelled with the gear category they came from. One click arms them for placement. The same bar still offers what the scene and shot breakdowns call for, tinted amber; a fixture that is both keeps its scene attribution, because that is the more specific statement.
- Reconcile the whole plan. Fixture Legend → By device lists every distinct light and modifier on the plan with its count, what the gear list holds, and a button to Add ×N or Raise to N. Add all N to gear list closes every gap at once. Fixtures placed without a catalogue device are reported as one row so the counts still add up — they just cannot be exported until you give them a fixture. Practicals are excluded from that row: a floor lamp has no catalogue device on purpose, so counting it there would inflate the one number this panel exists to make trustworthy.
Placing a configured light still writes it onto the gear list automatically, but it now tells you — a toast naming the device and the category, with an Undo that reverses exactly that write and nothing a collaborator did in between. It also counts: place a fourth 600d Pro and the gear row goes to 4. Quantities are only ever raised, never lowered, so a number you set by hand survives.
Membership is decided once, for every surface: a device matches by its library link first, and by an exact name second. That second lane is why a gear row you typed by hand still counts as covered.
Room Scan and CAD Import → Floor Plan
Instead of drawing a location by hand, scan it — or import the plan someone already drew.
- Scan room (iPhone / iPad Pro with a LiDAR sensor, iOS 16+): opens Apple's RoomPlan capture view. Walk the space pointing the camera at every wall, tap Done, and the scan becomes a floor plan. Everything is processed on the device — nothing is uploaded, and it works offline.
- Import scan or CAD plan (every platform, including web and Android): imports a RoomPlan
.jsonscan exported from any scanning app, or a.dxffloor plan from a CAD application. No LiDAR hardware is needed to import either. - Already to scale. A scanned plan needs no ruler calibration — the pixels-per-metre come from the scan's own measurements, so the measure tool, grid and PDF scale bar are correct immediately.
- Review before it is added. A preview shows the parsed room with its measured size (e.g. "4.8 × 3.2 m · 15.4 m²") and a count per category. Untick a category to leave it out — import the walls, doors and windows but skip the furniture. Choose whether the scan becomes a new floor plan (the default) or is added beside the current one, and Undo in the confirmation toast removes everything the import just added.
- Ordinary elements afterwards. Imported walls, doors, windows, furniture and stairs move, rotate, delete, hide by layer and export to PDF exactly like hand-placed ones — so you can scan the room, then drop cameras and lights onto it (and each camera still writes its own shot).
- What it recognises. Walls, doors, windows and openings, plus 13 of RoomPlan's 16 furniture categories mapped onto matching symbols (bed, table, chair, sofa, sink, toilet, bathtub, TV, fridge, storage, stairs, and kitchen appliances). Anything it cannot match is skipped and reported in the review step rather than imported as a mystery box.
The scan button only appears on hardware that actually has a LiDAR sensor (iPhone 12 Pro and later Pro models, iPad Pro 2020 and later). On every other device you will see only Import scan or CAD plan.
Importing a DXF floor plan
DXF is the format every CAD application can write, and it is what a location manager, an architect or a scanning app's "export for AutoCAD" will hand you.
- What is read. Straight lines and polylines become walls, doors and windows; block
references (
INSERT) are expanded, so the door, window and furniture symbols in a real architectural drawing come across with the walls rather than being dropped. Closed shapes and circles on a furniture layer become single furniture blocks, not four loose lines. - Layers are the import groups. A CAD file classifies its geometry by layer and nothing else,
so the review step lists the drawing's own layers with a count each — tick only what you want.
Layers that look like annotation (dimensions, hatching, text,
DEFPOINTS) start switched off, because importing them would draw measurement strings across the room. - Scale. If the drawing declares its units (
$INSUNITS) they are used as-is. If it does not — which is always the case for DXF R12 files — the scale is estimated from the drawing's size, the review step says so, and a unit picker (mm / cm / m / in / ft) lets you correct it. Changing it re-scales the whole import, and the measured size updates immediately, so check that readout before confirming. - What is skipped, and said out loud. Curved segments (a door's swing arc) are not imported; neither is text or dimension geometry. Very detailed drawings are capped, and the review step reports the truncation rather than silently keeping the first slice.
- Formats that are not DXF. Picking a
.usdz,.dwg,.ifc,.svg,.obj,.plyor PDF plan does not produce a parse error — each one is recognised by name and tells you what to export instead. (USDZ in particular is what most scanner apps hand you by default; it holds 3D geometry, not a measurable plan, so export the parametric JSON or a DXF.)
6a. Pre-rigging: splitting prep from the shoot
Scene setup times are charged at the scene boundary — the moment the day's running order first reaches that scene. That is the right default, and it is wrong for pre-rigging: when the gaffer lights scenes 2 and 3 in the morning and the unit shoots them after scene 1, the lighting time is not being spent at the boundary, and charging it there inflates the day by however long the rig took.
Marking a department as pre-rigged. Open the scene (Script tab → Edit Scene) and find Scene Setup Times. Camera Setup and Lighting Setup each carry a Pre-rigged (schedule separately) checkbox. Ticking it drops that department out of the scene's transition cost; the other department still counts, so a scene with pre-rigged lighting and 8 minutes of camera setup costs the day 8 minutes at that boundary rather than the longer lighting figure. A hint under the fields reports how many minutes were lifted out, which is the number you need next.
Putting the time back where it belongs. On the Schedule stripboard use Add block → Pre-Rig and give it that length, then drag it to where the work actually happens — usually first thing in the morning. The day total is unchanged in aggregate; the minutes have moved, not vanished. Unlike a company move, a Pre-Rig block is continuity-neutral: it does not end the current setup, so the shot after it does not re-pay a scene transition.
What does not change. Department call times still assume the full prep ahead of the first shot — lighting has to be on the floor that early either way. Pre-rigging says where in the day the work sits, not that it is free. Schedule PDFs print the lifted time separately as Pre-rigged prep, so the day breakdown still adds up.
The one way to get this wrong: tick the box and never add the Pre-Rig block. The day then under-reports by exactly those minutes, and nothing warns you — the schedule believes the prep is being handled somewhere you have not written down yet.
6a-i. Names are shown in full on the stripboard
Location names, roles and actors are never clipped on the Schedule stripboard. Four places used to cut
them off at a fixed width — the day header's location, a scene group's location, the location hint on a
shot row, and the scene card's footer in the Scenes sidebar. A name longer than the cap simply ended in
an ellipsis, and the only way to read it was to hover for the tooltip. All four wrap onto a second line
now instead, so Kulturzentrum Alte Feuerwache — Innenhof, Halle 3 reads as itself.
The cast chips on a shot row changed with them, in two ways:
- Every assigned character is listed, not the first three with a
+2after them. A five-hander showed two readable names and a counter; the row grows a line instead. - Each chip names the role and the actor —
KOMMISSARIN HALLER (Marlene Vogt)— which is the label every cast dropdown in the app already uses. See Every cast dropdown names the role and the actor. A character with no actor on file still shows the role alone.
Chips stay hidden on phone-width screens, where the row has no room for them; that is unchanged. On tablet and desktop nothing is abbreviated.
6b. Shoot Mode — running the day on set
The Schedule stripboard is a planning surface. Shoot Mode is the execution one: it takes over the Schedule tab for a single shoot day so a 1st AC, script supervisor or DIT can work the day without scrolling past thirty others.
Starting it. Every shoot-day header carries a Shoot Mode button. Pressing it marks that day live for the whole project — every collaborator sees a "Day 5 is live" banner on their stripboard. Entering the focused view stays each person's own choice, so nobody's planning board is collapsed out from under them. Exit leaves only your own view; End shoot day clears the live day for everyone.
What you see. Exactly three days: the live day, the day before, and the day after. That is enough to push a shot to tomorrow or pull one forward, with nothing else in the way. Drag and drop behaves exactly as it does on the planning board. Inserting and removing whole days is suppressed — both renumber every later shoot day, which is not something to do mid-shoot.
Checking off. Each shot carries two large buttons, Done and Cancelled. One tap each; pressing the active one again returns the shot to planned. They write the same status the shot list and the PDFs already understand.
The bar at the top shows the wall clock, the day's call time, how many shots are done, and how the day is running — on schedule, 23 min behind, 12 min ahead. That number is live: it keeps growing while a shot overruns, without anyone touching the screen. Beside it sit the planned wrap and the projected one.
Unfolding a shot shows what the camera needs for it — camera package, lens, special setup, camera and lighting equipment, size, angle, movement, setup minutes, cast, location — with the prep notes shown read-only for context.
The fold-out also names the shot before and after this one in shooting order, with their times. This matters more than it sounds: the board groups a day by scene, and scene numbers follow the script rather than the shoot, so the row above is usually not the previous shot. Cancelled shots are skipped; breaks are shown, because "lunch is next" is worth knowing.
Takes. Add a take, rate it Good / NG / Hold, and write a note against it. The collapsed row shows the count and how many were circled.
Planned vs actual. Type what the shot really needed. Checking a shot off also fills the actual duration in from the clock — the gap since the previous check-off, or since call time for the first shot of the day. The moment you type your own figure, the app stops overwriting it.
The … menu on each row creates a variant of the shot, inserts a time block after it, or moves it a day either way. A variant is a full, freely editable copy placed straight after the original — not a linked take, so you can give it a different lens, size or setup time. Its status, takes and notes are its own.
Time blocks. Break, relight, blocking and company move each have their own type, icon and default length, and can be added from the day footer or from a shot's … menu. Only a break counts as the meal, so a 45-minute company move no longer clears the lunch warning or gets printed as the crew's meal time.
Notes on set go into a field of their own, separate from the prep notes — typing on the day can never overwrite the DP's framing intent.
Everything written in Shoot Mode saves locally, syncs to the cloud and appears live for every collaborator. Viewers (read-only collaborators) see all of it but cannot check off, edit or drag.
It feeds the Daily Shooting Report: a Shot coverage section reads the day straight from the schedule.
6b-i. Call times: crew, departments, and cast
Every scheduled day header carries a Call field — the crew call for that day. Below it sit two collapsible rows.
Dept. Call Times shows Camera, Lighting and Director, each derived from the first shot's setup times (the director's is 30 minutes before shooting), plus a manual field for the other departments.
Those three derivations are suggestions, not fixed values. Type over any of them to set the day's real time; the department then shows an Auto button in place of its (auto) hint, which clears your override and puts it back on the calculation. Only the departments you actually change are stored, so overriding Camera leaves Lighting and Director still following the schedule, and changing a shot's setup minutes still moves them.
The time you set is the one the day's call sheet receives. It works in both directions: an override here reaches every call sheet for that day, and a call sheet that deliberately states a different department time keeps it — editing a department time on the sheet is no longer overwritten the next time the schedule recalculates, the same protection crew call, lunch and wrap already had.
Cast Call Times lets you give any actor required that day their own call. It lists only the characters actually scheduled on the day, and it is collapsed by default with a summary — "2 of 5 set", or "all on crew call" when you have not set any. Leave a field blank and that actor is on the crew call; the crew call is shown as the field's placeholder so you can see what blank means.
Cast call times are stored per day, so moving an actor's scenes to another day does not carry a call time that no longer applies. When you press Generate Call Sheet on the day header, they are carried into the call sheet's Cast & Call Times table — you no longer retype on the call sheet what you already set on the schedule. Times you then set on the call sheet itself (pickup, costume, makeup, ready) live there and are not overwritten by the schedule.
6c. How long is a shooting day?
Each day on the stripboard carries a time badge — 7h 30m / 10h — comparing what the day costs
against the day you are budgeting for.
Day length sits in the schedule toolbar, next to Scene buffer. It defaults to 10 hours, the standard scheduled shooting day, and accepts anything from 1 to 24 hours in half-hour steps. The value is per project, so a documentary running six-hour days and a commercial running twelve both get an honest badge instead of one calibrated for somebody else's schedule.
Changing it moves everything that depends on it at once: the badge, the over-budget flag, the percentage, the lunch and overtime warnings — lunch is flagged at 60 % of the day, overtime at 100 % — and the budget bar printed on the exported schedule PDF.
Meal breaks do not count toward the day. A ten-hour day is ten hours of work plus its meal, not ten hours with lunch eaten out of the middle. The badge therefore measures working time and shows the deduction beside it as
(+1h break), so it still reconciles with the day's real call-to-wrap span on the timeline. The printed schedule shows the same figures.Only the meal break is deducted. A relight, blocking rehearsal, company move, pre-rig or scene-change buffer is crew time on the clock and stays in the budget.
6c-i. Daylight warnings on a shoot day
A shoot day flags exterior scenes scheduled outside the light they call for, so an EXT/DAY scene booked for after dark is caught while it is still a scheduling decision rather than on the morning it is meant to shoot.
The badge compares each scene's slot on the day's timeline against real sunrise and sunset at the
day's location, and names the scenes rather than counting them — at most three, then +N:
- A red badge names scenes that fall completely outside their daylight.
- An amber badge names scenes whose slot only straddles sunrise or sunset.
- A scene covered by several setups is flagged once, at its worst verdict.
It needs all three of a date, coordinates and an EXT scene with a DAY or NIGHT time-of-day, and says nothing without them — a warning that fires on missing data is one people learn to ignore. Set coordinates on the day's location under the Locations tab; an address alone is not enough for the sun calculation. SUNRISE and SUNSET scenes are never flagged, because straddling the horizon is the point of them.
Nights that run past midnight are judged on the wall clock. A day that wraps at 06:00 is compared against the following morning's sunrise, and across a clock change that still means 06:00 — not a flat twenty-four hours from the call. On the spring-forward night the difference is an hour at dawn, which is the whole margin between a night that finished in the dark and one that did not.
6d. Two lists, two orders
The Shot List and the Schedule each keep their own running order, and neither one drags the other around.
The Shot List is the creative order — the order the shots make sense in, the order you built them in, the order they will be discussed. The Schedule is the shooting order, and on a real production it is almost never the same one: you shoot out of order to keep a location for one visit, to release a cast member early, to get the exterior while the light holds.
So a drag on the stripboard changes the shooting day and nothing else — go back to the Shot List and it is exactly as you left it. The reverse holds too: reorder the Shot List, and every shooting day keeps the running order you gave it. Organise by and the bulk Move to day action follow the same rule; they rearrange the day, never the list.
A shot you have never moved on the stripboard simply sits where the Shot List puts it, so a fresh project reads the same on both tabs until you start scheduling — the two orders separate as you use them, rather than needing to be set up first.
Time blocks live only in the Schedule. A meal break, a relight, a blocking rehearsal or a company move paces a shooting day; it does not describe anything being shot. You add them from a day header on the stripboard or from Shoot Mode, and they appear in the schedule, its PDF and the call sheet — never in the Shot List or the shot list PDF.
6e. Setup changes: when they appear, and how to get rid of one
A Setup Change is the block that carries the time it takes to strike one scene's setup and build the next. The schedule can place them for you, and you can place them yourself.
Automatic. When a drag puts two different scenes next to each other, the schedule adds a Setup Change on that new boundary — and only there. It does not go back over the rest of the day looking for other transitions to fill in, so one drop never sprinkles blocks across scenes you did not touch, and a Setup Change you deleted somewhere else stays deleted.
The length, and the off switch. Scene buffer in the schedule toolbar sets how long an automatic Setup Change is, from 0 to 120 minutes. Set it to 0 and the schedule stops placing them altogether — nothing is generated, rather than a run of zero-minute blocks. Everything already on the board stays where it is.
By hand. Every day header offers a Setup Change alongside Break, Relight, Blocking, Company Move and Pre-Rig, so you can place one on a transition the schedule left alone — a lens change, a costume reset, anything the scene numbers do not know about. A hand-placed one starts at 15 minutes and its length is editable inline like any other block.
Deleting one. Every time block, Setup Changes included, carries a delete button on its own row. Dragging a block to Unscheduled only parks it; the delete button removes it.
7. Episodes
Episodes are first-class, project-scoped entities. They let you scope every shotlist surface — scenes, shots, schedule, grid, floor plans, script, and moodboard — to a single episode of a series. For single-episode or non-series projects, the dropdown can be ignored entirely.
- Create: Open the episode dropdown in the shotlist header and choose Create episode. Give it a number and a name. The first episode absorbs all existing scenes (with an undo toast).
- Switch: Selecting an episode filters the entire workspace — Shotlist, Script, Characters, Schedule, Grid, Floor Plans, and Moodboard — to that episode's data.
- Rename: Edit the episode name inline from the dropdown; no modal required.
- Delete — Keep scenes: Soft-deletes the episode only. Scenes become unassigned but stay in the project.
- Delete — Delete all data: Cascades the delete to every scene, shot, and floor plan in the episode. Requires a destructive confirmation.
Legacy fallback. The legacy
episode_numbercolumn on existing scenes is still honored as a read-only fallback — old projects don't need a migration.
8. Cast Day-Spread
A collapsible panel above the stripboard that visualizes, per character, the shoot days they are scheduled on. Actors bill per day, so a character on days 1 / 4 / 7 is a 3-day booking regardless of shot minutes — this view makes that cost visible.
- Dot strip per character: one dot per scheduled shoot day.
- Shoot-day count & screen minutes: quick totals to spot over- or under-used cast.
- Day-span: first-day → last-day window. Compare against shoot-day count to see fragmentation.
- Fragmentation warning: triggers when day-span exceeds shoot days + 1 — flags extra idle days that still bill.
- Click-to-navigate: click any dot to jump the stripboard to that shooting day.
Consistency. The day-budget bar, stripboard grouping, and Cast Day-Spread all read from the same day-math primitives (
scheduleDayCalcs.js), so the numbers you see are guaranteed consistent. Lunch and overtime warnings scale off the project's Day length setting — see How long is a shooting day? — with lunch at 60% and overtime at 100%.
Timezone safety. Shoot-day → calendar-date mapping uses date-fns local-calendar formatting. Scheduling in a non-UTC locale no longer drifts shoot days onto the wrong side of a holiday.
8a. PDF column headers, and the camera-gear columns
The printed shot list and schedule take their column headers from your app language. They used to print
in English whichever language you were in: the header labels were looked up under a key the app built at
run time, and the catalogue held them under a slightly different one, so 22 of 24 headers quietly fell
back to their English text. German exports now read Tag, Szene, Beschreibung, Objektiv,
Drehort and so on.
Two columns are new, and they close a gap on the same shot row:
- Camera Gear (
Kamera-Equip.) and Temp Camera (Temp. Kamera) print the per-shot camera package and temporary camera gear chosen with the camera-equipment pickers. The matching Lighting and Temp Lighting columns had existed for a long time; their camera counterparts were collected in the UI and appeared in no export at all. - They are off by default in the column picker, unlike Lighting. Two more columns is a lot of width, and the default selection already fills a landscape A4 — added automatically they would push the table past the page and make the fit planner drop other columns to compensate. Tick them under Columns to Include when you want them; see Fitting the landscape table onto the page for what happens when a selection is too wide.
Both print on the tile layout automatically whenever a shot has them, since a tile grows to fit its content instead of competing for column width.
9. CSV Import & Export Strategies
If you prefer to start outside the application, you can import an existing shot list.
- CSV Import: Use the
Import CSVtool to map your spreadsheet columns (Shot Number, Setup, Size, Lens, Notes) directly into the Cine Power Planner data model. - Manual Mode: You do not need to upload a script. You can simply click Add Scene to manually build a shot list from scratch.
- PDF Export: Generate a beautifully formatted, industry-standard Shot List PDF. Choose from tile-based portrait layouts or detailed landscape tables, complete with camera setups, gear assignments, and exported thumbnails of your floor plan diagrams.
Fitting the landscape table onto the page
The landscape table has 22 selectable columns and A4 landscape has room for about 14 of them at full size. The export always fits the paper — it will never draw a column past the paper edge — so the dialog tells you up front what fitting is going to cost, above the column list:
- Green — every selected column fits at full size.
- Amber — everything is still there, but the columns were narrowed and/or the text shrunk. The headline names which (e.g. "All 22 columns fit — text shrunk to Tiny").
- Red — the selection cannot fit, and the columns that will be left out are named.
The meter under the headline is the selection measured against the page: the solid part is what fits, the pale part is what does not. Three controls move it:
| Control | What it does |
|---|---|
| Paper size | A4 or A3 landscape. A3 carries all 22 columns at a readable size. |
| Text size | Auto shrinks only as far as it has to. Roomy / Compact / Tiny pin it yourself (Tiny is 5.5 pt). |
| Hide empty columns | On by default. Drops any column that is blank on every shot in this export. |
Hiding empty columns is usually the cheapest fix. A column nobody filled in still costs its full
width and prints a column of dashes; on a real three-shot list, dropping eight of them was enough on
its own to bring the table back to full-size text. Columns with no data anywhere carry an empty
badge in the picker, and All / Essentials reset the selection in one click.
Whatever the PDF could not show is named in a small footnote under the table, so the person reading the printout knows something was left out rather than assuming the list is complete. Portrait orientation sidesteps the question entirely — it uses the tile layout, which has no column limit.
10. Moodboard
A visual reference board per scene. Every scene owns its own moodboard, plus a General board for references that belong to the whole production, so a look pinned to Scene 12 does not clutter Scene 3.
Putting things on the board
- Drag images, videos or PDFs straight onto the canvas, or use Add Image / Add Video / Add PDF.
- Add Link resolves a URL — YouTube, Vimeo, Pinterest or any web page — into a preview card.
- Add Comment drops a sticky note; double-click it to edit.
- Add Text drops a text box and puts the caret straight in it. Unlike a sticky note — which is
feedback about the board — a text box is board content: a title card, a quote, a shot number.
Its format bar carries the font (six families), the size (± steppers or a typed value),
bold, italic, alignment and the colour, with eight swatches and a free picker.
Click away or press
Escto save. The box grows to fit while you type, and the PDF export keeps the size, weight, slant, alignment and colour.
Pictures keep their own shape
Images and videos are placed at their own aspect ratio. A portrait frame, a square Instagram still and a 2.39:1 anamorphic grab all keep their proportions — nothing is trimmed to make a tidy grid, and resizing a tile never crops the picture inside it.
Dragging a corner handle resizes an item with its ratio locked — pull inward to shrink, outward to grow, and the opposite corner stays where it is. Hold Shift while dragging a corner to stretch width and height independently. The handles stay the same size on screen at any zoom level.
To cut a picture down deliberately, select it and pick the Crop tool. The whole frame is shown so you can see what you are removing; drag a rectangle over it and choose Apply crop. The tile re-shapes itself to the crop so the result is never stretched. Reset restores the full frame at any time — a crop is stored as a region of the original, so nothing is ever destroyed.
Looking at a picture full size
The board is a layout tool, and a thumbnail on it is often too small to judge. Double-click an
image — or select it and press the magnifier in its action bar — to open it full screen, then move
through every other image on the board with the arrows, the ← / → keys, the filmstrip along the
bottom, or a swipe on a tablet. Esc closes it. The download arrow beside the close button
saves the picture you are looking at to your device, named after its caption.
The carousel follows what the board is currently showing: with a filter active it cycles only the images that survived the filter, not the ones you just hid. Read-only collaborators can open it too — looking changes nothing.
Captions
The text under a picture starts as the uploaded filename and is yours to change: hover the tile and click the pencil, type, then press Enter. This caption is what the moodboard PDF export prints under each image, so it is worth setting on anything you intend to send out.
Moving around
- Zoom with the
+/−buttons, the scroll wheel, or a pinch on a touch screen. - Fit View frames everything actually on the board, wherever it sits — it is not a zoom reset.
- Hand tool (or hold Space) to drag the canvas around.
- Fullscreen hands the whole window to the board. Add dialogs work there too.
Editing
- Undo / Redo sit in the toolbar beside the zoom controls, and on
Cmd/Ctrl+ZandCmd/Ctrl+Shift+Z. One drag, resize or rotate is one undo step. - Copy, paste and duplicate a selection with
Cmd/Ctrl+C,Cmd/Ctrl+VandCmd/Ctrl+D. Pasted copies land slightly offset from the original and are selected for you. - Shift-click adds to a selection; Delete removes everything selected.
- Layers reorders items and hides them without deleting.
A toolbar that fits the space
The bar adapts to how much room the board actually has. On a wide screen every control is inline. As the board narrows, the six add tools collapse behind one + menu; narrower still, and annotate, crop, layers, fit view and export move into the ⋯ menu. Nothing is taken away — it is only tucked in, so the bar never grows into a block that covers the board.
Finding something on a full board
The magnifier in the toolbar opens the search: filter by text — captions, filenames, link titles, note text — or by type (images, videos, links, PDFs, comments, text). It only occupies space while it is open, and the magnifier stays lit while a filter is active so a narrowed board never looks mysteriously empty.
Sharing it
Export offers a PDF to send out, or a ZIP to move the board into another project — Import ZIP brings it back, images and all.
<br> <div align="center"> <i>Part of the Cine Power Planner workflow</i><br> <b><a href="INDEX.md">Return to Documentation Index</a></b> </div>
Last Updated: 2026-09-13 Version: 0.829.1
