Version 0.70
September 2, 2026
Teacher-created usernames replace student email setup
David can add every student before class with a username and starting code 0000, prepare their roles and cards before first sign-in, and reset a forgotten code without changing classwork.
Why it matters
- - Removes student email, password creation, class codes, join requests, and approval walkthroughs from new classroom setup.
- - Makes each provisioned roster row an approved class member immediately, so David can preload roles, starter cards, seats, and notes.
- - Lets students keep 0000 or optionally choose a different four-number code from their Account page.
- - Lets David reset a code to 0000 while preserving every membership, role, card, and classroom event.
Verification
- - Unit coverage proves new, replayed, cross-teacher, partial-failure, legacy-activation, code-change, reset, and last-membership reuse behavior.
- - Responsive browser coverage checks the student sign-in surface at 320 and 390 CSS pixels with exact four-number input semantics.
- - Exact PR-head CI, production schema creation, deployment binding, and isolated teacher/student production rehearsal remain delivery gates until release completion.
Source: Linear PI-240
- Stores only a salted scrypt hash in a server-only credential collection; readable codes never enter backups, CSV, print, URLs, or Activity metadata.
- Keeps usernames globally unique and reserved to the teacher who created them, including after the last class membership is removed.
- Creates a student session only after the submitted code is verified and at least one approved membership exists.
- Preserves existing roster IDs, private inventory routes, roles, cards, seats, and notes when a legacy student is assigned a username.