bunqueue v2.8.10
blog · release
bunqueue v2.8.10
Fixes 19 bugs. A typo no longer boots a server.
To install bunqueue v2.8.10
Section titled “To install bunqueue v2.8.10”bun add bunqueue@2.8.10npm install bunqueue@2.8.10To upgrade bunqueue
Section titled “To upgrade bunqueue”bun add bunqueue@latestBugfixes
Section titled “Bugfixes”A deep CLI audit (same parameter-honoring bug class as the #95 API audit, one layer up) surfaced ~25 issues. This release fixes the critical and high ones:
- A typo no longer boots a server. The
bunqueuebinary entry point fell through tostartServer()for any unrecognized first argument, sobunqueue stast(typo),bunqueue version,bunqueue doctororbunqueue pingsilently started a full server (bound ports, created the default DB) instead of running the CLI. The server now boots only for a barebunqueue,start, or flag-led invocations; everything else routes to the CLI, and unknown commands exit 1 with an error. cron add --max-limit 0now means unlimited as the help always said. Previously the server interpreted 0 as “already exhausted” and the cron never fired. Negative values are rejected.- Global
-tno longer stealspull/job waittimeouts.bunqueue pull q -t 5000used to sendAuth { token: "5000" };-tafterpull/jobis now passed through to the subcommand (long--tokenis global everywhere,-tbefore the command still works as token). webhook addevent list matches reality. It accepted events the server never emits (job.active,job.waiting,job.delayed, webhooks created but permanently dead) and rejected the actually-emittedjob.pushed/job.started. Valid events now:job.pushed,job.started,job.completed,job.failed,job.progress.bunqueue backuphonorsBUNQUEUE_DATA_PATH/BQ_DATA_PATH(canonical data-path priority) instead of onlyDATA_PATH/SQLITE_PATH.- Long-poll commands no longer die on the client’s own 30s timeout. For
PULL/WaitJob(only, on PUSHtimeoutis the job execution timeout and does not stretch the client wait) the CLI timeout scales with the command’stimeoutfield (+10s buffer), sopull --timeout 30000andjob wait --timeout 60000wait as requested. job waitthat times out now exits 1 with “Job not completed within timeout” instead of printing a greenOK(exit 0) indistinguishable from success.cron add --everyrejects non-positive intervals. A negative interval produced anextRunpermanently in the past, the cron fired on every scheduler tick, indefinitely.job wait --timeoutrejects negatives too.- Global value flags no longer swallow a following flag:
--token --json,-H --json,-p --jsonnow warn and keep--jsonworking (same guard--tls-caalready had). - Unknown commands and parse errors are now reported without requiring a reachable server (command is built before connecting).
Audit pass 3, parsing, formatters, cross-layer:
- Entry points unified:
bunqueue startnow boots the SAME full server as a barebunqueue(shared bootstrap), S3 backup, cloud agent, stats interval, crash handlers and graceful drain were previously missing from thestartpath. Also fixesHTTP_SOCKET_PATHbeing shown in the banner but never applied on the bare entry. - Short
-h/-vare global only before the command:push q '{}' -h host(typo of-H) used to print help and exit 0 without pushing, a false success in scripts. Long--help/--versionstay global;--helpafterpush/cronnow shows command-specific help. --separator: everything after--is opaque to the global parser (no more--json/-tstolen from values).- Attached short flags warn:
push q '{}' -p10silently dropped the priority and pushed anyway; now a warning points to the separated form. - Cron
maxLimitfixed at the domain level: 0/negative storenull(unlimited) on EVERY surface, TCP, HTTP API and MCP no longer create permanently-exhausted crons. - Webhook events validated server-side against a single canonical list
(
WEBHOOK_EVENTS) shared by CLI, TCP/HTTP handler and MCP, previously the server accepted any string and MCP advertised events that don’t exist. WaitJobtimeout capped server-side (0–600000 ms, likePULL), an unbounded wait could hold client and connection for days.- Formatters stop dropping operational data:
worker listshows status (stale workers are now visible), concurrency and job counters;webhook listshows enabled state, queue and delivery counters;cron listshows next run / max / timezone;statsshows uptime and push/pull rates;webhook addprints the webhookId (needed for remove);cron addprints the next run. job stateof a missing job exits 1 (“Job not found”) instead of printingState: unknownwith exit 0.
Remaining low audit findings are tracked for a follow-up release.
Thanks to 1 contributor!
Section titled “Thanks to 1 contributor!”← bunqueue v2.8.9 · Release on GitHub · Commits since v2.8.9 · Full changelog · All posts