aboutsummaryrefslogtreecommitdiffstats
path: root/src/style.css
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-22 15:12:04 -0700
committerAdam Soltys <[email protected]>2026-10-22 15:12:04 -0700
commit8257a98e8d1891d0795f6b8b0623678245cc8e33 (patch)
tree00f6f3ca948785e31dd4544733846b0cdc710118 /src/style.css
parent520919208e63a08e4eab3102e1986532dddfaf92 (diff)
downloadcoinosv3-8257a98e8d1891d0795f6b8b0623678245cc8e33.tar.gz
coinosv3-8257a98e8d1891d0795f6b8b0623678245cc8e33.zip
Media grids: one tile for a clip uploaded twice, and a picture that won't load stays out
- Videos: one person's clips of one size to the byte are one clip. Beatbox Serenade posted the same video as a note and as a video event, each upload a fresh Blossom hash, so neither the file nor the words matched. Only a size the post or the host states counts (a bitrate x duration guess is marked sizeGuess and never matched). - Images: a picture whose load failed was hidden by a class the next repaint rewrote, so the broken-picture glyph came back (a deleted nostr.media file in #artstr). Failed pictures are now remembered for the session and left out of the grid. - A tile fetching its own frame froze the whole tile against repaints, so one built for the one-to-a-row layout never got its --ar in justified rows (zero width). Only the player and its stand-ins are frozen now; the render draws the cost badge itself. Tile pictures no longer size their tile (a frame-grab <video>'s 320px stretched its row). - Test fixtures that served one file under several names (or one imeta size for every clip) now differ per clip. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01K5xtiFrkFVsrkWx6JDQjiT
Diffstat (limited to 'src/style.css')
-rw-r--r--src/style.css3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/style.css b/src/style.css
index 61d6f01..275bb59 100644
--- a/src/style.css
+++ b/src/style.css
@@ -1548,6 +1548,9 @@ body::after {
.media-grid.justified { display: flex; flex-wrap: wrap; --row-h: 140px; }
.media-grid.justified .media-tile { aspect-ratio: var(--ar); flex: var(--ar) 1 calc(var(--ar) * var(--row-h)); min-width: 0; }
.media-grid.justified::after { content: ''; flex: 1000 1 0; }
+/* the picture fills the tile without sizing it: a frame-grab <video>'s own
+ 320px would widen its tile, and the row's height with it */
+.media-grid.justified .media-tile > img, .media-grid.justified .media-tile > video { position: absolute; inset: 0; }
@media (max-width: 600px) { .media-grid.justified { --row-h: 100px; } }
.media-tile img, .media-tile video { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; }
.media-tile.broken { display: none; }