The v0.71.0 seeded admin digest was computed with different scrypt parameters than the verifier (verifyPassword() passes the salt as a plain string to scryptSync(pw, saltHex, 32)), so real logins failed with 401.
Re-seed ADMIN_SEED_HASH with a digest produced by exactly that call (plaintext still nowhere in repo).
Idempotent boot-time rotation: UPDATE users SET password_hash = ? WHERE id = 'admin-kamilkrzywda' AND password_hash != ? — heals pre-v0.72.0 databases on every open(), no-op once healed.
Unit tests: new digest constant + rotate-on-open test (legacy file heals; second open is a no-op).
Version 0.71.0 → 0.72.0.
The v0.71.0 seeded admin digest was computed with different scrypt parameters than the verifier (verifyPassword() passes the salt as a plain string to scryptSync(pw, saltHex, 32)), so real logins failed with 401.
- Re-seed ADMIN_SEED_HASH with a digest produced by exactly that call (plaintext still nowhere in repo).
- Idempotent boot-time rotation: UPDATE users SET password_hash = ? WHERE id = 'admin-kamilkrzywda' AND password_hash != ? — heals pre-v0.72.0 databases on every open(), no-op once healed.
- Unit tests: new digest constant + rotate-on-open test (legacy file heals; second open is a no-op).
Version 0.71.0 → 0.72.0.
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.
The v0.71.0 seeded admin digest was computed with different scrypt parameters than the verifier (verifyPassword() passes the salt as a plain string to scryptSync(pw, saltHex, 32)), so real logins failed with 401.
Version 0.71.0 → 0.72.0.