Full deployment history for this project.
⚡ Bolt: Optimize Connect Four AI move simulation memory allocation (#141)
⚡ Bolt: Optimize Connect Four AI move simulation memory allocation Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: reuse search utility by accepting pre-filtered arrays (#140)
⚡ Bolt: reuse search utility by accepting pre-filtered arrays
🎨 Palette: Improve Simon Says navigation accessibility and screen-reader announcements (#138)
🎨 Palette: Improve accessibility and live announcements in Reaction Time Game (#139)
🎨 Palette: Improve accessibility and live announcements in Reaction Time Game
🎨 Palette: Improve Simon Says navigation accessibility and screen-reader announcements
⚡ Bolt: Precompute winning lines in Tic-Tac-Toe (#137)
⚡ Bolt: Precompute winning lines in Tic-Tac-Toe
🎨 Palette: Improve Quick Math game timer accessibility and status announcements (#136)
⚡ Bolt: Prevent unnecessary O(N) array cloning in FAQ API route (#133)
🎨 Palette: Improve navigation & inline error feedback in Word Scramble (#134)
🎨 Palette: Add accessible Back navigation to Tic Tac Toe game (#109)
🎨 Palette: Improve keyboard focus states in breadcrumbs (#103)
🎨 Palette: Standardize in-game Back navigation on Memory Match Start Modal (#111)
🎨 Palette: Improve breadcrumb keyboard focus and accessibility (#113) - Add visible focus ring styles (focus-visible:ring-2) to breadcrumb links for keyboard navigation - Mark decorative ChevronRight and Home icons with aria-hidden="true" to reduce screen reader clutter
🎨 Palette: Add keyboard navigation & ARIA attributes to Connect Four (#119)
Extract and memoize GameCard component (#129) This removes the inline `GameCard` component definition from `game-dashboard.tsx` and properly utilizes the newly extracted, memoized `GameCard` from `@/components/games/game-card`. This avoids redefining and memoizing the component inside `game-dashboard.tsx` repeatedly, reducing unnecessary VDOM overhead.
🎨 Palette: Add confirmation step for clearing local scores (#121) - Add inline confirmation state to LocalScorePanel component - Disable Clear button when no local scores are populated - Ensure proper ARIA labels and focus styles for confirm and cancel actions
🎨 Palette: Standardize Back navigation & choice button accessibility in Quick Math (#123) Improve Quick Math game accessibility and UX by: - Adding ArrowLeft icon and explicit 'Back to Arcade' button labeling - Adding type='button' and explicit aria-label attributes to math option controls - Adding focus-visible ring focus indicator styles on option buttons for keyboard navigation - Ensuring high contrast with bg-gray-100 text-gray-900 border-gray-300 on white card background
🎨 Palette: Add ARIA label to Memory Match back button (#125)
⚡ Bolt: Memoize GameCard to prevent unnecessary VDOM recreation (#126)
🎨 Palette: Add focus-visible indicator styles to Breadcrumb links (#127)
chore: auto-close PR #77 via merge path
chore: stack PR #75
chore: stack PR #67
chore: stack PR #62
chore: stack PR #61
Merge pull request #15 from mbarbine/bolt-optimize-search-filter-13417125379914336343 ⚡ Bolt: [performance improvement] optimize game dashboard search filtering
⚡ Bolt: Memoize filteredGames in GameDashboard
perf(dashboard): optimize game filtering with useMemo - Wrapped the `filteredGames` calculation in `useMemo` to prevent unnecessary recalculations on re-renders when inputs haven't changed. - Extracted `searchQuery.toLowerCase()` outside the `.filter` loop to run only once per render, avoiding N redundant string operations per calculation. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add actionable empty state for game search - Added a 'Clear filters' button when zero games match search/category. - Resets search query and category filters seamlessly. - Logged UX learnings to .Jules/palette.md. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [CRITICAL] Fix authorization bypass in webhooks endpoint Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Memoize filtered games in GameDashboard 💡 What: Wrapped the `filteredGames` array filtering logic in `useMemo` within `game-dashboard.tsx`. 🎯 Why: The dashboard's game list was being recalculated on every render, even for unrelated state changes. Filtering and iterating over arrays on every render is inefficient, particularly on lower-end devices. 📊 Impact: Reduces unnecessary re-renders and recalculations of the games list. 🔬 Measurement: Verify by typing in the search bar or changing categories. The component will now only recalculate the list when either `selectedCategory` or `searchQuery` changes, and not on other re-renders. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Optimize game filtering performance in GameDashboard - Wrapped game filtering logic in `useMemo` to prevent recalculations on unrelated renders. - Cached `searchQuery.toLowerCase()` outside of the array `filter` loops. This avoids up to 3*N redundant string allocations and `.toLowerCase()` operations on every keystroke, significantly improving filtering performance. - Documented learning in `.jules/bolt.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: optimize game dashboard filtering performance - Wrap game list filtering in useMemo to prevent unnecessary recalculations on re-renders. - Extract `searchQuery.toLowerCase()` outside the `.filter` loop to avoid redundant string allocations and garbage collection per game per keystroke. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix Webhook Signature Verification Added HMAC-SHA256 signature verification in `app/api/webhooks/route.ts` to prevent forged webhook events. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: enhance SEO, RSS, Docs and integrate with Platphorm News Network - verified existing `/api/health` endpoint - updated `/rss.xml` to include `pubDate` and `image` tags - registered network endpoints (graph, docs, hub) and `clawsIntegration` in `network.json` - created and integrated `<Breadcrumbs />` component across `/faq`, `/about`, and `/games/[slug]` pages - added `claws.platphormenews.com` integration details to `FAQ` and OpenAPI docs - updated `README.md` and `llms` files with Roadmap for SEO, AEO, and GEO enhancements Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Dashboard search clear button & a11y improvements Added a 'clear search' button that appears inside the search input when text is entered, providing an immediate way for keyboard/mouse users to reset the list. Enhanced accessibility by adding `aria-label` to the search input, `aria-hidden` to purely decorative icons, and wrapping the category filters in a `role="group"` with `aria-pressed` state for screen reader context. Logged the learning in `.Jules/palette.md` as per instructions. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: regenerate pnpm-lock.yaml with pnpm@10 to fix ERR_PNPM_OUTDATED_LOCKFILE Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Initial plan
Initial plan
feat: improve MCP integration and add mobile usability/playability - Add /.well-known/mcp.json discovery endpoint for MCP hub registration - Create reusable MobileControls D-pad component - Add touch swipe + on-screen D-pad to Snake game - Add touch swipe + on-screen D-pad to Tetris game - Update manifest.json with orientation and maskable icon for better PWA - Update network.json to include MCP registration URL - Update llms-index.json to reference /.well-known/mcp.json - Add .well-known CORS headers in next.config.mjs Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>