From b7f1a1ed879df543af7eb93aba2badf48bccd6d4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 19:52:24 +0000 Subject: [PATCH 1/3] fix(ci): use --raw-field for changelog-prose dispatch inputs Tag names start with "@", which gh's --field flag expands as a read-from-file reference and fails. --raw-field passes the value verbatim. Claude-Session: https://claude.ai/code/session_018H1XZpVx3z9n6rCWyxGbeN --- .github/workflows/changelog-prose.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/changelog-prose.yml b/.github/workflows/changelog-prose.yml index 691bdfee8..555cfd408 100644 --- a/.github/workflows/changelog-prose.yml +++ b/.github/workflows/changelog-prose.yml @@ -35,10 +35,12 @@ jobs: TAG_NAME: ${{ github.event.release.tag_name }} RELEASE_URL: ${{ github.event.release.html_url }} run: | + # --raw-field, not --field: tag names start with "@", which --field + # expands as a read-from-file reference and fails. gh workflow run changelog-prose.yml \ --repo "$GITHUB_REPOSITORY" \ - --field tag_name="$TAG_NAME" \ - --field release_url="$RELEASE_URL" + --raw-field tag_name="$TAG_NAME" \ + --raw-field release_url="$RELEASE_URL" prose: if: github.event_name == 'workflow_dispatch' && startsWith(inputs.tag_name, '@videojs/core@') From 2dfe52e631deb6e6c15c635dba51aabdc3682aa5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 20:01:33 +0000 Subject: [PATCH 2/3] fix(ci): raise turn limit and widen tool allowlist for changelog prose The dispatched prose run for beta.25 failed with error_max_turns: 11 of its 20 turns were permission denials, since piped commands like `gh api graphql | jq` don't match the gh/git-only Bash allowlist. Allow common read-only text utilities and raise the cap to 50. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_018H1XZpVx3z9n6rCWyxGbeN --- .github/workflows/changelog-prose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/changelog-prose.yml b/.github/workflows/changelog-prose.yml index 555cfd408..00d37539c 100644 --- a/.github/workflows/changelog-prose.yml +++ b/.github/workflows/changelog-prose.yml @@ -89,8 +89,8 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} claude_args: | --model sonnet - --max-turns 20 - --allowedTools "Bash(gh:*)" "Bash(git:*)" "Read" "Edit" "Write" "Glob" "Grep" + --max-turns 50 + --allowedTools "Bash(gh:*)" "Bash(git:*)" "Bash(jq:*)" "Bash(cat:*)" "Bash(ls:*)" "Bash(head:*)" "Bash(tail:*)" "Bash(grep:*)" "Bash(sed:*)" "Bash(wc:*)" "Read" "Edit" "Write" "Glob" "Grep" prompt: | You are the changelog prose writer for Video.js 10. From 8d34884b8cc2bee54be4dcb5b92007a847663189 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 20:01:36 +0000 Subject: [PATCH 3/3] docs(site): add changelog prose for 10.0.0-beta.25 Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_018H1XZpVx3z9n6rCWyxGbeN --- site/src/content/changelog/10.0.0-beta.25.md | 111 ++----------------- 1 file changed, 8 insertions(+), 103 deletions(-) diff --git a/site/src/content/changelog/10.0.0-beta.25.md b/site/src/content/changelog/10.0.0-beta.25.md index 60f4a8660..fed0f544a 100644 --- a/site/src/content/changelog/10.0.0-beta.25.md +++ b/site/src/content/changelog/10.0.0-beta.25.md @@ -1,5 +1,5 @@ --- -description: "" +description: "Adds a quality menu, settings menu, AirPlay and Vimeo support, SPF multi-CDN failover, and Google Cast on by default." date: 2026-07-07 version: "10.0.0-beta.25" prerelease: true @@ -7,111 +7,16 @@ breaking: true compareUrl: "https://github.com/videojs/v10/compare/@videojs/core@10.0.0-beta.24...@videojs/core@10.0.0-beta.25" --- +Quality selection headlines beta.25. Core gains media tracks and renditions state ([#1664](https://github.com/videojs/v10/pull/1664)) and a quality selection model ([#1693](https://github.com/videojs/v10/pull/1693)), surfaced as a quality menu in the shipped skins ([#1694](https://github.com/videojs/v10/pull/1694)) whose Auto option shows the currently resolved rendition ([#1698](https://github.com/videojs/v10/pull/1698)). The menu system from beta.24 keeps growing: a settings menu gathers playback options in one place ([#1615](https://github.com/videojs/v10/pull/1615)), audio tracks get their own menu ([#1714](https://github.com/videojs/v10/pull/1714)), and menus pick up clearer group labels, mutation handling, and style polish ([#1643](https://github.com/videojs/v10/pull/1643), [#1739](https://github.com/videojs/v10/pull/1739), [#1725](https://github.com/videojs/v10/pull/1725)). -### πŸš€ Features -- *(packages)* Airplay button ([#1531](https://github.com/videojs/v10/pull/1531)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(spf)* Basic audio only use case + use-case-composition doc-type + implementation skills ([#1584](https://github.com/videojs/v10/pull/1584)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(packages)* Constrain popovers to positioning boundary ([#1627](https://github.com/videojs/v10/pull/1627)) by [@sampotts](https://github.com/sampotts) -- *(spf)* Background looping video (phase 1) ([#1602](https://github.com/videojs/v10/pull/1602)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(packages)* Update menu group labels ([#1643](https://github.com/videojs/v10/pull/1643)) by [@sampotts](https://github.com/sampotts) -- *(skin)* Show scrubber preview timestamps ([#1652](https://github.com/videojs/v10/pull/1652)) by [@sampotts](https://github.com/sampotts) -- *(spf)* Multi-track audio + skills building features and behaviors ([#1605](https://github.com/videojs/v10/pull/1605)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(core)* Lock fullscreen orientation ([#1656](https://github.com/videojs/v10/pull/1656)) by [@sampotts](https://github.com/sampotts) -- *(packages)* Add settings menu ([#1615](https://github.com/videojs/v10/pull/1615)) by [@sampotts](https://github.com/sampotts) -- *(site)* Add pre-release docs banner on main.videojs.org ([#1575](https://github.com/videojs/v10/pull/1575)) by [@R-Delfino95](https://github.com/R-Delfino95) -- *(spf)* Multi-cdn support ([#1668](https://github.com/videojs/v10/pull/1668)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(site)* List required css imports per skin in preset reference ([#1521](https://github.com/videojs/v10/pull/1521)) by [@R-Delfino95](https://github.com/R-Delfino95) -- *(media)* [**breaking**] Add Google Cast by default to HLS, DASH media ([#1661](https://github.com/videojs/v10/pull/1661)) by [@luwes](https://github.com/luwes) -- *(core)* Add media tracks and renditions support ([#1664](https://github.com/videojs/v10/pull/1664)) by [@luwes](https://github.com/luwes) -- *(spf)* Add maxResolution to SPF Background Video ([#1654](https://github.com/videojs/v10/pull/1654)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(spf)* Multi cdn failover ([#1671](https://github.com/videojs/v10/pull/1671)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(spf)* Capability probing ([#1676](https://github.com/videojs/v10/pull/1676)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(core)* Add quality selection state ([#1693](https://github.com/videojs/v10/pull/1693)) by [@sampotts](https://github.com/sampotts) -- *(packages)* Add quality menu UI ([#1694](https://github.com/videojs/v10/pull/1694)) by [@sampotts](https://github.com/sampotts) -- *(packages)* Add resolved rendition to auto label ([#1698](https://github.com/videojs/v10/pull/1698)) by [@sampotts](https://github.com/sampotts) -- *(packages)* Compound tooltips with label and shortcut parts ([#1494](https://github.com/videojs/v10/pull/1494)) by [@sampotts](https://github.com/sampotts) -- *(core)* Add vimeo media host and html/react components ([#1667](https://github.com/videojs/v10/pull/1667)) by [@luwes](https://github.com/luwes) -- *(packages)* Add poster placeholder blur-up pattern ([#1632](https://github.com/videojs/v10/pull/1632)) by [@ronald-urbina](https://github.com/ronald-urbina) -- *(core)* Add i18n foundation with English locale and UI wiring ([#1589](https://github.com/videojs/v10/pull/1589)) by [@sampotts](https://github.com/sampotts) -- *(core)* Add built-in locale packs and lazy loadLocale ([#1590](https://github.com/videojs/v10/pull/1590)) by [@sampotts](https://github.com/sampotts) -- *(site)* API reference pages for media elements ([#1342](https://github.com/videojs/v10/pull/1342)) by [@decepulis](https://github.com/decepulis) -- *(spf)* Text tracks switching ([#1687](https://github.com/videojs/v10/pull/1687)) by [@cjpillsbury](https://github.com/cjpillsbury) -- Add a CDN media-availability manifest and read it across install surfaces ([#1737](https://github.com/videojs/v10/pull/1737)) by [@decepulis](https://github.com/decepulis) -- Add DASH, Mux, and Vimeo as installation source types (UI + CLI) ([#1732](https://github.com/videojs/v10/pull/1732)) by [@decepulis](https://github.com/decepulis) -- *(packages)* Add audio tracks menu ([#1714](https://github.com/videojs/v10/pull/1714)) by [@sampotts](https://github.com/sampotts) -- *(core)* Support AirPlay on MSE ([#1692](https://github.com/videojs/v10/pull/1692)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(packages)* Add pauseOnDrag to time slider ([#1596](https://github.com/videojs/v10/pull/1596)) by [@R-Delfino95](https://github.com/R-Delfino95) -- *(packages)* Add time display toggle ([#1669](https://github.com/videojs/v10/pull/1669)) by [@sampotts](https://github.com/sampotts) -- *(site)* Add changelog section ([#1793](https://github.com/videojs/v10/pull/1793)) by [@decepulis](https://github.com/decepulis) +Three changes are breaking. HLS and DASH media now include Google Cast by default ([#1661](https://github.com/videojs/v10/pull/1661)): features like Cast and Mux Data are composed as media components and configured through namespaced options such as `media.config.googleCast.receiver` and `media.config.hlsJs.capLevelToPlayerSize`, replacing the `cast-src`, `prefer-playback`, and `debug` element attributes. The hls.js-backed stack is renamed to make its engine explicit ([#1753](https://github.com/videojs/v10/pull/1753)): update `` to ``, `HlsVideo` to `HlsJsVideo`, and `…/media/hls-video` import subpaths to `…/media/hlsjs-video`. And the media capability predicates (`isMediaPauseCapable` and friends) moved from `@videojs/core/dom` to `@videojs/core` ([#1705](https://github.com/videojs/v10/pull/1705)). -### πŸ› Bug Fixes -- *(skin)* Minor design tweaks ([#1597](https://github.com/videojs/v10/pull/1597)) by [@sampotts](https://github.com/sampotts) -- *(core)* Disable toggle captions when there are no captions ([#1598](https://github.com/videojs/v10/pull/1598)) by [@sampotts](https://github.com/sampotts) -- *(site)* Cache shiki highlighters during dev HMR ([#1619](https://github.com/videojs/v10/pull/1619)) by [@sampotts](https://github.com/sampotts) -- *(skin)* Prevent initial pause icon flash ([#1622](https://github.com/videojs/v10/pull/1622)) by [@sampotts](https://github.com/sampotts) -- *(skin)* Restore overflow on audio skins ([#1623](https://github.com/videojs/v10/pull/1623)) by [@sampotts](https://github.com/sampotts) -- *(packages)* Scope menu data attributes ([#1628](https://github.com/videojs/v10/pull/1628)) by [@sampotts](https://github.com/sampotts) -- *(spf)* Add emptied listener to track-current-time behavior ([#1634](https://github.com/videojs/v10/pull/1634)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(core)* Focus selected radio menu items ([#1645](https://github.com/videojs/v10/pull/1645)) by [@sampotts](https://github.com/sampotts) -- *(core)* Update trigger aria-expanded on close ([#1644](https://github.com/videojs/v10/pull/1644)) by [@sampotts](https://github.com/sampotts) -- *(test)* Update slider thumbnail selector ([#1653](https://github.com/videojs/v10/pull/1653)) by [@sampotts](https://github.com/sampotts) -- *(spf)* Refactor track switching to rules ([#1658](https://github.com/videojs/v10/pull/1658)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(packages)* Fix ejected skin slider setup ([#1660](https://github.com/videojs/v10/pull/1660)) by [@sampotts](https://github.com/sampotts) -- *(core)* Prevent mobile controls flash on first tap after auto-hide ([#1556](https://github.com/videojs/v10/pull/1556)) by [@R-Delfino95](https://github.com/R-Delfino95) -- *(test)* Update e2e menu selectors ([#1674](https://github.com/videojs/v10/pull/1674)) by [@sampotts](https://github.com/sampotts) -- *(docs)* Replace with in code samples ([#1492](https://github.com/videojs/v10/pull/1492)) by [@ronald-urbina](https://github.com/ronald-urbina) -- *(react)* Address stale media reference ([#1677](https://github.com/videojs/v10/pull/1677)) by [@sampotts](https://github.com/sampotts) -- *(test)* Stabilize e2e tests ([#1678](https://github.com/videojs/v10/pull/1678)) by [@sampotts](https://github.com/sampotts) -- *(core)* Remove 1-9 digit key seek from slider keyboard handler ([#1690](https://github.com/videojs/v10/pull/1690)) by [@ronald-urbina](https://github.com/ronald-urbina) -- *(site)* Update use-media reference for mediahost architecture ([#1702](https://github.com/videojs/v10/pull/1702)) by [@luwes](https://github.com/luwes) -- *(packages)* Escape HTML special chars in serializeAttributes to prevent XSS ([#1670](https://github.com/videojs/v10/pull/1670)) by [@Jerricho93](https://github.com/Jerricho93) -- *(ci)* Report lazy bundle chunks separately ([#1710](https://github.com/videojs/v10/pull/1710)) by [@sampotts](https://github.com/sampotts) -- *(skin)* Add missing classnames to tailwind menus ([#1712](https://github.com/videojs/v10/pull/1712)) by [@sampotts](https://github.com/sampotts) -- *(ci)* Run bundle size on stacked prs ([#1713](https://github.com/videojs/v10/pull/1713)) by [@sampotts](https://github.com/sampotts) -- *(site)* Pre-bundle react-dom so dev islands hydrate ([#1711](https://github.com/videojs/v10/pull/1711)) by [@decepulis](https://github.com/decepulis) -- *(core)* Upgrade dash.js to 5.2.0 ([#1724](https://github.com/videojs/v10/pull/1724)) by [@luwes](https://github.com/luwes) -- *(site)* Resolve api reference slug mismatch on airplay and hlsjs pages ([#1755](https://github.com/videojs/v10/pull/1755)) by [@luwes](https://github.com/luwes) -- *(skin)* Aspect ratio related fixes ([#1726](https://github.com/videojs/v10/pull/1726)) by [@sampotts](https://github.com/sampotts) -- *(packages)* Handle menu child mutations ([#1739](https://github.com/videojs/v10/pull/1739)) by [@sampotts](https://github.com/sampotts) -- *(skin)* Improvements to menu styles ([#1725](https://github.com/videojs/v10/pull/1725)) by [@sampotts](https://github.com/sampotts) -- *(react)* Recover from StoreError: DESTROYED on React hide/reveal ([#1587](https://github.com/videojs/v10/pull/1587)) by [@ronald-urbina](https://github.com/ronald-urbina) -- *(site)* Install musl resvg binary so Netlify can bundle the OG function ([#1759](https://github.com/videojs/v10/pull/1759)) by [@decepulis](https://github.com/decepulis) -- *(skin)* Improve buffering, overlays, and input feedback ([#1547](https://github.com/videojs/v10/pull/1547)) by [@sampotts](https://github.com/sampotts) -- *(test)* Update duration selectors for time inversion feature ([#1760](https://github.com/videojs/v10/pull/1760)) by [@sampotts](https://github.com/sampotts) -- *(react)* Memoize Provider context value ([#1787](https://github.com/videojs/v10/pull/1787)) by [@mihar-22](https://github.com/mihar-22) -- *(html)* Avoid menu item value render loop ([#1791](https://github.com/videojs/v10/pull/1791)) by [@sampotts](https://github.com/sampotts) -- *(site)* Skip docs links for features without reference pages ([#1394](https://github.com/videojs/v10/pull/1394)) by [@decepulis](https://github.com/decepulis) -- *(ci)* Relay release event through workflow_dispatch for changelog prose ([#1792](https://github.com/videojs/v10/pull/1792)) by [@decepulis](https://github.com/decepulis) +Remote playback rounds out beyond Cast: an AirPlay button ships in the html and react packages ([#1531](https://github.com/videojs/v10/pull/1531), [#1614](https://github.com/videojs/v10/pull/1614)), and MSE-backed streams can now hand off to AirPlay ([#1692](https://github.com/videojs/v10/pull/1692)). Vimeo joins the media lineup with a host and matching components ([#1667](https://github.com/videojs/v10/pull/1667)), and the installation flow on the site and in the CLI offers DASH, Mux, and Vimeo sources ([#1732](https://github.com/videojs/v10/pull/1732)) backed by a CDN media-availability manifest ([#1737](https://github.com/videojs/v10/pull/1737)). -### 🚜 Refactor -- *(core)* Airplay button ([#1614](https://github.com/videojs/v10/pull/1614)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(core)* Rework media config as a plain getter/setter ([#1697](https://github.com/videojs/v10/pull/1697)) by [@luwes](https://github.com/luwes) -- *(core)* [**breaking**] Move media capability predicates to core layer ([#1705](https://github.com/videojs/v10/pull/1705)) by [@luwes](https://github.com/luwes) -- Rename SPF background-looping-video into background-video ([#1731](https://github.com/videojs/v10/pull/1731)) by [@spuppo-mux](https://github.com/spuppo-mux) -- *(packages)* [**breaking**] Rename hls media stack to hlsjs naming ([#1753](https://github.com/videojs/v10/pull/1753)) by [@luwes](https://github.com/luwes) +SPF, the stream processing framework behind the in-house engine, has a busy release: multi-CDN support with automatic failover ([#1668](https://github.com/videojs/v10/pull/1668), [#1671](https://github.com/videojs/v10/pull/1671)), capability probing ([#1676](https://github.com/videojs/v10/pull/1676)), text track switching ([#1687](https://github.com/videojs/v10/pull/1687)), multi-track audio ([#1605](https://github.com/videojs/v10/pull/1605)), an audio-only engine composition ([#1584](https://github.com/videojs/v10/pull/1584)), and phase one of background video with a `maxResolution` cap ([#1602](https://github.com/videojs/v10/pull/1602), [#1654](https://github.com/videojs/v10/pull/1654)). -### πŸ“š Documentation -- *(spf)* Seed feature registry, clusters reference, and document-feature skill ([#1581](https://github.com/videojs/v10/pull/1581)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(spf)* Track switching design ([#1631](https://github.com/videojs/v10/pull/1631)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(site)* Add "No Skin" option to installation skin picker ([#1525](https://github.com/videojs/v10/pull/1525)) by [@ronald-urbina](https://github.com/ronald-urbina) -- *(react)* Clarify usePlayer typed vs untyped store access ([#1663](https://github.com/videojs/v10/pull/1663)) by [@Jerricho93](https://github.com/Jerricho93) -- *(site)* Document self-hosted and offline player builds ([#1680](https://github.com/videojs/v10/pull/1680)) by [@R-Delfino95](https://github.com/R-Delfino95) -- *(site)* Add Google Cast documentation ([#1681](https://github.com/videojs/v10/pull/1681)) by [@Jerricho93](https://github.com/Jerricho93) -- *(site)* Backfill and prose-ify beta changelogs ([#1794](https://github.com/videojs/v10/pull/1794)) by [@decepulis](https://github.com/decepulis) -- *(site)* Add menu reference ([#1673](https://github.com/videojs/v10/pull/1673)) by [@sampotts](https://github.com/sampotts) +Player polish continues: scrubber previews show timestamps ([#1652](https://github.com/videojs/v10/pull/1652)), the time display toggles between elapsed and remaining ([#1669](https://github.com/videojs/v10/pull/1669)), the time slider supports `pauseOnDrag` ([#1596](https://github.com/videojs/v10/pull/1596)), fullscreen can lock orientation ([#1656](https://github.com/videojs/v10/pull/1656)), popovers respect a positioning boundary ([#1627](https://github.com/videojs/v10/pull/1627)), tooltips pair labels with shortcut hints ([#1494](https://github.com/videojs/v10/pull/1494)), and posters support a blur-up placeholder ([#1632](https://github.com/videojs/v10/pull/1632)). -### ⚑ Performance -- *(site)* Migrate markdown pipeline to SΓ€tteri ([#1733](https://github.com/videojs/v10/pull/1733)) by [@decepulis](https://github.com/decepulis) +Among the fixes: `serializeAttributes` escapes HTML special characters, closing an XSS vector ([#1670](https://github.com/videojs/v10/pull/1670)); mobile controls no longer flash on the first tap after auto-hide ([#1556](https://github.com/videojs/v10/pull/1556)); React recovers from destroyed stores under `` ([#1587](https://github.com/videojs/v10/pull/1587)) and memoizes the Provider context value ([#1787](https://github.com/videojs/v10/pull/1787)); and dash.js is upgraded to 5.2.0 ([#1724](https://github.com/videojs/v10/pull/1724)). The docs site adds this changelog section ([#1793](https://github.com/videojs/v10/pull/1793)), API reference pages for the media elements ([#1342](https://github.com/videojs/v10/pull/1342)), a menu reference ([#1673](https://github.com/videojs/v10/pull/1673)), and guides for Google Cast and self-hosted builds ([#1681](https://github.com/videojs/v10/pull/1681), [#1680](https://github.com/videojs/v10/pull/1680)). -### βš™οΈ Miscellaneous Tasks -- *(build)* Quiet tsdown size reports in local dev ([#1569](https://github.com/videojs/v10/pull/1569)) by [@sampotts](https://github.com/sampotts) -- Add playwright MCP server to project config ([#1625](https://github.com/videojs/v10/pull/1625)) by [@cjpillsbury](https://github.com/cjpillsbury) -- *(root)* Rename agents alias to .agents ([#1649](https://github.com/videojs/v10/pull/1649)) by [@luwes](https://github.com/luwes) -- *(ci)* Drop edited trigger from issue triage ([#1700](https://github.com/videojs/v10/pull/1700)) by [@decepulis](https://github.com/decepulis) -- *(site)* Upgrade to Astro 7 and consolidate on Vite 8 ([#1721](https://github.com/videojs/v10/pull/1721)) by [@decepulis](https://github.com/decepulis) - -### ◀️ Revert -- *(core)* Unmerge i18n stack base ([#1707](https://github.com/videojs/v10/pull/1707)) by [@sampotts](https://github.com/sampotts) - -### New Contributors -* @Jerricho93 made their first contribution in [#1670](https://github.com/videojs/v10/pull/1670) +Thanks to [@Jerricho93](https://github.com/Jerricho93) for their first contribution to Video.js.