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
This commit is contained in:
Eric Wagoner
2026-09-23 21:04:30 -04:00
co-authored by Claude Fable 5.1
parent bcbd1c4429
commit 38e5f8b28d
3 changed files with 21 additions and 9 deletions
+7 -3
View File
@@ -1,6 +1,6 @@
<script lang="ts">
import { goto } from '$app/navigation';
import { otherGames, type FamilyGame } from '$lib/family';
import { loadFamily, type FamilyGame } from '$lib/family';
import { allSeats, api, doubtSeat, forgetSeat, rememberSeat, ServerError, trustSeat, type Report, type Tally } from '$lib/game/client';
import { Duel, duel, NAME_MAX, playerName, rememberName } from '$lib/game/duel.svelte';
import { unreadTalk } from '$lib/game/talk';
@@ -21,8 +21,12 @@
const hours = (minutes: number) => (minutes < 90 ? `${minutes} minutes` : `${Math.round(minutes / 60)} hours`);
/** The other games of Kestrel's Hall, for the about panel. */
let family = $state<FamilyGame[]>([]);
let hall = $state('');
$effect(() => {
void otherGames('waving-hands').then((g) => (family = g));
void loadFamily('waving-hands').then((f) => {
family = f.games;
hall = f.hall;
});
});
/** Reports this browser's seats have filed, with the keeper's replies. */
let reports = $state<Report[]>([]);
@@ -314,7 +318,7 @@
</p>
{/if}
{#if family.length}
<h3>More games in Kestrel's Hall</h3>
<h3>More games in {#if hall}<a href={hall}>Kestrel's Hall</a>{:else}Kestrel's Hall{/if}</h3>
<ul class="family">
{#each family as g (g.slug)}
<li><a href={g.url}>{g.name}</a>: {g.pitch} <span class="muted">{g.players} players; {g.origin}.</span></li>