Pre-launch
Initial build
- Declarative SVG puzzle renderer rebuilt from scratch — content-aware viewBox, full variant constraint zoo (thermos, killer cages, German whispers, kropki, arrows, fog underlays, custom overlays).
- Import pipeline accepts Penpa, SudokuPad, F-puzzles, and puzz.link URLs. Vendored marktekfan converter handles every format. Metadata normalizer handles both Penpa-style (cages-as-metadata) and SudokuPad-style (top-level metadata object).
- Library page with Importer, Raw, Testing, and (admin-only) Queue tabs. Status flow: raw → testing → pending_publish → published.
- Solver-facing /feed of published puzzles with favourite hearts (♥) that persist per user.
- Per-user /dashboard with status counts and recent puzzles. /profile with favourites and published works (unfinished + history sections wire up when the solver ships).
- /settings for username and password changes (re-auth required for password changes).
- Auth: signup, login, password reset, post-login redirect to /dashboard.
- Privacy commitment locked in: email only, no marketing email, promo content stays in-app.
- Public pages: /, /about, /privacy, /terms, /changelog.