Skip to content

B88: media moments - #68

Merged
westernCasa merged 1 commit into
mainfrom
feat/media-moments
Nov 8, 2026
Merged

westernCasa merged 1 commit into
mainfrom
feat/media-moments

Conversation

@westernCasa

Copy link
Copy Markdown
Owner

B88. Media moments: save a section of a video or audio page, with its captions, as a card.

The keys (your choice: both ways)

  • ⌘⇧K (View → Save Moment: Start / End, or right-click a video): the first press marks the start and playback goes on. The second marks the end, saves the moment and pauses.
  • With a loop set (B70, ⌘⇧L), one ⌘⇧K saves the loop's range.
  • ⌘⇧J (Save the Last 30 Seconds): saves the 30 seconds up to now and pauses. Change the times on the card afterwards if needed.
  • No video or audio, a private tab, or an opened (read-only) trail: a notice, nothing saved.

The moment card (your choice: a card next to the page)

  • Goes next to the page's card (the page becomes a card if it wasn't), with a grey "moment from" line.
  • Shows "Moment · site", the title, the times, and the captions shown during it when the site had captions (text tracks, YouTube and Vimeo captions; up to 1,200 characters).
  • Click the times to change them: type 41:12–42:30, Enter.
  • Play (or double-click): opens the page, or its open tab, at the start and loops the range.
  • Ask for ID (your choice): adds a question "ID at 41:12?" with a "raises" line from the moment. Others answer it in replies, in NODE or in the shared file.

Elsewhere

  • Timeline: "Moment 41:12–42:30 · title".
  • Replay: "You saved a moment of “…”, 41:12 to 42:30."
  • Trail files: ### [Title](page) · moment 41:12–42:30 with the captions as a quoted line (doc 26). Still node-trail: 2.
  • Search past trails (B89) finds moments by their captions or the word "moment".

Also in this PR: the B62 row now says Mac signing is done and the passkey entitlement is waiting on Apple (docs only).

Code

  • core/page-scripts.js: momentScript; loopScript op range (video or audio).
  • core/trail.js: momentCard, momentTimes (event edited), card kind moment. core/trail-file.js, core/replay.js, core/recall.js: the file format, the caption, search.
  • main.js: saveMoment, menu items, tab:moment, trail:moment-play, trail:moment-times, trail:moment-id.
  • renderer/canvas.js, app.js, styles.css: the card, the timeline label. Tokens only.

Not in this PR: the Chromium build.

Tests

  • test/moment-demo.js (npm run test:moment, in test:unit): 7 checks.
  • New test/e2e/52-media-moments.js (17 checks), in both CI e2e lists. Its test page loads the video into memory so it can seek, since the test server can't serve parts of a file.
  • Locally: test:unit, and e2e 10, 25, 34, 42, 43, 44, 48 and 51 still pass.

Generated by Claude Code

⌘⇧K marks the start of a moment, then the end, saves it and pauses; with a
loop set, one press saves the loop. ⌘⇧J saves the last 30 seconds. A
moment is a card next to its page's card with its times and the captions
shown during it. On the card: change the times, Play (opens the page at
the start and loops the range) and Ask for ID (a question the moment
raises). Trail files, Replay, the timeline and search past trails know
moments. Also updates the B62 row: Mac signing is done; the passkey
entitlement waits on Apple.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011V7Bv7WZ9Q92MZoNWYwevQ
@westernCasa
westernCasa merged commit 1ed4110 into main Nov 8, 2026
3 checks passed
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.

2 participants