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.
Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.
Claude Code v2.1.20 adds PR review status in the footer, vim history nav, TaskUpdate deletions, and per-directory CLAUDE.md loading.
└──▷ GET THIS VERSION
$ git clone --branch v2.1.20 https://github.com/anthropics/claude-code.git
# already have the repo? check out this version:$ git checkout v2.1.20
└──▷ TRY IT
Load project-specific CLAUDE.md instructions from a shared config directory alongside the default working directory.
$ CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir /path/to/shared-config
›Adds arrow key history navigation in vim normal mode when the cursor cannot move further.
›Adds external editor shortcut (Ctrl+G) to the help menu for easier discovery.
›Adds PR review status indicator to the prompt footer showing the current branch's PR state (approved, changes requested, pending, or draft) as a colored dot with a clickable link.
›Supports loading CLAUDE.md files from additional directories specified via --add-dir (requires CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1).
›Adds ability to delete tasks via the TaskUpdate tool.
+7 moreshow less
›Improves /sandbox command UI to show dependency status with installation instructions when dependencies are missing.
›Enables the /commit-push-pr skill to automatically post PR URLs to configured Slack channels via MCP tools.
›Makes the /copy command available to all users.
›Changes background agents to prompt for tool permissions before launching.
›Accepts wildcard permission rules like Bash(*) and treats them as equivalent to Bash.
›Renders teammate messages with rich Markdown formatting (bold, code blocks, lists, etc.) instead of plain text.
›Changes ToolSearch results to appear as a brief notification instead of inline in the conversation.
Qwen Code SDK TypeScript v0.1.4 adds Japanese and Portuguese locales, extensions detail command, plugin marketplace UI, and /bug in non-interactive mode.
└──▷ GET THIS VERSION
$ git clone --branch sdk-typescript-v0.1.4 https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:$ git checkout sdk-typescript-v0.1.4
└──▷ TRY IT
Report a bug directly from a non-interactive CI/scripting session without dropping into the interactive REPL.
$ qwen /bug
Inspect details and validate a specific installed extension from the command line.
$ qwen extensions detail <extension-name>
›Adds /bug command availability to non-interactive mode.
›Adds detail subcommand for extensions with improved extension validation via feat(extensions): add detail command.
›Adds settings support for experimental skills under the experimental namespace in CLI settings.
›Adds ui.showLineNumbers setting respected by the DiffRenderer for diff output.
›Adds plugin selection UI for the Claude marketplace within the extensions workflow.
+8 moreshow less
›Adds skills and agents display to the extension list with i18n support.
›Adds Japanese language support (ja) with fixed menu labels across other locales.
›Adds Portuguese (pt-BR) language support with complete translations and refactored i18n architecture.
›Adds user feedback dialog with temporary dismissal and persistent re-prompting behaviour.
›Adds runtime-aware fetch options for Anthropic and OpenAI providers.
›Redesigns the CLI welcome screen and settings dialog.
›Switches from tiktoken to API-reported token counts, removing the tiktoken dependency.
›Uses dim colors for YOLO/auto-accept mode borders to visually distinguish the mode.
Qwen Code v0.8.0-preview.4 adds extension management commands, /bug in non-interactive mode, and a redesigned CLI welcome screen.
└──▷ GET THIS VERSION
$ git clone --branch v0.8.0-preview.4 https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:$ git checkout v0.8.0-preview.4
›Adds /bug command support to non-interactive (headless) mode.
›Adds an extensions subsystem with a detail command and improved extension validation.
›Adds a plugin selection UI for the Claude marketplace within the extensions feature.
›Redesigns the CLI welcome screen and settings dialog.
›Adds ui.showLineNumbers setting support to the diff renderer so line numbers are respected in diffs.
+2 moreshow less
›Adds runtime-aware fetch options for Anthropic and OpenAI providers.
›Uses dim colors for YOLO/auto-accept mode borders to visually distinguish that mode.
Qwen Code v0.8.0-preview.3 adds an extensions system, /bug in non-interactive mode, and a redesigned CLI welcome screen.
└──▷ GET THIS VERSION
$ git clone --branch v0.8.0-preview.3 https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:$ git checkout v0.8.0-preview.3
└──▷ TRY IT
File a bug report directly from a CI pipeline or script without launching an interactive session.
$ qwen /bug
Inspect a specific installed extension to verify its metadata and configuration.
$ qwen extensions detail <extension-name>
›Adds /bug command availability in non-interactive (headless) mode.
›Introduces an extensions system (Feat/extension) with a detail subcommand for inspecting extensions and improved extension validation.
›Adds a plugin selection UI for the Claude marketplace within the extensions system.
›Redesigns the CLI welcome screen and settings dialog.
›Makes DiffRenderer respect the ui.showLineNumbers setting in diffs.
+2 moreshow less
›Adds runtime-aware fetch options for Anthropic and OpenAI providers.
›Uses dim colors for YOLO/auto-accept mode borders to visually distinguish that state.
Qwen Code v0.8.0-nightly adds /bug command in non-interactive mode, an extensions system with plugin UI, and a redesigned CLI welcome screen.
└──▷ GET THIS VERSION
$ git clone --branch v0.8.0-nightly.20260127.eef9c49e https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:$ git checkout v0.8.0-nightly.20260127.eef9c49e
›Adds /bug command availability in non-interactive (headless/scripted) mode.
›Adds detail subcommand for extensions and improves extension validation via the new extensions system (Feat/extension).
›Adds plugin selection UI for the Claude marketplace within the extensions feature.
›Adds runtime-aware fetch options for Anthropic and OpenAI providers.
›Redesigns the CLI welcome screen and settings dialog.
+2 moreshow less
›Makes the diff renderer respect the ui.showLineNumbers setting.
›Uses dim colors for YOLO/auto-accept mode borders in the CLI.
Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.
CrewAI 1.9.0 adds A2A task execution, Keycloak SSO, structured outputs, and native multimodal file handling.
└──▷ GET THIS VERSION
$ git clone --branch 1.9.0 https://github.com/crewAIInc/crewAI.git
# already have the repo? check out this version:$ git checkout 1.9.0
└──▷ USE IT
Enforce a typed JSON schema on LLM output so downstream code can safely parse structured results.
python
from pydantic import BaseModel
from crewai import Agent, Task, Crew
class ThreatReport(BaseModel):
severity: str
affected_systems: list[str]
recommendation: str
analyst = Agent(role="Threat Analyst", goal="Analyze security incidents", backstory="...", verbose=False)
task = Task(
description="Analyze the attached incident log and produce a threat report.",
expected_output="A structured threat report",
agent=analyst,
response_format=ThreatReport,
)
crew = Crew(agents=[analyst], tasks=[task])
result = crew.kickoff()
report: ThreatReport = result.pydantic
›Adds structured outputs and response_format support across providers for typed, schema-constrained LLM responses.
›Adds response_id field in streaming responses for tracking and correlating streamed completions.
›Adds event ordering and parent-child hierarchy to the event system for richer execution tracing.
›Adds Keycloak SSO provider support for enterprise authentication integration.
›Adds native multimodal file handling with OpenAI Responses API support.
+5 moreshow less
›Adds agent-to-agent (A2A) task execution utilities for orchestrating inter-agent workflows.
›Adds A2A server config and agent card generation for declaring and advertising agent capabilities.
›Adds additional A2A events with enriched event metadata for deeper observability into A2A interactions.
›Adds additional A2A transports for flexible agent-to-agent communication.
›Adds Galileo integration for LLM evaluation and observability.
$ git clone --branch v2.23.0 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:$ git checkout v2.23.0
└──▷ USE IT
Return an image from a tool and let an agent describe it using a multimodal provider.
python
from haystack.components.agents import Agent
from haystack.components.generators.chat import OpenAIResponsesChatGenerator
from haystack.tools import ComponentTool
from haystack.dataclasses import ChatMessage, ImageContent
from haystack import component
@component
class ImageRetriever:
@component.output_types(images=list[ImageContent])
def run(self):
return {"images": [ImageContent.from_file_path("/data/image.jpg")]}
image_tool = ComponentTool(
component=ImageRetriever(),
outputs_to_string={"raw_result": True, "source": "images"}
)
agent = Agent(
chat_generator=OpenAIResponsesChatGenerator(model="gpt-5-nano"),
system_prompt="Retrieve images and describe them.",
tools=[image_tool],
)
result = agent.run(messages=[ChatMessage.from_user("Retrieve the image and describe it.")])
print(result["last_message"].text)
Persist a pipeline snapshot to a database instead of disk by supplying a custom callback to Pipeline.run().
python
import json
def save_to_db(snapshot: dict) -> None:
db.snapshots.insert_one({"data": json.dumps(snapshot)})
result = pipeline.run(
data={"query": "What is RAG?"},
snapshot_callback=save_to_db
)
›Adds confirmation_strategies parameter to Agent, accepting per-tool BlockingConfirmationStrategy instances driven by AlwaysAskPolicy, AskOncePolicy, or NeverAskPolicy, with pluggable UIs (RichConsoleUI, SimpleConsoleUI) — enabling agents to pause for human approval before executing tools.
›Expands ToolCallResult.result to accept lists of TextContent and ImageContent objects, allowing tools to return images to providers such as OpenAIResponsesChatGenerator and AnthropicChatGenerator.
›Adds raw_result key support to the outputs_to_string parameter of Tool, ComponentTool, and PipelineTool for returning image results without string conversion.
›Adds outputs_to_string parameter to create_tool_from_function and the @tool decorator for additional customization of tool output formatting.
›Adds snapshot_callback parameter to Pipeline.run() to handle pipeline snapshots with a custom function (e.g., saving to a database or remote service) instead of the default file-saving behavior.
+4 moreshow less
›Adds HAYSTACK_PIPELINE_SNAPSHOT_SAVE_ENABLED environment variable to explicitly enable saving pipeline snapshots to disk (disabled by default); custom snapshot_callback functions are invoked regardless of this setting.
›component_from_dict() and component_to_dict() now automatically handle serialization of custom components containing DocumentStore, Secret, ComponentDevice, or any object with to_dict()/from_dict() — no manual override needed.
›OpenAIResponsesChatGenerator now supports flattened generation_kwargs keys reasoning_effort, reasoning_summary, and verbosity directly, without nesting them in sub-objects.
›Adds haystack.component.fully_qualified_type field to component tracing output, providing the full module path and class name (e.g., haystack.components.generators.chat.openai.OpenAIChatGenerator) alongside the existing haystack.component.type field.
└──▷ BREAKING ON UPGRADE
!Pipeline snapshot file saving is now disabled by default; set HAYSTACK_PIPELINE_SNAPSHOT_SAVE_ENABLED=true to restore the previous behavior.
!Pipeline snapshots created before Haystack 2.22.0 that contain pipeline_outputs without the serialization_schema and serialized_data structure are no longer supported — recreate snapshots with the current version before upgrading.
!The return_empty_on_no_match parameter has been fully removed from RegexTextExtractor; passing it during component initialization now raises an error (it is silently ignored during pipeline deserialization).
HolmesGPT 0.19.0 adds GitHub, Confluence, and Splunk MCP servers, image input support, and scheduled prompt investigations.
└──▷ GET THIS VERSION
$ git clone --branch 0.19.0 https://github.com/HolmesGPT/holmesgpt.git
# already have the repo? check out this version:$ git checkout 0.19.0
›Adds Splunk MCP server support, replacing any prior ad-hoc Splunk integration with an explicit MCP-based server.
›Adds GitHub MCP server, replacing the legacy GitHub toolset with an MCP-based implementation.
›Adds Confluence MCP server for Confluence-based investigations and workflows.
›Supports passing an auth token to MCP servers via HTTP header.
›Adds support for image input to the chat API, including a new images field in the chat API.
+3 moreshow less
›Adds daily and weekly scheduled prompt investigations in SAS.
›Redesigns the Bash toolset with prefix-based approvals for command execution control.
›Improves OOMKill detection capability.
└──▷ BREAKING ON UPGRADE
!The git toolset has been deprecated in favor of the Git MCP server; existing configurations relying on the git toolset will stop working and must be migrated to the MCP-based implementation.
Arize Phoenix v12.32.0 adds a tool invocation accuracy metric for evaluating agent tool-calling behavior.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v12.32.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v12.32.0
›Adds a tool invocation accuracy metric to measure how accurately agents invoke tools.