When API_SECRET is set, Invoice Ninja requires the X-API-SECRET header
on ALL API calls including /api/v1/login. The web UI (React SPA) never
sends this header, so browser login silently fails with "Invalid secret"
while the mobile app (which can be configured with the secret) continues
to work.
UPDATE_SECRET serves a different purpose (protecting the /update endpoint)
and is kept. API_SECRET should remain unset for self-hosted YunoHost installs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>