Skip to content

Effect

4.0.0-beta.77

Patch Changes

  • #2326 6e9a5ca Thanks @fubhy! - Prefer OTEL resource environment variables over explicit OtlpResource.fromConfig options.

  • #2325 302f398 Thanks @fubhy! - Add OTEL environment variable configuration for unstable OTLP observability.

4.0.0-beta.76

Patch Changes

  • #2320 016108a Thanks @gcanti! - Add Schema.isGUID and update Schema.isUUID to accept the RFC 9562 max UUID.

  • #2319 95c03d2 Thanks @fubhy! - Add support for configuring Scalar API reference pages with a custom fetch implementation.

  • #2318 07299a3 Thanks @gcanti! - Replace the Schema.Error and Schema.Defect schema constants with constructor functions, Schema.Error() and Schema.Defect().

    Unify Schema.ErrorWithStack into Schema.Error({ includeStack: true }) and Schema.DefectWithStack into Schema.Defect({ includeStack: true }).

    Error causes are encoded by default using the same JSON defect encoding semantics used by Schema.Defect; pass { excludeCause: true } to omit nested cause data.

    Equivalent Schema.Error and Schema.Defect options are canonicalized, so repeated constructor calls with the same option values reuse the same schema.

    Schema.Defect() now models defects as unknown values with a JSON encoded form. Error-shaped JSON objects with a string message decode to JavaScript Error values, so non-Error objects such as { message: "boom" } do not round-trip unchanged. Other non-Error values are normalized through JSON serialization, with non-JSON values falling back to Effect’s formatted string representation.

4.0.0-beta.75

Patch Changes

  • #2294 81b187c Thanks @mattiamanzati! - Align workflow tags with RPCs by changing Workflow.make to accept the tag as its first argument, exposing workflow tags as _tag, and supporting class MyWorkflow extends Workflow.make(...) {}.

  • #2312 ad4b535 Thanks @gcanti! - Validate Schema.StructWithRest fixed fields against rest index signatures at the type level so schemas cannot be constructed with incompatible decoded, encoded, or make shapes. This keeps StructWithRest types sound and updates the generated OpenAI conversation-items request schema to keep accepting arbitrary additional fields under the stricter validation.

  • #2314 a29c2e7 Thanks @gcanti! - Preserve Schema.Redacted options when roundtripping through schema representations. This keeps label validation and disallowJsonEncode behavior intact when schemas are revived from a representation or emitted through code generation.

  • #2298 1fdd9ae Thanks @gcanti! - Remove the Types.MergeRecord alias. Use Types.MergeLeft instead.

  • #2298 1fdd9ae Thanks @gcanti! - Align Schema adapter failures: Schema result, promise, and sync adapters now surface SchemaError, while SchemaParser result, promise, and sync adapters expose SchemaIssue.Issue. Mark SchemaParser option adapters as internal because their error details are discarded.

  • #2313 ffea4ec Thanks @MohanedMashaly! - Add -v alias for version flag

  • #2306 4255c9b Thanks @sam-goodwin! - Fix HttpApiSecurity bearer/http credential decoding

4.0.0-beta.74

Patch Changes

  • #2295 b1fc6a4 Thanks @jgoux! - Fix CLI parsing so command-local flags can override globals without breaking global flags before subcommands.

4.0.0-beta.73

Patch Changes

  • #2291 361ca30 Thanks @tim-smart! - Add HttpApiSecurity.http for passing custom schemes

  • #2289 b9598c6 Thanks @tim-smart! - make EntityResource lazy by default

4.0.0-beta.72

Patch Changes

  • #2287 73e67d1 Thanks @tim-smart! - Ensure ClusterWorkflowEngine routes durable clock wakeups and registered workflow deferred completions through the owning workflow’s shard group.

  • #2286 01d71ec Thanks @tim-smart! - Add default value support to Prompt.file.

  • #2285 fcd707e Thanks @tim-smart! - Add default value support to CLI integer prompts.

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