2026-09-08 - 2026-09-15
Overview
24 Pull requests merged by 1 user
Merged
#356 docs(auth): correct the claim that QA could never run Google sign-in
Merged
#355 chore(qa): read the Google credentials from the stack, like every other secret
Merged
#354 fix(auth): offer Google on the sign-up tab, not only on Log In (#345)
Merged
#353 fix(e2e): match an email template tab on its whole name, not a prefix
Merged
#352 feat(auth): offer Google sign-in on the login form (#345)
Merged
#351 feat(auth): the routes that assumed every customer has a password (#344)
Merged
#350 feat(auth): link a Google identity to an account that already exists (#343)
Merged
#349 feat(auth): create an account from a Google identity, then ask about consent (#342)
Merged
#348 fix(local): install dependencies when the lockfile changes, not only when node_modules is absent
Merged
#347 feat(auth): the Google sign-in round trip (#341)
Merged
#346 feat(auth): groundwork for signing in with Google (#340)
Merged
#339 fix(ci): the cleanup script forced TLS onto a plaintext endpoint (#324)
Merged
#338 feat(admin): move a customer's account to an address they can reach (#337)
Merged
#336 feat(passkeys): a password reset takes the passkeys with it (#42)
Merged
#335 feat(passkeys): offer passkey sign-in on the login form (#41)
Merged
#334 feat(passkeys): list, add and revoke from the account page (#40)
Merged
#333 feat(passkeys): authentication ceremony (#39)
Merged
#331 feat(passkeys): registration ceremony (#38)
Merged
#330 feat(passkeys): schema, dependency and per-environment Relying Party (#37)
Merged
#329 docs(ops): feature flags are not worth a manager here (#318)
Merged
#328 fix(admin): refetch Inventory when its tab becomes visible (#327)
Merged
#326 test(ci): record which Postgres actually answered (#154)
Merged
#325 chore(ci): a manually-run workflow to delete old Actions runs (#324)
Merged
#323 fix(tests): the error-handling suite would not compile, and nothing local said so (#307)
1 Pull request proposed by 1 user
Proposed
#357 docs(plans): record the Google sign-in plan where the other plans live
19 Issues closed from 1 user
Closed
#332 feat(auth): sign in with Google, and decide whether Apple follows
Closed
#345 Google 6: the button, and the domain cutover
Closed
#344 Google 5: life without a password
Closed
#343 Google 4: linking a Google identity to an existing account
Closed
#342 Google 3: new accounts, and the consent problem
Closed
#341 Google 2: the OAuth round trip
Closed
#340 Google 1: groundwork — nullable password hash, identities table, config
Closed
#337 Admin: change a customer's email address, for the locked-out case
Closed
#42 Passkeys 6: account recovery and interaction with password reset
Closed
#41 Passkeys 5: login page integration and unsupported-browser fallback
Closed
#40 Passkeys 4: manage and revoke passkeys from the account page
Closed
#39 Passkeys 3: authentication ceremony
Closed
#38 Passkeys 2: registration ceremony
Closed
#37 Passkeys 1: schema, dependency, and per-environment RP configuration
Closed
#318 spike(ops): is a feature flag manager worth adopting, and is a free one viable here
Closed
#327 fix(admin): a published item does not appear in Inventory until the page is reloaded
Closed
#324 chore(ci): a manually-run workflow to delete old Actions runs
Closed
#307 chore(sonar): clean up after the rotation and Kysely branches
Closed
#257 e2e: the resend-verification allowance test fails intermittently in full runs but never in isolation
10 Issues created by 0 users
Opened
#324 chore(ci): a manually-run workflow to delete old Actions runs
Opened
#327 fix(admin): a published item does not appear in Inventory until the page is reloaded
Opened
#332 feat(auth): sign in with Google, and decide whether Apple follows
Opened
#337 Admin: change a customer's email address, for the locked-out case
Opened
#340 Google 1: groundwork — nullable password hash, identities table, config
Opened
#341 Google 2: the OAuth round trip
Opened
#342 Google 3: new accounts, and the consent problem
Opened
#343 Google 4: linking a Google identity to an existing account
Opened
#344 Google 5: life without a password
Opened
#345 Google 6: the button, and the domain cutover
2 Unresolved Conversations
Open
#313
chore(ops): move to a domain we control and proxy the origin through Cloudflare
Open
#154
The integration suite's Postgres service loses its schema mid-run in CI, failing 12 of 17 suites