Skip to content

fix(agents): keep the Model settings row full width - #2577

Merged
tellaho merged 1 commit into
mainfrom
tho/model-settings-row-width
Nov 5, 2026
Merged

tellaho merged 1 commit into
mainfrom
tho/model-settings-row-width

Conversation

@tellaho

@tellaho tellaho commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Category: fix
User Impact: In an agent's settings, the Model picker sits on the right edge of its row and shows the full model name again, lined up with Harness and Thinking.

Problem: Since #2423 (844368d26), the Model trigger in agent settings floats mid-row and truncates the model name (for example, "G. · Default"), while the rows around it keep their triggers on the right.

Solution: That change wrapped every ModelPicker in a flex container so compact pickers could share a line with the effort control. In a Settings group that wrapper shrinks the preference row to fit its content. Only compact pickers use the flex wrapper now; Settings rows stack at full width, as they did before.

Originating thread: Buzz.

File changes

src/features/agents/ModelPicker.tsx
Apply the flex wrapper only to compact pickers, so a preference row keeps the full width of its Settings group.

tests/browser/model-picker-row.fixture.tsx, tests/browser/model-picker-row.html
Render the real ModelPicker above a Thinking Select inside a SettingsGroup, matching the harness settings layout.

tests/browser/model-picker-row.spec.mjs
Assert that the Model trigger ends at its row's right edge, aligned with Thinking and not truncated. jsdom can't measure layout, so this runs in the browser suite. Without the fix it fails in Chromium and WebKit (the row measures 257px instead of 503px).

Reproduction steps

  1. Open an agent that uses the Codex harness and go to its Identity settings.
  2. Look at the Model row: its trigger should end on the right edge, in line with Harness and Thinking, and show the full model name.

Screenshots

These come from the layout test fixture, which renders the real ModelPicker and Select in a Settings group. They are not full-app captures.

Light Dark
Before Before, light: Model trigger mid-row and truncated Before, dark: Model trigger mid-row and truncated
After After, light: Model trigger at the right edge with the full name After, dark: Model trigger at the right edge with the full name

🤖 Generated with Claude Code

The effort-capable picker wrapper made every Model row a shrink-wrapped flex item, so in Settings its trigger sat mid-row and truncated. Only compact triggers share a line now.

Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <[email protected]>
@tellaho
tellaho marked this pull request as ready for review November 5, 2026 04:08
@tellaho
tellaho requested a review from a team as a code owner November 5, 2026 04:08

@kazemek21 kazemek21 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.

Kyle reviewed this PR and the Nexus review-tracker notes and approved with no comments.

Posted by Codex (gpt-6.1-sol) on behalf of kylez.

@tellaho
tellaho merged commit 9e0d60a into main Nov 5, 2026
43 checks passed
@tellaho
tellaho deleted the tho/model-settings-row-width branch November 5, 2026 07:54
ljknight added a commit to ljknight/buzz-app that referenced this pull request Nov 5, 2026
* origin/main:
  Keep /leave commands out of channel history (block#2476)
  fix(agents): ask before switching or closing drops unsaved edits (block#2503)
  fix(agents): keep the Model settings row full width (block#2577)
  feat(github): show a pull request's changes beside its summary (block#2492)
  fix(search): open an existing DM from a ⌘K person row without a relay open; cover hidden-DM previews (block#2519)
  feat(search): show channel type icon in search result subtitles (block#2521)
  test(browser): bind port-0 fixture servers where the OS assigns (block#2564)
  test(browser): fix six journey sync flakes from the 2026-11-04 sweep (block#2566)
  fix(channels): ask before Escape, Close or an outside click drops a template draft (block#2501)
  fix(channels): render the channel details description as linked Markdown with a label-only Edit target (block#2506)
  fix(agents): let Back and Forward shortcuts traverse provider dialogs (block#2509)
  Fix Inbox recovery after a delayed Retry (block#2496)

# Conflicts:
#	docs/buzz-help.md
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…-service

* origin/main: (68 commits)
  fix(messages): keep decoded images across virtualized remounts (#2474)
  Keep /leave commands out of channel history (#2476)
  fix(agents): ask before switching or closing drops unsaved edits (#2503)
  fix(agents): keep the Model settings row full width (#2577)
  feat(github): show a pull request's changes beside its summary (#2492)
  fix(search): open an existing DM from a ⌘K person row without a relay open; cover hidden-DM previews (#2519)
  feat(search): show channel type icon in search result subtitles (#2521)
  test(browser): bind port-0 fixture servers where the OS assigns (#2564)
  test(browser): fix six journey sync flakes from the 2026-11-04 sweep (#2566)
  fix(channels): ask before Escape, Close or an outside click drops a template draft (#2501)
  fix(channels): render the channel details description as linked Markdown with a label-only Edit target (#2506)
  fix(agents): let Back and Forward shortcuts traverse provider dialogs (#2509)
  Fix Inbox recovery after a delayed Retry (#2496)
  feat(composer): optional ⌘/Ctrl+Enter to send (#2331)
  test: use keyboard activation for reply caret setup (#2557)
  test: settle member search before invitation expansion (#2532)
  test(agent-command): isolate the copied executable writer (#2537)
  test(sidebar): wait for the rolled-back row to leave Starred before collapsing Work (#2574)
  test(browser): click timeline rows only after the timeline settles (#2560)
  ci: split Vitest across six shards so 3/4 stops hitting the job cap (#2571)
  ...

# Conflicts:
#	src/app/Settings.tsx
#	src/bundled/goose/sessions.test.ts
johnmatthewtennant added a commit that referenced this pull request Nov 5, 2026
Signed-off-by: John Tennant <[email protected]>

* origin/main: (47 commits)
  fix(messages): pass verified labels to the forward recipient picker (#2633)
  feat(messages): forward a message to a person (#2167)
  docs(agents): design relay-facing paths for the whole fleet at once (#2620)
  Route debug sessions through the credential helper (#2541)
  perf(search): skip no-op slow-search resets on each keystroke (#2605)
  perf(agents): dedupe channel members only for dm connection setup (#2603)
  perf(search): keep the search tab row across palette keystrokes (#2588)
  perf(sidebar): skip the hidden actions menu in solo and team headers (#2582)
  perf(search): rank each palette name once per render (#2606)
  perf(sidebar): skip re-rendering unchanged animated channel rows (#2572)
  feat(settings): follow the system clock and let people hide message times (#2440)
  feat(plugins): repository access rules for Git imports (#2484)
  feat(desktop): add Settings to the macOS app menu (#2594)
  Preserve and renew external app approval (#2464)
  fix(direct-messages): show verified identity in new message recipient search (#2585)
  Offer plugin updates from the Buzz shell (#2491)
  fix(messages): keep decoded images across virtualized remounts (#2474)
  Keep /leave commands out of channel history (#2476)
  fix(agents): ask before switching or closing drops unsaved edits (#2503)
  fix(agents): keep the Model settings row full width (#2577)
  ...
agude-sq added a commit to agude-sq/buzz-app that referenced this pull request Nov 5, 2026
* origin/main: (43 commits)
  feat(settings): follow the system clock and let people hide message times (block#2440)
  feat(plugins): repository access rules for Git imports (block#2484)
  feat(desktop): add Settings to the macOS app menu (block#2594)
  Preserve and renew external app approval (block#2464)
  fix(direct-messages): show verified identity in new message recipient search (block#2585)
  Offer plugin updates from the Buzz shell (block#2491)
  fix(messages): keep decoded images across virtualized remounts (block#2474)
  Keep /leave commands out of channel history (block#2476)
  fix(agents): ask before switching or closing drops unsaved edits (block#2503)
  fix(agents): keep the Model settings row full width (block#2577)
  feat(github): show a pull request's changes beside its summary (block#2492)
  fix(search): open an existing DM from a ⌘K person row without a relay open; cover hidden-DM previews (block#2519)
  feat(search): show channel type icon in search result subtitles (block#2521)
  test(browser): bind port-0 fixture servers where the OS assigns (block#2564)
  test(browser): fix six journey sync flakes from the 2026-11-04 sweep (block#2566)
  fix(channels): ask before Escape, Close or an outside click drops a template draft (block#2501)
  fix(channels): render the channel details description as linked Markdown with a label-only Edit target (block#2506)
  fix(agents): let Back and Forward shortcuts traverse provider dialogs (block#2509)
  Fix Inbox recovery after a delayed Retry (block#2496)
  feat(composer): optional ⌘/Ctrl+Enter to send (block#2331)
  ...

# Conflicts:
#	docs/buzz-help.md
tellaho added a commit that referenced this pull request Nov 5, 2026
## Overview

**Category:** improvement
**User Impact:** Users can see which agents run remotely and understand
where their work and files live.

**Problem:** Remote and local agents looked alike in creation and
conversation, leaving people to infer what an agent could access and
whether it needed their desktop online.

**Solution:** Group harness choices by location, explain remote work
before creation, and add confirmed remote cues to settings, mentions,
messages and activity. Builderlab sign-in is explicit, and availability
and file-access promises stay specific to Builderlab.


This desktop change excludes the separate Model-row width fix in #2577.
The only shared design-system change is the Tabler cloud export.

## Changes

<details>
<summary>File changes</summary>

**docs/agents.md**
Document configuration-owned creation readiness and the presentational
provider action beside Harness.

**docs/buzz-help.md**
Explain remote creation, sign-in, location cues and file access in the
bundled help.

**src/bundled/agent-activity/ActivityAccessory.test.tsx**
Cover remote-location fallback and precedence of received activity
details.

**src/bundled/agent-activity/ActivityAccessory.tsx**
Show confirmed remote location when a working agent has no current step
details.

**src/bundled/agents/AgentCard.module.css**
Align static harness badges with the card’s existing model selector.

**src/bundled/agents/AgentCreate.module.css**
Lay out the remote introduction and its animated copy within the
existing dialog. Keep ordinary words grouped while permitting overlong
names to wrap inside the speech bubble.

**src/bundled/agents/AgentCreateDialog.test.tsx**
Cover remote introduction, retained drafts, readiness, dismissal, focus
and failed creation, including imported agent cards passing through the
introduction and Back.

**src/bundled/agents/AgentCreateDialog.tsx**
Group harness choices and introduce remote execution before creating an
agent.

**src/bundled/agents/AgentSettingsHost.test.tsx**
Cover Remote and Local harness groups without changing selection
behavior.

**src/bundled/agents/AgentSettingsHost.tsx**
Group available and unavailable harness choices by execution location.

**src/bundled/agents/AgentsPage.test.tsx**
Verify creation remains integrated with the agents page.

**src/bundled/agents/RemoteAgentIntroduction.test.tsx**
Cover streamed copy, reduced motion and provider-specific availability
claims.

**src/bundled/agents/RemoteAgentIntroduction.tsx**
Introduce the selected remote agent using its name and avatar, with
Builderlab-specific guidance where confirmed.

**src/bundled/builderlab/README.md**
Document explicit sign-in and the settled remote execution guidance.

**src/bundled/builderlab/adapter-type/Activity.test.tsx**
Keep activity integration fixtures aligned with the provider contract.

**src/bundled/builderlab/adapter-type/Create.test.tsx**
Cover visible disabled fields, sign-in readiness, delayed cancellation
and retained configuration.

**src/bundled/builderlab/adapter-type/Create.tsx**
Put Sign in beside Harness and keep Model and Thinking visible until
sign-in completes.

**src/bundled/builderlab/adapter-type/Instructions.test.tsx**
Cover signed-in remote guidance and the shared-runtime disclosure,
including their absence while signed out or signing in.

**src/bundled/builderlab/adapter-type/Instructions.tsx**
Show the compact remote execution note and retain the default
shared-runtime disclosure beside availability and file-access guidance
while signed in.

**src/bundled/builderlab/adapter-type/SignInFooter.tsx**
Share provider sign-in progress timing between creation and settings
while retaining native recovery through Identity and broker-specific
account switching. Keep the profile pill explicit about the account
state: Signed out of Builderlab.

**src/bundled/builderlab/adapter-type/index.ts**
Register the provider-owned sign-in action beside Harness.

**src/bundled/builderlab/index.test.tsx**
Cover provider registration, sign-in guidance and creation recovery
through the real plugin wiring. Control catalog readiness and navigation
completion, bulk-fill fixed setup text, and capture the active phase and
DOM when a journey aborts.

**src/bundled/builderlab/login/use-sign-in-progress.ts**
Own the shared pending state and delayed browser sign-in guidance.

**src/bundled/mentions/MentionCompletion.tsx**
Label confirmed remote candidates in completion results.

**src/bundled/mentions/MentionPicker.tsx**
Show the same remote label in the mention picker.

**src/bundled/mentions/mention-candidates.test.ts**
Verify remote labels come from confirmed execution metadata.

**src/bundled/mentions/mention-candidates.ts**
Carry execution metadata into mention candidates.

**src/bundled/mentions/solo-agents.test.tsx**
Cover remote and local labels in both mention surfaces.

**src/features/agents/AgentExecutionNote.tsx**
Render the compact cloud, Remote agent heading and provider location
subtitle.

**src/features/agents/choices.test.ts**
Verify shared choices preserve execution location and runtime.

**src/features/agents/choices.ts**
Expose execution evidence through the shared agent inventory.

**src/features/agents/execution-location.test.ts**
Cover known, unknown and local execution classification.

**src/features/agents/execution-location.ts**
Centralize location copy and keep Builderlab capabilities specific to
that runtime.

**src/features/agents/local.ts**
Describe optional execution and runtime evidence on local inventory
entries.

**src/features/agents/service.test.ts**
Verify saved remote bindings update the inventory and its cache.

**src/features/agents/service.ts**
Expose confirmed remote bindings and a presentational provider creation
action; configuration owns readiness.

**src/features/agents/tabs.test.tsx**
Keep tab fixtures aligned with the execution-aware settings contract.

**src/features/agents/tabs.tsx**
Place remote execution guidance within existing settings sections.

**src/features/messages/ActivityGroupPreview.tsx**
Show remote clouds for the authors of grouped activity steps.

**src/features/messages/ActivityStepPreview.module.css**
Align the cloud with the current step text.

**src/features/messages/ActivityStepPreview.tsx**
Accept a leading cue within the existing activity preview.

**src/features/messages/AgentResponsePreview.tsx**
Allow activity previews to show the remote byline hint beside the
author.

**src/features/messages/MessageComposer.test.tsx**
Verify remote targets add no workspace button and retain existing model,
effort, compaction, draft and focus behavior for both remote and local
targets.

**src/features/messages/MessageRow.test.tsx**
Cover remote bylines, author-specific activity clouds and local or
unknown cases.

**src/features/messages/MessageRow.tsx**
Show confirmed remote location beside agent authors and recorded
activity.

**src/features/messages/RemoteAgentHint.module.css**
Pulse active remote clouds while respecting reduced motion.

**src/features/messages/RemoteAgentHint.tsx**
Reuse confirmed inventory evidence for remote bylines and activity
clouds.

**src/features/messages/TypingIndicator.test.tsx**
Cover remote working previews, real activity precedence and missing or
local evidence.

**src/features/messages/TypingIndicator.tsx**
Show a remote cue for the displayed agent while it works.

**src/features/profiles/ProfilePeek.test.tsx**
Align profile expectations with the chosen location surfaces.

**src/shared/design-system/icons/index.ts**
Export the Tabler cloud used by the remote cues.

**tests/browser/agent-creation-review.spec.mjs**
Verify animated glyph containment for a valid long name at narrow/wide
widths and enlarged text in both themes, while ordinary words remain
grouped.

</details>

## Reproduction steps

1. Open Create agent and inspect Harness. Choices appear under Remote
and Local. Select Builderlab while signed out: Sign in sits beside
Harness, and Model, Thinking and Create agent remain disabled.
2. Begin sign-in. A spinner appears first; browser guidance and Cancel
sign-in appear after three seconds. Cancel and verify the draft remains.
Complete sign-in and choose a model and thinking level.
3. Give the remote agent a name and avatar, then choose Create agent.
Verify the introduction uses that identity. Back returns to the retained
draft; Let’s go creates the agent. With reduced motion enabled, the copy
appears immediately. At 480px width and 20px root text, try the valid
name `production-infrastructure-validation-automation-agent`: its
animated text wraps inside the speech bubble.
4. Open the signed-in Builderlab agent’s Identity settings. The cloud
accompanies Remote agent and the smaller Runs on a Builderlab machine
subtitle. In Settings, Workspace explains that the runtime is shared
with your other agents in this workspace by default, followed by
availability and file-access guidance. When the shared session is signed
out, Workspace hides and the profile pill says Signed out of Builderlab.
Organization sign-out is managed in Identity.
5. Mention a known remote agent without model or session controls: no
workspace button appears beside Send. When model, effort or session
controls are available, open the existing gauge. Select a model, change
effort and compact the session, then dismiss the popover. Verify the
draft and recipients remain and focus returns to the gauge. Check local
targets retain the same controls.
6. Start a remote turn. Remote appears beside the owner’s agent name; a
cloud precedes received activity, pulses while active and stays still
afterward. Enable reduced motion and verify the cloud stays still.
Unknown execution locations receive no remote cue.
7. If a non-Builderlab remote runtime is available, verify its generic
wording makes no Builderlab availability or file-access promises.

## Validation

- Integrated main `fd6296a5c067189e713e28a900dd0547919452c8` into the
feature with merge commit `e21dba8a1530fdcf676209b9fc100b714a721c24`,
preserving published history. The shared native Builderlab session,
agent-card draft adoption, remote introduction and configuration-owned
readiness coexist. The current mainline composer implementation is
retained, including the gauge and existing controls; the withdrawn cloud
stays absent.
- The resolution candidate committed as `e21dba8a1` passes all 114 tests
in the six complete affected unit files (13.95 seconds). Coverage
includes native sign-in failure/cancellation/retry, the held catalog,
creation recovery and imported card drafts surviving the introduction
and Back.
- All six existing creation browser cases pass in Chromium and WebKit
(12.7 seconds) at `c83f62b7d`. The subsequent amendment changes test
fixtures only; production code is identical. The browser cases cover
narrow/wide enlarged-text containment, owner review and failed creation
recovery. No browser cases were added or removed in this integration.
- All mandatory push gates passed on
`e21dba8a1530fdcf676209b9fc100b714a721c24`: TypeScript/related units
(797.24 seconds), design checks (5.98 seconds), Rust selection and
publication-policy guards. The remote SHA is verified. A stale local
Vitest glob transform was cleared; the unchanged README registry test
and normal gate then passed. Hosted checks are pending at publication.
- Earlier composer preservation checks at `0d33b00a1` passed 535 unit
tests and all 14 composer browser cases. The long-name containment
regression and unchanged five-second timeout diagnostics remain in the
feature.
- Ready status is retained. Browser checks use production components in
fixtures. Native IPC, a live account/browser switch and human acceptance
were not rerun. Existing recordings and captures predate the
native-session integration; no new native capture is claimed.

## Screenshots / demos

**Real desktop recording (before the native-session integration).**
Creating a Builderlab agent: Sign in beside Harness, choosing a model
and thinking level, the "Meet your remote agent" introduction, then the
new agent's Remote agent card in its details.


https://github.com/user-attachments/assets/bfc5d58f-2681-4752-b729-89db5011c6a2

Real native captures from the running desktop build. The signed-in
settings note and signed-out creation controls were exercised. Active
execution animation is not shown. The obsolete composer disclosure
capture has been removed after withdrawing that cue.

| Signed-in agent settings |
| --- |
| ![Compact remote agent note in signed-in
settings](https://github.com/user-attachments/assets/0765b045-1486-45bd-9295-9cde48e97dcb)
|

| Builderlab creation while signed out |
| --- |
| ![Sign in beside Harness with Model, Thinking and Create
disabled](https://github.com/user-attachments/assets/437d6ddc-17a4-436d-aa95-77fd594c85e1)
|

---------

Signed-off-by: Taylor Ho <[email protected]>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Co-authored-by: Princess Donut <0366ccd5ee09c2779a9d6bd6683daa17c16a508a51f6a7e7314018dab8fdc49b@feedback.communities.buzz.xyz>
Co-authored-by: Claude Opus 5.5 <[email protected]>
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