v2.24.0
- The
uncompressedSizeoption ofZipWriter#add()is now read for aReadableStreamor any reader without asize, as the size the stream is expected to have: the entry is then laid out like one read from a reader of that size, i.e. without Zip64 structures below 4 GB and, withbufferedWrite, without a data descriptor. The sizes written remain the measured ones. The option is validated on every path and throws the newERR_INVALID_UNCOMPRESSED_SIZE_OPTIONerror when it is not a non-negative integer
- Skip the data descriptor by default when the local header can carry the CRC-32 and the sizes: a
passThroughentry read from a reader of known size withcrc32provided (or AES-encrypted, which stores no CRC-32), which also keeps the direct write path instead of a temporary stream, and a reader of unknown size written withbufferedWriteordataDescriptor: false. ZipCrypto entries, entries copied with theentryoption and explicitdataDescriptor: truekeep their descriptor - Split the Node.js and Deno CI job into three lanes
- State that the
duplicatespolicy of the filesystem imports applies to the entries kept by thefilteroption only
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.23.0...v2.24.0
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Release 2026-10-16
-
#10616: Render AsyncAPI operation replies with expandable message schemas, channel links, static addresses, and dynamic reply address expressions.
-
#10600: Display AsyncAPI application, server, operation, and message tags, including trait tags, and filter navigation by tags while preserving channel grouping.
-
#10604: Display AsyncAPI server, channel, operation, and message binding details, including versions, referenced bindings, and unfamiliar fields.
-
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
-
#10597: Render AsyncAPI string discriminators with inherited schema variants and effective discriminator values.
-
#10530: Render AsyncAPI external documentation on servers, channels, operations, messages, tags, and schemas, with referenced objects and descriptions, using the existing OpenAPI link presentation.
Keep AsyncAPI messages searchable when navigation renders them beneath operations.
-
#10599: Preserve recursive schemas when generating request bodies, code samples, and response examples instead of replacing recursion points with null or empty arrays.
-
#10608: Keep shared component styles from overriding host page body backgrounds and margins, including hosts using CSS layers. Keep full-page body styling in the standalone bundles.
-
#10594: Update AI SDK dependencies to address GHSA-866g-f22w-33x8 in response body handling.
-
#10365: Preserve document-backed API key name edits for export, allow clearing configured names, and release configured overrides when their default name is restored.
-
#10628: Add developer-tools controls for parameter and schema expansion, model names, required properties, and schema property ordering. Preserve explicit toggle overrides of supplied configuration.
-
#10588: Ignore sibling properties on AsyncAPI Reference Objects when rendering content, navigation, search, and schemas.
-
#10587: Display AsyncAPI channel parameter locations alongside their descriptions, examples, and constraints.
-
#10595: Display AsyncAPI channel summaries and addresses separately, and label missing or null addresses as unknown in channel content and search results.
-
#10603: Display AsyncAPI message content types, inherit document defaults, and format examples for their effective media type.
-
#10615: Render AsyncAPI Avro, Protobuf, and other schema formats as labeled, copyable source instead of dropping them or treating them as JSON Schema.
-
#10617: Index response schema fields on operations and webhook request/response fields. Search nested objects, arrays, compositions, and resolved references with bounded, cycle-safe traversal while keeping field names ranked above descriptive prose.
-
#10614: Clean up API reference lint warnings while preserving existing behavior.
-
#10586: Add AsyncAPI Markdown conversion with reusable renderers and individual reference pages. Share Markdown description parsing between the OpenAPI and AsyncAPI converters.
Include shared model links, contents navigation, tag pages, generated examples, and an interactive playground.
Preserve discriminators and linked schema descriptions, generate examples from primitive aliases, and compact property annotations.
Include full-export tag documentation, preserve XML schema examples, and normalize annotated primitive aliases.
Infer enum and const type labels and honor primitive-link settings in generated model examples.
Preserve AsyncAPI application and schema metadata, explain security alternatives, and render reply and unknown-address semantics accurately.
-
#10552: Search combobox options asynchronously: bind the search text with
v-model:query, skip client-side filtering with afilterFnthat returns the options as given, show a spinner or error mark in the search field withloader, and add content to the end of the search field with thesearch-endslot. -
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
- #10636: Make the discrete sidebar group toggle button 24px so it meets the WCAG 2.5.8 minimum target size.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10621: Close more of the highlighting gap with TextMate grammars, without slowing anything outside Markdown.
- Markdown fenced code blocks are highlighted with the language they name (
```ts,~~~sh, any registered language or alias). Fences that name no registered language, and fences of four or more backticks, stay plain strings. embed.languagecan beREMEMBERED, which embeds whatever language the rule that entered the state remembered. Markdown fences use it.- SQL scopes common T-SQL and PL/SQL keywords and types (
DECLARE,PRINT,GO,EXEC,RETURN,VARCHAR2,NUMBER, …). - JavaScript and TypeScript scope the name a
const,letorvardeclares, read a regex after a control condition (if (ok) /re/.test(s)), and colour a tagged template's tag (gql`…`) as a call. - Shell scopes unquoted arguments as strings, as TextMate grammars do.
TypeScript const assertions keep the following statement highlighted as code instead of consuming its keyword as a declared name.
- Markdown fenced code blocks are highlighted with the language they name (
-
#10622: feat: highlight more embedded languages and keyword-named keys
- Markdown: front matter is highlighted as YAML, and HTML that starts a line as HTML. A
<script>,<pre>or<style>block runs to its closing tag. The last line of front matter is no longer read as a heading. - HTTP: a body that starts with
<is highlighted as XML/HTML. - PHP:
<script>and<style>bodies in templates are highlighted as JavaScript and CSS, and a<?= ?>region inside them keeps the surrounding JavaScript or CSS state, so"<?= $name ?>"stays one string. - Engine: an
embedcan declareholes, regions of the body the host grammar tokenizes while the embedded language reads across them. - CSS: the condition of
@media,@supports,@containerand@importgets keywords, features, numbers and values. - JavaScript/TypeScript: a keyword used as an object key (
{ type: 'object' },{ default: 1 }) reads as a property,static of()andget(key)read as method names, and#privatefields are scoped.
Preserve source text when hole patterns contain capture groups, and keep PHP strings and comments from prematurely closing script or style bodies.
- Markdown: front matter is highlighted as YAML, and HTML that starts a line as HTML. A
-
#10612: Fix the highlighting breakages a comparison against Shiki and
@scalar/code-highlightfound, and add Julia.- PHP snippets without
<?php(every Guzzle, Laravel and curl sample snippetz generates) are read as code instead of rendering as plain text. Heredocs close only on their own marker. - Julia has a grammar, so
julia/httpcode samples are highlighted. - Shell:
'\'', the way snippetz writes an apostrophe inside a single-quoted curl body, no longer flips strings and code for the rest of the sample. Heredocs close only on their terminator, and a quoted marker (<<'EOF') turns expansion off. - YAML block scalars end where their indentation does, so prose such as
Note: …inside adescription: |stays a string.#starts a comment only after whitespace, commas stay inside plain scalars, and flow collections ({a: 1, b: [x, y]}) get their own state. - HTML, XML, SVG and Vue highlight
<script>and<style>bodies with the JavaScript and CSS grammars when those are registered.<?xml …?>is scoped as metadata instead of a comment, and unquoted attribute values as strings. - C# raw strings close only on the run of quotes that opened them, so
""""…""""can hold""". Rust raw strings close on their own#run, and block comments nest. R raw strings and OCaml quoted strings close on their own delimiter, and OCaml no longer ends a comment at"*)". - CSS reads an unquoted
url(https://…)as a string instead of starting a//comment. - A lone
\r, U+2028 or U+2029 inside a string no longer ends it early in any grammar. - Unterminated
/*,<!--and quotes, and runs of blank lines in JavaScript, no longer cost quadratic time. - JavaScript, TypeScript and JSX: JSX children are read as text, so an apostrophe in
<p>Don't</p>no longer opens a string to the end of the line. An element opens only where an expression can start, and TypeScript generics (<T>(x: T) => x,<T extends X>) and<string>assertions are not read as tags. A function assigned to a name (const App = () => …) is scoped as a function, and a capitalised name followed by a call (function App(),Error('x'),new Date()) is a call rather than a type. - Shell command names (
curl,grep,./build.sh) are scoped, except on a line that continues the one before it. - YAML plain scalars that wrap onto the next line keep their string color.
- Markdown fences close only on a run at least as long as the opener, and HTML comments are scoped.
@scalar/highlight/compatmasks credentials on the token stream: a secret the tokenizer splits (sk_live.abc123unquoted) is masked, one containing&or<is masked, and a credential that reads like markup (span,class) no longer corrupts the HTML.
Grammars gain two features.
rememberlets a rule that enters a state remember a capture group, which that state matches again withREMEMBERED({{remembered}}) — the cross-state stand-in for a backreference.embedhands a state's body to another registered language until a closing pattern.Preserve multiline credential masking, including when line numbers are enabled. Keep defaulted TypeScript generics in code mode, and only embed JavaScript or CSS for complete
scriptandstyletag names so custom elements retain HTML highlighting. - PHP snippets without
- #10618: Add an opt-in
preserveReferencepredicate to bundling, retaining selected authored references without loading their targets while preserving schema identities on relocation.
-
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
- #10650: Allow the Mermaid plugin to be published to npm by removing the private package flag.
- #10571: Enforce AsyncAPI WebSocket/SSE security per server and operation, accept case-insensitive HTTP authentication schemes, add Digest credential-shape checks and verified mutual TLS, and report unsupported broker schemes.
- #10572: Add a development OpenID Connect code-flow provider with signed ID tokens, JWKS, PKCE, token expiry and refresh rotation, and scoped UserInfo.
-
#10605: Reject non-HTTP OAuth callback URLs and escape callback links in the mock authorization page.
-
#10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10560: Register OAuth authorization, token, and refresh endpoints for AsyncAPI mock servers and point the Galaxy AsyncAPI example at its existing token endpoint for refresh requests.
Support OpenID Connect discovery and token routes in AsyncAPI mocks, return discovery endpoints on the mock origin, and accept form-encoded token exchanges and refresh requests.
-
#10586: Add AsyncAPI Markdown conversion with reusable renderers and individual reference pages. Share Markdown description parsing between the OpenAPI and AsyncAPI converters.
Include shared model links, contents navigation, tag pages, generated examples, and an interactive playground.
Preserve discriminators and linked schema descriptions, generate examples from primitive aliases, and compact property annotations.
Include full-export tag documentation, preserve XML schema examples, and normalize annotated primitive aliases.
Infer enum and const type labels and honor primitive-link settings in generated model examples.
Preserve AsyncAPI application and schema metadata, explain security alternatives, and render reply and unknown-address semantics accurately.
- #10606: Block private-network document requests by default and require an explicit basePath for local files. Apply the same permissions to external references, with an opt-in for trusted private-network inputs.
- #10598: Preserve OpenAPI 3.2 tag ancestry in Markdown exports with parent-first breadcrumb headings.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
- #10597: Render AsyncAPI string discriminators with inherited schema variants and effective discriminator values.
-
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
- #10597: Render AsyncAPI string discriminators with inherited schema variants and effective discriminator values.
- #10628: Add developer-tools controls for parameter and schema expansion, model names, required properties, and schema property ordering. Preserve explicit toggle overrides of supplied configuration.
- #10640: Translate the built-in descriptions of integer and string formats (
int32,date-time,binaryand others) into the configured locale. - #10595: Display AsyncAPI channel summaries and addresses separately, and label missing or null addresses as unknown in channel content and search results.
- #10629: Document AsyncAPI support in the Hono integration and use format-neutral types and JSDoc for Scalar.serve().
- #10594: Update AI SDK dependencies to address GHSA-866g-f22w-33x8 in response body handling.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
- #10608: Keep shared component styles from overriding host page body backgrounds and margins, including hosts using CSS layers. Keep full-page body styling in the standalone bundles.
- #10365: Preserve document-backed API key name edits for export, allow clearing configured names, and release configured overrides when their default name is restored.
- #10626: Restrict OAuth authorization and desktop external links to HTTPS or HTTP for local development URLs before opening them.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10597: Render AsyncAPI string discriminators with inherited schema variants and effective discriminator values.
-
#10530: Render AsyncAPI external documentation on servers, channels, operations, messages, tags, and schemas, with referenced objects and descriptions, using the existing OpenAPI link presentation.
Keep AsyncAPI messages searchable when navigation renders them beneath operations.
-
#10599: Preserve recursive schemas when generating request bodies, code samples, and response examples instead of replacing recursion points with null or empty arrays.
-
#10640: Translate the built-in descriptions of integer and string formats (
int32,date-time,binaryand others) into the configured locale. -
#10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10560: Register OAuth authorization, token, and refresh endpoints for AsyncAPI mock servers and point the Galaxy AsyncAPI example at its existing token endpoint for refresh requests.
Support OpenID Connect discovery and token routes in AsyncAPI mocks, return discovery endpoints on the mock origin, and accept form-encoded token exchanges and refresh requests.
-
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
-
#10626: Restrict OAuth authorization and desktop external links to HTTPS or HTTP for local development URLs before opening them.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10613: The 3.0 to 3.1 upgrade no longer skips the
defaultentry of a Responses Object, which it mistook for thedefaultkeyword, so schemas in a default response are upgraded too. -
#10613: Upgrade a
oneOf/anyOfarm that only saysnullable: true(optionally with annotations, includingdefault) to{ type: 'null' }, sooneOf: [{ nullable: true }, { $ref: X }]becomes "X or null" in OpenAPI 3.1 instead of an arm that accepts any value.Preserve nested extension payloads when upgrading nullable-only union arms.
- #10608: Keep shared component styles from overriding host page body backgrounds and margins, including hosts using CSS layers. Keep full-page body styling in the standalone bundles.
- #10610: Apply base theme tokens and preset defaults inside shadow roots.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10530: Render AsyncAPI external documentation on servers, channels, operations, messages, tags, and schemas, with referenced objects and descriptions, using the existing OpenAPI link presentation.
Keep AsyncAPI messages searchable when navigation renders them beneath operations.
-
#10599: Preserve recursive schemas when generating request bodies, code samples, and response examples instead of replacing recursion points with null or empty arrays.
-
#10607: Block private-network document requests by default and require an explicit documentLoading.basePath for local files. Apply the same permissions to external references, with an opt-in for trusted private-network inputs.
-
#10365: Preserve document-backed API key name edits for export, allow clearing configured names, and release configured overrides when their default name is restored.
-
#10588: Ignore sibling properties on AsyncAPI Reference Objects when rendering content, navigation, search, and schemas.
-
#10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
-
#10638: Give the untagged webhooks sidebar section the id
{document}/webhooksinstead of{document}/webhook/undefined/.
- #10626: Restrict OAuth authorization and desktop external links to HTTPS or HTTP for local development URLs before opening them.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
- @scalar/api-reference@1.75.0
- @scalar/api-reference@1.75.0
- @scalar/api-reference@1.75.0
- @scalar/api-reference@1.75.0
- @scalar/api-reference@1.75.0
- @scalar/api-reference@1.75.0
- @scalar/api-reference@1.75.0
shadcn@4.22.0
- #12298
954ce95Thanks @shadcn! - Upgrade to Zod 4.shadcn/schemaand@shadcn/registry/schemanow export Zod 4 schemas, so passing them to Zod 3'szno longer typechecks. On Zod 3, use the exported types (RegistryItem,RegistryItemFile,Config) and the schema's own methods (registryItemSchema.array()) instead ofz.inferandz.array. Zod errors exposeissues, noterrors. Validation messages now use Zod 4's wording.
- Updated dependencies [
954ce95]:- @shadcn/registry@0.2.0
@shadcn/registry@0.2.0
- #12298
954ce95Thanks @shadcn! - Upgrade to Zod 4.shadcn/schemaand@shadcn/registry/schemanow export Zod 4 schemas, so passing them to Zod 3'szno longer typechecks. On Zod 3, use the exported types (RegistryItem,RegistryItemFile,Config) and the schema's own methods (registryItemSchema.array()) instead ofz.inferandz.array. Zod errors exposeissues, noterrors. Validation messages now use Zod 4's wording.
v5.3.0
5.3.0 (2026-10-16)
- ABR: Offer every audio track and fall back to fewer channels (#10689) (eba48f4)
- Add AV1 support to the TS transmuxer (#10603) (7ca2834)
- Add Azerbaijani Locale (#10557) (59a9807)
- Add Breton UI translation (#10655) (0017af2)
- Add MKV support on experimental build (#10667) (4a13947), closes #10388
- Ads: cooldown config for interstitial ad (#10494) (2a9b0f1)
- Ads: Parse HLS and SVTA interstitials in format-specific parsers (#10725) (a2a47f7)
- Allow override subtitle font family, colors, opacities and character edge style (#10697) (c7d40cb)
- CEA: Extract CEA-608/708 captions from AV1 video (#10509) (73643dd)
- CMCD: Support MPD-signaled CMCD parameters (DASH 6th Edition) (#10590) (0b3c86e), closes #10580
- Complete IAMF support for CMAF/MP4 (#10586) (0a702a2), closes #10581
- DASH: Add subtitle support for role attribute and kind='subtitle' (#10441) (8f19ce4)
- DASH: Add support for Preselections (Next Generation Audio) (#10344) (89f1255)
- DASH: Remove DASH JSON support from the experimental build (#10705) (7c3af8b)
- DASH: Tag xlink and linked-MPD requests with advanced request types (#10596) (1630988)
- DRM: Add config.drm.keepDrmEngineOnDetach (#10530) (613da76)
- HLS: Fall back to native playback on unsupported MSE encryption (#10699) (7ded57c)
- HLS: Preload AES keys hinted by EXT-X-PRELOAD-HINT TYPE=KEY (#10715) (bff8459)
- MSF: Add AV1 support to the LOC transmuxer (#10517) (0e371e2)
- MSF: Add LOCMAF support (#10538) (e642b8b)
- MSF: Add m2ts packaging support (#10444) (4209dbb)
- MSF: Add media timeline support with DVR and seeking (#10627) (50108e9)
- MSF: Add MoQT draft-18 support and deprecate draft-14 (#10383) (adc8c1b)
- MSF: Add MoQT draft-20 and draft-21 support and deprecate draft-16 (#10598) (3b76785)
- MSF: Add MoQT draft-22 support (#10710) (20d5872)
- MSF: Add MSF_COMPRESSION support (#10663) (59c7fb7)
- MSF: Add SCTE-35 support via event timeline tracks (#10668) (13f905c)
- MSF: Join the current catalog group and add a catalog store (#10670) (2d21352)
- MSF: Join the current group at the live edge and remove subscribeFilterType (#10718) (22f1150)
- MSF: Remove MoQT draft-14 and draft-16 support (#10706) (9b7fe64)
- Queue: Add autoPlayNext config (#10503) (7b41cae)
- Runtime skip ranges + MediaTailor played-ad-break skipping (#10338) (8c54db3)
- TTML: Improve IMSC conformance of timing, regions and styling (#10729) (8996205)
- UI: Add 'RESET' translation to Azerbaijani locale (#10707) (c353a83)
- UI: Add a reset button to the subtitle style menu (#10692) (6d2475d)
- UI: Add missing translations (#10690) (2d7d37d)
- UI: Add nested menu groups and subtitle settings submenus (#10681) (4a816ea)
- UI: Add seek backward and forward buttons (#10662) (225281c)
- UI: Add subtitle font family, color, opacity and character edge style menus (#10711) (6c5d2f1)
- UI: Add UI setting playbackRateSliderStep (#10516) (55152b0)
- UI: Deprecate showMenusOnTheRight config (#10708) (cb35995)
- UI: Let keyboard controls take over an in-progress seek bar drag (#10478) (eae4846), closes #10456
- UI: Show centered tooltips on big buttons (#10644) (2e795b5), closes #10632
- unify SCTE-35 handling across DASH, HLS and EMSG (#10606) (9ac5c92)
- ABR: Keep the whole ladder when each quality uses its own audio group (#10672) (d1af43d)
- Add support for embedded closed captions and improve timestamp rollover handling in HLS and VTT parsers (#10425) (a918c3d)
- Ads: Do not report a resume for an ad's first playout (#10566) (3a7430c), closes #10562
- Ads: Don't drop SVTA signaling of preloaded assets (#10520) (7b695f1)
- Ads: Don't enable the skip button before the ad's own media loads (#10447) (306ab8f), closes #10418
- Ads: Report an ad that reaches its playout limit as complete (#10521) (ec1704c)
- Ads: Report the last ad of a pod as complete (#10546) (a61ca44), closes #10545
- Ads: Report the last ad of a pod as complete when using SVTA tracking (#10576) (c556caa), closes #10545
- Ads: Restrict click-through URIs to http(s) schemes (#10412) (8681f03)
- Ads: Send ad tracking events via GET (#10469) (a38ec9b)
- Apple: Resume at the playhead after a quality switch on Safari (#10643) (39ac0d5), closes #10504
- Apply the negative timestampOffset workaround only on legacy Edge (#10591) (7986cf8)
- Avoid quadratic copying of prefetched segment data (#10448) (ef14147), closes #10446
- Avoid re-downloading init segments on unbuffered seek (#10428) (10eb756), closes #10373
- CEA: Honor CEA-708 caption pen opacity (#10621) (8a2d78f), closes #10620
- CEA: Keep the caption continuity timeline for split muxed content (#10734) (3c9ade6)
- Clear prefetch cache for init segments and aborted requests (#10587) (98701c3), closes #10569
- CMCD: Re-arm the reporter on every load() (#10416) (d71d28f)
- DASH: Fix stall when a fixed-duration segment lookup rounds to the next segment (#10717) (f79a712)
- DASH: Get the key ID from the init segment when the manifest has none (#10552) (ab8c5e2), closes #10390
- DASH: Keep captions working when a Period's timeline ends early (#10649) (3adc31f)
- DASH: Live to VOD transition with multi period start not at 0 (#10480) (3c78ece)
- DASH: Prevent freezes when live Period IDs reappear (#10641) (c604fd0)
- Demo: Avoid requesting missing UI locales repeatedly (#10610) (5004a96)
- Demo: Persist array config values in the URL hash (#10539) (05b74e0)
- device: Ban changeType on Opera for macOS (#10514) (204b978)
- Do not append empty buffers to the SourceBuffer (#10733) (0570ce5)
- Dolby Vision: Enable Dolby Vision p8 workaround on encrypted content (#10423) (8c163a8)
- Don't fall back to another role when the preferred text role is unmatched (#10549) (279fcb8), closes #9993
- Don't re-encode existing query parameters when appending new ones (#10415) (dc110e5)
- DRM: Don't let a manifest ClearKey license URL override drm.servers (#10659) (c11e76a), closes #10656
- DRM: Ignore session creation during teardown (#10614) (bf7ea8d)
- drm: prevent corrupted cbcs clearkey playback (#10695) (1b24fa2)
- enforce paused state when seeking from ended state (#10579) (b8915ee), closes #10410
- Fix duplicate error code 4058 (#10372) (eb94e6f)
- Fix stuck playback on multiplexed TS content (#10431) (3011e6e)
- Gate the media pipeline flush behind a device flag (#10607) (174878c)
- HLS: Add missing AV2 video codec detection (#10594) (4375553)
- HLS: Allow unbuffered seeks after a live broadcast ends (#10609) (4bc94ec), closes #10593
- HLS: Avoid a needless abort() on every append in segments mode (#10559) (aba5ba5)
- HLS: Avoid TypeError when a media playlist fails during load() (#10560) (3b098a0)
- HLS: Detect audio-only raw content when CODECS is missing (#10399) (49fa88b)
- HLS: Detect packed audio served with a container extension (#10622) (7dbfca6)
- HLS: Fix audio/video desync in muxed TS segments mode (#10406) (4650e30), closes #10341
- HLS: Fix switching from muxed audio to a separate TS audio rendition (#10661) (9b9519c)
- HLS: Play packed audio that is published with a .ts extension (#10657) (39445d7), closes #10654
- HLS: Support legacy X-CUE for interstitials (#10558) (d2125b9)
- HLS: synchronize HTML5 audio track selection in src= mode (fixes #10551) (#10568) (773eb27)
- Keep captions working when periods disagree on caption vs subtitle (#10600) (a2814ef), closes #10599
- Keep crossing the boundary when the playhead overshoots it (#10676) (9babbcd)
- Keep the configured crossBoundaryStrategy across loads (#10660) (91ca4db), closes #10647
- Keep the XML node for SCTE-35 emsg messages without Binary (#10666) (43940dc)
- Mp4Parser: Don't hang on a 64-bit largesize of 0 (#10548) (64ff65f), closes #10542
- MSF: Correct LOC object property parsing (#10488) (fbbc8f1)
- MSF: Do not tear down a track that was re-subscribed (#10497) (dd77791)
- MSF: Don't call BigInt() at load time in LOCParser (#10531) (562a87c)
- MSF: Fix draft-16 negotiation and skip empty catalog objects (#10367) (25b244e)
- MSF: Fix hanging draft-18 subscriptions and LOC property decoding (#10508) (7e08506)
- MSF: Fix LOC appends and live timeline sizing (#10495) (9b624c4)
- MSF: Fix moqlivemock playback with tuple namespaces (#10665) (ca1929a)
- MSF: Fix stale decoder config and unread accessibility descriptors (#10498) (55e6257)
- MSF: Fix stream teardown and catalog logging on older browsers (#10630) (71ce3ca)
- MSF: Negotiate the MoQT draft when the server does not echo it (#10519) (8ec47fd)
- MSF: Report bandwidth per group so ABR can pick higher qualities (#10371) (8336642)
- MSF: Report the end of a MoQT session instead of a catalog timeout (#10564) (e39610c)
- MSF: Stop appending to and subscribing to closed tracks (#10601) (4e1c32d)
- net: Abort pending retry delays immediately (#10443) (f5171df), closes #10413
- net: Avoid dropping low-latency segments when a retried request succeeds (#10646) (bb7b7fc)
- net: isolate headers across retry attempts (#10361) (f8297f5)
- Normalize Opus codec when multiplexed (#10464) (0b92535)
- offline: Avoid DRM license removal failure (#10510) (83d6d6d)
- offline: Avoid orphaned DRM sessions on removal failure (#10511) (ce9b5a1)
- offline: Close the database when another connection needs it (#10435) (872a168)
- offline: Don't leak an IndexedDB connection (#10434) (96dff25)
- Only mark MSE append errors recoverable when the stream is disabled (#10409) (f9c6fcd)
- Parse closed captions after transmuxing (#10499) (bfdff64)
- Preload: Prefetch the segment that contains the start time (#10702) (edb8e0f), closes #10701
- presentation timeline enforce segment availability live (#10617) (9564963)
- Prevent destroy() from hanging when playback is wedged (#10624) (a413ce1), closes #10623
- Prevent infinite loop on zero-length WVTT payload box (#10565) (e25a49c), closes #10561
- Prevent long buffering on seeks after period transitions (#10484) (4873333)
- Prevent run-ahead throttling from starving frame-sized segments (#10496) (3c4d16b)
- Prevent screen.orientation methods from being garbage collected on Safari (#10364) (a56b17a)
- Reduce unnecessary error calls (#10501) (5f6d8a6)
- Release XHR handlers once the request is done (#10506) (d02a0e9)
- Reset media source before switching variant on MSE append failure (#10380) (e013447)
- Restore correct playhead position after MediaSource reload (#10335) (33a5f25)
- security: prevent glob expansion in shaka-bot comment command parser (#10281) (a80b3f1)
- test: Skip Widevine tests on Edge with a revoked device certificate (#10449) (9f6a484), closes #10442
- Transmux: Add device registration to the web worker (#10348) (6821c15)
- Transmuxer: Fix infinite loop and dropped frames in MPEG audio (#10529) (f20d807)
- Transmux: Fall back to main thread on worker transmux timeout (#10349) (2586e14)
- Transmux: Fall back to main thread when the transmux worker fails (#10370) (1d28ee2)
- Transmux: Keep codec probing working when a transmuxer plugin throws (#10735) (19ac5a5)
- Transmux: Support audio-only MPEG-TS renditions labeled 'labeled 'audio/mp2t' (#10473) (8751e9d)
- Try every preferredText entry when choosing the text track (#10547) (38d4f4c), closes #10544
- TS: Fix slice_type parsing in multi-slice H.264 frames (#10477) (10e4dd7), closes #10468
- TTML: Clip each sample of a multi-sample stpp segment to its own time (#10602) (0f442f1), closes #10597
- TTML: Support namespace-qualified elements (#10713) (3ed0089)
- UI: Align seek bar chapter markers with the playhead thumb (#10229) (059deee)
- UI: Center the seek bar time on the pointer when there are no thumbnails (#10457) (a6c2574), closes #10452
- UI: Don't drop keyboard focus when the controls hide (#10518) (adee4a6)
- UI: Fix context menu and rate slider touch behavior on mobile (#10365) (41fea2e), closes #10363
- UI: Fix thumbnail preview not scaling with player size (#10333) (aafb1e2)
- UI: Hide the controls after a swipe that starts on a control panel (#10664) (2fa7e42), closes #9892
- UI: Include end boundary when matching last chapter (#10475) (86496a3)
- UI: isolate keyboard shortcuts and fullscreen detection per player instance (#10436) (9a4e146), closes #10429
- UI: Keep keyboard shortcuts working after mouse interactions (#10629) (a902d70)
- UI: Keep seek bar previews inside player bounds (#10714) (18f4769), closes #10709
- UI: Preserve keyboard focus across menus and Document PiP (#10608) (0fa37bf), closes #10583
- UI: Prevent playback rate menu from being cut off on narrow screens (#10343) (d566247)
- UI: Prevent playback rate menu jitter when dragging the slider (#10458) (cfb31c4)
- UI: Preview time/thumbnails when seeking with keys (#10465) (86ef054)
- UI: Render WebVTT regions as the spec describes (#10679) (042b986)
- UI: Scope form element font inheritance to the player container (#10353) (6c358dc)
- UI: Unify playback rate decimal separators (#10693) (77fc1e5)
- WebVTT: Keep percentage font sizes relative to the subtitle size (#10727) (6faf929), closes #10726
- WebVTT: Parse every fragment of a multi-fragment MP4 segment (#10642) (a8cded8)
- WebVTT: Parse REGION blocks and WebVTT-in-MP4 regions (#10677) (c182784), closes #2583
- WebVTT: Render WebVTT regions with the native text displayer (#10678) (74a38d2)
- WebVTT: Show subtitles in fMP4 HLS streams with absolute cue times (#10688) (86fc939)
v2.3.1
See CHANGELOG.md for details.
Release 2026-10-16 12:11
Release 2026-10-16 12:11
- angular: migration schematic no longer aborts on file subpath imports (#12033) (46da583fa) by @imaksp
- angular: migration improvements (#12027) (1a2f6b38d) by @benjavicente
- @tanstack/angular-query@5.0.0-rc.4
- @tanstack/angular-query-devtools@5.0.0-rc.4
- @tanstack/angular-query-persist-client@5.0.0-rc.4
Release 2026-10-16 12:11
Release 2026-10-16 12:11
- angular: migration schematic no longer aborts on file subpath imports (#12033) (46da583fa) by @imaksp
- angular: migration improvements (#12027) (1a2f6b38d) by @benjavicente
- @tanstack/angular-query@5.0.0-rc.4
- @tanstack/angular-query-devtools@5.0.0-rc.4
- @tanstack/angular-query-persist-client@5.0.0-rc.4
@tanstack/angular-query@5.0.0-rc.4
-
#12033
46da583- Fix themigrate-from-experimentalschematic aborting withPath "…" is a file.when a project source imports a package subpath that names a file, such as@noble/hashes/sha3.js. -
#12027
1a2f6b3- Improve Angular migration and typing:- Replace experimental npm aliases for query and devtools packages and preserve exact dependency pins, including opted-in query-core migrations.
- Discover application and test sources across Angular, Nx, manually configured runners, and standalone libraries, including project references. Respect explicit test configurations and TypeScript exclusions after merging project declarations.
- Fix status-helper calls on heterogeneous
injectQueriesresults while preserving signal typing and status-based narrowing. Keep optional initial data undefined-capable. - Document gradual migration, shared ngneat clients, import restrictions, and asynchronous testing patterns. Run Zone.js regression tests alongside zoneless library tests by default.