April 28, 2026
Comments and Inbox ship.
Universal comments on doc ranges, table cells, and entire rows, plus a durable per-user notification inbox. Mentions deliver to /inbox, email, and webhooks. Resolve, react, reply with full thread history. Anchors survive AI rewrites.
New
- Highlight a phrase in a doc, click a cell, or right-click a row, then hit C to comment. Threads live in a side rail with reply, resolve, and reactions.
- Comments survive doc edits via stable anchors. The badge shifts to "anchor changed" only when an AI rewrite mangles the surrounding text enough that the original phrase is gone.
- /inbox. Two-pane notification inbox. ↑/↓/j/k navigate, e marks done, Esc closes. Filters: All, Unread, Mine, Mentions. Click any notification to jump straight to the highlighted phrase.
- Sidebar Inbox icon with an unread badge that refreshes every 60s.
API
- `POST /api/comments` with `target: { type: "doc_range" | "cell" | "row", ... }`. `GET /api/comments?workspaceSlug=...` lists comments scoped to the caller's access.
- `POST /api/comments/[id]/replies`, `POST /api/comments/[id]/resolve`, `POST /api/comments/[id]/reactions`.
- Webhook events: `comment.created`, `comment.replied`, `comment.resolved`. Payload carries `target`, `body`, `mentions[]`, `commenter { principalType, id }`.
- MCP `list_comments`, `create_comment`, `resolve_comment` so agents can comment alongside humans on the same threads.