The collection is Kestrel's Hall

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
Eric Wagoner
2026-09-23 19:51:06 -04:00
co-authored by Claude Fable 5.1
parent 9d087ccaa1
commit c79fdb4adb
4 changed files with 14 additions and 6 deletions
+9 -1
View File
@@ -1,5 +1,5 @@
{ {
"family": "the Kestrel's Nest", "family": "Kestrel's Hall",
"games": [ "games": [
{ {
"slug": "wizwar", "slug": "wizwar",
@@ -16,6 +16,14 @@
"pitch": "Duelling wizards. Two hands each. The right run of gestures is a spell.", "pitch": "Duelling wizards. Two hands each. The right run of gestures is a spell.",
"players": "2 to 12", "players": "2 to 12",
"origin": "Richard Bartle's pencil-and-paper duel, 1977" "origin": "Richard Bartle's pencil-and-paper duel, 1977"
},
{
"slug": "hnefatafl",
"name": "Hnefatafl",
"url": "https://tafl.kestrelsnest.social",
"pitch": "The Viking board game. One king, one throne, four corners, and a ring of attackers closing in.",
"players": "2",
"origin": "the Norse tafl game, reconstructed from Linnaeus's 1732 notes; Copenhagen rules or Tablut"
} }
] ]
} }
+2 -2
View File
@@ -27,7 +27,7 @@
net.startGamePolling(); net.startGamePolling();
let name = $state(prefs.wizardName); let name = $state(prefs.wizardName);
/** The other games of the Kestrel's Nest, for the front page. */ /** The other games of Kestrel's Hall, for the front page. */
let family = $state<FamilyGame[]>([]); let family = $state<FamilyGame[]>([]);
$effect(() => { $effect(() => {
void otherGames("wizwar").then((g) => (family = g)); void otherGames("wizwar").then((g) => (family = g));
@@ -2568,7 +2568,7 @@
</a> </a>
<a class="about-link clips-link" href="/clips">watch clips from the labyrinth</a> <a class="about-link clips-link" href="/clips">watch clips from the labyrinth</a>
{#if family.length} {#if family.length}
<p class="family-line">Also at the Kestrel's Nest: <p class="family-line">Also in Kestrel's Hall:
{#each family as g, i (g.slug)}{i > 0 ? ", " : " "}<a href={g.url} title={g.pitch}>{g.name}</a>{/each}</p> {#each family as g, i (g.slug)}{i > 0 ? ", " : " "}<a href={g.url} title={g.pitch}>{g.name}</a>{/each}</p>
{/if} {/if}
</div> </div>
+2 -2
View File
@@ -128,7 +128,7 @@
if (initialAnchor) void jumpTo(initialAnchor); if (initialAnchor) void jumpTo(initialAnchor);
else if (bodyEl) bodyEl.scrollTop = helpState.scroll[tab] ?? 0; else if (bodyEl) bodyEl.scrollTop = helpState.scroll[tab] ?? 0;
}); });
/** The other games of the Kestrel's Nest, for the about page. */ /** The other games of Kestrel's Hall, for the about page. */
let family = $state<FamilyGame[]>([]); let family = $state<FamilyGame[]>([]);
$effect(() => { $effect(() => {
void otherGames("wizwar").then((g) => (family = g)); void otherGames("wizwar").then((g) => (family = g));
@@ -318,7 +318,7 @@
<a href="https://kestrelsnest.social" target="_blank" rel="noreferrer">kestrelsnest.social</a>. <a href="https://kestrelsnest.social" target="_blank" rel="noreferrer">kestrelsnest.social</a>.
</p> </p>
{#if family.length} {#if family.length}
<h3>More games at the Kestrel's Nest</h3> <h3>More games in Kestrel's Hall</h3>
<ul class="family"> <ul class="family">
{#each family as g (g.slug)} {#each family as g (g.slug)}
<li><a href={g.url}>{g.name}</a>: {g.pitch} <span class="family-note">{g.players} players; {g.origin}.</span></li> <li><a href={g.url}>{g.name}</a>: {g.pitch} <span class="family-note">{g.players} players; {g.origin}.</span></li>
+1 -1
View File
@@ -1,4 +1,4 @@
// The other games of the Kestrel's Nest, from the family list the kit keeps // The other games of Kestrel's Hall, from the family list the kit keeps
// (family.json, one copy shipped with every game), so a player who liked one // (family.json, one copy shipped with every game), so a player who liked one
// table can find the next. This game is left out of its own list. // table can find the next. This game is left out of its own list.