Full deployment history for this project.
Fix information disclosure in debug page by preventing access in production Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix Information Disclosure in test page - Prevents public unauthenticated access to `app/test-get/page.tsx` in production environments. - Masks raw upstream error messages and status codes, preventing infrastructure detail leaks. - Safely logs internal error details to the server console. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [CRITICAL] Fix missing authentication on test page Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Decouple initial loading to prevent Recharts remounts Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add ToasterProvider for missing toast notifications Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Prevent chart unmounting during background stats refresh Decoupled the initial loading state from the generic background polling loading state in the Dashboard. This prevents the heavy Recharts `BarChart` component from unnecessarily unmounting and remounting on every subsequent refresh, reducing layout shifts and CPU overhead while preserving DOM nodes. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add ToasterProvider to root layout to enable toast notifications Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Prevent unmounting of large components during background refreshes Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [CRITICAL] Prevent information disclosure in cron endpoint Removed logging of raw Vercel API responses and returning of raw upstream error texts in app/pages/api/cron.js to prevent sensitive data leaks. Renamed to .ts. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Prevent expensive chart remounts during realtime updates Updated `fetchStats` to accept a `showLoader` parameter. When the realtime subscription fetches updated stats, it now bypasses setting `loading` to `true`. This prevents the full unmounting and remounting of the Recharts `ResponsiveContainer` and `BarChart` DOM nodes during background syncs, eliminating significant CPU spikes and layout shifts. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #15 from mbarbine/sentinel-fix-cron-auth-11595238284224884128 🛡️ Sentinel: [CRITICAL] Fix Information Disclosure in cron endpoint
🛡️ Sentinel: [CRITICAL] Fix Information Disclosure in cron endpoint Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #14 from mbarbine/jules-bolt-lazy-load-dashboards-16740099124134241468 ⚡ Bolt: Lazy load dashboard components to reduce initial JS payload
Merge pull request #12 from mbarbine/sentinel-fix-auth-2934386193541583705 🛡️ Sentinel: [CRITICAL] Fix missing authorization on update-status API
Merge pull request #11 from mbarbine/palette-a11y-landing-page-17460570144656591285 🎨 Palette: Improve keyboard navigation and screen reader accessibility on landing page
Merge pull request #10 from mbarbine/palette/a11y-chart-summary-5497083119159560165 🎨 Palette: [a11y] Accessible Chart Summaries for Recharts
⚡ Bolt: Lazy load dashboard components to reduce initial JS payload Refactored `app/page.tsx` to dynamically import `Dashboard` and `VercelDashboard` components. This splits heavy libraries (Recharts, MUI) out of the main page bundle, reducing First Load JS size and improving page performance. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #13 from mbarbine/bolt-debounce-realtime-stats-13289348754817989256
perf: debounce realtime stats fetching to prevent api flooding Introduced a 500ms debounce in `Dashboard.tsx` when fetching stats triggered by Supabase realtime events. This prevents flooding the Next.js API and the database when bulk operations or rapid updates occur on the `ja4_fingerprints` table. Also added a journal entry documenting the importance of debouncing network requests triggered by realtime subscriptions. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [CRITICAL] Fix missing authorization on update-status API Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve keyboard navigation and screen reader accessibility on landing page Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat(a11y): add screen reader summary for recharts dashboard Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #7 from mbarbine/sentinel-fix-update-status-auth-13260843296564235191
Merge pull request #8 from mbarbine/palette-improve-async-feedback-and-empty-state-17690993219953263062
Merge pull request #9 from mbarbine/bolt-db-count-optimization-9726796533432609831
⚡ Bolt: [performance improvement] Offload counting to DB to prevent O(N) memory scale Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Improve async button feedback and empty states Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [CRITICAL] Add authentication to update-status API Adds missing authorization check to `app/pages/api/update-status.js` using `API_SECRET_KEY` via `Authorization` header to prevent unauthenticated arbitrary fingerprint updates. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Fix N+1 database query in polling background task Replaced iterative Supabase queries in `processFingerprints` with a single batched `.in()` query, drastically reducing database load and latency during the scheduled 5-second polling interval. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve inline feedback for async buttons * Added a `syncing` state and disabled the "Sync with Vercel Firewall" button during API calls in `app/components/Dashboard.tsx`. * Disabled the "Refresh Stats" button and updated its text to "Refreshing..." while stats are loading in `app/components/Dashboard.tsx`. * Disabled the "Refresh Data" button and updated its text to "Refreshing..." while the table is loading in `app/components/VercelDashboard.tsx`. * Added critical learnings about inline component feedback for async actions to `.jules/palette.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #2 from mbarbine/vercel/react-server-components-cve-vu-hxjcn1 Fix React Server Components CVE vulnerabilities
Fix React Server Components CVE vulnerabilities Updated dependencies to fix Next.js and React CVE vulnerabilities. The fix-react2shell-next tool automatically updated the following packages to their secure versions: - next - react-server-dom-webpack - react-server-dom-parcel - react-server-dom-turbopack All package.json files have been scanned and vulnerable versions have been patched to the correct fixed versions based on the official React advisory. Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Fix React Server Components CVE vulnerabilities Updated dependencies to fix Next.js and React CVE vulnerabilities. The fix-react2shell-next tool automatically updated the following packages to their secure versions: - next - react-server-dom-webpack - react-server-dom-parcel - react-server-dom-turbopack All package.json files have been scanned and vulnerable versions have been patched to the correct fixed versions based on the official React advisory. Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
https://vercel.com/docs/rest-api/sdk/reference#tag/security/read-system-bypass