@loom-framework/core 0.1.0-alpha.93 → 0.1.0-alpha.95

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.
@@ -77,6 +77,10 @@ loom generate dashboard <name>
77
77
  - `loom generate skill <name>` — 创建脚手架,然后编辑 `.claude/skills/<name>/SKILL.md`
78
78
  - 或直接复制一个已有的 Skill 目录到 `.claude/skills/` 下
79
79
 
80
+ ### 重启服务前必须询问用户
81
+
82
+ 修改 `loom.config.ts` 后如果需要重启后端服务(如增删 AI 按钮、修改 enum 值、新增模型等场景),**必须先询问用户是否可以重启**,得到确认后再执行 `loom dev` 或停止/重启服务。不要自动重启,因为用户可能正在使用页面或调试中。
83
+
80
84
  ### 6. 启动开发
81
85
 
82
86
  ```bash
@@ -86,11 +90,25 @@ loom dev
86
90
  - 前端:http://localhost:5173
87
91
  - 后端:http://localhost:3000
88
92
 
89
- ### 迭代:修改配置 → 重新生成
93
+ ### 迭代:修改配置后的处理
94
+
95
+ 不同类型的配置变更,处理方式不同:
96
+
97
+ | 变更类型 | 需要改页面吗 | 怎么做 |
98
+ |---------|------------|--------|
99
+ | 增删 AI 按钮 | 不需要 | 改配置 → 重启后端,按钮自动出现/消失 |
100
+ | 修改 enum 值 | 不需要 | 改配置 → 重启后端,筛选和下拉自动更新 |
101
+ | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate page <Name> --model <model>` → 重启后端 |
102
+ | 新增/删除字段 | 需要 | 改配置 → 让 AI 更新页面(推荐,保留定制代码)或 `--force` 重建 |
103
+
104
+ **推荐 AI 辅助迭代**:告诉 AI 你改了什么(如"我在配置里加了一个学期字段"),AI 会精确添加新字段的列和表单项,保留你之前的定制代码。
90
105
 
91
- 编辑 `loom.config.ts`(添加/修改模型或 AI 按钮)→ 重新执行步骤 3,加 `--force` 覆盖已有页面:
106
+ **谨慎使用 `--force`**:全量覆盖页面,之前所有定制修改都会丢失。
92
107
 
93
108
  ```bash
109
+ # 只改了 AI 按钮或 enum → 重启后端即可
110
+ # 加了新字段 → 让 AI 更新页面
111
+ # 想重来一个干净页面 → --force
94
112
  loom generate page <Name> --model <model-name> --force
95
113
  ```
96
114
 
@@ -69,17 +69,29 @@ loom dev
69
69
 
70
70
  这些操作在终端 Claude Code 和页面对话框里都能做。
71
71
 
72
- ## 配置变更
72
+ ## 配置变更与迭代
73
73
 
74
- 改了 `loom.config.ts`(加了字段、改了 enum),页面不会自动更新。告诉 AI 你改了什么,AI 会同步更新页面。
74
+ 改了 `loom.config.ts` 后,不同类型的变更需要不同的处理方式:
75
75
 
76
- 如果你想重来一个干净的页面:
76
+ | 变更类型 | 页面需要改吗 | 怎么做 |
77
+ |---------|------------|--------|
78
+ | 增删 AI 按钮 | 不需要 | 改配置 → 重启后端,按钮自动出现在页面 |
79
+ | 修改 enum 值 | 不需要 | 改配置 → 重启后端,筛选和下拉自动更新 |
80
+ | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate page <Name> --model <model>` → 重启后端 |
81
+ | 新增/删除字段 | 需要 | 改配置 → AI 更新页面(推荐)或 `--force` 重建 |
82
+
83
+ **推荐:AI 辅助迭代**。告诉 AI 你改了什么(比如"我在配置里加了一个学期字段"),AI 会在页面中精确添加新字段的列和表单项,**保留你之前做的视觉定制代码**。
84
+
85
+ **谨慎使用 `--force`**。它会用最新配置全量覆盖页面,之前对页面做的任何定制修改都会丢失。
77
86
 
78
87
  ```bash
88
+ # 只改了 AI 按钮或 enum → 重启后端即可,不用碰页面
89
+ # 加了新字段 → 让 AI 更新页面
90
+ # 想重来一个干净页面 → --force
79
91
  loom generate page WrongQuestions --model wrong_questions --force
80
92
  ```
81
93
 
82
- `--force` 会用最新配置全量重建页面。页面不存在时直接 `loom generate page` 即可,不需要 `--force`。
94
+ 页面不存在时直接 `loom generate page` 即可,不需要 `--force`。
83
95
 
84
96
  ## 配置写法
85
97
 
@@ -125,7 +137,7 @@ export default defineConfig({
125
137
 
126
138
  - AI 按钮的 `prompt` 支持 `{{fieldName}}` 插值,运行时替换为当前行的字段值
127
139
  - `placement` 限制按钮只出现在指定模型页面,省略则全局显示
128
- - Dashboard 的 17 种图表类型和配置 Schema 见 `references/dashboard.md`
140
+ - Dashboard 的 15 种图表类型和配置 Schema 见 `references/dashboard.md`
129
141
 
130
142
  ## 项目级 AI Skill
131
143
 
@@ -179,7 +191,19 @@ await server.start();
179
191
  `defaultAdapter` 改为 `'filesystem'`,或者 `cd node_modules/better-sqlite3 && npx node-gyp rebuild`。
180
192
 
181
193
  **改了 loom.config.ts 页面没变**
182
- 告诉 AI 你改了什么,AI 会同步更新页面。或者用 `--force` 重建。
194
+ 取决于改了什么:AI 按钮和 enum 值变更是自动生效的(重启后端即可);字段增删需要让 AI 更新页面或 `--force` 重建。详见上方「配置变更与迭代」。
195
+
196
+ **改了配置后 AI 按钮没出现**
197
+ 需要重启后端(`loom dev` 会自动重载,如果没生效就停掉重新 `loom dev`)。
198
+
199
+ **删除了配置中的字段,旧数据怎么办**
200
+ 数据文件中的旧字段值不会删除,只是页面不再展示。如果之后加回同名字段,旧数据会自动恢复显示。
201
+
202
+ **--force 会丢掉我的页面定制吗**
203
+ 会。`--force` 全量覆盖页面文件。如果你对页面做过视觉或交互定制,建议让 AI 辅助迭代而不是用 `--force`。
183
204
 
184
205
  **对话框里的 AI 能改代码吗**
185
- 能。和终端 Claude Code 是同一个引擎,在哪边改都行。
206
+ 能。和终端 Claude Code 是同一个引擎,在哪边改都行。
207
+
208
+ **如何部署到生产环境**
209
+ `loom build` 构建前端和后端,然后 `node dist/backend/src/index.js` 启动后端。
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/package-json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAmC7E"}
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/package-json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAoC7E"}
@@ -31,6 +31,7 @@ export function createPackageJson(options) {
31
31
  'typescript': '^5.6.0',
32
32
  'tsx': '^4.7.0',
33
33
  'vite': '^6.0.0',
34
+ '@types/node': '^22.0.0',
34
35
  '@types/react': '^19.0.0',
35
36
  '@types/react-dom': '^19.0.0',
36
37
  '@vitejs/plugin-react': '^4.3.0',
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../src/cli/templates/package-json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACnE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,4BAA4B;SACvC;QACD,YAAY,EAAE;YACZ,sBAAsB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;YAC7C,+BAA+B,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;YACtD,SAAS,EAAE,QAAQ;YACnB,eAAe,EAAE,QAAQ;YACzB,mBAAmB,EAAE,QAAQ;YAC7B,wBAAwB,EAAE,QAAQ;YAClC,mBAAmB,EAAE,QAAQ;YAC7B,eAAe,EAAE,SAAS;YAC1B,iBAAiB,EAAE,QAAQ;YAC3B,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,SAAS;SACnB;QACD,eAAe,EAAE;YACf,YAAY,EAAE,QAAQ;YACtB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;YAChB,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,SAAS;YAC7B,sBAAsB,EAAE,QAAQ;SACjC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../src/cli/templates/package-json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACnE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,4BAA4B;SACvC;QACD,YAAY,EAAE;YACZ,sBAAsB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;YAC7C,+BAA+B,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;YACtD,SAAS,EAAE,QAAQ;YACnB,eAAe,EAAE,QAAQ;YACzB,mBAAmB,EAAE,QAAQ;YAC7B,wBAAwB,EAAE,QAAQ;YAClC,mBAAmB,EAAE,QAAQ;YAC7B,eAAe,EAAE,SAAS;YAC1B,iBAAiB,EAAE,QAAQ;YAC3B,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,SAAS;SACnB;QACD,eAAe,EAAE;YACf,YAAY,EAAE,QAAQ;YACtB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,SAAS;YACxB,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,SAAS;YAC7B,sBAAsB,EAAE,QAAQ;SACjC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loom-framework/core",
3
- "version": "0.1.0-alpha.93",
3
+ "version": "0.1.0-alpha.95",
4
4
  "description": "Loom framework - DataAdapter, Capability Generator, config system, backend server, CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",