Repository navigation
chore(deps): update dependency effect to v4.1.2 - #34
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/effect-4.x
branch
from
November 2, 2026 05:00
e531e7f to
46f16e4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
4.0.6→4.1.2Release Notes
Effect-TS/effect (effect)
v4.1.2Compare Source
Patch Changes
#10217
5216684Thanks @devangpratap! - FixByteSizedecimal unit constructors such asmegabytes(2.01)throwing or returning the wrong byte count, and reject fractional-byte quantities instead of rounding them.#10261
b707ad1Thanks @effect-bot! - Fix cluster entity defect restart backoff being shared by all entities of a type and never resetting.#10249
46f48afThanks @effect-bot! - Prevent an interrupted cluster request that keeps defecting from stalling message delivery to other entities.#10218
92201bcThanks @sbking! - Defer the runner notification for a discarded persisted send made inside aClusterSchema.WithTransactionhandler until the transaction commits. The message was invisible to the runner before the commit, so delivery waited for the next storage poll.#10260
cf329f3Thanks @effect-bot! - FixClusterWorkflowEngineturning transient storage failures while saving durable clocks or deferred completions into workflow defects; they are now retried.#10262
1d25d78Thanks @effect-bot! - FixClusterWorkflowEngineblocking shard reacquisition indefinitely after a forced shard release interrupted a workflow resume waiting on its active run.#10226
d190d97Thanks @tim-smart! - FixClusterWorkflowEngineletting a runner that lost its shard delete a newer activity result, which could run the activity again and change the workflow's history.#10241
d7b3b6bThanks @Marve10s! - FixHttpClient.withCookiesRefnot sending cookies when the request URL is completed after it, for example by thebaseUrlofHttpApiClient. Cookies are now selected for the final URL of each request, including redirect hops.#10211
a478745Thanks @effect-bot! - KeepEventLogServersession auth challenges on their RPC connection, so a challenge is released when its client disconnects instead of being retained by the server after an unauthenticated disconnect.#10221
69eaa29Thanks @clean99! - FixIterable.filterMapWhileiterators yielding values or pulling from the source after they have returneddone.#10233
3711ba6Thanks @clean99! - FixIterable.unfolditerators calling the generating function again after they have returneddone.#9972
715c5e4Thanks @eugene1g! - AddJson5.parseandJsonc.parsetoeffect/encoding, returning aResultthat fails with anEncodingErroron invalid input.#10257
b0a1ceeThanks @tim-smart! - Use aClientCapabilitiesinstance for the fallback MCP client profile inMcpServer.#10242
2a10622Thanks @Marve10s! - FixMcpServerrunning middleware provided outside a combined middleware inside it.#10243
6bccdd5Thanks @Marve10s! - Encode declaredMcpServertool failures with their JSON codec, so values such asbigint,MapandOptionno longer cause an internal error or lossy output#10244
60be011Thanks @Marve10s! - Fix 2026-07-28 MCP listings failing for resources, resource templates and prompts registered as plain objects.#10235
e1edcdcThanks @schutzelaars! - Stop OTLP log and trace exporters from keeping a timer pending while idle. A Node program kept alive only by an idle exporter now exits.#10210
ef81e9dThanks @effect-bot! - FixRateLimiter.layerStoreRedissharing state between different keys. A key ending in:refillor:adaptiveno longer reads or writes another key's token-bucket refill time or adaptive state.#10223
013fb34Thanks @effect-bot! - FixRpcServerreturning an empty HTTP 500 for requests with malformed headers; such requests now fail with a defectExit, and malformed notifications are dropped.#10251
113dbc7Thanks @wmaurer! - FixSchedule.fixed,Schedule.windowedandSchedule.cronreturning a zero delay when the clock is a fraction of a nanosecond before the next run.#10230
519d66eThanks @effect-bot! - AddSchemaBinary.int32,uint32,int64anduint64, opt-in schemas that write integers as fixed-width little-endian payloads. The 32-bit schemas decode tonumberand the 64-bit schemas tobigint. Out-of-range and non-integer values are rejected instead of wrapped.#10213
e7a6ea4Thanks @effect-bot! - SQL transactions now traceBEGIN,COMMIT,ROLLBACKand savepoint statements as child spans ofsql.transaction, replacing itseffect.sql.transaction.commit,savepointandrollbackevents; withStatement.SpanPropagationEnabled, the transaction also parents connection spans and records its connection wait time.#10240
019f35eThanks @clean99! - FixStream.groupAdjacentBydropping its last group when the stream fails. The group is now emitted before the error.#10278
2a0d16cThanks @tim-smart! - FixAnthropicStructuredOutput.toCodecAnthropic,OpenAiStructuredOutput.toCodecOpenAI, and MCP tool schemas returning or rejecting a root$refwhen the schema is an identified alias of another identified schema.#10236
e5570c9Thanks @clean99! - FixDateTime.startOf,endOfandnearestmoving a zonedDateTimeto the other occurrence of a repeated DST hour, and calendar-unitendOfreturning an instant an hour early when the period ends in a repeated hour.v4.1.1Compare Source
Patch Changes
#10186
8567117Thanks @effect-bot! - RestoreSchemaBinary.toCodecderivation forPrompt.FilePartand the AI response part schemas that include it.#10119
3f5c6aaThanks @Marve10s! - FixAtomRegistry.subscribewithoutimmediatenever notifying for an atom that has not been read yet. Subscribing now builds the atom, so the listener hears later changes. This also fixesget.subscribe,get.streamwithwithoutInitialValue, anduseAtomSubscribein@effect/atom-react.A failed build no longer makes
subscribethrow: the next read reports the failure, and the listener hears the recovery. An error thrown by a failed build's finalizer no longer aborts the next build; it is reported once that build has its value.#10189
29b89b6Thanks @tim-smart! - Speed upBase64Url.decodeandBase64Url.decodeStringby decoding the URL-safe alphabet directly, instead of transliterating the input and decoding it again as standard Base64.#10188
0b4cfbcThanks @effect-bot! - LimitBigDecimalscales to prevent resource exhaustion.BigDecimal.fromStringandSchema.BigDecimalFromStringreject strings whose scale, before or after removing trailing zeros, is outside ±10,000, such as"1e300000000","10e10000"or more than 10,000 fractional digits.BigDecimal.fromStringUnsafethrows for them.sum,subtract,remainder,scale,round,truncate,ceil,floor) throw aRangeErrorwhen the scales differ by more than 20,000.roundreturns values already at or below the target scale unchanged.#10192
088510fThanks @effect-bot! - EnforceMaxBodySizeon buffered request body reads inBunHttpServer,DenoHttpServer, andHttpServerRequest.fromClientRequest.#10142
ad62cd7Thanks @effect-bot! - AddonRejectiontoCircuitBreaker.execute. With"allow", a call the circuit would refuse withCircuitOpenorCircuitHalfOpenruns unrecorded instead, while a call the circuit admits, probe included, is recorded as usual. Calls that must always run can then still count towards the breaker's state. Defaults to"fail", which keeps the current behavior.#10169
ba406a5Thanks @tim-smart! - Pass{ probe }toCircuitBreakerclassifycallbacks, includingHttpClient.withCircuitBreaker.probeistruewhen the call is the HalfOpen probe, so a classifier can count an outcome it otherwise ignores, such as a rate-limited response, as a failure that reopens the circuit. Existing one-argument classifiers are unchanged. The callback type is exported asCircuitBreaker.Classifier.#10126
5e56ebaThanks @baptisteArno! - FixClickhouseMigratorfailing to create its migrations table or record applied migrations, by running those statements as ClickHouse commands instead of queries.Migrator.makeaccepts an optionaltransformWritesoption for these statements, defaulting toidentity.#10206
6a95d51Thanks @effect-bot! - Retry transientPersistenceErrors when a cluster workflow sends an activity or reads its reply during a pending interrupt, instead of storing the failure as a workflow defect. A request whose save was committed but not acknowledged is deduplicated, so the activity still runs once.A cluster client request whose send fails is no longer retained by
Sharding.#10205
24d5acdThanks @effect-bot! - Fix local callers of persisted entity requests hanging when a reply save commits but reports a failure, for example when the connection drops before the COMMIT acknowledgement arrives. The runner now checks storage for the committed reply and lets the caller read it, without replaying the request.#10163
c38dfa0Thanks @effect-bot! - Fix persisted success replies being stored after aClusterSchema.WithTransactionrequest transaction rolled back. A failed save inside the request transaction is no longer retried, since a retry could autocommit the reply outside the aborted transaction (for example after a MySQL deadlock). The failed transaction now replays the request instead.#10197
f2755e7Thanks @effect-bot! - Fix type-checking theeffectcrypto declarations with@types/node22 or 24 and without the DOM library. The*FromCryptoKeyconstructors inAead,Cipher,KeyAgreement,KeyWrap,MacandSignaturenow accept the new structuralWebCrypto.CryptoKeytype instead of the globalCryptoKey, and DOM and Node Web Crypto keys are both assignable to it. TheWebCryptoreference andWebCrypto.layernow use the type ofglobalThis.cryptoinstead of the globalCryptotype.#10137
a40cb20Thanks @effect-bot! - FixDateTime.Zonedexposing itsadjustedEpochMillisecondscache as an enumerable property afterDateTime.toDate, which brokeObject.keys, spread and deep equality.#10174
bd6b9c2Thanks @effect-bot! - Speed upDateTimeconstruction by creating thepartsUtc,adjustedEpochMillisecondsandpartsAdjustedcache properties on first use. Reading and writing these fields is unchanged, butObject.hasOwn,Object.getOwnPropertyNamesandObject.getOwnPropertyDescriptorno longer report them before the caches are populated, or at all on instances sealed or frozen before first use. Reading the parts of, or writing these fields on, an instance frozen before first use no longer throws.#10082
49d84d6Thanks @typedrat! - FixEqual.equalsandHash.hashthrowing on plain objects whose"~effect/Equal"or"~effect/Hash"key is not a function. Such values are now treated as data.#10185
a8f77d5Thanks @effect-bot! - Verify the session authentication signature before an EventLog server binds a signing key to an identity, and reject a verified key that differs from the identity's existing binding. A request with an invalid signature no longer creates a binding.EventLogServerUnencrypted.EventLogServerAuthorization.authorizeIdentityand theauthorizeIdentityoption ofEventLogServer.layerRpcHandlersnow also receive the presented signing public key. Use the newEventLogSessionAuth.deriveSigningPublicKeyto record an identity's signing key at provisioning time and reject any other key.#10164
7a9c22fThanks @effect-bot! - Stop finished fibers from retaining their last span and stack frame. A finished fiber kept alive by a cache entry, observer orDeferredno longer keeps the ended span's parent chain, and the success values recorded on those spans, from being garbage collected.#10145
efcb8ccThanks @jpowersdev! - FixHost.domainNameFromStringrejecting decomposed Unicode domain names.#10125
378f5f0Thanks @pujitha24! - FixEffect.requestretaining completed requests and their async context in its batch pool.#10208
d4272bdThanks @effect-bot! - Stop GraphQL calls from succeeding on non-2xx HTTP responses. A non-2xx GraphQL body withouterrors, including{ data: null }, now fails with aTransportErrorcarrying the HTTPstatus,headersandRetry-After, so retry policies onisRetryableapply. A non-2xx body withdataanderrorsfails with aResponseErroreven with{ partial: true }.#10207
7d6ead4Thanks @effect-bot! - AddHttpClient.timeout, which fails requests that receive no response within the given duration with anHttpClientErrorwrapping aTransportError, so the timed client keeps the standardHttpClientservice type and is retried byretryTransient. The timeout covers the wrapped client until it returns a response, which for a plain client is when the response headers arrive; body reads after that are not covered.#10166
59178ceThanks @tkr109! - FixIterable.takeWhileiterators yielding values or pulling from the source after they have returneddone.#10070
9394b6dThanks @effect-bot! - FixSchemaRepresentation.fromJsonSchemaDocumentrejecting objects whoseanyOf/oneOfbranches are combined with sibling properties that contain anenum, such as branches redeclaring an enum property already declared by the object.#10116
5d3f066Thanks @skyaara! - DeclareKeyFormat.JsonWebKeyinstead of referencing the DOM library's globalJsonWebKey, soeffectdeclarations type-check with Node-only types.#10082
49d84d6Thanks @typedrat! - Add MCP Skills extension (SEP-2640) support. Servers publish skills withMcpServer.skillorMcpServer.registerSkill. Clients opt in withextensions: { skills: true }and uselistSkills,getSkill,readResourceDirectoryandreadSkillResource, which verifies files against the listed digests and frontmatter.#10089
2863a22Thanks @creatifcoding! - FixMcpServertoolkit results whose encoded success is not JSON, such as aSchema.Void,Schema.DateorSchema.optionalfield, failingtools/callwith an internal error.structuredContentand its text mirror now use the same JSON encoding as the advertisedoutputSchema.#10082
49d84d6Thanks @typedrat! - FixMcpServerreturning an internal error fromresources/listandresources/templates/listonv2026_07_28when an optional resource field isundefined.#10082
49d84d6Thanks @typedrat! - Recognize.pyand.shfiles inMime.getType.#10204
20cca92Thanks @jpowersdev! -Ndjson.decodeandNdjson.decodeStringnow also skip lines containing only spaces or tabs whenignoreEmptyLinesis enabled.#10191
1f22f02Thanks @jpowersdev! - FixOtlpSerialization.layerJsonwritingbytesValuedata as plain objects instead of base64 strings.Uint8Arrayviews and NodeBuffers are now encoded as OTLP/JSON expects.#10152
dd2b7a3Thanks @jpowersdev! - FixPath.formatdropping the dot before extensions given without one, such asext: "csv".#10157
52f4e42Thanks @effect-bot! - Stop PgClient transactions from staying open after a pooler drops their prepared statements.#10129
194dd79Thanks @Gourav224! - FixPool.getandPool.usehanging in finalizers registered after the pool once its idle items expire. The pool now runs in a child scope that stays open until the pool shuts down.#10104
c5de00aThanks @tim-smart! - Speed upFileSystem.globby reading subdirectories concurrently, in at most 16 forked fibers per call plus the calling fiber, and only forking a fiber for directory entries that need astatorreadLink. Results and their order are unchanged.#10098
460827eThanks @effect-bot! - Reclaim expired keys inRateLimiter.layerStoreMemory. Each entry now expires once its state is indistinguishable from an unseen key, matching the TTLs of the Redis store, and a background sweep scoped to the layer removes expired entries every minute, so an idle store drains to empty instead of retaining every key it has seen.#10103
0325583Thanks @effect-bot! - FixRateLimiterhandling of zero and negative limits:RateLimiterStore.fixedWindownow honors a zerolimitin the memory and Redis stores.RateLimiter.consumenow returns an infinite delay for a nonpositive limit instead of admitting requests.#10167
20bef50Thanks @tim-smart! - Remove theEffect.requestbatch pool and allocate a new batch for each batch key.#10171
2f50b91Thanks @effect-bot! - Document that a request accepted by anRpcClient.Protocolstays pending until a reply names it, and how a transport that only delivers requests acknowledgesdiscardcalls and rejects the rest.#10121
b41529eThanks @Marve10s! - Fail discarded RPC calls (discard: true) promptly on transport errors.A discarded call waited for its pending send to finish before reporting any failure. While a socket was disconnected the call hung instead of failing, and once it reconnected the request was still sent and the handler ran. Failures now complete the call immediately and interrupt the pending send. Successful acknowledgements still wait for the send to finish.
#10138
80954c9Thanks @effect-bot! - FixRpcClientacknowledging stream chunks dropped by an interrupted consumer, which could drain the entire server stream before the interrupt was sent.#10133
5daca23Thanks @aidenlx! - FixRpc.SuccessChunkresolving toneverfor a union of RPCs.#10120
c96c31eThanks @Marve10s! - Fail only the affected calls when anRpcClient.layerProtocolWorkerworker crashes.#10190
136ddf9Thanks @effect-bot! - Brand SQL fragments and segments with the newStatement.FragmentTypeIdandStatement.SegmentTypeIdsymbols, sosqlinterpolation binds plain objects shaped like fragments or segments as parameters instead of SQL; build fragments and segments with theStatementconstructors.#10141
5ca262eThanks @effect-bot! - Document how to retry serialization failures and deadlocks withSqlClient.withTransaction.#10148
898b049Thanks @effect-bot! - EncodeHttpApiSchema.StreamSsedatavalues with the schema's JSON codec, so schemas such asSchema.Date,Schema.BigIntandSchema.Optionround-trip through SSE events and are documented accurately in OpenAPI.#10182
73e6ea1Thanks @effect-bot! -Sse.encodernow removes CR and LF from eventidandeventvalues, and NUL fromidvalues, so they cannot add fields or events to the encoded stream.#10105
937f170Thanks @tim-smart! - Speed upGlob.matchby tracking match states as a bitmask and reading path segments without splitting the path. Patterns such as*.tsthat are a literal prefix and suffix around one*are also checked without backtracking, which helpsFileSystem.globtoo.#10177
f5f96b2Thanks @jpowersdev! - FixOtlpSerialization.layerProtobufthrowing on metric data points withoutstartTimeUnixNano.#10049
1946637Thanks @lloydrichards! - AddMcpClientservercapabilities, discovery page and itemlimits, andtoolkitoptions for approved tool snapshots, complete results, returned failures, trusted annotations and tool customization.#10181
197ce1dThanks @effect-bot! - FixTool.unsafeSecureJsonParseaccepting Unicode-escaped__proto__andconstructorkeys. JSON text containing a\uescape is now always scanned, so escaped spellings throw aSyntaxErrorlike their literal forms. Objects with anullconstructorvalue are accepted instead of throwing aTypeError.#9883
b49120eThanks @danieljvdm! - Add unstableeffect/josemodules for JWKs (generation, PEM/DER conversion and thumbprints), compact JWS and JWE, schema-typed signed and encrypted JWTs with decryption key resolvers, and local or remote JWKS resolution.#10146
33d3088Thanks @effect-bot! - Wake a parent workflow when its suspended child is interrupted withClusterWorkflowEngine, and surface the child's interruption to the parent as a defect fromChild.executeso the parent completes instead of replaying.v4.1.0Compare Source
Minor Changes
#8829
631d4f4Thanks @harrysolovay! - AddSchema.isAscii, a check that accepts only ASCII strings, and the matchingSchemaRepresentation.isAsciiReviver.#8829
7ea1ea2Thanks @wmaurer! - Add an optionalcauseto the AINetworkError. It holds theHttpClientErrorthe request failed with, stored unchanged and not redacted, so the reason a request failed is no longer lost. The newNetworkError.fromHttpClientErrorsets it, and all AI providers now use it.NetworkError.fromRequestErroris unchanged.#8829
a2ccc14Thanks @fubhy! - FixAtom.Serializableto encode to and decode fromSchema.Json, matching the JSON codec used byAtom.serializable. Encoded results may now require narrowing; runtime behavior is unchanged.#8829
c4d298dThanks @okarin1511! - Render inherited CLI flags in a separateINHERITED FLAGSsection and add"full","summary", and"none"modes for inherited and global flags inCliOutput.defaultFormatter.HelpDocaddsinheritedFlags,commandPath, andglobalFlagsScopeprovenance so summaries can point to the appropriate help, with globals always listed on their declaring command. Custom formatters must read ancestor shared flags fromHelpDoc.inheritedFlagsinstead ofHelpDoc.flags.#10087
ac10e55Thanks @effect-bot! - AddrunnerJoinDebouncetoShardingConfig. When set, a runner joining the cluster is only added to shard assignments once the healthy runners have stayed unchanged for that duration, or at most four times that duration after the first pending join. A scale-up or a deployment with a large surge then hands each shard off once instead of once per join. Runners that already hold shards and leave or become unhealthy are still published immediately; a pending runner that leaves only restarts the quiet period. While joins are pending, runners take no new shards, so a shard can stay unlocked briefly until each runner publishes. Defaults to0, which keeps the current behavior.#8829
df8dce5Thanks @tim-smart! - AddtrimandkeepEmptyValuesoptions toSchemaGetter.splitKeyValue,SchemaTransformation.splitKeyValueandConfig.Record. Both default tofalse, so existing callers are unaffected.OtlpResource.fromConfignow trimsOTEL_RESOURCE_ATTRIBUTESkeys and values and keeps entries with an empty value as"".#8829
0c24a8fThanks @sledorze! - Add amaxDepthoption toContext.makeUnsafe, controlling how manyContext.addcalls are kept as overlays before the context is rebased into a flat map. Defaults to 8.#8829
2d1fcd4Thanks @effect-bot! - Add anonDstOverlapoption toCronandSchedule.cronthat chooses which occurrences of local times repeated when clocks fall back are included:"earlier"(default),"later"or"both". It applies to every repeated local time, including ones not caused by daylight saving time.Cron.prevnow returns the latest matching instant before its input when starting inside a repeated hour. Near a spring-forward gap it no longer throws or returns an instant at or after its input.#8829
8f23668Thanks @fubhy! - Replaceeffect/Cryptowith family-specificeffect/crypto/*services, opaque keys,CryptoError, a configurableWebCryptoreference and key schemas ineffect/Schema. Encoding secret or private keys through byte/format schemas requires{ allowEncode: true }.Breaking changes
SecureRandomfor randomness and UUIDs, andDigestwith algorithm values such asDigest.sha256for hashing. Replaceeffect/testing/TestCryptowithLayer.mockfor the required services.*Servicesbundles.NodeCrypto,BunCrypto,DenoCryptoandBrowserCryptooffer individual family layers and a combinedlayer, supplyingSecureRandomwhere needed. Core modules offerlayerWebCrypto.Digest.Digestinstead ofCrypto.CryptotoSqlMessageStorageandSingleRunner, and instead ofEventLogEncryptiontoSqlEventLogServerEncrypted.makeStorageandlayerStorage. ReplaceEventLogEncryption.sha256Stringwithdigest.digestHex(Digest.sha256, bytes).Existing workflow ID, activity idempotency key and event log table-name encodings are unchanged.
Event log encryption, identity key derivation and session authentication now run on
Aead,Digest,SignatureandSecureRandom.EventLogEncryption.makeandEventLogEncryption.layertake those services from context, so Node apps can use theNodeCryptolayers.EventLogEncryption.layerSubtleand the session auth functions use the Web Crypto layers on theWebCryptoreference instead ofglobalThis.crypto. Existing identities, derived signing keys and encrypted batches are unchanged.UUIDv7 and ULID generation is now monotonic below the maximum 48-bit timestamp, including within a millisecond and across clock rollback. Ordering is per
SecureRandominstance; the unsafe helpers and model UUIDv7 defaults share per-realm ordering.#8829
3f8f359Thanks @jem-computer! - Declare decision images as input fields withDecision.Image, and addDecision.locate, which answers with a bounding box around one target in an image field.DecideOptions.imagesis removed. AddDecision.Imagefields to the input schema and refer to each image by its path in instructions:Custom providers receive
imagesas{ reference, path, image }, with each image replaced by its reference instateand its data as a base64 string orURL.Decision.locate({ image: "photo", instructions })takes a path thatDecision.makechecks against the input's image fields. Providers opt in withsupportsLocate: true.Decision.AnyandDecisionModel.ProviderAnswergain locate variants, so exhaustive switches over them need aLocatecase.TypeSafeDecisionModelsupports images, sent as assets keyed by reference, and sends locate decisions as Box questions, which needjev-previeworjev-1.14.0. OpenAI and Cloudflare label each image with its reference.#8829
2a03584Thanks @jayhemnani9910! - AddDuration.formatIso,Duration.fromIsoandSchema.DurationFromIsoStringfor ISO 8601 durations. Only exact units are supported: weeks, days, hours, minutes and seconds. Years and months are rejected because they have no fixed length.#8829
40e145eThanks @yordis! - AddDuration.toMicrosfor converting durations to microseconds.#8829
7217410Thanks @tim-smart! - Add encrypted remote compaction to the event log.#8829
cf249feThanks @tim-smart! - Detect unsupported streaming request bodies inFetchHttpClientand fail with anEncodeErrorinstead of silently sending[object ReadableStream]. SetFetchHttpClient.StreamBodyFallbackto"buffer"to buffer the body in memory on those runtimes instead.#8829
4f0fad1Thanks @effect-bot! - Fence Redis PersistedQueue settlements and lock refreshes on a per-acquisition lock, so a stale handler can no longer release another live claim, including one with the same custom id in another queue. The lock format is incompatible with older workers on the same prefix: stop every old worker and let its locks expire before starting upgraded workers.#8829
f74db37Thanks @smit153! - Accept{ self }before the generator body inEffect.fnUntracedandEffect.fnUntracedEagerto bindthis, matchingEffect.fn.#8829
069cf72Thanks @effect-bot! - Add opt-in RFC 9457 Problem Details support toHttpApi.ProblemDetailsineffect/httpprovides theapplication/problem+jsonmedia type, a lenient codec for problem details objects, and a response constructor.HttpApiError.Problem<Self>()(tag, { type, status, title }, fields?)declares a typed problem as a yieldable error class that endpoints render, document and decode asapplication/problem+json, discriminated bytype.HttpApiSchema.asProblemrenders a built-in error such asHttpApiError.NotFoundas a problem.HttpApiMiddleware.ProblemDetailswithHttpApiMiddleware.layerProblemDetailsrenders request decoding failures as a generic400problem (with per-fielderrorswhenincludeDetailsis enabled) and response encoding failures as a500problem.The default behaviour is unchanged: without the opt-in, built-in errors and decoding failures still produce the same responses as before.
#8829
9a07ebcThanks @effect-bot! - AllowHttpApiSchema.Upgradealongside ordinary success responses, for servers that decline the upgrade, and addHttpApiClient.isUpgradedto narrow the client result.HttpApiClient.Upgradedvalues now carry a[HttpApiClient.UpgradedTypeId]brand. Code that buildsUpgradedvalues by hand, such as client mocks, must add[HttpApiClient.UpgradedTypeId]: HttpApiClient.UpgradedTypeIdto the object literal.#8829
f40dc4eThanks @bezff! -HttpClient.withCookiesRefnow takes aRef<ReadonlyArray<Cookie>>and sends stored response cookies only to a matching host, path and scheme, using the newCookies.mergeIntoArrayandCookies.toRequestCookieHeader. Seed the ref withCookies.mergeIntoArrayor with cookies that set adomain.#8829
fa516c6Thanks @Tarekkharsa! - ExportHttpClient.isTransientErrorandHttpClient.isTransientResponse, the predicatesretryTransientuses to decide what to retry.#8829
ffd9237Thanks @effect-bot! - Addlog: "Unhandled"toEffect.ignore,Effect.ignoreCause, and their Stream and Channel variants. This resolvesReferences.UnhandledLogLevelwhen a failure occurs and suppresses logging when that reference isundefined, while preserving each combinator's existing failure semantics.#8829
93895b9Thanks @tim-smart! - AddkeystoKeyValueStoreandSchemaStore. It returns a snapshot of the keys in the store, in no particular order, and is implemented by the memory, file system, SQL, Web Storage and IndexedDB stores. Custom stores built withKeyValueStore.makeorKeyValueStore.makeStringOnlymust now providekeys.KeyValueStore.prefix(...)now scopeskeys,sizeandisEmptyto keys under the prefix, with the prefix removed from the returned keys. PreviouslysizeandisEmptyreported on the whole backing store.Stores built with
KeyValueStore.makethat don't provideclearPrefixnow derive it fromkeysandremoveinstead of failing for non-empty prefixes.#8829
e5a1479Thanks @effect-bot! - Add the unstableMatch.literalsandMatch.literalsExhaustiveAPIs for matching string and number literal unions with a record of handlers.#8829
65db606Thanks @effect-bot! - Add request-level dependencies and middleware toMcpServerso handler services can be supplied per request. Breaking: pass registration layers through the transport'sregistrationsoption, and capture construction-time handler services inLayer.unwrapinstead ofLayer.provide.#8829
7c42335Thanks @tim-smart! - AddMcpServer.visibilityto hide tools, resources and prompts per request based on services provided by MCP middleware. Middleware that wraps a visibility now runs on list requests, once for each registration, soMiddlewareMethodincludes the list methods. Middleware provided both locally and globally now runs once.#8829
cb21d14Thanks @effect-bot! - Add acacheHintsoption to theMcpServerlayers to set how long clients may treatv2026_07_28discovery and list results as fresh, for examplecacheHints: { tools: { ttl: "1 minute", cacheScope: "private" } }. Results without a hint, andresources/read, keep{ ttlMs: 0, cacheScope: "private" }.#8829
c32eb78Thanks @effect-bot! - ExposeSqlMessageStorage.makeEncodedStorageto construct an encoded SQL message storage driver without running migrations or executing startup SQL. RunlayerMigrationsseparately with the same table prefix before using the driver;makeEncodedcontinues to run migrations by default.#8829
be9895bThanks @bezff! - MovefromFileSystemfromeffect/sql/Migratortoeffect/sql/MigratorFileSystem, so React Native apps can importeffect/sql/Migratorandeffect/sqlunder Metro. Theeffect/sqlbarrel and@effect/sql-sqlite-react-native/SqliteMigratorno longer exportfromFileSystem; the other SQL adapter migrators still re-export it.#8829
26b4bfeThanks @fubhy! - Type received and forwarded HTTP request methods asstringso methods such asPROPFINDare represented accurately, including in AI HTTP error details. Exhaustive matches on request methods now need a fallback or a guard usingHttpMethod.isHttpMethod.#8829
f97711fThanks @effect-bot! - IsolatePersistencestores on theKeyValueStoreaConfiguration
📅 Schedule: (UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.