Skip to content

feat(setup): group the console's pages by what you are trying to do - #43

Merged
dizys merged 1 commit into
mainfrom
ux/2-structure
Oct 19, 2026
Merged

dizys merged 1 commit into
mainfrom
ux/2-structure

Conversation

@dizys

@dizys dizys commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Second of four stacked PRs reworking the setup console's UX. Based on #42: review that first, and this diff shows only the structure.

The console grew a page at a time, so related settings ended up in different places. Updates were on three pages, each with its own Check and Auto-update buttons. How devices reach the server was split between Devices and Environment. And Environment held seven unrelated sections. This PR gives each concept one home and groups the pages by what you're trying to do.

Screenshots

Same sample data before and after (scripts/fixtures/console), light theme; desktop at 1280 px, phone at 390 px. Click an image for full size.

BeforeAfter
Devices → Access: pairing and the paired devices, now with how devices reach this server (public URL, T3 Connect) from Environment. The sidebar is grouped.
Devices → Access, beforeDevices → Access, after
Updates: before, each page had its own Check and Auto-update buttons (Agents shown); now T3 Code, every update and the automatic-update switches are on one page.
Updates, beforeUpdates, after
Environment → Server, needing attention: Environment’s seven sections are shared out between Server, Storage, Updates and Access. An anonymous home volume is a warning with How to fix, not a badge at the bottom.
Environment → Server, needing attention, beforeEnvironment → Server, needing attention, after
Storage: a page of its own (it was a section of Environment, above): disk, caches, older tool versions and folders.
New pageStorage, after
BeforeAfterBeforeAfter
More, on a phone: its pages in the sidebar’s groups, each with its state.
More on a phone, beforeMore on a phone, after

New structure

Sidebar group Pages
(top) Overview · Access (was Devices, plus the public URL and T3 Connect from Environment)
Agents Agents · Instructions & skills (was Context)
Tools Toolchains · Source control · Ports
System Updates (new) · Storage (from Environment) · Server (the rest of Environment)

While there's no public URL, Access puts How devices reach this server first, above the pairing form, and the form says in one line why it can't make a link yet. On a phone, Access's rows put their buttons under the text.

Old addresses still work: #devices, #context and #environment redirect in place. The palette finds pages by their old names too. T3 Code's own command palette (the setup bridge) opens the new pages, and gains an Updates entry.

Updates, in one place

  • T3 Code: its version, Update and restart, and the Stable/Nightly channel.
  • Agents and tools: every agent, toolchain, added tool and source control CLI with a newer release, with Update all. Releases mise is still holding back a day are listed with when they arrive.
  • Automatic updates: one switch each for agents, toolchains and tools, and T3 Code. Each saves as you press it and reads its schedule as a sentence ("Checks every 3 hours, and installs after 30 min without activity"). Schedule changes those two numbers in a small dialog. T3 Code still asks before it turns on. This replaces the three-switch dialog that opened from three pages.
  • Check for updates checks everything at once. Sources that couldn't be checked appear as one line with Details, not as a changed button.
  • Agents, Toolchains and Source control keep only their own Update all.
  • An update that failed stays listed with Retry, but isn't counted as due.
  • Automatic updates are listed T3 Code, agents, then toolchains, with T3 Code's own mark. Turning T3 Code's on warns in two short sentences.

The sidebar shows how many updates are available in blue. Updates are offered, not owed, so T3 Code's Setup badge still leaves them out.

Storage

Storage gets sections like every other page:

  • Disk reads 29 GB free of 207 GB, with a meter and a refresh button.
  • Caches and Older tool versions are compact rows with Clear and Review.
  • Folders opens on request.

Clear caches 1.2 GB is the page's action. Its rows have no menus, so they reserve no ⋯ column. The storage guide describes the new layout.

Server

  • T3 Code shows the full version. On a phone, the version and image each get the card's width, rather than breaking over three lines.
  • Volumes names each one (status now includes the Docker volume behind home, state and workspace). If home or state is on an anonymous volume, a warning sits at the top. How to fix shows the exact host commands, with this container's own volume hash filled in, to copy it into a named volume and remount it. New guide section: Moving an anonymous volume to a named one.
  • Network gathers the facts that were spread over Access: T3 Code's bind address, the console's path and port, T3_SINGLE_PORT, the pairing link lifetime and the platform.
  • This console: the setup key (Make a new key in its menu), Lock, and how to turn the console off, with a labelled Copy setting button.
  • The volume rows say what they hold and leave the fix to the warning above them, which has How to fix.

Also

  • Page summaries are shorter. The sidebar shows Access's warning while nothing can pair yet: there's no public URL and no T3 Connect.
  • The phone's More lists its pages in the sidebar's groups, with each page's state ("3 available", "Needs you").
  • New icons (hard drive, folder, clock) are added to the design system's local additions.
  • status.updates.checkedAt lets the Updates page say when it last checked.
  • More's links end in an external-link icon, since they open elsewhere. Lock console is now Lock this browser and is no longer styled as dangerous.
  • The guides use the new page names throughout.

Test plan

  • node --test tests/*.test.mjs: 600 pass (new: the Updates view, update count badges, schedules, old names in the palette, volume names, T3 palette entries)
  • scripts/ui-audit.js now reads its page list from the route table, so it covers every page (before, it skipped Context)
  • The auto-update audit is rewritten for the Updates page, keeping every guarantee it had. Categories are independent. T3 Code warns first and cancelling saves nothing. Schedules are validated. One check never moves the page or resizes its button. Failures show their details, as text. T3 Code's channel switch still confirms.
  • Drafts, rows, storage, context and skills audits pass
  • CI: lint, versions, and the browser and core images built and smoke-tested on amd64 and arm64

Stack: #42 Foundations → #43 Structure → #44 Overview → #45 Instructions & skills

🤖 Generated with Claude Code

Each concept now has one home, and the sidebar groups pages as Agents,
Tools and System under Overview and Access.

- Access is Devices plus how devices reach the server: pairing first,
  then paired devices, unused links, the public URL and T3 Connect.
- Updates is new: T3 Code's release and channel, every agent, toolchain,
  added tool and source control CLI with a newer release (and the ones
  mise is holding back a day), Update all, one Check for updates for
  everything, and a switch per category for automatic updates that saves
  as it is pressed, with its schedule in a sentence and a small Schedule
  dialog. It replaces the Check and Auto-update buttons and the shared
  dialog that sat on three pages.
- Storage and Server split Environment. Server names each volume, warns
  at the top when home or state is on an anonymous volume, and shows the
  host commands to copy it into a named one with this container's own
  volume hash filled in. Network facts move here from Access.
- Context is renamed Instructions & skills.
- Old addresses (#devices, #context, #environment) redirect in place, the
  palette finds pages by their old names, and T3 Code's own palette opens
  the new pages and gains Updates.
- The phone's More lists its pages in the sidebar's groups, each with its
  state or what needs you.
- Status gains the Docker volume behind home, state and workspace, and
  when the last full update check finished.
- The geometry audit reads its pages from the route table, so it now
  covers every page; the auto-update audit is rewritten for the Updates
  page with the same guarantees; the guides use the new names, and a new
  section explains moving an anonymous volume to a named one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dizys
dizys changed the base branch from ux/1-foundations to main October 19, 2026 08:53
@dizys
dizys merged commit 721e2f6 into main Oct 19, 2026
14 checks passed
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