Summarize the provider evidence sweeps into a scored Agent Zero tool-efficiency chart.\n\nDocument the scoring rubric, ranked provider/model results, recurring failure clusters, applied prompt/skill improvements, and follow-up candidates while keeping the raw EVIDENCE files untracked.
Refresh README, quickstart, and the docs index around Browser, Desktop, A0 CLI, projects, memory, skills, profiles, and model presets.
Add optimized scoped screenshots for Web UI, Browser, Desktop, and CLI workflows.
Trim architecture-heavy developer pages toward DeepWiki handoffs so local docs stay focused on practical user guidance.
Make the Office canvas mount passive so Xpra starts only when the Desktop surface is opened or an official Office document is created/opened.
Track Desktop host visibility to unload hidden frames, stop monitors, dedupe viewport resize work, and set Xpra offscreen mode according to HTTPS support. Add a near-future note for the tunnel memory footprint.
Show Office desktop startup progress
Display a loading message while the Agent Zero Desktop environment is starting or restarting, so the right-canvas Desktop button gives immediate feedback before Xpra finishes waking up.
Introduce the new built-in Browser plugin for Agent Zero, replacing the legacy
browser-use-based browser agent with a direct Playwright-powered browser tool,
live WebUI viewer, browser session controls, status APIs, configuration, and
extension-management support.
Add browser-specific modal behavior so the browser can run as a floating,
resizable, no-backdrop window, including modal focus, toggle, and idempotent
open helpers for richer WebUI surfaces.
Remove the old `_browser_agent` core plugin and the `browser-use` dependency,
then clean up stale browser-model wiring and references across agent code,
model configuration docs, setup guides, troubleshooting docs, skills, and
Agent Zero knowledge.
Update regression and WebUI extension-surface coverage for the new browser
architecture and modal behavior.
The legacy browser-use implementation has been extracted from core so it can
continue separately as a community plugin published through the A0 Plugin Index for any user or professional that were relying on it for workflow.
- Move load_classes_from_file and load_classes_from_folder from extract_tools to new modules helper
- Update all imports across api, extension, files, and plugins to use helpers.modules
- Add namespace purging to refresh_plugin_modules for selective plugin reload on Python changes
- Implement embed trimming in history based on model config max_embeds and vision support
- Add pre_update hook documentation to plugin
Replace the restrictive `get_tool_message_badge` extension hook with a generic `get_tool_message_handler` hook. This allows plugins to provide a full handler function for their specific `type === "tool"` rows.
Plugins can now completely take over rendering of their tool rows, or they can import and delegate to `drawMessageToolSimple` if they simply want the standard UI with a custom badge. Updated the `_browser_agent` plugin to use the new hook and documented the change in `AGENTS.plugins.md`.
feat: add get_tool_message_badge plugin hook
Add a WebUI extension point `get_tool_message_badge` so plugins can set short tool-row badge codes (`code`) and optional `displayKvps` after core handling for built-in tools (skills, vision, search, memory). Core `drawMessageTool` is now async and calls `callJsExtensions("get_tool_message_badge", …)` on the fallback path.
Remove the hardcoded `browser_agent` → `WWW` branch from `messages.js`. The `_browser_agent` plugin registers `WWW` via `extensions/webui/get_tool_message_badge/browser-tool-badge.js`.
Document the hook in `docs/agents/AGENTS.plugins.md`. With the plugin disabled, `browser_agent` tool rows no longer get a `WWW` badge from core (generic tool row).
Keep plugin terminology, requirements, and cross-references consistent across the
canonical docs, agent skills, and in-repo validator tooling.
Clarify local-only vs Plugin Index expectations, add missing router/developer-doc
references, and update review/validator wording so community plugins require a
name while local-only plugins are not treated as hard failures for omitting it.
docs: update installation guide thumbnail and URL
- Updated the video URL and thumbnail to be the new script-based installation guide from YT in README.md and internal docs.
---
- Standardize Python imports for user plugins to `usr.plugins.<plugin_name>...`,
replacing sys.path hacks and symlink-dependent patterns
- Add cleanup policy: plugins must not leave permanent system modifications
(symlinks, orphaned services, stray files) after deletion
- Remove superseded plugin-import-standards-report.md (recommendations are now
integrated into the actual docs)
- Updated surfaces: AGENTS.md, AGENTS.plugins.md, developer/plugins.md,
a0-create-plugin skill
---
update AGENTS.md and enhance agent-facing knowledge of A0
Enhanced the knowledge of the framework by removing the 1:1 copy of our GitHub README.md at the root and replacing it with a docs set for agents, to know more about Agent Zero without all the noise from URLs, explanations meant only for users.
Updated AGENTS.md accordingly.
skills: offload debug from a0-manage-plugin; add a0-debug-plugin
add endpoint for agent-facing plugin security scan
Combine queue and start calls into a synchronous operation, works as the frontend modal version with the agent installing the plugin that gets returned scan results.
For the helper, if the agent had to build the prompt itself, it would need to:
Fetch plugin-scan-checks.json from the server
Fetch plugin-scan-prompt.md from the server
Interpolate all 8 template variables
Send the resulting ~3KB prompt as part of its own context
That's ~3KB of prompt template burning context window on every scan call, plus two extra HTTP requests. With helpers/prompt.py doing it server-side, the agent just sends {"git_url": "...", "checks": [...]} - a handful of tokens - and the server assembles the full prompt internally.
Add @extension.extensible decorators to all plugin API handler methods and core plugin functions to enable extension points. Implement plugin hooks system allowing plugins to define custom behavior via hooks.py file. Add call_plugin_hook function to execute plugin-specific hooks for events like uninstall, save_plugin_config, and get_plugin_config. Introduce uninstall_plugin function that calls uninstall hook before deletion. Move circular
Refactor plugin settings to use a per-modal prototype/context instead of binding directly to the global store. Introduces pluginSettingsPrototype (renamed export) and a lightweight instantiate helper (Alpine.magic('instantiate')) to clone the prototype into a modal-local context. Plugin config HTMLs (code_execution, infection_check, memory, text_editor) now bind UI fields to config.* and use context.* for modal-level state and actions; plugin settings components (plugin-settings.html, plugin-configs.html, plugin-settings-store.js, pluginListStore.js) were updated to create and consume the local context and to pass context into nested modals. Documentation and the SKILL guide were updated to describe the new modal contract and usage. This change scopes settings UI state to modal instances, enabling safer local state and easier integration with core-setting wrappers (use context.saveMode = 'core').
Add a generic JS extension point for the shared confirm dialog so plugins can
augment the warning body and footer without hardcoding scanner logic in the
installer.
- webui/js/confirmDialog.js: call callJsExtensions('confirm_dialog_after_render')
with dialog/body/footer nodes and optional extensionContext; defer show until
extensions run; add isClosed guard and Enter key handling for extension buttons.
- plugins/plugin_installer: pass extensionContext only from installFromIndex()
(kind: marketplace_plugin_install_warning, gitUrl, etc.); ZIP/Git install
flows unchanged.
- plugins/plugin_scan: new extension confirm_dialog_after_render that, for
marketplace install warnings, appends recommendation text and a "Scan with A0"
button that closes the dialog and opens the scanner modal with the repo URL.
- webui/css/modals.css: margin for .confirm-dialog-extension-note.
- docs: document confirm_dialog_after_render and when to use JS hooks vs HTML
breakpoints (AGENTS.plugins.md, developer/plugins.md).