Effect
4.0.0-beta.51
Patch Changes
-
#2049
778d2afThanks @bohdanbirdie! - AddRpcSerialization.makeMsgPackfor creating MessagePack serialization with custom msgpackr options. On Cloudflare Workers withallow_eval_during_startup(default forcompatibility_date >= 2025-06-01), pass{ useRecords: false }to prevent msgpackr’s JIT code generation vianew Function(), which is blocked during request handling. Also fixes silent error swallowing in themsgPackdecode path — non-incomplete errors are now rethrown instead of returning[]. -
#2010
4e24dcfThanks @tim-smart! - process schema properties / elements concurrently -
#2052
4b1c015Thanks @gcanti! - Schema: expandFilterOutputand addFilterIssuefor richer filter failures.The return type of a
Schema.makeFilterpredicate now supports two additional shapes:{ path, issue }whereissueisstring | SchemaIssue.Issue(previously only{ path, message: string }was accepted). Theissuearm lets you attach a fully-formedIssueat a nested path without manually constructing aPointer.ReadonlyArray<Schema.FilterIssue>to report several failures at once. An empty array is success, a single-element array is equivalent to returning that element, and multi-entry arrays are grouped into anIssue.Composite. This removes the need to importSchemaIssueand hand-build aCompositefor multi-field validators.
The single-failure shapes (
undefined,true,false,string,SchemaIssue.Issue) are unchanged.Breaking: the object shape renamed from
{ path, message }to{ path, issue }. Call sites that used the old shape must rename the field; the migration is mechanical.// beforeSchema.makeFilter((o) => ({ path: ["a"], message: "bad" }));// afterSchema.makeFilter((o) => ({ path: ["a"], issue: "bad" }));Also renamed
{ path, message }to{ path, issue }in the accepted return type ofSchemaGetter.checkEffect. -
#2047
454f8adThanks @gcanti! - FixSchemaAST.isJsonrejecting DAGs as cycles, closes #2021.The previous implementation marked every visited object in a single
seenset and never removed it, so any value that referenced the same object through two different paths (a DAG, e.g.{ x: shared, y: shared }) was treated as a cycle and returnedfalse. Cycle detection now tracks only the current recursion path (popping on exit) and memoizes fully validated subtrees, so DAGs are accepted while true cycles are still rejected. -
#2051
6754a0cThanks @tim-smart! - disable sql traces for EventLog, RunnerStorage -
#2053
90f7fd5Thanks @tim-smart! - remove use of bigint literals -
#2046
d7e1519Thanks @gcanti! - Remove theoptionsparameter fromOpenApi.fromApi.The parameter only carried
additionalProperties, but the function caches results in aWeakMapkeyed solely on theapiinstance. Passing different options across calls for the same api was silently ignored, making the parameter order-dependent and effectively single-shot. No call sites were using it, so the signature is now simplyfromApi(api). -
#2044
72a8122Thanks @tim-smart! - ensure envelope payloads are correctly encoded for notify path
4.0.0-beta.50
Patch Changes
-
#2038
07be594Thanks @tim-smart! - add support for deferred responses in rpc -
#2040
ae02433Thanks @tim-smart! - require a option to make AtomRpc.query atoms serializatable
4.0.0-beta.49
Patch Changes
-
#2035
7d87873Thanks @tim-smart! - Add support for common HTTP status string literals inHttpApiSchema.status(for example,HttpApiSchema.status("Created")resolves to status code201). -
#2034
216f13cThanks @IMax153! - Fix issue with exported CLICompletionstypes
4.0.0-beta.48
Patch Changes
-
#2029
a5e6f77Thanks @tim-smart! - omit scope from HttpApi handlers -
#2023
f1ba5b8Thanks @tim-smart! - EventLog Identity string encodes to base 64 -
#2023
f1ba5b8Thanks @tim-smart! - disable tracer propagation for otlp exporter
4.0.0-beta.47
Patch Changes
-
#2017
c584726Thanks @gcanti! - Schema: addannotateEncodedfunction for annotating the encoded side of a schema. -
#2013
86a91a4Thanks @gcanti! - Schema: add withDecodingDefaultTypeKey / withDecodingDefaultType, closes #2012 -
#2018
131caf9Thanks @gcanti! - Schema: allowClassconstructors to acceptvoidwhen all fields are optional, closes #2015. -
#2016
c3615c8Thanks @gcanti! - Schema: rename"~rebuild.out"to"Rebuild"
4.0.0-beta.46
Patch Changes
4.0.0-beta.45
Patch Changes
4.0.0-beta.44
Patch Changes
-
#1943
e3f0621Thanks @gcanti! - AddDateFromString,BigIntFromString,BigDecimalFromString,TimeZoneNamedFromString,TimeZoneFromString, andDateTimeZonedFromStringschemas, closes #1941. -
#1996
5b476abThanks @gcanti! - Schema: addStringFromBase64,StringFromBase64Url,StringFromHex, andStringFromUriComponentschemas for decoding encoded strings into UTF-8 strings, closes #1995. -
#1952
6b40e5aThanks @tim-smart! - Effect.repeat now uses effect return value when using options -
#1961
7bb5dceThanks @IMax153! - Rename Atom’sContexttype toAtomContext -
#1975
3b09fb3Thanks @tim-smart! - catch defects when building Entity handlers -
#2000
2370410Thanks @tim-smart! - fix cache constructor inference by moving the lookup option -
#1928
dabc272Thanks @tim-smart! - Addschema.makeEffect(input, options?)toSchema.Bottomand schema-backed classes, matching the existing constructor behavior exposed bymakeUnsafe/makeOptionwhile returning anEffectfailure withSchema.SchemaError. -
#1949
08b63c3Thanks @tim-smart! - Update the unstable HTTP middleware logger to annotate only the request path inhttp.urlinstead of including the full URL (query / fragment), and add a regression test. -
#1962
dfff04cThanks @tim-smart! - AddKeyValueStore.layerSqlto back key-value storage with a SQL database viaSqlClient. -
#1963
9baed9eThanks @tim-smart! - FixUnify.unifyso Layer unions merge correctly, and add type tests covering Layer unification. -
#2004
7846792Thanks @tim-smart! - FixStream.toQueuetypes and implementation to return aQueue.Dequeuein both overloads and delegate toChannel.toQueueArray. -
#1974
1556a24Thanks @juliusmarminge! - Fix unstable CLI boolean flags soFlag.optional(Flag.boolean(...))returnsOption.none()when omitted, and support canonical--no-<flag>negation for boolean flags. -
#1929
b5ea591Thanks @gcanti! - Simplify and align the default-value APIs.Schema.withConstructorDefaultnow accepts anEffect<T>instead of(o: Option<undefined>) => Option<T> | Effect<Option<T>>.Schema.withDecodingDefault/Schema.withDecodingDefaultKeynow accept anEffect<T>instead of() => T, enabling effectful defaults.SchemaGetter.withDefaultfollows the same change, acceptingEffect<T>instead of() => T. -
#1966
0853afaThanks @gcanti! - Reuse existing references when duplicate identifiers have the same representation, closes #1927. -
#1942
ac845f3Thanks @gcanti! - FixErrorClassandTaggedErrorClasstoStringto match nativeErroroutput format (e.g.E: my messageinstead ofE({"message":"my message"})), closes #1940.Also fix prototype properties (e.g.
name) being lost after.extend(). -
#1956
b80c462Thanks @gcanti! - AddSchema.resolveAnnotationsKeyAPI to retrieve the context (key-level) annotations from a schema, closes #1947.Also rename
Schema.resolveIntotoSchema.resolveAnnotations. -
#2005
b3f535dThanks @gcanti! - FixStream.splitLinesto correctly handle standalone\ras a line terminator and flush the final unterminated line when the stream ends, closes #2002. -
#1936
6fe2e93Thanks @IMax153! - FixStream.groupedWithindropping partial batches when the upstream ends or goes idle. -
#1965
8335477Thanks @tim-smart! - return resolvers directly from SqlModel.makeResolvers -
#1960
8c836f9Thanks @IMax153! - AddChildProcessHandle.unref, returning anEffectthat restores the child process reference when run. -
#1984
718ff6fThanks @jannabiforever! - MakeEffect.retrywithtimesargument to propagate the original error. -
#1930
7eed84fThanks @mikearnaldi! - AddStream.serviceandStream.serviceOptionfor accessing services as single-element streams. -
#1935
5df46feThanks @gcanti! - Schema: addasClassAPI to turn any schema into a class with static method support.Example
import { Schema } from "effect";class MyString extends Schema.asClass(Schema.String) {static readonly decodeUnknownSync = Schema.decodeUnknownSync(this);}MyString.decodeUnknownSync("a"); // "a" -
#1958
82dd0f2Thanks @gcanti! - Schema: addMissingSelfGenericcompile-time error forClass,TaggedClass,ErrorClass, andTaggedErrorClasswhen theSelftype parameter is omitted. -
#1957
03ae41eThanks @gcanti! - Schema: remove"~annotate.in"type fromBottominterface, inlining it where needed -
#1951
4677a0aThanks @gcanti! - RenameSchema.makeUnsafeinstance method back toSchema.makeon all schemas and schema-backed classes.Also remove the
static readonly makeoverride fromShardIdto avoid conflicting with the inherited schemamakemethod. The module-levelShardId.make(group, id)function is still available. -
#1999
87e1fc8Thanks @tim-smart! - use NoInfer in Layer constructors to prevent type erasure -
#1971
c1af1b7Thanks @joepjoosten! - Allow unstable CLI fallback prompts to be created dynamically from anEffect. -
#1961
7bb5dceThanks @IMax153! - Rename theServiceMapmodule toContextacross exports, docs, and tests. -
#1973
c8a877bThanks @joepjoosten! - Underline the active label in CLI multi-select prompts and add a scratchpad example for manual verification.
4.0.0-beta.43
Patch Changes
-
#1904
2ae33d0Thanks @juliusmarminge! - Fix JSON-RPC serialization foridvalues that are falsey but valid, including0and"", while still mappingnullto Effect’s internal notification sentinel. -
#1900
979811aThanks @tim-smart! - Fix AI structured output schema generation forSchema.ClassandSchema.ErrorClassby resolving top-level$refentries before passing JSON Schema to providers and default codec transformers. -
#1908
eb7dbefThanks @tim-smart! - Fix stream requests in Entity.toLayerQueue -
#1907
cf50eb4Thanks @tim-smart! - add WorkflowEngine interruptUnsafe -
#1903
1d046feThanks @kitlangton! - AddLayer.suspendas a lazy constructor for dynamically choosing a layer while preserving normal layer sharing.
4.0.0-beta.42
Patch Changes
-
#1897
924e216Thanks @IMax153! - Append concrete choice values to CLI flag help descriptions so generated help shows valid command-line inputs. -
#1894
80e7f0cThanks @tim-smart! - FixMutableList.appendAll/appendAllUnsafeso empty arrays are treated as a no-op instead of leaving behind an empty internal bucket. -
#1895
f8328bfThanks @tim-smart! - Changed socket close handling so all close codes are treated as errors by default unlesscloseCodeIsErroris overridden. -
#1899
66d1c06Thanks @gcanti! - SchemaRepresentation: supportanyOf/oneOfwith sibling keywords infromJsonSchemaMultiDocument -
#1893
bee800bThanks @gcanti! -Number.remainder: fix incorrect results for small floats in scientific notation (e.g.1e-7). -
#1898
8930441Thanks @mikearnaldi! - RenameEffect.transactiontoEffect.txandEffect.retryTransactiontoEffect.txRetry, removeEffect.transactionWith/Effect.withTxState, make nestedEffect.txcalls compose into the active transaction, and make the publicTx*APIs establish atomic transactions without requiringTransactionin common usage.