Fixed
- Race condition in
router.js: whenauth.me()failed during initial navigation,_pendingLoginRedirectwas not cleared before callingnavigate('/login')from the catch block, causing thefinallyhandler to launch a second concurrent navigation. If the second navigation was still in progress when the user submitted the login form,navigate('/', user)was silently blocked — login appeared to succeed but the dashboard never loaded (most noticeable on iOS Safari PWA with iCloud Keychain autofill)
Added
- Version number displayed on the login page (fetched from new
GET /api/v1/versionendpoint, no auth required), so users can verify which release their PWA is running