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