Canvas

The canvas is an infinite whiteboard for spatial thinking. Unlike the linear Markdown editor, the canvas lets you place notes, images, sticky notes, and drawings anywhere on a two-dimensional surface and connect them with arrows. It is designed for brainstorming, mind mapping, system architecture diagrams, mood boards, and any task where free-form spatial arrangement is more natural than sequential text.

File Format

Canvas data is stored in .canvas files as JSON. The format is simple and human-readable:

{
  "nodes": [
    {
      "id": "a1b2c3d4e5f6g7h8",
      "type": "text",
      "x": 100,
      "y": 200,
      "width": 260,
      "height": 160,
      "text": "Main idea"
    }
  ],
  "edges": [
    {
      "id": "h8g7f6e5d4c3b2a1",
      "fromNode": "a1b2c3d4e5f6g7h8",
      "toNode": "i9j0k1l2m3n4o5p6",
      "fromSide": "right",
      "toSide": "left"
    }
  ]
}

Each node has a unique 16-character hex ID, a type, position (x, y), dimensions (width, height), and type-specific properties. Edges connect two nodes by ID and specify which side of each node the connection attaches to (top, bottom, left, or right).

Creating a Canvas

  • File menu: File > New Canvas, or use the command palette and search for "New Canvas".
  • File explorer: Right-click a folder and select "New Canvas".
  • Keyboard: No default shortcut, but you can assign one in the hotkey settings.

New canvases open with an empty viewport and a dot-grid background.

Node Types

Text Nodes

General-purpose text cards. They render Markdown content inside a bordered rectangle. Default size is 260 x 160 pixels. Double-click to edit the text content.

Sticky Notes

Colored square cards that mimic physical sticky notes. Six colors are available:

Color Hex
Yellow #f9e2af
Pink #f5c2e7
Blue #89dceb
Green #a6e3a1
Purple #cba6f7
Peach #fab387

Sticky notes are 200 x 200 pixels by default and have a slight random rotation (between -2 and +2 degrees) applied on creation for a natural, pinned-on-a-corkboard appearance. Double-click to edit the text.

Image Nodes

Display an image from the vault. Specify the image path relative to the vault root. Default size is 300 x 240 pixels. The image is scaled to fit the node rectangle while preserving aspect ratio.

File Embed Nodes

Embed a reference to another file in the vault. The node displays the file name and, for Markdown files, a preview of the content. Clicking the file embed opens the referenced file in the editor. Default size is 260 x 120 pixels.

Drawing Nodes

Freehand strokes captured with the pencil tool. Each drawing node stores an array of point coordinates, a stroke color, and a stroke width. The node's bounding box is calculated automatically from the point data with padding for the stroke width.

Group Nodes

Rectangular regions that visually group other nodes. Groups have a label displayed at the top and a semi-transparent background. Drag the group to move all nodes inside it. Groups are useful for organizing related items into sections on the canvas.

Edges (Arrows)

Edges are directional connections between two nodes. They are drawn as lines with an arrowhead on the target end. Each edge specifies:

  • fromNode / toNode: The IDs of the connected nodes.
  • fromSide / toSide: Which side of the node the edge attaches to (top, bottom, left, or right). Sides are auto-detected based on the relative positions of the two nodes, but can be manually adjusted.
  • label (optional): Text displayed along the edge.
  • color (optional): Override the default edge color.

To create an edge, drag from the edge handle on one node to another node. The handle appears when you hover near the edge of a node.

Auto-Side Detection

When you create a new edge, Noteriv calculates which sides of the two nodes face each other based on their center positions. If node A is to the left of node B, the edge connects from A's right side to B's left side. If you later move a node, the edge sides can be recalculated automatically.

Drawing Tools

The canvas toolbar includes freehand drawing tools:

Pencil

Click and drag to draw freehand strokes on the canvas. Points are captured at pointer resolution and stored as coordinate arrays. You can choose the stroke color and width from the toolbar.

Shapes

Pre-built shape tools are available in the drawing editor (see Drawing Editor). On the canvas, freehand drawing nodes are the primary drawing mechanism.

Eraser

Select the eraser tool and click on a drawing stroke to remove it. The eraser works on entire stroke nodes, not individual points.

Viewport Controls

Pan

Click and drag on the empty background to pan the viewport. The cursor changes to a grab hand while panning. On trackpads, two-finger scroll also pans the view.

Zoom

Scroll the mouse wheel to zoom in or out. Pinch gestures on trackpads are also supported. The zoom range is 0.15x to 3x:

  • At 0.15x, you see the entire canvas overview -- useful for large diagrams.
  • At 1x (default), nodes are at their natural size.
  • At 3x, you are zoomed in for detail work on small text or drawings.

Zoom controls (+ and - buttons) are available in the toolbar for mouse-free zooming.

Zoom Step

Each scroll tick or button press adjusts the zoom by a constant step. The zoom is clamped to the [0.15, 3] range.

Z-Ordering

Nodes have a visual stacking order. When nodes overlap, the one created most recently appears on top. You can adjust the z-order:

  • Bring to Front: Moves the selected node above all other nodes.
  • Send to Back: Moves the selected node below all other nodes.

These operations are available in the node context menu (right-click a node).

Node Operations

Select

Click a node to select it. Selected nodes show resize handles at the corners and edges.

Move

Click and drag a node to reposition it. Hold Shift while dragging to constrain movement to a single axis (horizontal or vertical).

Resize

Drag a resize handle to change the node's dimensions. The minimum size is enforced to prevent nodes from becoming too small to interact with.

Delete

Select a node and press Delete or Backspace to remove it. All edges connected to the deleted node are also removed.

Edit Text

Double-click a text node or sticky note to enter edit mode. Type your content and click outside the node or press Escape to finish editing.

Saving

Canvas files are saved automatically when you make changes. The JSON structure is serialized with 2-space indentation for readability. The file is written through the same file system layer as Markdown notes, so it participates in version control (git sync) and backup (folder sync) alongside your other vault files.

Dot-Grid Background

The canvas viewport displays a subtle dot-grid pattern (24px spacing) that adapts to the active theme. The grid helps with visual alignment when placing nodes but does not enforce snap-to-grid behavior.

Keyboard Shortcuts

Shortcut Action
Delete / Backspace Delete selected node
Escape Deselect / exit edit mode
Ctrl+A Select all nodes
Ctrl+Z Undo
Ctrl+Shift+Z Redo
Double-click Edit text node
Scroll wheel Zoom

Performance

The canvas renders using DOM elements positioned with CSS transforms, not an HTML5 <canvas> element. This means text remains selectable, links are clickable, and accessibility tools can read node content. For canvases with hundreds of nodes, the renderer skips off-screen nodes to maintain smooth scrolling.

Limitations

  • Canvas files are JSON-only. They cannot be edited meaningfully in a plain text editor (though the format is readable).
  • There is no snap-to-grid or alignment guides. Nodes are positioned freely.
  • Collaborative editing is not supported on canvases. Only one user should edit a canvas at a time.
  • The canvas is not available on the mobile app in the current version. Mobile users can view canvas files as raw JSON.