Block a user
On-device: phone-home upload + parity scoring (default ON) so Tower keeps learning from local scans
On-device: collector-number read (port Tower's number-read to Apple Vision text recognition)
EPIC: On-device CardVision — recognize cards on the iPhone without Tower
Child issues, in the order we expect to work them:
Now (this build cycle)
- #633 local card detection + crop — built, native revision awaiting the next build
- #634 miss / catalog-failure…
On-device: heat and battery — thermal-aware scheduling and measured sustained scanning
On-device: CLIP preprocessing parity (OpenCV INTER_AREA vs PIL bicubic) and shortlist recall on real misses
On-device: production readiness — drop the Design-only gate, host assets properly, TestFlight rollout
On-device: live card outline before the shutter (later)
Catalog/pricing resolve times out after a successful local match (3 s budget)
On-device: per-scan diagnostics — stage timings, thermal state, labelled miss set
On-device: fit ALL games on the phone in ~500 MB (today EN Pokémon alone is ~970 MB)
On-device: multi-game packs (per-game download, per-set delta updates)
On-device: compact fine-tuned encoder to replace CLIP-L (the real path to 500 MB)
On-device: local card detection + crop (binder-safe, pulled back, off-centre)
On-device: local miss and catalog/pricing failure become retryable tiles, not alerts
EPIC: On-device CardVision — recognize cards on the iPhone without Tower
Onboarding: fresh local DB via create_all alone now lacks price_snapshot partitions, audit trigger, trgm indexes — point new devs at
alembic upgrade head
deploy.yml: run
alembic upgrade head against staging on each refresh so staging rehearses migrations before prod
Docs: staging/dev migrate instructions say
upgrade head — first step on a never-stamped DB is stamp head
Audit: split DB users — app can no longer ALTER/DROP (blocked by startup-DDL removal)
Update on D8 (GitHub PR #422): review caught that the frontend's only caller (settings page) was still calling the endpoint with no body, which would have 422'd in production the moment this…
Audit: split DB users — app can no longer ALTER/DROP (blocked by startup-DDL removal)
D8 (POST /auth/workspace/reset gate) implemented: GitHub PR #422 (yes, same number as this issue by coincidence) — typed workspace-name confirmation, rate_limit_vendor(5, 3600), and a warning-leve…