From 8249fbe964ae63fa5a34b150b2e5819972d93e5c Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 2 Oct 2026 10:09:28 -0700 Subject: Pictures paint with the page: column-sized copies, and CORS that works MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Measured in the live tab (screencast frames): back from a profile, the feed's text was on screen ~200ms before its photo. The 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 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 Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo --- src/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/style.css') diff --git a/src/style.css b/src/style.css index 2addd9c..8918c37 100644 --- a/src/style.css +++ b/src/style.css @@ -1255,7 +1255,8 @@ body::after { .balance-switch:hover { color: var(--ink); border-color: var(--line-strong); } .balance-switch svg { opacity: .75; } /* the face's settings: a round icon button, no label */ -.balance-gear { width: 34px; height: 34px; padding: 0; justify-content: center; } +.balance-gear { width: 34px; height: 34px; padding: 0; justify-content: center; background: none; border: 0; } +.balance-gear:hover { background: none; color: var(--ink); } /* Move-money row: the action labels are long ("Move to Spending"), so let the row wrap to two full-width lines rather than crushing the amount field. */ .balance-move .input-group { flex-wrap: wrap; } -- cgit v1.2.3