• v3.3.62 99a2c2fe96

    Administrator released this 2026-06-10 00:08:26 +02:00 | 117 commits to master since this release

    Webhook reliability overhaul from a 5-lens multi-agent audit (36 confirmed findings). The notification now actually arrives in the situations where it used to silently fail.

    Delivery reliability:

    • sendBatchWebhook is now awaited and retries up to 3× with backoff. Before it was fire-and-forget with zero retry — exactly the wrong design for the one moment you need it (end of a long unattended batch, when the network is most likely to be briefly flaky). A transient failure now retries instead of vanishing.
    • Discord 429 rate-limit is honored: the Retry-After header is parsed and the POST is re-sent. Critical when many servers finish near-simultaneously and all hit the same webhook — previously some notifications were silently dropped.
    • HTTP status is validated. 2xx (incl. Discord's 204) = success; 4xx = stop (bad URL/payload, logged clearly); 5xx/network = retry. Previously ANY response — even 404/401 — was logged as 'sent'.
    • The webhook is now awaited before the shutdown-after-finish countdown and before the upload manager is torn down, so an in-flight POST can't be killed.
    • Webhook is now ALSO sent on the batch-init error path (startBatch reject) — previously only the happy path notified.

    Correctness:

    • isDiscordWebhook now requires a real id/token (…/webhooks//). An incomplete URL pasted by mistake no longer gets treated as a valid Discord webhook and 404'd silently.
    • Discord 2000-char limit: content is capped (hoster breakdown truncated to top 12 + '…+N', hard clamp at 1900). A 60-hoster or huge batch can no longer 400.
    • Fully-aborted/cancelled batches no longer fire a 'done' webhook (you cancelled it — you don't need a ping).
    • Auto-retry rounds no longer each fire a webhook (was one ping per round); only the initial batch notifies.
    • durationSec clamped to ≥0; machineName falls back to 'unknown-host' if hostname is empty.

    Lifecycle:

    • The network monitor's DNS-probe interval is now stopped on the batch error path too (was leaking an 8s timer per failed batch).

    +12 tests (268 total).

    Downloads