Download complete editable project · Read review limits
Capture speech, clear the recorder, return an editable draft
Manual DaVinci Resolve / Fusion construction guide. Review open. No native project, import macro or verified Resolve execution is included. No source-quality, independent moving or native application parity is claimed. Both Original and Adaptation previews are Remotion renders, not the source film.
Clock and source gates
Create a1920×1080 progressive composition with196 frames, local0..195, at exact24000/1001fps. Duration is196196/24000=8.174833333seconds. If the installed Resolve setup cannot retain that rational cadence, stop and resolve the setup; do not round to24, add holds, interpolate new frames or include source1746. Fusion global frame equals composition start plus local frame.
source-timing.json binds source0qK3KqvtRrg[1550,1746), native timebase1/24000,
1001ticks per frame. Source masters and research excerpts are not input assets.
controls.csv is the per-frame construction authority; waveform.csv supplies
every visible original bar. Numeric and file checks do not prove a native render.
| Local | Source | Required visible state |
|---|---|---|
| 0..4 | 1550..1554 | Empty composer, regular toolbar, microphone hover and disabled Send. |
| 5..11 | 1555..1561 | Capture controls replace regular toolbar; timer0:00; no waveform yet. |
| 12..168 | 1562..1718 | Original waveform history accumulates/scrolls; timer follows anchors. |
| 169 | 1719 | Waveform clears, timer resets0:00; Send still enabled. |
| 170..175 | 1720..1725 | Empty reset holds; Send disabled; no editable text. |
| 176..195 | 1726..1745 | Full three-line editable draft, ordinary toolbar and caret; left-only reflow. |
All mode changes use held keys. Text arrives together; no typewriter animation, spinner, backend message, submitted bubble or generated result is added. The source starts this selection with a presenter-to-UI cut. Its endpoint is before Send, not a film cut. A separate source presenter overlay fades before reset; it is omitted here explicitly, without a synthesized replacement or narration.
Inputs, font and original artwork
Use bundled public/fonts/Geist.ttf, included with its OFL license. Pixel font
sizes below are Remotion values. Match native Text+ metrics by visible height,
advance and line spacing; no numeric Text+ Size equivalence is asserted.
Do not silently scale copy to fit. Reject over-width text at the listed weight.
| Field | Size / weight | Width budget |
|---|---|---|
| heroTitle | 64 /700 | 875px |
| heroSubtitle | 25 /400 | 860px |
| artifactTitle | 33 /570 | 300px |
| placeholder | 36 /400 | 820px |
| modelLabel | 29 /400 | 312px |
| paneTitle | 23 /700 | 585px |
| teamLabel | 44 /400 | 600px |
| each of three draftLines | 36 /400 | 920px |
| each row label / detail | 31 /630;25 /400 | 630px each |
Hero title has authored-1px tracking. Pane title has1.5px tracking. Keep the explicit three draft lines at56px baselines; no auto-wrap or ellipsis. Place the caret after the full third line, using its measured advance plus3px.
inputs/default.json and inputs/adaptation.json contain complete Garden and
Studio text and four nonfinancial rows. scripts/build-art.py is the full source
of the two hero SVGs: a leaf arrangement versus a film-reel arrangement. Rebuild
the documented paths as native masks/shapes or use an import route verified in
the installed application. This guide does not promise arbitrary SVG Loader
support. The inline icons and pointer paths are fully specified in Scene.tsx.
Do not replace the editable scene with a flattened reference still or source clip.
Node branches and coordinates
All geometry uses top-left1920×1080 pixels. A centered rectangle at(left,top,width, height) maps to normalized center((left+width/2)/1920, 1-(top+height/2)/1080), width/1920,height/1080. A point maps to(x/1920,1-y/1080). Apply this conversion consistently when native controls use bottom-left origins. Validate frame orientation in the installed application before keying.
Merge branches in this order:
- Desktop gradient: diagonal teal/navy field
#152e31,#173746,#071b23. - White application shell(64,-20,1900,1064), radius46, shadow0/20/60px at#0005.
- Left stack, clipped to(64,0,1094,1044), bottom-left radius46. Build the
following in global coordinates, then apply only
leftStackYto this stack: hero(108,-124,1002,438), radius36; artifact(108,346,1002,184), radius30; action row(115,555,446,45). All three move up45px at176, with no ease. - Right pane, independent of the left-stack transform: (1158,0,762,1044), background#f6f7f3,2px#e7e9e4 left edge. Clip its contents to this pane.
- Composer shell/text/controls/waveform. Do not parent these to the left stack.
- Tooltip and the original pointer, in output coordinates.
Hero text global position: title(164,12,886,90), subtitle(166,104,860,44), notebook label pill(166,165,280,46),18px type,2px tracking and22px horizontal padding; its236px inner width is measured with tracking and never wrapped. All move with the left stack. Hero SVG uses its full1002×438 viewBox; art stays a separate branch beneath live text.
Artifact:2px#e8eae7 edge, white fill; icon well(142,383,110,110), radius24,
fill#f3f5f1. Use the original Garden leaf or Studio slate path at65×65 centered.
Title(282,383,300,51); lock plus Workspace only at(284,450,310,38),30px gray.
Open in pill(602,399,242,76), radius24,2px edge; Share(866,399,210,76), radius24,
dark fill. Fixed icon paths in Scene.tsx are original line drawings, not font
glyphs. Action row has36px icons and45px gaps, color#91958e.
Right card global(1216,20,744,742), radius27,2px#dde2da edge and#fdfefb fill. Pane title at(1252,49,650,51). Row index0..3 has top117+161×index, height161, 2px upper separator; text starts1252, rowTop+36. Detail follows with11px gap. The card overflows the canvas at right deliberately and is clipped, not rescaled. Team card(1216,810,744,320), radius28,48px inset,44px title. At title+43px gap, add2px rule then30px inset and a66px original initial avatar beside Rowan. No right-pane content moves at176.
Composer x108,width1002,bottom1000,radius56,2px#e6e9e2 edge, white fill, subtle0/7/24px shadow. Before176 its top725,height275; from176 top680,height320. Use held shape-size keys, not a transform that scales text or controls. Before draft: placeholder(144,770,820,58),36px#c2c7bd. Draft: text begins (144,725), three56px rows,36px ink#202522. Full string changes in one held key.
Plus icon is at(151,920),36px. Ordinary controls: secondary icon(245,919),42px;
model label(512,914,355,52),29px and25px chevron; microphone(930,919),36px.
Hide these except the plus during capture/reset. Capture timer(800,916,86,50),
34px tabular digits#6d7568; Stop square(938,926,22,22), radius4,#b1b7ac.
Send(1010,898,80,80),radius44,39px up-arrow. Fill#202522 whensendEnabled=1,
otherwise#aeb5a8. The plus is#a5aaa1 during capture/reset, ink otherwise.
Initial tooltip(813,846,260,43),radius12,dark fill,20px centered Click to dictate;
visible only0..4. Do not add a second tooltip at the endpoint.
Waveform, counter and pointer
The waveform is a silent original fixture, not audio-derived or transcription
proof. For each row of waveform.csv, create a3px capsule of the listed height,
top-left(x,y),radius1.5,fill#8b9485. There are at most48 visible slots, in output
coordinates, without left-stack motion. Animate slot visibility and heights from
the exact per-frame table with held keys. Every bar clears at169.
Equivalent generator: at local>=12 and<169,head=floor((frame-12)×0.65), count=min(48,head+1). Slot0..count-1 uses sample=head-slot, height=4+round(22×abs(sin(sample×1.71)×cos(sample×0.39))), x=782-8×slot,y=939-height/2,width3. Trigonometry is in radians. The exact CSV avoids cross-application rounding ambiguity. There are no visible bars outside this interval, no imported sound and no synthetic voice.
Timer value changes at local5→0,25→1,45→2,65→3,85→4,105→5,125→6,146→7, 166→8,169→0. Display0:00..0:08. These labels were inspected in timer-only source crops; do not replace them with floor(local/fps).
Pointer vector viewBox65×84 and path are in Scene.tsx. Its top-left is
(pointerX-14,pointerY-8), with scale about local(14,8), shadow1/4/3px#0005.
Use controls.csv values exactly; paths are authored approximations. Visibility
is1 before18 and from160 onward, otherwise0. X stays948 until181 then moves
to1050 by189 with smoothstep; Y=938+8×(1-smoothstep160..165). Scale is0.94 at5
and169, otherwise1. Do not add a Send click at195. Caret is visible at176..187
and hidden188..195; all text remains. The source hand and path are not traced.
Verification and rejection
Render both complete content variants at native cadence. Inspect4/5,11/12, 168/169/170,175/176 and195 at full size. Check silent audio-track absence, exact196frame count, fit, waveform clearing, simultaneous three-line appearance, fixed composer bottom and unchanged right pane. Compare the paired movies and source excerpt as separate references, never use that excerpt in a render.
Reject missing reset frames, text before176, type-on transcription, an invented result, floating right pane, resized lettering, rounded cadence, extended holds, source asset reuse or claims of real product/backend behavior. The source UI, photography, waveform, detailed cursor and optical texture are not reproduced. Neither tests nor decoded stills close perceived moving or source-fidelity review. Native Resolve execution must be performed and evidenced separately.