Repository navigation
Conversation
… serialise first-run user creation - In-memory per-IP and per-username throttle with exponential lockout (429 + Retry-After) - Verify against a dummy bcrypt hash for unknown usernames - Login no longer holds a per-username lock; NamedLockRegistry prunes idle locks - Minimum password length 8 (server and both clients); temporary passwords use 4 words - First-run/user creation runs under one lock with the has-any-users check inside it - Tests, docs and E2E coverage Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Client V3 Test Results216 tests 216 ✅ 0s ⏱️ Results for commit b4cb012. ♻️ This comment has been updated with latest results. |
Client Test Results98 tests 98 ✅ 0s ⏱️ Results for commit b4cb012. ♻️ This comment has been updated with latest results. |
Python Test Results 1 files 1 suites 1m 16s ⏱️ Results for commit b4cb012. ♻️ This comment has been updated with latest results. |
Playwright E2E Results (firefox)227 tests 227 ✅ 2m 24s ⏱️ Results for commit b4cb012. ♻️ This comment has been updated with latest results. |
Playwright E2E Results (chromium)227 tests 227 ✅ 2m 27s ⏱️ Results for commit b4cb012. ♻️ This comment has been updated with latest results. |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|




Summary
NamedLockRegistrynow discards locks once idle so it cannot grow from user-supplied names.client/andclient-v3/validators and hints); admin-reset temporary passwords now use 4 words./api/v1/auth/createand/api/v2/users) runs under a single lock with the has-any-users check inside it, so concurrent first-run requests cannot create two admins. A one-time setup token was not added to keep this PR contained; the residual risk (anyone who can reach a fresh server first can claim the admin account) is documented in the getting-started docs.Tests
🤖 Generated with Claude Code