v1.6
WhatsApp Integration, UI Server Restructuring, & Settings Enhancements
April 1, 2026
v1.6 introduces a powerful new WhatsApp integration plugin, major UI server restructuring into modular components, Settings enhancements ensuring API keys aren't overwritten, and update system improvements.
✨ New Features
- WhatsApp integration plugin — New plugin connecting Agent Zero to WhatsApp via a Baileys JS bridge with QR/pairing-code setup. Supports self-chat and dedicated (bot account) modes, group chat with mention detection, quoted replies, media/attachment handling, typing indicators, Markdown-to-WhatsApp formatting, and account disconnect/switch.
- Update system enhancements — Added released_at timestamp tracking for git tags and branch heads; new get_current_major_main_latest_info finds the latest same-major version on the main branch; major_upgrade_versions and main_branch_latest fields added to the update info payload.
⚡ Improvements
- WhatsApp: self-chat is now the default mode — Default changed from dedicated to self-chat; a warning banner is shown when allowed_numbers is empty in this mode.
- WhatsApp: improved bridge reliability — Corrupt or missing node_modules are detected and automatically reinstalled; the poll loop stops after 5 consecutive bridge failures instead of spamming errors; Node.js absence halts the loop immediately; bridge restarts automatically when configuration changes.
- WhatsApp: storage paths centralized — Session and media files moved from usr/whatsapp to tmp/whatsapp via a new storage_paths.py helper; paths are now consistent across all modules.
- Settings: model config UI fixes — Restored provider fallback and empty option for utility preset; extracted a reusable model-field component and unified API key lifecycle handling.
- UI server restructuring — Server setup extracted into a UiServerRuntime class with modular initialization; environment config, route registration, and transport handlers moved to helpers/ui_server.py.
🐛 Bug Fixes
- WhatsApp: allowed-numbers filtering moved to Python — Phone number filtering now happens in the Python poll handler (reading config fresh each cycle) rather than the JS bridge, fixing a bug where LID-based matching never worked.
- Settings: API keys no longer overwritten on save — Saving general settings no longer clobbers API keys that were set via the Configure Models dialog.