Skip to content

v1.4.4 — ride zoom by default, release on off-target DOM mutations

Choose a tag to compare

@marcushyett marcushyett released this 01 May 06:51
· 22 commits to main since this release

What changed

v1.4.3 always-released zoom between clicks, which broke tight click sequences (form-fills, multi-step wizards) where the camera should stay magnified across consecutive nearby actions.

This restores ride-mode as the default and adds a real signal for when the camera SHOULD release: page-side MutationObserver data capturing which regions of the page mutate after each click.

The rule

  • Mutation lands inside the clicked element's bbox (button press feedback, focus ring, dropdown on the click site) → expected, keep ride.
  • Mutation lands outside the clicked element's bbox (toast in a corner, counter at the top updates, items reorder elsewhere) → editor flags that gap for release; pan-zoom drops to neutral so the viewer sees the full page during the change.

Implementation

  • runner.ts injects two new page scripts via addInitScript:
    • The interaction recorder now also pushes event.target.getBoundingClientRect() on each click via __tikRecordClickBbox, so we know exactly what region was clicked.
    • A new MutationObserver script (__tikRecordMutation) reports the bounding rect of every meaningful DOM change. Filters out invisible nodes, zero-size rects, off-screen rects, and throttles same-position mutations within 200ms so a long type-into-input flurry doesn't flood.
  • single-video-editor.ts maps clicks + mutations to body-relative time, then for each click scans the post-click window (3.5s) for mutations whose bbox isn't contained in the padded click bbox. Off-target mutations build zoom-release intervals; overlapping intervals merge.
  • SingleVideoReel.tsx pan-zoom v5: ride zoom by default (hold + pan to next click), release only when (a) the gap intersects a release interval from the editor, or (b) the next click is far from the previous one (> 40% of the viewport's shorter dimension).

Versions

  • CLI: 1.4.4
  • Plugin: 1.4.4

v1 tag force-updated.