Hermes Agent v0.12.0 (v2026.4.30)
Release Date: April 30, 2026
Since v0.11.0: 1,096 commits · 550 merged PRs · 1,270 files changed · 217,776 insertions · 213 community contributors (including co-authors)
The Curator release — Hermes Agent now maintains itself. An autonomous background Curator grades, prunes, and consolidates your skill library on its own schedule. The self-improvement loop that reviews what to save got a substantial upgrade. Four new inference providers, a 18th messaging platform, a 19th via Teams plugin, native Spotify + Google Meet integrations, ComfyUI and TouchDesigner-MCP moved from optional to bundled-by-default, and a ~57% cut to visible TUI cold start.
✨ Highlights
-
Autonomous Curator —
hermes curatorruns as a background agent on the gateway's cron ticker (7-day cycle default). It grades your skill library, consolidates related skills, prunes dead ones, and writes per-run reports tologs/curator/run.json+REPORT.md. Archived skills are classified consolidated-vs-pruned via model + heuristic. Defense-in-depth gates protect bundled/hub skills from mutation. Unified underauxiliary.curator— pick the curator's model inhermes model, manage it from the dashboard.hermes curator statusranks skills by usage (most-used / least-used). (#17277, #17307, #17941, #17868, #18033) -
Self-improvement loop — substantially upgraded — The background review fork (the core of Hermes' self-improvement: after each turn it decides what memories/skills to save or update) is now class-first (rubric-based rather than free-form), active-update biased (prefers the skill the agent just loaded), handles
references//templates/sub-files, and properly inherits the parent's live runtime (provider, model, credentials actually propagate). Restricted to memory + skills toolsets so it can't sprawl. Memory providers shut down cleanly. Prior-turn tool messages excluded from the summary so the fork sees a clean context. (#16026, #17213, #16099, #16569, #16204, #15057) -
Skill integrations — major expansion — ComfyUI v5 with official CLI + REST + hardware-gated local install, moved from optional to built-in by default (#17610, #17631, #17734). TouchDesigner-MCP bundled by default, expanded with GLSL, post-FX, audio, geometry, and 9 new reference docs (#16753, #16624, #16768 — @kshitijk4poor + @SHL0MS). Humanizer skill ports a text-cleaner that strips AI-isms (#16787). claude-design HTML artifact skill + design-md (Google DESIGN.md spec) + airtable salvage +
skill_manageedits inexternal_dirs+ direct-URL skill install +/reload-skillsslash command. (#16358, #14876, #16291, #17512, #16323, #17744) -
LM Studio — first-class provider — upgraded from a custom-endpoint alias to a full-blown native provider: dedicated auth,
hermes doctorchecks, reasoning transport, live/modelslisting. (Salvage of @kshitijk4poor's #17061.) (#17102) -
Four more new inference providers — GMI Cloud (first-class, salvage of #11955 — @isaachuangGMICLOUD), Azure AI Foundry with auto-detection, MiniMax OAuth with PKCE browser flow (salvage #15203), Tencent Tokenhub (salvage of #16860). (#16663, #15845, #17524, #16960)
-
Pluggable gateway platforms + Microsoft Teams — the gateway is now a plugin host. Drop-in messaging adapters live outside the core, and Microsoft Teams is the first plugin-shipped platform. (Salvage of #17664.) (#17751, #17828)
-
Tencent 元宝 (Yuanbao) — 18th messaging platform — native gateway adapter with text + media delivery. (#16298, #17424)
-
Spotify — native tools + bundled skill + wizard — 7 tools (play, search, queue, playlists, devices) behind PKCE OAuth, interactive setup wizard, bundled skill, surfacing in
hermes tools, cron usage documented. (#15121, #15130, #15154, #15180) -
Google Meet plugin — join calls, transcribe, speak, follow up. Realtime OpenAI transport + Node bot server, full pipeline bundled as a plugin. (#16364)
-
hermes -zone-shot mode +hermes update --check— non-interactivehermes -z <prompt>with--model/--provider/HERMES_INFERENCE_MODEL.hermes update --checkpreflight. Opt-in pre-update HERMES_HOME backup. (#15702, #15704, #15841, #16539, #16566) -
Models dashboard tab + in-browser model config — rich per-model analytics, switch main + auxiliary models from the dashboard. (#17745, #17802)
-
Remote model catalog manifest — OpenRouter + Nous Portal model catalogs are now pulled from a remote manifest so new models show up without a release. (#16033)
-
Native multimodal image routing — images now route based on the model's actual vision capability rather than provider defaults. (#16506)
-
Gateway media parity — native multi-image sending across Telegram, Discord, Slack, Mattermost, Email, and Signal; centralized audio routing with FLAC support + Telegram document fallback. (#17909, #17833)
-
TUI catches up to (and past) the classic CLI — LaTeX rendering (@austinpickett),
/reload.env hot-reload, pluggable busy-indicator styles (@OutThisLife, #13610), opt-in auto-resume of last session, expanded light-terminal auto-detection, session delete from/resumepicker withd, modified mouse-wheel line scroll, and a/mousetoggle that kills ConPTY's phantom mouse injection (@kevin-ho). (#17175, #17286, #17150, #17130, #17113, #17668, #17669, #15488) -
Observability + achievements plugins — bundled Langfuse observability plugin (salvage #16845) + bundled hermes-achievements plugin that scans full session history. (#16917, #17754)
-
TTS provider registry + Piper local TTS — pluggable
tts.providers.<name>registry; Piper ships as a native local TTS provider. (Closes #8508.) (#17843, #17885) -
Vercel Sandbox backend — Vercel sandboxes as an execute_code/terminal backend (@kshitijk4poor). (#17445)
-
Secret redaction off by default — default flipped to off. Prevents the long-standing patch-corruption incidents where fake secret-shaped substrings mangled tool outputs. Opt in via
redaction.enabled: truewhen you need it. (#16794) -
Cold-start performance — visible TUI cold start cut ~57% via lazy agent init (@OutThisLife), lazy imports of OpenAI / Anthropic / Firecrawl / account_usage, mtime-cached
load_config(), memoizedget_tool_definitions()with TTL-cachedcheck_fnresults, precompiled dangerous-command patterns. (#17190, #17046, #17041, #17098, #17206) -
Configurable prompt cache TTL —
prompt_caching.cache_ttl(5m default, 1h opt-in — cost savings for bursty sessions that keep cache warm). Salvage of #12659. (#15065)
🧠 Autonomous Curator & Self-Improvement Loop
Curator — autonomous skill maintenance
hermes curatoras a background agent — runs on the gateway's cron ticker, 7-day cycle by default, umbrella-first prompt, inherits parent config, unbounded iterations (#17277 — issue #7816)- Per-run reports —
logs/curator/run.json+REPORT.mdper cycle (#17307) - Consolidated vs pruned classification — archived skills split with model + heuristic (#17941)
hermes curator status— ranks skills by usage, shows most-used and least-used (#18033)- Unified under
auxiliary.curator— pick the model inhermes model, configure from the dashboard (#17868) - Documentation — dedicated curator feature page on the docs site (#17563)
- Fix: seed defaults on update, create
logs/curator/directory, defer fire import (#17927) - Fix: scan nested archive subdirs in
restore_skill(@0xDevNinja) (#17951) - Fix: use actual skill activity in curator status (@y0shua1ee) (#17953)
- Fix:
skill_managerefuses writes on pinned skills; pinning now blocks curator writes (#17562, #17578) - Fix:
bump_use()wired into skill invocation + preload + skill_view (salvage #17782) (#17932)
Self-improvement loop (background review fork)
- Class-first skill-review prompt — rubric-based grading rather than free-form "should this update" (#16026)
- Active-update bias — prefers updating skills the agent just loaded, handles
references/+templates/sub-files (#17213) - Fork inherits parent's live runtime — provider, model, credentials actually propagate now (#16099)
- Scoped toolsets — review fork restricted to memory + skills (no shell, no web) (#16569)
- Clean shutdown — background review memory providers exit properly (salvage #15289) (#16204)
- Clean context — prior-history tool messages excluded from review summary (salvage #14967) (#15057)
🧩 Skills Ecosystem
Skill integrations — newly bundled or promoted
- ComfyUI v5 — official CLI + REST + hardware-gated local install; moved from optional to built-in (#17610, #17631, #17734, #17612)
- TouchDesigner-MCP — bundled by default (#16753 — @kshitijk4poor), expanded with GLSL, post-FX, audio, geometry references (#16624), 9 new reference docs (#16768 — @SHL0MS)
- Humanizer — strips AI-isms from text (#16787)
- claude-design — HTML artifact skill with disambiguation from other design skills (#16358)
- design-md — Google's DESIGN.md spec skill (#14876)
- airtable — salvaged skill + skill API keys wired into
.env(#15838) (#16291) - pretext — creative browser demos with @chenglou/pretext (#17259)
- spike + sketch — throwaway experiments + HTML mockups, adapted from gsd-build (#17421)
Skills UX
- Install skills from a direct HTTP(S) URL —
hermes skills install <url>(#16323) /reload-skillsslash command (salvage #17670) (#17744)hermes skills listshows enabled/disabled status (#16129)skill_managerefuses writes on pinned skills (#17562)skill_manageedits external_dirs skills in place (salvage #9966) (#17512, #17289)- Fix: inline-shell rendering in
skill_view(#15376) - Fix: exclude
.archive/from skill index walk (salvage #17639) (#17931) - Fix: dedicated docs page per bundled + optional skill (#14929)
- Fix:
google-workspaceshared HERMES_HOME helper + ship deps as optional extra (#15405) - Fix: auto-wrap ASCII-art code blocks in generated skill pages (#16497)
- Point agent at
hermes-agentskill + docs site for Hermes questions (#16535)
🏗️ Core Agent & Architecture
Provider & Model Support
New providers
- GMI Cloud — first-class API-key provider on par with Arcee/Kilocode/Xiaomi (salvage of #11955 — @isaachuangGMICLOUD) (#16663)
- Azure AI Foundry — auto-detection, full wiring (#15845)
- LM Studio — upgraded from custom-endpoint alias to first-class provider: dedicated auth, doctor checks, reasoning transport, live
/models(salvage of #17061 — @kshitijk4poor) (#17102) - MiniMax OAuth — PKCE browser flow with full OAuth integration (salvage #15203) (#17524)
- Tencent Tokenhub — new provider (salvage of #16860) (#16960)
Model catalog
- Remote model catalog manifest — OpenRouter + Nous Portal catalogs pulled from remote manifest so new models show up without a release (#16033)
openai/gpt-5.5andgpt-5.5-proadded to OpenRouter + Nous Portal (#15343)deepseek-v4-proanddeepseek-v4-flashadded (#14934)qwen3.6-plusadded to Alibaba-supported models (#16896)- Gemini free-tier keys blocked at setup with 429 guidance surfacing (#15100)
Model configuration
- Configurable
prompt_caching.cache_ttl— 5m default, 1h opt-in (salvage #12659) (#15065) /fastwhitelist broadened to all OpenAI + Anthropic models (#16883)auxiliary.extra_body.reasoningtranslates into Codex Responses API (#17004)hermes fallbackcommand for managing fallback providers (#16052)
Agent Loop & Conversation
- Native multimodal image routing — based on model vision capability, not provider defaults (#16506)
- Delegate
child_timeout_secondsdefault bumped to 600s (#14809) - Diagnostic dump when subagent times out with 0 API calls (#15105)
- Gateway busts cached agent on compression/context_length config edits (#17008)
- Opt-in runtime-metadata footer on final replies (#17026)
/reload-mcpawareness — rebuild cached agents + prompt-cache cost confirmation (#17729)- Fix: repair CamelCase +
_toolsuffix tool-call emissions (#15124) - Fix: retry on
json.JSONDecodeErrorinstead of treating as local validation error (#15107) - Fix: handle unescaped control chars in
tool_call.arguments(#15356) - Fix: ordering fix in
_copy_reasoning_content_for_api— cross-provider reasoning isolation (@Zjianru) (#15749) - Fix: inject empty
reasoning_contentfor DeepSeek/Kimitool_callsunconditionally (@Zjianru) (#15762) - Fix: persist streamed
reasoning_contenton assistant turns (#16844) (#16892) - Fix: cancel coroutine on timeout so worker thread exits; full traceback on tool failure (#17428)
- Fix: isolate
get_tool_definitionsquiet_mode cache + dedup LCM injection (#17335) (#17889) - Fix: serialize concurrent
hermes_toolsRPC calls fromexecute_code(#17770) (#17894, #17902) - Fix: rename
[SYSTEM:→[IMPORTANT:in all user-injected markers (dodges Azure content filter) (#16114)
Compression
- Retry summary on main model for unknown errors before giving up (#16774)
- Notify users when configured aux model fails even if main-model fallback recovers (#16775)
/compresswrapped in_busy_commandto block input during compression (#15388)- Fix: reserve system + tools headroom when aux binds threshold (#15631)
- Fix: use text-char sum for multimodal token estimation in
_find_tail_cut_by_tokens(#16369)
Session, Memory & State
- Trigram FTS5 index for CJK search, replace LIKE fallback (@alt-glitch) (#16651)
- Index
tool_name+tool_callsin FTS5, with repair + migration (salvages #16866) (#16914) - Checkpoints: auto-prune orphan and stale shadow repos at startup (#16303)
- Memory providers notified on mid-process session_id rotation (#6672) (#17409)
- Fix: quote underscored terms in FTS5 query sanitization (#16915)
- Fix: resolve viking_read 500/412 on file URIs + pseudo-summary URIs (salvage #5886) (#17869)
- Fix: skip external-provider sync on interrupted turns (#15395)
- Fix: close embedded Hindsight async client cleanly (salvage #14605) (#16209)
- Fix: pass session transcript to
shutdown_memory_provideron gateway + CLI (#15165) (#16571) - Fix: write-origin metadata seam (#15346)
- Fix: preserve symlinks during atomic file writes (#16980)
- Refactor: remove
flush_memoriesentirely (#15696)
Auxiliary models
- Fix: surface auxiliary failures in UI (previously silent) (#15324)
- Fix: surface title-gen auxiliary failures instead of silently dropping (#16371)
- Fix: generalize unsupported-parameter detector and harden
max_tokensretry (#15633)
📱 Messaging Platforms (Gateway)
New Platforms
- Microsoft Teams (19th platform) — as a plugin, + xdist collision guard (#17828)
- Yuanbao (Tencent 元宝, 18th platform) — native adapter with text + media delivery (#16298, #17424, #16880)
Pluggable Gateway Platforms
- Drop-in messaging adapters — the gateway is now a plugin host for platforms (salvage of #17664) (#17751)
Telegram
- Chat allowlists for groups and forums (@web3blind) (#15027)
- Send fresh finals for stale preview streams (port openclaw#72038) (#16261)
- Render markdown tables as row-group bullets + prompt hint (#16997)
- Document fallback in centralized audio routing (#17833)
- Native multi-image sending (#17909)
Discord
- Opt-in toolsets + ID injection + tool split + Feishu wiring (salvage #15457, #15458) (#15610, #15613)
- Fix: coerce
limitparameter to int beforemin()call (#16319)
Slack
- Register every gateway command as a native slash (Discord/Telegram parity) (#16164)
strict_mentionconfig — prevents thread auto-engagement (#16193)channel_skill_bindings— bind specific skills to specific Slack channels (#16283)
Signal
- Native formatting — markdown → bodyRanges, reply quotes, reactions (#17417)
- Native multi-image sending (#17909)
Feishu / Mattermost / Email / Signal
- All participate in native multi-image sending (#17909)
Gateway Core
- Centralized audio routing + FLAC support + Telegram doc fallback (#17833)
- Native multi-image sending across Telegram, Discord, Slack, Mattermost, Email, Signal (#17909)
- Make hygiene hard message limit configurable (#17000)
- Opt-in runtime-metadata footer on final replies (#17026)
pre_gateway_dispatchhook — plugins can intercept before dispatch (#15050)pre_approval_request/post_approval_responsehooks (#16776)- Fix: timeouts — guard
load_config()call against runtime exceptions (#16318) - Fix: support passing handler tools via registry (#15613)
🔧 Tool System
Plugin-first architecture
- Pluggable gateway platforms — platforms can ship as plugins (#17751)
- Microsoft Teams as first plugin-shipped platform (#17828)
pre_gateway_dispatchhook (#15050)pre_approval_request+post_approval_responsehooks (#16776)duration_msonpost_tool_call(inspired by Claude Code 2.1.119) (#15429)- Bundled plugins: Spotify (#15174), Google Meet (#16364), Langfuse observability (#16917), hermes-achievements (#17754)
- Page-scoped plugin slots for built-in dashboard pages (#15658)
- Declarative plugin installation for NixOS module (@alt-glitch) (#15953)
Browser
- CDP supervisor — dialog detection + response + cross-origin iframe eval (#14540)
- Auto-spawn local Chromium for LAN/localhost URLs when cloud provider is configured (#16136)
Execute code / Terminal
- Vercel Sandbox backend for
execute_code/ terminal (@kshitijk4poor) (#17445) - Collapse subagent
task_ids to shared container (#16177) - Docker: run container as host user to avoid root-owned bind mounts (@benbarclay) (#17305)
- Fix: safely quote
~/subpaths in wrappedcdcommands (#15394) - Fix: close file descriptor in
LocalEnvironment._update_cwd(#17300) - Fix: SSH — prevent tar from overwriting remote home dir permissions (#17898, #17867)
Image generation
- See Provider section for updates; no new image providers this window.
TTS / Voice
- Pluggable TTS provider registry under
tts.providers.<name>(#17843) - Piper as native local TTS provider (closes #8508) (#17885)
- Voice mode CLI parity in the TUI — VAD loop + TTS + crash forensics (#14810)
- Fix: vision — use HERMES_HOME-based cache dir instead of cwd (#17719)
Cron
- Honor
hermes toolsconfig for the cron platform (#14798) - Per-job
workdir— project-aware cron runs (#15110) context_fromfield — chain cron job outputs (#15606)- Fix: promote
croniterto a core dependency (#17577)
Web search
- Expose
limitforweb_search(#16934)
Maps
- Fix: include seconds in timezone UTC offset output (#16300)
Approvals
- Hardline blocklist for unrecoverable commands (#15878)
- Perf: precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS (#17206)
ACP
- Advertise and forward image prompts (#18030)
API Server
- POST
/v1/runs/{run_id}/stop(salvage of #15656) (#15842) - Expose run status for external UIs (#17085) (#17458)
Nix
- Declarative plugin installation for NixOS module (@alt-glitch) (#15953)
- Fix: use
--rebuildin fix-lockfiles to bypass cached FOD store paths (#15444) - Fix:
extraPackagesnow actually works via per-user profile (#17047) - Fix: refresh web/ npm-deps hash to unblock main builds (#17174)
- Fix: replace magic-nix-cache with Cachix (#17928)
🖥️ TUI
New features
- LaTeX rendering (@austinpickett) (#17175)
/reload.env hot-reload — ported from the classic CLI (#17286)- Pluggable busy-indicator styles (@OutThisLife, #13610) (#17150)
- Opt-in auto-resume of the most recent session (@OutThisLife) (#17130)
- Expanded light-terminal auto-detection —
HERMES_TUI_THEME+ background hex (@OutThisLife) (#17113) - Delete sessions from
/resumepicker withd(@OutThisLife) (#17668) - Line-by-line scroll on modified mouse wheel (@OutThisLife) (#17669)
- Delete queued message while editing with ctrl-x / cancel with esc (@OutThisLife) (#16707)
- Per-section visibility for the details accordion (@OutThisLife) (#14968)
- Voice mode CLI parity — VAD loop + TTS + crash forensics (#14810)
- Contextual first-touch hints ported to TUI —
/busy,/verbose(#16054) - Mini help menu on
?in the input field (@ethernet8023) (#18043)
Fixes
- Fix: proactive mouse disable on ConPTY +
/mousetoggle command (@kevin-ho, WSL2 ghost-mouse fix) (#15488) - Fix: restore skills search RPC (#15870)
- Perf: cache text measurements across yoga flex re-passes (#14818)
- Perf: stabilize long-session scrolling (#15926)
- Perf: lazily seed virtual history heights (#16523)
- Perf: cut visible cold start ~57% with lazy agent init (#17190)
🖱️ CLI & User Experience
New commands
hermes -z <prompt>— non-interactive one-shot mode (#15702)hermes -zwith--model/--provider/HERMES_INFERENCE_MODEL(#15704)hermes update --checkpreflight flag (#15841)hermes fallbackcommand for managing fallback providers (#16052)/busyslash command for busy input mode (#15382)/busyinput mode 'steer' as a third option (#16279)/btwas alias for/background(#16053)/reload-skillsslash command (salvage #17670) (#17744)- Surface
/queue,/bg,/steerin agent-running placeholder (#16118)
Setup / onboarding
- Auto-reconfigure on existing installs (#15879)
- Contextual first-touch hints for
/busyand/verbose(#16046) - Cost-saving tips from the April 30 tip-of-the-day (#17841)
- Hyperlink startup banner title to the latest GitHub Release (#14945)
Update / backup
- Snapshot pairing data before
git pull(#16383) - Auto-backup HERMES_HOME before
hermes update(opt-in, off by default) (#16539, #16566) - Exclude
checkpoints/from backups (#16572) - Exclude SQLite WAL/SHM/journal sidecars from backups (#16576)
- Installer FHS layout for root installs on Linux (#15608)
- Fix: kill stale dashboards instead of warning (#17832)
- Fix: show correct update status on nix-built hermes (#17550)
Slash-command housekeeping
- Refactor: drop
/provider,/planhandler, and clean up slash registry (#15047) - Refactor: drop
persist_sessionplumbing + fix broken/btwmid-turn bypass (#16075)
OpenClaw migration (for folks coming from OpenClaw)
- Hardened OpenClaw import — plan-first apply, redaction, pre-migration backup (#16911)
- Fix: case-preserving brand rewrite + one-time
~/.openclawresidue banner (#16327) - Fix: resolve
openclawworkspace files fromagents.defaults.workspace(#16879) - Fix: resolve model aliases against real OpenClaw catalog schema (salvage #16778) (#16977)
📊 Web Dashboard
- Models tab — rich per-model analytics (#17745)
- Configure main + auxiliary models from the Models page (#17802)
- Dashboard Chat tab — xterm.js + JSON-RPC sidecar (supersedes #12710 + #13379, @OutThisLife) (#14890)
- Dashboard layout refresh (@austinpickett) (#14899)
--stopand--statusflags on the dashboard CLI (#17840)- Page-scoped plugin slots for built-in pages (#15658)
- Fix: replace all buttons for design system buttons (#17007)
⚡ Performance
- TUI visible cold start cut ~57% via lazy agent init (#17190)
- Lazy-import OpenAI, Anthropic, Firecrawl, account_usage (#17046)
- mtime-cache
load_config()andread_raw_config()(#17041) - Memoize
get_tool_definitions()+ TTL-cachecheck_fnresults (#17098) - Precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS (#17206)
- Cache Ink text measurements across yoga flex re-passes (#14818)
- Stabilize long-session scrolling (#15926)
- Lazily seed virtual history heights (#16523)
🔒 Security & Reliability
- Secret redaction off by default — stops corrupting patches / API payloads with fake-key substitutions. Opt in via
redaction.enabled: true(#16794) [SYSTEM:→[IMPORTANT:in all user-injected markers (Azure content filter dodge) (#16114)- Hardline blocklist for unrecoverable commands (#15878)
- Canonical
mask_secrethelper; fix status.py DIM drift (#17207) - Sweep expired paste.rs uploads on a real timer (#16431)
- Preserve symlinks during atomic file writes (#16980)
- Probe
/dev/ttyby opening it, not bare existence (#17024)
🐛 Notable Bug Fixes
This window includes 360 fix: PRs. Selected highlights from across the stack:
- Background review fork inherits parent's live runtime — provider/model/creds now propagate correctly (#16099)
- Hindsight configurable
HINDSIGHT_TIMEOUTenv var (#15077) - Tools: normalize numeric entries + clear stale
no_mcpin_save_platform_tools(#15607) - MCP: rewrite
definitionsrefs to$defsin input schemas — closes provider-side 400s - Azure content filter compatibility — renamed
[SYSTEM:markers so Azure's content filter stops flagging them (#16114) - Vision cache uses HERMES_HOME instead of cwd (#17719)
- FTS5 search — tool_name + tool_calls indexing with repair + migration (#16914)
- Streaming reasoning persists on assistant turns (#16892)
- execute_code concurrent RPC serialization (#17770) (#17894, #17902)
- Background reviewer scoped to memory + skills toolsets — no more accidental web/shell escapes (#16569)
- Compression recovery — retry on main before giving up; notify user when aux fails (#16774, #16775)
croniterpromoted to a core dependency (#17577)- Discord tool
limitparameter coerced to int beforemin()call (#16319) - Yuanbao messaging platform entrance fix (#16880)
- ACP advertise and forward image prompts (#18030)
- DeepSeek / Kimi reasoning content isolation across cross-provider histories (@Zjianru) (#15749, #15762)
- Preserve reasoning_content replay on DeepSeek v4 + Kimi/Moonshot thinking (#18045)
The vast majority of the 360 fixes landed in the streaming/compression/tool-calling paths across all providers — DeepSeek, Kimi, Moonshot, GLM, Qwen, MiniMax, Gemini, Anthropic, OpenAI — alongside TUI polish (resize, scroll, sticky-prompt) and gateway platform-specific edge cases.
🧪 Testing & CI
- Hermetic test parity (
scripts/run_tests.sh) held across this window - Microsoft Teams xdist collision guard — prevents worker collisions when Teams platform tests run in parallel (#17828)
- Chore: remove unused imports and dead locals (ruff F401, F841) (#17010)
📚 Documentation
- Curator feature page added to docs site (#17563)
- Document pin also blocking
skill_managewrites (#17578) - Direct-URL skill install documented across features, reference, guide, and
hermes-agentskill (#16355) - Hooks tutorial — build a BOOT.md startup checklist (replaces the removed built-in hook) (#17202)
- ComfyUI docs: ask local vs cloud FIRST before hardware check (#17612)
- Obliteratus skill: link YouTube video guide in SKILL.md (#15808)
- Per-skill docs pages generated for bundled + optional skills; ASCII art code blocks auto-wrapped (#14929, #16497)
⚖️ Removed / Reverted
- Kanban multi-profile collaboration board — landed in #16081, reverted in (#16098) while the design is reworked
- computer-use cua-driver — 3 preparatory PRs landed then were reverted in (#16927)
- BOOT.md built-in hook removed (#17093); the hooks tutorial (#17202) shows how to build the same workflow yourself with a shell hook
/provider+/planslash commands dropped (#15047)flush_memoriesremoved entirely (#15696)
👥 Contributors
Core
- @teknium1 (Teknium)
Top Community Contributors (by merged PR count since v0.11.0)
- @OutThisLife (Brooklyn) — 52 PRs · TUI — light-terminal detection + pluggable busy styles + auto-resume + session-delete from /resume + mouse-wheel scrolling + xterm.js dashboard Chat tab + cold-start cut + accordion polish
- @kshitijk4poor — 12 PRs · LM Studio first-class provider (salvage), Vercel Sandbox backend, GMI Cloud salvage, bundled-by-default touchdesigner-mcp, many tool-call / reasoning fixes
- @helix4u — 10 PRs · MCP schema robustness, assorted stability fixes
- @alt-glitch — 8 PRs · trigram FTS5 CJK search, declarative Nix plugin install, matrix/feishu hints and fixes
- @ethernet8023 — 4 PRs
- @austinpickett — 4 PRs · LaTeX rendering in TUI, dashboard layout refresh
- @benbarclay — 3 PRs · Docker run-as-host-user so bind mounts don't get root-owned
- @vominh1919 — 2 PRs
- @stephenschoettler — 2 PRs
- @kevin-ho — ConPTY mouse-injection fix (#15488)
- @Zjianru — cross-provider reasoning_content isolation + DeepSeek/Kimi empty-reasoning injection (#15749, #15762)
- @web3blind — Telegram chat allowlists for groups and forums (#15027)
- @SHL0MS — 9 new TouchDesigner-MCP reference docs (#16768)
- @0xDevNinja — curator
restore_skillnested-archive fix (#17951) - @y0shua1ee — curator
useactivity fix (#17953)
Also contributing
Salvaged or co-authored work from @isaachuangGMICLOUD (GMI Cloud), earlier upstream PRs from the original author of each salvage chain, and a long tail of one-shot fixes, documentation nudges, and skill contributions from the community.
All Contributors (alphabetical, excluding @teknium1)
@0xbyt4, @0xharryriddle, @0xDevNinja, @0z1-ghb, @5park1e, @A-FdL-Prog, @aj-nt, @akhater, @alblez, @alexg0bot,
@alexzhu0, @AllardQuek, @alt-glitch, @amanning3390, @amanuel2, @AndreKurait, @andrewhosf, @Andy283, @andyylin,
@angel12, @AntAISecurityLab, @ash, @austinpickett, @badgerbees, @BadTechBandit, @Bartok9, @beenherebefore,
@beesrsj2500, @BeliefanX, @benbarclay, @benjaminsehl, @BlackishGreen33, @bloodcarter, @BlueBirdBack,
@briandevans, @brooklynnicholson, @bsgdigital, @buray, @bwjoke, @camaragon, @cdanis, @cgarwood82,
@charles-brooks, @chen1749144759, @chengoak, @ching-kaching, @Contentment003111, @crayfish-ai, @CruxExperts,
@cyclingwithelephants, @dandaka, @danklynn, @ddupont808, @dhabibi, @difujia, @dimitrovi, @dlkakbs,
@dontcallmejames, @EKKOLearnAI, @emozilla, @ericnicolaides, @Erosika, @ethernet8023, @exiao, @Feranmi10,
@flobo3, @foxion37, @georgeglessner, @georgex8001, @ghostmfr, @H-Ali13381, @HangGlidersRule, @harryplusplus,
@haru398801, @heathley, @hejuntt1014, @hekaru-agent, @helix4u, @Heltman, @HenkDz, @heyitsaamir, @hharry11,
@hhhonzik, @hhuang91, @HiddenPuppy, @htsh, @iamagenius00, @in-liberty420, @innocarpe, @irispillars, @iRonin,
@isaachuangGMICLOUD, @Ito-69, @j3ffffff, @jackjin1997, @jakubkrcmar, @Jason2031, @JayGwod, @jerome-benoit,
@johnncenae, @Kailigithub, @keiravoss94, @kevin-ho, @knockyai, @konsisumer, @kshitijk4poor, @kunlabs, @l0hde,
@Leihb, @leoneparise, @LeonSGP43, @liizfq, @liuhao1024, @loongzhao, @lsdsjy, @luyao618, @ma-pony, @Magaav,
@MagicRay1217, @math0r-be, @MattMaximo, @maxims-oss, @MaxyMoos, @maymuneth, @mcndjxlefnd, @memosr,
@MestreY0d4-Uninter, @mewwts, @Mirac1eSky, @MorAlekss, @mrhwick, @mrunmayee17, @mssteuer, @Nanako0129,
@nazirulhafiy, @Nerijusas, @Nicecsh, @nicoloboschi, @nightq, @ningfangbin, @octo-patch, @Octopus,
@OutThisLife, @Paperclip, @pein892, @perlowja, @prasadus92, @qike-ms, @qiyin-code, @Readon, @ReginaldasR,
@revaraver, @rfilgueiras, @rmoen, @romanornr, @rugvedS07, @rylena, @samrusani, @Sanjays2402, @sasha-id,
@Satoshi-agi, @scheidti, @scotttrinh, @season179, @SeeYangZhi, @sgaofen, @shamork, @shannonsands, @SHL0MS,
@simbam99, @Societus, @socrates1024, @Sonoyunchu, @sprmn24, @stephenschoettler, @tangyuanjc, @TechPrototyper,
@tekgnosis-net, @ThomassJonax, @tmimmanuel, @tochukwuada, @Tosko4, @Tranquil-Flow, @twozle, @txbxxx,
@UgwujaGeorge, @Versun, @vlwkaos, @voidborne-d, @vominh1919, @Wang-tianhao, @Wangshengyang2004, @web3blind,
@westers, @Wysie, @xandersbell, @xiahu88988, @XieNBi, @xinbenlv, @xnbi, @y0shua1ee, @yatesjalex, @yes999zc,
@yeyitech, @Yoimex, @YueLich, @Yukipukii1, @zhiyanliu, @zicochaos, @Zjianru, @zkl2333, @zons-zhaozhy,
@ztexydt-cqh.
Also: @Siddharth Balyan, @YuShu.
Full Changelog: v2026.4.23...v2026.4.30