ident
All repositories: gitoria
3.2 KB
# Mission 008 (old 032) — ident: the sign-in page remembers the code step (ident#20)Ticket: https://tickets.worldapi.org/projects/ident.worldapi.org/20 — the creator is blocked by this right now.## The bug`components/home.hl`: after "Send me a code" (`on ask` → POST /api/code) the step lives only in client memory(`askCode = true`, `sentTo`). Any reload — a phone reloading the tab while the user reads the mail, a second tab, asocket reconnect that re-seeds — shows the email form again; the code cannot be entered. Same on `/` and `/signin/<rid>`.## Build (properly — no shortcut)- The server remembers the pending sign-in **in the browser's session** (the webex session): the address a code wassent to. The page's seed then starts on the code step (`askCode` true, `sentTo` = that address) while a code for itis waiting and unused and not expired — on `/` and on `/signin/<rid>` (the rid stays in the URL, keep the app flow).- /api/code is a plain HTTP route and our vendored webex gives function routes NO session (hybriel#11, fixed only onAnton's branch — do not re-vendor). So after a successful POST, record it through a face that has the session(e.g. `emit server rememberPending(email)`), and the server must only accept it when a code for that address isreally waiting (never a way to show a code step for an arbitrary address without a sent code — it holds no secret,but keep it honest). Use `realSession()` as the other faces do (hybriel#16 workaround).- Cleared on: successful sign-in, "Other address" (back), expiry. A wrong code keeps the step.- Keep the look; the only visible change: the code step survives reloads.## Where and how- Workspace: `loreana:/media/STORAGE/projects/ident.worldapi.org` (ssh loreana, user mre). Read its README.md,STATUS.md, CONCEPT.md, DECISIONS.md first. No git (not a repo). Never read or print `.env`.- Hybriel pitfalls: `/CONTAINERS/projects/antcolony/docs/hybriel-for-app-workers.md` and`/CONTAINERS/projects/antcolony/missions/TEMPLATE-hybriel-block.md` — read both.- Never trigger an OTP on the live port or the dev server :8351 (it mails for real). Tests start their own servers(see README "Test"); use ports 8740-8749 for anything new.- Gates: all existing gates (README "Test") must still pass. Add a real-browser check to the gate that fits(`tests/browser.mjs` uses Chrome via cdp.mjs): request a code → RELOAD the page → the code field is there with theaddress → enter the code (read it from the test server's store/outbox as the gate does) → signed in. Also: reloadafter "Other address" → email form; `/signin/<rid>` + reload → code step, and the app flow still completes.- Do NOT deploy. Update ident README (test section) and STATUS.md, append a line to ident LOG.md if it has one.## Report backWhat you changed (files), the gate results with counts, the exact new checks, anything you could not do.## CHANGE (creator, 06:45): a real /code pageCreator: "just make a /code where it checks a pending code". After "Send me a code" the browser goes to `/code`(app login: `/signin/<rid>/code`). The page checks the session for a pending, unused, unexpired code → code form withthe address; none → back to the email form (`/` or `/signin/<rid>`). Reload of /code keeps the code form.
Branches
- mainmain branch
Latest commits
- f8bdcbc2ident: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); all gates greenmre
- ff78726cident: Hybriel master 190aa11d (fc838894 GC correctness, #127, #126 closure scopes); gates all greenmre
- a3a7d21aident: Hybriel master 8efba065 (#126 GC by bytes, #48 lambda params copy); session-writing lambdas take &sessionmre
- 98226b41antcolony#40: mission references point to the moved missionsmre
- ff805b9aantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
- 51a7bcdfident: Hybriel master 73267707 (#122); /code uses the new page() signature; pending address passed as parameter; once-checksmre
- 836f644fident#24: installable app (manifest, service worker, data-free offline /start), own iconmre
- 8bebbbf2deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
- cc063ea2deploy.sh: never send .git or .gitignore to Byrodinmre
- 81b15b7bState of 2026-09-27, before the move to gitoriamre