Supercut: the camera-driven cut, its scenes, and the scenes brought up to the current UI - #62
Merged
Merged
Conversation
A dataset-agnostic montage of LinkedDataHub gestures, each a single action with a visible result, cut from dedicated gesture takes rather than mined from the workflow footage. - render/supercut.mjs + render/supercut.json: the cutter. Each shot is the stretch between an <id>-start and <id>-end beat, led in and stopped short, capped from the front, pushed into the component the beat's focus box names (1.4x-2.4x), captioned, joined by hard cuts. The cut opens on the graph 3D bloom and closes on the LEGO colour pivot; separate tracks per stack, dark, 2x footage. - scenes/supercut-*.mjs: the gesture takes (Northwind graph, main gestures, RDFa link, the composed query->chart->embed->drag block, UNESCO tree, Rebrickable colour pivot, LTLOD layout modes). - lib/supercut.mjs, editing.mjs (block drag via the app's own DragEvents), and additions to constructors/graph/nav/harness/marks the scenes rely on. - Workflow scenes 02/06/08/09/11/13/14/16 extended to close the loop (read -> write -> re-read the same evidence); 15 retired. - Northwind and taxonomy ontology tweaks behind the scenes' constructors. - README/RULES/FINDINGS updated; the vector-mock line documented as retired. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tinues a take joins the previous one on the same frame, the long gestures play at 2–5× rather than being trimmed to their tails, and the frames are computed with zoompan so a shot can zoom in place, pass through a control and out again, or hold still — the crop filter's size is fixed for a stream, so it could only slide. Boxes carry their own zoom floor where a shot starts tight and lands wide; a via key can name a beat, an offset and a box the take did not mark. The graph take walks from the customer record to Sales territories on its own: Related results hopped to the reps and on to their territories, Rockville opened, a rep hired for it on the Person form its view constructs, the grid re-read one face richer, the breadcrumb up to the map. The compose take glides where it used to jump — the form up before the Title click, the page to the top before the mode switch and the drag, down to the swapped blocks after the drop — so the camera can ride the page from the query editor to Save and the swap can be read. A reset that cannot reach the ldh CLI stops the scene rather than filming last take's leftovers. render/stitch.mjs chains a scroll's frames into one tall still for a take that did jump; the cutter reads a .png track as a still to pan over. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…app follows the colour scheme, which of a page's views carry a constructor, and a dark full-page shot of any path. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…he four shot pages, their player and graph, the renderer that steps them frame by frame, the cut list, and the five capture scenes that write its states, templates and rasters from the running dataspace — those captures stay ignored, like the tracks, since the scenes regenerate them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…: every one read-only and headed by the question it answered — form rows and values, chart selects, the drag handle and the DOM drag events that finally reorder a block, the graph's data and colouring, the pivots on Northwind, Rebrickable and UNESCO, the 2× viewport, the clock calibration, the dark scheme, the mock's styles. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…wn page, line by line with the hint popup dismissed, the way the scene types it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…nce 2026-09-24 a view block renders its toolbar and Related results row collapsed, and a chart block its selects, until the card header's toggle is pressed - so the graph scene now moves the pointer to that toggle and presses it before the Related results hops, with a beat for the bands opening, and the compose scene does the same before the chart type is changed; the <details>-and-summary logic the pivot bar no longer has is gone. The block drag is a pointer drag: press on the handle, a small move to cross Chromium's threshold, the travel in steps so the rows under the pointer get the dragover stream a real drag produces, and the target's bottom edge scrolled into view before the release, since that edge is where the drop marker is drawn and the chart block is taller than the fold. The synthetic DragEvents were a workaround for a build where pointer drags did not reach the handler; measured today, they do, and the browser then also draws the drag image under the pointer. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…er than the frame, so the drag's result - the sentence landing under the chart - was off screen until a scroll after the fact. The compose scene now zooms the document out to fit the two rows before the drag beat opens, from their measured height and floored at the natural size, at the beat boundary where the cut lands; the drag helper skips its pre-release scroll when the target's bottom edge is already in view, and the beats after the drop frame both rows rather than one. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…behind a toggle, so the reveal helper treats a block head without a controls toggle as a block with nothing to reveal, rather than a failure - the compose scene's chart beat runs on such a block, and the first re-recording stopped there. Its beat note names the chart type again, and the "controls opened" beat is marked only when a toggle was actually pressed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…on form the aligned ontology writes. Selecting a node discarded the point approach() had proven by hover and re-aimed at the projected centre, where a nearer node or a label sprite takes the hit: on the customer node the panel showed an OrderItem three times in a row, and the take stopped at 1b. The proven point is the one clicked now; the projection is the fallback for an unproven approach. The view's count moved out of the toolbar band into the block's status line when the band became one that waits to be asked, so the scene read "?" and every wait on the count ran its twenty seconds. The count comes from the status line now, and the refresh wait after Save gets its two arguments as the one array Playwright passes. The territory opened is whichever the engine lists first: the 31 the reps cover are paged twenty at a time, and Rockville, first on the 19th, was not on the page. The hire's copy and the beat notes name the territory opened rather than Rockville. The 1d shot started at a second on the old take's timeline; it sits at the same distance before 1b-end on the new one. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…nd is recorded dark. Rockville is Peacock's, and the cut has always opened it; the 31 territories the reps cover are paged twenty at a time and it sits on the second page since the reinstall. The scene turns the page with the view's own Next until the row is there, and falls back to the first row only when no page has it. The take is recorded with SCHEME=dark like every take in the dark cut, which the previous commit's take was not. The 1d shot start follows the new take's 1b-end. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… as her image, and the territory's grid re-read with her face. After the grid has one face more, the take opens her card, drags a portrait over her document until the drop overlay is up, drops it - the upload lands as a resource of the document, embedded - then edits her, picks the upload in the Image lookup the constructor put on the form, saves, and goes back to the territory by her own Territory link, where the grid shows her face; the breadcrumb up to Sales territories follows as before. The file crosses into the page as base64 rather than an array of bytes, which cost seconds of dead air. The block the save renders back labels its rows by local name and shows the territory link as "this" (measured 2026-09-28), so a load of the document precedes the beat and the save's settle is short. The drag shot starts three seconds before the drop beat, where the overlay is up - it takes some eight seconds to come up after the drag begins - and is framed full width, since the overlay sits at the viewport's centre, outside a frame held on her block. The portrait is a fixture, not demo data. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The supercut branch, brought up to date with develop and ready to merge.
What it carries
render/supercut.mjsdrives zoompan from a shot list (render/supercut.json), so a shot can zoom in place, pass through a control and out again, or hold still;render/stitch.mjsrenders a page scroll from a stitched full-page capture where the recording has a jump.supercut-northwind-graph,supercut-compose, and the Rebrickable, UNESCO and LTLOD takes, plus the probes that answered the questions behind them, kept as read-only scenes.lib/editing.mjs(block editing and the drag),lib/supercut.mjs(2x geometry, focus boxes, eased scrolls).Brought up to the current UI in the last commit
Since 2026-09-24 a view block renders its toolbar and Related results row collapsed, and a chart block its selects, until the card header's toggle is pressed. Both scenes now press that toggle on camera before using the controls, with a beat for the bands opening. The block drag is a pointer drag rather than dispatched DragEvents: the earlier synthetic path was a workaround for a build where pointer drags did not reach the handler, and measured today they do. The drag scrolls the target's bottom edge into view before the release, since that is where the drop marker is drawn.
Known, not fixed here
A block reorder in the browser is refused by the server with 412: the write's precondition is checked against the representation the PATCH's own Accept header selects, and ETags differ per representation. Recorded as finding 13 in
screencast/FINDINGS.mdon develop, with a Playwright reproduction in the platform'sui-tests. The compose scene's order check will fail until that lands, though the drag looks right on camera.The takes are not re-recorded yet; that is the next step after this merges.
🤖 Generated with Claude Code