Chronicle of Changes.
Added1 entry
- Card images across the app now load from Cartarch's own image mirror at img.cartarch.com instead of Scryfall's CDN. If a brand-new printing hasn't been mirrored yet, the image quietly falls back to Scryfall so nothing appears broken.
Every thumbnail, hover preview, and hero image was a direct fetch from Scryfall's CDN — thousands of image requests riding on a third party's goodwill and cache headers. The stored image_url column was never really an address; it was a snapshot of wherever Scryfall kept the picture the day the card was ingested. The switch rebuilds every image URL at render time from the card's scryfall_id against the self-hosted mirror, so the stored URL degrades into what it always truly was: a signal that the card has a picture at all. Each image tag carries a one-shot fallback to Scryfall's API redirect, so a printing the mirror hasn't ingested yet still renders — the mirror can lag ingestion without a user ever seeing a broken card. The goldfisher still reads Scryfall directly; that seam is deliberate and tracked as its own issue.