Commit graph

220 commits

Author SHA1 Message Date
cf1b120bcf Memory Road chapter one as a word-for-word screenplay 2026-09-20 15:03:45 +00:00
650a8d48bd Choose how a speaking shot's sound is made 2026-09-20 14:05:34 +00:00
fdef88b1eb The writers score each other's scripts; the best becomes head writer 2026-09-20 05:21:24 +00:00
31bb7fbfcc Add another writer to a run 2026-09-20 04:52:37 +00:00
1edeec9b71 A guide to what makes a trailer worth watching, linked from the book and trailer pages 2026-09-20 04:26:18 +00:00
ddc650738d A guide to what makes a trailer worth watching, linked from the book and trailer pages 2026-09-20 04:26:17 +00:00
ad18d045e6 A guide to what makes a trailer worth watching, linked from the book and trailer pages 2026-09-20 04:26:16 +00:00
1c54c73075 Each spoken line says whether it is the book's words 2026-09-20 03:49:46 +00:00
7e820a021d Saving an object's shot list no longer re-rolls its picture 2026-09-19 21:22:13 +00:00
4ed4319a0a A book trailer is not titled 'reacts' 2026-09-19 21:21:41 +00:00
b7e49db360 Say when in the shot a line is spoken 2026-09-19 21:09:36 +00:00
6a9264b539 Cut a shot again from the footage already paid for 2026-09-19 20:24:53 +00:00
9ada432a4b Change the words of a spoken line by hand 2026-09-19 19:21:09 +00:00
7ce8085384 Tracked objects: the author can say which shots show it 2026-09-19 19:17:50 +00:00
25e1fd462b Things that must look the same: tracked objects with reference pictures; the picture check folds small things away 2026-09-19 19:06:34 +00:00
5a54104005 Film it again no longer forces; an unchanged picture or clip is not bought twice, and another attempt is its own priced button 2026-09-19 18:43:16 +00:00
320e06b0c9 Film it again asks for another take, and says so 2026-09-19 18:01:15 +00:00
a26e9aed6d Show the close-up the checker zoomed in on, beside what it says about a hand 2026-09-19 17:56:33 +00:00
a66c6b352e Picture tools stay available on a filmed shot; a stale clip says so 2026-09-19 17:47:00 +00:00
797fa52b87 A note to the camera per shot: changes how it is filmed, not the pictures 2026-09-19 17:41:28 +00:00
b66e665f3f Try 4 versions of a picture, graded side by side, and pick one 2026-09-19 17:34:30 +00:00
3d34667b35 A 'what to do next' guide, and the picture checker's findings with a Fix button
The page never said what the next step was, and finding faulty pictures was
left to the author although every frame is already checked by a model.
2026-09-19 16:11:11 +00:00
39c41c689d Show why a picture could not be redrawn 2026-09-19 15:38:51 +00:00
03052f7182 The author can say what is wrong with a picture, and have it redrawn
report_frame_fault existed in the worker and was on no page.
2026-09-19 15:33:35 +00:00
00c4bc38b5 Say that the revision has started when Revise is pressed 2026-09-19 15:19:03 +00:00
c89a92e72f The price on Draw is the worker's own picture count, looks and back views included 2026-09-19 15:17:16 +00:00
c02eb5d511 Looks per scene, a change prompt on every character picture, click to enlarge
Each scene now shows who is in it as they look IN THAT SCENE, with one box:
'Change how Stewart looks from this scene on'. Cast cards show every look
front, side and back. Every picture opens large. The storyboard waits until
all pictures exist. A box for the author's notes on the script as a whole,
and Revise is always on offer.
2026-09-19 15:16:26 +00:00
a5ee10e99b Remove the duplicated page tail left after the closing html tag
A dollar sign before a quote is a substitution token to patch_git_file, so a
price label spliced the rest of the page in after itself. trailer.html carried
33 KB of raw JavaScript after its closing tag, which rendered as garbled text
in the page body; script.html carried 65 KB, commented out. The copy above the
first closing tag was verified complete: it parses, and it defines every
function and calls every action the removed text did.
2026-09-19 13:51:24 +00:00
3f5bd70f24 Remove the duplicated page tail left after the closing html tag
A dollar sign before a quote is a substitution token to patch_git_file, so a
price label spliced the rest of the page in after itself. trailer.html carried
33 KB of raw JavaScript after its closing tag, which rendered as garbled text
in the page body; script.html carried 65 KB, commented out. The copy above the
first closing tag was verified complete: it parses, and it defines every
function and calls every action the removed text did.
2026-09-19 13:51:23 +00:00
f8c72e94ae admin: show each reference as Image N with the name the prompt gives it 2026-09-19 02:47:53 +00:00
5d342cb2c6 admin: play the clip, the raw take, the seed frame and the audio per shot 2026-09-18 19:43:09 +00:00
f468604438 Make Download actually download
The `download` attribute is ignored by every browser when the href is
cross-origin, and the file we redirect to is signed with an inline
disposition - so clicking Download opened the mp4 in a tab instead of
saving it. ?dl=1 asks the worker to serve it as an attachment.
2026-09-18 01:57:19 +00:00
f115eca329 Point the home page's media at the worker, not the broken file proxy
Six URLs are baked into this page as static HTML, so they never pass through
the API where the rewrite happens - the videos and both photos have been
dead for as long as api.corben.world/files has been returning 500. The
worker signs and redirects, which works regardless of that proxy's state.
2026-09-18 00:36:49 +00:00
d7ac094c9c Recover a shot left stuck on "filming" by a worker restart
Third occurrence of this shape after cuts and the storyboard reel: a flag
meaning "work is happening" set before an in-memory thread starts, never
cleared when a deploy kills it, and a page that then hides the buttons for
ever. Anything older than 25 minutes is treated as gone.
2026-09-17 22:20:15 +00:00
a1ededf9c5 Repair the picture-check button, broken by a $-quote in patch text
A literal $' in replacement text is consumed as a special pattern by the
patch API, which truncated the block mid-string and swallowed the
if (unfilmed) line with it. BROWSER_TESTS.md records this exact hazard.
The price is now built by concatenating the dollar sign separately so no
$-quote sequence appears in patch text at all.
2026-09-17 20:58:07 +00:00
ac4ece69a5 Add the button that runs the picture check
Separate from filming on purpose: a re-film decision wants the audio and
picture verdicts together, and an existing film can be checked without
paying to shoot it again.
2026-09-17 20:57:20 +00:00
5eb4aac2cc Show what the picture check found, beside what the audio check found
Every clip has been transcribed and compared with its script since the first
film. Nothing looked at the picture, which is where this engine actually
fails - two identical photographs on a mantel, half a car, a person nobody
asked for. This renders the visual verdict the same way, and lists each
fault with the wording change that would have prevented it.
2026-09-17 20:57:07 +00:00
4d0d375dbb Honour the "and play" half once the audio is ready 2026-09-17 18:24:53 +00:00
f3cfb15d51 Play automatically when preparation finishes, and stop implying failure
"Prepare and play" only prepared. And a shot with no dialogue has no audio
by design, so 13 of 20 spoken is not 7 failures - say how many are silent.
2026-09-17 18:24:46 +00:00
acfc51b2d9 Keep refreshing while the storyboard audio is being prepared
The page polls only while it believes something is working, and preparing
the reel was not on that list - so the progress froze at whatever the last
manual refresh had seen (5/20) while the job ran happily to completion.

Also: treat a reel job older than 15 minutes as gone, the way cuts already
are, so a worker restart cannot leave the button disabled for ever; and
start playing automatically once preparation finishes, since "Prepare and
play" promised both.
2026-09-17 18:24:19 +00:00
153c38e6b8 Quote the storyboard from what will actually be drawn
The estimate was cast x 3 + shots x 2. It counted characters who appear in
no shot, whose sheets are skipped, and knew nothing about the per-day
wardrobe sheets a multi-day story needs. On the Memory Road board that is
73 quoted against 82 drawn.
2026-09-17 17:34:33 +00:00
0b11c4c262 Wire the storyboard player's controls
Jump-to scrolls to the shot and highlights it, so a note can be written
against the moment that was just heard.
2026-09-17 14:08:03 +00:00
fc858729f3 Play the storyboard: frames and narration, in order, at the top
Reviewing meant scrolling to a shot, pressing play, listening, scrolling to
the next - which destroys exactly the flow a trailer is made of, so faults of
sequence were the hardest to notice and the ones we kept shipping.

This plays the whole thing: opening frame, then closing frame, while the
shot's lines are spoken, then on to the next. Stop, or jump to any shot to
leave a note. It is the trailer before it is filmed, for cents of speech
rather than dollars of video.
2026-09-17 14:07:50 +00:00
70bf7758e3 Styles for the storyboard player, and make the tab score readable
"Claude Opus 5 ★75" is unreadable when the model's own name ends in a digit -
it was read as a score of 5. The score now sits in its own bordered pill.
2026-09-17 14:07:20 +00:00
efa861f227 Recover from a job killed by a deploy, and show when a cut reorders
cuts_state is set before the thread starts and cleared when it finishes, so
a deploy in between left the page waiting forever on work that was no longer
running, with the retry button hidden. Fifteen minutes is longer than the
work can legitimately take.

A cut may reorder as well as drop, which changes what it is - worth saying
rather than leaving the reader to spot it in the id list.
2026-09-17 12:51:27 +00:00
8a3e257637 Await the repaint before playing, and show each shot's day
openTab fetches the draft, so the video element did not exist 60ms later and
the first play was a no-op.
2026-09-17 12:45:04 +00:00
fabb7d2ed8 Load the watch-through numbers alongside the cuts
The views table already records how far every viewer of a share page got.
Once each published cut has its own page, "which version holds people" is a
query, and this is where the answer is shown.
2026-09-17 12:44:52 +00:00
7b4ee1895a Wire up the cuts: propose, play in order, publish
playCut steps one video element through the cut's clips. No render, no
upload, no cost - which is the whole reason ten proposals are worth looking
at rather than one.
2026-09-17 12:44:44 +00:00
73a8f5d166 Render the proposed cuts, with a free in-browser preview
A cut is an ordered list of shot ids, so previewing one costs nothing: the
page plays that cut's clips back to back. That is what makes asking for ten
proposals reasonable. Only a cut somebody chooses gets joined into a real
mp4 with its own share page, which is also what makes the watch-through
numbers comparable - one page per version.
2026-09-17 12:44:23 +00:00
800ba28387 Styles for the cuts panel and its player 2026-09-17 12:44:02 +00:00