- Per-recipient cost section in the daily digest emailCloses the named rev-52 next-sprint candidate. The rev-52 cost-by-assignee aggregation feeds a new buildPersonalCostSection() helper that drops a 'Your AI spend' block into each recipient's digest email when the workspace has 2+ named assignees. Each owner/admin sees 'Your queue is N% of tracked workspace spend ($X.XX across M tasks, of $Y.YY workspace total)' with a deep-link to the dashboard panel. Solo desks skip the section so the line never reads tautologically as '100% you'. Pre-fetched once per workspace inside runDailyDigest() and reused across every recipient so the call is cheap. The previewDigestForUser() admin path also includes the section so admins iterating on configuration can verify it works. Closes the per-recipient personalisation symmetry across rev-25 assignee section + rev-31 mentions section + rev-49 personal stale section + now rev-53 personal cost section โ the daily digest is fully personalised on every load-bearing per-recipient surface.
- GET /api/v1/cost/today endpointCost-only Today projection on the v1 surface. Returns today/yesterday/baseline7d cents, the new rev-53 7-day daily-cost sparkline, dailyCostCap + capPercent, and the byAssignee[] breakdown โ self-contained one-call cost surface for MCP hosts. Pairs with rev-52 /api/v1/cost/by-assignee (per-recipient), rev-51 /api/v1/tasks/top-cost (per-task), rev-13 /api/v1/runs (per-cycle), rev-18 /api/v1/stats (workspace 7-day) as the five-axis cost cluster on the protocol-bound side. Where /api/v1/workspace/today returns the full snapshot, /api/v1/cost/today returns a cost-only projection so MCP hosts asking 'what is today's spend trajectory?' don't fetch and discard everything else. The MCP-cost surface is functionally complete after rev 53.
- Self-cost highlight on the rev-52 cost-by-assignee panelThe rev-52 dashboard panel listed every teammate's cost slice without highlighting the current operator's row. Multi-operator teams scanning the panel had to read every name to find their own queue. Rev 53 closes the gap: a brand-color callout banner above the list reads 'Your queue is N% of tracked spend ($X.XX across M tasks)' when the current user has cost accrued, and the matching row in the list itself gets a brand-color left-border + softer green bar fill + 'you' pill in the label. Solo desks skip the callout (the row would always be 100% self). Visual polish โ every rev 22+ has carried at least one. The rev-53 callout is the first thing the operator's eye lands on in a multi-operator workspace's cost panel, anchoring 'where am I in this picture?' before they start scanning the rest.
- 7-day daily-cost sparkline on the Today panel + cost trajectoryTodaySnapshot extended with costSparkline7d: number[7] (cents per day for the trailing 7 days INCLUDING today, oldest โ newest left-to-right). The bucketCostSparkline() helper aggregates desk_run rows from the existing rev-53 trailing-window query โ no extra round-trip. New CostSparkline component renders inside the TodayPanel spend stat as a 7-bar mini-chart: today is the rightmost bar with brand-amber gradient highlight; older days fade to neutral so the eye lands on today first. Hidden when every day is zero (fresh workspace). Pairs with the rev-34 yesterday delta (volatility), rev-35 7d-avg baseline (trend number), and now rev-53 trajectory (visual shape) so the spend stat reads three complementary horizons without overwhelming the dashboard. The cost-axis instrument cluster is now 11 layers deep: rev 7 transparency, rev 8 per-cycle drill-down, rev 9 30-day projection, rev 20 hard cap, rev 21 80% warning, rev 32 spike alarm, rev 33 today snapshot, rev 34 yesterday delta, rev 35 7d-avg baseline, rev 51 per-task, rev 52 per-teammate โ and now rev 53 daily trajectory.