Commit Graph
100 Commits
Author SHA1 Message Date
Rahim f64acdfd15 refactor(compiler)!: move component generation to core 2026-06-19 19:37:09 -07:00
Rahim b2c6b3489f feat(compiler): restore component manifest generation 2026-06-18 02:34:54 -07:00
Rahim c3d68fa1d8 chore(skin): park current skin sources 2026-06-17 21:37:38 -07:00
Rahim 6f5f7ef577 fix(compiler): support current skin extraction patterns 2026-06-17 21:33:35 -07:00
Rahim 3108dd25ce chore(skin): remove legacy migration files 2026-06-17 21:31:10 -07:00
Rahim 21392ccd16 refactor(compiler): use vite plugin types 2026-06-17 17:13:40 -07:00
Rahim f941eacf37 feat(compiler)!: add config-driven compile pipeline 2026-06-17 17:13:40 -07:00
Rahim 0486765848 feat(compiler): configurable @property handling for --tw-* slots
Tailwind registers internal slots (`--tw-content`, `--tw-shadow`, …) via
`@property` rules that supply their defaults. `decompose` dropped those
rules, so utilities that reference a slot without setting it locally —
notably `after:*`/`before:*` emitting `content: var(--tw-content)` — left
a dangling reference that resolves to nothing and suppresses the
pseudo-element.

`decompose` now captures the `@property` registrations, and `emitCss`
gains a `properties` option to handle them, configurably:

  - `mode: 'emit'`   — emit `@property` rules for referenced slots,
    preserving Tailwind's typed defaults.
  - `mode: 'inline'` — substitute each slot's `initial-value` into the
    values that reference it (a superset of `inlineVars` for the matched
    slots), so the output is fully self-contained.
  - `resolve(name, captured)` hook — override or supply a slot's config
    (initial-value / syntax / inherits), or register one Tailwind didn't.
  - `match` — restrict handling to matching names (default `/^--tw-/`).

`tailwindPlugin` forwards `properties` through its `onCss` path. Adds 9
tests (capture, emit, inline, resolve override, match, back-compat,
plugin e2e). Compiler suite: 178 passing.
2026-06-17 17:13:40 -07:00
Rahim fbe5ffeea3 docs(plan): mark vanilla-css critical bugs fixed in audit
Update the rebase audit: marker-class drop, class-name collisions, and
undefined theme vars are fixed; note the remaining `--tw-*` @property
follow-up and the real collisions the new diagnostic will surface during
the port.
2026-06-17 17:13:40 -07:00
Rahim 578f0ca3c4 fix(compiler): vanilla-css correctness — markers, collisions, theme vars
Three correctness fixes for the `vanilla-css` Tailwind target, each
previously untested:

1. Preserve marker utilities. Utilities that produce no declarations
   (`group`, `peer`, `group/<name>`) were silently dropped when rewriting
   `className` to the semantic name, breaking every descendant
   `group-*` / `peer-*` variant. They're now kept on the element
   (`"play-button group"`), alongside any other class Tailwind doesn't
   recognize.

2. Flag class-name collisions. Two distinct elements that derive the same
   class name but resolve to different utilities would have their
   conflicting declarations silently merged into one rule (e.g. the
   forward/back `seek-icon`, buffering vs preview `spinner-icon`,
   current/duration `time-value`). The plugin now tracks a per-name
   utility signature and throws a fixable DiagnosticError on mismatch,
   while identical recurrences (repeated `Tooltip.Popup`) pass cleanly.

3. Emit referenced theme variables. The generated CSS referenced
   `var(--spacing)`, `var(--color-*)`, `var(--ease-*)` etc. with nothing
   defining them. `emitCss` now accepts a `resolveThemeVar` resolver
   (backed by `design.resolveThemeVar`) and emits a leading, transitively
   resolved theme block — scoped to the skin's hoist root when set — so
   the output resolves without a separate Tailwind theme on the page.

Adds 11 tests (markers, collisions, theme emission incl. transitive,
already-declared, scoped, and back-compat). Compiler suite: 169 passing.

Note: `@property`-registered `--tw-*` slots (e.g. `--tw-content`) resolve
to undefined and are left for a follow-up.
2026-06-17 17:13:40 -07:00
Rahim d562279df1 chore(skin): park constrained-JSX skin migration under __old__
The in-flight compiler skin migration refactored the shared Tailwind token
modules from main's function API (`root = (isShadowDOM) => cn(...)`, flat
exports) into a string-aggregate API (`video`/`audio` nested objects) that
the constrained-JSX skins consume. Since then, main built 16 runtime skin
files on the function API — including the new live-video / live-audio
presets — which the new token shape cannot satisfy without porting.

Rather than regress main's skins or break the build, park the authored
migration sources (constrained-JSX skins + refactored token layer +
tailwind.css) under packages/skins/__old__, a sibling of src/ that sits
outside the package tsconfig include, tsdown globs, and (via biome ignore)
linting. Main remains the source of truth for live skins.

The full migration snapshot (build wiring, generated React skins/CSS, core
manifests, icons generate config, html/react edits) is preserved in the
git tag backup/pre-rebase-2b2bbfad. The audit and port backlog live in
.claude/plans/compiler-rebase-audit.md.
2026-06-17 17:13:40 -07:00
Rahim b01a051744 feat(compiler): add @videojs/compiler package
Introduce the build-time compiler for constrained-JSX skins, rebased onto
current main as a clean, additive package. Provides:

- core pipeline: parse, compile, generate, JSX runtime, define-component
- transforms: import rewriting, replace/wrap, drop-unused locals/imports
- matchers + react lowering (add-prop, child-as-prop)
- styles className analyzer
- tailwind subsystem: design-system loader, decompose, evaluator,
  deriveClassName, emitCss, tailwindPlugin (three targets)

Self-contained: the integration smoke test now reads a vendored skin
fixture instead of the skins package, so the compiler builds and tests
green independently. 158 tests pass.

Wiring: register the project reference (tsconfig), commitlint scope,
CI test-matrix entry, and lockfile entries (lightningcss, tailwindcss).

The skin migration that consumes this compiler is parked separately —
its token refactor conflicts with skin work that landed on main; see the
follow-up commit and .claude/plans/compiler-rebase-audit.md.
2026-06-17 17:13:40 -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
rahimandGitHub 5e9a02c851 fix(react): rename MediaGesture and MediaHotkey to Gesture and Hotkey (#1374) 2026-04-19 23:46:46 -07:00
rahimandGitHub 769d436f4e fix(react): prevent gesture tap from firing on slider interactions (#1361) 2026-04-17 18:01:26 -07:00
rahimandGitHub 3331fdaf25 fix(packages): add server-only bundles (#1349) 2026-04-16 00:59:14 -07:00
4ecc870685 feat: add e2e test harness (#1237)
Co-authored-by: Christian Pillsbury <cpillsbury@mux.com>
2026-04-15 15:28:38 -07:00
rahimandGitHub c7d4021bde fix(core): ignore non-primary pointer buttons in tap gesture (#1329) 2026-04-14 12:26:32 -07:00
rahimandGitHub b768c29f98 fix(packages): ignore gestures on interactive child elements (#1327) 2026-04-14 02:11:01 -07:00
rahimandGitHub f893f0012b refactor(site): replace BEM class names with @scope-based CSS isolation in demos (#1315) 2026-04-14 00:39:06 -07:00
rahimandGitHub 8bce342890 fix(core): reduce doubletap window from 300ms to 200ms (#1328) 2026-04-14 00:05:56 -07:00
rahimandGitHub de5d612107 design: media contracts (#1297) 2026-04-13 22:25:35 -07:00
rahimandGitHub 1509a66f60 feat(packages): add gesture bindings to default skins and presets (#1310) 2026-04-10 22:08:10 -07:00
rahimandGitHub 8566260872 feat(react): add gesture hooks and MediaGesture component (#1309) 2026-04-10 18:24:25 -07:00
rahimandGitHub ab338c432b fix(html): replace bare side-effect imports with explicit safeDefine() in define modules (#1307) 2026-04-10 18:18:32 -07:00
rahimandGitHub d2782f0c8d feat(html): add <media-gesture> element (#1305) 2026-04-10 18:14:17 -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
rahimandGitHub 08ebaed23f feat(core): add gesture system (#1287) 2026-04-10 01:52:08 -07:00
rahimandGitHub b934c589f8 fix(packages): time slider seek improvements (#1291) 2026-04-08 16:49:49 -07:00
rahimandGitHub a0fd3cbda8 fix(packages): remove redundant "Shift" modifier from playback rate hotkeys (#1290) 2026-04-08 14:47:14 -07:00
rahimandGitHub 6fb6ab7dfb fix(packages): narrow react peer dependency to v18+ (#1289) 2026-04-08 13:37:34 -07:00
rahimandGitHub 998b87198c refactor(html): extract PositionController from tooltip/popover (#1282) 2026-04-08 17:47:54 +10:00
rahimandGitHub 1c937da470 fix(packages): consistent react versions (#1285) 2026-04-08 17:44:01 +10:00
rahimandGitHub 53fffe8e30 fix(html): add destroy guards to connectedCallback (#1284) 2026-04-08 17:43:16 +10:00
rahimandGitHub 0dc7567e7a fix(html): export SliderPreviewElement and ContextPartElement (#1283) 2026-04-08 17:39:52 +10:00
rahimandGitHub 071325de4d fix(utils): stable sort comparator and orphaned JSDoc (#1286) 2026-04-08 17:39:28 +10:00
rahimandGitHub 42abf88095 fix(react): align media component conventions (#1281) 2026-04-08 17:35:54 +10:00
rahimandGitHub 11f305713b feat(core): add toggleControls to controls feature (#1280) 2026-04-08 00:10:10 -07:00
rahimandGitHub 53835d7355 chore(packages): standardize conventions (#1279) 2026-04-07 22:05:53 -07:00
rahimandGitHub ed37374736 fix(site): add pointer-events-none to hero heading (#1278) 2026-04-07 21:35:29 -07:00
rahimandGitHub a14a5b7498 chore(build): add workspace consistency checker (#1277) 2026-04-07 21:31:04 -07:00
rahimandGitHub b874dad306 fix(packages): workspace drift (#1270) 2026-04-07 21:15:23 -07:00
rahimandGitHub 9912a8e759 feat(packages): add hotkey bindings to preset skins (#1264) 2026-04-07 19:46:44 -07:00
rahimandGitHub 1cc4ec7f81 feat(react): add hotkeys (#1241) 2026-04-07 12:28:25 -07:00
rahimandGitHub d2c43db550 fix(core): allow undefined hotkey options (#1242) 2026-04-07 02:06:39 -07:00
7c63d82f84 fix(html): create HotkeyRegistryController once in connectedCallback (#1240)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 01:39:28 -07:00
rahimandGitHub d9d893b726 feat(html): add hotkeys (#1239) 2026-04-07 01:08:16 -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 932949fdf1 fix(core): use 0.2 and 0.7 for default playback rates (#1236) 2026-04-06 22:25:44 -07:00
rahimandGitHub c68c1a3c82 feat(core): add sub-1x playback rates to defaults (#1231) 2026-04-06 22:07:09 -07:00
rahimandGitHub e1c3689dc0 docs(design): hotkeys (#1222) 2026-04-06 20:34:59 -07:00
rahimandGitHub 4a9f05569a docs(site): rename commitThrottle to changeThrottle in time-slider reference (#1221) 2026-04-05 22:29:24 -07:00
rahimandGitHub 0c95ab4109 refactor(packages): move slider throttle from commit to change (#1219) 2026-04-05 22:19:11 -07:00
rahimandGitHub 5734c4ad3c fix(site): remove default attr from storyboard track elements (#1211) 2026-04-03 01:25:33 -07:00
rahimandGitHub 8b571f5f05 fix(react): thumbnails broken when using hls media (#1210) 2026-04-03 00:11:27 -07:00
rahimandGitHub 831ddf4ac7 feat(site): add storyboard to home page hero video (#1093) 2026-04-03 00:11:10 -07:00
rahimandGitHub 0ed7bf0653 feat(html): add ui bundles for eject (#1206) 2026-04-02 17:11:41 -07:00
86cf3e8977 fix(packages): make tooltips visual-only and auto-forward media button labels (#1174)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 14:20:01 -07:00
rahimandGitHub 341b405a21 fix(html): include base and shared styles in ejected skin CSS (#1196) 2026-04-02 13:34:40 -07:00
rahimandGitHub 1053af2f5a fix(site): fix invalid import specifiers in ejected React skins (#1192) 2026-04-02 13:34:18 -07:00
rahimGitHubclaude[bot] <41898282+claude[bot]@users.noreply.github.com>rahim <github-actions[bot]@users.noreply.github.com>
809964e572 docs(site): document wheelStep prop and scroll support in VolumeSlider (#1195)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: rahim <github-actions[bot]@users.noreply.github.com>
2026-04-01 21:10:52 -07:00
390b004d80 feat(packages): volume slider scroll support (#1175)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:17:29 -07:00
rahimandGitHub 979d37af2b chore(ci): remove CI failure diagnosis workflow (#1191) 2026-04-01 15:40:15 -07:00
rahimandGitHub 6c5f8c0eda chore: move sandbox to apps/ (#1171) 2026-04-01 12:42:06 -07:00
rahimandGitHub 2fff955ab6 chore(claude): update create-issue skill (#1172) 2026-04-01 12:08:37 -07:00
rahimandGitHub cf5fad97a4 chore(design): archive implemented docs and simplify design skill conventions (#1173) 2026-03-31 23:00:39 -07:00
rahimandGitHub c21de24813 chore(root): upgrade turbo to 2.9 (#1167) 2026-03-31 17:23:20 -07:00
rahimandGitHub 5f6e00b45f chore: update changelog (#1168) 2026-03-31 17:20:23 -07:00
rahimandGitHub c3641c888c fix(utils): polyfill AbortSignal.any for Chromium ≤115 (#1142) 2026-03-26 13:47:48 -07:00
rahimandGitHub 17a73cb3dd fix(site): use client:idle for ejected skin tabs so hidden panels hydrate (#1137) 2026-03-25 23:09:10 -07:00
rahimandGitHub e11510c541 chore(claude): add create-issue skill (#1133) 2026-03-25 22:49:58 -07:00
rahimandGitHub 1dae4558c9 refactor(site): flatten skin into player in ejected output and replace poster slot with img (#1127) 2026-03-25 21:56:30 -07:00
rahimandGitHub cf055727c7 feat(site): improve ejected skin output with usage examples and media elements (#1108) 2026-03-24 22:23:44 -07:00
rahimandGitHub 8110ba55c2 chore(root): replace turbo watch with build-first dev scripts (#1114) 2026-03-24 21:35:21 -07:00
rahimandGitHub 833210a270 test(spf): restore headless browser config for vitest (#1103) 2026-03-24 02:09:38 -07:00
rahimandGitHub 864f2e059a chore(packages): upgrade tsdown 0.20.3 → 0.21.4 (#1102) 2026-03-24 02:06:26 -07:00
rahimandGitHub 8e2e56e36e chore: upgrade typescript 6, vitest 4, align spf package (#1101) 2026-03-24 01:53:36 -07:00
rahimandGitHub bc2929ef4f feat(packages): export media component building blocks (#1098) 2026-03-24 00:36:18 -07:00
rahimandGitHub 1792bae3b4 fix(react): add missing destroy cleanups (#1096) 2026-03-23 16:59:37 -07:00
07b1c87262 fix(core): prevent sprite tile bleeding in thumbnail component (#1053)
Co-authored-by: sampotts <sam@potts.es>
2026-03-23 15:48:43 -07:00
rahimandGitHub 184da9dcc3 fix(site): flatten error classes in ejected react skins (#1080) 2026-03-23 01:29:46 -07:00
rahimandGitHub 539e927ae3 fix(site): quote poster prop value in react demo code template (#1079) 2026-03-23 00:26:30 -07:00
rahimandGitHub 4b17ac9ce1 refactor(react): simplify skin render props with element form (#1068) 2026-03-23 08:16:24 +11:00
rahimandGitHub 335bda5646 fix(html): remove redundant CDN CSS files and inline background skin styles (#1071) 2026-03-20 16:50:13 -07:00
rahimandGitHub 221bcc975a chore(root): migrate build scripts and plugins to TypeScript (#1052) 2026-03-19 22:58:38 -07:00
rahimandGitHub 76ec9171ff fix(html): template minifier stripping out default slot tags (#1045) 2026-03-19 17:00:10 -07:00
b4746f7122 docs: update site for context-based media discovery (#1018)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Darius Cepulis <dcepulis@mux.com>
2026-03-19 12:21:32 -05:00
rahimandGitHub cc04cc99a5 fix(html): extended media not working over cdn (#1019) 2026-03-19 02:12:13 -07:00
rahimandGitHub c09dbdd121 fix(skin): hide volume popover when volume control is unsupported (#1025) 2026-03-19 01:14:57 -07:00
c07da27ead feat(html): refactor attach contexts to carry state and setter (#1024)
Co-authored-by: Wesley Luyten <luwes@users.noreply.github.com>
2026-03-19 00:49:40 -07:00
rahimandGitHub eabd06550d fix(html): restore deprecated slot="media" for backwards compatibility (#1020) 2026-03-18 23:29:53 -07:00
rahimandGitHub 409caddd88 refactor(ci): collapse unchanged packages in bundle size report (#1016) 2026-03-18 22:32:37 -07:00
rahimandGitHub e09ea334bd refactor(html): context-based media discovery, remove slot="media" (#997) 2026-03-18 22:21:30 -07:00
rahimandGitHub c95e1343e1 feat(html): add data-availability to volume slider (#1001) 2026-03-18 12:44:12 -07:00
rahimandGitHub a05e8f20af fix(core): improve fullscreen and pip webkit fallback handling (#999) 2026-03-18 01:35:53 -07:00
rahimandGitHub 12f582ec1a fix(core): sync playback feature state on seeked event (#1000) 2026-03-18 00:56:26 -07:00
rahimandGitHub b9bada9567 fix(core): prevent slider thumb jump on pointer release (#990) 2026-03-17 23:29:23 -07:00
rahimandGitHub fc62ea1c0a fix(core): stub pointer:fine in tooltip touch suppression tests (#998) 2026-03-17 23:22:32 -07:00
rahimandGitHub 324ea2fd3b fix(core): suppress tooltip hover on touch pointer events (#933) 2026-03-17 23:04:54 -07:00