From d62547396eb2bb81a5647224661cc6e26f57df30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 07:28:25 +0000 Subject: [PATCH] Version Packages --- .../coerce-activity-params-to-string.md | 15 -- .changeset/compat-await-push-v2-compat.md | 5 - .changeset/core-config-v2-alignment.md | 6 - .changeset/link-v2-stable-api.md | 9 - .changeset/react-v2-stable-api.md | 16 -- .changeset/step-context-path.md | 12 -- config/CHANGELOG.md | 6 + config/package.json | 2 +- core/CHANGELOG.md | 16 ++ core/package.json | 2 +- demo/CHANGELOG.md | 19 ++ demo/package.json | 20 +-- docs/CHANGELOG.md | 15 ++ docs/components/ChangelogContent.mdx | 77 +++++++++ docs/package.json | 14 +- extensions/compat-await-push/CHANGELOG.md | 6 + extensions/compat-await-push/package.json | 2 +- extensions/link/CHANGELOG.md | 18 ++ extensions/link/package.json | 14 +- extensions/plugin-basic-ui/CHANGELOG.md | 11 ++ extensions/plugin-basic-ui/package.json | 12 +- extensions/plugin-blocker/CHANGELOG.md | 10 ++ extensions/plugin-blocker/package.json | 14 +- extensions/plugin-devtools/CHANGELOG.md | 8 + extensions/plugin-devtools/package.json | 6 +- .../plugin-google-analytics-4/CHANGELOG.md | 10 ++ .../plugin-google-analytics-4/package.json | 10 +- extensions/plugin-history-sync/CHANGELOG.md | 33 ++++ extensions/plugin-history-sync/package.json | 14 +- extensions/plugin-lifecycle/CHANGELOG.md | 10 ++ extensions/plugin-lifecycle/package.json | 14 +- extensions/plugin-renderer-basic/CHANGELOG.md | 10 ++ extensions/plugin-renderer-basic/package.json | 10 +- extensions/plugin-renderer-web/CHANGELOG.md | 10 ++ extensions/plugin-renderer-web/package.json | 10 +- extensions/plugin-sentry/CHANGELOG.md | 8 + extensions/plugin-sentry/package.json | 6 +- .../plugin-stack-depth-change/CHANGELOG.md | 8 + .../plugin-stack-depth-change/package.json | 6 +- extensions/react-ui-core/CHANGELOG.md | 10 ++ extensions/react-ui-core/package.json | 10 +- integrations/react/CHANGELOG.md | 24 +++ integrations/react/package.json | 10 +- yarn.lock | 162 +++++++++--------- 44 files changed, 478 insertions(+), 232 deletions(-) delete mode 100644 .changeset/coerce-activity-params-to-string.md delete mode 100644 .changeset/compat-await-push-v2-compat.md delete mode 100644 .changeset/core-config-v2-alignment.md delete mode 100644 .changeset/link-v2-stable-api.md delete mode 100644 .changeset/react-v2-stable-api.md delete mode 100644 .changeset/step-context-path.md diff --git a/.changeset/coerce-activity-params-to-string.md b/.changeset/coerce-activity-params-to-string.md deleted file mode 100644 index 064a9b45a..000000000 --- a/.changeset/coerce-activity-params-to-string.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@stackflow/plugin-history-sync": minor ---- - -Coerce activity/step params to `string | undefined` at the plugin boundary. - -Before this change, `push("X", { visible: true })` would store the boolean `true` in the core store while URL-arrival parsed the same URL as `{ visible: "true" }`, so `useActivityParams()` (with generic parameter `K`) returned different runtime types depending on how the user reached the activity. This PR coerces non-string values to strings inside `plugin-history-sync`'s `onBeforePush` / `onBeforeReplace` / `onBeforeStepPush` / `onBeforeStepReplace` hooks (after `encode` consumes the typed params to build the URL), and on the `decode`-path in `overrideInitialEvents`, so the core store always contains `{ [key: string]: string | undefined }`. `encode` still receives the typed params `U` from `template.fill`. Post-effect hooks (`onPushed`, `onReplaced`, `onStepPushed`, `onStepReplaced`, `onInit`) now use the new `fillWithoutEncode` to avoid re-running `encode` on already-coerced store values. - -This is a behavioral change for consumers that relied on internal push preserving non-string values in the store (a pre-existing divergence from URL-arrival behavior). See the docs update for the migration note. - -Migration notes: - -- If you authored a `decode` hook that returns typed values (e.g. `decode: (p) => ({ count: Number(p.count) })`), those return values are now coerced back to strings in the store to match the declared `ActivityBaseParams` contract. Move runtime type coercion to the usage site (`Number(useActivityParams().count)`). -- If your app registers a plugin AFTER `historySyncPlugin` in the plugins array and that plugin re-injects typed values via `overrideActionParams`, those values will NOT be coerced by this plugin. Register `historySyncPlugin` last among plugins that mutate `activityParams` to preserve the string-only invariant. -- Cross-deploy hydration: when a user reloads on a deploy that includes this fix after a previous deploy serialized typed values into `history.state`, the params are coerced to strings at hydration time inside the `parseState` early-return. No consumer change required — the post-fix runtime contract (`useActivityParams()` returns `string | undefined`) holds across version boundaries. diff --git a/.changeset/compat-await-push-v2-compat.md b/.changeset/compat-await-push-v2-compat.md deleted file mode 100644 index 15fedf1c5..000000000 --- a/.changeset/compat-await-push-v2-compat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@stackflow/compat-await-push": patch ---- - -Remove unused peer dependencies (`@stackflow/core`, `@stackflow/react`, `react`, `@types/react`) — pure Promise-based utility with no React or Stackflow imports. diff --git a/.changeset/core-config-v2-alignment.md b/.changeset/core-config-v2-alignment.md deleted file mode 100644 index 5246519cf..000000000 --- a/.changeset/core-config-v2-alignment.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@stackflow/config": major -"@stackflow/core": major ---- - -Major version bump for ecosystem alignment. No API changes. diff --git a/.changeset/link-v2-stable-api.md b/.changeset/link-v2-stable-api.md deleted file mode 100644 index a8fbf33df..000000000 --- a/.changeset/link-v2-stable-api.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@stackflow/link": major ---- - -Promote Future API to the default entry point and remove the legacy Stable API. - -- `@stackflow/link/future` and `@stackflow/link/stable` sub-paths removed. Import from `@stackflow/link` directly. -- `createLinkComponent()` removed. Use `import { Link } from "@stackflow/link"` directly. -- `LinkProps.urlPatternOptions` removed. Link URL generation now uses `config.historySync.urlPatternOptions`. diff --git a/.changeset/react-v2-stable-api.md b/.changeset/react-v2-stable-api.md deleted file mode 100644 index 8790404cc..000000000 --- a/.changeset/react-v2-stable-api.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@stackflow/react": major ---- - -Promote Future API to the default entry point and remove the legacy Stable API. - -- `@stackflow/react/future` and `@stackflow/react/stable` sub-paths removed. Import from `@stackflow/react` directly. -- `stackflow()` signature changed from `{ activities, transitionDuration }` to `{ config, components }`. Use `defineConfig()` from `@stackflow/config` for activity and route definitions. -- `useActions()` removed in favor of direct `useFlow()` imports, and `useStepActions()` removed in favor of direct `useStepFlow()` imports. -- `useActiveEffect()`, `useEnterDoneEffect()`, and `useStep()` are no longer exported from the default API. -- Step actions moved from `stackflow().actions` to the separate `stackflow().stepActions` object, with renamed methods: `stepPush` -> `pushStep`, `stepReplace` -> `replaceStep`, and `stepPop` -> `popStep`. -- `stackflow()` no longer returns the `activities` field, `useFlow`, `useStepFlow`, `addActivity`, or `addPlugin`. Hooks are now direct imports and activities are defined in `@stackflow/config`. -- `stackflow().actions` no longer exposes `getStack()` or `dispatchEvent()`; it now exposes only `push`, `replace`, and `pop`. -- `__internal__` directory removed; shared utilities are inlined into the main source. -- New default exports: `useLoaderData()`, `useConfig()`, `usePrepare()`, `lazy()`, and `structuredActivityComponent()`. -- Activity params now use `declare module "@stackflow/config" { interface Register { ... } }` instead of component props inference. diff --git a/.changeset/step-context-path.md b/.changeset/step-context-path.md deleted file mode 100644 index d3da1577d..000000000 --- a/.changeset/step-context-path.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@stackflow/core": minor -"@stackflow/plugin-history-sync": patch ---- - -Add optional `stepContext.path?: string` to `StepPushedEvent` and `StepReplacedEvent` (purely additive, no breaking change). `@stackflow/plugin-history-sync` uses this to preserve `encode`-output URLs through the store across every step navigation path — including `popstate` forward across step boundaries — instead of relying on plugin-internal state. - -This addresses three regressions surfaced in PR review: - -1. **`encode` output not in `history.location`** — post-effect hooks (`onPushed` / `onReplaced` / `onStepPushed` / `onStepReplaced` / `onInit`) called `template.fillWithoutEncode(activity.params)` against the post-coercion strings, skipping `encode` and writing coerced values into the URL. Now they read the encoded URL pre-computed in pre-effect hooks (`activityContext.path` / `stepContext.path`), with `fillWithoutEncode` as a defensive fallback only. -2. **`encode` called with coerced strings on popstate forward re-push** — the popstate `isForward` and `isStepForward` branches reconstructed push events without preserving `activityContext` / `stepContext`, causing `onBeforePush` / `onBeforeStepPush` to call `template.fill` with already-coerced strings. Now those branches pass `activityContext: targetActivity.context` / `stepContext: targetStep.context`, and the pre-effect hooks short-circuit when the path is already present (`"path" in actionParams.activityContext`). -3. **Test gap: `path(history.location)` was never asserted under non-identity `encode`** — every existing test asserted `activity.context.path` only. Added 15 new tests asserting the URL surface under non-identity encode, including popstate-forward across activity AND step boundaries, `defaultHistory` ancestor URLs, SSR replay, and `replace`-with-active-steps. diff --git a/config/CHANGELOG.md b/config/CHANGELOG.md index 6230ed93d..7595e5f30 100644 --- a/config/CHANGELOG.md +++ b/config/CHANGELOG.md @@ -1,5 +1,11 @@ # @stackflow/config +## 2.0.0 + +### Major Changes + +- 273d45f: Major version bump for ecosystem alignment. No API changes. + ## 1.2.2 ### Patch Changes diff --git a/config/package.json b/config/package.json index 2f854d94b..5320f115d 100644 --- a/config/package.json +++ b/config/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/config", - "version": "1.2.2", + "version": "2.0.0", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 75ae2a21c..447d7c035 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -1,5 +1,21 @@ # @stackflow/core +## 2.0.0 + +### Major Changes + +- 273d45f: Major version bump for ecosystem alignment. No API changes. + +### Minor Changes + +- cef9c62: Add optional `stepContext.path?: string` to `StepPushedEvent` and `StepReplacedEvent` (purely additive, no breaking change). `@stackflow/plugin-history-sync` uses this to preserve `encode`-output URLs through the store across every step navigation path — including `popstate` forward across step boundaries — instead of relying on plugin-internal state. + + This addresses three regressions surfaced in PR review: + + 1. **`encode` output not in `history.location`** — post-effect hooks (`onPushed` / `onReplaced` / `onStepPushed` / `onStepReplaced` / `onInit`) called `template.fillWithoutEncode(activity.params)` against the post-coercion strings, skipping `encode` and writing coerced values into the URL. Now they read the encoded URL pre-computed in pre-effect hooks (`activityContext.path` / `stepContext.path`), with `fillWithoutEncode` as a defensive fallback only. + 2. **`encode` called with coerced strings on popstate forward re-push** — the popstate `isForward` and `isStepForward` branches reconstructed push events without preserving `activityContext` / `stepContext`, causing `onBeforePush` / `onBeforeStepPush` to call `template.fill` with already-coerced strings. Now those branches pass `activityContext: targetActivity.context` / `stepContext: targetStep.context`, and the pre-effect hooks short-circuit when the path is already present (`"path" in actionParams.activityContext`). + 3. **Test gap: `path(history.location)` was never asserted under non-identity `encode`** — every existing test asserted `activity.context.path` only. Added 15 new tests asserting the URL surface under non-identity encode, including popstate-forward across activity AND step boundaries, `defaultHistory` ancestor URLs, SSR replay, and `replace`-with-active-steps. + ## 1.3.2 ### Patch Changes diff --git a/core/package.json b/core/package.json index 691dbc17c..3ee2fe36f 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/core", - "version": "1.3.2", + "version": "2.0.0", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", diff --git a/demo/CHANGELOG.md b/demo/CHANGELOG.md index 6eb69d6b1..c606e76be 100644 --- a/demo/CHANGELOG.md +++ b/demo/CHANGELOG.md @@ -1,5 +1,24 @@ # @stackflow/demo +## 1.4.1 + +### Patch Changes + +- Updated dependencies [cef9c62] +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/plugin-history-sync@1.11.0 + - @stackflow/config@2.0.0 + - @stackflow/core@2.0.0 + - @stackflow/link@2.0.0 + - @stackflow/react@2.0.0 + - @stackflow/plugin-basic-ui@1.18.2 + - @stackflow/plugin-devtools@0.1.12 + - @stackflow/plugin-renderer-basic@1.1.14 + - @stackflow/plugin-stack-depth-change@1.1.6 + ## 1.4.0 ### Minor Changes diff --git a/demo/package.json b/demo/package.json index 1ec11d6c0..bd7071e26 100644 --- a/demo/package.json +++ b/demo/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/demo", - "version": "1.4.0", + "version": "1.4.1", "private": true, "license": "MIT", "type": "module", @@ -32,15 +32,15 @@ "dependencies": { "@seed-design/design-token": "^1.0.3", "@seed-design/stylesheet": "^1.0.4", - "@stackflow/config": "^1.2.0", - "@stackflow/core": "^1.1.0", - "@stackflow/link": "^1.5.0", - "@stackflow/plugin-basic-ui": "^1.9.2", - "@stackflow/plugin-devtools": "^0.1.11", - "@stackflow/plugin-history-sync": "^1.7.0", - "@stackflow/plugin-renderer-basic": "^1.1.13", - "@stackflow/plugin-stack-depth-change": "^1.1.5", - "@stackflow/react": "^1.4.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", + "@stackflow/link": "^2.0.0", + "@stackflow/plugin-basic-ui": "^1.18.2", + "@stackflow/plugin-devtools": "^0.1.12", + "@stackflow/plugin-history-sync": "^1.11.0", + "@stackflow/plugin-renderer-basic": "^1.1.14", + "@stackflow/plugin-stack-depth-change": "^1.1.6", + "@stackflow/react": "^2.0.0", "lorem-ipsum": "^2.0.8", "lz-string": "^1.5.0", "normalize.css": "^8.0.1", diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 4b7d4a545..fd0e20b84 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,20 @@ # @stackflow/docs +## 2.1.1 + +### Patch Changes + +- Updated dependencies [cef9c62] +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/plugin-history-sync@1.11.0 + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + - @stackflow/demo@1.4.1 + - @stackflow/plugin-basic-ui@1.18.2 + - @stackflow/plugin-renderer-basic@1.1.14 + ## 2.1.0 ### Minor Changes diff --git a/docs/components/ChangelogContent.mdx b/docs/components/ChangelogContent.mdx index b70f13528..61cf6096d 100644 --- a/docs/components/ChangelogContent.mdx +++ b/docs/components/ChangelogContent.mdx @@ -1,3 +1,80 @@ +## 2026.05.28 + +Coerce activity/step params to `string | undefined` at the plugin boundary. [`9b02adb`](https://github.com/daangn/stackflow/commit/9b02adb64b9c97d801d7867cbc35c8343c79c66a) + +Before this change, `push("X", { visible: true })` would store the boolean `true` in the core store while URL-arrival parsed the same URL as `{ visible: "true" }`, so `useActivityParams()` (with generic parameter `K`) returned different runtime types depending on how the user reached the activity. This PR coerces non-string values to strings inside `plugin-history-sync`'s `onBeforePush` / `onBeforeReplace` / `onBeforeStepPush` / `onBeforeStepReplace` hooks (after `encode` consumes the typed params to build the URL), and on the `decode`-path in `overrideInitialEvents`, so the core store always contains `{ [key: string]: string | undefined }`. `encode` still receives the typed params `U` from `template.fill`. Post-effect hooks (`onPushed`, `onReplaced`, `onStepPushed`, `onStepReplaced`, `onInit`) now use the new `fillWithoutEncode` to avoid re-running `encode` on already-coerced store values. + +This is a behavioral change for consumers that relied on internal push preserving non-string values in the store (a pre-existing divergence from URL-arrival behavior). See the docs update for the migration note. + +Migration notes: + +- If you authored a `decode` hook that returns typed values (e.g. `decode: (p) => ({ count: Number(p.count) })`), those return values are now coerced back to strings in the store to match the declared `ActivityBaseParams` contract. Move runtime type coercion to the usage site (`Number(useActivityParams().count)`). +- If your app registers a plugin AFTER `historySyncPlugin` in the plugins array and that plugin re-injects typed values via `overrideActionParams`, those values will NOT be coerced by this plugin. Register `historySyncPlugin` last among plugins that mutate `activityParams` to preserve the string-only invariant. +- Cross-deploy hydration: when a user reloads on a deploy that includes this fix after a previous deploy serialized typed values into `history.state`, the params are coerced to strings at hydration time inside the `parseState` early-return. No consumer change required — the post-fix runtime contract (`useActivityParams()` returns `string | undefined`) holds across version boundaries. + +Released packages: +- 📦 [@stackflow/plugin-history-sync@2.0.0](https://npmjs.com/package/@stackflow/plugin-history-sync/v/2.0.0) + +--- + +Remove unused peer dependencies (`@stackflow/core`, `@stackflow/react`, `react`, `@types/react`) — pure Promise-based utility with no React or Stackflow imports. [`273d45f`](https://github.com/daangn/stackflow/commit/273d45f23ed3152d834f16a1adb58a1b0fc8c43c) + +Released packages: +- 📦 [@stackflow/compat-await-push@1.1.14](https://npmjs.com/package/@stackflow/compat-await-push/v/1.1.14) + +--- + +Major version bump for ecosystem alignment. No API changes. [`273d45f`](https://github.com/daangn/stackflow/commit/273d45f23ed3152d834f16a1adb58a1b0fc8c43c) + +Released packages: +- 📦 [@stackflow/config@2.0.0](https://npmjs.com/package/@stackflow/config/v/2.0.0) +- 📦 [@stackflow/core@2.0.0](https://npmjs.com/package/@stackflow/core/v/2.0.0) + +--- + +Promote Future API to the default entry point and remove the legacy Stable API. [`273d45f`](https://github.com/daangn/stackflow/commit/273d45f23ed3152d834f16a1adb58a1b0fc8c43c) + +- `@stackflow/link/future` and `@stackflow/link/stable` sub-paths removed. Import from `@stackflow/link` directly. +- `createLinkComponent()` removed. Use `import { Link } from "@stackflow/link"` directly. +- `LinkProps.urlPatternOptions` removed. Link URL generation now uses `config.historySync.urlPatternOptions`. + +Released packages: +- 📦 [@stackflow/link@2.0.0](https://npmjs.com/package/@stackflow/link/v/2.0.0) + +--- + +Promote Future API to the default entry point and remove the legacy Stable API. [`273d45f`](https://github.com/daangn/stackflow/commit/273d45f23ed3152d834f16a1adb58a1b0fc8c43c) + +- `@stackflow/react/future` and `@stackflow/react/stable` sub-paths removed. Import from `@stackflow/react` directly. +- `stackflow()` signature changed from `{ activities, transitionDuration }` to `{ config, components }`. Use `defineConfig()` from `@stackflow/config` for activity and route definitions. +- `useActions()` removed in favor of direct `useFlow()` imports, and `useStepActions()` removed in favor of direct `useStepFlow()` imports. +- `useActiveEffect()`, `useEnterDoneEffect()`, and `useStep()` are no longer exported from the default API. +- Step actions moved from `stackflow().actions` to the separate `stackflow().stepActions` object, with renamed methods: `stepPush` -> `pushStep`, `stepReplace` -> `replaceStep`, and `stepPop` -> `popStep`. +- `stackflow()` no longer returns the `activities` field, `useFlow`, `useStepFlow`, `addActivity`, or `addPlugin`. Hooks are now direct imports and activities are defined in `@stackflow/config`. +- `stackflow().actions` no longer exposes `getStack()` or `dispatchEvent()`; it now exposes only `push`, `replace`, and `pop`. +- `__internal__` directory removed; shared utilities are inlined into the main source. +- New default exports: `useLoaderData()`, `useConfig()`, `usePrepare()`, `lazy()`, and `structuredActivityComponent()`. +- Activity params now use `declare module "@stackflow/config" { interface Register { ... } }` instead of component props inference. + +Released packages: +- 📦 [@stackflow/react@2.0.0](https://npmjs.com/package/@stackflow/react/v/2.0.0) + +--- + +Add optional `stepContext.path?: string` to `StepPushedEvent` and `StepReplacedEvent` (purely additive, no breaking change). `@stackflow/plugin-history-sync` uses this to preserve `encode`-output URLs through the store across every step navigation path — including `popstate` forward across step boundaries — instead of relying on plugin-internal state. [`cef9c62`](https://github.com/daangn/stackflow/commit/cef9c62700eeda32fa7698b991281e8506df670e) + +This addresses three regressions surfaced in PR review: + +1. **`encode` output not in `history.location`** — post-effect hooks (`onPushed` / `onReplaced` / `onStepPushed` / `onStepReplaced` / `onInit`) called `template.fillWithoutEncode(activity.params)` against the post-coercion strings, skipping `encode` and writing coerced values into the URL. Now they read the encoded URL pre-computed in pre-effect hooks (`activityContext.path` / `stepContext.path`), with `fillWithoutEncode` as a defensive fallback only. +2. **`encode` called with coerced strings on popstate forward re-push** — the popstate `isForward` and `isStepForward` branches reconstructed push events without preserving `activityContext` / `stepContext`, causing `onBeforePush` / `onBeforeStepPush` to call `template.fill` with already-coerced strings. Now those branches pass `activityContext: targetActivity.context` / `stepContext: targetStep.context`, and the pre-effect hooks short-circuit when the path is already present (`"path" in actionParams.activityContext`). +3. **Test gap: `path(history.location)` was never asserted under non-identity `encode`** — every existing test asserted `activity.context.path` only. Added 15 new tests asserting the URL surface under non-identity encode, including popstate-forward across activity AND step boundaries, `defaultHistory` ancestor URLs, SSR replay, and `replace`-with-active-steps. + +Released packages: +- 📦 [@stackflow/core@2.0.0](https://npmjs.com/package/@stackflow/core/v/2.0.0) +- 📦 [@stackflow/plugin-history-sync@2.0.0](https://npmjs.com/package/@stackflow/plugin-history-sync/v/2.0.0) + +--- + ## 2026.04.30 Fix `fallbackActivity` callback being invoked on every initialization regardless of route matching outcome. Restored the pre-1.8.0 contract: the callback is now called only when no route matches `currentPath`. Apps that perform side effects in this callback (e.g. Sentry logging for unknown deep links) no longer fire on successful matches. [`2c5786a`](https://github.com/daangn/stackflow/commit/2c5786a2934c3d2b74c20e8c57465ae03b3d3416) diff --git a/docs/package.json b/docs/package.json index 528f98f9a..807901a30 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/docs", - "version": "2.1.0", + "version": "2.1.1", "private": true, "description": "Mobile-first stack navigator framework with Composable Plugin System", "license": "MIT", @@ -19,12 +19,12 @@ "@mdx-js/react": "^3.0.1", "@opennextjs/cloudflare": "^1.0.0-beta.3", "@seed-design/design-token": "^1.0.3", - "@stackflow/core": "^1.2.0", - "@stackflow/demo": "^1.4.0", - "@stackflow/plugin-basic-ui": "^1.17.0", - "@stackflow/plugin-history-sync": "^1.7.0", - "@stackflow/plugin-renderer-basic": "^1.1.13", - "@stackflow/react": "^1.5.0", + "@stackflow/core": "^2.0.0", + "@stackflow/demo": "^1.4.1", + "@stackflow/plugin-basic-ui": "^1.18.2", + "@stackflow/plugin-history-sync": "^1.11.0", + "@stackflow/plugin-renderer-basic": "^1.1.14", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "autoprefixer": "^10.4.20", "class-variance-authority": "^0.7.0", diff --git a/extensions/compat-await-push/CHANGELOG.md b/extensions/compat-await-push/CHANGELOG.md index 29db3de7f..45d8cc606 100644 --- a/extensions/compat-await-push/CHANGELOG.md +++ b/extensions/compat-await-push/CHANGELOG.md @@ -1,5 +1,11 @@ # @stackflow/compat-await-push +## 1.1.14 + +### Patch Changes + +- 273d45f: Remove unused peer dependencies (`@stackflow/core`, `@stackflow/react`, `react`, `@types/react`) — pure Promise-based utility with no React or Stackflow imports. + ## 1.1.13 ## 1.1.13-canary.0 diff --git a/extensions/compat-await-push/package.json b/extensions/compat-await-push/package.json index 4e91d72ef..1ee8a20dd 100644 --- a/extensions/compat-await-push/package.json +++ b/extensions/compat-await-push/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/compat-await-push", - "version": "1.1.13", + "version": "1.1.14", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", diff --git a/extensions/link/CHANGELOG.md b/extensions/link/CHANGELOG.md index fbbe7146a..d92be5fd6 100644 --- a/extensions/link/CHANGELOG.md +++ b/extensions/link/CHANGELOG.md @@ -1,5 +1,23 @@ # @stackflow/link +## 2.0.0 + +### Major Changes + +- 273d45f: Promote Future API to the default entry point and remove the legacy Stable API. + + - `@stackflow/link/future` and `@stackflow/link/stable` sub-paths removed. Import from `@stackflow/link` directly. + - `createLinkComponent()` removed. Use `import { Link } from "@stackflow/link"` directly. + - `LinkProps.urlPatternOptions` removed. Link URL generation now uses `config.historySync.urlPatternOptions`. + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 1.6.1 ### Patch Changes diff --git a/extensions/link/package.json b/extensions/link/package.json index b3eb7d5b9..18a6216e8 100644 --- a/extensions/link/package.json +++ b/extensions/link/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/link", - "version": "1.6.1", + "version": "2.0.0", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -31,11 +31,11 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@stackflow/config": "^1.2.1", - "@stackflow/core": "^1.1.1", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/plugin-history-sync": "^1.7.1", - "@stackflow/react": "^1.4.2", + "@stackflow/plugin-history-sync": "^1.11.0", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "esbuild": "^0.23.0", "esbuild-plugin-file-path-extensions": "^2.1.3", @@ -44,9 +44,9 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", + "@stackflow/core": "^2.0.0", "@stackflow/plugin-history-sync": "^1.6.4-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/extensions/plugin-basic-ui/CHANGELOG.md b/extensions/plugin-basic-ui/CHANGELOG.md index 0a7720e96..0489b06ca 100644 --- a/extensions/plugin-basic-ui/CHANGELOG.md +++ b/extensions/plugin-basic-ui/CHANGELOG.md @@ -1,5 +1,16 @@ # @stackflow/plugin-basic-ui +## 1.18.2 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + - @stackflow/react-ui-core@1.3.5 + ## 1.18.1 ### Patch Changes diff --git a/extensions/plugin-basic-ui/package.json b/extensions/plugin-basic-ui/package.json index d678c427c..f52a44a26 100644 --- a/extensions/plugin-basic-ui/package.json +++ b/extensions/plugin-basic-ui/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-basic-ui", - "version": "1.18.1", + "version": "1.18.2", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -32,7 +32,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@stackflow/react-ui-core": "^1.3.3", + "@stackflow/react-ui-core": "^1.3.5", "@vanilla-extract/css": "^1.15.3", "@vanilla-extract/dynamic": "^2.1.1", "@vanilla-extract/private": "^1.0.5", @@ -40,9 +40,9 @@ "clsx": "^2.1.1" }, "devDependencies": { - "@stackflow/core": "^1.2.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/react": "^1.9.0", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "esbuild": "^0.23.0", "react": "^18.3.1", @@ -50,8 +50,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/extensions/plugin-blocker/CHANGELOG.md b/extensions/plugin-blocker/CHANGELOG.md index 5b9979962..c18d1510a 100644 --- a/extensions/plugin-blocker/CHANGELOG.md +++ b/extensions/plugin-blocker/CHANGELOG.md @@ -1,5 +1,15 @@ # @stackflow/plugin-blocker +## 0.1.1 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 0.1.0 ### Minor Changes diff --git a/extensions/plugin-blocker/package.json b/extensions/plugin-blocker/package.json index 17d5eced9..f05f804b0 100644 --- a/extensions/plugin-blocker/package.json +++ b/extensions/plugin-blocker/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-blocker", - "version": "0.1.0", + "version": "0.1.1", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -41,11 +41,11 @@ } }, "devDependencies": { - "@stackflow/config": "^1.2.2", - "@stackflow/core": "^1.3.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/plugin-renderer-basic": "^1.1.13", - "@stackflow/react": "^1.12.0", + "@stackflow/plugin-renderer-basic": "^1.1.14", + "@stackflow/react": "^2.0.0", "@swc/core": "^1.6.6", "@swc/jest": "^0.2.36", "@testing-library/dom": "^10.4.0", @@ -61,8 +61,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "react": ">=16.8.0" }, "publishConfig": { diff --git a/extensions/plugin-devtools/CHANGELOG.md b/extensions/plugin-devtools/CHANGELOG.md index 67f1ea40d..ff7f74fd1 100644 --- a/extensions/plugin-devtools/CHANGELOG.md +++ b/extensions/plugin-devtools/CHANGELOG.md @@ -1,5 +1,13 @@ # @stackflow/plugin-devtools +## 0.1.12 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + ## 0.1.11 ## 0.1.11-canary.0 diff --git a/extensions/plugin-devtools/package.json b/extensions/plugin-devtools/package.json index eefeeba9d..d6f70dc88 100644 --- a/extensions/plugin-devtools/package.json +++ b/extensions/plugin-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-devtools", - "version": "0.1.11", + "version": "0.1.12", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -30,7 +30,7 @@ "dev": "yarn build:js --watch && yarn build:dts --watch" }, "devDependencies": { - "@stackflow/core": "^1.1.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", "@types/node": "^20.14.9", "esbuild": "^0.23.0", @@ -38,7 +38,7 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0" + "@stackflow/core": "^2.0.0" }, "publishConfig": { "access": "public" diff --git a/extensions/plugin-google-analytics-4/CHANGELOG.md b/extensions/plugin-google-analytics-4/CHANGELOG.md index 8edbaaf87..72000a366 100644 --- a/extensions/plugin-google-analytics-4/CHANGELOG.md +++ b/extensions/plugin-google-analytics-4/CHANGELOG.md @@ -1,5 +1,15 @@ # @stackflow/plugin-google-analytics-4 +## 1.1.16 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 1.1.15 ## 1.1.15-canary.0 diff --git a/extensions/plugin-google-analytics-4/package.json b/extensions/plugin-google-analytics-4/package.json index 9880e5d51..26e66356b 100644 --- a/extensions/plugin-google-analytics-4/package.json +++ b/extensions/plugin-google-analytics-4/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-google-analytics-4", - "version": "1.1.15", + "version": "1.1.16", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -35,9 +35,9 @@ "react-ga4": "^2.1.0" }, "devDependencies": { - "@stackflow/core": "^1.1.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/react": "^1.3.2", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "esbuild": "^0.23.0", "react": "^18.3.1", @@ -45,8 +45,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/extensions/plugin-history-sync/CHANGELOG.md b/extensions/plugin-history-sync/CHANGELOG.md index 347f32e08..74eaf4e6c 100644 --- a/extensions/plugin-history-sync/CHANGELOG.md +++ b/extensions/plugin-history-sync/CHANGELOG.md @@ -1,5 +1,38 @@ # @stackflow/plugin-history-sync +## 1.11.0 + +### Minor Changes + +- cef9c62: Coerce activity/step params to `string | undefined` at the plugin boundary. + + Before this change, `push("X", { visible: true })` would store the boolean `true` in the core store while URL-arrival parsed the same URL as `{ visible: "true" }`, so `useActivityParams()` (with generic parameter `K`) returned different runtime types depending on how the user reached the activity. This PR coerces non-string values to strings inside `plugin-history-sync`'s `onBeforePush` / `onBeforeReplace` / `onBeforeStepPush` / `onBeforeStepReplace` hooks (after `encode` consumes the typed params to build the URL), and on the `decode`-path in `overrideInitialEvents`, so the core store always contains `{ [key: string]: string | undefined }`. `encode` still receives the typed params `U` from `template.fill`. Post-effect hooks (`onPushed`, `onReplaced`, `onStepPushed`, `onStepReplaced`, `onInit`) now use the new `fillWithoutEncode` to avoid re-running `encode` on already-coerced store values. + + This is a behavioral change for consumers that relied on internal push preserving non-string values in the store (a pre-existing divergence from URL-arrival behavior). See the docs update for the migration note. + + Migration notes: + + - If you authored a `decode` hook that returns typed values (e.g. `decode: (p) => ({ count: Number(p.count) })`), those return values are now coerced back to strings in the store to match the declared `ActivityBaseParams` contract. Move runtime type coercion to the usage site (`Number(useActivityParams().count)`). + - If your app registers a plugin AFTER `historySyncPlugin` in the plugins array and that plugin re-injects typed values via `overrideActionParams`, those values will NOT be coerced by this plugin. Register `historySyncPlugin` last among plugins that mutate `activityParams` to preserve the string-only invariant. + - Cross-deploy hydration: when a user reloads on a deploy that includes this fix after a previous deploy serialized typed values into `history.state`, the params are coerced to strings at hydration time inside the `parseState` early-return. No consumer change required — the post-fix runtime contract (`useActivityParams()` returns `string | undefined`) holds across version boundaries. + +### Patch Changes + +- cef9c62: Add optional `stepContext.path?: string` to `StepPushedEvent` and `StepReplacedEvent` (purely additive, no breaking change). `@stackflow/plugin-history-sync` uses this to preserve `encode`-output URLs through the store across every step navigation path — including `popstate` forward across step boundaries — instead of relying on plugin-internal state. + + This addresses three regressions surfaced in PR review: + + 1. **`encode` output not in `history.location`** — post-effect hooks (`onPushed` / `onReplaced` / `onStepPushed` / `onStepReplaced` / `onInit`) called `template.fillWithoutEncode(activity.params)` against the post-coercion strings, skipping `encode` and writing coerced values into the URL. Now they read the encoded URL pre-computed in pre-effect hooks (`activityContext.path` / `stepContext.path`), with `fillWithoutEncode` as a defensive fallback only. + 2. **`encode` called with coerced strings on popstate forward re-push** — the popstate `isForward` and `isStepForward` branches reconstructed push events without preserving `activityContext` / `stepContext`, causing `onBeforePush` / `onBeforeStepPush` to call `template.fill` with already-coerced strings. Now those branches pass `activityContext: targetActivity.context` / `stepContext: targetStep.context`, and the pre-effect hooks short-circuit when the path is already present (`"path" in actionParams.activityContext`). + 3. **Test gap: `path(history.location)` was never asserted under non-identity `encode`** — every existing test asserted `activity.context.path` only. Added 15 new tests asserting the URL surface under non-identity encode, including popstate-forward across activity AND step boundaries, `defaultHistory` ancestor URLs, SSR replay, and `replace`-with-active-steps. + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/config@2.0.0 + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 1.10.1 ### Patch Changes diff --git a/extensions/plugin-history-sync/package.json b/extensions/plugin-history-sync/package.json index f63dbf369..64d2e86df 100644 --- a/extensions/plugin-history-sync/package.json +++ b/extensions/plugin-history-sync/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-history-sync", - "version": "1.10.1", + "version": "1.11.0", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -48,10 +48,10 @@ }, "devDependencies": { "@graphql-tools/schema": "^10.0.5", - "@stackflow/config": "^1.2.1", - "@stackflow/core": "^1.3.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/react": "^1.7.0", + "@stackflow/react": "^2.0.0", "@swc/core": "^1.6.6", "@swc/jest": "^0.2.36", "@types/jest": "^29.5.12", @@ -70,9 +70,9 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/config": "^1.0.1-canary.0", - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/extensions/plugin-lifecycle/CHANGELOG.md b/extensions/plugin-lifecycle/CHANGELOG.md index 3eb773e18..044a06cc4 100644 --- a/extensions/plugin-lifecycle/CHANGELOG.md +++ b/extensions/plugin-lifecycle/CHANGELOG.md @@ -1,5 +1,15 @@ # @stackflow/plugin-lifecycle +## 0.1.1 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 0.1.0 ### Minor Changes diff --git a/extensions/plugin-lifecycle/package.json b/extensions/plugin-lifecycle/package.json index 220625a4b..bd92f5de9 100644 --- a/extensions/plugin-lifecycle/package.json +++ b/extensions/plugin-lifecycle/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-lifecycle", - "version": "0.1.0", + "version": "0.1.1", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -41,11 +41,11 @@ } }, "devDependencies": { - "@stackflow/config": "^1.2.2", - "@stackflow/core": "^1.3.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/plugin-renderer-basic": "^1.1.13", - "@stackflow/react": "^1.12.0", + "@stackflow/plugin-renderer-basic": "^1.1.14", + "@stackflow/react": "^2.0.0", "@swc/core": "^1.6.6", "@swc/jest": "^0.2.36", "@testing-library/dom": "^10.4.0", @@ -61,8 +61,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "react": ">=16.8.0" }, "publishConfig": { diff --git a/extensions/plugin-renderer-basic/CHANGELOG.md b/extensions/plugin-renderer-basic/CHANGELOG.md index 1499ef28f..d2e93e5d2 100644 --- a/extensions/plugin-renderer-basic/CHANGELOG.md +++ b/extensions/plugin-renderer-basic/CHANGELOG.md @@ -1,5 +1,15 @@ # @stackflow/plugin-renderer-basic +## 1.1.14 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 1.1.13 ## 1.1.13-canary.0 diff --git a/extensions/plugin-renderer-basic/package.json b/extensions/plugin-renderer-basic/package.json index a18ccf1eb..36152dc87 100644 --- a/extensions/plugin-renderer-basic/package.json +++ b/extensions/plugin-renderer-basic/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-renderer-basic", - "version": "1.1.13", + "version": "1.1.14", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -31,9 +31,9 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@stackflow/core": "^1.1.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/react": "^1.3.2", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "esbuild": "^0.23.0", "react": "^18.3.1", @@ -41,8 +41,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/extensions/plugin-renderer-web/CHANGELOG.md b/extensions/plugin-renderer-web/CHANGELOG.md index d823df401..60e5a1f21 100644 --- a/extensions/plugin-renderer-web/CHANGELOG.md +++ b/extensions/plugin-renderer-web/CHANGELOG.md @@ -1,5 +1,15 @@ # @stackflow/plugin-renderer-web +## 1.1.14 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 1.1.13 ## 1.1.13-canary.0 diff --git a/extensions/plugin-renderer-web/package.json b/extensions/plugin-renderer-web/package.json index 09c8e87fd..81bdec7b4 100644 --- a/extensions/plugin-renderer-web/package.json +++ b/extensions/plugin-renderer-web/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-renderer-web", - "version": "1.1.13", + "version": "1.1.14", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -31,9 +31,9 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@stackflow/core": "^1.1.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", - "@stackflow/react": "^1.3.2", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "esbuild": "^0.23.0", "react": "^18.3.1", @@ -41,8 +41,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/extensions/plugin-sentry/CHANGELOG.md b/extensions/plugin-sentry/CHANGELOG.md index f1b91124f..e622d9c1d 100644 --- a/extensions/plugin-sentry/CHANGELOG.md +++ b/extensions/plugin-sentry/CHANGELOG.md @@ -1,5 +1,13 @@ # @stackflow/plugin-sentry +## 0.1.1 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + ## 0.1.0 ### Minor Changes diff --git a/extensions/plugin-sentry/package.json b/extensions/plugin-sentry/package.json index 7e05f36b5..21277e555 100644 --- a/extensions/plugin-sentry/package.json +++ b/extensions/plugin-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-sentry", - "version": "0.1.0", + "version": "0.1.1", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -32,12 +32,12 @@ "peerDependencies": { "@sentry/browser": ">=8.0.0", "@sentry/core": ">=8.0.0", - "@stackflow/core": "^1.1.0-canary.0" + "@stackflow/core": "^2.0.0" }, "devDependencies": { "@sentry/browser": "^10.46.0", "@sentry/core": "^10.46.0", - "@stackflow/core": "^1.1.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", "esbuild": "^0.23.0", "typescript": "^5.5.3" diff --git a/extensions/plugin-stack-depth-change/CHANGELOG.md b/extensions/plugin-stack-depth-change/CHANGELOG.md index df2a27031..caaaee748 100644 --- a/extensions/plugin-stack-depth-change/CHANGELOG.md +++ b/extensions/plugin-stack-depth-change/CHANGELOG.md @@ -1,5 +1,13 @@ # @stackflow/plugin-stack-depth-change +## 1.1.6 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + ## 1.1.5 ## 1.1.5-canary.0 diff --git a/extensions/plugin-stack-depth-change/package.json b/extensions/plugin-stack-depth-change/package.json index 82bf5edeb..ed9ce3525 100644 --- a/extensions/plugin-stack-depth-change/package.json +++ b/extensions/plugin-stack-depth-change/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/plugin-stack-depth-change", - "version": "1.1.5", + "version": "1.1.6", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -31,7 +31,7 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@stackflow/core": "^1.1.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", "@types/node": "^20.14.9", "esbuild": "^0.23.0", @@ -39,7 +39,7 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0" + "@stackflow/core": "^2.0.0" }, "publishConfig": { "access": "public" diff --git a/extensions/react-ui-core/CHANGELOG.md b/extensions/react-ui-core/CHANGELOG.md index 1f2e0405b..9673cdfd6 100644 --- a/extensions/react-ui-core/CHANGELOG.md +++ b/extensions/react-ui-core/CHANGELOG.md @@ -1,5 +1,15 @@ # @stackflow/react-ui-core +## 1.3.5 + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/core@2.0.0 + - @stackflow/react@2.0.0 + ## 1.3.4 ### Patch Changes diff --git a/extensions/react-ui-core/package.json b/extensions/react-ui-core/package.json index 2eef03b73..371195d2f 100644 --- a/extensions/react-ui-core/package.json +++ b/extensions/react-ui-core/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/react-ui-core", - "version": "1.3.4", + "version": "1.3.5", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -32,9 +32,9 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "@stackflow/core": "^1.3.1", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.2", - "@stackflow/react": "^1.3.2", + "@stackflow/react": "^2.0.0", "@types/react": "^18.3.3", "esbuild": "^0.23.0", "react": "^18.3.1", @@ -42,8 +42,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/core": "^1.1.0-canary.0", - "@stackflow/react": "^1.3.2-canary.0", + "@stackflow/core": "^2.0.0", + "@stackflow/react": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/integrations/react/CHANGELOG.md b/integrations/react/CHANGELOG.md index daa872604..d0389eaf2 100644 --- a/integrations/react/CHANGELOG.md +++ b/integrations/react/CHANGELOG.md @@ -1,5 +1,29 @@ # @stackflow/react +## 2.0.0 + +### Major Changes + +- 273d45f: Promote Future API to the default entry point and remove the legacy Stable API. + + - `@stackflow/react/future` and `@stackflow/react/stable` sub-paths removed. Import from `@stackflow/react` directly. + - `stackflow()` signature changed from `{ activities, transitionDuration }` to `{ config, components }`. Use `defineConfig()` from `@stackflow/config` for activity and route definitions. + - `useActions()` removed in favor of direct `useFlow()` imports, and `useStepActions()` removed in favor of direct `useStepFlow()` imports. + - `useActiveEffect()`, `useEnterDoneEffect()`, and `useStep()` are no longer exported from the default API. + - Step actions moved from `stackflow().actions` to the separate `stackflow().stepActions` object, with renamed methods: `stepPush` -> `pushStep`, `stepReplace` -> `replaceStep`, and `stepPop` -> `popStep`. + - `stackflow()` no longer returns the `activities` field, `useFlow`, `useStepFlow`, `addActivity`, or `addPlugin`. Hooks are now direct imports and activities are defined in `@stackflow/config`. + - `stackflow().actions` no longer exposes `getStack()` or `dispatchEvent()`; it now exposes only `push`, `replace`, and `pop`. + - `__internal__` directory removed; shared utilities are inlined into the main source. + - New default exports: `useLoaderData()`, `useConfig()`, `usePrepare()`, `lazy()`, and `structuredActivityComponent()`. + - Activity params now use `declare module "@stackflow/config" { interface Register { ... } }` instead of component props inference. + +### Patch Changes + +- Updated dependencies [273d45f] +- Updated dependencies [cef9c62] + - @stackflow/config@2.0.0 + - @stackflow/core@2.0.0 + ## 1.12.0 ### Minor Changes diff --git a/integrations/react/package.json b/integrations/react/package.json index c695e6b55..3182f181d 100644 --- a/integrations/react/package.json +++ b/integrations/react/package.json @@ -1,6 +1,6 @@ { "name": "@stackflow/react", - "version": "1.12.0", + "version": "2.0.0", "repository": { "type": "git", "url": "https://github.com/daangn/stackflow.git", @@ -34,8 +34,8 @@ "react-fast-compare": "^3.2.2" }, "devDependencies": { - "@stackflow/config": "^1.2.2", - "@stackflow/core": "^1.3.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", "@stackflow/esbuild-config": "^1.0.3", "@types/react": "^18.3.3", "esbuild": "^0.23.0", @@ -45,8 +45,8 @@ "typescript": "^5.5.3" }, "peerDependencies": { - "@stackflow/config": "^1.0.1-canary.0", - "@stackflow/core": "^1.1.0-canary.0", + "@stackflow/config": "^2.0.0", + "@stackflow/core": "^2.0.0", "@types/react": ">=16.8.0", "react": ">=16.8.0" }, diff --git a/yarn.lock b/yarn.lock index 6c2fab420..f38b4e1a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5600,7 +5600,7 @@ __metadata: languageName: unknown linkType: soft -"@stackflow/config@npm:^1.2.0, @stackflow/config@npm:^1.2.1, @stackflow/config@npm:^1.2.2, @stackflow/config@workspace:config": +"@stackflow/config@npm:^2.0.0, @stackflow/config@workspace:config": version: 0.0.0-use.local resolution: "@stackflow/config@workspace:config" dependencies: @@ -5612,7 +5612,7 @@ __metadata: languageName: unknown linkType: soft -"@stackflow/core@npm:^1.1.0, @stackflow/core@npm:^1.1.1, @stackflow/core@npm:^1.2.0, @stackflow/core@npm:^1.3.0, @stackflow/core@npm:^1.3.1, @stackflow/core@workspace:core": +"@stackflow/core@npm:^2.0.0, @stackflow/core@workspace:core": version: 0.0.0-use.local resolution: "@stackflow/core@workspace:core" dependencies: @@ -5630,22 +5630,22 @@ __metadata: languageName: unknown linkType: soft -"@stackflow/demo@npm:^1.4.0, @stackflow/demo@workspace:demo": +"@stackflow/demo@npm:^1.4.1, @stackflow/demo@workspace:demo": version: 0.0.0-use.local resolution: "@stackflow/demo@workspace:demo" dependencies: "@seed-design/design-token": "npm:^1.0.3" "@seed-design/stylesheet": "npm:^1.0.4" - "@stackflow/config": "npm:^1.2.0" - "@stackflow/core": "npm:^1.1.0" + "@stackflow/config": "npm:^2.0.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/link": "npm:^1.5.0" - "@stackflow/plugin-basic-ui": "npm:^1.9.2" - "@stackflow/plugin-devtools": "npm:^0.1.11" - "@stackflow/plugin-history-sync": "npm:^1.7.0" - "@stackflow/plugin-renderer-basic": "npm:^1.1.13" - "@stackflow/plugin-stack-depth-change": "npm:^1.1.5" - "@stackflow/react": "npm:^1.4.0" + "@stackflow/link": "npm:^2.0.0" + "@stackflow/plugin-basic-ui": "npm:^1.18.2" + "@stackflow/plugin-devtools": "npm:^0.1.12" + "@stackflow/plugin-history-sync": "npm:^1.11.0" + "@stackflow/plugin-renderer-basic": "npm:^1.1.14" + "@stackflow/plugin-stack-depth-change": "npm:^1.1.6" + "@stackflow/react": "npm:^2.0.0" "@types/react": "npm:^18.3.3" "@types/react-dom": "npm:^18.3.0" "@types/react-lazy-load-image-component": "npm:^1.6.4" @@ -5681,12 +5681,12 @@ __metadata: "@opennextjs/cloudflare": "npm:^1.0.0-beta.3" "@seed-design/design-token": "npm:^1.0.3" "@seed-design/stylesheet": "npm:^1.0.4" - "@stackflow/core": "npm:^1.2.0" - "@stackflow/demo": "npm:^1.4.0" - "@stackflow/plugin-basic-ui": "npm:^1.17.0" - "@stackflow/plugin-history-sync": "npm:^1.7.0" - "@stackflow/plugin-renderer-basic": "npm:^1.1.13" - "@stackflow/react": "npm:^1.5.0" + "@stackflow/core": "npm:^2.0.0" + "@stackflow/demo": "npm:^1.4.1" + "@stackflow/plugin-basic-ui": "npm:^1.18.2" + "@stackflow/plugin-history-sync": "npm:^1.11.0" + "@stackflow/plugin-renderer-basic": "npm:^1.1.14" + "@stackflow/react": "npm:^2.0.0" "@types/node": "npm:^22.7.5" "@types/react": "npm:^18.3.3" autoprefixer: "npm:^10.4.20" @@ -5721,15 +5721,15 @@ __metadata: languageName: unknown linkType: soft -"@stackflow/link@npm:^1.5.0, @stackflow/link@workspace:extensions/link": +"@stackflow/link@npm:^2.0.0, @stackflow/link@workspace:extensions/link": version: 0.0.0-use.local resolution: "@stackflow/link@workspace:extensions/link" dependencies: - "@stackflow/config": "npm:^1.2.1" - "@stackflow/core": "npm:^1.1.1" + "@stackflow/config": "npm:^2.0.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/plugin-history-sync": "npm:^1.7.1" - "@stackflow/react": "npm:^1.4.2" + "@stackflow/plugin-history-sync": "npm:^1.11.0" + "@stackflow/react": "npm:^2.0.0" "@types/react": "npm:^18.3.3" esbuild: "npm:^0.23.0" esbuild-plugin-file-path-extensions: "npm:^2.1.3" @@ -5737,9 +5737,9 @@ __metadata: rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 + "@stackflow/core": ^2.0.0 "@stackflow/plugin-history-sync": ^1.6.4-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown @@ -5764,14 +5764,14 @@ __metadata: languageName: unknown linkType: soft -"@stackflow/plugin-basic-ui@npm:^1.17.0, @stackflow/plugin-basic-ui@npm:^1.9.2, @stackflow/plugin-basic-ui@workspace:extensions/plugin-basic-ui": +"@stackflow/plugin-basic-ui@npm:^1.18.2, @stackflow/plugin-basic-ui@workspace:extensions/plugin-basic-ui": version: 0.0.0-use.local resolution: "@stackflow/plugin-basic-ui@workspace:extensions/plugin-basic-ui" dependencies: - "@stackflow/core": "npm:^1.2.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/react": "npm:^1.9.0" - "@stackflow/react-ui-core": "npm:^1.3.3" + "@stackflow/react": "npm:^2.0.0" + "@stackflow/react-ui-core": "npm:^1.3.5" "@types/react": "npm:^18.3.3" "@vanilla-extract/css": "npm:^1.15.3" "@vanilla-extract/dynamic": "npm:^2.1.1" @@ -5783,8 +5783,8 @@ __metadata: rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown @@ -5794,11 +5794,11 @@ __metadata: version: 0.0.0-use.local resolution: "@stackflow/plugin-blocker@workspace:extensions/plugin-blocker" dependencies: - "@stackflow/config": "npm:^1.2.2" - "@stackflow/core": "npm:^1.3.0" + "@stackflow/config": "npm:^2.0.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/plugin-renderer-basic": "npm:^1.1.13" - "@stackflow/react": "npm:^1.12.0" + "@stackflow/plugin-renderer-basic": "npm:^1.1.14" + "@stackflow/react": "npm:^2.0.0" "@swc/core": "npm:^1.6.6" "@swc/jest": "npm:^0.2.36" "@testing-library/dom": "npm:^10.4.0" @@ -5813,24 +5813,24 @@ __metadata: rimraf: "npm:^6.1.3" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 react: ">=16.8.0" languageName: unknown linkType: soft -"@stackflow/plugin-devtools@npm:^0.1.11, @stackflow/plugin-devtools@workspace:extensions/plugin-devtools": +"@stackflow/plugin-devtools@npm:^0.1.12, @stackflow/plugin-devtools@workspace:extensions/plugin-devtools": version: 0.0.0-use.local resolution: "@stackflow/plugin-devtools@workspace:extensions/plugin-devtools" dependencies: - "@stackflow/core": "npm:^1.1.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" "@types/node": "npm:^20.14.9" esbuild: "npm:^0.23.0" rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 + "@stackflow/core": ^2.0.0 languageName: unknown linkType: soft @@ -5838,9 +5838,9 @@ __metadata: version: 0.0.0-use.local resolution: "@stackflow/plugin-google-analytics-4@workspace:extensions/plugin-google-analytics-4" dependencies: - "@stackflow/core": "npm:^1.1.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/react": "npm:^1.3.2" + "@stackflow/react": "npm:^2.0.0" "@types/react": "npm:^18.3.3" esbuild: "npm:^0.23.0" react: "npm:^18.3.1" @@ -5848,22 +5848,22 @@ __metadata: rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown linkType: soft -"@stackflow/plugin-history-sync@npm:^1.7.0, @stackflow/plugin-history-sync@npm:^1.7.1, @stackflow/plugin-history-sync@workspace:extensions/plugin-history-sync": +"@stackflow/plugin-history-sync@npm:^1.11.0, @stackflow/plugin-history-sync@workspace:extensions/plugin-history-sync": version: 0.0.0-use.local resolution: "@stackflow/plugin-history-sync@workspace:extensions/plugin-history-sync" dependencies: "@graphql-tools/schema": "npm:^10.0.5" - "@stackflow/config": "npm:^1.2.1" - "@stackflow/core": "npm:^1.3.0" + "@stackflow/config": "npm:^2.0.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/react": "npm:^1.7.0" + "@stackflow/react": "npm:^2.0.0" "@swc/core": "npm:^1.6.6" "@swc/jest": "npm:^0.2.36" "@types/jest": "npm:^29.5.12" @@ -5885,9 +5885,9 @@ __metadata: typescript: "npm:^5.5.3" url-pattern: "npm:^1.0.3" peerDependencies: - "@stackflow/config": ^1.0.1-canary.0 - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/config": ^2.0.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown @@ -5897,11 +5897,11 @@ __metadata: version: 0.0.0-use.local resolution: "@stackflow/plugin-lifecycle@workspace:extensions/plugin-lifecycle" dependencies: - "@stackflow/config": "npm:^1.2.2" - "@stackflow/core": "npm:^1.3.0" + "@stackflow/config": "npm:^2.0.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/plugin-renderer-basic": "npm:^1.1.13" - "@stackflow/react": "npm:^1.12.0" + "@stackflow/plugin-renderer-basic": "npm:^1.1.14" + "@stackflow/react": "npm:^2.0.0" "@swc/core": "npm:^1.6.6" "@swc/jest": "npm:^0.2.36" "@testing-library/dom": "npm:^10.4.0" @@ -5916,27 +5916,27 @@ __metadata: rimraf: "npm:^6.1.3" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 react: ">=16.8.0" languageName: unknown linkType: soft -"@stackflow/plugin-renderer-basic@npm:^1.1.13, @stackflow/plugin-renderer-basic@workspace:extensions/plugin-renderer-basic": +"@stackflow/plugin-renderer-basic@npm:^1.1.14, @stackflow/plugin-renderer-basic@workspace:extensions/plugin-renderer-basic": version: 0.0.0-use.local resolution: "@stackflow/plugin-renderer-basic@workspace:extensions/plugin-renderer-basic" dependencies: - "@stackflow/core": "npm:^1.1.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/react": "npm:^1.3.2" + "@stackflow/react": "npm:^2.0.0" "@types/react": "npm:^18.3.3" esbuild: "npm:^0.23.0" react: "npm:^18.3.1" rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown @@ -5946,17 +5946,17 @@ __metadata: version: 0.0.0-use.local resolution: "@stackflow/plugin-renderer-web@workspace:extensions/plugin-renderer-web" dependencies: - "@stackflow/core": "npm:^1.1.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" - "@stackflow/react": "npm:^1.3.2" + "@stackflow/react": "npm:^2.0.0" "@types/react": "npm:^18.3.3" esbuild: "npm:^0.23.0" react: "npm:^18.3.1" rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown @@ -5968,58 +5968,58 @@ __metadata: dependencies: "@sentry/browser": "npm:^10.46.0" "@sentry/core": "npm:^10.46.0" - "@stackflow/core": "npm:^1.1.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" esbuild: "npm:^0.23.0" typescript: "npm:^5.5.3" peerDependencies: "@sentry/browser": ">=8.0.0" "@sentry/core": ">=8.0.0" - "@stackflow/core": ^1.1.0-canary.0 + "@stackflow/core": ^2.0.0 languageName: unknown linkType: soft -"@stackflow/plugin-stack-depth-change@npm:^1.1.5, @stackflow/plugin-stack-depth-change@workspace:extensions/plugin-stack-depth-change": +"@stackflow/plugin-stack-depth-change@npm:^1.1.6, @stackflow/plugin-stack-depth-change@workspace:extensions/plugin-stack-depth-change": version: 0.0.0-use.local resolution: "@stackflow/plugin-stack-depth-change@workspace:extensions/plugin-stack-depth-change" dependencies: - "@stackflow/core": "npm:^1.1.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" "@types/node": "npm:^20.14.9" esbuild: "npm:^0.23.0" rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 + "@stackflow/core": ^2.0.0 languageName: unknown linkType: soft -"@stackflow/react-ui-core@npm:^1.3.3, @stackflow/react-ui-core@workspace:extensions/react-ui-core": +"@stackflow/react-ui-core@npm:^1.3.5, @stackflow/react-ui-core@workspace:extensions/react-ui-core": version: 0.0.0-use.local resolution: "@stackflow/react-ui-core@workspace:extensions/react-ui-core" dependencies: - "@stackflow/core": "npm:^1.3.1" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.2" - "@stackflow/react": "npm:^1.3.2" + "@stackflow/react": "npm:^2.0.0" "@types/react": "npm:^18.3.3" esbuild: "npm:^0.23.0" react: "npm:^18.3.1" rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/core": ^1.1.0-canary.0 - "@stackflow/react": ^1.3.2-canary.0 + "@stackflow/core": ^2.0.0 + "@stackflow/react": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown linkType: soft -"@stackflow/react@npm:^1.12.0, @stackflow/react@npm:^1.3.2, @stackflow/react@npm:^1.4.0, @stackflow/react@npm:^1.4.2, @stackflow/react@npm:^1.5.0, @stackflow/react@npm:^1.7.0, @stackflow/react@npm:^1.9.0, @stackflow/react@workspace:integrations/react": +"@stackflow/react@npm:^2.0.0, @stackflow/react@workspace:integrations/react": version: 0.0.0-use.local resolution: "@stackflow/react@workspace:integrations/react" dependencies: - "@stackflow/config": "npm:^1.2.2" - "@stackflow/core": "npm:^1.3.0" + "@stackflow/config": "npm:^2.0.0" + "@stackflow/core": "npm:^2.0.0" "@stackflow/esbuild-config": "npm:^1.0.3" "@types/react": "npm:^18.3.3" esbuild: "npm:^0.23.0" @@ -6029,8 +6029,8 @@ __metadata: rimraf: "npm:^3.0.2" typescript: "npm:^5.5.3" peerDependencies: - "@stackflow/config": ^1.0.1-canary.0 - "@stackflow/core": ^1.1.0-canary.0 + "@stackflow/config": ^2.0.0 + "@stackflow/core": ^2.0.0 "@types/react": ">=16.8.0" react: ">=16.8.0" languageName: unknown