feat(desktop): the Inbox follows the listed workspace, and the switcher counts what waits in the others (workspace clarity D2/D11)

Merged
DA
4d ago
+317-30

D2/D11 of the workspace clarity plan (docs/proposals/workspace-clarity.md, decisions 2 and 11, approved by Dean with option A).

Everything the window lists of the Inbox now follows the workspace in the sidebar's head:

  • the Inbox's rows,
  • the sidebar's Inbox count,
  • Home's waiting list.

The switcher counts what waits in the other workspaces:

  • a count in the attention colour beside each other workspace in its menu,
  • a dot by the head's chevron while anything waits elsewhere.

The head's spoken name adds it too, e.g. "Workspace: Acme, 5 members, 2 waiting in other workspaces".

  • planning/workspace-inbox.ts holds the two pure reads:
    • inWorkspace, the listed workspace's share of main's account-wide Inbox read;
    • waitingByWorkspace, the count per workspace.
  • PlansControl.listed gains inbox and inboxPlans, and waitingIn counts per workspace. The account-wide inbox and inboxPlans stay, for what finds a plan anywhere: the open plan's own Inbox tab, and the palette.
  • A plan whose workspace isn't read yet counts in no workspace until the plan list holds it.
  • The Dock badge and notifications stay account-wide, as the proposal decided: they belong to the Mac, not a workspace. D14 (starter only) is a separate PR.
  • MenuAction.waiting draws the count at the item's end. The checked workspace shows its check; its count is the Inbox row's.

Session replay: the counts are text nodes. The dot carries no words, and what it says rides the head's aria-label, which is already masked.

Tests

Both fail without this change:

  • use-plans-tab.test.ts, "the Inbox lists the chosen workspace's share of what waits, and every workspace counts its own". Over two workspaces, the listed share follows the switch, and a plan the list hasn't read counts nowhere.
  • workspace-switcher.test.ts, "the menu counts what waits in each other workspace, and the head says something does". This covers the menu counts, the dot, and the spoken label, and that nothing is marked when only the listed workspace has items waiting.

Evidence

CI builds nothing for the Mac and could not verify this visually. These screenshots are the real renderer in the design-show harness (Chrome), with two items waiting in Northwind and one in Acme. They are not a Mac verify.sh run.

Menu, lightMenu, dark
Menu lightMenu dark

Closed: the dot by the chevron, and the Inbox row counting only Acme's 1 of the 3 waiting:

Head dot

šŸ¤– Generated with Claude Code