create-openclaw-bot 5.1.15 → 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.vi.md CHANGED
@@ -1,409 +1,428 @@
1
- # Changelog (Tiếng Việt)
2
-
1
+ # Changelog (Tiếng Việt)
3
2
 
4
- ## [5.1.15] — 2026-04-08
5
3
 
6
- ### 🌟 Đổi Chính Sách Bảo Mật Zalo Personal
4
+ ## [5.2.0] 2026-04-09
7
5
 
8
- - **Thả Ga Inbox Zalo Cầm Tay**: Lược bỏ rào cản duyệt bảo mật của Zalo Personal. Thông số `dmPolicy` trên cài đặt Zalo cá nhân đã được chuyển mặc định từ `pairing` sang `open`. Bây giờ bất cứ ai trên mạng lưới Zalo nhắn tin vào tài khoản của Bot đều sẽ được AI tự động tiếp đón ngay lập tức thay vì bị chặn lại chờ bạn duyệt lệnh kết nối E2E!
6
+ ### Upgrade 1 Lệnh (Không Cần Chạy Lại Wizard)
7
+
8
+ - Thêm subcommand `upgrade` vào CLI: `npx create-openclaw-bot@latest upgrade`. Tự nhận diện Docker hay Native/PM2 và cập nhật OpenClaw mà không cần chạy lại wizard.
9
+ - Thêm `upgrade.ps1` cho Windows — nhấp đúp trong thư mục bot là tự động upgrade. Không cần biết terminal.
10
+ - Thêm `upgrade.sh` cho Linux / macOS / Ubuntu — `bash upgrade.sh` hoặc pipe trực tiếp qua `curl`/`wget` từ GitHub.
11
+ - Toàn bộ dữ liệu người dùng giữ nguyên: `.env`, `.openclaw/memory/`, sessions, credentials, OAuth token 9Router không bao giờ bị xoá.
12
+ - Docker mode: vá `Dockerfile` (cập nhật `OPENCLAW_NPM_SPEC` + `CACHEBUST`) → `docker compose build --no-cache` + `docker compose up -d`.
13
+ - Native/PM2 mode: cài lại `openclaw` + `9router` global → `pm2 restart all`.
9
14
 
10
-
11
- ## [5.1.14] — 2026-04-08
12
-
13
- ### Sửa lỗi ổn định OpenClaw và Docker
14
-
15
- - Pin lại OpenClaw về `openclaw@2026.4.5` vì bản cập nhật ngày `08/04/2026` đang lỗi.
16
- - Sửa Dockerfile cho các case Docker trên Windows để tránh lỗi startup do escape command sai và lỗi `allowedOrigins`.
17
- - Thêm ghi chú khuyên dùng `Node.js 20` đến `24`, tạm tránh `Node.js 25` để ổn định hơn với OpenClaw.
18
15
 
19
- ## [5.1.13] 2026-04-08
16
+ ## [5.1.15] — 2026-04-08
17
+
18
+ ### Dong Bo Native Setup & Sua Loi Wizard Windows
19
+
20
+ - Sua wizard HTML tren Windows native de file `.bat` tai ve luon duoc regenerate theo state moi nhat truoc khi download.
21
+ - Sua toan bo runtime path tren Windows native theo project dir nguoi dung nhap: `.env`, `.openclaw` va `.9router` khong con roi ve home/AppData.
22
+ - Them `OPENCLAW_STATE_DIR` vao native runtime env de OpenClaw doc dung config duoc sinh trong thu muc project.
23
+ - Chong format config legacy `gateway.bind: "0.0.0.0"` va chuyen sang `bind: "custom"` + `customBindHost: "0.0.0.0"`.
24
+ - Sua luong single-bot tren Windows native de provider, model, API key va Telegram bot token tu wizard duoc sync dung vao `.env` va `openclaw.json`.
25
+ - Sua native Windows 9Router path resolution va doi helper sync `smart-route` sang lay active providers tu API song cua `9Router`, khop voi logic Docker.
26
+ - Bu native parity cho skill/runtime tren Windows: skill duoc cai tu dong, browser automation tu cai runtime can thiet, va `skills.entries` dung dung `slug`.
27
+ - Cap nhat native script cho macOS, Linux Desktop va Ubuntu/VPS de chay tu `PROJECT_DIR` duoc chon va export `OPENCLAW_HOME`, `OPENCLAW_STATE_DIR`, `DATA_DIR` theo project-local.
28
+ - Mo rong smoke test cho runtime path native, 9Router sync, provider/token sync, browser install va luong startup project-local tren Unix.
29
+
30
+ ## [5.1.14] — 2026-04-08
31
+
32
+ ### Sửa lỗi ổn định OpenClaw và Docker
33
+
34
+ - Pin lại OpenClaw về `openclaw@2026.4.5` vì bản cập nhật ngày `08/04/2026` đang lỗi.
35
+ - Sửa Dockerfile cho các case Docker trên Windows để tránh lỗi startup do escape command sai và lỗi `allowedOrigins`.
36
+ - Thêm ghi chú khuyên dùng `Node.js 20` đến `24`, tạm tránh `Node.js 25` để ổn định hơn với OpenClaw.
37
+
38
+ ## [5.1.13] — 2026-04-08
20
39
 
21
- ### 🐛 Sửa lỗi cài macOS & ổn định Wizard
40
+ ### 🐛 Sửa lỗi cài macOS & ổn định Wizard
22
41
 
23
- - **Sửa lỗi `mkdir: : No such file or directory` trên macOS**: `generateSetupScript` dùng `\${dir}` / `\${path}` (escaped) tạo ra biến bash rỗng giờ dùng JS interpolation đú́ng nên đường dẫn thực tế được ghi vào script.
24
- - **Sửa script Docker macOS**: Thêm kiểm tra Docker daemon `docker info` trước khi chạy `docker compose up`; chế độ Docker giờ gọi đú́ng `docker compose up` thay `openclaw gateway run`.
25
- - **Sửa npm prefix macOS Native**: Bỏ `npm config set prefix` gây xung đột với Homebrew Node.js. Giờ dùng `export npm_config_prefix` (env var cho session hiện tại) fallback `sudo npm install -g`.
26
- - **Sửa `window.__saveBotTabPersona is not a function`**: Thêm hàm `__saveBotTabPersona` bị thiếu HTML gọi nhưng JS chưa định nghĩa.
27
- - **Sửa nút Tiếp theo Step 3 chế độ 1 bot**: `bindFormEvents` giờ sync `cfg-name` vào `state.config.botName` `state.bots[0].name` ngay khi gõ, rồi gọi `updateNavButtons()` nút Tiếp phản hồi ngay không cần chuyển bước.
28
- - **Sửa persona riêng từng bot**: `saveBotTabMeta` `syncBotTabMeta` giờ save/restore field `cfg-bot-tab-persona` cho từng bot. Chuyển tab hiển thị đú́ng nội dung persona tương ứng; giá trị lưu vào `state.bots[i].persona` được dùng chính xác khi tạo file `.md`.
29
- - **Sửa cli.js npm macOS**: `ensureUserWritableGlobalNpm` bỏ `npm config set prefix` trên darwin; `installGlobalPackage` thêm `sudo npm install -g` làm fallback.
42
+ - **Sửa lỗi `mkdir: : No such file or directory` trên macOS**: `generateSetupScript` dùng `\${dir}` / `\${path}` (escaped) tạo ra biến bash rỗng — giờ dùng JS interpolation đú́ng nên đường dẫn thực tế được ghi vào script.
43
+ - **Sửa script Docker macOS**: Thêm kiểm tra Docker daemon `docker info` trước khi chạy `docker compose up`; chế độ Docker giờ gọi đú́ng `docker compose up` thay vì `openclaw gateway run`.
44
+ - **Sửa npm prefix macOS Native**: Bỏ `npm config set prefix` gây xung đột với Homebrew Node.js. Giờ dùng `export npm_config_prefix` (env var cho session hiện tại) và fallback `sudo npm install -g`.
45
+ - **Sửa `window.__saveBotTabPersona is not a function`**: Thêm hàm `__saveBotTabPersona` bị thiếu — HTML gọi nhưng JS chưa định nghĩa.
46
+ - **Sửa nút Tiếp theo Step 3 chế độ 1 bot**: `bindFormEvents` giờ sync `cfg-name` vào `state.config.botName` và `state.bots[0].name` ngay khi gõ, rồi gọi `updateNavButtons()` — nút Tiếp phản hồi ngay không cần chuyển bước.
47
+ - **Sửa persona riêng từng bot**: `saveBotTabMeta` và `syncBotTabMeta` giờ save/restore field `cfg-bot-tab-persona` cho từng bot. Chuyển tab hiển thị đú́ng nội dung persona tương ứng; giá trị lưu vào `state.bots[i].persona` và được dùng chính xác khi tạo file `.md`.
48
+ - **Sửa cli.js npm macOS**: `ensureUserWritableGlobalNpm` bỏ `npm config set prefix` trên darwin; `installGlobalPackage` thêm `sudo npm install -g` làm fallback.
30
49
 
31
- ## [5.1.12] 2026-04-07
50
+ ## [5.1.12] — 2026-04-07
32
51
 
33
- ### 🧠 Thêm Skills & Tự động chọn Plugin Relay
52
+ ### 🧠 Thêm Skills & Tự động chọn Plugin Relay
34
53
 
35
- - **Grid Skills 3 cột**: Layout mới 3 card/hàng thay 4, card rộng rãi hơn, dễ đọc hơn.
36
- - **7 Skills mới từ ClawHub**: Bổ sung đầy đủ `Web Search`, `GitHub`, `Notion`, `Slack` phủ khắp các tác vụ năng suất phổ biến nhất trên OpenClaw dashboard.
37
- - **Plugin Telegram Multi-Bot Relay tự động**: Khi chọn nhiều bot Telegram (botCount 2), plugin `telegram-multibot-relay` được tự động tick chọn ghi vào `openclaw.json plugins.entries`. Khi quay về 1 bot, plugin bị bỏ chọn.
38
- - **Plugin selections openclaw.json**: Tất cả plugin được user chọn (Voice Call, Matrix, MS Teams, Nostr...) đều được inject vào `plugins.entries` để Dashboard OpenClaw nhận trạng thái `enabled` đúng. Không chọn = không bật.
39
- - **Fix Step 3 "Tiếp theo" bị disabled**: Bỏ yêu cầu bắt buộc `cfg-user-info` (optional), sửa multi-bot check dùng `cfg-bot-tab-name`.
40
- - **Fix Step 4 multi-bot token**: Validate `key-bot-token-0` thay `key-bot-token` khi multi-bot Telegram.
41
- - **Fix AGENTS.md native multi-bot thiếu quy tắc bảo mật**: Inject `securityRules` vào cuối AGENTS.md của từng bot trong native multi-bot deployment.
54
+ - **Grid Skills 3 cột**: Layout mới 3 card/hàng thay vì 4, card rộng rãi hơn, dễ đọc hơn.
55
+ - **7 Skills mới từ ClawHub**: Bổ sung đầy đủ `Web Search`, `GitHub`, `Notion`, `Slack` — phủ khắp các tác vụ năng suất phổ biến nhất trên OpenClaw dashboard.
56
+ - **Plugin Telegram Multi-Bot Relay tự động**: Khi chọn nhiều bot Telegram (botCount ≥ 2), plugin `telegram-multibot-relay` được tự động tick chọn và ghi vào `openclaw.json → plugins.entries`. Khi quay về 1 bot, plugin bị bỏ chọn.
57
+ - **Plugin selections → openclaw.json**: Tất cả plugin được user chọn (Voice Call, Matrix, MS Teams, Nostr...) đều được inject vào `plugins.entries` để Dashboard OpenClaw nhận trạng thái `enabled` đúng. Không chọn = không bật.
58
+ - **Fix Step 3 "Tiếp theo" bị disabled**: Bỏ yêu cầu bắt buộc `cfg-user-info` (optional), sửa multi-bot check dùng `cfg-bot-tab-name`.
59
+ - **Fix Step 4 multi-bot token**: Validate `key-bot-token-0` thay vì `key-bot-token` khi multi-bot Telegram.
60
+ - **Fix AGENTS.md native multi-bot thiếu quy tắc bảo mật**: Inject `securityRules` vào cuối AGENTS.md của từng bot trong native multi-bot deployment.
42
61
 
43
- ### 🌟 Đổi Chính Sách Bảo Mật Zalo Personal
62
+ ### 🌟 Đổi Chính Sách Bảo Mật Zalo Personal
44
63
 
45
- - **Thả Ga Inbox Zalo Cầm Tay**: Lược bỏ rào cản duyệt bảo mật của Zalo Personal. Thông số `dmPolicy` trên cài đặt Zalo nhân đã được chuyển mặc định từ `pairing` sang `open`. Bây giờ bất cứ ai trên mạng lưới Zalo nhắn tin vào tài khoản của Bot đều sẽ được AI tự động tiếp đón ngay lập tức thay bị chặn lại chờ bạn duyệt lệnh kết nối E2E!
64
+ - **Thả Ga Inbox Zalo Cầm Tay**: Lược bỏ rào cản duyệt bảo mật của Zalo Personal. Thông số `dmPolicy` trên cài đặt Zalo cá nhân đã được chuyển mặc định từ `pairing` sang `open`. Bây giờ bất cứ ai trên mạng lưới Zalo nhắn tin vào tài khoản của Bot đều sẽ được AI tự động tiếp đón ngay lập tức thay vì bị chặn lại chờ bạn duyệt lệnh kết nối E2E!
46
65
 
47
- ## [5.1.10] 2026-04-07
66
+ ## [5.1.10] — 2026-04-07
48
67
 
49
- ### 🌟 Tự động Auto-Approve Thiết Bị cho Native VPS
68
+ ### 🌟 Tự động Auto-Approve Thiết Bị cho Native VPS
50
69
 
51
- - **Bỏ Nhập Lệnh Thủ Công Trải Nghiệm PM2**: Cảnh báo `pairing required` (chờ duyệt thiết bị ghép nối E2E) trên giao diện Web buộc người dùng phải lệnh đồng ý dưới Terminal. luồng Docker, tính năng này đã được hiệu hóa bằng một đoạn script chạy ngầm tự gật đầu. Nhưng Native thì chưa! Phiên bản này chính thức nhúng thêm 1 tiến trình PM2 `auto-approve` siêu nhẹ chạy kẹp với các lệnh chính, giúp tự động gật đầu phê duyệt kết nối web mỗi 5 giây. Đảm bảo trải nghiệm "Click là vào" trên Native VPS mượt y hệt Docker!
70
+ - **Bỏ Nhập Lệnh Thủ Công Trải Nghiệm PM2**: Cảnh báo `pairing required` (chờ duyệt thiết bị ghép nối E2E) trên giao diện Web buộc người dùng phải gõ lệnh đồng ý dưới Terminal. Ở luồng Docker, tính năng này đã được vô hiệu hóa bằng một đoạn script chạy ngầm tự gật đầu. Nhưng ở Native thì chưa! Phiên bản này chính thức nhúng thêm 1 tiến trình PM2 `auto-approve` siêu nhẹ chạy kẹp với các lệnh chính, giúp tự động gật đầu phê duyệt kết nối web mỗi 5 giây. Đảm bảo trải nghiệm "Click là vào" trên Native VPS mượt mà y hệt Docker!
52
71
 
53
- ## [5.1.9] 2026-04-07
72
+ ## [5.1.9] — 2026-04-07
54
73
 
55
- ### 🌟 Trả lại Schema Chuẩn & Cải thiện UX WebCrypto
74
+ ### 🌟 Trả lại Schema Chuẩn & Cải thiện UX WebCrypto
56
75
 
57
- - **Sửa lỗi sập Gateway do sai lầm Config**: OpenClaw bản mới nhất dùng Zod để khóa chặt Schema cấu hình. Cờ `requireDeviceIdentity` chêm vào bản 5.1.8 đã bị Backend từ chối thẳng thừng (`Unrecognized key`), dẫn đến server không thể khởi động vòng lặp. Bản 5.1.9 đã gỡ sạch cờ này, trả lại môi trường sạch để PM2 hoạt động 100%.
58
- - **Trợ SSH Tunnel Tự Động**: lại sự khắt khe của WebCrypto khi dùng VPS/IP ngoài, Console giờ đây sẽ tự động in sẵn thần chú lệnh bẻ khóa `ssh -L ...` y hệt IP Username thật của bạn. Bạn chỉ cần copy-paste để thông luồng một cách ngầu lòi, bảo mật tuyệt đối không cần mua Tên miền HTTPS.
76
+ - **Sửa lỗi sập Gateway do sai lầm Config**: OpenClaw bản mới nhất dùng Zod để khóa chặt Schema cấu hình. Cờ `requireDeviceIdentity` chêm vào bản 5.1.8 đã bị Backend từ chối thẳng thừng (`Unrecognized key`), dẫn đến server không thể khởi động vòng lặp. Bản 5.1.9 đã gỡ sạch cờ này, trả lại môi trường sạch để PM2 hoạt động 100%.
77
+ - **Trợ lý SSH Tunnel Tự Động**: Bù lại sự khắt khe của WebCrypto khi dùng VPS/IP ngoài, Console giờ đây sẽ tự động in sẵn thần chú lệnh bẻ khóa `ssh -L ...` y hệt IP và Username thật của bạn. Bạn chỉ cần copy-paste để thông luồng một cách ngầu lòi, bảo mật tuyệt đối mà không cần mua Tên miền HTTPS.
59
78
 
60
- ## [5.1.8] 2026-04-07
79
+ ## [5.1.8] — 2026-04-07
61
80
 
62
- ### 🌟 Sửa lỗi Đăng nhập Token (1008) & Cải tiến IP hiển thị trên VPS
81
+ ### 🌟 Sửa lỗi Đăng nhập Token (1008) & Cải tiến IP hiển thị trên VPS
63
82
 
64
- - **Tắt `requireDeviceIdentity` để vượt tường WebCrypto**: Do chế bảo mật mới của Control UI bắt buộc trình duyệt phải dùng môi trường HTTPS (hoặc localhost) thì mới cấp quyền khởi tạo key hóa thiết bị E2E. Nếu dùng IP thường (HTTP) thì Dashboard sẽ báo lỗi đỏ `code=1008`. Bản setup mới nhất đã tự động chích cờ `requireDeviceIdentity: false` để tắt chế ép buộc này đi, giúp bạn vào thẳng Dashboard bằng IP của VPS.
65
- - **Hiển thị Link Public Terminal**: Cấu trúc báo cáo của PM2 đã được viết lại để tự động tìm sinh ra các đường dẫn kèm IPv4 Public (thay chỉ in mỗi `localhost`). Giờ đây bạn chỉ việc soi console và bấm/copy thẳng link vào trình duyệt không cần phải tự chế nữa.
83
+ - **Tắt `requireDeviceIdentity` để vượt tường WebCrypto**: Do cơ chế bảo mật mới của Control UI bắt buộc trình duyệt phải dùng môi trường HTTPS (hoặc localhost) thì mới cấp quyền khởi tạo key mã hóa thiết bị E2E. Nếu dùng IP thường (HTTP) thì Dashboard sẽ báo lỗi đỏ `code=1008`. Bản setup mới nhất đã tự động chích cờ `requireDeviceIdentity: false` để tắt cơ chế ép buộc này đi, giúp bạn vào thẳng Dashboard bằng IP của VPS.
84
+ - **Hiển thị Link Public ở Terminal**: Cấu trúc báo cáo của PM2 đã được viết lại để tự động tìm và sinh ra các đường dẫn kèm IPv4 Public (thay vì chỉ in mỗi `localhost`). Giờ đây bạn chỉ việc soi console và bấm/copy thẳng link vào trình duyệt mà không cần phải tự chế nữa.
66
85
 
67
- ## [5.1.7] 2026-04-07
86
+ ## [5.1.7] — 2026-04-07
68
87
 
69
- ### 🌟 Sửa lỗi CORS Control UI & Đường dẫn 9Router Native
88
+ ### 🌟 Sửa lỗi CORS Control UI & Đường dẫn 9Router Native
70
89
 
71
- - **Sửa lỗi dội ngược CORS khi vào Control UI**: OpenClaw v2026.3.x siết chặt policy CORS khiến việc truy cập dashboard từ IP ngoài bị block. Các script tạo config Docker giờ đã tự động quét toàn bộ IPv4 hiện của server (`os.networkInterfaces()`) để nhúng vào mảng `gateway.controlUi.allowedOrigins`. Đảm bảo người dùng VPS vào được thẳng Control UI không bị lỗi mạng.
72
- - **Tối ưu đường dẫn PM2 Native**: Để tránh trường hợp tính năng PM2 không nhận diện đúng môi trường (lỗi `\$PATH` khi dùng `nvm`), bộ cài giờ bỏ qua file thực thi `9router` của HĐH. Thay vào đó, bộ cài tự tính toán đường dẫn tuyệt đối `\$(npm root -g)/9router/app/server.js` truyền thẳng vào trình thông dịch Node, đảm bảo PM2 100% tìm thấy file khởi chạy 9Router.
90
+ - **Sửa lỗi dội ngược CORS khi vào Control UI**: OpenClaw v2026.3.x siết chặt policy CORS khiến việc truy cập dashboard từ IP ngoài bị block. Các script tạo config và vá Docker giờ đã tự động quét toàn bộ IPv4 hiện có của server (`os.networkInterfaces()`) để nhúng vào mảng `gateway.controlUi.allowedOrigins`. Đảm bảo người dùng VPS vào được thẳng Control UI mà không bị lỗi mạng.
91
+ - **Tối ưu đường dẫn PM2 Native**: Để tránh trường hợp tính năng PM2 không nhận diện đúng môi trường (lỗi `\$PATH` khi dùng `nvm`), bộ cài giờ bỏ qua file thực thi `9router` của HĐH. Thay vào đó, bộ cài tự tính toán đường dẫn tuyệt đối `\$(npm root -g)/9router/app/server.js` và truyền thẳng vào trình thông dịch Node, đảm bảo PM2 100% tìm thấy file khởi chạy 9Router.
73
92
 
74
- ## [5.1.6] 2026-04-07
93
+ ## [5.1.6] — 2026-04-07
75
94
 
76
- ### 🐞 Khắc phục lỗi PM2 ngắt cài đặt (SIGKILL) trên VPS
95
+ ### 🐞 Khắc phục lỗi PM2 ngắt cài đặt (SIGKILL) trên VPS
77
96
 
78
- - **Sửa lỗi `PM2 SIGKILL`**: Loại bỏ cờ `-t` (chế độ giao diện terminal) khỏi tất cả các lệnh gọi `9router` chạy ngầm. Trên các VPS không giao diện (headless), cờ này thể khiến PM2 bị treo ném ra lỗi SIGKILL làm chết toàn bộ quá trình cài đặt.
79
- - **Tối ưu Sync Helper chạy ngầm**: Bổ sung chế dự phòng 2 lớp cho script tự động đồng bộ (sync helper). Nếu PM2 bị giới hạn RAM hoặc quá tải gây lỗi SIGKILL, script sẽ không văng lỗi sập Setup nữa tự động fallback xuống chạy ẩn bằng `nohup node ... &`. Trong trường hợp xấu nhất, bộ cài chỉ báo cảnh báo vàng rẽ nhánh cho phép tiến trình Setup tiếp tục tới bước cuối cùng thành công.
97
+ - **Sửa lỗi `PM2 SIGKILL`**: Loại bỏ cờ `-t` (chế độ giao diện terminal) khỏi tất cả các lệnh gọi `9router` chạy ngầm. Trên các VPS không giao diện (headless), cờ này có thể khiến PM2 bị treo và ném ra lỗi SIGKILL làm chết toàn bộ quá trình cài đặt.
98
+ - **Tối ưu Sync Helper chạy ngầm**: Bổ sung cơ chế dự phòng 2 lớp cho script tự động đồng bộ (sync helper). Nếu PM2 bị giới hạn RAM hoặc quá tải gây lỗi SIGKILL, script sẽ không văng lỗi sập Setup nữa mà tự động fallback xuống chạy ẩn bằng `nohup node ... &`. Trong trường hợp xấu nhất, bộ cài chỉ báo cảnh báo vàng và rẽ nhánh cho phép tiến trình Setup tiếp tục tới bước cuối cùng thành công.
80
99
 
81
- ## [5.1.5] 2026-04-06
100
+ ## [5.1.5] — 2026-04-06
82
101
 
83
- ### 🐞 Sửa lỗi PM2 khởi động 9Router trên Native
102
+ ### 🐞 Sửa lỗi PM2 khởi động 9Router trên Native
84
103
 
85
- - **Fix**: Chuyển từ việc chạy chuỗi bash (`execSync`) sang truyền mảng tham số ràng (`execFileSync`) khi khởi động 9Router script đồng bộ (sync) qua PM2. Đảm bảo PM2 luôn chạy được ứng dụng ổn định trên cả Linux (VPS) Windows không bị vướng lỗi phân tích pháp dấu ngoặc kép hay khoảng trắng trong đường dẫn.
86
- - **Tối ưu**: PM2 giờ đây sẽ phân tách rạch ròi bằng cách gọi file thực thi `9router` với tham số `--interpreter none`, luôn chạy sync script bằng đúng phiên bản NodeJS nội tại thông qua `--interpreter process.execPath`.
104
+ - **Fix**: Chuyển từ việc chạy chuỗi bash (`execSync`) sang truyền mảng tham số rõ ràng (`execFileSync`) khi khởi động 9Router và script đồng bộ (sync) qua PM2. Đảm bảo PM2 luôn chạy được ứng dụng ổn định trên cả Linux (VPS) và Windows mà không bị vướng lỗi phân tích cú pháp dấu ngoặc kép hay khoảng trắng trong đường dẫn.
105
+ - **Tối ưu**: PM2 giờ đây sẽ phân tách rạch ròi bằng cách gọi file thực thi `9router` với tham số `--interpreter none`, và luôn chạy sync script bằng đúng phiên bản NodeJS nội tại thông qua `--interpreter process.execPath`.
87
106
 
88
- ## [5.1.4] 2026-04-06
107
+ ## [5.1.4] — 2026-04-06
89
108
 
90
- ### 🐞 Sửa lỗi BOM khởi động CLI & Tối ưu luồng Timeout trên Docker
109
+ ### 🐞 Sửa lỗi BOM khởi động CLI & Tối ưu luồng vá Timeout trên Docker
91
110
 
92
- - **Sửa file CLI (BOM)**: Xóa tự động chèn BOM (`\uFEFF`) đầu file `cli.js`. tự thừa này vốn làm hỏng shebang `#!/usr/bin/env node` gây `SyntaxError: Unexpected token` trong nhiều môi trường khi chạy npx
93
- - **Cải thiện Docker Timeout Patch**: Quá trình can thiệp timeout (`300s`) trong lúc build Docker giờ chuyển sang scan quét toàn bộ các file `.js` trong thư mục `openclaw/dist` thay cố tìm file trùng hash `gateway-cli-*`. Giúp bản luôn áp dụng thành công trên các phiên bản backend khác biệt không in ra warning rác trên console
111
+ - **Sửa file CLI (BOM)**: Xóa tự động chèn BOM (`\uFEFF`) ở đầu file `cli.js`. Ký tự thừa này vốn làm hỏng shebang `#!/usr/bin/env node` và gây `SyntaxError: Unexpected token` trong nhiều môi trường khi chạy npx
112
+ - **Cải thiện Docker Timeout Patch**: Quá trình can thiệp timeout (`300s`) trong lúc build Docker giờ chuyển sang scan quét toàn bộ các file `.js` trong thư mục `openclaw/dist` thay vì cố tìm file trùng hash `gateway-cli-*`. Giúp bản vá luôn áp dụng thành công trên các phiên bản backend khác biệt mà không in ra warning rác trên console
94
113
 
95
- ## [5.1.3] 2026-04-06
114
+ ## [5.1.3] — 2026-04-06
96
115
 
97
- ### 🐜 Lỗi lọt biến nội suy vào giao diện Docker Compose
116
+ ### 🐜 Lỗi lọt biến nội suy vào giao diện Docker Compose
98
117
 
99
- Bản lỗi base64 trước đó đã gây ra lỗi mới (regression) do dùng ngoặc `${Buffer.from(...)}` bên trong chuỗi string sinh ra docker-compose. Điều này làm lọt nguyên đoạn text nội suy vào `docker-compose.yml` thay sinh ra chuỗi base64 thật.
118
+ Bản vá lỗi base64 trước đó đã gây ra lỗi mới (regression) do dùng ngoặc `${Buffer.from(...)}` bên trong chuỗi string sinh ra docker-compose. Điều này làm lọt nguyên đoạn text nội suy vào `docker-compose.yml` thay vì sinh ra chuỗi base64 thật.
100
119
 
101
- - **Fix**: Thực hiện tạo base64 hoàn chỉnh qua JavaScript (`const syncScriptBase64 = encodeBase64Utf8(syncScript)`) ngay từ ban đầu trước khi ghép chuỗi vào file compose
102
- - Đảm bảo file compose tạo thành nhận chính xác base64 thuần túy không bị lọt biến môi trường
103
- - Dọn dẹp lại script test tương ứng
120
+ - **Fix**: Thực hiện tạo mã base64 hoàn chỉnh qua JavaScript (`const syncScriptBase64 = encodeBase64Utf8(syncScript)`) ngay từ ban đầu trước khi ghép chuỗi vào file compose
121
+ - Đảm bảo file compose tạo thành nhận chính xác mã base64 thuần túy mà không bị lọt biến môi trường
122
+ - Dọn dẹp lại script test tương ứng
104
123
 
105
- ## [5.1.2] 2026-04-06
124
+ ## [5.1.2] — 2026-04-06
106
125
 
107
- ### 🐛 Fix Shell Injection: Sync Script Dùng Base64
126
+ ### 🐛 Fix Shell Injection: Sync Script Dùng Base64
108
127
 
109
- Approach node -e JSON.stringify gây lỗi /bin/sh: Syntax error "(" unexpected JSON.stringify sinh chuỗi double-quoted phá vỡ shell argument.
128
+ Approach node -e JSON.stringify gây lỗi /bin/sh: Syntax error "(" unexpected vì JSON.stringify sinh chuỗi double-quoted phá vỡ shell argument.
110
129
 
111
- - **Fix**: nội dung sync script nay được **base64-encode tại thời điểm gen compose** bằng Buffer.from(script).toString base64
112
- - Entrypoint sinh ra dạng: node -e writeFileSync Buffer.from b64 base64 toString
113
- - Base64 chỉ chứa [A-Za-z0-9+/=] không tự đặc biệt, hoạt động đúng trong YAML block
114
- - Áp dụng cho tất cả luồng gen compose: Docker web wizard (setup.js x2) Docker CLI (cli.js x2)
130
+ - **Fix**: nội dung sync script nay được **base64-encode tại thời điểm gen compose** bằng Buffer.from(script).toString base64
131
+ - Entrypoint sinh ra dạng: node -e writeFileSync Buffer.from b64 base64 toString
132
+ - Base64 chỉ chứa [A-Za-z0-9+/=] — không có ký tự đặc biệt, hoạt động đúng trong YAML block
133
+ - Áp dụng cho tất cả luồng gen compose: Docker web wizard (setup.js x2) và Docker CLI (cli.js x2)
115
134
 
116
- ## [5.1.1] 2026-04-06
135
+ ## [5.1.1] — 2026-04-06
117
136
 
118
- ### 🔧 9Router Smart-Route Sync Ổn định qua API
137
+ ### 🔧 9Router Smart-Route Sync — Ổn định qua API
119
138
 
120
- Sửa lỗi nghiêm trọng khiến sync script không nhận ra provider đang active, làm tất cả request fallback về `openai` (lỗi `404 No active credentials`).
139
+ Sửa lỗi nghiêm trọng khiến sync script không nhận ra provider đang active, làm tất cả request fallback về `openai` (lỗi `404 No active credentials`).
121
140
 
122
- - **Nguyên nhân**: script đọc `db.providerConnections` từ `db.json` nhưng field này không tồn tại trong 9Router v0.3.79+ connections chỉ qua REST API
123
- - **Fix**: script giờ gọi `fetch('http://localhost:20128/api/providers')` `d.connections[]` để detect provider đang active
124
- - **Fix**: thay heredoc `cat << 'CLAWEOF'` (gây ra `const p=undefined`) bằng `node -e require('fs').writeFileSync(...)` không còn lỗi escaping trong YAML+shell
125
- - **Fix**: `build9RouterSmartRouteSyncScript()` trong CLI docker flow giờ truyền đúng `'/root/.9router/db.json'` làm db path
126
- - Áp dụng cho cả 3 vị trí: Docker web wizard (`setup.js`), Docker CLI (`cli.js`), native (`cli.js`)
141
+ - **Nguyên nhân**: script đọc `db.providerConnections` từ `db.json` nhưng field này không tồn tại trong 9Router v0.3.79+ — connections chỉ có qua REST API
142
+ - **Fix**: script giờ gọi `fetch('http://localhost:20128/api/providers')` → `d.connections[]` để detect provider đang active
143
+ - **Fix**: thay heredoc `cat << 'CLAWEOF'` (gây ra `const p=undefined`) bằng `node -e require('fs').writeFileSync(...)` — không còn lỗi escaping trong YAML+shell
144
+ - **Fix**: `build9RouterSmartRouteSyncScript()` trong CLI docker flow giờ truyền đúng `'/root/.9router/db.json'` làm db path
145
+ - Áp dụng cho cả 3 vị trí: Docker web wizard (`setup.js`), Docker CLI (`cli.js`), và native (`cli.js`)
127
146
 
128
- ### 📱 Zalo Pairing Tự Động Approve Khi Gateway Đang Chạy
147
+ ### 📱 Zalo Pairing — Tự Động Approve Khi Gateway Đang Chạy
129
148
 
130
- - Trước đây, auto-approve chỉ chạy trong login flow ban đầu; pairing request mới khi gateway đang chạy bị bỏ qua
131
- - **Fix**: `openclaw gateway run` với Zalo Personal giờ pipe stdout/stderr tự gọi `openclaw pairing approve zalouser <code>` khi phát hiện pairing code mới
149
+ - Trước đây, auto-approve chỉ chạy trong login flow ban đầu; pairing request mới khi gateway đang chạy bị bỏ qua
150
+ - **Fix**: `openclaw gateway run` với Zalo Personal giờ pipe stdout/stderr và tự gọi `openclaw pairing approve zalouser <code>` khi phát hiện pairing code mới
132
151
 
133
- ### 🧹 Output Docker CLI Gọn Hơn
152
+ ### 🧹 Output Docker CLI Gọn Hơn
134
153
 
135
- - Xóa các hướng dẫn thừa sau khi Docker build xong (`docker compose build`, `openclaw gateway`, PM2) Docker mode tự chạy hoàn toàn, không cần thao tác thủ công thêm
154
+ - Xóa các hướng dẫn thừa sau khi Docker build xong (`docker compose build`, `openclaw gateway`, PM2) — Docker mode tự chạy hoàn toàn, không cần thao tác thủ công thêm
136
155
 
137
- ## [5.1.0] 2026-04-07
156
+ ## [5.1.0] — 2026-04-07
138
157
 
139
- ### 🤖 Zalo Personal Login Improvements
158
+ ### 🤖 Zalo Personal Login Improvements
140
159
 
141
- - Zalo Personal giờ sử dụng luồng đăng nhập `zalouser` trực tiếp trên cả native Docker.
142
- - Setup in ra đường dẫn QR cùng các lệnh login/copy chính xác, giúp người dùng đăng nhập nhanh không cần `openclaw onboard`.
143
- - QR login Docker giờ nhắm vào service compose `ai-bot` đã sinh ra thay các tên container dễ hỏng.
160
+ - Zalo Personal giờ sử dụng luồng đăng nhập `zalouser` trực tiếp trên cả native và Docker.
161
+ - Setup in ra đường dẫn QR cùng các lệnh login/copy chính xác, giúp người dùng đăng nhập nhanh mà không cần `openclaw onboard`.
162
+ - QR login Docker giờ nhắm vào service compose `ai-bot` đã sinh ra thay vì các tên container cũ dễ hỏng.
144
163
 
145
- ## [5.0.9] 2026-04-06
164
+ ## [5.0.9] — 2026-04-06
146
165
 
147
- ### 🚀 Chế độ Native Install Không cần Docker
166
+ ### 🚀 Chế độ Native Install — Không cần Docker
148
167
 
149
- OpenClaw giờ hỗ trợ **cài đặt native (không dùng Docker)** trên Windows, Linux, macOS, VPS shared hosting.
168
+ OpenClaw giờ hỗ trợ **cài đặt native (không dùng Docker)** trên Windows, Linux, macOS, VPS và shared hosting.
150
169
 
151
- - **CLI native mode** thêm chọn chế độ: `docker` (mặc định) hoặc `native`
152
- - **Script khởi động sinh tự động theo OS:**
153
- - 🪟 **Windows** `setup-openclaw-win.bat` (double-click cài ngay)
154
- - 🐧 **Linux / macOS** `setup-openclaw-linux.sh`
155
- - 🖥️ **VPS / Ubuntu** `setup-openclaw-vps.sh` (PM2 chạy nền)
156
- - 🏠 **Shared Hosting / cPanel** `setup-openclaw-hosting.sh` + `ecosystem.config.cjs`
157
- - **Web Wizard cập nhật** Thêm toggle Deploy Mode (Docker / Native) + chọn OS
158
- - **URL host động** Ollama 9Router URL tự chuyển:
170
+ - **CLI native mode** — thêm chọn chế độ: `docker` (mặc định) hoặc `native`
171
+ - **Script khởi động sinh tự động theo OS:**
172
+ - 🪟 **Windows** → `setup-openclaw-win.bat` (double-click cài ngay)
173
+ - 🐧 **Linux / macOS** → `setup-openclaw-linux.sh`
174
+ - 🖥️ **VPS / Ubuntu** → `setup-openclaw-vps.sh` (PM2 chạy nền)
175
+ - 🏠 **Shared Hosting / cPanel** → `setup-openclaw-hosting.sh` + `ecosystem.config.cjs`
176
+ - **Web Wizard cập nhật** — Thêm toggle Deploy Mode (Docker / Native) + chọn OS
177
+ - **URL host động** — Ollama và 9Router URL tự chuyển:
159
178
  - Docker: `http://ollama:11434` / `http://9router:20128/v1`
160
179
  - Native: `http://localhost:11434` / `http://localhost:20128/v1`
161
- - **Kiểm tra Node.js 18+** Native mode yêu cầu Node.js 18+ trước khi chạy
162
- - **Test scripts** `test-native-install.bat` (Windows) `test-native-install.sh` (Linux/macOS)
180
+ - **Kiểm tra Node.js 18+** — Native mode yêu cầu Node.js 18+ trước khi chạy
181
+ - **Test scripts** — `test-native-install.bat` (Windows) và `test-native-install.sh` (Linux/macOS)
163
182
 
164
- ### 🤖 Cập nhật Gemma 4
183
+ ### 🤖 Cập nhật Gemma 4
165
184
 
166
- - **4 biến thể Gemma 4** qua Ollama: `gemma4:e2b` (~4-6 GB), `gemma4:e4b` (~8-10 GB), `gemma4:26b` (~18-24 GB), `gemma4:31b` (~24+ GB)
167
- - Tự pull model Gemma 4 khi `docker compose up` lần đầu (timeout container tăng lên 15 phút)
168
- - Nâng timeout Ollama lên **300 giây** để xử model lớn
169
- - Thêm `OLLAMA_NUM_PARALLEL=1` `OLLAMA_KEEP_ALIVE=24h` vào Docker sidecar
185
+ - **4 biến thể Gemma 4** qua Ollama: `gemma4:e2b` (~4-6 GB), `gemma4:e4b` (~8-10 GB), `gemma4:26b` (~18-24 GB), `gemma4:31b` (~24+ GB)
186
+ - Tự pull model Gemma 4 khi `docker compose up` lần đầu (timeout container tăng lên 15 phút)
187
+ - Nâng timeout Ollama lên **300 giây** để xử lý model lớn
188
+ - Thêm `OLLAMA_NUM_PARALLEL=1` và `OLLAMA_KEEP_ALIVE=24h` vào Docker sidecar
170
189
 
171
- ### 🤖 Multi-Bot Deployment (tối đa 5 bot Telegram trên mỗi workspace)
190
+ ### 🤖 Multi-Bot Deployment (tối đa 5 bot Telegram trên mỗi workspace)
172
191
 
173
- OpenClaw giờ hỗ trợ triển khai **nhiều bot Telegram độc lập** từ một setup duy nhất mỗi bot identity, slash command, AI personality thư mục workspace riêng biệt.
192
+ OpenClaw giờ hỗ trợ triển khai **nhiều bot Telegram độc lập** từ một setup duy nhất — mỗi bot có identity, slash command, AI personality và thư mục workspace riêng biệt.
174
193
 
175
- - **Triển khai 15 bot cùng lúc** Web Wizard CLI đều hỗ trợ cấu hình multi-bot
176
- - **Workspace riêng biệt** mỗi bot thư mục `botN/` riêng với `.env` cấu hình `.openclaw/` riêng, không gây xung đột token hay cấu hình
177
- - **Tự động gán cổng** cổng bắt đầu từ `18791` tăng dần cho mỗi bot (`18791`, `18792`, ...) để tránh xung đột binding host
178
- - **Docker Compose đa-service** tự động sinh `docker-compose.yml` với một service cho mỗi bot, cộng thêm một container provider chung (9Router hoặc Ollama)
179
- - **Department Room Model** khi các bot chia sẻ chung một nhóm Telegram, chúng hoạt động như một đội ngũ chuyên nghiệp:
180
- - 🤫 **Mặc định im lặng** bot phản hồi bằng emoji (👍 ❤️) với tin nhắn thông thường nhưng không bao giờ spam reply
181
- - 📣 **Trigger bằng @mention hoặc /slash** chỉ bot được nhắc tên hoặc được gọi lệnh mới phản hồi, giống như gọi tên đồng nghiệp trong phòng họp
182
- - 🗃️ **Workspace chung** tất cả bot đọc từ một thư mục workspace chung thể cộng tác trên các tác vụ, tệp báo cáo
183
- - **Cấu hình botGroup** được inject vào `openclaw.json` của mỗi bot để chúng biết tên lệnh slash của nhau khi runtime
194
+ - **Triển khai 1–5 bot cùng lúc** — Web Wizard và CLI đều hỗ trợ cấu hình multi-bot
195
+ - **Workspace riêng biệt** — mỗi bot có thư mục `botN/` riêng với `.env` và cấu hình `.openclaw/` riêng, không gây xung đột token hay cấu hình
196
+ - **Tự động gán cổng** — cổng bắt đầu từ `18791` và tăng dần cho mỗi bot (`18791`, `18792`, ...) để tránh xung đột binding host
197
+ - **Docker Compose đa-service** — tự động sinh `docker-compose.yml` với một service cho mỗi bot, cộng thêm một container provider chung (9Router hoặc Ollama)
198
+ - **Department Room Model** — khi các bot chia sẻ chung một nhóm Telegram, chúng hoạt động như một đội ngũ chuyên nghiệp:
199
+ - 🤫 **Mặc định im lặng** — bot phản hồi bằng emoji (👍 ❤️) với tin nhắn thông thường nhưng không bao giờ spam reply
200
+ - 📣 **Trigger bằng @mention hoặc /slash** — chỉ bot được nhắc tên hoặc được gọi lệnh mới phản hồi, giống như gọi tên đồng nghiệp trong phòng họp
201
+ - 🗃️ **Workspace chung** — tất cả bot đọc từ một thư mục workspace chung và có thể cộng tác trên các tác vụ, tệp và báo cáo
202
+ - **Cấu hình botGroup** được inject vào `openclaw.json` của mỗi bot để chúng biết tên và lệnh slash của nhau khi runtime
184
203
 
185
- ### 🔗 Trợ giúp lấy Telegram Group ID
204
+ ### 🔗 Trợ giúp lấy Telegram Group ID
186
205
 
187
- Lấy Group ID giờ trở nên cực kỳ đơn giản:
206
+ Lấy Group ID giờ trở nên cực kỳ đơn giản:
188
207
 
189
- - **Web Wizard**: card "Đã group" giờ hiển thị nút inline `Lấy Group ID` mở thẳng **@userinfobot**, kèm hướng dẫn từng bước (forward tin nhắn nhóm bot trả về Chat ID)
190
- - **CLI**: chọn "existing group" sẽ in ra hướng dẫn tương tác với các bước đánh số link trực tiếp đến `https://t.me/userinfobot`
208
+ - **Web Wizard**: card "Đã có group" giờ hiển thị nút inline `Lấy Group ID` mở thẳng **@userinfobot**, kèm hướng dẫn từng bước (forward tin nhắn nhóm → bot trả về Chat ID)
209
+ - **CLI**: chọn "existing group" sẽ in ra hướng dẫn tương tác với các bước đánh số và link trực tiếp đến `https://t.me/userinfobot`
191
210
 
192
- ### 🎨 Tinh chỉnh UI
211
+ ### 🎨 Tinh chỉnh UI
193
212
 
194
- - **Bộ chọn tùy chọn nhóm** được thiết kế dạng **hai thẻ tương tác** với icon, tả, hiệu ứng hover glow dấu tick chọn động
195
- - Trạng thái active của thẻ: màu xanh + viền cho "tạo sau", màu xanh chàm + viền cho "nhóm đã "
196
- - Hàng nhập Group ID bao gồm nút trợ giúp inline không cần tìm kiếm tài liệu nữa
213
+ - **Bộ chọn tùy chọn nhóm** được thiết kế dạng **hai thẻ tương tác** với icon, mô tả, hiệu ứng hover glow và dấu tick chọn động
214
+ - Trạng thái active của thẻ: màu xanh lá + viền cho "tạo sau", màu xanh chàm + viền cho "nhóm đã có"
215
+ - Hàng nhập Group ID bao gồm nút trợ giúp inline — không cần tìm kiếm tài liệu nữa
197
216
 
198
- ## [5.0.0] 2026-04-04
217
+ ## [5.0.0] — 2026-04-04
199
218
 
200
- ### 🚀 Hỗ trợ Gemma 4 Model mới nhất của Google
219
+ ### 🚀 Hỗ trợ Gemma 4 — Model mới nhất của Google
201
220
 
202
- OpenClaw v5.0.0 cập nhật **Gemma 4** dòng model open-weights mới của Google DeepMind, ra mắt 02/04/2026.
221
+ OpenClaw v5.0.0 cập nhật **Gemma 4** — dòng model open-weights mới của Google DeepMind, ra mắt 02/04/2026.
203
222
 
204
- - **Gemma 4 sẵn 3 size qua Ollama** `gemma4:4b` (~6 GB RAM), `gemma4` mặc định (~10 GB), `gemma4:27b` (~18 GB)
205
- - **Không cần cài Ollama thủ công** Khi chọn Local Ollama + Gemma 4, setup tự động sinh **service `ollama` sát cạnh trong `docker-compose.yml`**. Docker tự pull model khi `docker compose up`. Không cần cài Ollama trước.
206
- - **OLLAMA_HOST tự cấu hình** Trỏ thẳng vào sidecar container (`http://ollama:11434`).
207
- - **Cập nhật danh sách model** Thêm `gemma4`, `gemma4:27b`, `gemma4:4b` vào Ollama provider trên cả CLI Web Wizard.
223
+ - **Gemma 4 có sẵn 3 size qua Ollama** — `gemma4:4b` (~6 GB RAM), `gemma4` mặc định (~10 GB), `gemma4:27b` (~18 GB)
224
+ - **Không cần cài Ollama thủ công** — Khi chọn Local Ollama + Gemma 4, setup tự động sinh **service `ollama` sát cạnh trong `docker-compose.yml`**. Docker tự pull model khi `docker compose up`. Không cần cài Ollama trước.
225
+ - **OLLAMA_HOST tự cấu hình** — Trỏ thẳng vào sidecar container (`http://ollama:11434`).
226
+ - **Cập nhật danh sách model** — Thêm `gemma4`, `gemma4:27b`, `gemma4:4b` vào Ollama provider trên cả CLI và Web Wizard.
208
227
 
209
- ### 💻 Yêu cầu phần cứng cho Gemma 4
228
+ ### 💻 Yêu cầu phần cứng cho Gemma 4
210
229
 
211
- | Model | RAM/VRAM tối thiểu (4-bit) | Phù hợp |
230
+ | Model | RAM/VRAM tối thiểu (4-bit) | Phù hợp |
212
231
  | ------------------- | -------------------------- | ------------------------------ |
213
- | `gemma4:4b` | ~6 GB | Laptop thông thường, Mac M1/M2 |
214
- | `gemma4` (mặc định) | ~10 GB | PC 16 GB RAM |
232
+ | `gemma4:4b` | ~6 GB | Laptop thông thường, Mac M1/M2 |
233
+ | `gemma4` (mặc định) | ~10 GB | PC 16 GB RAM |
215
234
  | `gemma4:27b` | ~18 GB | Workstation 32 GB / GPU 24 GB |
216
235
 
217
- > Gemma 4 **miễn phí, open-weights, giấy phép Apache 2.0**. Không cần API key chạy 100% local qua Docker.
236
+ > Gemma 4 **miễn phí, open-weights, giấy phép Apache 2.0**. Không cần API key — chạy 100% local qua Docker.
218
237
 
219
- ## [4.1.4] 2026-04-03
238
+ ## [4.1.4] — 2026-04-03
220
239
 
221
- ### Cải tiến
240
+ ### ✨ Cải tiến
222
241
 
223
- - CLI/Wizard đồng bộ đầy đủ skills (Browser Automation, Memory, RAG, Code Interpreter, v.v.)
224
- - Browser Automation: chọn chế độ Desktop (Host Chrome) hoặc Server (Headless Chromium) cho Linux/Ubuntu
225
- - Sửa lỗi Dockerfile WORKDIR gây lỗi build trên Linux
226
- - Skills install tại **runtime** container (không phải lúc build) để tránh lỗi ClawHub auth
227
- - TOOLS.md động: tự sinh theo danh sách skills đã chọn
228
- - Tự tạo `browser-tool.js` (Desktop mode) `BROWSER.md`
229
- - Tự đăng skills vào `openclaw.json skills.entries`
230
- - Bổ sung prompt cấu hình Email SMTP inject vào `.env`
231
- - Single-source version qua `bump-version.mjs` 1 lệnh cập nhật tất cả file
242
+ - CLI/Wizard đồng bộ đầy đủ skills (Browser Automation, Memory, RAG, Code Interpreter, v.v.)
243
+ - Browser Automation: chọn chế độ Desktop (Host Chrome) hoặc Server (Headless Chromium) cho Linux/Ubuntu
244
+ - Sửa lỗi Dockerfile WORKDIR gây lỗi build trên Linux
245
+ - Skills install tại **runtime** container (không phải lúc build) để tránh lỗi ClawHub auth
246
+ - TOOLS.md động: tự sinh theo danh sách skills đã chọn
247
+ - Tự tạo `browser-tool.js` (Desktop mode) và `BROWSER.md`
248
+ - Tự đăng ký skills vào `openclaw.json → skills.entries`
249
+ - Bổ sung prompt cấu hình Email SMTP và inject vào `.env`
250
+ - Single-source version qua `bump-version.mjs` — 1 lệnh cập nhật tất cả file
232
251
 
233
- ## [4.1.3] 2026-04-02
252
+ ## [4.1.3] — 2026-04-02
234
253
 
235
- ### Cải tiến
254
+ ### ✨ Cải tiến
236
255
 
237
- - CLI/Wizard đồng bộ đầy đủ skills (Browser Automation, Memory, RAG, Code Interpreter, v.v.)
238
- - Browser Automation: chọn chế độ Desktop (Host Chrome) hoặc Server (Headless Chromium)
239
- - Sửa lỗi Dockerfile WORKDIR trên Linux
240
- - TOOLS.md động: tự sinh theo skills đã chọn
241
- - Tự tạo browser-tool.js (Desktop mode) BROWSER.md
242
- - Tự đăng skills vào `openclaw.json skills.entries`
243
- - Bổ sung prompt cấu hình Email SMTP
256
+ - CLI/Wizard đồng bộ đầy đủ skills (Browser Automation, Memory, RAG, Code Interpreter, v.v.)
257
+ - Browser Automation: chọn chế độ Desktop (Host Chrome) hoặc Server (Headless Chromium)
258
+ - Sửa lỗi Dockerfile WORKDIR trên Linux
259
+ - TOOLS.md động: tự sinh theo skills đã chọn
260
+ - Tự tạo browser-tool.js (Desktop mode) và BROWSER.md
261
+ - Tự đăng ký skills vào `openclaw.json → skills.entries`
262
+ - Bổ sung prompt cấu hình Email SMTP
244
263
 
245
- Tất cả những thay đổi nổi bật của dự án sẽ được ghi chép trong file này.
264
+ Tất cả những thay đổi nổi bật của dự án sẽ được ghi chép trong file này.
246
265
 
247
- ## [4.1.2] 2026-04-01
266
+ ## [4.1.2] — 2026-04-01
248
267
 
249
- ### Khắc phục
268
+ ### Khắc phục
250
269
 
251
- - **CLI setup**: Khắc phục lỗi sinh file `docker-compose.yml` định dạng sai khi dùng 9Router (lỗi báo `yaml: while scanning a simple key`) bằng cách đổi cách escape string `syncComboScript` sang kiểu heredoc block scalars của bash để tránh xung đột nháy kép/nháy đơn trong YAML.
270
+ - **CLI setup**: Khắc phục lỗi sinh file `docker-compose.yml` định dạng sai khi dùng 9Router (lỗi báo `yaml: while scanning a simple key`) bằng cách đổi cách escape string `syncComboScript` sang kiểu heredoc block scalars của bash để tránh xung đột nháy kép/nháy đơn trong YAML.
252
271
 
253
- ## [4.1.0] 2026-04-01
272
+ ## [4.1.0] — 2026-04-01
254
273
 
255
- ### 🚀 Stable 9Router Smart Routing
274
+ ### 🚀 Stable 9Router Smart Routing
256
275
 
257
- - **Khởi tạo Database tinh gọn**: Combo mặc định của 9Router hiện tại sạch 100% (chỉ lưu `smart-route`). Đã loại bỏ việc tự động tiêm GPT-4o/Claude/Gemini như các rác hệ thống để ưu tiên 100% sức mạnh định tuyến động.
258
- - **Tối giản Giao diện Toggling**: Cả web Setup Wizard CLI đều được tinh giản, không còn liệt mảng models thừa khi chọn 9Router. Hệ thống mặc định chốt cứng Auto Route (`smart-route`) giao hoàn toàn phán quyết chuyển đổi cho thuật toán `PREF`.
276
+ - **Khởi tạo Database tinh gọn**: Combo mặc định của 9Router hiện tại sạch 100% (chỉ lưu `smart-route`). Đã loại bỏ việc tự động tiêm GPT-4o/Claude/Gemini như các rác hệ thống để ưu tiên 100% sức mạnh định tuyến động.
277
+ - **Tối giản Giao diện Toggling**: Cả web Setup Wizard và CLI đều được tinh giản, không còn liệt kê mảng models dư thừa khi chọn 9Router. Hệ thống mặc định chốt cứng Auto Route (`smart-route`) và giao hoàn toàn phán quyết chuyển đổi cho thuật toán `PREF`.
259
278
 
260
- ## [4.0.9] 2026-04-01
279
+ ## [4.0.9] — 2026-04-01
261
280
 
262
- ### 🔄 Dynamic Smart Route (Đồng bộ Provider Realtime)
281
+ ### 🔄 Dynamic Smart Route (Đồng bộ Provider Realtime)
263
282
 
264
- - **Routing Thông Minh**: Combo `smart-route` không còn danh sách cứng 100+ model. Script đồng bộ chạy ngầm mỗi 30 giây sẽ tự động quét `/api/providers` của 9Router chỉ đưa vào combo **những provider đã kết nối đang bật**. Triệt tiêu hoàn toàn lỗi `404 No active credentials`.
265
- - **Bật/Tắt Tức Thì**: Bật hoặc tắt provider trên Dashboard 9Router combo tự cập nhật trong vòng 30 giây, không cần restart container.
266
- - **Mapping Đầy Đủ**: Hỗ trợ 25+ provider (Codex, Claude Code, GitHub Copilot, Cursor, Kilo, Cline, Gemini CLI, iFlow, Qwen, Kiro, Ollama, GLM, MiniMax, DeepSeek, xAI, Mistral, Groq...).
283
+ - **Routing Thông Minh**: Combo `smart-route` không còn là danh sách cứng 100+ model. Script đồng bộ chạy ngầm mỗi 30 giây sẽ tự động quét `/api/providers` của 9Router và chỉ đưa vào combo **những provider đã kết nối VÀ đang bật**. Triệt tiêu hoàn toàn lỗi `404 No active credentials`.
284
+ - **Bật/Tắt Tức Thì**: Bật hoặc tắt provider trên Dashboard 9Router — combo tự cập nhật trong vòng 30 giây, không cần restart container.
285
+ - **Mapping Đầy Đủ**: Hỗ trợ 25+ provider (Codex, Claude Code, GitHub Copilot, Cursor, Kilo, Cline, Gemini CLI, iFlow, Qwen, Kiro, Ollama, GLM, MiniMax, DeepSeek, xAI, Mistral, Groq...).
267
286
 
268
- ### 🐳 Tự Động Cài Docker
287
+ ### 🐳 Tự Động Cài Docker
269
288
 
270
- - **Zero-Prerequisite**: `npx create-openclaw-bot` tự phát hiện Docker chưa cài tự tải + cài qua `winget` (Windows), `brew` (macOS), hoặc script chính thức Docker (Linux).
271
- - **Hướng Dẫn Ràng**: Nếu cài tự động thất bại, hiển thị link tải trực tiếp kèm hướng dẫn chi tiết.
289
+ - **Zero-Prerequisite**: `npx create-openclaw-bot` tự phát hiện Docker chưa cài → tự tải + cài qua `winget` (Windows), `brew` (macOS), hoặc script chính thức Docker (Linux).
290
+ - **Hướng Dẫn Rõ Ràng**: Nếu cài tự động thất bại, hiển thị link tải trực tiếp kèm hướng dẫn chi tiết.
272
291
 
273
- ## [4.0.8] 2026-03-31
292
+ ## [4.0.8] — 2026-03-31
274
293
 
275
- ### Tối ưu 9Router & Mở rộng Ollama Cloud
294
+ ### ✨ Tối ưu 9Router & Mở rộng Ollama Cloud
276
295
 
277
- - **Tích hợp 9Router cực kỳ Ổn định (Zero Config)**: Proxy 9Router hiện được tự động kích hoạt bảo mật bên trong mạng Docker network qua cổng `sk-no-key`. Toàn bộ thiết đặt API keys thủ công định tuyến models được gỡ bỏ khỏi `.env` để nhường chỗ cho hệ thống quản tập trung thông minh hơn qua [9Router Dashboard](http://localhost:20128/dashboard).
278
- - **Mở Rộng Kết Nối Models**: Đưa vào danh sách hỗ trợ trọn bộ hệ sinh thái Ollama Cloud (_Qwen 3.5, GLM-5, MiniMax, GPT-OSS_), Kiro Haiku, Qwen Flash, cùng toàn bộ iFlow models hoàn toàn miễn phí.
279
- - **Tự động Inject Smart Routing**: Cấu hình tự động gài sẵn combo luân chuyển linh hoạt `smart-route` giúp cân bằng tải công việc qua lại mượt giữa Codex, Claude Code, Gemini, iFlow.
296
+ - **Tích hợp 9Router cực kỳ Ổn định (Zero Config)**: Proxy 9Router hiện được tự động kích hoạt bảo mật bên trong mạng Docker network qua cổng `sk-no-key`. Toàn bộ thiết đặt API keys thủ công và định tuyến models được gỡ bỏ khỏi `.env` để nhường chỗ cho hệ thống quản lý tập trung và thông minh hơn qua [9Router Dashboard](http://localhost:20128/dashboard).
297
+ - **Mở Rộng Kết Nối Models**: Đưa vào danh sách hỗ trợ trọn bộ hệ sinh thái Ollama Cloud (_Qwen 3.5, GLM-5, MiniMax, GPT-OSS_), Kiro Haiku, Qwen Flash, cùng toàn bộ iFlow models hoàn toàn miễn phí.
298
+ - **Tự động Inject Smart Routing**: Cấu hình tự động gài sẵn combo luân chuyển linh hoạt `smart-route` giúp cân bằng tải công việc qua lại mượt mà giữa Codex, Claude Code, Gemini, và iFlow.
280
299
 
281
- ### 🧹 Clean Workspace & Auto-Setup Đa Nền Tảng
300
+ ### 🧹 Clean Workspace & Auto-Setup Đa Nền Tảng
282
301
 
283
- - **Zero-Clutter Generation**: Dọn sạch hoàn toàn các template làm mẫu như `.env.example` hay các file cấu hình `docker-compose` tĩnh thừa. Script setup sẽ tự khởi tạo linh động các file thực thụ ngay lúc chạy cho một workspace gọn gàng nhất.
284
- - **Auto Browser Đa Nền Tảng**: Bổ sung `start-chrome-debug.sh` mới đét cho macOS/Linux đồng bộ hoàn hảo với file `.bat` thiết lập chạy Automation trên Windows, mở ra kỷ nguyên Auto-Browser tiện lợi.
285
- - **Auto Prompt CLI**: `npx create-openclaw-bot` hiện đã hoàn chỉnh về feature-parity với Web UI, hỗ trợ tra vấn thông tin thiết lập User Identity Persona của Bot trực tiếp bảng console.
302
+ - **Zero-Clutter Generation**: Dọn sạch hoàn toàn các template làm mẫu như `.env.example` hay các file cấu hình `docker-compose` tĩnh dư thừa. Script setup sẽ tự khởi tạo linh động các file thực thụ ngay lúc chạy cho một workspace gọn gàng nhất.
303
+ - **Auto Browser Đa Nền Tảng**: Bổ sung `start-chrome-debug.sh` mới đét cho macOS/Linux đồng bộ hoàn hảo với file `.bat` thiết lập chạy Automation trên Windows, mở ra kỷ nguyên Auto-Browser tiện lợi.
304
+ - **Auto Prompt CLI**: `npx create-openclaw-bot` hiện đã hoàn chỉnh về feature-parity với Web UI, hỗ trợ tra vấn thông tin thiết lập User Identity và Persona của Bot trực tiếp ở bảng console.
286
305
 
287
- ## [4.0.1] 2026-03-31
306
+ ## [4.0.1] — 2026-03-31
288
307
 
289
- ### Tự Động Hoá (Tự tạo thư mục cài đặt gốc) & NPM CLI
308
+ ### ✨ Tự Động Hoá (Tự tạo thư mục cài đặt gốc) & NPM CLI
290
309
 
291
- - **One-Command Install (npx)**: Gói CLI `create-openclaw-bot` được tải lên NPM. Người dùng Windows, Linux, Mac chỉ cần mở Terminal lệnh `npx create-openclaw-bot` để setup tự động từ A-Z qua giao diện tương tác.
292
- - **Tự động Setup & Khởi động Docker**: Quy trình tạo `.bat`/CLI được viết lại, thiết lập xong sẽ mở Docker compose tự động tải kích hoạt Bot ngay.
293
- - **Improved UI Setup**: Gọn gàng hoá file preview, đổi layout UI cho Zalo Bot API để dùng official vector SVG, nổi màu xanh chủ đạo Zalo thay logo trong suốt.
294
- - **Safety First**: Lược bỏ tuỳ chọn hình Antigravity (AG) khỏi 9router Proxy Models thêm cảnh báo đỏ trên UI để tránh rủi ro người dùng bị khoá account Google AI Ultra do lạm dụng quá mức. Cập nhật icon credit cho thesvg.org.
310
+ - **One-Command Install (npx)**: Gói CLI `create-openclaw-bot` được tải lên NPM. Người dùng Windows, Linux, Mac chỉ cần mở Terminal gõ lệnh `npx create-openclaw-bot` để setup tự động từ A-Z qua giao diện tương tác.
311
+ - **Tự động Setup & Khởi động Docker**: Quy trình tạo `.bat`/CLI được viết lại, thiết lập xong sẽ mở Docker compose tự động tải và kích hoạt Bot ngay.
312
+ - **Improved UI Setup**: Gọn gàng hoá file preview, đổi layout UI cho Zalo Bot API để dùng official vector SVG, nổi màu xanh chủ đạo Zalo thay vì logo trong suốt.
313
+ - **Safety First**: Lược bỏ tuỳ chọn mô hình Antigravity (AG) khỏi 9router Proxy Models và thêm cảnh báo đỏ trên UI để tránh rủi ro người dùng bị khoá account Google AI Ultra do lạm dụng quá mức. Cập nhật icon credit cho thesvg.org.
295
314
 
296
- ## [4.0.0] 2026-03-30
315
+ ## [4.0.0] — 2026-03-30
297
316
 
298
- ### New Features & Updates
317
+ ### ✨ New Features & Updates
299
318
 
300
- - **Full English Localization** Đã hoàn thiện toàn bộ bản dịch tiếng Anh cho Setup Wizard (Button, Label, Step 4 Output).
301
- - **Language Toggle Relocation** Di chuyển công tắc ngôn ngữ (VI/EN) sang vị trí dễ nhìn thao tác hơn.
302
- - **Setup UI/UX fixes** Cải thiện giao diện Setup Wizard cho Browser Automation sửa các lỗi hiển thị (như undefined model badge).
303
- - **Reference Error Fixes** Khắc phục một số lỗi Reference Error trong quá trình chạy setup.
319
+ - **Full English Localization** — Đã hoàn thiện toàn bộ bản dịch tiếng Anh cho Setup Wizard (Button, Label, Step 4 Output).
320
+ - **Language Toggle Relocation** — Di chuyển công tắc ngôn ngữ (VI/EN) sang vị trí dễ nhìn và thao tác hơn.
321
+ - **Setup UI/UX fixes** — Cải thiện giao diện Setup Wizard cho Browser Automation và sửa các lỗi hiển thị (như undefined model badge).
322
+ - **Reference Error Fixes** — Khắc phục một số lỗi Reference Error trong quá trình chạy setup.
304
323
 
305
- ## [3.0.2] 2026-03-29
324
+ ## [3.0.2] — 2026-03-29
306
325
 
307
- ### 9Router Smart Proxy Expansion
326
+ ### ✨ 9Router Smart Proxy Expansion
308
327
 
309
- - **9Router db.json Stability** Cập nhật logic inject db.json của 9router qua entrypoint để tránh lỗi báo mất file "No such file or directory, lstat db.json".
310
- - **Flagship Fallback Proxy** Cấu hình "Smart Proxy" để danh sách luân chuyển các LLMs Flagship mạnh mẽ nhất hiện tại của Codex, Antigravity, Claude Code, Github Copilot.
311
- - **Tùy chỉnh Setup Wizard** Khi cài đặt hiện tại sẽ thấy danh sách provider/model hoàn chỉnh, Smart Proxy được đặt làm chuẩn ưu tiên để tự fix lỗi "404 No Active Credentials".
328
+ - **9Router db.json Stability** — Cập nhật logic inject db.json của 9router qua entrypoint để tránh lỗi báo mất file "No such file or directory, lstat db.json".
329
+ - **Flagship Fallback Proxy** — Cấu hình "Smart Proxy" để có danh sách luân chuyển các LLMs Flagship mạnh mẽ nhất hiện tại của Codex, Antigravity, Claude Code, và Github Copilot.
330
+ - **Tùy chỉnh Setup Wizard** — Khi cài đặt hiện tại sẽ thấy danh sách provider/model hoàn chỉnh, và Smart Proxy được đặt làm chuẩn ưu tiên để tự fix lỗi "404 No Active Credentials".
312
331
 
313
- ## [3.0.1] 2026-03-29
332
+ ## [3.0.1] — 2026-03-29
314
333
 
315
- ### New Features
334
+ ### ✨ New Features
316
335
 
317
- - **Wizard UI Redesign (Step 2)** AI Provider/Model lên đầu, sau đó Identity, Personality, Security Rules, Extensions
318
- - **User Info textarea** User tự nhập thông tin về mình sinh vào `USER.md` để bot nhân hóa
319
- - **Editable Security Rules** Hiển thị quy tắc bảo mật mặc định, user thể sửa inject vào `AGENTS.md`
320
- - **Section dividers** Icon dividers giữa các nhóm config (🤖 🔐 🧩)
336
+ - **Wizard UI Redesign (Step 2)** — AI Provider/Model lên đầu, sau đó Identity, Personality, Security Rules, Extensions
337
+ - **User Info textarea** — User tự nhập thông tin về mình → sinh vào `USER.md` để bot cá nhân hóa
338
+ - **Editable Security Rules** — Hiển thị quy tắc bảo mật mặc định, user có thể sửa → inject vào `AGENTS.md`
339
+ - **Section dividers** — Icon dividers giữa các nhóm config (🤖 🔐 🧩)
321
340
 
322
- ### 🐛 Bug Fixes
341
+ ### 🐛 Bug Fixes
323
342
 
324
- - **Skills auto-enable** Khi chọn skill, giờ tự động khai báo trong `openclaw.json` `skills.entries` (enabled: true). Trước đây chỉ cài Dockerfile nhưng không register bot không nhận skill
325
- - **Skills env injection** Skills cần API key (Tavily, SMTP) tự động inject env vars vào `skills.entries`
343
+ - **Skills auto-enable** — Khi chọn skill, giờ tự động khai báo trong `openclaw.json` → `skills.entries` (enabled: true). Trước đây chỉ cài Dockerfile nhưng không register → bot không nhận skill
344
+ - **Skills env injection** — Skills cần API key (Tavily, SMTP…) tự động inject env vars vào `skills.entries`
326
345
 
327
- ### 🎨 UI/UX
346
+ ### 🎨 UI/UX
328
347
 
329
- - Identity grid 3 cột (Tên, Vai trò, Emoji) bỏ Vibe (gộp vào System Prompt)
330
- - Emoji input fix: `form-input--emoji` class, cùng height với input khác
331
- - Label System Prompt "Tính cách, Vibe & Quy tắc trả lời"
348
+ - Identity grid 3 cột (Tên, Vai trò, Emoji) — bỏ Vibe (gộp vào System Prompt)
349
+ - Emoji input fix: `form-input--emoji` class, cùng height với input khác
350
+ - Label System Prompt → "Tính cách, Vibe & Quy tắc trả lời"
332
351
  - Responsive mobile: Name full width, Role + Emoji side-by-side
333
- - Security textarea readonly mặc định, nút "✏️ Sửa" / "🔒 Khóa" toggle
352
+ - Security textarea readonly mặc định, nút "✏️ Sửa" / "🔒 Khóa" toggle
334
353
 
335
- ### 🔧 Technical
354
+ ### 🔧 Technical
336
355
 
337
- - `state.config.userInfo` new field, saved from `cfg-user-info` textarea
338
- - `state.config.securityRules` editable, defaults per language (vi/en)
356
+ - `state.config.userInfo` — new field, saved from `cfg-user-info` textarea
357
+ - `state.config.securityRules` — editable, defaults per language (vi/en)
339
358
  - `DEFAULT_SECURITY_RULES` constant with vi/en templates
340
359
  - `clawConfig.skills.entries` generated from selected skills
341
360
  - Language toggle updates both prompt and security rules
342
361
 
343
362
  ---
344
363
 
345
- ## [3.0.0] 2026-03-28
364
+ ## [3.0.0] — 2026-03-28
346
365
 
347
- ### New Features
366
+ ### ✨ New Features
348
367
 
349
- - **9Router Integration** AI proxy, không cần API key, multi-container Docker (`docker-compose.yml` 2 service)
350
- - **Skills System (ClawHub)** 8 agent capabilities: Web Search, Browser Automation, Memory, RAG, Image Gen, Bot Scheduler, Code Interpreter, Email Assistant
351
- - **Plugins System (npm)** 4 runtime extensions: Voice Call, Matrix, MS Teams, Nostr
352
- - **Browser Automation** Full Chrome Debug Mode support (socat proxy, agent-browser, Playwright engine)
353
- - **Task Scheduler** Windows Scheduled Task auto-starts Chrome Debug khi logon (delay 10s)
354
- - **Skill-aware .env** `.env` template tự động thêm env vars cho skills cần API key (Tavily, SMTP, Flux...)
355
- - **Post-setup Management** Hướng dẫn thêm/bỏ skills/plugins sau khi setup qua `docker exec`
368
+ - **9Router Integration** — AI proxy, không cần API key, multi-container Docker (`docker-compose.yml` 2 service)
369
+ - **Skills System (ClawHub)** — 8 agent capabilities: Web Search, Browser Automation, Memory, RAG, Image Gen, Bot Scheduler, Code Interpreter, Email Assistant
370
+ - **Plugins System (npm)** — 4 runtime extensions: Voice Call, Matrix, MS Teams, Nostr
371
+ - **Browser Automation** — Full Chrome Debug Mode support (socat proxy, agent-browser, Playwright engine)
372
+ - **Task Scheduler** — Windows Scheduled Task auto-starts Chrome Debug khi logon (delay 10s)
373
+ - **Skill-aware .env** — `.env` template tự động thêm env vars cho skills cần API key (Tavily, SMTP, Flux...)
374
+ - **Post-setup Management** — Hướng dẫn thêm/bỏ skills/plugins sau khi setup qua `docker exec`
356
375
 
357
- ### 🎨 UI/UX
376
+ ### 🎨 UI/UX
358
377
 
359
- - Tách Skills (4-column grid) Plugins (riêng biệt) ràng hơn
360
- - Skill cards hiện notes (⚙️) cho skills cần setup thêm
361
- - Browser Automation notice card Step 4 với `.bat` + `.ps1` scripts
362
- - Management guide card (🔧) với `docker exec` commands
378
+ - Tách Skills (4-column grid) và Plugins (riêng biệt) — rõ ràng hơn
379
+ - Skill cards hiện notes (⚙️) cho skills cần setup thêm
380
+ - Browser Automation notice card ở Step 4 với `.bat` + `.ps1` scripts
381
+ - Management guide card (🔧) với `docker exec` commands
363
382
 
364
- ### 📚 Documentation
383
+ ### 📚 Documentation
365
384
 
366
- - `docs/browser-automation-guide.md` Hướng dẫn sử dụng Browser Automation cho user
367
- - `docs/skills-plugins-guide.md` Tổng hợp toàn bộ skills/plugins + setup + env vars
368
- - README.md / README.vi.md Thêm 9Router, Skills/Plugins, FAQs mới
385
+ - `docs/browser-automation-guide.md` — Hướng dẫn sử dụng Browser Automation cho user
386
+ - `docs/skills-plugins-guide.md` — Tổng hợp toàn bộ skills/plugins + setup + env vars
387
+ - README.md / README.vi.md — Thêm 9Router, Skills/Plugins, FAQs mới
369
388
 
370
- ### 🔧 Technical
389
+ ### 🔧 Technical
371
390
 
372
- - `state.config.skills[]` + `state.config.plugins[]` quản độc lập
391
+ - `state.config.skills[]` + `state.config.plugins[]` quản lý độc lập
373
392
  - `openclaw.json` inject `browser` config khi Browser skill selected
374
- - Dockerfile conditional: socat, agent-browser chỉ khi cần
375
- - docker-compose: `extra_hosts` cho cả 9Router lẫn non-9Router
393
+ - Dockerfile conditional: socat, agent-browser chỉ khi cần
394
+ - docker-compose: `extra_hosts` cho cả 9Router lẫn non-9Router
376
395
 
377
396
  ---
378
397
 
379
- ## [2.0.0] 2026-03-27
398
+ ## [2.0.0] — 2026-03-27
380
399
 
381
- ### New Features
400
+ ### ✨ New Features
382
401
 
383
- - **Setup Wizard UI** Interactive web wizard (`index.html`) to configure OpenClaw bots visually
384
- - **Multi-Channel Support** Telegram, Zalo Bot API, Zalo Personal channel selection
385
- - **Multi-Provider AI** Google Gemini, Anthropic Claude, OpenAI/Codex, OpenRouter, Ollama (local)
386
- - **Plugin System** Modular plugin grid: Browser Automation, Scheduler, Memory, Web Search, RAG, Image Gen
387
- - **Config Generation** Auto-generates `openclaw.json`, `agent.yaml`, `Dockerfile`, `docker-compose.yml`
388
- - **Language Toggle** VI/EN toggle switch with SVG flag icons
389
- - **Brand Logos** Real SVG logos from [thesvg.org](https://thesvg.org) for all providers and channels
402
+ - **Setup Wizard UI** — Interactive web wizard (`index.html`) to configure OpenClaw bots visually
403
+ - **Multi-Channel Support** — Telegram, Zalo Bot API, Zalo Personal channel selection
404
+ - **Multi-Provider AI** — Google Gemini, Anthropic Claude, OpenAI/Codex, OpenRouter, Ollama (local)
405
+ - **Plugin System** — Modular plugin grid: Browser Automation, Scheduler, Memory, Web Search, RAG, Image Gen
406
+ - **Config Generation** — Auto-generates `openclaw.json`, `agent.yaml`, `Dockerfile`, `docker-compose.yml`
407
+ - **Language Toggle** — VI/EN toggle switch with SVG flag icons
408
+ - **Brand Logos** — Real SVG logos from [thesvg.org](https://thesvg.org) for all providers and channels
390
409
 
391
- ### 🎨 Design
410
+ ### 🎨 Design
392
411
 
393
412
  - Dark-themed glassmorphism UI with animated multi-layer gradients
394
413
  - Provider cards with unique colored icon backgrounds (Gemini purple, Claude orange, OpenAI green, OpenRouter violet, Ollama cyan)
395
414
  - Auto-expanding System Prompt textarea (no internal scroll)
396
415
  - Shimmer animation on title, glow effects on selected cards
397
416
 
398
- ### 📚 Documentation
417
+ ### 📚 Documentation
399
418
 
400
- - `README.md` / `README.vi.md` Full bilingual docs with multi-provider table
401
- - `SETUP.md` / `SETUP.vi.md` Technical setup guide for AI agents
419
+ - `README.md` / `README.vi.md` — Full bilingual docs with multi-provider table
420
+ - `SETUP.md` / `SETUP.vi.md` — Technical setup guide for AI agents
402
421
  - Security notice: System Prompt = personality only, framework enforces security rules
403
422
 
404
423
  ---
405
424
 
406
- ## [1.0.0] 2026-03-26
425
+ ## [1.0.0] — 2026-03-26
407
426
 
408
427
  ### Initial Release
409
428
 
@@ -412,3 +431,4 @@ Tất cả những thay đổi nổi bật của dự án sẽ được ghi ché
412
431
  - Google Gemini single provider support
413
432
  - Manual config file instructions
414
433
 
434
+