Cover 1 / 1 ←→ step   1-0 jump   P play   H hide

ASB · Settings and Dashboard redesign · round 5 · Brian's round-4 feedback, 5 Oct 2026

Every screen has one job, every list has a detail, and every control has one home

Round 5 takes Brian's four notes on round 4 (5 Oct 2026): the three open Productivity questions are decided; the status bar gets quick-switch toggles for agent, provider, model, effort and mode, and loses the "N running, N unread" chip; and phone recordings show in the Meetings view. Everything else is round 4. Round 4 in short: Brian approved round 3 on 5 Oct 2026 and asked for two changes. The left sidebar is back on every top-level view: workspace switcher, New chat, search, chats grouped by date with their status, a row menu, and collapse to icons. Productivity is designed: its own Dashboard tab that answers "how much more am I getting done with AI", with measured hours and estimates kept apart, both assumptions editable, and cost per hour saved on Usage. Everything else from round 3 stands: the four decisions, the adapter, the presenter controls. No code has changed. Branch design/settings-redesign, src/ read-only.

How to read this. Scroll, or step with the arrow keys: each explainer section is one step, then each mockup scene is one step. 1 to 0 jump, P plays through, H hides the presenter bar. In the mockup every control does something; nothing is a dead button. Pick a comment pin anywhere: it lands back on the same tab, pane and record.

1 Brian's twelve points, and where each is answered

Each row names the change, the section that explains it, and a button that puts the mockup on the screen that shows it.

#Brian saidWhat the redesign doesAnswered in
1About must have a link to read the changelog.About gets a What's new card built from origin/feat/about-changelog (the running version open, older ones folded), and a Read the full changelog link that opens the bundled CHANGELOG.md in the viewer. The update notice links there too.
2Dashboard, Tree must be two panes like Windows Explorer.Tree on the left, the selected project on the right. Expanding and selecting are two gestures. Full keyboard navigation, a resizable divider, and a pinned row when the selection is filtered out. Tested at Brian's scale: 166 projects, 7 levels.
3Dashboard tabs have no detail pages; Usage is completely empty.Every tab is a list plus one shared detail component, Today included (as a sheet). Usage gets Spend over time, tokens by type, by model, by routine and by command, a budget, and Hours, each with a drill-down. The empty Usage tab had a real cause, named below.
4Organise Dashboard (and System) and Settings by what the user wants to achieve.Eleven goals, one home each. Settings nav grouped by goal: Get set up, Let the AI do my work, Keep my data safe, This app. Settings holds the control; System holds the status. Meetings have one home, the Meetings view. Follow-ups folds into Work. Both decided 5 Oct.
5Where does the Output menu go?A chat-level side panel, opened from the Outputs button in the chat header or Ctrl+Shift+O. It opens on This chat; All chats in this workspace is the toggle (decided 5 Oct). Today, Recent outputs reads the same index. Not a Dashboard tab, not a Settings pane.
6The mockup must carry the artifact-comments adapter.window.ArtifactComments with state, restore, isCurrent, search, label and pause, over the app's area, tab, pane, selection, segment and data set. The publisher adds the comments script; this file carries none.
75 Oct: bring the left sidebar back. Commands can go, but there must be a place to see and switch sessions; the chat menu alone is not enough.The sidebar returns on every top-level view: workspace switcher with badges, New chat, search (titles, then inside chats), quick filters, chats grouped Pinned, Today, Yesterday, Earlier this week, Older, Archived, each with status and time, a row menu (rename, pin, archive and more), collapse to icons. It folds itself when the Outputs viewer needs the room. Commands move behind "/" in the composer.
85 Oct: design the productivity calculation. Very important.A Productivity tab on the Dashboard. One answer up top, then a Measured row (attention, at the desk, in parallel, leverage) and an Estimated row (AI-equivalent hours, output, hours saved), never mixed. Both assumptions are visible and editable. Trends by day and week, breakdown by lane, project and routine, a day and a stream detail, a share card, first-week and heavy states. Cost per hour saved sits on Usage.
95 Oct, on round 4: settle the open Productivity questions. AI speed stays 2.5×; the headline leads with Output with Leverage in the same sentence; members without a work-hours ledger get the backend work.All three are decided, with no alternatives: decisions 7, 8 and 9. Generic mode's lanes and AI-equivalent hours are part of PR 17, so a typical member sees the same Estimated row as Brian.
105 Oct: remove the "N running · N unread" chip from the footer.Gone from the status bar. The counts live once, in the quick filters above the chat list.
115 Oct: quick-switch toggles for the session settings in the footer, the way today's status bar has them.Agent, Provider, Model, Effort and Mode are compact toggles on the bar, each showing its value and opening a small menu, keyboard reachable. Full auto still asks first. The full popover stays. This chat's cost stays on the bar.
125 Oct: a phone recording must be visible and actionable in the app, and this redesign must carry it.Meetings, step 2 Write up, lists phone recordings beside desk ones, marked from your phone with arrival time or live progress. The detail has the same Write it up, Play and Discard; one still travelling shows its progress, and the phone keeps its copy until this computer confirms arrival.

2 Why Usage looked completely empty

Dashboard Usage tab before, with the error toast

One unguarded field blanks the whole Dashboard

The toast in the screenshot reads Cannot read properties of undefined (reading 'sessions7d'). renderUsage() (main.js 22950) and the Today momentum card (main.js 21624) read summary.sessionStats.sessions7d with no guard. When the field is missing, the read throws, and every tab renders nothing.

The same capture shows "vundefined is available" (main.js 1777). Both come from the screenshot stub, which returned an incomplete summary. So the Today, Usage and update-banner screenshots are invalid as evidence and are marked that way in the Before toggle.

Fix, as an acceptance test on PR 6: each card renders inside its own guard. A throw in one card blanks that card only, with an inline "Couldn't load" and Retry. Then before/ is re-shot against a complete stub or the real app.

2b What changed in round 5, round 4, round 3, since round 1, and what the review changed in PROPOSAL_v2

#Round 5, 5 Oct 2026: changed since round 4
1Decided: AI speed stays 2.5×; the headline leads with Output (an estimate) with measured Leverage in the same sentence; generic mode gets lanes and AI-equivalent hours in PR 17. Section 9 has no open questions left.
2Status bar session toggles: Agent, Provider, Model, Effort, Mode, each a compact toggle with a small menu; full auto keeps its confirmation; the full popover stays.
3The "N running, N unread" chip is removed from the status bar.
4Phone recordings in Meetings, made by hand in the published round-4 file, now live in the sources, so the build keeps them. Their fixture times moved from 5 Oct to 4 Oct, the mockup's today, so "arrived" reads as the past. The Meetings tab badge counts only recordings that have arrived.
5Mapping table: nine Status bar rows. Adapter: sa, sp, sm, se, sx (the five values) and fm (which menu is open). Thirteen new scenes. Rollout: PR 18.
#Round 4, 5 Oct 2026: changed since round 3
1The sidebar is back on Chat, Dashboard, Routines, Meetings and WhatsApp, and dimmed under Settings. New against today's rail: date groups, a time on every row, a visible ⋯ row menu, Pin, Archive, quick filters, search inside chats, a collapsed icon rail, and auto-fold beside the Outputs viewer. The Commands list is gone.
2Productivity is a Dashboard tab, left of the rule beside Usage. The Hours segment leaves Usage and becomes this tab; Usage keeps cost and gains Cost per hour saved, so cost still shows in exactly two places.
3Fixtures agree across tabs: the chats on a Usage day are the streams on that Productivity day and the rows in the sidebar; Usage's 184 turns in 7 days drive hours saved; routine runs come from Usage, By routine.
4Goal map grows to eleven goals (G9 sidebar, G10 productivity), goal checks, mapping table, rollout (PR 16 and 17), adapter fields (sidebar and Productivity state) and 22 new scenes.
55 Oct, later: phone recordings are visible in the Meetings view. Step 2 Write up lists what the phone sent beside desk recordings, each row marked from your phone with its arrival time or live progress, and the detail carries the same Write it up / Play / Discard actions. A recording still travelling shows its progress and retries by itself; the phone keeps its copy until this computer confirms arrival.
#Round 3, 5 Oct 2026: changed since round 2
1The four decisions are final. Section 9 is now Decided, 5 Oct 2026, with no alternatives.
2Outputs toggle reads All chats in this workspace. The Outputs button and Ctrl+Shift+O always open on This chat; only Today, Recent outputs, See all opens on every chat.
3Cost: the status bar is labelled as this chat, not the session. The session popover, the level chip and Today carry no cost; the mapping table says where each one went.
4Goal map, goal checks, points table, mapping table, rollout and scene captions reworded so nothing reads as still open.
5Eight fixes made by hand in the round-2 HTML now live in the sources, so a rebuild keeps them: first-week Usage chats and Hours, capitalised pin labels, changelog size, the Section 2b link, Back to Today, tree filter keys in tooltips, "Below this project:", and tree state kept after search.
Kept from round 1
Page anatomy, the chip vocabulary, theme-safe colour roles, the connect dialog stepper, Connected tools rows and tiles, the copy rules, the fixed modal. Ids never change: every move is a DOM move, so the jsdom suites and tools/app_source.mjs keep resolving.
Reversed from round 1
"Tabs stay as they are": the tabs stay, the panels change shape. "GitHub sync and Chat backup stay on System as action cards": they stay as status rows with Run now; their set-up moves to Settings, Files and backup. The read-only Chat history row in Files becomes the control.
#Review finding, and the fix in this mockup
1No ledger write commands exist (only ledger_find, ledger_list). Every Work and Inbox action seeds the chat; the assistant writes behind its gates. A chase is stamped only once sent.
2Follow-ups has a drawer, Draft the chases, Show closed too and #fuScope. Work carries all four and reuses the drawer.
3Usage emptiness diagnosed (section 2); render isolation is a PR 6 test; before/ re-shoot required.
4No "$84 this month" chip; Today shows no cost. Cost labelled API-equivalent. Budget only with a per-token provider, by calendar month.
5Meetings get one home. Settings nav grouped by goal. A goal-to-surface check per goal (section 3).
6First-week data set: a "Get your first result" card, empty states that say how they fill, plain labels, optional setup out of the badge.
7Outputs index covers script writes and published links, persistent and incremental, scoped to the active workspace. PR 11 risk is High. Default scope is This chat (decided 5 Oct).
8Today opens a detail sheet. Counts derive from lists. Real tree kinds. A heavy data set at Brian's scale.
9"Read the full changelog" link. The branch already folds older releases and does not touch setup_tools.css; it is 18 commits behind and rewrites CHANGELOG.md, so it is rebased first. Sixteen PRs, numbered 0 to 15.
10Adapter compares every saved field; tree state stores one node, not a list; search restores the start; no hand-written script tag.

3 Information architecture from user goals

A control lives where its goal starts, not where its code shipped. Solid line: the one home. Dashed line: an allowed entry point that opens the home. Gold: added in round 4.

G0Get a first result (first week)Today, starter card G1See what needs me nowToday; Inbox is an entry G2Work promises, chase replies, decideWork; no Follow-ups tab G3See the shape of all my workTree, two panes G4Find what the AI producedOutputs panel, chat header G5Capture, write up, review a meetingMeetings view, one home G6Know what the AI costs meUsage; status bar for this chat G7Make the AI able to do my workSettings group; checklist is the spine G8Keep my data safe, the app healthyControl in Settings, status on System G9Get back to a chat, switch workspaceSidebar, on every view (round 4) G10See how much more I get doneProductivity; cost per hour on Usage (round 4) Dashboard: read daily, act on one record Today digest, opens a detail sheet Inbox notes the sweep filed Work owe, waiting, decisions to make Tree two panes Productivity measured hours, estimates, share card your work above, this app below Usage spend, cost per hour saved System schedules and health, status only Chat: the chat in front of you Sidebar workspaces, chats, status, search Outputs panel opens on This chat; All chats is the toggle Status bar this chat's tokens and cost Top-level views: do now, on a clock Meetings 1 capture, 2 write up, 3 review Settings: set once Get set up Setup checklist, Account Let the AI do my work Models, Agents, Tools, Phone Keep my data safe Files and backup This app Appearance, Sounds, About

Goal to surface, checked one goal at a time

G0Get a first resultOpen the app, Today shows three starter actions, the first one seeds a brief, the file lands in Outputs.One home: Today.
G1See what needs me nowDashboard badge, Today, Needs you. Each row opens its detail as a sheet. Optional setup never counts.One home: Today.
G2Work promises, chase, decideWork lists You owe, Waiting on others, Decisions to make. The detail seeds the chat for every change.One home: Work. No Follow-ups tab.
G3See the shape of my workTree, select a project, read it on the right, Show in Work filters the records.One home: Tree.
G4Find what the AI producedOutputs button or Ctrl+Shift+O opens on This chat; All chats in this workspace is the toggle. Click a row for the viewer, Go to chat.One home: Outputs panel.
G5Capture, write up, reviewMeetings view: 1 Record, 2 Write it up, 3 Review the note. No second list on the Dashboard.One home: Meetings view.
G6Know what it costsUsage, Spend: per day, per model, per routine, budget when billed per token, and cost per hour saved. The status bar shows this chat's cost. Nowhere else shows cost, Productivity included.Two read-outs: Usage, status bar.
G7Make the AI able to workSetup checklist, Fix, lands on the exact card: a tool tile, a provider, an agent, phone access.One home: Settings, Let the AI do my work.
G8Keep data safe, app healthySet up backups and sync in Files and backup; check them on System with Run now; updates and help in About.Control: Settings. Status: System.
G9Get back to a chat, switch workspaceSidebar on every view: pick a chat, or search, or Needs you; switch workspace from the top. Collapse with Ctrl+B. The chat menu stays as a second entry, not the only one.One home: Sidebar.
G10See how much more I get doneDashboard, Productivity: one answer, then measured and estimated rows; a day, a week, a stream; change an assumption; share the card. Cost per hour saved is one click away on Usage.One home: Productivity. Cost: Usage.

Settings holds the control, System holds the status

ThingSettings (control)Dashboard, System (status)
Folder backupFiles and backup: schedule, Back up nowRow with last run, next run, Run now
Chat history backupFiles and backup: switch, repo, Restore from backup and Undo last restore (session_backup_pull, session_backup_undo, which had no home)Row with last run, full error, Run now; Set up deep-links to Settings
GitHub syncFiles and backup: repo, branchRow with last sync, Run now, and conflict dismissal (sync_dismiss_conflict, which had no home)
AccountAccount: sign in, membershipRow: registered, WhatsApp verified, Re-verify
AI providersModels: providers, default, monthly ceiling (per-token providers only)Row: each provider, key, last good call
Setup checklistThe first-run subset of System health, same checks, required items only in the badgeEvery check, always

4 Where every existing control goes

Ids do not change; every move is a DOM move. Filter by an id, a pane or a word.

Today (pane, control, id)TomorrowNote

5 Where Outputs goes

Mocked on 26 Sep (docs/mockups/outputs_panel_mockup.html) and never built. Round 2 places it and specifies the index it needs.

Placement
A chat-level side panel, from the Outputs button right of the chat name and Ctrl+Shift+O. It stays open while the agent works and shows NEW as files land. It is the existing viewer with a list in front, so one panel has two modes. Dashboard, Today, Recent outputs reads the same index; its See all opens the panel on All chats. Not a Dashboard tab: that loses the chat context and the stay-open behaviour.
The index it needs (critique 7)
A persistent, incremental index per workspace, not a scan on every open (token_usage already truncates at 4000 files). Fed by Write, Edit and NotebookEdit events, plus a workspace mtime diff per turn for files a Bash script wrote (make-pdf, exports), plus the URL a publish step returns (Drive, merit-artifacts.pages.dev), plus the tool names non-Claude runtimes use. "All chats" means the active workspace, which can differ from a session's own (workspace_root_for).

Default scope, decided 5 Oct: Outputs opens on This chat from the Outputs button and Ctrl+Shift+O, because "what did this chat write" is the common question. All chats in this workspace is the toggle. Today, Recent outputs, See all asks for every chat, so it opens on All chats in this workspace.

5b The sidebar comes back

Round 3 dropped the left rail and left the chat menu as the only way to switch chats. Brian, 5 Oct: commands can go, but there must be a place to see and switch sessions. This is that place, built from today's #rail (src/index.html 128 to 244).

PartWhat it does
Workspace switcherCurrent workspace, a badge for chats that need you elsewhere. The menu lists each workspace with its path, a badge or a running dot, Edit (rename, point somewhere else, remove) and Add workspace. Switching never stops a running chat. Kept from #workspaceSwitcherBtn and #workspacePopover.
New chatCtrl+N. Renamed from "New session" to match This chat and All chats.
SearchCtrl+P. Titles first, as today. Then Search inside chats runs search_transcripts, which exists and nothing calls. Enter opens the only match, Esc clears.
Quick filtersAll, Needs you, Running, Unread, with counts. They replace the floating "N running, N unread" chip.
Chat listPinned, Today, Yesterday, Earlier this week, Older, Archived. Older and Archived start folded and show 40 at a time. Sub-sessions nest under their parent with a summary line ("1 branch, 1 needs you").
RowStatus (spinner while working or helpers run, ! needs you, a dot when unread, a tick when done, a square when stopped), title, time or the live pulse, and a ⋯ button on hover and on the open chat.
Row menu⋯ or right-click: Rename, Pin to top, Hide sub-sessions, Split into sub-sessions, Mark done, Stop when live, Archive, Delete with a confirm that offers to keep sub-sessions. The header shows turns, not cost.
CollapseCtrl+B or «. A 56px icon rail: workspace, expand, New chat, search, then pinned, running, unread and needs-you chats with their status dot. Drag the edge to resize, 200 to 480px.
Coexisting with Outputs
The Outputs list (404px) sits beside the expanded sidebar. The viewer (560px) would squeeze the chat under 560px, so the sidebar folds to icons on its own, marked auto, and opens again when the viewer closes. » opens it anyway. Below 800px the sidebar is the slide-over drawer it is today.
Present on every top-level view
Chat, Dashboard, Routines, Meetings and WhatsApp, as today. Settings is a modal, so the sidebar dims behind it. Picking a chat from any view opens it in Chat.
What is new against today
Date groups, a time on each row, a visible ⋯, Pin, Archive, quick filters, search inside chats, auto-fold, and no Commands list. Pin and Archive need two small backend fields; everything else reuses existing commands.

5c Productivity: how much more am I getting done with AI

Grounded in what exists: hours.rs (measured hours, leverage, human_equiv_h and output_x, which the app computes and never shows), usage.rs (hours saved at DEFAULT_ASSUMED_MINUTES_PER_TURN = 6), the #hoursSavedTile disclosure, and Brian's "Work Hours & Leverage" tab in the PSB dashboard.

Where it lives: its own Dashboard tab (decided)
Dashboard, Productivity, the last tab left of the rule, next to Usage. Not the top of Usage, for three reasons. One goal, one home: "what did the AI do for me" (G10) is a different question from "what does it cost" (G6). Decision 4 holds: cost stays on Usage and the status bar, so value numbers never sit under a dollar figure and blur. Brian rates it very important: a segment under Usage is two clicks deep. The one place a cost meets an hour, Cost per hour saved, lives on Usage; Productivity links there and shows no cost.
NumberKindHow it is calculatedSource today
Your attentionMeasuredTyped messages grouped with a 10-minute gap, plus 3 minutes to read, plus meetings. Never more than at the desk.attention_h
At the deskMeasuredUnion of chat activity and meetings, 15-minute gap; automation left out.actual_h
In parallelMeasuredEvery stream's minutes added up: chats, helpers, meetings, routines.effective_h
LeverageMeasuredIn parallel ÷ at the desk.leverage
AI-equivalent hoursEstimateMeetings + AI hours × AI speed (2.5× default, editable).human_equiv_h, never rendered today
OutputEstimateAI-equivalent ÷ at the desk. The headline answer.output_x, never rendered today
Hours savedEstimate(turns + helper turns) × minutes per exchange (6, editable). Shows after 5 active days.hours_saved_summary
Cost per hour savedEstimate, on UsageUsage cost ÷ hours saved; and cost ÷ AI-equivalent hours.new, from both
Never blur estimate with measurement
Two rows with their own label: Measured (solid tiles) and Estimated (dashed gold tiles that name their assumption). They are never added together or shown in one tile. A changed assumption moves the estimates only. The share card always carries the disclosure line and never a cost.
States and details
This week by day, last 4 weeks by week; breakdown by lane, project and routine; a day (timeline and streams), a week, a stream (blocks, turns, how it counts, what it wrote). First week: measured from day one, estimates after 5 active days. Brian's scale: ledger mode, his lanes, the timeline capped at 12 streams. One source fails: only its cards say so.

6The clickable mockup

One app window, with the sidebar back on the left. Pick a scene, or just click around. Data switches between a typical week, a first-week member and Brian's real scale. Billing switches how the AI is paid for. Cards shows each Dashboard card loading or failing on its own. Before shows the screenshot of the same screen today.

Data
Billing
Cards
AI Second Brain 1.2.0

7 The comments adapter

A pin made on Dashboard, Work, WAIT-0118 must land there for the next reviewer, not on whatever is on screen. This file defines window.ArtifactComments per .agent/skills/artifact-comments/docs/adapter.md.

state() explainer pin: {x:1}. App pin: the fields that decide what the app shows, and only those: {d: data set, a: area, b: before, t: tab, s: selection, g: Usage segment, pay, us, um, p: Settings pane, cd: connect step, c: chat, o: Outputs mode, sc: scope, os: file, oq, ot, oc, wn, wq, wo, wc: Work filters, tf, tq: Tree filters, mf: Meetings filter, ov: viewer overlay, tn: the tree row clicked, when it is not the selection, round 4: sb: sidebar collapsed, ws: workspace, sq: sidebar search, sf: sidebar filter, pp, pb: Productivity period and breakdown, ax, mt: the two assumptions, round 5: sa, sp, sm, se, sx: agent, provider, model, effort, mode on the status bar, fm: the open status bar menu (agent, provider, model, effort, mode), pop: the popover, fullauto: the full auto confirmation}. Defaults are left out, so states stay short (longest about 150 characters). restore(s) stops Play, rebuilds the app from s, expands the ancestors of s and tn, resolves on the next frame. isCurrent compares every saved field, so a pin on Spend never shows on Hours, or on another scope, data set or drill-down. A tn pin also needs its row on screen. search(t) walks about 600 states (every scene, tab, pane, record, day, model, routine, file, stream), with the tree fully expanded; restores the starting state when nothing matches. label(el) the nearest data-ac-label, for example "Dashboard › Work › detail › WAIT-0118". pause() stops Play.
Publishing. Name the ARTIFACTS entry ASB settings redesign v5, which slugifies to asb-settings-redesign-v5. The v2, v3 and v4 entries and their threads stay as they are. The publisher injects the comments script with that slug and skips injection when a tag is already present, so this file carries no script tag: a hand-written slug that differs from the published one would split the threads. Fixture ids (WAIT-0118, logamjaya-contract, apple, 2026-10-03, claude-sonnet-5, daily-update, s-q4, st-10-04-5) stay fixed across revisions, so a pin survives a restyle.

8 Rollout: nineteen PRs, numbered 0 to 18

#PRRiskDone when
0Rebase, then merge feat/about-changelog. 18 commits behind the design branch; rewrites CHANGELOG.md (379 lines changed). It already folds older releases and does not touch setup_tools.css.Lowabout_pane_test.mjs green after the rebase
1Tokens, buttons, chips, Routines placeholder (round 1)LowRound 1
2Fixed modal, nav grouped by goal, "Phone access" labelLowFour goal headings render; reopen-on-last-pane test green
3Pane anatomy, About cards (Updates, What's new card plus "Read the full changelog", Help, Diagnostics)Low-mediumThe link opens CHANGELOG.md in the viewer
4Copy pass, plain labels (Decisions to make, Overdue reply, project)LowNo "breached", "SLA" or "node" in user-facing copy
5Move controls: backup, chat history (with restore and undo), GitHub sync into Files and backup; Spending cardMediumEvery id in section 4 resolves
6Dashboard shell: dash-detail, per-card guard, loading, empty and error; retire #dashLoading and the toast; re-shoot before/MediumFault injection: a throw in one card blanks that card only
7Tree two panes, keyboard, resizer; ledger_list gains node; work_tree_node_filesMediumKeyboard table passes; usable at 166 nodes, 7 levels
8Work and Inbox details via ledger_find and the ledger_link.js drawer; actions seed the chat; Meetings view gains Review; Dashboard Meetings tab retiresMediumNo app-side ledger write exists; a chase is stamped only after it is sent
9Usage: Spend, Hours, Budget, by model, by routine and command, drill-downsMediumUnpriced models never show $0.00; budget is a calendar month
10System details, nudges, notices, Dashboard badgeMediumBadge equals Needs you rows; optional setup excluded
11Outputs panel and the persistent indexHighScript writes and published links appear; Today and the panel agree
12Connected tools layout (round 1 PR 7)Medium-highRound 1
13WhatsApp sheet and custom MCP sheet (round 1 PR 8)Medium-highRound 1
14Connect dialog stepper, agents merge (round 1 PR 9)HighRound 1
15Follow-ups redirect (decided 5 Oct)LowThe tab lands on Work with the drawer, Draft the chases, Show closed too and the scope line
16Sidebar (round 4): date groups, row time, ⋯ menu, Pin and Archive, quick filters, search inside chats, icon rail, auto-fold beside the Outputs viewer; Commands list retiresMediumEvery top-level view keeps the rail; Ctrl+B, Ctrl+P, Alt+Up and Down work; the viewer never squeezes the chat under 560px
17Productivity tab (round 4): measured and estimated rows, both assumptions, by day and week, by lane, project and routine, day, week and stream details, share card; Usage Hours retires; Usage gains Cost per hour savedMediumNo cost on Productivity; a changed assumption never moves a measured number; estimates hidden before 5 active days; a member with no work-hours ledger sees AI-equivalent hours and lanes
18Status bar session toggles (round 5): Agent moves onto the bar; provider, model, effort and mode become toggles with menus; #activityChip leaves the bar; #sessionControlsDock retires; Meetings lists phone recordings in step 2MediumEvery toggle opens, changes and closes by keyboard; full auto still confirms; no running or unread chip on the bar; at 560px the toggles and the cost still fit

Backend additions, listed once: ledger_list accepts node (the only ledger change; no write commands); work_tree_node_files(id); a persistent outputs index; routine_usage() and routine_runs(jobId); token_usage_day(day) and a calendar-month window; a monthlyCeilingUsd setting; walk_listing returns its error instead of []. Round 4: pinned and archived on the session meta; a sidebar call to search_transcripts; hours_summary(days) with a 28-day window (today 14); human_equiv_h and output_x in generic mode, plus lanes there (decided 5 Oct: members without a work-hours ledger get this) (chat, helpers, meetings, automation) and meetings from the Meetings view; a project on each stream from the chat's work-tree tag; set_ai_speed next to set_assumed_minutes_per_turn; turns per period for hours saved (today it is lifetime only); render_share_card.

9 Decided, 5 Oct 2026

Brian approved all four on 5 Oct 2026. They are final, and the mockup and this explainer are built on them. Round 4 adds his two changes from the same day, and round 5 his answers to the three open questions plus three more changes. Nothing below is open.

1. Follow-ups folds into Dashboard, Work

There is no Follow-ups top tab. Work carries the row drawer (ledger_link.js), Draft the chases, Show closed too and the scope line naming the workspace that answered. #viewTabFollowups redirects to Work for one release, then retires (PR 15).

2. Meetings has one home: the Meetings view

Capture, write-up and review in one view, numbered 1, 2, 3. The Dashboard has no Meetings tab; Today keeps one pointer row that opens the Meetings view.

3. Outputs opens on This chat

The Outputs button and Ctrl+Shift+O open on This chat. All chats in this workspace is the toggle. Today, Recent outputs, See all asks for every chat, so it opens on All chats in this workspace.

4. Cost shows in exactly two places

The status bar for this chat, and Dashboard, Usage for the workspace. Costs are labelled API-equivalent on a subscription; a calendar-month budget appears only with a per-token provider. Every other read-out is gone: the "$84 this month" header chip is not built and #bannerBar stats retire, Today's momentum line has no cost, the session popover keeps tokens only, and the level chip and XP panel show no cost. Section 4 names where each one went.

Round 4: Brian's two changes (5 Oct 2026)

5. The sidebar comes back

On every top-level view, with workspaces, search, date groups, status, a row menu and an icon rail. Commands leave the rail. Pin and Archive add two fields to the session meta, built in PR 16.

6. Productivity is designed, as its own Dashboard tab

A tab left of the rule beside Usage, with cost per hour saved on Usage.

Round 5: decided 5 Oct 2026

7. Default AI speed is 2.5×

The work-hours default. It stays one click to change on Productivity, and the method pane shows where the number comes from.

8. The headline leads with Output

Output, an estimate, first, with measured Leverage in the same sentence, and the assumption named.

9. Members without a work-hours ledger see AI-equivalent hours

Generic mode gets lanes, human_equiv_h and output_x as part of PR 17, so a typical member sees the same Estimated row as Brian.

10. Session settings are toggles on the status bar

Agent, Provider, Model, Effort and Mode, each a compact toggle with a small menu. Full auto keeps its confirmation. The full popover stays. The "N running, N unread" chip leaves the bar. Cost stays on the bar and Usage only.

11. Phone recordings show in the Meetings view

In step 2 Write up, beside desk recordings, marked from your phone, with the same actions. The phone keeps its copy until this computer confirms arrival.