No description
The T1 ModifierProfileEditor installed a window-level Esc handler that closed the modal but the RulesDrawer had no Esc handler of its own. Users hitting Esc with the drawer open (no modal) saw nothing happen; worse, with both open+modal, closing the modal left the drawer's pointer-events-blocking backdrop in place, silently breaking all board drag-interaction afterward. Fix: - Add useEffect-based Esc handler to RulesDrawer that closes it when no nested modal is active. - ModifierProfileEditor now uses capture-phase + stopImmediatePropagation so the drawer's Esc handler does NOT also fire on the same keystroke, preventing double-close. Add packages/chess/e2e/solo-smoke.spec.ts — 5 regression scenarios that would have caught this at T1 CI time. Test 4 specifically reproduces the original bug (drawer open → Esc → drag board pieces). Also queue 2 additional scenarios in the T2 plan since T2 work extends both drawer + editor further. All tests green: 1217 unit tests (94 files), 48 Playwright e2e in 1.3m. |
||
|---|---|---|
| .github/workflows | ||
| .sisyphus | ||
| docs | ||
| packages | ||
| scripts | ||
| .gitignore | ||
| eslint.config.js | ||
| lefthook.yml | ||
| LICENSE | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tsconfig.base.json | ||
| tsconfig.json | ||
| vitest.workspace.ts | ||
@paratype
A Doorenbos-style Rete II rules engine for TypeScript games, with an authoritative WebSocket chess demo.
Packages
packages/rete— Rete II engine corepackages/chess— Browser chess demo (React + Vite)packages/server— Authoritative Bun WebSocket server
Docs
- SPEC.md — Engine specification
- PHASES.md — Development phases & perf budgets
- RULES.md — Chess rule presets
- PROTOCOL.md — WebSocket message protocol
Getting Started
bun install && bun run check