Repository navigation
chore(deps): update npm packages - #1620
Merged
Merged
Conversation
Contributor
|
This PR does not match any of the 1 configured review trigger rule. |
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
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:
26.6.5→26.6.64.0.6→4.1.0Release Notes
Effect-TS/effect (effect)
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 theKeyValueStoreand Redis backings. Clearing a store now only removes that store's entries, and different store / key pairs no longer map to the same backing key.Add
KeyValueStore.clearPrefix, implemented by the memory, file system, SQL, Web Storage and IndexedDB stores.KeyValueStore.prefix(...).clearnow only removes keys under the prefix. Stores built withKeyValueStore.makethat don't provideclearPrefixremove the matching keys one by one instead of clearing everything.Both backings now store entries under
<storeId>:<key>, with%and:in the store id percent-encoded.Key layout change. Entries written by earlier versions are not read back:
Persistence.layerKvs/layerBackingKvs: every existing entry becomes unreachable, because keys used to be<storeId><key>with no separator. Cached results are recomputed.Chat.layerPersistedon aKeyValueStorebacking loses its stored chat histories.Persistence.layerRedis/layerBackingRedis: keys are unchanged unless the store id contains%or:. Entries for those store ids become unreachable.Old entries are not migrated or removed automatically.
#8829
4f16778Thanks @effect-bot! - Add the unstablePool.StatsandPool.statsAPIs for sampling how many pool items are idle or in use and how many borrowers are waiting.PgPool.statsandPgClient.poolStatsexpose the same snapshot for PostgreSQL sessions, so applications can export connection pool metrics without reaching into pool internals.#8829
d2b6bc7Thanks @jpowersdev! - Add experimentalGlobpath matching and a sharedFileSystem.globimplementation for Node, Bun, and Deno.FileSystemimplementations, including inputs toFileSystem.make, must providereadDirectoryEntries; mappingreadDirectorynames to{ name, type: "Unknown" }is supported. Wrappers must apply directory-listing changes to both methods.FileSystem.makenow derivesglobinstead of accepting it. Apply custom overrides afterward withFileSystem.of({ ...fs, glob: customGlob })./separators and backslash escapes; Node extglobs no longer expand. Results use/separators and are relative torootunless the pattern is absolute. Deno wildcards now skip dotfiles unless explicitly named ordot: true; unreadable wildcard-reached directories are skipped, while read failures at the root or a leading literal directory propagate.#8829
3d88452Thanks @fubhy! - AddCommandLinetoeffect/processfor quoting and joining command lines, and supportRedactedarguments andenvvalues inChildProcess.Migration:
ChildProcess.maketemplates keep quoted words together and throw aCommandLineErrorfor shell syntax such as|,$HOMEor*. Quote such characters or pass them with${}.shelloption, templates cannot contain${}values and extra arguments fail withBadArgument. Pass the whole script as the command, built withCommandLine.join.StandardCommand.argsandenvvalues can beRedactedstrings.ChildProcess.TemplateExpressionandChildProcess.TemplateExpressionItemare removed. Use theCommandLinetypes of the same name.#8829
3c42058Thanks @effect-bot! - RemoveAiError.HttpRequestDetailsandResponse.HttpRequestDetails, so AI errors and response metadata no longer carry request headers or query parameters.AiError.NetworkErrorrecords the request asmethodandurlfields instead ofrequest, and therequestfield is gone fromAiError.HttpContextandResponse.ResponseMetadataPart.#8829
2ae4045Thanks @tim-smart! - Calls made withdiscard: truenow complete when the server acknowledges them, instead of when the request is written.SchemaBinary peers must be upgraded together because the new
discardfield changes the envelope fingerprint.#8829
e853fa1Thanks @effect-bot! - Add anonDisconnectoption toRpcServer.makeand its layer and HTTP wrappers, so applications can observe client disconnects without taking fromProtocol.disconnectsand preventing the server from interrupting the disconnected client's requests.#8829
1194a4cThanks @bezff! -sql.insertandsql.updateValuesnow require a non-empty array of rows at the type level. Narrow array inputs withArray.isReadonlyArrayNonEmptybefore passing them to these helpers.#8829
2cb498eThanks @effect-bot! - Fix a SQLite client hanging forever after a queuedwithTransactionorreservewas interrupted just as it received the connection. The interrupted acquisition could keep the connection's only permit without registering its release.Add
Semaphore.takeScoped, which holds permits until the current scope closes. Waiting can be interrupted unless the caller is uninterruptible, and acquired permits are always returned when the scope closes.#8829
89e5443Thanks @jpowersdev! - AddTerminal.size, a scoped queue that starts with the current terminal dimensions and receives each resize. Custom terminals passed toTerminal.makemust now supplysize.#8829
2a9a425Thanks @jayhemnani9910! -Toml.parsenow returns aResultinstead of throwing, failing with anEncodingErroron invalid input. It also rejects documents that extend an inline table or a statically defined array, which TOML 1.0 forbids.Patch Changes
#8829
ed20129Thanks @effect-bot! - Report unobserved release failures atUnhandledLogLevelfor RcMap and RcRef idle expiry, abandoned interrupted RcMap lookups, and ScopedCache expiry discovered by keys, values, or entries scans. Preserve failure propagation when cleanup is observed by a caller.#10076
20795b9Thanks @jpowersdev! -Base64Url.decodeandBase64Url.decodeStringnow reject partially padded input such asZg=. Unpadded input (Zg) and fully padded input (Zg==) still decode.#10083
a8e5e6cThanks @jpowersdev! - FixBigDecimal.fromStringandBigDecimal.fromStringUnsafeaccepting a sign after the decimal point.#10093
fb5dbeeThanks @tim-smart! - Release a frozen runner's MySQL shard locks aftershardLockExpiration.SqlRunnerStoragesetswait_timeouton its MySQL lock connection, and restores it before returning the connection to the pool, so a runner that stops refreshing loses its named locks instead of holding them until the server drops its TCP connection. Vitess ignoreswait_timeout, so runners behind Vitess keep the previous behavior.#10095
8309b94Thanks @tim-smart! - Restoreidle_session_timeouton the PostgreSQL shard-lock connection beforeSqlRunnerStoragereturns it to the pool, so other queries on that connection no longer have their session ended aftershardLockExpirationidle.#8829
af23904Thanks @devangpratap! - Reject an append assignment such asFOO+=bar cmdinCommandLine.templateandChildProcess.makewithUnsupportedSyntax, asFOO=bar cmdalready is, instead of runningFOO+=baras the program.#8829
468c6eeThanks @tim-smart! - Keep the source context'smaxDepthwhenContext.pickis given zero or one key, and reduce the bundle size ofContext.makeUnsafe.#8829
fe6b748Thanks @effect-bot! - Support duplexadditionalFdsthroughgetInputFdandgetOutputFd, preserving both directions when used withpipeTo.#10064
e75708cThanks @gcanti! - FixSchemaRepresentation.toCodeDocumentlosing__proto__properties or changing object prototypes in generated annotations.#10086
7890077Thanks @jpowersdev! -HttpTraceContext.fromHeadersnow rejects uppercase hex trace and span IDs intraceparent,b3andX-B3-*headers, matching the lowercase encodings required by W3C Trace Context and B3. Previously they were accepted and propagated unchanged, which conforming downstream receivers reject.#10085
c4a00fcThanks @jpowersdev! - Rejecttraceparentheaders with malformed trace flags inHttpTraceContext. Flags that are not two lowercase hexadecimal digits now returnOption.none()instead of continuing the trace.#8829
8938b19Thanks @effect-bot! - MakeremoveonKeyValueStore.layerFileSystemsucceed when the key does not exist, matching the other backends.#8829
89e1e1eThanks @tim-smart! - StopMcpServerfrom sending stateful clients list-change notifications for changes made before the server handled theirinitializerequest, over stdio, HTTP sessions and custom transports.#8829
eda0960Thanks @effect-bot! - LetMcpServermiddleware and visibility layers receive per-request services fromHttpRouter.middlewareunderlayerHttp. Unmet per-request services now stay asMcpRequest<"Requires", S>layer requirements, replacingMissingRequestDependencies.#8829
89e1e1eThanks @tim-smart! - AddMcpTest.makeClient, an in-memory MCP client for testingMcpServerregistrations over the JSON-RPC wire encoding.#10062
e19c611Thanks @duailibe! -Otlp.layer,Otlp.layerFromConfig,Otlp.layerJsonandOtlp.layerProtobufnow declare the sharedOtlpExporter.Flusherthey provide, instead ofLayer<never>.#10065
8e668feThanks @jpowersdev! - Preserve a leading UTF-8 BOM in URL-encoded body field names.#10067
ce9e999Thanks @jpowersdev! - Preserve a leading?in URL-encoded form field names.urlParamsBodypreviously dropped it as a query-string prefix, so?name=valuedecoded toname.#8829
6dc3f7cThanks @jpowersdev! - Add the unstableCsvmodule toeffect/encodingfor streaming CSV parsing and writing over text or UTF-8 bytes, with header records and schema adapters that convert cells throughSchema.toCodecStringTree.#10050
1513bbdThanks @gcanti! - Prevent excessive CPU use whenSchema.fromFormDataandSchema.fromURLSearchParamsdecode field names containing unmatched opening brackets.#10061
c065ed7Thanks @gcanti! - FixSchema.TaggedUnion.matchandmatchOrElsereturn inference and handler input types, and narrowmatchOrElsefallbacks to unhandled variants.Remove explicit output type arguments from
Schema.TaggedUnion.matchandmatchOrElsecalls; annotate handler return types when an explicit output is needed.#8829
e710bbbThanks @devangpratap! - FixToml.parseaccepting out of range dates and times such as1979-02-30or24:00:00, and rolling1979-02-30T07:32:00Zover to March 2 instead of rejecting it.#8829
b0d6e75Thanks @jayhemnani9910! - FixToml.parserejecting multiline basic and literal strings ending with one or two content quotes.#10068
32b3570Thanks @effect-bot! - Store the empty string key inTrieinstead of silently discarding it. Construction, lookup, replacement, modification, removal, iteration andlongestPrefixOfnow treat""like any other key.#10051
9f93f4fThanks @okarin1511! - Support YAML 1.1 merge keys (<<) inYaml.parse. An unquoted<<key merges a mapping, or a sequence of mappings, into the enclosing mapping. Explicit keys take precedence over merged keys, and earlier merge sources over later ones. Quote the key ("<<") to keep it as an ordinary key.#10069
27370c7Thanks @effect-bot! - FixYaml.parserejecting block sequence entry mappings whose first key sits more than one space after the dash. Later keys in the entry must now align with the first key, and a tab before the first key is rejected.v4.0.7Compare Source
Patch Changes
#6743
ac3485aThanks @IMax153! - Add a scopedCliOutput.Presenterservice for suppressing, redirecting, or replacing built-in CLI help, invalid-invocation, and version output.#9873
3a4c691Thanks @effect-bot! - Require tool parameter schema services inResponse.AllParts,Response.PartandResponse.StreamPart, including for toolkits with handlers, and addTool.ParametersDecodingServices.#9861
4f0600eThanks @effect-bot! - Add atoModelOutputoption toTool.makeandTool.dynamicfor 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 newPrompt.toolModelOutputToText.OpenAI Responses now sends PDF file parts given as base64, data URL or HTTP(S) URL strings instead of dropping them.
#9377
110fd22Thanks @gcanti! - Add aconcurrencyoption toArbitrary.checkEffectand 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 is1.#9811
aa58cdaThanks @effect-bot! - Speed upBase64.encodeandBase64Url.encodeon large inputs and reduce the memory they allocate.#9913
8e257e7Thanks @Marve10s! - Fix duplicate interrupt reasons when interrupting a fiber insideEffect.withSpanorEffect.fn.#9846
e62a149Thanks @mkantautas! - FixChildProcessSpawnerhelpers hanging when a command fills a pipe the helper never reads.exitCodenow reads and discardsstdoutandstderruntil the process exits, andstring,lines,streamStringandstreamLinesread and discardstderrunlessincludeStderris set. A failure reading that output while the helper runs, such as from an outputSink, now fails the helper.#9794
dcd43a5Thanks @effect-bot! - Clarify thatChildProcessoutput sinks forstdout,stderrand outputadditionalFdsonly receive data while the corresponding handle stream is consumed, and that the handle stream emits the sink's results.#9921
3388cddThanks @Marve10s! - Fix Bash completion of file and directory paths containing spaces, quotes or glob characters.#9976
81b0e14Thanks @effect-bot! - AddCompletions.fromCommandtoeffect/cli. It converts an existingCommandtree into aCommandDescriptor, so build tooling can generate shell completion scripts withCompletions.generatewithout running the CLI.#9881
a046435Thanks @effect-bot! - SkipFlag.withFallbackPromptandArgument.withFallbackPromptfallbacks whenTerminalCapabilities.canPromptisfalse, failing with the originalMissingOptionorMissingArgumenterror instead of rendering a prompt or waiting for input.#9922
f6d8968Thanks @Marve10s! - Show command help for invalid global flag values instead of failing with a raw parse error.#8349
5741c3aThanks @ArjunCodess! - Add theCliError.userMessageannotation soCommand.runrenders tagged handler errors without wrapping them inCliError.UserError.#9959
381d5c6Thanks @baptisteArno! - Record ClickHouse migrations only after they succeed, so a failed migration and the ones after it are retried on the next run.#10001
d47478aThanks @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
383716dThanks @tim-smart! - Release a frozen runner's PostgreSQL advisory shard locks aftershardLockExpiration. On PostgreSQL 14+,SqlRunnerStoragesetsidle_session_timeouton 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,
SqlRunnerStoragerefresh 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
46dc30aThanks @effect-bot! - Fix cluster shutdown waiting forentityTerminationTimeoutwhen 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. WithpreemptiveShutdown: false, entities drain before the runner is marked as shutting down, so such a caller still waits forentityTerminationTimeout.#9985
3d5c862Thanks @tim-smart! - Fix a cluster workflow replay ignoring a durable deferred completion that is persisted but not yet processed by the new owner. ADurableDeferred.raceAllcould 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
93ebc4fThanks @effect-bot! - FixClusterWorkflowEnginerunning a completed step's compensation twice wheninterruptUnsafeinterrupts a workflow during a running activity.#9938
c7b161aThanks @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
e55945dThanks @jpowersdev! - FixHttpClientRequest.compressBodyreplacing the request's Content-Type with the body's content type. Compression now only updates the Content-Encoding and Content-Length headers.#10035
1a53d6aThanks @jpowersdev! - FixHttpMiddleware.compressionsending an uncompressed response whenAccept-Encodingcontains an empty list member, such asgzip,. Empty members are now ignored as RFC 9110 requires.#9769
5e25cc9Thanks @Marve10s! - FixEqual.equalsandHash.hashtreating any two same-lengthArrayBuffers as equal.ArrayBufferandSharedArrayBufferare now compared and hashed by their bytes.#9799
9503d5cThanks @effect-bot! - FixExit.hasFails,Exit.hasDies,Exit.hasInterrupts, andAsyncResult.isInterruptednarrowing away every failure when they returnfalse. They now returnboolean, like the matchingCausechecks; useExit.isFailureorAsyncResult.isFailureto narrow.#10026
13efb72Thanks @tim-smart! - Prevent laterSemaphore.takecalls from overtaking eligible queued requests while preserving mixed-size overtaking.#9767
8ca6abbThanks @Marve10s! - FixQueue.offerAll,MutableList.appendAllandMutableList.prependAllkeeping a reference to the caller's array. Changing that array afterward no longer changes the queued values.#9982
4a09dd1Thanks @jpowersdev! - FixJsonSchema.toDocumentDraft07emittingenum: [], which the Draft-07 metaschema rejects. An empty enum now becomes anallOfentry that rejects every value.#9754
346fc92Thanks @gcanti! - FixSchema.isCapitalizedandSchema.isUncapitalizedaccepting astral letters with the wrong case.#9967
20e5ba8Thanks @gcanti! - FixSchema.isULIDto reject values exceeding the 128-bit ULID limit.#9878
f4b237eThanks @Hona! - FixEffect.fnstack frames retaining call arguments. A fiber forked inside anEffect.fncall 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
1dd08eeThanks @jayhemnani9910! - FixHttpClient.followRedirectsre-encoding the query of theLocationit follows (%20became+,flagbecameflag=, and invalid UTF-8 bytes were replaced with U+FFFD). The redirected request now uses the resolvedLocationURL without rewriting its query.#9948
940be42Thanks @chiefcll! - Format values with own getters inFormatter.formatJsonandCause.prettywithoutProxy, so engines that lack it no longer throw aReferenceError. Getter results stay redacted on every engine.#10029
37be245Thanks @jpowersdev! - FixHttpStaticServerdroppingContent-Location,Date,ExpiresandVaryfrom 304 responses.#9944
563fde0Thanks @effect-bot! - AddHttpApiClient.decodeResponseto decode a raw endpoint response with the endpoint's declared success and error schemas, for example after aresponseMode: "response-only"call.#9796
938cecbThanks @effect-bot! - Reject.and..path parameters inHttpApiClientso they cannot change the request path through URL normalization.#9869
cf197c1Thanks @sarankumar1325! - Describe undeclared response statuses inHttpApiClienterrors. The reason is still aDecodeError, now with the descriptionundeclared status code, so the message readsDecode: undeclared status code (418 GET ...)instead ofDecode error (418 GET ...).#9998
7ca71bbThanks @tim-smart! - MakeHttpApiClientclose the upgraded connection of an `HttpApiConfiguration
📅 Schedule: (in timezone America/Chicago)
* * * * 4)🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.