You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maka.apache.org by as...@apache.org on 2026/08/26 03:43:04 UTC
(maka) branch main updated: chore(deps): bump Astryx core to 0.5.0 (#3755)
This is an automated email from the ASF dual-hosted git repository.
Astro-Han pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/maka.git
The following commit(s) were added to refs/heads/main by this push:
new 51eeaa60b chore(deps): bump Astryx core to 0.5.0 (#3755)
51eeaa60b is described below
commit 51eeaa60b82dd7d54eff5b20c76a2a5facfafbde
Author: testikun <bu...@gmail.com>
AuthorDate: Wed Aug 26 11:43:00 2026 +0800
chore(deps): bump Astryx core to 0.5.0 (#3755)
* chore(deps): bump Astryx core to 0.5.0
Generated-by: OpenAI Codex
* chore(ui): refresh generated Astryx theme artifacts
Generated-by: OpenAI Codex
* test(desktop): align module tab accessibility assertions
Generated-by: OpenAI Codex
* fix(desktop): keep remote directory dialog named
Generated-by: OpenAI Codex
* test(desktop): wait for persisted keep-awake state
Generated-by: OpenAI Codex
* docs(legal): align Astryx theme provenance
Record the Astryx theme-neutral 0.5.0 source and its v0.5.0 revision in the distributed license attribution.
Generated-by: OpenAI Codex
---------
Co-authored-by: testikun <te...@google.com>
---
LICENSE | 6 +-
apps/desktop/e2e/accessibility-coverage.spec.ts | 8 +--
apps/desktop/e2e/module-hub.spec.ts | 2 +-
apps/desktop/package.json | 4 +-
.../resources/licenses/npm/THIRD_PARTY_NOTICES.txt | 4 +-
apps/desktop/src/renderer/astryx-theme/maka.css | 6 +-
apps/desktop/src/renderer/astryx-theme/maka.js | 6 +-
.../renderer/remote-project-directory-dialog.tsx | 1 +
apps/desktop/stories/module-hubs.stories.tsx | 27 +++++----
package-lock.json | 22 ++++----
package.json | 2 +-
packages/ui/package.json | 2 +-
...+0.4.5.patch => @astryxdesign+core+0.5.0.patch} | 64 ++++++----------------
patches/README.md | 8 +--
scripts/generate-third-party-notices.mjs | 1 +
15 files changed, 67 insertions(+), 96 deletions(-)
diff --git a/LICENSE b/LICENSE
index 2d8fc74e5..d295bce96 100644
--- a/LICENSE
+++ b/LICENSE
@@ -230,13 +230,13 @@ Astryx
Source: https://github.com/facebook/astryx
ChatReasoning revision: c9fe4379e9959b9ba5eeff56def34c752223450e
-Theme revision: 110987b4505dc44119b94bed53d92b9840088a61
+Theme revision: ea888ef33283ea44e37817d36bc8e84a0568bc30
Copyright (c) 2026 Meta Platforms, Inc.
License: MIT
Maka includes an ejected adaptation of Astryx ChatReasoning v0.1.9 and generated
-theme artifacts based on Astryx theme-neutral v0.4.5. Maka also redistributes
-`patches/@astryxdesign+core+0.4.5.patch`, which modifies the MIT-licensed Astryx
+theme artifacts based on Astryx theme-neutral v0.5.0. Maka also redistributes
+`patches/@astryxdesign+core+0.5.0.patch`, which modifies the MIT-licensed Astryx
core package. The following MIT License applies to that material:
MIT License
diff --git a/apps/desktop/e2e/accessibility-coverage.spec.ts b/apps/desktop/e2e/accessibility-coverage.spec.ts
index 8279c7c8e..fe4e97fe8 100644
--- a/apps/desktop/e2e/accessibility-coverage.spec.ts
+++ b/apps/desktop/e2e/accessibility-coverage.spec.ts
@@ -83,25 +83,25 @@ test('module pages and global overlays expose named actionable controls', async
const extensionsNavigation = page.getByRole('navigation', { name: /扩展内容/ });
await expect(
extensionsNavigation.getByRole('button', { name: '技能', exact: true }),
- ).toHaveAttribute('aria-current', 'page');
+ ).toHaveAttribute('aria-current', 'true');
await assertAxHealth(cdp, 'extensions/skills');
const mcpButton = extensionsNavigation.getByRole('button', { name: 'MCP', exact: true });
await mcpButton.click();
- await expect(mcpButton).toHaveAttribute('aria-current', 'page');
+ await expect(mcpButton).toHaveAttribute('aria-current', 'true');
await assertAxHealth(cdp, 'extensions/mcp');
await navigation.getByRole('button', { name: /定时任务/ }).click();
const automationsNavigation = page.getByRole('navigation', { name: /定时任务内容/ });
await expect(
automationsNavigation.getByRole('button', { name: '定时任务', exact: true }),
- ).toHaveAttribute('aria-current', 'page');
+ ).toHaveAttribute('aria-current', 'true');
await assertAxHealth(cdp, 'automations/scheduled-tasks');
const dailyReviewButton = automationsNavigation.getByRole('button', {
name: '每日回顾',
exact: true,
});
await dailyReviewButton.click();
- await expect(dailyReviewButton).toHaveAttribute('aria-current', 'page');
+ await expect(dailyReviewButton).toHaveAttribute('aria-current', 'true');
await assertAxHealth(cdp, 'automations/daily-review');
await page.keyboard.press('Shift+Slash');
diff --git a/apps/desktop/e2e/module-hub.spec.ts b/apps/desktop/e2e/module-hub.spec.ts
index 462558387..91609cfcf 100644
--- a/apps/desktop/e2e/module-hub.spec.ts
+++ b/apps/desktop/e2e/module-hub.spec.ts
@@ -32,7 +32,7 @@ test('Module Hub switches all four leaves and opens scheduled creation once', as
await extensions.getByRole('button', { name: 'MCP', exact: true }).click();
await expect(
extensions.getByRole('button', { name: 'MCP', exact: true }),
- ).toHaveAttribute('aria-current', 'page');
+ ).toHaveAttribute('aria-current', 'true');
await sidebar.getByRole('button', { name: /定时任务/ }).click();
await expect(page.locator('[data-module="scheduled-tasks"]')).toBeVisible();
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index b08ce8ef1..7551ebbc5 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -57,8 +57,8 @@
},
"devDependencies": {
"@ant-design/icons-svg": "4.5.0",
- "@astryxdesign/core": "0.4.5",
- "@astryxdesign/theme-neutral": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
+ "@astryxdesign/theme-neutral": "0.5.0",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@fontsource-variable/geist": "^5.3.0",
diff --git a/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt b/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt
index 0e9bea23e..71ec5e9c5 100644
--- a/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt
+++ b/apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt
@@ -478,7 +478,7 @@ SOFTWARE.
================================================================================
-Package: @astryxdesign/core@0.4.5
+Package: @astryxdesign/core@0.5.0
Declared license: MIT
Selected license: MIT
Repository: git+https://github.com/facebook/astryx.git#packages/core
@@ -508,7 +508,7 @@ SOFTWARE.
================================================================================
-Package: @astryxdesign/theme-neutral@0.4.5
+Package: @astryxdesign/theme-neutral@0.5.0
Declared license: MIT
Selected license: MIT
Repository: git+https://github.com/facebook/astryx.git#packages/themes/neutral
diff --git a/apps/desktop/src/renderer/astryx-theme/maka.css b/apps/desktop/src/renderer/astryx-theme/maka.css
index 65b6ce220..197e5b535 100644
--- a/apps/desktop/src/renderer/astryx-theme/maka.css
+++ b/apps/desktop/src/renderer/astryx-theme/maka.css
@@ -323,7 +323,7 @@
}
.astryx-badge.error {
- background-color: light-dark(#e33f4a, #ff705d);
+ background-color: light-dark(#c9303a, #ff705d);
color: light-dark(#ffffff, #171717);
}
@@ -386,7 +386,7 @@
}
.astryx-statusdot.error {
- background-color: light-dark(#e33f4a, #ff705d);
+ background-color: light-dark(#c9303a, #ff705d);
}
.astryx-statusdot.accent {
@@ -439,7 +439,7 @@
}
.astryx-progressbar.error {
- --color-error: #e33f4a;
+ --color-error: #c9303a;
}
.astryx-card {
diff --git a/apps/desktop/src/renderer/astryx-theme/maka.js b/apps/desktop/src/renderer/astryx-theme/maka.js
index 96c9e63ff..16ac3fd1d 100644
--- a/apps/desktop/src/renderer/astryx-theme/maka.js
+++ b/apps/desktop/src/renderer/astryx-theme/maka.js
@@ -309,7 +309,7 @@ export const makaTheme = {
"color": "#171717"
},
"variant:error": {
- "backgroundColor": "light-dark(#e33f4a, #ff705d)",
+ "backgroundColor": "light-dark(#c9303a, #ff705d)",
"color": "light-dark(#ffffff, #171717)"
},
"variant:red": {
@@ -361,7 +361,7 @@ export const makaTheme = {
"backgroundColor": "#ffce2f"
},
"variant:error": {
- "backgroundColor": "light-dark(#e33f4a, #ff705d)"
+ "backgroundColor": "light-dark(#c9303a, #ff705d)"
},
"variant:accent": {
"backgroundColor": "light-dark(#0074e2, #6d9cfe)"
@@ -409,7 +409,7 @@ export const makaTheme = {
"--color-warning": "#ffce2f"
},
"variant:error": {
- "--color-error": "#e33f4a"
+ "--color-error": "#c9303a"
}
},
"card": {
diff --git a/apps/desktop/src/renderer/remote-project-directory-dialog.tsx b/apps/desktop/src/renderer/remote-project-directory-dialog.tsx
index 20b447ce3..ec57af420 100644
--- a/apps/desktop/src/renderer/remote-project-directory-dialog.tsx
+++ b/apps/desktop/src/renderer/remote-project-directory-dialog.tsx
@@ -207,6 +207,7 @@ export function RemoteProjectDirectoryDialog(props: {
onOpenChange={(open) => {
if (!open) dismiss();
}}
+ aria-label={copy.remoteDirectoryTitle(host?.name ?? 'Runtime Host')}
purpose="form"
width={560}
maxHeight="calc(100dvh - 64px)"
diff --git a/apps/desktop/stories/module-hubs.stories.tsx b/apps/desktop/stories/module-hubs.stories.tsx
index 1fdd2db49..82ab26e47 100644
--- a/apps/desktop/stories/module-hubs.stories.tsx
+++ b/apps/desktop/stories/module-hubs.stories.tsx
@@ -1056,18 +1056,23 @@ export const ScheduledTasksKeepAwakeExternalWins: Story = {
await new Promise((resolve) => globalThis.setTimeout(resolve, 10));
if (attempt === 49) throw new Error('Keep-awake optimistic value did not render');
}
- await new Promise((resolve) => globalThis.setTimeout(resolve, 100));
- let persisted = body.querySelector<HTMLElement>('[role="menuitemcheckbox"]');
- if (!persisted) {
- settings.click();
- persisted = await waitForStorySelector<HTMLElement>(
- body,
- '[role="menuitemcheckbox"]',
- );
- }
- if (persisted.getAttribute('aria-checked') !== 'true') {
- throw new Error('Keep-awake checkbox diverged from the persisted setting');
+ // The write resolves asynchronously and Astryx may close the menu while
+ // the panel re-syncs its optimistic value from the persisted prop. Poll
+ // for the confirmed value instead of assuming a fixed 100ms settle time;
+ // the latter is fast locally but flakes under Storybook CI load.
+ for (let attempt = 0; attempt < 100; attempt += 1) {
+ let persisted = body.querySelector<HTMLElement>('[role="menuitemcheckbox"]');
+ if (!persisted) {
+ settings.click();
+ persisted = await waitForStorySelector<HTMLElement>(
+ body,
+ '[role="menuitemcheckbox"]',
+ );
+ }
+ if (persisted.getAttribute('aria-checked') === 'true') return;
+ await new Promise((resolve) => globalThis.setTimeout(resolve, 10));
}
+ throw new Error('Keep-awake checkbox diverged from the persisted setting');
},
};
diff --git a/package-lock.json b/package-lock.json
index 548170304..562572714 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,7 +24,7 @@
"devDependencies": {
"@ai-sdk/provider-utils": "5.0.28",
"@astryxdesign/cli": "0.4.5",
- "@astryxdesign/core": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
"@biomejs/biome": "2.5.9",
"@electron/asar": "3.4.1",
"@types/node": "^26.2.0",
@@ -58,8 +58,8 @@
},
"devDependencies": {
"@ant-design/icons-svg": "4.5.0",
- "@astryxdesign/core": "0.4.5",
- "@astryxdesign/theme-neutral": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
+ "@astryxdesign/theme-neutral": "0.5.0",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@fontsource-variable/geist": "^5.3.0",
@@ -363,9 +363,9 @@
}
},
"node_modules/@astryxdesign/core": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/@astryxdesign/core/-/core-0.4.5.tgz",
- "integrity": "sha512-rbGaoAGZq1QImY2VWeWQNAh1ZqQa/KLWnmoOdy13lSjzMcAPDS6WrVv9fZfsNDx+DIG2oySLtMikwZk5WFl1Uw==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@astryxdesign/core/-/core-0.5.0.tgz",
+ "integrity": "sha512-O2lYXrU8+/iRNV9TqOHCj3zhz1NSJxdtytfoQ0Dy/TY7g2CjZTb4/zUpl0EA5hIi4Si1tJxlVf9Uh3LMVALnmg==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -378,16 +378,16 @@
}
},
"node_modules/@astryxdesign/theme-neutral": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/@astryxdesign/theme-neutral/-/theme-neutral-0.4.5.tgz",
- "integrity": "sha512-+xLoTOwgHsQWUWbUVq6vxbCTi6vpIJeXEdkyHXBUE7NqjKl6aJAyqdx5V4SsTOx9fOUeVLPJ5HVtr59u4gKbKQ==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@astryxdesign/theme-neutral/-/theme-neutral-0.5.0.tgz",
+ "integrity": "sha512-7EVMNJ3BCzq4lVyRzDQ9SLt0v03atQCpkXiE2BvdmH3B/nRVQvd+qfMBoUhL6EGsVTqnS3b+PSVU6unNcqulgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"lucide-react": "^1.18.0"
},
"peerDependencies": {
- "@astryxdesign/core": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
"react": ">=19"
}
},
@@ -14117,7 +14117,7 @@
"version": "0.1.0",
"license": "Apache-2.0",
"dependencies": {
- "@astryxdesign/core": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
"@maka/core": "0.1.0",
"clsx": "^2.1.1",
"lucide-react": "^1.33.0",
diff --git a/package.json b/package.json
index 58f1d99c0..490ed9a30 100644
--- a/package.json
+++ b/package.json
@@ -89,7 +89,7 @@
"@ai-sdk/provider-utils": "5.0.28",
"@electron/asar": "3.4.1",
"@astryxdesign/cli": "0.4.5",
- "@astryxdesign/core": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
"@biomejs/biome": "2.5.9",
"@types/node": "^26.2.0",
"esbuild": "^0.28.1",
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 1ccbe9963..c8de4eb33 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -23,7 +23,7 @@
"test:dist": "node --test \"dist/**/*.test.js\""
},
"dependencies": {
- "@astryxdesign/core": "0.4.5",
+ "@astryxdesign/core": "0.5.0",
"@maka/core": "0.1.0",
"clsx": "^2.1.1",
"lucide-react": "^1.33.0",
diff --git a/patches/@astryxdesign+core+0.4.5.patch b/patches/@astryxdesign+core+0.5.0.patch
similarity index 94%
rename from patches/@astryxdesign+core+0.4.5.patch
rename to patches/@astryxdesign+core+0.5.0.patch
index 087c9957a..25e5a1ead 100644
--- a/patches/@astryxdesign+core+0.4.5.patch
+++ b/patches/@astryxdesign+core+0.5.0.patch
@@ -33,7 +33,7 @@ index ff34874..9ec8d7a 100644
export declare function ChatLayout({ children, composer, density, emptyState, scrollButton, scrollRef: externalScrollRef, xstyle, className, style, 'data-testid': testId, ref, ...rest }: ChatLayoutProps): import("react").JSX.Element;
export declare namespace ChatLayout {
diff --git a/node_modules/@astryxdesign/core/dist/Chat/ChatLayout.js b/node_modules/@astryxdesign/core/dist/Chat/ChatLayout.js
-index ea27cd5..7102f8d 100644
+index ff9b9fa..346e01c 100644
--- a/node_modules/@astryxdesign/core/dist/Chat/ChatLayout.js
+++ b/node_modules/@astryxdesign/core/dist/Chat/ChatLayout.js
@@ -28,7 +28,7 @@
@@ -92,7 +92,7 @@ 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 03b89ec..b0a094e 100644
+index 889970f..459e6e8 100644
--- a/node_modules/@astryxdesign/core/dist/Chat/ChatToolCalls.js
+++ b/node_modules/@astryxdesign/core/dist/Chat/ChatToolCalls.js
@@ -122,6 +122,7 @@ function CallRow({
@@ -159,7 +159,7 @@ index 82ae62c..a97eff5 100644
var displayName: string;
}
diff --git a/node_modules/@astryxdesign/core/dist/DropdownMenu/DropdownMenuItem.js b/node_modules/@astryxdesign/core/dist/DropdownMenu/DropdownMenuItem.js
-index 5bf241b..f773a97 100644
+index 446e25b..00eb8b3 100644
--- a/node_modules/@astryxdesign/core/dist/DropdownMenu/DropdownMenuItem.js
+++ b/node_modules/@astryxdesign/core/dist/DropdownMenu/DropdownMenuItem.js
@@ -91,6 +91,7 @@ const itemSizeStyles = {
@@ -178,22 +178,6 @@ index 5bf241b..f773a97 100644
tabIndex: isDisabled ? undefined : -1,
onPointerMove: handlePointerMove,
startContent: icon ? renderIconSlot(icon, {
-diff --git a/node_modules/@astryxdesign/core/dist/Kbd/Kbd.js b/node_modules/@astryxdesign/core/dist/Kbd/Kbd.js
-index 33ed78d..0ecbce6 100644
---- a/node_modules/@astryxdesign/core/dist/Kbd/Kbd.js
-+++ b/node_modules/@astryxdesign/core/dist/Kbd/Kbd.js
-@@ -111,7 +111,10 @@ function detectMac() {
- // Prefer User-Agent Client Hints API (not deprecated)
- const uaData = 'userAgentData' in navigator ? navigator.userAgentData : null;
- if (uaData && typeof uaData === 'object' && 'platform' in uaData) {
-- return /mac/i.test(uaData.platform ?? '');
-+ const uaPlatform = typeof uaData.platform === 'string' ? uaData.platform : '';
-+ if (uaPlatform.trim().length > 0) {
-+ return /mac/i.test(uaPlatform);
-+ }
- }
- // Fallback: navigator.platform (deprecated but still shipped everywhere)
- return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? '');
diff --git a/node_modules/@astryxdesign/core/dist/List/List.js b/node_modules/@astryxdesign/core/dist/List/List.js
index 08b5f7d..94c623b 100644
--- a/node_modules/@astryxdesign/core/dist/List/List.js
@@ -329,7 +313,7 @@ index 0fd8329..7e4ec57 100644
Markdown.displayName = 'Markdown';
\ No newline at end of file
diff --git a/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.d.ts b/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.d.ts
-index e7b8e00..33a2bb7 100644
+index e7b8e00..fad2e72 100644
--- a/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.d.ts
+++ b/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.d.ts
@@ -66,6 +66,12 @@ export interface SideNavItemProps extends BaseProps<HTMLElement> {
@@ -355,7 +339,7 @@ index e7b8e00..33a2bb7 100644
var displayName: string;
}
diff --git a/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.js b/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.js
-index 9853461..590561b 100644
+index d694da7..d0a580c 100644
--- a/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.js
+++ b/node_modules/@astryxdesign/core/dist/SideNav/SideNavItem.js
@@ -210,6 +210,7 @@ export function SideNavItem({
@@ -366,7 +350,7 @@ index 9853461..590561b 100644
children,
collapsible: itemCollapsible,
size = 'md',
-@@ -491,7 +492,7 @@ export function SideNavItem({
+@@ -492,7 +493,7 @@ export function SideNavItem({
const item = /*#__PURE__*/_jsxs("div", {
ref: itemRef,
...stylex.props(styles.root, xstyle),
@@ -375,22 +359,6 @@ index 9853461..590561b 100644
id: `${id}-children`,
role: "group",
"aria-labelledby": `${id}-label`,
-diff --git a/node_modules/@astryxdesign/core/dist/hooks/useHotkeys.js b/node_modules/@astryxdesign/core/dist/hooks/useHotkeys.js
-index 65f9278..f7515e2 100644
---- a/node_modules/@astryxdesign/core/dist/hooks/useHotkeys.js
-+++ b/node_modules/@astryxdesign/core/dist/hooks/useHotkeys.js
-@@ -54,7 +54,10 @@ function isApplePlatform() {
- }
- const uaData = 'userAgentData' in navigator ? navigator.userAgentData : null;
- if (uaData && typeof uaData === 'object' && 'platform' in uaData) {
-- return /mac/i.test(uaData.platform ?? '');
-+ const uaPlatform = typeof uaData.platform === 'string' ? uaData.platform : '';
-+ if (uaPlatform.trim().length > 0) {
-+ return /mac/i.test(uaPlatform);
-+ }
- }
- 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 7a35d1c..50ee70b 100644
--- a/node_modules/@astryxdesign/core/dist/hooks/useStreamingText.d.ts
@@ -561,10 +529,10 @@ index 693d728..7d5724e 100644
}
\ 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 a2da3d9..91a020e 100644
+index f22bb1f..b710951 100644
--- a/node_modules/@astryxdesign/core/src/Chat/ChatToolCalls.tsx
+++ b/node_modules/@astryxdesign/core/src/Chat/ChatToolCalls.tsx
-@@ -390,6 +390,7 @@ function CallRow({call}: {call: ChatToolCallItem}) {
+@@ -399,6 +399,7 @@ function CallRow({call}: {call: ChatToolCallItem}) {
<div
role={hasDetail ? 'button' : undefined}
tabIndex={hasDetail ? 0 : undefined}
@@ -573,10 +541,10 @@ index a2da3d9..91a020e 100644
aria-controls={hasDetail && isDetailOpen ? detailId : undefined}
onClick={toggleDetail}
diff --git a/node_modules/@astryxdesign/core/src/DropdownMenu/DropdownMenuItem.tsx b/node_modules/@astryxdesign/core/src/DropdownMenu/DropdownMenuItem.tsx
-index 8dbf5f6..b778ca9 100644
+index 21bad6a..8e2a03a 100644
--- a/node_modules/@astryxdesign/core/src/DropdownMenu/DropdownMenuItem.tsx
+++ b/node_modules/@astryxdesign/core/src/DropdownMenu/DropdownMenuItem.tsx
-@@ -108,6 +108,12 @@ export interface DropdownMenuItemProps extends Pick<
+@@ -111,6 +111,12 @@ export interface DropdownMenuItemProps extends Pick<
* @default true
*/
hasCloseOnSelect?: boolean;
@@ -589,7 +557,7 @@ index 8dbf5f6..b778ca9 100644
/**
* Visual variant. `'destructive'` renders the label, description, and icon in
* the error color for dangerous actions (e.g. Delete). @default 'default'
-@@ -131,6 +137,7 @@ export interface DropdownMenuItemProps extends Pick<
+@@ -134,6 +140,7 @@ export interface DropdownMenuItemProps extends Pick<
*/
export function DropdownMenuItem({
icon,
@@ -597,7 +565,7 @@ index 8dbf5f6..b778ca9 100644
label,
description,
onClick,
-@@ -165,6 +172,7 @@ export function DropdownMenuItem({
+@@ -168,6 +175,7 @@ export function DropdownMenuItem({
return (
<Item
role="menuitem"
@@ -729,10 +697,10 @@ index ea918b4..d83af73 100644
}
diff --git a/node_modules/@astryxdesign/core/src/SideNav/SideNavItem.tsx b/node_modules/@astryxdesign/core/src/SideNav/SideNavItem.tsx
-index 1c16116..0ca4ad0 100644
+index a05ba4e..c9a10bc 100644
--- a/node_modules/@astryxdesign/core/src/SideNav/SideNavItem.tsx
+++ b/node_modules/@astryxdesign/core/src/SideNav/SideNavItem.tsx
-@@ -315,6 +315,12 @@ export interface SideNavItemProps extends BaseProps<HTMLElement> {
+@@ -322,6 +322,12 @@ export interface SideNavItemProps extends BaseProps<HTMLElement> {
* Right-side content (badges, counts).
*/
endContent?: ReactNode;
@@ -745,7 +713,7 @@ index 1c16116..0ca4ad0 100644
/**
* Sub-items for nesting.
*/
-@@ -378,6 +384,7 @@ export function SideNavItem({
+@@ -385,6 +391,7 @@ export function SideNavItem({
href,
onClick,
endContent,
@@ -753,7 +721,7 @@ index 1c16116..0ca4ad0 100644
children,
collapsible: itemCollapsible,
size = 'md',
-@@ -694,6 +701,7 @@ export function SideNavItem({
+@@ -702,6 +709,7 @@ export function SideNavItem({
const item = (
<div ref={itemRef} {...stylex.props(styles.root, xstyle)}>
{itemElement}
diff --git a/patches/README.md b/patches/README.md
index f7ef9200a..6ed332c9a 100644
--- a/patches/README.md
+++ b/patches/README.md
@@ -45,9 +45,9 @@ Streaming tool-call association for gateways that reuse or omit `index` / `id`
Delete when that guard passes against an unpatched package.
-## `@astryxdesign/core@0.4.5`
+## `@astryxdesign/core@0.5.0`
-Six published component seams drop host-owned state or semantics:
+Five published component seams drop host-owned state or semantics:
- `ChatLayout` needs a conversation identity that resets scroll/unread state
without remounting its composer slot and discarding the live draft.
@@ -72,10 +72,6 @@ Six published component seams drop host-owned state or semantics:
defers activation meanwhile; without the attribute the row announces
"available" to assistive technology and silently ignores the action.
-Blank UA-CH `navigator.userAgentData.platform` must also not mean "not Apple".
-Electron builds with a rewritten identity ship `platform: ''`, which made every
-`mod` hotkey listen for Ctrl and every `Kbd` draw Ctrl on macOS.
-
Streaming text and Markdown expose an explicit `settledText` seam so the
renderer can verify and advance the exact prefix already presented without
replaying it. The default remains progressive for a genuinely new stream, and
diff --git a/scripts/generate-third-party-notices.mjs b/scripts/generate-third-party-notices.mjs
index efe5c4409..d406b3dba 100644
--- a/scripts/generate-third-party-notices.mjs
+++ b/scripts/generate-third-party-notices.mjs
@@ -139,6 +139,7 @@ const MIT_COPYRIGHT_OVERRIDES = new Map([
['@astryxdesign/core@0.3.0', 'Copyright (c) 2026 Meta Platforms, Inc.'],
['@astryxdesign/core@0.4.0', 'Copyright (c) 2026 Meta Platforms, Inc.'],
['@astryxdesign/core@0.4.5', 'Copyright (c) 2026 Meta Platforms, Inc.'],
+ ['@astryxdesign/core@0.5.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'],
[
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@maka.apache.org
For additional commands, e-mail: commits-help@maka.apache.org