- Per-recipient personal chronic-warning section in the daily digestCloses the named rev-75 next-sprint candidate at the per-recipient axis. Rev 75 shipped workspace-shared chronic-warning sections (every owner/admin sees the same list); rev 76 adds the personal scoping mirror at the chronic axis. New `buildPersonalChronicSection()` helper surfaces, for each recipient, (a) their own queue if they're a chronic-spiking assignee โ the strongest personal signal: 'your queue is chronically over-loaded' โ and (b) workstream tags that show up on tasks assigned to them AND are currently chronic. Solo desks (โค1 named assignee) deliberately skip the section to avoid redundancy with the rev-75 workspace-shared sections. Plumbed through both the cron production loop (`runDailyDigest`) and the `previewDigestForUser` admin testing path. **Strategic significance**: closes the per-recipient personalisation symmetry across rev-25 assignee section + rev-31 mentions section + rev-49 personal stale section + rev-53 personal cost section + rev-76 personal chronic section. The daily digest is now fully personalised across every load-bearing per-recipient surface that benefits from per-recipient context. Multi-operator teams see workspace-wide chronic state first, then drill into 'and these chronic tags / your queue specifically' personal scoping โ same shape rev-49 introduced for stale tasks.
- `POST/GET /api/v1/tasks/{id}/notes` โ close v1 parity gap on the rev-14 operator-notes primitiveThe rev-14 operator-notes primitive (the canonical 'steer this task mid-flight' channel that gets fed to the next AI cycle as authoritative direction) has been dashboard-only for 62 revs. Rev 76 closes the v1 parity gap with a thin bearer-auth mirror: GET reads the existing notes on a task, POST appends a new note that the next pulse cycle picks up โ same effect as the dashboard route, same memory write, same auto-promotion of `needs_input` โ `queued`. **Strategic significance**: until rev 76 an MCP host driving the desk programmatically could read every task field and update status / tags / blockers / due dates / pin / assign / cost-spike-ack โ but couldn't fire the most direct AI-direction primitive on the desk. The operator-notes endpoint is the most load-bearing channel between an MCP host and the AI cycle's behavior, and now it's reachable. Indexed in `/api/v1` self-describing endpoint list.
- 'What's new since you were last here' status-bar badge + activity log 'show only new' filterNew `workspace_member.lastVisitedAt` timestamp column + `markWorkspaceVisited()` helper that reads the previous timestamp and stamps the current one in a single call (60-second update throttle to handle render storms). The dashboard server component calls it idempotently on every render so per-user-per-workspace 'last visit' state is workspace-shared (consistent across devices) rather than localStorage-fragile. New `WhatsNewBadge` client component sits in the dashboard status bar below the company name + heartbeat row, surfacing 'N signals ยท M outputs since you were last here 4h ago' with a brand-color pulsing dot. The activity log filter (rev 21) gains a 'Only new (N)' chip + per-row 'new' pill marker that highlights every entry that landed after the previous visit. Diversifies away from the rev-51-onward cost-axis cluster โ answers a different question (when did *I* last look?) than the rev-33 TodayPanel (workspace-shared what happened today?) or the rev-12 LoopHeartbeat (state right now?). **Strategic significance**: pairs with rev-12 heartbeat (state) + rev-13 desk health (trust score) + rev-14 cycle performance (latency) + rev-16 read-only pill + rev-39 density toggle as the *fifth* status-bar instrument โ but uniquely temporal: the others answer 'what state is the desk in right now?' while the rev-76 badge answers 'what changed while I was away?'. Multi-operator teams catching up after a day off no longer scroll every panel to find what's new โ the answer is in the status bar. Cumulative diversification of the dashboard status-bar instrument cluster.
- Visual polish โ pulsing brand-color dot on what's-new badge + per-row activity accent + matching focus-visible ringNew `.ld-whats-new-badge` CSS uses the same brand-color palette as the rev-12 heartbeat indicator so the two status-bar instruments read as siblings. Pulsing dot animation (`@keyframes ld-whats-new-pulse`) draws the eye on workspace return without screaming. The activity log's 'new' rows wear a 2px brand-color left-border accent + an inline 'new' pill so operators can spot fresh entries even when the 'Only new' filter is off. Mobile breakpoint shrinks the badge typography 0.78rem โ 0.74rem so it fits cleanly on phones. Cumulative micro-polish โ every rev 22+ has carried one โ and rev 76's polish is load-bearing because the status bar's instrument density grew 4โ5 instruments and the new instrument needed visual distinction without screaming.