diff --git a/.github/workflows/changelog-prose.yml b/.github/workflows/changelog-prose.yml index 41ee00dd..691bdfee 100644 --- a/.github/workflows/changelog-prose.yml +++ b/.github/workflows/changelog-prose.yml @@ -125,23 +125,26 @@ jobs: - Some PR numbers may resolve to null — skip those gracefully. 3. **Rewrite the changelog body:** - - Replace the raw bullet list with narrative prose (100–300 words). - - Lead with the 1–3 most impactful changes, informed by epic/issue context. - - Group related PRs into cohesive stories rather than listing them individually. - - Call out breaking changes explicitly with migration guidance if applicable. - - Summarize smaller fixes briefly. - - Skip internal-only changes (CI, tooling, changelog maintenance). + - Replace the raw bullet list with narrative prose. Length scales with content: substantial releases get 100–300 words; small releases (a few bullets) get 1–3 honest sentences. Never pad to hit a word count. + - Write paragraphs only: no headings, bullet lists, or tables. Use backticks for identifiers (e.g., `deps.alwaysBundle`, ``). + - Lead with the 1–3 most impactful changes, informed by epic/issue context. Vary the opening; do not default to "This release…". + - Group related PRs into cohesive stories rather than listing them individually (e.g., a feature landing across core, html, and react is one story with three links). + - Call out breaking changes explicitly with concrete migration guidance from the PR body (old name → new name, what to update). Do not bury them. + - Summarize smaller fixes briefly, grouped. + - Skip internal-only changes (CI, tooling, changelog maintenance) — unless the release is entirely internal, in which case describe it honestly in a sentence or two rather than leaving the body empty. + - Preserve PR links as inline markdown links in the prose (e.g., [#906](url)). Every change you mention keeps its PR link. + - Drop per-change author credits ("by @user") — the PR link carries attribution. + - If the raw file has a "New Contributors" section, remove it and end the prose with one sentence thanking first-time contributors by name, linking their GitHub profiles. - Follow `writing-style.md` strictly. - - Preserve PR links as inline markdown links in the prose (e.g., [#906](url)). - Do not fabricate — stick to what the PRs actually say. 4. **Write the `description` field:** - - One sentence summarizing the release for SEO/RSS. - - Update the `description: ""` field in the file's YAML frontmatter. + - One concise sentence starting with a verb, summarizing the release for SEO/RSS (e.g., "Adds a hotkey system, gestures, and the mux-audio element."). Keep it under 140 characters. + - Update the `description: ""` field in the file's YAML frontmatter. Change nothing else in the frontmatter. 5. **Create a PR:** - Create branch: `docs/changelog-prose-${{ steps.version.outputs.version }}` - - Stage and commit the changed file: `docs(changelog): add prose for ${{ steps.version.outputs.version }}` + - Stage and commit the changed file: `docs(site): add changelog prose for ${{ steps.version.outputs.version }}` (commitlint's scope-enum has no `changelog` scope, so use `site`) - Push the branch and open a PR targeting `main`. - Include a link to the release in the PR body. - Keep the PR description concise. diff --git a/site/src/content/changelog/10.0.0-beta.1.md b/site/src/content/changelog/10.0.0-beta.1.md new file mode 100644 index 00000000..14967526 --- /dev/null +++ b/site/src/content/changelog/10.0.0-beta.1.md @@ -0,0 +1,10 @@ +--- +description: "Moves Video.js 10 from alpha to beta: packages now publish to the latest npm dist-tag." +date: 2026-03-10 +version: "10.0.0-beta.1" +prerelease: true +breaking: false +compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-alpha.11...@videojs/core@10.0.0-beta.1" +--- + +Video.js 10 is in beta. This release flips the npm dist-tags from alpha/`next` to beta/`latest` ([#846](https://github.com/videojs/v10/pull/846)): `npm install @videojs/html` now installs v10 without the `@next` suffix, and install commands, CDN URLs, and badges across the docs drop it too. The `next` tag stays frozen at `10.0.0-alpha.10`. Package READMEs, the contributing guide, and the release manifest were updated to match ([#847](https://github.com/videojs/v10/pull/847), [#848](https://github.com/videojs/v10/pull/848), [#850](https://github.com/videojs/v10/pull/850)). The site also gains ejected skins ([#809](https://github.com/videojs/v10/pull/809)): a build script generates copy-paste source for all four skins across HTML and React, in CSS and Tailwind variants, powering a new customize-skins docs page and the home page's "Take full control" demo. diff --git a/site/src/content/changelog/10.0.0-beta.10.md b/site/src/content/changelog/10.0.0-beta.10.md index ae1e8d73..ad351782 100644 --- a/site/src/content/changelog/10.0.0-beta.10.md +++ b/site/src/content/changelog/10.0.0-beta.10.md @@ -1,5 +1,5 @@ --- -description: "" +description: "Fixes thumbnail sprite tile bleeding, skin button text alignment, and missing React destroy cleanups." date: 2026-03-24 version: "10.0.0-beta.10" prerelease: true @@ -7,8 +7,4 @@ breaking: false compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.9...@videojs/core@10.0.0-beta.10" --- - -### 🐛 Bug Fixes -- *(core)* Prevent sprite tile bleeding in thumbnail component ([#1053](https://github.com/videojs/v10/pull/1053)) by [@mihar-22](https://github.com/mihar-22) -- *(skin)* Fix button text alignment and text shadow ([#1091](https://github.com/videojs/v10/pull/1091)) by [@sampotts](https://github.com/sampotts) -- *(react)* Add missing destroy cleanups ([#1096](https://github.com/videojs/v10/pull/1096)) by [@mihar-22](https://github.com/mihar-22) +Three fixes land in beta.10: the thumbnail component no longer bleeds adjacent sprite tiles into the preview ([#1053](https://github.com/videojs/v10/pull/1053)), skin buttons get corrected text alignment and text shadow ([#1091](https://github.com/videojs/v10/pull/1091)), and the React player adds missing cleanups when a player is destroyed ([#1096](https://github.com/videojs/v10/pull/1096)). diff --git a/site/src/content/changelog/10.0.0-beta.11.md b/site/src/content/changelog/10.0.0-beta.11.md index d7b5e0e0..ae1844e8 100644 --- a/site/src/content/changelog/10.0.0-beta.11.md +++ b/site/src/content/changelog/10.0.0-beta.11.md @@ -1,5 +1,5 @@ --- -description: "" +description: "Exports media component building blocks so you can build custom media components on public APIs." date: 2026-03-24 version: "10.0.0-beta.11" prerelease: true @@ -7,9 +7,4 @@ breaking: false compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.10...@videojs/core@10.0.0-beta.11" --- - -### 🚀 Features -- *(packages)* Export media component building blocks ([#1098](https://github.com/videojs/v10/pull/1098)) by [@mihar-22](https://github.com/mihar-22) - -### ⚙️ Miscellaneous Tasks -- Upgrade typescript 6, vitest 4, align spf package ([#1101](https://github.com/videojs/v10/pull/1101)) by [@mihar-22](https://github.com/mihar-22) +Beta.11 exports the media component building blocks that the built-in HLS, DASH, and SimpleHLS components already use, so you can build custom media components, such as a new streaming protocol integration, without reaching into internal module paths ([#1098](https://github.com/videojs/v10/pull/1098)). `Delegate` and `DelegateMixin` ship from `@videojs/core`, `MediaProxyMixin` from `@videojs/core/dom`, and `@videojs/react` adds `useOptionalPlayer` plus media utilities including `useMediaInstance`, `attachMediaElement`, `mediaProps`, and `useComposedRefs`. diff --git a/site/src/content/changelog/10.0.0-beta.12.md b/site/src/content/changelog/10.0.0-beta.12.md index a0c32fd1..50a5a19c 100644 --- a/site/src/content/changelog/10.0.0-beta.12.md +++ b/site/src/content/changelog/10.0.0-beta.12.md @@ -1,5 +1,5 @@ --- -description: "" +description: "Adds the Mux video component, native HLS playback, HLS preload and error handling, and a new error dialog component." date: 2026-04-01 version: "10.0.0-beta.12" prerelease: true @@ -7,39 +7,10 @@ breaking: false compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.11...@videojs/core@10.0.0-beta.12" --- +Beta.12 brings Mux playback to Video.js. The new Mux video component builds on the HLS delegate, generates stream URLs from a `playbackId` (custom playback domains included), and initializes Mux Data monitoring automatically ([#1036](https://github.com/videojs/v10/pull/1036)); a follow-up corrects Mux Data initialization ([#1162](https://github.com/videojs/v10/pull/1162)). -### 🚀 Features -- Add Mux video component ([#1036](https://github.com/videojs/v10/pull/1036)) by [@luwes](https://github.com/luwes) -- *(site)* Improve ejected skin output with usage examples and media elements ([#1108](https://github.com/videojs/v10/pull/1108)) by [@mihar-22](https://github.com/mihar-22) -- *(core)* Implement preload for HLS media ([#1125](https://github.com/videojs/v10/pull/1125)) by [@luwes](https://github.com/luwes) -- Add native hls media + refactor ([#1154](https://github.com/videojs/v10/pull/1154)) by [@luwes](https://github.com/luwes) -- *(packages)* Error dialog component ([#1077](https://github.com/videojs/v10/pull/1077)) by [@sampotts](https://github.com/sampotts) -- *(core)* Add error handling to Hls.js media ([#1164](https://github.com/videojs/v10/pull/1164)) by [@luwes](https://github.com/luwes) +The HLS media stack matures alongside it. A new native HLS delegate drives playback through the browser's built-in support, and HLS media now picks between the Hls.js and native paths based on browser support, source type, and your `preferPlayback` setting ([#1154](https://github.com/videojs/v10/pull/1154), [#1150](https://github.com/videojs/v10/pull/1150)). HLS media also honors `preload`: hls.js no longer loads segments eagerly, `metadata` fetches a minimal buffer, and `none` defers loading until playback starts ([#1125](https://github.com/videojs/v10/pull/1125)). Fatal Hls.js errors now convert to a standard `MediaError` with consistent messages and surface as `error` events ([#1164](https://github.com/videojs/v10/pull/1164)). -### 🐛 Bug Fixes -- *(site)* Use client:idle for ejected skin tabs so hidden panels hydrate ([#1137](https://github.com/videojs/v10/pull/1137)) by [@mihar-22](https://github.com/mihar-22) -- *(utils)* Polyfill AbortSignal.any for Chromium ≤115 ([#1142](https://github.com/videojs/v10/pull/1142)) by [@mihar-22](https://github.com/mihar-22) -- *(site)* Add Netlify redirects for old blog URLs ([#1144](https://github.com/videojs/v10/pull/1144)) by [@decepulis](https://github.com/decepulis) -- *(site)* Add visible "Details" label to API reference table toggle columns ([#1147](https://github.com/videojs/v10/pull/1147)) by [@decepulis](https://github.com/decepulis) -- *(site)* Increase blog body text to 18px for readability ([#1146](https://github.com/videojs/v10/pull/1146)) by [@decepulis](https://github.com/decepulis) -- *(site)* Use overflow-auto on TabsPanel to prevent layout jump ([#1148](https://github.com/videojs/v10/pull/1148)) by [@decepulis](https://github.com/decepulis) -- Isolate preload mixin for hls delegate ([#1150](https://github.com/videojs/v10/pull/1150)) by [@luwes](https://github.com/luwes) -- *(site)* Add missing space in navbar ([#1151](https://github.com/videojs/v10/pull/1151)) by [@decepulis](https://github.com/decepulis) -- *(skin)* Responsive design fixes and improvements ([#1129](https://github.com/videojs/v10/pull/1129)) by [@sampotts](https://github.com/sampotts) -- *(html)* HTML SSR safety and sandbox skin chunking ([#1155](https://github.com/videojs/v10/pull/1155)) by [@sampotts](https://github.com/sampotts) -- *(core)* Fix Mux data initialization ([#1162](https://github.com/videojs/v10/pull/1162)) by [@luwes](https://github.com/luwes) +When playback fails, the new error dialog shows it. The `media-error-dialog` element in HTML and the compound `ErrorDialog` component in React (`Root`, `Popup`, `Title`, `Description`, `Close`) open automatically from the player's error state, stay hidden otherwise, and ship in every skin ([#1077](https://github.com/videojs/v10/pull/1077)). -### 💼 Other -- *(spf)* Migrate reactors from WritableState to TC39 Signals ([#1112](https://github.com/videojs/v10/pull/1112)) by [@cjpillsbury](https://github.com/cjpillsbury) - -### 🚜 Refactor -- *(site)* Flatten skin into player in ejected output and replace poster slot with img ([#1127](https://github.com/videojs/v10/pull/1127)) by [@mihar-22](https://github.com/mihar-22) -- *(site)* Reorganize SVG assets into assets/icons and assets/logos ([#1138](https://github.com/videojs/v10/pull/1138)) by [@decepulis](https://github.com/decepulis) - -### 🧪 Testing -- *(spf)* Restore headless browser config for vitest ([#1103](https://github.com/videojs/v10/pull/1103)) by [@mihar-22](https://github.com/mihar-22) - -### ⚙️ Miscellaneous Tasks -- *(packages)* Upgrade tsdown 0.20.3 → 0.21.4 ([#1102](https://github.com/videojs/v10/pull/1102)) by [@mihar-22](https://github.com/mihar-22) -- *(root)* Replace turbo watch with build-first dev scripts ([#1114](https://github.com/videojs/v10/pull/1114)) by [@mihar-22](https://github.com/mihar-22) -- *(claude)* Add create-issue skill ([#1133](https://github.com/videojs/v10/pull/1133)) by [@mihar-22](https://github.com/mihar-22) +On the site, ejected skins now output self-contained, copy-pasteable code with real media elements, a player wrapper, and usage examples ([#1108](https://github.com/videojs/v10/pull/1108), [#1127](https://github.com/videojs/v10/pull/1127)), and hidden skin tabs hydrate correctly ([#1137](https://github.com/videojs/v10/pull/1137)). Under the hood, SPF reactors migrated from `WritableState` to TC39 Signals ([#1112](https://github.com/videojs/v10/pull/1112)). A batch of fixes rounds out the release: an `AbortSignal.any` polyfill for Chromium 115 and earlier ([#1142](https://github.com/videojs/v10/pull/1142)), responsive skin improvements ([#1129](https://github.com/videojs/v10/pull/1129)), HTML SSR safety ([#1155](https://github.com/videojs/v10/pull/1155)), and assorted site polish ([#1144](https://github.com/videojs/v10/pull/1144), [#1146](https://github.com/videojs/v10/pull/1146), [#1147](https://github.com/videojs/v10/pull/1147), [#1148](https://github.com/videojs/v10/pull/1148), [#1151](https://github.com/videojs/v10/pull/1151)). diff --git a/site/src/content/changelog/10.0.0-beta.13.md b/site/src/content/changelog/10.0.0-beta.13.md new file mode 100644 index 00000000..2ec6eb71 --- /dev/null +++ b/site/src/content/changelog/10.0.0-beta.13.md @@ -0,0 +1,10 @@ +--- +description: "Fixes the React media proxy so event listeners attach to the media element instead of the delegate." +date: 2026-04-01 +version: "10.0.0-beta.13" +prerelease: true +breaking: false +compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.12...@videojs/core@10.0.0-beta.13" +--- + +A fast follow-up to beta.12: with delegates now extending `EventTarget`, React players attached media event listeners to the delegate instance instead of the media element. The media proxy now forwards `addEventListener`, `removeEventListener`, and `dispatchEvent` to the attached target directly, and the native HLS delegate re-applies its stored `preload` and `src` on attach ([#1169](https://github.com/videojs/v10/pull/1169)). HTML players were never affected. diff --git a/site/src/content/changelog/10.0.0-beta.14.md b/site/src/content/changelog/10.0.0-beta.14.md index 935bf44a..0f586b70 100644 --- a/site/src/content/changelog/10.0.0-beta.14.md +++ b/site/src/content/changelog/10.0.0-beta.14.md @@ -1,5 +1,5 @@ --- -description: "" +description: "Adds volume slider scroll support, UI-only CDN bundles for ejected players, and native HLS error handling." date: 2026-04-03 version: "10.0.0-beta.14" prerelease: true @@ -7,41 +7,12 @@ breaking: false compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.13...@videojs/core@10.0.0-beta.14" --- +Beta.14 lets you scroll to adjust volume: hover the volume slider and use the mouse wheel, with the step size configurable through a new `wheelStep` prop in both the HTML and React players ([#1175](https://github.com/videojs/v10/pull/1175)). The behavior is documented in the VolumeSlider reference ([#1195](https://github.com/videojs/v10/pull/1195)). -### 🚀 Features -- *(packages)* Volume slider scroll support ([#1175](https://github.com/videojs/v10/pull/1175)) by [@mihar-22](https://github.com/mihar-22) -- *(site)* Add llms.txt footer link to generated markdown pages ([#1201](https://github.com/videojs/v10/pull/1201)) by [@decepulis](https://github.com/decepulis) -- *(site)* Organize llms.txt indexes by sidebar structure ([#1203](https://github.com/videojs/v10/pull/1203)) by [@decepulis](https://github.com/decepulis) -- *(html)* Add ui bundles for eject ([#1206](https://github.com/videojs/v10/pull/1206)) by [@mihar-22](https://github.com/mihar-22) -- *(core)* Add native hls error handling ([#1190](https://github.com/videojs/v10/pull/1190)) by [@luwes](https://github.com/luwes) -- *(html)* Add native hls video to cdn ([#1208](https://github.com/videojs/v10/pull/1208)) by [@luwes](https://github.com/luwes) -- *(site)* Add storyboard to home page hero video ([#1093](https://github.com/videojs/v10/pull/1093)) by [@mihar-22](https://github.com/mihar-22) -- *(site)* Rotate poster time ([#1153](https://github.com/videojs/v10/pull/1153)) by [@heff](https://github.com/heff) +Native HLS playback gets proper error handling: the player intercepts native `