gui: redesign the shell around libadwaita idioms

Rebuild the GUI as if polish had been a requirement from day one:

- AdwOverlaySplitView sidebar (collapses below 760sp), AdwTabView/
  AdwTabBar tabs with spinner, attention icon and off-screen glow
- one primary menu; every command is a win.* action with a
  Ctrl+Shift accelerator; header "needs you" count button
- shared status vocabulary (status.rs + data/style.css) for sidebar
  rows, tabs and pane headers; colours from libadwaita variables
- sidebar rows and tab pages reconciled in place, so selection and
  scroll survive refreshes and state changes can transition
- panes as cards: status header, hover actions, focus outline,
  attention rings as outer shadows (no terminal resize)
- terminals follow the desktop monospace font and a GNOME palette
  for light/dark; bundled symbolic icons in a GResource
- disconnect banner, human-readable toasts, About dialog

Fixes surfaced while verifying it:

- pane.attach now sends replayable VT state (TerminalBackend::
  screen_state) instead of plain text: colours and line starts
  survive attach in the GUI and the CLI
- headless resize keeps the visible screen instead of discarding it
- IPC actor selects on UI requests and the event stream instead of
  polling every 50ms, removing per-keystroke and per-call latency

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
a994b8e028Lucenx9 committed on 9/28/2026, 9:31:38 PMparenta87a4a9
27 files changedLine totals unavailable