Freehand drawings are now board content and sync across devices/collaborators.
Strokes were localStorage-only, so they never left the device and weren't part
of the board's data model. They now flow through the same cloud pipeline as
cards and edges: a new public.drawings table (member-read / editor-write RLS,
Realtime-enabled — migration 20260709000100_drawings.sql), a drawings.ts
mapper, and liveDrawings/pushDrawings plumbing in use-workspace. Drawings
stay a passive layer — they can't be selected or dragged like other items.
Beta bug reporter. A "Report a bug" button in the top bar, visible only to
allowlisted beta testers (public.beta_testers + is_beta_tester() RPC,
migration 20260709000200_beta_testers.sql). The form takes a title, severity,
a detailed description, and up to 8 screenshots (drag-drop / paste / pick).
POST /api/bug-report verifies beta membership, then files the report into the
Notion Bug Report database with a Resolved checkbox the team ticks when
an issue is fixed. Screenshots upload to Storage and attach as public URLs.
Changed
DrawLayer is now a controlled component (strokes + onCommit); the canvas
owns stroke state and persistence, mirroring how it owns cards and edges.
Refreshed CLAUDE.md — it described the long-removed tldraw stack; it now
documents the React Flow + Supabase architecture.
Setup
Bug reporting needs a Notion internal integration shared with the Bug Report
database, then NOTION_INTERNAL_TOKEN and
NOTION_BUG_DB_ID=e353c1b346a94281af9b565001599099 in the environment.