From 75162c3e2e24a10fcea9267eb664e957ec774ccc Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Sun, 9 Aug 2026 14:24:25 -0400 Subject: [PATCH] The suggestion pills return: the client learns the object shape MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eric: "Everything says no matching openings yet. How would I get started?" — because the client still mapped suggestion STRINGS while the server sent {id, reunites} objects. The edit teaching the pills the new shape (and the ♥ reunification marker) died in a script abort during the ranking batch, and the retry re-applied everything except it; the arrangement screenshot that "verified" the batch predated the ranking change, so no check ever looked at pills until now. Verified against the real library this time: 296 pills, zero false no-matching rows. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g --- src/bggpipe/templates/pages/shelves.html | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/bggpipe/templates/pages/shelves.html b/src/bggpipe/templates/pages/shelves.html index 082724e..8ecd073 100644 --- a/src/bggpipe/templates/pages/shelves.html +++ b/src/bggpipe/templates/pages/shelves.html @@ -143,10 +143,15 @@ function unitRows(openings) { function unshelvedRow(g) { const dims = g.measured ? "" : ` unmeasured`; - const gos = g.suggestions.map(id => { - const o = openingById(id); - return o ? `` : ""; + const gos = g.suggestions.map(s => { + const o = openingById(s.id); + if (!o) return ""; + const why = s.reunites + ? "its series-mates live here — fits, with room" + : "fits, with room to spare"; + return ``; }).join(""); const gosOut = gos || (g.measured ? `no matching openings yet` : "");