Repository navigation
Version Packages - #262
Open
github-actions[bot] wants to merge 1 commit into
Open
Version Packages#262github-actions[bot] wants to merge 1 commit into
github-actions[bot] wants to merge 1 commit into
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
13 times, most recently
from
November 7, 2026 06:29
f60d636 to
f9b7554
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
November 7, 2026 06:40
f9b7554 to
227a883
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@typeonce/effect-machine-devtools@0.47.0
Minor Changes
d1d9137: Add
MachineTest.check,MachineTest.analyze, and theeffect-machine checkcommand, so a machine can be verified with one call and no browser.checkreports states with no path from the initial state, public events with no handler, nondeterministic planning, planner law violations, invariant failures, and declared branches that were never taken. It derives input and events from the machine's schemas, and each finding from a run includes the events that reproduce it. A report is"exhaustive"only when nothing limited exploration; otherwiselimitssays why it is"bounded".From a shell,
effect-machine check src/checkout.ts --jsonprints one JSON object and exits with status 1 on any error.42e2d90: Declare conditional transitions inline, with
branchesnext toresolve, so one transition can be read and edited alone. The compiler checks one against the other in both directions, and rejects a resolver that does not return aselectcall on every path:To migrate: move each
make({ branches })group into its transition and drop its keys andtitle, soselect.key(...)becomesselect.target(path, ...),select.update({ owner: value }),select.history(path),select.initialize({ input }), orselect.stay(). Two keys that reached the same destination are now one entry. Removedeclinable: true, list{ decline: true }, and replace thedecline()context function withselect.decline().noneis replaced:{ none: true }becomes{ stay: true },{ none: true, reenter: true }becomes{ reenter: true }, and{ none: true, resolve }becomes{ stay: true, commands }. Every plain transition acceptscommands: (context, enqueue) => ....updateis now a record with one owner, sodataonly ever means the target's value:{ update: "root", data }becomes{ update: { root: data } }, and{ target, update: "Owner", data: () => ({ target, update }) }becomes{ target, data, update: { Owner: value } }. Inside abrancheslist, an entry still names its owner as a string,{ target, update: "Owner" }, and the value goes in itsselectcall.guardanddeclinenow exist only ononhandlers andalways. OnonDone,onFailure,onElement,onSnapshot, andchoice, which have no other candidate, use{ stay: true }or select a destination. A retained transition'sbranchKeyand a transition definition'skeyare now the entry as written, such astarget:Paid, andtitleis removed.In the Oxlint plugin,
no-conditional-none-branchbecomesno-conditional-stay-branch, andno-redundant-resolveis removed because the compiler now rejects what it reported. Resolvers for invocation outcomes andalwaysmay selectstayconditionally, becauseMachine.canqueries only events.Patch Changes
7d0e987: Update the devtools file watcher to chokidar 6. The devtools CLI now requires Node.js 22.22 or newer.
Build the Oxlint plugin against
@oxlint/plugins1.90.0. The plugin still supportsoxlint>=1.80.0 <2.697c6cb: Install the devtools CLI without pinning a second exact TypeScript or Vite.
@typeonce/effect-machine-devtoolsnow depends ontypescript>=5.9.0 <7.0.0andvite^8.1.5instead of exact versions, so a package manager can reuse compatible versions your project already has. No setup changes are required: the CLI still works when your project uses neither, or uses TypeScript 7.Updated dependencies [67f11cc]
Updated dependencies [573636b]
Updated dependencies [b24c367]
Updated dependencies [d1d9137]
Updated dependencies [ca51c52]
Updated dependencies [42e2d90]
Updated dependencies [104f98a]
Updated dependencies [7ffcab7]
@typeonce/effect-machine@0.47.0
Minor Changes
67f11cc: Compile errors for common machine mistakes now name the fix instead of reporting
never:Machine.handlereports a misspelled target, source, or owner, a missingdata, the root or a history state used as a target, and anon,always,onDone, orinvokeon a final or choice state.A transition that targets a state below an inactive valued state, such as
{ target: "Checkout.Paid" }from outsideCheckout, used to fail while planning. It is now a compile error: target"Checkout"with abranchesentry and construct the child withselect.target("Checkout", { data, states: { Paid: {} } }).573636b: Ship agent documentation as
AGENTS.md,CLAUDE.md, andai-docs/in the package, replacingdocs/.An agent working in a project can now read documentation matching the installed version from
node_modules/@typeonce/effect-machine/AGENTS.md. Replace links todocs/agent-guide.md,docs/root-api.md,docs/effect-atom-react.md, anddocs/machine-review.mdwith that file, or with the matching section underai-docs/src.d1d9137: Add
MachineTest.check,MachineTest.analyze, and theeffect-machine checkcommand, so a machine can be verified with one call and no browser.checkreports states with no path from the initial state, public events with no handler, nondeterministic planning, planner law violations, invariant failures, and declared branches that were never taken. It derives input and events from the machine's schemas, and each finding from a run includes the events that reproduce it. A report is"exhaustive"only when nothing limited exploration; otherwiselimitssays why it is"bounded".From a shell,
effect-machine check src/checkout.ts --jsonprints one JSON object and exits with status 1 on any error.42e2d90: Declare conditional transitions inline, with
branchesnext toresolve, so one transition can be read and edited alone. The compiler checks one against the other in both directions, and rejects a resolver that does not return aselectcall on every path:To migrate: move each
make({ branches })group into its transition and drop its keys andtitle, soselect.key(...)becomesselect.target(path, ...),select.update({ owner: value }),select.history(path),select.initialize({ input }), orselect.stay(). Two keys that reached the same destination are now one entry. Removedeclinable: true, list{ decline: true }, and replace thedecline()context function withselect.decline().noneis replaced:{ none: true }becomes{ stay: true },{ none: true, reenter: true }becomes{ reenter: true }, and{ none: true, resolve }becomes{ stay: true, commands }. Every plain transition acceptscommands: (context, enqueue) => ....updateis now a record with one owner, sodataonly ever means the target's value:{ update: "root", data }becomes{ update: { root: data } }, and{ target, update: "Owner", data: () => ({ target, update }) }becomes{ target, data, update: { Owner: value } }. Inside abrancheslist, an entry still names its owner as a string,{ target, update: "Owner" }, and the value goes in itsselectcall.guardanddeclinenow exist only ononhandlers andalways. OnonDone,onFailure,onElement,onSnapshot, andchoice, which have no other candidate, use{ stay: true }or select a destination. A retained transition'sbranchKeyand a transition definition'skeyare now the entry as written, such astarget:Paid, andtitleis removed.In the Oxlint plugin,
no-conditional-none-branchbecomesno-conditional-stay-branch, andno-redundant-resolveis removed because the compiler now rejects what it reported. Resolvers for invocation outcomes andalwaysmay selectstayconditionally, becauseMachine.canqueries only events.Patch Changes
@typeonce/effect-machinenow links to the API reference at https://effect-machine.typeonce.dev.anycasts. Machine behavior and the public API are unchanged.anycasts. Machine behavior and the public API are unchanged.@typeonce/effect-machine-react@0.47.0
Minor Changes
42e2d90: Declare conditional transitions inline, with
branchesnext toresolve, so one transition can be read and edited alone. The compiler checks one against the other in both directions, and rejects a resolver that does not return aselectcall on every path:To migrate: move each
make({ branches })group into its transition and drop its keys andtitle, soselect.key(...)becomesselect.target(path, ...),select.update({ owner: value }),select.history(path),select.initialize({ input }), orselect.stay(). Two keys that reached the same destination are now one entry. Removedeclinable: true, list{ decline: true }, and replace thedecline()context function withselect.decline().noneis replaced:{ none: true }becomes{ stay: true },{ none: true, reenter: true }becomes{ reenter: true }, and{ none: true, resolve }becomes{ stay: true, commands }. Every plain transition acceptscommands: (context, enqueue) => ....updateis now a record with one owner, sodataonly ever means the target's value:{ update: "root", data }becomes{ update: { root: data } }, and{ target, update: "Owner", data: () => ({ target, update }) }becomes{ target, data, update: { Owner: value } }. Inside abrancheslist, an entry still names its owner as a string,{ target, update: "Owner" }, and the value goes in itsselectcall.guardanddeclinenow exist only ononhandlers andalways. OnonDone,onFailure,onElement,onSnapshot, andchoice, which have no other candidate, use{ stay: true }or select a destination. A retained transition'sbranchKeyand a transition definition'skeyare now the entry as written, such astarget:Paid, andtitleis removed.In the Oxlint plugin,
no-conditional-none-branchbecomesno-conditional-stay-branch, andno-redundant-resolveis removed because the compiler now rejects what it reported. Resolvers for invocation outcomes andalwaysmay selectstayconditionally, becauseMachine.canqueries only events.Patch Changes
a5e80b3: Remove the
schedulerpeer dependency from@typeonce/effect-machine-react.The package never imports
scheduler, so upgrading React no longer produces a peer warning from it. Theschedulerversion is now governed only byreact-domand@effect/atom-react. Removeschedulerfrom your dependencies if you installed it only for this package.ca51c52: Every API example in the published source now has a title, and the core package's examples compile and run against the current API.
Updated dependencies [67f11cc]
Updated dependencies [573636b]
Updated dependencies [b24c367]
Updated dependencies [d1d9137]
Updated dependencies [ca51c52]
Updated dependencies [42e2d90]
Updated dependencies [104f98a]
Updated dependencies [7ffcab7]
@typeonce/oxlint-plugin-effect-machine@0.47.0
Minor Changes
42e2d90: Declare conditional transitions inline, with
branchesnext toresolve, so one transition can be read and edited alone. The compiler checks one against the other in both directions, and rejects a resolver that does not return aselectcall on every path:To migrate: move each
make({ branches })group into its transition and drop its keys andtitle, soselect.key(...)becomesselect.target(path, ...),select.update({ owner: value }),select.history(path),select.initialize({ input }), orselect.stay(). Two keys that reached the same destination are now one entry. Removedeclinable: true, list{ decline: true }, and replace thedecline()context function withselect.decline().noneis replaced:{ none: true }becomes{ stay: true },{ none: true, reenter: true }becomes{ reenter: true }, and{ none: true, resolve }becomes{ stay: true, commands }. Every plain transition acceptscommands: (context, enqueue) => ....updateis now a record with one owner, sodataonly ever means the target's value:{ update: "root", data }becomes{ update: { root: data } }, and{ target, update: "Owner", data: () => ({ target, update }) }becomes{ target, data, update: { Owner: value } }. Inside abrancheslist, an entry still names its owner as a string,{ target, update: "Owner" }, and the value goes in itsselectcall.guardanddeclinenow exist only ononhandlers andalways. OnonDone,onFailure,onElement,onSnapshot, andchoice, which have no other candidate, use{ stay: true }or select a destination. A retained transition'sbranchKeyand a transition definition'skeyare now the entry as written, such astarget:Paid, andtitleis removed.In the Oxlint plugin,
no-conditional-none-branchbecomesno-conditional-stay-branch, andno-redundant-resolveis removed because the compiler now rejects what it reported. Resolvers for invocation outcomes andalwaysmay selectstayconditionally, becauseMachine.canqueries only events.Patch Changes
7d0e987: Update the devtools file watcher to chokidar 6. The devtools CLI now requires Node.js 22.22 or newer.
Build the Oxlint plugin against
@oxlint/plugins1.90.0. The plugin still supportsoxlint>=1.80.0 <2.