Skip to content

chore: update effect packages to 4.0.0 - #908

Merged
omegent-app[bot] merged 7 commits into
mainfrom
t3code/upgrade-effect-4.0.0
Oct 2, 2026
Merged

omegent-app[bot] merged 7 commits into
mainfrom
t3code/upgrade-effect-4.0.0

Conversation

@omegent-app

@omegent-app omegent-app Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Upgrade Effect packages from 4.0.0-rc.115 to published npm 4.0.0 (latest). No pkg.pr.new.

Pins (npm only)

  • effect, @effect/platform-node, @effect/vitest, @effect/sql-sqlite-node: 4.0.0
  • peers / carets: ^4.0.0 (effect, @effect/atom-vue, @effect/platform-browser, @effect/vitest)
  • independently versioned: @effect/language-service 0.87.3, @effect/tsgo ^0.47.2

Subtree: repos/effect squash-synced to tag effect@4.0.0 (67ba4e46a1).

API adaptations

Effect 4.0 moves former effect/unstable/* modules to effect/* (they remain @stability unstable). Imports, comments, and docs drop the unstable segment. effect/unstable/arbitrary/Arbitrary becomes effect/Arbitrary.

Other 4.0.0 contract updates:

  • Array.partition now returns [passes, fails]
  • custom MessageStorage implements resetRequests and honors clearReplies expectedReplyId
  • SchemaGetter.map is a standalone combinator
  • Schema.fromBrand requires a single brand key; local fromBrand stays a type-only wrapper around Schema.brand + annotations (callers still use nominal())
  • Schema.make is a prototype getter (cannot Object.assign); extend/Struct.make shadow it with own properties
  • context.constructorDefault is an Effect (no longer a Link); form defaults run it and use SchemaGetter.run for decoding defaults
  • JSON Schema minLength for strings is Unicode code points (isMinLength(3) → minLength: 2)

@effect/tsgo 0.47 flags Effect 4's still-unstable cluster/rpc/http/cli APIs and some existing test patterns. .oxlintrc.json turns off unstable-api-usage, floating-effect, and multiple-effect-provide.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

omegent-app Bot and others added 6 commits October 2, 2026 07:34
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
67ba4e46a1 Version Packages (#8577)
8b0eac6ac4 Update readme files (#8634)
2c552f220e Consolidate changesets and fix stability tags (#8633)
735b77b65c Add Effect variants to TestSchema (#8632)
f72790c618 Preserve schema references across contextual projections (#8630)
988c467afa Close server WebSockets according to handler exit (#8598)
5f9c9d17c1 Fix MutableHashMap key retention on equal-key cache refresh (#8625)
ef7d77f382 Make Schema.brand type-only (#8628)
29e0aa7dcc Fix lost failure during concurrent layer interruption (#8585)
0af6d0c8ce Fix encoded RPC interrupt fiberId type for JSON null (#8626)
32559614d9 Stabilize Bun bundle and docgen test timeouts (#8624)
3278821a64 Fix Queue batch taker wake loop on partial offers (#8619)
83429b4202 Fix Effect.race losers left running when the race ends during startup (#8607)
5a81a6f475 Keep newer Atom.family entries when a stale finalizer runs (#8601)
918808cf68 fix .vscode tsdk paths (#8621)
10d8524dc4 Fix Schema projection check preservation (#8617)
927e01e005 Fix branded union type code generation (#8614)
035e369b3a Inline checked sources of Schema JIT transformations (#8597)
aa1947284c Stop Schema unions resolving candidate parsers on every decode (#8555)
35ac25a80b Normalize partition result order across all modules (#8583)
df77fff939 Fix flat RPC client and AtomRpc inference for a union of tags (#8579)
b07406952b Clarify schema branding guidance in v3-to-v4 migration reference (#8590)
878353689f Fail in-flight RPC streams after missed socket pong (#8593)
5250ca63c6 Fix synchronous concurrent Atom.fn results (#8589)
68b639473f Guard workflow replies against stale concurrent resets (#8576)
ee6ffbfde3 Allow MSSQL queue suite more time to acquire its test layer (#8594)
d56bd280ef Wait for suspended workflow finalizer in cluster test (#8592)
cbfc7b4220 Fix Schema brand identifier typing (#8580)
e5f7d12af9 Retry failed cluster workflow run resets (#8575)
ad61db80ef Version Packages (rc) (#8336)
34cc78833d Fix AtomRegistry missed updates through stale nodes and leaked superseded builds (#8543)
e8df3d8e76 Treat infinite PubSub capacity as unbounded (#8540)
fb718d3192 HttpApi: per-slot ParseOptions annotations with ParseOptions fallback (#8572)
aa430d89c1 Fix batch queue takes hanging after termination (#8569)
4113bc78ee fix(sql-pg): Fail transactions that PostgreSQL rolls back at COMMIT (#8558)
ccade1492c Fix atom writes dropped by batch commit listeners (#8556)
b501557939 Report MCP tool failures without an empty message or an invalid-params code (#8552)
d26a913221 Keep RPC servers answering after a malformed client line (#8541)
702c34e2af Stop cluster runners without storage from leaking request ids (#8542)
24f7d32b38 Fix interrupted queue offers after end (#8568)
d68cbd6c8f Retire fatal sql-pg sessions before resuming queries (#8570)
4bb949e64f Authorize identities before unencrypted event-log session binding (#8534)
01e78c60f9 Clarify Semaphore.releaseAll with active permit holders (#8566)
fd9095fb49 Update repository dependencies (#8562)
6bf2eb76f0 Build FindMyWay params without new Function (#8535)
0cf7655d1f fix(openapi): Keep literals and patterns on `asText` bodies (#8551)
64093976e9 Optimize schema construction (#8536)
8d070c3ead Refactor OpenAPI schema representation pipeline (#8547)
8202a6ea41 fix(openapi): Correctly mark Schema's with defaults decoders defined as optional in OpenAPI docs (#8545)
3495bd8858 Preserve Effect.repeat result types with bounded options (#8533)
2a8f5c748d Clean up SQLite transactions after failed commits (#8529)
0786152777 Fix Bun SQLite file URI opening on Linux (#8532)
cf7cfd6144 Fix return-mode toolkit stream encoding error type (#8530)
1f760401be Fix Toolkit handle decoder service requirements (#8531)
9a5a383cc6 Fix ManagedRuntime disposal ordering (#8528)
e36c35c656 Fix JSDoc validation failures (#8524)
16623c7d30 Fix JSON Schema export of built-in checks (#8482)
d470d54495 fix(observability): read OTLP export response bodies (#8522)
0a29ca6840 Discard unclaimed sql-pg background connection failures (#8514)
ccd3440963 fix(http): make HttpRouter entrypoints own their router (#8477)
67ee3b87f0 fix(cluster): order PostgreSQL shard lease locks (#8502)
330b7475e2 Add Schedule.once (#8519)
e54211a57d Restore Error.stackTraceLimit when Cause.prettyErrors throws (#8503)
a9614ff13e Clarify Scope.close interruptibility in API docs (#8515)
af510e8197 Skip LayerMap preloading when idle TTL is zero (#8511)
ff554aeb9b Keep ManagedRuntime disposal uninterruptible (#8512)
4093507c66 Fix zero-TTL cache lookups evicting live entries (#8510)
25d9e47f01 Clarify MCP tool parameter schema errors (#8507)
5e9fd25cbd Report all MCP tool parameter validation errors (#8508)
372a45de59 Fix MCP pings before initialization (#8505)
254fcc1944 Fix CLI lexing of negative number values (#8504)
3788b63bd6 Fix effect/schema test path resolution on macOS (#8494)
19835f2b92 feat(effect): Added `Config.flatMap` (#8334)
18bb92a005 docs: clarify JSON Schema decoding with the canonical codec (#8492)
c2e810cc7a Compile a recursive Schema equivalence once instead of once per value level (#8429)
8d27554650 Stop Schema compilation re-analysing every sub-schema for each enclosing schema (#8451)
2575fcc12b Stop rebuilding the parser wrappers on every SchemaParser.asserts call (#8440)
2cf4e43f02 Add Schema.StringForLiteralAutocomplete (#8366)
c8a9f8543d Simplify Config absence handling (#8488)
99a1b078ff Keep persisted queue retry-delay assertion across SQL backends (#8486)
81a0b3aaae Support Vitest fixtures in Effect tests (#8425)
92e91511e3 fix(ai-anthropic): accept messages without usage.inference_geo (#8478)
a41a4414d3 refactor: add structuredContent policy dependent on protocol (#8468)
0f42b56447 Fix Anthropic gateway 4xx error mapping (#8479)
eb02cbb3f4 fix(reactivity): defer stale-while-revalidate reads (#8421)
6b84149622 Annotate Config.fail return type as Config<never> (#8475)
d6cc5d9870 fix(http): emit buffered multipart parts before pulling input (#8420)
926e8bf4c1 fix(sql-libsql): expose the active transaction service (#8419)
1a3eb9ea60 Fix workflow execution ID collisions from ambiguous hash inputs (#8455)
5521209a76 Stop compiled Schema structs retaining an unused parse traversal (#8435)
f4dd1aec1a Fix Queue takers and offers parking forever after a yield (#8412)
58eef0addc Fix anonymous layers breaking Vitest fixture tests in the same suite (#8422)
bd14b6431a Restrict Scope.closeUnsafe to Closeable scopes (#8474)
1fd49d4e37 Fix MutableList.takeN wedging a Queue so it stops delivering messages (#8448)
c85c8c3178 Fix MCP tool annotation titles in 2025 protocol adapters (#8465)
93f826af79 Stop the Effect run loop building a success Exit between continuations (#8437)
6f44ca0b98 Fix Stream.broadcast subscribers that never end (#8410)
0981d01df8 Fix Queue lost wakeup during taker registration (#8472)
37064fdfc8 Restrict Scope.close to Closeable scopes (#8473)
4f5f866896 Stop forked Scopes registering a finalizer just to leave their parent (#8457)
dd8990bb1b Stop TxPriorityQueue.offerAll re-sorting a queue that is already sorted (#8446)
c00c8ffd48 Fix Stream.forever and Stream.repeat slowing down and leaking per repetition (#8416)
b808b5d0c0 Stop Schema array and tuple decoding running a generator it never needs (#8441)
f05fe36f87 Stop MutableList keeping a slot for every element that ever passed through a list that never empties (#8447)
508c70be13 Honor deferred startup in fiber containers (#8469)
b442528ddf Stop a recursive Schema formatter holding one compiled body per level (#8436)
382992f168 Stop fibers holding memory they no longer need (#8443)
80d5adb167 Fix PubSub losing a message, or publishing one, when a waiter is interrupted (#8449)
c760e1e074 Stop the Schema struct and array traversal allocating a context per item (#8442)
3036241e1e Stop Schema unions rebuilding their candidate list on every decode (#8428)
43bbb257c2 Fix STM transactions that never wake when a TxRef is written (#8452)
83d7c95465 Keep the failure an `onExit` finalizer was cleaning up after when it throws (#8427)
0c6c2dec86 Stop Cause.squash allocating three arrays to read one reason (#8413)
7ef0ce6f42 Fix Context copying every service after eight lookups (#8454)
537cd82174 Stop Effect.gen and Effect.fn allocating on every yield and every call (#8453)
d2f3547561 Stop building a closure chain per Effect.match call (#8439)
0c0aa5ebb0 Stop Effect spans re-resolving the tracer from the context (#8433)
6332de29a8 Stop Stream.concat chains slowing down quadratically with their length (#8445)
0860c0c125 Stop Schema code generation re-proving emittability for every property (#8430)
97afa37ed0 Stop Graph traversals allocating per visit and per relaxation (#8415)
cdec5efd02 Fix DateTime rebuilding the formatter on every call for an aliased time zone (#8414)
ca422fdf49 Fix a scope skipping its remaining finalizers when one throws (#8418)
83b7b1fc91 Fix MutableList.prependAll of no values corrupting the list (#8450)
477394deb6 Stop Schema allocating on every rest-tuple equivalence or formatter call (#8434)
aa7de26631 Fix Stream.mapEffect with concurrency hanging when the function throws (#8411)
c831e82ea6 Document how FileSystem.File cursors differ from POSIX offsets (#8432)
34e09becb6 Fix Unicode semantics in JSON Schema imports (#8459)
35ecbb9864 Fix onExcessProperty "error" rejecting non-enumerable own properties (#8423)
0cbb45792b Store NetAddress IP addresses as numbers instead of Uint8Array (#8407)
32baabcf80 Migrate unstable JSDoc tags to stability annotations (#8406)
98792c3bf8 Fix rounded OpenRouter decision probabilities (#8405)
12f512d0fa feat(sql-clickhouse): support column selection in insertQuery (#8404)
cb85792196 fix(ai-openai): preserve web searches without actions (#8400)
321d74f0f1 Stabilize concurrent Bun docgen example tests (#8401)
21214728d2 Fix PartitionedSemaphore permit loss and competing take race (#8395)
b3032f01f2 Fix four interrupt-time resource leaks in Pool, RcRef, RcMap and ScopedRef (#8390)
cdeccc7e52 Fix Chunk equality being asymmetric on sparse chunks, and stop Chunk copying what it already holds (#8371)
f9179cba72 Fix internal frames leaking into user stack traces, and stop allocating a closure per Effect step (#8386)
db7b69efff Add isNonEmpty predicates to TxHashSet, TxPubSub and TxQueue (#8361)
5709ef6c03 Add guards for HttpBodyError, CookiesError, MultipartError and NdjsonError (#8362)
54ff4f2121 Keep scoped cache lookups alive while callers remain (#8396)
17810b478d Fix cleanup registration interruption gaps (#8397)
6bc0eeea42 Fix spans that never end when a traced region is interrupted as it starts (#8387)
35ef06c56d Fix Metric updates landing in the wrong series (#8380)
107dbecab1 Fix Layer.MemoMap hanging or leaking a shared layer when a requester is interrupted (#8385)
88b79d74f1 Build Mime lookup tables on first use (#8370)
321bae616d Fix hash composition collisions in owned folds (#8360)
dd014d946a Increase multipart parser smoke test timeout (#8392)
20276b3b48 Serialize NodeTerminal fixture tests (#8393)
1519fd7b21 support raw JSON Schema dynamic tool calls (#8363)
061b9611d4 Move Arbitrary to the top-level module (#8382)
59865d1494 runtimeperf-compare: apply the working-tree diff byte for byte (#8376)
f75468a135 Restore global defaults for native property testing (#8367)
4e4fa8b184 Rename Schema checks for grammatical consistency (#8378)
6ecd4b3809 Fix Effect.txRetry parking forever on a stale read set (#8372)
287273cf55 Add Schema code point length checks, closes #8178 (#8364)
62b2ea97fe Rename HTTP API module path (#8365)
24fa0ab30b Retry OpenAI websocket turns after previous_response_not_found (#8355)
8fca194749 Fix Number.remainder precision for large operands (#8359)
d426feb658 Split encoding formats into dedicated modules (#8356)
1b4461ec3a Move unstable Effect modules to top-level paths (#8354)
b409e3f8f4 Make awaitAllChildren interruptible (#8353)
1dbc4c382c feat(PubSub): add isPubSub type guard (#8345)
7b81a95de1 feat(TxChunk): add isTxChunk type guard (#8348)
a37fa2a1c3 Refresh PlatformError migration guidance (#8352)
5bf58f15f3 Reduce BigDecimal bundle size (#8347)
31c6c1c157 Tighten AI guidance for type tests and changesets (#8346)
b8d14d3eed fix(Formatter): include Error message in formatJson (#8150)
c79088d693 Add family-aware NetAddress type helpers (#8340)
325e0fb66a Add dual forms to selected APIs (#8339)
3af6bd0803 Add isPlatformError guard (#8337)
621a65093d Preserve streamed text and tool args for nullable delta.role and tool call id (#8333)
14a3f14009 Version Packages (rc) (#8307)
27de875612 fix(sql-pg): retire a session whose CancelRequest may be in flight (#8330)
9953c92b86 Bound local entity registration waits (#8331)
89c9a39841 Warn on conflicting workflow tag registrations (#8329)
895d94410f fix: align input and outputSchema for older MCP revisions (#8326)
eea03fca8f Update repository dependencies (#8328)
201b5ab5c4 Fix sql-pg prepared statement name collisions (#8327)
87912c0141 Add native socket formatting helpers to NetAddress (#8325)
1b21e0df6a Add branded NetAddress classifications (#8323)
8d40572de3 Fix cluster request resets stranded by in-memory deduplication (#8317)
c6e8b20c27 Extend NetAddress.toCanonical to internet addresses (#8319)
705fb6852a Add Queue.shutdownUnsafe for synchronous teardown (#8318)
3b155e3e24 fix(Pool): release retired usage-TTL resources (#8310)
106af64cf7 fix(sql-pg): release completed transaction savepoints (#8308)
7869f54af4 fix(sql-pg): support regclass binary values (#8309)
e7fc14b59a Document recent getter and client migration changes (#8313)
3d59ae6d5f Make AI probability criteria optional (#8305)
d62dd0d652 Version Packages (rc) (#8201)
4d4c4e8a44 Fix Schema.Redacted inner transformations, closes #8295 (#8298)
0beded04f5 Improve BigInt and BigDecimal arbitrary generation (#8296)
b5404c92eb docs: consolidate Schema migration guidance (#8294)
8cb0a4f28f Add DecisionModel to effect/unstable/ai (#8287)
feef90ccbd Fix Arbitrary derivation for inhabited schemas containing Never (#8293)
c19c63fb71 Optimize Effect Schema and add experimental JIT and AOT compilers (#7908)
9a81b9b4a6 Fix sqlite-do transaction deadlocks from automatic scheduler yields (#8291)
d5f67f3e9d Fix MCP schema JSDoc section formatting (#8288)
c7d1ffff31 Document recent Stream and provider migration changes (#8285)
0045152cdf Fix raw Response metadata loss when omitting bodies (#8284)
9ad9891e24 Expose HttpApi.ParseOptions for schema decoding and encoding (#8269)
23a58c020b Add NetAddress host and IPv6 scope helpers (#8272)
63c15662f9 Fix YAML indentless sequences and multiline scalar parsing (#8270)
072e35ae83 fix(sqlite-do): support nested storage transactions (#8267)
d30a0c880f feat(http): add QUERY method support (#8261)
2940742c3f fix(http): keep raw Web Response bodies readable in toClientResponse (#8260)
a7a71921de fix(sqlite-do): propagate native transaction completion failures (#8257)
ccae354231 Align Effect and Stream APIs and fix Stream type signatures (#8256)
1393080f1c feat(Crypto): add ULID support (#8233)
84fe64a5fb Fix literal action suffixes across HttpApi (#8255)
77a5612035 fix(http): preserve Content-Type on file responses and HttpStaticServer (#8254)
90695b0d5b fix(ai-openai): support API sources in web search (#8236)
05a6405d3d fix(platform-node): clean process groups after successful leader exit (#8245)
1b084cc9a2 Fix mailbox starvation from unrelated workflow deferreds (#8244)
45b510352d Fix lost durable deferred wakes in discarded cluster workflows (#8243)
769f6046a2 Update migration guidance for MCP handlers, tool results, and byte sizes (#8242)
8ef3fcbbe7 feat(sql-pg): decode timestamp and timestamptz columns as Date (#8241)
553c403f1d Fix deferred handover wake-ups and interrupted RPC stream writes (#8235)
fd910d1cc6 fix(sql-pg): decode unregistered scalar OIDs as UTF-8 text (#8240)
4e4a3a6055 feat(sql-pg): support startup parameters and opaque options (#8234)
49e4b37b83 fix(ai): McpServer issues with tool strictness, server instructions and prompt titles (#8228)
10761707b5 Fix deferred self-completion in the memory workflow engine (#8229)
c22bc43355 Reduce Types CI memory pressure with a Go soft limit (#8232)
302de10d99 Fix OpenApiGenerator test timeouts under compiler load (#8230)
efec8a6d1d ci: limit Snapshot compiler memory use (#8231)
ccfe152d11 Fix RunnerServer request leaks on caller disconnect (#8227)
73e6f4bb94 fix(sql-clickhouse): use ping for connection validation (#8210)
abb93c221b fix(openapi-generator): type binary multipart fields as File | Blob (#8208)
205066a76f Support Effect password providers in sql-pg (#8224)
9367dcbeda fix(sql-pg): preserve SqlError when LISTEN connections fail (#8215)
8abae870f9 Update workspace dependencies to latest compatible releases (#8225)
f193ac50d1 fix(sql-clickhouse): use ClickHouse compiler dialect (#8211)
8f420bb3dc Add Arbitrary.array with structural shrinking (#8221)
755e863a79 Restrict ByteSize string inputs to canonical integer quantities (#8212)
f110af1ac5 Fix multipart hang when request body fails during an active file (#8206)
51d4a2f08a fix(RcRef): keep idleTimeToLive when the value is 0 (#8202)
a2c4154cf8 feat: add v2026-07-28 protocol adapter (#7265)
8feeb3c4cd Support TLS fallback for sql-pg prefer and allow modes (#8200)

git-subtree-dir: repos/effect
git-subtree-split: 67ba4e46a11ccda0b6761578bfd22c04ae00167d
…pgrade-effect-4.0.0

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
Drop `effect/unstable/*` import paths after modules moved to `effect/*`.
Honor MessageStorage.resetRequests and clearReplies expectedReplyId.
Swap Array.partition success/failure order. Use SchemaGetter.map as a
standalone combinator. Keep fromBrand as a type-only wrapper now that
Schema.fromBrand requires a single brand key. Disable new tsgo 0.47
rules that flag Effect 4 unstable APIs and existing test patterns.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
GetSomething2WithDependencies suspense/query no longer require ambient
services at the call site under Effect 4.0.0.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
Effect 4 exposes Schema.make as a prototype getter that caches a
non-writable own property. Shadow it with defineProperty, and read
constructor/decoding defaults as Effects / SchemaGetters.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@patroza

patroza commented Oct 2, 2026

Copy link
Copy Markdown
Member

@omegent get this merged

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-app Bot marked this pull request as ready for review October 2, 2026 11:06
@omegent-app
omegent-app Bot merged commit 6b57330 into main Oct 2, 2026
4 checks passed
@omegent-app
omegent-app Bot deleted the t3code/upgrade-effect-4.0.0 branch October 2, 2026 11:06
@omegent-app

omegent-app Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor Author

Merged #908 onto main as 6b57330 (chore: update effect packages to 4.0.0 (#908)).

CI Build had been failing on vue-tsc in defaults.ts (SchemaGetter.run dual overloads). That is typed as Getter<unknown, unknown> now, the PR was marked ready, and it squash-merged.

grok-4.6 · 3m 26s · 195k

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant