Releases: stefvw93/weft
Releases · stefvw93/weft
Release list
v0.31.1
v0.31.0
0.31.0 (2026-07-24)
BREAKING CHANGES
- reactive updates commit asynchronously and conflate
to the newest value per region. Code that must observe every
intermediate value should consume the stream directly, not the DOM.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
- docs: trim scheduler internals from rendering-model; add internals policy to docs agent
The Loom section now states only what users can act on: one scheduler
per app, latest-value-wins, async commits, awaitCommit as the ack.
Drain order and cell bookkeeping stay in loom.specs.md.
weft-docs-author gains a "when NOT to document internals" policy: the
does-it-change-what-a-user-predicts-or-does test, with boundary rules
(correcting false claims is mandatory, adding machinery detail is not).
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
v0.30.0
0.30.0 (2026-07-22)
BREAKING CHANGES
- Subscribable no longer exposes .get/.changes members.
Read values with Subscribable.get(x) and observe changes with
Subscribable.changes(x).
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
- chore: dont mandate pr
v0.29.0
v0.28.0
0.28.0 (2026-07-19)
BREAKING CHANGES
mount,hydrate,mountScoped,hydrateScoped, and
MountHandleare removed from @weftui/dom/client. Create an app with
WeftApp.make(layer?)and useWeftApp.mount(app, node, root)/
WeftApp.hydrate(app, node, root);Effect.providearound mount calls
no longer supplies services to components.
Co-authored-by: Claude Fable 5 noreply@anthropic.com
v0.27.1
v0.27.0
0.27.0 (2026-07-17)
- refactor(core)!: redesign Boundary.catchSome as catchFilter (Filter-based) (24b1244)
- refactor(core)!: rename Boundary.catchAll/catchAllCause to catch/catchCause (5c8d4d8)
Bug Fixes
- effect4: Age schema uses Schema.NumberFromString (was Schema.transform) (93e30f0)
- effect4: compile.test reads httpApiStatus annotation directly (8d32a5c)
- effect4: compile.test schemas typed as Codec for decode calls (1a3bc28)
- effect4: const type param on h children preserves tuple E/R inference (1431d78), closes effect-smol#2163
- effect4: Context.Service shape accessor Tag["Type"] -> Tag["Service"] (eb4b2e1)
- effect4: drop router-server route-layer annotations (ac6a956)
- effect4: drop unused Option imports after catchFilter migration (8c36645)
- effect4: effect-atom test Fiber.RuntimeFiber -> Fiber.Fiber (34de4a7)
- effect4: Effect.fork -> Effect.forkChild (c3e9ea6)
- effect4: element refs are SubscriptionRef (v4 dropped Ref-subtyping) (22b1ec1)
- effect4: HttpApiEndpoint builder to v4 options form (6ecdb73)
- effect4: link.ts runtime APIs (context/runForkWith) (d03c339)
- effect4: log-capture test helper to v4 Logger API (09de1c6)
- effect4: loosen router-server route-layer annotations (0608e32)
- effect4: matcher reads v4 HttpApiEndpoint params/query slots (60b5eb5)
- effect4: outlet.ts Router["Type"] -> Router["Service"] (6f493f1)
- effect4: pass static-markup children through suspense boundary (9da3d53)
- effect4: render static-markup element children synchronously (93153e7)
- effect4: render-to-stream.test arrays + Fiber.pollUnsafe (27c4ce0)
- effect4: render.ts Ref/Fiber renames + wrap SubscriptionRef as Subscribable (7bc2c32)
- effect4: renderChildren renders static-markup children synchronously (327ed9a)
- effect4: revert over-eager SubscriptionRef.changes on Subscribable reads (23beb71)
- effect4: router-live runtime APIs (context/runForkWith/pollUnsafe) (635a67d)
- effect4: router-server catchAll endpoint .addSuccess -> options (a7e52a7)
- effect4: router-server web-handler pipeline to v4 HttpRouter (47cc838)
- effect4: RouterParamsError source uses Schema.Literals (02e0a7a)
- effect4: RPC over HTTP uses protocol:http + ndjson serialization (22d8f9c)
- effect4: satisfy no-base-to-string on style value stringify (67efa7b)
- effect4: Schema.filter -> Schema.check(Schema.makeFilter(...)) (8b19f30)
- effect4: Schema.Literal(...) -> Schema.Literals([...]) (675da7a)
- effect4: Schema.Schema.Any -> Schema.Top, HttpApi.HttpApi.Any -> HttpApi.Any (66c098d)
- effect4: source.test drop Chunk.toReadonlyArray (runCollect yields array) (130e279)
- effect4: SSR match reads v4 handler request.params/query (2fb2b12)
- effect4: Stream.async(emit) -> Stream.callback(queue) (a64cf63)
- effect4: Stream.filterMap takes a Filter (source.ts) (467e2a9)
- effect4: Stream.provideLayer -> Stream.provide (3fbf53d)
- effect4: Stream.TypeId + SubscriptionRef.changes/Chunk stragglers (1d11983)
- effect4: streaming-shell.test arrays + Cause.reasons (d565a75)
- effect4: SubscriptionRef.changes is a function in v4 (3f8066a)
- effect4: SubscriptionRef.changes(ref) across remaining Subscribable-free files (edcbf1c)
- effect4: SubscriptionRef.changes(ref) in dom.test.ts (5511c9e)
- effect4: SubscriptionRef.changes(ref) in source + list/mount tests (18c7f3a)
- effect4: SubscriptionRef.changes(urlRef) in router-live (2ca2620)
- effect4: sync-resolution probe runs under the ambient context (e455587)
- effect4: terminate SSR patch stream when scope closes with pending fibers (59a7b9d)
- release: keep breaking changes as minor bumps while pre-1.0 (a0e0445)
Features
- core: add local Subscribable module (Effect 4 removed it) (2e7ec00)
- effect4: migrate effect-atom example to effect/unstable/reactivity (caf81a8)
BREAKING CHANGES
- Boundary.catchSome is removed; use Boundary.catchFilter with
a Filter.Filter instead of an Option-returning fallback. Call sites (examples,
tests, docs) update in follow-up commits.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
- Boundary.catchAll/catchAllCause are renamed to
Boundary.catch/catchCause. Call sites (examples, tests, docs) update in
follow-up commits. catchSome -> catchFilter is a semantics change (Option ->
Filter) handled separately.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com