CANVAS: Excalidraw whiteboard with live embeds/links to any calternal item (mail, transaction, event/log, task, contact, deep links) — grill #509

Closed
opened 2026-09-30 09:54:51 +00:00 by kayg · 1 comment
Owner

Request (owner, 2026-09-30)

"please file an issue for a canvas - feature, basically like obsidian-excalidraw (and we are using excalidraw) but we should be able to link embed/link any element from our cloud (mail, transaction, event/log, task, contact, even deeplinks etc)"

Idea

A Canvas (whiteboard) built on Excalidraw (MIT-licensed, AGPL-compatible), similar to the Obsidian Excalidraw plugin. The difference: any calternal item can be dropped onto the canvas as a live, linked card.

Scope to grill (do not build until answered and recorded in DESIGN)

  • C1 Storage: plaintext files are the source of truth. Options: Excalidraw JSON (.excalidraw), or Obsidian-compatible .excalidraw.md (Markdown with an embedded JSON block and a text section, so text is searchable and portable to Obsidian). Recommendation to evaluate: the .excalidraw.md format, for Obsidian compatibility.
  • C2 Embeds and links: any item, by its stable identity (calternal-id / item ID / block ID, per §33 deep links, never paths):
    • a Mail message or thread;
    • a Money transaction, account or category;
    • a Calendar event or Log entry;
    • a Task;
    • a Contact;
    • a Note, heading or block;
    • a File, folder or photo;
    • a saved search, a Settings section, or any calternal deep link;
    • external URLs.
      Each embed is either a live card (title, key fields, thumbnail, updating when the item changes) or a plain link. Click opens the item or the anchored inspector; broken or deleted items show a clear placeholder.
  • C3 Adding items: drag from any calternal list, sidebar or search result onto the canvas; paste a calternal link; a "+" picker that searches every plugin; drop files and photos.
  • C4 Backlinks: items embedded in a canvas show "On canvas X" in their backlinks / inspector (Notes backlink model).
  • C5 Canvas as a Tab or inside Notes/Files: its own Tab, or files opened from Files and Notes (like .base). The owner's Tab list does not include Canvas yet.
  • C6 Collaboration: live co-editing (Yjs, like Notes) and Share / Collaborate (#479).
  • C7 Parity (#484): API, CLI, MCP and WebMCP can create a canvas, add or remove elements and embeds, and export (PNG/SVG); agents can draw diagrams.
  • C8 Performance: large canvases (thousands of elements, hundreds of live embeds): virtualise embed rendering and batch live updates (bench profile per the performance rule).
  • C9 Isolation: an embed never leaks another User's data. A shared canvas shows a recipient only the embeds they can already read (#472 matrix).
  • C10 Mobile and touch: pinch, pan and Pencil drawing on iPad; the tooltip and keyboard rules still apply.
  • C11 Import: open existing Obsidian .excalidraw.md files from a synced vault losslessly.
## Request (owner, 2026-09-30) "please file an issue for a canvas - feature, basically like obsidian-excalidraw (and we are using excalidraw) but we should be able to link embed/link any element from our cloud (mail, transaction, event/log, task, contact, even deeplinks etc)" ## Idea A **Canvas** (whiteboard) built on **Excalidraw** (MIT-licensed, AGPL-compatible), similar to the Obsidian Excalidraw plugin. The difference: any calternal item can be dropped onto the canvas as a live, linked card. ## Scope to grill (do not build until answered and recorded in DESIGN) - **C1 Storage:** plaintext files are the source of truth. Options: Excalidraw JSON (`.excalidraw`), or Obsidian-compatible `.excalidraw.md` (Markdown with an embedded JSON block and a text section, so text is searchable and portable to Obsidian). Recommendation to evaluate: the `.excalidraw.md` format, for Obsidian compatibility. - **C2 Embeds and links:** any item, by its stable identity (calternal-id / item ID / block ID, per §33 deep links, never paths): - a Mail message or thread; - a Money transaction, account or category; - a Calendar event or Log entry; - a Task; - a Contact; - a Note, heading or block; - a File, folder or photo; - a saved search, a Settings section, or any calternal deep link; - external URLs. Each embed is either a **live card** (title, key fields, thumbnail, updating when the item changes) or a plain **link**. Click opens the item or the anchored inspector; broken or deleted items show a clear placeholder. - **C3 Adding items:** drag from any calternal list, sidebar or search result onto the canvas; paste a calternal link; a "+" picker that searches every plugin; drop files and photos. - **C4 Backlinks:** items embedded in a canvas show "On canvas X" in their backlinks / inspector (Notes backlink model). - **C5 Canvas as a Tab or inside Notes/Files:** its own Tab, or files opened from Files and Notes (like `.base`). The owner's Tab list does not include Canvas yet. - **C6 Collaboration:** live co-editing (Yjs, like Notes) and Share / Collaborate (#479). - **C7 Parity (#484):** API, CLI, MCP and WebMCP can create a canvas, add or remove elements and embeds, and export (PNG/SVG); agents can draw diagrams. - **C8 Performance:** large canvases (thousands of elements, hundreds of live embeds): virtualise embed rendering and batch live updates (bench profile per the performance rule). - **C9 Isolation:** an embed never leaks another User's data. A shared canvas shows a recipient only the embeds they can already read (#472 matrix). - **C10 Mobile and touch:** pinch, pan and Pencil drawing on iPad; the tooltip and keyboard rules still apply. - **C11 Import:** open existing Obsidian `.excalidraw.md` files from a synced vault losslessly.
Author
Owner

Superseded by the owner-decided Canvas design in DESIGN §60 (48c94c977). Implementation is now tracked by #976 and its Canvas follow-up issues.

Superseded by the owner-decided Canvas design in DESIGN §60 (48c94c977). Implementation is now tracked by #976 and its Canvas follow-up issues.
kayg closed this issue 2026-10-03 12:48:24 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#509
No description provided.