v16.4.0-canary.53
- [create-next-app] Enable Cache Components by default in create-next-app: #99436
- Include async module evaluation in client loading metrics: #99427
- turbo-tasks-backend: fix leaf distance tracing compilation: #99443
- Enable proxy export tests in deploy mode: #99400
- docs: record API stabilization across Next.js 16 releases: #99420
- test: migrate and explain custom server deploy exclusions: #98994
- test: migrate and explain root-inference deploy exclusions: #99012
- Enable build diagnostic suites in deploy mode: #99402
- test(turbopack): remove filesystem fuzzer unit tests: #99089
- [turbopack] Support webpack loader build dependency requests: #99071
- [turbopack] Track webpack loader build dependency directories: #98838
- [ci] Wire preview builds variables consistently: #99323
- [ci] Enable PR comment in any repo: #99315
- Fix bundle analyzer route selector: #98702
- bundle-analyzer: use Rust React compiler: #98695
- Link bundle analyzer empty states to source mode: #98542
- Consolidate HTML render completion cleanup: #99426
- Scope client component loading metrics to HTML renders: #99322
- fix: preserve HTTP status codes during prerendering: #99078
- test: enable deploy coverage for five verified suites: #99193
- Document agent feedback field limits: #99415
- test: migrate tooling deploy exclusions to force gates: #98156
- Turbopack: Don't force non-recursive watcher for additional roots: #99396
Huge thanks to @kassens, @gnoff, @jimmyhmiller, @jamiboym, @aurorascharff, @sokra, @eps1lon, @wbinnssmith, and @bgw for helping!
electron v42.11.9
- Fixed
clipboard.read(),readText()andhas()resolving seconds late on Linux while the app was idle. #54310 (Also in 43, 44, 45) - Fixed
fs.rmSyncfailing to remove read-only files on Windows. #54257 (Also in 43, 44, 45) - Fixed
pointerLockpermission requests from some iframes reporting the parent frame. #54466 (Also in 43, 44, 45) - Fixed
utilityProcessdroppingstdout/stderroutput that the child wrote immediately before exiting. #54332 (Also in 43, 44, 45) - Fixed WebAssembly exception handlers failing to catch, or crashing during tier-up, in modules using wasm exceptions. #54236
- Fixed WebAssembly modules loaded from the code cache crashing or throwing
RuntimeError: unreachableafter updating between certain patch releases. #54239 (Also in 43, 44, 45)
electron v43.7.6
- Fixed
--xdg-portal-required-versionhaving no effect and a spurious portal warning being logged for file dialogs on Linux. #54304 (Also in 44, 45) - Fixed a child
WebContentsViewlosing focus when its window is reactivated. #54456 (Also in 44, 45) - Fixed a crash when a WebAuthn request used a security key that required its PIN. #54404 (Also in 45)
- Fixed a crash when sending a DevTools protocol command with a non-string value for an optional string parameter via
webContents.debugger. #54443 (Also in 44, 45) - Fixed a grey border around frameless windows on Linux WMs without compositing. #54390 (Also in 44, 45)
- Fixed a main process crash when a native API method was called with a
thisvalue of a different native type; it now throws aTypeError. #54316 (Also in 44) - Fixed a possible crash during process exit when
vm.Scriptorvmcontexts created in the main process had been garbage collected shortly before quitting. #54268 (Also in 44, 45) - Fixed a possible renderer crash in 32-bit Windows and Linux ARM builds caused by under-aligned Blink heap vector allocations. #54259
- Fixed a renderer crash calling
image.toPNG()from a sandboxed preload script. #54503 (Also in 44, 45) - Fixed
clipboard.read(),readText()andhas()resolving seconds late on Linux while the app was idle. #54309 (Also in 42, 44, 45) - Fixed
desktopCapturer.getSources()leaving non-resizable windows resizable on macOS. #54396 (Also in 44, 45) - Fixed
fs.rmSyncfailing to remove read-only files on Windows. #54256 (Also in 42, 44, 45) - Fixed
GDK_BACKENDleaking into processes spawned by Electron apps on Linux. #54426 (Also in 44, 45) - Fixed
pointerLockpermission requests from some iframes reporting the parent frame. #54465 (Also in 42, 44, 45) - Fixed
setIgnoreMouseEvents()taking effect late on X11. #54498 (Also in 44, 45) - Fixed
setIgnoreMouseEvents(true)being undone by the next resize on X11. #54423 (Also in 44, 45)- Added
setIgnoreMouseEventssupport on Wayland.
- Added
- Fixed the default action label on Linux notifications not being localized. #54400 (Also in 44, 45)
- Fixed the GPU process crash-looping on Windows when the sandbox cannot read the install folder; the folder is now reported instead. #54485 (Also in 44, 45)
- Fixed the zoom level resetting on
file:and other host-less pages after alocation.hashchange. #54440 (Also in 44, 45) - Fixed typing not working after closing an
alert()orconfirm()on Windows. #54462 (Also in 44, 45) - Fixed
utilityProcessdroppingstdout/stderroutput that the child wrote immediately before exiting. #54279 (Also in 42, 44, 45) - Fixed visual zoom limits resetting on navigation and not applying to webviews. #54450 (Also in 44, 45)
- Fixed WebAssembly exception handlers failing to catch, or crashing during tier-up, in modules using wasm exceptions. #54235
- Fixed WebAssembly modules loaded from the code cache crashing or throwing
RuntimeError: unreachableafter updating between certain patch releases. #54238 (Also in 42, 44, 45) - Fixed
win.setEnabled(false)and modal child windows not blocking input on Wayland. #54446 (Also in 44, 45) - Fixed zoom in/out getting stuck after zooming past the 25%-500% range. #54422 (Also in 44, 45)
- Fixed
setVisualZoomLevelLimits()shrinking pages when the minimum is under 1.
- Fixed
electron v44.5.0
- Added launch-failure reporting with
systemErrorCodeto theappchild-process-goneevent. #54231 (Also in 45)
- Changed the default trash implementation on KDE Plasma 6 to
kioclient. #54361 (Also in 45) - DevTools zoom in/out now uses the same zoom steps as Chromium. #54387 (Also in 45)
- Fixed
--xdg-portal-required-versionhaving no effect and a spurious portal warning being logged for file dialogs on Linux. #54303 (Also in 43, 45) - Fixed a child
WebContentsViewlosing focus when its window is reactivated. #54455 (Also in 43, 45) - Fixed a crash when a WebAuthn request used a security key that required its PIN. #54403 (Also in 45)
- Fixed a crash when creating a framed window on Wayland in environments where GTK could not initialize. #54420 (Also in 45)
- Fixed a crash when sending a DevTools protocol command with a non-string value for an optional string parameter via
webContents.debugger. #54445 (Also in 43, 45) - Fixed a GPU process crash on startup when another instance of the app is using the same session data directory. #54469
- Fixed a grey border around frameless windows on Linux WMs without compositing. #54391 (Also in 43, 45)
- Fixed a main process crash when a native API method was called with a
thisvalue of a different native type; it now throws aTypeError. #54315 (Also in 43) - Fixed a possible crash during process exit when
vm.Scriptorvmcontexts created in the main process had been garbage collected shortly before quitting. #54266 (Also in 43, 45) - Fixed a possible crash on Windows on ARM when
powerMonitoris torn down. #54408 (Also in 45) - Fixed a renderer crash calling
image.toPNG()from a sandboxed preload script. #54502 (Also in 43, 45) - Fixed a renderer crash when a
ResizeObserverloop-limit error handler modified layout. #54290 (Also in 45) - Fixed
accent-color-changedon Windows reporting a colour that differed fromsystemPreferences.getAccentColor(). #54409 (Also in 45) - Fixed an issue where
crashReporter.setUploadToServer()had no effect aftercrashReporter.start()was called. #54518 (Also in 45) - Fixed
app.getRecentDocuments()omitting documents with non-ASCII paths on Windows. #54407 (Also in 45) - Fixed
clipboard.read(),readText()andhas()resolving seconds late on Linux while the app was idle. #54308 (Also in 42, 43, 45) - Fixed
desktopCapturer.getSources()leaving non-resizable windows resizable on macOS. #54397 (Also in 43, 45) - Fixed
fs.rmSyncfailing to remove read-only files on Windows. #54255 (Also in 42, 43, 45) - Fixed
GDK_BACKENDleaking into processes spawned by Electron apps on Linux. #54425 (Also in 43, 45) - Fixed hidden windows continuing to render at full frame rate after
setBackgroundThrottling(false)followed bysetBackgroundThrottling(true). #54341 (Also in 45) - Fixed
pointerLockpermission requests from some iframes reporting the parent frame. #54464 (Also in 42, 43, 45) - Fixed
setContentProtection(true)having no effect in Windows remote sessions. #54500 (Also in 45) - Fixed
setIgnoreMouseEvents()taking effect late on X11. #54497 (Also in 43, 45) - Fixed
setIgnoreMouseEvents(true)being undone by the next resize on X11. #54393 (Also in 43, 45)- Added
setIgnoreMouseEventssupport on Wayland.
- Added
- Fixed
shell.showItemInFolder()on Linux for paths containing#,?or%when the file manager is reached over D-Bus. #54406 (Also in 45) - Fixed the default action label on Linux notifications not being localized. #54401 (Also in 43, 45)
- Fixed the GPU process crash-looping on Windows when the sandbox cannot read the install folder; the folder is now reported instead. #54484 (Also in 43, 45)
- Fixed the zoom level resetting on
file:and other host-less pages after alocation.hashchange. #54442 (Also in 43, 45) - Fixed typing not working after closing an
alert()orconfirm()on Windows. #54461 (Also in 43, 45) - Fixed
utilityProcessdroppingstdout/stderroutput that the child wrote immediately before exiting. #54278 (Also in 42, 43, 45) - Fixed visual zoom limits resetting on navigation and not applying to webviews. #54449 (Also in 43, 45)
- Fixed WebAssembly modules loaded from the code cache crashing or throwing
RuntimeError: unreachableafter updating between certain patch releases. #54246 (Also in 42, 43, 45) - Fixed
win.setEnabled(false)and modal child windows not blocking input on Wayland. #54447 (Also in 43, 45) - Fixed zoom in/out getting stuck after zooming past the 25%-500% range. #54421 (Also in 43, 45)
- Fixed
setVisualZoomLevelLimits()shrinking pages when the minimum is under 1.
- Fixed
- Improved the performance of APIs that return rectangles, sizes, points and display objects. #54215 (Also in 45)
- Improved the performance of
session.getUserAgent(). #54244 (Also in 45)
- Documentation changes: #54342
@quasar/app-vite-v3.10.1
- fix(app-vite): TypeScript ->
$q.bexand$q.cordovacarry theirBexBridge/Cordovatypes again in projects usingmoduleResolution: "bundler". They had silently degraded toany, since the augmentation no longer reached the Quasar globals declaration - docs(app-vite):
ssr.noPreloadTagRoutes/ssg.noPreloadTagRoutes-> the typings now state that only the route-level preload tags are left out; the modulepreload tags Vite writes into the HTML template for the app entry's own static imports stay on every route
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:
quasar-v2.34.0
- feat(ui): useElementSize() composable -> reactive
elementSize({ width, height }) of an element or component ref, with anonResizehook, a debounce window and adisabledswitch; QResizeObserver is now built on it - feat(ui): v-resize directive -> the template-side form of useElementSize(): reports an element's size without adding a node (the initial size, then only on change), debounce as the argument (
v-resize:100),oncemodifier, a handler returningfalsestops it - feat(ui): useScroll() composable -> reactive scroll position, direction, delta and inflection point of the page or of a scrollable container, with an
onScrollhook,axis, debounce anddisabled; QScrollObserver is now built on it - feat(ui): useFilePicker() composable -> opens the native file dialog from setup code without rendering a file input;
openFilePicker()resolves with the accepted files (null when dismissed) and the files get validated by the same rules as QFile (accept,maxFileSize,maxTotalSize,maxFiles,filter...) - feat(ui): useDropZone() composable and v-drop-zone directive -> turn any element or component into a drop target for files, with the QFile validation rules, a reactive
isOverDropZone(the directive sets aq-drop-zone--overclass instead) and rejected-file reporting. QFile and QUploader now handle drops through it - feat(ui): useObjectUrl() composable -> a reactive object URL for a Blob, File or MediaSource, revoked for you when the source changes and when the component is destroyed
- feat(ui): useEventListener() composable -> attaches a listener to an element, window, document or component, following reactive targets, event names and options; removed on unmount
- feat(ui): useMutation() composable -> the setup-code counterpart of v-mutation, with the latest
mutationRecordsas reactive state - feat(ui): useSoftFullscreen() composable -> the in-page fullscreen behind the
fullscreenprop of QTable, QCarousel and QEditor (back button, route-change exit, scroll restore, popups kept on top), now usable on any element or component - feat(ui): useIdle() composable ->
isIdleflips aftertimeoutms with no user activity, pluslastActiveandresetIdle(); hidden-page time counts as inactivity - feat(ui): useKeyboardShortcut() composable -> runs a handler for a "Mod+K" style shortcut (Mod is Meta on macOS, Ctrl elsewhere), matching either the layout-aware key or the physical key code; unmodified printable shortcuts stay quiet while typing in a field
- feat(ui): useWebSocket() composable -> a WebSocket connection kept alive from a component: status, last message, send queue flushed on open, auto reconnect with backoff (paused while offline), optional heartbeat, closed on unmount
- feat(ui): useEventSource() composable -> Server-Sent Events from a component: named events, last event id, and a reconnect where the browser gives up; closed on unmount
- feat(ui): useBroadcastChannel() composable -> message the other tabs, windows, iframes and workers of the same origin; closed on unmount
- feat(ui): useWebWorker() composable -> connects a component to a Web Worker script of your own (a URL, a Worker or a factory such as a Vite
?workerimport): status, last message and error,postWorkerMessage(), aterminateWorker()that frees the thread until the next message, and onCreate/onMessage/onError/onTerminate(reason) hooks - feat(ui): useWebWorkerFn() composable -> runs a function off the main thread:
runWorkerFn(...args)resolves with its result, withtimeout, Transferables, script dependencies, one hook per outcome (onSuccess/onError/onTimeout/onTerminate) and an inline run on the SSR server - feat(ui): useDebounce() and useThrottle() composables -> the debounce()/throttle() utils applied to a function, with the waiting call cancelled on deactivation and unmount;
fn.isPendingis reactive on the useDebounce() one - feat(ui): debounce() and throttle() utils -> debounce() takes
{ leading, trailing, maxWait }as its third param (a boolean still means "immediate") and gainsflush()plus anisPendingproperty; throttle() gainscancel(),flush()and an opt-in trailing call (throttle(fn, limit, true)) so a burst no longer ends on a stale state - feat(ui): useTimeout() and useInterval() -> also return
isTimeoutPending/isIntervalActivereactive flags - feat(ui): useTimeout(), useInterval(), useAnimationFrame() and useTick() -> work outside of a component (they used to warn and then throw when the timer fired); call the remove method when done
- feat(ui): useIntersection() -> returns
refreshIntersection()andstopIntersection(), named after the composable like the new ones;refresh()/stop()keep working - feat(ui): LocalStorage/SessionStorage useStorage() -> binds a stored item to a Vue ref: an assignment persists right away, nested changes of an Object or Array persist too, and the ref follows setItem()/removeItem()/clear(), its other refs and other tabs. Default from a function,
disabled,onError, typed keys through the augmentable LocalStorageItems/SessionStorageItems interfaces, SSR-safe - feat(ui): Cookies useCookie() -> binds a cookie to a Vue ref with the cookie options of set(); follows set()/remove(), its other refs and (where the browser has the Cookie Store API) cookies set by the server, another tab or natively. Default from a function, typed names through the augmentable CookieValues interface; on the server it reads the request cookie and writes a Set-Cookie header
- feat(ui): AppNetwork plugin -> reactive
$q.networkwith the online state and, where the browser has the Network Information API, effectiveType/downlink/rtt/saveData - feat(ui): AppWakeLock plugin ->
$q.wakeLockwraps the Screen Wake Lock API (isCapable, isActive, request/release/toggle) and re-acquires the lock when the page becomes visible again - feat(Screen):
$q.screen.orientation-> reactive{ type, angle, portrait, landscape }of the device screen - feat(QBtnGroup/QBtnToggle):
verticalprop -> stacks the buttons in a column, with the corners and seams drawn for that direction (#7766) - feat(QBtnToggle):
alignprop -> aligns the content of every option button (overridable per option), so the icons of a vertical toggle line up - feat(QInfiniteScroll):
horizontalprop -> loads more when the row is scrolled to its inline end (the left one in RTL),reverseincluded (#6709) - feat(QTable):
body-expandslot -> an expansion row declared after each body row while QTable keeps rendering the row itself (and itsbody-cell-[name]slots); no more taking over the whole row through thebodyslot (#4380) - feat(QTr):
expandableprop -> an expansion row that can slide open and closed with a QSlideTransition inside its cell (#4380) - feat(QTable): a column's
fieldis optional -> a column rendered entirely through itsbody-cell-[name]slot needs none - feat(ui): TypeScript -> Quasar directives are type-checked in templates (value, modifiers and argument) through Vue's GlobalDirectives
- fix(QTooltip): a closing QDialog or QMenu returns focus to its opener -> the opener's tooltip no longer shows as if it had been tabbed onto (#18556)
- fix(QMenu/QTooltip): a
targetthat resolves after the model turns on (v-modelwritten before:target) -> the popup is anchored to it instead of rendering at its static position in Chromium (#18559) - fix(QItem): side, overline, caption and header labels -> they follow a dark mode switch and an active item's color in Chrome instead of keeping the previous color
- fix(ui): useIntersection(), QIntersection and v-intersection -> a
onceobservation that fired resumes observing whenoncegoes away - fix(ui): v-intersection -> a
nullvalue disables it instead of throwing; the v-intersection/v-mutation/v-resize/v-drop-zone disable values are typed asfalse | nullinstead of Boolean, which invitedtrue - fix(QScrollObserver): with
axis="both"-> no longer emits an unchanged position (on mount, on an RTL flip);getPosition()returns a snapshot instead of the live internal object - fix(Screen):
setDebounce()-> the pending update of the previous listener is applied right away instead of running late on a target it was removed from - fix(LocalStorage/SessionStorage):
setItem(key, null | undefined)removes the item, so a null read always means a missing item (older versions stored the strings the browser made of them); a stored RegExp keeps its flags (what older versions stored still decodes); an item stored natively as an empty String reads as''instead of null - fix(Cookies):
getAll()decodes and parses the values asget()does; on the server,set()replaces the request cookie sogetAll()no longer returns the previous value;remove()is typed to accept the same attributes asset()(a__Secure-/__Host-cookie needssecure) andset()the Object/Array/Number values it always stored - fix(ui): TypeScript -> template refs to Quasar components carry their instance methods (
useTemplateRef('btn').value.click(),.validate()...) - fix(ui): TypeScript ->
MetaOptionsandnoopare importable from "quasar"
- refactor(ui): QLayout, QHeader, QFooter, QTabs and QScrollArea observe through useElementSize()/useScroll() instead of mounting hidden QResizeObserver/QScrollObserver children, so layout pages carry fewer component instances and re-render less on scroll
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:
v3.0.1
This fixes a regression in useAtomValue introduced in v3.0.0. Please update.
- fix(vanilla): export store type by @dai-shi in https://github.com/pmndrs/jotai/pull/3370
- fix(react): synchronous onMount updates missed by React subscribers by @dai-shi in https://github.com/pmndrs/jotai/pull/3373
Full Changelog: https://github.com/pmndrs/jotai/compare/v3.0.0...v3.0.1
Release 2026-09-29
- #10390: Add
unescapeJsonPointerSegmentto unescape JSON Pointer segments without decoding literal percent sequences. Preserve the existing URI-decoding behavior ofunescapeJsonPointer.
- #10385: feat: add UTM parameters identifying the integration to the "Powered by Scalar" link
- #10394: Add opt-in linked schema rendering with caller-supplied model URLs for bounded operation, model, and webhook pages. Keep default expansion unchanged, retain reference siblings and inline schemas, and omit generated examples in linked mode.
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10373: fix(api-reference): correct selected state, focus ring, target size and reflow of reference controls
- Client library tabs no longer announce a featured tab as selected while a client picked from "More" is active
- The response card "Copy example value" button shows a keyboard focus ring again
- The schema tree toggle keeps its 24px hit box in narrow layouts
- The schema property copy-link button gets a 24px hit box without changing its layout
- Heading copy-link buttons no longer widen the page in narrow layouts
Rename the always-present layout container class and CSS container name from
narrow-references-containertoreferences-container.
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10369: fix: correct the semantics of the authentication card and of nested schema lists
Two findings from an accessibility audit, both programmatic only with no change to how anything renders:
- The reference's Authentication card announced its title as a level two heading, which put a card of controls in the document outline next to the real tag and operation headings. The title is now plain text and the card is exposed as a named group instead, so it stays findable without claiming to open a passage of the page. Collapsible sections in the API client are unaffected and keep their headings.
- A schema panel whose root is a composition, a primitive or an array wraps a single nameless row that carries the real property list, so assistive tech announced "list with 1 item" before the list the reader wanted. That wrapper is now presentational and only the real property list is announced.
-
#10371: fix: tidy the client modal header at narrow widths
The method label and copy button now stay inside the address bar at every width instead of moving to a floating row of their own, and the send button spans the full width once it wraps. Below the
lgbreakpoint, where the address bar fills the header row and its method chip reaches the panel edge, the sidebar toggle moves onto the backdrop as a circle that mirrors the close button in the opposite corner. At wider widths it keeps its original place inside the panel. -
#10374: fix: resolve accessibility audit findings in the client modal
- Auth fields (Bearer Token, Username, API key and OAuth inputs) now expose their visible label as the accessible name in both the masked and unmasked state
- Request and response filter tabs no longer carry
aria-controls, so screen readers announce each tab once when arrowing through them - Opening the modal from a "Test Request" button now moves focus to the close button first
-
#10369: fix: address a batch of screen reader and keyboard accessibility findings
Corrects programmatic semantics only, with no change to how anything renders: the current sidebar item now reports
aria-current, the single content type readout leaves the tab order, collapsible sections no longer announce their title twice, the password toggle reports its state througharia-pressed, the two document download buttons get distinct accessible names, response status tabs announce what each code means, and the client picker and its search field get accessible names. -
#10361: Preserve configured OAuth redirect URLs when changing credentials or clearing tokens, and hide refresh controls when no refresh token is available.
Previously saved redirect overrides, including empty strings and prefilled page origins, remain unchanged because they cannot be distinguished from intentional user choices. Users affected by the earlier bug must enter the intended redirect URL again.
The public
@scalar/workspace-storeOAuth secrets types now exposex-scalar-secret-redirect-urias optional (string | undefined). Consumers must handle an absent override separately from an explicit empty string. -
#10363: Avoid duplicate available OAuth2 entries when scopes are selected, and apply configured default scopes when selecting an available scheme.
-
#10369: fix: correct the semantics of the authentication card and of nested schema lists
Two findings from an accessibility audit, both programmatic only with no change to how anything renders:
- The reference's Authentication card announced its title as a level two heading, which put a card of controls in the document outline next to the real tag and operation headings. The title is now plain text and the card is exposed as a named group instead, so it stays findable without claiming to open a passage of the page. Collapsible sections in the API client are unaffected and keep their headings.
- A schema panel whose root is a composition, a primitive or an array wraps a single nameless row that carries the real property list, so assistive tech announced "list with 1 item" before the list the reader wanted. That wrapper is now presentational and only the real property list is announced.
-
#10364: Prevent repeated introduction fragments when reopening API descriptions that start with a Markdown heading.
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10385: feat: add UTM parameters identifying the integration to the "Powered by Scalar" link
-
#10375: fix: raise text and focus ring contrast flagged by an accessibility audit
The default light blue is a touch deeper so code strings and read-only labels meet 4.5:1, the required label darkens in light mode, keyboard focus rings now draw from a new
--scalar-focus-colortoken that meets 3:1 against hovered and selected surfaces, and the schema union pipe, Default, Example and Pattern labels use the regular muted text colour. -
#10373: fix(api-reference): correct selected state, focus ring, target size and reflow of reference controls
- Client library tabs no longer announce a featured tab as selected while a client picked from "More" is active
- The response card "Copy example value" button shows a keyboard focus ring again
- The schema tree toggle keeps its 24px hit box in narrow layouts
- The schema property copy-link button gets a 24px hit box without changing its layout
- Heading copy-link buttons no longer widen the page in narrow layouts
Rename the always-present layout container class and CSS container name from
narrow-references-containertoreferences-container. -
#10369: fix: address a batch of screen reader and keyboard accessibility findings
Corrects programmatic semantics only, with no change to how anything renders: the current sidebar item now reports
aria-current, the single content type readout leaves the tab order, collapsible sections no longer announce their title twice, the password toggle reports its state througharia-pressed, the two document download buttons get distinct accessible names, response status tabs announce what each code means, and the client picker and its search field get accessible names. -
#10379: fix: remove the duplicate copy button from the example response header
The response card carried its own copy button in the tab strip, added in 2023 when the card had no other copy affordance. The code block inside it later gained a built-in copy button of its own, which left every response card showing two buttons that copy the same content. Only the code block's button remains.
-
#10388: Prevent Safari from outlining an entire operation section after sidebar navigation while preserving focus on the navigation target.
-
#10392: Give code samples, including virtualized large examples, a named keyboard-scrollable region and keep copy buttons descriptively named before hover or focus.
-
#10369: fix: address a batch of screen reader and keyboard accessibility findings
Corrects programmatic semantics only, with no change to how anything renders: the current sidebar item now reports
aria-current, the single content type readout leaves the tab order, collapsible sections no longer announce their title twice, the password toggle reports its state througharia-pressed, the two document download buttons get distinct accessible names, response status tabs announce what each code means, and the client picker and its search field get accessible names.
-
#10392: Give code samples, including virtualized large examples, a named keyboard-scrollable region and keep copy buttons descriptively named before hover or focus.
-
#10385: feat: add UTM parameters identifying the integration to the "Powered by Scalar" link
-
#10369: fix: address a batch of screen reader and keyboard accessibility findings
Corrects programmatic semantics only, with no change to how anything renders: the current sidebar item now reports
aria-current, the single content type readout leaves the tab order, collapsible sections no longer announce their title twice, the password toggle reports its state througharia-pressed, the two document download buttons get distinct accessible names, response status tabs announce what each code means, and the client picker and its search field get accessible names.
-
#10369: fix: address a batch of screen reader and keyboard accessibility findings
Corrects programmatic semantics only, with no change to how anything renders: the current sidebar item now reports
aria-current, the single content type readout leaves the tab order, collapsible sections no longer announce their title twice, the password toggle reports its state througharia-pressed, the two document download buttons get distinct accessible names, response status tabs announce what each code means, and the client picker and its search field get accessible names.
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10375: fix: raise text and focus ring contrast flagged by an accessibility audit
The default light blue is a touch deeper so code strings and read-only labels meet 4.5:1, the required label darkens in light mode, keyboard focus rings now draw from a new
--scalar-focus-colortoken that meets 3:1 against hovered and selected surfaces, and the schema union pipe, Default, Example and Pattern labels use the regular muted text colour.
-
#10369: fix: address a batch of screen reader and keyboard accessibility findings
Corrects programmatic semantics only, with no change to how anything renders: the current sidebar item now reports
aria-current, the single content type readout leaves the tab order, collapsible sections no longer announce their title twice, the password toggle reports its state througharia-pressed, the two document download buttons get distinct accessible names, response status tabs announce what each code means, and the client picker and its search field get accessible names.
-
#10383: Populate object parameter values from property examples when no parameter or root schema value is provided.
-
#10361: Preserve configured OAuth redirect URLs when changing credentials or clearing tokens, and hide refresh controls when no refresh token is available.
Previously saved redirect overrides, including empty strings and prefilled page origins, remain unchanged because they cannot be distinguished from intentional user choices. Users affected by the earlier bug must enter the intended redirect URL again.
The public
@scalar/workspace-storeOAuth secrets types now exposex-scalar-secret-redirect-urias optional (string | undefined). Consumers must handle an absent override separately from an explicit empty string.
- @scalar/api-reference@1.72.2
- @scalar/api-reference@1.72.2
- @scalar/api-reference@1.72.2
- @scalar/api-reference@1.72.2
- @scalar/api-reference@1.72.2
- @scalar/api-reference@1.72.2
- @scalar/api-reference@1.72.2
chore(release): publish 4.3.0
- feat: customWrapper 支持 class 和 style 属性 - @panyu97py
- feat(taro-init): 支持按平台精简生成 package.json / config/index.js - @alvinhui
- feat(service): 支持自定义 compiler runner - @alvinhui
- feat(types): add requestCommonPayment typings - @dvd233
- 新增项目结构图谱能力,增强 List/WaterFlow 的嵌套滚动、动态尺寸与下拉刷新支持;完善 Webpack5 独立分包编译及递归组件能力;新增 React 腾讯地图组件适配;优化 Taro API Tree Shaking 与 pxTransform,并修复多端滚动、H5 兼容性及运行时相关问题 - @Muyouz @sammyfeng0530
- fix(runtime): correct alias after removing event listener - @Jarvis636431
- fix(weapp): compile custom tabbar with vite runner - @Adamlyu-hub
- fix: update plugin filtering logic to match exact command tag - @alvinhui
- fix(components-rn): upgrade ant design react native - @haiyoucuv
- fix(vite-runner): 修复小程序页面模板缺少 page-meta 导致 PageMeta 失效的问题 - @INK-MapleShadow
- fix(components): center aspectFit images horizontally - @dvd233
- fix(vite-runner): 复用相同 CSS 时生成全部页面样式 - @dvd233
- fix(weapp): support phone number quota toast prop - @dvd233
- fix(types): resolve request declaration errors - @dvd233
- fix(mini-runner): include sub-package pages in prerender page set - @Edward-Roshan
- fix(shared): make Events#once fire exactly once - @askalf
- fix(runtime): handle css variables in Style removeProperty and getPropertyValue - @kwy404
- fix(rn): uploadFile sends the real file name instead of hardcoded 'file' - @dvd233
- 版本更新
- Taro 及其相关工具、插件、组件和平台适配包已从
4.2.2-beta.5更新至4.3.0。
- Taro 及其相关工具、插件、组件和平台适配包已从