mirror of
https://github.com/tiennm99/sokoban.git
synced 2026-09-13 16:19:36 +00:00
- DonateModal: focus the dialog on open so screen readers announce it and Tab cycles within; restore focus to the previously-active element on close. - Move shared overlay/dialog scaffolding to app.css so GameView's win dialog and DonateModal stop duplicating the same backdrop and frame. - Move touch-action and tap-highlight neutralization to a global button rule; drop the per-component copies. - level-parser: collapse the key/cellKey alias - export cellKey directly. - BoardModel.isSolved: inline the empty-box-set guard into the return. - LevelSelectView: completedCount is read once and never reassigned; drop the $state wrapper. - Board: hoist the wall-trim DIRS array out of $derived so it isn't rebuilt every reactive recomputation.