HERMES-GIELIE/static
Nathan Esquenazi b8b62722ec feat: Sprint 19 — password auth, security headers, login page
Auth system (off by default, zero friction for localhost):
- New api/auth.py module: password hashing (SHA-256 + STATE_DIR salt),
  signed HMAC session cookies (24h TTL), auth middleware
- Enable via HERMES_WEBUI_PASSWORD env var or Settings panel
- Minimal dark-themed login page at /login (self-contained HTML)
- POST /api/auth/login, /api/auth/logout, GET /api/auth/status
- Settings panel: "Access Password" field + "Sign Out" button
- password_hash added to settings.json (null = auth disabled)

Security hardening:
- Security headers on all responses: X-Content-Type-Options: nosniff,
  X-Frame-Options: DENY, Referrer-Policy: same-origin
- POST body size limit: 20MB cap in read_body() to prevent DoS

Closes #23. 9 new tests. Total: 304 passed, 0 regressions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 05:53:26 -07:00
..
boot.js feat: Sprint 18 — file preview auto-close, thinking display, workspace tree 2026-04-03 04:33:24 -07:00
commands.js feat: Sprint 17 -- workspace breadcrumbs, slash commands, send key setting 2026-04-03 04:13:38 -07:00
index.html feat: Sprint 19 — password auth, security headers, login page 2026-04-03 05:53:26 -07:00
messages.js feat: Sprint 17 -- workspace breadcrumbs, slash commands, send key setting 2026-04-03 04:13:38 -07:00
panels.js feat: Sprint 19 — password auth, security headers, login page 2026-04-03 05:53:26 -07:00
sessions.js feat: safe HTML rendering in AI responses + active session gold style + Sprint 16 tests 2026-04-03 00:27:43 +00:00
style.css feat: Sprint 18 — file preview auto-close, thinking display, workspace tree 2026-04-03 04:33:24 -07:00
ui.js feat: Sprint 18 — file preview auto-close, thinking display, workspace tree 2026-04-03 04:33:24 -07:00
workspace.js fix: apply review fixes, update version to v0.20, add Sprint 18 changelog 2026-04-03 05:02:30 -07:00