callumalpass1k downloadsCanvas-style layouts and JSON Canvas materialization for Obsidian Bases.
Canvas Bases is an Obsidian plugin for Bases and Canvas, and a companion plugin for TaskNotes.
It turns a live Obsidian Bases view into a canvas-style working board. Bases
still owns the query: filters, sorting, grouping, and visible properties stay in
the .base file. Canvas Bases adds spatial layout, cards, groups, relationship
edges, assignment zones, and JSON Canvas export on top of that result set.

.canvas snapshots from the active Bases view, including
native and third-party Bases layouts.Canvas Bases layout embedded in a daily note:

Dragging a link from one card to another:

Rendered relationship edge on the board:

.canvas files.canvas.card.create action contract and publishes the
canvas.drop event contract to other plugins.Open a .base file, add a view, and set its layout to Canvas Bases.
Configure the query with normal Bases controls, then use Canvas Bases for the
spatial layer.
The board supports:
The toolbar can pin notes, add text cards, add manual groups, add assignment zones, create or update the linked Canvas, open the linked Canvas, and reset stored layout positions.
Assignment zones are board frames that run a drop action when a note card is dropped into them.
Bases-derived zones update the Base group property. Custom zones can be created from the toolbar or from a marquee selection and can write a different property. Property zones can replace, append, append uniquely, remove, or clear values, with automatic or explicit text, number, boolean, date, and list value handling.
With TaskNotes available, custom zones can also complete or uncomplete tasks, archive or unarchive tasks, start or stop time tracking, start or assign a Pomodoro, and complete or skip a recurring occurrence.
Canvas Bases can create a JSON Canvas from either the Canvas Bases layout or any active native or third-party Bases layout.
Run:
Canvas Bases: Create canvas from current bases view
The modal lets you choose the Canvas path, layout, edge source, TaskNotes relationship edges, node size, and update rules. Saved options are reused by:
Canvas Bases: Update linked canvas
Canvas Bases: Open linked canvas
Generated Canvas files use stable Canvas Bases-owned node and edge IDs. Updating a Canvas can preserve existing Canvas Bases positions, remove Canvas Bases-owned nodes that no longer appear in the Base result, and keep unrelated manual Canvas content intact.
The generated .canvas file is a snapshot, not a live query. Update it again
after changing the Base result set or board layout.
Canvas Bases renders live board edges and writes Canvas edges when both endpoint notes are present on the board.
Edge sources:
nonewikilinks: links found in notes in the current viewproperties: links from configured note propertiesall: wikilinks and configured note propertiesProperty edge names are configured as a comma-separated list, for example:
depends_on, related
Dragging from a card's link handle to another card opens a relationship menu. Canvas Bases can create configured frontmatter property links, and when TaskNotes is available it can also create supported dependency or subtask relationships. Existing removable property and TaskNotes relationships can be removed from the edge context menu.
TaskNotes support is optional and capability-based. When available, Canvas Bases can show TaskNotes status, priority, due date, blocker, recurrence, time estimate, tracked-time, and active-tracking badges on cards. It can also use TaskNotes task menus from card actions and render dependency or subtask edges on the live board and generated Canvas.
If TaskNotes is disabled, absent, or missing a capability, Canvas Bases keeps the Bases and Canvas workflows working without TaskNotes-only behavior.
With the mdbase plugin installed and Allow local application interoperability enabled, Canvas Bases registers one action provider:
[email protected]
The action appends a text or file card to a selected .canvas file and returns
the created card ID. Its input and output are defined by an mdbase action
contract using JSON Schema. Callers can require the exact provider application
canvas-bases; provider ambiguity and incompatible versions fail explicitly.
The provider is optional and does not change normal Canvas Bases behavior.
Canvas Bases also declares [email protected] as an event source. Dropping a
file card into an active group publishes a CloudEvent containing the board,
record, position, target group, and whether the group assignment changed.
Events are multicast, so every granted compatible subscriber receives its own
copy. Contract compatibility does not grant access; the mdbase interoperability
grant remains the authorization boundary.
Maintainers can run npm run test:testbed to exercise the real Canvas action
provider and event source through the spec-owned provider-lifecycle and
two-consumer multicast scenarios. The testbed uses the normal plugin bridge
boundary and validates deterministic transcripts.
Canvas Bases: Create canvas from current bases view
Canvas Bases: Update linked canvas
Canvas Bases: Open linked canvas
Canvas Bases: Create starter files