From 0719c2ba34677ff8cde2d95ce6bb8c34802a05ed Mon Sep 17 00:00:00 2001 From: AstroHan Date: Fri, 14 Aug 2026 10:06:10 +0800 Subject: [PATCH 1/3] chore(deps): upgrade @astryxdesign packages to 0.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump @astryxdesign/core, @astryxdesign/theme-neutral and @astryxdesign/cli from 0.3.0 to 0.4.0 and rebuild the core patch against the new source. The three 0.4.0 breaking changes miss this repo: the DropdownMenu refactor keeps the `{type: 'divider'}` items we pass, the removed `dropdown-menu-radio-dot` token is unused, and nothing here renders Table, so the `useTableRowExpansion` migration does not apply. All ten patch hunks are still needed — 0.4.0 ships none of them, including the List `aria-label` passthrough. Only useStreamingText needed rework: 0.4.0 rewrote grapheme handling around `Intl.Segmenter` (`snapToGraphemeBoundary`), so the `settledText` presentation state is merged into that implementation. The reveal keeps advancing past a surrogate pair (`advanceTextOffset`) rather than holding the code point back a frame, which is what the repo's streaming regression tests pin; the new snap-back then covers ZWJ and flag sequences the old hunk missed. Verified: patch applies twice cleanly via scripts/apply-dependency-patches.mjs, tsc --build tsconfig.lib.json, @maka/ui streaming-text and markdown-body tests, full build, and the desktop Playwright e2e suite (22 passed). Generated-by: Claude Code --- apps/desktop/package.json | 4 +- package-lock.json | 30 ++-- package.json | 4 +- packages/ui/package.json | 2 +- ...0.patch => @astryxdesign+core+0.4.0.patch} | 135 +++++++++++------- 5 files changed, 102 insertions(+), 73 deletions(-) rename patches/{@astryxdesign+core+0.3.0.patch => @astryxdesign+core+0.4.0.patch} (89%) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 10d17cf262..e1d1f0a7f4 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -41,8 +41,8 @@ "smoke:browser": "npm run build:workspace-deps && npm run build:main && electron scripts/browser-observe-act-smoke.mjs" }, "dependencies": { - "@astryxdesign/core": "0.3.0", - "@astryxdesign/theme-neutral": "0.3.0", + "@astryxdesign/core": "0.4.0", + "@astryxdesign/theme-neutral": "0.4.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@jackwener/opencli": "1.8.6", diff --git a/package-lock.json b/package-lock.json index e6ac40082f..944ae14256 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,8 @@ "apps/desktop" ], "devDependencies": { - "@astryxdesign/cli": "0.3.0", - "@astryxdesign/core": "0.3.0", + "@astryxdesign/cli": "0.4.0", + "@astryxdesign/core": "0.4.0", "@biomejs/biome": "2.5.6", "@types/node": "^26.1.2", "dugite": "3.2.2", @@ -41,8 +41,8 @@ "version": "0.1.10", "license": "Apache-2.0", "dependencies": { - "@astryxdesign/core": "0.3.0", - "@astryxdesign/theme-neutral": "0.3.0", + "@astryxdesign/core": "0.4.0", + "@astryxdesign/theme-neutral": "0.4.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@jackwener/opencli": "1.8.6", @@ -292,9 +292,9 @@ } }, "node_modules/@astryxdesign/cli": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@astryxdesign/cli/-/cli-0.3.0.tgz", - "integrity": "sha512-iLFJsBlZUb66GskA1r3AmuodW72yu0PhCRAorcGPMuwHbGYn54pXGb/EnnWSdHf3Yuw4E3OuN7r4dY0TYJuYmQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astryxdesign/cli/-/cli-0.4.0.tgz", + "integrity": "sha512-yTzXYVXuk4a8iThYQwmWYXhE7LoX/dIQktFl6h0mBQiQOkS/bkHrndBZ3sNvRqrgrjIFsgG3Lob3Jw1ShH3Ohw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -341,9 +341,9 @@ } }, "node_modules/@astryxdesign/core": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@astryxdesign/core/-/core-0.3.0.tgz", - "integrity": "sha512-t2hHvR7AcwW0oKrnxCwbdEEE5Ytgy0Ug61DcYAl9BxAuV5z4XL0/kMo5DiPvX9jbDxzysmOa8ClnXqzxouRUVQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astryxdesign/core/-/core-0.4.0.tgz", + "integrity": "sha512-1sInF5AjnzKlRMaE/Gvcd2a+6AGqKJeU2tg7XmnntjDzAEHwnqECoMcaBWAXkuP73PemwGgD+sKiqodlmreymg==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -356,15 +356,15 @@ } }, "node_modules/@astryxdesign/theme-neutral": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@astryxdesign/theme-neutral/-/theme-neutral-0.3.0.tgz", - "integrity": "sha512-CeKRfmTEtww60WZK4pSlW7bheBNyVPpgEliiXXUHRStXgcXOhwiUA3D/cXhMJlEx+VRgVxnzl0hMbWIr42RaVQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astryxdesign/theme-neutral/-/theme-neutral-0.4.0.tgz", + "integrity": "sha512-67mupNAxF9mq6HUVjvUX9fk6eFCULTgB5nCweKEigbLtTrqL9MrZlOYyLE7PKQ67EO0zXOmPIKOmGgjeMaubLw==", "license": "MIT", "dependencies": { "lucide-react": "^1.18.0" }, "peerDependencies": { - "@astryxdesign/core": "0.3.0", + "@astryxdesign/core": "0.4.0", "react": ">=19" } }, @@ -14337,7 +14337,7 @@ "version": "0.1.0", "license": "Apache-2.0", "dependencies": { - "@astryxdesign/core": "0.3.0", + "@astryxdesign/core": "0.4.0", "@maka/core": "0.1.0", "clsx": "^2.1.1", "lucide-react": "^1.28.0", diff --git a/package.json b/package.json index 27f93e6867..bfdee343f0 100644 --- a/package.json +++ b/package.json @@ -59,8 +59,8 @@ "prepare:bundled-git-source": "node scripts/prepare-bundled-git-source.mjs" }, "devDependencies": { - "@astryxdesign/cli": "0.3.0", - "@astryxdesign/core": "0.3.0", + "@astryxdesign/cli": "0.4.0", + "@astryxdesign/core": "0.4.0", "@biomejs/biome": "2.5.6", "@types/node": "^26.1.2", "dugite": "3.2.2", diff --git a/packages/ui/package.json b/packages/ui/package.json index 02de530c42..8f2587fe06 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -22,7 +22,7 @@ "test:dist": "node --test \"dist/**/*.test.js\"" }, "dependencies": { - "@astryxdesign/core": "0.3.0", + "@astryxdesign/core": "0.4.0", "@maka/core": "0.1.0", "clsx": "^2.1.1", "lucide-react": "^1.28.0", diff --git a/patches/@astryxdesign+core+0.3.0.patch b/patches/@astryxdesign+core+0.4.0.patch similarity index 89% rename from patches/@astryxdesign+core+0.3.0.patch rename to patches/@astryxdesign+core+0.4.0.patch index 0cfee47421..0f269438d1 100644 --- a/patches/@astryxdesign+core+0.3.0.patch +++ b/patches/@astryxdesign+core+0.4.0.patch @@ -92,10 +92,10 @@ index ea27cd5..7102f8d 100644 // --- Derived styles --- const showEmpty = !hasVisibleContent(children); diff --git a/node_modules/@astryxdesign/core/dist/Chat/ChatToolCalls.js b/node_modules/@astryxdesign/core/dist/Chat/ChatToolCalls.js -index 791909e..5c6199e 100644 +index 03b89ec..b0a094e 100644 --- a/node_modules/@astryxdesign/core/dist/Chat/ChatToolCalls.js +++ b/node_modules/@astryxdesign/core/dist/Chat/ChatToolCalls.js -@@ -114,6 +114,7 @@ function CallRow({ +@@ -122,6 +122,7 @@ function CallRow({ const row = /*#__PURE__*/_jsxs("div", { role: hasDetail ? 'button' : undefined, tabIndex: hasDetail ? 0 : undefined, @@ -299,7 +299,7 @@ index 65f9278..f7515e2 100644 return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? ''); } diff --git a/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.d.ts b/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.d.ts -index ae17b68..5a70b1d 100644 +index 7a35d1c..50ee70b 100644 --- a/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.d.ts +++ b/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.d.ts @@ -11,6 +11,8 @@ export interface UseStreamingTextOptions { @@ -310,12 +310,12 @@ index ae17b68..5a70b1d 100644 + settledText?: string; } /** - * Smooths bursty streamed text into a steady character-by-character reveal. + * Snap a UTF-16 code-unit offset down to the start of the grapheme cluster diff --git a/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.js b/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.js -index d5e9ac9..77f131b 100644 +index 693d728..7d5724e 100644 --- a/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.js +++ b/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.js -@@ -21,7 +21,7 @@ +@@ -24,7 +24,7 @@ * - /packages/core/src/hooks/index.ts (exports) * - /packages/core/src/hooks/useStreamingText.test.ts (tests) */ @@ -324,7 +324,52 @@ index d5e9ac9..77f131b 100644 import { useMediaQuery } from "./useMediaQuery.js"; import { useTheme } from "../theme/useTheme.js"; -@@ -103,56 +103,74 @@ export function useStreamingText(targetText, isStreaming, options) { +@@ -70,6 +70,44 @@ function isLowSurrogate(codeUnit) { + return codeUnit >= 0xdc00 && codeUnit <= 0xdfff; + } + ++/** Longest shared prefix as a UTF-16 offset, without splitting a surrogate pair. */ ++function commonPrefixLength(a, b) { ++ let offset = 0; ++ while (offset < a.length && offset < b.length) { ++ const aCodePoint = a.codePointAt(offset); ++ const bCodePoint = b.codePointAt(offset); ++ if (aCodePoint !== bCodePoint) break; ++ offset += aCodePoint !== undefined && aCodePoint > 0xffff ? 2 : 1; ++ } ++ return offset; ++} ++ ++/** ++ * Advances a UTF-16 offset without stopping between a surrogate pair. ++ * ++ * The rendered slice is snapped *back* to a grapheme boundary ++ * (snapToGraphemeBoundary), so a tick landing inside a pair would otherwise ++ * hold the code point back a frame; advancing past it reveals the glyph on ++ * the tick that reached it. ++ */ ++function advanceTextOffset(text, offset, amount) { ++ const next = Math.min(offset + amount, text.length); ++ if (next > 0 && next < text.length && text.charCodeAt(next - 1) >= 0xd800 && text.charCodeAt(next - 1) <= 0xdbff && text.charCodeAt(next) >= 0xdc00 && text.charCodeAt(next) <= 0xdfff) { ++ return next + 1; ++ } ++ return next; ++} ++function reconcilePresentation(previous, targetText, settledText, progressive) { ++ const displayedText = previous.targetText.slice(0, previous.displayedLen); ++ const retainedLen = commonPrefixLength(displayedText, targetText); ++ const settledLen = commonPrefixLength(settledText, targetText); ++ return { ++ targetText, ++ settledText, ++ displayedLen: progressive ? Math.max(retainedLen, settledLen) : targetText.length ++ }; ++} ++ + /** + * Snap a UTF-16 code-unit offset down to the start of the grapheme cluster + * it falls inside, so slicing `text` at the returned offset never splits a +@@ -143,56 +181,47 @@ export function useStreamingText(targetText, isStreaming, options) { const tick = speed === 'fast' ? base / 20 : base / 10; return Math.max(4, Math.round(tick)); }, [token, speed]); @@ -344,14 +389,7 @@ index d5e9ac9..77f131b 100644 - if (targetText.length === 0 && displayedLen !== 0) { - displayedLenRef.current = 0; - setDisplayedLen(0); -+ const commonPrefixLength = (a, b) => { -+ let offset = 0; -+ while (offset < a.length && offset < b.length) { -+ const aCodePoint = a.codePointAt(offset); -+ const bCodePoint = b.codePointAt(offset); -+ if (aCodePoint !== bCodePoint) break; -+ offset += aCodePoint !== undefined && aCodePoint > 0xffff ? 2 : 1; - } +- } - } - - // Snap to full text when streaming ends @@ -361,17 +399,9 @@ index d5e9ac9..77f131b 100644 - if (!isStreaming && targetText.length > 0) { - displayedLenRef.current = targetText.length; - setDisplayedLen(targetText.length); -+ return offset; -+ }; -+ const advanceTextOffset = (text, offset, amount) => { -+ const next = Math.min(offset + amount, text.length); -+ if (next > 0 && next < text.length && text.charCodeAt(next - 1) >= 0xd800 && text.charCodeAt(next - 1) <= 0xdbff && text.charCodeAt(next) >= 0xdc00 && text.charCodeAt(next) <= 0xdfff) { -+ return next + 1; - } +- } - } - -+ return next; -+ }; // Respect the user's reduced-motion preference — skip the progressive // reveal and snap straight to the full text. Uses the package's SSR-safe // useMediaQuery (useMediaQuery.ts) so the read stays in sync if the @@ -379,16 +409,6 @@ index d5e9ac9..77f131b 100644 const prefersReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)'); + const progressive = isStreaming && speed !== 'instant' && !prefersReducedMotion; + const settledText = options?.settledText ?? ''; -+ const reconcilePresentation = (previous) => { -+ const displayedText = previous.targetText.slice(0, previous.displayedLen); -+ const retainedLen = commonPrefixLength(displayedText, targetText); -+ const settledLen = commonPrefixLength(settledText, targetText); -+ return { -+ targetText, -+ settledText, -+ displayedLen: progressive ? Math.max(retainedLen, settledLen) : targetText.length -+ }; -+ }; + const [presentation, setPresentation] = useState(() => ({ + targetText, + settledText, @@ -396,7 +416,7 @@ index d5e9ac9..77f131b 100644 + })); + let renderedPresentation = presentation; + if (presentation.targetText !== targetText || presentation.settledText !== settledText || !progressive && presentation.displayedLen !== targetText.length) { -+ renderedPresentation = reconcilePresentation(presentation); ++ renderedPresentation = reconcilePresentation(presentation, targetText, settledText, progressive); + setPresentation(renderedPresentation); + } + const presentationRef = useRef(presentation); @@ -433,7 +453,7 @@ index d5e9ac9..77f131b 100644 } } rafRef.current = requestAnimationFrame(tick); -@@ -164,9 +182,9 @@ export function useStreamingText(targetText, isStreaming, options) { +@@ -204,9 +233,9 @@ export function useStreamingText(targetText, isStreaming, options) { rafRef.current = null; } }; @@ -443,15 +463,15 @@ index d5e9ac9..77f131b 100644 + if (!progressive) { return targetText; } -- return targetText.slice(0, displayedLen); -+ return targetText.slice(0, renderedPresentation.displayedLen); +- return targetText.slice(0, snapToGraphemeBoundary(targetText, displayedLen)); ++ return targetText.slice(0, snapToGraphemeBoundary(targetText, renderedPresentation.displayedLen)); } \ No newline at end of file diff --git a/node_modules/@astryxdesign/core/src/Chat/ChatToolCalls.tsx b/node_modules/@astryxdesign/core/src/Chat/ChatToolCalls.tsx -index 234a2e4..e3f1842 100644 +index a2da3d9..91a020e 100644 --- a/node_modules/@astryxdesign/core/src/Chat/ChatToolCalls.tsx +++ b/node_modules/@astryxdesign/core/src/Chat/ChatToolCalls.tsx -@@ -378,6 +378,7 @@ function CallRow({call}: {call: ChatToolCallItem}) { +@@ -390,6 +390,7 @@ function CallRow({call}: {call: ChatToolCallItem}) {
= tickMs) { lastTickRef.current = now; @@ -743,11 +770,10 @@ index 02c069f..acdc18a 100644 - - if (currentLen < target.length) { - const nextLen = Math.min(currentLen + charsPerTick, target.length); -- ++ const current = presentationRef.current; + - displayedLenRef.current = nextLen; - setDisplayedLen(nextLen); -+ const current = presentationRef.current; -+ + if (current.displayedLen < current.targetText.length) { + const next = { + ...current, @@ -762,7 +788,7 @@ index 02c069f..acdc18a 100644 } } -@@ -185,11 +245,11 @@ export function useStreamingText( +@@ -227,11 +294,14 @@ export function useStreamingText( rafRef.current = null; } }; @@ -774,6 +800,9 @@ index 02c069f..acdc18a 100644 return targetText; } -- return targetText.slice(0, displayedLen); -+ return targetText.slice(0, renderedPresentation.displayedLen); +- return targetText.slice(0, snapToGraphemeBoundary(targetText, displayedLen)); ++ return targetText.slice( ++ 0, ++ snapToGraphemeBoundary(targetText, renderedPresentation.displayedLen), ++ ); } From 11020338bbffff0fba1a7c36eb9af2ac6d7c43f9 Mon Sep 17 00:00:00 2001 From: AstroHan Date: Fri, 14 Aug 2026 10:18:44 +0800 Subject: [PATCH 2/3] chore(desktop): regenerate the Astryx theme for 0.4.0 The generated theme is a committed artifact built from the installed @astryxdesign packages, so the 0.4.0 bump leaves it stale and CI's `npm run astryx:theme -- --check` fails. Two substantive changes come with the regeneration, neither of which our own styles depend on: - `--radius-none` is 0px instead of 0.25rem. Astryx components that ask for no rounding were getting 4px; nothing in this repo references the token directly. - `.astryx-heading.display-{1,2,3}` rules now exist, so `` sizes correctly under a theme that supplies typography.scale. Our display type comes from the `--maka-text-display-*` tokens rather than that class, so nothing here changes. Generated-by: Claude Code --- .../src/renderer/astryx-theme/maka.css | 22 +++++++++++++++++-- .../src/renderer/astryx-theme/maka.d.ts | 2 +- .../desktop/src/renderer/astryx-theme/maka.js | 4 ++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/apps/desktop/src/renderer/astryx-theme/maka.css b/apps/desktop/src/renderer/astryx-theme/maka.css index 21e5c163c5..d15cbf286b 100644 --- a/apps/desktop/src/renderer/astryx-theme/maka.css +++ b/apps/desktop/src/renderer/astryx-theme/maka.css @@ -2,7 +2,7 @@ * @generated by `astryx theme build` — do not edit manually. * Source: src/renderer/astryx-theme/makaTheme.ts * Command: astryx theme build src/renderer/astryx-theme/makaTheme.ts --out src/renderer/astryx-theme/maka.css - * CLI: @astryxdesign/cli@0.3.0 + * CLI: @astryxdesign/cli@0.4.0 * Core: @astryxdesign/core@0.1.0 */ @@ -173,7 +173,7 @@ --color-border-gray: light-dark(#d4d4d4, #262626); --color-icon-gray: light-dark(#525252, #a3a3a3); --color-text-gray: light-dark(#262626, #e5e5e5); - --radius-none: 0.25rem; + --radius-none: 0px; --radius-inner: 0.375rem; --radius-element: 0.625rem; --radius-container: 0.75rem; @@ -231,6 +231,24 @@ line-height: var(--text-heading-6-leading); } + .astryx-heading.display-1 { + font-family: var(--font-family-heading); + font-size: var(--text-display-1-size); + line-height: var(--text-display-1-leading); + } + + .astryx-heading.display-2 { + font-family: var(--font-family-heading); + font-size: var(--text-display-2-size); + line-height: var(--text-display-2-leading); + } + + .astryx-heading.display-3 { + font-family: var(--font-family-heading); + font-size: var(--text-display-3-size); + line-height: var(--text-display-3-leading); + } + .astryx-text.body { font-family: var(--font-family-body); font-size: var(--text-body-size); diff --git a/apps/desktop/src/renderer/astryx-theme/maka.d.ts b/apps/desktop/src/renderer/astryx-theme/maka.d.ts index 3a73041bf5..00c430e20b 100644 --- a/apps/desktop/src/renderer/astryx-theme/maka.d.ts +++ b/apps/desktop/src/renderer/astryx-theme/maka.d.ts @@ -2,7 +2,7 @@ * @generated by `astryx theme build` — do not edit manually. * Source: src/renderer/astryx-theme/makaTheme.ts * Command: astryx theme build src/renderer/astryx-theme/makaTheme.ts --out src/renderer/astryx-theme/maka.css - * CLI: @astryxdesign/cli@0.3.0 + * CLI: @astryxdesign/cli@0.4.0 * Core: @astryxdesign/core@0.1.0 */ diff --git a/apps/desktop/src/renderer/astryx-theme/maka.js b/apps/desktop/src/renderer/astryx-theme/maka.js index da96703fc0..55f051337c 100644 --- a/apps/desktop/src/renderer/astryx-theme/maka.js +++ b/apps/desktop/src/renderer/astryx-theme/maka.js @@ -2,7 +2,7 @@ * @generated by `astryx theme build` — do not edit manually. * Source: src/renderer/astryx-theme/makaTheme.ts * Command: astryx theme build src/renderer/astryx-theme/makaTheme.ts --out src/renderer/astryx-theme/maka.css - * CLI: @astryxdesign/cli@0.3.0 + * CLI: @astryxdesign/cli@0.4.0 * Core: @astryxdesign/core@0.1.0 */ @@ -174,7 +174,7 @@ export const makaTheme = { "--color-border-gray": "light-dark(#d4d4d4, #262626)", "--color-icon-gray": "light-dark(#525252, #a3a3a3)", "--color-text-gray": "light-dark(#262626, #e5e5e5)", - "--radius-none": "0.25rem", + "--radius-none": "0px", "--radius-inner": "0.375rem", "--radius-element": "0.625rem", "--radius-container": "0.75rem", From f4d2669b0c643426aeb6dcd5b5e781df909c47c4 Mon Sep 17 00:00:00 2001 From: AstroHan Date: Fri, 14 Aug 2026 10:22:50 +0800 Subject: [PATCH 3/3] chore: record the 0.4.0 @astryxdesign/core copyright override MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `check:release` fails the packaging job on 0.4.0: the published core tarball ships no LICENSE/COPYING/NOTICE, and the MIT copyright overrides are keyed by exact version so that a new release is re-verified instead of silently inheriting the previous version's attribution. Verified for 0.4.0 rather than copied forward: `@astryxdesign/theme-neutral` and `@astryxdesign/cli` at 0.4.0 both ship a LICENSE reading "MIT License / Copyright (c) 2026 Meta Platforms, Inc.", which is the sibling-package evidence the override comment already cites, and core's package.json still declares MIT. Regenerates THIRD_PARTY_NOTICES.txt, whose only change is the 0.3.0 → 0.4.0 version line for core and theme-neutral. Generated-by: Claude Code --- apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt | 4 ++-- scripts/generate-third-party-notices.mjs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt b/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt index a80508d6a5..e711508382 100644 --- a/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt +++ b/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt @@ -459,7 +459,7 @@ SOFTWARE. ================================================================================ -Package: @astryxdesign/core@0.3.0 +Package: @astryxdesign/core@0.4.0 Declared license: MIT Selected license: MIT Repository: git+https://github.com/facebook/astryx.git#packages/core @@ -489,7 +489,7 @@ SOFTWARE. ================================================================================ -Package: @astryxdesign/theme-neutral@0.3.0 +Package: @astryxdesign/theme-neutral@0.4.0 Declared license: MIT Selected license: MIT Repository: git+https://github.com/facebook/astryx.git#packages/themes/neutral diff --git a/scripts/generate-third-party-notices.mjs b/scripts/generate-third-party-notices.mjs index 0296cb49ea..761e561398 100644 --- a/scripts/generate-third-party-notices.mjs +++ b/scripts/generate-third-party-notices.mjs @@ -83,6 +83,7 @@ const MIT_COPYRIGHT_OVERRIDES = new Map([ ['@astryxdesign/core@0.1.9', 'Copyright (c) 2026 Meta Platforms, Inc.'], ['@astryxdesign/core@0.2.0', 'Copyright (c) 2026 Meta Platforms, Inc.'], ['@astryxdesign/core@0.3.0', 'Copyright (c) 2026 Meta Platforms, Inc.'], + ['@astryxdesign/core@0.4.0', 'Copyright (c) 2026 Meta Platforms, Inc.'], ['@stylexjs/stylex@0.19.0', 'Copyright (c) Meta Platforms, Inc. and affiliates.'], ['@wecom/aibot-node-sdk@1.0.7', 'Copyright (c) WeComTeam contributors'], [