Off-BGG games become local library citizens
An unmatched title that's a REAL game BGG doesn't have dead-ended: manual id or reject. The RPG local-citizen pattern generalizes to a human decision — review (web + TUI, key l) gains "not on BGG — keep locally": match_status "local" clears any BGG identity, diff routes it to local_only (never queued), and enrich synthesizes a library entry from the game's own photo reads (name, year, publisher cue — no API call, so even a blocked run lands them; pruning keeps local keys). Library and Titles show a "local — not on BGG" chip; Help's legend, review description, and shortcuts cover the new verb, distinguishing it from reject (bad read / not a game). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
This commit is contained in:
co-authored by
Claude Fable 5
parent
59f4b8c43c
commit
e187ed4f3f
@@ -407,6 +407,14 @@ def test_rpgitem_rows_are_local_only_never_queued():
|
||||
assert result.recognized == 1 # RPGs aren't counted against the queue
|
||||
|
||||
|
||||
def test_local_rows_are_library_citizens_never_queued():
|
||||
local = {**_match("Obscure Homebrew", ""), "match_status": "local"}
|
||||
result = compute_diff([local, _match("Catan", "13")], [])
|
||||
assert result.local_only == ["Obscure Homebrew"]
|
||||
assert [r["bgg_id"] for r in result.to_add] == ["13"]
|
||||
assert result.pending == [] # decided, not waiting
|
||||
|
||||
|
||||
def test_split_copies_become_extra_collection_entries():
|
||||
# three vetoed per-photo copies, one owned: one claims the copy, the
|
||||
# other two are queued as new entries
|
||||
|
||||
Reference in New Issue
Block a user