Skip to content

v0.3.2 — Unified Annotation Types

Choose a tag to compare

@bloknayrb bloknayrb released this 12 Apr 07:11
· 1481 commits to master since this release

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: AnnotationTypeSchema reduced 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 to src/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_comment accepts optional suggestedText and directedAt parameters (#193)
  • sanitizeAnnotation() normalizes legacy entries at read boundaries (#193)
  • Exhaustive type switch in buildDecorations catches 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)
  • sanitizeAnnotation no longer drops textSnapshot: "" or editedAt: 0 (#255)
  • Event queue observer no longer silently dies if sanitizeAnnotation throws (#255)
  • handleEdit catch-block no longer corrupts annotation data on parse failure (#255)

Deprecated

  • tandem_suggest MCP tool — use tandem_comment with suggestedText instead (#193)

Removed

  • "overlay" annotation kind from AnnotationTypeSchema (#249)
  • "suggestion" and "question" annotation types — use comment with suggestedText or directedAt fields. Legacy data migrated automatically. (#193)

921 tests passing | 30 MCP tools | Full changelog