Skip to content

FE-1793: Brunch assistant follow-ups and improvements - #9886

Merged
kostandinang merged 11 commits into
mainfrom
ka/fe-1793-merged-stack-fixes
Oct 2, 2026
Merged

kostandinang merged 11 commits into
mainfrom
ka/fe-1793-merged-stack-fixes

Conversation

@kostandinang

@kostandinang kostandinang commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

🌟 What is the purpose of this PR?

Fix the Bugbot findings left open when the FE-1793/FE-1795 stack merged that #9883 doesn't cover: Brunch tabs fading like stock tabs, and a Live voice turn splitting across two conversations. It also stops Activity hiding its last tools behind a nested scroll, and shows the wait for Brunch where that turn's Activity will appear. #9883 fixes the stock styling findings.

🔗 Related links

🚫 Blocked by

  • #9883, branch ka/fe-1808-presentation-split.

Stack: main → #9883 → this PR.

🔍 What does this change?

  • Tabs: the stock tab fade and hover colours now apply only to stock tabs, so Brunch tabs get their own selected and hover styling.
  • Activity: Brunch Activity no longer caps its height with an inner scrollbar. The cap hid the last tools ("Used 5 tools" showed four) and the newest tool while streaming. The transcript already scrolls to follow new content.
  • Waiting row: the waiting row now sits in the transcript where the turn's Activity will appear, and the Working… header that replaces it keeps the spinner until the work ends. The status row above the composer now shows only while the host tab hides the chat.
  • Activity wording: turn labels no longer name Brunch. The waiting row and the Ledger status read Working…, the Voice brief reads Preparing request, Sending request, then Request sent, and the Voice dock says Answer captured. Working on it. Build with Brunch in the File menu stays.
  • Activity stays put: Live's spoken reply no longer takes the Working… row, which used to jump down when Brunch's response arrived. The label also stays still when the spinner changes to the Activity icon.
  • Live turns across a conversation switch:
    • A turn that reaches submission after you've switched conversations isn't sent to the new one. Its words go back to the composer as unsent, and Live is told the request wasn't submitted.
    • A turn already submitted when you switch stays in its original conversation, and Live is told so.
    • Captions and previews stay in the conversation the turn began in, as before.

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

  • Adds patch changesets for @hashintel/petrinaut.

📜 Does this require a change to the docs?

  • Yes. docs/ai-assistant.md now says Activity scrolls with the conversation and describes where the waiting state appears.

🕸️ Does this require a change to the Turbo Graph?

  • No.

⚠️ Known issues

  • The website can't hit the Live bug today: switching conversations remounts the Live control and ends the session. The fix covers LiveConversationControl's support for a session that outlives a conversation switch, which its tests exercise.
  • One bridge test expected a turn prepared before a switch to still be sent afterwards, which was the bug. New tests replace it.
  • Not tested with a real provider or microphone.

🐾 Next steps

None planned.

🛡 What tests cover this?

  • New: stock tabs keep their fade and Brunch tabs don't; stock and Brunch transcripts keep their own bubble and spacing.
  • New: Activity lists all five of five counted tools without an inner scrollbar.
  • Updated: waiting shows a pending Working… row in the transcript, which the Working… fold replaces; with Ledger selected, the status row reports Working…. Brief, status and dock tests use the new labels. The BrunchWaitingForResponse story's play test passes in Chat and Voice.
  • New: Live's spoken reply never takes the Working… row, in Voice or Chat. The BrunchVoiceTurnActivity story checks that the Activity label stays in the same spot from waiting to finished, and BrunchStreamingActivity now checks the same through streaming updates.
  • New: a turn prepared across a switch isn't sent, its words stay sendable, Live is told, and the next turn sends normally; a turn already sent is released and never summarized in the new conversation.
  • On top of FE-1808: Separate stock and Brunch assistant presentations #9883, the Petrinaut UI suite (1,174 tests) and live-brunch-bridge.test.ts (89 tests) pass, apart from a known local localStorage failure that also happens on main.

❓ How to test this?

  1. Run turbo run lint:tsc lint:eslint test:unit --filter @hashintel/petrinaut --filter @apps/petrinaut-website.
  2. In a stock host with an extra tab, check that the inactive tab still fades.
  3. In Brunch, check that the inactive tab doesn't fade and that Activity lists every tool without its own scrollbar.
  4. Send a Brunch message and check that Working… appears in the conversation with a spinner, then gains a chevron as the Activity header without moving the composer. In Voice, check that both appear under Live's spoken reply in the same spot.

📹 Demo

A Voice turn from waiting to finished. Before, Working… attaches to Live's spoken reply and drops once Brunch responds. After, Working… waits under the spoken reply and gains its chevron in the same spot once Brunch's work starts.

pr-9886-activity-labels.mp4

kostandinang and others added 2 commits October 1, 2026 09:40
…unch presentations

Restore main's stock transcript, tool rows, tabs, scrolling and composer behind the default presentation, and give the stock and Brunch transcripts, tool lists, composer and status row their own files. Stopped in-progress stock tools show Cancelled instead of a spinner.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
petrinaut Ready Ready Preview Oct 2, 2026 1:36pm UTC
petrinaut-docs Ready Ready Preview Oct 2, 2026 1:36pm UTC
2 Skipped Deployments
Project Deployment Actions Updated
hash Ignored Ignored Preview Oct 2, 2026 1:36pm UTC
hashdotdesign-tokens Ignored Ignored Preview Oct 2, 2026 1:36pm UTC

Request Review

kostandinang and others added 4 commits October 1, 2026 12:09
A failed stream never ends its reasoning part, so the stock disclosure stayed open with a running timer after an error.

Co-authored-by: Cursor <cursoragent@cursor.com>
Make the stock active and inactive tab treatment a compound variant of the stock style, and cover stock transcript chrome and tab styling for both presentations.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the area/apps > hash.design Affects the `hash.design` design site (app) label Oct 1, 2026
@kostandinang kostandinang changed the title FE-1793: Keep Brunch chrome out of stock hosts and Live turns within one conversation FE-1793: Follow up on the merged Brunch assistant stack Oct 1, 2026
@kostandinang kostandinang changed the title FE-1793: Follow up on the merged Brunch assistant stack FE-1793: Brunch assistant follow-ups and improvements Oct 1, 2026
@kostandinang
kostandinang marked this pull request as ready for review October 1, 2026 11:46
@cursor

cursor Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes voice/Live submission and settlement when users switch conversations, plus visible Brunch transcript layout; well-covered by tests but touches mediation and UI state paths.

Overview
Refines Brunch Chat/Voice UX and fixes Live turns crossing conversation switches.

Transcript & Activity: Working… with a spinner now appears in the transcript where that turn’s Activity will land (not above the composer except on the Ledger host tab). Live’s spoken-reply messages no longer host the working row; a pending BrunchWorkPending placeholder keeps the label position when work streams in. Activity drops the inner max-height scrollbar so every tool stays visible in the main transcript scroll. The Activity header keeps the spinner until work finishes; copy shifts from “Brunch…” to Working…, Preparing request / Sending request / Request sent, and Answer captured. Working on it.

Tabs: Stock tab fade/opacity applies only when styleVariant is stock, so Brunch tabs keep their own hover/selected styling.

Live bridge: Turns prepared or submitted in a conversation that is no longer active are withdrawn or released—unsent text returns to the composer with notices to Live; in-flight submitted work no longer settles or summarizes in the new conversation.

Voice control: Re-selecting Voice while a session is still stopping is treated as connecting until the prior session ends, then auto-starts the next session (no retry UI flash).

Docs, changesets, and tests/stories cover the new placement, labels, tab styling, tool list height, and conversation-switch behavior.

Reviewed by Cursor Bugbot for commit 3366380. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 6049ec8. Configure here.

@kostandinang kostandinang self-assigned this Oct 1, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@kostandinang
kostandinang added this pull request to the merge queue Oct 2, 2026
Merged via the queue into main with commit c80d0ae Oct 2, 2026
61 checks passed
Base automatically changed from ka/fe-1808-presentation-split to main October 2, 2026 21:56
@kostandinang
kostandinang requested a review from a team as a code owner October 2, 2026 21:56
@kostandinang
kostandinang deleted the ka/fe-1793-merged-stack-fixes branch October 2, 2026 21:56

This branch was successfully deployed

3 active (1 outdated) deployments
Preview – petrinaut-docs — 33663803 Deployed Oct 2, 2026 by vercel[bot]
Preview – petrinaut — 33663803 Deployed Oct 2, 2026 by vercel[bot]
Preview – hash — e57df9ad Deployed Oct 1, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps > hash.design Affects the `hash.design` design site (app) area/apps area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

2 participants