V1 ship polish: layout, visual consistency, focus lifecycle, chrome by jeremy · Pull Request #156 · basecamp/basecamp-cli

AI review requested due to automatic review settings

February 25, 2026 06:45
Toast was appended as a layout section between content and status bar,
causing the main content area to shrink by one row for the 3s duration.
Now overlays the penultimate line (above status bar) so content height
stays constant—no reflow on show/hide.
Todos, Cards, Messages, and Detail views built BoostTarget without
AccountID, causing CreateBoost to fall through to the wrong account
in multi-account setups. Now set from session scope, matching the
pattern already used by Hey, Assignments, and Pulse.
- Normalize "..." to "…" across all loading messages and truncation
- Right-panel spinners in Todos/Messages/Checkins fill their panel
  with Width/Height instead of floating in the corner
- Checkins truncateContent: rune-safe truncation for multibyte chars
- Kanban: "No cards" instead of "(empty)", deferred shows hint text
- MyStuff: thin rule separator between sections
- Home: label truncation adds ellipsis
- Widget Truncate threshold adjusted for single-char "…"
…esize

- Search: handle FocusMsg to refocus text input after back-navigation
- Detail: FocusMsg with existing data does silent refresh (no spinner
  flash) — only shows loading indicator when data is nil
- BoostPicker: include in relayout() so terminal resize while open
  doesn't use stale dimensions
…ders

- QuickJump: capitalize category badges (Recent, Starred, Project, Tool)
  and use " · " separator instead of parentheses for descriptions
- Account switcher: show "Could not load accounts" instead of raw error
- Detail: expose ctrl+d/ctrl+u scroll bindings in FullHelp
- Date placeholders: remove hardcoded year, use "mar 15" style examples