Skip to content

Effect

4.0.0-beta.27

Patch Changes

  • #1621 903a839 Thanks @kitlangton! - unstable/http Headers: add removeMany combinator for removing multiple headers at once

  • #1622 91a0168 Thanks @tim-smart! - Add Model.BooleanSqlite, a model field schema that uses 0 | 1 encoding for database variants and plain boolean encoding for JSON variants.

  • #1631 c890f9a Thanks @gcanti! - unstable/httpapi HttpApiBuilder: fix void responses producing a non-empty body instead of Response.empty, closes #1628.

  • #1618 1e985f2 Thanks @tim-smart! - Default Effect.context() to Effect.context<never>() when no type parameter is provided.

4.0.0-beta.26

Patch Changes

  • #1603 fb21462 Thanks @tim-smart! - Add responseText to AiError.StructuredOutputError and populate it from LanguageModel.generateObject so failed structured output decodes include the full LLM text.

  • #1613 2ed26b1 Thanks @lucas-barake! - Add disableFatalDefects to RpcServer.layerHttp, RpcServer.toHttpEffect, and RpcServer.toHttpEffectWebsocket option types to match existing runtime support.

  • #1599 e832a57 Thanks @tim-smart! - add trait for customizing exit codes

  • #1611 7f01be7 Thanks @WebWalks! - Fixed the Error Type on AtomHttpApiClient (Server errors were being incorrectly reported, and we could not determine _tag to handle)

  • #1612 e965143 Thanks @tim-smart! - Expose the optional orElse fallback parameter in Effect.catchTags.

  • #1606 b9b80f1 Thanks @gcanti! - Schema: toJsonSchemaDocument now emits JSON Schema false for unannotated Never index signatures (including additionalProperties) instead of { not: {} }. Annotated Never still emits a schema object so metadata like description is preserved.

  • #1607 98252aa Thanks @gcanti! - Schema: improve Schema.Unknown / Schema.ObjectKeyword handling in toCodecJson and toCodecStringTree

  • #1616 56fbd94 Thanks @lucas-barake! - Add Atom.swr to effect/unstable/reactivity for staleTime-gated stale-while-revalidate reads, optional mount and window-focus revalidation, and forceful manual refresh.

  • #1600 3faa109 Thanks @tim-smart! - add args to Stdio service

  • #1610 692ecfe Thanks @kitlangton! - Refine unstable CLI parent/subcommand flag composition.

    • Add Command.withSharedFlags conflict validation against existing subcommands, including the withSubcommands(...).withSharedFlags(...) composition order.
    • Reorder Command type parameters to Command<Name, Input, ContextInput, E, R> for clearer parent-context modeling.
    • Make Command.withSubcommands input typing sound for downstream input-based combinators by reflecting that subcommand paths only carry parent context input.
  • #1604 1e70b72 Thanks @lucas-barake! - Fix unstable/sql/SqlSchema request input typing so findAll and findNonEmpty accept Request["Type"] instead of Request["Encoded"].

  • #1602 ecf0782 Thanks @tim-smart! - Replace the default HttpApi schema-validation error with HttpApiError.BadRequestNoContent.

4.0.0-beta.25

Patch Changes

  • #1597 fa17bb5 Thanks @tim-smart! - Fix Effect.forkScoped data-first typings to include Scope in requirements.

  • #1598 f46e5b5 Thanks @tim-smart! - compare transaction connections by reference

  • #1596 ce4767c Thanks @tim-smart! - improve HttpClient.withRateLimiter initial state tracking

  • #1594 c830a8b Thanks @tim-smart! - HttpClient.withRateLimiter adds delay from retry-after headers

4.0.0-beta.24

Patch Changes

  • #1586 a909e1c Thanks @gcanti! - Schema: add Chunk schema, closes #1585.

  • #1588 8814a4e Thanks @gcanti! - Fix Schema.toTaggedUnion discriminant detection for class-based schemas, including unique symbol tags, closes #1584.

  • #1591 3f942c5 Thanks @tim-smart! - Add HttpClient.withRateLimiter for integrating the RateLimiter service with HTTP clients, including optional response-header driven limit updates and automatic 429 retry behavior.

  • #1583 774ed59 Thanks @patroza! - feat: Support Reference classes

  • #1592 f54b8d3 Thanks @tim-smart! - Fix HttpApi.prefix so it updates endpoint path types the same way HttpApiGroup.prefix does.

4.0.0-beta.23

Patch Changes

  • #1561 5c73c41 Thanks @gcanti! - SchemaRepresentation: only create references for recursive/mutually recursive schemas and schemas with an identifier annotation, closes #1560.

4.0.0-beta.22

Patch Changes

  • #1578 0874332 Thanks @tim-smart! - Proxy function arity from Effect.fn APIs so wrapped functions preserve the original length value.

  • #1580 c592dcd Thanks @tim-smart! - simplify Filter by removing Args type parameter

  • #1575 1dbe28d Thanks @tim-smart! - fix Chat constructor types

  • #1581 564d730 Thanks @tim-smart! - fix Duration.toMillis regression

  • #1579 3cfadc4 Thanks @tim-smart! - Remove fiber-level keep-alive intervals and keep the process alive from Runtime.makeRunMain instead.

  • #1571 6634fd0 Thanks @tim-smart! - Add HttpApiClient.urlBuilder for type-safe endpoint URL construction from group + method/path keys.

  • #1573 d10dabe Thanks @tim-smart! - Expose a chunkSize option on Stream.fromIterable to control emitted chunk boundaries when constructing streams from iterables.

  • #1574 f82f549 Thanks @tim-smart! - Fix AI tool handler error typing so LanguageModel.generateText with a toolkit exposes wrapped AiError values rather than leaking raw AiErrorReason in the error channel.

  • #1577 78a3382 Thanks @tim-smart! - fix VariantSchema.Union

4.0.0-beta.21

Patch Changes

  • #1555 e691909 Thanks @tim-smart! - fix Stream.withSpan options

  • #1548 d5f413f Thanks @effect-bot! - Fix TxPubSub.publish and TxPubSub.publishAll overloads to require Effect.Transaction in their return environment.

  • #1557 139d152 Thanks @A386official! - Fix MCP resource template parameter names resolving as param0, param1 instead of actual names by checking isParam on the original schema before toCodecStringTree transformation.

  • #1547 947e3d4 Thanks @effect-bot! - Fix Schedule.reduce to persist state updates when the combine function returns a synchronous value.

  • #1545 84b2cce Thanks @effect-bot! - Fix TupleWithRest post-rest validation to check each tail index sequentially.

  • #1552 7f5305e Thanks @tim-smart! - Constrain HttpServerRequest.source to object and key server-side request weak caches by request.source so middleware request wrappers share the same cache entries.

  • #1556 9e6fd84 Thanks @tim-smart! - rename WorkflowEngine.layer

  • #1558 fdb8a4b Thanks @tim-smart! - Fix Workflow.executionId to use schema makeUnsafe instead of the removed .make API.

  • #1553 0f986ef Thanks @kaylynb! - Fix spans never having parent span

  • #1541 9355fc0 Thanks @tim-smart! - Add Effect.findFirst and Effect.findFirstFilter for short-circuiting effectful searches over iterables.

4.0.0-beta.20

Patch Changes

  • #1533 842a624 Thanks @tim-smart! - move ChildProcess apis into spawner service

  • #1536 4785eef Thanks @tim-smart! - add Context.Key type, used a base for Context.Service and Context.Reference

  • #1531 8fac95b Thanks @gcanti! - Revert Config.withDefault to v3 behavior, closes #1530.

    Make Config.withDefault accept an eager value instead of LazyArg, aligning with CLI module conventions.

  • #1535 12ee8e2 Thanks @tim-smart! - change default ErrorReporter severity to Info

  • #1529 e542c94 Thanks @tim-smart! - Add dedicated AiError metadata interfaces per reason so provider packages can safely augment metadata without conflicting module declarations.

  • #1531 8fac95b Thanks @gcanti! - Fix Config.withDefault type inference, closes #1530.

  • #1528 6f4ebd1 Thanks @tim-smart! - Add Model.ModelName and provide it from AI model constructors.

  • #1537 989d1cc Thanks @tim-smart! - Revert Effect.partition to Effect v3 behavior by accumulating failures from the effect error channel and never failing.

4.0.0-beta.19

4.0.0-beta.18

Minor Changes

  • #1515 01e31fd Thanks @mikearnaldi! - Add transactional STM modules: TxDeferred, TxPriorityQueue, TxPubSub, TxReentrantLock, TxSubscriptionRef.

    Refactor transaction model: remove Effect.atomic/Effect.atomicWith, add Effect.withTxState. All Tx operations now return Effect<A, E, Transaction> requiring explicit Effect.transaction(...) at boundaries.

    Expose TxPubSub.acquireSubscriber/releaseSubscriber for composable transaction boundaries. Fix TxSubscriptionRef.changes race condition ensuring current value is delivered first.

    Remove TxRandom module.

Patch Changes

  • #1518 0890aab Thanks @IMax153! - Fix Command.withGlobalFlags type inference when mixing GlobalFlag.action and GlobalFlag.setting.

    Setting service identifiers are now correctly removed from command requirements in mixed global flag arrays.

  • #1520 725260b Thanks @IMax153! - Ensure that OpenAI JSON schemas for tool calls and structured outputs are properly transformed