← Changelog

octet 0.9.6

octet 0.9.6 keeps finished subagents reloadable, makes /reload --force force, offers thinking levels for every OpenCode model that has them, fixes native Tern on Windows and stops transcript images from covering the composer in Ghostty and Kitty. The version-pinned release page records the immutable source, CI runs, artifact checksums and actual channel availability. Source-build evidence is not public-artifact qualification.

What changed in 0.9.6#

  • Finished subagents no longer block /reload. A worker that completed, reached its turn limit, failed, timed out or was interrupted is parked by the reload with its result and session kept, including across a host binary reload, and subagent_continue resumes it. A turn-limited or detached worker used to block every reload until the session was exited and resumed.
  • /reload --force forces. A worker that is still running or has queued work blocks plain and automatic reloads; --force detaches it, keeps its session and queued work, resumes undelivered tasks on the next turn and never replays delivered work.
  • Thinking levels for every OpenCode model. OpenCode Go and Zen models without a hand-written preset take their thinking levels from their pinned model record on their own route (Gemini, Claude, Qwen, Chat and Responses), and presets keep every documented image and audio input. 0.9.4 covered Gemini Argon alone.
  • Gemini keeps working after a tool read media on another model. A session holding an image or audio clip inside a tool result (for example a read made on Claude or GPT) no longer fails every Gemini request with "Media in tool results is unsupported"; the media is sent as inline data.
  • Native Tern on Windows. Tern answers in OSC 877 framing where the Windows console drops APC; octet now recognizes it, so the hello no longer times out and the reply no longer lands in the composer.
  • PDF attachments work. A dropped PDF reached the model as the bare label [PDF #1]. Models that read PDFs (Claude, Gemini, Grok, newer GPT models and many OpenCode and OpenRouter models) now receive the document itself, up to 10 MiB; other models receive its path, and read says it does not decode PDFs instead of returning compressed bytes.
  • Windows fixes. octet-web-search starts on Windows, and workspaces are shown as C:\project rather than \\?\C:\project.
  • /extensions status stays open. It and other one-shot summaries closed on the release of the Enter that opened them.
  • Rich rendering in Windows terminals. Alacritty, WezTerm and Tern on Windows drew ASCII bullets and rules with 256 colours. Terminals that announce themselves now get Unicode glyphs, truecolor, italics and links, as Windows Terminal does.
  • Images stay inside the transcript. In Kitty-protocol terminals (Ghostty, Kitty, WezTerm) an image cut by the edge of the transcript view is placed only for its visible rows instead of covering the composer and status bar.
  • Native Tern polish. The composer is Tern's editor card with chips, the welcome row wraps by group, picker prices fit, an acknowledgement stall waits five seconds before reconnecting, and a terminal error event replays the surface instead of ending native rendering.
  • Benchmarks and speed. Custom registry providers can target Anthropic Messages or OpenAI Responses gateways, --session FILE.jsonl addresses a session by file, and RPC tool results carry Pi details, structured content and media. Imported and extension-created sessions list correctly. Fullscreen streaming, RPC get_state, resumed sessions, --no-session runs and Pi session import are measurably faster.
  • Dependencies. Rust minor and patch updates (including Tokio 1.53.3) and pinned GitHub Actions updates.

0.9.5 brought native Google audio input, Windows octet update and native Tern touchpad scrolling; see the 0.9.5 notes. 0.9.4 matched Gemini thinking levels to each model; see the 0.9.4 notes. Everything below from 0.9.1 still applies.

Status at a glance#

  • Pi compatibility is experimental and unstable. Full Pi backwards compatibility is not yet qualified. The octet-pi-compat adapter does not ship in this release; it remains source-only experimental work, and loading real Pi setups can be slow or fail for individual extensions.
  • Many extensions work today. Five first-party bundles ship (codemode, computer use, MCP, subagents and web search), any-language subprocess extensions are supported, and in the source preview unchanged Pi extensions such as Doom, drawing, the powerline footer and the rainbow editor run through the adapter. These Pi receipts are development evidence, not release qualification.
  • Windows is in preview. The native Windows x86-64 (MSVC) archive and install-octet.ps1 are published and pass release-workflow runtime, terminal and ConPTY checks, but attended desktop use is unqualified and known issues remain open.

What's better since v0.8.1#

v0.8.2 was a source candidate and never published, so upgrading from v0.8.1 brings the 0.8.2, 0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5 and 0.9.6 entries in the changelog.

  • Up to 8× more parallel reads. Read-only tool calls run in waves of one per CPU, from 4 up to 32 (v0.8.1: always 4), and the runtime's worker pool is sized to the machine instead of 2 threads.
  • Edits stop filling the model's context. edit and write return one short line (ok, path, verb, content hash); the unified diff moves to result metadata the model never sees. Tool cards still show the diff.
  • Windows went from unbuildable to native (preview). The interactive crate did not compile for Windows in v0.8.1. v0.9.6 publishes a signed MSVC octet.exe with install-octet.ps1 that runs in Windows Terminal and conhost, with no WSL.
  • Sign in instead of pasting keys. Browser sign-in for ChatGPT/Codex joins device-code sign-in, plus new Grok, Kimi, Meta and OpenRouter account sign-in. /setup can remove any saved sign-in, key or custom provider.
  • Extensions are set up inside the app. /extensions installs, configures and manages the five signed first-party bundles (MCP, web search, subagents, codemode, computer use) with live progress, cancellation and confirmations.
  • Changes land when you make them. Every /settings choice applies immediately, even mid-run; model and reasoning changes made during a run are queued for the next safe boundary instead of being refused.

Faster and leaner#

  • A launch that names its model no longer waits for a cold provider inventory.
  • Resume hydrates only a viewport-sized tail; startup reuses tool definitions, extension host state and resumed configuration, and defers terminal background detection until after the first frame.
  • The models.dev refresh builds only the providers octet reads instead of the whole ~5 MiB catalog, whose value tree peaked near 60 MiB.
  • Only the newest four tool-result images (typically screenshots) are sent to the model on each request.
  • The core toolset is read, edit, write and bash; the native Search tool is removed in favor of rg through the shell. The default prompt makes the change, runs one relevant check and stops.

These are specific, recorded changes; no whole-release speed or memory benchmark is published.

Smoother terminal#

  • Fullscreen by default with wheel and trackpad scrolling; selection and copy follow the painted transcript across scroll and wrapping.
  • Quieter startup and reloads: background work no longer prints warnings, a reload ends in one note, and repeated extension notices show once per 30 s.
  • Paste and attachment chips edit like ordinary text with undo; resize replays history correctly and the Working clock keeps ticking.
  • Fixed stale or duplicated inline images when scrolling (Kitty-protocol terminals), a scrollbar hover crash, and the resume picker quitting octet on Ctrl+D (deleting is now Ctrl+X with a confirmation and recoverable trash).
  • Themes can show the thinking trace expanded; quiet Explored grouping now covers web search, MCP and computer use.

Providers and models#

  • New models: GPT-6.1 Sol (API and Codex) and Mistral Large 4; OpenCode and OpenCode Go show their live catalogs.
  • Model names, prices and capabilities refresh in the background at most every six hours, guarded against zeroed or tenfold price drops.
  • Custom first-party endpoints such as Cerebras keep their real context window; discovery errors name the provider's status and message.
  • Throughput is labelled honestly as end-to-end; one ambiguous provider failure no longer disables hard cost ceilings for the session.
  • Prompt-cache warming (/cache-warming), server-reported inference timing in /status, and an opt-in redacted provider request trace.

Extensions and platforms#

  • Five signed first-party bundles install, update and remove with one command; installing never enables an extension or grants trust.
  • In safe mode, an extension starts only with an explicit host-authority grant, which /extensions can grant and revoke.
  • Computer use and clipboard copy work on Linux desktops: Wayland (Hyprland, Sway, GNOME, KDE) and X11.
  • On Windows: Python extensions start through py -3, ! commands run through Git Bash, file edits and atomic replacement work, elevated sessions work, and computer use no longer hangs.

Reliability and trust#

  • Every native and extension asset is checksummed and Sigstore-signed by the tracked release workflow; the version-pinned installer verifies it.
  • Concurrent conditional writes to one file are serialized on Linux and macOS; removing the last custom provider no longer discards a concurrent writer's registry.
  • Extension crash and startup-handshake fixes found by a real-package matrix, and a new end-to-end suite that drives the real binary through PTY sessions.
  • Removed: the packaged Serve app, its web client, the macOS/iOS companions and the old browser extension. Computer use drives your own browser.

Highlights#

  • Native coding surface: read, edit, write and bash (PowerShell on Windows). Independent reads and shell calls can overlap under full access; mutations and approval-bearing calls remain ordered. Native Search is removed; content search uses rg or grep through the shell.
  • Interactive correctness: model and reasoning changes wait for a safe request boundary; settings apply visibly; paste and attachment chips remain editable text with undo. Fullscreen scrolling retires stale Kitty images.
  • Provider setup and discovery: review-first API-key, subscription and local endpoint setup; explicit removal of saved providers/sign-ins; live OpenCode inventories; bounded background discovery when the model is already known.
  • Sessions and presentation: resumable histories, busy steering/follow-up, selectable built-in themes, transcript selection/copy and Tern native surfaces.
  • Optional integrations: five separately installed bundles: codemode, computer use, MCP, subagents and web search. Installation never enables an extension, grants trust or provisions its optional dependencies.

Changed#

  • Product, SDK source and the five shipped extension manifests use 0.9.6. Extension API versions remain independent; bundled extensions require the exact host version =0.9.6.
  • Removed the packaged Serve application, its web/Apple companions, the native Search tool and the obsolete browser extension.
  • The interactive terminal defaults to fullscreen with app-owned mouse input. --mouse auto retains inline terminal scrollback.
  • Provider-request tracing is opt-in and redacts prompt, credential and output contents. Only the newest four tool-result images are sent to the model.

Qualification#

Surface Qualification boundary
Rust workspace, SDKs and shipped integrations Exact-source automated CI; final run and result recorded on the release page
Linux/macOS native archives Clean release builds, version/host smoke, repeatable packaging, checksums and Sigstore verification; public-install receipts belong to the published artifacts
Windows MSVC archive (preview) Release-workflow native runtime, terminal and extracted-executable ConPTY checks; GNU CI alone does not qualify MSVC
Terminal/model behavior Loopback-provider and PTY evidence, not paid-provider or physical-display acceptance
Pi compatibility Not yet qualified; the adapter is not offered in the release catalog. Source-preview receipts for individual Pi extensions are development evidence

Prior candidate runs and local development tests are not evidence for a different release SHA. The release page distinguishes completed gates from pending or unrun acceptance; a successful build alone is not a passing coding-task smoke.

Known limitations#

  • Multi-line paste on Windows. A paste still arrives key by key, so each newline submits the prompt and a dropped file stays typed text. Paste one line at a time, or attach files with an @ mention.
  • octet-codemode does not run on Windows. The official bundle ships a POSIX shell launcher and no Windows build; on Windows it now reports that instead of failing with "not a valid Win32 application". The other four official bundles run on Windows with Python 3.
  • Full Pi backwards compatibility is not yet qualified, and the adapter does not ship. octet-pi-compat remains source-only experimental work; several unchanged Pi extensions run in the source preview, but Pi 1.0.2 API parity is not established. Installed-Pi lifecycle/command parity, dependency-bearing workflows and cold mirror startup are not release qualifications. Previously installed experimental adapters are not automatically removed or enabled; disable them explicitly if present. Built-in Pi-themed palettes, migration utilities and codemode are separate from this adapter.
  • Live provider, subscription and audio acceptance is not run for this release. Mock-provider tests do not establish account/model availability, billing accuracy or real audio behavior. The reported Windows Codex HTTP 400 issue (#572) remains unresolved pending a redacted request trace.
  • Windows is a preview platform. The MSVC archive passes automated release checks only; attended Windows desktop use, physical-console presentation and provider behavior on Windows are unqualified, and the Codex HTTP 400 report above is Windows-specific.
  • Attended UI/driver journeys remain unqualified. Automated terminal-buffer and ConPTY checks do not establish physical presentation, trackpad behavior in every terminal, or granted desktop-driver behavior.
  • No performance comparison is published. Historical benchmark records are not measurements of this release's final artifacts.
  • Publication channels are independent. npm, Homebrew, crates.io, SDK registries and container registries are not made available by the native release workflow. Only channels with explicit receipts on the release page should be treated as published.