The currently active tool.
Display name of the session's agent (the pen flyout note: "violet = Sage's").
Whether undo / redo are available (drives nothing visually but kept for a11y).
Selected pen ink color (from WHITEBOARD_PEN_COLORS).
Selected pen stroke width.
ReadonlyPenSelected shape kind for drag-create.
ReadonlyShapeA style choice was made — the board applies it to the selected text/sticky item (if any).
Selected text bold state (labels render bold by default).
Selected text color (null = the theme default; palette excludes the agent's violet).
ReadonlyTextSelected text font family.
Selected text font size (curated steps; 12 matches the CSS default).
ReadonlyTextReadonlyToolsTools narrowed by ToolRoster, in Tools order. The template loops over this.
Recomputed by the ToolRoster setter; the default (no roster) is every tool.
The pen flyout's swatches. Defaults to WHITEBOARD_PEN_COLORS (tuned for MJ's dark
canvas); a host on a light theme passes its own hexes. Anything that is not an array with
at least one usable entry reads as the default — a static template attribute
(PenColors="#000,#fff", a plausible slip) hands us a string, and a string reaching the
template's @for would throw; blank, non-string and non-hex entries are dropped (see
NormalizeWhiteboardPenPalette). The kept value is a frozen COPY so a host mutating
its array afterwards changes theirs, not ours, until they bind it again.
Which tools the palette offers. null (default) is all eleven, today's rendering. A host
that narrows this also narrows the keyboard shortcuts and the canvas context menu, because
the same roster is threaded to all three (see whiteboard-tool-roster.ts).
A setter so VisibleTools is filtered ONCE per roster change rather than on every
change-detection pass — the template loops over it, so a getter re-filtered the eleven
entries (and allocated a new array, defeating @for reuse) on every tick.
The floating left-edge toolbar of the live whiteboard: tool buttons with kbd hints, the pen color/width flyout (with the "violet = agent's" reservation note), the shape flyout, and undo/redo. Pure presentational — all state in/out via bindings.