The audit log grows a UI and a per-board history, every board and region shows who last touched it, and the editor is reworked into a three-pane workspace with a Ctrl / Cmd + K command palette.
Upgrading: this release adds one migration (
0006). Runpnpm migrate(or let the Helm pre-upgrade Job run it) before serving traffic.
Accountability
- See who wrote what. The editor shows "Created by …" under the board header and a muted "Last edited by … · when" on each region, resolved from data StateBoard already recorded (a member who has since left still resolves by name). Editor-only; never rendered on the public share link.
- Audit-log UI.
/settings/audit(owners) finally surfaces the append-only log that's been written since v1. Filter by actor / action / resource / date, keyset-paginated, with a one-shot CSV export — UTC timestamps, RFC-4180 quoting, and defended against spreadsheet formula injection. - Per-board history.
/boards/[id]/history, reached from the board's overflow menu, shows a single board's own history — screens, regions, share links — to anyone with access to that board. Workspace-admin events (member changes) stay in the owner-only view. Migration0006denormalizesboard_idonto the audit log with a best-effort backfill, so a board's history survives deletion of the screen or region a row targeted.
Editor
- Three-pane workspace. A left screens sidebar replaces the horizontal tab row: a vertical list that scales, where each entry is a thumbnail with its region boxes painted on. It collapses to a rail and auto-tucks the moment you start working on the canvas. The canvas grows to fill the space and fits itself to it. The right inspector is now contextual — it slides in only to edit a region and otherwise gets out of the way.
- Command palette (
Ctrl/Cmd+K). A board-scoped jumper from a centered search field: fuzzy-match a screen by name, or a region by its label or a phrase you remember from its notes, and jump straight there (the region is selected on arrival). Grouped results, keyboard-first, plus quick board actions. - Region text saves on a debounce. Labels and notes persist when you pause typing or click away, instead of on every keystroke — one audit entry per edit, and no more characters (like spaces) dropped mid-type.
- Cleaner header. Sharing is one split-button; board history and settings fold into a single overflow menu; the state filter is separated from the actions; the search field is centered.
- Browser tabs are tellable apart. The boards list, editor, settings, members, history, and audit pages set real page titles.
Share view
- The artifact carries a date, region notes are keyboard- and touch-accessible, and share links unfurl with OpenGraph tags (no
og:image— content stays behind the token).
Fixed
- The GitHub Pages marketing/docs/demo site is indexable again (self-hosted instances keep
noindex); the Pages demo stub gets a title.
Under the hood
- Fuzzy-search scoring, audit filtering / CSV encoding, and authorship resolution are pure, unit-tested modules; the
node:testsuite grows to 119 cases. Dependencies bumped within their majors.
Docker: ghcr.io/saschb2b/stateboard:2026.7.0 (also :latest). Full notes in CHANGELOG.md.
Full changelog: v2026.6.0...v2026.7.0