Commit Graph
26 Commits
Author SHA1 Message Date
Eric WagonerandClaude Opus 5.5 f78ff3ef8c The hall puts games in play first for someone coming back, finished ones further down, and reads a game looking up as looking, not unreachable
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:25:07 -04:00
Eric WagonerandClaude Opus 5.5 8ba02006ca The server's doors hold: a ceiling on a seat's actions, twenty sockets an address, silent sockets closed, slow requests cut off, and rooms kept beside the project wherever it is started
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:20:55 -04:00
Eric WagonerandClaude Opus 5.5 d97d709212 A game may count its own lines from every game begun, not only those finished
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:20:03 -04:00
Eric WagonerandClaude Opus 5.5 403232087d Bots that play on alone do it at a pace to watch, a round every two seconds after the first few, and a seat may hurry them to the end
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:19:38 -04:00
Eric WagonerandClaude Opus 5.5 99a0b23f59 A game may give its bots words: they speak as a round opens and when spoken to, remember by notes nobody sees, and read the talk when they move
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:18:46 -04:00
Eric WagonerandClaude Opus 5.5 8c99126aee A table may ask each seat to rank its choices before the deal, in secret; the start line keeps the rankings and create reads them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:17:18 -04:00
Eric WagonerandClaude Opus 5.5 eca8c92964 Table talk may be private, to the seats named and never the gallery, and a line says the round it was said in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:16:08 -04:00
Eric WagonerandClaude Opus 5.5 8e35d3a3a6 A seat's view carries its own move in waiting and its move in the last round it played
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:15:05 -04:00
Eric WagonerandClaude Opus 5.5 927e49cf79 A game may take drafts: an input it does not call settled can be replaced, and the round waits for settled ones
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:14:33 -04:00
Eric WagonerandClaude Opus 5.5 6133a2469a A table's options and its size are read one way, in spec.ts, by the server, the tally and the replay; a game may seat fewer for some options
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-29 12:13:54 -04:00
Eric WagonerandClaude Opus 5.5 2810076677 The template's about panel is a TabbedDialog, opened by its address
About.svelte goes; #about opens the panel through the router, so it
closes and reopens cleanly and a tab can be linked to.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-28 14:49:39 -04:00
Eric WagonerandClaude Opus 5.5 6039b6c248 Tabs.svelte: the about panel's strip, shared with long reading pages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-28 13:52:15 -04:00
Eric WagonerandClaude Opus 5.5 813d111bbd The about panel is a dialog of tabs, as Wiz-War's is, not a wall of text
"About this game — a labor of love" opens a dialog with the game, the
tally, more games and a way to send word each on a tab of its own
(About.svelte, shared through the kit), instead of one long fold at the
foot of the hall. Arrow keys walk the tabs; Escape or a click outside
closes it; a link to #about opens it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-27 20:40:39 -04:00
Eric WagonerandClaude Opus 5.5 7268c3f1ae Kestrel's Hall moves into the kit and onto the shared host
The landing page was a static page in the blog, served by the Yunohost
box through an nginx drop-in and an SSOwat rule. It now lives in
gamehall/site beside family.json, is served by Caddy on the shared host
with the games (gamehall/gamehall.caddy), and publishes with
gamehall/deploy.sh. Its share image is its own, not the blog's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-26 12:11:00 -04:00
Eric WagonerandClaude Opus 5.5 a9c0f68cb1 Conventions: create receives the table options
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-26 00:35:35 -04:00
Eric WagonerandClaude Opus 5.5 7f340698d5 A move names the round it was made for; a stale one is refused
The room counts rounds played and sends the count in its view; a page
sends it back with each move, and the server refuses a move whose count
is behind (a slow connection, a second click, a stale tab), or that has
no count at all (an old page, told to reload). Before, such a move was
taken as the move for the next round. Found in Dip's acceptance run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-25 22:19:43 -04:00
Eric WagonerandClaude Opus 5.5 cd9d14ec35 The voice: every game speaks in its own world
Conventions gain a section on in-game language: an image with every
fact, the fact exact, unfolding effects told a turn at a time and naming
the turn they end on, our own words rather than an older version's, and
chronicle wording shipped without a rules revision. new-game.sh points
at it, and the demo game's lines follow it. Born in Waving Hands'
atmospheric chronicle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
2026-09-24 23:57:59 -04:00
Eric WagonerandClaude Fable 5.1 bce01a013a The family list knows the hall: about panels link to gamehall.kestrelsnest.social, and a new game gets a card there
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-23 21:04:28 -04:00
Eric WagonerandClaude Fable 5.1 2d78ab6b3f The about panel says the games are free and where the hosting tip jar is
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-23 20:25:02 -04:00
Eric WagonerandClaude Fable 5.1 3825dfb44c Preferences: a panel of what the browser remembers about its player, with the kit's motion and confirm-move settings, a game's own declarations, and the host's last table options as defaults
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-23 18:54:22 -04:00
Eric WagonerandClaude Fable 5.1 7aa05536c2 The tally: what the ledgers add up to, in every game's about panel, with the game's own lines through GameSpec.tally
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-23 18:16:41 -04:00
Eric WagonerandClaude Fable 5.1 63bd154798 Table options: the host's choices when opening a table, declared by the game, recorded on the room line
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-23 12:45:42 -04:00
Eric WagonerandClaude Fable 5.1 6dce3b82f0 Rematches, seats that travel by phrase, the keeper's bell with the hour where they live, the host's leave for the gallery to talk, and seats doubted before they are dropped
Ported from Wiz-War, where each earned its keep. All on the ledger:
galleryTalk, challenge and rematch lines, gallery chat signed with a
name, held seats on a rematch table's room line. Twenty-two protocol
checks against a scratch server and a replay after restart.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
2026-09-23 12:19:03 -04:00
Eric WagonerandClaude Fable 5.1 c934bbe434 Hashed seat tokens, ledgered inputs, refusable moves, disk-checked codes, host-only bots, and a drift script
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
2026-09-23 12:07:53 -04:00
Eric WagonerandClaude Fable 5.1 ddb18cb08a The host begins at every table size and may send a bot away
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
2026-09-23 11:21:42 -04:00
Eric WagonerandClaude Fable 5.1 1cd24e3ddd The game kit: the shared infrastructure of Wiz-War and Waving Hands as a template
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
2026-09-23 11:00:05 -04:00