refactor: rename routes to the glossary and split the letter axes #25
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/route-revamp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Routes now speak the glossary in
CONTEXT.md. The container word is Escritoire, and the page that renders it stops calling itself a drawer.Routes
/drawer/escritoire/read/:public_id/letter/:public_id/login/unlock/onboard/begin/quill/:public_id?/letter/stays plain on purpose: it is the only route a stranger ever sees, pasted into a chat by someone with no product vocabulary. Inward routes may turn heads; the outward one has to be legible./read/:public_idis deleted outright, not redirected — there are no active users and no share links in the wild. It falls through to the existing catch-all and lands on/.Two things that would have broken quietly
backend/letters/tasks.py:33hardcoded/read/in the vault-unlock email — the one email an author may have waited months for.frontend/lighthouserc.jsongated CI on/login, which would now 404.Lifecycle and Disposition split
Editor.tsxtyped letter state as"DRAFT" | "SEALED" | "VAULT", welding the two axesCONTEXT.mddefines as orthogonal —VAULTis a Disposition and never a Lifecycle. NowLifecycle,Disposition,SaveIntentandResolvedIntentlive inapi/response.ts, and each author intent resolves into both axes.Being honest about this one: it is a latent fix, not a live bug. Sealed letters redirect out of the quill, and there is no autosave, so the old
type: "KEPT"hardcode needed an unreachable state to bite. The unsoundness was real but masked byres.databeingany.Review notes
components/reader/→letter/,components/login/→unlock/andpages/Login.tsx→Unlock.tsxfollow from the routes but were not on the originally agreed list. Happy to revert any of them.BURNEDletter still opens in the quill as an empty read-only canvas —Quill.tsxredirects only onSEALED. Pre-existing; makingLifecyclehonest is what exposed it. Worth its own ticket.SaveIntent's members still mix both axes ("DRAFT" | "SEALED" | "VAULT"). Renaming toSEAL_KEPT/SEAL_VAULTwould ripple throughToolBar; left as a judgement call.Verification
tsc -bclean · 74 tests / 12 files passing (from 71/12) ·vite buildsucceeds · biome clean but for one pre-existingnoExplicitAnyine2e/auth.spec.ts, untouched here.Not run: the Playwright e2e suite needs the compose stack up.
letter.spec.tsande2e/utils/auth.tsare updated but unexercised — worth a run before merge.