@tbox.cn/app-template-h5 0.1.16 → 0.1.17

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/AGENTS.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # AGENTS.md
2
2
 
3
- template-h5 是面向 AI 生成 H5 应用的单 workspace 模板:`apps/client`(React/Vite)+ `apps/server`(Express)。
3
+ template-h5 是面向 AI 生成 Web 应用的单 workspace 模板:`apps/client`(React/Vite)+ `apps/server`(Express)。
4
4
 
5
5
  ## 工程结构
6
6
 
7
7
  | 包 | 职责 |
8
8
  |---|---|
9
- | `apps/client` | React/Vite H5 页面与业务入口(@app/client) |
9
+ | `apps/client` | React/Vite Web 页面与业务入口(@app/client) |
10
10
  | `apps/server` | Express API:健康检查、静态托管、inspector(@app/server) |
11
11
  | `scripts/` | 平台生命周期脚本(prepare/dev/start/stop/build 固定名契约)与工程守卫 |
12
12
 
@@ -52,16 +52,20 @@ apps/server/src/dev.ts # vite dev 入口(仅 tsx 运行;
52
52
  - `apps/server/tests` 契约测试随模板分发勿删(health/JSON 404 断言);client 业务面测试由应用自建——模板出厂零 client 测试文件(`passWithNoTests` 保绿,新增测试后本约定不变)
53
53
  - 服务端凭证/环境变量不进 client bundle(客户端环境值仅 `import.meta.env.VITE_*` 且经 `configureRuntime` 注入)
54
54
 
55
- ## web-view 样式约定(嵌入支付宝小程序 web-view 壳时遵守)
55
+ ## 端形态决策(先于样式开发)
56
56
 
57
- 1. **长度单位 PX 大写**——小写 `px` 被壳内字体缩放改写,大写跳过改写保持视觉尺寸。
58
- 2. **flex 子项设 `flex-shrink: 0`**——防壳内宽度不定导致元素被压缩。
59
- 3. **滚动容器隐藏滚动条**(`::-webkit-scrollbar { display: none }`)。
60
- 4. **颜色用 `rgba()` 传统语法**——避免 `color-mix`/`oklch` 在低版本内核不渲染。
57
+ 模板不预设端形态——适配策略由应用自定。开发前先从用户需求确认目标端(PC / 移动 / 自适应 / 嵌入壳);未明确声明移动端或小程序壳时按通用 Web 处理:默认满幅流式布局,**勿给内容套限宽居中壳**(限宽列、居中窄条、大触区属移动形态决策,仅在用户明确要求时采用)。
58
+
59
+ ## web-view 嵌入约定(仅用户明确要求嵌入支付宝小程序 web-view 壳时适用)
60
+
61
+ 1. **滚动容器隐藏滚动条**(`::-webkit-scrollbar { display: none }`)——移动端无常驻滚动条,内层滚动容器冒出的滚动条与设计不符。
62
+ 2. **避免 CSS Color 4+ 新颜色语法**——`color-mix()` / `oklch()` / 空格分隔 `rgb(r g b / a)` 在低版本 web-view 内核整条声明失效(不降级、直接消失);用 `rgba()`、`#hex` 等传统语法。
63
+
64
+ 未声明嵌入 = 以上两条不适用,勿为兼容壳预写任何样式。另注:大写 `PX` 不是 web-view 约定——它只是 postcss-pxtorem 类构建管线的转义写法(本模板无此管线,应用自建时才相关)。
61
65
 
62
66
  ## 边界
63
67
 
64
68
  - 保持单 workspace 的 `apps/client` + `apps/server` 两成员;不新增 `apps/client/` 之外的 Vite 配置或嵌套 lockfile(`pnpm check:workspace` 校验)。
65
69
  - 无模块/Provider/主题装配面:缺双端 `apps/*/src/modules.ts`——`npx --yes @tbox.cn/app-cli module add`、`npx --yes @tbox.cn/app-cli new module`、`npx --yes @tbox.cn/app-cli new provider` 会被 CLI 直接拒绝;`npx --yes @tbox.cn/app-cli theme use` 因无主题接线点也不适用。
66
- - 模板不预设端形态(移动/桌面/自适应)——适配策略由应用自定;全局样式挂点 = `apps/client/src/styles/base.css`(仅设备无关卫生规则)。
70
+ - 全局样式挂点 = `apps/client/src/styles/base.css`(仅设备无关卫生规则);端形态决策见上节。
67
71
  - 结构、路由、命令、依赖或环境变量变化时同步 README 与本文件。
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # template-h5
2
2
 
3
- tbox H5 全栈模板(包名 `@tbox.cn/app-template-h5`),单 workspace:`apps/client`(React/Vite)+ `apps/server`(Express)。运行时与页面微调经 `@tbox.cn/app-sdk-client` / `@tbox.cn/app-sdk-server`。
3
+ tbox Web 全栈模板(包名 `@tbox.cn/app-template-h5`,h5 为家族历史名——不预设端形态),单 workspace:`apps/client`(React/Vite)+ `apps/server`(Express)。运行时与页面微调经 `@tbox.cn/app-sdk-client` / `@tbox.cn/app-sdk-server`。
4
4
 
5
5
  ## 快速开始
6
6
 
@@ -9,12 +9,12 @@ pnpm install
9
9
  pnpm dev
10
10
  ```
11
11
 
12
- 开发期浏览器访问 `http://localhost:8000`(单端口:API + 页面 + HMR)。`server` 负责 API、健康检查与生产静态托管,`client` 负责 H5 页面与业务入口。
12
+ 开发期浏览器访问 `http://localhost:8000`(单端口:API + 页面 + HMR)。`server` 负责 API、健康检查与生产静态托管,`client` 负责 Web 页面与业务入口。
13
13
 
14
14
  ## 生成新应用
15
15
 
16
16
  ```sh
17
- npx --yes @tbox.cn/app-cli create . --name my-h5-app --source @tbox.cn/app-template-h5
17
+ npx --yes @tbox.cn/app-cli create . --name my-web-app --source @tbox.cn/app-template-h5
18
18
  pnpm install
19
19
  ```
20
20
 
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <!-- 基础视口;全屏 safe-area(viewport-fit=cover + env() 补偿)由应用成对启用 -->
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
7
- <title>H5 应用</title>
7
+ <title>Web 应用</title>
8
8
  <!-- 平台微调(inspector) runtime:由 server 提供 GET /__vs_inspector__.js;dev 下经 Vite 代理到 server。 -->
9
9
  <script src="/__vs_inspector__.js" defer></script>
10
10
  </head>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tbox.cn/app-template-h5",
3
- "version": "0.1.16",
4
- "description": "tbox H5 全栈模板(单 workspace:apps/client + apps/server),运行时与页面微调经 @tbox.cn/app-sdk。",
3
+ "version": "0.1.17",
4
+ "description": "tbox Web 全栈模板(单 workspace:apps/client + apps/server;h5 为家族历史名,不预设端形态),运行时与页面微调经 @tbox.cn/app-sdk。",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": ">=24.0.0 <25.0.0"
@@ -7,8 +7,8 @@ settings:
7
7
  catalogs:
8
8
  default:
9
9
  '@tbox.cn/app-sdk-client':
10
- specifier: 0.21.3
11
- version: 0.21.3
10
+ specifier: 0.21.4
11
+ version: 0.21.4
12
12
  '@tbox.cn/app-sdk-server':
13
13
  specifier: 0.26.2
14
14
  version: 0.26.2
@@ -97,7 +97,7 @@ importers:
97
97
  dependencies:
98
98
  '@tbox.cn/app-sdk-client':
99
99
  specifier: 'catalog:'
100
- version: 0.21.3
100
+ version: 0.21.4
101
101
  react:
102
102
  specifier: 'catalog:'
103
103
  version: 18.3.1
@@ -955,10 +955,6 @@ packages:
955
955
  '@standard-schema/spec@1.1.0':
956
956
  resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
957
957
 
958
- '@tbox.cn/app-contracts@0.13.0':
959
- resolution: {integrity: sha512-8sqP/23MoUlbTX9enFNotP5bu7XKFfigDUJ6sEn1Ff2a0rRlSTWzLWmDv9lP70cfZMPjh4MHoLKFoukr8QPvMA==}
960
- engines: {node: '>=20.0.0'}
961
-
962
958
  '@tbox.cn/app-contracts@0.13.2':
963
959
  resolution: {integrity: sha512-0lY9g29ice7xYbmV5XDnEiMmM70jvSzeK2cciUZVpzHgGykWqZiPRlqXIGkIRY7uObDQ1cICHC4mS67HuNQ8Jg==}
964
960
  engines: {node: '>=20.0.0'}
@@ -967,12 +963,8 @@ packages:
967
963
  resolution: {integrity: sha512-P16LFd+ZzIASrujs6fyaOEwRnsLg7Lh5k1qOVDNblmohrvUbVIOK5ntn+7mupJxnjK7SY43RUT4mtWtfM85/rQ==}
968
964
  engines: {node: '>=20.0.0'}
969
965
 
970
- '@tbox.cn/app-sdk-client@0.21.3':
971
- resolution: {integrity: sha512-64y22k5gzCc9eEQ0IJA1izxPaosNEmoCJ4YrsfHOoHYq2UPJCCmP7RIu3Rn4stPZ4tcmRdMdAi2y5499KObYHw==}
972
- engines: {node: '>=20.0.0'}
973
-
974
- '@tbox.cn/app-sdk-core@0.20.4':
975
- resolution: {integrity: sha512-4kcoxnZnPgsO0RwAsjsodOXRhZNQcr9r3INN3Z03/JR2e3E+izkW2YHsgGcdbVSVX81s8gZrkaBbE+xco3wSqg==}
966
+ '@tbox.cn/app-sdk-client@0.21.4':
967
+ resolution: {integrity: sha512-Vbk0593RGWGIVgGiR1xNOF8x62z+2/Ix6NRTHURhdrLLB1pOIFlixm4AHn9d/noyaItiXTND55OeOTAaTEJQcQ==}
976
968
  engines: {node: '>=20.0.0'}
977
969
 
978
970
  '@tbox.cn/app-sdk-core@0.20.5':
@@ -2825,12 +2817,6 @@ snapshots:
2825
2817
 
2826
2818
  '@standard-schema/spec@1.1.0': {}
2827
2819
 
2828
- '@tbox.cn/app-contracts@0.13.0':
2829
- dependencies:
2830
- '@ag-ui/core': 0.0.47
2831
- react: 18.3.1
2832
- zod: 3.25.76
2833
-
2834
2820
  '@tbox.cn/app-contracts@0.13.2':
2835
2821
  dependencies:
2836
2822
  '@ag-ui/core': 0.0.47
@@ -2843,17 +2829,13 @@ snapshots:
2843
2829
  react: 18.3.1
2844
2830
  zod: 3.25.76
2845
2831
 
2846
- '@tbox.cn/app-sdk-client@0.21.3':
2832
+ '@tbox.cn/app-sdk-client@0.21.4':
2847
2833
  dependencies:
2848
- '@tbox.cn/app-contracts': 0.13.0
2849
- '@tbox.cn/app-sdk-core': 0.20.4
2834
+ '@tbox.cn/app-contracts': 0.13.3
2835
+ '@tbox.cn/app-sdk-core': 0.20.5
2850
2836
  react: 18.3.1
2851
2837
  react-dom: 18.3.1(react@18.3.1)
2852
2838
 
2853
- '@tbox.cn/app-sdk-core@0.20.4':
2854
- dependencies:
2855
- '@tbox.cn/app-contracts': 0.13.0
2856
-
2857
2839
  '@tbox.cn/app-sdk-core@0.20.5':
2858
2840
  dependencies:
2859
2841
  '@tbox.cn/app-contracts': 0.13.2
@@ -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.5
37
- "@tbox.cn/app-sdk-client": 0.21.3
37
+ "@tbox.cn/app-sdk-client": 0.21.4
38
38
  "@tbox.cn/app-sdk-server": 0.26.2
39
39
  "@tbox.cn/app-agent-sdk-server": 0.3.3
40
- "@tbox.cn/app-agent-sdk-client": 0.2.0
40
+ "@tbox.cn/app-agent-sdk-client": 0.2.1
41
41
  "@tbox.cn/app-contracts": 0.13.3
42
- "@tbox.cn/app-contracts-mall": 0.13.2
42
+ "@tbox.cn/app-contracts-mall": 0.14.0
43
43
  eslint: 9.39.5
44
44
  typescript-eslint: 8.67.0
45
45
  eslint-plugin-react-hooks: 5.2.0
package/scripts/dev.sh CHANGED
@@ -6,7 +6,10 @@ PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
6
6
  cd "$PROJECT_DIR"
7
7
  echo "Project directory: $PROJECT_DIR"
8
8
 
9
+ echo "Installing dependencies..."
10
+ pnpm install
11
+
9
12
  echo "Starting development server..."
10
13
  echo " - http://localhost:8000 (API + 页面 + HMR)"
11
- # 相对 filter:本脚本在仓内被 pnpm dev h5(native preset)调用,名称 filter 会三模板同名命中
14
+ # 相对 filter:仓内直跑时名称 filter 会三模板同名命中(@app/server ×3)
12
15
  pnpm --filter ./apps/server dev