diff --git a/modules/propresenter-timers/ltc-listener.js b/modules/propresenter-timers/ltc-listener.js index cc43b93..d98a1b8 100644 --- a/modules/propresenter-timers/ltc-listener.js +++ b/modules/propresenter-timers/ltc-listener.js @@ -191,9 +191,13 @@ function createLtcListener({ device, channel, moduleDir, log, onUpdate }) { }); if (!tool.ready) { report({ error: tool.error, detail: tool.detail }); - // A build in flight restarts us itself when it lands; anything else is - // config-shaped and should back off hard rather than spin. - if (tool.error !== TOOL_BUILDING) scheduleRestart(BAD_CONFIG_RETRY_MS); + // onReady is only the FAST path (a successful build restarts us at + // once). The slow retry must stay armed regardless: a failed build + // never calls back, and a binary can also arrive from outside — scp'd + // in on a machine whose toolchain can't build (AB's broken CLT). + // Waiting on onReady alone deadlocked exactly that way in production: + // "Capture tool building…" forever, with a working binary on disk. + scheduleRestart(BAD_CONFIG_RETRY_MS); return; } diff --git a/modules/propresenter-timers/module.json b/modules/propresenter-timers/module.json index a825788..7e17779 100644 --- a/modules/propresenter-timers/module.json +++ b/modules/propresenter-timers/module.json @@ -1,7 +1,7 @@ { "id": "propresenter-timers", "name": "Timers", - "version": "1.5.0", + "version": "1.5.1", "proddash": ">=1.4.0", "description": "Timers, Clocks, and LTC From configured Modules", "provides": [