diff --git a/README.md b/README.md index d78f1f8..6ef44db 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ photos/ → [1 extract] → titles.json → [2 resolve] → matches.csv → [6 enrich] → games.json ``` -> **Status: battle-tested end to end.** The full pipeline has run against a live BGG account: shelf photos → 136 identified games → 62 additions and 36 version updates on a real collection. Still sensible on a first run: `--dry-run`, then `--limit 1`. +> **Status: battle-tested end to end.** The full pipeline has run against a live BGG account: shelf photos → 136 identified games → 62 additions and 36 version updates on a real collection. The result is public — [the author's collection on BGG](https://boardgamegeek.com/collection/user/ewagoner) is what this pipeline built. Still sensible on a first run: `--dry-run`, then `--limit 1`. ## Why this exists diff --git a/docs/guide.md b/docs/guide.md index 2b1cdfa..e088f44 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -40,7 +40,11 @@ Non-secret knobs live in `config.toml`: `photos_dir`, `data_dir`, the BGG rate l bggpipe web # opens http://127.0.0.1:8377/ — the whole app in the browser ``` -Seven pages — Pipeline, Photos, Titles, Review, Queue, Library, and Help — all [pictured in the tour](tour.md). Stage runs execute one at a time in the background with live output; every decision saves immediately; the pages live-follow the data files, so a stage run in another terminal shows up without a refresh. The real upload sits behind a confirmation (and behind a stub-data lock if synthetic test fixtures ever regenerate). The in-app **Help** page documents every status chip and keyboard shortcut. +Seven pages — Pipeline, Photos, Titles, Review, Queue, Library, and Help — all [pictured in the tour](tour.md). Stage runs execute one at a time in the background with live output: + +![The Pipeline page mid-extract: stage cards above a live activity log listing each photo and how many titles it yielded](screenshots/15-extract-live.png) + +Stage runs execute one at a time; every decision saves immediately; the pages live-follow the data files, so a stage run in another terminal shows up without a refresh. The real upload sits behind a confirmation (and behind a stub-data lock if synthetic test fixtures ever regenerate). The in-app **Help** page documents every status chip and keyboard shortcut. ## From your phone @@ -88,7 +92,9 @@ Tabletop RPGs aren't in BGG's board-game database — they live on RPGGeek, whic `upload` drives a real logged-in browser session against your real account, so it is deliberately careful: -- `--dry-run` logs what would happen without touching the site — always read it first, then `--limit 1`, then small batches. +- `--dry-run` logs what would happen without touching the site — always read it first, then `--limit 1`, then small batches: + + ![A dry run's output: seven pending jobs listed as "would add" lines with BGG ids, and one "would set version" line naming the exact collection entry](screenshots/14-upload-dry-run.png) - The browser runs **headed** by default — BGG's Cloudflare check blocks headless ones, and a first login may need one human click before the session is saved locally and reused. - Requests are slow on purpose (seconds between actions, per BGG's API policy); the Queue page shows exactly what will run before it runs, and `upload_log.csv` keeps a permanent record of every attempt. - `--retry-failed` re-attempts failures; `--verify` re-fetches your collection and cross-checks the log. Note that BGG's collection export can lag the website by hours — freshly-landed work may look missing to `diff`/`--verify` until it catches up. diff --git a/docs/screenshots/04.png b/docs/screenshots/04.png deleted file mode 100644 index 0df8394..0000000 Binary files a/docs/screenshots/04.png and /dev/null differ diff --git a/docs/screenshots/05.png b/docs/screenshots/05.png deleted file mode 100644 index 4768e57..0000000 Binary files a/docs/screenshots/05.png and /dev/null differ diff --git a/docs/screenshots/11-review-matches.png b/docs/screenshots/11-review-matches.png new file mode 100644 index 0000000..9d4130f Binary files /dev/null and b/docs/screenshots/11-review-matches.png differ diff --git a/docs/screenshots/12-edition-ballots.png b/docs/screenshots/12-edition-ballots.png new file mode 100644 index 0000000..71f1909 Binary files /dev/null and b/docs/screenshots/12-edition-ballots.png differ diff --git a/docs/screenshots/13-queue-pending.png b/docs/screenshots/13-queue-pending.png new file mode 100644 index 0000000..c0fd176 Binary files /dev/null and b/docs/screenshots/13-queue-pending.png differ diff --git a/docs/screenshots/14-upload-dry-run.png b/docs/screenshots/14-upload-dry-run.png new file mode 100644 index 0000000..de2d234 Binary files /dev/null and b/docs/screenshots/14-upload-dry-run.png differ diff --git a/docs/screenshots/15-extract-live.png b/docs/screenshots/15-extract-live.png new file mode 100644 index 0000000..a9bd4b3 Binary files /dev/null and b/docs/screenshots/15-extract-live.png differ diff --git a/docs/tour.md b/docs/tour.md index 87eb35e..3a8cf22 100644 --- a/docs/tour.md +++ b/docs/tour.md @@ -1,6 +1,6 @@ # A tour of bggpipe -Seven pages in one local app — Pipeline, Photos, Titles, Review, Queue, Library, and Help. Every screenshot below is the real app on the author's real shelves. (Back to the [README](../README.md) · how to use it all: the [user's guide](guide.md).) +Seven pages in one local app — Pipeline, Photos, Titles, Review, Queue, Library, and Help. Every screenshot below is the real app on the author's real shelves, and the end product is public: [the author's BGG collection](https://boardgamegeek.com/collection/user/ewagoner) is what this pipeline built. (Back to the [README](../README.md) · how to use it all: the [user's guide](guide.md).) **The Pipeline page** — every stage is a card with live counts and a Run button; blockers (missing token, stub-data lock) surface as banners, not surprises. Here: the settled state after a full run — 136 titles read, 115 matched, 62 added. @@ -14,13 +14,17 @@ Seven pages in one local app — Pipeline, Photos, Titles, Review, Queue, Librar ![Titles page: 123 extracted titles with AUTO / AWAITING BGG status chips, source photo links, edit and split-into-copies actions, and a shaky-reads filter](screenshots/03.png) -**Review** — keyboard-first decisions on ambiguous matches, editions, and cross-photo merges (with veto), plus hand-steered re-searches of BGG or RPGGeek when the automatic search can't reach the right database. +**Review** — keyboard-first decisions on ambiguous matches. Each card shows the shelf photo beside the candidates (with rank, owner counts, and a view-on-BGG link per candidate), plus hand-steered re-searches of BGG or RPGGeek when the automatic search can't reach the right database. Here: is that box base Agricola or the Revised Edition? -![Review page in its done state: 123 extracted, 17 recognized, 2 with versions, 0 rejected, with 106 titles waiting on the BGG API token](screenshots/04.png) +![Review page with live match ballots: Agricola showing two candidate editions with thumbnails, ranks and owner counts, and unmatched titles offering manual id entry and search BGG / search RPGGeek buttons](screenshots/11-review-matches.png) -**Queue** — exactly what upload will do before it does it, and a permanent log of every attempt ever made. +**The editions pass** — after matches are settled, an optional pass picks which *printing* each copy is, scored against the cues read off the box. Skippable per game, and never blocks uploads. Here: five English Catan editions to choose between. -![Upload queue: six new collection entries with game, version, and source photos, plus empty version-updates and upload-log sections](screenshots/05.png) +![Editions review pass: Castle Panic and Catan cards, each listing that game's published editions with years, publishers and cue scores, plus can't-tell / list-every-printing / wrong-game actions](screenshots/12-edition-ballots.png) + +**Queue** — exactly what upload will do before it does it, and a permanent log of every attempt ever made. Here: six adds and one version update, pending. + +![Upload queue: six pending collection adds with BGG ids and source photos, one pending version update with its collection id, and the empty upload log](screenshots/13-queue-pending.png) **Library** — the enriched collection: searchable across titles, designers and mechanics, filterable by player count, sortable by rank/weight/year/time. Every card opens a detail page joining BGG's data with your own shelf photos; off-BGG games take hand-written facts and a cover photo there.