Files
aneurinandClaude Sonnet 5 5c8f2dbf07 Un-hard-wrap all Markdown documentation
Every prose paragraph and list item was manually wrapped at ~80-100
columns; joined each back into a single line. Headings, table rows,
and fenced code blocks are untouched -- tables already had one row per
line, and wrapping inside a code fence is the code's own formatting,
not something this applies to.

Also fixed two pre-existing typos this surfaced (both from wrapping
without leaving the space that was actually intended): a missing space
in "{ challenge_id, options }" and a stray "+ TypeScript" that had
accidentally been written as if it were a new line, in web/README.md
and README.md respectively.

Code comments are explicitly out of scope for this -- left exactly as
they were.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 02:29:08 +01:00

2.9 KiB

Development history

A stage-by-stage log of major features, in the order they landed. Each row describes the app as it was at that point — later stages sometimes superseded earlier ones (e.g. password login, added in stage 1, was removed again in stage 12); see docs/api.md and web/README.md for how things work now.

Stage Scope State
1 Auth API — register, login, GET /me done
2 Frontend shell — Vite PWA, auth-gated routing, register/login pages done
3 Project + card CRUD API done
4 Frontend projects view — project index + create form done
5 Frontend project detail — cards UI with drag-and-drop reorder done
6 Project view — inline title/description editing, delete via a Manage menu done
7 Email verification (magic links) + profile page (resend, change email) done
8 Passwordless login — magic-link by default, password login behind a toggle done
9 Per-project card statuses ("To do" / "Doing" / "Done"); status chip, new cards start with none done
10 Project view — full-width, tabbed: alphabetical "All tasks" list + "Kanban" board, per-column drag ordering done
11 Persistent left sidebar (Dashboard link + project dropdown); dashboard = grid of project tiles + a "Create a project" tile done
12 Passwordless-only auth — registration and password login removed; a magic link is the sole way in, and creates the account if needed done
13 Global inbox — cards can have no project; moved into the sidebar, drag in/out of any project's kanban columns done
14 New-project form moved to the dashboard; sidebar project list is now a switcher dropdown; Kanban is a project's default tab done
15 Passkeys (WebAuthn) — register from the profile page, sign in with one instead of a magic link; a dismissible notice nudges users with none done
16 Project configuration view — manage a project's statuses: add, drag to reorder, delete (reassigning any cards on it first) done
17 Card detail view (/cards/:id) + its own configuration view — a card's text is no longer inline-editable; every list links to its own page instead done
18 Project view split into real routes — Explore (/projects/:id) and Kanban (/projects/:id/kanban) are separate pages under a shared layout, not client-side tab state done
19 Backend/frontend refactoring pass — deduplicated controller/repository boilerplate and CSS, dropped the never-surfaced project description field, squashed the SQL migration history into one clean initial schema done
20 Docker image rebuilt on Alpine (apk's own php83/apache2 packages instead of compiling PHP from source on Debian) — ~735MB down to ~90MB, same architecture otherwise; .dockerignore trimmed to match done