← Changelog

octet 0.6.4

Released 2026-08-30.

v0.6.4 is a daily-usability, context-efficiency, and correctness release. It uses the active context window more deliberately, prevents output-truncated tool arguments from executing, makes terminal state and failures easier to read, and hardens durable goals and compatibility links. The command and binaries remain ygg and ygg-host; ygg --version reports ygg 0.6.4.

Highlights#

More useful context, truthful output limits#

  • Ygg now estimates the complete provider-visible request before each model turn.
  • The default compaction.threshold_fraction is 1.0: autonomous compaction keeps a fixed 16K coding-turn reserve, or the larger reasoning floor advertised by the active model, instead of reserving an additional percentage of every context window.
  • The provider-advertised output maximum remains the request ceiling. Ygg reduces it only when the current input leaves less output capacity in the context window.
  • Capacity estimates advance incrementally as messages are appended and re-anchor to authoritative provider usage, avoiding repeated reconstruction of ordinary long histories.
  • Existing explicit threshold_fraction values remain valid and retain their configured percentage behavior.

This change avoids premature compaction and unnecessary summary turns. Depending on provider pricing and cache behavior, retaining more original context can increase input tokens even when it reduces compaction work; /cost, /context, and opt-in telemetry remain the authoritative measurements for a session.

Output-truncated tool calls cannot execute#

A provider can reach its output-token limit in the middle of a tool argument. v0.6.4 keeps the tool-call identity for protocol continuity but discards partial arguments, records a bounded failure result, and requires the model to issue a complete replacement call. It never repairs or guesses a truncated mutation into an executable request.

A calmer, more informative terminal#

  • Transcript blocks, prompt cards, composer, footer, and pickers share one responsive horizontal grid across narrow, regular, and wide terminals.
  • Submitted prompts retain the colour of the model that received them; changing models updates the next composer without recolouring transcript history.
  • Accepted steering waiting for the next boundary appears as a bounded two-row pending hint rather than a second transcript.
  • One authoritative Working (<elapsed> • esc to interrupt) row remains while the owning run is active, including after assistant text, and disappears only at run settlement or while a tool-specific lifecycle owns the tail.
  • Normal completion, completion with warnings, interruption, and failure remain distinct after animation stops.
  • Collapsed run and tool failures retain a bounded actionable reason. Full captured evidence remains available through disclosure when present.
  • Confirmation detail is retained separately from its actions, and Enter cannot confirm an action that is not visible on a constrained terminal.
  • Session and model pickers use responsive rows; model providers are grouped and repeated capability noise is removed from the default model list.

Durable-state and migration hardening#

  • Goal updates use a private transaction lock shared by independent handles and revalidate that lock before publication. Concurrent goal turns and revisions no longer race into lost updates.
  • Pi migration bounds nested extension-manifest traversal and reports incomplete traversal rather than following an unbounded manifest chain.
  • The extension protocol can negotiate runtime_commands, allowing a compatibility process to expose a bounded, duplicate-free command catalog at initialization.

Pinned Pi compatibility profile#

ygg pi install creates an inert compatibility link for reviewed local Pi source. Repeated --with arguments preserve an explicit source order in one fingerprinted aggregate lock and one shared runtime. v0.6.4 pins bridge profile 0.2.0 to @earendil-works/pi-coding-agent@0.84.4, records bounded source fingerprints, and rejects source changes before importing extension code. A link remains disabled and untrusted until explicitly activated.

The bridge supports a tested subset of tools, transformed tool results, initialization-time commands, notifications, confirmations, text input, lifecycle/context events, and local Pi event-bus behavior. It is not universal Pi compatibility: provider/session mutation, arbitrary TUI components, compaction control, and other unsupported surfaces remain explicit diagnostics. See the Pi migration guide for the supported boundary and remaining gaps.

Updating#

Installer-channel users can update in place:

ygg update --check
ygg update

Or run the version-pinned installer directly:

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/skaft-software/ygg/releases/download/v0.6.4/install-ygg.sh | sh

Then restart Ygg and verify:

ygg --version
ygg --help
ygg doctor

Cargo-channel users can install the immutable tag with Rust 1.86 or newer:

cargo install --locked \
  --git https://github.com/skaft-software/ygg \
  --tag v0.6.4 \
  --bins \
  ygg-coding-agent

Packages and compatibility#

  • Core crates and first-party packages target Ygg 0.6.4 exactly.
  • Executable-extension API 0.2 remains the wire contract; runtime_commands is optional and negotiated, so extensions that do not request it retain the manifest-authoritative command behavior.
  • Matching ygg-browse, ygg-mcp, ygg-subagents, ygg-web-search, and Ygg Serve archives are published with the release.
  • Existing local configuration, credentials, sessions, goals, extensions, and Serve data remain in place across installer upgrades.
  • Existing explicit compaction thresholds remain readable. Only the built-in default changes from 0.85 to 1.0.

Known limits#

  • Prebuilt targets remain GNU/Linux x86-64, macOS x86-64, and macOS Apple silicon; Linux musl is not included.
  • Theme selection remains disabled; the compiled model-aware default is the only runtime theme.
  • Pi compatibility is intentionally bounded to the documented 0.84.4 subset and requires Node 22.19 or newer plus the exact selected Pi package.
  • Ygg does not claim that retaining more context lowers cost for every provider; cache pricing, input rates, and workload shape determine the result.
  • The published runtime-footprint evidence measures the frozen v0.6.3 binary, not v0.6.4 active-turn performance.
  • npm, Homebrew, PyPI, GHCR, universal MCP compatibility, and universal Pi compatibility are not part of this release.