ASB · Settings and Dashboard redesign · round 5 · Brian's round-4 feedback, 5 Oct 2026
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.
Each row names the change, the section that explains it, and a button that puts the mockup on the screen that shows it.
| # | Brian said | What the redesign does | Answered in |
|---|---|---|---|
| 1 | About 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. | |
| 2 | Dashboard, 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. | |
| 3 | Dashboard 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. | |
| 4 | Organise 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. | |
| 5 | Where 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. | |
| 6 | The 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. | |
| 7 | 5 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. | |
| 8 | 5 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. | |
| 9 | 5 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. | |
| 10 | 5 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. | |
| 11 | 5 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. | |
| 12 | 5 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. |
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.
| # | Round 5, 5 Oct 2026: changed since round 4 |
|---|---|
| 1 | Decided: 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. |
| 2 | Status 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. |
| 3 | The "N running, N unread" chip is removed from the status bar. |
| 4 | Phone 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. |
| 5 | Mapping 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 |
|---|---|
| 1 | The 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. |
| 2 | Productivity 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. |
| 3 | Fixtures 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. |
| 4 | Goal 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. |
| 5 | 5 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 |
|---|---|
| 1 | The four decisions are final. Section 9 is now Decided, 5 Oct 2026, with no alternatives. |
| 2 | Outputs 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. |
| 3 | Cost: 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. |
| 4 | Goal map, goal checks, points table, mapping table, rollout and scene captions reworded so nothing reads as still open. |
| 5 | Eight 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 |
|---|---|
| 1 | No 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. |
| 2 | Follow-ups has a drawer, Draft the chases, Show closed too and #fuScope. Work carries all four and reuses the drawer. |
| 3 | Usage emptiness diagnosed (section 2); render isolation is a PR 6 test; before/ re-shoot required. |
| 4 | No "$84 this month" chip; Today shows no cost. Cost labelled API-equivalent. Budget only with a per-token provider, by calendar month. |
| 5 | Meetings get one home. Settings nav grouped by goal. A goal-to-surface check per goal (section 3). |
| 6 | First-week data set: a "Get your first result" card, empty states that say how they fill, plain labels, optional setup out of the badge. |
| 7 | Outputs 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). |
| 8 | Today 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. |
| 10 | Adapter compares every saved field; tree state stores one node, not a list; search restores the start; no hand-written script tag. |
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.
| Thing | Settings (control) | Dashboard, System (status) |
|---|---|---|
| Folder backup | Files and backup: schedule, Back up now | Row with last run, next run, Run now |
| Chat history backup | Files 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 sync | Files and backup: repo, branch | Row with last sync, Run now, and conflict dismissal (sync_dismiss_conflict, which had no home) |
| Account | Account: sign in, membership | Row: registered, WhatsApp verified, Re-verify |
| AI providers | Models: providers, default, monthly ceiling (per-token providers only) | Row: each provider, key, last good call |
| Setup checklist | The first-run subset of System health, same checks, required items only in the badge | Every check, always |
Ids do not change; every move is a DOM move. Filter by an id, a pane or a word.
| Today (pane, control, id) | Tomorrow | Note |
|---|
Mocked on 26 Sep (docs/mockups/outputs_panel_mockup.html) and never built. Round 2 places it and specifies the index it needs.
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.
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).
| Part | What it does |
|---|---|
| Workspace switcher | Current 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 chat | Ctrl+N. Renamed from "New session" to match This chat and All chats. |
| Search | Ctrl+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 filters | All, Needs you, Running, Unread, with counts. They replace the floating "N running, N unread" chip. |
| Chat list | Pinned, 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"). |
| Row | Status (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. |
| Collapse | Ctrl+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. |
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.
| Number | Kind | How it is calculated | Source today |
|---|---|---|---|
| Your attention | Measured | Typed messages grouped with a 10-minute gap, plus 3 minutes to read, plus meetings. Never more than at the desk. | attention_h |
| At the desk | Measured | Union of chat activity and meetings, 15-minute gap; automation left out. | actual_h |
| In parallel | Measured | Every stream's minutes added up: chats, helpers, meetings, routines. | effective_h |
| Leverage | Measured | In parallel ÷ at the desk. | leverage |
| AI-equivalent hours | Estimate | Meetings + AI hours × AI speed (2.5× default, editable). | human_equiv_h, never rendered today |
| Output | Estimate | AI-equivalent ÷ at the desk. The headline answer. | output_x, never rendered today |
| Hours saved | Estimate | (turns + helper turns) × minutes per exchange (6, editable). Shows after 5 active days. | hours_saved_summary |
| Cost per hour saved | Estimate, on Usage | Usage cost ÷ hours saved; and cost ÷ AI-equivalent hours. | new, from both |
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.
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.
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.| # | PR | Risk | Done when |
|---|---|---|---|
| 0 | Rebase, 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. | Low | about_pane_test.mjs green after the rebase |
| 1 | Tokens, buttons, chips, Routines placeholder (round 1) | Low | Round 1 |
| 2 | Fixed modal, nav grouped by goal, "Phone access" label | Low | Four goal headings render; reopen-on-last-pane test green |
| 3 | Pane anatomy, About cards (Updates, What's new card plus "Read the full changelog", Help, Diagnostics) | Low-medium | The link opens CHANGELOG.md in the viewer |
| 4 | Copy pass, plain labels (Decisions to make, Overdue reply, project) | Low | No "breached", "SLA" or "node" in user-facing copy |
| 5 | Move controls: backup, chat history (with restore and undo), GitHub sync into Files and backup; Spending card | Medium | Every id in section 4 resolves |
| 6 | Dashboard shell: dash-detail, per-card guard, loading, empty and error; retire #dashLoading and the toast; re-shoot before/ | Medium | Fault injection: a throw in one card blanks that card only |
| 7 | Tree two panes, keyboard, resizer; ledger_list gains node; work_tree_node_files | Medium | Keyboard table passes; usable at 166 nodes, 7 levels |
| 8 | Work and Inbox details via ledger_find and the ledger_link.js drawer; actions seed the chat; Meetings view gains Review; Dashboard Meetings tab retires | Medium | No app-side ledger write exists; a chase is stamped only after it is sent |
| 9 | Usage: Spend, Hours, Budget, by model, by routine and command, drill-downs | Medium | Unpriced models never show $0.00; budget is a calendar month |
| 10 | System details, nudges, notices, Dashboard badge | Medium | Badge equals Needs you rows; optional setup excluded |
| 11 | Outputs panel and the persistent index | High | Script writes and published links appear; Today and the panel agree |
| 12 | Connected tools layout (round 1 PR 7) | Medium-high | Round 1 |
| 13 | WhatsApp sheet and custom MCP sheet (round 1 PR 8) | Medium-high | Round 1 |
| 14 | Connect dialog stepper, agents merge (round 1 PR 9) | High | Round 1 |
| 15 | Follow-ups redirect (decided 5 Oct) | Low | The tab lands on Work with the drawer, Draft the chases, Show closed too and the scope line |
| 16 | Sidebar (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 retires | Medium | Every top-level view keeps the rail; Ctrl+B, Ctrl+P, Alt+Up and Down work; the viewer never squeezes the chat under 560px |
| 17 | Productivity 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 saved | Medium | No 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 |
| 18 | Status 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 2 | Medium | Every 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.
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.
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.
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.