Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit aded793b48103864385ee8c72a9ac12ac80dcafb
parent 18b08d1104fb9376c14b5743b3f0a853194be620
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Fri,  2 Oct 2026 01:30:49 -0400

editor: a held platform on a paused lane says the lane is paused (re-review R5)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Meditor/app/operations/components/RunnerOperationView.tsx | 20+++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/editor/app/operations/components/RunnerOperationView.tsx b/editor/app/operations/components/RunnerOperationView.tsx @@ -19,6 +19,14 @@ import { SnoozeControl } from "./SnoozeControl"; import { type Channel, formatClock, formatCooldown, leafOrder } from "./dispatch"; import { clearPlatformHoldAction } from "../pacingActions"; +// The idle reasons that mean "paused or gated", not "waiting for work". +const LANE_PAUSE_REASONS: ReadonlySet<string> = new Set([ + "lane-held", + "downloads-paused", + "snoozed", + "disk-gate", +]); + // ONE LANE'S RUNNER, IN FULL — any of the four. // // Lifted VERBATIM out of AutoQueueView's KindLane when the console became one @@ -131,6 +139,7 @@ export function RunnerOperationView({ pace={status.pace ?? []} subtitleDeferred={status.subtitleDeferred ?? []} laneRunning={status.runner.running} + laneHeld={status.held || (status.runner.idleReason !== null && LANE_PAUSE_REASONS.has(status.runner.idleReason))} onRefresh={onRefresh} onCleared={setHoldNote} now={now} @@ -236,6 +245,7 @@ function CooldownStrip({ pace, subtitleDeferred, laneRunning, + laneHeld, onRefresh, onCleared, now, @@ -245,6 +255,9 @@ function CooldownStrip({ pace: PlatformPaceView[]; subtitleDeferred: SubtitleDeferralView[]; laneRunning: boolean; + // The lane is up but paused or gated (its own hold, the downloads pause, + // a snooze, the disk gate): it is not waiting for a video. + laneHeld: boolean; onRefresh: () => Promise<void>; onCleared: (message: string) => void; now: number | null; @@ -297,11 +310,16 @@ function CooldownStrip({ failures in a row) {secs !== null && (overdue ? ( - laneRunning ? ( + laneRunning && !laneHeld ? ( <> , probe due — it waits for a pending video on this platform; a clean manual Sync also lifts it </> + ) : laneRunning ? ( + <> + , probe overdue — the lane is paused; a clean + manual Sync also lifts it + </> ) : ( <> , probe overdue — the lane is off; a clean manual