Commit Graph

  • 82107f73eb The keeper can say a word at a table through the keeper's door, signed as the keeper and heard whether or not the gallery may talk, so a call answered too late, after the game began, can still be answered; <slug>-say.sh sends it main Eric WagonerandClaude Opus 5.5 2026-10-20 13:21:24 -04:00
  • 21de94869d The host is asked before beginning while a seat is still held for someone on their way, since the seat goes once the game begins; and the gallery says the game began before they arrived, so whoever was called and finds the table under way knows why there is no seat Eric WagonerandClaude Opus 5.5 2026-10-20 13:04:28 -04:00
  • f003301541 The host has a hand on the other seat: once the game begins, Seats makes a transfer phrase for the other player, which gives the seat a new token when claimed, and gives the seat of a player who cannot go on to a housecarl, who plays the move it owes at once; the player's token opens nothing while it stands in, their page goes to the gallery with the reason and a claim box, and a rematch holds their seat without the housecarl; the server pings every socket and closes one a dead browser left open Eric WagonerandClaude Opus 5.5 2026-10-16 19:04:33 -04:00
  • a2d3841cfe A seat link replaces a held seat only when the server refuses the held token, not when the connection drops, so a link cannot take a working seat away on a bad connection Eric WagonerandClaude Opus 5.5 2026-10-13 18:32:02 -04:00
  • a2bdf7a825 The keeper's door asks for a key only root and the game's user can read, so another service on the host cannot re-seat anyone; the deploy makes the key once and the reseat script sends it from a file descriptor; and a seat link is taken out of the address bar with the browser's own call, since the page reads it before the router starts Eric WagonerandClaude Opus 5.5 2026-10-13 18:28:28 -04:00
  • 8bbc41cc87 The keeper can bring back a seat a browser lost: a new token on the ledger, the old one refused, and a link that carries it in the fragment, minted by hnefatafl-reseat.sh through a /keeper door Caddy does not proxy and that turns away anything Caddy forwarded; the join page takes a linked seat only once the server accepts it and never over a seat this browser holds that still opens, a spectator at a game in play is told both ways back, the hall asks before forgetting a game in play, and the server's tests now run with the rest Eric WagonerandClaude Opus 5.5 2026-10-13 18:24:31 -04:00
  • 4b6cf01949 The family list carries the kit's current pitches Eric WagonerandClaude Opus 5.5 2026-10-13 09:29:58 -04:00
  • 2b76b9bd9b The hosting line says what it promises: chipping in unlocks nothing, and nothing is held back without it Eric WagonerandClaude Opus 5.5 2026-10-13 09:23:44 -04:00
  • d32488b803 The nightly rollup and backup say by their exit status whether they managed, and the deploy leaves the cron file off a host the hall schedules Eric WagonerandClaude Fable 5.1 2026-10-12 10:07:06 -04:00
  • 50178f0105 The family list carries the new taglines Eric WagonerandClaude Opus 5.5 2026-10-11 10:34:39 -04:00
  • 6f774780df The about panel's tabs are Origins and Games so far Eric WagonerandClaude Opus 5.5 2026-10-11 10:34:09 -04:00
  • 9afe9333c2 An editing pass over the words around the game Eric WagonerandClaude Opus 5.5 2026-10-11 10:25:14 -04:00
  • 7f66be8016 A credibility pass over ee5690e..HEAD: traffic.py parses each request once and counts visits one way, the deploy notes and skills agree with the scripts, and a few edit leftovers in the hall are tidied Eric WagonerandClaude Opus 5.5 2026-10-11 10:17:01 -04:00
  • 57ae338cdb The rollup and the backup check in once, when they end, with the run's duration Eric WagonerandClaude Opus 5.5 2026-10-10 17:44:43 -04:00
  • cc9d7330aa Pages show the hall-wide notice, when there is one, at the top Eric WagonerandClaude Opus 5.5 2026-09-29 13:03:36 -04:00
  • 1d5ec9931a The tally's comment describes the tally, not where its look came from Eric WagonerandClaude Opus 5.5 2026-09-28 14:47:01 -04:00
  • 8be3963b22 dev:all stops both sides when the server's port is taken Eric WagonerandClaude Opus 5.5 2026-09-28 13:43:15 -04:00
  • d1f3966c0b npm run dev:all starts the server and the site together Eric WagonerandClaude Opus 5.5 2026-09-28 12:37:56 -04:00
  • e771f98c3e The about panel no longer credits its making Eric WagonerandClaude Opus 5.5 2026-09-27 20:58:55 -04:00
  • fcf25ff4e5 The tally is told as Wiz-War tells it: the game's own story on cards, then the ledgers in detail Eric WagonerandClaude Opus 5.5 2026-09-27 20:48:07 -04:00
  • 2d2a82034e The about panel is a dialog of tabs, as Wiz-War's is, not a wall of text Eric WagonerandClaude Opus 5.5 2026-09-27 20:40:41 -04:00
  • 7f19ec3ea9 Traffic counts what matters: rooms opened from the site, where links were shared, scanners and monitors as bots Eric WagonerandClaude Opus 5.5 2026-09-27 09:59:38 -04:00
  • e3fcb19a22 A socket's own error closes that socket, not the server Eric WagonerandClaude Opus 5.5 2026-09-27 01:21:43 -04:00
  • 7a8c89439c The space after Back to your game is kept Eric WagonerandClaude Opus 5.5 2026-09-25 22:56:48 -04:00
  • e961951f8e A move names the round it was made for; a stale one is refused Eric WagonerandClaude Opus 5.5 2026-09-25 22:19:44 -04:00
  • 010f99aa9c Hnefatafl moves to the shared hall host Eric WagonerandClaude Opus 5.5 2026-09-25 16:56:33 -04:00
  • c04e82e085 The family list knows the hall: about panels link to gamehall.kestrelsnest.social, and a new game gets a card there Eric WagonerandClaude Fable 5.1 2026-09-23 21:04:29 -04:00
  • e95a090ac0 A new table plays Tablut unless the host chooses Copenhagen Eric WagonerandClaude Fable 5.1 2026-09-23 20:28:59 -04:00
  • 32152c05f0 The about panel says the games are free and where the hosting tip jar is Eric WagonerandClaude Fable 5.1 2026-09-23 20:25:03 -04:00
  • ee5690ebda A credibility pass over the whole repo: the board's mechanics in board.ts, one copy of each helper and stylesheet rule, the kit's plumbing this game never used removed, and the ops scripts counting traffic through one parser Eric WagonerandClaude Fable 5.1 2026-09-23 20:02:45 -04:00
  • 6d041e3a63 The collection is Kestrel's Hall Eric WagonerandClaude Fable 5.1 2026-09-23 19:50:31 -04:00
  • a213a238d3 Board artwork: one component draws the game, the hall's still, and the share card, with gradients on the pieces, plank joins and inlaid corners on the oak, and the stone as it was Eric Wagoner 2026-09-23 19:32:15 -04:00
  • 145667ea0d The guide keeps the room too, every cross-link carries it, and a move picked from the record brings the board into view on a phone Eric WagonerandClaude Fable 5.1 2026-09-23 19:15:09 -04:00
  • c5d487edbf The Tablut board is cut in stone: mottled, chipped at a few corners, and cracked twice, as a slab from a long hall would be Eric WagonerandClaude Fable 5.1 2026-09-23 19:01:42 -04:00
  • dcfbd38ae6 The default rules and side for a new table are preferences in the panel, and the hall's selectors set the same Eric WagonerandClaude Fable 5.1 2026-09-23 18:58:51 -04:00
  • aa4f86bc56 Preferences: motion, confirming a move, coordinates on the board, and the last table choices remembered Eric WagonerandClaude Fable 5.1 2026-09-23 18:54:55 -04:00
  • 5db89edbc1 Coordinates on the board, moves in the record shown on the board, a status strip above it with the capture in words, notes under the variant selector and a still that follows it, keyboard play, and a way back to the game from the rules Eric WagonerandClaude Fable 5.1 2026-09-23 18:48:53 -04:00
  • bac7182915 The tally in the hall's about panel, with the board played and how each game was won Eric WagonerandClaude Fable 5.1 2026-09-23 18:16:32 -04:00
  • c553902d8a The opponent the hall seats is a housecarl, from the Old Norse húskarl Eric WagonerandClaude Fable 5.1 2026-09-23 17:19:06 -04:00
  • 8da83e64b0 app.html links the touch icon Eric WagonerandClaude Fable 5.1 2026-09-23 15:49:03 -04:00
  • 093d742593 A share card and a touch icon drawn from the board Eric WagonerandClaude Fable 5.1 2026-09-23 15:48:07 -04:00
  • 4f8bbbc3cb Pieces slide, captures fade, and the bot's reply follows yours after a beat, so an exchange can be watched Eric WagonerandClaude Fable 5.1 2026-09-23 15:03:33 -04:00
  • eeecfa1326 The rail keeps the last six moves, with who moved and what was taken, so a capture the bot answers at once is not lost Eric WagonerandClaude Fable 5.1 2026-09-23 15:01:29 -04:00
  • 7aed0c6ce9 A bot playing the attackers opens the game at once, and a restored table plays any owed bot move Eric WagonerandClaude Fable 5.1 2026-09-23 14:37:41 -04:00
  • 3aeb1ee99e The rules page names the texts it follows: the Copenhagen club's rules and Linnaeus's manuscript in Salmi's reading; perpetual repetition loses for the defenders, as Copenhagen has it Eric WagonerandClaude Fable 5.1 2026-09-23 13:51:25 -04:00
  • 32844a5976 The ledger gate replays with the table's options Eric WagonerandClaude Fable 5.1 2026-09-23 13:42:03 -04:00
  • 9e672e48b4 The family list with Hnefatafl on it Eric Wagoner 2026-09-23 13:38:56 -04:00
  • fc62034290 Production: the tafl droplet at 209.97.148.244, tafl.kestrelsnest.social, and the Sentry project Eric WagonerandClaude Fable 5.1 2026-09-23 13:17:09 -04:00
  • 0d2f54fe02 Hnefatafl: Copenhagen and Tablut, a board that ages with the older game, and a bot that looks three moves ahead Eric WagonerandClaude Fable 5.1 2026-09-23 13:06:23 -04:00
  • ed1dcad259 Begin Hnefatafl from the game kit Eric Wagoner 2026-09-23 12:45:44 -04:00