Skip to content

Show thread header actions as their icon, with the label as tooltip - #6521

Open
dillonzq wants to merge 4 commits into
get-bb:mainfrom
dillonzq:thread-header-action-icons
Open

dillonzq wants to merge 4 commits into
get-bb:mainfrom
dillonzq:thread-header-action-icons

Conversation

@dillonzq

@dillonzq dillonzq commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Human comments

What was wrong

ThreadDetailHeader rendered a placement: "header" thread action as an outline button containing only action.label (and a split button of label-only halves for several), even though every registration and evaluated PluginThreadAction already carries a required icon. Beside the icon-only workspace Open button this produced a row of wide text buttons that grows with every plugin adding one. See #6520 and audit question 5 in docs/api_to_audit.md.

What changed

  • apps/app/src/views/thread-detail/ThreadDetailHeader.tsx: one header action is now an icon-only, square outline button (same subtle icon color and padding as Open) with aria-label = label and a bottom tooltip showing label. The trigger wraps the button in a span so the tooltip still shows while the action is disabled. With several actions, the split button's main half is the first action's icon with its label as primaryTooltip, and menu rows show icon + label.
  • apps/app/src/components/ui/split-button.tsx: the primary tooltip wraps its trigger when primaryAction.disabled is true, so a disabled main action still shows its tooltip. Open passes disabled at the top level, so it is unaffected.
  • Compact and narrow-pane folding into the thread menu is unchanged (those rows already render icon + label).
  • Docs: the PluginThreadActionPlacement contract comment, frontend-registration.md, the Plugin Guide "Thread header buttons" bullet, and the experimental_threadAction audit entry (description + question 5, which no longer asks about an icon-only form).
  • PLUGIN_SDK_VERSION and packages/plugin-sdk/package.json bumped to 0.6.98, because check-plugin-sdk-version counts the contract comment change as an SDK surface change. No SDK type, wire, or CLI change; HOST_DAEMON_PROTOCOL_VERSION is untouched.

How you verified

  • ThreadDetailHeader.test.tsx: new test "shows a header action as its icon, with its label as the name and tooltip" (button has no text, renders the action's icon, keyboard focus shows a tooltip with the label, click runs the action). The split-button test now also asserts the main half and each menu row render the action icon. Both fail on main without the change and pass with it. Existing assertions that located Commit by text now use its button role/name. Fixtures use a registered icon (GitMerge), because the previous Rocket is not a bb icon and fell back to Zap.
  • pnpm exec turbo run typecheck --filter=@bb/app --filter=@get-bb/plugin-sdk --filter=bb-plugin-plugin-api-docs: pass.
  • pnpm exec turbo run test --filter=bb-plugin-plugin-api-docs --filter=bb-plugin-bb--git: 75 + 249 passed.
  • vitest run src/views/thread-detail src/components/ui/split-button.test.tsx src/components/thread/ThreadActionsMenu.test.tsx in apps/app: 308 passed, 1 skipped. apps/server plugin-authoring-docs.test.ts: 19 passed.
  • Not done: a visual check in a running app or iOS Simulator.

Fixes #6520

🤖 Generated with Claude Code

AGENT GENERATED

dillonzq and others added 4 commits October 29, 2026 12:34
Header thread actions rendered their label as a text button while the
workspace Open button beside them is icon-only. Render the evaluated
action's icon instead, with the label as accessible name and tooltip;
split-button menu rows show icon and label. Update the contract comment,
authoring reference, Plugin Guide bullet and audit entry.

Fixes get-bb#6520

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	packages/domain/src/plugin-sdk-version.ts
#	packages/plugin-sdk/package.json
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

Thread header actions: show the action's icon, with its label as the tooltip

1 participant