create-openclaw-bot 5.1.14 → 5.2.0

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,7 +1,33 @@
1
- # Changelog (English)
2
-
3
-
4
- ## [5.1.14] — 2026-04-08
1
+ # Changelog (English)
2
+
3
+
4
+ ## [5.2.0] — 2026-04-09
5
+
6
+ ### One-Command Upgrade (No Wizard Required)
7
+
8
+ - Added `upgrade` subcommand to the CLI: `npx create-openclaw-bot@latest upgrade`. Detects Docker vs Native mode automatically and updates OpenClaw without re-running the setup wizard.
9
+ - Added `upgrade.ps1` for Windows users — double-click in the bot folder to trigger an upgrade. No terminal knowledge required.
10
+ - Added `upgrade.sh` for Linux / macOS / Ubuntu — run `bash upgrade.sh` locally or pipe via `curl` or `wget` directly from GitHub without cloning the repo.
11
+ - All user data is preserved during upgrade: `.env`, `.openclaw/memory/`, sessions, credentials, and 9Router OAuth tokens are never modified.
12
+ - Docker mode: patching `Dockerfile` (`OPENCLAW_NPM_SPEC` + `CACHEBUST` refresh) then `docker compose build --no-cache` + `docker compose up -d`.
13
+ - Native / PM2 mode: reinstalls `openclaw` + `9router` globals then runs `pm2 restart all`.
14
+
15
+
16
+ ## [5.1.15] — 2026-04-08
17
+
18
+ ### Native Setup Parity & Windows Wizard Fixes
19
+
20
+ - Fixed the Windows native HTML wizard so downloaded `.bat` files always regenerate from the latest UI state before download.
21
+ - Fixed Windows native runtime paths to stay project-local: `.env`, `.openclaw`, and `.9router` now resolve from the user-selected project directory instead of home/AppData fallbacks.
22
+ - Added `OPENCLAW_STATE_DIR` to native runtime environments so OpenClaw loads the generated config from the project runtime directory.
23
+ - Replaced legacy `gateway.bind: "0.0.0.0"` output with the current `bind: "custom"` plus `customBindHost: "0.0.0.0"` format.
24
+ - Fixed Windows native single-bot generation so selected provider, model, API key, and Telegram bot token are correctly synced into generated `.env` and `openclaw.json`.
25
+ - Fixed native Windows 9Router launch path resolution and updated the embedded smart-route sync helper to use the live `9Router` API provider list, matching Docker behavior.
26
+ - Added native Windows skill/runtime parity improvements: selected skills now install automatically, browser automation installs its required runtime packages, and skill config entries now use the correct slugs.
27
+ - Updated macOS, Linux Desktop, and Ubuntu/VPS native scripts to launch from the chosen `PROJECT_DIR` and export project-local `OPENCLAW_HOME`, `OPENCLAW_STATE_DIR`, and `DATA_DIR`.
28
+ - Expanded smoke coverage for the native runtime path, 9Router sync, provider/token sync, browser install, and Unix project-local startup flows.
29
+
30
+ ## [5.1.14] — 2026-04-08
5
31
 
6
32
  ### OpenClaw stability and Docker fixes
7
33
 
@@ -9,87 +35,87 @@
9
35
  - Fixed Dockerfile generation for Windows Docker setups to avoid startup failures caused by bad command escaping and invalid `allowedOrigins`.
10
36
  - Added guidance to use `Node.js 20` through `24`, and to avoid `Node.js 25` for now for better OpenClaw stability.
11
37
 
12
- ## [5.1.13] 2026-04-08
38
+ ## [5.1.13] — 2026-04-08
13
39
 
14
- ### 🐛 macOS Install Fixes & Wizard Stability
40
+ ### 🐛 macOS Install Fixes & Wizard Stability
15
41
 
16
- - **Fix macOS `mkdir: : No such file or directory`**: `generateSetupScript` was using `\${dir}` / `\${path}` (escaped), which created empty bash variables now JS-interpolated so actual file paths are written correctly.
42
+ - **Fix macOS `mkdir: : No such file or directory`**: `generateSetupScript` was using `\${dir}` / `\${path}` (escaped), which created empty bash variables — now JS-interpolated so actual file paths are written correctly.
17
43
  - **Fix macOS Docker script**: Added `docker info` daemon check before `docker compose up`; Docker mode now correctly calls `docker compose up` instead of `openclaw gateway run`.
18
44
  - **Fix macOS Native npm prefix**: Removed `npm config set prefix` which breaks Homebrew-managed Node.js. Now uses `export npm_config_prefix` (per-session env var) + `sudo npm install -g` fallback.
19
45
  - **Fix `window.__saveBotTabPersona is not a function`**: Added the missing `__saveBotTabPersona` function that HTML was calling but was never defined in `setup.js`.
20
- - **Fix Step 3 Next button in 1-bot mode**: `bindFormEvents` now syncs `cfg-name` input directly to `state.config.botName` and `state.bots[0].name` on every keystroke, then calls `updateNavButtons()` Next button reacts instantly without requiring navigation.
46
+ - **Fix Step 3 Next button in 1-bot mode**: `bindFormEvents` now syncs `cfg-name` input directly to `state.config.botName` and `state.bots[0].name` on every keystroke, then calls `updateNavButtons()` — Next button reacts instantly without requiring navigation.
21
47
  - **Fix persona per-bot isolation**: `saveBotTabMeta` and `syncBotTabMeta` now save/restore the `cfg-bot-tab-persona` field per-bot. Switching tabs correctly shows/hides each bot's persona; the value is persisted in `state.bots[i].persona` and used correctly in generated `.md` files.
22
48
  - **Fix cli.js macOS global npm**: `ensureUserWritableGlobalNpm` skips `npm config set prefix` on darwin; `installGlobalPackage` adds `sudo npm install -g` as macOS fallback.
23
49
 
24
- ## [5.1.12] 2026-04-07
50
+ ## [5.1.12] — 2026-04-07
25
51
 
26
- ### 🧠 Expanded Skills & Auto-Select Multi-Bot Relay Plugin
52
+ ### 🧠 Expanded Skills & Auto-Select Multi-Bot Relay Plugin
27
53
 
28
- - **3-Column Skill Grid**: Skill cards now display 3 per row instead of 4 wider cards, better readability.
29
- - **7 New ClawHub Skills**: Added `Web Search`, `Notion`, `Slack` covering the most common productivity workflows available on the OpenClaw dashboard.
30
- - **Telegram Multi-Bot Relay Auto-Select**: When multiple Telegram bots are selected (botCount 2), the `telegram-multibot-relay` plugin is automatically checked and written to `openclaw.json plugins.entries`. Switching back to 1 bot deselects it.
31
- - **Plugin Selections openclaw.json**: All plugins selected by the user (Voice Call, Matrix, MS Teams, Nostr...) are now injected into `plugins.entries` so the OpenClaw Dashboard receives the correct `enabled` state. Unselected = disabled.
54
+ - **3-Column Skill Grid**: Skill cards now display 3 per row instead of 4 — wider cards, better readability.
55
+ - **7 New ClawHub Skills**: Added `Web Search`, `Notion`, `Slack` — covering the most common productivity workflows available on the OpenClaw dashboard.
56
+ - **Telegram Multi-Bot Relay Auto-Select**: When multiple Telegram bots are selected (botCount ≥ 2), the `telegram-multibot-relay` plugin is automatically checked and written to `openclaw.json → plugins.entries`. Switching back to 1 bot deselects it.
57
+ - **Plugin Selections → openclaw.json**: All plugins selected by the user (Voice Call, Matrix, MS Teams, Nostr...) are now injected into `plugins.entries` so the OpenClaw Dashboard receives the correct `enabled` state. Unselected = disabled.
32
58
  - **Fix Step 3 "Next" disabled**: Removed mandatory `cfg-user-info` requirement (it's optional), fixed multi-bot validation to use `cfg-bot-tab-name`.
33
59
  - **Fix Step 4 multi-bot token validation**: Now validates `key-bot-token-0` instead of `key-bot-token` in Telegram multi-bot mode.
34
60
  - **Fix native multi-bot AGENTS.md missing security rules**: Security rules are now appended to each bot's AGENTS.md during native multi-bot deployment.
35
61
 
36
- ## [5.1.11] 2026-04-07
62
+ ## [5.1.11] — 2026-04-07
37
63
 
38
- ### 🌟 Zalo Personal DM Policy
64
+ ### 🌟 Zalo Personal DM Policy
39
65
 
40
66
  - **Open Zalo Inboxes**: The default `dmPolicy` for Zalo Personal deployments has been changed from `pairing` to `open`. This allows any user on the Zalo network to interact with the AI assistant immediately without requiring explicit device pairing approvals natively.
41
67
 
42
- ## [5.1.10] 2026-04-07
68
+ ## [5.1.10] — 2026-04-07
43
69
 
44
- ### 🌟 Native UI Auto-Approve Bypasser
70
+ ### 🌟 Native UI Auto-Approve Bypasser
45
71
 
46
72
  - **Native PM2 Auto-Approve Loop**: The strict `pairing required` security feature mandates that all users manually execute an approval command in their terminal for new web dashboard authentications. While Docker deployments already included an automated bypass, the Native setup did not. This release introduces a dedicated `auto-approve` PM2 background daemon that infinitely polls and accepts new device keys, delivering a frictionless, zero-touch login experience identical to Docker deployments.
47
73
 
48
- ## [5.1.9] 2026-04-07
74
+ ## [5.1.9] — 2026-04-07
49
75
 
50
- ### 🌟 Strict Schema Fix & WebCrypto UX Improvement
76
+ ### 🌟 Strict Schema Fix & WebCrypto UX Improvement
51
77
 
52
78
  - **Revert Unrecognized Config Key**: OpenClaw v2026.x.x enforces strict Zod schema validation. The previously injected `requireDeviceIdentity` flag caused an immediate startup crash (`Config invalid`). This version surgically removes the offending flag, ensuring the gateway boots successfully.
53
79
  - **Dynamic SSH Tunnel Helper**: Since WebCrypto strictly demands a secure context (HTTPS/localhost), accessing the dashboard via raw VPS IP triggers a `1008` error natively. The CLI now dynamically generates and prints the exact `ssh -L 18791:localhost:18791 ...` Port Forwarding command right in the terminal, guaranteeing a flawless, secure login experience for remote server operators without needing SSL.
54
80
 
55
- ## [5.1.8] 2026-04-07
81
+ ## [5.1.8] — 2026-04-07
56
82
 
57
- ### 🌟 Dashboard VPS Connectivity & Token Login Fix
83
+ ### 🌟 Dashboard VPS Connectivity & Token Login Fix
58
84
 
59
85
  - **Fix `requireDeviceIdentity` Error on VPS**: OpenClaw's WebCrypto E2E identity check inherently demands a secure browser context (HTTPS or localhost). For raw IPv4 VPS deployments, the `crypto.subtle` browser limitation causes WebSocket `code=1008` rejection upon token login. The setup tool now seamlessly injects `requireDeviceIdentity: false` into the `gateway.controlUi` configuration, granting you flawless remote login capabilities over standard HTTP networks.
60
86
  - **Dynamic Terminal URLs**: The programmatic CLI will now intelligently scan and log your external, reachable IPv4 addresses in the console output alongside the local endpoints. This eliminates confusion and guarantees that the automatically generated tokenized dashboard links are ready for immediate copy-pasting.
61
87
 
62
- ## [5.1.7] 2026-04-07
88
+ ## [5.1.7] — 2026-04-07
63
89
 
64
- ### 🌟 Fix Control UI CORS & Native 9Router Path Resolution
90
+ ### 🌟 Fix Control UI CORS & Native 9Router Path Resolution
65
91
 
66
92
  - **Fix Control UI CORS Rejections**: OpenClaw v2026.3.x strict CORS policies blocked remote dashboard access. The setup configuration and Docker patching scripts now automatically resolve all active IPv4 interfaces (`os.networkInterfaces()`) alongside localhost to pre-populate the `gateway.controlUi.allowedOrigins` array. This ensures the Web UI works flawlessly out-of-the-box on remote VPS instances.
67
93
  - **Improved Native PM2 Path Resolution**: To prevent PM2 `$PATH` lookup failures with `nvm` on Linux, the script now bypasses the OS `9router` binary wrapper entirely. Instead, it computes the exact explicit path using `$(npm root -g)/9router/app/server.js` and executes it directly via the NodeJS interpreter.
68
94
 
69
- ## [5.1.6] 2026-04-07
95
+ ## [5.1.6] — 2026-04-07
70
96
 
71
- ### 🐞 Fix PM2 SIGKILL on Native VPS Installs
97
+ ### 🐞 Fix PM2 SIGKILL on Native VPS Installs
72
98
 
73
99
  - **Fix `PM2 SIGKILL` Error**: Removed the `-t` (interactive TTY) flag from all background `9router` launches. This terminal-dependent flag could cause PM2 to hang and aggressively SIGKILL the spawned process on headless VPS environments.
74
100
  - **Robust PM2 Sync Helper**: Added a two-stage fallback for the 9Router smart-route sync script. If PM2 encounters `SIGKILL` or memory limits while spawning the sync helper, the setup gracefully falls back to a background `nohup node ... &` process instead of throwing a hard exception. If both fail, it logs a warning but allows the overall OpenClaw setup to finish successfully.
75
101
 
76
- ## [5.1.5] 2026-04-06
102
+ ## [5.1.5] — 2026-04-06
77
103
 
78
- ### 🐞 Fix Native PM2 9Router Startup
104
+ ### 🐞 Fix Native PM2 9Router Startup
79
105
 
80
106
  - **Fix**: Replaced shell string execution (`execSync`) with strict array arguments (`execFileSync`) when starting 9Router and its background sync script via PM2 on native systems. This guarantees reliable process spawning across both Linux (VPS) and Windows environments without PM2 shell-parsing errors on quotes or path spaces.
81
107
  - **Improved**: PM2 now explicitly runs the global `9router` binary via `--interpreter none` and the sync script via the current NodeJS runtime using `--interpreter process.execPath`.
82
108
 
83
- ## [5.1.4] 2026-04-06
109
+ ## [5.1.4] — 2026-04-06
84
110
 
85
- ### 🐞 Fix CLI Startup BOM Error & Improve Docker Timeout Patch
111
+ ### 🐞 Fix CLI Startup BOM Error & Improve Docker Timeout Patch
86
112
 
87
113
  - **Fix CLI BOM**: Removed the unexpected byte order mark (BOM) `\uFEFF` at the beginning of `cli.js` which could cause the shebang `#!/usr/bin/env node` to fail resolving or cause SyntaxErrors in certain environments
88
114
  - **Improve Docker Timeout Patching**: The backend timeout override injection (`300s`) during Docker build now defensively scans all `.js` files in the `openclaw/dist` directory rather than trying to fuzzy-find a specific `gateway-cli-*` hash. This ensures the patch succeeds across different OpenClaw backend builds without noisy console warnings
89
115
 
90
- ## [5.1.3] 2026-04-06
116
+ ## [5.1.3] — 2026-04-06
91
117
 
92
- ### 🐜 Fix Docker Compose Variable Interpolation Leak
118
+ ### 🐜 Fix Docker Compose Variable Interpolation Leak
93
119
 
94
120
  The previous base64 fix introduced a regression where the template literal `${Buffer.from(...)}` was mistakenly escaped in the composition script, causing the literal string to leak into `docker-compose.yml` instead of the actual base64 computed value.
95
121
 
@@ -97,111 +123,111 @@ The previous base64 fix introduced a regression where the template literal `${Bu
97
123
  - This guarantees the generated compose file receives the raw base64 string without any template interpolator conflicts
98
124
  - Also cleans up testing logic validating these fixes
99
125
 
100
- ## [5.1.2] 2026-04-06
126
+ ## [5.1.2] — 2026-04-06
101
127
 
102
- ### 🐛 Fix Shell Injection: Sync Script Now Uses Base64 Encoding
128
+ ### 🐛 Fix Shell Injection: Sync Script Now Uses Base64 Encoding
103
129
 
104
130
  The `node -e "...JSON.stringify(script)..."` approach caused `/bin/sh: Syntax error: "(" unexpected` because `JSON.stringify` produces a double-quoted string that breaks out of the surrounding `node -e "..."` shell argument.
105
131
 
106
132
  - **Fix**: sync script content is now **base64-encoded at compose-generation time** using `Buffer.from(script).toString('base64')`
107
133
  - The generated entrypoint becomes: `node -e "require('fs').writeFileSync('/tmp/sync.js',Buffer.from('<b64>','base64').toString())"`
108
- - Base64 output contains only `[A-Za-z0-9+/=]` zero shell quoting issues, works in YAML `|` blocks without escaping
109
- - Applies to all compose generation paths: Docker web wizard (`setup.js` × 2) and Docker CLI (`cli.js` × 2)
134
+ - Base64 output contains only `[A-Za-z0-9+/=]` — zero shell quoting issues, works in YAML `|` blocks without escaping
135
+ - Applies to all compose generation paths: Docker web wizard (`setup.js` × 2) and Docker CLI (`cli.js` × 2)
110
136
 
111
- ## [5.1.1] 2026-04-06
137
+ ## [5.1.1] — 2026-04-06
112
138
 
113
- ### 🔧 9Router Smart-Route Sync Stable via API
139
+ ### 🔧 9Router Smart-Route Sync — Stable via API
114
140
 
115
141
  Fixed a critical bug where the sync script could not detect active providers, causing all requests to fall back to `openai` (resulting in `404 No active credentials`).
116
142
 
117
- - **Root cause**: sync script read `db.providerConnections` from `db.json`, but this field does not exist in 9Router v0.3.79+ connections are only available via the REST API
118
- - **Fix**: sync script now calls `fetch('http://localhost:20128/api/providers')` `d.connections[]` to detect active providers dynamically
119
- - **Fix**: replaced fragile `cat << 'CLAWEOF'` heredoc injection (which caused `const p=undefined`) with `node -e require('fs').writeFileSync(...)` zero quoting issues in YAML+shell
143
+ - **Root cause**: sync script read `db.providerConnections` from `db.json`, but this field does not exist in 9Router v0.3.79+ — connections are only available via the REST API
144
+ - **Fix**: sync script now calls `fetch('http://localhost:20128/api/providers')` → `d.connections[]` to detect active providers dynamically
145
+ - **Fix**: replaced fragile `cat << 'CLAWEOF'` heredoc injection (which caused `const p=undefined`) with `node -e require('fs').writeFileSync(...)` — zero quoting issues in YAML+shell
120
146
  - **Fix**: `build9RouterSmartRouteSyncScript()` in CLI docker flow now correctly passes `'/root/.9router/db.json'` as the db path
121
147
  - Applies to all three sync script locations: Docker web wizard (`setup.js`), Docker CLI (`cli.js`), and native (`cli.js`)
122
148
 
123
- ### 📱 Zalo Pairing Auto-Approve During Gateway Run
149
+ ### 📱 Zalo Pairing — Auto-Approve During Gateway Run
124
150
 
125
151
  - Previously, auto-approve only ran during the initial login flow; new pairing requests while the gateway was already running were silently ignored
126
152
  - **Fix**: `openclaw gateway run` for Zalo Personal now pipes stdout/stderr and auto-calls `openclaw pairing approve zalouser <code>` whenever a new pairing code is detected
127
153
 
128
- ### 🧹 Cleaner Docker CLI Output
154
+ ### 🧹 Cleaner Docker CLI Output
129
155
 
130
156
  - Removed redundant post-setup instructions (`docker compose build`, `openclaw gateway`, PM2 commands) that appeared after Docker auto-build; Docker mode is self-contained and needs no manual follow-up steps
131
157
 
132
- ## [5.1.0] 2026-04-07
158
+ ## [5.1.0] — 2026-04-07
133
159
 
134
- ### 🤖 Zalo Personal Login Improvements
160
+ ### 🤖 Zalo Personal Login Improvements
135
161
 
136
162
  - Zalo Personal now uses the direct `zalouser` login flow on both native and Docker.
137
163
  - Setup prints the QR path plus exact login/copy commands, so users can get in fast without `openclaw onboard`.
138
164
  - Docker QR login now targets the generated `ai-bot` compose service instead of brittle container names.
139
165
 
140
- ## [5.0.9] 2026-04-06
166
+ ## [5.0.9] — 2026-04-06
141
167
 
142
- ### 🚀 Native Install Mode No Docker Required
168
+ ### 🚀 Native Install Mode — No Docker Required
143
169
 
144
170
  OpenClaw now supports **native (non-Docker) installation** on Windows, Linux, macOS, VPS, and shared hosting. Users who prefer not to use Docker can deploy the bot directly on their machine.
145
171
 
146
- - **CLI native mode** new deployment mode selector: `docker` (default) or `native`
172
+ - **CLI native mode** — new deployment mode selector: `docker` (default) or `native`
147
173
  - **OS-specific startup scripts** auto-generated:
148
- - 🪟 **Windows** `setup-openclaw-win.bat` (double-click install)
149
- - 🐧 **Linux / macOS** `setup-openclaw-linux.sh`
150
- - 🖥️ **VPS / Ubuntu** `setup-openclaw-vps.sh` (PM2 background process)
151
- - 🏠 **Shared Hosting / cPanel** `setup-openclaw-hosting.sh` + `ecosystem.config.cjs`
152
- - **Web Wizard updated** Deploy Mode toggle (Docker / Native) with OS sub-selection cards
153
- - **Dynamic host URLs** Ollama and 9Router URLs switch automatically:
174
+ - 🪟 **Windows** → `setup-openclaw-win.bat` (double-click install)
175
+ - 🐧 **Linux / macOS** → `setup-openclaw-linux.sh`
176
+ - 🖥️ **VPS / Ubuntu** → `setup-openclaw-vps.sh` (PM2 background process)
177
+ - 🏠 **Shared Hosting / cPanel** → `setup-openclaw-hosting.sh` + `ecosystem.config.cjs`
178
+ - **Web Wizard updated** — Deploy Mode toggle (Docker / Native) with OS sub-selection cards
179
+ - **Dynamic host URLs** — Ollama and 9Router URLs switch automatically:
154
180
  - Docker mode: `http://ollama:11434` / `http://9router:20128/v1`
155
181
  - Native mode: `http://localhost:11434` / `http://localhost:20128/v1`
156
- - **Node.js 18+ gate** Native mode enforces minimum Node.js version at setup time
157
- - **Test scripts** `test-native-install.bat` (Windows) and `test-native-install.sh` (Linux/macOS)
182
+ - **Node.js 18+ gate** — Native mode enforces minimum Node.js version at setup time
183
+ - **Test scripts** — `test-native-install.bat` (Windows) and `test-native-install.sh` (Linux/macOS)
158
184
 
159
- ### 🤖 Gemma 4 Model Updates
185
+ ### 🤖 Gemma 4 Model Updates
160
186
 
161
187
  - **4 Gemma 4 variants** available via Ollama: `gemma4:e2b` (~4-6 GB), `gemma4:e4b` (~8-10 GB), `gemma4:26b` (~18-24 GB), `gemma4:31b` (~24+ GB)
162
188
  - Auto-pull selected Gemma 4 variant on first `docker compose up` (container timeout extended to 15 min)
163
189
  - Raised Ollama timeout to **300 seconds** to handle large model inference
164
190
  - Added `OLLAMA_NUM_PARALLEL=1` and `OLLAMA_KEEP_ALIVE=24h` to Docker sidecar
165
191
 
166
- ### 🤖 Multi-Bot Deployment (up to 5 Telegram bots per workspace)
192
+ ### 🤖 Multi-Bot Deployment (up to 5 Telegram bots per workspace)
167
193
 
168
- OpenClaw now supports deploying **multiple independent Telegram bots** from a single setupeach with its own identity, slash command, AI personality, and isolated workspace directory.
194
+ OpenClaw now supports deploying **multiple independent Telegram bots** from a single setup—each with its own identity, slash command, AI personality, and isolated workspace directory.
169
195
 
170
- - **Deploy 15 bots in one go** Web Wizard and CLI both support multi-bot configuration
171
- - **Isolated workspaces** each bot gets its own `botN/` directory with a separate `.env` and `.openclaw/` config, preventing any token or configuration collision
172
- - **Port auto-assignment** ports start at `18791` and increment per bot (`18791`, `18792`, ...) to avoid host binding conflicts
173
- - **Multi-service Docker Compose** automatically generates a `docker-compose.yml` with one service per bot, plus a shared provider container (9Router or Ollama)
174
- - **Department Room Model** when bots share a Telegram group they operate like a professional team:
175
- - 🤫 **Silent by default** bots react with emoji (👍 ❤️) to casual messages but never spam replies
176
- - 📣 **@mention or /slash triggers** only the addressed bot responds, like calling a colleague by name in a meeting room
177
- - 🗃️ **Shared workspace** all bots read from a common workspace folder and can collaborate on tasks, files, and reports
196
+ - **Deploy 1–5 bots in one go** — Web Wizard and CLI both support multi-bot configuration
197
+ - **Isolated workspaces** — each bot gets its own `botN/` directory with a separate `.env` and `.openclaw/` config, preventing any token or configuration collision
198
+ - **Port auto-assignment** — ports start at `18791` and increment per bot (`18791`, `18792`, ...) to avoid host binding conflicts
199
+ - **Multi-service Docker Compose** — automatically generates a `docker-compose.yml` with one service per bot, plus a shared provider container (9Router or Ollama)
200
+ - **Department Room Model** — when bots share a Telegram group they operate like a professional team:
201
+ - 🤫 **Silent by default** — bots react with emoji (👍 ❤️) to casual messages but never spam replies
202
+ - 📣 **@mention or /slash triggers** — only the addressed bot responds, like calling a colleague by name in a meeting room
203
+ - 🗃️ **Shared workspace** — all bots read from a common workspace folder and can collaborate on tasks, files, and reports
178
204
  - **botGroup config** injected into each bot's `openclaw.json` so they are aware of each other's names and slash commands at runtime
179
205
 
180
- ### 🔗 Telegram Group ID Helper
206
+ ### 🔗 Telegram Group ID Helper
181
207
 
182
208
  Getting the Telegram Group ID is now frictionless:
183
209
 
184
- - **Web Wizard**: "Đã group" card now shows an inline `Lấy Group ID` button that opens **@userinfobot** directly, with step-by-step instructions (forward a group message bot replies with Chat ID)
210
+ - **Web Wizard**: "Đã có group" card now shows an inline `Lấy Group ID` button that opens **@userinfobot** directly, with step-by-step instructions (forward a group message → bot replies with Chat ID)
185
211
  - **CLI**: selecting "existing group" prints an interactive guide with numbered steps and a direct link to `https://t.me/userinfobot`
186
212
 
187
- ### 🎨 UI Refinements
213
+ ### 🎨 UI Refinements
188
214
 
189
215
  - **Group option selector** with **two interactive cards** with icon, description, hover glow, and animated selection checkmark
190
216
  - Card active state: green tint + border for "create later", indigo tint + border for "existing group"
191
- - Group ID input row includes inline helper button no more hunting for documentation
217
+ - Group ID input row includes inline helper button — no more hunting for documentation
192
218
 
193
- ## [5.0.0] 2026-04-04
219
+ ## [5.0.0] — 2026-04-04
194
220
 
195
- ### 🚀 Gemma 4 Support Google's Newest Open Model
221
+ ### 🚀 Gemma 4 Support — Google's Newest Open Model
196
222
 
197
223
  OpenClaw v5.0.0 adds **support for Gemma 4**, Google DeepMind's brand-new open-weights model family released April 2, 2026.
198
224
 
199
- - **Gemma 4 available in 3 sizes via Ollama** `gemma4:4b` (~6 GB RAM), `gemma4` default (~10 GB), `gemma4:27b` (~18 GB)
200
- - **Zero manual install** When you select Local Ollama + a Gemma 4 model, the setup now **auto-generates an `ollama` sidecar service** in `docker-compose.yml`. Docker pulls the model automatically on first `docker compose up`. No separate Ollama installation needed.
201
- - **OLLAMA_HOST auto-configured** Points to the Docker sidecar (`http://ollama:11434`) instead of the host machine.
202
- - **Full model list updated** Added `gemma4`, `gemma4:27b`, `gemma4:4b` to the Ollama provider in both CLI and Web Wizard.
225
+ - **Gemma 4 available in 3 sizes via Ollama** — `gemma4:4b` (~6 GB RAM), `gemma4` default (~10 GB), `gemma4:27b` (~18 GB)
226
+ - **Zero manual install** — When you select Local Ollama + a Gemma 4 model, the setup now **auto-generates an `ollama` sidecar service** in `docker-compose.yml`. Docker pulls the model automatically on first `docker compose up`. No separate Ollama installation needed.
227
+ - **OLLAMA_HOST auto-configured** — Points to the Docker sidecar (`http://ollama:11434`) instead of the host machine.
228
+ - **Full model list updated** — Added `gemma4`, `gemma4:27b`, `gemma4:4b` to the Ollama provider in both CLI and Web Wizard.
203
229
 
204
- ### 📋 Hardware Requirements for Gemma 4
230
+ ### 📋 Hardware Requirements for Gemma 4
205
231
 
206
232
  | Model | Min RAM/VRAM (4-bit) | Recommended |
207
233
  | ------------------ | -------------------- | ----------------------------- |
@@ -209,11 +235,11 @@ OpenClaw v5.0.0 adds **support for Gemma 4**, Google DeepMind's brand-new open-w
209
235
  | `gemma4` (default) | ~10 GB | PC 16 GB RAM |
210
236
  | `gemma4:27b` | ~18 GB | Workstation 32 GB / GPU 24 GB |
211
237
 
212
- > Gemma 4 is **free, open-weights, Apache 2.0**. No API key required runs 100% locally via Docker.
238
+ > Gemma 4 is **free, open-weights, Apache 2.0**. No API key required — runs 100% locally via Docker.
213
239
 
214
- ## [4.1.4] 2026-04-03
240
+ ## [4.1.4] — 2026-04-03
215
241
 
216
- ### Improvements
242
+ ### ✨ Improvements
217
243
 
218
244
  - CLI/Wizard parity: synchronized all skills (Browser Automation, Memory, RAG, Code Interpreter, etc.)
219
245
  - Browser Automation: added Desktop (Host Chrome) vs Server (Headless Chromium) mode selection for Linux/Ubuntu
@@ -221,148 +247,148 @@ OpenClaw v5.0.0 adds **support for Gemma 4**, Google DeepMind's brand-new open-w
221
247
  - Skills now install at container **runtime** (not build-time) to avoid ClawHub auth issues
222
248
  - Dynamic TOOLS.md: auto-generated listing all installed skills with hints
223
249
  - Added `browser-tool.js` (Desktop mode) and `BROWSER.md` for both modes
224
- - Skills registration in `openclaw.json skills.entries` at setup time
250
+ - Skills registration in `openclaw.json → skills.entries` at setup time
225
251
  - Email SMTP config prompts and `.env` injection
226
- - Single-source versioning via `bump-version.mjs` one command to update all files
252
+ - Single-source versioning via `bump-version.mjs` — one command to update all files
227
253
 
228
- ## [4.1.3] 2026-04-02
254
+ ## [4.1.3] — 2026-04-02
229
255
 
230
- ### Improvements
256
+ ### ✨ Improvements
231
257
 
232
258
  - CLI/Wizard parity: synchronized all skills (Browser Automation, Memory, RAG, Code Interpreter, etc.)
233
259
  - Browser Automation: added Desktop (Host Chrome) vs Server (Headless Chromium) mode selection
234
260
  - Fixed Dockerfile WORKDIR issue on Linux builds
235
261
  - Dynamic TOOLS.md: auto-generated based on selected skills
236
262
  - Added browser-tool.js for Desktop mode, BROWSER.md for both modes
237
- - Skills registration in `openclaw.json skills.entries` at setup time
263
+ - Skills registration in `openclaw.json → skills.entries` at setup time
238
264
  - Email SMTP config prompts and env var injection
239
265
 
240
266
  All notable changes to this project will be documented in this file.
241
267
 
242
- ## [4.1.2] 2026-04-01
268
+ ## [4.1.2] — 2026-04-01
243
269
 
244
270
  ### Fixed
245
271
 
246
272
  - **CLI setup**: Fixed `docker-compose.yml` generation syntax error for 9Router (`yaml: while scanning a simple key` issue) by using bash heredoc block scalars instead of single-line escaping for the `syncComboScript`.
247
273
 
248
- ## [4.1.0] 2026-04-01
274
+ ## [4.1.0] — 2026-04-01
249
275
 
250
- ### 🚀 Stable 9Router Smart Routing
276
+ ### 🚀 Stable 9Router Smart Routing
251
277
 
252
278
  - **Clean Database Initialize**: 9Router default combos are now 100% clean (`smart-route` only). Removed legacy injection of GPT-4o/Claude/Gemini to favor pure dynamic routing.
253
279
  - **Headless UI Toggling**: The setup wizard and CLI no longer display verbose model lists for 9Router; they now cleanly default to Auto Route (`smart-route`) and let the dynamic `PREF` algorithm handle failovers.
254
280
 
255
- ## [4.0.9] 2026-04-01
281
+ ## [4.0.9] — 2026-04-01
256
282
 
257
- ### 🔄 Dynamic Smart Route (Real-time Provider Sync)
283
+ ### 🔄 Dynamic Smart Route (Real-time Provider Sync)
258
284
 
259
285
  - **Zero-Waste Routing**: The `smart-route` combo is no longer a static list of 100+ models. A background sync loop now queries 9Router's `/api/providers` every 30 seconds and dynamically builds the combo from **only connected + enabled providers**. This eliminates `404 No active credentials` errors entirely.
260
- - **Instant Provider Toggle**: Toggle providers on/off in the 9Router Dashboard the combo updates automatically within 30s. No restart required.
286
+ - **Instant Provider Toggle**: Toggle providers on/off in the 9Router Dashboard — the combo updates automatically within 30s. No restart required.
261
287
  - **Smart Mapping**: Full provider-to-model mapping covering 25+ providers (Codex, Claude Code, GitHub Copilot, Cursor, Kilo, Cline, Gemini CLI, iFlow, Qwen, Kiro, Ollama, GLM, MiniMax, DeepSeek, xAI, Mistral, Groq, etc.).
262
288
 
263
- ### 🐳 Docker Auto-Install
289
+ ### 🐳 Docker Auto-Install
264
290
 
265
291
  - **Zero-Prerequisite Setup**: `npx create-openclaw-bot` now detects if Docker is installed. If missing, it offers to install automatically via `winget` (Windows), `brew` (macOS), or the official Docker install script (Linux).
266
292
  - **Guided Recovery**: Clear instructions and download links if automatic installation fails.
267
293
 
268
- ## [4.0.8] 2026-03-31
294
+ ## [4.0.8] — 2026-03-31
269
295
 
270
- ### 9Router Stability & Ollama Cloud
296
+ ### ✨ 9Router Stability & Ollama Cloud
271
297
 
272
298
  - **Stable 9Router Integration (Zero Config)**: The 9Router proxy is now fully stabilized and runs securely within the Docker network via `sk-no-key`. External configuration (API keys, manual routing) is removed from `.env` and elegantly managed via the [9Router Dashboard](http://localhost:20128/dashboard).
273
299
  - **Expanded Model Connectivity**: Added comprehensive support for Ollama Cloud models (_Qwen 3.5, GLM-5, MiniMax, GPT-OSS_), Kiro Haiku, Qwen Flash, and extended iFlow free tiers.
274
300
  - **Smart Routing Injection**: The configuration dynamically injects the `smart-route` combination to balance logic workload across Codex, Claude Code, Gemini, and iFlow.
275
301
 
276
- ### 🧹 Clean Workspace & Cross-Platform Auto-Setup
302
+ ### 🧹 Clean Workspace & Cross-Platform Auto-Setup
277
303
 
278
304
  - **Zero-Clutter Generation**: Eliminated all redundant `.env.example` and static `docker-compose` sample templates. The `.bat` / CLI wizard now dynamically constructs the precise Docker environment necessary.
279
305
  - **Cross-Platform Auto Browser**: Added a native macOS/Linux `start-chrome-debug.sh` boot script alongside the Windows `.bat`, providing instant 1-click Chrome Debug Mode initialization.
280
306
  - **CLI Feature Parity**: `npx create-openclaw-bot` now prompts for User Identity and Bot Persona, matching the GUI Web UI capabilities exactly.
281
307
 
282
- ## [4.0.1] 2026-03-31
308
+ ## [4.0.1] — 2026-03-31
283
309
 
284
- ### Automation (Auto-create install dir) & NPM CLI
310
+ ### ✨ Automation (Auto-create install dir) & NPM CLI
285
311
 
286
312
  - **One-Command Install (npx)**: The `create-openclaw-bot` CLI package is now published to NPM. Windows, Linux, and Mac users can simply run `npx create-openclaw-bot` to setup everything via an interactive terminal flow.
287
313
  - **Auto Setup & Docker Start**: The deployment script (`.bat` / CLI) is completely overhauled. Once configured, Docker compose automatically builds and spins up the Bot instance seamlessly.
288
314
  - **Improved UI Setup**: Cleaned up the Step 4 file previews. Revamped the Zalo Bot API channel UI card to use the official vector SVG (popping blue colors over the frosted glass background).
289
315
  - **Safety First**: Removed Antigravity (AG) models from the 9router Proxy Models option to prevent permanent Google AI Ultra abuse bans. Added bright red warnings on the Setup GUI. Updated crediting for thesvg.org.
290
316
 
291
- ## [4.0.0] 2026-03-30
317
+ ## [4.0.0] — 2026-03-30
292
318
 
293
- ### New Features & Updates
319
+ ### ✨ New Features & Updates
294
320
 
295
- - **Full English Localization** Completed all English translations for the Setup Wizard (Buttons, Labels, Step 4 Output).
296
- - **Language Toggle Relocation** Moved the language toggle (VI/EN) to a more visible and accessible location.
297
- - **Setup UI/UX Fixes** Improved the Setup Wizard UI for Browser Automation and resolved display issues (such as the undefined model badge).
298
- - **Reference Error Fixes** Fixed several Reference Errors during the setup execution.
321
+ - **Full English Localization** — Completed all English translations for the Setup Wizard (Buttons, Labels, Step 4 Output).
322
+ - **Language Toggle Relocation** — Moved the language toggle (VI/EN) to a more visible and accessible location.
323
+ - **Setup UI/UX Fixes** — Improved the Setup Wizard UI for Browser Automation and resolved display issues (such as the undefined model badge).
324
+ - **Reference Error Fixes** — Fixed several Reference Errors during the setup execution.
299
325
 
300
- ## [3.0.2] 2026-03-29
326
+ ## [3.0.2] — 2026-03-29
301
327
 
302
- ### 9Router Smart Proxy Expansion
328
+ ### ✨ 9Router Smart Proxy Expansion
303
329
 
304
- - **9Router db.json Stability** Updated the `db.json` injection logic for 9Router via entrypoint to prevent "No such file or directory, lstat db.json" errors.
305
- - **Flagship Fallback Proxy** Configured "Smart Proxy" with a rotating list of the most powerful flagship LLMs from Codex, Antigravity, Claude Code, and Github Copilot.
306
- - **Setup Wizard Customization** The wizard now displays a complete list of providers/models, setting the Smart Proxy as the preferred default to automatically resolve "404 No Active Credentials" errors.
330
+ - **9Router db.json Stability** — Updated the `db.json` injection logic for 9Router via entrypoint to prevent "No such file or directory, lstat db.json" errors.
331
+ - **Flagship Fallback Proxy** — Configured "Smart Proxy" with a rotating list of the most powerful flagship LLMs from Codex, Antigravity, Claude Code, and Github Copilot.
332
+ - **Setup Wizard Customization** — The wizard now displays a complete list of providers/models, setting the Smart Proxy as the preferred default to automatically resolve "404 No Active Credentials" errors.
307
333
 
308
- ## [3.0.1] 2026-03-29
334
+ ## [3.0.1] — 2026-03-29
309
335
 
310
- ### New Features
336
+ ### ✨ New Features
311
337
 
312
- - **Wizard UI Redesign (Step 2)** Brought AI Provider/Model selection to the top, followed by Identity, Personality, Security Rules, and Extensions.
313
- - **User Info Textarea** Users can input information about themselves injected into `USER.md` for bot personalization.
314
- - **Editable Security Rules** Displays default security rules, users can edit them injected into `AGENTS.md`.
315
- - **Section Dividers** Added icon dividers between config groups (🤖 🔐 🧩).
338
+ - **Wizard UI Redesign (Step 2)** — Brought AI Provider/Model selection to the top, followed by Identity, Personality, Security Rules, and Extensions.
339
+ - **User Info Textarea** — Users can input information about themselves → injected into `USER.md` for bot personalization.
340
+ - **Editable Security Rules** — Displays default security rules, users can edit them → injected into `AGENTS.md`.
341
+ - **Section Dividers** — Added icon dividers between config groups (🤖 🔐 🧩).
316
342
 
317
- ### 🐛 Bug Fixes
343
+ ### 🐛 Bug Fixes
318
344
 
319
- - **Skills Auto-enable** Selecting a skill now automatically registers it in `openclaw.json` `skills.entries` (enabled: true). Previously, it only set up the Dockerfile without registering, making the bot ignore the skill.
320
- - **Skills Env Injection** Skills requiring API keys (Tavily, SMTP) now automatically inject env vars into `skills.entries`.
345
+ - **Skills Auto-enable** — Selecting a skill now automatically registers it in `openclaw.json` → `skills.entries` (enabled: true). Previously, it only set up the Dockerfile without registering, making the bot ignore the skill.
346
+ - **Skills Env Injection** — Skills requiring API keys (Tavily, SMTP…) now automatically inject env vars into `skills.entries`.
321
347
 
322
- ### 🎨 UI/UX
348
+ ### 🎨 UI/UX
323
349
 
324
- - Identity grid changed to 3 columns (Name, Role, Emoji) removed Vibe (merged into System Prompt).
350
+ - Identity grid changed to 3 columns (Name, Role, Emoji) — removed Vibe (merged into System Prompt).
325
351
  - Emoji input fix: assigned `form-input--emoji` class, matching the height of other inputs.
326
352
  - System Prompt label changed to "Personality, Vibe & Response Rules".
327
353
  - Responsive mobile: Name is full width, Role + Emoji are side-by-side.
328
- - Security textarea is readonly by default, equipped with a "✏️ Edit" / "🔒 Lock" toggle button.
354
+ - Security textarea is readonly by default, equipped with a "✏️ Edit" / "🔒 Lock" toggle button.
329
355
 
330
- ### 🔧 Technical
356
+ ### 🔧 Technical
331
357
 
332
- - `state.config.userInfo` new field, saved from the `cfg-user-info` textarea.
333
- - `state.config.securityRules` editable, defaults per language (vi/en).
358
+ - `state.config.userInfo` — new field, saved from the `cfg-user-info` textarea.
359
+ - `state.config.securityRules` — editable, defaults per language (vi/en).
334
360
  - `DEFAULT_SECURITY_RULES` constant established with vi/en templates.
335
361
  - `clawConfig.skills.entries` generated dynamically from selected skills.
336
362
  - Language toggle now updates both the system prompt and security rules dynamically.
337
363
 
338
364
  ---
339
365
 
340
- ## [3.0.0] 2026-03-28
366
+ ## [3.0.0] — 2026-03-28
341
367
 
342
- ### New Features
368
+ ### ✨ New Features
343
369
 
344
- - **9Router Integration** AI proxy, no API key required, multi-container Docker (`docker-compose.yml` 2 services).
345
- - **Skills System (ClawHub)** 8 agent capabilities: Web Search, Browser Automation, Memory, RAG, Image Gen, Bot Scheduler, Code Interpreter, Email Assistant.
346
- - **Plugins System (npm)** 4 runtime extensions: Voice Call, Matrix, MS Teams, Nostr.
347
- - **Browser Automation** Full Chrome Debug Mode support (socat proxy, agent-browser, Playwright engine).
348
- - **Task Scheduler** Windows Scheduled Task auto-starts Chrome Debug mode on logon (10s delay).
349
- - **Skill-aware .env** `.env` template automatically includes env vars for skills requiring API keys (Tavily, SMTP, Flux...).
350
- - **Post-setup Management** Added guide for adding/removing skills/plugins post-setup via `docker exec`.
370
+ - **9Router Integration** — AI proxy, no API key required, multi-container Docker (`docker-compose.yml` 2 services).
371
+ - **Skills System (ClawHub)** — 8 agent capabilities: Web Search, Browser Automation, Memory, RAG, Image Gen, Bot Scheduler, Code Interpreter, Email Assistant.
372
+ - **Plugins System (npm)** — 4 runtime extensions: Voice Call, Matrix, MS Teams, Nostr.
373
+ - **Browser Automation** — Full Chrome Debug Mode support (socat proxy, agent-browser, Playwright engine).
374
+ - **Task Scheduler** — Windows Scheduled Task auto-starts Chrome Debug mode on logon (10s delay).
375
+ - **Skill-aware .env** — `.env` template automatically includes env vars for skills requiring API keys (Tavily, SMTP, Flux...).
376
+ - **Post-setup Management** — Added guide for adding/removing skills/plugins post-setup via `docker exec`.
351
377
 
352
- ### 🎨 UI/UX
378
+ ### 🎨 UI/UX
353
379
 
354
- - Separated Skills (4-column grid) from Plugins clearer interface layout.
355
- - Skill cards now show notes (⚙️) for skills that require extra setup.
380
+ - Separated Skills (4-column grid) from Plugins — clearer interface layout.
381
+ - Skill cards now show notes (⚙️) for skills that require extra setup.
356
382
  - Added Browser Automation notice card in Step 4 featuring `.bat` + `.ps1` scripts.
357
- - Management guide card (🔧) featuring `docker exec` commands.
383
+ - Management guide card (🔧) featuring `docker exec` commands.
358
384
 
359
- ### 📚 Documentation
385
+ ### 📚 Documentation
360
386
 
361
- - `docs/browser-automation-guide.md` Included Browser Automation usage guide for users.
362
- - `docs/skills-plugins-guide.md` Synthesized all skills/plugins + setup steps + list of required env vars.
363
- - README.md / README.vi.md Updated with 9Router, Skills/Plugins, and new FAQs.
387
+ - `docs/browser-automation-guide.md` — Included Browser Automation usage guide for users.
388
+ - `docs/skills-plugins-guide.md` — Synthesized all skills/plugins + setup steps + list of required env vars.
389
+ - README.md / README.vi.md — Updated with 9Router, Skills/Plugins, and new FAQs.
364
390
 
365
- ### 🔧 Technical
391
+ ### 🔧 Technical
366
392
 
367
393
  - `state.config.skills[]` + `state.config.plugins[]` are managed independently.
368
394
  - `openclaw.json` dynamically injects `browser` config when Browser skill is selected.
@@ -371,40 +397,40 @@ All notable changes to this project will be documented in this file.
371
397
 
372
398
  ---
373
399
 
374
- ## [2.0.0] 2026-03-27
400
+ ## [2.0.0] — 2026-03-27
375
401
 
376
- ### New Features
402
+ ### ✨ New Features
377
403
 
378
- - **Setup Wizard UI** Interactive web wizard (`index.html`) to configure OpenClaw bots visually.
379
- - **Multi-Channel Support** Added support for Telegram, Zalo Bot API, and Zalo Personal channels.
380
- - **Multi-Provider AI** Support for Google Gemini, Anthropic Claude, OpenAI/Codex, OpenRouter, and Ollama (local).
381
- - **Plugin System** Modular plugin grid supporting Browser Automation, Scheduler, Memory, Web Search, RAG, and Image Gen.
382
- - **Config Generation** Automatically generates `openclaw.json`, `agent.yaml`, `Dockerfile`, and `docker-compose.yml`.
383
- - **Language Toggle** VI/EN toggle switch utilizing SVG flag icons.
384
- - **Brand Logos** Implemented high-quality SVG logos from [thesvg.org](https://thesvg.org) for all providers and channels.
404
+ - **Setup Wizard UI** — Interactive web wizard (`index.html`) to configure OpenClaw bots visually.
405
+ - **Multi-Channel Support** — Added support for Telegram, Zalo Bot API, and Zalo Personal channels.
406
+ - **Multi-Provider AI** — Support for Google Gemini, Anthropic Claude, OpenAI/Codex, OpenRouter, and Ollama (local).
407
+ - **Plugin System** — Modular plugin grid supporting Browser Automation, Scheduler, Memory, Web Search, RAG, and Image Gen.
408
+ - **Config Generation** — Automatically generates `openclaw.json`, `agent.yaml`, `Dockerfile`, and `docker-compose.yml`.
409
+ - **Language Toggle** — VI/EN toggle switch utilizing SVG flag icons.
410
+ - **Brand Logos** — Implemented high-quality SVG logos from [thesvg.org](https://thesvg.org) for all providers and channels.
385
411
 
386
- ### 🎨 Design
412
+ ### 🎨 Design
387
413
 
388
414
  - Dark-themed glassmorphism UI overlaid with animated multi-layer gradients.
389
415
  - Provider cards designed with unique colored icon backgrounds (Gemini purple, Claude orange, OpenAI green, OpenRouter violet, Ollama cyan).
390
416
  - Auto-expanding System Prompt textarea without internal scroll.
391
417
  - Developed a shimmer animation on the title and glow effects on selected cards.
392
418
 
393
- ### 📚 Documentation
419
+ ### 📚 Documentation
394
420
 
395
- - `README.md` / `README.vi.md` Authored full bilingual docs, including a multi-provider comparison table.
396
- - `SETUP.md` / `SETUP.vi.md` Provided a technical setup guide specifically intended for AI agents.
421
+ - `README.md` / `README.vi.md` — Authored full bilingual docs, including a multi-provider comparison table.
422
+ - `SETUP.md` / `SETUP.vi.md` — Provided a technical setup guide specifically intended for AI agents.
397
423
  - Security directive notice: Clarified that System Prompt determines personality only, while the framework enforces security rules.
398
424
 
399
- ### 🔒 Security
425
+ ### 🔒 Security
400
426
 
401
- - Enforced a No-credentials-in-UI policy instructing users to create `.env` files locally.
427
+ - Enforced a No-credentials-in-UI policy — instructing users to create `.env` files locally.
402
428
  - Dynamic credential instructions presented conditionally per provider and channel.
403
429
  - OpenClaw framework automatically enforces default system security rules.
404
430
 
405
431
  ---
406
432
 
407
- ## [1.0.0] 2026-03-26
433
+ ## [1.0.0] — 2026-03-26
408
434
 
409
435
  ### Initial Release
410
436
 
@@ -413,3 +439,4 @@ All notable changes to this project will be documented in this file.
413
439
  - Configured Google Gemini single provider support.
414
440
  - Included manual configuration file setup instructions.
415
441
 
442
+