Skip to content

Orca v0.5.10

Choose a tag to compare

@github-actions github-actions released this 10 Oct 20:50
· 155 commits to main since this release

Orca v0.5.10

Changes since v0.5.9:

  • A queued message leaves the queue above the input once it is sent: the
    queue lists only the messages that still wait. Before, the sent message
    stayed at the top, as if the queue had not moved.
  • A message sent as the command-line prompt's turn starts joins the queue
    behind it, in view, instead of waiting unseen behind the whole turn.
  • A turn that ends without success says why when nothing more specific did,
    also after an error you caused during the turn or the previous turn's
    failure. An attached TUI whose daemon hangs up while it sits idle says the
    connection was lost.
  • On Windows, orca exec takes Ctrl+Break, a logoff and a shutdown as SIGTERM:
    it stops its run, writes the terminal record and exits with 143.
  • The MCP transports and the /mcp panel moved into modules of their own.
    Nothing changes for users.

Changes

Terminal UI

The queue above the input:

  • The runtime keeps a queued message it has sent in its queue until the
    message's turn ends. The queue above the input went on listing it, at the
    top, under "Running queued task · N pending", while the conversation
    already showed it as your message. It now lists only the messages that
    still wait, under "Queued N", and goes once none do.
  • Alt+Up, which takes back the latest queued message for editing, skips the
    one already sent.
  • A prompt given on the command line for a new conversation started its turn
    without the hold that v0.5.9 gave every message sent between turns. A
    message sent in the moment that turn was starting waited behind the whole
    turn, shown nowhere, and looked lost. It now waits for the turn to start
    and then joins the queue, in order.

How a turn ended:

When a turn ends without success and the runtime gave no more specific
reason, the TUI adds a notice for how it ended: "Task interrupted", "Task
budget exhausted", "Connection lost", and so on. Any error shown before then
used to count as that reason, and it kept counting after the turn:

  • An error the TUI shows for something you did, such as a mistyped command or
    an image that would not paste, no longer stands in for how a turn ended.
    Only what the runtime reported for the turn does.
  • The previous turn's failure no longer stands in for how the next one ended.
  • A lost connection always says so. An attached TUI (orca attach) whose
    daemon hung up while it sat idle after a failed turn used to show nothing.

orca exec on Windows

orca exec handled only the console's Ctrl+C on Windows. Ctrl+Break, which a
job runner sends to stop a console process group, and a logoff or a shutdown
ended it at once: its task commands and MCP servers went with the process,
and the run had no terminal record. They are now handled as SIGTERM is
elsewhere: the run stops its task commands and MCP servers, writes its
terminal record (session.completed with status cancelled in JSONL) and
exits with 143. A second one within the cleanup exits at once, and Windows
itself ends the process a few seconds after a logoff or a shutdown.

The TUI is unchanged: it already quits on these events.

Development

  • crates/orca-mcp/src/transport.rs held every MCP transport and their tests
    in 6.8k lines. It keeps what they share: the McpTransport trait,
    connecting by the configured transport, and the JSON-RPC message helpers.
    The stdio transport moved to transport/stdio.rs, streamable HTTP with the
    SSE fallback to transport/http.rs, each with its tests. The Windows
    platform boundary baseline names stdio.rs for the stdio transport's unix
    process calls.
  • The /mcp panel's rendering and its tests moved from ui.rs to
    mcp_panel.rs, next to mcp_dialog_actions.rs, which handles its keys.
  • A Windows test sends Ctrl+Break to a process group of its own and checks
    that it asks the process to terminate.
  • Two PTY tests cover the queue: a sent message leaves it, and a message sent
    as the command-line prompt's turn starts is listed in it. The SIGTSTP PTY
    test marks its output before fg, which it missed when the TUI redrew
    quickly.
  • The orca exec documentation page describes the Windows console events.

Compatibility

  • On Windows, an orca exec stopped with Ctrl+Break used to end with the
    console's default exit code (0xC000013A). It now exits with 143.

Configurations and sessions from v0.5.9 remain readable.

Verification

cargo fmt --all -- --check
node --test scripts/test-validate-runtime-surface-contract.mjs
node scripts/validate-runtime-surface-contract.mjs
node --test scripts/test-validate-windows-platform-boundaries.mjs
node scripts/validate-windows-platform-boundaries.mjs
node --test scripts/test-validate-execution-broker-boundary.mjs
node scripts/validate-execution-broker-boundary.mjs
node --test scripts/test-validate-http-client-boundary.mjs
node scripts/validate-http-client-boundary.mjs
node scripts/release/verify-version-sync.mjs
node scripts/release/test-verify-version-sync.mjs
node scripts/release/test-stage-npm.mjs
node scripts/release/test-verify-published.mjs
node scripts/test-repository-hygiene.mjs
node --test tests/npm_launcher_contract.test.mjs tests/release_workflow_contract.test.mjs
python3 -m unittest discover -s terminal_bench -p 'test_*.py'
cargo nextest run --workspace --all-targets --locked --profile ci --no-fail-fast --retries 0
cargo nextest run -p orca-tui --lib --locked --profile ci-serial --retries 0
cargo nextest run --test tui_pty_contract --locked --profile ci-serial --retries 0
python3 scripts/eval/acp_param_probe.py --binary target/debug/orca
python3 scripts/eval/daemon_probe.py --binary target/debug/orca
npm --prefix site run build
npm --prefix site run check:seo

Upgrade

npm install -g @blade-ai/orca@0.5.10
orca --version