Skip to content

Conversation

@marcodejongh
Copy link
Owner

Summary

  • Adds a heatmap overlay to the create climb screen that filters by selected holds
  • Heatmap shows statistics only for climbs containing ALL selected holds in their exact states (STARTING, HAND, FOOT, FINISH)
  • Helps route setters understand which holds are commonly used together with their selected holds

Changes

  • Add holdsWithState filter to heatmap API endpoint and database query
  • Update BoardHeatmap component to accept filter props for use outside search context
  • Integrate BoardHeatmap into CreateClimbForm replacing BoardRenderer
  • Add useUISearchParamsOptional hook for components that can work outside the search params context

Test plan

  • Navigate to create climb screen
  • Select some holds with different states (starting, hand, foot, finish)
  • Toggle the "Show Heatmap" button
  • Verify heatmap loads and shows statistics filtered by selected holds
  • Verify heatmap updates as you add/remove holds
  • Verify existing heatmap in search drawer still works correctly

🤖 Generated with Claude Code

When setting a new climb, users can now toggle a heatmap overlay that
shows hold usage statistics filtered by the currently selected holds.
The heatmap only shows data for climbs that contain ALL selected holds
in their exact states (STARTING, HAND, FOOT, FINISH), helping route
setters understand which holds are commonly used together.

Changes:
- Add holdsWithState filter to heatmap API and database query
- Update BoardHeatmap component to accept filter props for create climb
- Integrate BoardHeatmap into CreateClimbForm replacing BoardRenderer
- Add useUISearchParamsOptional hook for components outside search context

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@vercel
Copy link

vercel bot commented Dec 8, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
boardsesh Ready Ready Preview Comment Dec 8, 2025 1:33am

The viewBox was always including LEGEND_HEIGHT which made the board
appear smaller to accommodate space for the legend. Now the legend
height is only added when the heatmap is actively showing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Serialize holdsWithState and filters objects for stable comparison
in useEffect dependency array to prevent infinite re-renders and
request cancellations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants