9937984a5a
Every duration in the config is a token TTL (access, refresh, content). A zero or negative value mints already-expired tokens — no login, no media playback — and previously loaded silently. parseDuration now rejects <= 0 with a clear error, so misconfiguration fails fast at startup instead of mysteriously at runtime. The AuthService itself stays permissive (it's constructed directly in tests with arbitrary TTLs); config load is the gate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>