Harden login and make personal-best records self-correct

Login: add an in-memory per-IP throttle (8 failed attempts -> 15-min lockout, 429 + Retry-After), raise the change-password minimum to 8 with a 72-char cap, and apply the same minimum on the StartOS Set Login Password action.

Records: add a record_floor column for manually-pinned bests plus recomputeRecord(); the live record is now the direction-aware best of the best logged value and the floor, recomputed on entry edit/delete so it can drop again (never below the floor). Settings exposes the floor as an override and shows the live best as a placeholder.

Bump package 0.1.6:0 -> 0.1.7:0 and the service-worker cache to v7.
This commit is contained in:
Keysat
2026-06-15 13:22:41 -05:00
parent bbddebc3d6
commit fe66575ffe
13 changed files with 125 additions and 28 deletions
@@ -11,7 +11,7 @@ export default {
6: 'Establecer contraseña de acceso',
7: 'Establece la contraseña que Gunner usa para iniciar sesión en Premier Gunner',
8: 'Contraseña',
9: 'La contraseña que Gunner escribe en la pantalla de inicio de sesión (al menos 4 caracteres)',
9: 'La contraseña que Gunner escribe en la pantalla de inicio de sesión (al menos 8 caracteres)',
},
de_DE: {
0: 'Starte Premier Gunner!',
@@ -23,7 +23,7 @@ export default {
6: 'Anmeldepasswort festlegen',
7: 'Lege das Passwort fest, mit dem Gunner sich bei Premier Gunner anmeldet',
8: 'Passwort',
9: 'Das Passwort, das Gunner auf dem Anmeldebildschirm eingibt (mindestens 4 Zeichen)',
9: 'Das Passwort, das Gunner auf dem Anmeldebildschirm eingibt (mindestens 8 Zeichen)',
},
pl_PL: {
0: 'Uruchamianie Premier Gunner!',
@@ -35,7 +35,7 @@ export default {
6: 'Ustaw hasło logowania',
7: 'Ustaw hasło, którego Gunner używa do logowania w Premier Gunner',
8: 'Hasło',
9: 'Hasło, które Gunner wpisuje na ekranie logowania (co najmniej 4 znaki)',
9: 'Hasło, które Gunner wpisuje na ekranie logowania (co najmniej 8 znaków)',
},
fr_FR: {
0: 'Démarrage de Premier Gunner !',
@@ -47,6 +47,6 @@ export default {
6: 'Définir le mot de passe de connexion',
7: 'Définissez le mot de passe que Gunner utilise pour se connecter à Premier Gunner',
8: 'Mot de passe',
9: "Le mot de passe que Gunner saisit sur l'écran de connexion (au moins 4 caractères)",
9: "Le mot de passe que Gunner saisit sur l'écran de connexion (au moins 8 caractères)",
},
} satisfies Record<string, LangDict>