Release v1.45.0
Inngest v1.45.0 adds OAuth cloud login support to the CLI and MCP clients, introduces CEL filtering and sandbox lifecycle APIs, and fixes multiple issues in debounce, queue migration, API serialization, and semaphore performance.
This PR prepares v1.45.0.
- Code difference since last tag:
v1.44.0...799224824 - Previous tag:
v1.44.0 - Source branch:
release/next - Base branch:
main
Additional Release Notes
Additional Migration Notes
Final Release Page Preview
Rendered release notes bodyThis generated preview is the release notes body that will be
published to the GitHub Release page. It intentionally includes the
additional notes above, followed by collected PR notes and the
changelog.
Release Notes
- #4780 feat(auth): add
cli oauth login
Adds cloud login support to the Inngest CLI. OAuth credentials are
stored in the operating systemβs credential store and refreshed
automatically.
# log in inngest login # check the current session inngest auth status # start a new login and replace the current session inngest login --force # revoke the session and remove local credentials inngest logout
- #4781 feat(auth): add
mcp oauth support
Inngest Cloud MCP clients can now authenticate via OAuth. Users can now
select the account, permissions, environment access, etc. in the Inngest
Dashboard.
- #4788 fix(debounce):
handle removed config during execution
Prevent debounce timeout execution from crashing after debounce
configuration is removed from a function.
- #4789 fix(api):
serialize sandbox bytes written as a number
Sandbox file upload responses now serialize bytesWritten as a number
instead of a string.
- #4813 fix(api):
normalize unknown REST v2 body field errors
REST v2 now returns a clear invalid_request error when a JSON request
body contains a field unsupported by the server.
- #4816 feat(api):
reject unmapped v2 request fields via grpc-gateway fork
API V2 now rejects unknown query parameters and request bodies on
endpoints that do not define a body.
-
#4818 fix(semaphores):
improve semaphore iteration, breaking early, etcimproves speed of queue when workers are at their concurrency cap
-
#4832 fix(cel):
Improve certain classes of cel filter errors -
CEL run searches now return an explicit error for unsupported fields
or operators instead of silently ignoring the filter and returning
unfiltered runs.- Blank lines in CEL expressions are now safely ignored.
-
#4849 fix(queue):
close migration requeue routing window
Fixed a queue migration race that could lose a requeue schedule update.
- #4855 fix(api): return
error when event run status lookup fails
REST API event run lookups now return HTTP 500 when querying run status
fails instead of HTTP 200 with an empty response.
- #4857 fix(api): REST
v1 GET requests should keep their error codes
REST v1 endpoints now preserve non-200 HTTP statuses through the
response cache, and only successful HTTP 200 responses are cached.
- #4858 feat(api):
support CEL queries in REST run lists
REST v2 run-list endpoints now support CEL filtering through the
optional query parameter and return additional run metadata.
- #4863 fix(debounce):
finish source cleanup before execution
Fixed duplicate debounce execution after a crash during queue-shard
migration.
- #4870 feat(api):
define sandbox lifecycle contract
Adds REST V2 API contract definitions for pausing and resuming sandboxes
and managing sandbox snapshots.
-
#4874 feat(api): add
include option for deferred parents -
runs API can optionally return the deferring parent function slug and
name
Migration Notes
- #4816 feat(api):
reject unmapped v2 request fields via grpc-gateway fork
Clients using API V2 must remove unsupported query parameters and must
not send request bodies to endpoints without body mappings. Such
requests now return HTTP 400 instead of silently ignoring the
unsupported input.
-
#4844 fix(queue):
route requeues to current shardNone
Tests
go test -count=1 -run "TestProducerRequeue" ./pkg/execution/queue
-
#4849 fix(queue):
close migration requeue routing windowNone
Testing
go test -count=1 -run 'TestProducerRequeue' ./pkg/execution/queue
-
#4858 feat(api):
support CEL queries in REST run lists
Run-list clients should use page.cursor for continuation instead of
deriving a cursor from returned runs.
Testing
nix develop --command go test -race -count=1 ./pkg/api/v2 ./pkg/devserver nix develop --command go test -count=1 ./pkg/cqrs/manager -run '^TestCQRSGetSpanRuns(CELJoinQualifiesTenantFilters|RejectsUnsupportedCELPredicates)$'
-
#4863 fix(debounce):
finish source cleanup before executionNone
Verification
go test ./pkg/execution/debounce -count=1golangci-lint run ./pkg/execution/debounce/...
Refs SYS-1258.
-
#4870 feat(api):
define sandbox lifecycle contract
Cloud must update its OSS dependency and replace the existing manually
registered lifecycle and snapshot routes with implementations of these
generated methods. Those changes are provided by inngest/monorepo#8702
and inngest/monorepo#8701.
Validation
go test ./proto/gen/api/v2 ./pkg/api/v2
Changelog
π Features
- (sandbox) Accept snapshot ID when creating sandboxes (#4767)
- (traces) Remove preview=false legacy trace path (#4799)
- (dashboard) Add hobby execution limit notices (#4819)
- (api) Reject unmapped v2 request fields via grpc-gateway fork
(#4816) - (api) Support CEL queries in REST run lists (#4858)
- (api) Define sandbox lifecycle contract (#4870)
- (queue) Configure partition peek limit (#4875)
- (api) Add include option for deferred parents (#4874)
- (auth) Add cli oauth login (#4780)
- (auth) Add mcp oauth support (#4781)
π Bug Fixes
- (debounce) Handle removed config during execution (#4788)
- (cqrs) Close query rows (#2680)
- (queue) Reduce semaphore requeue churn (#4807)
- (api) Serialize sandbox bytes written as a number (#4789)
- (semaphores) Improve semaphore iteration, breaking early, etc
(#4818) - (deps) Remove stale Tencent SDK replacement (#4829)
- (cel) Improve certain classes of cel filter errors (#4832)
- Preserve newer debounce events during queue item recovery (#4800)
- (queue) Route requeues to current shard (#4844)
- (ui) Update Next.js past critical advisories (#4847)
- (queue) Close migration requeue routing window (#4849)
- (api) Normalize unknown REST v2 body field errors (#4813)
- (api) Return error when event run status lookup fails (#4855)
- (components) NewCodeBlock drag-to-select breaks when a mid-drag
resize hits the editor (#4856) - (api) REST v1 GET requests should keep their error codes (#4857)
- (debounce) Finish source cleanup before execution (#4863)
- (ui) Hide unknown run status filter (#4867)
- (api) Return unknown run statuses accurately (#4868)
- (dashboard) Remove dead run-level AI treatment (#4871)
- (rest) Remove mistakenly added run-level has_ai field (#4872)
π Refactor
- (event-cel) Remove unused package (#4792)
- (debug) Remove unused/incomplete run debug feature (#4801)
- (metadata) Remove span metadata feature flag (#4820)
- (cqrs) Remove unused span stack reader (#4825)
- (cqrs) Remove legacy trace spans reader (#4826)
- Use go 1.26 new expressions (#4845)
- (queue) Drop iterator APIs from the queue reader interfaces (#4859)
βοΈ Miscellaneous Tasks
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Source: original entry β