@tbox.cn/app-template-h5 0.1.1 → 0.1.3

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.
@@ -57,15 +57,27 @@ app.use('*', async (req, res, next) => {
57
57
 
58
58
  const server = start();
59
59
 
60
- // 升级处理:vite-hmr 协议 + 认领路径 → hub;其余一律销毁(本模板无业务 WS)
60
+ // 升级处理:认领路径 /__vite_hmr(smoke-dev-hmr.sh 断言消费,不得改名)+ 子协议白名单;
61
+ // 其余一律销毁(本模板无业务 WS)。
62
+ // 子协议补写(2026-09-21,同 agent/support 模板——Spanner 网关把 WS 升级的
63
+ // Sec-WebSocket-Protocol 视为 hop-by-hop 在下游拨号时剥除,详见 tbox-app 仓
64
+ // .agents/notes/implemented/bug-fix/2026-09-21-spanner-ws-subprotocol-strip-reload-loop.md):
65
+ // 无协议头的 HMR 路径升级补写 vite-hmr 让下游握手成立——否则 destroy → WebKit(Safari/iOS
66
+ // 支付宝·微信,宽松接受网关乐观 101)open 即断 → vite-ping 探测恒成 → location.reload()
67
+ // 无限循环(Chrome/Blink 严格校验协议回显恒不 open 免疫)。其余非 vite 协议值仍销毁
68
+ // (smoke ⑤⑥ 语义不变);网关透传修复落地后补写自动退化为死分支——长留不移除。
61
69
  server.on('upgrade', (request, socket, head) => {
70
+ const { pathname } = new URL(request.url || '/', 'http://localhost');
71
+ if (pathname !== viteHmrPath) {
72
+ socket.destroy();
73
+ return;
74
+ }
62
75
  const protocol = request.headers['sec-websocket-protocol'];
63
- if (typeof protocol === 'string' && (protocol === 'vite-hmr' || protocol === 'vite-ping')) {
64
- const { pathname } = new URL(request.url || '/', 'http://localhost');
65
- if (pathname === viteHmrPath) {
66
- hmrHub.emit('upgrade', request, socket, head);
67
- return;
68
- }
76
+ if (!protocol) {
77
+ request.headers['sec-websocket-protocol'] = 'vite-hmr';
78
+ } else if (protocol !== 'vite-hmr' && protocol !== 'vite-ping') {
79
+ socket.destroy();
80
+ return;
69
81
  }
70
- socket.destroy();
82
+ hmrHub.emit('upgrade', request, socket, head);
71
83
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tbox.cn/app-template-h5",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "tbox 移动 H5 全栈模板(单 workspace:apps/client + apps/server),运行时与页面微调经 @tbox.cn/app-sdk。",
5
5
  "type": "module",
6
6
  "engines": {
@@ -7,8 +7,8 @@ settings:
7
7
  catalogs:
8
8
  default:
9
9
  '@tbox.cn/app-sdk-client':
10
- specifier: 0.21.0
11
- version: 0.21.0
10
+ specifier: 0.21.1
11
+ version: 0.21.1
12
12
  '@tbox.cn/app-sdk-server':
13
13
  specifier: 0.21.0
14
14
  version: 0.21.0
@@ -100,7 +100,7 @@ importers:
100
100
  dependencies:
101
101
  '@tbox.cn/app-sdk-client':
102
102
  specifier: 'catalog:'
103
- version: 0.21.0
103
+ version: 0.21.1
104
104
  react:
105
105
  specifier: 'catalog:'
106
106
  version: 18.3.1
@@ -965,8 +965,8 @@ packages:
965
965
  resolution: {integrity: sha512-GFthajvUSE7tY6Y5kLJgg2dRuZQdLfxq/WAEHOh+Q7RTwg7mpuLsWiNhXISkXMAtpxg0RkSgtwyRq33QS0ay3w==}
966
966
  engines: {node: '>=20.0.0'}
967
967
 
968
- '@tbox.cn/app-sdk-client@0.21.0':
969
- resolution: {integrity: sha512-xN7b8ttJLKfEsN6FdC+BUsq2rz4zQ6KXCrf59Hzr9pNIuiVDqM5zr1tqenfD9xQDu1iQmFrbNKI/QEM035AjQw==}
968
+ '@tbox.cn/app-sdk-client@0.21.1':
969
+ resolution: {integrity: sha512-hN+tIj8kh11PD0HMhq5KUs/nZYjxS+ps3F3HTTmOHWXNXzilYafFxeIWJ1bXKVm1Di5EUIjNaRPUDkP6HAcHvw==}
970
970
  engines: {node: '>=20.0.0'}
971
971
 
972
972
  '@tbox.cn/app-sdk-core@0.20.0':
@@ -2830,7 +2830,7 @@ snapshots:
2830
2830
  react: 18.3.1
2831
2831
  zod: 3.25.76
2832
2832
 
2833
- '@tbox.cn/app-sdk-client@0.21.0':
2833
+ '@tbox.cn/app-sdk-client@0.21.1':
2834
2834
  dependencies:
2835
2835
  '@tbox.cn/app-contracts': 0.12.0
2836
2836
  '@tbox.cn/app-sdk-core': 0.20.0
@@ -34,12 +34,12 @@ catalog:
34
34
  express: 4.22.2
35
35
  "@types/express": 4.17.25
36
36
  "@tbox.cn/app-sdk-core": 0.20.0
37
- "@tbox.cn/app-sdk-client": 0.21.0
37
+ "@tbox.cn/app-sdk-client": 0.21.1
38
38
  "@tbox.cn/app-sdk-server": 0.21.0
39
- "@tbox.cn/app-agent-sdk-server": 0.1.0
40
- "@tbox.cn/app-agent-sdk-client": 0.1.0
39
+ "@tbox.cn/app-agent-sdk-server": 0.1.1
40
+ "@tbox.cn/app-agent-sdk-client": 0.1.1
41
41
  "@tbox.cn/app-contracts": 0.12.0
42
- "@tbox.cn/app-contracts-mall": 0.12.0
42
+ "@tbox.cn/app-contracts-mall": 0.12.1
43
43
  eslint: 9.39.5
44
44
  typescript-eslint: 8.67.0
45
45
  eslint-plugin-react-hooks: 5.2.0