expo-harmony-toolkit 1.9.3 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -9,7 +9,7 @@
9
9
  <p>
10
10
  <a href="https://github.com/BlackishGreen33/Expo-Harmony-Toolkit/actions/workflows/ci.yml"><img alt="Checks" src="https://img.shields.io/badge/checks-passing-16a34a?style=flat-square&logo=githubactions&logoColor=white"></a>
11
11
  <a href="./LICENSE"><img alt="License" src="https://img.shields.io/badge/license-MIT-0f766e?style=flat-square"></a>
12
- <a href="https://github.com/BlackishGreen33/Expo-Harmony-Toolkit/releases"><img alt="Version" src="https://img.shields.io/badge/version-v1.9.3-111827?style=flat-square"></a>
12
+ <a href="https://github.com/BlackishGreen33/Expo-Harmony-Toolkit/releases"><img alt="Version" src="https://img.shields.io/badge/version-v1.10.0-111827?style=flat-square"></a>
13
13
  <a href="./docs/support-matrix.md"><img alt="Matrix" src="https://img.shields.io/badge/matrix-expo55--rnoh082--ui--stack-2563eb?style=flat-square"></a>
14
14
  <img alt="Input" src="https://img.shields.io/badge/input-Managed%2FCNG%20%2B%20bare%20intake-059669?style=flat-square">
15
15
  </p>
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
 
26
26
  > [!IMPORTANT]
27
- > `v1.9.3` keeps the `v1.9.2` Wave A baseline and brings ccnubox-first `react-native-webview`, JPush runtime, `expo-media-library`, `lottie-react-native`, and `@shopify/react-native-skia` into Third-party Native Wave B formal experimental onboarding. The public promise remains tighter: `latest` only carries fully accepted `verified` capabilities, and Wave B does not widen the current `verified` boundary.
27
+ > `v1.10.0` freezes Any-project Intake: any Expo project entering `doctor` should receive a `coverageProfile`, explicit `gapCategory`, and ordered `nextActions`. The public promise remains tighter: `latest` only carries fully accepted `verified` capabilities; v1.10.0 is not a verified expansion and does not promise reliable packaging for catalog-out projects.
28
28
 
29
29
  > [!TIP]
30
30
  > The two validated `@react-native-oh-tpl/*` adapters in the public matrix are currently consumed via exact Git URLs and commits. For repository development and the official UI-stack sample, prefer `pnpm install --ignore-scripts` so adapter prepare hooks do not fail on private upstream resources.
@@ -48,10 +48,10 @@
48
48
  <!-- GENERATED:readme-current-status:start -->
49
49
  | Item | Status |
50
50
  | --- | --- |
51
- | Current version | `v1.9.3` |
51
+ | Current version | `v1.10.0` |
52
52
  | Support model | `verified + preview + experimental` |
53
53
  | Public `verified` matrix | `expo55-rnoh082-ui-stack` |
54
- | Supported input | Managed/CNG Expo projects; bare workflow intake baseline |
54
+ | Supported input | Managed/CNG Expo projects; bare and catalog-out intake classification |
55
55
  | `verified` JS/UI capabilities | `expo-router`, `expo-linking`, `expo-constants`, `react-native-reanimated`, `react-native-svg` |
56
56
  | `preview` native capabilities | `expo-file-system`, `expo-image-picker`, `expo-location`, `expo-camera`, `expo-secure-store`, `expo-asset`, `expo-device`, `expo-clipboard`, `expo-haptics` |
57
57
  | `experimental` capabilities | `expo-notifications`, `react-native-gesture-handler`, `@react-native-async-storage/async-storage`, `react-native-screens`, `react-native-safe-area-context`, `react-native-webview`, `jpush-react-native`, `expo-media-library`, `lottie-react-native`, `@shopify/react-native-skia` |
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  <p>
10
10
  <a href="https://github.com/BlackishGreen33/Expo-Harmony-Toolkit/actions/workflows/ci.yml"><img alt="Checks" src="https://img.shields.io/badge/checks-passing-16a34a?style=flat-square&logo=githubactions&logoColor=white"></a>
11
11
  <a href="./LICENSE"><img alt="License" src="https://img.shields.io/badge/license-MIT-0f766e?style=flat-square"></a>
12
- <a href="https://github.com/BlackishGreen33/Expo-Harmony-Toolkit/releases"><img alt="Version" src="https://img.shields.io/badge/version-v1.9.3-111827?style=flat-square"></a>
12
+ <a href="https://github.com/BlackishGreen33/Expo-Harmony-Toolkit/releases"><img alt="Version" src="https://img.shields.io/badge/version-v1.10.0-111827?style=flat-square"></a>
13
13
  <a href="./docs/support-matrix.md"><img alt="Matrix" src="https://img.shields.io/badge/matrix-expo55--rnoh082--ui--stack-2563eb?style=flat-square"></a>
14
14
  <img alt="Input" src="https://img.shields.io/badge/input-Managed%2FCNG%20%2B%20bare%20intake-059669?style=flat-square">
15
15
  </p>
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
 
26
26
  > [!IMPORTANT]
27
- > `v1.9.3` 延续 `v1.9.2` Wave A 基线,并把 ccnubox 优先的 `react-native-webview`、JPush runtime、`expo-media-library`、`lottie-react-native` `@shopify/react-native-skia` 纳入 Third-party Native Wave B formal experimental onboarding。当前公开承诺仍然收紧为:`latest` 只承诺完整验收的 `verified` 能力,Wave B 不放宽当前 `verified` 边界。
27
+ > `v1.10.0` 冻结 Any-project Intake:任何 Expo 项目进入 `doctor` 后都应得到 `coverageProfile`、明确 `gapCategory` 与有序 `nextActions`。当前公开承诺仍然收紧为:`latest` 只承诺完整验收的 `verified` 能力;v1.10.0 不是 verified 扩容,也不承诺 catalog 外项目都能可靠打包。
28
28
 
29
29
  > [!TIP]
30
30
  > 由于当前公开矩阵内的两套 `@react-native-oh-tpl/*` adapter 依赖以 Git URL + exact commit 形式接入,仓库开发和官方 UI-stack sample 推荐使用 `pnpm install --ignore-scripts`,避免 Git adapter 在 prepare 阶段拉取私有资源而中断安装。
@@ -48,10 +48,10 @@
48
48
  <!-- GENERATED:readme-current-status:start -->
49
49
  | 项目 | 说明 |
50
50
  | --- | --- |
51
- | 当前版本 | `v1.9.3` |
51
+ | 当前版本 | `v1.10.0` |
52
52
  | 支持模型 | `verified + preview + experimental` |
53
53
  | 唯一 `verified` 公开矩阵 | `expo55-rnoh082-ui-stack` |
54
- | 输入范围 | Managed/CNG Expo 项目;bare workflow intake baseline |
54
+ | 输入范围 | Managed/CNG Expo 项目;bare catalog 外项目 intake 分类 |
55
55
  | `verified` JS/UI 能力 | `expo-router`、`expo-linking`、`expo-constants`、`react-native-reanimated`、`react-native-svg` |
56
56
  | `preview` 原生能力 | `expo-file-system`、`expo-image-picker`、`expo-location`、`expo-camera`、`expo-secure-store`、`expo-asset`、`expo-device`、`expo-clipboard`、`expo-haptics` |
57
57
  | `experimental` 能力 | `expo-notifications`、`react-native-gesture-handler`、`@react-native-async-storage/async-storage`、`react-native-screens`、`react-native-safe-area-context`、`react-native-webview`、`jpush-react-native`、`expo-media-library`、`lottie-react-native`、`@shopify/react-native-skia` |
@@ -1,6 +1,6 @@
1
1
  export declare const TOOLKIT_PACKAGE_NAME = "expo-harmony-toolkit";
2
2
  export declare const CLI_NAME = "expo-harmony";
3
- export declare const TOOLKIT_VERSION = "1.9.3";
3
+ export declare const TOOLKIT_VERSION = "1.10.0";
4
4
  export declare const TEMPLATE_VERSION = "rnoh-0.82.29";
5
5
  export declare const RNOH_VERSION = "0.82.29";
6
6
  export declare const RNOH_CLI_VERSION = "0.82.29";
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DESIRED_PACKAGE_SCRIPTS = exports.HARMONY_RUNTIME_PRELUDE_RELATIVE_PATH = exports.HARMONY_ROUTER_ENTRY_FILENAME = exports.STRICT_ENV_EXIT_CODE = exports.STRICT_DOCTOR_EXIT_CODE = exports.DEFAULT_HVIGOR_PLUGIN_FILENAME = exports.PREBUILD_METADATA_FILENAME = exports.TOOLKIT_CONFIG_FILENAME = exports.BUILD_REPORT_FILENAME = exports.ENV_REPORT_FILENAME = exports.DOCTOR_REPORT_FILENAME = exports.MANIFEST_FILENAME = exports.SIGNING_LOCAL_EXAMPLE_FILENAME = exports.SIGNING_LOCAL_FILENAME = exports.GENERATED_SHIMS_DIR = exports.GENERATED_DIR = exports.SUPPORTED_EXPO_SDKS = exports.RNOH_CLI_VERSION = exports.RNOH_VERSION = exports.TEMPLATE_VERSION = exports.TOOLKIT_VERSION = exports.CLI_NAME = exports.TOOLKIT_PACKAGE_NAME = void 0;
4
4
  exports.TOOLKIT_PACKAGE_NAME = 'expo-harmony-toolkit';
5
5
  exports.CLI_NAME = 'expo-harmony';
6
- exports.TOOLKIT_VERSION = '1.9.3';
6
+ exports.TOOLKIT_VERSION = '1.10.0';
7
7
  exports.TEMPLATE_VERSION = 'rnoh-0.82.29';
8
8
  exports.RNOH_VERSION = '0.82.29';
9
9
  exports.RNOH_CLI_VERSION = '0.82.29';
@@ -499,51 +499,44 @@ function buildNextActions(input) {
499
499
  'config.scheme.missing',
500
500
  'config.bundle_script.mismatch',
501
501
  ].includes(issue.code));
502
+ const hasThirdPartyWaveA = dependencies.some((dependency) => THIRD_PARTY_WAVE_A_PACKAGE_NAMES.has(dependency.name));
503
+ const hasThirdPartyWaveB = dependencies.some((dependency) => THIRD_PARTY_WAVE_B_PACKAGE_NAMES.has(dependency.name));
502
504
  if (hasBlockingIssueCode(blockingIssues, 'matrix.expo_sdk.unsupported') ||
503
505
  hasBlockingIssueCode(blockingIssues, 'dependency.version_mismatch') ||
504
506
  hasBlockingIssueCode(blockingIssues, 'dependency.specifier_mismatch') ||
505
507
  hasBlockingIssueCode(blockingIssues, 'dependency.required_missing')) {
506
508
  actions.push(`Align Expo SDK, React Native, RNOH, and validated adapter versions to ${validatedMatrices_1.DEFAULT_VALIDATED_MATRIX_ID}, then rerun \`expo-harmony doctor --project-root . --strict\`.`);
507
509
  }
510
+ if (coverageProfile === 'bare') {
511
+ actions.push('Keep this project on the bare workflow track for now: preserve the native directories, use `expo-harmony doctor --project-root .` for classification, and only claim verified support after bare workflow support lands in the mainline capability catalog.');
512
+ }
513
+ if (hasRouterBlockingIssues) {
514
+ actions.push('Add the missing expo-router peers/plugin/scheme or update the Harmony bundle script to use `expo-harmony bundle`, then rerun doctor before trusting router builds.');
515
+ }
516
+ if (hasBlockingIssueCode(blockingIssues, 'config.native_identifier.missing')) {
517
+ actions.push('Set `android.package` or `ios.bundleIdentifier` in Expo config before expecting a strict Harmony build path.');
518
+ }
508
519
  if (targetTier === 'verified' && hasPreviewCapabilities) {
509
520
  actions.push('Use `expo-harmony doctor --project-root . --target-tier preview` to measure the current preview-capability baseline while keeping `latest` pinned to verified-only releases.');
510
521
  }
511
522
  if (hasPreviewCapabilities) {
512
523
  actions.push('Keep combined sample smoke for regression coverage, but track bundle/debug/device/release evidence separately for each preview capability before promotion.');
513
524
  }
514
- switch (coverageProfile) {
515
- case 'managed-core':
516
- actions.push('Stay on the verified lane: rerun `expo-harmony sync-template --project-root .`, `expo-harmony bundle --project-root .`, and `expo-harmony build-hap --project-root . --mode debug` before claiming release readiness.');
517
- break;
518
- case 'managed-native-heavy':
519
- actions.push('After every native-capability change, rerun `expo-harmony sync-template --project-root .`, `expo-harmony bundle --project-root .`, and `expo-harmony build-hap --project-root . --mode debug` to keep the managed sidecar and preview evidence aligned.');
520
- break;
521
- case 'bare':
522
- actions.push('Keep this project on the bare workflow track for now: preserve the native directories, use `expo-harmony doctor --project-root .` for classification, and only claim verified support after bare workflow support lands in the mainline capability catalog.');
523
- break;
524
- case 'third-party-native-heavy':
525
- if (dependencies.some((dependency) => THIRD_PARTY_WAVE_A_PACKAGE_NAMES.has(dependency.name))) {
526
- actions.push('Keep Third-party Native Wave A on `doctor --target-tier experimental`: pair async-storage and screens with their Harmony adapters, keep safe-area on the toolkit shim, and close device/release evidence before any promotion.');
527
- }
528
- if (dependencies.some((dependency) => THIRD_PARTY_WAVE_B_PACKAGE_NAMES.has(dependency.name))) {
529
- actions.push('Keep Third-party Native Wave B on `doctor --target-tier experimental`: pair ccnubox WebView, media-library, Lottie, and Skia surfaces with their Harmony adapters, keep JPush runtime evidence separate, and require debug/release simulator delivery gates before shipping.');
530
- }
531
- if (!dependencies.some((dependency) => THIRD_PARTY_WAVE_A_PACKAGE_NAMES.has(dependency.name)) &&
532
- !dependencies.some((dependency) => THIRD_PARTY_WAVE_B_PACKAGE_NAMES.has(dependency.name))) {
533
- actions.push('Isolate third-party native packages and onboard them through the mainline capability catalog one by one; start with `react-native-gesture-handler` if it is present, and treat unknown native surfaces as explicit unblockers rather than matrix drift.');
534
- }
535
- break;
536
- }
537
- if (hasRouterBlockingIssues) {
538
- actions.push('Add the missing expo-router peers/plugin/scheme or update the Harmony bundle script to use `expo-harmony bundle`, then rerun doctor before trusting router builds.');
539
- }
540
525
  if (blockingIssues.some((issue) => issue.code === 'dependency.not_allowed' &&
541
526
  (issue.subject === 'react-native-gesture-handler' ||
542
527
  issue.subject === '@react-native-oh-tpl/react-native-gesture-handler'))) {
543
528
  actions.push('Keep `react-native-gesture-handler` on the formal experimental slice until its Harmony adapter path closes device and release evidence.');
544
529
  }
545
- if (hasBlockingIssueCode(blockingIssues, 'config.native_identifier.missing')) {
546
- actions.push('Set `android.package` or `ios.bundleIdentifier` in Expo config before expecting a strict Harmony build path.');
530
+ if (coverageProfile === 'third-party-native-heavy') {
531
+ if (hasThirdPartyWaveA) {
532
+ actions.push('Keep Third-party Native Wave A on `doctor --target-tier experimental`: pair async-storage and screens with their Harmony adapters, keep safe-area on the toolkit shim, and close device/release evidence before any promotion.');
533
+ }
534
+ if (hasThirdPartyWaveB) {
535
+ actions.push('Keep Third-party Native Wave B on `doctor --target-tier experimental`: pair ccnubox WebView, media-library, Lottie, and Skia surfaces with their Harmony adapters, keep JPush runtime evidence separate, and require debug/release simulator delivery gates before shipping.');
536
+ }
537
+ if (!hasThirdPartyWaveA && !hasThirdPartyWaveB) {
538
+ actions.push('Isolate third-party native packages and onboard them through the mainline capability catalog one by one; start with `react-native-gesture-handler` if it is present, and treat unknown native surfaces as explicit unblockers rather than matrix drift.');
539
+ }
547
540
  }
548
541
  if (dependencies.some((dependency) => dependency.buildabilityRisk === 'native-risk')) {
549
542
  actions.push('Inspect unknown native-looking dependencies and either replace them, gate them behind preview work, or onboard them explicitly before promising Harmony portability.');
@@ -551,6 +544,12 @@ function buildNextActions(input) {
551
544
  if (dependencies.some((dependency) => dependency.buildabilityRisk === 'js-only-unknown')) {
552
545
  actions.push('Unknown JavaScript-only packages still sit outside the public matrix; verify bundling manually, but prioritize native gaps first.');
553
546
  }
547
+ if (coverageProfile === 'managed-core') {
548
+ actions.push('Stay on the verified lane: rerun `expo-harmony sync-template --project-root .`, `expo-harmony bundle --project-root .`, and `expo-harmony build-hap --project-root . --mode debug` before claiming release readiness.');
549
+ }
550
+ if (coverageProfile === 'managed-native-heavy') {
551
+ actions.push('After every native-capability change, rerun `expo-harmony sync-template --project-root .`, `expo-harmony bundle --project-root .`, and `expo-harmony build-hap --project-root . --mode debug` to keep the managed sidecar and preview evidence aligned.');
552
+ }
554
553
  return dedupeStrings(actions);
555
554
  }
556
555
  function hasBlockingIssueCode(issues, code) {
@@ -8,4 +8,4 @@ export declare const SUPPORTING_SAMPLE_PATHS: readonly ["examples/official-app-s
8
8
  export declare const VERIFIED_JS_UI_CAPABILITY_NAMES: readonly ["expo-router", "expo-linking", "expo-constants", ...("react-native-reanimated" | "react-native-svg")[]];
9
9
  export declare const PREVIEW_CAPABILITY_DEFINITIONS: import("..").CapabilityDefinition[];
10
10
  export declare const EXPERIMENTAL_CAPABILITY_NAMES: readonly string[];
11
- export declare const PUBLIC_CURRENT_VERSION = "1.9.3";
11
+ export declare const PUBLIC_CURRENT_VERSION = "1.10.0";
@@ -35,8 +35,8 @@ function renderReadmeCurrentStatus(locale) {
35
35
  ? `\`latest\` = ${publicDocs_1.PUBLIC_RELEASE_TRACKS.latest};\`next\` = ${publicDocs_1.PUBLIC_RELEASE_TRACKS.next}`
36
36
  : `\`latest\` = fully accepted \`verified\` only; \`next\` = ${publicDocs_1.PUBLIC_RELEASE_TRACKS.next}`;
37
37
  const inputValue = locale === 'zh'
38
- ? 'Managed/CNG Expo 项目;bare workflow intake baseline'
39
- : 'Managed/CNG Expo projects; bare workflow intake baseline';
38
+ ? 'Managed/CNG Expo 项目;bare catalog 外项目 intake 分类'
39
+ : 'Managed/CNG Expo projects; bare and catalog-out intake classification';
40
40
  const listJoiner = locale === 'zh' ? '、' : ', ';
41
41
  return [
42
42
  `| ${headers[0]} | ${headers[1]} |`,
package/docs/cli-build.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CLI 构建指南
2
2
 
3
- `v1.9.3` 延续 `verified + preview + experimental` 支持分层,把 ccnubox-first Third-party Native Wave B 纳入 formal experimental onboarding;`expo55-rnoh082-ui-stack` 仍是唯一 verified 矩阵。
3
+ `v1.10.0` 延续 `verified + preview + experimental` 支持分层,并冻结 Any-project Intake:`doctor` 必须能分类任意 Expo 项目、标出 blocker 类型并给出有序下一步;`expo55-rnoh082-ui-stack` 仍是唯一 verified 矩阵。
4
4
 
5
5
  CLI 命令集合不变:
6
6
 
package/docs/roadmap.md CHANGED
@@ -204,7 +204,7 @@
204
204
 
205
205
  目标日期:`2026-10-31`
206
206
 
207
- 状态:implementation baseline complete;simulator delivery gate pending target;device / release evidence carryover。
207
+ 状态:implementation baseline complete;simulator delivery gate complete on ccnubox_rn;device / release evidence carryover。
208
208
 
209
209
  目标:扩大第三方 native 覆盖,并把 `v1.9.0` 建好的最小 regression farm 扩容成持续回归面。
210
210
 
@@ -229,6 +229,8 @@
229
229
 
230
230
  目标日期:`2026-11-15`
231
231
 
232
+ 状态:`implementation target`,本阶段首个正式发布版本直接使用 `1.10.0` / `v1.10.0`;发布动作另行执行。
233
+
232
234
  目标:先冻结“任何 Expo 项目”入口面的产品故事,确保不存在无法分类、无法给下一步、无法明确阻断原因的项目。
233
235
 
234
236
  - `doctor` 对任意 Expo 项目必须满足:
@@ -238,6 +240,14 @@
238
240
  - roadmap / support matrix / acceptance board 与实际 catalog 保持零漂移
239
241
  - 对外叙事从“更多项目开始进入主线”升级成“任何项目都有明确处理路径”
240
242
 
243
+ Acceptance checklist:
244
+
245
+ - 新增 `fixtures/v110-*` 覆盖 catalog managed、bare、unknown JS-only、unknown native-looking、mixed intake
246
+ - `nextActions[]` 固定按版本矩阵问题 -> 项目形态问题 -> native blocker -> unknown JS/native 依赖 -> build gate 排序
247
+ - `acceptance/v1.10.0-acceptance.md` 记录 repo-only gate 与边界
248
+ - 不提升任何 capability 到 `verified`
249
+ - 不要求真机 device evidence
250
+
241
251
  ### v1.11.0 Final Blocker Burn-down
242
252
 
243
253
  目标日期:`2026-11-30`
@@ -1,6 +1,6 @@
1
- # v1.9 支持矩阵
1
+ # v1.10 支持矩阵
2
2
 
3
- `v1.9` 继续采用 tiered support model,并把“层级”与“晋升距离”拆开表达:
3
+ `v1.10` 继续采用 tiered support model,并把“层级”“晋升距离”与“intake 分类”拆开表达:
4
4
 
5
5
  - `supportTier` 表示公开承诺层级
6
6
  - `runtimeMode` 表示当前运行时接入形态:`shim`、`adapter`、`verified`
@@ -14,7 +14,8 @@
14
14
  - bare workflow 与第三方 native package 不再被描述成“收官后才考虑的另一条 extension 终局”
15
15
  - `v2.0.0` 本身被定义成“任何 Expo 项目都能可靠打包成鸿蒙 App”的目标版本
16
16
  - 但当前公开承诺依旧没有放宽;它们只是进入同一主线 backlog,而不是已经进入 `verified`
17
- - `v1.9.3` 新增的是 ccnubox-first Third-party Native Wave B formal experimental onboarding,不是 verified 扩容
17
+ - `v1.10.0` 新增的是 Any-project Intake Freeze:任何 Expo 项目进入 `doctor` 后都应有分类、明确 blocker 类型与有序 `nextActions`
18
+ - 这不是 verified 扩容;`latest` 仍只承诺完整验收的 `verified` 能力,catalog 外项目只承诺可诊断路径
18
19
 
19
20
  `doctor --strict` 继续只代表 `verified`。
20
21
 
@@ -208,7 +209,7 @@ expo-harmony doctor --project-root /path/to/app --target-tier preview
208
209
  - `runtimeMode !== verified`,表示即使已有部分证据,也仍不属于正式承诺
209
210
  - `coverageProfile=bare`,表示当前项目已落入 bare workflow 主线规划,但不等于当前 matrix 已正式支持 bare
210
211
  - `gapCategory=third-party-native-gap`,表示问题不应再被模糊描述成普通 matrix drift,而是主线 blocker
211
- - `nextActions[]` 的顺序即 toolkit 当前建议的处理顺序
212
+ - `nextActions[]` 的顺序即 toolkit 当前建议的处理顺序:版本矩阵问题 -> 项目形态问题 -> native blocker -> unknown JS/native 依赖 -> build gate
212
213
 
213
214
  当前公开阻断 issue code 继续包括:
214
215
 
@@ -247,7 +248,7 @@ toolkit 受管的核心产物仍包括:
247
248
 
248
249
  ## Release Tracks
249
250
 
250
- 从 `v1.8` 开始,发布节奏按双轨设计;`v1.9.0` 继续沿用同一规则:
251
+ 从 `v1.8` 开始,发布节奏按双轨设计;`v1.10.0` 继续沿用同一规则:
251
252
 
252
253
  <!-- GENERATED:support-matrix-release-tracks:start -->
253
254
  - `latest`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-harmony-toolkit",
3
- "version": "1.9.3",
3
+ "version": "1.10.0",
4
4
  "description": "面向 Managed/CNG Expo 项目的 HarmonyOS 迁移、准入检查与 UI-stack 构建工具链",
5
5
  "main": "app.plugin.js",
6
6
  "types": "build/index.d.ts",