commit 03061ce11308b0a1c045077d7faaeee190394165
parent bb90538334cf3007912313fc490859bdfc45b6e2
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Thu, 1 Oct 2026 17:06:14 -0400
report-to-video: the feed opens the room before a post comes in over it -- the push is front-loaded (0.4 s) and the entrance waits 0.22 s, so a new card never overlaps the ones it moves
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Diffstat:
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/umtool/report-to-video/chrome-feed.mjs b/umtool/report-to-video/chrome-feed.mjs
@@ -51,13 +51,14 @@ const r4 = (v) => Math.round(v * 10000) / 10000;
* The feed's motion, in seconds (and the gap between cards, in px). A new
* card starts entering `lag` after its `in`, from the column's outer edge,
* over `enter`; the cards below are pushed down over `push` from the `in`
- * itself, so the room opens as the card arrives. Its highlight flares `glowAt`
+ * itself, front-loaded, so the room is open (≈ 90 %) before the card comes
+ * in over it -- the two never overlap on screen. Its highlight flares `glowAt`
* into the entrance over `glowUp`, settles to `newest` over `glowDown`, and
* goes out over `calm` when the next post arrives. A card pushed past the
* column's bottom fades over `leave`. The empty state fades over `emptyOut`.
*/
export const FEED_MOTION = Object.freeze({
- gap: 16, push: 0.55, lag: 0.12, enter: 0.6, glowAt: 0.2, glowUp: 0.2, glowDown: 1.2, newest: 0.55, calm: 0.8,
+ gap: 16, push: 0.4, lag: 0.22, enter: 0.6, glowAt: 0.2, glowUp: 0.2, glowDown: 1.2, newest: 0.55, calm: 0.8,
leave: 0.45, emptyOut: 0.35,
});
@@ -112,7 +113,7 @@ export function feedLayout(render) {
*/
export function feedCues({
posts, heights, column, visibility = [], startsHidden = false, slideX = 600, enterX = 600,
- gap = 16, push = 0.55, lag = 0.12, enter = 0.6, glowAt = 0.2, glowUp = 0.2, glowDown = 1.2, newest = 0.55,
+ gap = 16, push = 0.4, lag = 0.22, enter = 0.6, glowAt = 0.2, glowUp = 0.2, glowDown = 1.2, newest = 0.55,
calm = 0.8, leave = 0.45, emptyOut = 0.35,
}) {
const R = (v) => Math.round(v * 10000) / 10000;
@@ -141,10 +142,10 @@ export function feedCues({
const j = visible[v];
y[j] += room;
if (y[j] + (heights[j] || 0) <= column) {
- add(`c${j}`, t, push, { y: y[j] }, "power2.inOut", `push for ${id}`);
+ add(`c${j}`, t, push, { y: y[j] }, "power3.out", `push for ${id}`);
continue;
}
- add(`c${j}`, t, Math.max(push, leave), { y: y[j], autoAlpha: 0 }, "power2.inOut", `out for ${id}`);
+ add(`c${j}`, t, Math.max(push, leave), { y: y[j], autoAlpha: 0 }, "power2.out", `out for ${id}`);
gone[j] = t;
visible.splice(v, 1);
}