@heybox/hb-sdk 0.7.4-alpha.5 → 0.7.4
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/CHANGELOG.md +48 -0
- package/README.md +2 -0
- package/dist/cli-chunks/{build-C-ufarA6.cjs → build-CVPqGQY3.cjs} +2 -2
- package/dist/cli-chunks/{context-C839--TH.cjs → context-C1nTGr-R.cjs} +26 -1
- package/dist/cli-chunks/{create-CNcII_CB.cjs → create-C5qrLLvv.cjs} +1 -1
- package/dist/cli-chunks/dev-U5BlN4ei.cjs +15682 -0
- package/dist/cli-chunks/{doctor-bhfQwyYU.cjs → doctor-DxqHMTbm.cjs} +1 -1
- package/dist/cli-chunks/{index-B_qJzSFo.cjs → index-BfR6OZeU.cjs} +83 -83
- package/dist/cli-chunks/{index-CT94XzyO.cjs → index-DLrcC_ij.cjs} +31 -32
- package/dist/cli-chunks/index.esm-DbbyeU1z.cjs +5212 -0
- package/dist/cli-chunks/{login-hYrDJ3dR.cjs → login-DQkArK14.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-zaw68V1G.cjs → project-vite-c13CKUUl.cjs} +1 -1
- package/dist/cli-chunks/{remote-DQZRAAHh.cjs → remote-816SyJyA.cjs} +4 -4
- package/dist/cli-chunks/{session-D692TU5N.cjs → session-ySUU0fVq.cjs} +2 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/index.html +128 -151
- package/dist/devtools/browser-dev-host/main.js +1553 -339
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/vite.cjs.js +1 -1
- package/dist/vite.esm.js +1 -1
- package/package.json +14 -7
- package/skill/SKILL.md +6 -6
- package/skill/references/api-protocol.md +1 -1
- package/skill/references/api-root.md +1 -1
- package/skill/references/cli.md +16 -20
- package/skill/references/examples.md +2 -2
- package/skill/references/safety-boundaries.md +1 -1
- package/skill/references/smoke-evaluation.md +1 -1
- package/skill/scripts/sync-references.mjs +6 -6
- package/skill/skill.json +4 -4
- package/types/protocol/dev-session.d.ts +13 -0
- package/dist/cli-chunks/dev-MpESCaMm.cjs +0 -2769
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.4
|
|
4
|
+
|
|
5
|
+
### Breaking Changes
|
|
6
|
+
|
|
7
|
+
- Runtime 硬切到 `ports` + Capability Module 架构:移除 `platformAdapter`、Heybox Runtime factory 和独立 Mock Runtime,Host 集成改用 `@heybox/hb-sdk-runtime` 的 `createMiniProgramRuntime()`、`host-contract` 与 `web-host` 入口。
|
|
8
|
+
- 新增零依赖 `@heybox/hb-sdk-protocol` 作为 wire contract owner;`@heybox/hb-sdk/protocol` 仅保留兼容 re-export,Runtime 网络 I/O 统一经过 `HostNetworkPort`。
|
|
9
|
+
- 小程序业务 API(`auth`、`user`、`share`、`network` 等)公开契约保持不变。
|
|
10
|
+
|
|
11
|
+
### SDK
|
|
12
|
+
|
|
13
|
+
- `share.showShareMenu()` 支持携带 JSON-compatible `extra`;新增 `share.copyLink()` 复制并返回相同格式的通用分享链接,链接启动后可通过同步 `share.getExtra()` 恢复页面状态。
|
|
14
|
+
- 无网络模式下,`user.getInfo()` 保持隐式授予 `identity` 与 `profile` 全量 scope。
|
|
15
|
+
- Browser Dev Host 未配置外部 one-time code / PKCE 服务时明确禁用登录入口,避免把 CLI 登录态或 credential 暴露给调试页面。
|
|
16
|
+
|
|
17
|
+
### CLI
|
|
18
|
+
|
|
19
|
+
- Browser Dev Host 增加私有双栈连接,并保留现有 HTTP/SSE fallback;连接不可用时仍可按原调试流程工作。
|
|
20
|
+
- Mobile 二维码统一使用 `open_inapp` 与 `heybox://` `openWindow` 包装的局域网短链接;短链返回跳转页,打开完整 `heybox-mini-dev://sandbox` 协议后延迟调用 `closeWindow` 关闭中间页。移除 `--raw-protocol` 与 `--runtime-url` 参数。
|
|
21
|
+
- `hb-sdk dev` 不再支持匿名调试;启动 Browser、Mac 或 Mobile 调试前必须完成 CLI 登录并绑定小程序,且远端 Dev Context 必须可用。
|
|
22
|
+
- Browser Mock 使用 Node 中的 `hb-sdk login` 会话代发 Host `heybox-session` 请求,调试页改为简单授权弹窗,凭证不下发到浏览器。
|
|
23
|
+
- Browser Dev Host 的 `network.request` 代理允许办公网、Tailscale 与 Clash fake-ip 解析到的本机/局域网地址;仍拒绝 metadata、NAT64 和跨 origin redirect。
|
|
24
|
+
- Mobile 调试短链使用 LAN HTTP,只应在受信局域网内使用。
|
|
25
|
+
- PC/Mac 与移动端的原生启动、账号、网络、存储和权限契约保持不变,本版本不要求更新原生客户端。
|
|
26
|
+
|
|
27
|
+
### Runtime
|
|
28
|
+
|
|
29
|
+
- 修复首次授权弹窗仅显示占位信息的问题;展示小程序名称和图标,并在申请 `profile` 时预览当前账号昵称和头像,资料读取失败继续使用中性占位。
|
|
30
|
+
- 展示资料读取增加独立超时与取消边界;账号切换、撤销或 Runtime 终止会立即取消当前确认界面。
|
|
31
|
+
- Mobile/PC Host 启动配置复用已可信解析的小程序资料,回退请求携带 canonical version,避免预览或开发实例展示线上版本资料。
|
|
32
|
+
- 兼容缺少 User Activation API 的旧版 iOS WKWebView;旧版环境回退到父文档捕获的近期 iframe 输入与焦点组合判定,环境读取失败一律拒绝。
|
|
33
|
+
- 修复 Mobile storage 对象读取、PC Host 重试与公开网络能力声明,并保证 terminal abort 后截图 chrome cleanup 可跨独立发布入口恢复。
|
|
34
|
+
|
|
35
|
+
### Tooling
|
|
36
|
+
|
|
37
|
+
- Protocol、Runtime 与 SDK 改为版本锁步的 release family,固定按 Protocol、Runtime、SDK candidate 发布并最后提升 SDK dist-tag;Runtime 与 SDK 发布产物精确锁定同版本 Protocol。
|
|
38
|
+
|
|
39
|
+
## 0.7.4-alpha.6
|
|
40
|
+
|
|
41
|
+
### SDK / CLI
|
|
42
|
+
|
|
43
|
+
- Browser Dev Host 增加私有双栈连接,并继续保留现有 HTTP/SSE fallback;连接不可用时仍可按原调试流程工作。
|
|
44
|
+
- Mobile 二维码统一使用 `open_inapp` 与 `heybox://` `openWindow` 包装的局域网短链接;短链返回跳转页,打开完整 `heybox-mini-dev://sandbox` 协议后延迟调用 `closeWindow` 关闭中间页。移除不再需要的 `--raw-protocol` 与 `--runtime-url` 参数。
|
|
45
|
+
- `hb-sdk dev` 不再支持匿名调试;启动 Browser、Mac 或 Mobile 调试前必须完成 CLI 登录并绑定小程序,且远端 Dev Context 必须可用。
|
|
46
|
+
- PC/Mac 与移动端的原生启动、账号、网络、存储和权限契约保持不变,本版本不要求更新原生客户端。
|
|
47
|
+
- Mobile 调试短链使用 LAN HTTP,只应在受信局域网内使用;不要在公共或不受信网络中暴露调试服务。
|
|
48
|
+
- Browser Dev Host 的 `network.request` 代理允许办公网、Tailscale 与 Clash fake-ip 解析到的本机/局域网地址;仍拒绝 metadata、NAT64 和跨 origin redirect。
|
|
49
|
+
- Browser Mock 使用 Node 中的 `hb-sdk login` 会话代发 Host `heybox-session` 请求,调试页去掉 Bridge/User 状态和登录按钮,改为简单授权弹窗。凭证不下发到浏览器。
|
|
50
|
+
|
|
3
51
|
## 0.7.4-alpha.5
|
|
4
52
|
|
|
5
53
|
### Share extra
|
package/README.md
CHANGED
|
@@ -199,6 +199,8 @@ hb-sdk remote deploy --release-note "本次更新说明"
|
|
|
199
199
|
| `hb-sdk build` | 执行生产构建与产物校验,不包含类型检查 |
|
|
200
200
|
| `hb-sdk remote deploy` | 构建、上传并提交当前版本审核 |
|
|
201
201
|
|
|
202
|
+
`hb-sdk dev` 不要求升级 Android、iOS 或 Mac 客户端。启动前必须先运行 `hb-sdk login` 并通过 `hb-sdk remote create` 或 `hb-sdk remote bind` 绑定小程序;未登录、未绑定或远端 Dev Context 不可用时不会启动 Vite、Browser Dev Host、Mac 或 Mobile 调试入口。Browser Mock 会自动在实时与兼容链路间切换;Mobile 统一使用 `open_inapp` 与 `heybox://` `openWindow` 包装的局域网短链 `http://<lan-ip>:<browser-dev-host-port>/l/<token>`。短链返回跳转页,先打开带 `heybox-mini-dev://sandbox`、`mini_url`、身份、启动票和 LAN Dev Context 的完整协议,约 500ms 后再发 `closeWindow` 关掉中间页。调试页权限覆盖只影响本地状态,不会修改线上配置。完整操作见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli),实现与安全边界由 [Runtime Host 迁移](./docs/runtime-host-migration.md) 维护。
|
|
203
|
+
|
|
202
204
|
远端提交前需要完成 CLI 登录和小程序绑定。完整的登录、绑定、预览、版本与发布流程见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli)。
|
|
203
205
|
|
|
204
206
|
## 文档
|
|
@@ -5,8 +5,8 @@ var fs = require('node:fs/promises');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
|
|
7
7
|
var runtimeGate = require('./runtime-gate-CtV7rWyX.cjs');
|
|
8
|
-
var index = require('./index-
|
|
9
|
-
var projectVite = require('./project-vite-
|
|
8
|
+
var index = require('./index-DLrcC_ij.cjs');
|
|
9
|
+
var projectVite = require('./project-vite-c13CKUUl.cjs');
|
|
10
10
|
require('node:async_hooks');
|
|
11
11
|
require('node:module');
|
|
12
12
|
require('path');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var session = require('./session-
|
|
3
|
+
var session = require('./session-ySUU0fVq.cjs');
|
|
4
4
|
var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
|
|
5
5
|
var fs$1 = require('node:fs');
|
|
6
6
|
var fs = require('node:fs/promises');
|
|
@@ -45,6 +45,23 @@ function isRecord(value) {
|
|
|
45
45
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
function parseBrowserDevPermissionState(value) {
|
|
49
|
+
if (!isPlainRecord(value) || !hasExactKeys(value, ['networkRequest']))
|
|
50
|
+
return undefined;
|
|
51
|
+
const networkRequest = value.networkRequest;
|
|
52
|
+
if (!isPlainRecord(networkRequest) || !hasExactKeys(networkRequest, ['status', 'useOfficialDomain']))
|
|
53
|
+
return undefined;
|
|
54
|
+
if (networkRequest.status !== 'enabled' && networkRequest.status !== 'disabled')
|
|
55
|
+
return undefined;
|
|
56
|
+
if (typeof networkRequest.useOfficialDomain !== 'boolean')
|
|
57
|
+
return undefined;
|
|
58
|
+
return {
|
|
59
|
+
networkRequest: {
|
|
60
|
+
status: networkRequest.status,
|
|
61
|
+
useOfficialDomain: networkRequest.useOfficialDomain,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
48
65
|
function shouldSkipMiniappPlatformCsp(runtimePermissions) {
|
|
49
66
|
const parsed = parseMiniProgramRuntimePermissions(runtimePermissions);
|
|
50
67
|
const networkRequest = parsed.permissions['network.request'];
|
|
@@ -87,6 +104,13 @@ function cloneDefaultPermissionState() {
|
|
|
87
104
|
networkRequest: { ...DEFAULT_PERMISSION_STATE.networkRequest },
|
|
88
105
|
};
|
|
89
106
|
}
|
|
107
|
+
function isPlainRecord(value) {
|
|
108
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
|
|
109
|
+
}
|
|
110
|
+
function hasExactKeys(value, keys) {
|
|
111
|
+
const actualKeys = Object.keys(value);
|
|
112
|
+
return actualKeys.length === keys.length && keys.every((key) => Object.hasOwn(value, key));
|
|
113
|
+
}
|
|
90
114
|
|
|
91
115
|
function createRemoteApiClient(options) {
|
|
92
116
|
return {
|
|
@@ -401,6 +425,7 @@ exports.createBrowserDevRuntimePermissions = createBrowserDevRuntimePermissions;
|
|
|
401
425
|
exports.createLocalDevLaunchToken = createLocalDevLaunchToken;
|
|
402
426
|
exports.createRemoteApiClientForEnvironment = createRemoteApiClientForEnvironment;
|
|
403
427
|
exports.getBoundMiniProgram = getBoundMiniProgram;
|
|
428
|
+
exports.parseBrowserDevPermissionState = parseBrowserDevPermissionState;
|
|
404
429
|
exports.parseMiniProgramRuntimePermissions = parseMiniProgramRuntimePermissions;
|
|
405
430
|
exports.readBoundMiniProgramId = readBoundMiniProgramId;
|
|
406
431
|
exports.readBoundMiniProgramIdFromPackageJson = readBoundMiniProgramIdFromPackageJson;
|
|
@@ -5,7 +5,7 @@ var fs = require('node:fs/promises');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var require$$0 = require('fs');
|
|
7
7
|
var require$$1 = require('path');
|
|
8
|
-
var index = require('./index-
|
|
8
|
+
var index = require('./index-DLrcC_ij.cjs');
|
|
9
9
|
require('node:module');
|
|
10
10
|
require('os');
|
|
11
11
|
require('readline');
|