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