Commit Graph
75 Commits
Author SHA1 Message Date
Christian PillsburyandClaude Opus 4.8 ada3100209 docs(spf): reflect the live-latency seam in live-stream-support
liveWindowFor is now {start, end}; the holdback rule lives in liveLatencyFor
and reaches seek-to-live-edge via the resolveLiveLatency seam + getLiveEdge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:22 -07:00
Christian PillsburyandClaude Opus 4.8 57a426db6b docs(spf): explain why syncLiveSeekableRange doesn't clear on termination
Reframe the "clearLiveSeekableRange() on termination" follow-up as a
deliberate non-action rather than a gap. Per the W3C MSE spec, the live
seekable range is consulted only while duration === Infinity; when a live
stream ends, endOfStream() sets a finite duration and the UA derives seekable
from buffered + duration, ignoring the live range — so clearing is unnecessary.
Clearing on the ENDLIST->finite-Track.duration transition would also be
premature (duration is still Infinity until endOfStream) and shrink seekable to
buffered-only. No logic change; the existing behavior (bail on null window) is
already correct, and the 'no-ops for a complete playlist' test locks it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:21 -07:00
Christian PillsburyandClaude Opus 4.8 81fb61b354 docs(spf): note liveWindowFromState + audio-only live in live-stream-support
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:21 -07:00
Christian PillsburyandClaude Opus 4.8 0d7208d2d4 docs(spf): note duration sole-ownership in live-stream-support
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:21 -07:00
Christian PillsburyandClaude Opus 4.8 7ccac9168e docs(spf): reflect seek-to-live-edge split in live-stream-support
Update the Implementation surface + live-edge phase row to attribute
setLiveSeekableRange to syncLiveSeekableRange and the window derivation to the
pure liveWindowFor helper, rather than the (now leaner) seekToLiveEdge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:20 -07:00
Christian PillsburyandClaude Opus 4.8 1cb1297c07 docs(spf): mark live-window playhead guard implemented in live-stream-support
Promote the live-window playhead guard phase from planned to implemented
(window-exit reposition in seek-to-live-edge): update the Status block, phase
row, What's-not-implemented, Implementation/Config surface, and Verification
(landed unit matrix; e2e deferred). Record the resolved seam-shape decision
(behavior-scoped repositionPolicy, not a public engine-config field) and guard
placement (extends seek-to-live-edge).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:20 -07:00
Christian PillsburyandClaude Opus 4.8 e3c00f1db9 docs(spf): reconcile live-stream-support to implemented state, document live-window guard
Bump live-stream-support to sketched depth grounded in feat/spf-hls-live
(reload loop, sliding-window tracking, Infinity duration, live-edge seek,
ENDLIST termination all implemented); resolve its 5 open questions. Add the
planned live-window playhead guard (reposition on window-exit, covering
paused-too-long and fallen-behind) with a repositionPolicy seam for a future
edge-only composition.

Cascade: register [live-edge-only-mode] use-case candidate; cross-ref
buffer-stall-recovery (in-window stall vs window-exit reposition) and
dvr-event-stream-support (seekable spectrum).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 10:00:19 -07:00
Christian PillsburyandClaude Opus 4.8 a46a94e80b docs(spf): record realized live refetch policy + LL-HLS change-detection gap
live-presentation-modeling: category [3] refetch policy is realized as the
pure §6.3.4 cadence (mediaPlaylistReloadDelay) + delayedReschedule +
RecurringRunner, fetch scheduling per-track. Record the decided error
semantics — a failed reload's rejection propagates and ends the recurrence;
transient-fetch retry is deferred to network-resilience, kept out of the
cadence — and mark the [3] placement open question decided.

ll-hls-support: note that regular-live change-detection keys off the
full-segment signature, so a parts-only update reads as unchanged; LL-HLS
must fold part progression into change-detection or switch to blocking reload.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 09:59:25 -07:00
Christian PillsburyandClaude Opus 4.8 a2edaba81d docs(spf): record live timeline anchoring + MSE timestampOffset decisions
Two decision docs for the live-HLS timeline work:
- mse-timestamp-offset — native-PTS default for live; timestampOffset reserved
  for relocation (the manifest→buffer / encoded layer).
- live-timeline-anchoring — align demuxed tracks and recover turnover via PDT,
  not sequence number (the manifest layer).

Resolve open questions [4] (sync anchor) and turnover startTime recovery in
live-presentation-modeling, pointing at the decisions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 09:58:45 -07:00
Christian PillsburyandClaude Opus 4.8 820f6fe45c docs(spf): add live-presentation-modeling design doc
Companion to presentation-modeling.md for streams that change over
time (live / DVR / event). Spine is a category decomposition that
keeps data separated by change-rate and consumer: content snapshot
(snapshot/merge segment identity via media-sequence + URL/byteRange),
streamType, completeness-as-duration, refetch policy as its own
category, the PROGRAM-DATE-TIME sync anchor, and the derived consumer
surface. Captures the debated decisions and open questions; scopes to
sliding-window live (LL-HLS / DVR / discontinuity / timestampOffset
deferred). Adds the reciprocal companion link in presentation-modeling.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 09:58:44 -07:00
Santiago PuppoandGitHub a74b8c0993 refactor: Rename SPF background-looping-video into background-video (#1731) 2026-06-24 11:09:20 -03:00
23538e3649 feat(spf): text tracks switching (#1687)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 07:54:51 -07:00
edfec1c93e revert(core): unmerge i18n stack base (#1707)
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
2026-06-18 15:20:35 -07:00
768bf09da0 feat(core): add i18n foundation with English locale and UI wiring (#1589)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
2026-06-18 11:55:38 -07:00
Ronald UrbinaandGitHub 07428519a5 feat(packages): add poster placeholder blur-up pattern (#1632) 2026-06-18 12:05:41 -03:00
bce79ec424 feat(spf): capability probing (#1676)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:22:49 -07:00
b89f1e944c feat(spf): multi cdn failover (#1671)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 08:20:43 -07:00
00aa6247b8 feat(spf): multi-cdn support (#1668)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 10:09:16 -07:00
f15d2b5e78 docs(spf): track switching design (#1631)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 14:39:40 -07:00
057f32573e feat(spf): multi-track audio + skills building features and behaviors (#1605)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-04 09:53:13 -07:00
Sam PottsandGitHub c5f75166fd feat(packages): update menu group labels (#1643) 2026-06-02 20:26:19 +10:00
Santiago PuppoandGitHub 3741e8de12 feat(spf): background looping video (phase 1) (#1602) 2026-06-01 16:13:26 -03:00
1a3cb45b29 feat(spf): basic audio only use case + use-case-composition doc-type + implementation skills (#1584)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 12:48:40 -07:00
c9d6ccecdd docs(spf): seed feature registry, clusters reference, and document-feature skill (#1581)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 12:07:33 -07:00
c112b6248b fix(spf): conventions, per-type specialization, config threading (#1537)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 11:38:47 -07:00
Sam PottsandGitHub ac37259803 docs(design): i18n (#1122) 2026-05-18 10:02:55 +10:00
Sam PottsandGitHub ad831d25f0 feat(packages): add playback rate menu (#1527) 2026-05-14 08:37:52 +10:00
e3c1b28032 feat(core): menu core layer and DOM keyboard navigation (#1503)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 18:15:49 +10:00
0620814a67 feat(packages): add UI support for gestures and hotkeys (#1388)
Co-authored-by: Rahim <rahim.alwer@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-05 10:34:12 +10:00
Wesley LuytenandGitHub 6c81f2d190 docs(design): add design doc for live presets (#1395) 2026-05-01 13:01:04 -03:00
Sam PottsandGitHub cc1b5645e5 docs(design): menus (#1078) 2026-05-01 13:34:33 +10:00
Christian PillsburyandGitHub 69852ddeb0 docs/spf fundamental concepts (#1396)
Feedback from @decepulis treated as a fast follow/incremental improvement effort for expediency.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 11:16:56 -07:00
89594292d4 docs(root): fix stale references and document sandbox workflow (#1464)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-24 14:29:24 -05:00
rahimandGitHub 5e9a02c851 fix(react): rename MediaGesture and MediaHotkey to Gesture and Hotkey (#1374) 2026-04-19 23:46:46 -07:00
24b8b77c8a feat(cli): add @videojs/cli docs command for LLM-friendly installation (#1214)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 11:07:49 -05:00
rahimandGitHub de5d612107 design: media contracts (#1297) 2026-04-13 22:25:35 -07:00
rahimandGitHub 57259b342a fix(core): treat Alt as implicit modifier for non-letter character hotkeys (#1304) 2026-04-10 13:35:17 -07:00
e62f1ef267 docs: CLI for LLM-friendly Video.js installation (#1205)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-10 11:57:26 -05:00
rahimandGitHub a0fd3cbda8 fix(packages): remove redundant "Shift" modifier from playback rate hotkeys (#1290) 2026-04-08 14:47:14 -07:00
1346d869ae feat(spf): architecture reactors (#1218)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08 13:38:24 -07:00
Wesley LuytenandGitHub 2d702ba1dd docs(design): gestures (#1044) 2026-04-07 13:00:04 -07:00
rahimandGitHub e1c3689dc0 docs(design): hotkeys (#1222) 2026-04-06 20:34:59 -07:00
64f5b5d5da test(site): replace api-docs-builder design doc with E2E spec tests (#1225)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-06 17:36:37 -05:00
rahimandGitHub cf5fad97a4 chore(design): archive implemented docs and simplify design skill conventions (#1173) 2026-03-31 23:00:39 -07:00
Wesley LuytenandGitHub 271a8c8502 feat: add Mux video component (#1036) 2026-03-24 18:19:50 -05:00
rahimandGitHub e09ea334bd refactor(html): context-based media discovery, remove slot="media" (#997) 2026-03-18 22:21:30 -07:00
d535282f03 refactor(packages): move store attach lifecycle to provider (#975)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 15:50:39 -07:00
Wesley LuytenandGitHub 561d03eb5a fix(core): rename MediaDelegateMixin and MediaProxyMixin (#976) 2026-03-16 18:32:00 -05:00
Christian PillsburyandGitHub c782a0f0a1 docs(design): add SPF living design docs (#899) 2026-03-16 12:21:31 -07:00
7a5ce94bca docs(site): add Slider and Tooltip API reference pages (#862)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:05:33 -05:00