Skip to content

console: one setup bar on every setup screen, Tasks · Settings at its right end (from the hosted console) - #611

Merged
richard-epsilla merged 8 commits into
mainfrom
fix/console-setup-bar
Oct 29, 2026
Merged

richard-epsilla merged 8 commits into
mainfrom
fix/console-setup-bar

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

The hosted console's latest setup page details, brought to this console.

  • One bar on every setup screen. The setup page's bar puts Tasks · Settings at its right end with their icons. The building page and the loading bar draw the same bar, so the tabs stay in one place while a setup is built, loaded and opened. A source test (oneBar.test.ts) holds every setup bar to the same markup.
  • Settings › Agent harness now starts with the Harness ID and its Copy button. The bar's action reads "Connect your app", and Duplicate shares Delete setup's row.
  • A setup named by its backend ("base": "claude" through the API) shows its base's name and mark, on the list and on the setup's own page.
  • A Start demo picked before the harness list loads takes its own harness and model once the list arrives, instead of staying on Auto.

Narrow widths are kept: at 860 px and under the tabs move to their own row, at 600 and under they share it equally with words only, and at 480 and under the bar's actions become icons.

Console job: type-check clean, 896 of 896 tests, build clean. Each new test fails without its change.

🤖 Generated with Claude Code

richard-epsilla and others added 6 commits October 28, 2026 16:05
…bar's action reads Connect your app

As on the hosted console. The setup page's bar drops the Harness ID and its Copy button: the
ID is not for people to read, and on the bar it was the first thing cut when the line ran short.
Settings › Agent harness shows it as its first row, read only, with its own Copy. The bar's
action and the Next card's button read "Connect your app", the name the sheet they open
already carried.

Tests: the bar carries no Harness ID and names Connect your app (AgentHead.tabfocus); Agent
harness shows the ID first, read only, with Copy (SetupSettings.parts); the Next card, its
event and the sheet tests read the new name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… with their icons, and Duplicate shares Delete setup's row

As the hosted console's setup page redesign draws it. The bar no longer centres the tabs: the
name and what it runs on the left, then the setup's two actions (Deploy to Cloud, Connect your
app), then Tasks · Settings at the right end, Tasks with a list icon and Settings with a gear,
the open one blue over a 3 px underline. The actions stay buttons here: this edition's bar has
no connection state to turn into a status pill, so the hosted pill is not ported. The DOM keeps
the order the eye reads (name, actions, tabs), so Tab and a screen reader meet them the same way.

Narrow widths keep the redesign's rules: 860 px and under the tabs take their own row under the
name and the actions; 600 px and under they share that row equally, words only; 480 px and under
the actions fold to their icons as before.

In Settings, Duplicate is the second button of Delete setup's row, at its right and blue; the
"Duplicate with another agent harness" link under Agent harness is gone (the words stay its
tooltip). The row is drawn under the layers and at the foot of the open layer, as before.

Tests: the tabs carry their icons and end the bar after its actions (AgentHead.tabfocus); every
Delete setup row holds Delete setup then Duplicate, and Agent harness has no link
(SetupSettings.parts).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e held at the right end

As on the hosted console. While a setup's page loads, its bar is the right-aligned bar the page
then draws: the name's skeleton on the left and two short lines where Tasks · Settings will be,
at the right end, on their own row at 860 px and under. The tabs no longer appear in a new
place when the setup lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gs at its right end with their icons

As on the hosted console: one bar for a setup, before it exists and after. While a new setup
builds, its page's header is the same right-aligned bar with the same Tasks and Settings icons
(exported from setup/parts), so nothing moves when the setup's own page takes over; Settings
stays drawn but closed until the setup exists, at reduced strength, out of the Tab order. The
setup's actions join the bar, before the tabs, once there is a setup to act on.

Tests: a source test holds every setup bar the console draws (the setup page's, its loading bar
and the building page's) to the right-aligned bar, and the building page's tabs to the setup
page's icons (setup/oneBar).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s base's name and mark

As on the hosted console. The gateway takes a base's id or the backend it runs for a setup's
base, and claude-code is the one base whose backend is named apart (claude), so a setup made
through the API with base "claude" read "claude", with no mark, on Harness Studio's list and
cards and in its own bar. oobById now finds a base by its id, then by its backend; the mark
(harnessLogoSrc, through BACKEND_BASE), the setup row's name, the server's row for its base
(on the list and on the setup's own page) and the setup's settings resolve through it.

Tests: every base whose backend is named apart is found and drawn by that backend, a base id
still wins, and an unknown one stays unknown (lib/harness-base-alias).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…own harness and model once it does

As on the hosted console. A demo task picked on a fresh Start opens New setup before the
server's harness list has been read, so the sheet opened on Auto and kept it: the demo was then
saved composed and renamed on whichever harness Auto chose, never its own pair, and its recorded
first run did not play. Once the list is in, the sheet takes the demo's own harness, unless the
person has already chosen one. The demo's model likewise keeps following the demo until the
person picks a model, so a model whose availability lands after the sheet settled on Auto still
reaches it.

Tests: a demo opened before the list lands takes its pair and saves as the demo; a demo whose
model could not run yet takes it once it can (NewSetup.demorace).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
unified-harness-protocol Ready Ready Preview Oct 29, 2026 12:13am UTC

Request Review

@richard-epsilla richard-epsilla left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Checked on the 0.37.10 release candidate at 1440, 1024, 768 and 390: no overflow, tabs at the right end on the setup page, the building page and after the build.

@richard-epsilla
richard-epsilla merged commit 3fa39ad into main Oct 29, 2026
12 checks passed

This branch was successfully deployed

1 active deployment
Preview — c3257c9f Deployed Oct 29, 2026 by vercel[bot]
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.

1 participant