Skip to content

Releases: pontusab/workbench

v0.9.1 — Discord alerts

01 Jun 12:20

Choose a tag to compare

Added

  • @getworkbench/core Discord as an official alert contact point: webhook URL validation (discord.com / ptb.discord.com), embed payload formatting with severity colors, and dashboard setup instructions alongside Slack and generic webhooks.

Fixed

  • @getworkbench/core@0.9.0 was withdrawn — the initial tarball was missing dist/. Use 0.9.1.

Changed

  • All 14 publishable adapter packages bump together to 0.9.1.

Install: bun add @getworkbench/core@0.9.1 (or your framework adapter at the same version).

v0.8.0 — Self-hosted alerting

31 May 11:52
d2c0681

Choose a tag to compare

Added

  • @getworkbench/core Self-hosted alerting: BullMQ QueueEvents listeners, Slack/webhook presets, dashboard Alerts page, and Redis-backed persistence for contact points and rules (keys under {prefix}:workbench:alerts:*). Alerts are enabled by default; configure destinations and rules in the dashboard to start receiving notifications.
  • @getworkbench/core Slack incoming webhook validation, Block Kit payload formatting (HTTPS dashboard buttons, HTTP dev links), and in-dialog Slack setup instructions.

Changed

  • All 14 publishable adapter packages bump together to 0.8.0.

Install: npm install @getworkbench/core@0.8.0 (or your framework adapter at the same version)

v0.7.0 — AdonisJS and TanStack Start adapters

27 May 14:02

Choose a tag to compare

[0.7.0] - 2026-05-27

Added

  • @getworkbench/adonis — first-party AdonisJS 6/7 adapter with mountWorkbench() for catch-all routing on router.any().
  • @getworkbench/tanstack-start — TanStack Start server-route adapter; mount via createFileRoute(...)({ server: { handlers: workbench(...) } }).
  • @getworkbench/cli detects AdonisJS and TanStack Start projects and scaffolds the Workbench mount (routes file or server routes).
  • Smoke-tested example apps: examples/with-adonis, examples/with-tanstack-start.
  • Marketing site logos, hero strip, blog posts, and llms.txt entries for both frameworks.

Changed

  • All 14 publishable adapter packages (@getworkbench/core, hono, elysia, express, fastify, nestjs, next, koa, astro, nuxt, bun, h3, adonis, tanstack-start) bump together to 0.7.0. @getworkbench/cli bumps to 0.5.0; @getworkbench/mcp stays at 0.5.1.

v0.6.0 — Dashboard command center

27 May 13:05

Choose a tag to compare

Added

  • @getworkbench/core Overview is now the default home (/): fleet KPI cards, 24h throughput chart, attention alerts (worker health, paused queues, failed backlog), and per-queue health cards with sparklines and worker counts.
  • @getworkbench/core collapsible shadcn sidebar with icon rail mode, SidebarTrigger, and ⌘B toggle; queue list stays inline when expanded and in a HoverCard when collapsed.
  • @getworkbench/core targeted shadcn primitives — Alert, AlertDialog, and Sonner toasts — for attention blocks, destructive confirms, and op feedback.
  • @getworkbench/core queue Clean completed/failed action (DropdownMenu → AlertDialog confirm with grace period → toast).
  • @getworkbench/core Runs list shows truncated failedReason on failed rows; list API payload trimmed via jobToInfo(..., "list").
  • @getworkbench/core live cues: header sync timestamp with pulse when jobs are active; active job progress bar; Live badge on the Logs tab.

Changed

  • @getworkbench/core Runs moves to /runs (Overview replaces it at /). Command palette and sidebar nav updated accordingly.
  • @getworkbench/core QueueInfo now includes optional workerCount from BullMQ getWorkersCount().
  • All 12 publishable adapter packages bump together to 0.6.0. @getworkbench/cli stays at 0.4.0; @getworkbench/mcp stays at 0.5.1.

Fixed

  • @getworkbench/core Metrics Most Failing Job Types rows link to the latest failed job detail.

v0.5.2

27 May 09:15

Choose a tag to compare

Added

  • Job Details Logs tab for BullMQ job.log() output (GET /jobs/:queue/:id/logs), with lazy loading and polling for active jobs. Closes #15.

Changed

  • Workbench app icon as favicon and inline React sidebar logo.
  • All @getworkbench/* adapter packages bump to 0.5.2 (lockstep with core).

Fixed

  • Sidebar queue popover scrolls when there are many queues (Radix available-height).

Upgrade

npm install @getworkbench/core@0.5.2 @getworkbench/express@0.5.2
# …or your adapter package at the same version

v0.5.1 — @getworkbench/mcp

26 May 12:24

Choose a tag to compare

✨ New package: `@getworkbench/mcp`

Optional Model Context Protocol server that lets Cursor, Claude Desktop, Zed, Continue.dev, and any other MCP-aware agent inspect, debug, and operate BullMQ queues through a running Workbench dashboard.

Why?

Workbench gives developers a beautiful BullMQ dashboard. The MCP gives agents the same surface. Same data, same operations, same permissions — but reachable from an AI editor's chat:

  • "Why is `email-send` backed up?" — agent calls `workbench_get_metrics`, sees p95 latency spiked at 14:02, calls `workbench_list_runs` with `status=failed` and `from=14:00`, finds the regression.
  • "Retry every failed `webhook-deliver` from the last hour." — `workbench_list_runs` + `workbench_bulk_retry`.
  • "Run the nightly billing scheduler now so I can verify the fix." — `workbench_list_schedulers` + `workbench_run_scheduler_now` (added in 0.5.0).

18 tools

Inspect (`readOnlyHint: true`): `workbench_get_overview`, `list_queues`, `get_quick_counts`, `get_metrics`, `get_activity`, `list_jobs`, `list_runs`, `get_job`, `search_jobs`, `list_schedulers`, `list_flows`, `get_flow`, `list_tag_values`

Operate (`destructiveHint: true`): `workbench_retry_job`, `remove_job`, `promote_job`, `pause_queue`, `resume_queue`, `run_scheduler_now`, `enqueue_job`, `clean_jobs`, `bulk_retry`, `bulk_delete`

Install

```json
{
"mcpServers": {
"workbench": {
"command": "npx",
"args": ["-y", "@getworkbench/mcp"],
"env": {
"WORKBENCH_URL": "http://localhost:3000/jobs",
"WORKBENCH_USERNAME": "admin",
"WORKBENCH_PASSWORD": "hunter2"
}
}
}
}
```

The MCP is a thin HTTP proxy to the dashboard's REST API — it reuses the dashboard's existing Basic Auth and inherits the `readonly` flag end-to-end. No second source of truth for permissions.

Full docs: packages/mcp/README.md


Released packages

  • `@getworkbench/mcp@0.5.1` (new)

All other packages remain at `0.5.0`.

v0.5.0

26 May 12:16

Choose a tag to compare

Highlights

  • "Run now" for repeatable schedulers — one-off trigger from the Schedulers page that doesn't disturb the cron schedule. (Thanks @emilnator, #10.)
  • Schedulers Delayed tab no longer mirrors the Repeatable tab — only ad-hoc delayed jobs surface there now. (Thanks @emilnator, #11.)
  • Future "Next Run" timestamps render as "in 10h" instead of malformed "-37022s ago". (Thanks @emilnator, #12.)
  • All 12 publishable packages (`core`, `hono`, `elysia`, `express`, `fastify`, `nestjs`, `next`, `koa`, `astro`, `nuxt`, `bun`, `h3`) bump together to `0.5.0`. `@getworkbench/cli` stays at `0.4.0`.
  • Marketing site now optimised for AI search citation (ChatGPT, Perplexity, Claude, Gemini, Google AI Overviews): explicit AI bot allowlist, site-wide `SoftwareApplication` + `FAQPage` JSON-LD, and `/llms.txt`.

See the CHANGELOG for full details.

v0.3.2

26 May 10:23

Choose a tag to compare

Critical patch release. Upgrade immediately if you're on 0.3.1.

@getworkbench/core@0.3.1 shipped without the dashboard UI bundle, so any adapter serving the dashboard returns a 404 on every dashboard request. 0.3.2 restores the bundle and folds in two dashboard UI bug fixes from open issues.

Fixed

  • @getworkbench/core@0.3.1 shipped without dist/ui/. Flipping tsup to clean: true in 0.3.1 made the tsup lib build wipe dist/ after vite build had populated dist/ui/, so the published tarball contained no dist/ui/index.html or dist/ui/assets/*. Adapters serving from UI_DIST_PATH returned 404 on every dashboard request. The core build script now runs rm -rf dist once up-front (bun run clean && bun run build:ui && bun run build:lib) and tsup keeps clean: false, so vite's output survives. The dist/ui/ tree is verified to ship in 0.3.2's tarball.
  • Sidebar queue list is scrollable when there are many queues. The HoverCard popover now caps at min(70svh, 32rem) with overflow-y-auto instead of growing past the viewport. Long queue names also truncate inside the popover (with a title tooltip) so the paused indicator no longer gets pushed out. Fixes #7.
  • Queue names on the overview cards truncate with min-w-0 + truncate and a title tooltip when too long, and the "Paused" chip is now shrink-0. Long names no longer overlap the status chip. Fixes #8.
  • Sidebar nav icons (and every other <button>) show a pointer cursor on hover again. Tailwind v4's preflight dropped cursor: pointer from the default button reset — a global base rule restores v3 behavior. Part of #7.

Deprecated

  • @getworkbench/core@0.3.1 (and the six adapters at 0.3.1) are deprecated on npm. Use 0.3.2 or later.

Upgrade

npm i @getworkbench/express@0.3.2   # or fastify / hono / elysia / next / nestjs

Published packages

  • @getworkbench/core@0.3.2
  • @getworkbench/express@0.3.2
  • @getworkbench/fastify@0.3.2
  • @getworkbench/hono@0.3.2
  • @getworkbench/elysia@0.3.2
  • @getworkbench/next@0.3.2
  • @getworkbench/nestjs@0.3.2

Full Changelog: v0.3.1...v0.3.2

v0.3.1

26 May 10:12

Choose a tag to compare

Patch release rolling up three community PRs plus a dist-hygiene cleanup. No API breakage; safe upgrade from 0.3.0.

Fixed

  • @getworkbench/core QueueManager.getJobsByTimeRange no longer crashes with TypeError: undefined is not an object (evaluating 'job.finishedOn') when BullMQ returns null/undefined entries from queue.getJobs(). This affected the two fallback paths (missing Redis client, and the catch after a failed ZRANGEBYSCORE) and showed up as a 500 on {basePath}/api/metrics under real queue churn with removeOnComplete / removeOnFail. Stale entries are now filtered out before the timestamp comparison. Fixes #5. (Thanks @Stormix, #6.)
  • "Enqueue test job" from the dashboard no longer hits a 400. The frontend payload now matches the API's TestJobRequest shape ({ queueName, jobName, data, opts: { delay } }) instead of { queueName, name, data, delay }. (Thanks @goyalshivansh2805, #4.)
  • Command palette (cmdk menu) now renders correctly in light mode. Tailwind v4's @custom-variant dark is registered in globals.css, and the dialog surface, border, and selected-item state use light-mode-aware colors so highlighted items are visible. (Thanks @NoahGdev, #1.)

Added

  • BullMQ prioritized and waiting-children job states are now surfaced in queue and run filters, job fetching, counts, sidebar summaries, badges, flow nodes, and command palette status indicators. (Thanks @phibr0, #2.)

Changed

  • Job status UI ordering, alongside the prioritized / waiting-children additions above.
  • Every adapter's tsup.config.ts now has clean: true, so stale hashed chunk artifacts no longer linger in dist/ between rebuilds. The @getworkbench/core@0.3.0 tarball shipped one such unreferenced 19 KB .d.ts chunk; 0.3.1 ships a clean dist.

Upgrade

npm i @getworkbench/express@0.3.1   # or fastify / hono / elysia / next / nestjs

Workspace deps (@getworkbench/core) are pinned via workspace:*^0.3.1 automatically.

Published packages

  • @getworkbench/core@0.3.1
  • @getworkbench/express@0.3.1
  • @getworkbench/fastify@0.3.1
  • @getworkbench/hono@0.3.1
  • @getworkbench/elysia@0.3.1
  • @getworkbench/next@0.3.1
  • @getworkbench/nestjs@0.3.1

Full Changelog: v0.3.0...v0.3.1