Skip to content

Supercut: the camera-driven cut, its scenes, and the scenes brought up to the current UI - #62

Merged
namedgraph merged 14 commits into
developfrom
screencast-supercut
Sep 28, 2026
Merged

namedgraph merged 14 commits into
developfrom
screencast-supercut

Conversation

@namedgraph

Copy link
Copy Markdown
Member

The supercut branch, brought up to date with develop and ready to merge.

What it carries

  • The supercut render: render/supercut.mjs drives 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.mjs renders a page scroll from a stitched full-page capture where the recording has a jump.
  • The scenes that feed it: 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.md on develop, with a Playwright reproduction in the platform's ui-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

namedgraph and others added 14 commits September 19, 2026 00:54
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>
@namedgraph
namedgraph merged commit 80fe393 into develop Sep 28, 2026
2 checks passed
@namedgraph
namedgraph deleted the screencast-supercut branch September 28, 2026 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant