create-openclaw-bot 5.4.0 โ†’ 5.4.2

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,170 +1,190 @@
1
- # Changelog (English)
2
-
3
-
4
- ## [5.4.0] โ€” 2026-04-14
5
-
6
- ### ๐Ÿ—‘๏ธ Remove: Telegram + Zalo Combo Channel
7
-
8
- - **Deprecated and removed `telegram+zalo-personal` combo mode** from both the Web Wizard and CLI. The channel card is hidden in `index.html`, removed from `channels.js` and `data/index.js`, and all conditional logic has been purged from `controller.js`, `output.js`, `steps.js`, `multi-bot.js`, `win-bat.js`, `macos-sh.js`, `linux-sh.js`, `vps-sh.js`, `native-helpers-gen.js`, and `cli.src.js`. Combo mode will be redesigned in a future release.
9
-
10
- ### ๐Ÿ—๏ธ Refactor: Multi-Bot Architecture
11
-
12
- - **Unified multi-bot flag** โ€” `isTelegramMultiBot`, `isSharedMultiBot`, and `isMultiBotWizard` have all been merged into a single `isMultiBot` boolean throughout the codebase. Reduces complexity and eliminates divergent code paths.
13
- - **Fixed `agentDir` path resolution** โ€” `agentDir` in generated `openclaw.json` is now correctly set as `.openclaw/agents/{slug}/agent` (relative to `OPENCLAW_HOME`). Previously used an incorrect project-root-level `agents/{slug}/agent` path that caused double-prefix errors at runtime.
14
- - **Removed redundant `agents/` root folder creation** โ€” OS scripts no longer attempt to `mkdir agents/` at the project root; all agent files are created under `.openclaw/agents/`.
15
-
16
- ### ๐Ÿงน Config Generation Cleanup
17
-
18
- - **Removed per-agent `auth-profiles.json` for 9Router/proxy mode** โ€” When the provider is a proxy (9Router), per-agent `auth-profiles.json` is no longer generated. This file is only created for direct API providers where per-agent authentication is required.
19
- - **Removed `.env` generation for native deployments** โ€” Bot tokens and API keys for native mode are now managed via `openclaw channels login` / the 9Router dashboard. No `.env` is auto-generated in native scripts to avoid credential sprawl.
20
- - **Removed per-agent `models.json` for Ollama (CLI)** โ€” Ollama model config is already declared in `openclaw.json โ†’ agents.defaults.model`. The redundant per-agent `models.json` in `agents/{id}/agent/` is no longer generated.
21
-
22
- ### ๐Ÿค Cross-Workspace Rules in AGENTS.md
23
-
24
- - **Multi-bot `AGENTS.md` now includes a "Cross-Workspace" section** โ€” In multi-bot (relay) mode, each bot's `AGENTS.md` receives a `๐Ÿค Workspace Chรฉo (Multi-Agent)` / `๐Ÿค Cross-Workspace (Multi-Agent)` section listing the workspace paths of sibling bots. Rules: bots may read each other's `IDENTITY`, `SOUL`, and `MEMORY` files for shared context; they must not delete or overwrite each other's workspace files without explicit user instruction.
25
-
26
- ### ๐Ÿ”ง win-bat.js Refactor
27
-
28
- - **Extracted `appendGatewayStart()` and `appendDashboardInfo()` helpers** โ€” Repeated PowerShell gateway launch and dashboard URL blocks are now deduplicated into two local helper functions inside `generateWinBat`, reducing the Windows batch generator by ~50 lines.
29
-
30
-
31
- ## [5.3.5] โ€” 2026-04-12
32
-
33
- ### ๐Ÿ› Fix: MEMORY.md Syntax Error in Zalo Workspace Files
34
-
35
- - **Fix: `SyntaxError: Unexpected token ':'` in `setup.js`** โ€” the previous TOOLS.md patch was inserted after the `vi` ternary arm of MEMORY.md, orphaning the `: en-value` colon arm below it. VS Code showed this as 7 error badges on `setup.js`. Now fixed; both MEMORY.md arms are contiguous, then TOOLS.md follows as a clean separate property.
36
-
37
- ### ๐ŸŸ Improvement: Uninstall Script Written to Project Folder
38
-
39
- - **All 4 OS native flows + Docker ZIP** now include the matching `uninstall-*.{bat,sh}` script **in the project folder** during setup. Previously the uninstall was only available as a separate browser download. Pattern mirrors `start-chrome-debug.bat` / `.sh`:
40
- - Windows native: `uninstall-openclaw-win.bat` written via `appendBatWriteCommands`
41
- - macOS native: `uninstall-openclaw.sh` written via `appendShWriteCommands`
42
- - VPS/Ubuntu: `uninstall-openclaw-vps.sh` written via `appendShWriteCommands`
43
- - Linux Desktop: `uninstall-openclaw.sh` written via `appendShWriteCommands`
44
- - Docker (all OS): uninstall script included in the generatedFiles ZIP
45
-
46
-
47
-
48
- ### ๐Ÿ› Windows Native โ€” Gateway & Workspace Stability
49
-
50
- - **Fix: Gateway terminal auto-closing** โ€” `call openclaw gateway run` was blocking the setup terminal indefinitely; closing the window killed the gateway process. The gateway is now launched in a **dedicated, visible CMD window** via a PS1 background launcher (same pattern as 9Router), so the setup terminal closes cleanly while the gateway keeps running.
51
- - **Fix: `call` missing from `openclaw gateway stop`** โ€” The gateway stop command before relaunch was missing the `call` keyword, which could prevent the bat script from returning control after the stop completes. Added `call openclaw gateway stop 2>nul` in all affected paths.
52
- - **Fix: Workspace naming** โ€” Single-bot deployments previously used a generic `.openclaw/workspace` path. All agents (single-bot and multi-bot) now use a named directory matching their agent ID: `.openclaw/workspace-{agentId}` (e.g. `workspace-williams`, `workspace-luna`). This prevents workspace collisions and aligns the folder structure with the `agents/{agentId}` directory convention.
53
- - **Improve: TOOLS.md enriched for all bots** โ€” The generated `TOOLS.md` now includes both the custom skills & conventions section AND a "Local Notes" template section adapted from the OpenClaw workspace default, giving users a clear starting point for documenting environment-specific config.
54
- - **Improve: Zalo bot AGENTS.md now includes security rules** โ€” The generated `AGENTS.md` for Zalo Personal bots (Luna-pattern) now appends the same `๐Ÿ” Security Rules โ€” MANDATORY` block that Telegram bots receive (file-system boundaries, credential hygiene, crypto wallet protection, Docker mount rules).
55
- - **Improve: Zalo bot TOOLS.md added** โ€” Zalo bot workspaces now receive a `TOOLS.md` file with the same skills list and conventions structure as Telegram bots.
56
-
57
-
58
- ## [5.3.3] โ€” 2026-04-11
59
-
60
- ### ๐Ÿงน Automated Uninstall Scripts
61
-
62
- - **Wizard UI Generation**: The HTML setup wizard now generates a matching `uninstall-openclaw-*.bat/sh` script when downloading the configuration for Native or Docker deployments.
63
- - **Complete Cleanup**: The generated scripts cleanly kill 9Router/OpenClaw background processes, uninstall global npm packages, and safely remove the project and `.9router` data directories, allowing for a fresh start whenever needed.
64
-
65
-
66
-
67
- ## [5.3.2] โ€” 2026-04-11
68
-
69
- ### ๐Ÿ› Windows Native โ€” 9Router Launch Stability
70
-
71
- - **Fix: Remove `-l` (stdin listen) flag from native 9Router launch** โ€” `resolveNative9RouterDesktopLaunch()` previously passed `-l` which puts 9Router into interactive REPL mode. When spawned as a background process (no TTY), this caused the process to hang waiting for stdin input. Removed the flag; 9Router now starts reliably in the background on Windows, macOS desktop, and any non-VPS native flow.
72
- - **Fix: Pre-seed `DATA_DIR/.9router/db.json` with `requireLogin: false` before 9Router starts** โ€” If `db.json` does not exist when 9Router boots, it uses its own default path (`~/.9router`) and defaults `requireLogin` to `true`, causing the dashboard login wall. The CLI wizard now creates the `.9router` directory and writes a minimal `db.json` (with `requireLogin: false`) **before** spawning 9Router, matching the behavior of the fixed `setup-openclaw-win.bat` batch file.
73
- - **No change to PM2/VPS flow** โ€” The fix applies only to the desktop/background spawn path (`osChoice !== 'vps'`). VPS users still use the existing PM2-managed `startNative9RouterPm2` flow which is unaffected.
74
-
75
- ## [5.3.1] โ€” 2026-04-10
76
-
77
- ### ๐ŸŒŸ Zalo Personal DM Policy
78
-
79
- - **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.
80
-
81
-
82
- ## [5.3.0] โ€” 2026-04-11
83
-
84
- ### ๐Ÿ†• Multi-Channel: Telegram + Zalo Personal Simultaneously
85
-
86
- - **Combo channel option** โ€” New `telegram+zalo-personal` option in both CLI wizard (`select`) and web wizard (channel card). Selecting it configures a single bot to receive messages from both Telegram and Zalo Personal at the same time.
87
- - **Auto-inject `plugins.entries.zalouser`** โ€” When any Zalo Personal channel is selected, `openclaw.json` now automatically includes `plugins.entries.zalouser: { enabled: true }`, fixing the root cause of the "not configured" error on Zalo startup.
88
- - **Docker cold-start fix in Dockerfile CMD** โ€” A background `(sleep 45 && node -e '...touch historyLimit...')` script is now baked into the generated `Dockerfile` CMD. Triggers chokidar โ†’ gateway hot-reload โ†’ `restartChannel('zalouser')` after Docker network warms up. No more manual `lastTouchedAt` workarounds.
89
- - **Helper predicates** โ€” Added `hasTelegram(ck)` and `hasZaloPersonal(ck)` functions replacing all literal `channelKey === 'telegram/zalo-personal'` comparisons throughout `cli.js` for cleaner extensibility.
90
- - **Smoke tests updated** โ€” `tests/smoke-cli-logic.mjs` updated to match the new predicate-based assertions (78 checks passing).
91
-
92
- ## [5.2.4] โ€” 2026-04-10
93
-
94
- ### ๐Ÿ› Bug Fixes & Developer Tooling
95
-
96
- - **Fix: `docker compose build --no-cache` during upgrade** โ€” Removed the `--no-cache` flag from the upgrade flow. Without it, Docker correctly reuses cached layers (including Playwright/Chromium ~300MB) and only rebuilds the `openclaw` layer that changed, making upgrades significantly faster.
97
- - **UX: Upgrade CLI banner now matches upgrade.ps1/sh style** โ€” `runUpgrade()` in `cli.js` now renders the same โ•ญโ•ฎโ•ฐโ•ฏ box using visual-width calculation (`vw()`) instead of plain `===` separators.
98
- - **New: GitHub Actions workflow to auto-detect openclaw updates** โ€” `.github/workflows/check-openclaw-update.yml` runs daily, compares the pinned `OPENCLAW_NPM_SPEC` in `cli.js` with the latest version on npm, and automatically creates a GitHub Issue with upgrade instructions if a new version is available.
99
-
100
- ## [5.2.3] โ€” 2026-04-10
101
-
102
- ### ๐Ÿ› Bug Fixes & Encoding Improvements
103
-
104
- - **Fix: `ReferenceError: projectDir is not defined`** โ€” Crash when clicking "Generate Configs" in multi-bot mode. `nativeProjectOpenClawRoot` in `buildTelegramPostInstallChecklist()` referenced an undefined `projectDir` variable and was dead code (unused in return value). Removed.
105
- - **Fix: Step 3 "Next" button validation** โ€” `state._activeBotTab` was a typo of `state.activeBotIndex`, causing multi-bot validation to always read the wrong tab index.
106
- - **Fix: `saveFormData()` always saved bot tab name to `bots[0]`** โ€” In multi-bot mode, the active bot name was always written to `bots[0]` regardless of which tab was active. Now correctly saves to `bots[state.activeBotIndex]`.
107
- - **UX: Inline hint for disabled "Generate Configs" button** โ€” When the button is blocked, a warning now appears showing exactly which fields are still missing (e.g. "Missing: GOOGLE_API_KEY").
108
- - **Fix: Vietnamese diacritics in generated `.bat` and `.sh` scripts** โ€” All Vietnamese echo/Write-Host strings in the generated Windows setup script and Linux/macOS bash script have been converted to ASCII (no diacritics) to prevent encoding errors on systems with non-UTF-8 codepages.
109
-
110
- ## [5.2.2] โ€” 2026-04-10
111
-
112
-
113
- ### ๐Ÿ› Docker & Native PM2 Bug Fixes
114
-
115
- - **Fix Docker crash loop (socat port conflict)**: `socat TCP-LISTEN:18791` was binding `0.0.0.0:18791` before `openclaw gateway run` started, causing `EADDRINUSE` on `127.0.0.1:18791`. Removed the broken gateway bridge from the generated Dockerfile CMD in both `cli.js` and `setup.js`.
116
- - **Fix Docker dashboard not accessible from host**: Gateway `bind` was set to `'loopback'` โ€” Docker port mapping cannot route to container loopback. Restored the v5.0.9 working pattern: `bind:'custom', customBindHost:'0.0.0.0'`.
117
- - **Fix `delete c.gateway.customBindHost`**: A stray `delete` statement was erasing the `customBindHost` key right after setting it. Removed.
118
- - **Fix Docker build re-downloading npm packages on every rebuild**: `ARG CACHEBUST=<epoch>` was cache-busting the `npm install -g openclaw` layer on every build (even config-only changes). Replaced with a version-stable `ARG OPENCLAW_VER` so Docker layer cache is reused between rebuilds.
119
- - **Fix native PM2 double `.openclaw` nesting**: `ecosystem.config.js` was setting `OPENCLAW_HOME: projectDir/.openclaw`, causing OpenClaw to resolve workspace as `projectDir/.openclaw/.openclaw/workspace`. Removed `OPENCLAW_HOME` from PM2 env; OpenClaw discovers config via `cwd` (matching v5.0.9 behavior).
120
-
121
- ## [5.2.1] โ€” 2026-04-09
122
-
123
- ### ๐Ÿ› Native Ubuntu/VPS Bug Fixes
124
-
125
- - **Fix `Bot-9router errored` (PM2)**: `resolveNative9RouterDesktopLaunch` was trying to locate `9router/app/server.js` inside npm global dirs โ€” a path that doesn't exist after standard `npm install -g 9router`. Now uses the `9router` CLI binary directly with proper args (`-n -l -H 0.0.0.0 -p 20128 --skip-update`), preventing the `โ†บ 15` restart loop.
126
- - **Fix double `.openclaw` workspace path**: `workspace` and `agentDir` in generated `openclaw.json` were set as absolute paths (e.g. `/home/user/bot/.openclaw/workspace`). OpenClaw resolves these relative to `OPENCLAW_HOME`, causing a double-prefix (`/home/user/bot/.openclaw/.openclaw/workspace`). Changed to relative paths (`workspace`, `agents/<id>/agent`) matching Docker behavior.
127
- - **Fix missing runtime packages on native install**: `grammy`, `@grammyjs/runner`, `@grammyjs/transformer-throttler`, `@buape/carbon`, `@larksuiteoapi/node-sdk`, `@slack/web-api` were installed in Docker (Dockerfile) but skipped on native. `installLatestOpenClaw` now installs all `OPENCLAW_RUNTIME_PACKAGES` after the main binary.
128
- - **Fix `openclaw: command not found` after install**: Post-setup Zalo login instructions now include a `source ~/.bashrc && source ~/.profile` hint for new terminal sessions on Linux.
129
- - **Fix Zalo session stored in wrong directory**: Manual login hint now includes `OPENCLAW_HOME` and `OPENCLAW_STATE_DIR` env vars so sessions are saved to `<projectDir>/.openclaw/credentials/zalouser/` โ€” the same path the PM2 gateway reads from.
130
- - **Fix relative project path**: `projectDir` input is now normalized with `path.resolve()` so typing `home/ubuntu/bot` (without leading `/`) correctly resolves to `/home/ubuntu/bot`.
131
-
132
-
133
- ## [5.2.0] โ€” 2026-04-09
134
-
135
- ### One-Command Upgrade (No Wizard Required)
136
-
137
- - 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.
138
- - Added `upgrade.ps1` for Windows users โ€” double-click in the bot folder to trigger an upgrade. No terminal knowledge required.
139
- - 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.
140
- - All user data is preserved during upgrade: `.env`, `.openclaw/memory/`, sessions, credentials, and 9Router OAuth tokens are never modified.
141
- - Docker mode: patching `Dockerfile` (`OPENCLAW_NPM_SPEC` + `CACHEBUST` refresh) then `docker compose build --no-cache` + `docker compose up -d`.
142
- - Native / PM2 mode: reinstalls `openclaw` + `9router` globals then runs `pm2 restart all`.
1
+ # Changelog (English)
2
+
143
3
 
4
+ ## [5.4.2] โ€” 2026-04-14
144
5
 
145
- ## [5.1.15] รขโ‚ฌโ€ 2026-04-08
6
+ ### ๐Ÿ› Native Script Wizard Fixes
146
7
 
147
- ### Native Setup Parity & Windows Wizard Fixes
8
+ - **Deduplicate Plugin Installations**: Fixed an issue where the Telegram Multi-Bot Relay plugin was being appended twice to the installation payload in the HTML web wizard (`setup-openclaw-*.bat/sh`). This eliminates the "plugin already exists" crash during `npm exec` plugin installations.
148
9
 
149
- - Fixed the Windows native HTML wizard so downloaded `.bat` files always regenerate from the latest UI state before download.
150
- - 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.
151
- - Added `OPENCLAW_STATE_DIR` to native runtime environments so OpenClaw loads the generated config from the project runtime directory.
152
- - Replaced legacy `gateway.bind: "0.0.0.0"` output with the current `bind: "custom"` plus `customBindHost: "0.0.0.0"` format.
153
- - 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`.
154
- - 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.
155
- - 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.
156
- - 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`.
10
+
11
+ ## [5.4.1] โ€” 2026-04-14
12
+
13
+ ### ๐Ÿ› Docker CLI Generation Fixes
14
+
15
+ - **Browser Automation Restoration**: Reintroduced `xvfb` APT installation and the background Xvfb frame buffer execution (`Xvfb :99 -screen...`) to the generated Dockerfile `CMD`. This prevents headful Playwright processes from crashing on startup within the container.
16
+ - **REST API CORS Hotfix**: Reintroduced the runtime Internal IP injector script. It correctly patches `openclaw.json` at container startup strictly mapping Docker internal bridge IPs (`172...`) into `allowedOrigins`, eliminating 403 CORS blocks inside Docker Web Control UIs.
17
+
18
+ ### ๐Ÿงน Automated Uninstall Scripts
19
+
20
+ - **Wizard UI Generation**: The HTML setup wizard now generates a matching `uninstall-openclaw-*.bat/sh` script when downloading the configuration for Native or Docker deployments.
21
+ - **Complete Cleanup**: The generated scripts cleanly kill 9Router/OpenClaw background processes, uninstall global npm packages, and safely remove the project and `.9router` data directories, allowing for a fresh start whenever needed.
22
+
23
+
24
+ ## [5.4.0] โ€” 2026-04-14
25
+
26
+ ### ๐Ÿ—‘๏ธ Remove: Telegram + Zalo Combo Channel
27
+
28
+ - **Deprecated and removed `telegram+zalo-personal` combo mode** from both the Web Wizard and CLI. The channel card is hidden in `index.html`, removed from `channels.js` and `data/index.js`, and all conditional logic has been purged from `controller.js`, `output.js`, `steps.js`, `multi-bot.js`, `win-bat.js`, `macos-sh.js`, `linux-sh.js`, `vps-sh.js`, `native-helpers-gen.js`, and `cli.src.js`. Combo mode will be redesigned in a future release.
29
+
30
+ ### ๐Ÿ—๏ธ Refactor: Multi-Bot Architecture
31
+
32
+ - **Unified multi-bot flag** โ€” `isTelegramMultiBot`, `isSharedMultiBot`, and `isMultiBotWizard` have all been merged into a single `isMultiBot` boolean throughout the codebase. Reduces complexity and eliminates divergent code paths.
33
+ - **Fixed `agentDir` path resolution** โ€” `agentDir` in generated `openclaw.json` is now correctly set as `.openclaw/agents/{slug}/agent` (relative to `OPENCLAW_HOME`). Previously used an incorrect project-root-level `agents/{slug}/agent` path that caused double-prefix errors at runtime.
34
+ - **Removed redundant `agents/` root folder creation** โ€” OS scripts no longer attempt to `mkdir agents/` at the project root; all agent files are created under `.openclaw/agents/`.
35
+
36
+ ### ๐Ÿงน Config Generation Cleanup
37
+
38
+ - **Removed per-agent `auth-profiles.json` for 9Router/proxy mode** โ€” When the provider is a proxy (9Router), per-agent `auth-profiles.json` is no longer generated. This file is only created for direct API providers where per-agent authentication is required.
39
+ - **Removed `.env` generation for native deployments** โ€” Bot tokens and API keys for native mode are now managed via `openclaw channels login` / the 9Router dashboard. No `.env` is auto-generated in native scripts to avoid credential sprawl.
40
+ - **Removed per-agent `models.json` for Ollama (CLI)** โ€” Ollama model config is already declared in `openclaw.json โ†’ agents.defaults.model`. The redundant per-agent `models.json` in `agents/{id}/agent/` is no longer generated.
41
+
42
+ ### ๐Ÿค Cross-Workspace Rules in AGENTS.md
43
+
44
+ - **Multi-bot `AGENTS.md` now includes a "Cross-Workspace" section** โ€” In multi-bot (relay) mode, each bot's `AGENTS.md` receives a `๐Ÿค Workspace Chรฉo (Multi-Agent)` / `๐Ÿค Cross-Workspace (Multi-Agent)` section listing the workspace paths of sibling bots. Rules: bots may read each other's `IDENTITY`, `SOUL`, and `MEMORY` files for shared context; they must not delete or overwrite each other's workspace files without explicit user instruction.
45
+
46
+ ### ๐Ÿ”ง win-bat.js Refactor
47
+
48
+ - **Extracted `appendGatewayStart()` and `appendDashboardInfo()` helpers** โ€” Repeated PowerShell gateway launch and dashboard URL blocks are now deduplicated into two local helper functions inside `generateWinBat`, reducing the Windows batch generator by ~50 lines.
49
+
50
+
51
+ ## [5.3.5] โ€” 2026-04-12
52
+
53
+ ### ๐Ÿ› Fix: MEMORY.md Syntax Error in Zalo Workspace Files
54
+
55
+ - **Fix: `SyntaxError: Unexpected token ':'` in `setup.js`** โ€” the previous TOOLS.md patch was inserted after the `vi` ternary arm of MEMORY.md, orphaning the `: en-value` colon arm below it. VS Code showed this as 7 error badges on `setup.js`. Now fixed; both MEMORY.md arms are contiguous, then TOOLS.md follows as a clean separate property.
56
+
57
+ ### ๐ŸŸ Improvement: Uninstall Script Written to Project Folder
58
+
59
+ - **All 4 OS native flows + Docker ZIP** now include the matching `uninstall-*.{bat,sh}` script **in the project folder** during setup. Previously the uninstall was only available as a separate browser download. Pattern mirrors `start-chrome-debug.bat` / `.sh`:
60
+ - Windows native: `uninstall-openclaw-win.bat` written via `appendBatWriteCommands`
61
+ - macOS native: `uninstall-openclaw.sh` written via `appendShWriteCommands`
62
+ - VPS/Ubuntu: `uninstall-openclaw-vps.sh` written via `appendShWriteCommands`
63
+ - Linux Desktop: `uninstall-openclaw.sh` written via `appendShWriteCommands`
64
+ - Docker (all OS): uninstall script included in the generatedFiles ZIP
65
+
66
+
67
+
68
+ ### ๐Ÿ› Windows Native โ€” Gateway & Workspace Stability
69
+
70
+ - **Fix: Gateway terminal auto-closing** โ€” `call openclaw gateway run` was blocking the setup terminal indefinitely; closing the window killed the gateway process. The gateway is now launched in a **dedicated, visible CMD window** via a PS1 background launcher (same pattern as 9Router), so the setup terminal closes cleanly while the gateway keeps running.
71
+ - **Fix: `call` missing from `openclaw gateway stop`** โ€” The gateway stop command before relaunch was missing the `call` keyword, which could prevent the bat script from returning control after the stop completes. Added `call openclaw gateway stop 2>nul` in all affected paths.
72
+ - **Fix: Workspace naming** โ€” Single-bot deployments previously used a generic `.openclaw/workspace` path. All agents (single-bot and multi-bot) now use a named directory matching their agent ID: `.openclaw/workspace-{agentId}` (e.g. `workspace-williams`, `workspace-luna`). This prevents workspace collisions and aligns the folder structure with the `agents/{agentId}` directory convention.
73
+ - **Improve: TOOLS.md enriched for all bots** โ€” The generated `TOOLS.md` now includes both the custom skills & conventions section AND a "Local Notes" template section adapted from the OpenClaw workspace default, giving users a clear starting point for documenting environment-specific config.
74
+ - **Improve: Zalo bot AGENTS.md now includes security rules** โ€” The generated `AGENTS.md` for Zalo Personal bots (Luna-pattern) now appends the same `๐Ÿ” Security Rules โ€” MANDATORY` block that Telegram bots receive (file-system boundaries, credential hygiene, crypto wallet protection, Docker mount rules).
75
+ - **Improve: Zalo bot TOOLS.md added** โ€” Zalo bot workspaces now receive a `TOOLS.md` file with the same skills list and conventions structure as Telegram bots.
76
+
77
+
78
+ ## [5.3.3] โ€” 2026-04-11
79
+
80
+ ### ๐Ÿงน Automated Uninstall Scripts
81
+
82
+ - **Wizard UI Generation**: The HTML setup wizard now generates a matching `uninstall-openclaw-*.bat/sh` script when downloading the configuration for Native or Docker deployments.
83
+ - **Complete Cleanup**: The generated scripts cleanly kill 9Router/OpenClaw background processes, uninstall global npm packages, and safely remove the project and `.9router` data directories, allowing for a fresh start whenever needed.
84
+
85
+
86
+
87
+ ## [5.3.2] โ€” 2026-04-11
88
+
89
+ ### ๐Ÿ› Windows Native โ€” 9Router Launch Stability
90
+
91
+ - **Fix: Remove `-l` (stdin listen) flag from native 9Router launch** โ€” `resolveNative9RouterDesktopLaunch()` previously passed `-l` which puts 9Router into interactive REPL mode. When spawned as a background process (no TTY), this caused the process to hang waiting for stdin input. Removed the flag; 9Router now starts reliably in the background on Windows, macOS desktop, and any non-VPS native flow.
92
+ - **Fix: Pre-seed `DATA_DIR/.9router/db.json` with `requireLogin: false` before 9Router starts** โ€” If `db.json` does not exist when 9Router boots, it uses its own default path (`~/.9router`) and defaults `requireLogin` to `true`, causing the dashboard login wall. The CLI wizard now creates the `.9router` directory and writes a minimal `db.json` (with `requireLogin: false`) **before** spawning 9Router, matching the behavior of the fixed `setup-openclaw-win.bat` batch file.
93
+ - **No change to PM2/VPS flow** โ€” The fix applies only to the desktop/background spawn path (`osChoice !== 'vps'`). VPS users still use the existing PM2-managed `startNative9RouterPm2` flow which is unaffected.
94
+
95
+ ## [5.3.1] โ€” 2026-04-10
96
+
97
+ ### ๐ŸŒŸ Zalo Personal DM Policy
98
+
99
+ - **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.
100
+
101
+
102
+ ## [5.3.0] โ€” 2026-04-11
103
+
104
+ ### ๐Ÿ†• Multi-Channel: Telegram + Zalo Personal Simultaneously
105
+
106
+ - **Combo channel option** โ€” New `telegram+zalo-personal` option in both CLI wizard (`select`) and web wizard (channel card). Selecting it configures a single bot to receive messages from both Telegram and Zalo Personal at the same time.
107
+ - **Auto-inject `plugins.entries.zalouser`** โ€” When any Zalo Personal channel is selected, `openclaw.json` now automatically includes `plugins.entries.zalouser: { enabled: true }`, fixing the root cause of the "not configured" error on Zalo startup.
108
+ - **Docker cold-start fix in Dockerfile CMD** โ€” A background `(sleep 45 && node -e '...touch historyLimit...')` script is now baked into the generated `Dockerfile` CMD. Triggers chokidar โ†’ gateway hot-reload โ†’ `restartChannel('zalouser')` after Docker network warms up. No more manual `lastTouchedAt` workarounds.
109
+ - **Helper predicates** โ€” Added `hasTelegram(ck)` and `hasZaloPersonal(ck)` functions replacing all literal `channelKey === 'telegram/zalo-personal'` comparisons throughout `cli.js` for cleaner extensibility.
110
+ - **Smoke tests updated** โ€” `tests/smoke-cli-logic.mjs` updated to match the new predicate-based assertions (78 checks passing).
111
+
112
+ ## [5.2.4] โ€” 2026-04-10
113
+
114
+ ### ๐Ÿ› Bug Fixes & Developer Tooling
115
+
116
+ - **Fix: `docker compose build --no-cache` during upgrade** โ€” Removed the `--no-cache` flag from the upgrade flow. Without it, Docker correctly reuses cached layers (including Playwright/Chromium ~300MB) and only rebuilds the `openclaw` layer that changed, making upgrades significantly faster.
117
+ - **UX: Upgrade CLI banner now matches upgrade.ps1/sh style** โ€” `runUpgrade()` in `cli.js` now renders the same โ•ญโ•ฎโ•ฐโ•ฏ box using visual-width calculation (`vw()`) instead of plain `===` separators.
118
+ - **New: GitHub Actions workflow to auto-detect openclaw updates** โ€” `.github/workflows/check-openclaw-update.yml` runs daily, compares the pinned `OPENCLAW_NPM_SPEC` in `cli.js` with the latest version on npm, and automatically creates a GitHub Issue with upgrade instructions if a new version is available.
119
+
120
+ ## [5.2.3] โ€” 2026-04-10
121
+
122
+ ### ๐Ÿ› Bug Fixes & Encoding Improvements
123
+
124
+ - **Fix: `ReferenceError: projectDir is not defined`** โ€” Crash when clicking "Generate Configs" in multi-bot mode. `nativeProjectOpenClawRoot` in `buildTelegramPostInstallChecklist()` referenced an undefined `projectDir` variable and was dead code (unused in return value). Removed.
125
+ - **Fix: Step 3 "Next" button validation** โ€” `state._activeBotTab` was a typo of `state.activeBotIndex`, causing multi-bot validation to always read the wrong tab index.
126
+ - **Fix: `saveFormData()` always saved bot tab name to `bots[0]`** โ€” In multi-bot mode, the active bot name was always written to `bots[0]` regardless of which tab was active. Now correctly saves to `bots[state.activeBotIndex]`.
127
+ - **UX: Inline hint for disabled "Generate Configs" button** โ€” When the button is blocked, a warning now appears showing exactly which fields are still missing (e.g. "Missing: GOOGLE_API_KEY").
128
+ - **Fix: Vietnamese diacritics in generated `.bat` and `.sh` scripts** โ€” All Vietnamese echo/Write-Host strings in the generated Windows setup script and Linux/macOS bash script have been converted to ASCII (no diacritics) to prevent encoding errors on systems with non-UTF-8 codepages.
129
+
130
+ ## [5.2.2] โ€” 2026-04-10
131
+
132
+
133
+ ### ๐Ÿ› Docker & Native PM2 Bug Fixes
134
+
135
+ - **Fix Docker crash loop (socat port conflict)**: `socat TCP-LISTEN:18791` was binding `0.0.0.0:18791` before `openclaw gateway run` started, causing `EADDRINUSE` on `127.0.0.1:18791`. Removed the broken gateway bridge from the generated Dockerfile CMD in both `cli.js` and `setup.js`.
136
+ - **Fix Docker dashboard not accessible from host**: Gateway `bind` was set to `'loopback'` โ€” Docker port mapping cannot route to container loopback. Restored the v5.0.9 working pattern: `bind:'custom', customBindHost:'0.0.0.0'`.
137
+ - **Fix `delete c.gateway.customBindHost`**: A stray `delete` statement was erasing the `customBindHost` key right after setting it. Removed.
138
+ - **Fix Docker build re-downloading npm packages on every rebuild**: `ARG CACHEBUST=<epoch>` was cache-busting the `npm install -g openclaw` layer on every build (even config-only changes). Replaced with a version-stable `ARG OPENCLAW_VER` so Docker layer cache is reused between rebuilds.
139
+ - **Fix native PM2 double `.openclaw` nesting**: `ecosystem.config.js` was setting `OPENCLAW_HOME: projectDir/.openclaw`, causing OpenClaw to resolve workspace as `projectDir/.openclaw/.openclaw/workspace`. Removed `OPENCLAW_HOME` from PM2 env; OpenClaw discovers config via `cwd` (matching v5.0.9 behavior).
140
+
141
+ ## [5.2.1] โ€” 2026-04-09
142
+
143
+ ### ๐Ÿ› Native Ubuntu/VPS Bug Fixes
144
+
145
+ - **Fix `Bot-9router errored` (PM2)**: `resolveNative9RouterDesktopLaunch` was trying to locate `9router/app/server.js` inside npm global dirs โ€” a path that doesn't exist after standard `npm install -g 9router`. Now uses the `9router` CLI binary directly with proper args (`-n -l -H 0.0.0.0 -p 20128 --skip-update`), preventing the `โ†บ 15` restart loop.
146
+ - **Fix double `.openclaw` workspace path**: `workspace` and `agentDir` in generated `openclaw.json` were set as absolute paths (e.g. `/home/user/bot/.openclaw/workspace`). OpenClaw resolves these relative to `OPENCLAW_HOME`, causing a double-prefix (`/home/user/bot/.openclaw/.openclaw/workspace`). Changed to relative paths (`workspace`, `agents/<id>/agent`) matching Docker behavior.
147
+ - **Fix missing runtime packages on native install**: `grammy`, `@grammyjs/runner`, `@grammyjs/transformer-throttler`, `@buape/carbon`, `@larksuiteoapi/node-sdk`, `@slack/web-api` were installed in Docker (Dockerfile) but skipped on native. `installLatestOpenClaw` now installs all `OPENCLAW_RUNTIME_PACKAGES` after the main binary.
148
+ - **Fix `openclaw: command not found` after install**: Post-setup Zalo login instructions now include a `source ~/.bashrc && source ~/.profile` hint for new terminal sessions on Linux.
149
+ - **Fix Zalo session stored in wrong directory**: Manual login hint now includes `OPENCLAW_HOME` and `OPENCLAW_STATE_DIR` env vars so sessions are saved to `<projectDir>/.openclaw/credentials/zalouser/` โ€” the same path the PM2 gateway reads from.
150
+ - **Fix relative project path**: `projectDir` input is now normalized with `path.resolve()` so typing `home/ubuntu/bot` (without leading `/`) correctly resolves to `/home/ubuntu/bot`.
151
+
152
+
153
+ ## [5.2.0] โ€” 2026-04-09
154
+
155
+ ### One-Command Upgrade (No Wizard Required)
156
+
157
+ - 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.
158
+ - Added `upgrade.ps1` for Windows users โ€” double-click in the bot folder to trigger an upgrade. No terminal knowledge required.
159
+ - 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.
160
+ - All user data is preserved during upgrade: `.env`, `.openclaw/memory/`, sessions, credentials, and 9Router OAuth tokens are never modified.
161
+ - Docker mode: patching `Dockerfile` (`OPENCLAW_NPM_SPEC` + `CACHEBUST` refresh) then `docker compose build --no-cache` + `docker compose up -d`.
162
+ - Native / PM2 mode: reinstalls `openclaw` + `9router` globals then runs `pm2 restart all`.
163
+
164
+
165
+ ## [5.1.15] รขโ‚ฌโ€ 2026-04-08
166
+
167
+ ### Native Setup Parity & Windows Wizard Fixes
168
+
169
+ - Fixed the Windows native HTML wizard so downloaded `.bat` files always regenerate from the latest UI state before download.
170
+ - 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.
171
+ - Added `OPENCLAW_STATE_DIR` to native runtime environments so OpenClaw loads the generated config from the project runtime directory.
172
+ - Replaced legacy `gateway.bind: "0.0.0.0"` output with the current `bind: "custom"` plus `customBindHost: "0.0.0.0"` format.
173
+ - 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`.
174
+ - 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.
175
+ - 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.
176
+ - 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`.
157
177
  - Expanded smoke coverage for the native runtime path, 9Router sync, provider/token sync, browser install, and Unix project-local startup flows.
158
178
 
159
179
  ## [5.1.14] รขโ‚ฌโ€ 2026-04-08
160
180
 
161
181
  ### OpenClaw stability and Docker fixes
162
182
 
163
- - Pinned OpenClaw back to `openclaw@2026.4.5` because the update published on `April 8, 2026` is currently broken.
164
- - Fixed Dockerfile generation for Windows Docker setups to avoid startup failures caused by bad command escaping and invalid `allowedOrigins`.
165
- - Added guidance to use `Node.js 20` through `24`, and to avoid `Node.js 25` for now for better OpenClaw stability.
166
-
167
- ## [5.1.13] รขโ‚ฌโ€ 2026-04-08
183
+ - Pinned OpenClaw back to `openclaw@2026.4.5` because the update published on `April 8, 2026` is currently broken.
184
+ - Fixed Dockerfile generation for Windows Docker setups to avoid startup failures caused by bad command escaping and invalid `allowedOrigins`.
185
+ - Added guidance to use `Node.js 20` through `24`, and to avoid `Node.js 25` for now for better OpenClaw stability.
186
+
187
+ ## [5.1.13] รขโ‚ฌโ€ 2026-04-08
168
188
 
169
189
  ### รฐลธยโ€บ macOS Install Fixes & Wizard Stability
170
190