Pedigree scanning
- Replace the Tesseract OCR pipeline with server-side Claude vision
(claude-opus-5-5, structured output) that reads any layout, printed or
handwritten, into the subject + 14 ancestors with per-field uncertainty
- New POST/GET /api/pedigree-scan; enabled by ANTHROPIC_API_KEY in .env
- Add Rabbit step 1: "Scan a pedigree" card, photo review panel, "Check"
badges on uncertain ancestors, sire/dam herd matching
- Remove vendored Tesseract assets and OCR libs; bump SW cache to v2
- nginx /api read timeout raised to 180s for slow scans
Ancestors
- Manual ancestors default to 3 lbs and Unknown DOB (legacy 0 lbs read as
3); weight/DOB shown in the tree and on Review
- On save, ancestors entered as text become linked rabbit records
(status Other), deduped by ear number or name + farm
Existing rabbits
- Adding a rabbit that already exists tops up the existing record: fills
empty fields, adds missing ancestors, promotes reference ancestors; never
overwrites. Review step warns beforehand
- Delete button on rabbit detail; delete snapshots full ancestor JSON to
offspring, clears litter links and timeline events, and is blocked while
the rabbit has show entries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds a self-hosted Shows section that scrapes the ARBA show-search
listing and lets the user build show events, enter herd rabbits, and
track judges and placements.
Server:
- lib/arba.ts: Cloudflare-aware scraper + normalizer (cheerio), US-only,
cavy-excluded; cached in arba_shows_cache (re-scrape when >24h stale or
on demand). Rows are read from server-rendered Ninja Tables cells.
- routes/shows.ts: cached ARBA listing + force refresh.
- routes/showEvents.ts: event CRUD, ARBA-show snapshots, entries, judges,
placements (PUT upsert), and the plain-text entries report.
- schema: show_events, show_event_shows, show_event_entries,
show_event_judges, show_event_placements; breed column on rabbits.
- migrations 0007-0010.
Client:
- /shows browser with filters + 'Add to Event'.
- /shows/events list + detail with Shows / Entries / Results tabs,
rabbit picker, inline class/notes, placement entry, and report modal.
- breed surfaced in add/edit/detail/review.
Also folds in two previously-uncommitted bodies of work that share
schema.ts / index.ts / api.js with the above and can't be split out
cleanly: the rabbit timeline (rabbit_events, migrations 0004-0006,
routes/events.ts, RabbitTimeline) and the breed-select / default-breed
herd work (BreedSelect, lib/breeds.js, settings default_breed).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>