extremely claude-assisted go game based on atproto! working on cleaning up and giving a more unique design, still has a bit of a slop vibe to it.

Fetch moves/passes from PDS listRecords, not Constellation backlinks

Constellation backlinks only return record refs (did, collection, rkey),
not the full record values. Use listRecords on both players' PDS repos
and filter by game URI instead. Constellation is still used for move
counts on the home page (which only needs the total field).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+10 -21
+10 -21
src/routes/game/[id]/+page.svelte
··· 6 6 import { 7 7 resolveDidToHandle, 8 8 fetchGameRecord, 9 - fetchGameMoves, 10 - fetchGamePasses, 11 9 fetchGameActionsFromPds, 12 10 } from '$lib/atproto-client'; 13 11 import type { MoveRecord, PassRecord, GameRecord } from '$lib/types'; ··· 100 98 } 101 99 } 102 100 103 - // Fetch moves and passes from Constellation 104 - try { 105 - const [fetchedMoves, fetchedPasses] = await Promise.all([ 106 - fetchGameMoves(data.gameAtUri), 107 - fetchGamePasses(data.gameAtUri), 108 - ]); 109 - moves = fetchedMoves; 110 - passes = fetchedPasses; 111 - } catch { 112 - // Fallback: fetch from both players' PDS repos 113 - console.warn('Constellation unavailable, falling back to PDS listRecords'); 114 - const result = await fetchGameActionsFromPds( 115 - data.creatorDid, 116 - data.playerTwoDid, 117 - data.gameAtUri 118 - ); 119 - moves = result.moves; 120 - passes = result.passes; 121 - } 101 + // Fetch moves and passes from both players' PDS repos. 102 + // Constellation backlinks don't embed record values, so we use 103 + // listRecords on each player's PDS and filter by game URI. 104 + const result = await fetchGameActionsFromPds( 105 + data.creatorDid, 106 + data.playerTwoDid, 107 + data.gameAtUri 108 + ); 109 + moves = result.moves; 110 + passes = result.passes; 122 111 123 112 loading = false; 124 113 }