aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vmedia/server.js8
1 files changed, 5 insertions, 3 deletions
diff --git a/vmedia/server.js b/vmedia/server.js
index 6b6b69a..19e170c 100644
--- a/vmedia/server.js
+++ b/vmedia/server.js
@@ -12,9 +12,10 @@
// for Linux plays its sound over black). The first ask streams the
// transcode as it's made (fragmented MP4); once done it's a plain
// faststart file served in ranges and cached for everyone.
-// /vmedia/pic.webp?s=col|tile&u=<picture> the picture at the size the
-// feed paints it: 1100px wide for the column, or a 360px square of its
-// middle for the grid. The app makes these copies itself from a host that
+// /vmedia/pic.webp?s=col|tile|row&u=<picture> the picture at the size the
+// feed paints it: 1100px wide for the column, a 360px square of its
+// middle for a square tile, or 360px tall in its own shape for the grid's
+// justified rows. The app makes these copies itself from a host that
// allows CORS; one that doesn't (primal's blossom, nostrcheck, most
// personal sites) left the <img> painting the original, and a 9528×6328
// camera file froze a wheel scroll for 400 ms on its texture upload.
@@ -446,6 +447,7 @@ async function clipResponse(req, src, ip) {
const SHAPES = {
col: ['--size', '1100x>'], // the 560px column at 2x; never enlarged
tile: ['--size', '360x360>', '--smartcrop', 'centre'], // a 120–180px grid tile at 2–3x
+ row: ['--size', '720x360>'], // a tile in justified rows: the picture's own shape, 360px tall
};
const PIC_V = 1;
// what the bytes say the file is (the header is often octet-stream, sometimes a lie)