aboutsummaryrefslogtreecommitdiffstats
path: root/src/thread-cache.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-02 10:09:28 -0700
committerAdam Soltys <[email protected]>2026-10-02 10:09:28 -0700
commit8249fbe964ae63fa5a34b150b2e5819972d93e5c (patch)
tree93892b6c66818596abff896a12c378f703196aad /src/thread-cache.js
parent98a1cb08eff9958d87c6d84462669d2a1990b21e (diff)
downloadcoinosv3-8249fbe964ae63fa5a34b150b2e5819972d93e5c.tar.gz
coinosv3-8249fbe964ae63fa5a34b150b2e5819972d93e5c.zip
Pictures paint with the page: column-sized copies, and CORS that works
Measured in the live tab (screencast frames): back from a profile, the feed's text was on screen ~200ms before its photo. The <img> was loaded and complete on the first frame — a 3024px, 12-megapixel original that Chrome re-decodes whenever the page is rebuilt. - Post photos wider than the column at 2x are painted from an 1100px WebP copy made once (fetch, createImageBitmap, OffscreenCanvas) and kept in Cache Storage; it decodes in a few ms, decoding=sync, inside the same frame as the text. GIFs and small pictures keep the original; the lightbox opens the original. Profile banners use the same copies, warmed on prefetch. - corsFetch: primal's CDN caches its no-Origin answer without Vary: Origin, so a CORS fetch after the <img> got that header-less copy and failed — which had written blossom.primal.net, m.primal.net and coinos.io off as 'no CORS', so their avatars never got local thumbnails and painted late from the originals. A refusal is now retried once past the cache before a host is blamed; the old list is dropped (nocors-v2). - DM list: the unread dot sits centred at the row's end, like the communities' below, instead of beside the time. - Balance card gear: the icon alone, no circle. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo
Diffstat (limited to 'src/thread-cache.js')
0 files changed, 0 insertions, 0 deletions