38 Commits

Author SHA1 Message Date
Usman Baig
20628fa6ab fix: preserve org_id in auth refresh, fix org switcher navigation 2026-03-27 12:03:56 +01:00
Usman Baig
5cff767e32 fix: org switch now updates auth context immediately — no stale org in header 2026-03-26 23:59:30 +01:00
Usman Baig
1c26e4cc6c fix: resolve intermittent auth errors when navigating between tabs
Token refresh race condition: when multiple requests got 401 simultaneously,
queued retries reused stale headers and the initiator fell through without
throwing on retry failure. Now retries regenerate headers (fresh request ID
and CSRF token), and both retry failure and refresh failure throw explicitly.

SWR cache is now invalidated after token refresh so stale error responses
are not served from cache.
2026-03-13 10:52:02 +01:00
Usman Baig
205cdf314c perf: bound SWR cache, clean stale storage, cap annotations
Add LRU cache provider (200 entries) to prevent unbounded SWR memory
growth. Clean up stale PKCE localStorage keys on app init. Cap chart
annotations to 20 visible reference lines with overflow indicator.
2026-03-10 21:19:33 +01:00
Usman Baig
ad806e0427 fix: remove reload-based stale build recovery to stop login loop
window.location.reload() causes infinite loops when the CDN keeps
serving cached assets. Instead, silently treat Server Action failures
as no-session — the OAuth flow uses full navigations (window.location.href)
which naturally fetch fresh content from the server on return.
2026-03-07 20:02:58 +01:00
Usman Baig
6338d1dfe7 fix: prevent infinite reload loop on stale build recovery
Use sessionStorage guard so the hard reload only fires once. If the
reload doesn't fix it (CDN still serving stale JS), fall through
gracefully instead of looping forever.
2026-03-07 19:55:16 +01:00
Usman Baig
d2dfe62993 fix: recover gracefully from stale Server Action hashes after deployment
Wrap all Server Action calls (getSessionAction, exchangeAuthCode,
logoutAction) in try-catch so a cached browser bundle with old action
IDs triggers a hard reload instead of an infinite loading spinner.
2026-03-07 19:37:41 +01:00
Usman Baig
dfa887147a fix: stabilize auth context effect deps and batch uptime cleanup
Extract stable primitives (isAuthenticated, userOrgId) from user object
for the checkOrg effect dependency array to prevent unnecessary re-runs
on every render. Batch uptime cleanup deletion (1000 rows/batch) to
avoid lock contention and WAL bloat.
2026-03-01 19:56:14 +01:00
Usman Baig
b3a303d6df fix: improve session management and UI highlights 2026-03-01 13:53:54 +01:00
Usman Baig
bce56fa64d feat: implement refresh token functionality and update local storage management 2026-02-28 23:02:43 +01:00
Usman Baig
5ef6eafc63 feat: update notification preferences to include granular security alerts 2026-02-28 21:18:57 +01:00
Usman Baig
8589842f16 chore: update CHANGELOG.md to include session expiration warning feature, enhancing user awareness, and update @ciphera-net/ui dependency to version 0.0.73 in package.json and package-lock.json 2026-02-27 14:24:07 +01:00
Usman Baig
3ff5ee4b6c chore: update CHANGELOG.md to include session synchronization across tabs feature, enhancing user experience, and update @ciphera-net/ui dependency to version 0.0.72 in package.json and package-lock.json 2026-02-27 14:15:40 +01:00
Usman Baig
3cb5416251 fix: implement automatic token refresh to prevent frequent re-logins, enhancing user experience during inactivity 2026-02-23 18:57:03 +01:00
Usman Baig
2d0307d328 fix: enhance error logging by replacing console.error with a centralized logger across the application to improve security and maintainability 2026-02-22 20:57:21 +01:00
Usman Baig
1947c6a886 fix: remove debug logs from authentication and organization switching to enhance security and prevent sensitive information leakage 2026-02-22 20:18:06 +01:00
Usman Baig
ead1e006dc fix: validate returnTo parameter in auth callback and update default organization name in welcome page 2026-02-09 09:38:44 +01:00
Usman Baig
0f7e644f17 fix: fetch full profile after login so header shows display name without refresh
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 21:21:59 +01:00
Usman Baig
c715bc4ce4 refactor: update routing logic to redirect to '/welcome' after auth callback and handle organization checks 2026-02-08 13:53:54 +01:00
Usman Baig
078a3ded82 chore: ciphera-ui 0.0.48, fetch full profile including display_name on init
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 12:40:34 +01:00
Usman Baig
d96f7cf1a4 Add display name to profile settings: User type, updateDisplayName API, ProfileSettings
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 01:50:33 +01:00
Usman Baig
aaf224a278 refactor: migrate UI components to @ciphera-net/ui v0.0.11 2026-01-23 18:35:17 +01:00
Usman Baig
1be2c95046 fix(branding): update logo references from 'ciphera_icon_no_margins.png' to 'pulse_icon_no_margins.png' across the application for consistent branding 2026-01-23 11:38:05 +01:00
Usman Baig
3996c2550e feat(auth): implement role-based access control in SiteDashboard and SiteSettings, enhancing user experience with edit permissions 2026-01-22 20:28:44 +01:00
Usman Baig
c5d116b334 refactor(loading): enhance LoadingOverlay integration in HomePage and AuthCallback for consistent loading experience 2026-01-22 18:40:56 +01:00
Usman Baig
12292b62a8 refactor(loading): streamline LoadingOverlay usage in HomePage and AuthCallback to return null during loading states 2026-01-22 18:36:03 +01:00
Usman Baig
ef43c7376a fix(loading): remove animation from LoadingOverlay for improved performance 2026-01-22 16:30:29 +01:00
Usman Baig
bf9b359cd6 fix(auth): prevent redirect loops during auth callback processing in AuthProvider 2026-01-22 16:01:54 +01:00
Usman Baig
38baa0504b fix(auth): correct getUserOrganizations return type handling in context 2026-01-22 01:54:12 +01:00
Usman Baig
cbb2255024 fix: handle access_token only response from switchContext 2026-01-22 01:36:56 +01:00
Usman Baig
b3f8465fae fix: force reload after auto-context switch 2026-01-22 01:15:04 +01:00
Usman Baig
12dc03b636 feat: add organization onboarding flow and auth enforcement 2026-01-22 00:32:48 +01:00
Usman Baig
035d78175f refactor: update branding from Ciphera Pulse to Pulse across the application for consistency and clarity 2026-01-19 16:58:09 +01:00
Usman Baig
9dbe74fd9f refactor: update references from Ciphera Analytics to Ciphera Pulse across the application for consistent branding and messaging 2026-01-19 16:49:42 +01:00
Usman Baig
3e7273363b fix: resolve frontend build errors and enable credentials for options requests in backend 2026-01-18 21:32:47 +01:00
Usman Baig
2fda4667ed fix(cors): allow credentials on options requests and update frontend auth flow 2026-01-18 21:27:22 +01:00
Usman Baig
d4486f952f feat(security): switch auth to HttpOnly cookies and add server actions 2026-01-18 21:19:44 +01:00
Usman Baig
8e10a05eb1 Initial commit: Analytics frontend implementation 2026-01-16 13:14:19 +01:00