- fetchMe: handle ALL non-ok responses (not just 401) by calling tryRefresh
→ avoids user=null when backend returns 404/500/any error
- DOMContentLoaded guard: check isAuthenticated instead of localStorage token
→ immediate redirect if fetchMe+tryRefresh both fail, no more flash of dashboard
- Cookie Secure flag: check X-Forwarded-Proto header for Traefik/proxy setup
→ cookie gets Secure=true when behind TLS-terminating reverse proxy
- db.go migrate(): split SQL by ; and exec each statement separately
→ fixes SQLite multi-statement limitation (only first stmt was executed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>