Effect
4.0.0-beta.31
Patch Changes
-
#1696
5a84853Thanks @krzkaczor! - AddDurationObjecttoDuration.Inputto support Temporal-style object input.Durations can now be created from objects with named unit properties like
{ hours: 1, minutes: 30 }, similar toTemporal.Duration.from(). Supported fields:weeks,days,hours,minutes,seconds,millis,micros,nanos. -
#1705
6f23f0eThanks @tim-smart! - Preserve message item ordering in the default logger when logging aCausewith message values. -
#1711
654aaecThanks @tim-smart! - FixRpcGroup.toLayerandRpcGroup.toLayerHandlerservice requirement inference so handler dependencies are preserved for non-stream RPC handlers. -
#1712
2958a42Thanks @tim-smart! - Expose CLI completions as a public unstable module ateffect/unstable/cli/Completions. -
#1713
95d27a2Thanks @tim-smart! - MakeLayer.mocka dual API so it supports bothLayer.mock(Service)(impl)andLayer.mock(Service, impl). -
#1704
0fbaea8Thanks @tim-smart! - Support toolkit unions inLanguageModeloptions. -
#1701
21d5d5eThanks @tim-smart! - wrap httpapi request context with HttpRouter.Request -
#1696
5a84853Thanks @krzkaczor! - allow assigning Temporal types to DateTime & Duration input -
#1698
6e49959Thanks @tim-smart! - Include toolkit tool handler requirements in AI generation API environment inference. -
#1703
8f5805dThanks @tim-smart! - RelaxNdjsonbyte-stream channel signatures to accept plainUint8Array. -
#1710
990df2cThanks @gcanti! - Schema:toCodecJsonnow returnsCodec<T, Json, RD, RE>instead ofCodec<T, unknown, RD, RE>.Http: the
jsonproperty onHttpIncomingMessage,HttpClientResponse,HttpServerRequest, andHttpServerResponsenow returnsEffect<Schema.Json, E>instead ofEffect<unknown, E>.
4.0.0-beta.30
Patch Changes
-
#1675
c88e5b7Thanks @gijsbartman! - Fix consolePretty ignoring explicit colors option in non-TTY environments.When colors is explicitly set to true, prettyLoggerTty was still gating it with processStdoutIsTTY check, making it impossible to enable colors in non-TTY environments like Vite dev server.
-
#1690
947d0e4Thanks @gcanti! - FixCause.hasInterruptsOnlyto returnfalsefor empty causes. -
#1620
7517908Thanks @kitlangton! - FixTaggedUnion.matchto useUnifyfor return types, allowing branches to return distinct Effect types that are properly merged. -
#1680
a49ecd5Thanks @KhraksMamtsov! - make HttpClientResponse pipeable -
#1681
6993e33Thanks @mikearnaldi! - Add an optionalmessagefield toEffect.ignoreandEffect.ignoreCausefor custom log output. -
#1695
514f2a2Thanks @gcanti! - Remove unused APIs from theUtilsmodule. -
#1644
3214b47Thanks @patroza! - fix: update Service interface to use ‘this: void’ in ‘of’ method signatures -
#1693
95ec5edThanks @tim-smart! - fix cli subcommand context
4.0.0-beta.29
Patch Changes
-
#1677
b52721cThanks @gcanti! - FixSchema.isUUIDso theversionparameter is optional in its public signature. -
#1667
a891c7bThanks @tim-smart! - PreserveAtom.withReactivity(...)refresh behavior when registry initial values seed the wrapped atom. -
#1678
ef26cdfThanks @tim-smart! - Abort HTTP client requests when response streams are consumed only partially. -
#1665
82fd3edThanks @tim-smart! - Remove placeholder fallback behavior from CLI prompt inputs now that default values are prefilled.
4.0.0-beta.28
Minor Changes
- #1637
42bc7ceThanks @tim-smart! - Add a neweffect/unstable/http/HttpStaticServermodule for static file serving with MIME resolution, directory index fallback, SPA fallback, and safe path resolution.
Patch Changes
-
#1659
ff533f2Thanks @tim-smart! - Persist MCP HTTP session and protocol headers after initialize so follow-up JSON-RPC requests includeMCP-Protocol-Version. -
#1663
dc803eeThanks @tim-smart! - AddHttpServerResponse.fromClientResponsefor directly converting client responses into server responses. -
#1657
d660b1cThanks @tim-smart! - AddCtrl-Uline clearing support to editable CLI prompts. -
#1645
93a05e3Thanks @gijsbartman! - ensure transformed Atom’s don’t extend idle ttl -
#1655
2a65cf6Thanks @tim-smart! - MakeAtomRpc.queryandAtomHttpApi.queryreturn serializable atoms by default when query results are schema-backed.The atom serialization key now uses each API’s built-in request schemas so dehydrated state can be keyed consistently across server and client.
-
#1662
a561a40Thanks @tim-smart! - AddHttpServerRequest.toClientRequestfor direct server-to-client request conversion. -
#1648
29cd24dThanks @gcanti! - FixTypes.VoidIfEmptyto correctly detect empty object types. Remove deprecatedTypes.MatchRecordin favor of the simplified implementation, closes #1647. -
#1664
662a8e6Thanks @tim-smart! - AddHttpServerRequest.fromClientRequestfor direct client-request-backed server request conversion. -
#1656
d2b52baThanks @tim-smart! - Persist MCP client capability context across HTTP requests by resolving initialized payloads through the standardMcp-Session-IdHTTP header inMcpServer.Adds a regression test that initializes an MCP HTTP client, verifies the MCP server echoes
Mcp-Session-Id, and then checks a later tool call can still readMcpServer.clientCapabilities. -
#1639
407c3b4Thanks @tim-smart! - AddScheduler.PreventSchedulerYieldand expose it viaReferencesso fibers can skip schedulershouldYieldchecks when needed. -
#1649
e741322Thanks @tim-smart! - SetSchema.TaggedErrorClassinstancenameto the tag value, matchingData.TaggedErrorbehavior. -
#1646
5c75fa8Thanks @tim-smart! - Simplify internal and documented request usage by passing request resolvers directly toEffect.requestinstead of wrapping them withEffect.succeed. -
#1641
747177bThanks @tim-smart! - Don’t transform Tool result schemas, as they aren’t sent to the providers as json schemas -
#1636
326cd48Thanks @tim-smart! - AddCookies.expireCookie/expireCookieUnsafeandHttpServerResponse.expireCookie/expireCookieUnsafefor emitting expired cookies. -
#1653
627e922Thanks @tim-smart! - expose mcp client capabilities -
#1660
662287eThanks @tim-smart! - AddHttpServerResponse.toClientResponsefor converting server responses intoHttpClientResponsevalues.
4.0.0-beta.27
Patch Changes
-
#1621
903a839Thanks @kitlangton! - unstable/http Headers: addremoveManycombinator for removing multiple headers at once -
#1622
91a0168Thanks @tim-smart! - AddModel.BooleanSqlite, a model field schema that uses0 | 1encoding for database variants and plainbooleanencoding for JSON variants. -
#1631
c890f9aThanks @gcanti! - unstable/httpapi HttpApiBuilder: fix void responses producing a non-empty body instead ofResponse.empty, closes #1628. -
#1618
1e985f2Thanks @tim-smart! - DefaultEffect.context()toEffect.context<never>()when no type parameter is provided.
4.0.0-beta.26
Patch Changes
-
#1603
fb21462Thanks @tim-smart! - AddresponseTexttoAiError.StructuredOutputErrorand populate it fromLanguageModel.generateObjectso failed structured output decodes include the full LLM text. -
#1613
2ed26b1Thanks @lucas-barake! - AdddisableFatalDefectstoRpcServer.layerHttp,RpcServer.toHttpEffect, andRpcServer.toHttpEffectWebsocketoption types to match existing runtime support. -
#1599
e832a57Thanks @tim-smart! - add trait for customizing exit codes -
#1611
7f01be7Thanks @WebWalks! - Fixed the Error Type on AtomHttpApiClient (Server errors were being incorrectly reported, and we could not determine _tag to handle) -
#1612
e965143Thanks @tim-smart! - Expose the optionalorElsefallback parameter inEffect.catchTags. -
#1606
b9b80f1Thanks @gcanti! - Schema:toJsonSchemaDocumentnow emits JSON Schemafalsefor unannotatedNeverindex signatures (includingadditionalProperties) instead of{ not: {} }. AnnotatedNeverstill emits a schema object so metadata likedescriptionis preserved. -
#1607
98252aaThanks @gcanti! - Schema: improveSchema.Unknown/Schema.ObjectKeywordhandling intoCodecJsonandtoCodecStringTree -
#1616
56fbd94Thanks @lucas-barake! - AddAtom.swrtoeffect/unstable/reactivityfor staleTime-gated stale-while-revalidate reads, optional mount and window-focus revalidation, and forceful manual refresh. -
#1600
3faa109Thanks @tim-smart! - add args to Stdio service -
#1610
692ecfeThanks @kitlangton! - Refine unstable CLI parent/subcommand flag composition.- Add
Command.withSharedFlagsconflict validation against existing subcommands, including thewithSubcommands(...).withSharedFlags(...)composition order. - Reorder
Commandtype parameters toCommand<Name, Input, ContextInput, E, R>for clearer parent-context modeling. - Make
Command.withSubcommandsinput typing sound for downstream input-based combinators by reflecting that subcommand paths only carry parent context input.
- Add
-
#1604
1e70b72Thanks @lucas-barake! - Fixunstable/sql/SqlSchemarequest input typing sofindAllandfindNonEmptyacceptRequest["Type"]instead ofRequest["Encoded"]. -
#1602
ecf0782Thanks @tim-smart! - Replace the default HttpApi schema-validation error withHttpApiError.BadRequestNoContent.
4.0.0-beta.25
Patch Changes
-
#1597
fa17bb5Thanks @tim-smart! - FixEffect.forkScopeddata-first typings to includeScopein requirements. -
#1598
f46e5b5Thanks @tim-smart! - compare transaction connections by reference -
#1596
ce4767cThanks @tim-smart! - improve HttpClient.withRateLimiter initial state tracking -
#1594
c830a8bThanks @tim-smart! - HttpClient.withRateLimiter adds delay from retry-after headers
4.0.0-beta.24
Patch Changes
-
#1586
a909e1cThanks @gcanti! - Schema: addChunkschema, closes #1585. -
#1588
8814a4eThanks @gcanti! - FixSchema.toTaggedUniondiscriminant detection for class-based schemas, including unique symbol tags, closes #1584. -
#1591
3f942c5Thanks @tim-smart! - AddHttpClient.withRateLimiterfor integrating theRateLimiterservice with HTTP clients, including optional response-header driven limit updates and automatic 429 retry behavior. -
#1583
774ed59Thanks @patroza! - feat: Support Reference classes -
#1592
f54b8d3Thanks @tim-smart! - FixHttpApi.prefixso it updates endpoint path types the same wayHttpApiGroup.prefixdoes.
4.0.0-beta.23
Patch Changes
- #1561
5c73c41Thanks @gcanti! - SchemaRepresentation: only create references for recursive/mutually recursive schemas and schemas with anidentifierannotation, closes #1560.
4.0.0-beta.22
Patch Changes
-
#1578
0874332Thanks @tim-smart! - Proxy function arity fromEffect.fnAPIs so wrapped functions preserve the originallengthvalue. -
#1580
c592dcdThanks @tim-smart! - simplify Filter by removing Args type parameter -
#1575
1dbe28dThanks @tim-smart! - fix Chat constructor types -
#1581
564d730Thanks @tim-smart! - fix Duration.toMillis regression -
#1579
3cfadc4Thanks @tim-smart! - Remove fiber-level keep-alive intervals and keep the process alive fromRuntime.makeRunMaininstead. -
#1571
6634fd0Thanks @tim-smart! - AddHttpApiClient.urlBuilderfor type-safe endpoint URL construction from group + method/path keys. -
#1573
d10dabeThanks @tim-smart! - Expose achunkSizeoption onStream.fromIterableto control emitted chunk boundaries when constructing streams from iterables. -
#1574
f82f549Thanks @tim-smart! - Fix AI tool handler error typing soLanguageModel.generateTextwith a toolkit exposes wrappedAiErrorvalues rather than leaking rawAiErrorReasonin the error channel.