Full deployment history for this project.
ā” Bolt: Optimize JSON serialization overhead in webhook delivery * **What:** Updated webhook delivery to serialize the event payload only once. Refactored `generateSignature` to optionally accept a pre-stringified payload string to avoid redundant `JSON.stringify` calls. * **Why:** `deliverWebhook` was previously performing `JSON.stringify(event.payload)` twice during a single webhook delivery attempt: once when building the payload hash inside `generateSignature`, and again to construct the `fetch` request body. For large payloads, parsing and reserializing adds unnecessary CPU cycles and could cause timing inconsistencies in highly parallel webhook dispatch environments. * **Impact:** Reduces double serialization overhead to a single, cached string conversion. Performance scales linearly with the payload size (`O(N)` savings per webhook emitted, highly beneficial for bulk processing). * **Measurement:** CPU profiling for heavy webhook batch invocations with large (1MB+) payload objects will demonst
ā” Bolt: Cache expensive API call results and memoize filtering Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
ā” Bolt: Improve EventsPage performance with useSWR and useMemo * Refactor data fetching from `useEffect` and `useState` to `useSWR` for automatic caching, revalidation, and request deduplication. * Memoize the `filtered` events array using `useMemo` to prevent unnecessary re-evaluations during renders when the filter or events haven't changed. * Map `useSWR`'s `isLoading` to replace the old local `loading` state to preserve exact UI behavior without manual state management. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
ā” Bolt: Memoize event filtering in events page Wrap the events array filtering logic in useMemo to avoid unnecessary calculations and array iterations on every component re-render. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
šØ Palette: Improve accessibility of request access form Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
š”ļø Sentinel: [HIGH] Fix SSRF bypass via IPv6 and common DNS rebinding domains - Improved `validateWebhookUrl` in `lib/api/ssrf.ts` to correctly identify and block IPv4-mapped IPv6 loopbacks (e.g., `::ffff:127.0.0.1`). - Added robust checks for common DNS rebinding testing domains pointing to loopback/private IPs like `nip.io`, `sslip.io`, `xip.io`, and `localtest.me` (while explicitly allowing `ngrok.io` for development). - Added comprehensive unit tests in `lib/api/ssrf.test.ts`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
š”ļø Sentinel: [CRITICAL] Fix webhook authentication bypass Fixed a critical security vulnerability where webhook signatures were only verified if both the secret and signature were provided. This allowed attackers to bypass authentication entirely by simply omitting the `x-vercel-signature` header. The logic has been updated to fail closed: if a webhook secret is configured, the signature header must be present. Also added an entry to `.jules/sentinel.md` documenting this learning. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #15 from mbarbine/sentinel/fix-ssrf-validation-16731655781866550497 š”ļø Sentinel: [HIGH] Fix SSRF vulnerability in webhook URL validation
š”ļø Sentinel: [HIGH] Fix SSRF vulnerability in webhook URL validation - Updated `validateWebhookUrl` in `lib/api/ssrf.ts` to block RFC 1918 private IPv4 ranges, `0.0.0.0/8`, and IPv6 loopback variants. - Added comprehensive unit tests in `lib/api/ssrf.test.ts` - Logged vulnerability and learning in `.jules/sentinel.md` Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #14 from mbarbine/enhance-webhook-validation-pro-7724313420702309821 š”ļø Sentinel: [feature] Enhance Webhook Validation Pro UI and Features
š”ļø Sentinel: [feature] Enhance Webhook Validation Pro UI and Features Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #13 from mbarbine/fix-build-errors-2197211058522528775
fixes