snipe/web
pyr0ball e93e3de207 feat: scammer blocklist, search/listing UI overhaul, tier refactor
**Scammer blocklist**
- migration 006: scammer_blocklist table (platform + seller_id unique key,
  source: manual|csv_import|community)
- ScammerEntry dataclass + Store.add/remove/list_blocklist methods
- blocklist.ts Pinia store — CRUD, export CSV, import CSV with validation
- BlocklistView.vue — list with search, export/import, bulk-remove; sellers
  show on ListingCard with force-score-0 badge
- API: GET/POST/DELETE /api/blocklist + CSV export/import endpoints
- Router: /blocklist route added; AppNav link

**Migration renumber**
- 002_background_tasks.sql → 007_background_tasks.sql (correct sequence
  after blocklist; idempotent CREATE IF NOT EXISTS safe for existing DBs)

**Search + listing UI overhaul**
- SearchView.vue: keyword expansion preview, filter chips for condition/
  format/price, saved-search quick-run button, paginated results
- ListingCard.vue: trust tier badge, scammer flag overlay, photo count
  chip, quick-block button, save-to-search action
- savedSearches store: optimistic update on run, last-run timestamp

**Tier refactor**
- tiers.py: full rewrite with docstring ladder, BYOK LOCAL_VISION_UNLOCKABLE
  flag, intentionally-free list with rationale (scammer_db, saved_searches,
  market_comps free to maximise adoption)

**Trust aggregator + scraper**
- aggregator.py: blocklist check short-circuits scoring to 0/BAD_ACTOR
- scraper.py: listing format detection, photo count, improved title parsing

**Theme**
- theme.css: trust tier color tokens, badge variants, blocklist badge
2026-04-03 19:08:54 -07:00
..
src feat: scammer blocklist, search/listing UI overhaul, tier refactor 2026-04-03 19:08:54 -07:00
index.html feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
package-lock.json feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
package.json feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
tsconfig.app.json feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
tsconfig.json feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
tsconfig.node.json feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
uno.config.ts feat(snipe): Vue 3 frontend scaffold + Docker web service 2026-03-25 15:11:35 -07:00
vite.config.ts feat(snipe): eBay trust scoring MVP — search, filters, enrichment, comps 2026-03-26 23:37:09 -07:00