Add getLocalStorageSafe() helper in tokenStorage.js to handle browsers that expose localStorage but throw SecurityError on access
Wrap all JWT token get/set/remove calls in try/catch so auth bootstrap no longer crashes React on mobile
Problem
On mobile browsers, hesychia.ai flashes the UI briefly after login then goes white. Auth startup reads tokens from localStorage without guarding against storage access errors (common in private mode or blocked storage).
Test plan
Open hesychia.ai on mobile Safari/Chrome (normal mode) and sign in — dashboard should render
Repeat in private/incognito mode — app should not white-screen (may require re-login each session if storage blocked)
Verify existing web login/logout still works on desktop
Run npm test -- tokenStorage in llm-fe
## Summary
- Closes #54
- Add `getLocalStorageSafe()` helper in `tokenStorage.js` to handle browsers that expose `localStorage` but throw `SecurityError` on access
- Wrap all JWT token get/set/remove calls in try/catch so auth bootstrap no longer crashes React on mobile
## Problem
On mobile browsers, hesychia.ai flashes the UI briefly after login then goes white. Auth startup reads tokens from `localStorage` without guarding against storage access errors (common in private mode or blocked storage).
## Test plan
- [ ] Open hesychia.ai on mobile Safari/Chrome (normal mode) and sign in — dashboard should render
- [ ] Repeat in private/incognito mode — app should not white-screen (may require re-login each session if storage blocked)
- [ ] Verify existing web login/logout still works on desktop
- [ ] Run `npm test -- tokenStorage` in `llm-fe`
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
getLocalStorageSafe()helper intokenStorage.jsto handle browsers that exposelocalStoragebut throwSecurityErroron accessProblem
On mobile browsers, hesychia.ai flashes the UI briefly after login then goes white. Auth startup reads tokens from
localStoragewithout guarding against storage access errors (common in private mode or blocked storage).Test plan
npm test -- tokenStorageinllm-fe