snipe/web
pyr0ball dca3c3f50b feat(prefs): display.currency preference with live exchange rate conversion
- Backend: validate display.currency against 10 supported ISO 4217 codes
  (USD, GBP, EUR, CAD, AUD, JPY, CHF, MXN, BRL, INR); return 400 on
  unsupported code with a clear message listing accepted values
- Frontend: useCurrency composable fetches rates from open.er-api.com
  with 1-hour module-level cache and in-flight deduplication; falls back
  to USD display on network failure
- Preferences store: adds display.currency with localStorage fallback for
  anonymous users and localStorage-to-DB migration for newly logged-in users
- ListingCard: price and market price now convert from USD using live rates,
  showing USD synchronously while rates load then updating reactively
- Settings UI: currency selector dropdown in Appearance section using
  theme-aware CSS classes; available to all users (anon via localStorage,
  logged-in via DB preference)
- Tests: 6 Python tests for the PATCH /api/preferences currency endpoint
  (including ordering-safe fixture using patch.object on _LOCAL_SNIPE_DB);
  14 Vitest tests for convertFromUSD, formatPrice, and formatPriceUSD
2026-04-20 11:02:59 -07:00
..
public feat: snipe beta backlog batch (tickets #22/#28/#30/#34/#35/#36/#37/#38) 2026-04-13 19:32:50 -07:00
src feat(prefs): display.currency preference with live exchange rate conversion 2026-04-20 11:02:59 -07:00
index.html fix: body background follows theme tokens + Plausible analytics 2026-04-17 03:00:16 -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