megachangelog
Announcement1.45.0

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

This 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.

Rendered release notes body

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, etc

    improves 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 shard

    None

    Tests

    • go test -count=1 -run "TestProducerRequeue" ./pkg/execution/queue
  • #4849 fix(queue):
    close migration requeue routing window

    None

    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 execution

    None

    Verification

    • go test ./pkg/execution/debounce -count=1
    • golangci-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

  • (metrics) Remove unused pkg/usage (#4793)
  • (api) Add proto permission metadata (#4833)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

authapiqueueclicel-filteringbugfix

Source: original entry β†—