ClipSpacesClipSpaces Docs
Back to app

All releases

Markdown cards, token metering, fixes

Added

  • Markdown card — a new card type for rich notes and code. Authored in GFM (headings, lists, tables, task lists, fenced code blocks); double-click to edit the raw source, blur to render. Width-resizable; added to the bottom toolbar. The AI reads its content as board context. New components/cards/MarkdownCard.tsx (uses the existing react-markdown + remark-gfm), scoped .cs-md styles.
  • Personalize assistant now also lives in Settings → Clip AI (opens the same personality wizard), not only in the AI panel.

Changed

  • Live-sharing indicator now lives in one corner. The guest's "Live in …'s board" state moved out of a floating top-center banner and into the bottom-left peers dock, as a pill matching the host's "Sharing your board with …" pill. Both connected states now sit in the same place (components/LocalPeersDock.tsx); the page no longer renders a separate banner.
  • Clip AI metering is now token-based, not per-message. The shared host-key allowance is measured in tokens consumed (input + output) per window — a truer reflection of cost — with the Settings meter showing "X of Y tokens". New record_ai_tokens RPC (migration 20260722000100); default allowance 200k tokens / 3h (AI_CREDIT_LIMIT). Own-key users stay unmetered.

Fixed

  • A board with only drawings is no longer treated as empty. The onboarding landing overlay keyed off card count alone, so a freehand scribble on a blank canvas still showed the "empty board" state. Emptiness now also accounts for drawn strokes (components/Canvas.tsx), and the overlay hides while draw mode is active.
  • Draw mode has no "Done" button. Reaching for any other tool now exits draw mode (Esc still works too); the redundant Done button is gone from the draw toolbar (components/DrawLayer.tsx, app/page.tsx).
  • Backspace / Delete now removes the selected card. Nodes were flagged deletable: false, which made React Flow ignore the delete keys entirely.
  • Resizing works for all cards (images, stickies, links, …). The width handles used NodeResizeControl's default corner-handle variant, which ignores edge positions and rendered nothing grabbable; they now use the line variant.