Heads up This site is currently under heavy development.
Subscribe Get it delivered — the daily firehose, filtered to the tools you run, plus the documentation changes vendors never announce. Compare plans →

The AI Toolchain — issue -225, January 4, 2026

THE AI TOOLCHAIN NO. -225
Tail
THE DAILY RELEASE FIREHOSE
PUBLISHED JANUARY 4, 2026 · EVERY WEEKDAY
EDITIONS tail grep head diff uniq

The daily firehose — everything the toolchain shipped today, already filtered.

// HOW THIS ISSUE IS MADE

We read every release from the 174 tools on our watchlist at the source — GitHub and GitLab release notes, vendor release pages and changelogs, project blogs and feeds, vendor press releases, and the source code behind the tag. Bug-fix-only releases and non-product newsroom noise are dropped; what's left is summarized down to the new capability, how to try it, and any screenshots or videos the release itself published. Every entry links to the sources it was built from.

VIEW
ISSUE VIEW full issue
Do you prefer this view?
$ tct list   # 4 tools matched
AI & LLM Tooling
◆  AI Coding Agents

SST OpenCode

Sources Release notes → v1.1.1 NOTES

The open source coding agent.

OpenCode v1.1.1 overhauls permissions with granular glob-pattern rules, adds Kotlin LSP, MCP resources, per-project MCP overrides, and more.

└──▷ GET THIS VERSION
$ git clone --branch v1.1.1 https://github.com/sst/opencode.git
# already have the repo? check out this version:
$ git checkout v1.1.1
└──▷ USE IT
Set fine-grained per-tool permissions using glob patterns in your project config to control what the agent can touch.
json
{
  "permission": {
    "bash": {
      "npm *": "allow",
      "git *": "allow",
      "rm *": "deny",
      "*": "ask"
    },
    "edit": {
      "*.md": "allow",
      "*.ts": "ask",
      "*": "deny"
    }
  }
}
Run a session using a specific agent variant — useful for switching between minimal and full modes in CI or scripting.
$ opencode run --variant minimal
  • New granular permission config replaces tools, supporting glob-pattern rules per tool (e.g., allow npm *, deny rm *, ask for everything else).
  • Adds Kotlin LSP integration for language-server-powered code intelligence in Kotlin projects.
  • Adds MCP resources support, enabling models to access MCP-exposed resources.
  • Adds per-project MCP config overrides so individual projects can customize their MCP server settings.
  • New POST /permission/:requestID/reply API endpoint for responding to permission requests programmatically.
+15 moreshow less
  • Adds CORS whitelist support via server.cors config option.
  • New tui.session.select API endpoint for TUI session navigation from plugins.
  • Adds --variant flag to the run command for selecting agent variants.
  • Adds /compact session command to compress conversation history.
  • Adds image preview support in the desktop session viewer.
  • New Osaka Jade theme available in TUI.
  • Agent steps field replaces deprecated maxSteps for controlling agent step limits.
  • Instructions arrays are now merged across config files instead of overridden.
  • Adds sandbox support for git worktrees, enabling work in multiple project directories simultaneously.
  • Adds managed git worktrees support.
  • Adds heap snapshot option to the TUI system menu for memory debugging.
  • Assistant metadata is now included in session exports.
  • Adds reject message support to permission dialogs for clearer user feedback.
  • Adds escape key handling to permission dialogs for keyboard navigation.
  • File context feature added to the desktop app.
└──▷ BREAKING ON UPGRADE
  • !The PermissionNext.Event structure replaces Permission.Event: event name changed from permission.updated to permission.asked; type field renamed to permission; pattern (string) replaced by patterns (array of strings); message field removed; response renamed to reply; permissionID renamed to requestID; new always field added.
  • !Old endpoint POST /session/:sessionID/permissions/:permissionID is deprecated in favor of POST /permission/:requestID/reply.
  • !GET /permission now returns PermissionNext.Request[] instead of Permission.Info[].
  • !Mode and plugin globs no longer search subdirectories — only top-level files are matched.
  • !Agent tools field is deprecated — use permission instead.
  • !Agent maxSteps field is deprecated — use steps instead.
Was this useful?

Earendil Works Pi

Sources Release notes → v0.34.1 3 RELEASES · 2026-01-04 NOTES STABLE

AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI

Pi v0.34.1 adds a Hook API method to dynamically set the terminal window/tab title from hooks.

└──▷ GET THIS VERSION
$ git clone --branch v0.34.1 https://github.com/earendil-works/pi.git
# already have the repo? check out this version:
$ git checkout v0.34.1
└──▷ TRY IT
Update the terminal tab title from a hook to reflect the current task or context at a glance.
$ ctx.ui.setTitle("My Custom Title")
  • New Hook API method ctx.ui.setTitle(title) lets hooks dynamically set the terminal window or tab title.
2 more releases in this issue · 2026-01-04
v0.34.0 NOTES STABLE

Pi v0.34.0 adds dynamic system prompt injection, multi-message hook returns, and runtime tool toggling via hooks.

└──▷ GET THIS VERSION
$ git clone --branch v0.34.0 https://github.com/earendil-works/pi.git
# already have the repo? check out this version:
$ git checkout v0.34.0
└──▷ TRY IT
Restrict the agent to safe read-only tools at startup, then let a hook re-enable bash mid-session based on user confirmation.
$ pi --tools read,grep,find,ls
# Inside a hook, after user confirms:
# pi.setActiveTools(['read', 'grep', 'find', 'ls', 'bash'])
  • Enables before_agent_start hook handlers to return systemPromptAppend to dynamically inject text into the system prompt per turn; multiple hooks' appends are concatenated.
  • Allows before_agent_start handlers to return and inject multiple messages in a single turn, not just the first.
  • Expands the tool registry to include all built-in tools (read, bash, edit, write, grep, find, ls) even when --tools restricts the initially active set, letting hooks enable any registered tool via pi.setActiveTools().
  • Automatically rebuilds the system prompt — including tool descriptions and guidelines — whenever the active tool set changes via setActiveTools().
  • Adds example hook tools.ts providing an interactive /tools command to enable/disable tools with session persistence.
+2 moreshow less
  • Adds example hook pirate.ts demonstrating systemPromptAppend to alter agent persona at runtime.
  • Displays full stack traces for hook errors to aid debugging.
v0.33.0 NOTES STABLE

Pi v0.33.0 adds clipboard image paste, configurable keybindings, and clean-exit slash commands.

└──▷ GET THIS VERSION
$ git clone --branch v0.33.0 https://github.com/earendil-works/pi.git
# already have the repo? check out this version:
$ git checkout v0.33.0
└──▷ TRY IT
Exit cleanly after a session, ensuring all hook and tool cleanup handlers finish before the process terminates.
$ /quit
  • Supports pasting clipboard images via Ctrl+V — images are saved to a temp file and attached to the message (macOS, Windows, Linux/X11).
  • Adds configurable keybindings via ~/.pi/agent/keybindings.json, covering editor navigation, deletion, and app actions like model cycling, with support for multiple bindings per action.
  • New /quit and /exit slash commands exit the application gracefully, properly awaiting hook and custom tool cleanup handlers before terminating.
└──▷ BREAKING ON UPGRADE
  • !All isXxx() key detection functions (isEnter(), isEscape(), isCtrlC(), etc.) have been removed from @mariozechner/pi-tui; replace them with matchesKey(data, keyId) (e.g., matchesKey(data, "enter"), matchesKey(data, "ctrl+c")). Hooks and custom tools using ctx.ui.custom() with keyboard input handling will break without this change.
Was this useful?

Alibaba Qwen Code

Sources Release notes → v0.6.0-nightly.20260104.105ad743 NOTES

Qwen Code v0.6.0-nightly adds system-locale LLM language auto-detection and ChatCompletionContentPart merging.

└──▷ GET THIS VERSION
$ git clone --branch v0.6.0-nightly.20260104.105ad743 https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:
$ git checkout v0.6.0-nightly.20260104.105ad743
  • Supports merging ChatCompletionContentPart objects and filters empty messages from chat completion requests.
  • Auto-detects the LLM output language from the system locale, removing the need to manually configure response language.
Was this useful?
Other / Uncategorized
◆  VECTOR DB RAG

Milvus

Sources Release notes → v2.6.8 NOTES

Milvus 2.6.8 adds search result highlighting, collection-level GC pause, nullable dynamic fields, and QueryNode penalty policies.

└──▷ GET THIS VERSION
$ git clone --branch v2.6.8 https://github.com/milvus-io/milvus.git
# already have the repo? check out this version:
$ git checkout v2.6.8
  • Supports search with result highlighting via the Text Highlighter feature, enriching full-text retrieval responses with matched term context.
  • Supports pausing garbage collection at the collection level, giving operators fine-grained control over GC timing per collection.
  • Supports nullable dynamic fields with an empty JSON object as the default value, enabling more flexible schema designs.
  • Implements a penalty policy for QueryNodes to handle resource exhaustion, improving cluster stability under heavy load.
  • Supports DML and DQL forwarding in Proxy for RESTful v2, extending REST API coverage for data write and query operations.
+9 moreshow less
  • Introduces a tolerance duration to delay collection drop operations, reducing risk of accidental immediate data loss.
  • Rejects duplicate primary keys in upsert batch requests, enforcing data integrity at ingestion time.
  • Adds metrics to monitor Jemalloc cached memory, improving observability of memory allocator behavior.
  • Enables concurrent execution of text index tasks for multiple fields, reducing indexing latency for multi-field text workloads.
  • Adds validation for embedding models and schema field types, catching mismatches earlier in the pipeline.
  • Moves query optimization logic to the Proxy layer to improve query performance.
  • Adds a fallback mechanism for write paths when accessing object storage without condition-write support, broadening compatible storage backends.
  • Adds retry mechanism for object storage reads on rate-limit errors, improving resilience against throttled storage backends.
  • Improves index task scheduling by estimating slots based on field size and type, reducing resource contention during index builds.
└──▷ BREAKING ON UPGRADE
  • !The RootCoord default port has changed to a non-ephemeral port; deployments that rely on the previous default port number may need configuration updates.
Was this useful?
my-toolchain — 0 tools
paste an install list to detect your tools

A brew list, a Brewfile, requirements.txt, a Dockerfile — or just the product names, free-form. Nothing leaves your browser.

    browse all tools →