Add deploy.yml workflow that runs tests, builds, and deploys to
GitHub Pages on push to main. Add vite.config.js with base path
for subdirectory hosting. Include deployment spec.
The floor was centered on CANVAS_WIDTH/2 but the container is no longer
centered in the canvas (NEXT panel on right). This created a 26px gap
at the bottom-left corner. Center floor on CONTAINER_X + CONTAINER_WIDTH/2
to match the walls. Also display fruit tier numbers instead of names.
Derive canvas width from container + panel dimensions so the NEXT panel
fits with consistent padding. Extract drawFruitCircle helper so all
fruit rendering (in-game, cursor preview, NEXT panel) shows the name
label consistently. Update color palette for maximum visual distinction
between similar fruits (cherry/strawberry/apple, dekopon/persimmon).
Center score text over the container instead of the canvas.
Fix fruits falling through the floor by replacing single-step physics
with fixed-timestep sub-stepping (16.67ms steps, max 5 per frame).
Add escaped-body cleanup as safety net. Tune physics constants for
better feel (higher density, more bounce, less float).
Update fruit radii to match the community-standard ratios (TomboFry/
moonfloof clones) scaled to our 400px container. Update colors to
match real fruit appearances. Fix "Grapes" → "Grape" per wiki.
Add CLAUDE.md with architecture overview and dev commands for future
Claude Code sessions. Update README with tech stack, project structure,
and how-to-play instructions. Add spec for fixing collision physics
tuning issues.
Browser-based physics puzzle game where players drop fruits that merge
into larger fruits on collision, using Matter.js for 2D physics and
Canvas2D for rendering. Includes 11-fruit progression chain, scoring,
game-over detection, mouse/touch input, and Vitest test suite.
Call solve() in browser console to auto-solve one move per second.
Call solve() again to stop. Stops automatically on game over.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Phaser's game.destroy() calls shutdown() on scenes, not destroy().
The old destroy() override was never called, causing stale event
listeners to persist and throw errors in React StrictMode.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move all PowerShell functions to ~/Documents/PowerShell/alias.ps1
and source it from $PROFILE, keeping the profile clean and aliases
easy to manage independently.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace bash aliases with Windows PowerShell functions, adding
zclaude as the primary command for launching Claude via Z.ai
with GLM-5 model and custom API endpoint configuration.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Bootstrap Next.js 15 project with TypeScript, Tailwind, and App Router
- Build full quiz with 5 pop culture questions mapping to 3 personalities
- Implement percentage-based results display with ranked breakdown
- Apply warm/cozy earthy palette inspired by Claude homepage aesthetic
- Components: QuizQuestion, QuizResults with hover states and progress bar
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Define 3 personality-to-coffee pairings (Zen Minimalist, Night Owl, Social Butterfly)
- Add percentage-based result display spec
- Add 5 pop culture quiz questions with personality mappings
- Generate 4 distinct style preview HTML files for visual direction
- Document warm/cozy + Claude homepage aesthetic as chosen style
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>