Commit Graph

6 Commits

Author SHA1 Message Date
fireshaper 990c703bb2 AI pedigree scanning, reusable ancestors, rabbit merge and delete
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>
2026-10-28 14:29:06 -04:00
fireshaper 3874c33a90 Document updating an existing Docker deployment
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:05:35 -04:00
fireshaper 2a0e347a19 Add user accounts with first-run onboarding and per-user preferences
Replaces the optional shared-password auth (AUTH_PASSWORD env var,
in-memory sessions) with account-based auth: a users table (scrypt
password hashes via node:crypto — no native dep), SQLite-backed sessions
that survive restarts, a one-time setup screen that creates the first
account, and a Settings → Users card for adding/removing users and
resetting passwords (everyone equal, shared herd — no roles).

Theme and weight-unit become per-user preferences behind the unchanged
/api/settings shape (NULL inherits the global value); rabbitry name, kit
prefix, and default breed stay shared. Failed logins get a flat 350 ms
delay and timing-safe comparison. MYKINDLEBOX_PASSWORD is retired —
upgrading deployments see the setup screen once, data untouched.

Also: configurable host port (MYKINDLEBOX_PORT), compose healthcheck
gating nginx on API readiness, nginx body-size headroom for 10 MB
imports, server .dockerignore hardening, ESLint ignore for vendored
tesseract assets, react-hooks rule fixes, exact tesseract.js pin with SW
cache-upgrade contract and failure-isolated precache, and OCR date
parsing fixes (2-digit-year pivot, impossible-date rejection).

Design doc: memory-bank/FEATURE_User_Accounts.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 16:38:16 -04:00
fireshaper 1368dc5ec4 Docker updates 2026-07-02 14:56:22 -04:00
fireshaper 77cb71b7aa Flesh out project README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:33:49 -04:00
fireshaper c961e48953 Initial commit: MyKindlebox rabbitry management app
React + Vite client and Express + SQLite/Drizzle server, plus
memory-bank design docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:29:56 -04:00