Uh oh!
There was an error while loading. Please reload this page.
feat: migrate conversation surfaces to Astryx - #1728
Merged
Conversation
jackwenerforce-pushed
the
feat/slice9-astryx-conversation
branch
from
August 1, 2026 04:14
2280ebf to
cde3449CompareUh oh!
There was an error while loading. Please reload this page.
Astro-Han added a commit
that referenced
this pull request
Aug 1, 2026
#1728 moved the conversation surface onto Astryx primitives but left four E2E specs pointing at the removed DOM: - permission-mode-surface: the permission picker moved from the footer's .maka-composer-left-controls to the Astryx header context (.maka-composer-header-context); the Selector trigger is still a combobox, so only the container selector changed. - scroll-geometry / session-health-notice: the composer card anchor .maka-composer-inner is gone; .maka-composer-astryx now carries the centered measure (width: min(var(--maka-chat-measure), 100%)). - disclosure-output: live tools now render through Astryx ChatToolCalls; a single running tool is one collapsed CallRow (role=button) whose detail mounts on demand, replacing the [data-processing=block] wrapper and its fixture readiness selector. Two assertions also tracked deliberate Astryx changes: the turn gap is 16px (ChatMessageList density=compact gap=4) instead of 12px, and a fully pinned scroller can read a 1px distance because Chromium keeps sub-pixel scrollTop values (observed 30106.5), so the pin contract accepts <= 1px. Full suite: 93 passed.
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ChatMessage,ChatMessageBubble,ChatMessageList, andChatToolCalls; remove the duplicate product-owned Processing disclosure while preserving runtime identity, streaming order, redaction, and tool detail contentChatComposerslot hierarchy and default low elevation: staged context usesChatComposerDrawer, attach/voice actions useheaderActions, permission usesheaderContext, mode/Skills usefooterActions, model/thinking usesendActions, and Send/Stop usesendButton#storybook-roottypography parity, and addProduct/Chat Surface/Astryx Native Conversationas the canonical long-conversation review stateVerification
npm --workspace @maka/ui run test:dist— 297 passednpm --workspace @maka/desktop run test:dist— 2013 passednpm --workspace @maka/desktop run typechecknpm --workspace @maka/desktop run build-storybooknpm --workspace @maka/desktop run smoke:real-window— production build and clean Electron fixture launch completed with no ErrorBoundary/crash; the manual native-window resize checklist was not signed offgit diff --checkVisual evidence
Final live Electron screenshot — paste it directly below this line before merge:
Review focus
Astryx 0.1.9 does not expose imperative selection/caret control through
ChatComposerInput, so the existing product textarea remains the only behavior authority inside the nativeChatComposerinput slot. There is no compatibility wrapper or second draft/IME/history state.ChatLayoutis intentionally not mounted: 0.1.9 always installs its own stream-scroll/new-message ownership and has no presentational or disabled-scroll mode, while Maka's existing scroll authority also owns search-target focus, content-visibility warmup, and pinned-bottom behavior. Mounting both would duplicate scroll authority, and moving the Composer intoChatViewwould cross the app-shell ownership boundary.Ordinary pending/running/complete/error tools use
ChatToolCallsdirectly. Permission, sandbox-denied, and interrupted states stay on the existing product disclosure because Astryx 0.1.9 cannot represent them. The publicChatToolCalls.labelprop is currently ignored by 0.1.9 and grouped labels remain the upstreamN tool calls; this PR does not fork or imitate the component to override that behavior.