v4.5.12
qeeqbox/social-analyzerv4.5.12Aug 20, 2026by github-actions[bot]
AI Summary
Introduced stable execution windows, improved deployment performance with custom base layers, and fixed queue management issues.
Key Highlights
- Define stable execution windows on declarative scheduled tasks.
- CLI `--external-id` tags deployments for traceability.
- New projects created with `trigger init` use Node.js 24 by default.
- Deployment builds use custom base layers for faster image pulls.
- Runs are now pinned to their deployment source to prevent old code triggering new tasks.
- Fixed fair queue slot leaks.
New Features
- Stable execution windows
- `--external-id` deployment tagging
- Node.js 24 default
- Custom base layer images
Full Release Notes
# trigger.dev v4.5.12 ## Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.12`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1153016783?tag=v4.5.12) ## Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-12 ## What's changed ## Highlights - Define stable execution windows on declarative scheduled tasks. Schedule API responses now expose both the nominal CRON time and its assigned time, while the dashboard shows configured windows and upcoming assignments. ([#4572](https://github.com/triggerdotdev/trigger.dev/pull/4572)) ## Improvements - `trigger.dev deploy --external-id` tags a deployment with an id of your own — a commit SHA, a CI run id, a release tag — so runs triggered by that release of your app go to that deployment. Deploying an id that is already deployed builds nothing and reports the existing version instead of creating a duplicate; use `--force` to rebuild it. ([#4663](https://github.com/triggerdotdev/trigger.dev/pull/4663)) - List the current Production runtime for every accessible project with `trigger projects list`. Add `--needs-update` to identify projects currently running Node.js 21. ([#4659](https://github.com/triggerdotdev/trigger.dev/pull/4659)) - New projects created with `trigger init` use Node.js 24 by default. Deployments without explicit `runtime` now use their project's configured default runtime. ([#4649](https://github.com/triggerdotdev/trigger.dev/pull/4649)) - Deployment builds now use custom base layer images and no longer install system packages during every build. This improves layer caching resulting in both faster deployments and faster image pulls on the worker cluster side. ([#4602](https://github.com/triggerdotdev/trigger.dev/pull/4602)) - Unrelated runs are no longer merged into a single trace in your external observability tool when they happen to execute on the same warm worker process. ([#4534](https://github.com/triggerdotdev/trigger.dev/pull/4534)) - Task metrics no longer go missing for projects that configure their own `metricExporters` or `metricReaders`, and the flush error that came with it is gone. ([#4613](https://github.com/triggerdotdev/trigger.dev/pull/4613)) - `idempotencyKeys.reset()` now works when your idempotency key is itself 64 characters long (for example if you use a hash of your own as the key). Previously any 64-character key was assumed to be already hashed, so passing one along with a `scope` silently ignored the scope and the reset never found a matching run. Keys returned by `idempotencyKeys.create()` continue to be reset exactly as before. ([#4626](https://github.com/triggerdotdev/trigger.dev/pull/4626)) - Pin runs to the deployment your calling code came from, so an old release never triggers tasks from a new one: set `TRIGGER_EXTERNAL_DEPLOYMENT_ID` to the id you deployed with, or `TRIGGER_AUTOMATIC_SKEW_VERSION_PROTECTION=1` to detect the commit automatically on Vercel and most CI systems. Runs triggered before that deployment finishes building wait for it, then start pinned. ([#4664](https://github.com/triggerdotdev/trigger.dev/pull/4664)) - Fair queue tenants can no longer get permanently stuck behind leaked concurrency slots. Slots are now freed on every path that finishes a message, a failed release no longer causes a message to run twice or lose its retry, and a background sweep frees any slot that does leak, so a tenant's queues recover on their own instead of needing manual cleanup. ([#4540](https://github.com/triggerdotdev/trigger.dev/pull/4540)) ## Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - Deployments and runs now show the external ID they were deployed or pinned with, so you can trace a run back to the release of your app that triggered it. ([#4665](https://github.com/triggerdotdev/trigger.dev/pull/4665)) - Operators can now route an organization's runs to specific Kubernetes node pools. ([#4655](https://github.com/triggerdotdev/trigger.dev/pull/4655)) - Dashboard pages load faster on projects with many preview branches by no longer loading every environment on each page. ([#4606](https://github.com/triggerdotdev/trigger.dev/pull/4606)) - Global log search now supports faster bounded substring matching and clearer time-range expansion. ([#4615](https://github.com/triggerdotdev/trigger.dev/pull/4615)) - Triggering tasks is now more resilient to brief, transient service interruptions, so short stalls are less likely to surface as errors. ([#4623](https://github.com/triggerdotdev/trigger.dev/pull/4623)) - Failed AI SDK tool call and embedding spans now show the error message and stack trace in the run inspector, below the tool input. ([#4653](https://github.com/triggerdotdev/trigger.dev/pull/4653)) - Archiving a branch now returns you to the same page of the branches list, keeping your place, search and filters instead of resetting to the first page. ([#4724](https://github.com/triggerdotdev/trigger.dev/pull/4724)) - Using `*` as a concurrency key no longer stops a queue from being processed. Triggering a single run with that key could leave the whole queue stalled, including runs using other concurrency keys on it, until something else was triggered on the same queue. ([#4628](https://github.com/triggerdotdev/trigger.dev/pull/4628)) - Fixed a brief window after promoting or rolling back a deployment where newly triggered runs could still execute on the previous version. New runs now pick up the current version immediately. ([#4622](https://github.com/triggerdotdev/trigger.dev/pull/4622)) - Root API keys no longer show an environment creation timestamp as their creation date. ([#4612](https://github.com/triggerdotdev/trigger.dev/pull/4612)) - The app version shown on the organization settings page now reports the real version instead of v0.0.0. ([#4611](https://github.com/triggerdotdev/trigger.dev/pull/4611)) - Fix paused environments starting to run work again after a deploy: a paused environment now stays paused until you resume it. ([#4625](https://github.com/triggerdotdev/trigger.dev/pull/4625)) - Reject alert webhook destinations in reserved benchmarking IP ranges. ([#4735](https://github.com/triggerdotdev/trigger.dev/pull/4735)) - TRQL queries using the PREWHERE clause are now rejected with a clear error message. Use WHERE instead, which is filtered the same way but keeps your data isolation guarantees intact. ([#4735](https://github.com/triggerdotdev/trigger.dev/pull/4735)) - Run trace rows now respond consistently to mouse and keyboard selection, including Alt-click expansion controls. ([#4701](https://github.com/triggerdotdev/trigger.dev/pull/4701)) - The "Back to app" button in organization settings now returns you to that organization instead of your most recently used one. ([#4632](https://github.com/triggerdotdev/trigger.dev/pull/4632)) - Runs triggered with a `ttl` could get permanently stuck in the queued state if they started executing and were then requeued after a failure (for example a worker dying mid-run) once the TTL had already elapsed. Requeued runs now dequeue normally: a run's TTL only applies while it is waiting to start for the first time. ([#4669](https://github.com/triggerdotdev/trigger.dev/pull/4669)) ## All packages: v4.5.12 @trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker, @trigger.dev/rsc, @trigger.dev/schema-to-json, @trigger.dev/sdk, trigger.dev ## Contributors Chris Arderne, @nicktrn, Eric Allam, Oskar Otwinowski, claude[bot], Matt Aitken, Saadi Myftija, github-actions[bot], @NERLOE, Katia Bulatova, Wes Mason **Full changelog**: https://github.com/triggerdotdev/trigger.dev/compare/v4.5.11...v4.5.12