Commit Graph
135 Commits
Author SHA1 Message Date
Christian PillsburyandClaude Opus 4.8 557d8bd72f refactor(spf): drive live reload via a RecurringRunner instead of an epoch signal (WIP)
Replace the signal-as-event live-reload scheduler with a runner-driven model.
The `resolveTrack` loader schedules its resolve work on a new `RecurringRunner`
that re-runs the task on an injected `reschedule` policy; the separate
`scheduleTrackReload` behavior and its per-type reload-epoch signals are deleted.

Core (`core/tasks`):
- `Task.run()` is now memoized (runs once, shares the result across calls) and
  gains `clone()` (fresh, pending, structurally identical) — added to `TaskLike`.
- `RecurringRunner`: single-slot, id-keyed (dedup same id / abort-and-replace on
  new id), time-free. Each cycle runs `Promise.all([task.run(), reschedule(task,
  previous, signal)])` and re-runs a `clone()` while reschedule resolves `true`.
- `Reschedule<T> = (task, previous, signal) => PromiseLike<boolean>` — invoked
  concurrently with the run, observes it via the memoized `run()`, owns its delay.
- `delayedReschedule(cadence)` builds a Reschedule from a pure ms-cadence fn,
  start-anchored (subtracts the run's elapsed) so reloads are measured from
  load-start per RFC 8216 §6.3.4, preserving half-on-unchanged.

Supporting:
- `@videojs/utils/time`: add cancellable `sleep(ms, signal)`.
- `media/hls/reload-policy`: `mediaPlaylistReloadDelay` (pure cadence; relocated
  scheduler logic — target-duration, half-on-unchanged, stop-on-ENDLIST, retry).
- `resolve-track`: baked universal completeness gate + injected `reschedule`;
  engine composes `delayedReschedule(mediaPlaylistReloadDelay)`.

WIP: not fully validated end-to-end against a live stream through this path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 09:59:24 -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
accf4bfa34 fix(packages): escape HTML special chars in serializeAttributes to prevent XSS (#1670)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
2026-06-18 12:23:19 -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
Wesley LuytenandGitHub 1b31f3e8d7 feat(core): add vimeo media host and html/react components (#1667) 2026-06-18 09:36:31 +10:00
Wesley LuytenandGitHub 0ffe1a9197 feat(media)!: add Google Cast by default to HLS, DASH media (#1661) 2026-06-12 17:34:14 -07:00
Santiago PuppoandGitHub 24a78d253a refactor(core): airplay button (#1614) 2026-06-03 13:54:28 -07:00
Sam PottsandGitHub 760870fdf2 fix(core): disable toggle captions when there are no captions (#1598) 2026-05-26 09:49:50 +10:00
1a3911151a chore(build): quiet tsdown size reports in local dev (#1569)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 11:38:26 +10:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
5f1c2370fa chore: release main (#1477)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-19 12:48:40 -07:00
Sam PottsandGitHub ad831d25f0 feat(packages): add playback rate menu (#1527) 2026-05-14 08:37:52 +10:00
0cfd3bb395 feat(spf): HLS engine composition walkthrough + doc-driven cleanups (#1512)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 12:07:26 -07:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
cce48c01fa chore: release main (#1375)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-27 13:47:20 -07:00
rahimandGitHub 84c9e540bd chore(root): migrate typecheck to @typescript/native-preview (tsgo) (#1400) 2026-04-23 11:11:50 +10:00
2f7212028c refactor(react): replace prototype-walking and inferred class props (#1376)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 09:20:46 -07:00
Wesley LuytenandGitHub 000c54e16a chore: release main (#1353) 2026-04-18 01:18:23 -07:00
rahimandGitHub 769d436f4e fix(react): prevent gesture tap from firing on slider interactions (#1361) 2026-04-17 18:01:26 -07:00
Wesley LuytenandGitHub 8530316987 revert(packages): add server-only bundles (#1349) (#1354) 2026-04-17 11:44:53 -07:00
rahimandGitHub 3331fdaf25 fix(packages): add server-only bundles (#1349) 2026-04-16 00:59:14 -07:00
Wesley LuytenandGitHub 521774a95b chore: release main (#1341) 2026-04-14 17:19:40 -05:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
77faf060d4 chore: release main (#1339)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-14 17:11:09 -05:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
c2cb16bd8b chore: release main (#1336)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-14 16:54:01 -05:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
da598b285a chore: release main (#1313)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-14 15:58:18 -05:00
rahimandGitHub b768c29f98 fix(packages): ignore gestures on interactive child elements (#1327) 2026-04-14 02:11:01 -07:00
Wesley LuytenandGitHub 8f1653efcd refactor(packages)!: replace DelegateMixin & ProxyMixin with MediaHost base classes (#1292) 2026-04-14 00:18:11 -05:00
Wesley LuytenandGitHub d67a3699e4 chore: release main (#1308) 2026-04-10 22:09:56 -07:00
rahimandGitHub 1509a66f60 feat(packages): add gesture bindings to default skins and presets (#1310) 2026-04-10 22:08:10 -07:00
Wesley LuytenandGitHub 12877c34fc chore: release main (#1232) 2026-04-10 15:18:11 -07:00
rahimandGitHub 071325de4d fix(utils): stable sort comparator and orphaned JSDoc (#1286) 2026-04-08 17:39:28 +10:00
rahimandGitHub 53835d7355 chore(packages): standardize conventions (#1279) 2026-04-07 22:05:53 -07:00
rahimandGitHub 627ea204fc feat(packages): add hotkey system with coordinator, actions, and ARIA support (#1238) 2026-04-07 00:13:05 -07:00
rahimandGitHub 0c95ab4109 refactor(packages): move slider throttle from commit to change (#1219) 2026-04-05 22:19:11 -07:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
d75cd82ef8 chore: release main (#1212)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-03 17:56:01 -05:00
Wesley LuytenandGitHub dcb4587dba chore: release main (#1193) 2026-04-03 00:19:11 -07:00
4cda8fb94f refactor(html): SkinMixin -> SkinElement (#1159)
Co-authored-by: Rahim <rahim.alwer@gmail.com>
2026-03-31 22:22:45 -07:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
63a82c0f92 chore: release main (#1170)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-31 20:37:58 -05:00
Wesley LuytenandGitHub d7d6f70797 chore: release main (#1115) 2026-03-31 17:11:33 -07:00
Wesley LuytenandGitHub 1b2afc6e41 feat: add native hls media + refactor (#1154) 2026-03-30 20:13:19 -05:00
rahimandGitHub c3641c888c fix(utils): polyfill AbortSignal.any for Chromium ≤115 (#1142) 2026-03-26 13:47:48 -07:00
Wesley LuytenandGitHub 271a8c8502 feat: add Mux video component (#1036) 2026-03-24 18:19:50 -05:00
rahimandGitHub 864f2e059a chore(packages): upgrade tsdown 0.20.3 → 0.21.4 (#1102) 2026-03-24 02:06:26 -07:00
Wesley LuytenandGitHub 7880271231 chore: release main (#1100) 2026-03-24 01:55:32 -07:00
rahimandGitHub 8e2e56e36e chore: upgrade typescript 6, vitest 4, align spf package (#1101) 2026-03-24 01:53:36 -07:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
ff8f70e8f2 chore: release main (#1094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-24 11:02:34 +11:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
4ef56eb0a9 chore: release main (#1074)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-23 10:01:05 -07:00
Wesley LuytenGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e2d55de26b chore: release main (#1072)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-20 16:54:03 -07:00
github-actions[bot]GitHubWesley Luytengithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
b2b424ee65 chore: release main (#955)
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-19 12:35:22 -05:00
Sam PottsandGitHub 7bacb1b2ae fix(utils): handle missing media.querySelectorAll for HLS (#986) 2026-03-18 08:57:29 +11:00
Sam PottsandGitHub 82ede77322 fix: correct popup fallback positioning offsets (#981) 2026-03-17 13:14:35 +11:00
github-actions[bot]GitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ba5a72fb12 chore: release main (#947)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-16 07:25:02 +11:00