Repository navigation
Releases
Releases · 0xPD33/paintboard
v0.5.1
Full Changelog: v0.5.0...v0.5.1
paintboard 0.5.0
Agents
add_graphlays out nodes, edges, and groups and draws them as one undo step.rankpins a node's position along the flow, a group becomes a dashed container, and an edge that closes a cycle routes around the graph.- Items keep an
idin the board file.update_itemsanddelete_itemstake ids without a revision.replace_itemsswaps the whole board. - Items take
caption,parent,wrap,dashed,elbow, and waypointpointson lines and arrows. A newtableitem sizes its rows to its text. - While Collaborate is off, an agent call asks in the window: Allow once, Allow for this session, or Deny.
paintboard-bridge --file board.pbruns tool calls on a board file with no window.--callrepeats, and--args @FILEreads arguments from a file.
Drawing
- A label belongs to its shape, line, or arrow and moves with it. Double-click a shape or an arrow to type one.
- Linked ends stop at the real outline of a diamond, an ellipse, a triangle, or a star.
- Panel Dash and Elbow draw dashed strokes and right-angle arrows.
- A container moves what it holds.
Ctrl+Gputs the selection in a dashed container. - The panel greys out controls that do nothing for the current tool and the selection.
Files
- A tab reloads its board when another program saves the file, and Undo brings back the version before. A tab with unsaved changes asks first.
- Save does not replace a file that changed since the tab read it without asking.
save_boardneedsoverwrite: true, and an MCP session that ends refuses too.
Compatibility
- Boards now save as
PB05. Boards saved by 0.5.0 do not open in 0.4.0 or older.PB02,PB03, andPB04boards still load. - A shape's
labelis now a field of the shape, not a separate text item, soadd_itemsreturns different indices. - An id must be unique on the board. Edits that use a board index need the revision.
paintboard 0.4.0
Tabs and files
- Open several boards in tabs.
Ctrl+Nmakes a new board,Ctrl+Wcloses a tab, andCtrl+Tab,Ctrl+PgUp/PgDn, andCtrl+1toCtrl+9switch tabs. - New, Open (
Ctrl+O), Save, and Save As (Ctrl+Shift+S) use a built-in file dialog. - A dot on a tab marks unsaved changes. Closing a tab or the window asks to save, discard, or cancel.
- With no file arguments, Paintboard reopens the tabs of the last session.
paintboard a.pb b.pbopens each board in its own tab. - Copy and paste work between tabs.
Drawing
- Lines and arrows that start or end on an item stay linked to it when it moves or resizes. Drag an end handle onto an item to link it.
Export
Ctrl+Shift+Eexports the whole board to SVG.paintboard --render FILE [OUT.png|OUT.svg]draws a board with no window.
Agents
- New MCP tools:
list_tabs,switch_tab,new_board,open_board,close_tab,export_svg, andmeasure_text.save_boardtakes apathfor Save As. add_itemstakes anid, alabelcentered on a shape, and arrows withfrom/tothat link to items.- Headless
get_canvasandexport_pngrender every item through EGL, with no display server. - A guide for agents ships as the
paintboard://guideresource and thepaintboard_guideprompt.
Compatibility
- Boards now save as
PB04. Boards saved by 0.4.0 do not open in 0.3.0 or older.PB02andPB03boards still load. - The build now needs the
eglpkg-config module, which Mesa or libglvnd provides.
paintboard 0.3.0
Tools
- Eraser (
E): drag over items to remove them. An empty shape erases only at its outline, so you can clear the inside of a frame and keep the frame. One drag is one undo step. - Reset button and
Ctrl+Shift+Del: clear the board and reset the view. Undo brings the items back. - New shapes: diamond (
D), triangle (I), and star (S), with fills. - Marker (
H): a translucent highlighter. Overlaps inside one stroke do not get darker. - The panel shows the twelve tools in two columns.
Text and pen
- Each tool keeps its own width, so text size is separate from stroke width.
- S, M, L, and XL size presets with a preview. The panel labels the control as text size, stroke width, or marker width.
- The arrow keys,
Home, andEndmove the text caret.Deldeletes forward andCtrl+Vpastes. - Double-click text with Select to edit it.
- A panel click while you type selects the text, so a color or size click applies to it.
- Pen and marker strokes are smoothed when they end.
Agents
- MCP accepts
diamond,triangle,star, andhighlightitems.
Compatibility
- Boards that use the new item types do not open in 0.2.0 or older. Older boards still load.
paintboard 0.2.0
Agents
- MCP stdio server (
paintboard --mcp,--headless) with get/add/update/delete, undo/redo, view, save, and PNG tools. paintboard-bridgeattaches chat clients to an open window over a private Unix socket:codex mcp add paintboard -- paintboard-bridge --mcp.- Collaborate toggle: pause while drawing and Codex, Claude Code, OpenCode, or a custom command/ACP agent replies on the canvas. Each reply is one undo step.
UI
- Panel scales with monitor DPI (X11 DPI, Wayland/macOS scale, or physical size for 4K at scale 1).
PAINTBOARD_UI_SCALEoverrides. - Panel scrolls with the wheel when the window is short.
- Hint bar, hand cursor over buttons,
Ctrl+=/Ctrl+-zoom, window opens at 85% of the work area, 400x300 minimum.
Files
- Saves go through a temporary file and rename; a failed save leaves the old file intact.
- PB02 boards still load and are written back as PB03.
- Export never overwrites a board named
*.png.
Build
- Needs cJSON and Python 3 in addition to GLFW 3.4 and OpenGL.
make testruns the C self-test and three Python suites.
paintboard 0.1.0
First release. Paintboard is a local, offline drawing board in one C file. It draws through GLFW and OpenGL, stores a board in a single binary file, and never touches the network.
What it does
- Pen, line, arrow, rectangle, ellipse, and text.
- Select one item, shift click to add more, or drag a box around a group.
- Move a selection, and resize it with corner handles.
- Copy, cut, paste, duplicate, undo, and redo.
- Eight stroke colors and eight fill colors.
- Dot grid with optional snapping, plus pan and zoom on an infinite canvas.
- Export the visible canvas to PNG.
- Inter and Excalifont are compiled into the binary, so there is no font setup.
Install
nix run github:0xPD33/paintboard
nix profile install github:0xPD33/paintboardFrom source you need GLFW 3.4 or newer, an OpenGL library, pkg-config, and a compiler with C23 #embed. GCC 15 or Clang 19 are new enough.
make
sudo make installmake install also writes the desktop entry and the icons.
See the README for the full key list and ARCHITECTURE.md for the design notes.