| Double-click empty canvas | Add a new box at the cursor (auto-edits the label) |
| + Box button | Add a new box at a random position |
| Click a box | Select it (replaces the current selection) |
| Double-click a box | Edit its label inline |
| Enter while editing | Commit the new label |
| Escape while editing | Cancel the edit |
| Drag a box body | Move it (and any other selected boxes together) |
| ⌥-drag (Alt-drag) | Duplicate the selection and drag the copies |
| + / - with anything selected | Step palette colour by ±1 (wraps 1↔9) — works on boxes, texts, lines, strokes, and the selected edge |
| Shift + + / - with boxes or texts selected | Step font size by ±1 (wraps 1↔9) |
| A with one box selected | Toggle anchor — the map centers on this box on load (one anchor per map) |
| 1–9 with anything selected | Recolor boxes, texts, lines, strokes, and the selected edge: 1 default · 2 inverted (text: bold black) · 3–9 red, orange, yellow, green, blue, purple, gray |
| Shift + 1–9 with boxes or texts selected | Font size: 1 default (14px) → 9 largest (56px) |
| Delete / Backspace | Remove all selected boxes (and their submap subtrees) |
| T | Spawn a text label at the cursor (auto-edits) |
| L | Enter line-draw mode: click start, click end · L or Escape to exit |
| B / V | Enter brush mode (drag to paint freehand) / leave brush mode |
| 1–9 in brush mode | Set the next stroke's colour (cursor pencil tints to match) |
| Click a text / line | Select it |
| Double-click a text | Edit its label |
| Drag a text / line body | Move it (with any other selected items) |
| Drag a line endpoint dot (when selected) | Resize / re-aim the line |
| Double-click a line | Add a control point at the click — the line runs through every added point · drag the green dots to reshape · double-click a green dot to remove it |
| Double-click an existing line in L-mode | Adds a control point at the click (instead of starting a new line) |
| Shift + 1–3 with lines selected | Line render style: 1 straight (default) · 2 smooth bezier · 3 orthogonal (right-angle elbows) |
| Hold Shift while dragging | Snap to the 20px background grid (boxes, texts, line bodies, line endpoints) |
| ⌥-drag any item | Duplicate selection (boxes, texts, lines, edges) |
| Delete / Backspace | Remove selected text / line |
| Drag a blue dot to another box | Create a connection between the two boxes |
| Drag a blue dot onto an existing connected handle | Re-route the existing connection |
| Drag a blue dot into empty space | Spawn a new box at the cursor and connect to it |
| Click an edge | Select it (turns blue + thicker) |
| Delete / Backspace on edge | Remove the edge |
| (creating a new edge) | Replaces any prior edge between the same pair (undirected) |
| Drag on empty canvas | Rubber-band select all boxes intersecting the rectangle |
| ⌘/Ctrl + A | Select every box, text, and line on the current map |
| ⌘/Ctrl + C / X / V | Copy / cut / paste the current selection (each paste offsets +20px) |
| Shift-drag on empty canvas | Add to the existing selection instead of replacing |
| Click on empty canvas | Clear the selection |
| 2+ boxes / texts selected | Floating toolbar above the selection: two buttons align items on a horizontal or vertical centre line — if the result would overlap, items are spread along the line with a 20px gap |