Files
figcraft/docs/boards-parity.md
T
bflatastic 762277fb7d M12: boards dot grid, re-attaching connector ends, curved connectors
Board pages draw a dot grid in the canvas render, after the page colour
and under the layers (figcraft_render::Dots), thinned out when zoomed out
and coloured from the theme's ink against the page. A selected connector
shows its ends as handles; dragging one onto an object re-attaches it,
onto empty canvas leaves it free (board.reattach, one undo step, also
over MCP). Connectors can be curved, and elbows go around the objects
they join when the short way would cross them.
2026-10-24 11:20:05 +07:00

6.7 KiB
Raw Blame History

Boards parity

Last reviewed: 2026-10-24 · Last updated: 2026-10-24 · Change: minor (the dot grid, dragging a connector's end to re-attach it, curved connectors, elbows that go around what they join) · Target: the incumbent's whiteboard product (behaviour from its public help centre)

Breadth ~37%, ready ~21% (estimated, erring low). A board is a FigCraft file of its own kind (file.newBoard) with a dot grid on the page, sticky notes, shapes with text, connectors that follow what they join (straight, elbow or curved, their ends dragged onto other objects), marker, highlighter and eraser, stamps, text and sections, edited together in the existing live sessions. The facilitation tools (timer, voting, widgets), templates, tables, mind maps and the rest of the tail are missing. Remaining: ~28–56 h. Tracked as area 22 of target-app-parity.md (not in its weighted sum: the target there is the design product). The work item is gap 24 in gaps.md.

How boards are built

Board objects are ordinary layers with a small board field on the node (figcraft_doc::BoardItem), so rendering, hit testing, undo, saving, SVG/PNG/PDF export, copy and paste and live sessions work on them unchanged. The file kind (Document.kind) is saved in .figcraft and reaches people who join a live session in their snapshot. What follows from the metadata (a sticky's text size, a shape's text room, connector routes and their labels) is recomputed in the engine's normalize pass, deterministically from the document, so local edits, undo and edits from others in a live session all end with the same geometry.

Features

Feature Status Notes
Board files: File ▸ New board, the home screen's New board card, a light page done file.newBoard; the kind shows in inspect_document, tabs and file rows (a note mark; design files a pen nib)
Board toolbar at the bottom done Move/Hand, Marker/Highlighter/Eraser, Sticky (colour flyout), Shapes (flyout), Connector, Text, Section, Stamp (flyout), Comment, Resources, Actions, the Design panel's button
Design panel hidden by default; a contextual bar above the selection done colour, shape, text size (S/M/L/XL), connector straight/elbow/curved and its arrow; the Design panel opens with its button or View ▸ Design panel
Prototyping and Dev Mode refuse on boards done proto.*, dev.*, view.prototype, view.devMode say why
Sticky notes done a square frame (200 wide, growing taller through auto layout), 8 soft colours, a soft shadow, the note's text size shrinking as it grows (24 → 11, by characters and lines), the author's name at the bottom; a click places one and starts typing; Enter or a double-click edits; Shift+Cmd/Ctrl+Enter adds the next one beside it
Sticky options: hide the author, change size presets, sticky stacks partial board.sticky {author: false}; no size presets or stacks
Shapes with text done rectangle, rounded rectangle, ellipse, diamond, triangle, speech bubble, chevron; text centred and wrapping inside the outline; shape type and text size from the contextual bar
Shape auto-fit to its text, more shapes (cylinder, cross, star…), shape libraries missing
Connectors done from a layer's side (the facing one, or one named) to another layer or a free point, straight, elbow or curved, arrowheads (the stroke's caps), a label in the middle of the route by length (double-click to add); re-routed when either end moves or resizes; a deleted end stays where it was
Curved connectors, elbows around objects, dragging an end to re-attach done board.setStyle {style: curved} (and the contextual bar): one curve leaving and arriving along the sides; an elbow whose short way would cross what it joins goes around their boxes, 24 units clear; a selected connector shows its two ends as handles, and dragging one onto an object attaches it there (the object is outlined while dragging), onto empty canvas leaves it free (board.reattach {id, end, target, side?}, one undo step)
Connector waypoints placed by hand missing routes are computed from the ends; no bend points of your own
Quick-create handles (drag out a connected copy) missing
Marker and highlighter done the Pencil's stroke fitting with board presets: marker opaque, highlighter wide, see-through and multiplying
Eraser done drag over marker and highlighter strokes to remove them, one undo step
Pen colours and widths in the toolbar partial tool.marker {color}, tool.highlighter {color}; colour changes on a selected stroke from the contextual bar
Stamps done thumbs up, heart, plus one, star, question, check: round badges drawn as vectors, the placer's name on hover
Stamps sticking to the object they land on, the stamp wheel, emotes, stickers missing
Text and sections done the existing Text tool and sections
Live sessions: cursors, selections, cursor chat, spotlight done the existing sessions; board objects, connectors following moved objects, colours and stamps sync both ways (checked with two app instances)
Timer and music missing
Voting sessions missing
Board widgets missing design-file widgets exist (crates/engine/src/widgets.rs), not wired to boards
Templates (retrospective, brainstorm, flow chart…) missing
Tables missing
Mind maps missing
Washi tape, code blocks, image cropping on boards missing images can be placed as in design files
Audio and huddles missing
AI features (summaries, sorting stickies, generating boards) missing
Dot grid on the page done the canvas render draws it after the page colour and before the layers (figcraft_render::Dots), so objects cover it; 24 units apart, doubling when zoomed out until the dots are at least 14 points apart, the dots the next doubling drops fading out first; dark dots on a light page, light ones on a dark page, from the theme's ink; written straight into the image, no allocation per dot; never in exports
.jam import and export missing see file-format-parity.md

Revision history

Date Change Summary
2026-10-24 minor M12: the dot grid on board pages (a render pass under the layers), dragging a selected connector's end onto another object or empty canvas (board.reattach), curved connectors, and elbows that go around the objects they join. Breadth ~35% → ~37%, ready ~20% → ~21%, ~30–60 h → ~28–56 h
2026-10-24 major Created with board files (M12): sticky notes, shapes with text, connectors, ink and eraser, stamps, the board toolbar and contextual bar, live-session sync