Version 0.23
July 14, 2026
Account-only classroom access and safer recovery
Real classroom inventories now require an approved student account, forged cross-game changes are rejected, undo refuses later-changed cards, and exports are safer to open and download.
Why it matters
- - Non-demo inventories can no longer be opened or changed with a student access code alone; the seeded public Egypt demo remains code-only for safe product review.
- - Forged teacher forms cannot create students, cards, roles, or transfers outside the selected game.
- - Undo stops instead of removing or moving a card after a later classroom action changed its recorded owner or state.
- - Large classes and card libraries are no longer silently cut off at 1,000 rows.
- - Spreadsheet exports neutralize formula-like text, and classroom downloads are marked private and no-store.
- - Appwrite account-sync failures now give David a retryable recovery message instead of a false success notice.
Verification
- - Two hundred six unit tests pass across every state-changing action, authentication, session cookies, Appwrite query safety, transactions, recovery, pagination, downloads, restore, deletion, integrity, rate limiting, access codes, game-settings metadata, and CSP.
- - Required verification measures 13 critical backend modules, includes files even when tests do not import them, and rejects coverage below a baseline of 80.8% statements, 62.5% branches, 91.3% functions, and 90.4% lines.
- - Typecheck and source lint pass.
- - Required verification now includes source security analysis with zero warnings across the app, middleware, and operator scripts.
- - Protected-preview smoke and automated accessibility coverage passed across Chromium, Firefox, WebKit, and mobile WebKit; the only timed-out Firefox scan passed when its full lane reran serially.
- - Current read-only production health, integrity, and backup-restore planning checks pass; health reports ready.
- - The Linear release ledger was updated before this public page entry.
Source: Linear release ledger document, PI-213
- Limited code-only inventory reads and mutations to the intentionally public seeded demo; real legacy students now use the class join and approval flow.
- Added executable action inventory, authentication, invalid-input, success, race, isolation, undo, and recovery regression suites.
- Added required coverage floors across critical mutation, authorization, recovery, integrity, and security modules so untested regressions cannot silently lower the verified baseline.
- Removed artificial 1,000-row lookup limits and asserted exact single-row mutation results.
- Revalidated parent games and transfer recipients before writes, including at teacher transfer-request approval time.
- Made transfer, manual-add, and role-deal undo compare the exact recorded state; older underspecified role deals fail safely.
- Hardened CSV cells, download filenames, caching, account-profile synchronization, and failed-join account cleanup.