798 Commits

Author SHA1 Message Date
Usman Baig
2e444849ef fix: make step 1 clicks show connector lines like other steps
Previously clicking a step 1 block would set it as an entry point filter
instead of showing connection lines. Now all steps behave consistently —
clicking any step toggles selection and draws connector lines to the next
column. Entry point filtering remains available via the dropdown.
2026-03-16 09:42:59 +01:00
Usman Baig
df10d4e747 feat: add actionable CTAs to all dashboard empty states
- Campaigns: "Build a UTM URL" opens UTM builder modal directly
- Pages/Referrers/Locations/Technology: "Install tracking script"
  links to /installation
- Matches existing CTA pattern from GoalStats
2026-03-15 22:00:58 +01:00
Usman Baig
c21d7b9073 feat: add animated number transitions to dashboard stats
Numbers smoothly count up/down when switching date ranges,
applying filters, or as real-time visitor count changes.
Uses framer-motion useSpring for natural spring physics.
2026-03-15 21:37:11 +01:00
Usman Baig
df2b3cadd7 feat: add inline bar charts to all dashboard list components
Add proportional background bars (brand-orange) to Pages,
Referrers, Locations, Technology, and Campaigns tables.
Bars scale relative to the top item in each list.
2026-03-15 20:39:25 +01:00
Usman Baig
4f4f2f4f9a refactor: redesign top paths table to match Pulse patterns
- Replace card-per-row with compact list rows + background bars
- Drop rank badges (order already communicates rank)
- Inline path sequence + stats into single row
- Truncate sequences longer than 7 steps (first 3 + … + last 2)
- Duration shows on hover with slide-in animation
- Use brand-orange bars proportional to top path count
2026-03-15 20:31:57 +01:00
Usman Baig
0ea9b31b63 style: make journey exit row a full red block matching other rows 2026-03-15 19:53:10 +01:00
Usman Baig
25f4cd5eb9 fix: move border-b inside scrollable nav to prevent orange indicator clipping 2026-03-15 19:45:42 +01:00
Usman Baig
2068f839fd fix: restore brand orange tab indicator clipped by overflow-x-auto 2026-03-15 19:41:28 +01:00
Usman Baig
849986edf1 fix: restore active tab indicator in scrollable SiteNav
Move overflow-x-auto to the outer border-b container and use min-w-max
on the nav so the framer-motion layoutId indicator is not clipped.
2026-03-15 18:37:40 +01:00
Usman Baig
24c71f7991 fix: mobile responsiveness across all pages
- SiteNav: add horizontal scroll for 8 tabs on mobile
- NotificationCenter: full-width dropdown on mobile
- ContentStats/Locations/TechSpecs: scrollable tab bars
- FrustrationTable: fix selector text overflow
- FrustrationByPageTable: horizontal scroll on mobile
- CDN: better stat card grid breakpoints
- Home: reduce stat card height, prevent button wrap
- Billing: shorter invoice labels on mobile
- Bump @ciphera-net/ui to 0.2.6 (AppLauncher mobile fix)
2026-03-15 18:15:06 +01:00
Usman Baig
7103a39273 fix: increase column padding for bar chart breathing room 2026-03-15 13:48:19 +01:00
Usman Baig
3c8904ffe4 fix: remove overflow-hidden clipping bar chart left rounding 2026-03-15 13:45:29 +01:00
Usman Baig
aba67592bb fix: bar chart left rounding by using width calc instead of scaleX 2026-03-15 13:42:41 +01:00
Usman Baig
e7907d68bf fix: default depth 10, bar rounding, exit row height, connection line reach 2026-03-15 13:39:41 +01:00
Usman Baig
342bf46946 fix: bar chart overflow by using scaleX instead of width percentage 2026-03-15 13:33:10 +01:00
Usman Baig
de16991bb3 fix: inset bar chart so left rounding is visible 2026-03-15 13:30:20 +01:00
Usman Baig
3954ee0a97 refactor: restyle journey columns to match Pulse native patterns 2026-03-15 13:27:20 +01:00
Usman Baig
b000d0e1f7 fix: replace horizontal dashed lines with solid vertical column dividers 2026-03-15 13:20:57 +01:00
Usman Baig
58272f3fb5 fix: remove scroll fade gradient that was overlapping column content 2026-03-15 13:15:42 +01:00
Usman Baig
722b5de88d feat: polish journey columns with bar charts, count pills, colored selection, dotted connectors 2026-03-15 13:12:17 +01:00
Usman Baig
ada2c65d8f fix: show exit as red card in next column instead of SVG text hack 2026-03-15 13:03:06 +01:00
Usman Baig
b10abd38fc feat: show exit count when selecting a page, fix scroll fade overlay 2026-03-15 12:56:59 +01:00
Usman Baig
9f9f4286b7 fix: selections only show connection lines, no longer filter column data 2026-03-15 12:46:48 +01:00
Usman Baig
a7e9f7c998 fix: cascade column selection filter downstream, trim empty columns, add scroll fade 2026-03-15 12:42:49 +01:00
Usman Baig
4103014cdb fix: restyle journey columns to match Pirsch card-based design 2026-03-15 12:28:43 +01:00
Usman Baig
e8f00e06ec feat: replace sankey chart with column-based journey visualization 2026-03-15 12:17:48 +01:00
Usman Baig
7e30d04df3 feat: redesign top paths as breadcrumb cards with icons 2026-03-15 11:47:52 +01:00
Usman Baig
b305b5345b refactor: remove performance insights (Web Vitals) feature entirely
Remove Performance tab, PerformanceStats component, settings toggle,
Web Vitals observers from tracking script, and all related API types
and SWR hooks. Duration tracking is preserved.
2026-03-14 22:47:33 +01:00
Usman Baig
7247281ce2 feat: move performance to dedicated tab, fix 0/99999 metrics bug
Performance metrics moved from dashboard into a new Performance tab.
Fixed null handling so "No data" shows instead of misleading zeros.
Script no longer sends INP=0 when no interaction occurred.
2026-03-14 22:01:44 +01:00
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
7ba5e063ca feat: add free plan to pricing page and enforce 1-site limit
Show the free tier (€0, 1 site, 5k pageviews, 6 months retention)
as the first card on the pricing page. Enforce a 1-site limit for
free plan users in the frontend.
2026-03-13 21:28:04 +01:00
Usman Baig
d6d42b5759 fix: portal delete modal to body so backdrop-blur covers header
The modal was rendered inside <main> which is a sibling of the
fixed header. Browser compositing didn't apply backdrop-blur
across the header's separate GPU layer. Using createPortal to
render at document.body matches how the delete account modal
works (rendered as sibling to header via SettingsModalWrapper).
2026-03-13 20:35:04 +01:00
Usman Baig
618c4fd5fe fix: bump delete modal z-index to z-[100] to cover fixed header
Header uses fixed z-50 with backdrop-blur which creates its own
stacking context. z-[60] wasn't enough, z-[100] matches the
pattern used by VerificationModal.
2026-03-13 20:29:47 +01:00
Usman Baig
39e06183c3 fix: delete modal overlay z-index above navbar 2026-03-13 20:10:23 +01:00
Usman Baig
6c31f3fc60 fix: show org name in delete modal and fix subscription card visibility
Modal now says "Delete Ciphera?" instead of generic "Delete Organization?".
Subscription cancellation card now shows for any paid plan (solo/team/business)
regardless of subscription_status, which could be 'active' or 'trialing'.
2026-03-13 19:58:01 +01:00
Usman Baig
86077557a8 style: redesign org delete modal to match delete account style
Red border, frosted overlay, destruction items as prominent
red-bordered cards with warning icons instead of small bullet
points. Button text changed to "Delete Forever".
2026-03-13 19:44:03 +01:00
Usman Baig
e86021caf8 fix: await subscription fetch before opening delete modal
The delete button fired loadSubscription() without awaiting it,
so the modal opened with subscription=null and the destruction
summary (sites count, active subscription) never rendered.
2026-03-13 19:35:12 +01:00
Usman Baig
0dd1f00095 fix: fetch subscription data when delete modal opens
Subscription was only loaded on the Billing tab, so the delete
modal showed no destruction summary when opened from General tab.
2026-03-13 18:25:34 +01:00
Usman Baig
84312ebf59 feat: show destruction summary in org delete modal
Lists what will be deleted: site count with analytics data,
member count, active subscription, and notification settings.
Replaces the generic warning with specific impact details.
2026-03-13 18:15:40 +01:00
Usman Baig
e336d2c7e5 feat: show verification status in site settings page 2026-03-13 16:40:37 +01:00
Usman Baig
8f06c9168a feat: show verified/unverified badge on site cards 2026-03-13 16:32:26 +01:00
Usman Baig
b5d408b4e8 style: add skeleton loading & fade transition to behavior page 2026-03-13 14:30:01 +01:00