all repos — emchess @ main

6b60c743
feat: arena HUD, eval bar, game-over screen, CRT theme

- VS-style HUD: face, captured pieces, material chip, life-bar clocks
- vertical eval bar fed by the engine after each move (queued, never
  interleaved with search)
- last-move arrow for engine moves, drawn on an SVG layer
- checkmate ceremony: board shake, fallen king, end screen with
  rematch / new opponent / menu
- opponent dossier with ASCII stat bars on the new-game screen
- CRT theme (phosphor green, scanlines) and pixel-weight buttons
- new sounds: start, castle, promotion, low-time tick
- drop tsc-emitted .js from src (noEmit) so dev always serves the .ts
- destroy board window listeners when a game ends
Pablo Murad pablo@pablomurad.com
Mon, 24 Aug 2026 00:47:47 -0300
e3439f4f
feat: fix colors
Pablo Murad pblmrd@gmail.com
Thu, 30 Jul 2026 09:48:47 -0300
582b0387
feat: very small fix on mime and wasm
Pablo Murad pblmrd@gmail.com
Thu, 30 Jul 2026 03:56:56 -0300

EMCHESS

A small chess game that runs in the browser. The pieces are emoji. No accounts, no ads, no tracking, no server required. Open it and play.

DESCRIPTION

Emchess is a static web app. All the chess rules run locally with chess.js. The opponent is Stockfish, compiled to WebAssembly and run in a Web Worker so the board never freezes. The engine is made to pause before it moves, so it looks like it is thinking.

Six opponents, from a careless beginner to a strong master. Four piece sets, including a plain Unicode set for maximum clarity. Two themes: plain paper, or phosphor-green CRT with scanlines. An evaluation bar and a captured-pieces row track the battle. Positions load from the URL (?fen=…). Games export to PGN. Everything is stored in the browser, and it works offline after the first load.

REQUIREMENTS

Node 18 or newer, and npm.

BUILD

npm install npm run build

The result is written to ./dist as plain static files. Copy it to any web server; there is nothing else to configure.

DEVELOP

npm run dev

Starts Vite on http://localhost:5173 with hot reload.

DEPLOY

With PM2 and the included ecosystem file:

npm run build pm2 start ecosystem.config.cjs

This serves ./dist on port 17393. Or serve ./dist with anything else you already have (nginx, Apache, a static host). No special headers needed.

USAGE

ENGINE

The computer opponent is Stockfish (https://stockfishchess.org), licensed under the GNU GPL v3. Its files live in public/stockfish.

LICENSE

GPL-3.0-or-later. See LICENSE.

Copyright © 2026 Pablo Murad pablomurad@pm.me

clone
git clone https://code.pablomurad.com/emchess.git