0064: Hubs in the rail, features to turn off
On this page
Status: accepted
Context
The rail listed every screen: by 0.16 that was fifteen buttons plus Settings, and Tasks, Notes, Meetings and Chat would have made it twenty. It scrolled on a laptop, and each new feature made finding the others slower. Not everyone uses everything either: someone who only serves sites still saw Pair, Webhooks and Backups, and their background work (a webhook's tunnel, the nightly backup) ran whether they wanted it or not.
Decision
- Hubs. The rail holds Home, Sites, Debug, Work, Pair and Machine, then Settings at the bottom (
src/shell/hubs.ts).- Debug: Requests, Monitor, Dumps, Logs, Mail, Webhooks.
- Work: Tasks, Notes, Meetings, Chat.
- Pair has its own place, with who's in the call on its badge: a call isn't a document, and it's the one thing in the rail that's live with other people. (It started under Work; moved before release.)
- Machine: Services, Runtimes, Backups, Tools.
- A hub with more than one page lists them in a column beside the rail (
HubNav), with the same look as a site's pages. A hub opens on the page last used there, remembered in the window's local storage. A hub's badge adds up what waits in its pages that show. - New features join a hub instead of the rail.
- Settings follow the rail. Its sections are grouped the same way, general first, then Sites, Debug, Work, Pair and Machine, then Remove and About, with a hairline between groups and no group headings.
- The column folds. Collapse at its foot, or ⌘\ (Ctrl+\ on Windows), folds the hub's or the site's column to its icons, with names as tooltips; the choice is kept in local storage. It doesn't animate: the motion list in CLAUDE.md stays as it is.
- Settings › Features.
[features]inconfig.tomlhasdebug,webhooks,pair,tasks(tasks and notes),chatandbackups, all on by default, andchosen, set once first run's What will you use Short Leash for? is answered (POST /v1/features).- Off hides the feature's pages from the rail and stops its background work: turning webhooks off closes their tunnels without changing each webhook's own setting, and turning them on again starts the ones that were enabled; the nightly backup is skipped while backups are off. The tray hides Pair's start row while Pair is off; a call that's still going stays.
- Serving sites, services and runtimes is always on. Dictation and meeting notes keep their own switches (
[ai], ADRs 0057 and 0059), shown in the same list, because turning them on needs permissions and a model. - First run starts webhooks, dictation and meeting notes off and the rest on. Existing installs keep everything on, since
chosenis false and nothing changes until someone turns a feature off. - Pages stay reachable by link and by ⌘K while their feature is off: off hides, it doesn't lock.
Consequences
- The rail fits on any window height and doesn't grow with new features. Reaching a page in Debug, Work or Machine takes two clicks the first time, and one after that, since a hub opens where you left it.
- The hub column takes 228 px from Debug, Work and Machine screens. Screens with a list beside a detail had to fit in less room (Webhooks' rows did not, and were loosened); folding the column gives the room back.
- A feature that's off still has its data: turning it back on shows everything as it was. Nothing is deleted by turning a feature off.
- The canvas's boards draw the same rail and column, and the canvas is organized in pages by hub.