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
430e6f5d48
feat: use session cookie auth for public dashboard password flow
...
handlePasswordSubmit now calls POST /public/sites/:id/auth which
sets an HttpOnly cookie. All subsequent API calls authenticate via
cookie automatically — no password in URLs, no captcha state needed
for data fetching. Simplifies share page state management.
2026-03-22 14:45:25 +01:00
Usman Baig
82a201a043
fix: stop password keystrokes from triggering API calls on public dashboard
...
Used refs for password/captcha values so loadDashboard doesn't
recreate on every keystroke. Password is only sent to API on
explicit form submit. Also fixes stale captcha state in closures.
2026-03-22 13:52:10 +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
93347f6454
fix: revert outer container size, increase inner padding to show more bg
2026-03-21 21:05:46 +01:00
Usman Baig
b3bb0685f9
fix: smooth chart curve data, translucent dashboard, smaller demo container
2026-03-21 21:02:35 +01:00
Usman Baig
ca199b59fd
feat: replace fake LiveDemo with real dashboard components and fake data
2026-03-21 20:36:55 +01:00
Usman Baig
536bb8c872
feat: add live demo dashboard to landing page hero
2026-03-21 20:26:23 +01:00
Usman Baig
911704cff2
feat: port website header with mega-menu, add showcase bg to hero, fix carousel container size
2026-03-21 20:12:01 +01:00
Usman Baig
a361649e60
feat: add tabbed FAQ, polish installation code blocks, refine integration styling
2026-03-21 19:52:32 +01:00
Usman Baig
0b7c4d528a
feat: add feature sections, comparison cards, and CTA components for landing page
2026-03-21 19:46:20 +01:00
Usman Baig
acfd532194
feat: redesign landing hero to match website quality
2026-03-21 19:41:51 +01:00
Usman Baig
3710f081a6
feat: dark-only cleanup for marketing pages and authenticated landing view
2026-03-21 19:39:01 +01:00
Usman Baig
21c68b4334
fix: restore ThemeProvider with forced dark mode to fix build
2026-03-21 18:30:06 +01:00
Usman Baig
ec9d1a2c2d
feat: force dark mode and match ciphera-website background
2026-03-21 18:27:35 +01:00
Usman Baig
8fdb8c4a2f
fix: remove orange glow orb backgrounds from marketing pages
2026-03-21 18:17:27 +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
e464b87471
feat: add filtered traffic page to admin dashboard
...
Add admin page at /admin/filtered-traffic showing domains blocked by the
referrer spam filter with reason badges and date range selector. Helps
operators monitor spam filtering and catch false positives.
2026-03-19 10:11:28 +01:00
Usman Baig
6fcb6df295
fix: widen collapsed sidebar to 64px, prevent header flash on refresh
...
Collapsed width 56px→64px to stop clipping site picker badge and icons.
Return null while auth is loading on site pages to prevent brief flash
of the public floating header before the sidebar layout renders.
2026-03-18 16:51:01 +01:00
Usman Baig
db5cd4cbcb
feat: replace sidebar with 21st.dev hover-to-expand component
...
Use framer-motion animated sidebar from 21st.dev — collapses to icons,
expands on hover. Phosphor icons instead of lucide. Remove old manual
collapse/expand and sidebar-context. Top bar has Pulse logo + user
actions, sidebar below with site picker and nav groups.
2026-03-18 16:20:32 +01:00