No description
  • TypeScript 87.7%
  • CSS 9.2%
  • JavaScript 1.9%
  • HTML 1.2%
Find a file
MrSchnirschuh 02453c7be3
Merge pull request #1 from MrSchnirschuh/copilot/implement-web-variant-sudoku
Implement GNOME-style Sudoku web app (React/TypeScript) with persistent state, notes/conflicts, undo/redo, and JSON import/export
2026-04-23 14:08:14 +02:00
public feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
src feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
.gitignore feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
eslint.config.js feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
index.html feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
package-lock.json feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
package.json feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
README.md feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
tsconfig.app.json feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
tsconfig.json feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
tsconfig.node.json feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00
vite.config.ts feat: implement GNOME Sudoku web app with persistence and tests 2026-04-23 11:17:05 +00:00

GNOME Sudoku Web

A true browser implementation of GNOME Sudoku style gameplay using React + TypeScript + Vite.

Features

  • Play Sudoku directly in the browser (no container required)
  • Difficulty levels with seeded generator (easy, medium, hard)
  • Notes / pencil marks per cell
  • Undo / Redo
  • Desktop-like keyboard controls:
    • Arrow keys: move selection
    • 1-9: enter value (or note in Notes mode)
    • Backspace / Delete: clear value
    • Tab / Shift+Tab: move selection
    • N: toggle notes mode
    • Ctrl/Cmd+Z, Ctrl/Cmd+Y, Ctrl/Cmd+Shift+Z: undo/redo
  • Conflict highlighting for invalid duplicates in row/column/box
  • Auto-save (debounced) and restore after reload
  • JSON export/import of game state
  • Timer enabled by default with toggle to disable
  • Accessible controls with focus ring and ARIA labels

Development

Requirements: Node.js 20+ (or compatible modern Node version)

npm install
npm run dev

Open the local URL shown by Vite (default http://localhost:5173).

Build

npm run build

Tests

npm test

Unit tests cover Sudoku validation/conflict detection, solver behavior, and deterministic generator behavior.

Persistence format

Game state is saved in browser localStorage and includes:

  • givens
  • current values
  • notes
  • selected cell
  • difficulty and seed
  • elapsed time and timer toggle
  • undo/redo stacks

You can also export/import this state as JSON from the app controls.