Commits
Replace the doubled-offset ID system with standard axial coordinates.
The same (q, r) pair now identifies the same hex in both flat-top and
flat-sides orientations, so shapes port correctly between layouts and
the 30° visual rotation on mode switch is expected behaviour.
- hexNeighborIds: drop flatTop param; 6 directions are layout-invariant
- generateGrid: compute axial IDs from offset loop counters
- buildHexesFromIds: use axial pixel projection formulas
- translateHexId deleted; shape moves are plain (q+dq, r+dr) addition
- originQ/originR replace originCol/originRow throughout
- saveShape stores {q, r} positions; fmtPos outputs axial coords
- migrateItem converts old {column, row} localStorage data on first load
- Redesign library items: name row, properties row, then Rename/Coords/Delete action row so name is never obscured
- Make sidebar panel collapsible and resizable by dragging the right edge
- Add folder classification: create folders, assign shapes to folders, collapse/expand folder groups
- Color-code disconnected hex clusters on the canvas; split coordinate output per cluster when saving
- Add movable coordinate origin via Ctrl+click; all coord output updates relative to the new origin, persisted across sessions
- Show group number labels on canvas hexes (centered on each cluster, only when multiple clusters present)
- Show group number labels in saved-shape thumbnails, sized to always be legible regardless of shape spread
- Stabilise cluster color assignment: clusters are numbered by painting order so adding a new cluster elsewhere does not re-color existing ones
Allow users to click and drag across hexes to add or erase selections, update pointer handling for touch
input, and add JS typings so pnpm check passes.
SvelteKit + Vite app: clickable hex grid that merges outlines around touching hexes, settings panel for radius and angle, persistent shape library, and SVG/PNG export.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the doubled-offset ID system with standard axial coordinates.
The same (q, r) pair now identifies the same hex in both flat-top and
flat-sides orientations, so shapes port correctly between layouts and
the 30° visual rotation on mode switch is expected behaviour.
- hexNeighborIds: drop flatTop param; 6 directions are layout-invariant
- generateGrid: compute axial IDs from offset loop counters
- buildHexesFromIds: use axial pixel projection formulas
- translateHexId deleted; shape moves are plain (q+dq, r+dr) addition
- originQ/originR replace originCol/originRow throughout
- saveShape stores {q, r} positions; fmtPos outputs axial coords
- migrateItem converts old {column, row} localStorage data on first load
- Redesign library items: name row, properties row, then Rename/Coords/Delete action row so name is never obscured
- Make sidebar panel collapsible and resizable by dragging the right edge
- Add folder classification: create folders, assign shapes to folders, collapse/expand folder groups
- Color-code disconnected hex clusters on the canvas; split coordinate output per cluster when saving
- Add movable coordinate origin via Ctrl+click; all coord output updates relative to the new origin, persisted across sessions
- Show group number labels on canvas hexes (centered on each cluster, only when multiple clusters present)
- Show group number labels in saved-shape thumbnails, sized to always be legible regardless of shape spread
- Stabilise cluster color assignment: clusters are numbered by painting order so adding a new cluster elsewhere does not re-color existing ones