From b6e1d2989d9425def6f132f98990a5dfbbb03c69 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Wed, 18 Feb 2026 14:39:12 -0800 Subject: [PATCH] Feat: Include duration in ntfy notifications --- run.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/run.js b/run.js index cdebf73..4c8a1e7 100644 --- a/run.js +++ b/run.js @@ -114,16 +114,18 @@ function stop(r) { flush(r, true) r.phase = 'done' r.error = null + const duration = ((Date.now() - r.startedAt) / 1000).toFixed(1) try { r.controller?.abort() } catch {} saveSnapshot(r) bcast(r, { type: 'done' }) - notify(`Run ${r.rid} ended.`, 3, ['stop_sign']) + notify(`Run ${r.rid} ended. Duration: ${duration}s`, 3, ['stop_sign']) } function fail(r, message) { if (r.phase !== 'running') return clearTimeoutTimer(r) const err = String(message || 'stream_failed') + const duration = ((Date.now() - r.startedAt) / 1000).toFixed(1) queueDelta(r, `\n\nRun failed: ${err}`) flush(r, true) r.phase = 'error' @@ -131,7 +133,7 @@ function fail(r, message) { try { r.controller?.abort() } catch {} saveSnapshot(r) bcast(r, { type: 'err', message: r.error }) - notify(`Run ${r.rid} failed: ${r.error}`, 3, ['rotating_light']) + notify(`Run ${r.rid} failed after ${duration}s: ${r.error}`, 3, ['rotating_light']) } function sanitizeMessages(messages) { @@ -267,4 +269,3 @@ export function handlePoll(uid) { images, } } -