Skip to content

Update Effect to v4.0.7 - #123

Merged
github-actions[bot] merged 1 commit into
mainfrom
renovate/effect
Oct 28, 2026
Merged

github-actions[bot] merged 1 commit into
mainfrom
renovate/effect

Conversation

@renovate

@renovate renovate Bot commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@effect/platform-bun (source) 4.0.6 → 4.0.7 age confidence
@effect/platform-node-shared (source) 4.0.6 → 4.0.7 age confidence
effect (source) 4.0.6 → 4.0.7 age confidence

Release Notes

Effect-TS/effect (@​effect/platform-bun)

v4.0.7

Compare Source

Patch Changes
Effect-TS/effect (@​effect/platform-node-shared)

v4.0.7

Compare Source

Patch Changes
Effect-TS/effect (effect)

v4.0.7

Compare Source

Patch Changes
  • #​6743 ac3485a Thanks @​IMax153! - Add a scoped CliOutput.Presenter service for suppressing, redirecting, or replacing built-in CLI help, invalid-invocation, and version output.

  • #​9873 3a4c691 Thanks @​effect-bot! - Require tool parameter schema services in Response.AllParts, Response.Part and Response.StreamPart, including for toolkits with handlers, and add Tool.ParametersDecodingServices.

  • #​9861 4f0600e Thanks @​effect-bot! - Add a toModelOutput option to Tool.make and Tool.dynamic for sending text, images and files to the model in place of the serialized tool result. Anthropic and OpenAI Responses send native content blocks; OpenAI-compatible APIs and OpenRouter send text with a placeholder for each file, via the new Prompt.toolModelOutputToText.

    OpenAI Responses now sends PDF file parts given as base64, data URL or HTTP(S) URL strings instead of dropping them.

  • #​9377 110fd22 Thanks @​gcanti! - Add a concurrency option to Arbitrary.checkEffect and global check configuration to run independent property evaluations concurrently. Results remain deterministic for deterministic generators and repeatable properties, while shrinking and replay stay sequential. The default concurrency is 1.

  • #​9811 aa58cda Thanks @​effect-bot! - Speed up Base64.encode and Base64Url.encode on large inputs and reduce the memory they allocate.

  • #​9913 8e257e7 Thanks @​Marve10s! - Fix duplicate interrupt reasons when interrupting a fiber inside Effect.withSpan or Effect.fn.

  • #​9846 e62a149 Thanks @​mkantautas! - Fix ChildProcessSpawner helpers hanging when a command fills a pipe the helper never reads. exitCode now reads and discards stdout and stderr until the process exits, and string, lines, streamString and streamLines read and discard stderr unless includeStderr is set. A failure reading that output while the helper runs, such as from an output Sink, now fails the helper.

  • #​9794 dcd43a5 Thanks @​effect-bot! - Clarify that ChildProcess output sinks for stdout, stderr and output additionalFds only receive data while the corresponding handle stream is consumed, and that the handle stream emits the sink's results.

  • #​9921 3388cdd Thanks @​Marve10s! - Fix Bash completion of file and directory paths containing spaces, quotes or glob characters.

  • #​9976 81b0e14 Thanks @​effect-bot! - Add Completions.fromCommand to effect/cli. It converts an existing Command tree into a CommandDescriptor, so build tooling can generate shell completion scripts with Completions.generate without running the CLI.

  • #​9881 a046435 Thanks @​effect-bot! - Skip Flag.withFallbackPrompt and Argument.withFallbackPrompt fallbacks when TerminalCapabilities.canPrompt is false, failing with the original MissingOption or MissingArgument error instead of rendering a prompt or waiting for input.

  • #​9922 f6d8968 Thanks @​Marve10s! - Show command help for invalid global flag values instead of failing with a raw parse error.

  • #​8349 5741c3a Thanks @​ArjunCodess! - Add the CliError.userMessage annotation so Command.run renders tagged handler errors without wrapping them in CliError.UserError.

  • #​9959 381d5c6 Thanks @​baptisteArno! - Record ClickHouse migrations only after they succeed, so a failed migration and the ones after it are retried on the next run.

  • #​10001 d47478a Thanks @​tim-smart! - Stop a runner that lost a shard lock from storing the final reply of a persisted request on that shard. Before storing it, the runner refreshes its shard locks and checks that the shard is still among them. If it is not, the request is left for the shard's new owner.

  • #​10037 383716d Thanks @​tim-smart! - Release a frozen runner's PostgreSQL advisory shard locks after shardLockExpiration. On PostgreSQL 14+, SqlRunnerStorage sets idle_session_timeout on its lock connection, so a runner that stops refreshing loses its locks instead of holding them until the server drops its TCP connection.

    With advisory locks on PostgreSQL and MySQL, SqlRunnerStorage refresh now only confirms locks its current lock session holds. After the lock connection is replaced, shards held by the previous session are reported lost instead of being silently reacquired.

  • #​9817 46dc30a Thanks @​effect-bot! - Fix cluster shutdown waiting for entityTerminationTimeout when a workflow is waiting on a persisted activity request that has not started. During runner shutdown the caller is now abandoned so the request replays under the next owner, and a durable caller abandoned this way is left for replay instead of being answered with an interrupt. With preemptiveShutdown: false, entities drain before the runner is marked as shutting down, so such a caller still waits for entityTerminationTimeout.

  • #​9985 3d5c862 Thanks @​tim-smart! - Fix a cluster workflow replay ignoring a durable deferred completion that is persisted but not yet processed by the new owner. A DurableDeferred.raceAll could pick a different winner on replay and run the wrong branch. Workflow replays now read the stored completion from the unprocessed request when it has no reply yet.

  • #​9845 93ebc4f Thanks @​effect-bot! - Fix ClusterWorkflowEngine running a completed step's compensation twice when interruptUnsafe interrupts a workflow during a running activity.

  • #​9938 c7b161a Thanks @​effect-bot! - Fix a forced shard release stalling forever when a child workflow wakes its still-running parent. The wake's cluster abandonment was retried, so it waited on the retired run and blocked the shard from being reacquired. The abandonment now interrupts the wake, so the activation unwinds, the release completes, and the parent is resumed under the next owner.

  • #​10034 e55945d Thanks @​jpowersdev! - Fix HttpClientRequest.compressBody replacing the request's Content-Type with the body's content type. Compression now only updates the Content-Encoding and Content-Length headers.

  • #​10035 1a53d6a Thanks @​jpowersdev! - Fix HttpMiddleware.compression sending an uncompressed response when Accept-Encoding contains an empty list member, such as gzip,. Empty members are now ignored as RFC 9110 requires.

  • #​9769 5e25cc9 Thanks @​Marve10s! - Fix Equal.equals and Hash.hash treating any two same-length ArrayBuffers as equal. ArrayBuffer and SharedArrayBuffer are now compared and hashed by their bytes.

  • #​9799 9503d5c Thanks @​effect-bot! - Fix Exit.hasFails, Exit.hasDies, Exit.hasInterrupts, and AsyncResult.isInterrupted narrowing away every failure when they return false. They now return boolean, like the matching Cause checks; use Exit.isFailure or AsyncResult.isFailure to narrow.

  • #​10026 13efb72 Thanks @​tim-smart! - Prevent later Semaphore.take calls from overtaking eligible queued requests while preserving mixed-size overtaking.

  • #​9767 8ca6abb Thanks @​Marve10s! - Fix Queue.offerAll, MutableList.appendAll and MutableList.prependAll keeping a reference to the caller's array. Changing that array afterward no longer changes the queued values.

  • #​9982 4a09dd1 Thanks @​jpowersdev! - Fix JsonSchema.toDocumentDraft07 emitting enum: [], which the Draft-07 metaschema rejects. An empty enum now becomes an allOf entry that rejects every value.

  • #​9754 346fc92 Thanks @​gcanti! - Fix Schema.isCapitalized and Schema.isUncapitalized accepting astral letters with the wrong case.

  • #​9967 20e5ba8 Thanks @​gcanti! - Fix Schema.isULID to reject values exceeding the 128-bit ULID limit.

  • #​9878 f4b237e Thanks @​Hona! - Fix Effect.fn stack frames retaining call arguments. A fiber forked inside an Effect.fn call inherits the frame, which kept the arguments of that call and of every traced call above it alive for as long as the fiber ran.

  • #​9887 1dd08ee Thanks @​jayhemnani9910! - Fix HttpClient.followRedirects re-encoding the query of the Location it follows (%20 became +, flag became flag=, and invalid UTF-8 bytes were replaced with U+FFFD). The redirected request now uses the resolved Location URL without rewriting its query.

  • #​9948 940be42 Thanks @​chiefcll! - Format values with own getters in Formatter.formatJson and Cause.pretty without Proxy, so engines that lack it no longer throw a ReferenceError. Getter results stay redacted on every engine.

  • #​10029 37be245 Thanks @​jpowersdev! - Fix HttpStaticServer dropping Content-Location, Date, Expires and Vary from 304 responses.

  • #​9944 563fde0 Thanks @​effect-bot! - Add HttpApiClient.decodeResponse to decode a raw endpoint response with the endpoint's declared success and error schemas, for example after a responseMode: "response-only" call.

  • #​9796 938cecb Thanks @​effect-bot! - Reject . and .. path parameters in HttpApiClient so they cannot change the request path through URL normalization.

  • #​9869 cf197c1 Thanks @​sarankumar1325! - Describe undeclared response statuses in HttpApiClient errors. The reason is still a DecodeError, now with the description undeclared status code, so the message reads Decode: undeclared status code (418 GET ...) instead of Decode error (418 GET ...).

  • #​9998 7ca71bb Thanks @​tim-smart! - Make HttpApiClient close the upgraded connection of an HttpApiSchema.Upgrade endpoint when the 101 response headers fail to decode, instead of leaving it open.

  • #​10002 1e73219 Thanks @​tim-smart! - Make HttpApiClient close the upgraded connection of an HttpApiSchema.Upgrade endpoint when it is interrupted right after taking the upgrade, before its cleanup was in place.

  • #​9941 4dd860d Thanks @​effect-bot! - Allow HttpApiSchema.StreamUint8Array and HttpApiSchema.StreamNdjson to declare a list of content types. The first entry is the default response type, streaming payloads are accepted under every entry, and OpenAPI emits the stream under each one.

  • #​9855 4d24a11 Thanks @​effect-bot! - Stop HttpClientError reasons from exposing request headers, query parameters and bodies when serialized or inspected. Their toJSON now prints the request as its method and redacted URL, and the response as its status, matching the error message. The full request and response remain available through the request and response properties.

  • #​9786 6bbc5ac Thanks @​gcanti! - Fix OpenAPI incorrectly marking optional HTTP parameters and headers as nullable.

  • #​9770 5fd25f4 Thanks @​Marve10s! - Fix HttpRouter.prefixed dropping the leading / from the local URL when only a query string follows the prefix. A handler for /api?x=1 now sees /?x=1 instead of ?x=1, and a router mounted under a prefix no longer returns 404 for /prefix?query.

  • #​10011 a461561 Thanks @​tim-smart! - Format HttpServerError messages with only the request path, so query values and URL credentials can't leak into span errors or logs. The full request is still available on the error.

  • #​9994 832b3c6 Thanks @​tim-smart! - Redact the URL in the failure that HttpMiddleware.tracer records for 5xx responses when the response ends, so exporters that read the message later no longer see query values that were only redacted during the request.

  • #​9874 837e906 Thanks @​john-griffin! - Fix HttpApiClient method calls inside Effect.all widening their required services to any, and reading services off a non-streaming method's type giving unknown.

  • #​9942 cd1f2d4 Thanks @​effect-bot! - Name both endpoints when HttpApiBuilder.layer finds two HttpApiEndpoints with the same method and path, and document how to declare request variants of one operation as a single endpoint.

  • #​9751 fb38ce6 Thanks @​effect-bot! - Allow buffered payloads and typed 101 response headers on HttpApiSchema.Upgrade endpoints.

    • HttpApiSchema.Upgrade({ protocol, headers }) declares 101 headers, encoded like WithHeaders headers. Clients decode them and return { headers, socket }, and OpenAPI lists them on the 101.
    • Upgrade endpoints can declare buffered payloads. Streaming payloads are still rejected.
    • Handlers receive an upgrade function instead of socket: upgrade(), or upgrade({ headers }) when headers are declared.
    • 426 Upgrade Required is returned before the payload is decoded.
    • HttpServerRequest gains upgradeWith({ headers }), and upgrade is upgradeWith({}). Third-party HttpServerRequest implementations must add it. WebSocket upgrades fail when headers are given.
    • NodeHttpServer waits for the request body to end before writing the 101. On Node 25 and older, which do not parse upgrade request bodies, it reads Content-Length bodies from the connection and answers chunked ones with 411 Length Required.
    • NodeMultipart fails with a MultipartError when its source stream errors, instead of waiting for more input.
  • #​9815 446c7ac Thanks @​tim-smart! - Ignore end, attribute, event, and addLinks calls on spans that have already ended. Logs and Effect.annotateCurrentSpan from fibers that outlive their span no longer modify the ended span, OtlpTracer no longer exports a span twice when end is called again, OtelSpan no longer triggers OpenTelemetry SDK warnings for late calls, and the DevTools tracer no longer sends events for ended spans.

  • #​10024 b48b7d8 Thanks @​jpowersdev! - Ignore malformed Set-Cookie Max-Age attributes instead of parsing their numeric prefixes.

  • #​8180 dc66d90 Thanks @​Ishkirat-Singh! - SchemaRepresentation.fromJsonSchemaDocument now supports $ref pointers below top-level definitions, including shared and recursive schemas, and rejects circular pointer aliases during import.

  • #​9999 d5a3dc3 Thanks @​jpowersdev! - JsonPatch.apply now throws on malformed JSON Pointer escapes, such as /a~2 or a trailing ~, instead of treating them as literal keys.

  • #​10027 482e0d5 Thanks @​tkr109! - Fix Match array patterns matching arrays shorter than the pattern.

  • #​8509 d84f518 Thanks @​IMax153! - Add a controlMessages option to the JSON-RPC serializations in RpcSerialization. MCP servers disable it, so @effect/rpc/* notifications from MCP clients no longer stop stdio servers or write @effect/rpc/Pong to stdout.

  • #​9961 d34d399 Thanks @​effect-bot! - Fix McpServer method-not-found, invalid-params and invalid-request errors including an internal _tag field. Strict MCP clients such as McpClient rejected these responses and the stdio transport stopped serving later requests.

  • #​9886 5bbd25e Thanks @​jayhemnani9910! - Fix MultipartParser rejecting horizontal tabs in quoted Content-Disposition and Content-Type parameters.

  • #​9768 14eab6b Thanks @​Marve10s! - MutableRef and Ref now compare by reference. Distinct instances with equal contents no longer compare Equal or share a HashSet or HashMap key.

  • #​9925 af8fcb3 Thanks @​Marve10s! - Fix OpenApi.fromApi to require all stacked security middleware instead of documenting them as alternatives.

  • #​9829 6b82a28 Thanks @​tim-smart! - Add the effect/observability/OtlpProxy module, which serves OTLP routes that forward browser telemetry to a collector or vendor and keep credentials

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions
github-actions Bot enabled auto-merge (squash) October 28, 2026 10:34
@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@github-actions
github-actions Bot merged commit 73b8b19 into main Oct 28, 2026
11 of 12 checks passed
@renovate
renovate Bot deleted the renovate/effect branch October 28, 2026 10:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants