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).
ReadonlyPenSelected 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.
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.