Full deployment history for this project.
Merge pull request #208 from mbarbine/sentinel/trending-dos-protection-8784415864136590418
security: use clampInt and clampString in trending route to prevent DoS Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Merge pull request #206 from mbarbine/jules-3914873309071749989-f68b9fd8
Merge pull request #207 from mbarbine/perf/avoid-date-allocation-feed-route-15673114487764502565
⚡ perf: verify raw ISO date parameter passing in feed route Verifies that app/api/feed/route.ts passes raw ISO date strings directly down to fetchPolymarketMarkets without instantiating intermediate Date objects. Date parsing is performed inside polymarket-api.ts via Date.parse(), eliminating unnecessary object allocations and GC pressure. Tests demonstrate ~33.7% speedup (56.0ms vs 89.6ms over 100,000 iterations). Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Conditionalize Date.now() timing calculations in RSS feed handler - Conditionalized Date.now() invocation and Server-Timing/X-Response-Time headers based on process.env.NODE_ENV !== "production". - Reduces unnecessary timing calculations and header formatting overhead in production. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #205 from mbarbine/jules-15252003381460679595-675fc834
⚡ optimize date parameter passing in feed route - Pass endBefore and endAfter raw strings directly to fetchPolymarketMarkets in app/api/feed/route.ts - Add benchmark test tests/unit/feed-date-allocation.bench.test.ts verifying performance improvement Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #198 from mbarbine/jules-16152321738894465107-d58c0d0d
Merge pull request #199 from mbarbine/perf-optimize-feed-route-6719135405857361391
Merge pull request #196 from mbarbine/remove-any-in-format-single-market-15131638690773459628
Merge pull request #193 from mbarbine/perf/optimize-date-parsing-feed-routes-15636213478085970373
Merge pull request #184 from mbarbine/jules-15120969580844826915-29519a3a
Merge pull request #185 from mbarbine/refactor/use-structured-logging-in-db-191866878039883561
Merge pull request #187 from mbarbine/add-get-available-categories-tests-14761356534994103708
Merge pull request #188 from mbarbine/clean-mcp-route-types-17112553005423781800
Merge pull request #189 from mbarbine/perf/conditional-date-now-feed-route-18070907979739072995
Merge pull request #190 from mbarbine/perf/lazy-chunk-array-generator-14971074775587099999
Merge pull request #192 from mbarbine/jules-12185476067571442392-fab84fd2
Merge pull request #181 from mbarbine/palette/ux-clear-search-and-empty-state-2006759681500910881 🎨 Palette: Add clear search filter button and upgrade categories empty state
Merge branch 'main' into palette/ux-clear-search-and-empty-state-2006759681500910881
Merge pull request #182 from mbarbine/palette/standardize-category-empty-state-2360890524878056946 🎨 Palette: Standardize empty state UI on categories page
Merge pull request #180 from mbarbine/consolidate/platphorm-polymarket-rss-feed-20260811-cont3 consolidate 6 PRs into one commit
chore: reconcile and restore pnpm build
Consolidate open PRs, compatible upgrades, and platform auth Validated locally and through a READY Vercel preview. Merge commit preserves every original PR head in ancestry.
Merge pull request #158 from mbarbine/copilot/merge-all-pull-requests Consolidate open PRs #147–#157 into a single merge-ready integration branch
chore: drop stray PR metadata file Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #145 from mbarbine/fix-ip-spoofing-vulnerability-15947331289465584313 🔒 [security] Fix IP spoofing vulnerability in getClientIp
Merge pull request #139 from mbarbine/sentinel-dos-mcp-16352267850012769827 🛡️ Sentinel: [MEDIUM] Fix DoS risk in MCP string inputs
Merge branch 'main' into palette-recent-markets-ux-463324733562882776
Merge pull request #140 from mbarbine/bolt/optimize-emoji-lookup-11693902125624668059 ⚡ Bolt: Optimize emoji lookup with single-pass iteration
Merge pull request #135 from mbarbine/palette-error-state-ux-14992905809839380938 🎨 Palette: Improve error state UX for recent markets
Merge pull request #137 from mbarbine/bolt-optimize-markets-route-8406472046907981920 perf: filter markets before CLOB price batch fetch in `/api/markets`
Merge branch 'main' into bolt-optimize-markets-route-8406472046907981920
Merge branch 'main' into sentinel/fix-xss-escapehtml-18426216374043960444
Merge branch 'main' into perf-optimize-top-movers-cache-6497083052491467543
Merge branch 'main' into sentinel/fix-cron-auth-bypass-398696299193142017
Merge branch 'main' into jules-7817610313128803506-fb4e8d79
Merge branch 'main' into jules-15429794825556002952-375c1774
Merge pull request #38 from mbarbine/jules-fix-duplicate-ratelimit-4312659532739387161 🛡️ Sentinel: [HIGH] Fix duplicate rate limit check crashing MCP endpoint
🛡️ Sentinel: [HIGH] Fix duplicate rate limit check crashing MCP endpoint Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [High] Fix potential XSS via dangerouslySetInnerHTML without HTML escaping Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge branch 'main' into jules-bolt-upsert-batching-13341397984068833097
⚡ Bolt: Batch Neon database inserts in upsertMarkets Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #21 from mbarbine/sentinel-mcp-rate-limit-6854168838620170123 🛡️ Sentinel: [HIGH] Add rate limiting to MCP endpoint
Merge branch 'v0/mbarbine-a85382cd' into sentinel-mcp-rate-limit-6854168838620170123
Merge pull request #27 from mbarbine/sentinel/fix-json-ld-xss-3949393400162916686 🛡️ Sentinel: [HIGH] Fix XSS vulnerability in JSON-LD rendering
Merge branch 'main' into bolt-performance-optimization-promise-chaining-6906029282778357614
🛡️ Sentinel: [High] Fix XSS vulnerability in dangerouslySetInnerHTML Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>