Repository navigation
Version Packages - #13
github-actions[bot] wants to merge 1 commit into
Conversation
c9d0374 to
637c3b9
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c9d037438f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
637c3b9 to
def9737
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: def97377c5
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
6fe4a86 to
616a12c
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
5ea2119 to
5ab5716
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5ab5716b68
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| "name": "@okyrychenko-dev/react-action-guard-devtools", | ||
| "version": "0.3.0", | ||
| "version": "0.3.1", |
There was a problem hiding this comment.
Publish the breaking Devtools requirements as 0.4.0
An application that currently uses core 1.0.x and allows Devtools ^0.3.0 will resolve this 0.3.1 release, but Devtools now requires core ^1.1.0; npm will report a peer conflict (or strict peer installation will fail). This release also introduces the Node 20 minimum, excluding Node 18 consumers within the same patch range. Since ^0.3.0 includes all 0.3 patch releases, publish these compatibility drops as 0.4.0 or retain the prior requirements.
Useful? React with 👍 / 👎.
86a1fa5 to
1ea057e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1ea057ee9a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| "name": "@okyrychenko-dev/react-action-guard", | ||
| "version": "1.0.5", | ||
| "version": "1.1.0", |
There was a problem hiding this comment.
Release the Node 20 floor in a major
The prior 1.0.5 source did not declare a Node engine, while this release requires Node 20 or newer; since ^1.0.5 accepts 1.1.0, Node 18 consumers can receive this incompatible update automatically and fail under engine-strict (or at runtime if the new dependencies require Node 20). Fresh evidence: this revision changed the intended release from the earlier 1.0.6 to 1.1.0, but a minor release still does not preserve the previous Node compatibility. Publish this as 2.0.0 or retain Node 18 support.
Useful? React with 👍 / 👎.
1ea057e to
aa48710
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aa48710430
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| }, | ||
| "peerDependencies": { | ||
| "@okyrychenko-dev/react-action-guard": "^1.0.4", | ||
| "@okyrychenko-dev/react-action-guard": "^2.0.0", |
There was a problem hiding this comment.
Update the Router README peer range
When users follow the Router README's stated core requirement (^1.0.1) while installing this 1.0.0 release, that core version cannot satisfy the newly published ^2.0.0 peer dependency, producing a peer-resolution warning or failure under strict peer settings. Update the distributed README requirement to the 2.x range together with this release.
Useful? React with 👍 / 👎.
| }, | ||
| "peerDependencies": { | ||
| "@okyrychenko-dev/react-action-guard": "^1.0.4", | ||
| "@okyrychenko-dev/react-action-guard": "^2.0.0", |
There was a problem hiding this comment.
Update the TanStack README peer range
The TanStack README still instructs consumers to use core ^1.0.4, but this release now declares core ^2.0.0 as a peer. A consumer who pins the documented range will therefore get an unsatisfied peer dependency when installing TanStack 1.0.0; update the packaged README's requirement to 2.x.
Useful? React with 👍 / 👎.
| { | ||
| "name": "@okyrychenko-dev/react-action-guard-ui", | ||
| "version": "0.1.5", | ||
| "version": "1.0.0", |
There was a problem hiding this comment.
Update the UI README peer range
The UI README continues to document core ^1.0.2, while its workspace:^ peer is converted to ^2.0.0 during this release (using the workspace core package's new version). Users who follow the documented pinned range will have an unsatisfied peer dependency for UI 1.0.0, so revise the distributed README requirement to 2.x.
Useful? React with 👍 / 👎.
b1170a4 to
469b6ba
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 469b6ba182
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| "name": "@okyrychenko-dev/react-action-guard-tanstack", | ||
| "version": "0.3.5", | ||
| "version": "1.0.0", |
There was a problem hiding this comment.
Declare TanStack's Node.js 20 floor
When this 1.0.0 package is installed on Node 18 with engine-strict, installation fails because its direct @okyrychenko-dev/type-utils@0.1.2 dependency declares node >=20 (pnpm-lock.yaml:1494-1496), while this manifest advertises no Node requirement. Add engines.node: ">=20" so the published TanStack package accurately communicates the compatibility constraint rather than leaving consumers to discover it through a transitive dependency failure.
Useful? React with 👍 / 👎.
89ea4f9 to
76cdbe3
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
6c6e5b9 to
e60d046
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e60d04646f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| ### Minor Changes | ||
|
|
||
| - 3db526a: Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools now subscribe to those snapshots. Devtools requires core 1.1.0 or newer for the snapshot API. This compatibility drop, together with the Node.js 20 minimum in the pending type-utils migration, releases Devtools as 0.4.0 instead of a 0.3.x patch. |
There was a problem hiding this comment.
Describe the actual Devtools 1.0/Core 2 release
For consumers reading this new 1.0.0 entry, the note incorrectly says that Devtools is released as 0.4.0 and requires Core 1.1.0 or newer, while packages/devtools/package.json publishes Devtools 1.0.0 with a ^2.0.0 Core peer. Since Core 1.x cannot satisfy that peer range, update this release note to describe the final published cohort rather than the obsolete intermediate versions.
Useful? React with 👍 / 👎.
| timestamps, while changed timeouts restart and removed timeouts cancel timers. | ||
| Imperative updateBlocker patch behavior remains compatible. Consumers relying on | ||
| retained hook options must keep those options in the current configuration. | ||
| TanStack integration now requires core 1.0.6 or later for replacement support. |
There was a problem hiding this comment.
State the actual Core peer range in the TanStack notes
When consumers consult the 0.4.0 changelog for compatibility requirements, this says Core 1.0.6 or later is sufficient, but the released manifest requires @okyrychenko-dev/react-action-guard: ^2.0.0 and rejects every 1.x version. Replace the obsolete intermediate floor with the actual 2.x requirement so the migration guidance does not lead to a peer-resolution conflict.
Useful? React with 👍 / 👎.
d2b226c to
6e84071
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6e8407175f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| - 39fb3de: Introduce a public Blocking lifecycle interface that owns blocker transitions, timers, immutable reads, and isolated observation while preserving the existing Zustand store interface through a compatibility adapter. | ||
| - 3db526a: Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools now subscribe to those snapshots. Devtools requires core 1.1.0 or newer for the snapshot API. This compatibility drop, together with the Node.js 20 minimum in the pending type-utils migration, releases Devtools as 0.4.0 instead of a 0.3.x patch. | ||
| - 4363609: Expose anonymous, ownership-safe lifecycle event observation through global and provider-scoped stores. Provider middleware and automatic Devtools observation now use release leases without registry names, while legacy named middleware remains available for compatibility and runs without awaiting earlier observers. |
There was a problem hiding this comment.
Remove superseded middleware compatibility claims
For consumers migrating to Core 2.0, this entry says legacy named middleware remains available, and the continuation documents direct runMiddlewares calls, but the final store contract explicitly removes registerMiddleware, unregisterMiddleware, and runMiddlewares (packages/core/src/store/__tests__/uiBlockingStore.contract.test.ts:44-51). Because these intermediate guarantees were superseded by the major change above, the release notes can lead upgraders to call APIs that no longer exist; rewrite or remove the obsolete compatibility guidance.
Useful? React with 👍 / 👎.
f69f6e1 to
00c28a3
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 00c28a3e21
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| "name": "@okyrychenko-dev/react-action-guard", | ||
| "version": "1.0.5", | ||
| "version": "2.0.0", |
There was a problem hiding this comment.
Include the migration guide in the 2.0 package
When consumers install this breaking 2.0.0 release and follow the packaged README's migration link (packages/core/README.md:747), MIGRATION.md is absent because the manifest's files allowlist includes only dist, README.md, and LICENSE. This leaves the installed package without the document explaining replacements for the APIs removed in 2.0; add MIGRATION.md to the published files or replace the relative link with a durable external URL.
Useful? React with 👍 / 👎.
00c28a3 to
7073c4b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7073c4bcf3
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| "name": "@okyrychenko-dev/react-action-guard-devtools", | ||
| "version": "0.3.0", | ||
| "version": "1.0.0", |
There was a problem hiding this comment.
Make the Devtools migration link usable after installation
When a consumer of this new major release follows the migration link in the packaged README.md, ../core/MIGRATION.md resolves to node_modules/@okyrychenko-dev/core/MIGRATION.md, not to the Core package, and the Devtools tarball allowlist contains no migration document of its own. Use a durable repository URL or package the guide at a path that the installed README can actually resolve.
Useful? React with 👍 / 👎.
7073c4b to
5c8d9dd
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5c8d9ddfe7
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| { | ||
| "name": "@okyrychenko-dev/react-action-guard", | ||
| "version": "1.0.5", | ||
| "version": "2.0.0", |
There was a problem hiding this comment.
Regenerate API references for the released versions
After this version bump, the generated references still identify Core as v1.0.5, Devtools as v0.3.0, and TanStack as v0.3.5 (for example, packages/docs/src/packages/react-action-guard/api/typedoc/README.md:1-5), even though these pages include APIs from the newly released source. Because the documentation site links directly to these checked-in references, the 2.0/1.0/0.4 release will misleadingly attribute its API surface to the previous versions; rerun the Core, Devtools, and TanStack TypeDoc generation after updating the manifests.
Useful? React with 👍 / 👎.
5c8d9dd to
4aa545b
Compare
4aa545b to
706a31a
Compare
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
@okyrychenko-dev/react-action-guard@2.0.0
Major Changes
named middleware registration, direct event dispatch, and compatibility restore contracts. Observe
lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots.
Devtools sessions release only their observations; manual observation is now additive on every store.
Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers,
state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination
interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state
management base.
Minor Changes
39fb3de: Introduce a public Blocking lifecycle interface that owns blocker transitions, timers, immutable reads, and isolated observation while preserving the existing Zustand store interface through a compatibility adapter.
3db526a: Publish immutable Blocking lifecycle snapshots through global and provider-scoped stores. React hooks, guarded UI controls, and Devtools now subscribe to those snapshots. Devtools requires core 1.1.0 or newer for the snapshot API. This compatibility drop, together with the Node.js 20 minimum in the pending type-utils migration, releases Devtools as 0.4.0 instead of a 0.3.x patch.
4363609: Expose anonymous, ownership-safe lifecycle event observation through global and provider-scoped stores. Provider middleware and automatic Devtools observation now use release leases without registry names, while legacy named middleware remains available for compatibility and runs without awaiting earlier observers.
Observers registered while an event is being delivered begin receiving events with the next delivery, preventing self-replacing named middleware from processing the same event twice.
Observers released before their turn in an event are skipped, and replacing named middleware keeps its original delivery position.
Named middleware replacements made during an event take effect on the next event. Direct compatibility calls to
runMiddlewaresinvoke middleware concurrently and settle after all complete.Global Devtools observation keeps the current event when manual Devtools middleware registers during delivery, while manual registrations already participating in that event remain authoritative, even if they unregister themselves after handling it.
Patch Changes
@okyrychenko-dev/react-zustand-toolkit1.0.0 while preserving React Action Guard's public store and provider APIs.scope, reason and priority values return to defaults; omitted timeout and callback
values clear. Metadata changes preserve unchanged deadlines and registration
timestamps, while changed timeouts restart and removed timeouts cancel timers.
Imperative updateBlocker patch behavior remains compatible. Consumers relying on
retained hook options must keep those options in the current configuration.
TanStack integration now requires core 1.0.6 or later for replacement support.
instance. Concurrent callers share its outcome; reopening and cancellation are ignored while
execution is pending. Success and failure both allow retry. Existing timeout and unmount
behavior remains unchanged.
useBlockingInfonow also accepts readonly scope arrays so UI consumers share the same projection and matching rules;createTypedHooksaccepts the same arrays while rejecting unknown scope names. Delegate resolved subscriptions and selection retention to react-zustand-toolkit, with optional custom equality onuseResolvedValue. Cover scope representation changes and stable metadata when observation expands. Retain production/development scale and rapid-registration benchmark evidence refreshed after the typed-hook fix, with installed-tarball declaration checks and pinned source provenance.@okyrychenko-dev/type-utils0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicatedassertNeverhelper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds@okyrychenko-dev/type-utilsas a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported.All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
@okyrychenko-dev/react-action-guard-devtools@1.0.0
Major Changes
named middleware registration, direct event dispatch, and compatibility restore contracts. Observe
lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots.
Devtools sessions release only their observations; manual observation is now additive on every store.
Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers,
state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination
interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state
management base.
Minor Changes
Patch Changes
5d403d8: Migrate the Core and Devtools store integrations to
@okyrychenko-dev/react-zustand-toolkit1.0.0 while preserving React Action Guard's public store and provider APIs.bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits.
94547ea: Isolate Devtools event history and runtime viewing state per observed blocking store, share one observation session between Devtools instances attached to the same store, and expose custom sessions to advanced hook consumers through
ActionGuardDevtoolsProvider.4363609: Expose anonymous, ownership-safe lifecycle event observation through global and provider-scoped stores. Provider middleware and automatic Devtools observation now use release leases without registry names, while legacy named middleware remains available for compatibility and runs without awaiting earlier observers.
Observers registered while an event is being delivered begin receiving events with the next delivery, preventing self-replacing named middleware from processing the same event twice.
Observers released before their turn in an event are skipped, and replacing named middleware keeps its original delivery position.
Named middleware replacements made during an event take effect on the next event. Direct compatibility calls to
runMiddlewaresinvoke middleware concurrently and settle after all complete.Global Devtools observation keeps the current event when manual Devtools middleware registers during delivery, while manual registrations already participating in that event remain authoritative, even if they unregister themselves after handling it.
5d03641: Manage Devtools observation through store-specific participation leases. Panels and providers observing the same blocking store share one event history and automatic observer; configuration ownership transfers deterministically without reapplying
defaultOpen, and the final release detaches observation and clears runtime viewing state. Manual Devtools middleware remains compatible.6230733: Adopt
@okyrychenko-dev/type-utils0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicatedassertNeverhelper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds@okyrychenko-dev/type-utilsas a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported.Updated dependencies [39fb3de]
Updated dependencies [32264e4]
Updated dependencies [5d403d8]
Updated dependencies [3db526a]
Updated dependencies [64145c9]
Updated dependencies [0d3c1f7]
Updated dependencies [083a5b7]
Updated dependencies [a1b83db]
Updated dependencies [d07b65a]
Updated dependencies [bd1dc3b]
Updated dependencies [6513e1e]
Updated dependencies [303abc3]
Updated dependencies [eefba30]
Updated dependencies [4363609]
Updated dependencies [40e8420]
Updated dependencies [6230733]
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
@okyrychenko-dev/react-action-guard-router@1.0.0
Minor Changes
b4945b0: Restore TanStack navigation blocking using native useBlocker. Confirmed transitions keep protection armed, failed confirmations deny navigation, and superseded or unmounted attempts cannot allow navigation. Require TanStack Router >=1.170.41 within v1, the verified compatibility floor, and use native unload protection with a one-shot bypass after accepted document navigation, avoiding a duplicate browser prompt.
Invalidate pending confirmations when when or scope changes, including replacements that leave the computed blocking state active.
Preserve pending confirmations when observer callbacks onBlock or onAllow change during a rerender.
Compare scopes by normalized contents so equivalent arrays, including reordered or duplicated entries, preserve pending confirmations while effective scope changes invalidate them.
Document and test the native not-found limitation at TanStack Router 1.170.41: unmatched-to-matched navigation skips adapter callbacks even with an active condition or scope; subsequent matched-route navigation remains guarded.
bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits.
Patch Changes
06df6f3: Use shared confirmation ownership in React Router so only the latest attached navigation attempt can proceed or notify permission. Invalidate pending answers when the evaluated protection state, scope, or message changes, while preserving them across callback rerenders and equivalent scopes.
Reset the current blocked transition and clear its pending confirmation when protection configuration changes, without resuming stale approvals or resetting superseding attempts.
Retain ownership of synchronous denials and silent blocking when they replace an async prompt, so later protection changes reset the current blocked transition rather than consulting the obsolete prompt.
0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps,
named middleware registration, direct event dispatch, and compatibility restore contracts. Observe
lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots.
Devtools sessions release only their observations; manual observation is now additive on every store.
Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers,
state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination
interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state
management base.
369b2c0: Prevent stale Pages Router confirmations from resuming navigation and notify permission once across async acceptance and route replay.
691ea3e: Settle pending custom confirmation dialogs as false on effect teardown, including unmount and hiding a preserved React Activity subtree. Clear preserved dialog state so it cannot reappear after effects reconnect. Dialog-specific resolvers now close their own dialog exactly once and cannot affect a replacement dialog. Stable hook-level controls continue to act on the current dialog.
6230733: Adopt
@okyrychenko-dev/type-utils0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicatedassertNeverhelper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds@okyrychenko-dev/type-utilsas a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported.Updated dependencies [39fb3de]
Updated dependencies [32264e4]
Updated dependencies [5d403d8]
Updated dependencies [3db526a]
Updated dependencies [64145c9]
Updated dependencies [0d3c1f7]
Updated dependencies [083a5b7]
Updated dependencies [a1b83db]
Updated dependencies [d07b65a]
Updated dependencies [bd1dc3b]
Updated dependencies [6513e1e]
Updated dependencies [303abc3]
Updated dependencies [eefba30]
Updated dependencies [4363609]
Updated dependencies [40e8420]
Updated dependencies [6230733]
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
@okyrychenko-dev/react-action-guard-tanstack@0.4.0
Minor Changes
Patch Changes
0d3c1f7: Complete the Blocking lifecycle architecture migration. Remove mutable blocker and middleware maps,
named middleware registration, direct event dispatch, and compatibility restore contracts. Observe
lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots.
Devtools sessions release only their observations; manual observation is now additive on every store.
Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers,
state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination
interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state
management base.
583ec47: Route TanStack blocking hooks through the nearest
UIBlockingProviderstore while preserving the global-store fallback when no provider is present.d7f6739: Protect all unsettled calls initiated through one useBlockingMutation hook, including concurrent calls, native awaited callbacks, retries, pauses, and queues. Preserve native result observation and callback behavior. Reset and mutation-key changes retain pending ownership; unmount retains pending protection until settlement or timeout. Timeouts end an aggregate registration episode without cancelling work or allowing rerenders and additional calls to revive expired protection.
Strengthen Query and Mutation registration tests to require blocker existence before checking metadata.
Share latest-call/error observation across replacement blocking owners that retain the same native mutation observer, while keeping pending accounting and timeout episodes local to each owner. Retained invocations and reset cannot leave stale error protection in another store.
bd1dc3b: Publish format-specific ESM and CommonJS declarations so NodeNext CommonJS consumers can use the supported public imports. Correct Core's legacy main/module paths and resolve Next's router.js entry so native Node ESM can load the Next adapter. Require React Router DOM >=6.19.0 within v6 or v7 because earlier v6 releases do not export the stable useBlocker API. This excludes previously declared unsupported versions and releases the pre-1.0 router package as a minor change. Consumers on older v6 must upgrade before adopting this release; no new runtime dependency is added. Publish evidence-labelled capabilities and packed peer/provider checks, and clarify App Router and application-owned payment cancellation limits.
e0b58e3: Reuse core action-blocker registration ownership in Query coordination, avoiding redundant lifecycle updates for equivalent configuration while preserving adapter policies and timeout behavior.
b050190: Centralize blocking state policy, reasons, instance identity, provider store resolution, and blocker cleanup across TanStack hooks. Use the shared type-utils toolset for reason selection. Consolidate public hook configuration and behavior documentation in the package README.
6513e1e: Apply current reactive blocker configuration in core and TanStack hooks. Removed
scope, reason and priority values return to defaults; omitted timeout and callback
values clear. Metadata changes preserve unchanged deadlines and registration
timestamps, while changed timeouts restart and removed timeouts cancel timers.
Imperative updateBlocker patch behavior remains compatible. Consumers relying on
retained hook options must keep those options in the current configuration.
TanStack integration now requires core 1.0.6 or later for replacement support.
Updated dependencies [39fb3de]
Updated dependencies [32264e4]
Updated dependencies [5d403d8]
Updated dependencies [3db526a]
Updated dependencies [64145c9]
Updated dependencies [0d3c1f7]
Updated dependencies [083a5b7]
Updated dependencies [a1b83db]
Updated dependencies [d07b65a]
Updated dependencies [bd1dc3b]
Updated dependencies [6513e1e]
Updated dependencies [303abc3]
Updated dependencies [eefba30]
Updated dependencies [4363609]
Updated dependencies [40e8420]
Updated dependencies [6230733]
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
@okyrychenko-dev/react-action-guard-ui@1.0.0
Patch Changes
named middleware registration, direct event dispatch, and compatibility restore contracts. Observe
lifecycle transitions through ownership-safe anonymous leases and read readonly BlockerInfo snapshots.
Devtools sessions release only their observations; manual observation is now additive on every store.
Centralize guarded-control state and accessible reasons while retaining public hooks, state mappers,
state utilities, and distinct link behavior. Consolidate shared TanStack coverage at its coordination
interface and document migration from removed interfaces. Retain react-zustand-toolkit as the state
management base.
useBlockingInfonow also accepts readonly scope arrays so UI consumers share the same projection and matching rules;createTypedHooksaccepts the same arrays while rejecting unknown scope names. Delegate resolved subscriptions and selection retention to react-zustand-toolkit, with optional custom equality onuseResolvedValue. Cover scope representation changes and stable metadata when observation expands. Retain production/development scale and rapid-registration benchmark evidence refreshed after the typed-hook fix, with installed-tarball declaration checks and pinned source provenance.@okyrychenko-dev/type-utils0.1.2 for internal type guards, assertions, and utility types, replacing equivalent hand-rolled checks, a duplicatedassertNeverhelper, and inline nullable/optional unions. Runtime behavior is unchanged; some public function signatures now show the package's equivalent utility types. Adds@okyrychenko-dev/type-utilsas a new dependency and explicitly requires Node.js 20 or newer; Node.js 18 is EOL and unsupported.All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.