10.7.0
- add Group.isolated() and shape-sized perfect-draw buffers (Anton Lavrevov)
- add Shape.selfRectFunc() for custom shape bounds (Anton Lavrevov)
- isolation surfaces inherit imageSmoothingQuality (Anton Lavrevov)
- apply prettier (Anton Lavrevov)
- remove the size-limit check (Anton Lavrevov)
- 3617366: update CHANGELOG with new version (Anton Lavrevov)
- ca62a92: build for 10.7.0 (Anton Lavrevov)
v0.6.3
Astryx 0.6.3 — all @astryxdesign/* packages ship at this version.
npx astryx upgrade --apply
-
Show each shared InputClearButton's contextual action label in a tooltip, giving sighted users the same specific action name already available to assistive technology. (#6354)
-
Add a
collapsedSummarycomposition slot to ChatComposerDrawer that replaces the complete collapsed-summary anatomy when provided; omitting it preserves the existing Badge and label. (#5399) -
Add
endContentEdgeCompensationto DialogHeader so callers can select which axes receive fixed compensation while preserving automatic close-action compensation by default. (#6465) -
Add a Canvas Editor page template with a layered artboard, resizable layer and property panels, live text/image controls, zoom, document tabs, and a themed fixed-size canvas. (#6237)
-
Markdown: add native typed frontmatter metadata (#6381) Use
createMarkdownFrontmatter()from@astryxdesign/core/Markdown/pluginsto decode a document-start key/value block into typed metadata, keep unfinished streaming metadata hidden, and remove completed metadata syntax from rendered Markdown. -
Markdown: add the core plugin protocol (#6340) Use
createMarkdownPlugin()and Markdown'spluginsprop to compose bounded source syntax, immutable typed AST transforms, and extension renderers. ImportparseMarkdownAst()orparseInlineAst()from@astryxdesign/core/Markdown/parserwhen server code needs the canonical tree. The same ordered plugins work with parser entry points and Markdown-derived Outline items, while omitted or empty plugin lists preserve existing behavior. -
Markdown: add a limited Remark compatibility adapter (#6345) Import
createMarkdownRemarkTransform()from@astryxdesign/core/Markdown/remarkto run one synchronous transform-only Remark plugin over the documented MDAST subset. Every invocation gets a fresh mutable tree and an isolated file, and each plugin's compatibility is proven by fixtures rather than assumed: async work, parser or compiler plugins, processor state, raw HTML, unsupported nodes, forged positions, and metadata Astryx cannot represent keep the last valid readable document and report one diagnostic. The adapter is a separate entry point, so it stays out of every bundle that does not import it. -
Markdown: add a semantic code-fence transform helper (#6343) Use
createMarkdownFenceTransform()to annotate declared fenced-code languages with typed extension data while standard pluginrenderersown presentation and text projection.components.coderetains precedence, and declined, missing, or failed proposals preserve Markdown's accessible, copyableCodeBlockfallback. -
Markdown: add an immutable source-decoration helper (#6344) Use
createMarkdownSourceDecoration()to attach non-visual metadata to every block a validated UTF-16 source range touches, andgetMarkdownSourceDecorations()to read it back in a later plugin. It works through<Markdown>and Outline with no extra parser options, resolves independently of the order earlier transforms left blocks in, and appears on the settled document rather than on partial streaming chunks, so a decoration never appears and then vanishes. Metadata lives in one versioned Astryx-owned envelope that never merges foreign node data. Rendered output, copyable text, accessible names, heading ids, focus order, navigation, and source provenance are unchanged.Markdown transforms also got faster, and a plugin now always observes a fully immutable tree — including blocks a Core helper carried over untouched. Core-authored helpers now validate the nodes a caller's callback produced and run on a trusted path that skips the whole-tree validation and freezing applied to plugin-authored output, freezing walks only what a transform changed, a plugin list that contributes no inline syntax no longer costs anything per source character, and the helpers' per-match allocations and rebuilds are gone. The representative three-helper set now adds about 20 percent over an empty pipeline, inside its 25 percent budget, down from roughly 3.3x.
-
Markdown: add an immutable text-transform helper (#6342) Use
createMarkdownTextTransform()to replace matching prose with typed Markdown nodes while preserving links, images, code, math, citations, and existing extension syntax as protected contexts. -
Add pressed feedback to CheckboxInput, Collapsible, Link, Slider, Switch, TabList, RadioList, and unselected SegmentedControl items. Enabled controls paint
--color-overlay-pressedon their interaction surface during pointer hold or drag; disabled controls and selected SegmentedControl items keep their existing surfaces. (#6380) -
Let a TreeList item carry row styles (#6238)
TreeListItemDatagainsxstyle,className, andstyle, applied to the item's row element, so row-scoped primitives such asuseContainerRevealcan isolate each row's hover and focus state.
-
Make overflowing BottomSheet text keyboard reachable with a named scroll-body tab stop. Add shared focus-time keyboard delegation to
useScrollableArea: forward Tab may enter the first native link/button directly, while inputs, composite widgets, and nested scroll owners retain the viewport stop. Reverse traversal skips the delegated viewport; pointer/programmatic focus and content changes never trigger delegation. Sheet scroll containment now applies only while content overflows and uses the sharedcontainpolicy, which permits native edge feedback. (#6301) -
Keep ChatComposer's public composition contracts aligned: custom inputs now submit the value they supply, disabled default editors expose their state to assistive technology, and an explicitly shown Stop action remains pointer-operable while editing is disabled. (#6398)
-
Keep collapsed
ChatComposerDrawercontent out of keyboard and assistive-technology navigation, and show the shared focus indicator on its disclosure control. (#6416) -
Keep programmatic ChatComposerInput edits observable, deliver dropped files through
onFiles, and letonPasteintercept text before default token conversion. (#6419) -
Export
ChatComposerTokenElementPropsand forward supported span props and refs fromChatComposerTokenElement(#6443). -
Keep the chat dictation control disabled when speech recognition is unavailable, and preserve theme control over its clipping feedback (#6444).
-
Clip the resizable SideNav handle within the sidebar bounds (#6196)
-
scope the 16px text-control font-size floor to iOS with
@supports (-webkit-touch-callout: none)inside the coarse-pointer query, so Android and touch-screen laptops keep the theme's type scale instead of an inflated 16px (#6085; fixes #6015) -
Kbd: render the
escandreturnaliases with the same glyphs and accessible names asescapeandenter(#5657) This partial fix for #5403 normalizes the two unambiguous aliases already accepted byuseHotkeys. Kbd now rendersescasEscwith the accessible nameEscape, andreturnas↵with the accessible nameEnter. Its lookup tables now also avoid prototype-chain collisions when rendering arbitrary key names. The platform-specific rendering contract formetaand display choice forspaceremain unresolved in #5403 pending separate API and design decisions. -
LayoutFooter: add playground wrapper and default children for docsite preview (#6341) Prevents the properties-tab preview on the docsite from rendering an empty stage by wrapping LayoutFooter inside a Layout scaffold with representative footer content in the footer slot.
-
PowerSearch: switching the field or operator while the value menu is open now shows the new field's options instead of the old ones. (#6357)
-
Move focusable ProgressBar target marks outside the
progressbarsubtree (#6248) -
Selector: collapse an option's mark column when its resolved selection indicator renders nothing. Unselected rows using the default check indicator no longer lose label width to an empty wrapper. (#5619)
-
Paint Slider marks inside the filled region with the accent fill color while leaving unfilled-side marks unchanged. (#6455)
-
Use the Slider track token for unfilled tick marks so marks and rails stay aligned across themes. (#6461)
-
Apply the theme body font to the theme scope root so components using inherited typography no longer fall back to browser serif. (#6450)
-
Keep ToggleButton callbacks synchronous while routing pressed Actions through Button's
clickActionpathway, preserving cancellation and optimistic pending feedback. (#6463) -
Spinner: animate the arc's dash offset instead of rotating the ring, fixing residual wobble on iOS Safari (#6311; fixes #6253) The earlier fix for #3617 added
willChange: 'transform'to the rotating<svg>, which smooths the rotation's motion but does nothing about how WebKit rasterizes a rotating stroked shape's rounded cap on each frame. Rotating the whole ring still visibly wobbled on iOS Safari.Animates
stroke-dashoffseton the stationary arc<circle>instead of rotating the<svg>, so the shape never rotates and WebKit never re-rasterizes the cap at an intermediate angle. Confirmed against a real iOS Safari device by the issue reporter. -
Table: contain overscroll only while its inner viewport can scroll, so a fitting table no longer creates a dead scroll zone in its parent. (#6410)
-
Keep a ToggleButton's own
isDisabledwhen its ToggleButtonGroup does not disable anything. The group always supplies anisDisabledboolean, so the previous??fallback never ran and an enabled group re-enabled a member that had disabled itself — the member selected on click, and a member carrying atooltipstayed operable while looking unavailable. A disabled group still disables every member; it just cannot re-enable one. (#6356)
Thanks to everyone who contributed to this release:
@aldentan @athz @cixzhang @ernestt @harjothkhara @HelloOjasMutreja @jiunshinn @kentonquatman @korkt-kim @ManoharPaturi @nynexman4464 @rupesh-kumar-sah @vjeux
Full Changelog: https://github.com/facebook/astryx/compare/v0.6.2...v0.6.3
quasar-v2.33.2
- fix(QField): custom standout text color -> a
text-*class in a stringstandout(e.g.standout="bg-teal text-yellow") now colors the input, prefix, suffix, prepend and append too, not just the label. Before, the focused standout painted those in hard white (black in dark mode). A string without a text color keeps the theme default for the content, and its label now uses that default too instead of the primary color (#16019) - fix(QEditor): link URL field -> it opens empty, with
https://shown as a placeholder instead of pre-filled as a value. Pasting a copied URL no longer produces a brokenhttps://https://...link (#11450) - fix(QEditor): editing a link a second time -> confirming the URL no longer nests a new anchor (with the URL as its text) inside the existing link in Chromium. Escape no longer commits what was typed, and Remove strips the right link
- perf(ui): QTabPanels, QCarousel, QStepper -> each render now collects the panels in one pass over the slot content instead of three
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:
v16.4.0-canary.40
- Keep cached root parameters out of generic fallback shells: #98950
- Fix missing content in Cached Navigations: #98767
- [turbopack] Track members across namespace re-exports: #96396
- [PPF] Implement
unstable_ensureStatic = "shell" | "prefetch": #98191 - [PPF] Validate
unstable_ensureStaticnesting: #98357 - Replace lerna task-runner usage with pnpm: #99040
- [cd] Fix release branch gate and drop dead lerna publish config: #99039
- Turbopack: fix "ModuleId not found for ident" regression: #99090
- Fix private-cache segment reuse across root params: #98810
- Turbopack: fix
Unknown module typeerror for imports in webpack loaders: #99088 - Nudge future defaults upgrades for manual
next dev|build: #98874 - Nudge latest version upgrades for manual
next dev|build: #98873 - Nudge security upgrades for manual
next dev|build: #98872 - Upgrade React from
59aff3e1-20260918to8b0da1c6-20260922: #99059 - refactor(turbo-rcstr): drop unsupported 16-byte pointer width: #98355
- test(turbo-tasks-backend): run the db_versioning tests on wasm: #97901
- fix(turbo-tasks): let parking_lot block on wasm instead of panicking: #97860
- test(turbo-tasks): run the wasm tests with a Node wasi host: #97789
- [cd] Skip the release job when no new commits warrant a release: #98664
- [test] Add fallback param deployment regression coverage: #98883
- Turbopack: mangle exports behind an escaping namespace via the facade: #97770
- test(dev): add dedicated compiler polling coverage: #97673
- build(turbopack): upgrade notify to 9.0.0-rc.5: #98737
- test(turbopack): add polling to filesystem watcher fuzzer: #98863
- test(turbopack): fix filesystem watcher symlink expectations: #98983
- test(turbopack): fix filesystem watcher read-write tracking: #98982
- Don't re-request the App Shell to upgrade an ISR fallback: #94808
- Fix unstable ensure static task annotation: #99075
- test: update React 18 hydration error snapshots: #99073
- Remove redundant unsafe_ignore annotations: #98961
- Remove TraceRawVcs: #98953
- test(turbopack): remove remaining test unmarks: #98376
Huge thanks to @gnoff, @unstubbable, @sampoder, @lubieowoce, @eps1lon, @mischnic, @devjiwonchoi, @sokra, @acdlite, and @lukesandberg for helping!
rari@0.16.0
- Layout-owned documents: root layouts own
<html>/<body>. The client hydrates ondocument(no#rootshell). Production emitsrari-client-head.htmland pulls layout CSS into the Vite client entry. - Vite environments for RSC/SSR: prod, HMR, and metadata emit through Vite
createBuilder/ environment builds withsharedPlugins: true. User Vite plugins run on server modules. - React 19.3 View Transitions: soft navigations and loading → content reveals use React’s
ViewTransition/ transition types. rari/font:rari/font/localandrari/font/googleself-host fonts at build time (Capsize fallbacks, subsets/preload, generated Google typings).- Static image imports:
import img from './photo.png'yields hashed/assetsURLs andStaticImageDataforrari/image. - App icons: file-convention icons (
favicon,icon,apple-icon) resolve into metadata and production assets. - Proxy middleware:
proxy.tsstill authors the middleware; static redirects/rewrites emitproxy.jsonand run in Rust. Path matchers (including optional segments) are supported; JS bundles only when analysis finds runtime logic. - Dev DX: vendored React Refresh runtime, stronger layout CSS / head injection, and HMR fixes for app-router reloads.
- Node.js:
engines.nodeis now>=24.21.0(was>=22.18.0). Update local toolchains, Docker images, and hostenginesfields. - React: peers target React 19.3 (
react/react-dom/react-server-dom-webpack). Upgrade before relying on View Transitions navigations. - Remove
index.html: delete projectindex.htmland any#rootmount. The root layout must return<html>and<body>(include<head />when you need a head slot). Client entry is virtual (virtual:rari-entry-client); hydration targetsdocument. - Soft navigation + root layout: soft navigations expand the root layout like full HTML renders. Keep persistent chrome in a client component under the root layout so it does not remount on every soft nav.
Full Changelog: https://github.com/rari-build/rari/compare/rari@0.15.17...rari@0.16.0
@rari/use-cache@0.16.0
- Layout-owned documents: root layouts own
<html>/<body>. The client hydrates ondocument(no#rootshell). Production emitsrari-client-head.htmland pulls layout CSS into the Vite client entry. - Vite environments for RSC/SSR: prod, HMR, and metadata emit through Vite
createBuilder/ environment builds withsharedPlugins: true. User Vite plugins run on server modules. - React 19.3 View Transitions: soft navigations and loading → content reveals use React’s
ViewTransition/ transition types. rari/font:rari/font/localandrari/font/googleself-host fonts at build time (Capsize fallbacks, subsets/preload, generated Google typings).- Static image imports:
import img from './photo.png'yields hashed/assetsURLs andStaticImageDataforrari/image. - App icons: file-convention icons (
favicon,icon,apple-icon) resolve into metadata and production assets. - Proxy middleware:
proxy.tsstill authors the middleware; static redirects/rewrites emitproxy.jsonand run in Rust. Path matchers (including optional segments) are supported; JS bundles only when analysis finds runtime logic. - Dev DX: vendored React Refresh runtime, stronger layout CSS / head injection, and HMR fixes for app-router reloads.
- Node.js:
engines.nodeis now>=24.21.0(was>=22.18.0). Update local toolchains, Docker images, and hostenginesfields. - React: peers target React 19.3 (
react/react-dom/react-server-dom-webpack). Upgrade before relying on View Transitions navigations. - Remove
index.html: delete projectindex.htmland any#rootmount. The root layout must return<html>and<body>(include<head />when you need a head slot). Client entry is virtual (virtual:rari-entry-client); hydration targetsdocument. - Soft navigation + root layout: soft navigations expand the root layout like full HTML renders. Keep persistent chrome in a client component under the root layout so it does not remount on every soft nav.
Full Changelog: https://github.com/rari-build/rari/compare/@rari/use-cache@0.15.17...@rari/use-cache@0.16.0
Release 2026-09-23 13:32
Release 2026-09-23 13:32
- react-router: avoid redundant link hydration updates (#8435) (73bfc153ee) by @Sheraff
- @tanstack/react-router@1.170.39
- @tanstack/react-start@1.168.58
- @tanstack/react-start-client@1.168.37
- @tanstack/react-start-rsc@0.1.57
- @tanstack/react-start-server@1.167.44
@tanstack/react-start-server@1.167.44
- Updated dependencies [
73bfc15]:- @tanstack/react-router@1.170.39
@tanstack/react-start@1.168.58
- Updated dependencies [
73bfc15]:- @tanstack/react-router@1.170.39
- @tanstack/react-start-client@1.168.37
- @tanstack/react-start-rsc@0.1.57
- @tanstack/react-start-server@1.167.44