Usman Baig
98fcce4647
feat(pagespeed): switch trend chart from Recharts to visx for dashboard consistency
2026-03-23 10:54:09 +01:00
Usman Baig
bba25c722a
feat(pagespeed): manual check section, consistent dot indicators
...
- Add "Additional items to manually check" collapsed section
- Replace triangle/square severity icons with consistent filled circles
- Empty circle (border only) for informative/unscored audits
2026-03-22 23:45:36 +01:00
Usman Baig
354331646b
fix(pagespeed): order accessibility sub-groups: names/labels → contrast → best practices
2026-03-22 23:38:58 +01:00
Usman Baig
d232a8a6d1
feat(pagespeed): sort audits by severity + insights before diagnostics
...
Sort order within each sub-group: red → orange → empty → green.
Sub-groups sorted so insights come before diagnostics.
2026-03-22 23:25:11 +01:00
Usman Baig
9d1d2dbb80
fix(pagespeed): issue count excludes informative/unscored audits
...
Only audits with a real score (non-null) count toward the issue total.
Informative audits (score: null) are shown but not counted.
2026-03-22 22:11:49 +01:00
Usman Baig
98429f82f5
feat(pagespeed): render audit sub-group headers in diagnostics
...
Group audits within each category by sub-group (e.g., "Names and
Labels", "Contrast") with small uppercase headers, matching the
pagespeed.web.dev layout.
2026-03-22 22:03:13 +01:00
Usman Baig
a0173636d4
fix(pagespeed): show empty circle for unscored/informative audits
...
Null scores now show ○ (informative) instead of ▲ (poor), matching
pagespeed.web.dev's "Unscored" indicator for informative audits.
2026-03-22 21:08:50 +01:00
Usman Baig
dfcf6bebde
fix(pagespeed): show all 4 category cards including those with 0 issues
2026-03-22 20:59:52 +01:00
Usman Baig
5003175305
redesign(pagespeed): equal gauges in hero + category gauges in diagnostics
...
- Hero: 4 equal 90px ScoreGauges in a row with screenshot on right
- Diagnostics: each category card gets a 56px gauge header with score
and issue count, matching pagespeed.web.dev's category sections
- Legend and metadata moved to footer bar in hero card
2026-03-22 20:55:55 +01:00
Usman Baig
ab6008daf9
fix(pagespeed): parse markdown links + handle more audit item fields
...
- AuditDescription: converts [text](url) to clickable links
- AuditItem: handles href, text/linkText, source.url from PSI API
2026-03-22 20:52:50 +01:00
Usman Baig
8b95620ec1
polish(pagespeed): mini gauges, animated tab switcher, filmstrip title
...
- Replace compact dot+number scores with 64px ScoreGauge circles
- ScoreGauge scales font/stroke/spacing for small sizes
- Add "Page Load Timeline" header to filmstrip section
- Replace pill toggle with animated underline tabs (matches dashboard)
2026-03-22 20:43:11 +01:00
Usman Baig
783530940e
polish(pagespeed): design consistency pass
...
- Filmstrip: dark mode bg fix, consistent card padding, scroll fade
- Metrics: font-semibold to match uptime page
- Hero: tighter compact scores, smaller legend, centered alignment
- Chart: hide x-axis when single day, height matches uptime (h-40)
- Diagnostics: hide categories with zero failures, muted display values
- Skeleton: matches new hero layout
2026-03-22 20:19:07 +01:00
Usman Baig
dd0700cbea
fix(pagespeed): poll silently without triggering SWR re-renders
...
Use direct API fetch for polling instead of mutateLatest() which was
causing the page to flicker and clear data every 5 seconds. SWR cache
is only updated once when new results arrive.
2026-03-22 19:56:00 +01:00
Usman Baig
8649f37bb9
feat(pagespeed): split diagnostics by category (Performance, Accessibility, Best Practices, SEO)
...
Each Lighthouse category gets its own card with failing audits sorted
by impact and collapsed passed audits. Matches pagespeed.web.dev layout.
2026-03-22 19:52:49 +01:00
Usman Baig
fcbf21b715
feat(pagespeed): render page load filmstrip between hero and metrics
...
Horizontal scrollable filmstrip showing page rendering progression
with timing labels. Appears between the score hero and metrics card.
2026-03-22 19:43:44 +01:00
Usman Baig
50960d0556
feat(pagespeed): render element screenshots in expandable audit items
...
Shows node screenshots, labels, HTML snippets, and URLs in audit
detail rows — matching pagespeed.web.dev's failing elements display.
2026-03-22 19:18:03 +01:00
Usman Baig
6b00b8b04a
redesign(pagespeed): full page redesign inspired by pagespeed.web.dev
...
- Hero card: large performance gauge + compact inline scores + screenshot
- Single metrics card with 2x3 grid and colored status dots
- Flat diagnostics list sorted by impact with severity indicators
- ScoreGauge accepts size prop for flexible gauge sizing
- Unicode severity markers (triangle/square/circle) per audit
2026-03-22 19:10:47 +01:00
Usman Baig
b0e6db36a1
feat(pagespeed): add screenshot display and expandable diagnostics
...
- Page screenshot thumbnail next to score gauges
- Expandable audit rows with description and detail items table
- Shows URLs, HTML snippets, wasted bytes/ms for each failing element
- AuditRow component replaces flat diagnostic rows
2026-03-22 18:54:45 +01:00
Usman Baig
2fd9bf82f1
fix(pagespeed): poll for results after async check trigger
...
Backend now returns 202 immediately. Frontend polls every 5s for up
to 2 minutes until new results appear, then shows success toast.
2026-03-22 18:35:17 +01:00
Usman Baig
52906344cf
feat(pagespeed): add PageSpeed page with gauges, CWV cards, chart, and diagnostics
...
- ScoreGauge SVG component with color-coded circular arcs
- Full page: disabled state, score overview, CWV metrics, trend chart
- Diagnostics accordion with opportunities/diagnostics/passed groups
- Mobile/desktop strategy toggle, manual check trigger
- Loading skeleton, frequency selector
2026-03-22 18:13:08 +01:00
Usman Baig
6a1698b794
feat: add Notifications section to settings with Reports and Alerts
...
- Adds purpose field to report schedule API client
- Adds useAlertSchedules SWR hook
- Reorganizes settings: Reports tab becomes Notifications tab
- Groups existing Reports and new Alerts subsections
- Alert channels reuse report delivery infrastructure (email, Slack, Discord, webhooks)
2026-03-22 16:57:04 +01:00
Usman Baig
1d26819727
feat: simplify uptime page to single auto-managed monitor with toggle
...
Rewrites uptime page from 978 to ~370 lines. Removes all monitor CRUD
UI (modals, monitor list, selection state). Adds enable/disable toggle
and empty state. Reads the single auto-managed monitor.
2026-03-22 16:51:42 +01:00
Usman Baig
b7e92abb40
feat: persist script feature toggles to backend
...
Features (scroll, 404, outbound, downloads, frustration, storage, ttl)
are saved to site.script_features JSONB column on every toggle change.
Values are read from the site object on load.
2026-03-22 15:31:45 +01:00
Usman Baig
0805bbaeee
fix: improve password protection UX with status badge and remove option
...
- Shows green "Password set" badge when a password is active
- Simplified placeholder to "Enter new password"
- Added helper text explaining current password persists
- Added "Remove password protection" link for easy removal
- Cleaned up dark-mode toggle styling
2026-03-22 13:40:26 +01:00
Usman Baig
3f3d81a41f
fix: style bot filter checkboxes with accent-color orange
2026-03-22 13:30:29 +01:00
Usman Baig
0878bde259
fix: redesign session review as card layout instead of cramped table
2026-03-22 13:25:02 +01:00
Usman Baig
42b7363cf9
feat: add Bot & Spam settings tab with session review UI
2026-03-22 13:16:07 +01:00
Usman Baig
6444cec454
fix: use inline styles for Slack SVG fills to prevent CSS override
2026-03-22 01:06:03 +01:00
Usman Baig
5fc1a33745
fix: use official multicolored Slack logo (pink, blue, green, yellow)
2026-03-22 01:01:58 +01:00
Usman Baig
185cb8699f
fix: use white color for Slack icon on dark background
2026-03-22 00:52:29 +01:00
Usman Baig
7e48d70411
fix: use real Slack and Discord brand icons in report schedule modal
...
Replaced generic WebhooksLogo with actual Slack SVG (pink) and
SiDiscord (blurple) in both the channel selector and the report list.
2026-03-22 00:40:02 +01:00
Usman Baig
028e4e5425
fix: reduce funnel chart height with wider aspect ratio (4:1)
2026-03-21 22:27:37 +01:00
Usman Baig
6098b5e158
feat: replace vertical funnel with horizontal funnel chart
...
Switched to horizontal orientation with grouped labels for better
readability across multi-step funnels.
2026-03-21 22:23:47 +01:00
Usman Baig
7cbfbc54ca
fix: tighten dashboard vertical spacing
...
Reduce spacing now that top header is removed:
- Main content top padding: pt-6 → pt-4
- Header section: mb-8 → mb-6
- Chart section: mb-8 → mb-6
- Grid sections: mb-8 → mb-6
- Site name margin: mb-2 → mb-1
- Header inner gap: mb-4 → mb-3
2026-03-19 12:10:30 +01:00
Usman Baig
80ae8311dc
feat: static header + collapsible sidebar navigation
...
Replace floating pill header with static variant for authenticated
views. Add collapsible sidebar with site picker, grouped navigation
(Analytics/Infrastructure), and mobile overlay drawer. Remove
horizontal SiteNav tab bar.
2026-03-18 15:30:27 +01:00
Usman Baig
4c7ed858f7
feat(funnels): add step-level breakdown drawer with dimension tabs
2026-03-18 14:34:07 +01:00
Usman Baig
efd0c144b5
feat(funnels): add conversion trends line chart with per-step toggles
2026-03-18 14:33:25 +01:00
Usman Baig
585cb4fd88
feat(funnels): add edit funnel page with pre-populated form
2026-03-18 14:27:45 +01:00
Usman Baig
2811945d3e
feat(funnels): add filter bar and exit path display to funnel detail
2026-03-18 14:26:26 +01:00
Usman Baig
18e66917d3
feat(funnels): extract reusable FunnelForm with category toggle, property filters, and conversion window
2026-03-18 14:23:25 +01:00
Usman Baig
51723bea5d
feat: replace prompt() delete with DeleteSiteModal on settings page
2026-03-18 11:15:14 +01:00
Usman Baig
b16f01bd7f
fix: rename Step 1 to Entry in columns view, max depth to 6
2026-03-16 22:08:14 +01:00
Usman Baig
52427fea93
fix: change journey depth default to 4, max to 5
2026-03-16 22:02:29 +01:00
Usman Baig
6f42d4d3de
feat: add Columns/Flow view toggle to journeys page
2026-03-16 14:01:18 +01:00
Usman Baig
be1d9a2f46
feat: add shimmer bar when dashboard is refetching after filter change
...
Shows a thin animated orange bar below the filter bar while SWR
revalidates, so users know their filter was applied. Hidden on
initial load where the skeleton already provides feedback.
2026-03-16 11:39:28 +01:00
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
d864d951f9
fix: rebuild depth slider from scratch
...
- 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
2026-03-15 20:08:15 +01:00
Usman Baig
d5b48ac985
fix: rebuild depth slider with single state + debounce
...
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.
2026-03-15 20:04:36 +01:00
Usman Baig
3c9d5b47be
fix: show reset button while dragging depth slider
2026-03-15 20:00:51 +01:00
Usman Baig
76248233b9
fix: revalidate funnels list after creating a new funnel
...
Mutate the SWR funnels cache key before navigating back so the
list page shows the newly created funnel without requiring a refresh.
2026-03-15 18:38:51 +01:00