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.
Catch LM errors in a provider-neutral way instead of depending on provider-specific exception classes.
python
import dspy
try:
result = lm(messages=[{"role": "user", "content": "Hello"}])
except dspy.LMError as e:
print(f"LM call failed: {e}")
›Adds dspy.Flex, an experimental module that places program structure — predictors, control flow, DSPy primitives, and Python/LM balance — into the GEPA search space so the optimizer discovers decomposition instead of only tuning prompts; defaults to a single dspy.Predict baseline, or dspy.RLM when tools are supplied.
›Adds max_predictor_calls guard on Flex-generated programs to prevent runaway LM usage in optimizer-authored code, and supports a program_trace argument to metrics so programs can be scored on how a result was produced (e.g. penalizing excessive LM calls).
›Persists optimizer-discovered module_src as part of a Flex program's serialized state, so dump_state() / load_state() round-trips preserve the GEPA-authored implementation.
›Adds dspy.ReActV2, an experimental ReAct implementation built on native tool calling, using dspy.History, dspy.Tool, and dspy.ToolCalls (which can optionally store dspy.ToolCallResults) instead of custom next_tool_args / trajectory syntax.
›Adds parallel_tool_calls support to dspy.ReActV2, preserving each call/result pair by ID in both native and non-native mode.
+12 moreshow less
›Adds multi-turn native tool call support to dspy.ReActV2: prior tool calls and results are replayed as structured assistant and tool messages rather than being flattened into prompt text, enabling prompt-caching reuse of stable prefixes (observed up to 50% cost reduction in internal testing).
›Introduces a typed, provider-neutral LM contract — def forward(self, request: dspy.LMRequest) -> dspy.LMResponse — that custom LM authors can implement instead of guessing at OpenAI/LiteLLM-shaped inputs; opt in with dspy.context(experimental=True).
›Exports the typed LM API (dspy.LMRequest, dspy.LMResponse, dspy.LMToolCallPart) and supports typed direct calls through BaseLM.__call__.
›Adds dspy.LMError (and narrower DSPy subclasses) as a provider-neutral exception type, replacing the need to catch provider-specific exception classes.
›Adds BaseLM.dump_state() and BaseLM.load_state() for sanitized LM state serialization that excludes API keys, preserves legacy saved states, and requires explicit opt-in before importing trusted custom LM classes.
›Makes LiteLLM imports lazy, decoupling the core LM API from a specific provider bridge at import time.
›Makes optional-provider imports thread-safe.
›Adds explicit factory methods Image.from_path(), Image.from_url(), Audio.from_path(), Audio.from_url(), File.from_path() as the new required API for resource loading, replacing implicit I/O on construction.
›OpenAI Responses API path now emits Responses-native tool and tool_choice request shapes, with legacy Responses outputs using the same Chat-style tool-call representation as the Chat Completions path.
›Makes numpy an optional install extra (pip install 'dspy[numpy]'), reducing the base install footprint; affected features include embeddings, KNN/KNNFewShot, SIMBA, and other NumPy-backed optimizer or retrieval paths.
›Updates DspyGEPAResult to mirror gepa[dspy]==0.1.1 result shapes, making candidates and best_candidate return compiled DSPy modules; val_subscores, per_val_instance_best_candidates, best_outputs_valset, and highest_score_achieved_per_val_task all have updated types keyed by validation instance id.
›Replaces reflection_prompt_template in dspy.GEPAgepa_kwargs with an instruction_proposer parameter for custom proposal behavior (passing reflection_prompt_template now raises a clear ValueError).
└──▷ BREAKING ON UPGRADE
!Constructing dspy.Image, dspy.Audio, or dspy.File from a path or URL no longer reads or fetches the resource implicitly; use Image.from_path(), Image.from_url(), Audio.from_path(), Audio.from_url(), or File.from_path() instead.
!Image.from_url(..., download=...) and the download_images / verify options on encode_image() were removed; use an explicit factory or reference constructor instead.
!encode_image(path), encode_audio(path_or_url), and encode_file_to_dict(path) are replaced by Image.from_path(), Audio.from_path() / Audio.from_url(), and File.from_path() respectively.
!Image.from_file(), Image.from_PIL(), and Audio.from_file() are deprecated aliases scheduled for removal in 3.4; use Image.from_path(), Image(pil_image), and Audio.from_path() respectively.
!numpy is no longer installed with base dspy; code using embeddings, KNN/KNNFewShot, SIMBA, or other NumPy-backed paths will break unless pip install 'dspy[numpy]' is added.
!DspyGEPAResult.candidates now returns a list of compiled DSPy modules instead of instruction dictionaries, and DspyGEPAResult.best_candidate now returns a compiled DSPy module; code inspecting optimized_program.detailed_results must be updated.
!DspyGEPAResult fields val_subscores, per_val_instance_best_candidates, best_outputs_valset, and highest_score_achieved_per_val_task have new types keyed by validation instance id.
!GEPA 0.1.1 renamed default reflection template placeholders from <curr_instructions> / <inputs_outputs_feedback> to <curr_param> / <side_info>; custom templates using the old names must be updated.
!Passing reflection_prompt_template through gepa_kwargs in dspy.GEPA now raises a ValueError; use instruction_proposer instead.
!RLM.max_iterations is renamed to RLM.max_iters; code constructing dspy.RLM(max_iterations=...) will break.
Hermes v2026.8.3 adds conversational voice with barge-in, A2A v1.0, signed webhooks, grounded citations, a plugin SDK, and a CLI power-user wave.
└──▷ GET THIS VERSION
$ git clone --branch v2026.8.3 https://github.com/NousResearch/hermes-agent.git
# already have the repo? check out this version:$ git checkout v2026.8.3
└──▷ TRY IT
Quickly run a shell command from within a Hermes CLI session without consuming a model turn — useful for checking git status or running a test mid-conversation.
$ !git status
Bootstrap an AGENTS.md for a new project so Hermes understands the repo layout before starting autonomous work.
$ hermes /init
Migrate an existing Claude Code or Codex CLI configuration into Hermes in a single step.
$ hermes import-agent
›Adds !command shell-escape mode to run a shell command from the CLI instantly without spending a model turn.
›Adds /init CLI command to scan a project and generate or update an AGENTS.md file.
›Adds /diff CLI command to show staged, all, or session-level changes from any surface.
›Adds /context CLI command to break down exactly what is filling the current context window.
›Adds /focus CLI command for a reduced-output view with hidden-line recovery.
+19 moreshow less
›Adds hermes import-agent command to migrate a Claude Code or Codex CLI setup into Hermes in one command.
›Adds hermes approvals suggest command to mine approval history and produce allowlist proposals.
›Raises the default tool-calling iteration limit from 90 to 500, removing an artificial ceiling on long autonomous runs.
›Introduces the grounded-citations skill, which matches quotes against actual page text, links citations to exact evidence, and includes a fact-checking mode for any document or claim.
›Adds signed outbound webhooks that push HMAC-signed lifecycle events (session activity, turn completions, tool events) to any registered HTTP endpoint — no polling required.
›Adds a bundled Agent-to-Agent (A2A v1.0) plugin so Hermes can discover, talk to, and be driven by other A2A-compatible agents.
›Adds streaming conversational voice with clause-by-clause TTS, barge-in interruption, and busy-aware silence detection across the CLI, desktop, and gateway adapters.
›Adds on-device open-vocabulary wake-word detection with multi-profile voice routing and a 'stop' keyword to end voice chat hands-free.
›Extends voice support to WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, and Weixin — incoming voice notes are transcribed and auto-TTS replies are delivered platform-aware (opus, captions).
›Adds hermes tools category for STT configuration, GUI toggles, dashboard dropdowns, unified language resolution, and OpenAI gpt-transcribe support.
›Adds a unified spoken-text preprocessor that strips markdown, code, and URLs from speech across all TTS providers.
›Adds desktop artifacts: versioned cards with sandboxed live-preview in a right-rail viewer so generated HTML/apps run safely next to chat.
›Ships a plugin SDK with ctx.download for file delivery, floating pane placement, and multiple GUI windows; Kanban ships as the founding plugin.
›Adds a global-hotkey quick-entry window to capture input into any session from anywhere in the OS.
›Adds mid-turn redirect capability — type a correction while the agent is working and the active turn course-corrects while preserving work in flight and the original prompt.
›Makes compression thresholds configurable per-model and in absolute tokens, and adds a guaranteed N-user-message tail so recent conversation always survives pruning.
›Adds a consecutive-denial circuit breaker in smart approvals to stop a misbehaving approval loop.
›Adds a new approval gate for docker/podman daemon-redirect commands.
›Reduces hermes -w cold-start time from ~14 s to ~1.8 s and makes hermes update no-ops 2–6 s faster through lazy SDK loading and config-read optimizations.
GitHub Copilot CLI v1.0.78 adds /new-worktree and /permissions commands, ACP token usage exposure, and a new allowDevToolCaches sandbox setting.
└──▷ GET THIS VERSION
$ git clone --branch v1.0.78 https://github.com/github/copilot-cli.git
# already have the repo? check out this version:$ git checkout v1.0.78
└──▷ TRY IT
Start a parallel investigation in an isolated worktree without disturbing your current working tree or conversation.
$ /new-worktree
Switch approval modes on the fly mid-session instead of restarting the CLI.
$ /permissions
›Adds /new-worktree (experimental) command to create a new git worktree and start a fresh conversation inside it.
›Adds /permissions command to switch between approval modes mid-session.
›Adds allowDevToolCaches sandbox setting (on by default) to grant sandboxed builds access to toolchain caches, registries, and installs; set to false to opt out.
›Adds forceRemoteSettingsRefresh managed setting to require a fresh managed-settings fetch on every startup.
›Adds /settings showToolDurations to control display of per-tool-call elapsed time in timeline headers (on by default, live-ticking for calls of at least 5 seconds).
+14 moreshow less
›Exposes token usage in ACP prompt results and live usage_update notifications.
›ACP mode now supports closing sessions via the closeSession request.
›Managed settings now fall back to the persistent cache on any fetch failure (network error, non-success HTTP status, or malformed response), and fail open when no usable cached policy is available.
›Startup now warns about unknown top-level keys in user settings.json (e.g. misspelled settings) instead of silently ignoring them.
›Shell completion for --model now suggests auto and all supported model names.
›The sessionEnd hook for stdin-piped runs now fires once per completed agent turn with reasoncomplete (or error), matching -p behavior, instead of firing once at shutdown with user_exit.
›Switching sessions no longer restarts MCP servers or rebuilds hook state, preventing stale-hook errors in concurrent turns.
›Refreshes deferred MCP tools automatically after OAuth authentication.
›Sandbox bypass from a bypass prompt now applies only to the current session; new sessions start sandboxed again.
›When the sandbox blocks a shell command and bypass is allowed, CLI offers to re-run it outside the sandbox without re-querying the model.
›First-party plugins automatically update to their latest version at session start.
›Resuming long sessions is dramatically faster and memory-lighter: a 230 MB, 74k-event transcript now loads in under a second (vs. ~10 seconds previously) at roughly one-quarter peak memory, by reading history once in parallel at startup.
›Long session transcripts now render progressively to keep scrolling responsive.
›Copilot login now defaults to the browser flow for local desktop subprocesses without a TTY (including IDE integrations); remote and headless environments continue using device code.
└──▷ BREAKING ON UPGRADE
!The /allow-all auto safety-judge model is no longer user-configurable; the judge model is now selected automatically.
!Managed settings now fail open — starting without the unconfirmed server restriction — when no usable cached policy is available, reversing the prior fail-closed behavior.
Qwen Code v0.21.4 adds new review/drive commands, configurable memory agents, session workflow toggles, and a desktop Web Shell.
└──▷ GET THIS VERSION
$ git clone --branch v0.21.4 https://github.com/QwenLM/qwen-code.git
# already have the repo? check out this version:$ git checkout v0.21.4
└──▷ USE IT
Limit memory agents to a fixed number of turns to cap runaway agent loops in large repos.
yaml
# In your Qwen Code config
memory:
agentMaxTurns: 20
Enable Plan & Review mode and the Workflow DAG for session-level orchestration of multi-step tasks.
yaml
# In your Qwen Code config
experimental:
sessionWorkflow: true
Poll for review service readiness and verify facts without relying on fixed sleep delays in CI.
$ qwen review drive
›Adds experimental.sessionWorkflow setting to optionally enable Session Workflow features including Plan & Review mode and the Workflow DAG.
›Adds memory.agentMaxTurns setting to configure turn limits for all managed memory agents; set to 0 to disable the limit entirely.
›Adds qwen review drive command to poll for service readiness and verify completion facts instead of relying on fixed sleep delays.
›Adds qwen review mock-provider command to record OpenAI-compatible requests as JSONL for testing against a faithful outside-world simulation.
›Adds qwen review publish-assets command to host evidence images in a user-designated repository for embedding in PR review comments.
+9 moreshow less
›The /summary command now accepts an optional path argument to save project summaries to custom locations, automatically creating parent directories as needed.
›Sub-session concurrency caps are now configurable via the serve surface.
›Web Shell is now packaged as a release-ready desktop app with native lifecycle management, single-instance behavior, and automatic updates.
›Enables full Web Shell management for GitHub and GitLab channels, allowing users to configure tokens and policies without editing settings files.
›Adds a built-in Java/JVM performance checklist to the review tool that flags correctness traps and JVM-cost defects in Java files.
›Adds a repo-hygiene skill and weekly workflow to automatically scan for and propose fixes for documentation and code quality issues.
›PR review timeout now scales with change size, allowing up to 240 minutes for large pull requests exceeding 300 lines.
›Non-interactive CLI /goal commands now use the Goal v3 runtime for consistent state persistence and improved streaming behavior.
›The review verifier now treats unverified findings as low-confidence confirmations rather than rejections, instructing it to check cited sources first.
llama.cpp b10242 adds GPU-accelerated CUDA backend sampler for penalty handling including frequency, presence, and top-k penalties.
└──▷ GET THIS VERSION
$ git clone --branch b10242 https://github.com/ggml-org/llama.cpp.git
# already have the repo? check out this version:$ git checkout b10242
›Adds CUDA backend sampler for llama_sampler_penalties, offloading frequency, presence, and repeat penalty computation to GPU via the llama_sampler_backend infrastructure.
›Adds llama_n_ctx parameter to common_sampler_init so penalty_last_n defaults to the model context length when not explicitly set.
›Adds support for top-k penalties in backend sampling, with configurable positions in the sampler chain.
›Adds vocabulary-sized count tensor to replace the per-candidate penalty comparison matrix, improving scalability for large history windows.
›Adds validation that repeat penalty is finite and greater than 0, and preserves masked logits as -Inf to eliminate NaN generation.
└──▷ BREAKING ON UPGRADE
!The signature of common_sampler_init now requires an additional llama_n_ctx parameter; callers that do not pass it will fail to compile.
Phoenix v19.14.0 adds a built-in hallucination evaluator to the evals library.
└──▷ GET THIS VERSION
$ git clone --branch arize-phoenix-v19.14.0 https://github.com/Arize-ai/phoenix.git
# already have the repo? check out this version:$ git checkout arize-phoenix-v19.14.0
›Adds a hallucination evaluator to the evals module for detecting hallucinated content in LLM outputs.