commit 546b88aef02c4f1dde3499f2efc675a955c35c99
parent fe10ef1998935ebfa373dfa9b422a6bf2385d091
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Sat, 19 Sep 2026 02:45:41 -0400
clip bench: the peek rail spans the cues that exist, not a flat ±60 s
A 9-second cache inside a 120-second rail squeezes the part you are actually
cutting into a sliver, and an upload whose cues stop at 21 s would pay for
48 s of empty rail to say so. The rail now spans the cache plus whatever came
back, clamped to the peek width -- so the shaded cached stretch is a readable
fraction of it and the dimmed cues past the edge are still legible.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/umtool/components/projects/ClipBench.tsx b/umtool/components/projects/ClipBench.tsx
@@ -802,10 +802,17 @@ export default function ClipBench({ data }: { data: ClipBenchData }) {
// out there. Both edges of the cache are MARKED, so the two scales cannot be
// confused for one.
const railCues = peek.length ? peek : cues;
+ // The rail spans the cache plus WHATEVER CUES CAME BACK, not a flat ±60: a
+ // 9-second cache inside a 120-second rail squeezes the part you are actually
+ // cutting into a sliver, and an upload whose cues stop at 21 s would pay for
+ // 48 s of empty rail to say so.
const rail = peek.length
? {
- from: Math.min(view.from - peekPad, railCues[0]?.start ?? view.from),
- to: Math.max(view.to + peekPad, railCues[railCues.length - 1]?.end ?? view.to),
+ from: Math.max(view.from - peekPad, Math.min(view.from, railCues[0]?.start ?? view.from)),
+ to: Math.min(
+ view.to + peekPad,
+ Math.max(view.to, railCues[railCues.length - 1]?.end ?? view.to),
+ ),
}
: view;
const railSpan = Math.max(1e-6, rail.to - rail.from);