Skip to content

fix(deps): update dependency effect to v4 - #1203

Merged
nicotsx merged 2 commits into
mainfrom
renovate/effect-4.x
Oct 17, 2026
Merged

nicotsx merged 2 commits into
mainfrom
renovate/effect-4.x

Conversation

@renovate

@renovate renovate Bot commented Oct 3, 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 (source) ^3.22.2 → ^4.0.5 age confidence

Release Notes

Effect-TS/effect (effect)

v4.0.5

Compare Source

Patch Changes
  • #​9055 f665607 Thanks @​Tyagiquamar! - Pass a NonEmptyArray to the onNonEmpty callback of Array.match when the input is a mutable array.

  • #​9110 dbf442b Thanks @​petar-omni! - Fix AsyncResult.all failures carrying a single input's previousSuccess instead of the combined record or tuple.

  • #​9105 74d1930 Thanks @​tim-smart! - Fix infinite atom rebuilds caused by late reads of uninitialized dependencies.

  • #​9145 a03afb6 Thanks @​jayhemnani9910! - Add Flag.withOptionalValue for GNU-style flags with an optional value, like --color[=WHEN]. A bare flag uses the given value; an explicit value must be attached with =.

  • #​9131 f159284 Thanks @​tim-smart! - Fix lost deferred callback wakes in cluster workflows when an activity suspends while a parallel activity is still running.

  • #​9094 5d301cc Thanks @​okxint! - Name cluster entity RPC server spans by entity type only (e.g. WorkflowEntity.Run) so span names stay low-cardinality. The entity ID is still recorded in the entity.id span attribute.

  • #​9176 cd74ea2 Thanks @​effect-bot! - Recover persisted local cluster replies from storage to prevent requests hanging when replies arrive before handler registration. Retain local reply notifications as storage-reader wakeups for low-latency streaming.

    Defer terminal in-memory reply publication until the successful outer transaction completes, preserving the commit boundary for reply readers.

  • #​9095 925cf64 Thanks @​jayhemnani9910! - Fix ConfigProvider.fromDotEnv and fromDotEnvContents rescanning expanded values when expandVariables is enabled. Self and circular references no longer overflow the stack, escaped \$NAME stays literal, and defaults apply when a reference expands to an empty value.

  • #​9109 54c51d9 Thanks @​devangpratap! - Fix Duration conversions throwing for very large millisecond values, and make those durations equal to their nanosecond equivalents.

  • #​9161 995c104 Thanks @​devangpratap! - Fix Duration conversions losing nanosecond precision for large integer millisecond values.

  • #​9112 816575e Thanks @​effect-bot! - Use bigint for 64-bit FileSystem.File.Info metadata. dev is now a bigint, and ino, rdev, nlink, and blocks are Option<bigint>, so file stats no longer fail or drop values outside the safe integer range. Node and Bun read dev, ino, rdev, and nlink as unsigned 64-bit integers. Deno reports these fields as numbers, so values above Number.MAX_SAFE_INTEGER are rounded by Deno before conversion.

  • #​9150 0df6e06 Thanks @​tim-smart! - Support per-request URLs in GraphQLProtocol.layerHttp and makeHttp, as a function of the context and operation or as an Effect<string>. GraphQLResolver batches lookups by URL.

  • #​9137 52a7d3c Thanks @​tim-smart! - Add HttpClientRequest.compressBody for gzip and deflate request body compression.

  • #​9160 ec831c3 Thanks @​fubhy! - Accept Redacted values as URL parameters in UrlParams and HttpClientRequest.

  • #​9138 3abc63e Thanks @​tim-smart! - Add HttpMiddleware.decompression, which decompresses gzip and deflate request bodies, limits the decompressed size, and rejects other codings with 415.

  • #​9113 a841b8b Thanks @​effect-bot! - Fix interruption calling Math.random and hashing defects, which made deterministic hosts that forbid randomness loop forever or overflow the stack.

  • #​9098 91efea7 Thanks @​armancharan! - Narrow only the matched prefix when a Match tuple pattern is applied to an array or variadic tuple, so the remaining elements keep their original type.

  • #​9151 e271997 Thanks @​tim-smart! - Fix McpServer types to require schema services for resource templates and encoding services for prompt parameters with completion handlers. Missing services are now caught at compile time.

  • #​9117 7719bda Thanks @​jayhemnani9910! - Pad 64-bit trace ids to 128 bits in OTLP exports and traceparent headers.

  • #​9139 563397f Thanks @​tim-smart! - Add opt-in gzip compression to built-in OTLP JSON and protobuf exporters via the compression option or OTEL_EXPORTER_OTLP_COMPRESSION and per-signal environment variables. Compress batches once before retries using HttpClientRequest.compressBody, retaining its default 1KB threshold and uncompressed defaults.

  • #​9127 65b04f8 Thanks @​effect-bot! - Add Path.resolveWithin(root, input), which resolves a relative path beneath a root and returns Option.none() for traversal escapes and rooted inputs, using the platform's path rules.

  • #​9143 c2859bf Thanks @​danieljvdm! - Collect tool approvals once per LanguageModel request instead of twice.

  • #​9134 c462214 Thanks @​effect-bot! - Reduce SQLite statement overhead by borrowing the shared connection while preserving semaphore exclusion and failed-COMMIT recovery.

  • #​9169 d1ad2c7 Thanks @​danieljvdm! - Cache the last response decoder for each language model response kind, keyed by validation mode and ordered tool schema identities.

  • #​9136 12be65e Thanks @​tim-smart! - Redact sensitive query values in HTTP spans, request inspection and error messages. Also redact URL credentials in client spans, request inspection and errors. Request URLs sent over the wire are unchanged.

    Move AWSAccessKeyId, Signature, sig and X-Goog-Signature from Headers.CurrentRedactedNames to the new UrlParams.CurrentRedactedNames. A custom list replaces these defaults. Add UrlParams.isRedactedName, UrlParams.redact and UrlParams.redactUrl for explicit redaction.

  • #​9088 352618a Thanks @​armancharan! - Match.when, Match.whenOr, Match.whenAnd, and Match.not now reject object patterns with keys the input type does not have.

  • #​9166 2a8ec8b Thanks @​danieljvdm! - Keep Schema decoding synchronous when a decoding default is an already-successful effect, such as Effect.succeed(...).

  • #​9135 8dec89d Thanks @​tim-smart! - Preserve completion-handler service requirements in McpServer.registerResource and McpServer.resource URI templates when handlers take a context argument.

  • #​9118 f05642f Thanks @​jayhemnani9910! - Fix handler-local request.url for parameterized and percent-encoded HttpRouter prefixes, respecting duplicate-slash configuration.

  • #​9187 3ad9a0c Thanks @​effect-bot! - Fix RPC socket clients closing healthy connections before sending a ping when a ping tick runs late. Slow requests now stay connected while the server responds to pings.

  • #​9103 dba4e52 Thanks @​gcanti! - Reject duplicate discriminants at compile time in Schema.toTaggedUnion, including duplicates in nested unions and numeric/string property-key collisions such as 1 and "1".

  • #​9096 7ca8224 Thanks @​jayhemnani9910! - Fix Sse.encoder dropping event data after a lone \r. CR and CRLF line endings in event data now start a new data: line, like LF.

  • #​9133 65d20dd Thanks @​tim-smart! - Add filesystem watcher installation notifications and wait for all GraphQL watch subscriptions, including nested directories, before generating. This prevents edits during startup from being missed.

  • #​9106 e3ff963 Thanks @​armancharan! - Fix Stream.timeout and Stream.timeoutOrElse hanging when an async iterator's pending next() never settles.

  • #​9183 bc454a3 Thanks @​Marve10s! - Fix String.snakeToCamel and String.snakeToPascal throwing on a trailing underscore or an even-length run of underscores, such as "foo_" or "__". A trailing underscore is now dropped and an even-length run of underscores returns ""; inputs that converted before give the same result.

    String.noCase no longer calls a custom transform for input without words, such as "" or "---".

  • #​9124 793d89e Thanks @​jem-computer! - Support structured decision instructions, descriptions, and score legends in TypeSafe, Cloudflare, and OpenRouter. Decision.rate accepts labeled descriptions; Rate.criteria entries are now { label, description } objects instead of strings.

  • #​9173 ec9332b Thanks @​effect-bot! - Remove interrupted sleeps from TestClock and insert new sleeps in order instead of re-sorting the queue.

  • #​9172 f2b3d8a Thanks @​effect-bot! - Fix TestClock.adjust and TestClock.setTime skipping sleeps that a woken fiber registers after more than one scheduler hop, such as after Effect.yieldNow or forking and joining a child.

  • #​8166 cb2cf5f Thanks @​KhraksMamtsov! - Effect.Transaction now stores attempt metadata, analogous to Schedule.CurrentMetadata. Yield it inside a transaction body to read attempt, retryReason, and the same timing fields as a schedule (start, now, elapsed, elapsedSincePrevious).

  • #​9092 b8c201d Thanks @​effect-bot! - Add a detached option for discarded child workflows. Detached children neither wake their parent on completion nor get interrupted with it.

  • #​9091 118c9c4 Thanks @​effect-bot! - Keep workflows suspended by Workflow.SuspendOnFailure from retrying failed activities until explicitly resumed. Interrupting a failure-suspended workflow now completes it as interrupted without re-running the failed activity.

v4.0.4

Compare Source

Patch Changes
  • #​9030 7547a99 Thanks @​effect-bot! - Bound sparse array indices in SchemaGetter.makeTreeRecord, used by Schema.fromURLSearchParams and Schema.fromFormData. An indexed container with more than 20 holes is now returned as an object keyed by its index strings instead of a sparse array, and appending after the maximum array index no longer throws.

  • #​9083 711719d Thanks @​effect-bot! - Bound import-time stack detection probes to the frames they inspect, restoring the caller's stack trace limit afterward.

  • #​9041 8f1ea52 Thanks @​tim-smart! - Stop grouped RequestResolvers from retaining batch keys for the lifetime of the resolver. Equal keys are now matched by the pending batch map, so a key is dropped as soon as its batch stops pending, including after interruption.

  • #​9010 c93485e Thanks @​effect-bot! - Support an explicit client servername for TLS socket upgrades without changing hostname behavior when omitted.

  • #​8990 37e088f Thanks @​bastiankistner! - Use decoded response aliases in generated HTTP clients. Render bare numbers with a standard leading finite check as Schema.Finite, preserving annotations and other checks.

  • #​8998 9314666 Thanks @​gchen0002! - Optimize Context.pick for zero or one service.

  • #​9048 a0a26b7 Thanks @​jayhemnani9910! - Fix zoned DateTime.add and DateTime.subtract to apply hours, minutes, seconds and milliseconds as elapsed time across DST transitions.

  • #​9008 cc843ea Thanks @​effect-bot! - Add toolCallValidation: "deferred" for callers using disableToolCallResolution: true. Model-generated tool calls return with unknown parameters, including invalid parameters and undeclared tool names, even without a toolkit. Supported by the Anthropic, OpenAI, and OpenAI-compatible providers. Strict validation remains the default; provider-executed calls remain validated.

  • #​8979 ab90be9 Thanks @​tim-smart! - Add experimental effect/graphql with typed operations, middleware, HTTP and subscription transports, partial results, serializable errors and cursor pagination.

  • #​9052 a59b971 Thanks @​Tarekkharsa! - Fix HttpClient.withRateLimiter reading a Retry-After HTTP date as a number of seconds.

  • #​9031 fccf660 Thanks @​effect-bot! - Add McpServer.layerHttpRequestScoped for serverless hosts such as Cloudflare Workers. Each POST is served by an MCP server owned by that request, so no fiber or timer outlives the request. The new layer accepts only sessionless protocol adapters such as v2026_07_28, with no subscription or session termination options. McpServer.layerHttp retains its long-lived server behavior.

  • #​9081 1bfd8fd Thanks @​hsyntax! - Tighten colliding bounds in place when exporting JSON Schema, instead of moving them into allOf. This applies to numeric, length, item-count and property-count bounds, and an inclusive or exclusive bound implied by the other on the same side is dropped. For example, Schema.Natural now exports minimum: 0, and Schema.Int.check(Schema.isGreaterThan(0)) exports exclusiveMinimum: 0 without the safe-integer minimum.

  • #​9013 78e4c43 Thanks @​jayhemnani9910! - Fix Multipart.toPersisted failing for uploads named . or .. and for long multi-byte file names.

  • #​8991 fde67a1 Thanks @​fubhy! - Add NetAddress.loopbackAddresses.

  • #​8992 118deef Thanks @​fubhy! - Add Host.toFullyQualified, Host.toRelative, and Host.parseHostsFile.

  • #​9046 cea74c9 Thanks @​effect-bot! - Persist outgoing cluster messages while the locally assigned shard is waiting for its lock.

  • #​9056 b7c1ac6 Thanks @​tim-smart! - Prompt.fromResponseParts now keeps streamed text and reasoning in stream order, and keeps partial text from unended text blocks.

  • #​8997 f837966 Thanks @​effect-bot! - Release the durable waits of losing DurableDeferred.raceAll branches once the race settles, so a late completion such as a losing DurableClock.sleep no longer preempts and replays the continuing workflow

  • #​9053 09738f4 Thanks @​Tarekkharsa! - Honor Retry-After in HttpClient.retryTransient.

  • #​9019 22e7129 Thanks @​effect-bot! - Allow configuring Scalar's preferred authentication security scheme through HttpApiScalar without a TypeScript cast.

  • #​9069 fdcb47e Thanks @​effect-bot! - Fix cluster Sharding startup accessing storage-loop state before initialization, preventing a scheduler-dependent ReferenceError and delayed initial storage reads.

  • #​9049 fc349a1 Thanks @​jayhemnani9910! - Fix Sink.takeUntil and Sink.takeUntilEffect dropping the element after a match. They now stop at the match and return the remaining input as leftovers.

  • #​8979 ab90be9 Thanks @​tim-smart! - Add dispatchEmptyNamedEvents to Sse decode options. It also dispatches an event that sets an event: name but has no data: line, which protocols such as graphql-sse use for complete.

  • #​9065 892d14d Thanks @​Abdullah1738! - Fix quadratic parsing time in Sse.makeParser and Sse.decode for long lines split across many chunks.

  • #​9066 077c557 Thanks @​effect-bot! - Complete HTTP server spans synchronously before the request fiber exits, preventing completed spans from being lost during immediate runtime shutdown.

  • #​9029 4a999a3 Thanks @​effect-bot! - Clean up unused Anthropic bindings and make documentation-only imports type-only, preserving server-tool inputs and documentation links.

  • #​9062 797696a Thanks @​adam-r-kowalski! - Merge outer headers and cookies into a copy of a raw Response in HttpServerResponse.toWeb, leaving the original headers unchanged. This supports immutable headers and prevents cookies from accumulating across requests that reuse a response. Responses with nothing to merge are returned unchanged.

  • #​9007 cf5179b Thanks @​effect-bot! - Wake a suspended WorkflowEngine.execute caller as soon as its workflow has a final result, instead of waiting for the next suspendedRetrySchedule step. A replay that suspends again does not spend a step of the schedule. With ClusterWorkflowEngine, only callers on the runner that owns the execution are woken early; other callers keep relying on suspendedRetrySchedule.

  • #​9037 e1c6053 Thanks @​effect-bot! - HttpEffect.toWebHandler now interrupts a streamed response body when the request is aborted after its headers were sent, even if the body is no longer being read, which releases the request scope.

v4.0.3

Compare Source

Patch Changes
  • #​8977 b4e5af8 Thanks @​kitlangton! - Prevent crashes and premature interruption when Effect.cached, Effect.cachedWithTTL, and Effect.cachedInvalidateWithTTL are synchronously re-entered.

  • #​8982 b8d6e7a Thanks @​Yi-111-a! - Export CliOutput.displayWidth to measure terminal-cell widths using the same logic as built-in CLI help and tables.

  • #​8933 89d5c88 Thanks @​tim-smart! - Respect NO_COLOR in CLI prompts and the command wizard, suppressing color and style escapes while preserving cursor and redraw controls.

  • #​8941 66257d2 Thanks @​Tanner-Scadden! - Hand cluster shards off one at a time when Sharding shuts down, after their entities and singletons have stopped, so live runners can take them over sooner. The handoff is best effort: its wait is bounded, and if it times out, releaseAll attempts to release the remaining locks. A runner that is shutting down no longer acquires new shards, and releasing a shard no longer waits forever on an entity whose id is also active on another shard.

  • #​8940 cd2ab19 Thanks @​Tanner-Scadden! - Fix cluster shard handoffs. Interrupts and stream acknowledgements now reach requests still draining on the previous owner, and RpcServer accepts acknowledgements for active streams after a client's EOF. Volatile requests sent during a handoff wait, for at most shardLockExpiration, until the shard can be served instead of repeatedly failing with EntityNotAssignedToRunner.

  • #​8897 ca068ce Thanks @​effect-bot! - Add separate migration and storage layers to cluster SQL storage so applications can use tables migrated by an owner connection.

  • #​8895 f686000 Thanks @​tim-smart! - Serialize SchemaError as a compact object containing its tag and formatted message in JSON logs and Node inspection, without dumping schema AST nodes.

  • #​8968 e052f1b Thanks @​sledorze! - Avoid a redundant map copy when Context.add rebases an overlay chain.

  • #​8487 c755b69 Thanks @​fubhy! - Add TestCrypto.layer, which provides deterministic random operations derived from a seed while preserving a platform crypto service's digest implementation.

  • #​8935 ebe487f Thanks @​tim-smart! - Turn Crypto.randomUUIDv4 and Crypto.randomUUIDv7 into functions accepting an optional { format: "hex" | "bytes" } option. Call them with () for the default lowercase, hyphenated UUID string, or with { format: "bytes" } for a 16-byte Uint8Array.

  • #​8926 63bfad8 Thanks @​effect-bot! - Fix DurableDeferred.raceAll and DurableDeferred.into so a workflow branch continues after its result is recorded instead of stalling until a concurrently parked sibling is woken. The effect passed to DurableDeferred.into now counts as in-flight work, so a parked sibling no longer suspends the run while it runs.

  • #​8921 8598157 Thanks @​devangpratap! - Fix Duration.fromInputUnsafe throwing on infinite nanosecond totals. It now returns an infinite duration, and Duration.fromInput returns Some instead of None.

  • #​8972 76a03f7 Thanks @​devangpratap! - Fix Duration.times throwing when a nanosecond-backed duration is multiplied by a fractional or non-finite number. Fractional results round to the nearest nanosecond.

  • #​8900 182e26d Thanks @​effect-bot! - Add a noFollow option to FileSystem.open to reject symlinks at the final path component. Supported on Node and Bun on POSIX; Windows and Deno return BadArgument. Add { position } to File.read and File.readAlloc for concurrent reads that leave the cursor unchanged.

  • #​8885 a46592a Thanks @​effect-bot! - Preserve duplicate slashes in query values when FindMyWay normalizes request paths.

  • #​8986 1d3419e Thanks @​jayhemnani9910! - Fix histogram exporters to retain all finite boundaries and overflow observations in OTLP, and emit a single +Inf bucket in Prometheus.

  • #​8932 e00eaae Thanks @​tim-smart! - Defer terminal input acquisition until a prompt needs user input, so constant fallback prompts leave piped stdin untouched.

  • #​8888 133ceb2 Thanks @​RhysSullivan! - Return empty 200 text/event-stream responses for MCP HTTP request POSTs when cancellation withholds every reply. Return 500 for other request POSTs that end without a response.

  • #​8924 a494a64 Thanks @​effect-bot! - Add McpServer.layerHttp({ allowSubscriptions: false }) to disable v2026_07_28 subscriptions while keeping request-scoped progress and log notifications.

  • #​8890 d6082a2 Thanks @​tim-smart! - Send MCP cancellation notifications for interrupted server-to-client requests instead of internal RPC control messages.

  • #​8925 ee3a350 Thanks @​effect-bot! - Prevent MCP subscriptions from receiving deferred list-change notifications emitted before they subscribed, while preserving coalesced runtime changes.

  • #​8955 7ba976c Thanks @​effect-bot! - Allow interrupted activities to run again when the in-memory workflow engine replays a preempted execution.

  • #​8973 9dbd07e Thanks @​fubhy! - Accept address inputs in Dns.reverse and name server inputs in the platform Dns services, and add Dns.nameServerFromInput.

  • #​8953 d4f7dc3 Thanks @​fubhy! - Add TLSA records to effect/net/Dns, with a Schema.DnsTlsaRecord schema whose JSON codec encodes the certificate association data as hex. The Node.js Dns service queries them with resolveTlsa (Node.js 22.15 or 23.9 and later); Bun, Deno, and older Node.js versions fail TLSA queries with Unsupported.

  • #​8880 a9b5148 Thanks @​fubhy! - Add experimental Host, Dns, and AddressResolver modules to effect/net for host parsing, DNS queries, and endpoint resolution, with Node, Bun, and Deno services. DNS operations accept and normalize domain-name strings; endpoint resolution also accepts host:port strings. Add scoped IPv6 literals and host and DNS record schemas, including JSON codecs for records.

    Provide the services explicitly; they are not included in the platform *Services layers. Use NodeAddressResolver.layer.pipe(Layer.provideMerge(NodeDns.layer)) to provide both Node services.

  • #​8970 e7d84e4 Thanks @​fubhy! - Add fromInput constructors to the effect/net data types.

  • #​8899 0e2b988 Thanks @​tim-smart! - Answer orphaned cluster workflow activity requests with Suspended instead of waiting indefinitely for replay registration.

  • #​8987 84f48df Thanks @​jayhemnani9910! - Omit min and max from subsequent delta histogram exports in OtlpMetrics: cumulative extrema do not describe the reported interval.

  • #​8907 48ed32f Thanks @​tim-smart! - Add a delay option to PersistedQueue.offer that postpones an element's first delivery in the memory, Redis and SQL stores.

  • #​8904 59e58a6 Thanks @​effect-bot! - Add PowerShell CLI completions with --completions powershell (alias pwsh).

  • #​8409 b9e7821 Thanks @​tim-smart! - Add DatagramSocket for UDP on Node, Bun, and Deno, and NetAddress.inetAddressFromNativeUnsafe for runtime-reported addresses.

  • #​8943 aa811e4 Thanks @​Tanner-Scadden! - Report RPC response encoding failures to ErrorReporter and include the RPC tag in client defects.

  • #​8958 bfc5742 Thanks @​tim-smart! - End the RPC server span with the encoding defect when a response fails to encode, instead of recording it as a client interruption.

  • #​8976 f9f7a5a Thanks @​juliusmarminge! - Add onPingTimeout to RpcClient.makeProtocolSocket and RpcClient.layerProtocolSocket to distinguish ping timeouts from other socket failures. It runs only when a ping timeout drops an open connection, before onDisconnect and in-flight call failures; defects are logged and ignored.

  • #​8956 73fa287 Thanks @​schickling-assistant! - Export Schema.isInt and Schema.Int as exact JSON Schema integers bounded by Number.MIN_SAFE_INTEGER and Number.MAX_SAFE_INTEGER. Composed bounds retain the tighter constraint, and exact integer branches preserve oneOf.

  • #​8937 7ff5048 Thanks @​effect-bot! - Skip startup stack probing when Error.stackTraceLimit is zero, avoiding unnecessary stack formatting during module loading.

  • #​8927 7803e51 Thanks @​effect-bot! - Hold the shared connection for the whole statement or stream on single-connection SQL clients, so another fiber's transaction can no longer roll back an acknowledged write or expose uncommitted rows to a plain read.

  • #​8938 93410da Thanks @​effect-bot! - Add Stdio.stderrIsTerminal with an overridable false default and runtime detection for Node.js, Bun, and Deno.

  • #​8963 aef1d1f Thanks @​tim-smart! - Add ClusterSchema.InterruptOnTermination to interrupt opted-in RPCs as soon as entity termination starts. Persisted requests resume under the next owner without saving an interrupt reply, and server-side Uninterruptible takes precedence.

  • #​8917 d6d515b Thanks @​Brendonovich! - Make HttpClient.withRateLimiter wait for the reported reset once a response's remaining budget is exhausted, including when a limit header is also present.

  • #​8892 ea52c24 Thanks @​effect-bot! - Propagate SQL transaction COMMIT errors as typed SqlError failures when cleanup succeeds. Preserve both COMMIT and cleanup errors as defects when cleanup fails, so typed recovery cannot hide an unsafe connection state.

  • #​8913 7e44402 Thanks @​grzegorz-naileditgames! - Reject B3 single-header and multi-header trace contexts with invalid trace or span identifiers.

  • #​8978 0b17b9e Thanks @​tim-smart! - Allow WebSocket clients on Node and Bun to send handshake headers alongside subprotocols through socket constructors, channels, and layers. Preserve browser-compatible constructor calls when headers are not supplied.

  • #​8891 9753be9 Thanks @​tim-smart! - Deliver terminal replies for persisted ClusterSchema.WithTransaction requests only after commit or clean rollback. On transaction failure, recover a committed reply or retry the request.

  • #​8886 977096b Thanks @​effect-bot! - Fix lost failure replies for persisted cluster RPCs using ClusterSchema.WithTransaction. Save typed failures and non-fatal defects after rollback so retries receive the stored reply. Successful replies still commit with the handler's writes.

  • #​8882 cf58cb0 Thanks @​devangpratap! - Fix generated Zsh completions for flag descriptions containing ].

v4.0.2

Compare Source

Patch Changes
  • #​8870 26c1089 Thanks @​Makisuo! - Update AI tracing to use current OpenTelemetry GenAI conventions:

    • Replace gen_ai.system with gen_ai.provider.name. The system option, BaseAttributes and WellKnownSystem are removed in favor of provider: { name }, ProviderAttributes and WellKnownProviderName.
    • Remove gen_ai.token.type, which is not a span attribute in the current conventions, along with the token option, TokenAttributes and the AllAttributes types.
    • LanguageModel spans are client spans and record gen_ai.output.type (text or json) for every provider. The OpenAI responseFormat telemetry option and WellKnownResponseFormat are removed.
    • Move OpenAI service-tier and system-fingerprint attributes from gen_ai.openai.* to openai.*.
    • Rename concurrency, toolChoice and objectName span attributes to effect.ai.concurrency, effect.ai.tool_choice and effect.ai.object_name. Tool choices record the resolved value, defaulting to "auto"; object choices are JSON-encoded.
    • Include cached tokens in Anthropic gen_ai.usage.input_tokens and report cache reads and writes as gen_ai.usage.cache_read.input_tokens and gen_ai.usage.cache_write.input_tokens. The duplicate Anthropic cacheCreationInputTokens and cacheReadInputTokens response options are removed.
  • #​8849 6c59de7 Thanks @​gcanti! - Fix Arbitrary property checks, schema generation, and shrinking swallowing defects or interruption when they accompany typed failures. Propagate the defect and interruption reasons with their annotations, removing typed failures from mixed causes to preserve the existing error types.

  • #​8760 467d3ac Thanks @​fubhy! - Include runtime layer errors in the result type of AtomRuntime.subscriptionRef.

  • #​8820 375c1b0 Thanks @​jarrednorrisdev! - Preserve the URL hash and omit empty query strings when writing Atom.searchParam.

  • #​8771 45a70ce Thanks @​jarrednorrisdev! - Prevent Atom.windowFocusSignal and Atom.refreshOnWindowFocus from throwing when window is undefined.

  • #​8837 fb757e3 Thanks @​tim-smart! - Fix a Cache.get interruption race that could leave an abandoned lookup running and its key stuck in the cache.

  • #​8778 716e358 Thanks @​fubhy! - Fix a stack overflow when many consecutive failure handlers throw synchronously. The thrown defect is now captured as the fiber's exit and pending finalizers still run.

  • #​8838 af114e6 Thanks @​tim-smart! - Derive Channel.decodeText options from the TextDecoder constructor so declarations work with Node-only types without requiring the DOM library.

  • #​8758 d0b3862 Thanks @​fubhy! - Fix Channel.mapInput data-last overload to preserve channel requirements and add the mapping function's requirements.

  • #​8757 7064da9 Thanks @​fubhy! - Fix Channel.runIntoPubSub to include the channel's error type in the returned Effect.

  • #​8810 eee0eeb Thanks @​fubhy! - Fix compiled Struct parsers sharing mutable output when the same suspended Effect is executed more than once.

  • #​8808 [b9d6581](https://redirect.github.com/Effect-TS/

[!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 is behind base branch, or you tick the rebase/retry checkbox.

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


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

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

@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c3491ac1-285f-4300-bbf3-4088752aef4d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@socket-security

socket-security Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedeffect@​3.22.2 ⏵ 4.0.599 +710093 +298 +1100

View full report

@renovate
renovate Bot force-pushed the renovate/effect-4.x branch 8 times, most recently from d11a284 to 7d7f725 Compare October 9, 2026 20:02
@renovate
renovate Bot force-pushed the renovate/effect-4.x branch 15 times, most recently from 3ea1216 to f01d2c5 Compare October 15, 2026 23:17
@renovate
renovate Bot force-pushed the renovate/effect-4.x branch 2 times, most recently from acd3c4a to 44bf931 Compare October 17, 2026 06:40
@nicotsx
nicotsx force-pushed the renovate/effect-4.x branch from 44bf931 to c174666 Compare October 17, 2026 06:51
@renovate

renovate Bot commented Oct 17, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@nicotsx
nicotsx merged commit d61cbfe into main Oct 17, 2026
15 checks passed
@nicotsx
nicotsx deleted the renovate/effect-4.x branch October 17, 2026 07:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant