# Volleyboard changelog (newest first)

## 0.7.0 — M2-M7: the whole game (overnight 2026-07-19)
- M7 polish: first-visit how-to-play (three sentences), empty-states pass,
  warm-up court live (config-driven fourth court).
- M6 the soul: perspective through every surface (strip bands, rep()'d
  assignments + holder labels, rally/comment collapse, per-subscriber SSE,
  mentionable); write-side rules (pass validation, per-viewer spike omission
  + 422 backstop); autopass (one hop, bolt-marked, settings sheet); View As
  end-to-end (picker, read-only banner + middleware enforcement, toasts).
- M5 the bell: notifications engine + bell UI (three kinds, dedup, resolved
  propagation, per-recipient SSE).
- M4 the conversation: comments, attachments, mentions, rally timeline as
  play-by-play.
- M3 live: SSE on every write; presence glow on the court strip;
  cross-client motion with sequential stagger; arriving-to-you sound gate;
  foreign resolves dim in place.
- M2 the rally: touches + status automations as movement; the court strip;
  chip flights; five sounds; ace flourish; aging wobble; resolve
  hold-then-glide.

## 0.1.0 — M0-M1: skeleton + board (overnight 2026-07-19)
- BW Auth Pattern B (OAuth2/PKCE vs auth.bowden.works), default-deny
  middleware, SSE bus, Postgres + Alembic, one-process deploy.
- The board: four declarative courts on real Brentwood seed data, exact
  review-app color language, filters/sort/search/StatChips, side + serve
  sheets, inline editing.
