zhang2 downloadsCanvas cards show only a clickable title; click to open a popup with the full body content.
Repository: knink-owo/obsidian-canvas-cards
Turn any Canvas text node into a card: the canvas only shows a clickable title
(optionally button-styled), and clicking the title opens a popup with the full,
rendered Markdown body. The body stays hidden inside the .canvas file until you
open it.


![[embeds]] and images render through Obsidian's own Markdown renderer with the
.canvas file as source path.![[image]] embed inserted. The popup also switches to full screen; Esc leaves
full screen first, then closes.canvasCard), so a card opened in a vault without the plugin is just a text
node whose title is the text; nothing is lost or corrupted.appearance setting), and cards
keep an explicit Canvas node color.![[img.png]]
or ) becomes the card cover with a dark gradient behind the
title. Disable with the Show thumbnails setting.


![]()
main.js, manifest.json and styles.css from the
latest release.<your-vault>/.obsidian/plugins/canvas-cards/ and put the three files
there.Requires Obsidian 1.14.4+ (desktop). Mobile is not supported (the plugin is
isDesktopOnly). To uninstall, disable the plugin and delete its folder; card data
stays inside the .canvas files and is never deleted by the plugin.
| Action | How |
|---|---|
| Create a card in the viewport center | Command Create card |
| Convert selected text nodes to cards | Command Convert selection to cards, or node context menu → Convert to card |
| Open a card body | Click the card title or its corner button (or command Edit card body, or context menu → Edit card) |
| Rename a card | Open the popup and edit the title field |
| Remove a card (body kept, hidden) | Command Remove card from selection, or context menu → Remove card |
| Copy a card body | Command Copy card body, or context menu → Copy body |
| Search all card bodies | Command Search card bodies (works from any view) |
| Export a card to a note | Command Export card to note (needs a selected card), or context menu → Export to note |
Settings (Settings → Canvas Cards):
minimal (default card look) or button.click (default: click the card) or icon (only the corner button
opens the popup; the card keeps Canvas' native click behaviour).icon trigger mode, and is hidden while the native text editor is open. It
opens the popup without starting a canvas drag.Ctrl+Z steps back over that body edit, and undoing
earlier movement/creation actions cannot silently drop a body that was saved
before them. Text edits inside the textarea use the browser's own undo.rebuildView, tab changes,
zooming and plugin reloads; card data and the card look are restored from the
.canvas file.A card is an ordinary text node plus one namespaced field:
{
"id": "10b05ce72fddabb9",
"type": "text",
"text": "Card title",
"x": 200,
"y": 240,
"width": 300,
"height": 96,
"canvasCard": {
"v": 1,
"card": true,
"body": "## Markdown body\n\n- item",
"updated": 1792405295679
}
}
text is the title (rendered natively by Canvas), canvasCard.body is the hidden
Markdown body. Unknown node fields survive Canvas save/reload round-trips; cancelling
a card only flips card to false and keeps body. Advanced Canvas' own fields
(styleAttributes, toFloating, …) are untouched.
isDesktopOnly..canvas file.AGENTS.md for the allowlist and constraints. It does not patch Canvas prototypes,
so a Canvas update is unlikely to break saving or interaction.Report bugs and feature requests in the
issue tracker.
Please include the Obsidian version, the plugin version and, when possible, a minimal
.canvas file that shows the problem.
pnpm install
pnpm run dev # watch build to main.js
pnpm run build # type-check + production bundle
pnpm run lint
Copy main.js, manifest.json and styles.css into
<vault>/.obsidian/plugins/canvas-cards/ and reload the plugin to test. UI and
interaction changes must be verified in a running Obsidian instance.
Releasing: bump the version with pnpm version <patch|minor|major>, push the tag,
and let the Release GitHub workflow build and attach main.js, manifest.json and
styles.css to the release.
More design material:
docs/DESIGN.md — decisions, data model, interaction spec, milestones.docs/research/m0-runtime-notes.md — runtime probes of Canvas internals.docs/VERIFICATION.md — acceptance evidence for v0.2.0 (v1.0 acceptance + v1.1 features).0BSD — see LICENSE.