aboutsummaryrefslogtreecommitdiffstats
path: root/tools/feed-video-aspect-test.js
Commit message (Collapse)AuthorAgeFilesLines
* The feed you were on is remembered per wallet; new ones start on PopularAdam Soltys2026-10-021-1/+1
| | | | | | | | | | | It was one device-wide key, so a new account opened on whatever the last one was reading (#gardenstr: the starter feed has the same id in every account). Now keyed by the wallet, re-read when a wallet opens (the feature outlives a sign-out), Popular when nothing is remembered, and the old device-wide key is dropped. A feed opened from a link stays put. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo
* Pictures paint with the page: column-sized copies, and CORS that worksAdam Soltys2026-10-021-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Tall videos fill the column with no side bars, up to the screen's heightAdam Soltys2026-10-011-1/+1
| | | | | Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Dmcrt9KyNDKVWFKnb8BREo
* A video in the feed paints at its own shape, not a 16:9 frame with black ↵Adam Soltys2026-10-011-0/+117
bands beside a portrait clip. The shape comes from the post's imeta dim when it gives one (Amethyst, Primal and others publish it), else from the clip's metadata fetched while the row warms (3 s cap), and is remembered on the device. The box is as wide as the column, never taller than 75vh; an unknown shape keeps 16:9. tools/feed-video-aspect-test.js: 3:4 and 16:9 clips measured ahead, a 9:16 one shaped by imeta alone (its file served too late to probe), a broken one. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WMMwWYJkPQxLgfMsY7hWcU