Redesign the three messaging integration panels with a clearer, more guided
setup flow and polished user experience.
- simplify the email panel by surfacing the essentials first, moving
advanced scheduling behind Advanced, and making connection checks more
visible
- redesign Telegram and WhatsApp as step-based setup flows with clearer
status states, safer access warnings, richer test feedback, and more
responsive layouts
- add shared plugin-settings wizard footer support, extract WhatsApp state
into its own store, and align test-connection messages with the new UX
ux: ease Email connector setup and refresh copy
- Redesign the Email connector settings around a guided first-run flow with a clearer empty state, provider presets, and much friendlier copy
- Move server, routing, and scheduling power-user controls into an `Advanced` section while keeping the existing config model compatible
- Improve connection-test messaging, add Exchange inbound validation, and refresh the dashboard Email card copy while keeping the card visible
- Verify the updated setup flow in the browser on desktop and mobile
update and simplify x-data based on established frontend patterns
Update 10_discovery_cards.py
further polishing and first-draft no-click model for email and telegram
update whatsapp
Update telegram-config-store.js
- Update default backup path from /a0/tmp/self-update-backups to /root/update-backups in self_update_manager.py, helpers/self_update.py, and documentation
- Move aiogram from global requirements.txt to plugin-local requirements for _telegram_integration
- Add ensure_dependencies() helper that installs aiogram on-demand via uv pip install
- Add has_aiogram() check to avoid
- Replaced :value reactive binding on Allowed Users and User→Project Mapping inputs with x-effect and focus guard, ensuring Alpine.js rerenders don't clear user-typed values while editing.
- Enhanced setUserProjects() to preserve incomplete entries (e.g., 123=), preventing accidental data loss.
- Refactored Default Project <select> persistence: replaced x-model with a x-effect + @change one-way binding, fixing value resets before option loading completes.
- Removed standalone aiohttp HTTP server for webhook mode; switched to Agent Zero's built-in API handler at /api/plugins/_telegram_integration/webhook.
- Added a new unauthenticated POST handler (api/webhook.py) that receives Telegram updates and feeds them to aiogram's Dispatcher.
- Webhook URLs are auto-constructed from the base URL and API path—no additional port or reverse proxy configuration required.
- Added webhook_secret verification in the API handler for improved security.
- bot.delete_webhook() is now called before starting polling mode to prevent TelegramConflictError races.
- Improved bot lifecycle: detects active webhook mode via webhook_active flag to avoid restart loops on each job_loop tick.
- Removed unused aiohttp/SimpleRequestHandler code.