Skip to content

v1.4.0 — Tactile: complete redesign, 10-second card DB, rebuilt scanner

Choose a tag to compare

@novaoc novaoc released this 10 Jun 02:27

The biggest release yet: a complete redesign, a 100× faster Pokémon database, a rebuilt card scanner, and a long list of correctness fixes across pricing, search, and imports.

🟡 Tactile — complete redesign

  • New design system: cream paper, ink lines, 2px borders, hard offset shadows that compress when you press — every button physically "clicks"
  • New navigation: bottom tab bar (Home · Search · Trade · Browse · More) on phones, foldables and tablets with iOS safe-area support and a raised Trade disc; slim top bar with inline nav on desktop. The sidebar is gone.
  • "RB" sticker logomark across the top bar, favicon, and PWA icon
  • New marketing landing page: rotating cross-TCG showcase — 14 iconic cards across all six games (Lugia 1st Edition, Manga Luffy OP05-119, Blue-Eyes White Dragon, Riftbound Signatures, Traveling Chocobo, The Soul Stone…), with prices fetched live through Rarebox's own feeds on every view; the shelf total is computed from the cards actually shown
  • Design Lab: five complete brand directions (Mono, Aurora, Tactile, Atelier, Pulse) live at /designs
  • Every screen verified at 280px (foldable cover), 360px, 717px (unfolded foldable), 834px (tablet) and desktop — zero horizontal overflow, 44px+ touch targets, prefers-reduced-motion support

⚡ Speed

  • Pokémon card database loads in ~10 seconds (was 10–45 minutes): card data now comes from the official bulk dataset via CDN; prices stream in through a background pass with incremental saves and automatic resume if you close the tab mid-pass
  • Settings → Refresh card database actually re-downloads now (it skipped any cache under 24h since the day it shipped)

🔍 Search

  • Token-based multi-word matching everywhere — "ahri inquisitive" now finds "Ahri - Inquisitive"
  • Cached searches with no usable prices fall through to live APIs, so results always show prices
  • Trade analyzer search shows 30 results (was 15) and renders "—" instead of $0.00 for unknown prices

📷 Scanner (rebuilt)

  • tesseract.js v7 with correct worker API (scans previously failed 100% of the time with DataCloneError)
  • Japanese card support: jpn model reads the name band, resolved via tcgdex with fuzzy prefix search
  • Targeted name/number band passes with preprocessing for foil cards
  • Failed scans open the search box pre-filled with the recognized text — fix a character instead of retaking the photo

💰 Pricing correctness

  • Riftbound: Signature/Alternate Art cards no longer inherit the plain printing's price; PriceCharting fetches merge three queries and filter by set; search/portfolio/cache all share the variant-aware price map
  • Yu-Gi-Oh!: each printing shows its own set price instead of the card's cheapest-reprint price
  • Restored the portfolio price refresh that was stubbed out in the mobile revamp — Riftbound/MTG/One Piece portfolio prices update again

🇯🇵 Japanese Pokémon

  • Card images fixed (tcgdex CDN URLs were built unpadded; the API's own image field is now used)
  • The JP set-name table was rebuilt against tcgdex ground truth (~20 wrong mappings — e.g. Ancient Roar pointed at a set that doesn't exist)
  • Collectr import resolution overhauled: one set name can map to several tcgdex sets and each is tried until the card exists; set-name aliases; card numbers validated; EN numbers normalized with letter-prefix retries; scored matching for other TCGs. 31/32 sample rows resolve correctly (the miss is data missing upstream)

🛠 Fixes & polish

  • Portfolio desktop no longer renders every item twice
  • Deck builder search shows card images again
  • Meta Decks filter buttons no longer look permanently pressed
  • Reset Everything now wipes trade analyzer sides and decks too, and reloads clean
  • Card scans in Browse Sets sit in Tactile frames; TCG brand logos properly sized
  • Image error fallbacks across all card grids and panels; dead code removed