Download complete editable project · Read review limits
Carry a four-file selection into a completed project set
One source-grounded treatment with two original content variants. The Remotion exports are real renders; these Resolve/Fusion steps are a manual construction guide, not an imported or executed project. Native Resolve execution and source-quality approval remain unverified. Use the original supplied content.
Native cadence and identity
The historical source is Creating a contextual workspace in ChatGPT,
-ctJEx1n15g, published April 8, 2025. The selected interval [630,952)
contains 322 frames at 24/1 fps. Local frame 0 is source frame 630; local frame 321 is source frame 951.
The final twelve frames hold the restored home. The selected end is not a cut.
Set a silent 1920x1080 timeline and Fusion composition to exactly 24 fps and 322 frames. Do not use 23.976 or 25 fps. Source and research excerpt use time base 1/12288 with 512 ticks/frame. The rendered MP4s use 1/15360 with 640 ticks/frame at the same cadence. Read actual integer source positions in source-timing.json and output positions in each matching movie manifest/probe.
Create seven stable file identities A–G from the chosen input JSON. Preserve each file's name and type across surfaces. A/B/C are PDFs, D a presentation; E/F/G are an unselected document, image and text file. Picker order is A–G. Only A/B/C/D are selected. Initial project-list order is A, B, C, D, changing to A, C, B, D when the final three status glyphs appear. Do not change names or types to simulate the reorder, and do not count each file as another example.
| Local interval | Visible state |
|---|---|
| 0–42 | Empty project home; camera emphasizes Add files |
| 43–78 | Empty in-app project-files dialog; camera reframes |
| 79–101 | OS picker appears over the same dialog; no selected row yet |
| 102–108 | File A selected |
| 109–112 | A and B selected |
| 113–117 | A, B and C selected |
| 118–153 | A, B, C and D selected |
| 154–159 | Selection and Open emphasis clear as the picker dismisses |
| 160 | Picker absent; underlying empty-state message still visible |
| 161–236 | Four rows appear together, all with circular status marks |
| 237–258 | A has a document glyph; B/C/D retain circular marks |
| 259–309 | All four have file glyphs; order is A, C, B, D |
| 310–321 | Dialog closes; home displays four files and a three-icon stack |
Intervals are inclusive. The completed glyphs are observed UI states, not evidence of backend persistence, service latency or current product behavior. No instruction editing, response generation, file preview or removal occurs.
Build the editable workspace
Use top-left pixel coordinates on a 1920x1080 scene plane. The original Orchard/Northline chrome and sidebar can be built from the project code. Keep the browser at (108,9),1704x1062 with 20 px corner clipping. Its 100 px chrome ends at y=109; the app body is (108,109),1704x962. The sidebar is 270 px wide.
Use a 36 px Geist, weight 650 project title at (716,242). The empty composer is (696,309),798x122. Keep its placeholder unchanged. Place the file card at (696,456),389x77 and the empty instruction card at (1105,456),389x77. The file card initially shows Add files, fileHint and an add-file glyph. When the four rows exist, its bound count becomes 4; on return it reads Project files and 4 files. Draw three overlapping document icons as a stack, not a file count. The instruction card remains empty and its edit glyph stays visible.
The desktop is an original code-built gradient. Four original icon constructions have two palettes: eight SVG bindings, not eight examples. Keep the bundled Geist font/license. Rendered text is live text; no source image is a UI layer.
In-app file dialog and status rows
Gate the app-only black scrim and dialog together over[43,310). The scrim covers (108,109),1704x962 at the authored opacity used by the project, not the browser chrome or desktop. The dialog is (534,306),852x570, radius 15.
Dialog-local controls:
- Project files at (24,32),19 px weight 650. Add files is (695,24),89x40 with a 22 px radius; the close glyph is near (803,36). Preserve these during loading.
- Empty field at (24,89),802x457, radius 9. Place the add glyph at field-local (389,185); three centered 15 px/21 px helper lines begin at (100,221),602 px wide.
- At 161 replace the empty field with a list at (24,89),802 px wide, radius 9. Each of the four rows is 67 px tall, separated by a 1 px rule. No row fade.
- Each row's icon is 42x42 at (14,12); the name is at (64,12),15 px weight 550; the type is at (64,34),15 px regular. Bind each row to its stable file ID.
- Pending icons are rounded colored tiles containing a circular mark. The authored ring has a 32x32 viewBox, center (16,16),radius 13,stroke 2.2 and dash pattern 69/13. Place it at 68% of tile size and rotate by ringAngle from CSV.
- At 237 replace only A's ring tile with its original document SVG. At 259 replace the remaining three and swap B/C positions in the same frame. Use a presentation SVG for D. Preserve the row count and field height.
The ring motion is an authored substitute, not a recovered source spinner rotation or progress percentage. Do not introduce a progress bar or success toast.
Separate OS picker layer
Draw the picker above the in-app dialog, at (497,281),925x518, radius 12 with a shadow. It moves with the shared camera. Its own authored Y offset and opacity come from pickerOffsetY and pickerAlpha. Before it, add a separate gray overlay over the whole browser, including chrome and underlying dialog: color #A5A5A5, opacity 0.75×pickerAlpha. Keep this distinct from the app scrim.
The picker has a 161 px sidebar with original text/vector destination icons, a 72 px toolbar, a 36 px column header, and a 764 px-wide striped row region at picker-local(161,108). Use seven 23 px rows. Each row has a 17 px icon at (31,3), name at (54,1) in 307 px with ellipsis, right-aligned size at (373,1) in 94 px, kind at (487,1) in 123 px, and modified text at (620,1). Names/types come from the same file records as the project list; dates and sizes are fictional.
Fill the first pickerSelectionCount rows with the original blue-green selection color. That count changes 0→1→2→3→4 at 102/109/113/118 and returns 0 at 154. Do not highlight E/F/G. The bottom-right Open button is 83x24 at (818,472), colored only while selection is visible; Cancel is 83x24 at (724,472).
Authored picker opacity is 0 before 79; (frame−78)/4 at 79–81;1 at 82–153; (160−frame)/7 at 154–159;0 from 160. Before dismissal, Y offset is −10×(1−opacity); during dismissal it is 24×(1−opacity). Keep the in-app empty message at 160, then replace it with four pending rows at 161. These opacity values and the gray wash approximate the observed OS transition, not its API.
Camera, cursor and coordinate conversion
Use one global local-frame clock. Let E(frame,a,b)=1−(1−clamp((frame−a)/(b−a),0,1))³. Set inward=E(frame,20,37), reframe=E(frame,43,58), outward=E(frame,79,118).
- Scale=1+inward×(1−outward).
- X=(−720×inward−240×reframe)×(1−outward).
- Y=(−516×inward−84×reframe)×(1−outward).
- At 118 and later, use exactly scale 1, X 0, Y 0.
A scene point maps to (scale×x+X,scale×y+Y). Apply this once to workspace, scrims, dialogs and pointer together. For a full-plane Fusion Transform, convert the transformed plane center (scale×960+X,scale×540+Y) to normalized coordinates, retaining the same scale. A rectangle (x,y,w,h) has normalized center ((x+w/2)/1920,1−(y+h/2)/1080) and size (w/1920,h/1080). Keep child positions relative to the parent before conversion; check the tool's Y direction.
The Gaussian blur is the lesser of 3.6 and the sum of absolute X/Y changes plus 500×absolute scale change, divided by 65, comparing the previous frame. It is an authored blur approximation rather than measured directional exposure. Pointer anchors, cubic interpolation and arrow/hand gates are in model.ts; controls.csv gives every sampled position. Do not add another camera transform to the pointer or reset the clock when a dialog appears.
Editable constraints and verification
Preserve all required fields and seven distinct file IDs/names. The title must fit 780 px at 36 px, weight 650 and 214 px at 14 px in the sidebar. Dialog names must fit 710 px at 15 px, weight 550. Picker names may ellipsize in 307 px; keep their complete strings in the data. Three helper lines fit 602 px at 15 px. Overwide loaded-font text fails rather than silently shrinking. Calibrate these widths manually in Resolve.
Before claiming a Resolve result, open the actual application, inspect each boundary above and confirm identity/order across surfaces. Export a silent 322-frame 1920x1080 H.264 MP4 at 24 fps and reprobe every PTS/duration. Match it to the exact content variant. No native Resolve execution has been performed. Sampled stills, native-clock checks and encoded model-state checks do not establish independent moving review or source-quality approval.