Skip to content

All versions since 4.0.0-beta.85

4.0.0-beta.85

Patch Changes

  • #2436 328d97c Thanks @MohanedMashaly! - change default operation in redis from LPUSH TO RPUSH

  • #2431 8441836 Thanks @gcanti! - Derive template literal arbitraries from encoded parts, closes #2414.

  • #2439 074e436 Thanks @gcanti! - Allow schema class .extend to accept a Struct and preserve checks from the extension schema, closes #2419.

  • #2444 c1dfd60 Thanks @bweis! - Avoid throwing when Error.stackTraceLimit is non-writable (frozen intrinsics / SES / deterministic sandboxes such as Temporal).

    Effect manipulates Error.stackTraceLimit in several internal spots to capture short or empty stack traces cheaply. In hardened environments where Error is frozen and stackTraceLimit is read-only, assigning to it throws, which broke Effect entirely. Stack-trace-limit manipulation is now best-effort and silently no-ops when the property cannot be modified, mirroring Node’s own internal guard. Behavior in normal (writable) environments is unchanged.

  • #2425 2ba316b Thanks @tim-smart! - Add Random.choice for selecting a random element from an iterable.

  • #2434 7ce7344 Thanks @gcanti! - Use semantic matching for TemplateLiteral parsing and index signature keys

    Replace regex-based TemplateLiteral parsing with backtracking segmentation over template literal parts, applying part checks during matching.

    Use schema membership when selecting Record index signature keys, including checked string, number, symbol, and TemplateLiteral parameters. Tighten valid index signature parameters on both type and encoded sides, and preserve key parameter semantics in codec transformations.

4.0.0-beta.92

Patch Changes

  • #2501 affdc13 Thanks @gcanti! - Fix excess property handling in schema-backed class constructors, closes #2499.

4.0.0-beta.86

Patch Changes

  • #2462 0b5795a Thanks @tim-smart! - Add Statement.valuesUnprepared for returning unprepared SQL statement rows as arrays.

  • #2455 3e3a859 Thanks @fubhy! - Fix Cron.next skipping earlier matching days when the upcoming day-of-month does not exist in the current month.

  • #2454 7dbec24 Thanks @StarpTech! - Exclude response metadata from HTTP server span failures after response headers have been sent.

  • #2449 d8c00a1 Thanks @gcanti! - Fix Schema handling of encoded-side checks for container ASTs.

    Checks added after flip are now preserved as encodingChecks across Declaration, Arrays, Objects, and Union, even when rebuilding the AST does not change child nodes. toType now projects those checks consistently, and parsing applies encoded-side checks to the local encoded value when an encoding chain is present without allowing encoded-side parseOptions annotations to affect the current parser side.

  • #2446 85b6317 Thanks @IMax153! - Allow schemas provided to CLI flags / arguments to utilize the environment required by the CLI

  • #2452 6d0fda0 Thanks @gcanti! - Remove the keepDeclarations option from Schema.toCodecStringTree.

  • #2461 108a933 Thanks @tim-smart! - Fail RpcClient HTTP requests with a defect when the response stream closes before the request receives a terminal response.

  • #2442 7e1f455 Thanks @gcanti! - Improve Schema type-level performance by lazily computing schema views, specializing common struct projections, and using lighter schema constraints at API boundaries that do not need the full schema protocol.

    This also adds the Schema type-performance benchmark suite, introduces Schema.toCodecArrayFromSingle, preserves canonical StringTree array codecs, renames the arbitrary-generation annotation constraint for clarity, and updates affected codec, parser, channel, SQL, HTTP API, persistence, RPC, AI, OpenAPI, and workflow typings to match the refined Schema surface.

  • #2464 46b3e79 Thanks @tim-smart! - do not use performance.timeOrigin and calculate origins lazily

4.0.0-beta.93

Patch Changes

  • #2512 00652fe Thanks @gcanti! - Preserve content schema identifiers when emitting JSON Schema for Schema.fromJsonString.

    This keeps user-defined identifiers attached to the decoded JSON payload while giving the generated JSON string wrapper its own derived name, avoiding client codegen outputs where the payload type is renamed behind the transport wrapper.

  • #2492 6c58167 Thanks @maxprilutskiy! - Map HttpApi json defects to SchemaError

  • #2519 2bc5415 Thanks @tim-smart! - Fix structural equality for request-style values when structural hashes collide.

  • #2507 e11cccc Thanks @tim-smart! - ensure handler errors don’t cause httpapi security middleware to fallback

  • #2518 ba7e77e Thanks @tim-smart! - Move UrlParams.makeUrl to Url.make and return Url.UrlError for URL construction failures.

  • #2505 5713ee7 Thanks @KhraksMamtsov! - accept UrlParams.Input in some UrlParams apis

4.0.0-beta.87

Patch Changes

  • #2468 5a0c1a4 Thanks @gcanti! - Expose the original input schema on Schema.toType, Schema.toEncoded, Schema.toCodecJson, and Schema.toCodecStringTree results via the schema property. This aligns these schema wrappers with other wrappers that retain their source schema for type-level and runtime introspection.

  • #2466 1eea2ea Thanks @gcanti! - Use URL.canParse to validate URL string schema decoding before constructing a URL. This avoids relying on thrown exceptions for routine validation while preserving the same invalid URL issue and successful decode output.

4.0.0-beta.94

Patch Changes

  • #2538 95a0e9b Thanks @tim-smart! - fork memo map on nested builds

  • #2545 a0a3490 Thanks @marbemac! - Use registration context for cluster entities

  • #2524 f11ce73 Thanks @gcanti! - Fix HttpApi.make so it stores the API identifier and starts with an empty groups object instead of a Map. This makes empty APIs match the shape they have after groups are added.

  • #2546 ff30b6e Thanks @tim-smart! - Fix ClusterWorkflowEngine partial workflow clients colliding with full workflow clients.

  • #2523 1caab3c Thanks @rajzik! - Add glob to filesystem

  • #2541 aa80c47 Thanks @tim-smart! - add LayerRef module

  • #2539 c2ae4fc Thanks @gcanti! - Schema: add Schema.Decoder and Schema.Encoder, and accept simpler schema types in APIs that only decode, only encode, or only need the basic schema shape, closes #2536

  • #2545 a0a3490 Thanks @marbemac! - add Effect.setContext for fully replacing the fiber context

4.0.0-beta.88

Patch Changes

  • #2472 911f1b8 Thanks @tim-smart! - Add adaptive consume and feedback operations to the unstable persistent RateLimiterStore API, including in-memory and Redis-backed bounded cooldown, learning, learned pacing, and expiry behavior for 429 Retry-After feedback.

  • #2457 8beeeea Thanks @P0lip! - Localize missing rpc method errors to the provided request id

  • #2428 c306fcf Thanks @MrGovindan! - Add isOpen to Latch to allow querying the latch’s open state

4.0.0-beta.95

Patch Changes

  • #2542 a482442 Thanks @IGassmann! - Add Schema.DateFromMillis and SchemaTransformation.dateFromMillis for decoding millisecond timestamps into Date values.

  • #2559 fbefa85 Thanks @tim-smart! - fix activity retry policy

  • #2547 0b4a32f Thanks @fubhy! - Allow cron fields like 5/15 to expand from the starting value through the field maximum.

  • #2557 18a49e1 Thanks @fubhy! - Fix Schedule.cron when the test clock is adjusted to infinity.

  • #2560 266cb90 Thanks @gcanti! - Treat empty strings as missing values in built-in ConfigProviders by default.

    ConfigProvider.fromEnv, ConfigProvider.fromDotEnvContents, ConfigProvider.fromDotEnv, ConfigProvider.fromUnknown, and ConfigProvider.fromDir now treat literal empty strings as absent values when loaded as values, allowing Config.withDefault and Config.option to recover. Container discovery still reflects the source structure. Pass preserveEmptyStrings: true to restore the previous behavior.

    ConfigProvider.fromDotEnv({ expandVariables: true }) now expands variables consistently with ConfigProvider.fromDotEnvContents.

  • #2554 912f095 Thanks @tim-smart! - Add Schedule.upTo options for limiting schedules by duration and/or recurrence count.

  • #2556 a6718f9 Thanks @fubhy! - Fix cron parsing and scheduling edge cases for whitespace, Sunday 7, strict numeric tokens, explicit full day ranges, and month-constrained day-of-month / weekday matching.

  • #2551 bef5154 Thanks @tim-smart! - Remove the Schedule.both APIs and add Schedule.max for combining schedules by their slowest delay.

  • #2553 18e0564 Thanks @tim-smart! - Remove some Schedule APIs: collectInputs, collectOutputs, collectWhile, delays, reduce, satisfiesErrorType, satisfiesInputType, satisfiesOutputType, satisfiesServicesType, and unfold.

  • #2558 fb50f14 Thanks @tim-smart! - Remove the Schedule.either APIs and add Schedule.min for fastest-duration schedule composition.

4.0.0-beta.89

Patch Changes

  • #2475 b7d46ab Thanks @tim-smart! - Update Schema.Void to model ignored void return values.

    Runtime parsing now accepts any present value and discards it as undefined. This matches TypeScript void return values, where callers do not observe the returned value. Use Schema.Undefined when the input must be exactly undefined.

  • #2479 7777e15 Thanks @tim-smart! - Add custom error callbacks to Effect.fromOption.

  • #2480 5376197 Thanks @tim-smart! - render causes in OtlpTracer exception events

4.0.0-beta.96

Patch Changes

  • #2563 1503f45 Thanks @tim-smart! - update dependencies

  • #2566 57fe793 Thanks @tim-smart! - change rpc ids to string | number

  • #2561 0c2f78f Thanks @tim-smart! - Remove Schedule.elapsed.

  • #2561 0c2f78f Thanks @tim-smart! - Remove Schedule.tapInput and Schedule.tapOutput. Use Schedule.tap instead.

  • #2561 0c2f78f Thanks @tim-smart! - Update Schedule.addDelay and Schedule.modifyDelay to receive full schedule metadata instead of separate output and delay arguments.

  • #2562 97f29df Thanks @tim-smart! - use Sets to track atom relationships

4.0.0-beta.90

Patch Changes

  • #2483 d237fdf Thanks @tim-smart! - Fix Config.schema so missing array values are treated as missing data, allowing Config.withDefault to apply.

4.0.0-beta.97

4.0.0-beta.91 Latest

Patch Changes

  • #2498 b135b25 Thanks @gcanti! - Fix Schedule.andThenResult to emit self outputs as Failure and other outputs as Success, closes #2497.

  • #2488 aaa21a3 Thanks @fubhy! - Fix String.camelCase and String.pascalCase handling of numeric word segments, and add String.configCase for configuration key casing.

  • #2485 3475ee6 Thanks @tim-smart! - fix RequestResolver interruption