Skip to content

fix(agents): keep View transcript visible in narrow Pi and goose activity panes - #1717

Merged
salman1993 merged 4 commits into
mainfrom
piper/activity-view-transcript-narrow
Oct 27, 2026
Merged

salman1993 merged 4 commits into
mainfrom
piper/activity-view-transcript-narrow

Conversation

@salman1993

@salman1993 salman1993 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Problem

At the default profile pane width, the Activity tab for Pi agents hid every View transcript button, and the "This channel" card ran off the right edge. One long conversation name (for example a buzz://message?... link) made the whole list wider than the pane. goose had the same bug.

Fix

Pi and goose now use the shared ActivityLayout styles, InlineHeader and SettingsGroup, the same as Claude Code and Codex already do:

  • Long names get cut off with "…", and the full name shows on hover. The button stays visible.
  • At very narrow widths, the button moves under the name.
  • Rows are divided entries, the button is subtle/sm, and times use formatItemTimestamp, matching the other agent types.
  • goose shows "Reading goose's sessions…" while it loads, so the card isn't empty.
  • Pi's View transcript buttons now include the conversation name in their accessible name, like the others.

Screenshots

These come from a test page that renders the real Pi and goose Activity tabs with sample data, at a 660px pane (the dashed outline). Left is main, right is this PR.

Before (main) After
Pi, dark
goose, dark
Pi, light
goose, light

Visible View transcript buttons: Pi 0/7 → 7/7, goose 0/6 → 6/6.

Images are stored on the piper/pr-1717-screenshots branch. Don't merge it; delete it after this PR lands.

Validation

  • tsc --noEmit
  • vitest run src/bundled/pi src/bundled/goose src/features/agents: 1032 passed
  • design:check and the commit hooks

Deferred: not yet checked in the running app. Steps: open a Pi or goose agent's profile, go to Activity, and leave the pane at its default width. Working means View transcript shows on every row, long names end in "…", and nothing runs past the right edge. Then widen the pane and check that the layout still looks right.

salman1993 and others added 2 commits October 27, 2026 10:23
…vity panes

Use the shared ActivityLayout styles so long conversation names truncate
instead of pushing the button out of the pane.

Co-authored-by: piper <2c910ba970d83c8e7ce8d7d7c72b8f0f229e8a3d18cda630c633393205e76aa2@buzz.block.builderlab.xyz>
Signed-off-by: Salman Mohammed <[email protected]>
…tivity layout

Match Claude Code and Codex: inline header, settings group, divided entries,
subtle small transcript buttons and shared timestamps.

Co-authored-by: piper <2c910ba970d83c8e7ce8d7d7c72b8f0f229e8a3d18cda630c633393205e76aa2@buzz.block.builderlab.xyz>
Signed-off-by: Salman Mohammed <[email protected]>
@salman1993
salman1993 marked this pull request as ready for review October 27, 2026 14:26
@salman1993
salman1993 requested a review from a team as a code owner October 27, 2026 14:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T14:29:29.871867Z f026228 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f026228d6c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/bundled/pi/tabs.tsx Outdated
Comment on lines +806 to +809
) : (
<p className="m-0 text-body-sm text-subtle">
None. A conversation starts when the agent is mentioned.
</p>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Render empty activity lists with EmptyState

When a Pi agent has no recent conversations, this branch renders a plain paragraph inside the newly added framed SettingsGroup; the Goose empty branch repeats the same pattern. The DESIGN.md screen-building decision table and Settings composition explicitly assign settled empty collections to EmptyState and say not to wrap them in another SettingsGroup, so keep the group for populated rows and render an EmptyState for the empty case instead.

AGENTS.md reference: AGENTS.md:L22-L25

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🤖 Fixed in 0e87a7b. SettingsGroup now wraps only populated rows. Empty, loading and error text sits inline under the header, so it isn't framed. I used inline text instead of EmptyState because DESIGN.md says to use 'concise inline status for a small subsection', and this list is a small part of the Activity tab.

goose's Refresh button sat below its "Recent sessions" title; center it the
way the transcript header already does.

Co-authored-by: piper <2c910ba970d83c8e7ce8d7d7c72b8f0f229e8a3d18cda630c633393205e76aa2@buzz.block.builderlab.xyz>
Signed-off-by: Salman Mohammed <[email protected]>
@salman1993

Copy link
Copy Markdown
Contributor Author

Added a commit (d284c2331): goose's Refresh button is now vertically centered with its "Recent sessions" title. The screenshots are in the PR description.

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 One regression-test coverage gap; no introduced functional blocker established.

Comment thread src/bundled/pi/tabs.test.tsx Outdated
await user.click(
within(screen.getByRole("listitem")).getByRole("button", {
name: "View transcript",
name: /^View transcript/,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 [P3] Protect the new accessible name and loading state

The prefix query also matches the old bare View transcript name. Removing Pi's new aria-label still leaves all 40 Pi/goose tab tests passing; removing goose's new loading branch likewise leaves them passing. Assert the exact View transcript: other · channel name here, and add a goose case with pending history.recent that asserts the Reading goose's sessions… status. These checks would protect the two newly added behaviors against regression.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🤖 Fixed in 0e87a7b. The Pi test now checks the exact name View transcript: other · channel. A new goose test holds history.recent pending, checks for Reading goose's sessions…, then releases it and checks the empty state. I confirmed both tests fail if the aria-label or the loading branch is removed.

Keep the shared group for populated rows only; empty, loading and error
text stays inline, per DESIGN.md.

Co-authored-by: piper <2c910ba970d83c8e7ce8d7d7c72b8f0f229e8a3d18cda630c633393205e76aa2@buzz.block.builderlab.xyz>
Signed-off-by: Salman Mohammed <[email protected]>

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 Approved. The prior regression-coverage finding is resolved; no new actionable defects were established. Browser interaction checks passed in Chromium and WebKit. Status framing remains optional design feedback; native/provider behavior and the existing narrow enlarged-text limitation remain outside this approval’s validation coverage.

@salman1993
salman1993 merged commit 361e3de into main Oct 27, 2026
37 checks passed
@salman1993
salman1993 deleted the piper/activity-view-transcript-narrow branch October 27, 2026 15:54
morgmart added a commit that referenced this pull request Oct 27, 2026
* origin/main: (39 commits)
  fix(github): keep PR action menu trigger in place (#1736)
  fix(goose): preserve default-model focus during pending saves (#1495)
  test(fixtures): reduce polling waits and repeated signing (#1493)
  test(inbox): wait for conversation focus before filtering (#1491)
  fix(desktop): keep the main webview running while it is hidden (#1713)
  chore(release): version desktop previews from 0.7.0 (#1643)
  fix(agent-harness): remove the unavailable-tools line from the base prompt (#1715)
  fix(agents): keep View transcript visible in narrow Pi and goose activity panes (#1717)
  fix(github-plugin): prefix GitHub plugin tools with github_ (#1726)
  perf(agents): load Claude and Codex activity without scanning every session (#1674)
  Improve new DM previews, picker performance, and composer focus (#1664)
  Polish individual message reactions and emoji settings (#1628)
  Improve dark-mode separators and composer contrast (#1711)
  Make decision providers plugins, and move TypeSafe into one (#1353)
  fix(avatars): use static pack portraits in chat (#1670)
  fix(channels): read the open thread when returning to a channel (#1639)
  Add app-wide GIF shortcut and composer previews (#1558)
  Add PR failure/conflict actions and sidebar unlinking (#1599)
  Polish queued follow-up previews and controls (#1554)
  feat(conversation): make emoji and mentions built in (#1673)
  ...

Signed-off-by: morgmart <[email protected]>
joahg added a commit to joahg/buzz-app that referenced this pull request Oct 27, 2026
…-stop

* origin/main: (132 commits)
  feat(workflows): add combined filters and recent sorting (block#1699)
  ci: smoke test the browser perf suite on pull requests (block#1662)
  feat(acp): share one ACP client and server pool across harnesses (block#1227)
  Preserve recipient picker rows and scroll position during paging (block#1739)
  Group matching emoji reactions at nine people (block#1740)
  Open channel Canvas from the channel menu in a side-pane tab (block#570)
  fix(github): keep PR action menu trigger in place (block#1736)
  fix(goose): preserve default-model focus during pending saves (block#1495)
  test(fixtures): reduce polling waits and repeated signing (block#1493)
  test(inbox): wait for conversation focus before filtering (block#1491)
  fix(desktop): keep the main webview running while it is hidden (block#1713)
  chore(release): version desktop previews from 0.7.0 (block#1643)
  fix(agent-harness): remove the unavailable-tools line from the base prompt (block#1715)
  fix(agents): keep View transcript visible in narrow Pi and goose activity panes (block#1717)
  fix(github-plugin): prefix GitHub plugin tools with github_ (block#1726)
  perf(agents): load Claude and Codex activity without scanning every session (block#1674)
  Improve new DM previews, picker performance, and composer focus (block#1664)
  Polish individual message reactions and emoji settings (block#1628)
  Improve dark-mode separators and composer contrast (block#1711)
  Make decision providers plugins, and move TypeSafe into one (block#1353)
  ...

Signed-off-by: Joah Gerstenberg <[email protected]>

# Conflicts:
#	src/bundled/voice-notes/VoiceCapture.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants