- Personal action inbox status-bar pillNew `getPersonalInbox()` helper aggregates the current operator's *actionable* inbox into one number โ unacked self-mentions (rev 27 mention primitive + rev 34 workspace-shared ack) + per-recipient stale assigned tasks (rev 47 detector at 5d threshold + rev 49 per-recipient scoping) + due-soon-and-mine open tasks (rev 22 dueAt within 24h or already overdue, scoped to assignee). New `PersonalInboxPill` client component sits in the dashboard status bar alongside the rev-76 WhatsNewBadge and rev-39 DensityToggle; clicking opens a compact popover listing each axis with click-to-jump anchors to the matching panel (mentions / tasks / stale-tasks). Hidden when total is zero. **Strategic significance**: distinct from the rev-76 WhatsNewBadge (temporal: what changed since I was last here) by being *actionable* โ things that wait for THIS operator's attention right now. The dashboard status-bar instrument cluster now reads six instruments deep: rev-12 heartbeat (loop state) + rev-13 desk health (trust score) + rev-14 cycle performance (latency) + rev-16 read-only pill (auth state) + rev-39 density toggle (layout) + rev-76 what's-new badge (temporal delta) + rev-77 personal inbox (actionable inbox). Pure derived state โ no schema, no migration. Multi-operator teams catching up after a day off get the answer to 'what waits for ME?' without scrolling every panel.
- Per-panel collapse / expand persistenceThe dashboard has accumulated 30+ panels over 76 revs. Rev 39 added the density toggle (compact mode tightens spacing). Rev 77 closes the complementary axis: per-panel *visibility* โ operators can now collapse panels they don't need today via a chevron in every `.app-panel-head`. Persisted in localStorage under `loopdesk:collapsed-panels:<workspaceId>` so the choice survives across sessions and is per-workspace. New `PanelCollapsibility` client component scans every `.app-panel[id]` on mount, injects the chevron, binds click โ toggle `.is-collapsed` class + write storage. CSS handles the visual collapse via `.app-panel.is-collapsed > *:not(.app-panel-head)` rules. Compact mode (rev 39) tightens the collapsed panel further. **Strategic significance**: pairs with the rev-39 density toggle as the second compactness primitive โ together operators on power-user workspaces tune both panel padding (rev 39 โ global) and panel inventory (rev 77 โ per-panel) without screaming for a real dashboard editor. Pure client-side. No schema cost. Cumulative diversification of the operator-stickiness layer alongside the rev-77 personal action inbox.
- `GET /api/v1/workspace/whats-new?since=ISO` โ bearer-auth mirror of rev-76 temporal-delta surfaceCloses the v1 parity gap on the rev-76 dashboard 'what's new since you were last here' badge in lockstep with the rev-77 dashboard primitive. Bearer-auth endpoint accepts an optional `since` ISO timestamp (defaults to last 24h, clamped to 30-day max lookback) and returns per-kind counts (signals/artifacts/outputs/approvals/activity) + small samples in one call. Distinct from `/api/v1/workspace/today` (rev 45 โ calendar-day snapshot) by being *anchored to a caller-provided timestamp* rather than today's day-start. Distinct from `/api/v1/activity` (rev 20 โ full audit log) by aggregating per-kind counts so an MCP host can render '5 new signals ยท 2 outputs' without paginating every entity. **Strategic significance**: until rev 77 an MCP host driving the desk had no single endpoint to answer 'what landed since timestamp X?' โ it had to enumerate `/api/v1/signals` + `/api/v1/runs` + `/api/v1/artifacts` and filter client-side. The cadence pattern from rev 37 onward (ship the dashboard primitive + the v1 mirror in lockstep) continues unbroken. Pairs with `GET /api/v1/workspace/personal-inbox` (rev 77 โ actionable axis) so the personal-axis surface is now end-to-end on the v1 protocol-bound side: rev-76 lastVisitedAt stamp + rev-77 whats-new (temporal) + rev-77 personal-inbox (actionable).
- Visual polish โ amber-tinted personal inbox pill + smooth collapse chevron + focus-visible ringNew `.ld-personal-inbox-pill` CSS uses an amber-tinted palette distinct from the rev-12 heartbeat (brand-color) and rev-76 what's-new badge (brand-color pulsing dot) so the three status-bar instruments read with three distinct visual vocabularies โ heartbeat = ambient state, what's-new = temporal delta, inbox = actionable counter. Hover lift + focus-visible outline ring matches the rev-38 dashboard accessibility pattern. New `.ld-panel-collapse-chevron` uses a subtle muted-grey palette so the chevron reads as ambient affordance rather than a primary action โ the panel head's content remains the visual focus. Mobile breakpoints shrink both surfaces so they fit cleanly on phones. Cumulative micro-polish โ every rev 22+ has carried at least one โ and rev 77's polish is load-bearing because the status bar's instrument density grew 5โ6 with the new actionable pill and needed visual distinction without competing with the rev-76 what's-new badge that landed last cycle.