A Users tab: own password, sessions and accounts in one place

Settings keeps appearance, rates, tokens and About.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Mitchell-Johnson
2026-09-22 19:45:01 -07:00
co-authored by Claude Fable 5.1
parent 2b54a06821
commit 027a2a575c
5 changed files with 210 additions and 185 deletions
+5 -3
View File
@@ -297,14 +297,16 @@ something long in one, switch away and back, refresh — it's all still there.
`install.sh` (the Gitea repo is private, so the one-liner needs `HAMLAB_TOKEN`).
- **Users, sessions and settings that follow the account** — **shipped 2026-09-22**
(`internal/api/users.go`, `config.User`, `store.Session`/`UserState`, `Login.tsx`,
`Settings.tsx`). The login is a user name and a password. `config.json` holds `users`
`Users.tsx` — a hub-only **Users** tab in the rail, added the same day at Mitchell's
request, holds everything about accounts: your own password, your sessions, the
accounts; Settings keeps appearance, rates, tokens and About). The login is a user name and a password. `config.json` holds `users`
(name, argon2id hash, created, last seen); the old single `password_hash` becomes the
account named after the OS user the console runs as on first boot, its signed-in
sessions become that account's, and the machine-wide theme/accents/dashboard become
theirs — nothing to redo after the upgrade. A session carries its user, an ID, when it
was made and last seen, the IP and the browser; **Settings → Sessions** lists yours
was made and last seen, the IP and the browser; **Users → Sessions** lists yours
("Safari on iPhone · 10.0.0.5 · seen 2 min ago"), revokes one, or signs out everywhere
else. **Settings → Users** lists accounts with their session counts, adds one, removes
else. **Users → Users** lists accounts with their session counts, adds one, removes
one (their sessions and settings go too; never yourself, never the last), and resets
another's password (they are signed out); removing and resetting take your own
password first. Everyone signed in can do everything — a household console, not a