Commit 73e9d798 by PLN (Algolia)

feat(judge): sticky header, and Desire is cut from the release

PLN, mid-pass: 'make the judge header fixed so decision/key/stats is easy to
read always, and button to DL is always there'. Fair — the list is 15 tracks and
the focused row expands to several hundred pixels, so the tally, the keymap and
Export were all scrolled off exactly when they are being used.

DECISION, confirmed: 'i confirm skip desire stronger set without'. #14 Desire is
cut. #13 Vague de CRIME becomes the last OFFICIAL track and #15 REVOLUTION stays
the Encore — which is already its section in tracks.json, so the set's shape
holds. The release is 14 tracks.

Two more boundaries from his relisten, now recorded as ground truth:
  #1  GO, but 'trim leading silence tho' — head trim needed, amount unmeasured
  #8  2726.4 — 'piment until 0:02, xfade starts, but unfortunate midi events
      make a decent eh ouais je funk single start only at 06.4'. He also floats
      xfading it ourselves from 0:10.9 in postprod, kept as alt_start.

Nine of fourteen boundaries are now ear-verified; #11, #12, #13, #15 remain.
parent f1798e7b
......@@ -37,19 +37,28 @@
"10": {
"start": 3269.0,
"note": "opens on a Perfect sound; real Gimme Acid at 0:16.7"
}
},
"approximate": {
},
"8": {
"start": 2723.0,
"note": "'almost there' — a few seconds of Piment bleed in; needs a precise listen"
"start": 2726.4,
"note": "piment until 0:02, xfade starts, but unfortunate MIDI events make a clean single start only at 0:06.4; PLN also floats xfading it ourselves from 0:10.9 in postprod",
"alt_start": 2730.9,
"alt_note": "0:10.9 — only if we craft our own crossfade"
},
"1": {
"start": null,
"note": "GO, but 'trim leading silence tho' — head trim needed, exact amount not yet measured"
}
},
"unjudged": [
11,
12,
13,
14,
15
]
],
"cut_from_release": {
"14": {
"title": "Desire",
"note": "PLN 2026-08-16, CONFIRMED: 'i confirm skip desire stronger set without'. #13 Vague de CRIME becomes the last OFFICIAL track; #15 REVOLUTION remains the Encore (its section in tracks.json). Release is 14 tracks."
}
}
}
......@@ -151,8 +151,13 @@ export default function SetJudge() {
}
return (
<div className="mx-auto flex min-h-svh max-w-4xl flex-col gap-4 px-4 py-5">
<header className="flex flex-wrap items-end justify-between gap-3 border-b border-hairline pb-4">
<div className="mx-auto flex min-h-svh max-w-4xl flex-col gap-4 px-4 pb-5">
{/* Sticky: during a judging pass the tally, the keymap and Export must
stay reachable without scrolling back up — the list is 15 tracks and
the focused one expands to several hundred pixels. */}
<div className="sticky top-0 z-20 -mx-4 flex flex-col gap-3 border-b border-hairline
bg-surface/95 px-4 pb-3 pt-5 backdrop-blur-sm">
<header className="flex flex-wrap items-end justify-between gap-3">
<div className="min-w-0">
<p className="flex items-center gap-1.5 text-[11px] uppercase tracking-widest text-ink-faint">
<Anchor size={12} /> L&apos;Armada · set judge
......@@ -160,7 +165,7 @@ export default function SetJudge() {
<h1 className="truncate text-2xl font-semibold tracking-tight">
{data.title} <span className="text-ink-muted">{data.date}</span>
</h1>
<p className="mt-0.5 text-xs text-ink-faint">{data.calibration}</p>
<p className="mt-0.5 truncate text-xs text-ink-faint">{data.calibration}</p>
</div>
<div className="flex items-center gap-3">
......@@ -217,6 +222,7 @@ export default function SetJudge() {
j/k move · g go · m maybe · n no-go · c comment
</span>
</div>
</div>
{source === 'head' && (
<p className="rounded-md border border-hairline bg-raised px-3 py-2 text-[11px] text-ink-muted">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment