Commit Graph

116 Commits

Author SHA1 Message Date
dependabot[bot] e09d6e6c34 chore(deps): bump picomatch (#3)
Bumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:33 +07:00
dependabot[bot] a306d7d70e chore(deps): bump vite (#6)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) to 8.0.8 and updates ancestor dependency . These dependencies need to be updated together.


Updates `vite` from 5.4.21 to 8.0.8
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.8/packages/vite)

Updates `vite` from 7.3.1 to 7.3.2
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.8/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.0.8
  dependency-type: direct:development
- dependency-name: vite
  dependency-version: 7.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:30 +07:00
tiennm99 d6acf987f3 chore: add Apache-2.0 license 2026-04-29 21:33:37 +07:00
tiennm99 7cf9936651 test(01): complete UAT - 10 passed, 0 issues 2026-03-12 05:27:11 +00:00
tiennm99 f585474e1e chore: update .gitignore with standard patterns
Add patterns for node_modules, build output, logs, editor files,
OS files, environment files, and test coverage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 04:12:38 +00:00
tiennm99 c67d5e8164 docs(01): complete phase 1 execution - bill entry & assignment 2026-03-12 03:21:38 +00:00
tiennm99 c3853936de docs(01-05): complete Integration Checkpoint plan
- Human verification passed for all Phase 1 requirements
- PEOPLE-01 through PEOPLE-04 confirmed working
- 20/20 automated tests passing
- Phase 1 Bill Entry & Assignment complete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 03:17:43 +00:00
tiennm99 fbe8dcce5a docs(01-04): complete Items UI components plan 2026-03-12 02:54:38 +00:00
tiennm99 ac7856469d feat(01-04): wire Items components in App
- Import ItemForm and ItemsList
- Add Items section after People section
- App now supports full bill entry workflow
2026-03-12 02:51:44 +00:00
tiennm99 9f9369b91b feat(01-04): create ItemsList component for displaying items
- Subscribes to store.items signal
- Displays each item with name and formatted price
- Includes ItemAssign component for each item
- Shows empty state when no items added
2026-03-12 02:51:29 +00:00
tiennm99 ba34ab0401 feat(01-04): create ItemAssign component for assigning people
- Multi-select checkbox UI for each person
- Reflects current assignment state
- Toggles person on/off when clicked
- Calls store.setAssignment on change
- Shows hint when no people added
2026-03-12 02:50:57 +00:00
tiennm99 49142bdfdd feat(01-04): create ItemForm component for adding items
- Controlled form with name and price inputs
- Calls store.addItem on form submit
- Shows error message on validation failure
- Clears inputs on successful add
2026-03-12 02:50:31 +00:00
tiennm99 be6e89e698 docs(01-03): complete People UI components plan
- Created 01-03-SUMMARY.md with full execution documentation
- Updated STATE.md position to Plan 3 of 5 (60% progress)
- Added decisions: controlled forms, signal access pattern
- All 3 tasks committed atomically

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:48:47 +00:00
tiennm99 2903191bf6 docs(01-02): complete core data layer plan
- Created 01-02-SUMMARY.md documenting currency utilities and billStore
- Updated ROADMAP.md to mark 01-02 as complete (2/5 plans done)
- All tests passing (20/20)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:47:38 +00:00
tiennm99 7893729563 feat(01-03): wire components in App with Vite + Preact setup
- Create App.jsx importing PersonForm and PeopleList
- Create main.jsx entry point for Preact render
- Add index.html as app entry point
- Add basic CSS styles for layout
- Configure Vite with @preact/preset-vite
- Update vitest config for Preact/jsdom environment
- Add missing dependencies (preact, vite, @preact/preset-vite)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:46:25 +00:00
tiennm99 710fb8d733 docs(01-01): complete test infrastructure plan
- Created SUMMARY.md with execution details and deviations
- Updated STATE.md with plan completion metrics
- Updated ROADMAP.md with plan 01-01 progress
- Marked PEOPLE-01 through PEOPLE-04 as complete in REQUIREMENTS.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:46:21 +00:00
tiennm99 e49c7bc605 feat(01-03): create PeopleList component
- Subscribes to store.people signal
- Renders list of person names with unique keys
- Shows empty state when no people added
- Preact Signals auto-track dependencies in components

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:46:12 +00:00
tiennm99 62240697ce feat(01-03): create PersonForm component
- Controlled form with useState for local state
- Calls store.addPerson on form submit
- Shows error message if addPerson fails
- Clears input on successful add
- Uses Preact hooks for form state management

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:46:06 +00:00
tiennm99 801f40f229 fix(01-01): fix syntax error in billStore.js negation operator
- Fix escaped exclamation marks (\! to !) in condition checks
- Add currency utility module (dollarsToCents, centsToDollars, formatCurrency)

All 20 tests now pass (10 billStore + 10 currency)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:42:28 +00:00
tiennm99 1a4367fc32 feat(01-01): set up test infrastructure with Vitest
- Add package.json with Vitest, jsdom, Vite, and Preact dependencies
- Configure Vitest with jsdom environment for component testing
- Create test stubs for billStore (PEOPLE-01, PEOPLE-02, PEOPLE-03, PEOPLE-04)
- Create test stubs for currency utilities (dollarsToCents, centsToDollars, formatCurrency)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:40:10 +00:00
tiennm99 f917177215 chore(01-01): configure Vitest test infrastructure
- Add vitest.config.js with jsdom environment and global test APIs
- Install vitest and jsdom as dev dependencies
- Add test scripts (test, test:run) to package.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:39:49 +00:00
tiennm99 9e8335af90 docs(01): create Phase 1 plans for bill entry and assignment 2026-03-12 02:08:47 +00:00
tiennm99 1cb89716d9 docs(01): add validation strategy 2026-03-12 01:59:35 +00:00
tiennm99 f8e9bf434f docs(01): research phase domain - bill entry & assignment 2026-03-12 01:58:22 +00:00
tiennm99 0959e43ee2 docs: create roadmap (3 phases) 2026-03-11 20:16:05 +00:00
tiennm99 f676e189f1 docs: define v1 requirements 2026-03-11 20:14:24 +00:00
tiennm99 d634d220cf docs: complete project research 2026-03-11 20:11:51 +00:00
tiennm99 891e7fe1ca chore: add project config 2026-03-11 20:03:00 +00:00
tiennm99 1a54ab0dfa docs: initialize project 2026-03-11 16:37:11 +00:00
tiennm99 a13db5481a chore: add Claude Code GSD framework configuration and agents
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 22:50:35 +07:00
tiennm99 196db6bbc3 chore: reset 2026-03-11 22:35:40 +07:00
tiennm99 004664e2df Archive v1.0 planning; finalize MVP docs
Archive and finalize v1.0 milestone and planning artifacts: add MILESTONES.md, milestone archives (v1.0-ROADMAP.md, v1.0-REQUIREMENTS.md), verification and phase artifacts, and update phase/roadmap/project state to mark v1.0 MVP as shipped. Tidy PROJECT and ROADMAP to reflect shipped features and next steps, remove the old REQUIREMENTS.md (moved to milestone archive), and update STATE.md to show milestone completion. Minor code change: expose GridManager.events as public readonly to allow external subscribers. Package metadata: normalize keywords formatting and add an optional dependency entry in package.json for rollup native binary support.
2026-03-11 21:54:55 +07:00
Claude Code 7a38e4c77c fix(06): connect GridManager events to Game match handler
Bug: Game was listening on its own events emitter for 'tilesSelected'
but GridManager emits on its own events emitter.
Fix: Changed listener from this.events to this.gridManager.events

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:18:03 +00:00
Claude b49ea1bb93 docs(06-04): complete responsive canvas scaling plan
- Enhanced setupCanvas() with viewport-based scaling
- Scale down only, never scales up
- CSS transform for display scaling (preserves coordinates
- Added comprehensive test coverage for responsive scaling behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:01:16 +00:00
Claude 2b40554330 docs(06-04): complete responsive canvas scaling plan
- Enhanced setupCanvas() with viewport-based scaling
- Scale down only on scales to fit viewport on mobile devices
- CSS transform for display scaling (preserves coordinate mapping
- Added comprehensive test coverage for responsive scaling

- Verified coordinate mapping works correctly with CSS transform

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:58:53 +00:00
Claude b1192774ed docs(06-01): complete Tile Match Animations plan
- MatchAnimation class with easeOutBack easing for satisfying pop effect
- scale+fade transforms in renderTile()
- CONFIG.animation.matchDuration = 250ms
- All tests passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:54:18 +00:00
Claude 6f660c223b docs(06-02): complete path glow effect plan
- Created 06-02-SUMMARY.md with accomplishments, deviations, and metrics
- Updated STATE.md with plan completion and decisions
- Updated ROADMAP.md progress (3/4 summaries complete)
- Marked UX-01 requirement complete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:53:56 +00:00
Claude Code 4d8ceeee01 docs(06-02): complete path glow effect plan
- Added shadowBlur glow effect to path visualization
- Wired animateMatch call for concurrent tile animations
- Auto-fixed missing MatchAnimation integration from plan 06-01

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:52:24 +00:00
Claude 51ed2f30a5 feat(06-01): integrate MatchAnimation into Renderer with animateMatch method
- Add animateMatch() method to start animations for matched tiles
- Apply scale/alpha transforms in renderTile() when animation exists
- Clean up completed animations from matchAnimations map
- Add tests for animateMatch integration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:49:18 +00:00
Claude Code 29ae674e15 feat(06-02): wire animateMatch call to tilesMatched event
- Add animation.matchDuration=250 to CONFIG
- Add matchAnimations Map and animateMatch method to Renderer
- Apply scale+alpha transforms in renderTile for animating tiles
- Wire animateMatch call in Game.ts after drawPath

This completes the dependency from plan 06-01 (Rule 2 auto-fix for missing critical functionality)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:49:11 +00:00
Claude ac1860df28 feat(06-01): add animation.matchDuration to CONFIG
- Add animation configuration object with matchDuration: 250ms
- Per CONTEXT.md recommendation (200-300ms range)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:46:56 +00:00
Claude Code f220fe4ae1 feat(06-02): add glow effect to path line visualization
- Add shadowBlur=15 and shadowColor='#00ff00' for green glow
- Wrap path drawing in ctx.save()/ctx.restore() for state preservation
- Add tests for glow effect properties (shadowBlur, shadowColor, save/restore)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:44:57 +00:00
Claude Code 6beae97b7e docs(06-03): complete mobile touch optimization plan
- SUMMARY.md with RippleAnimation implementation details
- STATE.md updated with Phase 6 position and decisions
- ROADMAP.md updated with plan progress
- REQUIREMENTS.md: UX-02 marked complete

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:44:31 +00:00
Claude Code d672975d55 feat(06-03): trigger ripple effect on touch/click input
- Add renderer.addRipple(x, y) call in handleInput method
- Ripple appears at touch/click coordinates before tile selection
- Provides visual feedback for all input interactions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:41:57 +00:00
Claude Code d660e09703 feat(06-03): add RippleAnimation class for touch feedback
- Add RippleAnimation class with 300ms duration and 40px max radius
- Add rippleAnimations property to Renderer
- Add addRipple(x, y) method to trigger ripple effect
- Render ripples in main render loop with auto-cleanup
- Use selection color (rgba 233, 69, 96) for visual consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:40:52 +00:00
Claude Code 6f651e7d6e feat(06-03): add touch-action CSS for mobile optimization
- Add touch-action: none to canvas to prevent zoom/scroll
- Add overflow: hidden to body to prevent page scroll
- Mobile touch gestures now properly blocked during gameplay

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:34:53 +00:00
tiennm99 f620340a8e fix(06): correct dependency for plan 06-02 on 06-01 2026-03-11 11:34:11 +00:00
tiennm99 8da131f47e docs(06): add phase plans for Polish and UX 2026-03-11 11:18:34 +00:00
tiennm99 72778a9dba docs(06): add research and validation strategy 2026-03-11 11:10:03 +00:00
tiennm99 a221c99345 docs(06): research Phase 6 polish and UX domain 2026-03-11 11:08:59 +00:00