eric pushed to main at eric/waving-hands 2026-10-16 23:07:42 +00:00
f98bfba107 The host has a hand on the other seats: once the duel begins, Seats makes a transfer phrase for another wizard's seat, which gives it a new token when claimed, and gives the seat of a wizard who cannot go on to a bot, which duels the turn it owes at once and keeps gestures already sealed; the wizard's token opens nothing while it stands in, their page goes to the gallery with the reason and a claim box, the roster says a bot duels for them, and a rematch holds their seat without the stand-in; the server pings every socket and closes one a dead browser left open
eric pushed to main at eric/game-kit 2026-10-16 23:07:42 +00:00
09a8b675ad The host has a hand on the other seats: once the game begins, Seats makes a transfer phrase for another person's seat, which gives it a new token when claimed, and gives the seat of a player who cannot go on to a bot, which plays the move the seat owes at once and speaks nothing in their name; the person'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 stand-in; the server pings every socket and closes one a dead browser left open
eric pushed to main at eric/hnefatafl 2026-10-16 23:07:42 +00: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 pushed to main at eric/wizwar6e 2026-10-16 21:06:36 +00:00
c984bb4b56 A crash report's strings reach the log on one line: anyone may post one, and a line break could otherwise forge another log line
eric pushed to main at eric/wizwar6e 2026-10-16 21:04:27 +00:00
956c908867 Chromium's crash reports reach the server, which logs each and files it in Sentry as a warning, and the page's own errors name the room and seat and leave extensions' failures out
eric pushed to main at eric/wizwar6e 2026-10-16 19:55:28 +00:00
9a1c98ca55 The host's phrase button says it makes a transfer phrase, and its tooltip says who it is for and how the player uses it
eric pushed to main at eric/wizwar6e 2026-10-16 19:44:25 +00:00
4b7e05713d The host can give a stuck player's seat to the clockwork and make a phrase that brings a seat back, and a socket in a background tab no longer drops every minute
eric pushed to main at eric/wizwar6e 2026-10-14 21:40:07 +00:00
7ef0c1bc14 On a phone, the table fits the screen and another wizard's turn says whose it is
eric pushed to main at eric/wizwar6e 2026-10-14 00:16:04 +00:00
5ea0d4fdec The keeper can bring back a seat a browser lost: a reseat line on the ledger gives that wizard's seat a new token and the old one opens nothing after, wizwar-reseat.sh on the host asks for it through a keeper door that listens on the loopback alone and opens only to a key the deploy makes once, and the link it prints carries the seat in the fragment, which leaves the address bar at once and is kept only when no seat held in this browser still opens and the server takes it; a gallery watching a game in play is told both ways back, the front page asks before forgetting a game not yet finished, and the server's tests now run with the rest
eric pushed to main at eric/waving-hands 2026-10-14 00:16:03 +00:00
a673ea9766 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
21d9c12f48 The keeper's door asks for a key only root and the waving-hands 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
b51934ecd6 The keeper can bring back a seat a browser lost: a new token on the ledger, the old one refused and any phrase it minted voided, and a link that carries it in the fragment, minted by waving-hands-reseat.sh through a /keeper door Caddy does not proxy; the join page keeps a linked seat only once the server takes it and never over a seat that still opens, a watcher at a duel in play is told both ways back, the hall asks before forgetting a duel in play, and the server's rooms have tests of their own
Compare 3 commits »
eric pushed to main at eric/game-kit 2026-10-14 00:16:02 +00:00
c439c15e36 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
7b4080c91f 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
4721b0e97b A seat a link carries is kept only once the server takes it, and never over a seat this browser holds that still opens, so a link someone else sends cannot take a working seat away
ecab471122 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 <slug>-reseat.sh through a /keeper door Caddy does not proxy; a spectator at a game in play is told both ways back, and the hall asks before forgetting a game in play
Compare 4 commits »
eric pushed to main at eric/hnefatafl 2026-10-14 00:16:02 +00: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
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
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
Compare 3 commits »
eric pushed to main at eric/wizwar6e 2026-10-13 13:30:05 +00:00
1b9acfd7c4 The family list carries the kit's current pitches
eric pushed to main at eric/hnefatafl 2026-10-13 13:30:01 +00:00
4b6cf01949 The family list carries the kit's current pitches
eric pushed to main at eric/waving-hands 2026-10-13 13:30:00 +00:00
fbe110a7bb The family list carries the kit's current pitches
eric pushed to main at eric/wizwar6e 2026-10-13 13:26:20 +00:00
6f86076712 The hosting line says what it promises: chipping in unlocks nothing, and nothing is held back without it
636d97d5c1 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
Compare 2 commits »
eric pushed to main at eric/game-kit 2026-10-13 13:26:20 +00:00
98e61dc756 The hosting line says what it promises: chipping in unlocks nothing, and nothing is held back without it
60435fef84 The hall keeps the night on the shared host: one job runs every game's rollup and backup and checks in with Sentry once for each
87c2215e5f The hall's cards say who plays on one line and where the game came from on a quieter one, with a word for newcomers under the intro
7301e98802 The hall's Waving Hands card shows the duel in hands, not letters
c162625d51 The hall's cards name each game's house player and lead with "Play Dip →", Waving Hands shows its gesture grid, and the small text reads at 4.5:1
Compare 5 commits »
eric pushed to main at eric/hnefatafl 2026-10-13 13:26:19 +00:00
2b76b9bd9b The hosting line says what it promises: chipping in unlocks nothing, and nothing is held back without it
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
Compare 2 commits »
eric pushed to main at eric/waving-hands 2026-10-13 13:26:18 +00:00
6572a1ad92 The hosting line says what it promises: chipping in unlocks nothing, and nothing is held back without it
30abb71e26 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
Compare 2 commits »
eric pushed to main at eric/game-kit 2026-10-11 15:40:18 +00:00
c2582a4822 The hall's Dip card shows the board as it is drawn now, real coastlines and each power's lands in its color, cropped so all seven powers fit