v0.3.2 — Unified Annotation Types
Highlights
Annotation type unification — the three semantically identical annotation types (comment, suggestion, question) are now a single comment type with optional suggestedText and directedAt fields. The toolbar collapses from three buttons to one Comment button with "Replace" and "@claude" toggles.
Legacy session data is migrated transparently via sanitizeAnnotation().
Changed
- Annotation type unification:
AnnotationTypeSchemareduced from 5 values to 3:highlight,comment,flag(#193, #245, #255) - Toolbar: Comment, Suggest, Ask Claude → single Comment button with toggles (#193)
- Side panel filters: "Suggestions" → "With replacement", "Questions" → "For Claude" (#193)
sanitizeAnnotation()moved tosrc/shared/sanitize.ts— now shared between server and client (#255)
Added
- Link (Ctrl+K), Horizontal Rule, and Code Block buttons in the formatting toolbar (#204)
- Replacement cards show a visual diff — original text in red strikethrough → replacement in green (#195)
- Undo countdown progress bar for the 10-second undo window (#196)
- Review mode shortcut hints (Y / N / ↑↓ / Z) shown below the Review button (#200)
- Chat anchor previews expand on hover to show full text (#198)
tandem_commentaccepts optionalsuggestedTextanddirectedAtparameters (#193)sanitizeAnnotation()normalizes legacy entries at read boundaries (#193)- Exhaustive type switch in
buildDecorationscatches unhandled types at compile time (#255) - 8 new tests covering MCP tool params, sanitization edge cases, and migration paths (#255)
Fixed
- Toolbar wraps to a second row on narrow windows instead of overflowing (#192)
- Edit button on annotation cards now shows a visible "✎ Edit" label (#201)
- Client-side legacy annotations no longer render as invisible decorations or raw JSON (#255)
sanitizeAnnotationno longer dropstextSnapshot: ""oreditedAt: 0(#255)- Event queue observer no longer silently dies if
sanitizeAnnotationthrows (#255) handleEditcatch-block no longer corrupts annotation data on parse failure (#255)
Deprecated
tandem_suggestMCP tool — usetandem_commentwithsuggestedTextinstead (#193)
Removed
"overlay"annotation kind fromAnnotationTypeSchema(#249)"suggestion"and"question"annotation types — usecommentwithsuggestedTextordirectedAtfields. Legacy data migrated automatically. (#193)
921 tests passing | 30 MCP tools | Full changelog