The hall, the guide, the rules page, the lobby and the report slip lose most of their semicolons, the statement-colon lines and the guide narrating itself. The tagline is one sentence, 'a labor of love' is gone from the about link, and the shared parts read as Waving Hands' do. Corrected along the way: the about panel no longer says players are shown only what the rules let them see (nothing in hnefatafl is hidden); the game was played for centuries before chess, not a thousand years; the report slip's example no longer mentions points; and a watcher is no longer told that "your defender" was taken. The move story reads "Ada moved an attacker from d1 to d4" rather than "Ada: an attacker...". The end-of-game reasons are unchanged: ledgers record them verbatim. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
Hnefatafl
The Viking board game, in the browser: the attackers must take the king, the king must reach the edge. Tablut, the nine-by-nine game Linnaeus wrote down in 1732, by default, on a board that shows its age; Copenhagen rules on the eleven-by-eleven board, where the king needs a corner, as an option.
Built on the game kit: src/lib/game/ is the game (rules as data in
rules.ts, the board's mechanics in board.ts, the engine in index.ts,
a short alpha-beta bot in bot.ts), src/lib/components/Board.svelte is
the board, and everything else is the kit's hall, tables, gallery, ledgers,
reports desk and ops tools. docs/conventions.md is the house style; the
guide here departs from it in one way, walking the page in words and one
drawn figure rather than screenshots.
npm install && (cd server && npm install)
npm run dev:all # server and site together; Ctrl-C stops both
npm run server # the game server on port 8789
npm run dev -- --host
Tests: npm test. Deploy: deploy/deploy.sh <ip> after deploy/README.md.