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.
Add proportional background bars (brand-orange) to Pages,
Referrers, Locations, Technology, and Campaigns tables.
Bars scale relative to the top item in each list.
- 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
- Use min=2 max=10 directly on range input (no array index mapping)
- Debounce via useEffect instead of manual timer refs
- Always render Reset button with opacity transition (no layout shift)
- Immediate setCommittedDepth on reset for instant response
Replace dual-state (depth/displayDepth) with a single depth state
and a debounced value for API calls. Eliminates glitchy reset button
and simplifies the slider to just onChange.
- 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)
- Skip rage clicks when text is selected (triple-click to select)
- Exclude tabindex="-1" elements from dead click interactive selector
- Observe document.body for DOM changes (modals, drawers, overlays)
- Listen for popstate/hashchange to detect SPA navigations
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.
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.
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.