Commit Graph
1046 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
Wesley LuytenandGitHub 1b31f3e8d7 feat(core): add vimeo media host and html/react components (#1667) 2026-06-18 09:36:31 +10:00
Sam PottsandGitHub 035b509c7a feat(packages): compound tooltips with label and shortcut parts (#1494) 2026-06-18 08:12:16 +10:00
Sam PottsandGitHub 9275f93504 feat(packages): add resolved rendition to auto label (#1698) 2026-06-18 07:42:00 +10:00
eae0191eed chore(ci): drop edited trigger from issue triage (#1700)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:28:38 -07:00
Sam PottsandGitHub 16ab90987a feat(packages): add quality menu UI (#1694) 2026-06-18 07:20:59 +10:00
Sam PottsandGitHub 74da6821d7 feat(core): add quality selection state (#1693) 2026-06-18 07:20:13 +10: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
Santiago PuppoandGitHub 33873bc4ae feat(spf): Add maxResolution to SPF Background Video (#1654) 2026-06-17 11:36:02 -03:00
Ronald UrbinaandGitHub 47aca0f798 fix(core): remove 1-9 digit key seek from slider keyboard handler (#1690) 2026-06-16 10:50:16 -03:00
Wesley LuytenandGitHub 67b39fe4bd feat(core): add media tracks and renditions support (#1664) 2026-06-15 07:39:55 +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
Renzo DelfinoandGitHub 1145f09e52 feat(site): list required css imports per skin in preset reference (#1521) 2026-06-12 14:57:42 -03:00
Sam PottsandGitHub 4a81e048a1 fix(test): stabilize e2e tests (#1678) 2026-06-12 07:13:07 +10: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
Sam PottsandGitHub b9e0a75c1b fix(react): address stale media reference (#1677) 2026-06-11 09:37:28 -07:00
Ronald UrbinaandGitHub e10455aed7 fix(docs): replace <Controls /> with <Controls.Root> in code samples (#1492) 2026-06-11 11:22:39 -03:00
Sam PottsandGitHub 6b0d3b6b2f fix(test): update e2e menu selectors (#1674) 2026-06-11 12:29:59 +10:00
Renzo DelfinoandGitHub f90a700a00 feat(site): add pre-release docs banner on main.videojs.org (#1575) 2026-06-10 14:47:21 -03:00
Renzo DelfinoandGitHub 48a984aecd fix(core): prevent mobile controls flash on first tap after auto-hide (#1556) 2026-06-10 14:39:39 -03:00
00b6f0be1d feat(packages): add settings menu (#1615)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 13:54:45 +10:00
Sam PottsandGitHub 62d0524b83 feat(core): lock fullscreen orientation (#1656) 2026-06-10 10:32:43 +10:00
Sam PottsandGitHub 3d2225e77e fix(packages): fix ejected skin slider setup (#1660) 2026-06-08 15:07:57 -07:00
d9f9efde88 fix(spf): refactor track switching to rules (#1658)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 14:48:34 -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
Santiago PuppoandGitHub 24a78d253a refactor(core): airplay button (#1614) 2026-06-03 13:54:28 -07:00
Sam PottsandGitHub 127443aaa2 fix(test): update slider thumbnail selector (#1653) 2026-06-03 08:57:52 -07:00
Sam PottsandGitHub 7453d538a8 feat(skin): show scrubber preview timestamps (#1652) 2026-06-03 19:27:54 +10:00
Wesley LuytenandGitHub d96a8dd474 chore(root): rename agents alias to .agents (#1649) 2026-06-02 17:24:19 -07:00
Sam PottsandGitHub c5f75166fd feat(packages): update menu group labels (#1643) 2026-06-02 20:26:19 +10:00
Sam PottsandGitHub 2f5e23e100 fix(core): update trigger aria-expanded on close (#1644) 2026-06-02 17:07:20 +10:00
Sam PottsandGitHub e9a619e03a fix(core): focus selected radio menu items (#1645) 2026-06-02 16:40:11 +10:00
Santiago PuppoandGitHub efc7c23b7b fix(spf): add emptied listener to track-current-time behavior (#1634) 2026-06-01 16:54:58 -03:00
Santiago PuppoandGitHub 3741e8de12 feat(spf): background looping video (phase 1) (#1602) 2026-06-01 16:13:26 -03:00
Sam PottsandGitHub 01a2115aab fix(packages): scope menu data attributes (#1628) 2026-05-29 16:26:47 +10:00
Sam PottsandGitHub e7aa0a6669 feat(packages): constrain popovers to positioning boundary (#1627) 2026-05-29 16:26:15 +10:00
93c92ff646 fix(skin): restore overflow on audio skins (#1623)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 10:02:48 +10:00