create-openclaw-bot 4.1.3 → 4.1.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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog (English)
2
2
 
3
+
4
+ ## [4.1.4] — 2026-04-03
5
+
6
+ ### ✨ Improvements
7
+
8
+ - CLI/Wizard parity: synchronized all skills (Browser Automation, Memory, RAG, Code Interpreter, etc.)
9
+ - Browser Automation: added Desktop (Host Chrome) vs Server (Headless Chromium) mode selection for Linux/Ubuntu
10
+ - Fixed Dockerfile WORKDIR issue causing build failures on Linux
11
+ - Skills now install at container **runtime** (not build-time) to avoid ClawHub auth issues
12
+ - Dynamic TOOLS.md: auto-generated listing all installed skills with hints
13
+ - Added `browser-tool.js` (Desktop mode) and `BROWSER.md` for both modes
14
+ - Skills registration in `openclaw.json → skills.entries` at setup time
15
+ - Email SMTP config prompts and `.env` injection
16
+ - Single-source versioning via `bump-version.mjs` — one command to update all files
17
+
3
18
  ## [4.1.3] — 2026-04-02
4
19
 
5
20
  ### ✨ Improvements
package/CHANGELOG.vi.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog (Tiếng Việt)
2
2
 
3
+
4
+ ## [4.1.4] — 2026-04-03
5
+
6
+ ### ✨ Cải tiến
7
+
8
+ - CLI/Wizard đồng bộ đầy đủ skills (Browser Automation, Memory, RAG, Code Interpreter, v.v.)
9
+ - Browser Automation: chọn chế độ Desktop (Host Chrome) hoặc Server (Headless Chromium) cho Linux/Ubuntu
10
+ - Sửa lỗi Dockerfile WORKDIR gây lỗi build trên Linux
11
+ - Skills install tại **runtime** container (không phải lúc build) để tránh lỗi ClawHub auth
12
+ - TOOLS.md động: tự sinh theo danh sách skills đã chọn
13
+ - Tự tạo `browser-tool.js` (Desktop mode) và `BROWSER.md`
14
+ - Tự đăng ký skills vào `openclaw.json → skills.entries`
15
+ - Bổ sung prompt cấu hình Email SMTP và inject vào `.env`
16
+ - Single-source version qua `bump-version.mjs` — 1 lệnh cập nhật tất cả file
17
+
3
18
  ## [4.1.3] — 2026-04-02
4
19
 
5
20
  ### ✨ Cải tiến
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # 🦞 OpenClaw Setup
4
4
 
5
5
  <p align="center">
6
- <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v4.1.3-0EA5E9?style=for-the-badge" alt="Version 4.1.3" /></a>
6
+ <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v4.1.4-0EA5E9?style=for-the-badge" alt="Version 4.1.4" /></a>
7
7
  <a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
8
8
  <a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
9
9
  <a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
@@ -119,7 +119,7 @@ The fastest way to install OpenClaw is using the interactive NPM package.
119
119
  2. Open this repo as workspace
120
120
  3. Paste into chat:
121
121
  ```text
122
- Read SETUP.md and set up OpenClaw v4.1.3 for me.
122
+ Read SETUP.md and set up OpenClaw v4.1.4 for me.
123
123
  My bot token is X, my 9Router proxy doesn't need a key.
124
124
  My project folder: <YOUR_PATH>
125
125
  ```
package/README.vi.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # 🦞 OpenClaw Setup
4
4
 
5
5
  <p align="center">
6
- <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v4.1.3-0EA5E9?style=for-the-badge" alt="Version 4.1.3" /></a>
6
+ <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v4.1.4-0EA5E9?style=for-the-badge" alt="Version 4.1.4" /></a>
7
7
  <a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
8
8
  <a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
9
9
  <a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
@@ -118,7 +118,7 @@ Dùng NPX là cách cài chuẩn nhất:
118
118
  2. Mở repo này làm workspace
119
119
  3. Paste vào chat:
120
120
  ```text
121
- Read SETUP.md and install OpenClaw 4.1.3 for me.
121
+ Read SETUP.md and install OpenClaw 4.1.4 for me.
122
122
  My bot token is X, my 9Router proxy doesn't need a key.
123
123
  My project folder: <THƯ_MỤC_CỦA_BẠN>
124
124
  ```
package/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  import { input, select, checkbox, confirm } from '@inquirer/prompts';
4
4
  import fs from 'fs-extra';
@@ -259,7 +259,12 @@ async function main() {
259
259
 
260
260
  // Browser Playwright (both desktop & server modes need chromium)
261
261
  const browserDockerLines = selectedSkills.includes('browser')
262
- ? '\n# Browser Automation: Playwright + Chromium\nRUN npm install -g agent-browser playwright \\\\\n && npx playwright install chromium --with-deps \\\\\n && ln -sf /root/.cache/ms-playwright/chromium-*/chrome-linux*/chrome /usr/bin/google-chrome'
262
+ ? [
263
+ '# Browser Automation: Playwright + Chromium',
264
+ 'RUN npm install -g agent-browser playwright \\',
265
+ ' && npx playwright install chromium --with-deps \\',
266
+ ' && ln -sf /root/.cache/ms-playwright/chromium-*/chrome-linux*/chrome /usr/bin/google-chrome'
267
+ ].join('\n')
263
268
  : '';
264
269
  // socat only for Desktop mode (bridge to host Chrome)
265
270
  const socatApt = hasBrowserDesktop ? ' socat' : '';
@@ -278,16 +283,19 @@ async function main() {
278
283
  '',
279
284
  `RUN apt-get update && apt-get install -y git curl${socatApt} && rm -rf /var/lib/apt/lists/*`,
280
285
  '',
281
- 'RUN npm install -g openclaw@latest',
286
+
282
287
  ];
283
288
  if (browserDockerLines) dockerfileLines.push(browserDockerLines);
284
289
  dockerfileLines.push(
290
+ '',
291
+ `ARG CACHEBUST=${Date.now()}`,
292
+ 'RUN npm install -g openclaw@latest',
285
293
  '',
286
294
  'WORKDIR /root/.openclaw',
287
295
  '',
288
296
  'EXPOSE 18791',
289
297
  '',
290
- `CMD sh -c "node -e \\"eval(Buffer.from('${b64Patch}','base64').toString())\\" && ${skillInstallCmd}${socatBridge}(sleep 5 && openclaw devices approve --latest 2>/dev/null || true) & openclaw gateway run"`
298
+ `CMD sh -c "node -e \\"eval(Buffer.from('${b64Patch}','base64').toString())\\" && ${skillInstallCmd}${socatBridge}(while true; do sleep 5; openclaw devices approve --latest 2>/dev/null || true; done) & openclaw gateway run"`
291
299
  );
292
300
  const dockerfile = dockerfileLines.join('\n');
293
301
 
@@ -351,7 +359,9 @@ services:
351
359
  - 9router
352
360
  ${hasBrowserDesktop ? ` extra_hosts:
353
361
  - "host.docker.internal:host-gateway"
354
- ` : ''} volumes:
362
+ ` : ''} ports:
363
+ - "18791:18791"
364
+ volumes:
355
365
  - ../../.openclaw:/root/.openclaw
356
366
 
357
367
  9router:
@@ -389,7 +399,9 @@ services:
389
399
  env_file: .env
390
400
  ${hasBrowserDesktop ? ` extra_hosts:
391
401
  - "host.docker.internal:host-gateway"
392
- ` : ''} volumes:
402
+ ` : ''} ports:
403
+ - "18791:18791"
404
+ volumes:
393
405
  - ../../.openclaw:/root/.openclaw`;
394
406
  }
395
407
 
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
- {
2
- "name": "create-openclaw-bot",
3
- "version": "4.1.3",
4
- "description": "Interactive CLI installer for OpenClaw Bot",
5
- "main": "cli.js",
6
- "bin": {
7
- "create-openclaw-bot": "./cli.js"
8
- },
9
- "scripts": {
10
- "test": "echo \"Error: no test specified\" && exit 1",
11
- "bump": "node bump-version.mjs"
12
- },
13
- "keywords": [
14
- "openclaw",
15
- "cli",
16
- "bot",
17
- "zalo",
18
- "telegram",
19
- "ai"
20
- ],
21
- "author": "tuanminhhole",
22
- "license": "MIT",
23
- "dependencies": {
24
- "@inquirer/prompts": "^4.3.1",
25
- "chalk": "^5.3.0",
26
- "fs-extra": "^11.2.0"
27
- },
28
- "type": "module"
29
- }
1
+ {
2
+ "name": "create-openclaw-bot",
3
+ "version": "4.1.4",
4
+ "description": "Interactive CLI installer for OpenClaw Bot",
5
+ "main": "cli.js",
6
+ "bin": {
7
+ "create-openclaw-bot": "./cli.js"
8
+ },
9
+ "scripts": {
10
+ "test": "echo \"Error: no test specified\" && exit 1",
11
+ "bump": "node bump-version.mjs"
12
+ },
13
+ "keywords": [
14
+ "openclaw",
15
+ "cli",
16
+ "bot",
17
+ "zalo",
18
+ "telegram",
19
+ "ai"
20
+ ],
21
+ "author": "tuanminhhole",
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "@inquirer/prompts": "^4.3.1",
25
+ "chalk": "^5.3.0",
26
+ "fs-extra": "^11.2.0"
27
+ },
28
+ "type": "module"
29
+ }
package/setup.js CHANGED
@@ -1140,7 +1140,15 @@ model:
1140
1140
  // Browser Automation: extra Docker deps
1141
1141
  const browserAptExtra = hasBrowser ? ' socat' : '';
1142
1142
  const browserInstallLines = hasBrowser
1143
- ? `\n# Browser Automation: Playwright engine (needed for native CDP)\nRUN npm install -g agent-browser playwright && \\\n npx playwright install chromium --with-deps && \\\n ln -f -s /root/.cache/ms-playwright/chromium-*/chrome-linux*/chrome /usr/bin/google-chrome\n\n`
1143
+ ? [
1144
+ '',
1145
+ '# Browser Automation: Playwright engine (needed for native CDP)',
1146
+ 'RUN npm install -g agent-browser playwright \\',
1147
+ ' && npx playwright install chromium --with-deps \\',
1148
+ ' && ln -f -s /root/.cache/ms-playwright/chromium-*/chrome-linux*/chrome /usr/bin/google-chrome',
1149
+ '',
1150
+ ''
1151
+ ].join('\n')
1144
1152
  : '';
1145
1153
 
1146
1154
  // Plugins install at runtime (avoids ClawHub rate limit during build)
@@ -1152,17 +1160,18 @@ model:
1152
1160
  ? 'socat TCP-LISTEN:9222,fork,reuseaddr TCP:host.docker.internal:9222 & '
1153
1161
  : '';
1154
1162
  // Patch config on every startup to survive openclaw onboard overwrites
1155
- const patchCmd = `node -e \\"const fs=require('fs'),p='/root/.openclaw/openclaw.json';if(fs.existsSync(p)){const c=JSON.parse(fs.readFileSync(p,'utf8'));c.tools=Object.assign({},c.tools,{profile:'full',exec:{host:'gateway',security:'full',ask:'off'}});c.gateway=Object.assign({},c.gateway,{port:18791,bind:'0.0.0.0'});fs.writeFileSync(p,JSON.stringify(c,null,2));}\\" && `;
1163
+ const patchCmd = `node -e \\"const fs=require('fs'),p='/root/.openclaw/openclaw.json';if(fs.existsSync(p)){const c=JSON.parse(fs.readFileSync(p,'utf8'));c.tools=Object.assign({},c.tools,{profile:'full',exec:{host:'gateway',security:'full',ask:'off'}});c.gateway=Object.assign({},c.gateway,{port:18791,bind:'custom',customBindHost:'0.0.0.0'});fs.writeFileSync(p,JSON.stringify(c,null,2));}\\" && `;
1156
1164
  // Auto-approve device pairing after gateway starts (required since v2026.3.x)
1157
- const autoApproveCmd = '(sleep 5 && openclaw devices approve --latest 2>/dev/null || true) & ';
1165
+ const autoApproveCmd = '(while true; do sleep 5; openclaw devices approve --latest 2>/dev/null || true; done) & ';
1158
1166
  const finalCmd = `CMD sh -c "${pluginInstallCmd}${patchCmd}${browserPrefix}${autoApproveCmd}${gatewayCmd}"`;
1159
1167
 
1160
1168
  const dockerfile = `FROM node:22-slim
1161
1169
 
1162
1170
  RUN apt-get update && apt-get install -y git curl${browserAptExtra} && rm -rf /var/lib/apt/lists/*
1163
1171
 
1164
- RUN npm install -g openclaw@latest
1165
- ${skillLines}${browserInstallLines}
1172
+
1173
+ ARG CACHEBUST=${Date.now()}
1174
+ RUN npm install -g openclaw@latest${skillLines}${browserInstallLines}
1166
1175
  WORKDIR /root/.openclaw
1167
1176
 
1168
1177
  EXPOSE 18791
@@ -1217,7 +1226,8 @@ setInterval(sync, INTERVAL);`;
1217
1226
 
1218
1227
  let compose;
1219
1228
  if (is9Router) {
1220
- compose = `services:
1229
+ compose = `name: oc-bot
1230
+ services:
1221
1231
  ai-bot:
1222
1232
  build: .
1223
1233
  container_name: openclaw-bot
@@ -1230,7 +1240,7 @@ ${extraHostsBlock}
1230
1240
  volumes:
1231
1241
  - ../../.openclaw:/root/.openclaw
1232
1242
  ports:
1233
- - "38789:38789"
1243
+ - "18791:18791"
1234
1244
 
1235
1245
  9router:
1236
1246
  image: node:22-slim
@@ -1258,7 +1268,8 @@ ${extraHostsBlock}
1258
1268
  volumes:
1259
1269
  9router-data:`;
1260
1270
  } else {
1261
- compose = `services:
1271
+ compose = `name: oc-bot
1272
+ services:
1262
1273
  ai-bot:
1263
1274
  build: .
1264
1275
  container_name: openclaw-bot
@@ -1269,7 +1280,7 @@ ${extraHostsBlock}
1269
1280
  volumes:
1270
1281
  - ../../.openclaw:/root/.openclaw
1271
1282
  ports:
1272
- - "38789:38789"`;
1283
+ - "18791:18791"`;
1273
1284
  }
1274
1285
 
1275
1286
  setOutput('out-compose', compose);
package/tele_docs.md ADDED
Binary file