keeps: warm public IPFS gateways after upload + after resync tx
Uploads in keep-prepare-background and keep-update now also fire-and-forget
a Range: bytes=0-0 GET to ipfs.io/gateway.ipfs.io/dweb.link/nftstorage.link
per CID, triggering those gateways to DHT-fetch from our Kubo node and cache.
Once cached there, objkt's indexer and the assets.objkt.media thumbnail
pipeline have multiple well-peered providers to pull from instead of timing
out against a single private node.
Adds /api/warm-gateways endpoint (POST {cids:[...]}) and a post-tx client
step in syncRebakeMetadataOnChain that calls it for the final artifact/
thumbnail/metadata CIDs, surfacing progress in the track log so the user
sees "Warming public IPFS gateways for N CIDs..." → "Gateways warmed: ..."
as visible steps in the resync confirmation panel.
Large artifact HTMLs (~1MB+) may still 504 at the public gateways'
internal timeouts — Filebase or a proper pinning service remains the
durable fix for those. Small files (metadata JSON, animated WebP thumbs)
land reliably.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>