Why: The 2026-10-13 login recovery contract (Dev docs/svc-deploy/2026-10-13-login-recovery-contract.md) makes username/password the default login, replaces the browser ask_ tab with a one-time recovery key entry, drops the current-password field from the forced set-password gate, and moves admin recovery to issued login keys.
Evidence: vitest 218 passed, npm run build OK, check-knip 43<=43, design-guard green (SELF, task worktree); changepw e2e updated to the new gate shape (two password inputs, return-to-login after success).
Impact: LoginPage gains a redeem-only key tab (no key persistence); ChangePasswordGate shows server-confirmed owner plus new/confirm only and returns to login after success (reloginRequired); App gates on sessionScope=set_password_only including refresh recovery; UsersPanel replaces reset password with issue/revoke login key UI showing plaintext once.
Task card: Dev .task/feature-svc-login-recovery-flow.md (main record). Backend companion: Agent-System-Backend#187.
Why: The 2026-10-13 login recovery contract (Dev docs/svc-deploy/2026-10-13-login-recovery-contract.md) makes username/password the default login, replaces the browser ask_ tab with a one-time recovery key entry, drops the current-password field from the forced set-password gate, and moves admin recovery to issued login keys.
Evidence: vitest 218 passed, npm run build OK, check-knip 43<=43, design-guard green (SELF, task worktree); changepw e2e updated to the new gate shape (two password inputs, return-to-login after success).
Impact: LoginPage gains a redeem-only key tab (no key persistence); ChangePasswordGate shows server-confirmed owner plus new/confirm only and returns to login after success (reloginRequired); App gates on sessionScope=set_password_only including refresh recovery; UsersPanel replaces reset password with issue/revoke login key UI showing plaintext once.
Task card: Dev .task/feature-svc-login-recovery-flow.md (main record). Backend companion: Agent-System-Backend#187.
Why: The 2026-10-13 login contract makes username/password the default
login, replaces the browser ask_ tab with a one-time recovery key
entry, requires the forced set-password gate to drop the current
password field, and routes admin password recovery through admin-issued
login keys instead of direct password resets.
Evidence: vitest 218 passed, npm run build OK, check-knip 43<=43,
design-guard green (SELF, local run in task worktree).
Impact: LoginPage gains a redeem-only key tab (no key persistence);
ChangePasswordGate shows server-confirmed owner plus new/confirm only
and returns to the login page after success (reloginRequired); App
gates on sessionScope=set_password_only; UsersPanel replaces reset
password with issue/revoke login key UI showing plaintext once.
Refs: Dev task feature/svc-login-recovery-flow; backend companion
commit 467718a.
weichen
merged commit 0655bc37e1 into main2026-10-13 04:04:01 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why: The 2026-10-13 login recovery contract (Dev docs/svc-deploy/2026-10-13-login-recovery-contract.md) makes username/password the default login, replaces the browser ask_ tab with a one-time recovery key entry, drops the current-password field from the forced set-password gate, and moves admin recovery to issued login keys.
Evidence: vitest 218 passed, npm run build OK, check-knip 43<=43, design-guard green (SELF, task worktree); changepw e2e updated to the new gate shape (two password inputs, return-to-login after success).
Impact: LoginPage gains a redeem-only key tab (no key persistence); ChangePasswordGate shows server-confirmed owner plus new/confirm only and returns to login after success (reloginRequired); App gates on sessionScope=set_password_only including refresh recovery; UsersPanel replaces reset password with issue/revoke login key UI showing plaintext once.
Task card: Dev .task/feature-svc-login-recovery-flow.md (main record). Backend companion: Agent-System-Backend#187.