Skip to content

Effect

4.0.0-beta.71

Patch Changes

  • #2252 d8ac76b Thanks @tim-smart! - Added Schedule.tap, which allows observing full schedule metadata without altering schedule inputs or outputs.

  • #2261 2c3c00a Thanks @gcanti! - Add JSON Schema custom annotation passthrough option, closes #2260

  • #2269 3751e7c Thanks @gcanti! - Schema: reintroduce .value on Schema.Array and Schema.NonEmptyArray for consistency with other collection wrappers (Chunk, HashSet, etc.), closes #2268.

  • #2272 fc5f25b Thanks @gcanti! - Clarify that Data.$is(tag) only checks the _tag field, not the full structure, closes #2271.

  • #2257 7ccced4 Thanks @bwbuchanan! - Fixed the catch* combinators silently dropping unhandled error types

  • #2263 a2e1fe5 Thanks @patroza! - Use WeakMap for pendingBatches instead of Map, to allow GC to collect resolvers

  • #2266 4a4a36b Thanks @gcanti! - Fix schema arbitrary constraints for exclusive BigInt, Date, and integer number bounds.

  • #2249 d350292 Thanks @tim-smart! - allow encoding Redacted by default, and add option to disallow encoding

  • #2276 730afb6 Thanks @tim-smart! - Fix AtomRef notifications when a listener re-subscribes itself during notification.

  • #2250 df1b008 Thanks @tim-smart! - Fix Argument.variadic(argument) so it supports direct calls without options.

  • #2277 6d469d5 Thanks @tim-smart! - Fix string messages and annotations being double-quoted by simple and logfmt loggers.

4.0.0-beta.70

Patch Changes

  • #2228 af7782d Thanks @avallete! - Add Command.withHidden to hide subcommands from --help output, shell completions, and “did you mean?” suggestions, while keeping them fully invocable by exact name.

    Useful for experimental or internal subcommands that should be accepted but not advertised on the public CLI surface.

    import { Command } from "effect/unstable/cli";
    const experimental = Command.make("experimental").pipe(Command.withHidden);
    const root = Command.make("mycli").pipe(
    Command.withSubcommands([experimental]),
    );
  • #2244 7212d70 Thanks @tim-smart! - Fix TestClock adjustment when its layer is provided to programs run without an ambient Scope.

4.0.0-beta.69

Patch Changes

  • #2227 70ea04a Thanks @avallete! - Add Flag.withHidden (and Param.withHidden) to hide flags from --help output and shell completions while keeping them fully parseable on the command line.

    Useful for experimental, internal, or deprecated flags that should be accepted but not advertised, e.g. --experimental-foo, debug toggles, or escape hatches that are not yet committed to the public CLI surface.

    import { Flag } from "effect/unstable/cli";
    const experimental = Flag.boolean("experimental-foo").pipe(Flag.withHidden);
  • #2240 d0ea8b0 Thanks @tim-smart! - pass workflow parent on discard

  • #2237 a57674b Thanks @notkadez! - Fix Stream.scoped and Channel.scoped so pull effects run with the scoped resource scope.

  • #2239 59aa334 Thanks @tim-smart! - fix RpcWorker Protocol service key

  • #2242 8f4208e Thanks @tim-smart! - Accept .mjs and .mts migration files in SQL migrator loaders.

4.0.0-beta.68

Patch Changes

  • #2210 af8267f Thanks @tim-smart! - Add Stream.broadcastN for fixed-size stream broadcasts.

  • #2180 0176eaf Thanks @IMax153! - update Model uuid helpers

  • #2180 0176eaf Thanks @IMax153! - Add a platform-agnostic Crypto service for cryptographic random bytes, secure random generators, UUIDv4 / UUIDv7 generation, and digest operations. UUID generation should now use the Crypto service’s randomUUIDv4 or randomUUIDv7, which format bytes from the platform Crypto service; UUIDv7 also uses the Clock service timestamp. Random.nextUUIDv4 has been removed because the base Random service is not cryptographically secure.

  • #2221 f136bb7 Thanks @gcanti! - Change Schema.asserts and SchemaParser.asserts to assert a value directly with asserts(schema, input) and remove Schema.Codec.ToAsserts.

  • #2209 6f38f07 Thanks @tim-smart! - Fix Channel.decodeText corrupting UTF-8 characters split across chunk boundaries.

  • #2207 aec9c40 Thanks @tim-smart! - rename Model.Generated to Model.GeneratedByDb

4.0.0-beta.67

Patch Changes

  • #2185 a42ef66 Thanks @lloydrichards! - add rows to Terminal

  • #2111 35594f8 Thanks @thiagofelix! - Fix EntityProxyServer.layerHttpApi using path.entityId instead of params.entityId

  • #2201 8bddd62 Thanks @sjh9714! - Fix MutableList.filter and MutableList.remove length updates.

  • #2181 4be4c8d Thanks @zeyuri! - Fix workflow proxy RPC handlers to provide the context expected by RpcServer.

  • #2177 0c9d3ab Thanks @mikearnaldi! - Add forked memo maps so nested layer scopes can reuse parent allocations without leaking sibling-local layers. Update @effect/vitest to fork memo maps for nested it.layer suites, isolating sibling setup while preserving parent sharing.

  • #2206 b156acc Thanks @tim-smart! - add availableShardGroups to ShardingConfig, to ensure advisory locks do not conflict

  • #2184 d16c034 Thanks @gcanti! - Restore support for passing schema parse options when creating decode and encode helpers, closes #2174.

  • #2176 b559d68 Thanks @patroza! - Allow Schema decoding defaults to require Effect services.

    The Effect passed to Schema.withDecodingDefault, Schema.withDecodingDefaultKey, Schema.withDecodingDefaultType, and Schema.withDecodingDefaultTypeKey now accepts a context R in its third type parameter. The required services are propagated into the resulting schema’s DecodingServices. SchemaGetter.withDefault is widened in the same way.

  • #2113 a3de5d9 Thanks @patroza! - Allow Schema constructor and decoding defaults to fail with SchemaError.

    The Effect passed to Schema.withConstructorDefault, Schema.withDecodingDefault, Schema.withDecodingDefaultKey, Schema.withDecodingDefaultType, and Schema.withDecodingDefaultTypeKey now accepts SchemaError in its error channel. When a default fails, the parser unwraps the underlying SchemaIssue.Issue and propagates it as a parse failure with the surrounding path attached. This makes it easy to use another schema’s makeEffect / decode* as the default value.

  • #2172 7e6c12e Thanks @gcanti! - Rename SchemaParser.makeUnsafe to SchemaParser.make.

  • #2167 098167a Thanks @tim-smart! - update dependencies

4.0.0-beta.66

Patch Changes

  • #2163 ca2498e Thanks @tim-smart! - remove Effect.Yieldable

  • #2161 cd7d1fb Thanks @wking-io! - Fix request ID tracking in the RPC server HTTP protocol finalizer.

  • #2158 19a7033 Thanks @ColaFanta! - Change Type_<> implementation, from using Exclude<F, O | M> type util to keyof F as xx, this implementation keeps IDE provenance link. This enables clicking “Go to definition (F12)” in VSCode on an object made from Schema Struct jumps to the correct Struct field definition.

  • #2153 33d26b4 Thanks @Gabrola! - Allow HttpApiTest.groups to accept an optional baseUrl override while preserving the existing default of "http://localhost:3000".

  • #2160 856766b Thanks @tim-smart! - Remove the auto-incrementing suffix from HTTP server logger log span names.

  • #2164 079c7df Thanks @tim-smart! - Add the unstable workflow DurableQueue module.

4.0.0-beta.65

Patch Changes

  • #2148 6f11454 Thanks @tim-smart! - Add UniqueViolation as a new SQL error reason. Supported unique constraint violations now classify as UniqueViolation instead of the broader ConstraintError reason.

    This covers PostgreSQL, PGlite, MySQL, MSSQL, and the shared SQLite classification used by the SQLite-family clients. UniqueViolation.constraint contains the best available constraint, index, or key identifier and falls back to exactly "unknown" when no reliable identifier is available.

4.0.0-beta.64

Patch Changes

  • #2137 7d4877a Thanks @tim-smart! - Add optional soft delete column support to SqlModel repositories and resolvers.

4.0.0-beta.63

Patch Changes

  • #2136 7f927ff Thanks @tim-smart! - add HttpApiTest module

  • #2123 a696b3e Thanks @lewxdev! - add Effect.acquireDisposable

4.0.0-beta.62

Patch Changes

  • #2131 4ab4b90 Thanks @tim-smart! - Allow Kubernetes pod condition lastTransitionTime values to be null in K8sHttpClient schemas.