You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Enforced negotiated WebSocket payload ceilings with a symmetric checksummed transfer protocol for large operations, including bounded transfer state, disk spooling, and automatic cancellation on pause, reset, delete, or disconnect
Made workspace HTTP file transfers atomic with streaming uploads into partial files, size verification, fsync, and SHA-256 download receipts
Bounded remote connector tool payloads with explicit continuation metadata for large content, rejecting oversized inline artifacts before base64 expansion and routing bulk files to authenticated HTTP transfers
Documented connector payload contracts including WebSocket ceilings, transfer state machine, cancellation lifecycle, and remote text limits
File Browser & Editor
Added independent, lazily loaded directory trees to Files and Editor in canvas and modal modes with unified styling, lighter panel backgrounds, and flat toolbar controls
Unified text and code editing in the shared Editor with ACE syntax highlighting, line numbers, native source search, and Markdown preview — removing the legacy file-editor modal
Added File Browser preferences for sorting, view mode, initial tree visibility, and independent editing and transfer limits
Exposed connected CLI and Launcher folders in Files with host permissions, authenticated HTTP transfers, size/SHA-256 checks, and atomic publication
Centralized streamed file transfers and hardened archive operations with expansion and entry budgets, unsafe member rejection, and owned temporary-file cleanup
Moved File Browser controls into a dedicated Settings category with appearance defaults, remote connections, file limits, and archive limits
Added configurable editing (10 MiB default) and transfer (100 MiB default) limits shared across Files and Editor
Fixed file links in chat messages to recognize file URLs and download API paths in the shared path-link renderer
Polished Files selection toolbar, removed tree tooltips, matched folder icon tint to standard file icons, and hid file sizes in icon view
Responses API & Native Tool Calls
Preserved native tool calls through Context Doctor, leaving canonical function calls untouched by text repair
Stored canonical function-call content through assistant history and masking, with proper repeated-response detection
Streamed native tool arguments through the existing live display with alias normalization and masking
Described bundled tool arguments in Responses schemas for 15 tool implementations with non-strict definitions
Preserved policy-filtered guidance in native Responses function descriptions with A0 envelope-to-argument conversion
Projected native system instructions only for Responses requests, reducing Codex input from ~16.4K to ~11.3K tokens
Preserved native Responses history within prepared prompts, retaining original IDs and encrypted reasoning
Consolidated Responses prompt bookkeeping outside Agent, reducing agent.py additions from 61 to 24 lines
Made llm_result required in hist_add_ai_response with LLMResult.non_llm sentinel for non-LLM turns
Kept Responses stream reconstruction inside the parser with one authoritative output-item store
Skipped unused Chat replay preparation and shared input conversion for Chat Completions
Context Doctor & Response Handling
Added split-thoughts repair strategy extracting value selection into a helper with configurable settings
Handled reasoning-only and plain-text fallback responses with dedicated retry warnings and user notices
Tightened usable-response detection requiring at least one A0 key with a non-empty value
Fixed raw-text fallback classification by moving raw thoughts wrapping after repair selection
Counted thoughts_fallback warning toward the unusable-response limit
Let Responses text reach the core response dispatcher while continuing to repair recognizable tool intent
Prompt & Profile Improvements
Hid disabled capabilities from system prompts so policy-filtered tool prompts remain the source of truth
Moved MCP guidance into prompt templates with policy-filtered qualified names and schemas
Compacted developer and researcher profile prompts, reducing token counts from ~2,600 to ~750 each
Strengthened shared problem-solving prompts with observable success criteria, evidence-driven replanning, bug reproduction, and source-preserving synthesis
Reinforced response tool usage in prompts, explicitly stating plain-text output without a tool call is invalid
Stripped trailing newlines in read_prompt and parse_prompt for consistent template handling
Added initial user turn to preserve AI greeting turn order when no project is selected
Rendered scoped profile routing catalog as one line per profile ID with delegation context
Canvas & UI
Made the canvas rail movable and customizable with a vertical drag handle, keyboard support, viewport bounds, and remembered position
Added a "Show verbose tool calls" preference gating tool name and args display in the message stream
Added text_editor custom message handler with dynamic action+path headings
Themed dark checkboxes with light checkmarks and centered Memory Dashboard selection controls
Polished surface modal headers to a shared 48px height with centered controls
Refreshed context indicator after clearing chat
Showed LiteLLM and Secrets settings by default without collapsible wrappers
Avoided replaying queued WebUI updates — live benchmark showed catch-up reduced from 1.95s to immediate
Fixed context window popover staying within bounds on short labels
Fixed Browser tab switching stuck in loading state when reusing the same viewer URL
Clarified required Agent Editor instructions with validation errors and tooltip cleanup
Browser & Desktop
Added Safari setup to Browser settings with structured setup guidance for Safari and Chromium-family browsers
Sped up Browser and Desktop startup by limiting initial D-Bus and CUPS waits to one second
Fitted Desktop display to the active canvas, removing the aspect-ratio fallback that cropped narrow viewports
Fixed Desktop and Office package installation using the Python 3.13-compatible Kali snapshot
Preserved the shared browser cleanup thread across context resets
Model & Provider Management
Prevented chat parameters from leaking into embedding configurations
Preserved Codex OAuth prompt cache affinity with stable session/thread IDs and bounded default cache keys
Kept OAuth model discovery tied to account availability without replacing empty catalogs with generic registry models
Reported provider usage for streamed Chat Completions turns with automatic retry when stream_options is rejected
Kept encrypted Chat reasoning out of readable output by filtering provider encrypted-reasoning markers
Preserved Codex Chat bridge usage and terminal outcomes with token count translation
Reported invalid model parameter JSON before saving with editor context identifying the preset and slot
Avoided repeated preset reads during embedding comparisons — median save time reduced from 1,171ms to 52ms
Discarded model search results for changed drafts and queries
Set tested Codex client version (0.153.3) by default for model discovery without CLI
Skills & Plugins
Added an on-demand guide for managing projects, chats, profiles, and saved tasks through existing APIs
Consolidated plugin authoring behind a0-create-plugin and lifecycle management behind a0-manage-plugin
Required hooks.py for plugin setup and cleanup in authoring guidance
Hid remote skill discovery until the A0 CLI connects
Fixed trailing commas in six JSON skill examples and rewrote 23 skill descriptions for catalog preview
Validated skill examples and sharpened descriptions with regression checks
Parallel Execution & Terminal
Kept parallel terminal jobs alive until their commands finish, publishing progress through job results
Kept goal operations out of disposable parallel workers with shared validation across dispatch paths
Preserved streamed child log content in parallel jobs so user-visible output is never replaced
Security Fixes
WhatsApp: Fixed media path traversal and enforced pre-download sender/group authorization
Telegram: Fixed webhook authentication bypass — reject HTTP updates for polling bots and require matching nonempty webhook secret
IMAP: Fixed sender whitelist bypass with strict mailbox parsing requiring exactly one valid From address
Infrastructure & Stability
Optimized scoped tool policy resolution reusing one fresh policy snapshot across batches
Unified embedding calls behind a single batch entry point removing duplicate transport logic
Serialized shared event-loop initialization to prevent concurrent first-use from stranding tasks
Preserved rollback stash identity during self-update by tracking Git object IDs
Preserved non-LLM mode when reloading result metadata through dictionary and history round trips
Restored legacy assistant history call compatibility accepting message-only and positional ID calls
Shared editor log presentation across local and remote tools
Kept the rate limiter demo out of test collection
Used 4-space indented tree in workdir extras for token-compact agent-facing output
Routed nudge as system message and minified message templates
Simplified WhatsApp pairing to one QR-code action with sequential polling
Updated Launcher README links to v1.7
Ignored .venv in generated gitignore templates
Breaking Changes
hist_add_ai_response now requires an llm_result parameter — use LLMResult.non_llm() for non-LLM turns (greeting, intervention progress). Legacy message-only and positional ID calls remain supported via automatic sentinel injection.
thoughts is no longer auto-populated from reasoning when absent (reasoning-to-thoughts revert).
Plugin authoring now requires hooks.py for dependency installation, initialization, and uninstall cleanup — execute.py setup patterns are no longer supported.