fix(app): show Setup tabs only for failures (#3634)

* fix(app): only surface failed workspace setup

Running and successful setup snapshots were treated as reasons to seed a background Setup tab, adding noise to every workspace with setup commands. Seed only failed setup and classify that tab as main-workspace content so the failure stays visible without stealing focus.

* fix(app): surface failed setup once

Keep the failed-setup surfacing claim with the setup snapshot so closing its background tab remains respected after the workspace remounts. Explicitly prefer the main pane for a new failure tab without moving a user-placed existing tab.

* fix(app): keep setup tabs out of side panel

A preferred main-pane placement can fall back when users remove that pane. Keep that implicit fallback out of the focused Side panel when another workspace pane is available.
This commit is contained in:
Mohamed Boudra
2026-08-21 11:17:04 +02:00
committed by GitHub
parent bc02cfd8cd
commit 04624cb419
10 changed files with 271 additions and 61 deletions
+5 -5
View File
@@ -36,9 +36,9 @@ difference between them only shows up when the tab is already open somewhere:
`pane` is a pane-local affordance — that pane's `+` menu, its empty-state launcher.
The user is placing the tab and expects it to arrive.
`prefer` is an implicit supporting open — an agent's file link, workspace setup
progress. It has an opinion about new tabs only. Yanking a tab out of the pane the
user deliberately moved it to is the failure this mode exists to prevent.
`prefer` is an implicit supporting open — an agent's file link or a failed workspace
setup. It has an opinion about new tabs only. Yanking a tab out of the pane the user
deliberately moved it to is the failure this mode exists to prevent.
`ambient` differs from `focused` in one rule: reconciliation opens tabs with nobody
behind the click, and the side panel can hold focus from an earlier reveal, so an
@@ -74,8 +74,8 @@ side panel, which the user summons and expects to find again, split size and all
It does not seed itself. Revealing it opens an empty pane with the launcher; the user
picks what goes in. Detecting a pull request makes the launcher's card available and
opens nothing. Event-driven surfaces such as workspace setup progress still add a
background tab, which never reveals the panel or moves focus.
opens nothing. A failed workspace setup adds a background tab to the main pane.
Running and successful setup never seed tabs.
## Routing preference