FE-1793: Unify Chat and Voice conversation presentation - #9829
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
kostandinang
force-pushed
the
ka/fe-1793-conversation-ui
branch
from
September 24, 2026 15:29
6ab7f92 to
1979edd
Compare
kostandinang
changed the base branch from
kostandin/fe-1789-brunch-voice-steering
to
main
September 25, 2026 11:18
3 of 5 tasks
kostandinang
added this pull request to stack #9837
September 25, 2026 11:24
A host can submit text with preserveDraft while an interactive tool is pending. The tool path now honours that flag like the message path, so a background result no longer wipes the person's unsent draft. Co-authored-by: Cursor <cursoragent@cursor.com>
Hosts without a primary label read AI again, a custom label is shown in both input modes, and the attention announcement uses the visible tab label. Waiting for Brunch appears only in Brunch Chat, the working label shows beside stock transcripts, and spoken-turn thinking no longer names Brunch. Co-authored-by: Cursor <cursoragent@cursor.com>
…aming Brunch Chat shows Waiting for Brunch in a fixed status row above the composer, keeps activity, thought and tool disclosure choices while a response streams, bounds long activity, keeps hidden prompt chips in place, and moves voice guidance back into an information popover. Co-authored-by: Cursor <cursoragent@cursor.com>
kube
approved these changes
Sep 29, 2026
kube
previously approved these changes
Sep 29, 2026
The follow scroll fires the same scroll handler as the reader. When content grew by more than 96px mid-animation, the trailing position turned follow off and later tokens stopped pinning the transcript. Only an upward move, which the follow scroll never makes, now stops following.
Card placement came from the resolved interactive definition, which exists only once a call's input is available or its output arrived. A draft tool whose arguments were streaming, or whose call failed, was grouped under Activity and hidden when the fold was collapsed. Placement now follows the registered tool, whatever the call's state.
Each streaming period restarted the elapsed clock, so a settled Activity label showed only the time after the last approval. Active periods now add up, and time spent waiting for a decision is not counted.
…tation Co-authored-by: Cursor <cursoragent@cursor.com>
lunelson
reviewed
Sep 30, 2026
kube
previously approved these changes
Sep 30, 2026
Co-authored-by: Amp <amp@ampcode.com>
lunelson
previously approved these changes
Sep 30, 2026
lunelson
left a comment
Contributor
There was a problem hiding this comment.
Thanks — all threads addressed.
3 tasks done
lunelson
approved these changes
Oct 1, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
Forward the active and stopped state to stock tool rows so they show elapsed time and Cancelled, attach the stopped note only to assistant turns with a transcript-level note for a turn stopped before any reply, and keep the compact Stop treatment in the Brunch presentation. Refs FE-1793 Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2fcd04d. Configure here.
This was referenced Oct 1, 2026
This branch was successfully deployed
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 free
to 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.

🌟 What is the purpose of this PR?
Make Chat and Voice turns easier to follow while keeping their existing execution behavior. This PR now contains only conversation presentation; permissions/reset and experiment lifecycle are reviewed separately above it.
🔗 Related links
🚫 Blocked by
No prerequisite PR. This PR targets
main; voice steering #9826 is independent.Stack: main → this PR → #9856 → #9857 → #9836.
🔍 What does this change?
aiAssistant.presentation: "brunch"option instead of inferring it from the tab label. Other hosts keep the stock presentation: reasoning and tool calls shown directly, the stock placeholder, Stop styling and auto-layout labels, and no Copy/Retry. Tool status dots and reasoning styling are shared.preserveDraftflag on composer text submissions, a Live microphone test action, and a 0.05 step for the speech-speed slider.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
@hashintel/petrinaut.📜 Does this require a change to the docs?
🕸️ Does this require a change to the Turbo Graph?
🐾 Next steps
Review permissions, experiments and mediation as separate feature layers above this PR. This PR remains draft.
🛡 What tests cover this?
git diff --checkpassed.❓ How to test this?
turbo run build test:unit lint:tsc lint:eslint --filter @hashintel/petrinaut --filter @apps/petrinaut-websitewith the repo-pinned Node and Turbo versions.BrunchWithVoiceAvailable,ChatTurn, andStreamingReasoningStorybook fixtures.📹 Demo
Controlled Storybook recordings; no live provider or microphone is exercised.
Chat Activity
pr-9829-chat-activity.mp4
Floating Voice dock
pr-9829-floating-voice-dock.mp4