Changelog
Every release, newest first.
-
- — Export a chat thread to Markdown — secrets scrubbed, ready to read and share.
- — Project Manager archetype — a one-click agent type in the new-agent picker.
- — Generated documents download again from the artifact panel.
- — Plugin panels no longer render dead on a sister agent.
- v0.108.0 2026-07-23
- — Human approval gates for workflows — pause a run at any step, then approve, edit, or reject.
- — execute_code runs in the packaged desktop app — a managed Python runtime, provisioned on demand.
- — Cowork's document skills (Word, Excel, PowerPoint, PDF) now work on the desktop app.
- — Plugins install their own dependencies on desktop — into the managed runtime, or as pure-Python wheels.
- — Fleet Room — summon the fleet from ⌘K, with presence, DMs, and broadcast.
- — Workflows honor a recipe's own fan-out width, with per-step timings.
- — The agent runtime setting now sits with the model it depends on.
- — Multi-server MCP bundles can seed each server with its own input value.
- — Fixes: creating a Cowork agent on desktop, knowledge-recall provenance, orphaned paused runs, and a host-gated "New agent".
- v0.107.0 2026-07-22
- — Generated files are now versioned artifacts — save_file_artifact.
- — The desktop app ships the document-generation stack, on by default.
- — Fleet agents accept operator inputs + secrets at create time.
- — Deterministic persona-drift detection.
- — Chat tab context menu — Close Others / Left / Right.
- — Cowork and every catalog archetype now appear in the new-agent picker on desktop and pip installs.
- — More reliable PyPI publishing — releases fire on the tag push.
- v0.106.0 2026-07-21
- — A2A client-side spec coverage: resubscribe() and push-notification registration.
- — Tutorial: two agents talking over A2A
- — A2A conformance reference
- — The conformance prober now drives real calls, not just method probes.
- — scripts/a2a_conformance.py — point it at any A2A 1.0 agent and get a conformance report.
- — Jump from a telemetry row to its Langfuse trace.
- — An a2a:<delegate> span around each outbound A2A dispatch.
- — Goal detail drawer.
- — Goal lifecycle actions.
- — Panel goals drive in a dedicated chat tab.
- — Shell/filesystem policy and Work folders moved onto the Filesystem tool group.
- — The agent card declares only the extensions this runtime actually emits.
- — One guided goal-creation wizard.
- — A goal set from the console starts driving immediately
- — The watch tools are gated behind watches.enabled and now default OFF
- — Mobile: the last row of content sat under the home indicator.
- — npm 10 can no longer install a silently-wrong dependency tree.
- — The A2A docs taught a wire format that 1.0 removed.
- — The documented version-negotiation model was wrong, including in our own test docstring.
- — Langfuse's A2A root span is a2a-stream, not a2a.task
- — docs/reference/a2a-endpoints.md's fleet auth predated ADR 0089 (the proxy *swaps* the Authorization header for the fleet service token; it doesn't forward the caller's verbatim), docs cited modules deleted in #453, ADR 0014 claimed a hitl-mode-v1 capability that exists nowhere, and ADR 0089/0075 statuses were stale.
- — No-progress detection now works for fuzzy (llm) goals.
- — A goal set could 500 after being persisted
- — Retired dead monitor-mode UI
- — PR review read the code as it was BEFORE the pull request.
- — The installed PWA painted its status bar with the brand accent.
- v0.105.2 2026-07-20
- — Plugin panels load again on a sister agent viewed from a token-gated hub.
- v0.105.1 2026-07-20
- — A fleet member's live console streams work again (/api/events).
- v0.105.0 2026-07-20
- — Plugins work again on sister agents in a fleet — over both HTTP and WebSocket.
- — Third-party attribution can no longer be silently wiped to UNKNOWN.
- — Fleet members no longer run open on loopback.
- v0.104.5 2026-07-20
- — A token-gated instance's own desktop app can reach it again.
- — The /code-review panel got sharper prompts
- — Settings ▸ Devices is hidden behind a developer flag (settings.devices, default off).
- — graph.sdk.start_goal_loop / stop_goal_loop are back — watch-based this time
- v0.104.4 2026-07-19
- — "Allow devices on my network" can no longer stop the app from starting.
- v0.104.3 2026-07-19
- — Enabling network access no longer hands you a secret you can't see.
- — The token prompt says where the token lives.
- — The desktop app authenticates itself instead of asking you for a token it already has.
- v0.104.2 2026-07-19
- — The desktop app no longer hangs on launch after enabling network access.
- v0.104.1 2026-07-19
- — Pairing works in the desktop app.
- v0.104.0 2026-07-18
- — Mobile is a chat-first app, not a shrunken console.
- — Add a phone by scanning a QR, and revoke it individually.
- — A managed Node runtime, provisioned on demand.
- — Bundles can seed MCP servers
- — A read-write-no-delete fence mode for the filesystem toolset
- — Telemetry extensions moved to URI-keyed metadata
- — Settings ▸ Integrations is now Plugins, matching what the section actually contains.
- — The console consumes @protolabsai/ui 0.57, which ships the touch floor upstream
- — A chat tab doing background work shows a processing dot
- — "+" no longer piles up empty chats.
- — Dropped the per-row "open in new window" action from the fleet switcher, which duplicated the row's own click behaviour.
- — uv is pinned to 0.11.29 in both release workflows
- v0.103.2 2026-07-17
- — Overlays no longer inherit the styles of the surface that opened them
- v0.103.1 2026-07-17
- — Dialogs opened from inside Settings are usable again.
- — QuickSetting chip dialogs honour depends_on.
- — uv.lock re-locked after the protolabs-agent PyPI rename: it still recorded protolabs-a2a as a git ref pinned to v0.2.0 while pyproject.toml had moved to the PyPI range >=0.2.1,<0.3
- v0.103.0 2026-07-17
- — Cowork mode — a prepackaged knowledge-worker archetype.
- — Archetype preview — see what you're committing to before you pick.
- — The wizard now finishes the mechanical setup it starts.
- — Notes render markdown as you type
- — Two core settings sections no longer file themselves under Integrations by accident.
- — A rejected settings save no longer leaves disk ahead of the running agent.
- — The shared note is guarded against lost updates
- — Console responses are gzip-compressed
- — ADR 0084
- v0.102.0 2026-07-16
- — Registered ACP coding agents now surface in the runtime + model pickers (#1993).
- — The agent can refine its own persona — a guarded edit_soul tool, off by default (#1985).
- — Chat: a stalled turn self-heals, so a large answer never spins "Working…" forever (#1982).
- — Chat: currency amounts no longer render as LaTeX math (#1983).
- — Console: chat report cards and system notes share a quieter, consistent elevation (#1992).
- v0.101.0 2026-07-12
- — HITL forms honor schema defaults and are fully keyboard-operable (#1978).
- — Plugins: uninstall now tears down live state (#1955).
- — MCP tool calls reuse one persistent session per server (default ON).
- — Favorite models + /model quick-switch (#1957).
- — Chat image controls: top-right action cluster + fullscreen Lightbox (#1960).
- — Chat image attachments are bridged into the media store so tools can act on them (#1969).
- — HITL forms float above the chat instead of shifting it (#1973).
- v0.100.0 2026-07-12
- — Secrets manager: pull env vars from external secrets managers — Infisical first (#1963).
- — Console: Settings ▸ Secrets panel for the secrets manager (#1965).
- — Plugins: surfaces reconcile on config hot-reload (#1961).
- — Plugins: refresh the last boot-only plugin wiring on hot-reload (#1958).
- — MCP: normalize discovered tool names to the documented <server>__<tool> form (#1962).
- — Plugins: consolidate the seam reference; fill gaps; fix drift (#1959).
- v0.99.0 2026-07-12
- — Plugins: an optional tier for requires_pip (#1953).
- — CI guard: the public roadmap can't rot silently (#1945).
- — Console: wait tool blocks surface a real waiting state (#1914).
- — Console: server-relative /media/ URLs render cross-origin (#1946).
- — Console: multimodal tool results render their text, not the raw envelope (#1947).
- — OpenAI-compat: /v1/chat/completions accepts multimodal content lists (#1943, #1949).
- — Console: the selected agent theme renders on first load (#1916).
- — Console: the mobile notch/status bar matches the header, not the accent (#1923).
- v0.98.0 2026-07-11
- — Autonomous operating model — goals · tasks · scheduling · watches as one OODA loop.
- — Media output channel for plugin tools (#1929).
- — Multimodal ToolMessage — a tool can return an image the vision model actually sees (#1930).
- — Reusable gateway HTTP client for plugins (#1931).
- — orgChart plugin (#1925).
- — Guide: safely exposing a protoAgent to the world (#1920)
- — Goal turns fire on turn 1 and are headless-safe (#1910/#1911/#1912).
- — Console: a completed long tool-call turn could render its reply twice (#1938).
- — Console: the auth dialog is a blocking modal (#1926)
- — task_output background-job tool.
- — Fleet delegation biases to fire-and-forget.
- v0.97.0 2026-07-08
- — Fleet trace export → the agent-fleet flywheel (the "Observe" seam, #1897).
- — Fleet-trace sink + PII redaction (scripts/sync_fleet_traces.sh, scripts/redact_fleet_traces.py).
- — Portable per-rig setup (scripts/setup_fleet_tracing.sh).
- — Bigger touch targets on phones.
- — Docs reader is a master-detail flow on phones.
- — Settings collapses to a single column on phones.
- — Modals/overlays use dvh on mobile.
- — Mobile viewport correctness for the console.
- v0.96.0 2026-07-07
- — Hermes is a first-class agent runtime
- — Fleet-wide distributed Langfuse tracing.
- — filesystem.allow_run defaults OFF on the headless tier
- — A fleet member's plugin views 401'd through a token-gated hub
- — A subagent hitting max_turns failed its whole delegation (GRAPH_RECURSION_LIMIT).
- — Fleet members no longer inherit the hub's identity.
- — An agent tracing to its own Langfuse project now produces a whole trace
- — A background knowledge-ingest job now wakes the agent when it finishes
- — Quieter plugin hot-reload logs
- v0.95.1 2026-07-07
- — A2A producer tasks GC'd while pending at turn end (#1713).
- — Classic A2A message/send got -32601 Method not found (#1854).
- — Artifact panel kept the stale palette after an app-theme switch (#1872).
- — Installed-plugin workflow recipes were silently invisible (#1867).
- v0.95.0 2026-07-06
- — Findings source attribution — non-LLM panel members.
- v0.93.1 2026-07-05
- — Supervisor on_crash bounded retry — RetryAfter + on_crash_max_attempts (#1823).
- v0.93.0 2026-07-05
- — protoagent model — point at a local LLM in one line.
- — Operator-MCP profiles + an env override, so "operate over MCP" is safe by default.
- — A first-class protoagent command — the terminal control plane.
- — React artifacts get a full design-system component set (@pl/ui), not just 9 primitives.
- — The shared ops/ layer — one operation, three projections.
- — GET /api/mcp/exposed — see which tools the operator MCP would hand a foreign client.
- — BREAKING: the goal API is only under the plural /api/goals* now.
- — /v1/chat/completions reports real token usage now, not zeros.
- — The plugin update-CHECK now authenticates private repos too, not just install.
- — The operator MCP no longer hands a foreign client HITL tools that hang it.
- — plugin install of a PRIVATE GitHub repo now works on the default git path.
- v0.92.0 2026-07-05
- — System lifecycle events
- — Bulk delete-by-source in the Knowledge view
- — web_search (DuckDuckGo) failed with CERTIFICATE_VERIFY_FAILED in the desktop app.
- v0.91.0 2026-07-04
- — Goal completion contracts
- — Fleet members can autostart on boot
- — Guided goal-creation form
- — Composer/HITL forms support conditional fields
- — /goal {json} carries the completion contract
- — delegate_to no longer hard-fails on member turns >60s
- — Memory ▸ Injections is legible to non-developers
- v0.90.0 2026-07-04
- — Background fan-outs report back in ONE briefing, not N
- — Career Coach in the plugin catalog
- — Server-initiated turns show a "responding…" indicator
- — Shift over the add-chat button previews incognito
- — Chat errors surface as a toast, not an inline banner
- — Browser-style UI zoom (⌘/Ctrl + / - / 0)
- — A saved theme survives a reload
- — Scaffolded plugins that register a subagent or use Knobs pass their own smoke test
- v0.89.0 2026-07-04
- — Quick-chat with any fleet agent from the command palette
- — SOUL.md keeps a version history — never lose a persona iteration
- — Telemetry is tagged with the active persona revision
- — Browser-style UI zoom — ⌘/Ctrl + / - / 0
- — Plugin setup: a "needs setup" cue + guided config for unconfigured plugins
- — Plugins declare required config and degrade gracefully when it's missing
- — Opt-in plugin auto-update policy
- — coder.solve() can run one forced rung, for testing
- — Plugins can open a form in the chat, not just reply
- — /effort opens a picker in the composer
- — Watches honor their per-watch interval_s cadence
- — Hot-reloading a plugin refreshes its goal/watch verifier + hook registries
- — Plugin smoke tests can assert surface lifecycle wiring
- — The plugin loader no longer nags about the prescribed /api/plugins/<id> data router
- — A manifest-less ghost dir under plugins/ no longer blocks install/uninstall
- — A dropped provider stream reconnects instead of killing the turn
- — A locked checkpoint write no longer silently kills a background turn
- v0.88.0 2026-07-03
- — The Memory inspector tells the truth about what injects
- — Memory view accuracy and polish
- v0.87.0 2026-07-03
- — wait no longer stacks wake-ups — one pending wait per thread
- — Dismiss a hard turn-error bubble in place
- v0.86.0 2026-07-03
- — Declining a command is no longer a scary full-screen error
- — Long commands and errors scroll instead of filling the chat
- v0.85.0 2026-07-02
- — Semantic recall (embeddings) now ships OFF by default
- — Windows reinstall over kept data no longer fails on a running server
- — current_time works on Windows (and database-less hosts)
- — A hung gateway embedding route can no longer freeze chat
- v0.84.0 2026-07-02
- — The Windows desktop sidecar no longer self-kills ~2s after boot
- — Desktop's system-wide hotkeys are now rebindable, visible, and self-healing
- v0.83.0 2026-07-02
- — One-line background results render as a compact inline note, not a report card
- — Per-subagent tool fences now apply to detached background jobs
- — Desktop no longer aborts on launch when a global hotkey is already taken
- — Desktop no longer launches into a silently dead window when port 7870 is taken or the server dies
- — Release-tag-pinned plugins now see updates.
- v0.82.0 2026-07-02
- — The console now says what each subagent does
- — Plugin metric timeseries — sdk.record_metric / metric_history / metric_last
- — Typed event contracts — emits: entries can declare payload schemas
- — Knowledge lifecycle — sdk.knowledge_purge + epoch scoping
- — Plugin-view event bridge: replay-on-subscribe + hidden delivery
- — graph.sdk.react_on — reactive-rule sugar
- — Plugins own their recurring cadence — and it dies with them
- — Plugins can now enumerate and remove watches
- — graph.sdk.spawn_background + graph.sdk.background_status
- — Parallel approval-gated tool calls no longer crash the resume.
- — Re-installing a plugin from its own origin converges instead of erroring.
- — Testkit FakeRegistry now mirrors the full PluginRegistry surface
- v0.81.0 2026-07-02
- — seccomp-profile.json moved to deploy/.
- — The in-app update notes now match the Discord release announcement
- v0.80.0 2026-07-02
- — Remote fleet members are fully manageable from the console
- — A down or mis-tokened fleet agent gives you a way out instead of a boot hang.
- — Background results are pushed, indexed, and worker-disposable
- — The Work surface is card-first — no tabs
- — The background report card is a real card
- — /compact is now behind the chat.compact developer flag
- — tools.disabled now actually removes any tool — including run_command — and the filesystem knobs are per-agent Settings toggles.
- — Fleet: the hub no longer lends a remote member's token over an unauthenticated WebSocket, and live events now work through a token-gated hub.
- v0.79.0 2026-07-01
- — Memory-regression evals
- — Memory inspector console surface
- — Incognito thread toggle in the console
- — Trust-tiered injection
- — Hot-memory write visibility
- — Supersede-don't-delete staleness
- — Namespace-scoped auto-injection
- — Incognito threads
- — Per-turn memory-injection record
- — Memory-inspector REST surface
- — recall_session(session_id) starter tool
- — Knowledge Base view — collapsible source grouping + Shift+click quick-delete.
- — One-command install
- — Agent archetypes are a data-driven registry
- — CI workflows are fork-friendly
- — Fleet "New agent" now applies the archetype's persona
- — Cross-session memory injection is now an attributed digest inside an untrusted-reference envelope
- — Memory rows carry provenance.
- — The docs build now gates every PR.
- — Settings string_list fields can now carry an empty-string entry
- — Chat code blocks: no empty header gap, a distinct lighter well, and no panel-stretch.
- — Chat session-identity hygiene
- — Artifact plugin (0.15.0) — pointer lock now works in games/canvas/3D artifacts.
- — Artifact plugin (0.15.0) — SVG / Mermaid now render crisply instead of pixelating on zoom.
- — Artifact plugin (0.15.0) — the selected artifact + version now survive a tab switch.
- — A stale untracked plugin copy no longer shadows a newer bundled one.
- — Plugin install git clone --no-hardlinks
- — Console dev server no longer defaults to the prod backend.
- — Removed the broken built-in "Project Manager" archetype.
- — Instance collision warning no longer false-alarms on a shared box root
- — Setup wizard: the archetype bundle-install result is no longer swallowed.
- — Setup wizard: picking a persona-less archetype no longer blanks the editor.
- v0.78.0 2026-07-01
- — Developer panel — view & toggle developer flags
- — Developer flags — backend foundation
- — Chat composer: terminal-style input history
- — Artifact panel: pan & zoom for diagrams
- — registerKeybinding on the fork extension seam
- — Watch primitive — supervise many external conditions at once
- — sdk.run_in_session(session_id, prompt)
- — Two-credential auth: auth.federation_token
- — Console set-goal form
- — Chat: slash commands trigger mid-input + render as command bubbles
- — Agent switcher: always available, with a Fleet-settings shortcut
- — Chat: Cmd/Ctrl+O toggles the latest tool-call block
- — Chat: /compact — summarize + archive a long thread
- — Knowledge panel: Upload / Add now open in a dialog
- — Goal mode is now drive-only; the monitor disposition is retired
- — Goal continuation protocol → tools
- — The A2A-streaming and non-streaming goal drive loops are unified (#1497), fixing a fresh-context thread-id drift.
- — Settings sub-panels share one container
- — wait tool output is conversational
- — Desktop app builds are on-demand
- — RCE-via-chat closed
- — Watch evaluation is serialized per watch id
- — New ADR 0066 (federation token + operator channel) and ADR 0067 (watch primitive); ADR 0030 marked superseded
- — PROTO.md § Run it
- v0.77.0 2026-07-01
- — Cross-machine fleet hardening — A2A federation is fault-transparent
- — Remote fleet members surface their health immediately
- — Discovery auto-sweeps on hub boot
- — config explain diagnostic
- — Real multi-instance fleet test harness
- — Artifact is now a bundled core plugin, on by default
- — Artifact render errors feed back to the agent
- — Multi-step wizard + choice-card HITL forms
- — The agent can ingest documents & media into its knowledge base
- — Two-tier instance paths (box / instance) — one resolution rule, no more double-scoping
- — React artifacts are more forgiving + the render loop is proactive
- — Docs reader: in-content cross-reference links route in-app instead of breaking the iframe
- — A crashed co-located fleet member is now detected and restartable
- — Autonomous turns no longer deadlock on a human-input pause
- — HITL tools are hard-denied to subagents
- — Settings surfaces when the agent config shadows a host-scoped field
- — The ⌘K command-palette chat survives being closed mid-turn
- — Knowledge: fleet/commons sharing + the reusable background-job primitive
- v0.76.0 2026-06-30
- — "Manage plugins…" in the rail context menus
- — Reveal toggle on secret fields
- — Settings true-up — one canonical config system
- — Settings surfaces no longer swallow load/save errors
- — Identity name and fleet delegates save through the canonical settings cascade
- v0.75.0 2026-06-29
- — Egress allowlist in Settings
- — Custom model gateway no longer blocked on the connection test
- — Plugin config appears without a restart
- v0.74.0 2026-06-29
- — Bypass-permissions mode
- — run_command runs shell operators
- — Slash-command notices render as system notes
- v0.73.0 2026-06-29
- — Background batch delegation
- — Live tool-card feed for background agents
- — Settings ▸ Knowledge split into sub-sections
- — Tools view — MCP tools grouped by server
- — Settings IA — domain-first
- — Tools view — grouped by plugin + subsystem
- — Built-in subagents answer natively
- — CI off the deprecated Node 20 action runtime
- — Structured-output parser retired
- — Concurrent same-conversation turns no longer corrupt chat history
- — Chat answers no longer truncated; A2A tasks return the real final answer
- — Subagent token streams isolated from the live chat
- — Cross-tab chat no longer clobbers itself
- — ACP coding-agent eviction race closed
- — Cross-context streaming guard
- — File uploads restore the token prompt on auth failure
- — Secure defaults for metrics and MCP secrets
- — Backend launch-hardening — ingestion SSRF guard + credential hardening
- — Plugin auth-bypass and event-loop hardening
- — Fail-safe plugin secret redaction
- — Operator-token storage guidance
- v0.72.0 2026-06-28
- — Context-window meter + per-turn cost/time
- — Vision-describe pass for text-only models
- — "Get models"
- — Inline components re-enabled
- — Per-stimulus Activity attribution
- — Inline action feedback → toasts
- — Deduped inbox/Activity now-item notifications + deliver-before-fire
- — Clear error for images on a text-only model
- — Chat-tab trash only on the hovered ✕
- v0.71.0 2026-06-27
- — Panel-focus keybindings
- — ⌘K palette chat streams with live text↔tool interleave
- — Streaming answer text is full-width, no loading side-bar
- — No hardcoded emojis in the UI
- — Full-screen document viewer
- — Keyboard shortcuts
- — Quick-delete a chat tab
- — Hide a rail surface without disabling its plugin
- — Configure a plugin from its rail icon or util-bar widget
- — Chat tab context menu
- — Fork-safe console behavior seams
- v0.70.0 2026-06-24
- — Plugins can own /<name> chat control commands
- — "Report a bug" link in the hamburger menu
- — GitHub is no longer in core — it's a standalone plugin
- v0.69.0 2026-06-24
- — Native reasoning — the agent's thinking now streams from the model, not a forced text protocol.
- — Chat markdown now renders through the design system's Markdown renderer
- — Heavy research turns no longer wedge the server.
- v0.68.0 2026-06-23
- — scripts/reset.sh — factory-reset the default (prod) instance from the CLI.
- — Chat tool-call rendering overhaul.
- — show_component (inline component rendering, ADR 0051) is temporarily disabled
- — The Goals and Tasks panels refresh on a bus push instead of polling every 5s.
- — Failed or user-cancelled task delegations now close as error cards (the X).
- — A subagent's own tool calls reliably nest under the delegation card.
- — Mid-stream output rendering no longer rescans the whole response on every chunk.
- — Empty-rail panel toggles fully disable.
- — Console-poll handlers no longer block the event loop.
- — The Docker image now serves the React console and stays in dep-lockstep with pyproject.
- v0.67.0 2026-06-22
- — Per-agent ACP launch overrides are honored.
- — ACP delegate health probe is initialize-only — it no longer opens a session every 120s.
- — macOS desktop app finds Homebrew/nvm/Volta/asdf-installed binaries.
- — Workspace port assignment skips OS-occupied ports.
- — The per-agent theme is instance-scoped.
- — The browser tab favicon + theme-color follow the active per-agent theme.
- — ACP coding-agent subprocesses no longer leak as orphaned processes.
- — Dialogs no longer render their content cramped flush to the body edge.
- — Coding-agents guide: Codex needs the codex-acp adapter.
- v0.66.0 2026-06-21
- — The agent's task board is now "tasks", not "beads."
- — Create a task from a dialog.
- — Dropped the dead br fallback from the core task board.
- v0.65.0 2026-06-21
- — Schedule view: open a job to read the full prompt + edit it in place.
- — Chat: reasoning renders inline, in emission order.
- — Deleting a scheduled job confirms first.
- — Removed the Workstacean scheduler backend.
- — Chat: assistant text and tool calls render in emission order.
- — Settings: Host-console edits stop "resetting."
- — ACP: load_skill works through the operator sidecar.
- — Chat: no stray gap between tool calls.
- v0.64.3 2026-06-20
- — Adding or editing a delegate now opens in a dialog instead of pushing the Delegates panel around.
- — The New/Edit skill dialog has more breathing room — roomier padding and field spacing.
- v0.64.2 2026-06-20
- — The "Browse common servers" dialog now fills its height with the card grid — search stays pinned, no dead space below the cards.
- v0.64.1 2026-06-20
- — Desktop: the "Browse common servers" picker now lists the curated MCP servers — they weren't being bundled into the packaged app.
- — The "Host · box defaults" badge moved into the Settings dialog header so it no longer pushes the panel content down.
- — More breathing room in the "Browse common servers" dialog — the search and cards no longer sit flush to the edge.
- v0.64.0 2026-06-20
- — Quick-add common MCP servers from a curated picker in Settings ▸ MCP — one click (or a path/token) and the server's tools are live.
- — Share MCP servers across the box: a layered agent runs a shared commons of servers alongside its own, with one-click share/unshare and tier badges.
- — The desktop in-app updater now shows the curated changelog for the new version instead of raw commit subjects.
- v0.63.1 2026-06-20
- — Uninstall works again for git-installed plugins — a regression had left them installable and toggleable but not removable.
- — Plugin management is consolidated into one surface, and Install-from-URL is now a dialog opened from the Installed toolbar.
- — The host-scope cue in Settings is a compact "Host · box defaults" badge instead of a full-width banner.
- — Tightened the Execute Code plugin's catalog-card description so it fits the display.
- v0.63.0 2026-06-20
- — Shared knowledge tier — a commons every agent on the box can read, with tier badges and share/unshare in the console.
- — Skills got progressive disclosure (an always-on index + load-on-demand) and tier-aware curation.
- — execute_code is now an opt-in plugin — enable it under Plugins; it's out of the default tool set.
- — A new desktop download page with a signed macOS installer.
- — Honest middleware surfaces — dropped a dormant capture path and made the session-memory and enforcement surfaces say what they actually do.
- v0.62.0 2026-06-20
- — The Knowledge rail icon no longer disappears.
- — The active tab's underline is the brand accent again, not white.
- — Removed the "This is the memory the agent retrieves into context…" footer
- — Docs accuracy pass.
- v0.61.0 2026-06-20
- — An ACP coding-agent runtime now gets protoAgent's full toolset by default.
- — Removed the redundant "working…" status strip above the chat composer
- v0.60.0 2026-06-19
- — The app side drawer now has a Changelog link.
- — Goal mode is always on.
- — The frozen desktop app now bundles config/skills.
- v0.56.1 2026-06-19
- — The in-app ⌘K palette no longer inherits the desktop launcher's frosted styling.
- — Plugin entries in the palette dropped their "open here" hint.
- v0.56.0 2026-06-19
- — The command palette (⌘K) is now command-driven.
- v0.55.1 2026-06-19
- — The desktop quick launcher (⌥Space) is now a frosted, rounded floating panel.
- v0.55.0 2026-06-19
- — Chat can dock at the bottom panel.
- — The chat "still streaming" pulse now shows on the right rail and bottom dock.
- v0.54.0 2026-06-19
- — Raycast-style global quick launcher (desktop).
- — Background agents widget no longer needs a page reload to appear.
- v0.53.0 2026-06-19
- — Docs plugin — read and ask about protoAgent's own docs
- — user_only skills
- — Desktop update notice is now a full modal with a markdown changelog.
- — Plugin views are themed in the desktop app
- v0.52.0 2026-06-19
- — Desktop app catches up to v0.51.x.
- v0.51.1 2026-06-19
- — Utility bar in the console.
- — Documentation overhaul.
- — The marketing changelog no longer shows empty releases.
- v0.51.0 2026-06-18
- — "Skills loaded" chip in chat.
- — Author/edit skills in a modal dialog
- — Dropped the never-used emit_skill capture path.
- — Desktop sidecar bundles config/plugin-catalog.json
- v0.50.0 2026-06-18
- — Skills CRUD in the console.
- v0.49.1 2026-06-18
- — Background-job dialog shows the full result
- v0.49.0 2026-06-18
- — Native command-palette chat
- v0.48.0 2026-06-18
- — Command palette (⌘K).
- — Unified plugin manager.
- — Always-on hamburger menu
- — Discord is no longer bundled
- — Plugin git refs are validated before fetch
- — ADRs 0057 / 0058 / 0059
- v0.47.0 2026-06-18
- — Google (Gmail + Calendar) and Slack are no longer bundled — they move to standalone external plugins.
- v0.46.0 2026-06-17
- — In-app update notice with the changelog
- v0.45.0 2026-06-17
- — Real chat streaming in the desktop app
- — Desktop in-app updater no longer 404s
- v0.44.0 2026-06-17
- — Desktop updater public key now matches the signing key
- v0.43.0 2026-06-17
- — Portfolio plugin.
- — Mid-turn steering.
- — Drag-to-reorder chat session tabs.
- — Setup wizard + forms rebuilt on the design system
- — Instance-scoped agents resolve their installed-plugin config correctly
- — ADR 0056
- v0.42.0 2026-06-17
- — ACP forget_session — start a coder fresh when its workdir was recreated.
- — dream & distill — scheduled self-curation subagents.
- — New-user setup wizard, rebuilt around archetypes.
- — ACP coding-agent client: a real coding turn died on its own output.
- — operator.project_dir actually drives the workspace root.
- — Setup probe could 500 or hang the runtime step.
- — Out-of-graph subagent runs now see the lead's full tool set.
- v0.41.0 2026-06-15
- — Knowledge search returns the RRF relevance score.
- — wait resumes now appear live in the chat tab.
- — Inbox: a fired now item is now marked delivered.
- — The fallback-models setting picks from the gateway list.
- — Scheduler startup catch-up no longer logs scary tracebacks.
- — The scheduler retries the jobs.db owner-lock instead of giving up.
- — **set_goal rejects an unknown verifier instead of creating an unsatisfiable
- — Settings model fields offer the gateway's model list.
- — The settings schema is cached client-side.
- — Per-tab model selection.
- — One-call goal-driven recurring loop (graph.sdk.start_goal_loop / stop_goal_loop).
- — **Plugin telemetry + agent decision-log kit (graph/telemetry.py, `from graph.sdk import
- — **Runtime knobs + presets control surface (graph/knobs.py, `from graph.sdk import Knobs,
- — Host-free plugin test harness (graph/plugins/testkit.py).
- — Supervised background-task helper (graph/supervisor.py, from graph.sdk import supervise).
- — The Tools tab shows exactly what the agent can call.
- — Slash-command palette can't drift from the dispatcher.
- — Background subagent results are delivered back to the chat that started them.
- — Non-streaming chat no longer returns a silent empty 200.
- — First-party web-research skill is reachable again.
- — set_goal is now actually bound to the agent.
- — wait's same-session resume now works.
- v0.40.0 2026-06-14
- — Left panel no longer springs back to ~50% when resized smaller.
- — Opt-in JSON logging (LOG_FORMAT=json)
- — Deploy guide: backup/restore + shutdown semantics.
- — wait resumes in the same conversation
- — Background-agent notifications render legibly again.
- — wait tool — yield instead of busy-polling
- — Paste images + large text as attachments
- — File-only chat send
- — User-facing skills — trigger a skill with a slash command
- — Chat message toolbar — copy, fork, regenerate
- — scheduler.fired event + orphaned push-config sweep
- — Native vision in chat
- — A2A alignment polish + realtime cost/goal events
- — Renderable chat components over A2A
- — Background jobs: realtime progress + stop/inspect controls
- — Reasoning display in chat
- — Background-jobs console widget
- — Chat file upload (composer UI).
- — Background subagents wake the agent on completion
- — Chat attachments — tiered context (backend)
- — Background subagents
- — Smarter subagent delegation
- — Audio & video ingestion
- — Document ingestion engine
- — Contextual enrichment on knowledge ingest
- — Document chunking on knowledge ingest
- — Retrieval-quality eval harness
- — Host config settings regrouped
- — Chat composer migrated to the design-system PromptInput
- — Batched embedding on document ingest
- — Parallel contextual enrichment on ingest
- — Semantic recall tuned + made tunable
- — Setup wizard slimmed to the essentials.
- — GitHub Copilot is now selectable as the ACP runtime
- — Chat composer focus polish.
- — Embedding circuit breaker clears on a passing connection test.
- — Knowledge embeddings default to qwen3-embedding.
- v0.39.0 2026-06-13
- — Restart the server from the console — a gated POST /api/restart plus a Settings▸Plugins button (no terminal needed for a change that can't hot-load)
- — The left console panel can be dragged down to 200px without snapping back to 280
- — OpenShell deploy path validated end-to-end against OpenShell v0.0.59
- v0.38.0 2026-06-13
- — ACP client: restart-surviving sessions + thought streaming
- — Settings: a scalar multiline text field + conditional depends_on visibility
- — SSRF: the model-probe and fleet-remote registration now run egress checks
- — **A plugin's declared secret can no longer slip into the tracked config YAML when
- v0.37.0 2026-06-13
- — graph.sdk.complete() — a bare LLM completion for plugins.
- — Settings is a vertical-nav + collapsible-groups layout now.
- — Design system bumped to @protolabsai/ui 0.30.0
- — The topbar Settings overlay panel fills the full dialog height
- v0.36.0 2026-06-13
- — The committed plugins.lock now ships empty.
- — One-click plugin sync from the console.
- — Knowledge base CRUD from the console.
- — Harvest-on-delete is now opt-in.
- — Drag-and-drop rail positions for plugin views now survive a reload.
- — A render error no longer white-screens the console
- — The documented kit-loading pattern for plugin views was broken
- — The console prompts for the operator token on 401
- — The Notes plugin editor adopts the DS plugin kit (rule 4)
- — Design system bumped @protolabsai/ui 0.26.2 → 0.29.0 (+ @protolabsai/design 0.5.1).
- — ADR 0049 — bundle pin lifecycle
- — Force re-install no longer claims a live hot-mount it can't deliver (#942).
- — Annotated-tag pins no longer report a permanent false "Update available".
- v0.35.3 2026-06-12
- — **Identity panel: the "Saving writes SOUL.md…" helper + save status now sit
- — Desktop first-run: panels no longer flash "Load failed" and need a reload.
- — macOS desktop: the brand again clears the native traffic lights.
- v0.35.2 2026-06-12
- — Switching agents in the desktop app no longer breaks the window.
- — The app version is shown in Settings ▸ Host / App ▸ Overview
- v0.35.1 2026-06-12
- — **The desktop app's backend now actually starts (it was dead on arrival in
- — Desktop release builds now write logs.
- v0.35.0 2026-06-12
- — **Box-runtime knobs (bind interface, fleet ports, discovery, warm policy) are now
- — An app update can no longer silently strand fleet members on the old binary
- — The desktop app updates itself in place.
- — **Session memory now persists on non-container hosts (and stops writing to the drive
- — The console is an installable PWA (manifest-only — deliberately no service worker).
- — **A secret saved for an installed-but-DISABLED plugin now routes to secrets.yaml,
- — **The devkit's "edit then reload_plugins" loop now picks up edits to EVERY file, and
- — Settings are reorganized around *scope* — a two-home shell + contextual quick-settings.
- — The shared-skill commons is now legible in the console.
- — macOS desktop releases are now verified pristine — and the DMG itself is notarized.
- — Desktop builds for Linux and Windows.
- — A configured plugin/model secret now shows a clear "set" badge in Settings.
- — Adopt @protolabsai/ui@0.26.2
- — **A fleet member's plugin secret (e.g
- — Switching to a not-yet-running fleet agent no longer flashes errors in its panels.
- — A declined or failed tool now shows the red X on its card, not a green "done".
- — Approving a gated action no longer dumps an "approved" bubble into the chat.
- — Resizing panels felt sloppy and "wouldn't close right" over plugin views.
- — Swapping between fleet agents wiped the chat view.
- — The fleet proxy now forwards WebSocket upgrades (#883).
- — Installing a plugin from the console now auto-enables + runs it
- — Grouped the loose root-level modules into packages
- — The Gradio chat UI (the --ui full tier).
- — **The desktop app reported its version as 0.0.0 (version-coherence Cross-cutting
- — **Fleet members render plugin views with no design system (version-coherence
- — The plugin devkit can now build a plugin AND run it live — no restart
- — plugin new / plugin new-bundle CLI
- — Spin local fleet members down when the host exits (version-coherence Axis 1).
- v0.34.0 2026-06-10
- — CSS comment corruption that silently shrank plugin iframes (build guard).
- — Design-system 0.26 + slug-aware plugin-kit apiFetch/apiUrl (protoContent#208).
- — Plugin update / version-awareness.
- v0.33.0 2026-06-10
- — Architectural import contracts in CI
- — Hub↔remote version handshake — fleet version skew is visible now
- — Design-system 0.25 adoption + theme.css decomposition (#832).
- — Layered settings cascade + settings IA.
- — Plugin-view authoring hardening (#884).
- — Light mode works on the hand-rolled chrome (#842).
- — **Enabling a plugin's console view works immediately
- — Plugin views resolve on fleet members, not the hub (#879).
- — Host defaults renders as one cohesive panel (#878)
- — A single Ctrl-C shuts the server down cleanly (#882).
- — config_to_dict now emits the complete plugins section
- — A2A task records no longer accumulate forever on an always-on agent
- — Webhook DNS resolution no longer blocks the event loop
- — min_protoagent_version is actually enforced
- — Autostart launches the server again
- — Knowledge embedding no longer blocks the event loop
- — Chat no longer rewrites localStorage on every streamed token
- — Token-less non-loopback binds now refuse to start.
- — **Persistence hardening
- — Pinned the release-tools clone in the PR gate
- v0.32.0 2026-06-10
- — Layered settings cascade — host-shared defaults agents inherit and override
- — Remote fleet members — the agent there, the UI here
- — Tenant guard
- — Tailnet discovery
- — Co-located-instance warning
- — Cross-agent "turn finished" toasts
- — Opaque agent ids + rename
- — Enable delegates without a restart
- — Cold agents resume on navigation
- — Discover no longer lists a co-located agent twice
- — mDNS advertise actually works
- — A2A task reconcile had rotted against a2a-sdk 1.1
- — Each fleet hub owns its own registry
- — pyproject.toml is the dependency source of truth
- — Config is a single source of truth
- — Shell + settings banners are the design system's Alert
- — Retired the deprecated peer_consult / peer_list tools
- v0.31.0 2026-06-10
- — Intro splash shows once per session
- — Plugin devkit refreshed (v0.2.0)
- — Artifact plugin is now external
- — Design system → @protolabsai/ui 0.18, with console polish
- — The /active global-pointer proxy machinery
- — Retired Module Federation
- — Fleet console — run a fleet of agents from one console.
- — Chat panel is a slot
- — Plugin-driven console navigation
- — Goals come alive in the console
- — Goals broadcast on the event bus
- — Telemetry opt-out in Settings
- — Plugin notification dots + event relay
- — Plugin event bus
- — Fork extension seam
- — Generative-UI artifacts
- — Generative-UI artifacts
- — Secret-scan CI gate
- v0.30.0 2026-06-09
- — Notes plugin — the first-class React reference plugin
- — Plugin trust gate
- — Plugin-UI SDK: host bridge + reference remote
- — Plugin-UI SDK foundation
- — Mobile shell
- — Everything-swappable rails
- — Right-click context menus
- — Design-system foundation
- — Swap surfaces between rails
- — Resizable right panel — real handle
- — Symmetric dual rails
- — Persisted UI state
- — Plugin UI — first-class React
- — ACP persona reaches GitHub Copilot
- — ACP turns attributed correctly in telemetry
- — Console upgraded to React 19
- v0.29.0 2026-06-08
- — ACP answer-text streams
- v0.28.0 2026-06-08
- — ACP tool calls surface as cards
- — ACP runtime adopts your persona
- — Runtime selector leads the Agent settings
- — Auto-scoping for co-located instances
- — ACP-only setups need no gateway
- — Agent runtime selectable in the console
- — ACP delegate teardown
- — ACP runtime: agent now uses protoAgent's operator tools, not its own
- — ACP runtime: request-metadata scope cross-context reset
- — Instance-scoped config
- — code_with tool + the coding_agent plugin
- v0.27.0 2026-06-08
- — Run protoAgent's brain on a coding agent — proto, Codex, or Claude can now drive the runtime over ACP, while protoAgent stays the operable A2A / console / goals / scheduling shell around it.
- — Publish protoAgent's tools as an MCP server — point Claude Desktop, Cursor, or a coding agent at an instance and operate it (notes, beads, memory, workflows), allowlist-gated.
- — Context is assembled cache-friendly under the hood — a stable persona prefix plus per-turn deltas — so the coding agent's own prompt caching stays intact.
- v0.26.0 2026-06-08
- — Settings now live where they belong — agent settings in the Agent view, memory settings in Knowledge, and a leaner central Settings (Overview, Telemetry, Plugins, System).
- — The Plugins page is tabbed (Local, Market, Download) with one-click enable/disable — no config editing or restart for most plugins.
- — Add MCP servers right from the console — fill a quick form or paste a standard JSON config blob, and they connect live.
- v0.25.0 2026-06-08
- — Reorganized console — the agent's makeup (identity, tools, MCP, subagents, skills, middleware) lives in one Agent section; Knowledge is a single panel; status + telemetry moved to Settings.
- — Schedule is now a one-click right-rail panel with a friendly editor — calendar, presets, and timezones, no hand-written cron.
- — Plugins can contribute middleware and right-rail panels now, and a plugin view can use any icon (no allowlist).
- — Leaner core — GitHub tools are an opt-in plugin and the tool list is grouped by subsystem.
- — Reliability — scheduled tasks no longer fire duplicates or run away, and goals no longer leak between agents.
- v0.24.0 2026-06-08
- — A new Features page comparing protoAgent to the alternatives, plus headless docs — run it over the OpenAI-compatible API or A2A with no UI.
- — Telemetry you can act on — export to CSV, see on-disk size, and a retention guardrail so it can't grow unbounded.
- — Pin a specific model per subagent from config.
- — A friendlier Schedule tab and a consistent panel layout across the console.
- v0.23.0 2026-06-07
- — Pluggable knowledge backend — swap the default SQLite store for your own vector database as a plugin.
- — Monitor goals — long-running objectives the agent checks on a cadence and reacts to.
- — A communication-plugin standard with a first-party Slack plugin, alongside Discord and Telegram.
- — "Playbooks" renamed to "Skills" for clarity.
- v0.22.0 2026-06-07
- — The agent can set its own standing goals, ground-truthed by plugin verifiers, with lifecycle hooks.
- — Plugins can contribute goal verifiers and a wider set of console-view icons.
- v0.21.0 2026-06-07
- — Plugin Devkit — a featured plugin that teaches the agent to build its own plugins (a scaffold tool, a plugin-architect subagent, and the authoring skill, in one bundle).
- — Clean plugin delete — uninstall now also removes a plugin's enabled reference, with --purge to wipe its config + secrets too.
- v0.20.0 2026-06-06
- — Install plugins from a git URL — `python -m server plugin install <url>`, pinned in a lockfile, with the safety model built in (install ≠ enable ≠ trust).
- — A plugin repo is a full bundle: tools, subagents, skills, workflows, and console views all come in.
- — Console Plugins panel — paste a URL, review, install, uninstall.
- v0.19.0 2026-06-06
- — Plugins can add their own console rail views — a dashboard or page, no console rebuild.
- v0.18.0 2026-06-06
- — Token-by-token answer streaming in the console chat.
- — Chat keeps going when you navigate away and back, and self-heals an interrupted stream.
- — Brand favicon across the app + docs.
- v0.17.0 2026-06-06
- — Unified delegate registry + a hot-swappable console panel — manage the agents and endpoints your agent talks to (a2a / openai / acp) from Settings.
- v0.16.0 2026-06-06
- — Spawn CLI coding agents over ACP — hand a real coding job to protoCLI, Claude Code, Codex, or Gemini CLI.
Full release notes + source on GitHub.