Skip to content

v0.37.1

Choose a tag to compare

@github-actions github-actions released this 11 Jun 14:46
· 2713 commits to main since this release

v0.37.1: Responsive waits and bridge polish

A patch release focused on staying responsive: sending a message now interrupts a blocked watch, slow embedding backends get their configured headroom, and the bridge keeps its dispatch thread free of background work.

Your message wins over a blocked watch

If the agent is blocked in a synchronous bash_watch wait when you send a message, the wait now aborts immediately and converts itself to a background watch — the agent processes your message right away, and the original notification still arrives when the task finishes or the pattern matches.

Readable web pages in aft_outline and aft_zoom

HTML-only pages (Docusaurus blogs, docs sites) are now converted to Markdown at fetch time. Previously these pages dumped raw HTML into context, and zoom-by-heading failed because headings absorbed invisible permalink anchors. Outlines now come out clean, sections zoom by their visible heading text, and code blocks render as language-tagged fences. Markdown-native URLs are unchanged.

Semantic index responsiveness

  • semantic.timeout_ms is honored up to the real transport budget (55s) instead of being silently clamped to 25s — slow local backends (LMStudio cold-loads) keep their configured headroom, and background refresh batches stop getting aborted mid-embed.
  • Full-corpus refreshes (after .gitignore/.aftignore changes) no longer walk the project on the bridge's request thread — the walk happens on the refresh worker, so other tool calls aren't blocked behind it.
  • Loading a large index verifies file freshness in parallel on a bounded pool, shaving startup time.

Bash output protection covers more commands

The pipe protection that keeps bun test | grep fail from hiding failures now also recognizes env-prefixed runners (CI=1 bun test), bun --cwd <pkg> test, mvn clean test, and multi-task rake invocations (rake db:setup test) — with the same fail-closed safety rules for redirections, substitutions, and side-effectful filters.

Fixes

  • Background bash multi-command scripts now execute from a script file instead of shell argv, removing quoting and length edge cases, with a regression test asserting every command's output lands in the raw capture file.
  • Bridges with a crashed or timed-out process no longer pin themselves against idle eviction through leftover background-task bookkeeping.
  • /dev/fd/ paths in bash permission checks accept only numeric descriptors (/dev/fd/2) — path-traversal shapes like /dev/fd/../sda still ask.
  • The JSONC config schema now includes the inspect block and lsp.diagnostics_on_edit, so editors stop flagging valid config.
  • Two C libraries dropped from the dependency tree (oniguruma regex, and the C++ half of esaxx): the tokenizer now uses pure-Rust backends, trimming build complexity with byte-identical tokenization (regression-tested).

Join our Discord