38 Commits

Author SHA1 Message Date
d6b25dd78d Serialize authenticated requests to fix persistent login redirect loop
The last fix only deduplicated concurrent refresh calls, but the
underlying problem is broader: the backend's session nonce is
single-use and rotates on every authenticated request, so ANY two
concurrent authenticated calls race for it, not just refresh calls.
The dashboard fires ~5 authenticated requests in parallel (summary,
cashflow, merchants, accounts, transactions) plus the app shell's
own profile fetch, all reading the same nonce cookie before any
response updates it. Only the first to reach the server can win;
losers get a nonce-mismatch 401, and if that race happens to catch
the refresh call itself against another still-rotating request,
refresh legitimately fails and forces a hard logout. That's what
produced the "works for a while, then dumped back to login" pattern.

Fix: queue every apiFetch call so only one nonce-consuming request
is ever in flight per tab, refresh-and-retry included. This fully
removes the race within a tab (a second tab open to the same
account is a separate, much rarer case and not what was happening
here). Also redirect to login if a post-refresh retry still 401s,
since under serialization that means the session is genuinely
invalid rather than a timing collision.
2026-08-26 20:41:23 +05:30
136f41020f Deduplicate concurrent token refresh to fix login redirect loop
The dashboard fires several authenticated requests at once (summary,
cashflow, merchants, accounts, transactions, plus the app shell's own
profile fetch). Once the 60-second access-token cookie expires, all
of them 401 together, and apiFetch had each one independently call
/api/auth/refresh. Refresh tokens are single-use and rotate on the
backend, so only the first of these racing calls succeeded — the
rest sent an already-consumed refresh token, got rejected, cleared
auth cookies, and hard-redirected to /login. Symptom: land in the
app, then get bounced back to login almost immediately, repeatedly.

Fix: share one in-flight refresh promise across all callers so a
burst of concurrent 401s triggers exactly one refresh call.
2026-08-26 18:24:08 +05:30
081862e1d7 Clarify sign-up link on the login page
The only path to /register read as marketing copy ("Start your
14-day free trial") rather than an obvious sign-up action. Added a
clearer lead-in and a second, redundant link at the bottom of the
form to match the register page's existing "Sign in" link.
2026-08-26 18:24:08 +05:30
5b8643a9e7 Trigger frontend pipeline 2026-07-30 07:56:04 +05:30
290689cfd7 Update development and start scripts to use port 11001 2026-07-30 07:53:30 +05:30
99522a5544 Point frontend proxy to Aarthalabs API 2026-07-30 07:45:14 +05:30
20f32ba0de Rename frontend brand to Aarthalabs 2026-07-22 19:34:02 +05:30
22e162ae26 Keep manual transaction success visible 2026-07-22 18:42:36 +05:30
fbd1c2cc4a Add Sheets-first mirror control 2026-07-17 23:43:11 +05:30
10d386bc7d Add credit score pull UI 2026-07-17 23:36:31 +05:30
28dee336c9 Add bill payment initiation UI 2026-07-17 23:34:05 +05:30
bfda37d4e3 Add accountant workflow UI 2026-07-17 23:30:41 +05:30
c7ee638372 Add developer API key portal 2026-07-17 23:25:36 +05:30
eddd46c049 Add planning workspace UI 2026-07-17 23:22:44 +05:30
3ed58738b1 Add GDPR privacy controls UI 2026-07-17 22:10:29 +05:30
c1ff8a44b8 Add future planning scenarios UI 2026-07-16 23:57:17 +05:30
f154fd5656 Add debt payoff teamwork UI 2026-07-16 23:50:04 +05:30
1dbca1bcd4 Add transaction comments UI 2026-07-16 23:43:23 +05:30
5ed97c2a90 Add money date prompts UI 2026-07-16 23:31:34 +05:30
dada5e7d4f Add household privacy mode UI 2026-07-16 23:22:36 +05:30
69a88163dc Add fair split calculator UI 2026-07-16 23:15:32 +05:30
1649fb8e77 Update frontend e2e tests for current UI 2026-07-16 23:07:32 +05:30
b3b3fa3392 Align tax page with authenticated backend flow 2026-07-16 22:48:01 +05:30
edbcbea5b4 Proxy rotating session nonce cookies 2026-07-16 22:17:21 +05:30
f0e6405b11 Wire browser-safe finance presentation UI 2026-07-16 22:07:33 +05:30
1d7007637d feat: add collaborator management UI 2026-07-16 18:13:30 +05:30
ab273ea7d0 feat: show household health score 2026-07-16 15:38:00 +05:30
59ea77ed44 feat: add household goals UI 2026-07-16 15:33:57 +05:30
2b17c36ed2 feat: implement LedgerOne frontend backlog features 2026-07-16 15:07:02 +05:30
sharada-gif
f59009af57 Disable link prefetch to reduce chunk mismatch
Made-with: Cursor
2026-03-20 09:35:24 -07:00
sharada-gif
1382d8ef52 Fix Google callback prerender via Suspense
Made-with: Cursor
2026-03-20 09:10:37 -07:00
sharada-gif
7a702d6d2c Merge remote main with local frontend UI changes
Made-with: Cursor
2026-03-18 16:51:00 -07:00
sharada-gif
28cefdc7e7 Polish LedgerOne frontend signup, auth, and marketing UI
Made-with: Cursor
2026-03-18 13:02:58 -07:00
d731551986 Add a.txt 2026-03-18 02:12:18 +00:00
Manesh
dfc2f251db Server Chanegs 2026-03-16 22:14:15 +00:00
metatroncubeswdev
cf6c4005dd implemented the udpated changes 2026-03-14 08:51:48 -04:00
Manesh
fe6dcfd4f6 Clean repo and apply .gitignore 2026-02-24 21:51:06 +00:00
Manesh
e93f3b9cfd first commit 2026-02-24 21:47:18 +00:00