A native Thymer infinite-canvas whiteboard, built from scratch (no @excalidraw runtime dependency) — full Obsidian-Excalidraw parity plus Thymer-native elevation. A drawing is a record: the scene lives in a Scene file property (or a file blob), the note half is the record's line items, and the preview is the record banner.
Companion graph plugin: Plexus Brain (a from-scratch TheBrain/ExcaliBrain-style relationship graph).
The plugin is installed via the Plugins Manager (ahpatel/thymer-plugins-manager):
- Plugins Manager → Install Plugin → point it at this repo (
https://github.com/Svyk/thymer-canvas-plugin). - To update: Plugins Manager → the Plexus Canvas card → Reinstall from source (force overwrite) → reload the tab/app.
The plugin is a single
plugin.js, server-stored and identical on web + desktop — if something looks missing on one client, it's a stale tab. Hard-reload (⌘⇧R).
A flipped note stores its drawing in a Scene file property when the record's collection has one — clean, no body clutter. It also mirrors on-canvas text into a Canvas Text text property so your visual text is findable by Thymer search. Collections without these properties fall back to a body plexus-scene.json attachment.
A plugin cannot add a property to a collection (the Thymer SDK has no such API), so add them once per collection:
Manual add (any collection):
- Open any record in that collection → the Properties section → click the
+(Add property). - Name it
Scene, type File → save. - Add a second property:
Canvas Text, type Text → save.
That's it — flipping any record in that collection then stores the scene in the property, and its canvas text becomes searchable. Existing flipped notes auto-migrate out of the body into the property the next time you open them.
New collections need this one-time add too (there's no auto-hook). The properties already exist on the main content collections (Journal, Notes, Captures, Meetings, People, Projects, Inbox, Sticky Notes, Areas, Goals, Reflections, Quotes, HQ, Topics, Scratchpad, Wish List, Plexus Drawings).
Run these from the command palette (most also have toolbar buttons / hotkeys):
- Drawing & notes —
New Drawing,New hybrid visual note,Flip to drawing/Flip to note,Open today's whiteboard(flips today's Journal record into a drawing),Gallery. - Native tasks —
Add taskdrops a task card backed by a real Thymertaskline item: its checkbox togglessetTaskStatus, so the same task is live in the Task Board / Day View /@task. Tasks attach to the drawing's own record (a task on today's whiteboard lands on the day). - Frames & present — Frame tool (
F) owns its contents;Presentsteps through named frames as slides;Print frames as pages (PDF). - Thinking tools —
New mind map(Tab = child, Enter = sibling),Icon Library(records tagged#icon),Colours(Shade Master + named schemes),Outline to canvas. - References — record cards, board-card transclusion of other drawings,
Insert reference (@@),Link selected cards,Cite(snapshot any selection → paste into a note). - Content —
Chart from CSV,Insert Mermaid diagram,Insert LaTeX equation,Import PDF,Text to path,AI diagram from prompt(multi-provider, encrypted key). - Restructure —
Extract selection to a new drawing (Pizza Slicer),Capture note, Boolean union/subtract/intersect,Schedule card, Semantic ghost-edges. - Settings —
Plexus: Settings(collapsible: General · Canvas behavior · Zoom & Pan · Grid · Laser · Fonts · Export · AI · Advanced).
In-canvas hotkeys: V/R/O/D/A/P/T/E/C/F/L tools · Tab/Enter mind-map · arrows nudge · ⌘Z/⌘⇧Z undo/redo · arrows/space step slides in present mode.
- Built from scratch — no heavy runtime deps in the hot path; the canvas + Brain engines are 100% native.
- Speed-first — designed for a huge graph: the render loop viewport-culls (draws only visible elements), uses a dirty-flag, and lazy-loads content libraries (KaTeX/Mermaid/pdf.js/polybool) from CDN on-use, off the render loop. Semantic edges share Smart Connections' bounded
thymer-semantic-v1service; Canvas does not load a second embedding model. - Secure AI — API keys are encrypted at rest (PBKDF2 → AES-GCM, passphrase-locked), wiped from memory on
pagehide; calls go direct client → provider.
plugin.js is past the MCP-echo size limit, so deploy via git push → Plugins-Manager "Reinstall from source" (byte-exact). The PM repo link must be the full https://github.com/Svyk/thymer-canvas-plugin URL. Roadmap + status: ~/plexus/SCRIPTS-ROADMAP.md, BUILD-STATUS.md.