"remove — not a game" admits its second job
Eric's observation: the button also removes duplicate reads — the same physical box read differently from two photos, leaving two lines for one copy — and its label denied that use existed. Now "remove this line", with the hover title and the confirm dialog naming both legitimate reasons and pointing the opposite case (one line, several real boxes) at split. Help's remove entry documents the duplicate- read use and which line to remove (the worse read; the survivor keeps its own photos). 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
1d9baff989
commit
3566a62f2d
@@ -41,7 +41,7 @@
|
|||||||
<p><b>pick edition</b> — a matched game with no legible edition cues stays version-less by design (never guess) — but you know which printing your box is. This fetches the game's complete version list into a Review ballot; pick yours there.</p>
|
<p><b>pick edition</b> — a matched game with no legible edition cues stays version-less by design (never guess) — but you know which printing your box is. This fetches the game's complete version list into a Review ballot; pick yours there.</p>
|
||||||
<p><b>wrong match</b> (inside the edit panel) — an auto-match landed on the wrong game (same-name impostors happen). This clears the match, re-searches immediately, and returns the title to Review as a fresh ballot of candidates (including same-named sibling editions); manual-id entry is there too for games BGG's search can't find. Note BGG sometimes splits one game's lineage across entries — Wiz-War's early editions and its FFG remake are separate games — so a copy whose edition isn't on the ballot may belong to the sibling entry.</p>
|
<p><b>wrong match</b> (inside the edit panel) — an auto-match landed on the wrong game (same-name impostors happen). This clears the match, re-searches immediately, and returns the title to Review as a fresh ballot of candidates (including same-named sibling editions); manual-id entry is there too for games BGG's search can't find. Note BGG sometimes splits one game's lineage across entries — Wiz-War's early editions and its FFG remake are separate games — so a copy whose edition isn't on the ballot may belong to the sibling entry.</p>
|
||||||
<p><b>add a game</b> (top of the Titles page) — a game no photo shows: an expansion stored inside a base box, a game away from the shelves. It joins the list like any read (BGG wants base game and expansion as separate collection entries, so boxes that hold both need this for the hidden half), and if a later photo shows it, the sighting merges instead of duplicating.</p>
|
<p><b>add a game</b> (top of the Titles page) — a game no photo shows: an expansion stored inside a base box, a game away from the shelves. It joins the list like any read (BGG wants base game and expansion as separate collection entries, so boxes that hold both need this for the hidden half), and if a later photo shows it, the sighting merges instead of duplicating.</p>
|
||||||
<p><b>remove</b> (inside the edit panel) — for lines that shouldn't exist at all: a book read as a game, box art misread as a title. The line and its matches are discarded and stay gone. This is different from <i>reject</i> on the Review page, which keeps the line visible as "no BGG match" — right for real games BGG doesn't know.</p>
|
<p><b>remove</b> (inside the edit panel) — for lines that shouldn't exist at all: a book read as a game, box art misread as a title, or a <i>duplicate read</i> — the same physical copy read differently from two photos, leaving two lines for one box (remove the worse read; the survivor keeps its own photos). This is different from <i>reject</i> on the Review page, which keeps the line visible as "no BGG match" — right for real games BGG doesn't know. And the mirror case — ONE line that's really several physical copies — wants <b>split</b>, not remove.</p>
|
||||||
<p>Undo: each decision is one record in <code>data/title_edits.json</code>, <code>data/title_splits.json</code>, or <code>data/title_removals.json</code> — delete the record and the next rebuild restores the old state.</p>
|
<p>Undo: each decision is one record in <code>data/title_edits.json</code>, <code>data/title_splits.json</code>, or <code>data/title_removals.json</code> — delete the record and the next rebuild restores the old state.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,9 @@ function editorRow(c) {
|
|||||||
${c.bgg_id && ["auto", "approved"].includes(c.status)
|
${c.bgg_id && ["auto", "approved"].includes(c.status)
|
||||||
? `<button type="button" class="wrongmatch danger">wrong match — re-search</button>`
|
? `<button type="button" class="wrongmatch danger">wrong match — re-search</button>`
|
||||||
: ""}
|
: ""}
|
||||||
<button type="button" class="removetitle danger">remove — not a game</button>
|
<button type="button" class="removetitle danger"
|
||||||
|
title="not a game, a duplicate read of a copy already listed, or otherwise doesn't belong">
|
||||||
|
remove this line</button>
|
||||||
</span>
|
</span>
|
||||||
<span class="edithint">saving re-queues this title for resolve with the corrected data</span>
|
<span class="edithint">saving re-queues this title for resolve with the corrected data</span>
|
||||||
</form>
|
</form>
|
||||||
@@ -176,6 +178,9 @@ document.getElementById("catbody").addEventListener("click", async e => {
|
|||||||
if (rm) {
|
if (rm) {
|
||||||
const f = rm.closest("form.editform");
|
const f = rm.closest("form.editform");
|
||||||
if (!confirm(`Remove "${f.dataset.title}" from the titles list? ` +
|
if (!confirm(`Remove "${f.dataset.title}" from the titles list? ` +
|
||||||
|
`Right for a line that shouldn't exist: not a game, or a duplicate ` +
|
||||||
|
`read of a copy that's already its own line. ` +
|
||||||
|
`(One line for several REAL boxes? Use split instead.) ` +
|
||||||
`Re-running extract won't bring it back — the removal is saved ` +
|
`Re-running extract won't bring it back — the removal is saved ` +
|
||||||
`in data/title_removals.json (delete its record there to undo).`)) return;
|
`in data/title_removals.json (delete its record there to undo).`)) return;
|
||||||
const res = await apiPost("/api/remove-title", {
|
const res = await apiPost("/api/remove-title", {
|
||||||
|
|||||||
Reference in New Issue
Block a user