cj-tauri 1.1.2 → 2.1.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.
Files changed (162) hide show
  1. package/README.md +137 -77
  2. package/bin/cj-tauri.js +287 -287
  3. package/cjpm.toml +13 -2
  4. package/cli/cjpm.toml +22 -13
  5. package/cli/src/doctor.cj +308 -304
  6. package/cli/src/main.cj +129 -121
  7. package/cli/src/manifest.cj +632 -0
  8. package/cli/src/manifest_test.cj +87 -0
  9. package/cli/src/project.cj +770 -754
  10. package/cli/src/resolve.cj +348 -348
  11. package/cli/src/scaffold.cj +46 -38
  12. package/cli/src/sync.cj +526 -0
  13. package/cli/src/util.cj +9 -0
  14. package/cli/templates/app/README.md +30 -59
  15. package/cli/templates/app/{ui → assets/ui}/index.html +2 -0
  16. package/cli/templates/app/cj-tauri.toml +32 -0
  17. package/cli/templates/app/cjpm.toml +21 -4
  18. package/cli/templates/app/src/main.cj +29 -16
  19. package/cli/templates/app-react/README.md +34 -45
  20. package/cli/templates/app-react/{ui → assets/ui}/index.html +25 -25
  21. package/cli/templates/app-react/{ui → assets/ui}/src/App.css +67 -67
  22. package/cli/templates/app-react/{ui → assets/ui}/src/App.jsx +124 -124
  23. package/cli/templates/app-react/cj-tauri.toml +33 -0
  24. package/cli/templates/app-react/cjpm.toml +21 -4
  25. package/cli/templates/app-react/src/main.cj +18 -29
  26. package/cli/templates/app-vue/README.md +34 -38
  27. package/cli/templates/app-vue/{ui → assets/ui}/index.html +25 -25
  28. package/cli/templates/app-vue/{ui → assets/ui}/src/App.vue +176 -176
  29. package/cli/templates/app-vue/cj-tauri.toml +33 -0
  30. package/cli/templates/app-vue/cjpm.toml +21 -4
  31. package/cli/templates/app-vue/src/main.cj +18 -29
  32. package/cli/templates/{ohos-pc → ohos-skeleton}/README.md +5 -0
  33. package/cli/templates/{ohos-pc → ohos-skeleton}/build-hap.sh +15 -0
  34. package/cli/templates/{ohos-pc → ohos-skeleton}/entry/cjpm.toml +8 -0
  35. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/dialog_host.cj +217 -0
  36. package/cli/templates/ohos-skeleton/entry/src/main/cangjie/index.cj +527 -0
  37. package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/module.json5 +8 -0
  38. package/native/build_win.bat +62 -62
  39. package/native/core/bridge_core.c +1681 -1626
  40. package/native/core/bridge_core.h +675 -618
  41. package/native/core/bridge_js.h +108 -108
  42. package/native/platforms/harmonyos/README.md +115 -6
  43. package/native/platforms/linux/bridge_linux.c +2787 -2485
  44. package/native/platforms/windows/bridge_win.c +3740 -3248
  45. package/native/tests/gtk_threading_probe.c +143 -143
  46. package/native/tests/test_bridge_core.c +1339 -1228
  47. package/package.json +53 -51
  48. package/prebuilt/linux-x64/cj-tauri +0 -0
  49. package/src/api_system.cj +67 -67
  50. package/src/app.cj +325 -940
  51. package/src/app_events.cj +166 -0
  52. package/src/app_host_ops.cj +287 -0
  53. package/src/app_run.cj +283 -0
  54. package/src/app_spec.cj +76 -0
  55. package/src/arkweb_menu.cj +216 -0
  56. package/src/arkweb_script.cj +0 -12
  57. package/src/capability.cj +409 -409
  58. package/src/clipboard_bridge.cj +178 -0
  59. package/src/dialog_spec.cj +79 -0
  60. package/src/dragdrop.cj +26 -26
  61. package/src/embedded_assets.cj +98 -98
  62. package/src/host.cj +752 -604
  63. package/src/host_arkweb.cj +201 -17
  64. package/src/host_webkit.cj +663 -548
  65. package/src/host_webview2.cj +663 -548
  66. package/src/hotkey.cj +66 -66
  67. package/src/ipc_hub.cj +337 -337
  68. package/src/ipc_message.cj +286 -286
  69. package/src/launch.cj +62 -0
  70. package/src/logging.cj +127 -127
  71. package/src/menu.cj +197 -197
  72. package/src/platform/platform_app_context.cj +77 -0
  73. package/src/platform/platform_assets.cj +33 -0
  74. package/src/platform/platform_discover.cj +176 -0
  75. package/src/platform/platform_env.cj +29 -0
  76. package/src/platform/platform_feature.cj +31 -0
  77. package/src/platform/platform_page_source.cj +87 -0
  78. package/src/platform/platform_target_info.cj +32 -0
  79. package/src/platform_host_provider.cj +87 -0
  80. package/src/plugin.cj +333 -299
  81. package/src/plugins/clipboard/plugin_clipboard.cj +152 -144
  82. package/src/plugins/dialog/plugin_dialog.cj +209 -209
  83. package/src/plugins/fs/plugin_fs.cj +105 -1
  84. package/src/plugins/http/http_backend.cj +131 -0
  85. package/src/plugins/http/http_desktop.cj +195 -0
  86. package/src/plugins/http/http_ohos.cj +204 -0
  87. package/src/plugins/http/plugin_http.cj +310 -459
  88. package/src/plugins/log/plugin_log.cj +105 -105
  89. package/src/plugins/menu/plugin_menu.cj +8 -0
  90. package/src/plugins/notification/plugin_notification.cj +154 -146
  91. package/src/plugins/serial/plugin_serial.cj +17 -1
  92. package/src/plugins/serial/serial_bridge.cj +9 -1
  93. package/src/plugins/serial/serial_manager_ohos.cj +92 -0
  94. package/src/plugins/serial/serial_ohos.cj +529 -0
  95. package/src/plugins/shell/plugin_shell.cj +29 -1
  96. package/src/plugins/sqlite/plugin_sqlite.cj +8 -0
  97. package/src/plugins/ws/plugin_ws.cj +488 -470
  98. package/src/process_hidden.cj +174 -174
  99. package/src/scope.cj +391 -391
  100. package/src/shell_event.cj +69 -69
  101. package/src/tests/app_spec_test.cj +126 -0
  102. package/src/tests/capability_test.cj +243 -243
  103. package/src/tests/dialog_spec_test.cj +73 -0
  104. package/src/tests/fake_host.cj +201 -186
  105. package/src/tests/ipc_hub_test.cj +487 -487
  106. package/src/tests/logging_test.cj +62 -62
  107. package/src/tests/platform_contract_test.cj +251 -0
  108. package/src/tests/plugin_clipboard_test.cj +222 -222
  109. package/src/tests/plugin_dialog_test.cj +237 -237
  110. package/src/tests/plugin_fs_test.cj +207 -0
  111. package/src/tests/plugin_http_test.cj +124 -124
  112. package/src/tests/plugin_notification_test.cj +205 -205
  113. package/src/tests/plugin_serial_test.cj +48 -0
  114. package/src/tests/plugin_test.cj +66 -3
  115. package/src/tests/plugin_ws_test.cj +40 -40
  116. package/src/tests/process_hidden_test.cj +129 -129
  117. package/src/tests/scope_test.cj +350 -350
  118. package/src/tests/system_host_test.cj +99 -81
  119. package/src/tests/urlutil_test.cj +53 -53
  120. package/src/tests/version_test.cj +75 -75
  121. package/src/tests/window_registry_test.cj +123 -123
  122. package/src/tray.cj +90 -90
  123. package/src/urlutil.cj +159 -159
  124. package/src/version.cj +44 -44
  125. package/src/window.cj +51 -51
  126. package/src/window_registry.cj +116 -116
  127. package/cli/templates/ohos-pc/entry/src/main/cangjie/index.cj +0 -167
  128. package/prebuilt/win32-x64/cj-tauri.exe +0 -0
  129. package/src/host_factory.cj +0 -48
  130. /package/cli/templates/app/{capabilities → assets/capabilities}/default.json +0 -0
  131. /package/cli/templates/app-react/{capabilities → assets/capabilities}/default.json +0 -0
  132. /package/cli/templates/app-react/{ui → assets/ui}/package.json +0 -0
  133. /package/cli/templates/app-react/{ui → assets/ui}/src/main.jsx +0 -0
  134. /package/cli/templates/app-react/{ui → assets/ui}/vite.config.js +0 -0
  135. /package/cli/templates/app-vue/{capabilities → assets/capabilities}/default.json +0 -0
  136. /package/cli/templates/app-vue/{ui → assets/ui}/package.json +0 -0
  137. /package/cli/templates/app-vue/{ui → assets/ui}/src/main.js +0 -0
  138. /package/cli/templates/app-vue/{ui → assets/ui}/vite.config.js +0 -0
  139. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/app.json5 +0 -0
  140. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/element/string.json +0 -0
  141. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/media/background.png +0 -0
  142. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/media/foreground.png +0 -0
  143. /package/cli/templates/{ohos-pc → ohos-skeleton}/AppScope/resources/base/media/layered_image.json +0 -0
  144. /package/cli/templates/{ohos-pc → ohos-skeleton}/build-profile.json5 +0 -0
  145. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/build-profile.json5 +0 -0
  146. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/hvigorfile.ts +0 -0
  147. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/oh-package.json5 +0 -0
  148. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/cangjie/ability_stage.cj +0 -0
  149. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/cangjie/app_host.cj +0 -0
  150. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/cangjie/main_ability.cj +0 -0
  151. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/element/color.json +0 -0
  152. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/element/string.json +0 -0
  153. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/background.png +0 -0
  154. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/foreground.png +0 -0
  155. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/layered_image.json +0 -0
  156. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/media/startIcon.png +0 -0
  157. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/base/profile/main_pages.json +0 -0
  158. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/rawfile/capabilities.json +0 -0
  159. /package/cli/templates/{ohos-pc → ohos-skeleton}/entry/src/main/resources/rawfile/index.html +0 -0
  160. /package/cli/templates/{ohos-pc → ohos-skeleton}/hvigor/hvigor-config.json5 +0 -0
  161. /package/cli/templates/{ohos-pc → ohos-skeleton}/hvigorfile.ts +0 -0
  162. /package/cli/templates/{ohos-pc → ohos-skeleton}/oh-package.json5 +0 -0
package/README.md CHANGED
@@ -1,78 +1,112 @@
1
- # cj-tauri
2
-
3
- 用[仓颉语言](https://cangjie-lang.cn)写桌面应用的脚手架 CLI——把 Tauri 的三件套带到仓颉:
4
- 仓颉后端(静态编译)+ 系统 WebView 前端(HTML/CSS/JS),三件套与 Tauri 一致 ——
5
- WebView 宿主、IPC 双向桥(`invoke` / `resolve` / `event`)、能力安全模型(capability 白名单)。
6
-
7
- - 仓库与完整文档:<https://atomgit.com/qq8864/cj-tauri>
8
- - 当前状态:**Windows(WebView2)、Linux(WebKitGTK)与鸿蒙 PC(ArkWeb)均已实机跑通**
9
-
10
- ## 前置条件:仓颉 SDK
11
-
12
- **这个包不替代仓颉 SDK**。应用后端就是仓颉代码,`cj-tauri dev` / `build` 要调用 SDK 里的 `cjc` / `cjpm`
13
- 把你的应用编译出来。所以请先装 SDK(验证版本 **1.2.0**,含 **stdx**),并让本包能找到它:
14
-
15
- ```bash
16
- # Linux / macOS
17
- export CANGJIE_HOME=/opt/cangjie/cangjie
18
-
19
- # Windows cmd
20
- set CANGJIE_HOME=D:\Program Files (x86)\Cangjie
21
- ```
22
-
23
- 不设 `CANGJIE_HOME` 时,本包会探测常见安装位置(Windows `D:\Program Files (x86)\Cangjie`、
24
- Linux `/opt/cangjie/cangjie`)。装好后自检:
25
-
26
- ```bash
27
- npx cj-tauri info # 打印框架 / 项目 / stdx / SDK / cjpm / C 桥 的解析结果
28
- ```
29
-
30
- 没装 SDK 时本包会直接给出提示与安装说明,而不是抛一句 `cjpm: command not found`。
31
- 另外 `npx cj-tauri --version` 不需要 SDK 也能查版本。
32
-
33
- ## 用法
34
-
35
- ```bash
36
- npx cj-tauri create myapp # 创建项目(默认模板:内联 HTML,零 Node)
37
- cd myapp
38
- npx cj-tauri dev # 构建 C 桥 + cjpm build + 启动窗口
39
-
40
- npx cj-tauri create myapp-vue --template vue # Vue 3 + Vite
41
- npx cj-tauri create myapp-react --template react # React 18 + Vite
42
-
43
- npx cj-tauri create myohos --template ohos # 鸿蒙 PC(2in1)工程:ArkWeb 宿主 + build-hap.sh
44
- npx cj-tauri create myohos --template ohos --bundle com.example.myapp --label "我的应用"
45
-
46
- npm i -g cj-tauri # 也可以全局安装,之后直接用 cj-tauri <子命令>
47
- ```
48
-
49
- | 子命令 | 作用 |
50
- |---|---|
51
- | `create <项目名> [--template app\|vue\|react\|ohos]` | 生成工程(桌面模板:`src/` + `ui/` + `capabilities/` + `cjpm.toml`;`ohos` 见下一节) |
52
- | `dev` | 构建 C 桥 + `cjpm build` + 启动应用;Vite 模板会接管 dev server(HMR);鸿蒙工程转交 `build-hap.sh` |
53
- | `build` | 构建 C 桥 + `cjpm build`;鸿蒙工程转交 `build-hap.sh` |
54
- | `run` | 运行已构建产物;鸿蒙工程转交 `build-hap.sh --install`(构建 + 装机 + 启动) |
55
- | `info` | 环境自检(排障先跑它) |
56
- | `help` | 帮助 |
57
-
1
+ # cj-tauri
2
+
3
+ 用[仓颉语言](https://cangjie-lang.cn)写桌面应用的脚手架 CLI——把 Tauri 的三件套带到仓颉:
4
+ 仓颉后端(静态编译)+ 系统 WebView 前端(HTML/CSS/JS),三件套与 Tauri 一致 ——
5
+ WebView 宿主、IPC 双向桥(`invoke` / `resolve` / `event`)、能力安全模型(capability 白名单)。
6
+
7
+ - 仓库与完整文档:<https://atomgit.com/qq8864/cj-tauri>
8
+ - 当前版本:**2.1.0**(本版新增:单窗口多 WebView 内嵌视图与 ai-chat 网页版标签页、`fs:mkdir/rename/copy/stat` 四条命令、
9
+ `http` / `sqlite` / `serial` 鸿蒙落地(真机取证)、`system:host` 补通知能力位;详见 CHANGELOG)
10
+ - 当前状态:**Windows(WebView2)、Linux(WebKitGTK)与鸿蒙 PC(ArkWeb)均已实机跑通**,
11
+ 鸿蒙侧菜单能力位与 fs/mqtt/redis/sqlite/store/http 真机取证通过
12
+
13
+ ## 前置条件:仓颉 SDK
14
+
15
+ **这个包不替代仓颉 SDK**。应用后端就是仓颉代码,`cj-tauri dev` / `build` 要调用 SDK 里的 `cjc` / `cjpm`
16
+ 把你的应用编译出来。所以请先装 SDK(验证版本 **1.2.0**,含 **stdx**),并让本包能找到它:
17
+
18
+ ```bash
19
+ # Linux
20
+ export CANGJIE_HOME=/opt/cangjie/cangjie
21
+
22
+ # Windows cmd
23
+ set CANGJIE_HOME=D:\Program Files (x86)\Cangjie
24
+ ```
25
+
26
+ 不设 `CANGJIE_HOME` 时,本包会探测常见安装位置(Windows `D:\Program Files (x86)\Cangjie`、
27
+ Linux `/opt/cangjie/cangjie`)。另外两个变量视情况给:
28
+
29
+ | 变量 | 什么时候需要 |
30
+ |---|---|
31
+ | `CJ_TAURI_ROOT` | 不在 cj-tauri 仓库内运行、又找不到框架根目录时(`create` 要把框架路径写进工程) |
32
+ | `CANGJIE_STDX` | 应用的 `cjpm.toml` 用 `${CANGJIE_STDX}` 展开 stdx 路径;本包会从框架/工程的 toml 里探测,探不到就照此变量 |
33
+ | `CANGJIE_STDX_OHOS` | 只在构建鸿蒙工程时用(鸿蒙版 stdx,`build-hap.sh` 按它找动态库) |
34
+
35
+ 装好后自检:
36
+
37
+ ```bash
38
+ npx cj-tauri info # 打印框架 / 项目 / stdx / SDK / cjpm / C 桥 的解析结果
39
+ ```
40
+
41
+ 没装 SDK 时本包会直接给出提示与安装说明,而不是抛一句 `cjpm: command not found`。
42
+ 另外 `npx cj-tauri --version` 不需要 SDK 也能查版本。
43
+
44
+ ## 用法
45
+
46
+ ```bash
47
+ npx cj-tauri create myapp --template app # 内联 HTML,零 Node(缺省模板)
48
+ cd myapp
49
+ npx cj-tauri sync # 按清单派生 targets/ 骨架(首次;重跑幂等)
50
+ npx cj-tauri dev # 构建 C 桥 + cjpm build + 启动窗口
51
+
52
+ npx cj-tauri create myapp-vue --template vue # Vue 3 + Vite(前端工程在 assets/ui/)
53
+ npx cj-tauri create myapp-react --template react # React 18 + Vite
54
+
55
+ npx cj-tauri create myohos --template ohos # 鸿蒙 PC:同一份业务代码 + targets/ohos
56
+ npx cj-tauri create myohos --template ohos --bundle com.example.myapp --label "我的应用"
57
+
58
+ npm i -g cj-tauri # 也可以全局安装,之后直接用 cj-tauri <子命令>
59
+ ```
60
+
61
+ **一份业务代码,骨架按目标派生**——`create` 只生成清单与业务侧,平台骨架是 `sync` 的产物:
62
+
63
+ ```
64
+ myapp/
65
+ ├── cj-tauri.toml # 应用清单——单一真相(id/version/窗口/资产/能力目录)
66
+ ├── cjpm.toml # 业务包(static 库;骨架以 path 依赖引用)
67
+ ├── src/main.cj # 业务装配点 build(): AppSpec(零平台知识)
68
+ ├── assets/
69
+ │ ├── ui/index.html # 前端页面(任意 Web 技术栈)
70
+ │ └── capabilities/default.json # 能力白名单(命令 / 事件 / 权限集)
71
+ └── targets/ # cj-tauri sync 生成(勿手改;check 判漂移)
72
+ ├── desktop/ # 桌面可执行(launcher 调 build())
73
+ └── ohos/ # 鸿蒙 hap 工程(DevEco + build-hap.sh)
74
+ ```
75
+
76
+ | 子命令 | 作用 |
77
+ |---|---|
78
+ | `create <项目名> [--template app\|vue\|react\|ohos]` | 生成统一工程(清单 + `src/` + `assets/`);`--bundle` / `--label` 只对 `ohos` 模板有意义,缺省由项目名推导 |
79
+ | `sync [desktop\|ohos]` | 按清单派生 `targets/` 骨架(缺省两端都派生;幂等重跑) |
80
+ | `dev` | 构建 C 桥 + `cjpm build` + 启动应用;Vite 模板会接管 dev server(HMR) |
81
+ | `build` | 构建 C 桥 + `cjpm build`;鸿蒙端在 `targets/ohos` 里 `bash build-hap.sh` |
82
+ | `run` | 运行已构建产物;鸿蒙端 `bash build-hap.sh --install`(构建 + 装机 + 拉起) |
83
+ | `check` | 校验 `cj-tauri.toml`(id / 窗口 / 资产存在)+ `targets/` 骨架漂移 + 插件三方比对 |
84
+ | `info [--json]` | 环境自检(排障先跑它);`--json` 只输出插件清单,机器可读 |
85
+ | `doctor` | 环境自检逐行给结论(每条自带「缺了就怎么办」) |
86
+ | `help` | 帮助 |
87
+
58
88
  ## 鸿蒙 PC(`--template ohos`)
59
89
 
60
90
  同一套框架换个宿主:桌面用 WebView2 / WebKitGTK,鸿蒙 PC 用 **ArkWeb**,上层页面、命令层、能力校验不用改。
91
+ `--template ohos` 生成的仍是那种**统一工程**(`cj-tauri.toml` + `src/` + `assets/`),只是清单里带鸿蒙端信息
92
+ (`[app] id` 就是 `bundleName`);DevEco 工程是 `sync` 的产物,落在 `targets/ohos/`:
61
93
 
62
94
  ```bash
63
- npx cj-tauri create myohos --template ohos
95
+ npx cj-tauri create myohos --template ohos --bundle com.example.myapp --label "我的应用"
64
96
  cd myohos
65
- bash build-hap.sh --install # 构建 hap + hdc 装机 + aa start;等价于 npx cj-tauri run
97
+ npx cj-tauri sync ohos # 派生 targets/ohos(DevEco 骨架 + rawfile 里的页面与能力清单)
98
+ cd targets/ohos
99
+ bash build-hap.sh --install # 构建 hap + hdc 装机 + aa start
66
100
  ```
67
101
 
68
- 生成的是标准 DevEco 工程(`entry/` + `AppScope/` + `build-profile.json5` + `hvigorfile.ts`),
102
+ `targets/ohos/` 是标准 DevEco 工程(`entry/` + `AppScope/` + `build-profile.json5` + `hvigorfile.ts`),
69
103
  鸿蒙相关的那层很薄:
70
104
 
71
105
  | 路径 | 作用 |
72
106
  |---|---|
73
107
  | `entry/src/main/cangjie/main_ability.cj` | UIAbility:`ArkWebRuntime.configure(filesDir)` → 非 UI 线程 `spawn { run() }` → 等宿主登记再 `loadContent` |
74
- | `entry/src/main/cangjie/index.cj` | `@Component` 的 ArkWeb 宿主 + 双向桥(**必须住应用模块**,框架包引用 ArkUI 会启动即崩) |
75
- | `entry/src/main/resources/rawfile/` | `index.html`(页面真文件)与 `capabilities.json`(能力清单) |
108
+ | `entry/src/main/cangjie/app_host.cj` | `@Component` 的 ArkWeb 宿主 + 双向桥(**必须住应用模块**,框架包引用 ArkUI 会启动即崩);调你 `assets/` 里那份业务 `build()` |
109
+ | `entry/src/main/resources/rawfile/` | `index.html` 与能力清单(从 `assets/` 拷进来的真文件) |
76
110
  | `build-hap.sh` | 唯一构建入口:探测 DevEco / stdx、`--no-daemon` 跑 hvigor、可选 `--install` |
77
111
 
78
112
  前置两件事:
@@ -87,7 +121,8 @@ bash build-hap.sh --install # 构建 hap + hdc 装机 + aa start;等价
87
121
 
88
122
  已知限制:签名要在 DevEco 里配(命令行不做自动签名,换 `bundleName` 需重新签);同一份调试签名下两个
89
123
  工程会互相顶掉安装位;单窗口、暂无原生对话框(那两条能力位如实返回 0);没有可用的 C 桥,
90
- `launchHidden` / 串口 / 托盘这类宿主能力在鸿蒙上不提供。
124
+ `launchHidden` / 串口 / 托盘这类宿主能力在鸿蒙上不提供。改完 `assets/` 里的页面或能力清单要重跑
125
+ `cj-tauri sync ohos`(`targets/` 是生成物,`check` 会报漂移)。
91
126
 
92
127
  真机上怎么自证它通了(hilog,`CjTauri` tag):
93
128
 
@@ -98,17 +133,42 @@ page begin label=main
98
133
  main window keeps system default 2090x1394 px at density 190% on screen 3120x2080
99
134
  ```
100
135
 
101
- ## 这个包装层做了什么
102
-
103
- - **跨平台入口**:Windows / Linux / Git Bash 都是同一条 `cj-tauri` 命令,不再分 `.bat` 与 `.sh`;
104
- - **环境自检**:`cjpm` 与 SDK 运行时库的定位、`PATH` / `LD_LIBRARY_PATH` 的拼装都在这里完成;
105
- - **CLI 本体的获取**:优先用包内预编译二进制(`prebuilt/<平台-架构>/`),没有则把 CLI 源码拷到
106
- `~/.cache/cj-tauri/<版本>/` 下用本机 `cjpm build` 一次并缓存 —— 不往安装目录写产物,避免全局安装只读;
107
- - **数据目录**:Linux/macOS 用 `$XDG_CACHE_HOME/cj-tauri`(默认 `~/.cache/cj-tauri`),Windows 用 `%LOCALAPPDATA%\cj-tauri`。
108
-
109
- 已知限制:首次 `dev` / `build` 会把 C 桥构建到**框架目录的 `native/`** 下(应用 `cjpm.toml` 的
110
- 链接参数指向那里),所以包安装目录需要可写;如果装在只读路径下,请改用仓库内运行方式。
111
-
112
- ## License
113
-
114
- [MIT](https://atomgit.com/qq8864/cj-tauri/blob/main/LICENSE) © 2026 yangyongzhen
136
+ ## 这个包装层做了什么
137
+
138
+ - **跨平台入口**:Windows / Linux / Git Bash 都是同一条 `cj-tauri` 命令,不再分 `.bat` 与 `.sh`;
139
+ - **环境自检**:`cjpm` 与 SDK 运行时库的定位、`PATH` / `LD_LIBRARY_PATH` 的拼装都在这里完成;
140
+ - **CLI 本体的获取**:优先用包内预编译二进制(`prebuilt/<平台-架构>/`),没有则把 CLI 源码拷到
141
+ `~/.cache/cj-tauri/<版本>/` 下用本机 `cjpm build` 一次并缓存 —— 不往安装目录写产物,避免全局安装只读;
142
+ - **数据目录**:Linux 用 `$XDG_CACHE_HOME/cj-tauri`(默认 `~/.cache/cj-tauri`),Windows 用 `%LOCALAPPDATA%\cj-tauri`。
143
+
144
+ 已知限制:首次 `dev` / `build` 会把 C 桥构建到**框架目录的 `native/`** 下(应用 `cjpm.toml` 的
145
+ 链接参数指向那里),所以包安装目录需要可写;如果装在只读路径下,请改用仓库内运行方式。
146
+
147
+ ## 2.1.0 变更
148
+
149
+ - **新增**:单窗口多 WebView 内嵌视图(`webview:*`,一个窗口内挂多个页面视图、LRU 上限 4 枚,
150
+ ai-chat 的九家网页版标签页即由它驱动);`fs:mkdir` / `fs:rename` / `fs:copy` / `fs:stat` 四条命令
151
+ (带 overwrite 与双路径 scope 校验);`http` 插件鸿蒙传输层(走 `ohos.net.http` 系统栈,https 恢复可用);
152
+ `sqlite` / `serial` 鸿蒙落地;`system:host` 补 `notification` 能力位;CLI `doctor` 补 SDK 下载指路。
153
+ - **修复**:Linux C 桥 `duplicate member 'h'` 编译错误(内嵌视图的几何字段与宿主指针撞名)、
154
+ `ai-chat` 收起侧栏后内嵌视图不跟随变宽、鸿蒙宿主能力位文档口径(菜单位已真机取证,不再是全 0)。
155
+ - 鸿蒙侧真机取证:`fs` / `mqtt` / `redis` / `sqlite` / `store` / `http` 与菜单能力位。
156
+
157
+ 完整变更见仓库的 `CHANGELOG.md` 的 `[2.1.0] - 2026-10-25`。
158
+
159
+ ## 2.0.0 变更
160
+
161
+ - **不兼容**:删除已失效的公开 API `setHostFactory` / `requireInjectedHost`(框架侧单槽宿主注入)。
162
+ 源码里仍在调用它们的应用会编译失败——那些调用本来也不生效(`requireInjectedHost` 没有任何调用方)。
163
+ 多宿主注入走 `registerHost(HostProvider)`(带优先级),鸿蒙宿主已内置。
164
+ - **修复**:`sync` 生成的工程在 Windows 上编不过(TOML 路径保留反斜杠触发 `errLexEscape`、鸿蒙 entry 的
165
+ `compile-option` 内层引号未转义、生成源码里 `url=\"…\"` 少一层转义);`cj-tauri check` 的三方比对在
166
+ Windows 上因产物名 `main.exe` 恒被跳过;示例 `modbus-poll` 缺串口插件 import。
167
+ - **门禁**:版本校验从五处扩到六处(新增官网 `website/index.html`),并给与 `docs/` 同源的图片 / 图
168
+ 加上了逐字节比对——官网是独立拷贝、此前不在门禁里,正是它漏更的根因。
169
+
170
+ 完整变更见仓库的 `CHANGELOG.md` 的 `[2.0.0] - 2026-10-23`。
171
+
172
+ ## License
173
+
174
+ [MIT](https://atomgit.com/qq8864/cj-tauri/blob/main/LICENSE) © 2026 yangyongzhen