Commit Graph

16 Commits

Author SHA1 Message Date
claude (duplicate_chess) a44b4de717 fix(ui): advance turn glow/interactivity to the player to move
`active` was `$derived(gameStore.activeBoards)`, and that getter read the
non-`$state` `#game`. The $derived captured no reactive dependency, so the
glowing/interactive boards froze on North's NW+NE after move 1: the next
player couldn't act, clicks on their boards did nothing, and selections fired
on unexpected boards — the reported "turns", "what piece is selected", and
"mirrored movements" symptoms were all this one stale-derived bug.

Fix: derive `active` from the reactive `view.currentPlayer`; remove the
footgun `activeBoards` getter so nothing re-reads `#game` reactively.

Add scripts/smoke.py: Playwright end-to-end test driving the real app through
a full N->S->E->W round (engine vitest can't see Svelte reactivity wiring).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 09:36:59 -04:00
claude (duplicate_chess) 5db04109a2 fix: real project README and save-file version validation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 01:18:35 -04:00
claude (duplicate_chess) ead4839df4 feat(ui): assemble the duplicate chess sandbox app
Wire Compass, Panel, and PromotionDialog into App.svelte; apply dark-theme
base styles in app.css. Build passes, 26 tests pass, smoke render confirmed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 01:13:00 -04:00
claude (duplicate_chess) bedb5a0f80 feat(ui): promotion dialog 2026-05-19 01:10:08 -04:00
claude (duplicate_chess) 51615debd0 feat(ui): Panel component — turn, move log, legend, controls 2026-05-19 01:08:41 -04:00
claude (duplicate_chess) be05ee5617 feat(ui): Compass component — pinwheel layout, click-to-move wiring 2026-05-19 01:06:39 -04:00
claude (duplicate_chess) 059177c635 feat(ui): Board component — rotated grid, coloured pieces, highlights, ghosts 2026-05-19 01:04:39 -04:00
claude (duplicate_chess) 3931805b6f feat(ui): reactive game store wrapping the engine 2026-05-19 01:02:31 -04:00
claude (duplicate_chess) 3f9891a97c test(engine): scripted full-game integration test 2026-05-19 00:59:49 -04:00
claude (duplicate_chess) 763769f997 feat(engine): coordinate notation and JSON save/load 2026-05-19 00:58:12 -04:00
claude (duplicate_chess) 4278f2d19e feat(engine): endgame detection with provisional rules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 00:56:38 -04:00
claude (duplicate_chess) 4e876b3197 feat(engine): ghost derivation from cross-board piece comparison 2026-05-19 00:53:51 -04:00
claude (duplicate_chess) 7473cc69b3 feat(engine): synchronized-move intersection and selection highlight 2026-05-19 00:50:51 -04:00
claude (duplicate_chess) 88f1da9f70 feat(engine): DuplicateGame core — boards, history, undo, draw clocks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 00:46:38 -04:00
claude (duplicate_chess) c1751751af feat(engine): board/player constant maps and shared types 2026-05-19 00:43:23 -04:00
claude (duplicate_chess) bd24159f37 chore: scaffold Vite + Svelte 5 + TS project with chess.js and vitest
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 00:40:03 -04:00