Changelog
Every release, newest first.
-
- — Suppress duplicate tool-opening acknowledgements when the agent has already spoken in the same turn.
- — Discard stale opening acknowledgements after interruptions or a new user turn, while preserving streamed answers and progress updates.
- v0.2.173 2026-10-07
- — Shorter, more conversational replies: one short sentence by default, with more detail when you ask for it.
- — Remove Markdown formatting before speech synthesis across all voice backends, including streamed answers and direct announcements.
- — Keep saved personas' character while applying the same concise spoken style, without routine plan narration or follow-up offers.
- v0.2.172 2026-10-06
- — Restore opt-in wake-word activation with verified model downloads, real model warmup, visible failure state, and hard-mute protection. Tap to talk remains the default; Hey Jarvis is the fresh phrase preference and Hey Orbis remains experimental.
- — Reaccept native audio socket connections, discard stale disconnected audio, detect stopped capture, and show explicit relaunch guidance after capture or backend loss.
- — Keep structured delegation progress, questions, cancellation, and terminal task results aligned with the authoritative protoAgent task lifecycle.
- — Prevent stale wake snapshots and detector generations from reopening listening after native audio loss; preserve activation edits made during model downloads.
- — Fix hook ordering in orb settings and improve mobile marketing navigation, onboarding, privacy explanations, and Mac download guidance.
- — Verify the candidate with 1,285 passing Python tests (2 optional skips), 48 native Rust/model tests, 56 frontend tests, production builds, and bundle integrity checks.
- — Public beta: live spoken/device acceptance remains outstanding; Hey Orbis stays experimental and wake activation stays opt-in.
- v0.2.171 2026-09-03
- — fix(release): support empty PyApp cargo args on Bash 3.2 (#726)
- — chore(changelog): v0.2.170
- v0.2.170 2026-09-03
- — fix(distribution): verify PyApp UV bootstrap archive (#724)
- — fix(build): isolate local sdist frontend (#723)
- — fix(ui): separate app and voice readiness (#717)
- — docs: align desktop access sidebar label (#721)
- — fix(macos): keep tray app discoverable (#720)
- — fix(voice): serialize cold model warmup before Pipecat startup (#715)
- — perf(desktop): use pinned UV for PyApp installs (#716)
- — chore(changelog): v0.2.169
- v0.2.169 2026-09-02
- — The local hub endpoint is promoted as the default agent connection point.
- — Hub boot availability is hardened to reduce failure modes during startup.
- — Hub startup confirmation is bounded to prevent indefinite blocking.
- — A warning is emitted if hub startup does not finalize within the expected window.
- — Web boot status events are closed to resolve race conditions during initialization.
- — macOS DMG artifacts are validated against authoritative sources to ensure integrity.
- — The macOS artifact signer is pinned to prevent unexpected signature mismatches.
- — Automated version bumps are kept in sync to prevent drift between release channels.
- v0.2.168 2026-09-02
- — Verbal cancel phrases now cancel live delegated tasks, clearing pending input-required questions and marking local handles canceled.
- — When an A2A task parks on input-required, ORBIS routes your next utterance as the answer to that task, preserving task ID and context.
- — Reconnecting to a session requeries all live outbound tasks, delivering results missed while away exactly-once and re-arming input-required questions.
- — The `/a2a/callback` endpoint now correlates push-backs by task ID to mark durable rows terminal, preventing duplicate delivery on subsequent requeries.
- — A new durable outbound-task registry persists task handles in memory schema v5, surviving barge-ins, disconnects, and restarts.
- — Loopback A2A delegates now register push notification URLs, allowing results to be pushed to `/a2a/callback` even after dispatch timeouts.
- — The presence loop now yields after two spoken check-ins instead of narrating indefinitely, speaking one explicit yield line before going quiet.
- — A dead-turn recovery line now plays when an LLM completion emits no text or function calls, replacing silence on truncated or empty responses.
- — Reasoning tags are stripped from streamed LLM text before TTS, preventing leaked reasoning blocks from being spoken aloud.
- — Every delegation dispatch now generates a Langfuse span and success/error counters, with A2A trace headers stamped on outbound requests for end-to-end trace stitching.
- — Session tool logs are now persisted to `sessions.tool_calls`, recording up to 500 function calls per session.
- — The micro-LLM filler tier now has a 300-token budget and 4.0s timeout, fixing silent failures when reasoning models consume the token allowance.
- — Canned fallback lines now play when micro-LLM progress generation fails or times out, ensuring the presence loop never falls into dead air.
- — Docker runtime is verified before publish, and exact Docker image imports are gated.
- — Docker publication is now bound to verified refs, isolating PR Docker verification permissions.
- v0.2.167 2026-08-17
- — Anthropic OAuth and OpenAI Codex providers integrate into the LLM pipeline, supporting in-app sign-in, automatic token refresh, and credential lifecycle management.
- — Voice sessions boot signed-out rather than crashing if credentials are missing, allowing the system to prompt for sign-in instead of failing session setup.
- — Out-of-pipeline text agents, filler generation, and drift analysis now route through OAuth providers, preventing failures on subscription-only accounts.
- — The LLM test endpoint and model fetching respect the active OAuth provider, ensuring accurate diagnostics without manual API key entry.
- — OAuth status displays precise expiration timestamps, refresh capability, and credential durability, distinguishing between managed stores, borrowed CLI logins, and static environment tokens.
- — macOS Keychain acts as a fallback credential source for Claude Code, with a 30-second cache preventing subprocess overhead on high-frequency model calls.
- — Identity system prompts are strictly formatted to match Anthropic’s byte-exact requirements, resolving false rate-limit errors caused by malformed prefix blocks.
- v0.2.166 2026-07-27
- — The drawer footer displays the current version and a linked studio wordmark across every tab.
- — The studio link routes through the system browser via IPC, keeping the app interface intact.
- — The version string reads directly from the Tauri build configuration instead of a hardcoded constant.
- — The download page syncs the latest release instead of silently serving a stale version.
- — First-run documentation clarifies the multi-minute initial unpack and the required language model setup.
- v0.2.165 2026-07-17
- — Bounds degenerate tool loops on the voice path to prevent infinite spinning on identical requests.
- — Forces speech synthesis after three repeated tool-call round-trips to eliminate dead air.
- — Applies escalating nudge at two repeats before disabling tool calling entirely at three.
- — Configures the brake per backend, using `tool_choice: "none"` for OpenAI-compatible APIs and schema withholding for Ollama and MLX.
- — Introduces `agent/tool_loop.py` as a pure, testable policy module with no Pipecat dependencies.
- — Supports environment-tunable thresholds via `VOICE_TOOL_LOOP_NUDGE_AT` and `VOICE_TOOL_LOOP_STOP_AT` to match existing iteration caps.
- — Uses greater-than-or-equal comparisons for thresholds because request-only edits do not persist notes in history for the model to reference.
- — Pins tests across all four backends to ensure the guard is reached and does not rot in isolation.
- v0.2.164 2026-07-16
- — Local Smart Turn now enables by default, replacing fixed silence hangover with semantic turn-end detection to reduce per-turn latency.
- — Listener-acks automatically activate when the audio engine confirms active echo cancellation, preventing false triggers during speaker bleed.
- — Backchannel responses now respect the active TTS backend, suppressing on non-Fish paths where timing would be incorrect.
- — Per-stage latency metrics surface in sidecar logs, splitting time-to-first-audio across STT, LLM, and TTS components.
- — A new `LOG_LATENCY=0` flag silences the latency observer when detailed timing data is not required.
- — Pipecat upgraded to 1.5.x, ensuring compatibility with the new latency instrumentation and local smart turn analyzer.
- — The lockfile refreshes stale dependencies, including parakeet-mlx and zeroconf, to maintain a clean build environment.
- v0.2.160 2026-07-16
- — Sidecar process trees now terminate cleanly on quit, preventing orphaned workers and port leaks
- — Stale pyapp environment directories are automatically reaped on boot to reclaim disk space
- — The setup wizard now validates LLM connectivity before allowing progression, catching unreachable endpoints early
- — YAML configuration now takes precedence over environment variables across all subsystems, eliminating silent overrides from stale .env lines
- — API key validation now warns loudly when credentials are missing or unresolved, instead of silently failing with 401 errors
- — Kokoro TTS gracefully falls back to the default voice when the configured voice is incompatible, preventing silent audio failure
- — Session full-text search uses incremental indexing instead of rebuilding the entire index on every write, maintaining consistent latency regardless of session count
- — Kokoro TTS synthesis and speaker-gate inference run on dedicated executors, keeping the main event loop responsive during audio processing
- — Application routes are decomposed into domain-specific routers under `server/routers/`, reducing app.py complexity
- — A new diagnostics endpoint bundles runtime configuration and metrics for bug reports, with secrets automatically redacted
- — Packaging tests now verify that all top-level packages are included in distribution builds, preventing runtime import errors
- v0.2.159 2026-07-12
- — Drop-in `personas/<slug>.md` files now define voice, LLM overrides, orb presets, and system prompts.
- — A new Quick-tab picker and manager dialog let you create, edit, duplicate, and delete personas without touching the filesystem.
- — Voice commands like "put on the chef" or "switch to Sage" now hot-swap the active persona mid-session.
- — Failed LLM generations automatically retry on a configured backup endpoint before the user notices.
- — Dead or unreachable LLM endpoints now trigger a spoken error instead of leaving the orb stuck in a thinking state.
- — The `set_orb_visual` handler validates variants and palettes server-side, preventing the frontend from persisting invalid states.
- — Tool schemas now render live options at schema build time so voice routing matches current vocabulary without a restart.
- — LLM fallback, micro-tier, and router keys now persist correctly through the settings UI and persona files.
- — The active persona pointer and orb configuration round-trip through the config store without stripping nested keys.
- v0.2.146 2026-06-26
- — Persist all Orb tab edits, including sliders, colors, and palette selections, to the server-side configuration.
- — Ensure immediate persistence for discrete actions like variant swaps or preset loads to prevent data loss on reload.
- — Implement automatic configuration flushing during page visibility changes and window unloads.
- — Synchronize parameter hydration to ensure saved settings are correctly applied when switching variants or palettes.
- — Rename "Push-to-talk" to "Tap to talk" to accurately reflect the toggle-based interaction model.
- — Hide the wake word option from activation pickers and disable the on-device model catalog.
- — Temporarily remove the Edison variant from the available orb registry.
- v0.2.145 2026-06-24
- — Async delegate and orchestrate responses drop automatically when a user interrupts, preventing out-of-turn narration.
- — Dead tool handlers and unimplemented persona traits drop from the LLM prompt to reduce context noise.
- — Micro-acknowledge prompts simplify by dropping restrictive negative constraints that smaller models ignore.
- — The orb variant picker removes the "Premium" badge to align with open-source customization.
- v0.2.144 2026-06-24
- — The `set_orb_visual` tool is disabled to prevent unstable orb styling, and the related settings toggle is removed.
- — The update changelog now opens in a centered modal that properly renders markdown formatting instead of a raw text popover.
- v0.2.143 2026-06-24
- — The voice agent can now restyle the orb’s variant, palette, and parameter knobs live, with no reload required.
- — A toggle in Agent → Behavior disables the agent’s orb control capability, letting you turn it off at any time.
- — How-to, Reference, and Explanation overview pages now group content by domain (Voice & conversation, The orb, etc.) to match the sidebar structure.
- — Inside each documentation section, the sidebar groups pages by domain instead of an alphabetical flat list, with unplaced pages falling into a “More” group.
- — Post-paywall audit: removed stale billing references, clarified the `premium` flag as legacy, and listed three previously missing how-to guides in the overview.
- — The hero section now features a “Try the orb editor →” call-to-action, giving instant access to the zero-install interactive showcase.
- — Orphaned `/unlock` and `/unlock/success` pages, tied to a discontinued $9 unlock, have been removed to avoid confusion.
- v0.2.142 2026-06-24
- — Removes all entitlement gates and paywalls from the Orb settings panel and drawer.
- — Restores the Orb tab to the main application drawer for easier access.
- — Adds a direct link from the Orb settings to the full web-based editor.
- — Enables full panel collapsing to maximize stage workspace.
- — Adds a floating toggle button to expand or hide the editor panel.
- — Introduces icon-based header actions for Import, Export, Documentation, and Bug reporting.
- — Implements persistent panel width and state via localStorage.
- — Exposes Orb authoring capabilities via WebMCP tools, allowing AI agents to programmatically manipulate shaders, controls, bindings, and metadata.
- — Provides a comprehensive toolset for agentic workflows, including `get_orb_state`, `set_fragment_shader`, and `add_binding`.
- — Integrates real-time validation and WebGL compilation checks to provide immediate feedback during automated authoring sessions.
- v0.2.141 2026-06-22
- — Replaces static command checks with a real handshake probe to ensure delegates are functional before dispatch.
- — Implements process group reaping to prevent orphaned subprocesses and sidecar leaks when a dispatch is cancelled or timed out.
- — Adds synchronous SIGKILL capabilities to ensure immediate termination of the entire agent process tree.
- — Increases stdout and StreamReader line limits to 32 MB to accommodate large ACP messages.
- — Adds round-trip logging for initialization and session turns to improve sidecar diagnostics.
- — Augments the sidecar PATH on macOS to ensure binaries from Homebrew, nvm, and asdf are discoverable.
- — Strips existing Claude environment variables during delegate launch to prevent session conflicts when running within Claude Code.
- — Ensures the ACP client correctly inherits the user's login shell PATH for reliable binary resolution.
- v0.2.140 2026-06-13
- — Replaces manual workflow dispatching with native GitHub workflow chaining to eliminate token permission errors.
- — Implements conditional triggers to ensure marketing site deployments only occur following successful release builds.
- — Ensures the marketing site only updates after the release assets are successfully uploaded and the changelog is committed.
- v0.2.139 2026-06-13
- — The marketing site deployment now triggers only after the desktop installer and updater manifest are successfully uploaded.
- — The release process uses API-based workflow dispatch to prevent authentication conflicts and recursion during the changelog update.
- v0.2.138 2026-06-13
- — Automates the synchronization of the marketing site to ensure the live changelog reflects the latest version immediately.
- v0.2.137 2026-06-13
- — The shader panel is now resizable via a draggable divider to accommodate long GLSL lines.
- — Added window-level pointer listeners to ensure smooth dragging when moving over the preview canvas.
- — Keyboard navigation allows for resizing the panel, with width persisting across sessions.
- — Default panel width is increased to 680px to improve initial visibility.
- — Added links to the web-based orb editor in the global navigation and footer.
- — Included a call-to-action on the homepage for the in-browser design tool.
- — The release process now skips version bumps when a release pull request is already open to prevent CI failures.
- — Orphaned remote branches are automatically cleaned up during the release preparation phase.
- v0.2.136 2026-06-11
- — Prevents the listening window from auto-closing while the system is processing tool calls or delivering spoken responses.
- — Maintains an active listening state through concurrent background tasks to ensure uninterrupted conversation flow.
- — Surfaces the wake listen-window duration slider directly under activation style cards for easier access.
- — Implements a dual-input busy signal to track both bot speech and in-flight tool execution independently.
- — Adds a safety timeout to the busy state to prevent the microphone from remaining open indefinitely if a task completion event is missed.
- — Improves echo guard logic to treat recent playback as active conversation, preventing premature window closure.
- v0.2.134 2026-06-11
- — Migrates the application splash and loading screens to the official design system components.
- — Synchronizes boot sequence animations and brand elements with the standard design system shell.
- — Removes redundant logo displays during the boot gate phase to streamline the startup visual flow.
- — Implements CSS token support for consistent dark mode rendering based on system preferences.
- — Fixes a Docker build error by ensuring necessary workspace packages are included in the web build stage.
- v0.2.132 2026-06-10
- — Redacts provider API keys from the `/api/config` endpoint to prevent cleartext exposure.
- — Implements SSRF protection for LLM probes by rejecting cloud-metadata and link-local targets.
- — Offloads DNS resolution to a separate thread to prevent blocking the main event loop during LLM testing.
- — Uses constant-time comparison for inbox ingest tokens to mitigate timing attacks.
- — Adds immediate exception logging for failed native pipeline tasks to prevent silent crashes.
- — Moves full speech transcripts from INFO to DEBUG logs to ensure user privacy in shared log files.
- — Reduces CPU usage by replacing a busy-looping SSE bus with an asynchronous wait mechanism.
- — Pauses the Orb render loop and audio polling when the application window is hidden to save GPU and battery.
- — Ensures Parakeet STT features are correctly bundled in macOS DMG releases.
- — Enables automatic fallback to Whisper if the primary STT backend fails to load.
- v0.2.131 2026-06-10
- — Prevents silence during long-running asynchronous tool execution by ensuring the presence loop continues until task completion.
- — Suspends spoken status updates when the agent is paused waiting for human-in-the-loop user input.
- — Adjusts tool classification to ensure multi-step orchestration tasks trigger appropriate audio reassurance.
- — Removes premium customization and developer-only UI surfaces from standard production builds.
- — Transitions developer tools to an opt-in configuration via build flags to ensure clean distribution bundles.
- v0.2.130 2026-06-10
- — Enables agents to discover nearby A2A delegates via mDNS/Bonjour, local port scanning, and Tailscale peer probes.
- — Adds a "Discoverable on your network" toggle in Delegate settings to allow external access via 0.0.0.0 binding.
- — Implements automatic deduplication to prevent co-located agents from appearing multiple times in the discovery panel.
- — Provides a streamlined workflow to add discovered agents as delegates using prefilled connection details.
- — Introduces a deterministic presence harness to measure "dead air" gaps during long-running tool executions.
- — Establishes a centralized presence policy to ensure consistent user feedback when async delegates or slow sync tools are active.
- — Adds automated reporting for latency deviations against defined presence SLAs.
- v0.2.129 2026-06-09
- — Implements a grounding guardrail that prevents agents from fabricating capabilities or routing requests to mismatched agents in the fleet.
- — Forces agents to admit when no suitable specialist exists rather than attempting to force-fit an unrelated tool or agent.
- — Permits agents to answer directly using existing knowledge without over-hedging on general reasoning or conversational tasks.
- — Expands the evaluation harness to simulate the full voice tool surface, including orchestration and routing schemas.
- — Introduces a deterministic decision harness to measure routing accuracy, grounding integrity, and response brevity.
- — Enables scenario-based testing against specific fleet configurations to catch regressions in agent delegation logic.
- v0.2.128 2026-06-08
- — Implements a top-level microphone mute that overrides wake-word detection and push-to-talk to ensure no audio is processed when muted.
- — Fixes an issue where the stall watchdog would trigger recovery audio after a user had already cancelled a turn.
- — Adds new commands to manage the hardware mute state via the AudioEngine.
- — Enables hot-swapping of LLM providers and models in the live session without requiring a restart or audio reconnection.
- — Unifies frontend plugin, widget, and variant registries into a single primitive to improve state management stability.
- — Optimizes registry lookups to prevent unnecessary render loops in the web client.
- v0.2.127 2026-06-08
- — Implements auto-discovery for plugins, widgets, and orb variants via filesystem globs, removing the need to manually update central import lists.
- — Introduces a stable `@/sdk` web surface to provide explicit registration functions and types for extensions.
- — Establishes `config/widgets.yaml` as the single source of truth for widget definitions, synchronizing the agent and web registries.
- — Adds comprehensive contribution guides and in-folder documentation for plugins, widgets, orb variants, and agents.
- — Moves transient status management from a specific plugin into core shared services to prevent cross-plugin dependency fragility.
- — Resolves an issue where saving persona configurations would silently strip `behavior` settings due to validation filtering.
- — Prevents silent failures by adding CI guards that validate starter orb IDs against the registered variant registry.
- — Ensures widget parameters are passed through a generic `props` object to allow new widgets to function without modifying tool schemas.
- — Transitions the project to the Apache-2.0 license to support inbound contributions and provide explicit patent grants.
- v0.2.126 2026-06-07
- — Ensures the application bundle is correctly built during release cycles to allow the updater to serve valid artifacts and manifest files.
- v0.2.125 2026-06-07
- — Implements an in-app update mechanism that notifies users of available versions via a non-intrusive notification pill.
- — Provides a one-click "Update & Restart" workflow to download, install, and relaunch the application.
- — Automates the generation and signing of update manifests to ensure secure delivery of desktop builds.
- — Adds support for selecting specific audio output devices within the application settings.
- — Enables persistent selection of output hardware, allowing the app to bypass system-wide default changes.
- — Resolves issues where voice processing or acoustic echo cancellation (AEC) fails when the system default is set to a USB interface.
- v0.2.124 2026-06-07
- — Provides granular progress updates during the initial 80-second import phase to prevent the appearance of a frozen state.
- — Automates changelog synchronization between GitHub releases and marketing documentation to ensure consistency.
- — Hosts macOS DMG assets directly within this repository's releases for more direct access.
- v0.2.123 2026-06-06
- — Smoother first launch — the loading screen shows real progress and no longer looks stuck while ORBIS warms up.
- — Setup remembers you're set up — it won't re-ask about on-device voice on a Mac you've already configured.
- — Choosing on-device voice now downloads the speech models right then, with a progress bar — instead of stalling your first conversation.
- — Allowing the microphone during setup starts voice right away — no restart needed.
- v0.2.122 2026-06-06
- — Microphone keeps working when your audio output is a USB interface (no more silent mic on a Scarlett or USB DAC).
- — Status pill shows real speaking and thinking states, with cleaner delegation labels.
- — ORBIS is now open source: build it from source or browse the code on GitHub.
- v0.2.121 2026-06-05
- — Voice settings open cleanly — no more microphone-indicator flicker
- — Polished the on/off toggle switches
- — Packaging fix — developer-only tools are no longer included in the released app
- v0.2.118 2026-06-04
- — Redesigned settings — a Quick tab with at-a-glance status and your most-used controls
- — Switch between orb presets right from the Quick tab
- — Tidier voice settings — wake-word setup folds out of the way
- v0.2.117 2026-06-04
- — Barge-in — interrupt ORBIS mid-sentence (headphones)
- — "Hey Orbis" wake-word activation, fully on-device
- — Choose on-device or cloud speech models during setup
- — Signed + notarized — the app opens cleanly on download
Get the latest signed build on the Download page .