Repository navigation
Keep Create agent's Model row readable and give Goose a Thinking row - #2673
Conversation
The compact-choice width cap only matched a select that was the trailing's direct child. Create agent nests Goose's picker inside its recovery wrapper, so the picker took the full row and squeezed the Model title to one letter per line. Also cap a compact choice inside a lone trailing wrapper. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tulsi <tulsi@block.xyz>
Both spans had flex: 1 at a zero basis, so they split the trigger evenly: a long name truncated early while a short level sat in empty space. The level now takes its own width and the name the rest, truncating first. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tulsi <tulsi@block.xyz>
Claude Code and Codex already offer Thinking beside Model when creating an agent; Goose kept its level inside the model menu. Goose now supplies CreateThinking, reusing its Settings Thinking field in the compact row treatment, and the dialog tells a model field with a Thinking row beside it not to show effort itself. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tulsi <tulsi@block.xyz>
The compact Select shows no description, so a failed read looked like goose's default. The compact field now shows the error beside the choice with Try again, as the model field does. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tulsi <tulsi@block.xyz>
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 One recovery-state issue found.
| }: AgentCreateProps<Config>) { | ||
| const current = readConfig(config); | ||
| return ( | ||
| <ThinkingField |
There was a problem hiding this comment.
🤖 [P3] Refresh Thinking after Model recovery
If Model and Thinking discovery both fail when Create agent opens, restoring the upstream and clicking Model’s Try again recovers Model and returns setup readiness to ready, but Thinking retains its old error. CreateThinking's provider/model/revision read key remains unchanged across setup.check(), so the user must click a second retry despite successful setup recovery. Reproduced with a targeted unit test and in the actual app on Chromium and WebKit with modeled upstreams. Make Thinking follow setup re-check generations or coordinate invalidation through the recovery owner, while preserving Thinking-only retry.
There was a problem hiding this comment.
🤖 Fixed in c382500. CreateThinking now subscribes to setup's readiness and bumps ThinkingField's revision each time a check settles. A Model Try again (setup.check() clears the levels cache) therefore re-reads Thinking without a second retry. Thinking-only retry is unchanged.
Regression test: reads Create agent's Thinking levels again when a setup check recovers in src/bundled/goose/tabs.test.tsx. Both reads fail, then setup.check() recovers, and Thinking must show its levels with no alert. It fails on e66e471 and passes on c382500. The existing Thinking-only retry test still passes.
A setup check, such as the model field's Try again, clears goose's cached levels, but Thinking's read key did not change, so a recovered setup still showed Thinking's old error until its own Try again. Thinking now reads again each time a check settles; its own retry still works alone. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tulsi <tulsi@block.xyz>
…-wrap Signed-off-by: tulsi <tulsi@block.xyz> # Conflicts: # src/bundled/goose/index.ts
Picks up c202642 (block#2837), which fixes the ThreadPanel catch-up test that fails on every run of a merge with the older main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * origin/main: (155 commits) deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (block#3077) fix(communities): accept invite links and bare hosts in Join a community (block#2412) fix(builderlab): open a remote agent's Activity on the conversation it was opened from (block#3051) refactor(builderlab): keep capabilities fresh in the session (block#3003) feat(moderation): show invite links as a QR code (block#3029) Keep Create agent's Model row readable and give Goose a Thinking row (block#2673) Join a community right after creating it in Settings (block#2991) Let new Solo chats start temporary by default (block#2874) fix(messages): fill a screen that a head of folded agent activity leaves empty (block#3037) fix(search): search saved conversations while the community is offline or connecting (block#2724) test(agents): make version-history date assertion time-zone independent (block#3010) feat(relay): gate artifact writers on NIP-AR support (block#2735) fix(channels): open the dock's community switcher from Personal space (block#2806) fix(members): keep the list's place after a member change (block#2818) fix(channels): keep a launcher's side panel open on Close all tabs (block#2803) fix(activity): show a remote agent's Buzz send as its reply (block#3025) refactor(settings): move external identity authorization to security (block#3032) test(typeahead): serve the fixture pages as a build so cold loads fit (block#2793) feat(channels): list unread top-level mentions in sidebar Activity, and count only unread mentions on the Inbox card (block#2722) fix(solo): delete a removed workspace's settings after the groups write (block#2819) ... Signed-off-by: Andrew Harvard <aharvard@squareup.com>
* origin/main: deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (#3077) fix(communities): accept invite links and bare hosts in Join a community (#2412) fix(builderlab): open a remote agent's Activity on the conversation it was opened from (#3051) refactor(builderlab): keep capabilities fresh in the session (#3003) feat(moderation): show invite links as a QR code (#3029) Keep Create agent's Model row readable and give Goose a Thinking row (#2673) Signed-off-by: Bradley Axen <baxen@squareup.com>
…pover-card-layout-7eeda1e0 * origin/main: (128 commits) deps: accept RUSTSEC-2026-0459 for libsqlite3-sys 0.38, move rmcp to 3.9.0 (#3077) fix(communities): accept invite links and bare hosts in Join a community (#2412) fix(builderlab): open a remote agent's Activity on the conversation it was opened from (#3051) refactor(builderlab): keep capabilities fresh in the session (#3003) feat(moderation): show invite links as a QR code (#3029) Keep Create agent's Model row readable and give Goose a Thinking row (#2673) Join a community right after creating it in Settings (#2991) Let new Solo chats start temporary by default (#2874) fix(messages): fill a screen that a head of folded agent activity leaves empty (#3037) fix(search): search saved conversations while the community is offline or connecting (#2724) test(agents): make version-history date assertion time-zone independent (#3010) feat(relay): gate artifact writers on NIP-AR support (#2735) fix(channels): open the dock's community switcher from Personal space (#2806) fix(members): keep the list's place after a member change (#2818) fix(channels): keep a launcher's side panel open on Close all tabs (#2803) fix(activity): show a remote agent's Buzz send as its reply (#3025) refactor(settings): move external identity authorization to security (#3032) test(typeahead): serve the fixture pages as a build so cold loads fit (#2793) feat(channels): list unread top-level mentions in sidebar Activity, and count only unread mentions on the Inbox card (#2722) fix(solo): delete a removed workspace's settings after the groups write (#2819) ...
TL;DR
In Create agent, a long Goose model name no longer squeezes the Model label to one letter per line. Goose also gets its own Thinking row there, as Claude Code and Codex already have (#2409). The model name and its thinking level now share space by content instead of splitting it 50/50.
What
ModelDiscoveryRecovery, so the cap never applied and the picker took the whole row. The cap now also applies when a lone wrapper holds the compact choice (components.css).ModelFamilyMenu.module.css,.modeland.effortwere bothflex: 1at a zero basis, so they always split the trigger evenly. That cut long names early and left short levels like "Low" sitting in empty space. Now the effort isflex: noneand the name isflex: 0 1 auto, and the name truncates first. Visual direction came from Xela. There's no extra·before the level, because· Defaultalready uses the dot.CreateThinking, which reuses its existing SettingsThinkingFieldin the compact row treatment. When a type supplies a Thinking row, the dialog passesshowEffort: falseto its model field. Changing the model still resets effort to that model's default.ModelDiscoveryRecovery. It shows the error and Try again, the same pattern the model field uses. Failed reads are already evicted fromGooseSetup's cache, so a retry really reads again.Non-goals: Goose agent cards still pick the level from the model menu. Shortening
data_workflow_tools.model prefixes is a possible follow-up.Screenshots
Create agent with Goose on a long model (
data_workflow_tools.goose.goose-deepseek-v4-flash-0731), rendered from the real dialog in Chromium at 640px with a fake goose.Before


After


Tests
goose-model-row.spec.mjs, two cases added. Both are layout geometry, which jsdom can't measure.CreateModelin a PreferenceRow at 520px. Before the CSS fix it failed withtitleLines: 4, and it passes after.· Defaultstays attached and the name truncates. On the prior commit it failed withtruncated: truefor the short name, and it passes after.CreateThinkingreads per-model levels and saves a choice.showEffort: falseto the model field when a Thinking row exists.vitest run src/bundled/goose src/bundled/agents src/features/agents→ 1,804 passed ate66e471a3.pnpm test:browserrun showed 7 failures (conversation, layout Alt+ArrowUp, typing composer ×2, page-placement). Those same specs also fail on base9c82d1f0awithout this change.Review
Crack Catcher reviewed the change and found one medium issue: a failed Thinking read was silent. That's fixed in the last commit. tulsi tried the dev app before that fix.
Deferred: native-app check in both themes and with enlarged text. The new error state hasn't been seen in the native app because it needs Goose to fail.
🤖 Generated with Claude Code