Skip to content

2026.7.0

Latest

Choose a tag to compare

@saschb2b saschb2b released this 09 Jul 13:42
8c68387

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). Run pnpm 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. Migration 0006 denormalizes board_id onto 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:test suite 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