Commit Graph

1017 Commits

Author SHA1 Message Date
Usman Baig
8c4bb8f861 style: add fade-in transition from skeleton to content
Smooth out the jarring visual pop when loading skeletons are replaced
by real content. Only animates after an actual skeleton was shown —
cached data still renders instantly with no delay.
2026-03-13 12:45:48 +01:00
Usman Baig
0abc5cd4a8 style: unify all dashboard chart colors to brand orange 2026-03-13 12:32:57 +01:00
Usman Baig
3bda7215db fix: stat label invisible on light mode when selected
The active metric label (e.g. UNIQUE VISITORS) was white on a
near-white background. Switch to brand orange for visibility in
both themes.
2026-03-13 12:29:05 +01:00
Usman Baig
6380f216aa perf: migrate Settings, Funnels, and Uptime to SWR data fetching
Replace manual useState/useEffect fetch patterns with SWR hooks so
cached data renders instantly on tab revisit. Skeleton loading now
only appears on the initial cold load, not every navigation.

New hooks: useFunnels, useUptimeStatus, useGoals, useReportSchedules,
useSubscription — all with background revalidation.
2026-03-13 12:21:55 +01:00
Usman Baig
b6a7c642f2 feat: add skeleton loading to Journeys page
Use JourneysSkeleton with useMinimumLoading hook, matching the
loading pattern used on Dashboard, Funnels, Uptime, and Settings.
2026-03-13 11:58:35 +01:00
Usman
6a13e5480a Merge pull request #44 from ciphera-net/staging
fix: pass CSRF token to switch-context call in refresh route
2026-03-13 11:41:03 +01:00
Usman Baig
57e43b1b4f Merge branch 'main' into staging 2026-03-13 11:30:05 +01:00
Usman Baig
c0ad0cfb7a fix: pass CSRF token to switch-context call in refresh route
The auth API requires CSRF tokens on POST requests. The switch-context
call was failing silently with 403, causing refreshed tokens to lack
org_id.
2026-03-13 11:30:00 +01:00
Usman Baig
2d3388546f fix: pass CSRF token to switch-context call in refresh route
The auth API requires CSRF tokens on POST requests. The switch-context
call was failing silently with 403, causing refreshed tokens to lack
org_id.
2026-03-13 11:29:45 +01:00
Usman Baig
34c80d0857 fix: restore org context during token refresh
After refreshing the base token, call switch-context to get an
org-scoped token. This prevents 403 errors on Pulse API requests
when the access token is refreshed mid-session.
2026-03-13 11:18:26 +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
f7340fa763 fix: include URL in outbound/download events, exclude form inputs from dead clicks 2026-03-13 09:11:23 +01:00
Usman Baig
6e213539ea feat: filter headless browsers and zero-screen bots client-side 2026-03-13 09:07:49 +01:00
Usman Baig
f69248ecfa fix: strip utm_id from page paths to prevent fragmentation 2026-03-13 08:58:33 +01:00
Usman Baig
360d6e7e71 fix: preserve UTM params for backend attribution, only strip ad click IDs 2026-03-13 08:43:55 +01:00
Usman Baig
63144a136e fix: only attribute referrer to landing page and strip Meta ad params 2026-03-13 01:31:14 +01:00
Usman Baig
1d71a13df4 fix: normalize page paths — strip UTM params and trailing slashes 2026-03-13 01:19:23 +01:00
Usman Baig
6edd5ac0b6 fix: skip pageview tracking for prerendered pages 2026-03-13 01:17:12 +01:00
Usman Baig
a57ed871f1 fix: screen size shadowing, popstate double pageview, custom event self-referrals 2026-03-13 01:09:45 +01:00
Usman Baig
765f8ec63e fix: strip self-referrals from tracking script 2026-03-13 01:06:14 +01:00
Usman Baig
aae1714b02 fix: deduplicate pageviews on page refresh 2026-03-13 00:50:13 +01:00
Usman
484300c307 Merge pull request #43 from ciphera-net/staging
Release 0.15.0-alpha
0.15.0-alpha
2026-03-13 00:13:41 +01:00
Usman Baig
9fb19c18e8 chore: release 0.15.0-alpha 2026-03-13 00:12:13 +01:00
Usman Baig
0112004457 fix: depth default 3 max 5, min_sessions 2, 5 nodes per column, stricter labels 2026-03-12 23:58:56 +01:00
Usman Baig
063a21adeb feat: cap nodes per column, dynamic SVG height, smart labels, thinner exit node 2026-03-12 23:46:24 +01:00
Usman Baig
90de83ad6d fix: lower min_sessions from 3 to 1 for journey data 2026-03-12 23:30:12 +01:00
Usman Baig
a3fa48732a fix: correct ribbon y-offset — d3-sankey y0/y1 are center, not top 2026-03-12 23:20:33 +01:00
Usman Baig
a637d32446 revert: remove frontend same-page filter, backend fix handles this 2026-03-12 23:12:12 +01:00
Usman Baig
df394b85ef fix: filter out same-page transitions (reloads) from Sankey 2026-03-12 23:08:30 +01:00
Usman Baig
4e7c495160 fix: use SVG-level onMouseMove with data attrs for reliable hover 2026-03-12 23:04:08 +01:00
Usman Baig
9c8943d1e3 fix: rewrite hover state to single object, fix link dimming on node hover 2026-03-12 22:56:13 +01:00
Usman Baig
e7debdeb41 fix: consolidate exit nodes into single (exit) node 2026-03-12 22:52:24 +01:00
Usman Baig
3df93bb227 fix: link color from source node, fix hover dimming, labels trigger hover 2026-03-12 22:48:31 +01:00
Usman Baig
3bde3fd4e1 fix: only highlight links on node hover, not other nodes 2026-03-12 22:40:40 +01:00
Usman Baig
5cdf353233 feat: add node hover highlighting with connection dimming 2026-03-12 22:37:40 +01:00
Usman Baig
683bbce817 fix: thick node bars, multi-hue palette, higher link opacity, more padding 2026-03-12 22:31:05 +01:00
Usman Baig
828e930a69 fix: Sankey visual overhaul — lower link opacity, column color gradient, breathing room
- Links: 18% opacity default (was 60%), 45% on hover, grey for exit links
- Nodes: column-based orange gradient (bright entry → dark deep), stroke outline
- Labels: larger font, better padding, higher contrast backgrounds
- Layout: more vertical padding, wider node gap (24px)
2026-03-12 22:23:52 +01:00
Usman Baig
54daf14c6a feat: replace MUI X Charts Pro with d3-sankey custom Sankey
Remove paid MUI dependency. Use d3-sankey (MIT, ~5KB) for layout
algorithm + custom SVG rendering. Same visual quality: smooth bezier
ribbon links, proper node spacing via sankeyJustify, label backgrounds,
hover dimming, exit nodes.
2026-03-12 22:17:16 +01:00
Usman Baig
281a9f237a feat: replace custom Sankey SVG with MUI X Charts Pro Sankey 2026-03-12 22:07:20 +01:00
Usman Baig
4b10f8c1fc fix: refine Sankey visual — thinner nodes, subtle links, orange on hover 2026-03-12 21:58:50 +01:00
Usman Baig
31286c45f4 fix: use brand orange for Sankey diagram nodes and links 2026-03-12 21:51:07 +01:00
Usman Baig
908606ade2 fix: make journey empty states consistent with dashboard blocks 2026-03-12 21:49:31 +01:00
Usman Baig
4cd9544672 fix(journeys): use correct session_count property in entry point dropdown 2026-03-12 21:39:31 +01:00
Usman Baig
49aa8aae60 docs: update frontend changelog for user journeys 2026-03-12 21:37:07 +01:00
Usman Baig
b3e335ec6c feat(journeys): add skeleton and error boundary 2026-03-12 21:36:27 +01:00
Usman Baig
e7e76bb3db feat(journeys): add Journeys tab to site navigation 2026-03-12 21:35:43 +01:00
Usman Baig
dc1030036c feat(journeys): add Journeys page with controls and layout 2026-03-12 21:35:05 +01:00
Usman Baig
0fa6c4aaf4 feat(journeys): add top paths table component 2026-03-12 21:32:18 +01:00
Usman Baig
c669035718 feat(journeys): add Sankey diagram SVG component 2026-03-12 21:29:45 +01:00
Usman Baig
7336f9126e feat(journeys): add frontend API client and SWR hooks 2026-03-12 21:24:39 +01:00