OpenAI Film Fieldnotes

Download complete editable project · Read review limits

Grow a continuing prompt around inline references

Manual DaVinci Resolve / Fusion construction guide. Review open. No native project, import macro or verified Resolve execution is included. Both Original and Adaptation previews are actual silent Remotion exports. Source-quality, independent moving review and native application parity remain unverified. Two content variants count as one editing example.

Native clock

Create a1920×1080 progressive, square-pixel composition with104 frames, local 0..103, at exact24000/1001fps. Duration is104104/24000seconds. If the installed Resolve setup cannot retain that cadence, stop and resolve the setup rather than round to24, interpolate frames or extend the ending. Fusion global frame equals composition start plus local frame.

source-timing.json binds source0j9yDUDMrBs[1396,1500), timebase1/24000 and 1001ticks/frame. Source1500 is a different presenter shot and is excluded. The shot begins with a populated two-line prompt, not an empty composer. It ends on a completed unsent prompt, not a retrieved result or generated draft.

Files and regeneration

Use the eight original SVGs in public/art, the bundled Geist font and its license, inputs/default.json or inputs/adaptation.json, and docs/controls.csv. docs/text-controls-default.json and docs/text-controls-adaptation.json list every visible original text run and icon at every native position. These are construction records, not a source transcript. No source image is an input.

From the extracted project directory, regenerate controls without Remotion:

node --experimental-strip-types scripts/controls.mjs > controls-regenerated.csv
node --experimental-strip-types scripts/text-controls.mjs default > text-default-regenerated.json
node --experimental-strip-types scripts/text-controls.mjs adaptation > text-adaptation-regenerated.json

Layer order

  1. Put the selected studio/field workspace SVG over an opaque background at 1940×1080. Its left edge follows contextDrift,0→−12px. This original slow drift replaces the filmed setting; it is not recovered camera tracking.
  2. Merge the white composer over it at panelLeft, panelTop, panelWidth, panelHeight, with52px corner radius. Copy the per-frame bounds exactly.
  3. Merge the separate white plus circle and dark send circle. They are siblings of the composer, not children of its top-edge transform or clipping mask.
  4. Merge each text row and inline icon over the panel. Each row follows the panel's top edge. Preserve the declared run order and spacing.
  5. Merge the caret after the last visible run on the currently active row. Do not put it after an earlier completed row or make it a send animation.

The panel never becomes a submitted bubble and never swaps to a result screen. There is no shared fade, voice capture, spinner, click cursor or audio layer.

Asymmetric edge growth

The measured white width stays approximately738px at x652..1390. The numbers are raster estimates, not recovered CSS/Fusion authoring values. At settled states, the panel center is[1021,540]. It temporarily sits lower on each growth onset because the bottom jumps before the upper edge finishes settling.

Local Source Required panel/text relationship
0..20 1396..1416 Two lines; top455,bottom625. First line and first glyph already present.
21 1417 Third row opens; bottom jumps654,top first moves445.
22..27 1418..1423 Bottom stays654; top settles through436,433,429,428,427,426.
28..47 1424..1443 Three-row hold; top426,bottom654.
48 1444 Fourth row opens; bottom jumps684,top415.
49..55 1445..1451 Bottom stays684; top settles407,403,401,398,397,397,396.
56..72 1452..1468 Four-row hold; top396,bottom684.
73 1469 Fifth row opens; bottom jumps714,top385.
74..80 1470..1476 Bottom stays714; top settles377,373,370,368,368,367,366.
81..103 1477..1499 Five-row hold; top366,bottom714.

Use held values from controls.csv at every native frame. Do not replace the table with one centered size tween or interpolate new frames between keys. The bottom-driven controls must stay still during each top-edge settling run.

Bottom controls

The white plus circle is102×102 at left=panelLeft−116,top=panelBottom−100. Its dark plus is centered with44px horizontal/vertical strokes,4px thickness, round caps. The dark send circle is76×76 at left=panelLeft+panelWidth−92, top=panelBottom−90; draw an original white up-arrow using5px rounded strokes. The supplied React/SVG paths are the exact editable reference for those shapes. Dark ink is#181d20. Neither circle scales during line growth.

Inline text and glyphs

Use bundled Geist at40px, weight450, tracking−0.3px,52px line box and60px row step. If the native font implementation cannot reproduce these settings, record the mismatch; the Remotion render does not prove native font parity. Text origin is(panelLeft+50,panelTop+31+row×60), with zero-based row. Keep explicit authored rows rather than automatic paragraph wrapping.

Create a Text+ layer for each text run, preserving whitespace, and an original SVG layer for each icon. Text is dark #181d20 except reference labels, which use #256ba3 for Studio or #236e71 for Field. Every icon is36×36 with4px right gap; align its bottom5px below the text baseline, as in src/Scene.tsx. Lay out successive runs by the rendered advance of the previous run. Do not allocate the full future label width while only its prefix is visible.

Read the complete per-frame run list from the selected text-controls file. For an edited phrase of length L and its ratio from controls.csv, retain the first min(L,max(0,floor(L×ratio+0.5))) characters. Source-derived progress keys are reused proportionally for new copy; this is an authored adaptation, not identical source glyph timing. The fixed connector is , the; the second reference gets a comma once its label is complete.

Local Inline relationship
0 First room glyph and a partial first reference already exist.
8..12 First label completes, then connector types; document glyph appears12.
12..17 Document glyph precedes its label. Label types18..20.
21..32 Third row's black prefix types; notes glyph appears32.
32..35 Notes glyph precedes its label. Label types36..40.
41..44 Black connective suffix appears after that label.
48..50 Fourth-row notes glyph precedes its new reference label.
51..60 Fourth reference types, followed by its black suffix61..72.
73..74 Fifth row is open before its closing text begins.
75..82 Closing text types, reaching its period at82.
83..103 Completed prompt holds without caret.

The caret is2×38px with2px left gap, dark ink, and a−7px inline vertical offset. Its earlier holds are authored: absent12..16,32..35 and48..50; otherwise visible before83, then absent. Earlier source caret/icon micro-motion was not fully measured. Do not call these exact recovered source cursor timings.

Editable content and width gate

The exact input fields are theme, lead, reference1, reference2, line3Prefix, reference3, line3Suffix, reference4, line4Suffix, closing. Theme is studio or field; other fields are trimmed ASCII prose with schema limits in src/model.ts. Closing must end with a period. Edit a copied project, then regenerate controls and render to new output paths.

The actual renderer loads the bundled font and checks complete rich-line widths, including each40px icon-plus-gap advance. Row1 budget is638px; rows2..5 have 570px budgets, reserving room for caret and send while each is the active row. Oversized edits fail before encoding. Do not silently shrink type, clip a label or move send to evade the gate. Native construction must check its own text advances and control clearance; it has not been executed here.

Verification and limits

Inspect0,12,18,20,21,27,32,36,48,51,55,73,75,80,82,83,103 first. Check that the top settles while the bottom controls hold, inline icons precede their labels, text never reaches send, and the final prompt remains unsent. Source photos, performer, branding, exact copy and app glyphs are not adaptation assets. Original illustrations, palette, typography, cursor holds and internal glyph geometry differ. Hash/clock tests and sampled stills do not confer source-quality, independent moving review or native Resolve approval.