v1.3.0 - Mobile adaptation & coach content tiers
Highlights
Mobile adaptation (phones < 768px)
The site is now genuinely usable on phones, while desktop rendering and interactions are intentionally byte-identical to v1.2.0:
- Hamburger navigation menu — nav links were previously unreachable on phones
- The Go board fits the viewport (was a fixed 520px overflowing 390px screens) and uses tap-to-place input with vertical scroll passthrough, so scroll gestures never drop stones
- Mentors page renders as a scrollable stacked list instead of the desktop quincunx layout
- Custom cursor is gated to fine-pointer devices; full-viewport sections use dvh; the board showcase is hidden below md (its fixed grid broke the entire mobile layout viewport)
- Keyboard shortcut hints are hidden on touch-only devices
Coach content tier system
Four-tier content model (basic-explained → coach-eligible → coach-ready → variation-ready) replacing the single allowlist, with cross-validated data sources and an editing-batch workflow.
Operations & subscriptions
- /api/admin/ops operations snapshot (content, coach usage, Stripe, webhook health) rendered in the admin UI
- past_due Stripe subscriptions keep Pro through a 7-day grace window
- Free trial shortened to 3 days
- Static rendering for content pages (SSG + on-demand ISR), localized 404s
Fixes
- CSRF origin check now falls back to the Host header — mutations from LAN/self-hosted setups no longer return 403
- Board coordinate hint corrected to the 1-based (1,1) convention used by the board model and AI coach
- Admin verify endpoint no longer discloses configuration state
Full details in CHANGELOG.md. 111 test files / 982 cases green; CI runs the full chain (audit, format, lint, content validation, typecheck, tests, build).