refactor(desktop): migrate home onto the design system

Merged
CH
8d ago
+40-23

D36 of the design-system migration (Desktop stack, base feature/desktop-d35-settings-reset-flow, #3413).

What

The home page (apps/desktop/src/renderer/desktop/desktop-home.tsx) moves onto @luke/ui:

  • New task (the greeting's and the first-task welcome's) is the barrel's primary Button, keeping its aria-keyshortcuts, its chord, and its unavailable state while signed out. It replaces the raw primary-button.
  • The page titles ("Welcome back, …", "Start your first task") are Text in the title role on an h1. The page-specific .home-title selector is gone.
  • The section notes (nothing waiting, a refused Inbox read, a refused task-list read) stand in a home-owned .home-note container on the rows' inset instead of the sidebar's .sidebar-note. "Nothing needs you" is muted Text; the failures were already the barrel's ErrorState.

No caller here imported @luke/ui/compat. The section headings, rows, and column (.home-section*, .home-row*, .home-column) are shared with the person page, Issues, and Factory, so they stay until those rows (D41–D44) migrate.

I did not move the page onto CollectionPage or the welcome onto EmptyState: CollectionPage pins its header above a scrolling content column and EmptyState offers only a quiet action under a label-sized title, so either would be a layout change rather than a migration.

No behaviour changed: the ↑/↓/Return row keys, the Inbox and Recent lists, Retry, the welcome condition, and New task's command are untouched.

Visible changes

  • New task: label type 13/18 weight 500 instead of 12.5px weight 600 (the contract's label); the chord keeps its muted on-accent ink, a glyph gap after the word.
  • Titles: 22/30 weight 700 from the title role; the −0.015em tracking is dropped.
  • "Nothing needs you": 13/20 body instead of 12.5px at 1.45.

Tests

  • No new behaviour, so no tests added. One existing test located "Nothing needs you" by the .sidebar-note class; it now finds the paragraph by element.
  • pnpm check:affected exits 0.

Evidence

Captured on Linux with headless Chrome at 1280×840, as #3413 was. A throwaway, uncommitted jsdom test rendered the real DesktopHome (the existing test's synthetic fixture), and that markup was framed in section.home with the built desktop stylesheet from each commit. The ⌘ glyph is missing from Linux's fonts.

LightDark
Home, before
Home, after
Welcome, before
Welcome, after

Not verified on a Mac

  • SF Pro rendering of the button and titles; the window's scroll and drag strip.

🤖 Generated with Claude Code