Block a user
Review follow-ups: PR #644 — fix(import): flag a slab matched without its cert (cert_not_verified)
Review follow-ups: PR #642 — fix: keep a slab-heavy import /resolve under the proxy's 30s; web retries a 5xx instead of dropping to mapping
Review follow-ups: PR #643 — feature: portfolio value history, positions, movers and past trades (backend)
Review follow-ups: PR #641 — Index import_rows.duplicate_of + card_instances.batch_item_id: fix import discard 500 (migration 0060)
Review follow-ups: PR #640 — perf: cache the offline index and build it off the event loop
Review follow-ups: PR #639 — fix: run scan image capture off the event loop (Gitea #772)
Review follow-ups: PR #638 — fix(analytics): honest sales/profit numbers — losses, $0 cost is unknown, no double-counting, no voided, date-based horizons
Review follow-ups: PR #637 — feature: POS integrations and sales-tax evidence [no-deploy] (Gitea #386)
Review follow-ups: PR #636 — feat: add scheduled sealed listing estimates
Make get_current_user async and update DELETE /auth/me
Add missing timeouts for DB queries, transactions, and Celery tasks
Nightly pgBackRest backup window takes prod down: 5s connect_timeout with no retry, no statement_timeout anywhere
Review follow-ups: PR #635 — fix: refresh sealed prices in TCGplayer batches with Scrydex fallback
Review follow-ups: PR #634 — feature: select bulk Holo and Reverse from set-code color
Review follow-ups: PR #628 — fix: identify and clear bulk lister review warnings
Review follow-ups: PR #629 — fix: speed up bulk photo previews
Review follow-ups: PR #632 — fix: accept bulk photo drops throughout the page
Review follow-ups: PR #630 — fix(labels): one shared shop label size across web (and to mobile)
Review follow-ups: PR #631 — fix(pi-appliance): printer-agnostic pairing label + robust printer queries
Review follow-ups: PR #626 — fix(mobile): show sold comp age without price bars (Gitea #787)