FoldKit 0.170 release notes
The workspace moves from FoldKit 0.169.0 to 0.170.0, and from Effect 4.0.0 to 4.1.0,
along with:
@foldkit/vite-plugin0.28to0.29@foldkit/devtools-mcp0.25.0to0.26.0@foldkit/uiand@foldkit/devtools0.169.0to0.170.0@effect/platform-browser4.0.0to4.1.0
What changed upstream
- FoldKit 0.170.0 moves FoldKit and its companions to Effect 4.1. They peer on
~4.1.0: 4.1 patch releases are accepted, and the next Effect minor will need a FoldKit release, because Effect minors can change APIs.- The Node adapter, Vite plugin and DevTools MCP server need Node.js 22.19 or newer. This repository already requires 22.22 and CI runs Node 22.
- Effect 4.1 starts
Stream.callbacksetup immediately. A Mount whose acquisition waits on something asynchronous and must stop on unmount should pass{ interruptible: true }toEffect.acquireReleaseand build its handle after the wait.
- Effect 4.1.0 replaces
Crypto.Cryptowith services ineffect/crypto(SecureRandom,Digestand others), provided explicitly. Its other breaking changes are in AI errors,McpServer, HTTP method typing,KeyValueStore,FileSystem.make,ChildProcessand SQL.
Sources: FoldKit 0.170.0 and Effect 4.1.0.
What changed here
-
No source changes were needed in the apps or packages.
- Nothing uses Effect’s
Cryptoservice; the four UUIDs here come from the platform’scrypto.randomUUID(). - None of Effect 4.1’s other breaking areas are used.
- The Mounts and scene runtimes that wait on something asynchronous (effect-three’s renderer and physics, the promo’s editor embeds) acquire synchronously and wait afterwards, so an unmount during the wait interrupts it as before.
- The effect-three samples’ relay sockets wait for the socket to open inside their acquisition, so a teardown mid-connect waits for the connect. That is not new in 4.1 (acquisitions were always uninterruptible). Fixing it means creating the socket first and waiting for it to open afterwards, and is left to the samples.
- Nothing uses Effect’s
-
One test changed, for a stricter Effect. In
apps/web, the agent analysis stream is a WebReadableStreamwith a one-event buffer. Effect 4.0’s bridge produced one event beyond that buffer even with no reader; 4.1’s waits for a read. The test “aborting after the snapshot clears every delayed event” never read the body, so it no longer sawSTATE_SNAPSHOT. It now reads the stream as a client does. The server behaves the same for any client that reads. -
A development-only warning. FoldKit’s DevTools bridge encodes the Model as JSON, and Effect 4.1 rejects values that are not JSON. The animated bar chart on
/chartskeeps foldkit-vizTweens, which hold their easing function, so in development the console showsSchemaError: Expected JSON value at ["tweens"]. The chart works; nothing ships differently. Keeping only data in that Model (an easing name, not the function) would silence it. -
Infra keeps its own Effect 4.0.7 (corrected 2026-10-30). This release first moved
infra/tech-radaronto the apps’ Effect 4.1.0, because Alchemy declareseffect ^4.0.5. But Alchemy2.0.0-beta.84importseffect/Crypto, which 4.1 removed: the CLI could not load (“Cannot find package ‘effect’”), and every production deploy of the tech radar failed from that merge until the fix. Infra is back on 4.0.7 from theinfracatalog, and the single-Effect check walks only the apps and packages again. The first@alchemy.run/domaincondition is not met after all. -
The published packages:
Package Was Now @opsydyn/astro-foldkitFoldKit >=0.167.0 <0.170.0; depends on Effect4.0.0and@foldkit/vite-plugin^0.28.0FoldKit >=0.170.0 <0.171.0; peers on Effect~4.1.0; depends on@foldkit/vite-plugin^0.29.0@opsydyn/foldkit-vizFoldKit >=0.167.0 <0.170.0FoldKit >=0.167.0 <0.171.0@opsydyn/effect-three-foldkitFoldKit >=0.167.0 <0.170.0FoldKit >=0.167.0 <0.171.0astro-foldkitmoves to FoldKit 0.170 only, because the Vite plugin it depends on needs Effect 4.1.- Effect becomes a peer of
astro-foldkit, not a dependency. It imports Effect at runtime and shares Effect values with FoldKit, so it must use the app’s copy. With FoldKit on~4.1.0, an exact dependency would install a second Effect beside an app’s 4.1.x patch. foldkit-vizandeffect-three-foldkitaccept both lines; their Effect peers (>=4.0.0 <5.0.0and^4.0.0) already include 4.1.
-
The promo’s downloadable projects pin FoldKit
0.170.0, Effect4.1.0and the Vite plugin0.29.0. -
Skills:
skills/astro-foldkit,skills/foldkit-vizandskills/effect-threedescribe the published packages. They stay on their tested baselines until releases with the new ranges are on npm.
Releasing
astro-foldkit and foldkit-viz release through release-please once this merges.
effect-three-foldkit is published by the manual workflow, which needs approval.