← All changelog

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.