Eric WagonerandClaude Opus 5.5 6970babc7e A link counts as shared when a preview app fetches a page, not when Meta's crawlers or robots.txt checks pass by
meta-externalagent and meta-webindexer render the whole site for Meta's
index and were counted as Facebook previews, one per script and stylesheet;
facebookexternalhit's robots.txt checks and Discord's refetches of a card
image it already holds counted too. Google Messages previews are named as
such rather than as iMessage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwFKMuQnPAEHJ5yA1q4orh
2026-11-06 20:02:44 -05:00
2026-09-23 12:45:44 -04:00

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.

S
Description
Hnefatafl, the Viking board game, in the browser: Copenhagen rules and Linnaeus's Tablut, on the game kit.
Readme
1.4 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 47%
Svelte 36.9%
Shell 10.5%
Python 2.8%
CSS 1.3%
Other 1.5%