Skip to content

Effect

Version 4.0.0-beta.28

Minor Changes

  • #1637 42bc7ce Thanks @tim-smart! - Add a new effect/unstable/http/HttpStaticServer module for static file serving with MIME resolution, directory index fallback, SPA fallback, and safe path resolution.

Patch Changes

  • #1659 ff533f2 Thanks @tim-smart! - Persist MCP HTTP session and protocol headers after initialize so follow-up JSON-RPC requests include MCP-Protocol-Version.

  • #1663 dc803ee Thanks @tim-smart! - Add HttpServerResponse.fromClientResponse for directly converting client responses into server responses.

  • #1657 d660b1c Thanks @tim-smart! - Add Ctrl-U line clearing support to editable CLI prompts.

  • #1645 93a05e3 Thanks @gijsbartman! - ensure transformed Atom’s don’t extend idle ttl

  • #1655 2a65cf6 Thanks @tim-smart! - Make AtomRpc.query and AtomHttpApi.query return 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 a561a40 Thanks @tim-smart! - Add HttpServerRequest.toClientRequest for direct server-to-client request conversion.

  • #1648 29cd24d Thanks @gcanti! - Fix Types.VoidIfEmpty to correctly detect empty object types. Remove deprecated Types.MatchRecord in favor of the simplified implementation, closes #1647.

  • #1664 662a8e6 Thanks @tim-smart! - Add HttpServerRequest.fromClientRequest for direct client-request-backed server request conversion.

  • #1656 d2b52ba Thanks @tim-smart! - Persist MCP client capability context across HTTP requests by resolving initialized payloads through the standard Mcp-Session-Id HTTP header in McpServer.

    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 read McpServer.clientCapabilities.

  • #1639 407c3b4 Thanks @tim-smart! - Add Scheduler.PreventSchedulerYield and expose it via References so fibers can skip scheduler shouldYield checks when needed.

  • #1649 e741322 Thanks @tim-smart! - Set Schema.TaggedErrorClass instance name to the tag value, matching Data.TaggedError behavior.

  • #1646 5c75fa8 Thanks @tim-smart! - Simplify internal and documented request usage by passing request resolvers directly to Effect.request instead of wrapping them with Effect.succeed.

  • #1641 747177b Thanks @tim-smart! - Don’t transform Tool result schemas, as they aren’t sent to the providers as json schemas

  • #1636 326cd48 Thanks @tim-smart! - Add Cookies.expireCookie / expireCookieUnsafe and HttpServerResponse.expireCookie / expireCookieUnsafe for emitting expired cookies.

  • #1653 627e922 Thanks @tim-smart! - expose mcp client capabilities

  • #1660 662287e Thanks @tim-smart! - Add HttpServerResponse.toClientResponse for converting server responses into HttpClientResponse values.