Commit Graph

337 Commits

Author SHA1 Message Date
Usman Baig
f278aada7a fix: use flag icons, show per-datacenter dots on map, format tooltip as bytes 2026-03-14 21:35:26 +01:00
Usman Baig
fb85c431f0 feat: add BunnyCDN integration 2026-03-14 20:46:26 +01:00
Usman Baig
4ceb33b946 feat: add header icons to all dashboard panels
Consistent icon treatment across Pages, Referrers, Locations,
Technology, Campaigns, Peak Hours, Goals, and Search panels.
2026-03-14 18:27:12 +01:00
Usman Baig
a3f50dc38f fix: restore Peak Hours layout and hide empty Search panel
Peak Hours back in its original grid position next to Campaigns.
Search panel now placed below as a standalone row, and hides
entirely when there's no GSC data instead of showing zeros.
2026-03-14 18:09:07 +01:00
Usman Baig
8f00193e0f feat: add Search panel to dashboard and enrich Search tab
Dashboard: compact Search Performance panel showing top 5 queries,
clicks, impressions, and avg position alongside Campaigns.

Search tab: clicks/impressions trend chart, top query position
tracker cards, and new queries badge.
2026-03-14 18:05:05 +01:00
Usman Baig
34c705549b feat: add Google Search Console integration UI
Search Console page with overview cards, top queries/pages tables,
and query↔page drill-down. Integrations tab in Settings for
connect/disconnect flow. New Search tab in site navigation.
2026-03-14 15:36:37 +01:00
Usman Baig
11ef95ef45 fix: use full day names in Peak Hours busiest-time callout 2026-03-14 13:40:42 +01:00
Usman Baig
2242a159c7 fix: use 24-hour time in Peak Hours heatmap
Axis labels, bucket ranges, and busiest-time callout now use
24-hour format (00:00, 06:00, 12:00, 18:00) instead of AM/PM.
2026-03-14 13:38:51 +01:00
Usman Baig
25210013d3 feat: centralise date/time formatting with European conventions
All dates now use day-first ordering (14 Mar 2025) and 24-hour time
(14:30) via a single formatDate.ts module, replacing scattered inline
toLocaleDateString/toLocaleTimeString calls across 12 files.
2026-03-14 13:31:30 +01:00
Usman Baig
00d232ab3f fix: switch from natural to bump interpolation to prevent overshoot 2026-03-13 13:53:38 +01:00
Usman Baig
87f5905bd6 fix: clip chart overflow from natural spline overshoot 2026-03-13 13:50:27 +01:00
Usman Baig
58f42f945c style: smooth chart curves with natural spline and add area fill
Switch from monotone to natural interpolation for rounder peaks.
Add transparent orange gradient area fill beneath the line.
2026-03-13 13:47:26 +01:00
Usman Baig
570a84889a fix: increase hover hitbox on map location markers 2026-03-13 13:43:44 +01:00
Usman Baig
969887cc67 style: use CartesianGrid for horizontal lines aligned with Y-axis ticks
Replace the CSS overlay with Recharts CartesianGrid (horizontal only)
so lines align perfectly with the Y-axis values.
2026-03-13 13:08:28 +01:00
Usman Baig
453a596eaf style: replace animated grid with subtle horizontal lines in chart
Simple repeating horizontal lines at 40px intervals with 50% opacity,
faded at top/bottom edges via CSS mask. No extra components needed.
2026-03-13 13:05:24 +01:00
Usman Baig
9a54d93c79 style: replace static grid with animated grid pattern in chart
Use AnimatedGridPattern from 21st.dev with subtle fading squares.
Scoped to CardContent only so the metric tabs and annotation footer
stay clean.
2026-03-13 13:01:03 +01:00
Usman Baig
eb0dc4a27b style: replace dotted chart background with grid line pattern
Swap the old dot grid overlay inside the Recharts SVG for a GridPattern
component rendered behind the chart card. Uses a vertical mask gradient
to fade edges for a cleaner look.
2026-03-13 12:55:20 +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
e7e76bb3db feat(journeys): add Journeys tab to site navigation 2026-03-12 21:35:43 +01:00
Usman Baig
6964be9610 refactor: remove realtime visitors detail page
Remove the individual session journey page and make the live visitor
count a static indicator. Prepares for the new aggregated User Journeys
feature (v0.17).
2026-03-12 20:45:58 +01:00
Usman Baig
c17a856224 feat: add Behavior tab to site navigation 2026-03-12 16:53:12 +01:00
Usman Baig
7e91e08532 feat: 2-hour bucket grid for larger square cells 2026-03-12 00:33:56 +01:00
Usman Baig
cb6c03432c fix: use CSS grid with aspect-square for square heatmap cells 2026-03-12 00:30:23 +01:00
Usman Baig
bc299fe9a0 fix: increase Peak Hours grid row height 2026-03-12 00:27:17 +01:00
Usman Baig
632530af7f feat: replace heatmap grid with CommitsGrid-style animated cells 2026-03-12 00:20:04 +01:00
Usman Baig
ffbfcf342f feat: fix cell visibility, add thermal blob mode & peak cell pulse 2026-03-12 00:13:47 +01:00
Usman Baig
602f7350b8 fix: remove row/column dim highlight on Peak Hours hover 2026-03-12 00:09:09 +01:00
Usman Baig
c15737b9c6 feat: interactive Peak Hours heatmap
- Row + column highlight on cell hover with dim effect
- Cell-anchored tooltip showing pageviews and % of week's traffic
- Best time callout: "Your busiest time is Xdays at Ypm"
- Staggered entrance animation on data load
2026-03-12 00:05:46 +01:00
Usman Baig
a189952fad feat: add Peak Hours heatmap dashboard panel 2026-03-11 23:59:22 +01:00
Usman Baig
956cfbcf35 feat: animate active metric indicator with spring slide 2026-03-11 23:38:04 +01:00
Usman Baig
b5dd5e7082 feat: add This week / This month period options and fix comparison labels 2026-03-11 23:33:24 +01:00
Usman Baig
34eca64967 fix: correct off-by-one in comparison period label 2026-03-11 23:23:39 +01:00
Usman Baig
1c5ca7fa54 fix: active metric label white and slightly smaller 2026-03-11 23:15:59 +01:00
Usman Baig
275503ae8f fix: show dynamic comparison period label in stat headers 2026-03-11 23:14:35 +01:00
Usman Baig
73db65c0b2 feat: redesign chart stat headers and fix badge semantic colors 2026-03-11 23:10:16 +01:00
Usman Baig
0754cb0e4f fix: align Goals & Events and Scroll Depth block height with other dashboard blocks 2026-03-11 22:52:14 +01:00
Usman Baig
1ba6bf6a84 fix: add subtitle to scroll depth radar chart 2026-03-11 22:49:54 +01:00
Usman Baig
72011dea5c fix: enlarge scroll depth radar chart 2026-03-11 22:48:37 +01:00
Usman Baig
7431f2b78d fix: increase radar fill opacity to cover grid lines 2026-03-11 22:45:36 +01:00
Usman Baig
bf37add366 revert: restore radar chart for scroll depth (4 axes, no 0% anchor) 2026-03-11 22:42:32 +01:00
Usman Baig
ca60379e5e feat: replace radar with clean bar chart for scroll depth 2026-03-11 22:36:55 +01:00
Usman Baig
b30619e6b4 fix: add 0% baseline axis to scroll depth radar for pentagon shape 2026-03-11 22:30:19 +01:00
Usman Baig
0f5d5338f3 fix: make scroll depth block half-width and enlarge radar chart 2026-03-11 22:26:15 +01:00
Usman Baig
faa2f50d6e feat: replace scroll depth bar chart with radar chart 2026-03-11 22:22:59 +01:00
Usman Baig
55bf20c58d fix: remove rank numbers from Goals & Events panel 2026-03-11 22:19:39 +01:00
Usman Baig
2fa3540a48 feat: polish Goals & Events dashboard panel
Align visual style with Pages, Referrers, and Locations panels — flat
rows with hover state, rank numbers, muted count colors, and a
slide-in percentage on hover. Add empty slots for consistent height.
2026-03-11 22:15:59 +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
502f4952fc perf: lazy-load globe/map and update changelog
Globe and DottedMap now only render when the Locations section enters
the viewport via IntersectionObserver. Added changelog entries for
rate limit fallback, buffer improvements, and lazy loading.
2026-03-10 20:57:55 +01:00
Usman Baig
f10b903a80 perf: add export loading state and virtual scrolling for large lists
Export modal now shows a loading indicator and doesn't freeze the UI.
Large list modals use virtual scrolling for smooth performance.
2026-03-10 20:45:49 +01:00