118 Commits

Author SHA1 Message Date
dependabot[bot] c009d2b0e1 chore(deps): bump postcss from 8.5.8 to 8.5.14 (#7)
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.8 to 8.5.14.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.14)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.14
  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-23 19:19:57 +07:00
dependabot[bot] d122a109f1 chore(deps): bump undici from 7.22.0 to 7.24.1 (#2)
Bumps [undici](https://github.com/nodejs/undici) from 7.22.0 to 7.24.1.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.22.0...v7.24.1)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.1
  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:36 +07:00
dependabot[bot] 6aa01a41bf 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] d9ccce9a16 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 76211c12d1 chore: add Apache-2.0 license 2026-04-29 21:33:37 +07:00
tiennm99 ac4198c499 test(01): complete UAT - 10 passed, 0 issues 2026-03-12 05:27:11 +00:00
tiennm99 f2f6e16c4d 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 3082324340 docs(01): complete phase 1 execution - bill entry & assignment 2026-03-12 03:21:38 +00:00
tiennm99 b297dd04b1 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 09df34112e docs(01-04): complete Items UI components plan 2026-03-12 02:54:38 +00:00
tiennm99 03dbd0bb63 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 77d0afed54 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 24f5fc14b2 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 f3214341f0 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 652a54164d 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 b688698f07 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 708ec8d520 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 5cf7decd95 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 a483f2e476 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 aeb613c36a 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 51564970e2 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 e4152a3dae 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 e4ed7a6592 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 cf021465ba docs(01): create Phase 1 plans for bill entry and assignment 2026-03-12 02:08:47 +00:00
tiennm99 46777c2da8 docs(01): add validation strategy 2026-03-12 01:59:35 +00:00
tiennm99 5a9f60005e docs(01): research phase domain - bill entry & assignment 2026-03-12 01:58:22 +00:00
tiennm99 58f910faa4 docs: create roadmap (3 phases) 2026-03-11 20:16:05 +00:00
tiennm99 05ab5c67fc docs: define v1 requirements 2026-03-11 20:14:24 +00:00
tiennm99 29d4442714 docs: complete project research 2026-03-11 20:11:51 +00:00
tiennm99 a1fe50e359 chore: add project config 2026-03-11 20:03:00 +00:00
tiennm99 9ceb510bda docs: initialize project 2026-03-11 16:37:11 +00:00
tiennm99 69641d13d2 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 12e66bd2da chore: reset 2026-03-11 22:35:40 +07:00
tiennm99 1fad9a89a9 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
tiennm99 41961894c6 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 14:18:03 +00:00
tiennm99 51567454de 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 14:01:16 +00:00
tiennm99 4509abc2c0 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:58:53 +00:00
tiennm99 1fc2c45d4d 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:54:18 +00:00
tiennm99 7babb6346f 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:53:56 +00:00
tiennm99 470ee9f1a9 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:52:24 +00:00
tiennm99 085556c274 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:49:18 +00:00
tiennm99 d0b718a487 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)


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

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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:46:56 +00:00
tiennm99 4dfa4e2e02 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)


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:44:57 +00:00
tiennm99 c353f6d68f 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:44:31 +00:00
tiennm99 788892458c 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:41:57 +00:00
tiennm99 059012f9ac 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:40:52 +00:00
tiennm99 933e8b6feb 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


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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-11 13:34:53 +00:00
tiennm99 fb49a0412b fix(06): correct dependency for plan 06-02 on 06-01 2026-03-11 11:34:11 +00:00
tiennm99 d41c5d9e8a docs(06): add phase plans for Polish and UX 2026-03-11 11:18:34 +00:00