feat(desktop): clean up the workspaces board cards
Stacked on #7142 (base is fix-board-review-main-workspaces); land that first.
What changed
The board cards were carrying a lot of repeated chrome: "This device" on every local card, the branch name printed under a title that was already the branch name, and unstyled metadata. This reworks the card after Linear's board anatomy (checked on Mobbin) while keeping the page's existing vocabulary.
Card
- Muted project line at the top: project icon, project name, a laptop mark on main checkouts (same tooltip as the list row). The host chip only appears for remote devices.
- State glyph beside a medium-weight title. This is the same
WorkspaceStateGlyphthe list row uses, so the green review dot, the working spinner, and the column pies read the same on both layouts. - Branch line only when it says something the title doesn't (the list row's rule): hidden for sessions and when branch and name match.
- Footer of outlined pills: PR number with checks dot,
+adds −delschurn when present, Merged/Deleted for tombstones, with the activity age on the right. Age now tracks activity like the list, not creation. - Done states (merged PR, archived) recede to muted text.
Column
- Lanes get a surface one step above the page (
bg-muted/30) with the header inside, so cards read as items in a column. Card gap 8px, lane gap 12px. Works in both themes: page < lane < card.
Refactor commit: WorkspaceStateGlyph moves from the row's private folder up to v2-workspaces/components since two components share it now.
Checks
bun run typecheck(apps/desktop): exit 0bun testfor the workspaces page directory: 17 passbun run check:i18n: exit 0, no catalog changes. The card reuses the row's existing ids, so no new strings.- Rendered in the dev app over CDP; screenshots in the session.
https://claude.ai/code/session_01BjVLqU1kEE6SQqKSYem9ax
Summary by cubic
Reworks workspaces board cards to remove repeated chrome: "This device" no longer labels every local card, and the branch line only shows when it adds information beyond the title. Cards now follow Linear's anatomy with the shared state glyph in the footer, outlined property pills, and the activity age in the header; columns get a surface so cards read as items in a lane. Stacked on fix-board-review-main-workspaces — land that first.
- The host chip only appears for remote devices; main checkouts get a laptop mark.
- Done states (merged PR, archived) recede to muted text.
WorkspaceStateGlyphmoves from the row's private folder tov2-workspaces/componentssince both layouts share it.- No new i18n strings — the card reuses the row's existing ids.