Repository navigation
Let teachers create a late student's account, and stop Join reporting failure for an account it made - #1487
Merged
Conversation
The changelog skill said version bumps belonged to the release process, so #1486 added a 0.41.0 section and left package.json at 0.40.1, and the bump then needed a second commit and a second full CI run. Co-Authored-By: Claude Opus 5.5 <[email protected]>
locales-fix removes every key en-US lacks, and en-US declares no `script`, so each run renamed ur-Latn-PK to ur-PK and nan-Latn-TW to nan-TW: their manifests were deleted and en-US's was overwritten with Roman Urdu set right to left. `script` now joins `terms` and glossary `forms` as a key a locale chooses for itself. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…g failure for an account it made A teacher with a password class had no way to make an account for a student who arrived later, short of signing up as them in a private window. The class page now has two explained ways to add a student: add an existing account, or create a new one (password classes only), through a new `addClassStudent` callable that shares `mintAccounts` with `createClass`. The same teacher saw Join say "We couldn't make the account" for an account it had made, then "taken" on retry. joinAccount's password path returned a custom token after the account existed, and a failure there left the account behind while reporting failure. It now rolls back fully on failure and returns no token: the Join page signs in with the password it holds, and tries that sign-in before saying a name is taken. The duplicate "taken" notice is gone. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
…anslation Lowercasing "Delete this class" flagged ten translations in scripts with no letter case (Japanese, Chinese, Hindi, ...), which were already right; marking them would buy re-translations that write the same bytes, so the gate could never clear. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context
A teacher partner reported two problems after making a password-sign-in class for her 6th graders:
Cause of (2):
joinAccount's password path created the account and assigned the username, then returned a custom sign-in token. Any failure after the account existed fell into a catch that only freed the name reservation. That does nothing once the name is assigned, so the account stayed and the client was toldfailed. The likeliest failing step iscreateCustomToken, which in deployed functions needs thesignBlobIAM permission; nothing in the repo grants it, and the emulator doesn't need it. Cloud Logging isn't checked yet; the line to look for is "Could not create a password account".Changes
Join
joinAccountrolls back fully on failure: it deletes the account and unassigns the name. It also returns no token.Class page
addClassStudentcallable (App Check,noProxy). It makes one account in an existing password class and adds it to the class and its galleries.classStudentRefusal, which has unit tests.createClass's account creation (reserve, create, assign, roll back) moved tomintAccounts.ts, which both callables use.createClass's behavior is unchanged.locales-fixbug (separate commit)removeExtraKeysprunedscriptfromur-Latn-PKandnan-Latn-TW, because en-US declares none.ur-PKandnan-TW, deleted their manifests, and overwroteen-US.webmanifestwith Roman Urdu set right to left.scriptis now exempt, liketermsand glossaryforms. A new test fails without the fix.New strings are translated into all 36 locales. Two import-graph byte budgets moved by 0.01MB for the new en-US strings.
Related issues
Verification
npm run check:now,npm run test:run,npm run test:sweepandnpm run localespass.functionsbuilds.join.spec.ts: join, join again with the same credentials and land on the profile, then try a different password and see "taken". It passes against the emulator.Checklist
🤖 Generated with Claude Code