24b086b816e06a0741673aa0754caba186638272 fix(local-runtime): resolve context length from /props — unloaded models fell to the 131K qwen catch-all f373a2c5a6b9108ff847fff525e856cb011cd5c7 fix(local-runtime): abandoned requests must not keep the GPU decoding 02c7ae956e42891d5e337a921b45de0a6067146d fix(desktop): route session list REST through the active profile 90ee4460cb45f46fdbcb3288beebf74c6b150e00 fix(desktop): translate sidebar recents_profile through SSH aliases cbd8de8ad64530be01efea23b7764d5c37c634ed fix(gateway): bind session cwd for the live system-prompt rebuild d563c52980c1a7cb80401f33061acec6d6ad0ef0 Merge remote-tracking branch 'origin/main' into bb/pen eca8cb64eda53b823b563b6a1025524b1e4bad31 fix(desktop): route session list REST through the active profile ec4e1f812ab6f144def4c501d65795151909b998 fix(desktop): translate sidebar recents_profile through SSH aliases 1b0be9f4fbed9eef393d06e7427472c26426c1b1 feat(pen): experimental web-editor embed mode (HERMES_PEN_WEB) 4e01a2a2ce37fcaf525dda616249647b8a8df49d fix(desktop): workflows — keep wires under the cards they cross 7baffd04d31b841c1a6255fb7e9cf7fe93ff4800 feat(desktop): workflows runs vertically, plans with the model, and holds more than one daa14fb8918ce8034525e8b2502af01e4e2ac331 feat(desktop): a shared UI vocabulary for plugin pages 4413e1ee05dbce42d676f7801bb4c239070ffd67 chore: map contributor email for attribution gate 83ae352fca05ca34edb04b37db5a7ac9ed293acf fix(cli): reconcile scoped-closure and reduced-lockfile freshness checks 482665fd1a8580059ed49252408344c9cff84e4d fix(cli): don't re-run npm install on every TUI launch with npm>=10 reduced hidden lockfile 2141e1cd0dfd4b047d4972c4737fdc0736ec2039 fix(tui): prevent spurious npm install on every launch 4174a9657eead378cb0c165944b87ff2cf143fc6 fix(cli): scope TUI npm-install closure to all selected workspaces 1418b6480a1544f5086d4900e22f3f4b88606045 fix(cli): scope TUI npm-install check to the ui-tui workspace closure 1bbb6e5bce56e721ab685af4cd87df21bbff4d35 docs(skill): troubleshoot stale web_extract pages — cache carveouts + cache_exempt_hosts ba9fc55e165bd640a3026f069705395e1ef3ad3a feat(web): cache_exempt_hosts — always-live fetches for staging/tunnel sites f0381ee4ae05e99de15008dd162513aceeec7884 fix(web): never cache local development URLs in the extract cache 8adef09be8665ded007ef13800c2d67a55e5ab74 fix(web): extract cache serves only after policy + provider gates; rescue and format/provider isolation 04603fc0403184dc1cd66e8a3261db5be9827882 feat(web): TTL result caching for web_search + web_extract 45b35f962f2f904616ae2300d67f14b7dc8cb5ba fix(mcp): tool-selection UIs stay in exclude mode instead of freezing include lists 965689d13a9650b44e61ac239c62d98400697589 fix(mcp-catalog): failed probe keeps the prior tool filter instead of wiping it 01177ed719e845fc505fe992a28c8980a017e237 fix(mcp-catalog): don't announce a probe on the exclude-mode install path fb1ec36a4b86adb407cb3b49d17f21c41540b370 fix(mcp): treat tools.include: [] as an explicit empty whitelist 164e25a936f5743482eb5cf5ffdb74758700c39c test(mcp-catalog): actually exercise the exfil-shaped-manifest rejection 054cba271e2e348bcda37bcff48476944e3ce00f fix(mcp): review findings — reinstall no longer clobbers user exclude lists + 4 curation gaps 88369af1c7219b49257a994a0b933f48c8fa3ef8 refine(mcp): debloat the catalog batch — vendor-doc tool audit applied to every entry 9a37325717d7158d2e69f0fd69158e306e05787c feat(mcp): add 18 more live-verified remote MCPs from the final sweep 99f5aec733373ded354e9d3ea0ff8658d8998e1b feat(mcp): add Better Stack and Railway remote MCPs (OAuth+DCR, live-verified) 3e570dd42d056ea174948f5ed4185798727192bb refine(mcp): drop github, perplexity, telnyx, exa, parallel-search from the catalog batch 753f362a237382b435e5d1e5d25b03ac72c2ac52 feat(mcp): add 34 official vendor-hosted remote MCP servers to the catalog 3a1a3a1c8fb25b163e688fdd4f4ac2bb757af1fa feat(mcp): curated exclude list for cloudflare + glob tool filters + default_excluded manifests 53015d3eb5348d5843ace1550278da565ceea43f feat(mcp): pin ?codemode=false so tool_search sees the full endpoint surface 90fd9a838b28121c2da97065e8be8f8c3200615f feat(mcp): add Cloudflare's official API MCP server to the catalog bd11beaec953001aaa7bb4dc183fcfe6f81b7761 docs(skill): troubleshoot stale web_extract pages — cache carveouts + cache_exempt_hosts d736f5d53f1d33fabad5a17cb070eb138b618fb8 fix(docker): digest-suffix shared-container identity labels so distinct keys never collide 82b32f32ef6a6646a160f79c1fdf6358d271b70a feat(terminal): wire shared-container key into profile-scoped resolver and MEDIA delivery f5200a4c10d4a0c563cb1693b9f616ba79889c31 fix(config): declare shared Docker container key 7a67bd07a7000a4fe0c3581f91ab5b5f4815c033 feat(docker): support shared container identities 1ee524f77d1c84a6ee1ae58341e633d8a9b6ef1d fix(memory): bind the checkpoint gate to post-turn micro-compaction too 9e551d293133791ae3b3e32dde19488dc15390c1 refactor(memory): renumber checkpoint API — v1 is the implicit historical contract, v2 opts into fail-closed checkpoints 8cc379b5282d94c61a00df1302f6974e10a2d6e4 fix(memory): bind the checkpoint gate to every compaction authority 70d0b1fffb45badc808183ebfafba3348afacd5d fix(memory): review follow-ups for the pre-compress checkpoint contract 3c31c448801a191d87c22e2ae5369fe8c2209038 docs(memory): document the pre-compress checkpoint contract 1104ffe0b912868f0db31635bf46403ff3630d89 feat(memory): opt-in fail-closed pre-compress checkpoint contract (API v1) 830519a3640d224e1d854a939900f2be0cb20238 fix(memory): bind the checkpoint gate to post-turn micro-compaction too 1a6f614d25acd75c6852c096a6aec666616b9c6d fix(docker): digest-suffix shared-container identity labels so distinct keys never collide 60ae389648f16f1ee0603f9574eba4e360c51584 feat(web): cache_exempt_hosts — always-live fetches for staging/tunnel sites 6105c414850a448bf505496cbe64f953e50b7ea3 refactor(memory): renumber checkpoint API — v1 is the implicit historical contract, v2 opts into fail-closed checkpoints e3da34e790a810dd0e13dc6172769589bfa84b3e fix(web): never cache local development URLs in the extract cache b51a4019468a8f8951998e6c4db2759b5e5a57ce fix(memory): bind the checkpoint gate to every compaction authority e891e1424ca56225656e5d2d96a98c064750a13e fix(memory): review follow-ups for the pre-compress checkpoint contract ca73cdeff8542805e50625f8ddb62c3c12950cea docs(memory): document the pre-compress checkpoint contract 55a32ab0d67215f6c4f17e206f807f2e23b25fff feat(memory): opt-in fail-closed pre-compress checkpoint contract (API v1) 52b744654d3a834f521e61491fba6812485adecf fix(web): extract cache serves only after policy + provider gates; rescue and format/provider isolation 1ad7e18992e147c46ef5f5310f186962fc767481 fix(mcp): review findings — reinstall no longer clobbers user exclude lists + 4 curation gaps b05ad2d357e635a2c55c2d28cb69fbdc84b5c394 feat(terminal): wire shared-container key into profile-scoped resolver and MEDIA delivery bf71064a014367e51104c8ea86d00dd1178c4dc1 fix(config): declare shared Docker container key d602105ae6366585d7733caa25bac733fe376824 feat(docker): support shared container identities 76e306c45843607e6dc135d23c13d3654417ebd5 refactor(tools): remove expired BFL FLUX 3 promo core tools (migration v39); FLUX 3 stays via video_gen/FAL for subscribers (#94599) 3380278e560994cccc5ab5fc3feb67e0eb3f7d81 feat(web): TTL result caching for web_search + web_extract 59b0b3893a610ac50d7d9764fa69c57b576924a9 test: relay-cutover migration asserts >= v38, not the version literal 0268c0b8c0e75d1fcbce37f39b14e63b8871a2a2 chore: map 2ndNatureAI attribution ce9b9a63517c6005ffa74557eceb06d3387b67bb feat(computer_use): guide models from full-screen grabs to interactive lanes aeac982223d477c4ac7c786e628433e11753a21f fix(computer_use): route explicit screen capture to get_desktop_state 15f7b7293cbe3b517b5f4560be2d0867478b6282 fix(terminal): persistent Docker containers are profile-scoped, not per-session f32f2e9c205b9e6f6bade6fba4f3dd5b09d28397 refactor(tools): remove expired bfl_flux3_* promo tools; FLUX 3 rides the video_gen provider surface 4c1f53be10d0fce1d25aee1975e5149b6c54f25a Merge pull request #94568 from kshitijk4poor/fix/85125-2e-approval-outcome-parity-v2 dc3716d4515665b717065f31e22486fa8e88b3ad Merge pull request #94536 from kshitijk4poor/salvage/94439-computer-use-media-path c8c3f4c448b4d756c3ae62e5c59666fb444bf4d2 fix(approval): machine-readable outcome parity on the gateway tails + sudo human-wait exclusion (#85125 2e) c5fceee67f3ac1f96fbf2ff735a5a6ab2164eb04 refine(mcp): debloat the catalog batch — vendor-doc tool audit applied to every entry d634b37047c8a685353680da031a3cc68706e59e refactor(gateway): retire private repair alias per replay_cleanup precedent e5032945cbebb64b8a819b66ec831c1906297b81 chore: map contributor email for salvage attribution eaf6545ab4bff666f360ba45385c713a75fa7e1b docs(gemini): update to use latest gemini models 105999a0c94833bbbd0e123400aa6d58fcdab9d4 refactor(gateway): unify computer-use repair call sites after review bb0d5503c2bf52d556116902f8e9f90ca0ac17a5 fix(gateway): widen computer-use media path repair to sibling surfaces 580f78b279eb4bd41f6e5363f5c3da8b1bef77e4 feat(mcp): add 18 more live-verified remote MCPs from the final sweep 760d3af0d70e641ad28b954ba80ffe0241cd0d60 chore: map contributor email for salvage attribution 8ad20d065a7653eae1625225382e4cd989794d91 test(curator): assert the instruction through the delivered prompt, not the source 610e2e02fb10360fdd1610d25a7fd084dd8d7e76 fix(curator): tell the background reviewer to read before it writes 12d4b8e009855634a23cc0c2a55206de975dd440 feat(mcp): add Better Stack and Railway remote MCPs (OAuth+DCR, live-verified) a70d2ffce59b58b9bdb36a518ddffd16953b67f2 fix(background-review): teach review prompts the enforced read-before-write handshake 42f886c8601700682285cdae7e17ea0654e0e05e refine(mcp): drop github, perplexity, telnyx, exa, parallel-search from the catalog batch b0cf2597c2dbb9dacd5c4f063ae7e71587f02c2e fix: follow-up for salvaged PR #93985 — cache key, snapshot, dead code 4387e0396084006ca042a768e998d4f85a8ea4a2 fix(memory): keep OpenViking identity operations consistent 5ff03cb0c411700a1d56d9e20c89cc81198067a9 fix(memory): scope OpenViking user cache to connection 7cd43cdf52f0720e2336509448a5bd653af59a41 fix(memory): emit explicit-uid OpenViking URIs resolved from system status fc4c2f456ba2c64e060f7101a126828bd109187a fix(memory): migrate OpenViking URIs to the viking://~ home alias 335c60ecdd76a7b8b9d6fa0332ac15e58059963b fix(skills): preserve review marks across contexts 34041faea81d7fed8898edbe144eb7ac14e2d074 test(gateway): accept session_key kwarg in media resend dedup stubs a15533b64635b82e9c8b427260e605bd86472e77 feat(gateway): warn when a Docker sandbox MEDIA path fails translation d4f31a8f3627fe1d0c7ea5b23a77838280692c4a fix(gateway): resolve session-scoped Docker sandboxes for MEDIA delivery (#93950) 5908c577f9048a0adcdd80fc467501b0f1e60b1b fix(fallback): surface provider transitions and primary recovery 5ff3a624750cafc1dcccfc5fac0cfcb19a27fb55 feat(mcp): add 34 official vendor-hosted remote MCP servers to the catalog 4ef24e8af5173fe2d2bbef9bbe3d920ddfd6bb9f feat(mcp): curated exclude list for cloudflare + glob tool filters + default_excluded manifests b2fd1dba455e7bb7fe4703b10eefd586e58dd4ae feat(mcp): pin ?codemode=false so tool_search sees the full endpoint surface 19d236d3d1c1cb9496b41bc6195d7c18a9495dd1 feat(mcp): add Cloudflare's official API MCP server to the catalog 1fac44086519112fc7f346ffa1c8b41de0556ee1 fix(gateway): recover explicit computer-use media paths fcda325cd4e60cbfac1c1a7e464a17a72548e165 test(telegram): cover send() waiting for reconnect after a network blip 6c1bfff65ccea09d2f7ffbd8e429b5ff8be18576 fix(telegram): wait for reconnect before failing send as Not connected 27640c5844256068b7259984b19e6041ab06c8d0 test(teams): cover connect when the namespace exists but App is unbound f84f94b4943b397149bc0f5a7af4f5e692727a24 fix(teams): do not call App() when the SDK was never bound 082211b71a96691652ffd70793c4d072ce83498e chore(local-runtime): keep comments technical and device-neutral b8a82c9756986b7e341f10f396472761ec48c3f5 feat(local-runtime): remove the quant ladder — one Q4-class build per catalog entry 0a1082c575d82dec21855b6c33e8c4c2fff71958 feat(local-runtime): Q4 floor follows NVIDIA's recommended catalog — UD-Q4_K_M for the three recipe models 6ce7ab8bfb3fce3ba116f52a11a438d6c7e4c03d feat(browser): make snapshot threshold configurable 9cce872505175265e296444a9b0d3f70e5c394dc docs: note httpcore pin dependency in _enable_happy_eyeballs d934bbd4d5145ebf46b1d433c1a6066cc3b2a729 fix(agent): race Codex IPv6 and IPv4 connections bf8b28f27ad94166dae7fafe27abb1030e298ab8 fix(tools): route browser snapshot storage through the symlink-safe writer c1b295d003f63f2ec7f524a74f9e464ec0fc4cd3 test(desktop): stop the syntax-diff mock factory from leaking unhandled rejections (#94415) 8172be0e8e64e60562494bbeb09252f2c3772b62 fix(memory): log when a configured provider's tools are gated off by toolset config b45b02857370c3a604e95187512ac3f1b3514e41 fix(agent): gate memory provider system_prompt_block on toolset config (#81014) bc47fcd3f927abcd1ec281078bc56348e37a2ec0 fix(tests): e2e group-restart test no longer flakes on cold SessionDB init 64a6f42cb38def7ad6524bdfe640a16997c88760 test: opted-out profile seeding now exercises the essential-only sync subprocess 3733e4aff52d19d110eb415a3809e1b5ae07384a fix: system prompt no longer references tools/skills the session can't use; hermes-agent skill is always kept 7c97343950d05a6c8aba2be931fa9284da4f6c2e fmt(js): `npm run fix` on merge (#94410) beb794123618c997e82791316df643fc61347665 fix(tui-gateway): make WS reconnect replay actually deliver events (follow-up to #94219) a75ea37dc5a8ddec5c3212953a3b7d2eb36d40ce feat: browser snapshots drop LLM summarization — truncate-and-store like web_extract; auxiliary.web_extract slot removed 0484910787df66ee5527d67d102ade80020b54f3 feat(terminal): pluggable terminal environment backends via plugin registry 48f69e51d373f45bbed6f00457807528c5946c0c fix(signal): chunk long standalone sends and cover both delivery paths (salvage #57929 + #67279) cbc8d1804dc8baec07d659fe391186371a80671c fix(signal): chunk long cron deliveries instead of truncating f8b52e4d80422dbb941e5111b31dd871c5a1ef56 test(desktop): cover UI scale across recordless hash routes b637ee0fc6831f5300a6c4418dfc3b3587b6890d fix(desktop): keep UI scale across in-page route navigation 5400fb88e5bd235598b8681447ed70576480b79e fix(desktop): stop gating edit-menu Paste on the clipboard probe (#91553) e3b5512b7b3f6cbcb23ba5fffdc66d5015eca246 fix(desktop): keep modal context menus inside dialogs e53d82a6085e25d842dda83ca8665e4ba82466eb feat(desktop): Workflows — a node canvas for agent scenarios cbe10e078c1a294ee831f99acf4225292580414a feat(sdk): widen the plugin surface for canvas plugins 6ed677a31bb085d072c8ff2e37fb6f778149cf5b build(desktop): add @xyflow/react and dagre a08dfab30201abe562953ba3de1e182a355e2465 Merge pull request #94351 from NousResearch/fix/secure-parent-dir-followups c86612ef8285bf2b0db2505d3083398487df72be fmt(js): `npm run fix` on merge (#94346) b85032fc7dd11bd5afb8bb010b5398349d9b1dc3 test(desktop): pin vibe-hearts toggle across the pet-overlay forward path 93acc22a9f29bc3d25698f74559627d3d650b309 feat(desktop): add Settings toggle for vibe hearts 5ef1409f50484dddc38c9665b32a837ff1b191af fix(desktop): say why window enumeration failed instead of swallowing it 321d5c76bbb1fad54b3e33437846ec5cd8c07b46 fix(desktop): stop the HUD frosting the window while a turn runs e26e25d61889f3482fea3467ec812ef514d10fe5 docs: add operator remediation for install dirs locked to 0700 by older images 98f0e0df07c8d2217e70d7f78b0838cf859c5401 docs: update secure_parent_dir docstring and caller comments for the install-tree exclusion 8b48f621c5ddad516962b1ee063f7f2ac3b455dd fix: log a warning when parent-dir hardening is skipped for the install tree 7ef0e9832845eaa8bb8bea09a6d9c965087d3277 test: pin that install-root siblings still get parent-dir hardening 88f5dcafc8961ce9599308aa5311f7e008d5c794 fix(local-runtime): -ot spill pinning is discrete-only — UMA machines never pin tensors to the host path eebd2b59530a77007e40f8e3c9ad2d5c7ebe899c fix(local-runtime): unified budget is the allocator pool, PATH-independent — the carve-out is an OS knob, not a GPU limit 51468a435a8836679328dda34807bee2e48a31d3 fix(desktop): System Resources panel content overflowed its w-64 menu — clamp the grid track so truncate can act 4e881a85b6228d3430dc4f7a43603ba088875551 fix(local-runtime): unified-pool vendor quirk — budget Spark-class NVIDIA from the allocator, not the WDDM carve-out 41447a6d7063b2772b0c2f26a5b22d9bd444fb43 Merge pull request #94187 from kshitijk4poor/fix/85125-4b-terminal-treekill d2a095df41c7fcff335ffe022ceb546ab62bf0f7 Merge pull request #94184 from kshitijk4poor/fix/85125-3b-mcp-recovery 457e9b8d73515f7ac6374435851d3b4e7885244c fix(terminal): annotate sweep as POSIX-only for the killpg guard lint (#85125 CI) 786f37071a16136ab7a4f5b3a5c0e433b621b81a fix(mcp): psutil.pid_exists for stdio children liveness — Windows footgun (#85125 CI) ab0d9841450b0ead5e3d3116fbd1f1e1dfb7c462 Merge pull request #94240 from NousResearch/shl0ms/docs-seo-titles e2e8d7e59a7b47baaf339e1d687396e77ac927cb fix(web): keyword-align titles of six high-impression docs pages 03b87d666d7082e820c2605b32005da664955975 fmt(js): `npm run fix` on merge (#94230) b106a09b9731331430c675a39d0044531903dc46 Merge pull request #94219 from kshitijk4poor/feat/gw-event-replay c7577403f8b7a158908c522bd750d272f5412108 test: drop unused afterEach import (CI eslint) 87631bd8aeb1f54df1a8f81945c8744d48bbaabf feat(tui-gateway): seq-stamped event replay for lossless desktop reconnect 2c66c94041d55c06f3785e78a3650101394cb33f disable msix builds for now f14059fad20e17acf2512785114791566e70bd06 fix(models): OpenRouter :nitro/:floor routing variants no longer rejected by /model validation 1420176393295dfb0dfb55ceb4b1cbab8d1965de fix(lsp): abort diagnostics waits after transport death 2f506c2023e1c4042d11a0eceb6af4ea7195acc3 fix(lsp): retire clients when the protocol reader exits 8d29a55bedef2f178aa234f356e917ff6a85ace0 Merge pull request #94188 from kshitijk4poor/fix/85125-4d-treekill-consolidation c73d721b1d650a8cda3c588e003612e395d2ec84 fix(computer-use): recreate CUA session suspect after MCP timeout (#74799) a99001c3b36fc574b0837708f222ac32096b54ce style(desktop): space sibling restore import for eslint 53c4693004435db585b6b9fc4354e1713219b676 fix(desktop): restore pending_clarify snapshots on activate and resume dc998a2d59f6a50a44e567a188be0f999608fc39 fix(desktop): re-arm pending clarify cards in place e4dac8415f44c3c15540e941d94f9fdb7c2364ca fix(desktop): demote unanswered clarify cards on Stop ead9d8e3d4f0cf6e890d4cf499247964417b8532 fix(desktop): stop transcript jumps when a turn settles 9990bcb8ceb39e17517d9f8e81e4a789e5d034e3 fix(terminal): sweep setsid descendants after local timeout group-kill (#85125 4b) 547f98528697113fa70397b887594c8dea737026 refactor(deadline): consolidate site-local tree-kills onto agent.deadline.kill_process_tree (#85125 4d) 2f33833de868a56a45201b4e1da2922589fd9035 fix(mcp): recover poisoned connections + fail fast on dead stdio transports (#85125 3b) b9eb37e5ebb66a7b920b47a85597490a0ef4dca1 fmt(js): `npm run fix` on merge (#94176) 85a55e2b30fa979cae61753319155bc62f544a1e test(desktop): lock Home new-session detach against stale project cwd f3e0cf098b974fb603257a38d276f7dfafef822d fix(desktop): keep Home new sessions detached from the last project cd297653fa4fac85f45f7d3ad8e361db0f14e9be refactor(desktop): mint browser tab ids at random rather than by slot 84758ed19dd0d7214bfc4677e6042e2d03d4f205 fix(desktop): hold the typed address in the browser bar until the page moves 8a8f74e789bc98bc8798748fec5a25637576c260 feat(desktop): let the in-app browser hold more than one tab aa65af672e7bf340c73ad813b522886b34d465c0 blank 46ea7689f199eca6587cfc3d2d64056bb9b7a8db REMOVE ME AFTER WE FIX BROWSER dont ship browser a251e87d826f4ef7c75a8927d5304e24cf43ef54 fmt(js): `npm run fix` on merge (#94140) 652f5d740cb79008a42de8c18786623f0f8d1f0e fix(desktop): sort HUD windowing imports for eslint d7202d64ef078602fe7212e348766c913697e722 refactor(desktop): derive HUD OS behavior from one windowing profile 28b758d5caa48020f0f4eb1bcdbb0b51d2d58d53 feat(desktop): make Cmd/Ctrl+L focus the composer from anywhere 630766d667cf5ad168fad50e414c9d23e88b0a26 fix(install): declare the sealed payload's runtime dir in the install stamp, and collapse uv onto the provisioner a0795acc831210970586a99f2263de5486eab245 fix(codex): identify Hermes requests 74ad422d50e6d76e26ba5ce3b4d2a4d520e923dd fmt(js): `npm run fix` on merge (#94046) 7e500d2ead2251aa10f745bfdb32975dd81e1dba fix(desktop): float and pin the HUD on Hyprland d08f9e14f606724a370bbfb14ed3ebdc6ff009d9 fix(desktop): never kill a healthy backend on a claim probe failure; surface real stderr (#93608) c0ce7473bd1bdac7cdcf38369ec82ac32e75efc1 fix(serve): Windows conflict probe uses SO_EXCLUSIVEADDRUSE (SO_REUSEADDR binds over live listeners on WinSock) de07bd5fab23c6fd76c5b988598ae5c1221fd091 fix(serve): emit BACKEND_PORT_IN_USE sentinel + exit 75 on port bind conflict (#93608) a7f609d3b7cc23ca3ae319377e884b46a6798e9b ci: holder via script file + netstat LISTEN verification (Start-Process arg mangling) bc5d09103d961e618b753027125a7e903b5af0cf ci: exclusive-mode holder socket in proof legs 917625adc390f6bbd85e11ae5fed43cb6c5755dd Merge branch 'fix/93608-port-in-use-sentinel' of https://github.com/NousResearch/hermes-agent into e2e/93608-proof c639dc846814105126af50fb1d744d2228bc6288 fix(serve): Windows conflict probe uses SO_EXCLUSIVEADDRUSE (SO_REUSEADDR binds over live listeners on WinSock) de29b70a57fde8e47842dc69ae708727820507f9 ci: cold-start canary, longer bounded waits, conflict logs in artifact 1be8a6beb6fa91c180ae6241556f6c06ee71eba1 ci: bound every proof leg; serve legs run detached with NUL stdin (hang fix) 2e0b83c526e4d248dc39c150d7aed023650cf08b ci: TEMPORARY 93608 A/B proof lane (Windows runner) - delete before merge 163bc1fb8392582aff7e0696fdc1951beb64c87a Merge branch 'pr-desktop' into e2e/93608-proof e057eed7a951a8ffa183b612dc6aaaed8b332d72 fix(desktop): never kill a healthy backend on a claim probe failure; surface real stderr (#93608) a95a78fd660599770be13d29b9d6c0aa3924ae1d fix(serve): emit BACKEND_PORT_IN_USE sentinel + exit 75 on port bind conflict (#93608) 057dcdf236f8a6a26721c10fcc6ccb72726e272a Merge pull request #93830 from kshitijk4poor/fix/85125-2g-mcp-timeout-resolution 81baae6bc3af215eb596380ed57be92ee9996fda fix(desktop): polish HUD movement and resizing on X11 4fee6f31a09d69c3cb8b9459a9fffeb3dcb4933d docs(desktop): document Linux and Wayland HUD behavior d467da910077be76d72ea2c4f17e94e56fbffa23 fix(desktop): add a HUD layout reset control b595fcd5e16425a78b168881d9401b9d07e8e187 fix(desktop): keep the Linux HUD clickable and recoverable fab0de1c5b06113e6b5827766c155680eceafb0b fix(desktop): debounce and re-verify zoom on Linux Wayland 11f3ebe2302b70c14b3303257002113965307bcb fix(desktop): move the Linux HUD with a native compositor drag 7dde1b8b0bcd20635068d4d91b30099c854357b4 fix(mcp): resolve tool-call timeouts via the unified deadline layer (#85125 2g) e400e0088767a596ee21985d661a924cb087775a Merge pull request #93826 from kshitijk4poor/fix/85125-2f-telegram-deadline-migration 111d8095627b2d56b4a70df4b78b950864af6f28 refactor(telegram): migrate _await_with_thread_deadline onto agent.deadline.run_bounded_async (#85125 2f) fc63e146cb7ba2d7eb1031a1de80fc0a029c8d3c fix(desktop): polish HUD movement and resizing on X11 fb7466300d72bb8e352ad654b82af4bb80864c94 chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 5 updates eab5690f56cc1dc273a2dc3d087c91498d28c846 fmt(js): `npm run fix` on merge ddbd928ee4e881f0c7b3536a00355647c6559fe2 refactor(cron): parameterize liveness warning plurality, drop fragile string replace 5843b2f5959409d769c66eda89ca1e746983ded5 fix(cron): share liveness helper with CLI and extend it to cronjob list 302085ab2e09ab552a611443eba05da29ad7da72 fix(cron): surface gateway liveness in cronjob tool results (#87033) e3f695e5e00ef8718d8829fbe44fd3d2e36ed236 fix(tui): heartbeat and bounded reconnect for silent WebSocket drops 9153be2a5126f8280839a58d143ddcf80afc6d12 feat(shared): heartbeat and socket-generation invalidation in JsonRpcGatewayClient 9a71cb95cbec1ae4069b90f37ee33985100839f4 feat(gateway): add gateway.ping heartbeat wire contract 9525c0e5b7f2cb07848cb2a9b745e082d1a40715 fix(desktop-update): use the system default browser for the update shim 8e46e2c4c49391737e311aad12be829062364bac Merge pull request #93793 from NousResearch/salv/autospeak-test-93540 85958abf092490d5885bc1b27067e9794768c2b9 test: drop unused param in group-turn lease mock (lint) c29c9d17901eb55591faa0851613aa136befc13f fix(desktop): hold a per-turn socket lease so group-chat member turns survive the runtime-session reaper (#93602) 6e534df114097b86fa82b464f33830fc5c97e2fa Merge pull request #93773 from kshitijk4poor/fix/codex-sdk-transform-bypass-93650-v2 ec5e369fe68f4abb3188767c751d6166d2139f0a Merge pull request #93784 from NousResearch/salv/81234-retry-carrier 21914880ee43e04f31ed28f4a17e006f2bf4ba19 test(desktop): pin auto-speak silence across an Edge TTS fallback id rewrite 9fbe3cc0408069aee6c7643194dc1aaeadf7b17d fix(desktop): scope branch-opens-primary to the currently selected session a4092cd2d282f6bd717010dd7f04b3d4366933bb fix(desktop): open a branched session in the main workspace, not just a tile 1bee67be3938382c604fe289fcd838d2967c09ac fix(desktop): give keyboard focus a visible affordance where the global no-ring reset hides it 32fb12a2353df39c7c43cbc027bf220426efe281 fix(hindsight): let hindsight_retain convey event time via occurred_at 497d6d5a66d45e66903d8f24c2f9f6d9af75dfd5 fix(hindsight): harden event timestamps 97850afa333d83e9161a5a9d9df31c8f6d659688 fix(hindsight): send configured event timestamps 4d030a37c73982d996b08d50199228e001a3b930 fix(desktop): stack subsequent preview tiles as tabs instead of new right splits 57ece811013ba2dc35d05614e16cb6abc67e3d17 fix(desktop): exclude cron sessions from the titlebar unread badge 06fc941d2315962480482bc98e45709f8bb1c914 fix(desktop): stop bot-relay drain loop from redialing a WebSocket per connection per tick c9e2a46df60ed22fd78207b7d8594449d85f9528 fix(pricing): support Gemini context-tiered rates in pricing snapshot (#93469) a87d314e4475bf661cadb71dc2aad416d7bf121e fix(auth): malformed OpenRouter env key no longer shadows valid credential-pool key d8d1e18ab9ce0ef4b0bdbe345d577ad1ba678bf6 test(terminal): harden watch_patterns lifetime cap — delivered-only counting, Nth-delivery promotion, docstring b3730153c3779ce43c5a332c760d85e1fb0e7e66 fix(terminal): cap watch_patterns notifications over a process's lifetime c7f1f4d6e91efeb1ab7a595322f482a8dd3270e6 fix(desktop): teach the torn-bundle guard to see missing lazy chunks 73af57a2ae2d43f123dd7d73ae03f54a67188cbf fix(desktop): prefer the unpacked web dist over the asar-internal renderer index when packaged b614e2656b70726868f556d6ab4e1419d68eea08 fix(desktop): isolate a failed lazy syntax-diff import from the workspace pane 40ab950ae3c26ed7d15753f7ac6caa94f598b11d fix(desktop): guard render-reachable route lookups against orphaned rows 725cfe29098691cadccbb9e8bd92eb392cb87f8c fix(desktop): annotate group-chat members already orphaned before hydrate c509af689f15107e7ccdbc2bd10eaa3453867444 fix(desktop): sweep group-chat rosters when a connection is removed ec013b76db2ae4380a930e6b24da0bfb4361d367 fix(desktop): split strict connection routing from passive roster lookup 09529afdd2ac9f5fb038fd70763b7fadd2195280 fix(desktop): group chats no longer crash when a member's connection is deleted e8d5660bae1db35182a35e03e564be0b584ebedc fix(desktop): bound the boot and gateway-switch resolveGatewayWsUrl awaits too (#93454) 5ef205d8558bc8f9a827fd80a2840614d1a7886c fix(desktop): bound the revalidateConnection() await too (#93454) 17f8e24c81674eee97450b44dab41929a49b9c69 fix(desktop): bound reconnect awaits so a stuck IPC round-trip can't latch the UI frozen 9c013eaaf80a7adad9f46d21d5c8b60ad11cd9ad fix(dashboard): follow scroll on implicit active-session resume (#93518) 42a6d761d2dc7dc2b618c26ca10983896a5186de fix(bot-relay): add shutil.which step to CLI resolution and pin utf-8 decoding on delivery subprocess 85cd576b0665f31771236bd6d64a94dcdfb5f8a9 test(bot-relay): match delivery CLI by basename in argv filters c099ef05de6281f7841a88754443de29f0dd4b9a fix(bot-relay): Windows path SyntaxError in waiter + PATH-less delivery ENOENT 8d17060249e0d74fc309c913e7d283f6c0922de5 fix(cli): hard-exit the Windows update hand-off child once work is durable 93bf6f72253e4cd13744c7fd1d3804624a72780e fix(cli): fail closed on empty fleet probe across all pre-update liveness signals (#93406) d74bbb9bd9d6e1771b25b4906faaf921933af744 fix(cli): treat empty fleet probe as incomplete when gateways were restarted (#93406) a26154aceb74abf5ea9243f0e1c1a128c19b6e63 fix(batch_runner): teach the resume content scan to honor discard tombstones 316d52faf2fda0470a8656f447174421e37182ac fix(batch_runner): write a discard tombstone so resume skips no-reasoning prompts 4b622bbc4b70e53d26430df4e6cb305a065c584a test(model_metadata): lock in max_tokens last-resort fallback + cache self-heal a0c802c02cdd9aa49504cb224bd7cd6f45b2bf86 fix(model_metadata): stop misreading max_tokens as context length in local probe 4d729e4b31c5c39bb6b1f351a0c3928909db45dc fix(model-metadata): local ctx probe must not read max_tokens as the context window 394f0f0902b6168df733a8c655eb59753b74e94e fix(context): prefer max_input_tokens over max_tokens for Anthropic proxies f28718c3317ef0687a8602548658cab8db337f01 chore: map contributor email for shanthans-es e210fd8c1ffd937996aecdba2a3675a387e65109 fix(gateway): resolve PairingStore's default pairing dir lazily, not at import time 905edf37a47581c08dc252d5d69d14ccdc4246fd refactor(cli): add static fallback to parser-derived value-flag helper 1007296ca078c236e2619045b17d5d51fecd4723 fix(cli): add --reasoning to both top-level value-flag sets 694550e486a35484c04196a962a5ced7aea5fafe fix(cli): derive top-level value flags from parser 3963fc6f219c21f50cb8116822ad2c4478a6f343 fix(config): stop reporting stripped v15 defaults a7aa814c421fb0e5a24971690bb5e2c3a8ad28df fix(tools): widen the command-position anchor to the whole hardline class 8163c8731b47637e9e38f3ccde78a021a7af2782 fix(tools): anchor the mkfs hardline pattern to command position 7befc1d2dd76f436758aeacfb625557ecefe798c fix(gateway): route platform authorization reads through the profile secret scope d7e4204e77edb278508862b4e2094819c9ae180b fix(gateway): scope multiplex-profile authorization reads (weixin/yuanbao/wecom) 8eba0d2fd6b5287e14ba50c84a1fe6b1417308e1 chore: map dougatbuck contributor email 855e191d89d0088688054d54f074fdd4d32be8f5 test(desktop): document connection-scoped filesystem keys 9abeb89a497feda49a2e61ea892077429d8b9325 fix(desktop): guard stale files refreshes 30150fd08261a248968fb86460b7a9940e48640a fix(desktop): isolate files across connections 0eda2ba0c83501c3b478869cac5ebd47a2f520cf fix: remove dead code, deduplicate error constants, fix skill key check 350fb975b9584703a31ead9ba029c9f40ba9c6c0 fix(cron): prevent empty payload loop and protect against blank name overwrite b57530afee8830c0d3e3c0678991c94d33e76381 refactor: collapse context_back/effective_allow_back, fix draw_header docstring 8345effc4ef81f3593db134b0670ac3b61054032 fix(cli): support reliable setup menu navigation 1a95d0d58e59669f8dc1b0b955e372411f6be410 Merge branch 'pr-81234' into salv/81234-retry-carrier d9a48f656a7c2dca3fcf8c84bbd5d9cb00d4273b fix(desktop): scheduled jobs on sleeping profiles keep firing 94af11a920e45097d26e91984c343927d17fb66c chore: map contributor email for jeremyrandria-debug da57f492377c4979f1ce7f438fff2f85cf2bb604 fix(desktop-update): shim window only opens in the user's own browser family 60bb2bb719fca2f6a6a090310f6a7c1fdf83dfd5 fix(update): auto-close desktop-update shim window after error/manual outcomes eb21740b061409fcf1cab3dbde8420866d058ded Also skip Brave: its P3A bar paints over the update shim window f329f9e40d6e760c74c0ef07ce38aef228e11136 fix(desktop-update): never render the posix update shim in Edge b90289b046613fe9b3c3c446f796de451ba7fdbc fix(desktop): update flow nudges a gateway reconnect; wake path probes instead of blind-closing cdd37035d986b8e17e6924ce5de892057dff0b4f fix(desktop): probe half-open gateway socket on wake and reconnect 29c5a12e04497dfb18d5432f9416f837bfe80919 fix(cron): warn loudly when the due-scan removes a consumed one-shot that already ran (#93524) a1c5e515b7fd259be3ca143cdc94bd16e1085e61 fix(desktop): SkillsView tests no longer cascade-fail on slow CI runners 45aa0dc33e380fc181f2f902dfffd6bd21a969c6 fix(cli): widen prompt_toolkit fallback to catch any runtime failure a88cbe10fbb94f9f14d5878f3a6a8ccac7707ed0 test(cli): add regression test for line_input OSError fallback e8ab3b075dc6e106a31e99f9031086233dd8a8c2 fix(cli): fall back to input() when prompt_toolkit can't attach stdin 9857bcba5c44f9d1db65010d1cc1b80a3a6a0a6d fix: widen secure_parent_dir to skip entire install tree 3834e8972488911e4160f2f36bfef923e5c319d5 Fix self-inflicted lockout: secure_parent_dir() chmod's /opt/hermes to 0700 ee7b307a6b91c5f60d350fd837ca8f0d9010b359 Merge pull request #93765 from kshitijk4poor/chore/author-map-cycorld 7fbf6e724fd64ff4bafea8b0400c41e3f249d0b7 fix: restore trailing newline at EOF lost in cherry-pick conflict resolution 2a27e1ffb3825a59c4484cfdd4bd9cdbfdfb9735 fix(gateway): prove --replace ownership from the bound pid record 9975544101b220b9627371335c75319b9e29b379 style: ruff format test_codex_sdk_transform_bypass.py ee924a1bc580849871d96e5d1e25edd6acd38df9 chore: add cycorld to AUTHOR_MAP for PR #92189 salvage f14f62d91b93a43c9e4fb20fa1eee72a43d4b3ae chore: AUTHOR_MAP for kchernev (PR #93681 salvage) 10a070bd491087bc724bb907bf5dda5eeb181642 fix: route codex payloads around the SDK's GIL-holding request transform (#93650) dc50f020905d5bdca5d5f683a5898f85b9c07dbd fix(adoption): re-check donor growth at retire time, not just at export fa83a224332dd9a711eaecb8a7c3a1d0be4442cc ci: retrigger — no workflow run ever dispatched f93b350711e7e58f9cf1a7bba5cd9c7cff8abe40 fix: align cache-policy pre-gate identity with the capability matcher 0204e4898e4ae98265e6471c1ee119dc00c1ec73 fix(agent): normalize custom provider route identity 0a3b7efec55c323b7a294a542ca5516c3684dd52 fix(agent): honor prompt_caching for custom providers c3faa7d854be0ba2e92bfc0c7b2a00bedad4d5fc ci: nudge PR sync — previous push's synchronize event was dropped 6ef8282b49bec03ce14f616d29eab9115a8edfaf ci: retrigger — rerun dispatch died with a zero-job startup_failure a0ca7c19204e514f9590ce3b812e029b315ab9e9 feat(cron): add explicit one-shot re-arm c3a63a16f1b11ef25b6e7a302fb1f249e41fe8d2 fix(cron): refuse to run terminal jobs ad2d93e67226149d0e60777edf565fdd31af88c6 fix(desktop): force session.resume on explicit bot-switch open so Bot Chat never paints a stale cached transcript (#93604) 2332c997ed6e40b1a5a9452cc225feadf8dfc5d8 Merge pull request #83536 from NousResearch/fix/pkce-samesite-none-salvage 53ab03dc4d408cde53035acf551c7d2f019f0ff5 fix(auth): thread use_https into the native password-login PKCE clear 31f9214c1e2dbbaed8ed0a824fff09277fbbc163 test(terminal): compute recycle-test env key under the mode it runs in 9a91f7058c9728724d403304e50250af4e4433ab Merge remote-tracking branch 'origin/main' into fix/pkce-samesite-none-salvage 6c23082d3ed32858ddd58d4e6c30a753b5936b4e Merge branch 'main' into salvage/sprites-backend-30112 c68e6771552e11215e6d08315f035dbc5a2d7d1c fix(terminal): non-persistent Sprites are session-owned, never adopted 888c8daaa60631e352435ddf38f3e1f3ef30506b fix(terminal): make persistent Sprite first-use create race-safe a3572e72619b2860ccfb2380c3020659c1e5958e fix(terminal): propagate Sprite file-sync delete failures for rollback 91191123ed2374e160c8b6a86d2216627e2c9301 docs(auth): correct the SameSite contract in the cookie source docs 7e67f64fcee9340f40a1c6f912fc650aa4984510 fix(desktop): bots group chat sends message on IME composition Enter ed8ee9a871d9e804e6f19102abfee17a3b2683b8 fix(cron): misfire backstop honors the one-shot grace window (#93526) b37a5bc0dfd83be4d557369f6ca05736c15333b3 fix(cron): due-scan must not dispatch a one-shot past its grace window 0b62c27bf13b3c870d33b8b726ae0b7b48313931 fix(desktop): route remote file requests by connection 21b92d26877fd51d8ef43f8a5f469085697e5902 fix(agent): bypass response cache for empty retries 2738c6ab4cc0722a3e9ab8ede2da30679348b777 docs(terminal): sweep stale round-1 naming scheme; fix delegate wording 59bfbe52fb28cc9e139a392bc445067064d0c6c4 fix(terminal): collision-resistant, DNS-bounded Sprite identity digest 91e867631e9d2eb9fbd69edd4459475d38070979 fmt(js): `npm run fix` on merge (#93566) 5156d98d629d177537da516c1b54d2775fe9510f docs(terminal): correct Sprite-sharing docs; sprites in backend listing 4812ca2b7ee8da687888f68d01ba98dd1ed958b6 test(terminal): sandbox the live Sprites suite; fix registry identity aff18ae21e3762bb98c684eaed909d7b7e204f89 fmt(js): `npm run fix` on merge (#93563) dcdb3efe015bfc5caea4a0a9a71952eb8ac3a1d6 fix(terminal): close Sprite identity boundary gaps found in re-review 34feb375acbadf8b5cfe067278108b2cd374ef50 fix(desktop): clear stale group metadata on disband 631148755f580c73a97330fa28da0b5a499dc777 test(desktop): cover registered file fallback routing 6eb77df1aa841a482334e1ed8341ef9964d0f497 fix(desktop): route SSH media through active connection 06a553c0015fa11f29bb208fed984d827e348791 docs(desktop): document Linux and Wayland HUD behavior f0ecfeec2b0415a584ddb6f590c0d2b09cdd1dd8 fix(desktop): add a HUD layout reset control 0018954a158b5a45ee673cb0fd14a71dae2d482b fix(desktop): keep the Linux HUD clickable and recoverable 69003bf220188abc89f3958e73547dcde5378ac3 fix(desktop): debounce and re-verify zoom on Linux Wayland f465bdfe2ed513bd7a1d5e1f794490e54b92b27d fix(desktop): move the Linux HUD with a native compositor drag 8a1d2a7cf544366548a56f523c193b27ebaeaeee fix(desktop): stop transcript jumps when a turn settles 3e574f7efa5a38796ce13e87f01b44b79760a65d chore: map contributor emails for the Sprites salvage ec44116d596d798d6cb230825f1a635bc6dd38e9 test(tools): shared sanitizer contract + singularity overlay coverage 410b1ec5559d175e8cbc436ba35dcf7d9d323b9d fix(tools): share the task-id path sanitizer across backends; cover singularity overlays eef7a107564a2a210d73d5f0a3c07aca5d412b00 test(docker): cover session-key sandbox paths and their collision boundary fb381e8055da3e9ea8f3c305cf3f31fc73530a9a fix(docker): sanitize the session-key task_id used as a sandbox path 0f2416523e4364cafcc442374f4c98d5171458db style: import order in main.ts (perfectionist/sort-imports) feb419246d1ea47888a238000c668b618dc32c72 style: satisfy curly rule in api-transport (eslint --fix) f114f4ea633588d21044784cd9f0e2a662b09935 style: blank line between node and external import groups (perfectionist/sort-imports) 03662dca77c414c0b813d0359ef37efd3ad0cf9f chore(release): map KHALIDagara contributor email 859010b94e9f73ebddb2c8bd1cd965232b7b8685 fix(desktop): gate transport retries to idempotent or provably-unsent requests 1cc76fce3ac74d0a69da2256a97e8c873964f0d4 fix(desktop): harden Hermes API transport 95af45419fa18b27a634a1ec0b3d6e6e68dced6b chore: map beplee contributor email for attribution gate 03c3554fc2fe98fb1bc7809585920870e8c44c78 fixup(curator): align #93002 test stubs with #93149 set_pinned bool contract ef882a5595efb88f73295fb5b40fb390d5dd8505 fix(curator): say what pin actually does on an unmanaged skill dd20c30dec51d0b3e3bffcafc3594f2d3a13dd3a fix(curator): check unpin result, guard status ghost rows, tighten test 7caa731e80dd2b817caf391a8bc6197b135c2771 fix(curator): report pin failures instead of false success and surface pinned unmanaged skills b89e21a46548b2368d31484818ad4e4f79cb191a fix(terminal): bound Sprite exec deadlines; document shared-Sprite model baa82f7eb5643f3423c727c0a85b7dd77c1d9e35 test(terminal): de-vacuum the Sprites recycle test 3f9e0c87fefb91f809ea0138ee139186073589fd fix(cli): install sprites-py with the reviewed version bound in setup 657d2344822640c6e6fce74b5139fd02af764955 fix(terminal): route SPRITES_TOKEN through the profile secret scope ca8a8414bd53414decfef752f3792372d120ec55 fix(terminal): make Sprite identity injective and fail closed 28d0046625a9f91e285d73c916f7f33292533fc9 fix(desktop): treat sprites as a container backend for attachments e4b096bdf7e4c8d3c8e787139873a5f416d1fdd9 fix(dashboard): register sprites in the terminal-backend picker ee025b3986eac08e978415ab4d6dc7a3272678b8 chore(deps): regenerate uv.lock for the sprites extra 628859cb08870755b17482bce6dc369224b38b4c Merge branch 'main' into salvage/sprites-backend-30112 6ed8bcee8dc7c27965a2ee1fb8e8370b0bfd6169 fmt(js): `npm run fix` on merge (#93503) 3c19644419712d187b636e0bcb66ae993e7249b1 feat(desktop): HUD game-overlay mode 433f518cad08c473a7c14f893e36fee253ab19e8 fix(desktop): Windows HUD paints opaque white 1c75e059820a0d41eb8d0f93bff15b635b5d8b8b fix(desktop): resolve get-windows from the staged copy first c773927e329bd7c3c2fd058dfd7359accb25e850 Inspired by Amp: per-session usage drill-down + JSON insights (Explain Usage port) c584d15cdc31e1ebf3989c426ed05fb2ddb0c9fc feat(bots): typed failure reasons reach the sending agent on A2A calls (#93091) 0c3a5075350c0006b3895267efa83a638d5103d6 fix(classifier): 429 quota walls route to billing across providers; reset signals stay rate-limited fe2452560523139974d3c42549fbbd8d0da172ab fix(state): reap only proven database holders 8f3a82f96a654f66b52f8b2c9b98f35cc542a59b fix(state): recover FTS after orphan holder deferrals 37411f349a11570292d88dcedc98b48f5ad99af6 fix(auth): rotate credentials for named custom providers after 401/429 030edf9774d5ce559ba0d6c943480e98a9524ed2 fix(auth): canonicalize configured provider display names 3a7c094582276a0358fe78159891d5759be9bbec fix(auth): preserve configured provider compatibility c527b2c0a41d83577dd79fbd1724015363ca29df fix(auth): normalize configured provider pool keys 2912c36aa41c2e33f3f61d16de0a3897a1e6cef1 fix(gateway): stop multiplex allowlist leak and bot-relay python -c injection 57649294beb8ce8c8c06e7d4676c68cfdba9ffca test(bots): turn-lock fake Proc gains stdout/stderr attrs b274b346d846fdd38ac650ebf00c50b84ad00ee2 feat(bots): retry session policy — resume transient turns, compress-and-resume on context overflow (#93091 item 5) f5a9ba9ee641e8317403ff79236fe955c1f1a881 perf(bluebubbles): move attachment reads off the event loop fdff700dc2057c3f6cb9b373520a1810f81e6c93 chore: map e-macgregor contributor email b03b8ac51d547bc142be68d81b3f5dc24ff94cb1 fix(dashboard): name the exact gate trigger in fail-closed refusals d3df14a7e368c2d3522bf91dace2f3054e26818d fix(dashboard): secure loopback public URL proxy mode 608a56ed7f50926ecfae1db39447b280a0bc4d1e fix(state): stop rebuilding the whole FTS index on every open when the trigram tokenizer is missing bf15b050b1ab5ee7ec5a688213fd9ff8825eb8f5 fix(telegram): watchdog silent long-poll death via last getUpdates progress (#92991) 3f5d37568eea351825b5e3ccbbdc1e8161f2c61d fix: managed-runtime guard no longer trips on sdist/build copies in the workspace 7526bd39a8bebd0c260dc80a89184e11279f9a4e feat: every subagent's prompt embeds the workspace's project context files 23fb949f2c62d906231c7d11c05ddccf6e0b0b3c feat: /review briefing embeds the workspace's project context files 22381edc1176d86f8dd0b65d40e7141962bcc6ea feat: /review briefing carries the parent's loaded skills ea25bf204daaea8996b55c9726e1e37914bb1ffb chore: map contributor email for cxxCoolStar 580060ffd8ccfcca0aaa63bd88b688ca5c03cbac fix: reuse first-observed sequence when announced items land via output_item.done 4f3ae189a39e74c2642a64f4161dd82a6caa414b fix(agent): harden pending Responses tool call settlement 720344cfba422bcc131ce120802260c7811fe8da fix(codex): settle pending Responses tool calls when output_item.done is omitted 081cdd991159ad96d08bfd402caace8c54f4c0dc fix(terminal): subagents no longer hijack the tty with an interactive sudo prompt 74e483d3269c7e7bb2ba4d934aa98dc976709b5e chore: add contributor email mapping for jackijianxa 9d0727d49b185d44af09170cb45e71c1568d577b fix(state): single fail-closed cross-process authority for all full FTS rebuilds 0f33c207e6c5ab9a86e8dc42f6e79526276afa77 fix(state): serialize cross-process FTS rebuild with file lock ca226b5e0675cd06d437324e2e52d5f3dbf26772 chore: map contributor emails for ring-2 salvage (A2chitect, c-pompa) d6bc3f2bca1f5ae4a1509926dc47b06de4903179 fix(tui_gateway): enable TCP keepalive on websocket sockets (dead-peer detection) a7977771a6386abf3b383469598cfd0ced8d2806 fix(tui-gateway): revalidate transport ownership before sentinel-parking on WS disconnect 47d6ce78a24920a5f1baa51332efb8b45d1fef19 fix(tui): make startup_orphan_reap recoverable and move its config onto dashboard.* d3e4b50e68b8bc0f202ef1ba8f11d4f051f2c791 fix(tui): sweep orphaned tui/desktop/subagent session rows at gateway startup c305839442902d423798bc5cf319c2a2cd97ce45 fix(tui): log 4001 session-not-found rejections for diagnosability 525597c9c3ce1bc3f3d7217954af10a364ac7999 fix(bot-mode): fail closed on transient group-session resume failures 80b202f53aa719eebb73ae1af596fa806f7768d3 harden(adoption): review findings — exact-id donors only, divergence guard, honest donor_retired 26a4f89ada5dc62980b4aa1666397dcc6e9f5101 fix(gateway): adopt stranded bot sessions from the default store on profile resume 8c8193dce5faf71d80bf98eb52bd896ee7be8a27 fmt(js): `npm run fix` on merge (#93429) 654d537088aa499e14b2a859534652dc80b16e7f fix(agent): honor structured quota reset signals c2090ba6b41cf6aa62616d98a9eee03df2de4dc1 fix(desktop): distinguish provider quota exhaustion 6b3a7af73d4863445ce6d2fe1e11eca72a2a20f1 fix(security): cover privilege wrappers and command-string options a19e1bae1003b4d99ea2d68810471be129a8c543 fix(cron): stop a relative path from disabling the data-sink exemption 5921ba8c0646e04a778b0ab3f7e4e5756a2eabdd fix(security): see through wrapper prefixes in the gateway lifecycle guards 9ab056d4e8b892fccb797cc5cd5dffd090ac827e chore: map wingkwong contributor email f2639f8872b9e44c971549b504b997b85f776609 fix(cron): preserve map keys as ids and skip junk values when flattening id-keyed jobs.json ec4b3bc06aaff9c168a6174f35e0d653589693bc fix(cron): self-heal id-keyed jobs.json to canonical list form on load 5a24dcf4f230825d51b5c44d4026fec1e0b03577 fix(cron): normalize id-keyed jobs stores on load 2e75862790f4cb49d3fc5b64b7bebb19ab4fb09b fix(install.ps1): record 'skipped-long-path' when ConvertTo-LongPath short-circuits 203f111c980efef5d7f3d61ffb6808bf10930600 fix(install.ps1): initialize LastResolver before the resolved-path report 3e3e6f94a0301dfba621067a94fca23daf5fe924 test(cua): pin PATH-preservation contract, not byte equality 83bb0f1b4061cd0dfe36b374e4c54459c8141ea7 chore: map UniversePeak contributor email ec06e706f1b59e193ff4b6e8e8d72a88b0ca7fe0 test(cron): e2e regression — scrubbed child env resolves bare hermes under minimal parent PATH b0001f45a2650b5a076758d97984312ef83ab940 fix(cron): keep hermes console script on child PATH 04dd2bb233a0e6c1a31e9c4fd18ac55b3d53d141 test(agent): drain truncation warnings before and after each prompt-builder test f168d857c37e0b362ef5b5b37f7c33881800c411 test(agent): stop truncation-warning ContextVar leaking between test files ac83bb06672601504c1037a8f3dd436bd49a67e8 chore: map contributor email aniruddhaadak80@gmail.com cd6c0889285bafe292a5b3b73026bb49e5418142 test(compression): align no-op strike tests with structural backoff (#93022) f778c0d94109252b376b98df297c2ee99def803a fix(compression): structural no-ops defer retries instead of striking the breaker 4bc31a435bbcc829026d8eba7bc7541888cd57ec chore: map Aintworth contributor email ce51f535d33a9af1f79cdf346f4ebff559ab553c test(gemini): cover nested/list/non-pointer ref cases; document false-positive tolerance 03477166f96534e60cb5754310514a39c3b5ef21 fix(gemini): wrap schema-bearing tool results as opaque text c25f206ecf76a08ccaa03e30c161f9a88a67ebf6 fix(desktop): show the launch-source preference for a single connection d5463b3f46851d23c6526bd659193c46240b9f9e fix(desktop): boot restore never overrides a live unnameable source aaf63220ca4d82d8d8b990715946d8754db22890 fix(desktop): heal v1/v2 connection drift instead of re-homing onto local 4fea0f04be235b3d69c47c65959fd6ce5d7994a1 fix(desktop): boot-time source restore keeps the All-profiles preference (#93197) c5bf3b7ce31028a70d9ce21ee62928eb1e1371e7 test(desktop): replace apply/liveness source-regex assertions with behavior tests 96e5898542ec6277f6b36474870a4e6275652bcc fix(desktop): synchronize applied gateway registry 6a25ec075899f66376331c451297bb5f5379d534 fix(desktop): authenticate remote liveness probes cce2d9418b89f479d7aebf79c923a6ace32f173c chore(tests): remove the never-executed kanban stress/chaos suite 31ade5da7bd598036b52759d7f3c1ce908dbb780 chore: add contributor email mappings for salvage a6bec08f35d75587135ec42f3c3d6d51467e8e25 fix(install): actually invoke check_cxx_compiler in both install stages 1fc9c1b41b263e244276f0b658e679328b98aa20 fix(install): refresh Playwright upgrade for current main 60cbc704303e1c11f80b4826536c178b4fc523d3 installer: check for a C++ compiler before building native Node modules 63b42d30707b8b7fe1ee637bac8767b355936d35 chore: add contributor email mappings for salvage 8fca54f9f15cc3b5a12a16b7d03e838df4bd72a7 test(bots): pin draft sweep age boundary 1b18442f36099765354d60c390d569155e662b64 fix(bots): protect new drafts from title sweep 478a09c06bcdf1f7c7773e4fd4cf639783c491df fix(browser): floor browser-use CLI subprocess PATH with sane system dirs 8f9abc98730861cff1606870f2d82d3f253fb862 fix(cron): re-anchor stale next_run_at after direct jobs.json schedule edits 5d8b0315147e0ff177a1caf44511d9505c2736c3 fix(stt): surface the selection-specific error for explicit openai STT c4871226f1127a675ddfc47f07f9236738863a17 fix(cli): honor target_model when resolving custom providers 6d48fbed1bb370d9d2c629bf26929138332842b8 fix(tui): settle tmux clipboard load on child exit 27fb1179f8bad4e7c3da0bb8d0c062f7bcda8b08 fix(tui): settle execFileNoThrow on timeout even when a daemon holds stdio 74e6885f0d8df98c223feedeb032376fd834b3d9 fix(review): fail-closed compressor detachment + warm-cache first request (#93057 review) 4202a508fdd977df1601ec90e578a850cf28be97 fix(review): bound same-model background review replay 2033f4cc34dc861ed5144246f39b98de1589a031 fix(agent): separate cancellation diagnostics from tool output c1c0efa375cb34da85936676c63fbcc3da50e320 fix(code-exec): preserve interrupt cancellation source ee8a66233f4853c091976005a2d0f8245b3eceea test(gateway): preserve replacement handles across close races 80cec2785dab6a400f79bf0d0e3b1157549ee81d fix(gateway): preserve routing state across recovery 4b659f0e3301d895f8b9d806c75009742e897e0b fix(gateway): retry failed session database opens 31a01f373bb520703e26fece6bb106255c2d55b2 fix(state): make automatic repair non-destructive a2a43f7e82d1d60255ffcdd1ee7f63224c992a89 fix(agent): widen composite-id alias matching to the compressor; unify variant policy owners (#63000) 5496d5995ab7f8391d92e3ff35c0f196b5c52b01 fix(agent): preserve tool results across ID variants a9e46229b265f36335b16310d1aecbcc6204bc7b fix: sniff fast-path keys on binary magic only, not NUL presence 92edb861be3d2530818f604ec8316a2d2a5841c1 fix(cron): close NUL-padded script bypass in lifecycle guard da30db8e8c368351c1de8cbe688e3d40b2f8e817 fix(cron): scan dot-operator sourced scripts in lifecycle guard f35d7437e85c9fb2e9f081ec18fcade343556097 Inspired by Poke: /mute makes silence a harness state command, not a model decision b4d4167d42b7438f711036ba16d732b18e791a54 fix(gateway): lazy/unpersisted resume also rebinds transport and cancels the pending reap 65c58651b0e34ab3d2c25b7024609ef9c7b7ffef feat: review slot appears in every aux-model picker (desktop, dashboard, CLI) 0c713049ef544481f92f9e2a87db041de4e89d2c chore: add contributor email mapping for zgqq 9aa0721b23e9d738edbddaa24598976bcf0ae3d6 fix: inert heredoc bodies no longer trip the gateway lifecycle guard (#88336) c94ee2e06feb12cd21e94be9a558dd070cd45024 chore: add contributor email mappings for arcimun and KeaneYan b34edd6b019887363a792e058fd86f0670f173a5 fix: execute_code and argv-list payloads no longer bypass the gateway lifecycle guard (#68289) 1c791cbfe67dcf0da5bdf6fdd80e075018d6df8d fix(gateway): resolve uninstall lifecycle guard conflict ca8a598787e687061d0fc57fa450f3aecfe23881 chore: add contributor email mapping for 03farren 679e07a074a838568933b90e716c84a9a1f9fe07 fix(gateway): close order-dependency + missing-verb gap in launchctl lifecycle guards fa63c3e1c26496a29632713646a5686cd6d8917e chore: add contributor email mapping for acewong7 acf82456077b7e7340c63b02f9409743ee4ab2b6 fix(tools): pass single_query_deny_message to the ssh-config write approval gate dd2b5172e458621b9691c16d2f973d8733dad6db fix: pass single_query_deny_message to approval gate for ssh config writes 20e308fea70533bf3bfa5b91f318e88156e7e8de fix: use lookbehind anchor so binary-decoded and remote-read content still scans ec169b4885fd8a58b3d0fa64dc03923c61345413 chore: add contributor email mapping for eaglezzz0522-cloud 180f98112569225b5fba6d4d3193f62ccdacbbe1 fix: lifecycle guard Branch A anchors the CLI name at command position (#77173 path false positive) 778c384120cbeb7df0460d12a936b67b4caea78e chore: map JinUltimate1995 contributor email 51239e8e2a9d88d4489e0a484b08b769160b54e4 fix(vision): forward the API key to the server-type probe and cache failed verdicts 4ca993c746e319ccc063c1f6679baf7ff82ae29b fix(image_routing): stop fingerprint-probing remote OpenAI-compatible endpoints fe483de4d3e7b5340e2dbb16253dca5914bbe31e fix(agent): keep max-iteration warnings out of quiet stdout 36bbb41d6c4a25f043edac0fe28d710bf909741b fix(desktop): single-flight tolerates sync resume runners; delegate tests assert owner routing 0b2e8b8a3b7c6127e697e0f798a0fb25d681332b docs: dashboard ws keepalive + orphan-reap grace config keys b0af119963e36e045195c12a1f0c6552c85da468 fix(desktop): resolve the owning remote profile before a hint-less session read falls through to local 09047ec69cf5e3d4bdc6f8b111961e516d09b18f fix(desktop): route approval.respond through the session's owner, not the ambient socket 77dd0699465815d6160548becbf92b267c1b505a fix(desktop): single-flight session.resume per stored id + adopt-or-reuse on drift-abort 18e941ac2fdca2185209e3cb80baf57957cd269a fix(desktop): make the explicit-queue-target recovery regression load-bearing 11fd82cf20d7c2356197e95ec79f457b06d28e12 fix(desktop): isolate explicit queued submit recovery 534719259cacc5897ac30f93cce70dc6f1ec8a06 fix(desktop): recover routed submits after reconnect d12bc0c4d9d502ed921d6d086f7f7b42ebbd5e63 fix(desktop): active gateway is never a session-RPC routing authority 319e77eea44171c3c18f3cc1b57ea8af3c69b8c5 fix(desktop): clarify preserved session tile recovery 72f6127b98f20a170e9adb2c90c3680144f7d1d5 fix(desktop): preserve live session tiles after reconnect febed060ab44bcfa35388ba45b88cb6ac78fbe21 fix(desktop): force gateway reconnect after wake 9b3f60c02924d5efbb3b8e07167e0c1bf42a86b7 fix(gateway): resolve approval.respond by durable identity before failing 4001 fdd8d75ba06e949c46d8fbb4037a0130b353dc60 fix(gateway): make ws keepalive and orphan-reap grace config-driven (#79635) 4aa162b30d44967f5fd4b1f2315d258d10461702 fix(gateway): cancel pending WS-orphan reaps on resume and supersede stale runtimes quietly f2dbd37ef9c812575dcee1c3f430eaee7fcd16c7 fix(gateway): re-bind session transport to a surviving window on pop-out close 3dd0ed1d3865c1f8f6fbb4a89a6d9ab69a7f7c71 fix(tui-gateway): bound the interrupt-then-reap poll chain (review finding) 14b50f5eddbe1566d4d99ae4a3fad0b7473f0d04 fix(tui-gateway): interrupt turns after websocket disconnect 30a37668d9ad995a4843c8c6d41837ed38966f53 fix(tui): reschedule WS orphan reap while a turn is still running 76c356c28a9fe4afb3195053c6bb89bf1839b298 fmt(js): `npm run fix` on merge (#93381) 3dc77acdc35578494ba88576579113ee9b8cb262 feat(desktop): OAuth sign-in for registry connections; keep profile picks on the browsed source (#92194) 12395e57b4a3e7fa3610408c043011ec7ba2f8ad feat: /review command — independent reviewer subagent on every surface 0c1f1d2fe54f5f1f4c2df2c8a908a8932138bb2a fix(desktop): stop Inbox-style session cards from clipping text (#93036) d962b21fa487d4bb16862ea4f28b774106f35ca3 fmt(js): `npm run fix` on merge (#93371) 19e56b446b9d94e390394a803ca78e9f73094c4a test(desktop): cover unsigned OAuth latch vs needsOauthLogin-only retry 48f2ccb65c641ca0b034a84045defc7a452dcc2e fix(desktop): latch unsigned OAuth boots so the Sign in overlay stays put 32df205c6878e1fba94803682fbd7c75284d031f Port from nearai/ironclaw#7756: bound the last unbounded CI job bdeea27fd45812951da3110e993e05575f71bb81 Port from nearai/ironclaw#7378: doc-fact contract test keeps slash-commands.md in sync with the command registry 8bfd26e281ef34671c87077f3b4ddd2ac2df4513 chore: add contributor email mapping for DreamyMoonMouse 4a1a10959651354dc4f270eb24e00abacaa16c7d ci(stress): run standalone kernel stress scripts d246c3a55d0cfcbad5af4ee6b07d3322b953462a fix(telegram): expose hidden text-link URLs 8f0ec90c6e5a8b23b875042cfeae33a47df9faeb fix(pairing): accept spaced approval codes 175054c14b54404663d8614a178280cffe6062eb chore: add contributor email mapping for ccowan93 637716755cb81e01eccd0aeea6ea41a251350a9f fix(cli): -Q stdout carries only the final response — no tool diffs, spinner lines, or reasoning 8e2e3202da385a26686e5ccc1249a65466e40aba fix: suppress reasoning display in quiet single-query mode faa2399e2b3fe4907051209ba2982622670a85a4 fix(agent): make the pre-call dedup pass variant-aware; widen batch regression coverage (#93251) 36b4da5489768709e9fc6d1e4000ec9228a00307 fix: repair_message_sequence drops tool results for SDK tool_call objects b9a62f6590daef87c0f1afd1ac539b762e4cf61a fix(agent): consume every tool_call id variant when pairing tool results 52fb5081cc644cc6d348d1ebb0631aab6e0859d8 fix(compression): register both id/call_id variants in _sanitize_tool_pairs 1a83b1e588399cba074e7ceb3bc34e68db998427 fix(agent): keep tool results keyed on a tool_call's id variant (#55626) 4a3e5c4094d96c2e184dead99bccb4f4aabb2e1b chore: add contributor email mapping for vanniaxel06 6d501c295880fe6f26c9b8adadaab8b76af4c9d3 fix(cron): make gateway lifecycle matching shell-token aware (#80269) 320d884d8862360fbca7d0bfda70e487fcfa7bc9 fix(cron): cover bootout/remove/disable in the gateway lifecycle guard b463840c282fc7ea42936f37d050dc01d924055a fix(desktop): route each session RPC by its target session, not the focused tile c595d3564ac06d7c1ff0e068de24e2e2118a7f35 fix(cron): block profile-flag gateway restart/stop when self-targeting (#78028) 45fcaaa54aae2d03ab816fb61c6ba312d3ac67b8 test: regression coverage for #92372 boundary + quote-aware segmentation a74eb2dd419bbe95249c3bf8dba6812da95c0dc4 fix(lifecycle_guard): quote-aware command segmentation and word boundaries 58d84d3e03259b7d72352bbcadce26838c798e48 fix(desktop): rebind legacy-remote-primary Bot tiles via live-connection scoping 6b4a2eebc8592e38b658ec7d32c63bdf54794986 fix(desktop): rebind Bot Chats after gateway restart b8cd00f96877e2d50bba23320acb404226de1d46 fix: set failed=True for repeated_outer_errors exit + drop append_message 56e7fd2adf094f2f0c8db1aaa9ca31ba2f126a5d fix(loop): bound outer-loop error retries per turn instead of relying on max_iterations (#92450) f303c695d7af3c8482bec3b901f74939f421092a fmt(js): `npm run fix` on merge (#93300) 3eb761c51c5b1871d231ae45df233e31e1116ace Merge pull request #93296 from kshitijk4poor/fix/rpc-target-session-routing 8db59d08f45ba6285908be554da14e96ce5b3643 fix(desktop): wait 5m before reconnect warning toast f2c204d68934343509f6faab5ca7f697702440ca fix(desktop): stop transient remote ticket blips locking the chat 4d16a1a73c3f9b9fd989d8ade485c1653a7b537d test(dashboard-auth): cover empty login route behavior bd13d593a9fc8c988db7ecf95426dbcc08293e3b fix(dashboard-auth): correct authentication docs anchor 7cc92cb134d3fce998e0435f50b41c86d0e44966 fix(dashboard-auth): replace stale insecure guidance 71bc09c1c6101732c2317f792f360dd819807cfd Port pattern from zed-industries/zed#62729: request ungated Codex model catalog (clean-room) 3a263b551bb0764511f0c8b9e520dbec13e4755a fix(desktop): route session RPCs by their own target session, not the focused tile 26cf4565984d34bbbe58a32f7ec8784144efcd41 refactor: reconcile with #93269 — one shared shutdown predicate, keep both guard sites 9ea7fe993869109767f05a2e0611d8f15a30fabd fix: quitting the CLI no longer spams shutdown-race API errors onto the shell c9d8712f15e20c6842da9f1a82a3046f4b42d5cb fix(desktop): sort nous-alt imports and mark it first-party 253dde4b137336d761dceca7e785001f04104f82 feat(desktop): bring the old Nous palette back as Nous Alt 0a171fffef0e50aef4b26718c484431f4247a4bb fix(desktop): completed /goal chip no longer sticks to the composer forever aa9aaaa6cb31753c3b274db6825fbd0af5f27120 test: mock ownership probe in stop-guard test instead of raw env var 88259cb3adacc1957d28cc04f4ee55b577cdb742 chore: add contributor email mapping for nbxuhk 5bb657832da04b146e404dcbae7d644dabef3ed6 test: regression coverage for inherited-env lifecycle guard bypass (#92560) 0e038425db3db793ba827936250677c1b5970e6f fix: gateway lifecycle guards gate on process ownership, not inherited env d861fbe55073dbd9e295eaf2c1fd16c8af54f7da fix(plugins): dispose persistent auth registrations on plugin disable and re-discovery drop b2ade2388df1844e55ebd5b82f6dd91360b9fc6f fix(dashboard-auth): keep the provider registry alive across per-home plugin-manager unloads 165d1849e25c7653a4c1879ca8410475eb8a7d52 fix(approval): stop the CLI and ACP offering a scope the protected gate discards 04154a37d3d8b21455ae2096cc6a5f2f8f5b7859 fix(desktop): show approvals for protected file writes 4e8419dadb502f762d09dad5de6537847ae10318 fix(gateway): honor approval scope capabilities e63786fc23a91a01bf033db461f65c36acc2fc30 fix(agent): break immediately on interpreter shutdown in conversation loop 650cf3348f8b3912e09da43b8ab96c62d88de2df test(bot-mode): pin the Bots home re-front budget 2350f4dc609f615f06ef073fb5b94a110ea5e84d fix(bot-mode): bound the Bots home re-front so the view stops strobing 127a72b2237004682cc0d61658a16f3a7210d4ff test(bot-mode): pin the cronjob inspector, and drop a source-regex test 913de4eca657f1663a94f50cece2118d1b09ad54 fix(bot-mode): a cronjob row opens — clicking one no longer does nothing 9fe78dda6ae755e26b06cb8c30a8e8f1c1f4fb07 test(desktop): pin Bot Mode in-app browser pane visibility beb848358d365b8742b9dcee069f07b34b944770 fix(desktop): show the in-app browser in Bot Mode 2ebb1cb41400660ccc3712157c18b3d39f278ab6 fix(kanban): reuse event stream database connection b7cb32122312589edb967e1722d87bae48dd818e fix(dashboard): preserve placeholder cwd fallback 3a8172114707dab067289d38bae44f1bb468ecf6 fix(dashboard): preserve exported terminal overrides 5a85c4a77b8d08eea2c63af8acbb3803df8cc8f8 fix(dashboard): scope terminal config to selected profile 739bc555b1932e66c169b20edec3a48368e2dd3f Merge pull request #93217 from kshitijk4poor/feat/bot-reap-scope 4865194772e6af2af7ac974f73b6f50454264cb5 fix(bot-mode): review follow-ups for recoverable-archive resurrection bef31fb06bbfae3e2ded660e0aceafe35399eca2 fix(bot-mode): resurrect canonical Bot Chat archived by recoverable reasons on reopen (#92687) 96df9525299c5b54645bdebecf2f0b9ecbcd1134 Merge pull request #93207 from kshitijk4poor/fix/bot-room-races 2df30612f9839f9bfde43d5fb541074e68b81bbb Merge pull request #93150 from kshitijk4poor/feat/bot-turn-semaphore a234e93654d9fa9e6ce1c53ca9b1f0a131d2cb4b fix(desktop): anchor the during-turn tail by entry id, not index 2863e8fb5da4dc47d055c999fa3b0743ae12ce46 fix(desktop): review follow-ups for the room-race fixes c460e87d10def7cf0c11b3b045156147b40c3dd5 fix(bot-mode): review follow-ups for the turn lock 0c474d782073266a76528ff98b3a1957714e5d44 fix(desktop): make member stop sticky — per-member hold until explicit resume (#93129) 58a8cc7dd1557439578f2370e98a2c450f123109 chore: consolidate turn_wait_seconds into the merged bot_mode config section ae6baf333f365bf8e62ae020836264a33f519ceb fix(desktop): drop superseded group-chat turns and dedupe adjacent identical replies (#93127) a07ada235c52b928e7977b4c101767ca0d929371 fix(test): deterministic delivery-spawn sentinel + fold bot_mode into agent config tab ac3f9a2dc4fe20fc24c1cfbdabf500a9d2b41ef3 feat(bot-mode): per-profile turn lock — concurrent deliveries queue instead of racing (#93091) 981101239a064c020a9d18fc3b1060ae306934ed Merge pull request #93151 from kshitijk4poor/feat/bot-push-drain 1aadf863f9d6685afc9373c7bc15d8d2c45e9008 test(bot-mode): deterministic watermark timestamps + reset rerun flag on relay stop bb63e0c4c7469f80115a9cf982ed224d8ffe49d0 fix(bot-mode): re-schedule a push that races an in-flight drain + pin the watermark's fire-again contract 9c829f965dcd4b2ee536dbafcf555f58b0d110b5 feat(bot-mode): push-notified relay drain with poll backstop (#93091) 2eaa863112d2980bbe6f15ea409a6a29e50964fe Merge pull request #93102 from kshitijk4poor/feat/bot-envelope-ttl 2df849b57aa86a329a34f140d488753cfda1e8d7 Merge pull request #93103 from kshitijk4poor/feat/bot-attention-badge e00d6c1995ea0fc34e3b6722b8f800baaf89d2ca fix(desktop): don't push a live connection as absent when its profile fetch blips 3ac63066555a0e853b64b9d59a911a202c70e819 fix(web): fold single-field bot_mode config section into agent tab b96369212c2219acb3b13ba201945e22f4e8a543 feat(bot-mode): envelope TTL + offline fast-fail for bot relay (#93091 item 2) 6994851694a98c9078bd90f7bc562f7b33f9bb51 fix(bot-mode): require status-code context for bare numeric classifier rules 64eb6bb7fc029ba03331abac379288c30b9e2157 feat(bot-mode): typed failure-reason codes for bot turns and relay replies (#93091 item 1) 387698a60d0984f64180b07ba72f7c5d988a3f5e fix(desktop): badge active-gateway bots too — resolve the relay attention key for local rows 0159b51f2b1cdaa8fcf65d181fc0527692724fae Merge pull request #93125 from kshitijk4poor/test/93080-flipback-assert fc0b2a0ab36ef851948d80d4603952961fbbba1b fmt(js): `npm run fix` on merge (#93123) 49f3e67e45300090ddf1c350519f3b9b9b9f0c60 test(desktop): assert the isDisabled flip-back actually notifies 90803f22a5d299a7542f44f3743ea9902ef1d25d fix(desktop): track isDisabled flips in the adapter no-op notify gate 4019518edd6697e09e440581378e53adcb115e05 fix(desktop): stop no-op adapter swaps notifying the thread runtime + derive backend venv from the selected interpreter d4f426792b25f0768e714392ef2d2aa84a84c3b6 feat(desktop): needs-attention badge for background bot failures (#93091 item 3) 1a6c910a485d744b87e9926cc188d041e3106a27 test: regression conformance suites for the 7 recurring Aug-2026 bug classes 376950114ae1795ce58f9552ac410d13b3df0dcf fix(update): restart a booted-out launchd gateway instead of silently skipping it (#74973, salvage #75021) 4ce24653d0a0db4993a95f938d0c441b01eb729d fix(desktop): active gateway is never a session-RPC routing authority f293e7206b4ddd66042329442c6afebc19a8808d fix(dashboard): detect stale code after hermes update and refuse model picker with clear 503 (#86207) 9452bca388f4644de000c5d99ebb0f9fab28d74a fix(desktop): route bot-chat RPCs to the bot's own gateway via tile ownerRoute (#92956) d5281f59819d2ea2ce6754faec2ce317c92366c8 feat(bot-mode): a reclaimed bot chat re-resumes itself — no stale-id error on the next send f530cd2b54cd1a7605f89249b414199350f4e883 fix(bot-mode): group rooms name renamed bots — 'Lucy is thinking…', never a stale 'Hermes' 2c244f0751b2b8c6a30f039caac1a33349f6b66d fix(desktop): route hidden Bot Chat RPCs to the owning profile backend (4001 session-not-found) (#92928) dfc81969a4dd368dc6ea67c81e2f7b55aac17cc5 test(tool-search): kill the shared-stemmer mutant with cache-missing input bf32ea0d97fcaa489eef591643e7dcbb1d8ffc60 fix(tool-search): re-key the verdict-snapshot cache on registry mutation 706f33d42415d706b8f93dd299f4b317428e4a6b feat(update): sibling profiles' configs migrate with the fleet — no more silent version drift (#20438/#54926/#79048) bdf10471b5dff0d67d172065f7dbf9f4c47c4c1b fix(desktop): Send Diagnostics dialog no longer clips the link behind a horizontal scrollbar fe2e6b76c4847146dbb2565c546f744f828996c5 fix(tui-gateway): messaging a never-used bot no longer fails with 'session not found' a4c6c6bddb75b260a5323592b1f6c2659fafab14 fix(bot-mode): first click on a bot opens its chat — the home no longer bounces over it 42e39d06469310c251dfa7078fdad6266f3c6d97 test: live Windows E2E for plan reconciliation (wine2e lane) 18b7fc82b66f2850172a45d0e08b8c11d27e63cb feat(update): the plan is now the restart worklist — every planned runtime must be accounted for (#91277 Phase 2) 1bf93660f1d7a5c7d37ba525687af245044ad2ea fix(update): verify launchd is supervising the gateway after a restart 102a30f6fb37e30d07ba2b113a2ccb87cb765f03 fix(desktop): typing /voice points at the composer voice button 891ec3fb6c41e912e9d2120dd4009534814a9e7a fmt(js): `npm run fix` on merge (#92896) dfcef70061583ed98be8503756744c19423e73d7 fix(update): stop a gateway we cannot relaunch instead of leaving it on stale code 2ec229ec5adfe7372d5a858802af406f82b5beb0 fixup: roster query keeps SDK ambient owner route; alias index refresh preserved 7ead9b93de49d2b1f70bf38b7d7b671fa1759cec fix(desktop): resolve Bot tiles on their owner 8523819fcf881f8fc903bcd46d68abf2075fb979 refactor(desktop): consume upstream Bot owner routing 9ff7f3325c24d937caf9b10546dcf8718dec1dcd fix(desktop): preserve cross-realm Bot registry errors a81854a2bd81eb73b83761eb077c75616313b276 fix(desktop): preserve Bot tabs across owner lifecycles 856fc66d19b679cf6440aadf122ac5bb0d75984a fix(desktop): bound Bot owner wake races b42d8279edb45937559cb620eb3c8bb5b2222998 feat(desktop): retain Bot group drafts by room 9b36c2d43ce952969ba22287feb89c7c55403459 feat(desktop): make new Bot tabs owner-aware b8b6f43280430b91c5e59d93e7b16fca49347260 feat(desktop): define workspace-scoped pane ownership 613244cbb1280dc9fac467e5fe30e2fa93787687 feat(desktop): organize the global bot roster b766607b5b92879c21ffd767465487e6de725868 test: adapt misdelivery tests to the shared profile_matches_home seam 6cb1085d3d8b7af6849ff902dc58a88b7408da0c fix(gateway): /p// on a non-multiplex gateway fails closed instead of serving the owner profile 265bdcac822804daf4448e227f766284b2ab46da fix(api-server): a /p/ prefix on a non-multiplexed gateway fails closed instead of misdelivering 764dba69532e2ead23f57c2db3998ec007a3d3ce fix(bot-relay): sweep stale relay artifacts + never leak the deliver tempfile 793fba428ade996975cb300eb3aa512ebe6ffb41 fix(bot-mode): reap orphaned DM payloads from gateway housekeeping 08742d0e32a1a3b7e9a795fe5d0923064bcbb0c6 fix(bot-mode): isolate DM tempfiles per user 0ae18cdae022e5071b318b797bf896e8c7c97057 test(bot-mode): cover delivery runner and sweep orphans eaa61ff62d556055542cd9fb10857d3d53a2f9f5 fix(bot-mode): clean up message tempfiles 1ad4733343af1ff48733b992d9aa6e1abf59a187 feat(desktop): configure per-profile remote overrides from the profile rail 9e18197745cc12f2c93196d67260bdcd23b51adb fix(cli): one-shot runs linger for notify_on_complete background processes so Bot Mode replies survive parent exit 3638961da890c426ee93dcddfaf78d8e1be2420e fix(desktop): Bot Mode keeps Cloud alias identity after hosted handoff 231e613d3d66a9e3d150741481839092053b2f3e fix(peer): resolve hidden canonical Bot Chats in hermes peer dm 0c14f060dbd325b41e287ab9c69b8c38ff9fa7ad fix: import managed_python_env at the git-path site; assert the managed-env contract in the repair test 1b7aa5425dc0fa3039f10a527f5829ee937c8492 chore: map contributor email for salvage attribution fbfdb9312b4c5aa18ce4232ffd039451219874cd fix(update): widen UV-env isolation to the sibling dependency-sync sites 6ce145f38f8189d70777d2321144a159ad40fb5d test(update): lock managed uv-env isolation regression 08f5a0a98ba5094ef8ffe8d460037a83565620fe fix(update): isolate pip install from third-party UV env vars eebe01790d2799fd23bc5588960ac5901efea2e7 test: pin the relay verdict, not the host-dependent reason string c012a364eb0d97a087eb2f350eeb2af722bd74c5 fix(desktop): spoken replies use the connected gateway's TTS, not a stowaway local backend 10f0d2278bf7ea7dd005e5c8b1b9dc47d108a1ec feat(desktop): client-direct voice — use the active profile's STT/TTS keys from the desktop, no audio relay 933c209e96630a6026b0a18ecf6a86e65110f5b8 fix(compression): -900k Codex variants keep the global 50% threshold; 85% autoraise stays on 272K base slugs 30d4555085ec684ff140d5841b5456b5d2291a72 fix(vision): review follow-ups — LA/PA JPEG guard, third embed site c02fe6501bb1f59e47ebdfb55dcc649091ce0f42 fix(vision): shrink oversized history embeds via JPEG quality, not halving b7544dba011d2e2596be82df2a6d3d239ae349d7 fix(compression): share one image-strip policy across demote and retire passes 5c1a304ce890276a4334d8ced3f29ffeedbbbf93 fix: derive the pinned interpreter's Scripts dir via venv_bin_dir (#76105 lint) a9dda9ab4a142f21f011155565a2d3925c52d1b4 chore: map contributor email for salvage attribution 27d7d566008fdc51df786087ed608a6fa313d0b8 fix(test): stale-VIRTUAL_ENV fixture accepts strict_quarantine kwarg 33e813da17fc7aeaff90ae96a03c9674c46100f6 fix(update): address review on stale-VIRTUAL_ENV pin 13f9d18e33cc1bf5d8b13e7d6f480c4bb7f9a2b7 fix(update): pin uv installs to the running interpreter when VIRTUAL_ENV is stale d3e087fd8c2441577bac614c755ec46a1c4e7ee8 feat(bot-mode): bots on every Desktop connection can message each other 7b89e177745fab390d2e7bdbf5e231bf164be24f fix(model): single exact eligibility predicate for -900k variants; reject ineligible aliases 63a9c26fbe6ca50138814111c21a4f4550ea85c1 feat(model): Codex GPT slugs default back to 272K; explicit -900k picker variants opt into the verified large window 0430e3c719ff690fb031658a3a9b58b7756edb65 fix: harden the metadata-walk probe (directory-named plugin.js regression test, lint) 6a4e212ee034f01f2253d6fac9549bfc9a02901d fix(desktop): stop missing plugin entries from flooding IPC logs 503d863fcd2cbfc0be5a6d6c536fae2e98aa4204 fix(install): never strand hermes.exe when a Windows update fails f377140e3ddb4c98a9e0b42c4497b8bb46ca697c fmt(js): `npm run fix` on merge (#92815) ecf63ad3f3a0de84513c02786a481c63358aed0f fix: desktop plugins over 512 KiB no longer load truncated 4621a2d699daeaa92efb93dae9db076308cbe823 test: drop vacuous identity assertions from marker sync guard (#92231 review) 183e53656ee7920ddd6795c61b3ddcd18e224f8e docs: make the mutate-then-persist marker contract explicit (#92231 review) 72ae855da517b80d73b825321cad2b5b8e25a56b refactor: consolidate _db_persisted literal + marker-insensitive no-op check (#92231 follow-up) 016ba661764fd59a87a728934feec6b98169647c fix: stamp _db_persisted at row load time so resumed transcripts never re-append (#92231) 13eadb373532ee238566a2dd809889b1a7083132 test(tool-search): exercise stemmer in parallel dff84f18901c3b3c082e7783ea03b7bb7b9ef6c7 fix(browser): cap browser_vision native embeds for history reuse 7ff2fe8bc9fe9eb8881cba053892cb99e26688f4 fix(compression): retire stale vision tool images in the protected tail 21a93f0a67088ebaf74ce15078286d71f1c6a770 fix(vision): size native embeds for history reuse 3c44cd0c67b5a88aa7b2846d1a5304f18334db26 docs: record why the reap grace window exists in the reaper docstring b44c2bdab28326e568abad176261b012a0858c6e fix(desktop): spare concurrently starting backends 8804e78354c913165687cc5397dcc6cc764bb118 feat(dashboard): Desktop and dashboard read the update receipt instead of inferring success (#91277 Phase-1 bullet 3) 091106092b5d6488c7f9adc94c613cfb8fe21363 fix(dashboard): recover update success after restart 7bf418bad3742469e43ff5e444e40bcbcdfea908 fix(livetest): render multi-query bridge calls 8dff55e6544352de9da8b8bc01e4cc031dbfc47d refactor(tool-search): keep batch caps internal 463c956ce79e92d148c6e723998e1b6a77662adc perf(tool-search): cache stems and bound result metadata 7bbf5563181129fcc19a08d8cfe38a48baac5771 fix(tool-describe): separate missing and direct names af10975281943a3878ffc50e8e593e6c5f51f7be fix(tool-search): preserve exact and per-query ranking semantics 4553e71993dbeb21449f1ef4d6fad069adb20915 fix(test): isolate the fork-sync test from the host machine; abort at the reload proof point e366df6889e8554870ab1ededd83e70eb5ab0235 fix(cli): treat a fork's upstream sync as an update b4ba2a0a3d045c8a1edb29f0acb72ce8306fb89a feat(tool-search): multi-query search, batched describe, Snowball stemming 1684877868807aad695dd714b9109a216d5741ae fix(update): a gateway killed by the restart phase and never replaced now fails the fleet check (DOWN row) 32a8a7031e8248b05db8142b0d7349616fda71fa chore: map contributor email for salvage attribution 5f0a8f8739a0d993dc60dbd3c070ef883ed26964 fix(picker): harden keyless provider gate logging and credentials path validation b9f17ba3f10a9947ba69a5ab6cc4faa938235a44 fix(picker): scope Vertex explicit-config to Hermes signals, not ambient ADC 3503c06d80aff4a553837660ff7fd495be732b5d fix: surface Bedrock in explicit-only model pickers when AWS env credentials are set 9ce46a09681c0b632aecdedfc74bbe25fbaf3e15 fix(models): bind Anthropic pool key to its endpoint 8ede2e147278e2448d20fe310249b8cffa9cf463 fix(models): discover Anthropic pool API keys e132e11ea7b86d43381941745af9d7ebb44e3495 Merge pull request #92731 from NousResearch/salv/90006-remote-bots dee40c0420dbbbb948476b7de34b80f9f93dc54a fix(backup): stop zipping managed runtime trees; unify the two backup walks e6962b818ca447cd5216cfc8aa7c3ddbc8e915dd style: eslint --fix across src/ + electron/ (CI lints the full tree); drop unused destructure 894d02191d181605cf94b37e3d0a6cd7f088df66 Merge current main 278dac43b1f83fd59c0c00530239f36237490871 chore: map contributor email for attribution gate 4e4ee7ee75cc19ea4da089e0dd1bf549905df604 style: eslint --fix on merged TS surfaces 0404020f7b944398db529a0d09726a0e5f3c06a4 Merge PR #90006: connection-bound Bot Mode actions, reconciled with name-identity + fail-closed canonical resolution cc87d84b6272c7cb83a1314c830c8c74f77fd689 feat(image-gen): Kling Image v3 in the FAL catalog (t2i + singular-key i2i) 84d7dfaae815ef2fbcef24dea6f03983964cd42d chore: map contributor email for salvage attribution ae518782ccf285a36d33c7089bb3dae78708ca35 fix(picker): harden keyless provider gate logging and credentials path validation 7a55868d5dc9fadd168331e2640639f52b5f79b5 fix(picker): scope Vertex explicit-config to Hermes signals, not ambient ADC bd543feb16eeb8dd616f158b3520591fcde4d5b7 fix: surface Bedrock in explicit-only model pickers when AWS env credentials are set 2e98d8cf639c5bcf86526d10897b324c80ba981b feat(video-gen): Kling 3.0 Standard + Pro families on the FAL backend 8b09a9df8476010a78e86d6c32254b4ac14a8c4f fmt(js): `npm run fix` on merge (#92718) 783d40a514476c48d5511bf5d20d47fa41171e97 fix(models): bind Anthropic pool key to its endpoint 38bfcea3e00d87a3f82474dd5ed29d034c435217 fix(models): discover Anthropic pool API keys d49d495c2b07a31b5d314f22946be24917d0ca4b fmt(js): `npm run fix` on merge (#92714) 38ce2d7553c42af591a59087cb62ea018f9e6917 fix(desktop): enforce exact route identity authority 4f0e466e5d1cc136fbef19b38a75dd4c936c0834 fix: accept pool-only Anthropic OAuth entries in the desktop picker filter aa24d8780171d4f9027ac6fc533cd3b0e7daf059 chore: map contributor email for salvage attribution 4ec57d56a941e8785e971d9e642f2545a9814a6f fix(inventory): keep Anthropic OAuth logins visible in desktop pickers b26425574899811a5bfe029fe01946334ce3841d test(deferral): cover cache and indexing regressions af83027b70420584c348277c1549b5ef2827f7ed fix(tool-search): normalize catalog indexing and summaries b91e6650517bdc3340ebac89a95dd44505bb29ef fix(deferral): bound availability cache staleness 2a379a167569c69f96eeb9e1041891ccf8572d45 chore: map salvage contributors (klaus765, ctaylor86) c942cd9ea1432fab41c12c65a95732c475f768ea fix(desktop): settings scope requests can never target primary by accident abd7f75b8d07271e094ddc81bf556030f6e793ac fix(desktop): keep Messaging on active profile 680b11503cbff4a5d3865f768784b238a9e76fae fix(desktop): model settings follow active profile instead of primary 8b86097a62ad9d35c74a6a62e2cf233c5ceb038d fix(gateway): honor env-configured local backends and persist Tool Gateway declines f93593d165f9150763b5d89a0194427736e1c40b test(gateway): cover browser-use as an explicit non-nous selection ce9ddd35e7922594ef6fc2a468bbf3b3b5765c86 fix(gateway): fix 3-tuple/4-tuple arity crash in get_gateway_eligible_tools 4edb24276fb334a64ef310f29b13aaca9baeb9df fix(tools): don't pre-check keyless local backends in Tool Gateway checklist f4067774aa45f1d86bdc49f5319d7eeb080ca7be fix(update): token-based control-plane classifier + live E2E for the Desktop-lifecycle cold-start skip (#76129 salvage follow-up) 4ccc4b69319879faf568b38aea140ea443e0e8de fix(update): skip Windows gateway cold-start when Desktop owns lifecycle 87b645f52ccc807df6304bcf1a1d4daa7e53f2ed fix(desktop): a failed Bot Chat registry lookup no longer forks the bot's forever chat ca8d4cb31eb778c667d20b1da53e22d1805b9c2b Merge branch 'main' into feat/local-models d3f45c735fd0e415d036848418626f4ea309d242 feat(cli): add display.status_bar.fields config for customizing status bar d0f2c43a9cec43a3428bbe2ddc865610aaea7cb2 fix(tool-search): round-2 review hardening — scope-cache TOCTOU, named guard locals, derived abbrev window, last-good cap 9b8f472148b4a4df66e406364496270eb2913da0 fix(tool-search): harden the deferral fixes after adversarial review c9c44d0df92279815bfd00ad53b82a256781d497 Merge pull request #92636 from NousResearch/fix/windows-launcher-managed-bin 5186dc65549ce3d15c540a45a9bde2f3194f0ce9 fix(tool-search): five deferral-layer fixes — bridge batch barrier, listing truncation, source indexing, check_fn memo staleness, docs 0b01599eefcb2ec8d464c8c7b2b11289bb37c207 fix(tests): repair the two Linux-lane CI failures on this branch 820c9b7326975045c079783fea83a76474208894 fix(mcp): clamp generated MCP tool names to 64 chars fd760435c6688a2b6c6b7436dde30e267237baef test(bedrock): make the botocore stub windows airtight — kills the vendored-import flake 0c435f4601c009eee91357cd9f46557dfb10f127 fix(update): reword refusal message — footgun linter matched prose 'venv open (' as bare open() 83864c0b5d8464bdd1afa3b6bae2d9b57332055c fix(update): a contended venv is never mutated — failed shim quarantine now refuses instead of warning (#87331) fe95ed3930e3fe203c703a3893928e31b5ccbb69 Merge origin/main: reconcile with PR #92092 (in-checkout launcher restore) cbceac8594f0957792b09ff80433a3c57a182a99 Port from QwenLM/qwen-code#9709: reject session titles that echo the prompt's own examples 6f1b3769f1f42534ffb267e5aa9ca8574a9c31d6 chore: map contributor email for attribution audit d51314704a2c00645ae8580a33e2cd1d364f4d96 fix(pricing): match custom: overrides against normalized billing routes; document pricing_overrides 26466abd7becb462d4fee66e642fe46ff1528aac feat(pricing): support user-supplied pricing_overrides in config.yaml 65f0d2c99d6bff718d7d55e27534a97f6d64c7eb fix(security): escape OAuth error parameter in callback HTML to prevent reflected XSS 7a54ab22e648a0d2d7e740fad908dda93f025820 fix(gateway): control-socket hardening from #92447 post-merge review 2af31a033f37b48541edd5e76a10ba2295973a8b chore: map contributor email for #71370 salvage bbcaad4ce06474b165f69f427590718908b56bb8 fix(redact): widen repr-field key class to mixed-case credential suffixes b1c03c8732838973240c23ff2b4e5c10f91bbdf7 fix(redact): mask secrets in Python mapping reprs 530028c213ae9eed5d7f1a826451e0edf24a11d2 test(gateway): pipe E2E compares the server's self-reported pid, tree-kills the uv trampoline 67aac4d863db4e1b5a462672d4cb6bdf7a3196ef fix(gateway): control-socket fallback survives deep TMPDIR; tests bind-location-aware d1c84fc5d37827407266e125edeaf3c4b731bf29 test(gateway): live Windows named-pipe E2E for the control socket (wine2e lane) 60b6269142db284f5142a73b4be8e6d78c0661a3 feat(gateway): gateway-owned control socket — identify/status verbs, fleet consumers prefer it over scans (#92091 step 1) 0c7c60acf6114434c9259e779b169533b91e24c5 fix(providers): address fair-share review — rearm upgrade hint, dedupe walked alternates, single status line 987064caa4f8845f605ac7346fed5b72fddfb21c fix: restore generic corruption match in FTS self-heal 50bbcbf2b483c7a15a180fe1fb6ea142b62d8928 fix(state): fail closed on unscoped SQLite corruption c80a0a551c7038517456ee0aeb60203ec92aedb6 Merge pull request #92529 from kshitijk4poor/chore/author-map-brucexu-eth 85044caebe68bda89a853980fac04b0e6796e529 chore: AUTHOR_MAP brucex2710@gmail.com -> brucexu-eth ad0f7e638509ed56c2f0e9fa062723c2796e4edf ci(desktop): drop the light variant from the msixbundle matrix fa05b08bd145ee0905cd199d5a27de516fe90fee fix(desktop): ship an MSIX manifest whose IgnorableNamespaces covers the alias namespaces f5865b2b15e0dcab252a63d1c96b13938d8d08c4 fix(desktop): report a declared pin gap before deriving its layout, and move the MSIX alias Subsystem where the schema defines it 09f6c7d1d56f6d287736db45d5dcd6b3f3f28453 fix(desktop): compile the NSIS PATH work inside the section, and keep arm64 Windows out of source builds 48a5e8983c71f8b36cd25ba0589b8badc12fdbcd ci(wine2e): include control-socket pipe live E2E in the on-demand lane (branch-scoped) 143dc8691243bd5102ca1f329f80d909648000e5 test(gateway): pipe E2E compares the server's self-reported pid, tree-kills the uv trampoline c2dc076b5930861bce265b41af7d4d6e53cc55af fix(gateway): control-socket fallback survives deep TMPDIR; tests bind-location-aware 1b792e660f082a3df5f76b345979bfc56492a6b3 test(gateway): live Windows named-pipe E2E for the control socket (wine2e lane) 51148f34e7c6e60838f3cd9240284495679f5eba feat(gateway): gateway-owned control socket — identify/status verbs, fleet consumers prefer it over scans (#92091 step 1) 13f4cfebfafbce8ac9d1bf29f66731858ed638b5 fix(skills_guard): --host flags no longer flagged as DNS exfiltration 0605279b358f0ca048a61b48e5af948769ccf095 test: guard os.geteuid() for Windows in the ACP launcher tests 5d5179d7a9c0b1535cb11254835f9dbb53bd7e80 fix(windows): remove the hermes launchers on uninstall 679e9cd2943dddf59f50486c265a7ab110ad0f19 fix(windows): stage hermes launchers in the managed binary dir, not the git checkout 0cde4dd93aa794c65fee6cc85b0b5e4eee77e8e2 chore: add contributor email mapping for EAbaracus db7dda468f26a111b497511896af7a5d9c625fe9 chore: anchor artifact ignore rules to repo root; block them from Docker image layers 0af2858a3ae4d4aac2bbc9849c9ffef4dbbae11f chore: remove committed root artifacts (log.txt, sqlite_leak_fix.png, default.tar.gz) 4b860d8193ff25bfcc3ae19632a61d9a38692bb0 fmt(js): `npm run fix` on merge (#92399) c0055b3a6d10e074296272460d7fdd3c187132f7 chore: map contributor email for Jackal991 67a5d7bcf0b3b3fbf7b3180536dc6295bc5f6813 fix(desktop): resolve Win10 translucency defaults from platform, not glass capability 40f3e58f6de96b9151170c57a0e4918d42c338d2 fix(desktop): stop manufacturing duplicate toolCallIds at the fold, repair poisoned cached tails 9f8dca34dc2adb289153edfc11cc47e0ff583f24 fix(desktop): dedupe duplicate toolCallId parts at the runtime boundary (#87857) 9aefd3b94488b28350c786f23c80d7c040b215b3 fix(tests): wait on e2e background tasks instead of a wall-clock budget ca713ccd4b67ed2ce3f84ff9a61bd6687fcce796 feat(skills): add discernment-nudge optional skill (Anthropic upstream port) b00b60f7f893e74bdb85d2395c0ab5c16cf5df76 feat(skills): add auteur optional skill — cinematic web design with executable anti-slop gates fe60775a5b1e4e2905f3a539953c1308c5700a6e tests 334bb8c63c4d019933c5cce572a8196447941b91 provision wheels fixes 99ff3fc3789cea78664e80907dd11f27cc1c2982 fmt? 20eb1bd8beb7623fca1b5e75bab39c55fa4e371d nsis installer fixes b914ebf3b1a5ea1b8f0450e69207f5ed06bfcc7f fix windows footguns a36d6704b67c5a5d45ebffc283798ee4525e44b9 Merge remote-tracking branch 'origin/main' into agent/81234-merge-20260821 fd41164861575f5564cdb091dc16204d0f49883b fix(history): keep carrier rewinds race-safe after refresh 999703fd43ab6d75c4a5c7bc8b610dd73ecece76 refactor(gateway): hoist watchdog constants to the canonical import; drop dead or-fallbacks 8ee0103ea2f85f277b465a4558d6fa85e7739b6b fix(gateway): finite-bounded watchdog knob validation + wire keys through load_gateway_config 36161457237358df5b888b1ccd848a4d32b4cc63 fix(gateway): keep loop-watchdog default at 3 strikes; dedupe constants; register knobs in config defaults aa08cb8ccb1a560ba774ea605886cd02e502a6e0 fix(gateway): make loop-liveness watchdog tolerant of transient reconnect stalls 0968303969766c9a01985a822f38717ac190787f fix(desktop): put the CLI aliases on the uap5 element family a3773f70469994942bc8979289c7b4fd55446385 fix execution alias xml msix ebae0064a28181375c85e1f321394fefc9a6634f fix(compression): preserve live assistant carriers after refresh a5b326a471d2e5cdf6741fbfd0913c85f6866aaa Merge remote-tracking branch 'origin/main' into agent/81234-merge-20260821 3d7567aed21207952e22bde379e4608b51f4d873 add retries to npm ci 261a4efb90d7dbe4e71786861858f721b4ab730c Merge pull request #92214 from kshitijk4poor/discord-picker-constants-followup 667c787a1c4b332ea763fb24910268fbd5f7a219 Merge pull request #92216 from kshitijk4poor/fix/p1-gateway-simplify-followups a18f90847b46786880fb9b4975c94c0393fc6a58 refactor(gateway): promote parse_systemd_duration_to_us to public 1db0a7d825ae6e8ca028934406d79b5737f2385d refactor(telegram): share the flood-wait cap between send and edit paths bdd281d0784232382bbb9314bbc6f0ce4bfae2d1 refactor(gateway): route kanban notifier writer offloads through _to_thread_process_service 684e95a0012b12a1405d126bdba1141fa58ef43d fix(gateway): claim ledger rows and clear resume_pending inline before the abandonable boot-send task 9154421b11ed3f85583298e4a1e910c2a5a5cec0 refactor(discord): use _DISCORD_SELECT_MAX_OPTIONS in ChoicePickerView c925cc8eb868708c1799c9f7e40345f07a133e51 refactor(discord): derive model-select capacity from the row/option constants 4a6b362178ab2445e8310cc55a49fa2816b7aad0 review follow-up: trim overreaching comment sentence, pin durable-copy assertion 4c76ec81a97df299e7db493489185d55d3f292d4 fix(compression): restore the prune runway when a would-grow refusal keeps the transcript a4f16e3fefdc537ef2e029006048444b9531839a fix(gateway): retain failed replacement evidence 596bfc557fd0018d4a05e8b4fcfdb51ca644e060 fix(gateway): distinguish failed systemd replacements 83b09ebd0a11ad591a7e85fad02b89208b06f806 fix(gateway): make handoff recovery idempotent 91fb175188d00a02ffaaccfdc495b577c42e0052 fix(gateway): preserve systemd handoff recovery 5b024c7cccb75e52d40d276315561447d6ce7a5e fix(gateway): make systemd the sole restart owner f12cd040151ec485b953ae0a9f30abdcbb260f70 fix(gateway): isolate kanban dispatcher to_thread context bf3a0bb99d348416fd17cf3574da3d1d730fb88f fix(gateway): isolate supervised watcher contexts e173720774470138ed222d173ec78ce018b7ad3d fix(gateway): give supervision exhaustion an owner for queued platforms 92018e76a8cde141ab89d9f0e6e63502d9ae9610 fix(gateway): heal a dead reconnect watcher when the platform is already queued 349d9aee4304c31fb4cd5acb0fdc2befc2f731ad fix(tui): log the refused shared-handle transfer and pin _get_db caching bd2afde48f3487421c8e625d89fa0c118938a583 fix(tui): never transfer the shared launch SessionDB to one agent 41e29a601e8b3b1afd132967c607924d2963a4d2 fix(gateway): clear resume_pending for all claimed ledger rows before any redelivery send ce944a5a55621784a0ba9a9583c6dea804a05866 fix(gateway): do not let boot-path sends hold the inbound gate a444b673ad99a6f13f307e207086b074755bceea fix(telegram): fail closed on long send-path flood waits 8e475ed27b1199b8d0bbf094cf2e15fcd555f8cf refactor(terminal): extract _current_session_key() helper for session-key lookups 8a963e85123e5e2ac3fb7df399c4c35603d1e1c3 test(terminal): cover gateway ContextVar session-key path a270c4adeab6d4466ed93a628ce5c34d363bd6cd fix(terminal): scope environment cache by session key to prevent cross-profile SSH leakage e95dd466b120d013f53e48f11785fb01466e6587 fix(bot-mode): persist canonical chat before opening 209e2ebdda9109e84f35833174caf83e55bd79be refactor(discord): derive model-select counts, name the 25-option cap ab3e2f563b7b7cf36723b3fdffedf41e05b76779 fix(discord): render provider model lists >25 options across multiple select menus cd80a7f36c87a2f8d5ca9e3931e78fbecd82fd43 chore: map contributor email epicstorage0@gmail.com 1fe8683e58230bf7ee9116bc2d806b3f8fe7a432 fix(state): split forensic-backup identity from repair-epoch fingerprint; publish backup bundle atomically 5777e68b3ded808b1e010a1f0552c6433ae59da7 fix(state): include the rollback journal in the forensic backup 8779b782b3840c5875dee3efcd82223c4e52cf20 fix(state): exclude SQLite's commit counters from the repair fingerprint 602c45e45e7631d94d82b1a69601970d66692965 fix(state): never let a peer connection reset the repair budget 8de64b1634231ded91e8de67b514ee48e30b9d68 fix(state): stop backup staging from posing as a forensic copy b3f14c8534424b4d9e59f6a4f35b0bc394aa0cc2 fix(state): keep the repair fingerprint from cancelling POSIX advisory locks c914a9ac4be6c0a56d39e113b323387d99cf8d8a fix(state): make backup atomic and the disk guard proportional 27d661e171932c9f292b26c531cda250a27ac8c9 fix(state): stop unbounded state.db repair loop from filling the disk 14c59f0b505ea34fb46991784e0a996ceab70dcc docs(agents-md): Bot Mode canonical-chat invariant is name-identity — corrections folded in f70e6146dd49c4cd46f42c2b28baa100aae6cd5c docs: record the Bot Mode canonical-chat invariant in AGENTS.md a9860d413dadbde51a7d0691caa99e191bea36be fix(bot-mode): the canonical Bot Chat is found by NAME — session-id pins removed 4ba038b51d2569ec3b9563b2ccdf42c489f3ba08 docs(agents-md): update pipeline architecture, process-identity pitfall, gateway lifecycle contract, wine2e lane ff88f27403e1131f7a1c4f859e51d5d28851bd8c fix(bot-mode): a bot row opens the bot's canonical Bot Chat (#92042) 8397a186eda2e62e504abb0cb181deaf409579ed docs: record the Bot Mode canonical-chat invariant in AGENTS.md a08b909199a5c4cdc83f6b2077f52d349ff4ba2c fix(windows): preserve launcher layout invariants 9782275b2a79368d6247c0ee9cd5418523a5df3f fix(windows): restore dedicated CLI launchers on update 9098f6777b93b7881216a9b7d8fb402899f62400 fmt(js): `npm run fix` on merge (#92094) 0012dd1e0c7efc7e86fa75b89567a492057f0c02 perf(ci): set python test workers to one for each core, from measurement 969094e4d22d86d2f3fc1a18964db9824721b1d2 fix(tests): remove four shared-state and lifetime faults at high concurrency 10f99bc15e70ba07434d4d7f42c33d2224f4d664 ci: run the work lanes on larger runners and merge the split jobs fce30d818e2a1833e99bb12160ccec648e8b2661 fmt(js): `npm run fix` on merge (#92089) 7b4e287f34e9fc4a4d22e3174a1881adb7407cc1 fix(desktop): probe bundle extras on the target's own python build a7cd15eefc0d6799dd96be8248d98e98006cfc86 style: post-rebase lint fixes 0a9a449a32e7dc244ae5e7809050162bf47f93f1 fix(desktop): Send Diagnostics review fixes — consent accuracy, log-grade redaction, dismissal guard, linkless-success (review feedback) 8f30e9c77a9e7a7b5c8ab445a85062777c821491 feat(desktop): Send Diagnostics — one-click redacted debug-bundle upload from the error card 2a248760f5f230b9f53f86206b8ae44b494fafee fix(tests): test_unwritable_bin_dir_is_skipped crashed on native Windows d67ff2611f343a63a2296b4682998d22afccc681 docs(update): _ensure_acp_launcher's Windows rationale caught up with reality d1ac562847f59e635d747294db2cb3d193635940 fix(windows): self-heal the bin PATH launchers the update autostash swept away 7e9e17ee576b930d41ba765a651b42c2774f3597 Port from RooCodeInc/Roomote#1478: per-route webhook event coalescing 9ddb6547a062a81510a943cc54f525c25cf63d8f test(update): re-pin ZIP-fallback desktop test to the preserve-through-swap contract 01c14ad7f336c9fad67451e9fc6e3f149c2426e4 fix(update): ZIP swap preserves the built desktop app (apps/desktop/release) eac3f645efe73ac294e0fed0d427c1aa07eb951d fix(update): don't ZIP-fallback on dependency failures or dirty trees 4b30f7f7f7380537137fb8df75c322e43bdda327 fix(desktop): edit the Windows PATH without the EnVar plugin 51d202b276d6d34536640df167a271dc2a8bde60 fix(desktop): cap concurrent fs.open in the electron-builder process 42f27c734ed22e2b46a478fa0b9d187ff0e85f24 fix(skills): adapt auto_load salvage to backgrounded --skills preload d3f4281d2b31e1dd4ea9f1726210fbeee1e361bf fix(ci): raise the macOS file-descriptor limit for the bundled build 4ac7cc8030eeebea1a513f3a0b0ef1ce4d0bf6b3 docs(skills): name --ignore-rules flag and its relationship to HERMES_IGNORE_RULES 94288ab8177960aacc7894ceb15294fc9ac2e86e docs(skills): document persistent auto-load config a6c718d6a2c269f3debbe7b780602686e574726f fix(skills): preserve session-aware auto-load semantics 231c2138484c0dfe9a2f44e7ed6bb930b373611a fix(skills): make auto-load lifecycle-stable and profile-aware b6510ee733f965c4dc07b52b76362d14eea09920 refactor(auto_load): dedicated build function, better error logging 332640464354b23d8e2f08eef58db6e82ef7d8b0 feat(skills): native skills.auto_load config for persistent skill pre-loading 564bcdec21ae62db95632bc506c7d0d4c493f65d fix(desktop): prune foreign-platform libraries from the payload fc7523ca31eeb6eff9114afe384c2cf6380359df fmt(js): `npm run fix` on merge (#92034) 135320e660d982a55425b2cad9161ef0a2ecadfb fix(deps): hold every payload pin to the payload interpreter 8286c46502e1f59eafdfabcf5af998024f64dfb8 fmt(js): `npm run fix` on merge (#92032) 3cc7f220cdd2e38f50e3caa05782259c3d3c0cde fix(desktop): strip off-scheme paint from selection copies 29068ad5434d8f18c87b12cbbd0b4c90f0fc0bcf fix(tests): remove three host and timing assumptions from the test suite 3a63116aa5781ed44e661a3b05f03d6e153f4c2c feat(webhook): accept standard webhook signatures 8e86e1d1595cefa23bcc751c783b9c4c6236eb6a fix(deps): read wheel availability from the index, not from a table 3d4a37c10fe532414e7d3524ae5a452a00b512c4 docs(computer-use): describe cua-driver as a pinned managed tool 5d334e8a147c077d0e6ea4c6ece92459c4e1cf23 fix(docker): add updateMechanism to the fallback install stamp aaf0446a0d6ae775a611c65e3d7431088ea66a3e refactor(installation): make cua-driver a pinned tool, rename --extras to --extra b59abfa317278b956a9a89d591ea3cd200c1ff1c Inspired by Energy: evidence-based voice calibration for inbox-triage reply drafts 7d6db4efb885856078e4d19f804035226df81e0d fix(update): holder classifier derives value-flags from the real parser; de-flake goal-resume fixture 8131b0a29fd811448e9a1a8d6011724cdd8dbd49 test(windows): #87594 probe asserts on the gateway ANCESTOR, not the direct parent 4d3a61b63b93cadf1d2579fd5c0300419af4d803 test(windows): diagnostics in the #87594 probe — parent cmdline/exe + matcher verdict 4c922a934881270d9b8ca4e1796dfe3eb6c39b5d test(windows): realistic gateway-parent argv in the #87594 live probe (child code via file, one-line -c) c02cac00ce4eed7cd860b74026fa9729e2752fcf fix(update): venv-holder labels parse the real subcommand; gateway ancestors stay visible to the scan aefcf4d10a8533bca8566cd06c4fb89c24f6c481 ci(windows-venv-e2e): drop --timeout (pytest-timeout not in dev-only sync) f9aed7d7f6904620414a5878cfa1eec0727d3bae test(windows): on-demand live venv-holder E2E lane + probe suite (#91277) 4d5d816603920ad2c43a1fecc0359404056df68a Inspired by Energy: one-sentence live dashboards — bundled skill + automation blueprint 729782d058e683875bed55ad060d56925fe1e86a feat(bot-mode): @mention middleware identifies, never delivers — the agent owns messaging be98423fe1596950d8d1a9f9089efc109b82b128 test(desktop): advance the mock clock in the cloud-503 readiness tests a9ddd0f0bd04f9ddad0d31ad1e22671423255661 polish(desktop): cloud-down overlay gets Portal/Discord action buttons 175565785a30fba0e1d1c6b18e79eab11d3014eb style(desktop): satisfy perfectionist lint on the 503 electron files 23140a730cac2bebe5e981aef00f6384d01c61df fix(desktop): render the Nous Cloud-down recovery when a cloud backend fails (#85335) d0ea5f17225363395032bcc94df8109c0fce7253 fix(desktop): surface Nous Cloud 503 at the OAuth ticket-mint boundary 274158ec13406a3079ebde9c1f33979238db896b fix(desktop): surface actionable error when Nous Cloud agent returns 503 (#85335) e9a7c7aa4dbdc7e522d0fa9c9c8f457c3cf3b37c fix(telegram): omit topic routing from rich edits 0243cdc37e5f9e1f744d9779af3203d3cdc8c8e0 feat(docker): provision the pinned browser like every other target 0aede7959977d860a40a1ab446e245b79fa0fe57 refactor(browser): the pinned engine is the only engine 72de7e8a050bd4648db452a13d779f4338c3b437 npm run fix bc5e9a174c9afc2cb06a5113cf568363fcc92306 Inspired by Claude Code: file tools reject Windows NT-namespace paths (NTLM leak hardening) ae762033d33a7b7c8e841ad672eef4bd63fa0fd7 refactor(browser): one locator for the driver, one for its engine 18a5b2caa525b80b26b2a37234e7c5ce9cb469f9 feat(deps): bundle the opt-in backends a target can carry b6bcb3e791c673e63974029bbab40cc9326803ff docs(credits): document naming-convention trust in aux free-SKU detector 8a949659c3e5705fe6b6e16b611a7600dbf091de refactor(credits): fold review findings for stealth free-tier fix ad96d2e2d9257a91bffb5f9d9affbf89a7669284 fix(credits): suppress depleted banner on stealth-preview models b40d85dc81097768bb4c913da78bee00dcd10fb3 Merge pull request #91870 from kshitijk4poor/fix/state-repair-post-salvage-hygiene 29c90665775cb147ec6965a78accfd493a9a8364 chore(state): tidy post-salvage residue in state.db durability test 3bdc2165c3e82b203c43d0187ffa9bb929adf8f5 fix(state): scope salvage to repair-connection durability + live-writer guard ca28a69ada74fe2e4589153adc876a2e002e9a4e fix(state): apply macOS write barriers on every state.db repair connection f5adeed3dca7f9c0536661888ae37a518ea2ce53 fix(cli): guard empty message text in _display_resumed_history 2ea5287da0ed3556110e5e5c88210b41db19ec6d fix(state): only flag uninspectable Hermes processes as holders 1c59daaace452d22ee24447bc212b2b2f0ee6db3 fix(state): use /proc readlinks + cmdline fallback for holder detection c45e2b19c3cc1f623a89f7409145223cf65fb238 fix(state): guard gateway FTS rebuild + comment early flag-set fc72d6c71691a48743dc641aaa6679916c3c8eb0 fix(state): defer FTS rebuild under foreign WAL holders 334bcbac93b044d29da88507af4ee8d6415d5c2b fix(desktop): error card honors the classifier's retry verdict + failing-session identity (review feedback) 50f1e414bc5a4eb7ee83c38003b0adca428bc6ce polish(desktop): rename error-card action to 'Copy error details' 3903428a72023ea26cfa6119710728525716ace3 Revert "feat(desktop): error card offers Nous support link on Portal-auth sessions" e3d46bb5fb48c14d205f80a71daaff199005e802 feat(desktop): error card offers Nous support link on Portal-auth sessions 892790f9808c8a95443611434c717eb315f0ece9 fix(desktop): error card renders router-free threads without crashing 98f6fc549a338b3903b6e86e31b8b0210671b991 feat(desktop): failed turns name the failing layer with recovery actions e26d91dc11ea32f2f1af2c9778d424172f834431 feat(bot-mode): message_agent tool — structured, Bot-Chat-only agent-to-agent DMs 04acfb9673c641f6c3f511bfb88394d8dcb62c9f fix: remove function-level 'import time as _time' that shadowed the module import 70151dd5493ffdf99327f26906a88e1bb1bc4f1a feat(update): updates.parked_branch_strategy gates the in-place merge; switch stays the default 4fad27a10150e591c3be4473f1c62fe84c184568 feat(update): --switch-branch opts an unmerged branch out of the in-place merge 91096bb2f05a85b1e58532fa04cf564d2113e297 feat(update): update branches carrying unmerged commits in place instead of skipping bbbc50acc23694ba1d356f467f358da3244e93de fix: hermes update no longer strands non-interactive updates on a parked branch with unmerged commits 2dcb623956d5d2970e2918a1a3c2592da98ef1a2 chore: map salvage contributor emails 42dd219f46f19e1dc07a34012d088de6297e5cbb test: trim salvage of #65076 to a lean regression set 5cb7b521cfa7a10380834d8e637aa7800441fbe0 refactor(bedrock): make resolve_bedrock_runtime_region the single region chokepoint 41ca67c5b13489272150d1250bb1e4d5a0a19178 fix(bedrock): align auxiliary region resolution with runtime + document Mantle route 16476fad10e84c52767881d644c235a537e256e6 feat(bedrock): add OpenAI GPT-5.6 family (Sol/Terra/Luna) to Mantle Responses routing e57d55fc7a5b852efe7e44c969c0e293897d1beb fix(moa): keep Bedrock slots on provider runtime e5b96fcb10077f0b6ffaa06de6516dfcc510d992 feat(bedrock): support OpenAI Responses models bad2ed866c16357800e569a0b194392b165bd2b2 fix(telegram): honor the direct-messages-topic alias in the fresh-final gate a5ca9c06e62193a971fbad86549b63014f122f9b test(telegram): cover DM-topic table streaming after draft degradation 194729c95f573656eb217e8d1e93bce8a0005730 fix(telegram): keep DM-topic tables on sendRichMessage when drafts degrade 30f9955a44ec17f3d07100a008b9c2e2689a16bf fix(zai): GLM-5.3 low/medium reasoning effort reaches the wire instead of clamping to high 3841910cee795960fce630a8a34aa5a00f1916ab fix(telegram): widen cancellation-shielded stop to sibling paths 9e36774d77b90982f225c5417c92ee95a1ec9ec9 fix(telegram): rebuild after cancellation-shielded stop dd03471858a1fb00c3fa0a62bb6bd4ec8b18e7f5 fix(cron): nudge review of escaped-run failures too 2fb1e62b2ee0723486893ed30d5b481f5ad0b5b6 fix(gateway): multiplex refusal must exit EX_CONFIG (78), not 1 ac64f8a7e771a917b8366bd561b218f38d32a31d chore: AUTHOR_MAP — add samtcam@gmail.com → samclams bc8f49618c46e2075e1ec8b935080cfc0afbfb58 chore: map contributor email for S-Claw d422f7103ec6e43cf40abeb0d3c258a5244fdcd3 fix(backup): don't hang forever on locked SQLite sources f9849c43a24d410cbc937daa2216c811b729b578 fix(backup): don't nest state-snapshots/ into full backups bd93a5f3160dc84d1891e27b49bffeb88483d8f0 feat(models): free models show star + -100% in the model picker discount column 098a7acd4ab0e8b33ee5a92ba69a5d8eb194b2da add openclaww@gmail.com to contributors 907da145b6af089927a6d08904260f86f3813323 feat(models): glm-5.3 replaces glm-5.1 in the OpenRouter and Nous Portal catalogs 01d8562fce28a77362e3e3ce7797f3aae57b1985 fix(zai): add GLM-5.3 support — 1M context window, model lists, reasoning_effort 1bf8bd2c7d2057de4fdf80236b0b017f7d7097e4 feat(models): 'ox alpha' now finds x-preview-f-free in every model picker 14833bcc56eb0f478ef0913ac785d84116dc881b Trim comments 76f6ba37064614a703ce2d19ade6bb5fbbf4fcf8 feat(nix): give Home Manager a programs module and the desktop app db52ea468c7029389f9716f53421f5270f3642ac fix(desktop): launch the bundled app instead of a build inside it 0287dfb0c2874c8716d27cf6a654a42b716be5e0 fix(bot-mode): a bot row opens the conversation you were last having d9d967e07ab24c4f06c00ce67f53b6f88ef94064 fix(cli): Linux hermes.desktop entry launches instead of silently dying on system python (#90292) d7dc982b93fb49c3b4426a51b3e142478d1603b6 fix(installation): read the version of a browser that never exits ac8dff4fbcf47a392a3cddcbec068aa05930ab47 fix(compression): auto-raise Daybreak Codex threshold f8e5949f61f2b519ff1b937ff3d6f745a11327b9 fix(model_metadata): add Daybreak Codex 900K context 67af79d7e1bd8264119c2f02b37a2a0686008666 feat(models): stealth/ox-alpha free model in the Nous Portal catalog 9815319d5fcdb537a36b5a88f18c88188f5401db refactor(desktop): derive the tab hover close button from the close verb 15751166291cfa82b20b233d33aac61c1a07ade6 fix(update): pre-update snapshots now cover every profile, not just the invoking one (#66140) 570241e261f2a71afdda5248e91567a0ac72afa0 fix binary builds b96a9b7408bdb4dd21c41273d3255f4a98a64d2c test(cron): delivery-targets test scopes platform assertions past bot-chat entries a2da0ab797edf5e7ca7d3f64591facbbc37ec7f2 feat(cron): bot-chat delivery target — cron output lands in a bot's canonical Bot Chat and the bot responds f7eb187880b8a63caa3e07f90ee6f6309b731149 fix(deps): restore the pinned-provisioner path, and make the browser check ask the resolver c8d9d5a5579762609674a2fd5c7dbfdd34e09268 refactor(local-runtime): tags grab-bag becomes an explicit recommended flag b102999d8013a77c555ba481829e97dc6232158b add mike@vorburger.ch to contributors f8cbf5432ebabf6857c4a8ba8249e42581caf1c6 docs: Add Nix/NixOS to installation link description 3bb910af780835231ba96ffa58673d3701356fc4 feat(providers): handle Nous model-scoped fair-share 429s with model fallback 809fa533ceafe528080f68382800e96e29664b5c feat(installation): bundle agent-browser and the pinned Chromium end to end aa43f4b175bb735febc7e27b32c2b48b81f90140 feat(local-runtime): catalog data moves to pulled JSON — day-0 models without an app release fd3a783a3edbbda611cbc4e38d70202dca7b5852 feat(nix): wait for the backend bind target before it starts 13f2341b86cf85cf66ab986b609d2c3b440887b9 feat(local-runtime): sampling defers to the GGUF's own metadata f7a5c9e520b4da422b2c088a52a6a0165d8ed788 Merge pull request #91714 from NousResearch/bb/tab-strip-visibility 272b007f8c1295cd7a0e9d58002fd75f9f867340 feat(desktop): give hiding the tab strip a command, and a way back 315307f139d0db8c10e3c9cd9a52f4750eab58af refactor(desktop): make a zone's tab strip a stated mode, not a flag five paths wrote 9d5745d0a072d8c0a38d20aa6d1b453147d2b23a Fix tests 8047fb937a8a73f4739b672fb0b9f65768ee71c1 feat: add hermes migrate grokbot export/import command 556bc0f23e450caaf5280c56a0c3a7202c709959 Merge branch 'main' into feat/local-models 001a4c91c62af643f96257d867a9538da98925f9 fix(desktop): scope the salvaged fix to the failure-path removal 3aeb592863950675f424ee46b5180a694859ec79 fix(desktop): stop tabs double-click-hiding the tab strip; body double-tap reveals it 2584b7c4eca82ada05f16eba08936d157b483329 Merge pull request #91695 from kshitijk4poor/fix/browser-control-devmode-ttl 0b8a848754ecce57081f295cc62709dc5a8713e1 perf(api): classify compaction rows once per message in run.completed transcript 2cb8794f7a061fdd6310e3d45dc53c4d371c52d4 fix(browser): sweep orphan artifact files at store construction c16c262d01c192850cabd9b6510beb7b23486b3e fix(browser): honor live Developer Mode for privileged capability selection 23a64a97ec928945b49389e8dfb6d06a11cb0132 fix(api): correct _handle_browser_control_frame return annotation 847289864de158b31a80153a69f3e1460352574e fix(browser): make the artifact boundary compose end-to-end and scope stores per profile 652e0a72d177eaa53fb53ec777e3f532438cf6a8 perf(browser): read the feature flags via load_config_readonly 13f209d4fd6cd763041a6e3fa42a11daec968af4 refactor(browser): dedupe auth-flow names and sentinel identity 45078eb9413e87bbc3e0d007c58e58def4d7f27e fix(browser): offload broker lock acquisition off the event loop a5882058de7db8c34bf6d72f05c42183b08ab46b fix(browser): bind the extension lane at controller registration, not transport auth a4bfd7e1449895810507edf27a76a03cbc49a348 chore(config): declare browser.extension_control in DEFAULT_CONFIG 1977c3d2ebb486501a126ce7a97a2fcdf78710d6 feat(browser): add scoped artifact endpoints, broker permission gates, and companion journal 2039b572f5ea0cf9cefeeb74a640785e25305f03 fix(browser): keep bound controller routing authoritative 095a1d078c5c1cf7a55d47cafc50179fc463e790 fix(browser): preserve controller work across reconnects d524cc9a16e13be42762984d21c1e4d19fbce24e fix(browser): harden extension controller routing c9fd5223f62317796b1a7c260bb1e8a1a22c348a feat(browser): enable extension controller actions 5df1d0e113279a892e4eec401a437f443f7a245c feat(browser): add authenticated control broker f33b260afa13d89063d452f36eae44b6b403b340 fix(desktop): boot overlays stay opaque under window glass b2c4f1f376167e7e34a88c3dbd544e1fdc848c14 refactor(api): reuse _COMPACTION_INTERNAL_FIELDS from compaction_display a2a23a8f7e30e644702459cfe0c4c74897524cfd fix(clients): hide compaction carriers across surfaces 97e32d49acd54906c16d31544ec79971b4fb7de0 fix(api): hide compaction scaffolding from clients 6b7aee2f80ec5c2d6805c8a5145b2f7a084a3286 fix(agent): preserve live merged tool-call carriers fdf01114100c848da5a5095f5a52e538bb95cbec fix(agent): guard merged assistant compaction handoffs c9d89d9fc066ee65199805f6d0ae2181c273ddcb fix(cli): first repaint no longer swallowed when monotonic clock is small 6e5362833877ee370bf243f5b602f45318ae3f69 fix(classifier): retry provider-injected parameter 400s instead of aborting 83f9620a1bdaf43b530a2c59085f2279dfbe0640 fix(ci): per-file pytest subprocesses no longer share the pytest-of basetemp 31ee299527009be83d32dea01bf18c39cc7be0e0 Merge branch 'main' into feat/local-models 870f8991d57ee45e592c21d305b5ed200aaa1a5b test(stt): stabilize idle-timeout progress test against spawn latency 390de799eb87369768795753662e91b4e15000b6 fix(desktop): catalog-row copy pass — terser toasts, dead verifying string, live job detail 109147270e188ef85a3f3bb20d84329112e80f8c Merge pull request #91640 from kshitijk4poor/chore/author-map-troyrowe fa8510c698df90f7d529bd9774b98a4081acaccb fix(desktop): browse and sideload copy in standard desktop register 8b103cd1303b14fef925d915d0af87564499ffa3 chore: AUTHOR_MAP troy.rowe@re-source.au -> troyrowe-resource bb9fd3539eac6232a73d8972aa884a6d92b9293f fix(webhook): a port conflict stops retrying and says so on runtime status 6a9903fb5fa112d4f1a52d2ebab61605acdcd942 Avoid unnecessary sleep checks for azure sandboxes 13fcf2fe38cde19e98b5350dee92143d93a552ab Merge remote-tracking branch 'origin/main' into agent/81234-merge-20260821 abf87e7248b0218a56fb7f05be8379c7d19dfa7f Merge current main into composite-carrier fix 5ca4abf1a846cd10aa37936e1eb769a1174e25e6 fix(desktop): scope the salvaged fix to the failure-path removal 01824d1952ed3bf4c0e6922a83c1c61392a0264e fix(desktop): stop tabs double-click-hiding the tab strip; body double-tap reveals it fcbd1076a93841fa88855acce810e342a5b78101 chore: release v0.20.5 (2026.8.19) fb27614addac115d55299bc6538ae112fd01f688 fix(native_compaction): preserve compression summary messages during pre-checkpoint pruning 624723130b50b64b291b9c538fae5ba3638abca5 fix: catalog drift sync — dead free slugs out, live OpenRouter free models in, ox-alpha-free on Go 2a2307e68f10cb0e89c0114e068570f0543dd350 feat: keyless providers count as authenticated everywhere — opencode-free appears in /model and desktop pickers with zero setup fb7f0602fbf01ec60b1199acb35b61148b022173 fix(bot-mode): durableGroupChatRooms drops tombstones and roomId on the remote-merge persist path 76e0ca8826daa6c56f04de735000deff4397a33b fix(desktop): order-independent selection guard, layer-hint scoping, honest compositor receipt 0269504250347706fb43a0f013addd3f39ee3ce9 test(desktop): exercise the spinner CSS and the invalidation scope for real 73dcd75afe1e78562271e59cba14d39ee387865e perf(desktop): harden the spinner strip and tighten status invalidation 765e3a2f8afb1b2653043b681e7d647d6df85d1a perf(desktop): composite-clean spinner strip, selection guard, swap-overlay ticker b484933005ba966a1aa93c69581cae28e241cd6c perf(desktop): compositor-only glyph spinner (no per-tick DOM mutation) ced7d5e0875c390e37deceee1c7600d972724a03 perf(desktop): move settled-preview derivation off the message root db6c282c914cbc2ebac8e304c407dee8ad924acf perf(desktop): finish scoping streaming-status invalidation (data-streaming leaf, root isRunning) 3f590e68df3798f436128c444fb0ae02f744e78c perf(desktop): scope streaming-status invalidation below message root 0aecadc17c5c6cfe5b1f50fdd88e65041cb3095c feat(update): hermes update --plan — read-only fleet inventory + plan phase in every update d47252547bddc01eb2262ce4e60e2ebd918bfc32 fix: lazy session-states import is best-effort under partial module mocks 3a2a12b752072c58b367f32fa0b72facc818a474 fix: break session-states import cycle via lazy import in reconnectSecondary 4f64807f5da1efe765ff90e8774e3d09d4487c81 fix(desktop): stale running arcs clear on gateway reconnect (#53902, #73082) 17d1095443bb72961fd22dc3bec4743c958a8ffa Merge pull request #91401 from kshitijk4poor/refactor/dedupe-telegram-mock 30ccd01ba2a7dbf66e93bdd6f0dada663eff7150 fix: delist UA-gated free models from opencode-free — big-pickle and mimo-v2.5-free 429 every non-opencode client c1693d7dcc71cfb91a7b615aa3a0d0e702b83bb4 refactor: remove 27 duplicate _ensure_telegram_mock() copies from gateway tests a9ac2c6fc8a1fc62760bf8670d5e9086df29827a chore: map contributor email for paultaki ff6186dc602c497e32a4b5356a835cc1cd596c77 test(gateway): re-pin _get_service_pids tests to the label-derived locate + prefix-scan union f29ee96dd3b5bc4cd7a33ff16d69a1b4c911d344 fix(update): restart all macOS launchd gateways on hermes update ef04d846e9505388d8eab61b7c6608acb652bf59 feat(cron): cron agents now run with memory enabled like every other agent 40b4a3bfe1504c3e9b078fe25ff8503e24bb6a5d fix(update): every begun update receipt is now persisted — command-boundary finalization 80aef061fe064d8bb1dfcf89813c9c9e1e4cbdba refactor: use request_hard_interrupt for review cancellation 8bdf0e89e23841ee385c70b2630c5af6756f3efd chore: add qixuancao to AUTHOR_MAP b883756b79374c8e8be770b383e51a421bcd8665 fix: foreground priority for background review cancel timeout 1b92a9496206d06274e1837afe0ea82fee8d6374 refactor(agent): simplify background review run state 37da0d4d50fe9b34841f596d285861d34b831e9a fix(agent): synchronize background review cancellation 443d4387b514655a8b090825079f0966d11e2511 perf(desktop): idle renderers stop burning CPU on infinite CSS animations (#53902, #73082) 7d0f06f75d0c91dde7f798e2b96c22e78ccc67ef chore: map contributor email for vinsew d4d04098a5f9afb526f0995c1eb08648d92095a7 fix: Ox Alpha reasoning effort reaches the wire clamped — shared across zen and free providers 54227416ce1ad0de8b53c85dd994e1b4d0941074 fix(opencode): send Ox Alpha reasoning effort through Zen fc9cbc872d8050c22f1192b16bc5ff4aed471e10 fix(cron): do not load MEMORY.md into scheduled jobs 0a8cdec697ee5830a1df23c5e1f247fa1f2efefd fix(desktop): silence wsl.exe stderr banner + detached explorer relaunch rung deec0432765680c704658e36697a49ce488e68a1 fix(desktop): scope WSL bridge state by profile b634032fa4943fc17f26a14c0c76c8b98dfe31ae fix(desktop): gate WSL bridge for remote backends 930be347f1e3efefae0aa2f98219b3d126abf0ce feat: keyless flag on the provider catalog — GUI contract tests exempt anonymous providers a63da06340bb13e7506afec58e740523337c99de docs: opencode-free in provider choice lists (cli-commands, aux providers, fallback table) ca06b8768999c32f0af2a7bf4542678dd883cf79 feat: opencode-free is fully keyless — no env var, no account, anonymous wire 28a9b6c565b1490aca79c10a6aae6d851a550a84 feat(providers): add OpenCode Free provider with keyed auth and opencode User-Agent 8e77d031888fe26922e2658be79ee48efab791e9 test(prompt_caching): home empty-tools fallback test in TestPromptCachePlan c26357ad6adafc52ea8534bbb5351a761c192c89 refactor(prompt_caching): shallow strip copy, exact-count guards, dedupe idempotency tests 0fc52b055f08a211b42508b427f68677e5a596db fix(prompt_caching): make apply_anthropic_cache_control idempotent on pre-decorated input a86569bd1134867e46b49f7cef1988083d7666d8 test(teams-pipeline): cover quoted-user Graph @odata.id paths b577353636992725e79f00487e8c8c725c165ba5 fix(teams-pipeline): parse Graph users('id') meeting paths 15328b4db786bc1924e6f9eed0be0d48d39fa5b7 test(gateway): accept all_profiles kwarg in macOS reaper _get_service_pids mocks 42bd567a8064f9a2086527aa520a38cf4674e4d5 fix(gateway): widen orphan-reaper service exclusion to the whole launchd fleet d8047c303b1adc1eb38136861925ade6aa913f7d fix(gateway): BSD-compatible ps flags and all-profile launchd pid discovery (#74075) 524b062289e9d64b2112b8c9caaf0c7f59cb463d fix(desktop): don't re-list a just-unpinned session under Pinned c01cd26f959fb7c5bb21c89130d1d83c50012d0d feat: stealth/ox-alpha free model in the OpenRouter catalog 1017a5627475dd490374abaea895f200a120d7d5 fix: OpenCode Zen free-tier models (Ox Alpha) work keyless — any bearer 401s them 02e270a47edb523a52293c64e30a6ec0c18c762f fix: editing a message in an old session fails (profile DB + window-relative ordinal) (#91302) 6e64e6b9c697460ef303a90fc9444e0bb34788fc fix(desktop): Windows glass windows stop rendering when they lose focus (#91307) 724ee844badfd0f09d00bb19f7966aef48eb8046 fix(desktop): probe the staged shim with a hermes argv, not a python argv 04121ce19e97cbf6994d24d63686834078890e25 feat(desktop): browsed and sideloaded models join the models list with full management 1ae9670d09de68293318b1377d7aab5dc83f4d58 fix(installation): read PE VERSIONINFO when a Windows binary prints no version 7ad1670506ae0d941e2ec6f582662487e9b5e126 fix(desktop): browsed downloads get a real button and live progress 3d1d28303564c5d063580f8e0cff67961a587134 fix(installation): recreate zip symlink entries instead of writing them as files 364d8cd7edd9d6d7e696546ff725177746e36767 test: pin happy-horse namespace invariant, not exact 1.0 endpoint strings 8361dc2c6a3e275a235addc6cfdc9ce848b5d4d5 feat(skills): add ip-as-logo optional skill (minimal cute IP mascot marks) dc0a5b83cf1b6fc923b9225d17f46a4962597a70 test: remove the dugite managed-git tests that outlived their feature 01fa361068d2baf1e94f30088e9d4acfeae38d63 feat(desktop): quant tiles — the repo file list packs into a grid c0a900e54facc5450f72e07cf9a9b9c9577a2149 chore: retrigger CI (zero-job dispatch failure, auto-heal) 5cba48011744b37af201bcf166f0e58dccbc7977 feat(video_gen): LTX 2.5 + Kling O3 families; Happy Horse upgraded to v1.1 ae2c33d9a60d726b6102d51f8c40b02b72e1a15a huh. 9a31ee39adc73481bf8614935b3e53aad201bfa4 feat(desktop): Find more models — Hugging Face search + Add model file 40643cbaf9b767af146694131ffb8f8160f25e1c docs(telegram): rich_drafts controls draft rendering, not the draft transport 216c98aaed03e5892695d2762d534f02d70a9077 fix(gateway): scope draft-final finalize skip to fresh persistent sends 790c850144ce570ddbe9221c8900a1bdd0623731 fix(telegram): preserve rich finals after DM drafts 7a17a1b8a6fb3e46965a05e654cdca9ad673cd11 fix(docker): stage2 API_SERVER_KEY bootstrap no longer depends on .env existing (OOF-285) (#88926) 1acbeed1461e619767334c74e07bb19d338996c6 fix(update): resolve code identity by reading .git directly — no subprocess 1d74833d8df34eb588ce931bf0b1c7b69b79dc24 feat(update): structured update receipts + post-update fleet version verification 7af4b8ee92b82c3c654cab4b3226cff79381908d test(bot-mode): drop unused stub param flagged by eslint a976560e0ed6516a2fc8dd80334430f1443d0ac4 docs(bot-mode): group rooms sync across Desktops and gateways c6745da72bb497255d3554173c2832d9480daded feat(bot-mode): durable room identity + full gateway fan-out for group-room sync 5d75a4664586ea51b0a4fab20fbfd2b91a33e9db fix(bot-mode): stabilize sync entry identity across gateway round-trips 3b83b5e1fa3ed8a40aa4b95a7789a7743d236084 fix(gateway): serialize shared bot room updates 7656a2ad466289b16008bc9a2357036915f17f83 fix(desktop): hydrate shared bot room previews 64d393cb7ef1578e914132f5a630d0ced969e9dd fix(desktop): sync bot room previews through profiles 46e1a59d84c84dc549f5cf04592d2846be12fff8 Merge pull request #69829 from NousResearch/docs/hermes-cloud-mcp d963245aa5ca3aff59cce0b9cfdfe01fa2bf18b2 feat(local-runtime): Hugging Face browser + sideload — any GGUF becomes a normal model aed1c382da5b3fb9adac5c3e6da7531bac51bf78 make cli hermes commands work efb6b40f94ebce3c1f0cfe197942b17d68e2136b Merge pull request #91237 from NousResearch/fix/relay-env-exclusive-messaging d6d751213432ecb61fef9a7cd1f6e4dd3aa7ee8b Merge branch 'main' into feat/local-models 6360113a8b1614d0331eacb6bc2fc6102f851d78 fix(cli): read multiplex topology from the default root in enroll warning e2423491d47d1e713c31e1bed3f5be76018aeabf fix(local-runtime): tolerate stale catalog sizes — completeness is the server's own length 949089206fa44f03a5ec91744229d7673aa178c3 feat(local-runtime): drop sha256 verification — byte-size is the only download tripwire d97cb8f253f9c26be376c345d1fcccfe13dc414c test(gateway): pin config/registration relay-URL agreement under multiplex scope 3d25fd59b9f7e380e4b644f37008ae2db888cf7b fix(cli): warn when gateway enroll writes relay URLs to a secondary multiplex profile f8c3635d4046de196c9e8e45e6c299baf4d0c13d fix(gateway): classify relay routing stamps as process-global deployment config 533886c8b8eb67ff8b389b7f48e7d5e5d9c575b9 chore: map contributor email for Lesnak1 49780391a2679ce42f87a17e1cf12b43c33dd4ab fix(runtime): per-model api_mode + /v1 healing for custom OpenCode-family providers a83c3915a336ac2b1b8cdbdfa388c1b0dde29c64 fix(opencode): family-wide provider predicate + reserved tool-name aliases for custom opencode-* providers 12a3a35521adf385dbe4fa9351929bca8bbb02a1 fix(providers): normalize OpenCode provider matching to case-insensitive and symmetric Zen/Go support f9cd51eb66a00bda25f0e03831cda8d1c9a975dd fix(providers): support custom opencode-go-* provider routing and grok models 7c9285aa1427cf01fd09c53b24eba96d7441ff45 fix(memory): bound invalid-target error and restore recovery hint 2cf7b36e11d73d670e1bb244627e8503a26b407b fix(memory): enforce independent built-in store permissions c809d964d4e5765f1975341e976af7652586c520 fix(memory): parse boolean config values consistently 5a5d6b966d8cd4f8beedb763352d0c9c8c6a0581 fix(memory): unify store flags and bypass stale availability cache 5743cd0117a7b4df322bbb0ce75c160526388161 Inspired by Copilot CLI: /context now lists each context file with load status and token cost 037ae2724c99d354392a14d1aff92e63e4755f3a Inspired by Copilot CLI: per-delegation usage attribution in turn results, /usage, and hermes -z --usage-file 18a15a46d81793f9bcbf7e9f4cd93d5db841b7ae test(update): Windows progress self-test survives transient /progress socket stalls 43c6dace5633d2b0957f67903b15d6cee3ff0969 fix(cron): restore reasoning_effort on cronjob() for the CLI lane — model dispatch still drops it 991af03f4cc910216fd6d3b6f3c80b9a7af6ca0f refactor(cron): keep reasoning_effort off the model-facing cronjob tool schema 58258af0cf31e4f49412ac10f73db381307fb31f test(cron): scrub tracker references from reasoning-effort test docstring 4e1dd1a74b2d57ef2960fa219b8ae6599f41dd1c feat(cron): per-job reasoning_effort override in job definitions 952d1cef18af4880e9aa5ed2ca4a76c9765199bd fix(gateway): prompt-send failures keep their diagnostic detail; clarify caller path gets contract tests a7cfe391f7317366face6eb9bcf106da65c7fdc6 fix(gateway): clarify prompt sends get the same ambiguous-timeout handling as approvals d4f7c2dbe4f66b6f3a72d634fd05ba1bc929f1cb test(relay): expiry-notice assertion yields for the fire-and-forget ack task 424d07edac932ed7b365fa325705f179b1e2ba1d fix(relay): prompt-lifecycle acks are fire-and-forget — awaiting them ON the read loop self-deadlocked the transport 57fe01e367f84cbbe3748170021d1020c912eba9 fix(relay): prompt-lifecycle acks are interim sends — the approval ack was sealing the turn's own draft stream 5210dd48b83e7132316b6b2c635600d94e308a0d fix(gateway+relay): approval prompts survive ambiguity without duplicates; streamed finals keep block formatting 949aff69a8c419878923c5fcd3e335bab8ca518a fmt(js): `npm run fix` on merge (#91256) 9942b212b3fd1348da63097464aa1ec9229683ae fix(local-runtime): refresh bounces adopted servers too — downloads after a restart were invisible 95057c2a63368ed8ad7be8abd1bb6ba600b9b30a feat(desktop,web): enable the React Compiler in both renderer builds 55a272d0dc9d7c282bd0f73c4e4acacb41f7364a test(gateway): cover profile-scoped relay stamps, log levels, marker cleanup 2ef095ce460c0522ed1bcf559d407935ba1bddc7 fix(gateway): source-neutral log wording for relay-exclusive sweep 892ec7af57bbee07b01860967f09dfceed3c9536 chore: map contributor email for @zhongwater123 ed2d01a3c38d002a1e8d3f95725710bece9c5270 fix(desktop): dedupe profile mention completions 477a0222f92a631538e8ca2a3a4b386656f8ee0f fix(gateway): read relay-exclusive env vars through profile secret scope 9629653b94314fad1055450e737bf32bfbdad425 chore: map contributor email for @zhaomengfan ba501f02ce145c82abf60d56a1c21c163b83ee63 fix(desktop): Bot Mode mention readers miss the connection-suffixed roster cache 309e8837d1758e91b367b7ad477792fed16d8d14 chore: map contributor email for kadiratesdev 19c6a1192449342d297fabdedb793fa04c6f80a7 feat(opencode): sync Zen/Go catalogs — Ox Alpha stealth model, Grok routing, new free tier b9855f5eb235cf0779306e61df5a8a162a15a0fd test(opencode): cover prefixed Zen Muse Spark model id 5969ea1558b45022b5ca3b18bea1fbc0bc93e452 fix(opencode): route Muse Spark through the Responses API bf55f109c92ac6fd3c80de3b73c4605774a5ba82 fix(local-runtime): eject 500 on adopted servers — _state_endpoint was scoped to one route 7e60ebc5d495efa1fba8c25201727c54792ca3cb Port from MoonshotAI/kimi-code#3007: fork parameter for delegate_task 2d3f5c1554b29df73b12110f8ecf657fe90762a2 feat(gateway): GATEWAY_RELAY_ALLOW_DIRECT_PLATFORMS opt-out for relay-exclusive mode b92433993fa0a106261106d762709fa39e28b7bb fix(local-runtime): MTP and the large microbatch must not stack — choose per model, price by vocab 67292ec5b81d38230928494c053c60dbf3d6c987 fix(gateway): GATEWAY_RELAY_URL env stamp disables direct messaging platforms 42fc2d1c3e382fcd78151938531133d5e92b0c38 fix: harden salvage of #65605 — redaction-gated test, sibling test baseline, docs 144986bef4746b0acb277513568c7a66ae1e6d2f fix: skip write baseline for redacted reads d41c078d5b6f810ae826aa586e7537a3e1bed480 fix: block stale write_file overwrites 76952ba54f5dd83f4f5bd0246059171b4b9d1c4a fix(desktop): follow focused bot for mentions 770f9a574763c4e9e8457d3b8047bfd17a859001 fix(desktop): read the live union roster in mention-completions + mention middleware 9e23ebddb41af26e96c7e6c7251ae5742fc036cd fix: memory-plugin and Qwen-CLI config JSON survives Windows BOM 3148f66617cae1000ea139a657d016d972e5a914 fix(agent): preserve streamed refusals as text (port of anomalyco/opencode#43343) 8794e5a21c980a0f26532cb4883284b786cb3f25 Merge pull request #91025 from liuhao1024/liuhao/cron-bugfix-91022 c1e25cadffe539b058816be5fdfc9127d7199fa4 Merge pull request #91155 from NousResearch/chore/scale-to-zero-default-2min 48f15c1ecee4b9f6498493e0148b727c7992d6a3 chore(gateway): drop the default scale-to-zero idle timeout to 2 minutes ee000768cef4dc9399f32c88b507104ce15400dd Merge pull request #90761 from NousResearch/fix/scale-to-zero-cron-aware-idle f7bf3b57b1a5261c32451d7cb60db7c8e80f0f5d do not pre-stage camoufox 2ebd15ea53f475f069905a9e708800cfde65b532 disable light installs for now 28f7c4e68a362f6d22f5ad0fa3e136375f158154 Merge pull request #90760 from NousResearch/fix/flaps-socket-group-access 0215930526944a7a1f16a5f623d831056d8cf6b6 review: fail-awake work accounting + rename is_idle param to active_work_count c3533b3abd6820dc14d3fbb4073e38a7c35ef2d0 review: harden flaps socket grant (symlink guard, verified outcome, precise scope note) 2263a2e57a8c8b0454ef5352a9358efd64b289e6 feat(provisioner): --extras stages optional tools with the default sweep b93fd1829394ffc5ec429d88b9a59227c9c63d17 refactor(provisioner): classify a declared pin gap as unavailable, not failed 8df536400d44e2bb55f7469af61a5e34a2866fa7 refactor(desktop): import the pin table instead of reading it at runtime c283b1641b1651938e36233c5b3f79f82a1445d6 fix(install): suppress cua-driver telemetry console and env in install.ps1 e30388e409a95b30d6acc4c1f6c0cd8d0c66393c fix: retained group panes re-anchor to the latest message on reopen 3c5fb284e53c84cefe472c0e24eabe31dcff0819 fix(bot-mode): group-room UX cluster — Shift+Enter newlines, open-at-latest, late replies harvested (#89884, #89835, #89545) 7ab2e417f090b12359f0fffb615acc80c6d13c7c chore: map contributor email for attribution gate 693d6341b74f2213a56c5d4316d9f863789d7ad8 fix(desktop): expose group deletion from roster rows ddc78217fdc1a34a4b91c6f78362b20d8415aa43 Merge current Bot Mode group fixes 603d5651b31f0c46d18138946d8c4009fdf2c3d4 chore: map contributor email for attribution gate d1ea11d5898147a1f2f80be5a03f32f7868a97ab fix: disband tombstones no longer hold the group name or leak into storage 92b6da23bc415c28ed11f41cc2d97807e5fd063b fix: disband confirm copy no longer hardcodes the legacy session title 3752948bb7f81e3e942a2f379e1a45363e0beef4 fix(bot-mode): recreating a same-name group mints fresh member sessions ba42346e99db4078e83ec6f1c0a16ea7e8c217cf Merge latest upstream into hybrid remote Bot routing 96c514ff102b33690077c97f674c22332a365c5a feat(local-runtime): adopt receipt-backed tuning from NVIDIA's recipe catalog 4a476da7b4af07b58ac2c00b97a559ef559e53bf fix(local-runtime): keep the local-models row in explicit-only pickers on every profile 9f4de4687944271a4adf209ad11350e8d8ad06c3 refactor(desktop): render the shared connector card instead of a second copy c1ffa92bb8d06432d0982d3d59a8003697c280aa style(mcp): tighten two comments to the constraint they carry becb8050ca91467dfad453f055a7dc634784b551 fix(mcp): stop starving stdio connectors of the credentials they asked for b7a6802b822fa23d6b72b10c0c7ddf01dd42ba2b feat(desktop): one card per connector, with the setup in front of it c97e00719d83a31dfbb4f9a7f41f64f098e9638b fix(mcp): reach for the card, and let a no be temporary 8c40d00dac5225ac34293a5a095e2073842358f1 feat(mcp): answer elicitation with real input instead of declining 3f335c9304b7691a30d4e6013d5a7c1e02d21cab fix(mcp): make a connect prove itself, and a refusal recoverable c30737ee29ddbb25dc66a5d137b7876ca6389bc4 feat(mcp): catalog entries carry the setup only the user can do 8ea155438b144bd9f206b6802e5757f86a05209d fix(desktop): give every connector row its own recovery abaeddb5bbdda4add339566a88b0ab2100fc8f8d feat(desktop): ask which apps you use during onboarding db67bf559c00bd459376e1a7d295647fd2f256d2 feat(desktop): one connector engine behind card, pills, and registry ff275a54a81d4b953b4ab889e8650e0d83f2a6c4 feat(mcp): discover connectors beyond the reviewed catalog 4a5b6dd4512a10c3c18da3e5b9e5c7fb681cbfbb feat(desktop): a connector consent card that knows nothing about connectors 73d104100093df48afd0acb5b521772e5ccb768d feat(desktop): resolve a site's own favicon in the main process 9ed308f9012023e2d8807406c356d8d50c444f70 refactor(desktop): one identity chip behind every avatar 847a9df09c196b1e3ffd974d918fb91d5aacc248 fix(goals): honor auxiliary.goal_judge.timeout instead of a hardcoded 30s 9ef9b2d2d01eb4bcf9420973c5ef6c98f2176455 feat(desktop): let plugins switch the theme, and document the theme surface (#91018) 89ecaf03d56a27ed8f9259701f359f3878339a2a docs: document the desktop plugin SDK theme surface 2e1e3cc91d69c8c96d88aed248c8cbb0cb57e2f1 feat(desktop): let plugins switch the theme from outside React 63c6d9a45c5ed7b44636d72e6a541c16d0024468 fmt(js): `npm run fix` on merge (#91000) 30f4cf098d6bb54254cde30d0279c58184f457ee Merge branch 'main' into feat/local-models 59795c40fff95b3029b8f2b02164da892429070f Merge pull request #90994 from NousResearch/bb/updater-preserve-holder-age f0effa1ec0e72de75f225b64479dd8d04d7da4dc fix(docker): let the hermes user reach /.fly/api so scale-to-zero can actually suspend 065c8bd6c0bd50a6a16f53b884ace35f692fc804 test(updater): cover handoff marker edge cases fe4515da69c1631495fbbb3fe1381d84d7c9ae30 fix(desktop): add curly braces in handoff marker test helpers 60f0a4f2db81ecefabd5396dba41519290b3b635 fix(desktop): coerce spawn output to string in handoff marker tests ee6a9f83261a73b634699b6d30edc4e37353ce45 fix(updater): carry acquisition age through scripts dbc2a9c8e9e5b196be48b004459323ec4d249882 fix(updater): preserve holder age across handoffs 5e32e3aecd2070e8245d9ae2c9ee257f547fcb71 Merge pull request #90941 from NousResearch/bb/installer-drain-bound 5fdef0bc2023fc2a1e13f0abaea53bb208477a1c Merge branch 'main' into feat/local-models 24e89883c43a464ce52ea6680db8db8c626295f8 fix(installer): keep the post-EOF wait cancellable 0723cb6c06a5a255f860c38eeb24bb9db67cb192 fix(update): don't reinstall the editable package when the pull can't affect it (#90967) 2b1bff624e6e51af2ada75c0d6e5cfe7d32c1883 fix(update): Windows Desktop updates finish instead of parking on "Updating Hermes" (#90937) ae9367fc8c466484144b7420f9f13832df464df4 test(s6): put the supervise-skeleton setgid assertion on the Linux lane c670464ca75fcdf00f20ec743b4de28073d53212 fix(anthropic): send an explicit thinking disable on the native Messages wire 4d2c546a53703142bc7946a2754d9ee067d8dc42 fix(ci): drop --locked, the installer crate has no tracked lockfile dd1e5b723da21e36a3aa6c60d3d3ef0c33fca27d fix(ci): declare the rust lane on the detect job, and test that wiring c47f0b4590e6b5bb05fb73a42f447ca5444f5188 Merge pull request #90920 from NousResearch/bb/session-row-trailing 5caea5e501a32309cf75a2a2f40c24697d1b845e ci: run cargo test for the bootstrap installer b94a1613e314f77639379cc1d955f77c1b9ee564 fix(installer): bound the bootstrap installer's pipe drain aa08d0fdf410159465c0164edb7dde66bcfe6ec4 fix(desktop): session skeletons stand on the same edge as the rows they become 91670103fd74ecc6920156de22dc48106407f103 fix(desktop): pagination ellipses land on the same sidebar edge as the rows 60ff62cb13cb23b1941a6f6ae662c9c3d02edab0 refactor(desktop): build the cron sidebar row from the shared row chrome b6d21b37b65dde9b5e58e37613014f06048e3682 fix(desktop): sidebar row trailing inset, so the working arc stops clipping the age ccd2eee8a97a13d25c36c1446ed5b5aca2e88653 Correct release inventory before publication d1c1e56c27e6d726e18b861ecd2ac7edf314defd Seal reviewed DualCoach v1.1 candidate 8cc8927b197ac15c426e16dc18f21c6ed491588c change(desktop): rip out protocolScheme c7a51b249285095f66bb5096fdb1aa4a435b73fe refactor(lazy deps): "only/never_platform" helpers, matrix ONLY Linux 26206a494249d9b2d96828071f43146832c589ab refactor(lazy deps): classify install refusals by exception type 648b74cb61a52b94662d30a191bb0a6df9813372 refactor(lazy deps): allow feats to describe their own unsupported reasons fc9b050bbad38184b46fd84df30701fca23ec455 fix(deps): resolve the managed node before the pairing spawn and the bridge start 410d6e0cd04a95b84f740914d6c608038e546243 fix(deps): NotProvisioned degrades instead of crashing; tests encode the managed-uv-only policy 4be3d329642befe915a19338ac2238fe9f5da8e2 fix(installation): export CAMOFOX_INSTALL_DIR when camoufox is provisioned 052513f65b6db0b6328dfe8d2c7efb21849fdc3f Merge current upstream into hybrid remote Bot routing ae90902686a66fd6b66dfacba0f373a8011a594a Extend onboarding claim window without weakening single use d7425705ee403b543f203668eef751c060e2c89d Freeze verified DualCoach v1 baseline f43eabee5f36e11448086ee8ee17c499958e81bf fmt(js): `npm run fix` on merge (#90822) e2c4793efa59dc5db2d8e1fc578f70bdc8c095e0 fmt(js): `npm run fix` on merge (#90818) 2123a01601ca4a9a81f81759451faab2f33ae94f fix: disbanded group chats no longer resurface as empty roster rows (Bot Mode) 044acf2bf700b8452e903f035406091146eb0245 fix(update): gateway auto-restart no longer dies on stale cached modules after the pull fda54a613eec6ad87709b7716669a022ea685d4f chore(tests): remove two flaky test files that tax CI 27d356c54fc2099ad01c248e8a2821c4f423898e test: shim-progress fake hermes answers the --keep-stash --help probe 5dd221d4428fc7091f2b9b0fb888f6a5f4ea7d99 feat: desktop updates no longer re-apply local source edits (--keep-stash) c32119b12c73a64aacc43fb097abb7996175203e feat(config): default agent.max_turns to unlimited; accept inf/infinity/null spellings 64505a2b83df0cdf81805f5418b0c77891617578 fix(resolve_turn_limit): gateway bridge null handling, TUI resolver, docs 5046282867ab2bd515af91dd581a013082d8bfd0 feat(config): resolve_turn_limit — first-class 'none'/'unlimited' for agent.max_turns d3e124601f54ad36f0115dc499e7620aa951d625 test(desktop): parent watchdog env now carries HERMES_SPAWN — update exact-shape assertions 95fa8142694a9e240f8cb9df96d919f5d042d8bc feat(process): positive process identity — spawn tags, machine spawn ledger, Windows job-object self-attach a14384980d8c154147a4d122e912dc0ac015a952 fix: keyless rescue no longer re-fetches policy-blocked URLs e0e3ca3d4331570d510aeac9612473d4802d5b15 Merge pull request #90038 from victor-kyriazakos/feat/relay-slack-parity 196a06d0fecd155308f1249f313b68f73d77ed87 test: pre-command hook stubs accept show_help(arg) after /help filter change 05b4ab0ceb9c2947774d00a71b40233f27c5c312 feat(cli): declutter /help + Ctrl+P command palette (C-04/C-05) 1179f148e436d80fdd36f78cfb758444f392780d fix(bot-mode): group-chat command approvals surface in the room too — same hidden-session class c757f99e630bc8b87dcbb45f075615b690f48c26 fix(bot-mode): group-chat members' clarify questions surface in the room and are answerable (#90694) 2d92793045432be06eedde29ff64743ead6ed240 fix(update): fail closed when the hand-off shim check cannot run d5edb66199cbe82e5465b1581f653f9f5e2a579b fix(update): reap leaked serve backends during a GUI hand-off instead of dead-ending the venv sync (Windows) 9bdff6ab68c190cb48aca3ebcb9a39ae3ff52c48 feat(cli): /status shows reasoning, approval mode, and context usage (C-02) 3509d4b021043a7e7c076ffb262288381a7e8021 chore: nudge PR head sync (empty) 645f85c2fdaeacf0bcd6c91648320a8040e2a1d7 feat(cli): rotating task-oriented composer placeholder (C-09) a41f6831fe178090e3764888045d0968bdc0be22 docs(bot-mode): drop the removed per-bot Sessions browser from the Bots-pane list d431f68013ee710e569329cb4c365223f1f35437 fix(desktop): corrupt backend-ownership.json no longer erases records of live backends (#89298) e931081a446b7712c2b90cc0f496b4c3249f529e feat(cli): type-to-fuzzy-filter the /model picker model list 8265b873e056e0cfa07c4bbfda245fd66e24e570 fix(bot-mode): disband dialog no longer points at the removed session browser a1a1bee5c235503ca3b5e1d901ae07b3eb9d0ec8 Merge branch 'main' into feat/relay-slack-parity 743dc935f58048adae58b5b8c6fd68194e801b86 fix(gateway): count cron and API-server work in the scale-to-zero idle predicate cc85feeac786c1d0736a54f6ba1c79de7b7ab4b7 test(cron): native scalar-fallback test asserts the live delivery actually ran ab0e1b860f37658d5c5b0c5fe57719560341b53f fix(docker): grant the gateway group access to the Fly Machines API socket 21e9d4532fed9bcb856b6bec60c6cff9ddaa8656 fix(bot-mode): canonical-chat adoption survives busy profiles via exact-title lookup 540237c99e56d53daf6325ef07cbd9d79d9c9e70 test(cron): pin the auto-mocked D6 accessor; prove the native scalar fallback with a real adapter shape 6d85d790e40c55d5dc4ce0bb96624e0ae08b7fbf fix(update): hand off only the dependency sync, not the whole update (#90240) 4308c453ac248c43da1f5ff889705f1a6bea24df fix(cron): stamp persisted origin scope_id onto origin-matching delivery metadata 5ab74737e0a49cefccafc7bb78a1c293878284a5 fix(bot-mode): kill the canonical-chat infinite-fork loop; drop the per-bot Sessions browser (#90732) 05d41ab7dea6ffb99b2c7814fbcfa06cf7347315 chore: retrigger CI (zero-job dispatch failure, auto-heal) a316ef89d112b101b8176ab09401a264148e5ca7 fix(update): reap leaked serve backends during a GUI hand-off instead of dead-ending the venv sync (Windows) 010d4e05948518ea86b0958a187c0f9085bc0d9f fix(desktop): corrupt backend-ownership.json no longer erases records of live backends (#89298) 50d48e74ad0f697ff4ebd863786ae5345c2f3fd9 fix(bot-mode): a dead/stale chat pin adopts the existing hidden Bot Chat instead of reintroducing the bot on a new session 0d19e37b95b6250f59bee7c8cb2233cd151da893 Merge pull request #90197 from NousResearch/bb/preview-act b3f6218aa58fc1b69db5b94f60ca6a50a4bc2564 fix(desktop): a checkbox reports whether it is ticked, not the string "on" df06be0a16f1e54656ecb383f5c4110225bdad03 refactor(desktop): give the act engine's pure logic real modules 0fd3b61ea97471f29c6b8f276975ad00388f063e feat(desktop): durable element handles, and a delta instead of the whole page f262e684d80119c8aeeaeae087b83bf0e4961f18 feat(desktop): an overlay that shows what the agent is doing to the page c358a6a570d18e4f461ebd178f43e32ad5d6c499 feat(desktop): drive the preview with real input, not synthetic events c57581cd0d0de29292ad12c4218e4ae399fadcc6 feat(tools): drive_preview and annotate_preview — the agent can use the page it opened a1ddb548409e51c72c25e025ed4266dca9fde659 fix(gateway): tag the loop-liveness and heartbeat-poll tasks as permanent supervised watchers (#84558) 41d92a1c890b4e8dc89bb5e28fe0bdd05e7f0937 fix(bot-mode): a dead/stale chat pin adopts the existing hidden Bot Chat instead of reintroducing the bot on a new session 6cd1ed2e78cf273ec30657993975d6d423c6c7cc test(relay): rename misnamed precedence test; document the flat-key fallback nuance a78af23ccae7129ce386ef427b16903fa309be45 docs(cron): document the in_channel carve-out on the mirror opt-in 162b23c3e22830d242139f41abcb694b69c922dc fix(relay): D6 in_channel capability gate resolves the destination platform's descriptor d29f76c70e9ef08ad3163cda48d08aaa81a45a1b fix(bot-mode): group chat no longer doubles into the Bots pane beside its main tab (#89788 follow-up) 79c39025c07c7872755f6882d91a985a9c7f7cef fix(relay): format hints resolve the DESTINATION platform, and stamp on send_for_platform 20c56f82b86cb066e468088c8916a0392610af72 fix(cron): in_channel thread-flatten uses the seed's gate (origin_target) e69b8e561d4e8ba9eae651122b182c38e263c6e5 feat: consolidate 'hermes version' into 'hermes --version', remove the subcommand d425658d27a14a34b8466707a04dcdb7a9ab8055 Merge pull request #90688 from NousResearch/feat/keyed-failure-one-shot-rescue 8b6cf434cbbd97b228afbc499281b10cbd56746f fix(cron): carry Slack workspace scope_id into continuable seed keys ed3befaed657e61c5bf7e8ca5e007982709b53b0 ci: dispatch hammer 2 ebe6fd72edc4f99070131b51691e018616ffedea ci: dispatch hammer 1 1647d030cf1002dd3728c2d6c7fd402c8cb12470 fix(update): call out GitHub rate limiting/outage on fetch 429 instead of a generic failure 88295f19141dbce78bf250e44dea963858c9f5c6 ci: retrigger after incident window 6f31cfad7825a78b69c46eedbd31f2ac2abacfb8 fmt(js): `npm run fix` on merge (#90690) ef5ead576d84f2a47b48228e97562b1fabc4d429 ci: retrigger — only Label-rerun dispatched on d6129bff d6129bff66eb0ec717bb1162f50c5c38e276c922 chore: retrigger CI (zero-job dispatch failure, auto-heal) fa2601c2f5df58dc33bde47ce1c9cb2f92a75011 docs(desktop): troubleshooting entry for SSH host-key-changed latch 617002171453d939c26e98f11c68451686c4b32c fix(desktop): remote-gateway desktop stops lying after disconnects — roster survives outages, spawn failures log, host-key change stops the retry wall aca40d1d63c884836e3c25a4e719c64b3115be7f fix(sessions): error paths return non-zero exit codes (delete/rename/prune/import) d1eefe6accde90d15f7b70293b54100e7de3d99b feat: keyed web backends get a one-shot keyless rescue on failure — never sticky a78211b15a4f8733918883eb94cef7a23ebaf30d fix(desktop): sort updates.ts imports for perfectionist lint bd5b221a612b58593ded28e12b6e811a28496bd3 feat(desktop): updating now updates every target — remote backends, other gateways, and the app itself 0a8a4cdb3d39f740b8a7a7443f72ce20dd99e57a fix(backup): friendly error on unwritable output path instead of raw traceback 138e482ed02c623c72a35f3130043e906dd4806e fix(config): set coerces negatives/whitespace/null and rejects malformed keys 76653a8eba15911b0bd9214ae0c3d573d26f3201 fix(sessions): prune/archive spare pinned sessions by default (data loss) f796239c6b086c41cfa620378dce2abf0e994437 Merge pull request #90572 from NousResearch/feat/keyless-tavily-firecrawl-failover 3f67921fca59c945879b4b7dec91b1ccc7b4a5db fix(cli): /undo typo no longer quits the CLI; +3 slash-command papercuts 33e64fd83cfc1c4c061a276d3314b8a3a4b62b7b test: capture worktree messages through the _cprint route 7b655fdf8d9d241a32a5f381a0c6f8116847294b fix(cli): worktree lifecycle messages render colors instead of raw ANSI escapes c1e2e67dcff1db95a6cce617552acc89c4ffd706 fix one windows test 27562ad5f80e90f7d552f92dbd4af7f1f511c3c8 fmt(js): `npm run fix` on merge (#90637) 1dfb02ad0f454ec77b7cd98f1dd8180146000dca fix(desktop): sort updates.ts imports for perfectionist lint 90e30bdd277786c368792f8d8542182224619f5e refactor(desktop): one script runner into the preview guest page, not a tour-only one bd853747bbafeafe71b2cfd26791127794201418 fix(desktop): a fresh profile follows the OS, and plugins stay behind the SDK 50e2f970c87dc7fdc2eda9ac1411b04d19e03ec3 feat(desktop): keep midnight, and retint themes that shade their accent b8c6547ca42acb0887bd11f541ab92b7ea9904c9 fix(desktop): off means off when glass is turned down 98bac5feb49612ca31ddf7ac5984c31c7cbb5d71 feat(desktop): an accent picker plugin, off by default be3166607e674637b2b7c15e744da2c6d3439570 feat(desktop): glass ships on, tuned per appearance and platform 38f46504fd1f472771efb2fe6b679a43d8e6ba2e fix(desktop): the finished-session dot follows the theme 6dbd7d11d37b7252e0563c437c04648f2b49fb55 feat(desktop): re-seed any theme's accent from one colour f2986124297dc1751729246d703acebd34e6fa0c feat(desktop): ship the GitHub themes, with Nous blue on top 4aa431e5ecbe5cfd9f834b2ab60a55c8410b449b feat(desktop): updating now updates every target — remote backends, other gateways, and the app itself e7e38851131814ff47f56ef603bb9c52a8e6b978 test: pin ring entry vendor in provider-routing tests (ring rotation made direct-callable mocks stale) 5c087df507c7bd27cbdbc240ecde0a9c5512065c chore: retrigger CI (zero-job dispatch failure, auto-heal) 4dcdc7d3a3140c908e25a4def89e83b2f5d34a07 chore: retrigger CI (zero-job dispatch failure, auto-heal) 90e477d3ed77bd8995ea78be28a17842325de383 Merge remote-tracking branch 'origin/main' into feat/keyless-tavily-firecrawl-failover 4ea69d9d2c7d3483750ba9a1e6ed33a6b5ee1bde feat: keyless web tier becomes a 5-vendor round-robin ring (adds Tavily, Firecrawl, Keenable) c2f5d2da211fddf6841aa911a2d79406116203d8 test: vary marathon-turn fixture args — identical calls now legitimately dedupe to stubs 761990b7800bf130a5a22241ec8e76168cae28d2 feat: identical re-calls enter context as reference stubs, not duplicate payloads 02274c39dc1d679801fa67140917827db089b1a4 ci: retrigger after incident window ad7a14a53930f61efe0a7dc6c110ff0e2ddbe897 fix(desktop): renamed Bot Mode agents stay @-taggable by their new name dc90b1b31df75e021b171145e9771bacce391b76 feat(desktop): the composer collapse ladder continues below stacking b656b0d3ba7417a7d4d074236eba1e57fa71061e fix(desktop): the composer surface can no longer be widened by its own content cef999c5cffb1fcbe4799fe159e041ab6016d1e2 refactor(agent): consolidate uncompressed-overflow guard to one warn site + re-arm 4d1fc6ca0acb01236f520c1b0e75dcfa673b0abd fix(agent): add mid-turn uncompressed context overflow guardrail (#89297) db5d5dffeae128a7809f176c820ccc81bfdc52dc fix(agent): guard against uncompressed session overflow when compression is disabled (#89297) fc9b4186a044b314d3d76ab47f4d123e3dd12a0b fix(worktree): pruner reaps rebase-merged trees via PR state; worktree add survives disk contention f309f92d30474cee54ba1e229254de4db1824520 feat: hermes worktree list/prune — attended reclaim for accumulated worktrees and merged branches 9ed06ca2b655da00c9b67dc91e90d5fef77aa076 refactor(cli): fold lock-bit review findings - docstrings, dead tilde forms, _lock_twins idiom 446da3ef56c99a974efb9c4a5c270bdf9f1849fe fix(cli): widen lock-bit coverage to alias installers, legacy nav keys, and PUA functional keys 6471f53619f544480176af3308c5b27537ad202d fix(cli): map NumLock/CapsLock modifier-bit variants under kitty protocol 118dbe871f4164d4f64d07349627b145ef5baa84 fix(cli): map kitty CSI-u lock-bit variants so key combos survive NumLock 79e6d3e6d7efb1e37e8b9ce38a03928a1ee49ceb Revert "ci: parse-cache buster (zero-job dispatch, new blob forces re-parse)" 87944ad80ba758dcea771ba30d2ebd73f69c67e8 ci: parse-cache buster (zero-job dispatch, new blob forces re-parse) e8c6370740e84e33a62ad5abc39936f23aee37d2 ci: retrigger wave 3 — zero-job load-shedding b8b9156827b028aa2cad0f990a181a5680b39619 ci: retrigger wave 2 — zero-job load-shedding ce47a92c2d5c0980513b4b19b8cc4cf776601b5d ci: retrigger wave 1 — zero-job load-shedding 1faf4094071c88826f39670cdd6994afdc7cc3f9 chore: retrigger CI (zero-job dispatch failure, auto-heal) 5837714be5e93533f46ee85564f4e65025e65e8e chore: retrigger CI (zero-job dispatch failure, auto-heal) f098602a345f5fb80f3698365fef0110eb213f7a chore: retrigger CI (zero-job dispatch failure, auto-heal) db4b840b7224a6fdff00e668d9473dad495c7b94 ci: retrigger — zero-job dispatch on 5a3b1c2de dbbd8937aec18e0739aec9ba58f1d24f6cb12698 docs(computer-use): document requesting the actual screenshot on chat surfaces 5a3b1c2de8ed4bdee214a7f567fe0bf1a5a7cafe chore: retrigger CI (zero-job dispatch failure, auto-heal) 01c3bd4c81699c31871f7845d983bdf68d8797fa test: explicit keyless Firecrawl selection asserts the keyless cloud route 8436e0d142b8756dc9f16c79ec24da2f549ad392 chore: map contributor email for #87427 salvage a92412ede151374212782b0bf47aa8df82e1c19d test: mock load_config_readonly in memory status gate tests b38c40319d0598f0ca67f19f6e5302cf306960c3 fix(cli): align hermes memory status and docs with memory tool gate b8850e17b5ff92cca0f77e6669fafff3e203a02b fix(desktop): floating sidebar overlays keep an opaque background under glass 45f11263bd35140dcc749ae82246538d9dea354d fix(tui): skip the kitty protocol push for Ghostty in the Ink TUI too 1a8fea3ce24dcec339c4532efd9c906b72bf6c8d fix(cli): skip Kitty keyboard protocol push for Ghostty, use modifyOtherKeys only 67029492d472dea515b56084a258270ab093ae64 chore: map salvaged contributor emails (Dhruv7201, ekinnee) b7e12decc6eefc0676f75c61b770af2b090341c6 fix(agent): route relay-wrapped output-cap 429s into the output-cap handler 99c980f466602d89b3b55150653136945e6f53c8 fix(model-metadata): parse 'exceeds model maximum output tokens' cap errors 7f2733b71c12009a6d67b74f829aa3dafd2db9bf fix(model-metadata): converge output-cap retry on vLLM 0596ccdeb3b9b158fd77f7ef0b3c65ac53de4697 fix(compression): salvage follow-up — todo snapshot last-resort, reuse prune helpers 5c03fbedc6ea19937fecb701f70c1644d09a1650 fix(config): recognize memory nudge interval fb96247eaf1f7ee0415a380de590c88cbf7a3397 fix(compression): salvage grown candidates before refusal 62016a1b0a4099ad20ce6c09e7b2417a1bac78e6 fix(compression): count a would-grow refusal as an ineffective strike 5a17b1f41d6b57bbbaa0687e41e473d42324b746 Merge pull request #89584 from victor-kyriazakos/relay-ws-hardening 9ae7247616966a02428f2442c414f14d9cdbce12 fix(desktop): skip source restore in auxiliary windows c25aa35e1aab21e0517574026b080e6087c0050d fix(desktop): keep peer windows on shared gateway 797bc4bf9bfb259e6aa871f6ab27ed66d7c1e367 Merge remote-tracking branch 'origin/main' into feat/keyless-tavily-firecrawl-failover c492379497fd0dd92eaf97fba3d38b2d6e702a97 chore: map contributor email for Tavily salvage 6ff341c4d6afe03fa97f6501e1e3348f1573ae1d fix(doctor): web readiness reflects the selected provider's real state (#78412) f98382807750abed8735c3ac33f7d627df6290d5 fix(desktop): stamp the focused profile on projects RPCs and refresh a remote scan 4dcefed089b39dd18c749e9dfc912931b9e72635 fix(tui_gateway): scan remote git roots and scope projects.* to the focused profile 481bc9391eac33edfc26754fd8aca001866cca97 fix(memory): profile-only config gets narrow USER_PROFILE_GUIDANCE instead of the full memory block a969c5a93d943df20a37cae8ca6fa55afbb96557 test(memory): cover the disabled built-in memory surface d5cddae187ba75b8431cd792fa953a8455baa6f8 fix(memory): drop dead memory tool and guidance when built-in stores are off 37fa4a7c6360e9a53f12d801b9de91aaae2f0927 chore: remove unused import pytest from test file fbca70678967a75659fbd5d4de3081408864ff72 fix(telegram): log the first confirmed getUpdates progress per generation 2eb5217af9550dad3e1f97444422501717f5e907 feat: keyless free-tier failover + Tavily/Firecrawl salvage integration 188d47919a92ce3fb6ba0c93baccdafb73dade3a feat(computer-use): expose screenshots for chat delivery 2d59cb43865d64d04501804aeb7e2d84a214b957 fix(api-server): 'max' and 'ultra' reasoning efforts are no longer silently ignored on API/browser requests 4999af5cc13e93966479c036363f25fe543d511c fix: K3 plan-variant slugs (k3-256k) now get K3's effort vocabulary 141af4febfb478a013d83c12a9d8ca4fd2de02f0 Merge branch 'main' into relay-ws-hardening f51e61136ac62c173282229fb8165375c47e6736 fix(web): explicit Firecrawl selection works keyless against the public cloud API bbb7b607b4c125a5f0cedf1ce29adc6ae4a59b40 fmt(js): `npm run fix` on merge (#90552) 6bf437575549333614d29fc95ad4bed343a98d48 feat(onboarding): enhance Tavily backend support for keyless access ee37f3d8976b1c7a79a0eacbb15e4e887133a59d feat(tavily): update Tavily integration to support keyless access bf4f5e17f8a014d9be71c18ed3133858ee460bc2 feat(desktop): show unread count on the sessions sidebar toggle 508b3cf65d8d6b9a56a3842d232259179c7ca68c feat(desktop): count unread sessions from the shared status map fa89d87ea6cce17d377028401b98604e08a08e14 fix(checkpoints): bare /rollback falls back to a labeled all-directories view (#10505, reapply #10633) 7bf66ec39b0b287b27920e1f96b87faade534769 fix(compression): /compress refusal no longer reports a successful rewrite cce042790509e9ad75ce3b6745e182752b18b0fe fix(desktop): authenticate gated file downloads like REST b7b6ee0118021010aeacf39d0627f2f20b3e1d21 fix(desktop): name the gated file-download auth decision d0573880a8f77e319c2e1a5f29ea493260464143 fix: Codex Responses effort vocabulary is now per-model — gpt-5.5 no longer 400s on 'max' (#68365 confirmed live) 7132f7ca52a02ace678a02361b85ed35a66b0297 fix(desktop): deny window-open side-effect opens (GHSA-9f4c-93c8-jc8g) ddb305c60202d36c4efedfb70800c83a1b25f7cc fix(desktop): give mermaid diagrams a pixel size in the overlay and on copy 6a3a1f411bad7e249fc52d9e804594b3e4c2d460 fix(desktop): mermaid zoom overlay body collapsed to zero height 3683e700439bfba4123fd599bdb48c57a9a88bb3 feat(relay): live-card ops — native draft streaming + task cards over the relay (gateway half) (#85796) bb0a4193d1253758b77b16775ad3fc0b64cdc3a2 fix(relay): a raising socket write returns the result dict, not an exception c60a525380d2d6f8cd3ee5fbc8e066922a11e073 fix(relay): dedupe key platform component is spelling-invariant f920af7bc70e678a6e27f502fecad1a84a624116 fix(desktop): Windows chat windows are opaque unless glass is actually on — Snap/FancyZones work again (#90237) e1d54926a198ce91b3a039914756711ae53e16d2 fmt(js): `npm run fix` on merge (#90536) 2c765549825961bfce0c1bbdbf703c2688a047da fix(desktop): config autosave sends only session-edited keys — stale drafts stop reverting newer changes (#89184 residual) 9c12d2d6c33176ecc8392d83f07b9e0beb2638d2 feat(desktop): unfocused session panes recede db72b4148500e6183cb5451dbb40e337363c9717 fix(desktop): scrollbars stop carrying the theme accent 83fac2cf2da07b776cb20155c557573153d99053 feat(desktop): one theme list in the palette, with a mode toggle inside it cefeed4ca8888b119a6221e9a1d08f15589e497c fix(a2a): expose schemas through tool describe cb3b4caf1c346690498321c8b7d48b669955db3c fix(bot-mode): group-room UX cluster — Shift+Enter newlines, open-at-latest, late replies harvested (#89884, #89835, #89545) 7156d0d658e5311c3f8c88b7fb600cc441b7c30e fmt(js): `npm run fix` on merge (#90523) a662d08f37ee48890da9f53e0659ff8169d72658 refactor(desktop): replace every window.confirm with the shared dialog 21198d940167acc45a36919d5ac8498cd69bc6bc feat(desktop): add confirm() as the imperative front door to ConfirmDialog 5df9cd27eaef1f69f8af732eb4e8a488d410bd83 feat(desktop): let ConfirmDialog carry a secondary action 1e26c02de6b594381782501df669029a8a69836b refactor(desktop): route cron delete and review revert through ConfirmDialog bb0e9ee95a98ed4ec2df8b8abb1887f003a16753 fix(desktop): confirm dialogs take focus so Enter confirms bfcfdb30d118a603ec589bff68c4e0477161621f test(desktop): prove the status bar keeps its own right-click menu 2d6d7c550f04c069e0142e82a3aa5aee52abc350 fix(desktop): keep Radix context menus when asChild overwrites data-slot 1c5ffa1efdfcefe85fec382b1b38f04a0d26f2ee fix(config): provider switch clears the stale model.key_env pointer 803e2952ac55b53ddcd8f204c49c3c4f25c83f7d fix(web): config RMW handlers hold _CONFIG_MUTATION_LOCK so concurrent saves stop dropping writes 472ef4631c9cba3c34c201e8b89ffbe8c255ba29 fix(desktop): Capabilities TTS voice fields write the scoped profile's config, not the active one b4f978d983b24ad4ba5ced5bf2c528bcf1c1fb0c fix(nous): treat "takes no reasoning parameter" as a definitive no 9c0cd1add2c2f962ab3103340da1eb96e2924e79 fix(nous): make "thinking off" stick on a cold start b2a9f06fc7d5dc1df1fd2e51b226de0ce49eff44 style: sort hud-restore import per perfectionist/sort-imports ababd3cb070a393e88061267ff01465ca9cd108a Port from lobehub/lobehub#18258: verify persisted tool-result archives before referencing them 2f77ca19932a91b37164da9dfd49eaaa4892a817 fix(relay): reader without a socket settles pending waiters instead of asserting ca3438d395e7536840d8fe7633b38075d85cbfc5 fix(relay): gate sends on the socket handle, not supervisor state 6851841112e921537eb7195ef6e8be7d2ca2d2f6 fix(bot-mode): group chat opens as one room pane, not two (#89788) 52f9979a6c2dff44048cde6f99cd187f04872e9b fix(relay): reader clears the dead socket handle on unexpected exit 145cd763cae92ccfe8d509b07741b9a93bb20fe4 feat(desktop): drag markdown table columns to resize them e361e70b3bf4e7e151c168eed9227ca2a144188c feat(desktop): keep markdown table column widths across turns and sessions 8772702503f7055d12db778e53e75cd65ea6577f test(relay): dedupe regression tests drive the real wire-decode path 22dfdc1c56a419722395d875b4d09661e1918082 fix(relay): dedupe key reads chat identity from event.source, keyed per platform 48eb3dc28382273b27d32b0e4b6e8a52ec6849da fix(cli): Linux hermes.desktop entry launches instead of silently dying on system python (#90292) 136df922a8a950096b132dd73b330775fc65ffe7 fix(desktop): closing the HUD always restores the main window (#88513) 2ed3cb608ab2278f214a07df337864721fd95fbe fix misxbundle ea169da66544c658229f377e94173741e0740c14 Merge branch 'ci-fix/integration' into ethie/desktop-bundles-restack b48157322724134d4c9f7f9453b0e03b56e3a288 fix(desktop): model assignment no longer copies a resolved API key into config.yaml in plaintext (#88990) 855371dbff2f2d4f002d32672c49e694d11abe07 fix(desktop): settings pages state loudly when they edit a non-default profile's config 1a2024ba9df94fa9b4058009ca3906b509e58673 fix(bot-mode): group-room sends no longer vanish silently — empty member seat surfaces an error and the draft survives a72c9ca248a051b8c7e8a69ff422c7be5066cdc4 fmt(js): `npm run fix` on merge (#90461) d15cd18fa1f3e07e69df9a63fd017ab412a68c86 feat(desktop): hide the Thinking toggle where a disable is rejected d39a031329b4613ee44e504bfd5bd0059f9db8f0 fix(nous): stop dropping "thinking off" on Portal models that can honor it 608fa9c7af367b17d0e5b774353e4afcf65d794a feat(models): read Nous Portal reasoning capabilities from its catalog 9756c8a57a67f6827c86091311e208aaacce14de chore: map Dan Bennett's contributor email aebab05f9ec08c29672dd709db2e639d00a8544a Merge pull request #90313 from NousResearch/feat/keyless-web-search-fallback 258410a184e507485ec7eb0c366ad1ce64a328a7 fix(cli): first launch banner shows the seeded skill catalog, not "No skills installed" 76bf6c7c4011a28476317097635405623d3df0c0 fix(cli): bare /hatch no longer freezes input with an invisible raw input() prompt f4a866b484679ccae191de8749f0ca2936dde456 fix(cli): /config displays the live agent credential, not the env-var constructor seed b0350365829ee67aee0cd40e7cb04774c57dab27 fix(cli): /yolo reports locked-ON under process-frozen YOLO instead of a false OFF e73b8519f6d5041da78ac1e54ec27ee62e36cbb0 test: pin -z/--oneshot --skills forwarding and partial-success contract e7091d5fb7ed04df6ac774e8458b7e46ebb67045 chore: map contributor email for GarlicGo 466665282b086db3ec6b07f8dd281cbcaf043af5 fix(cli): Fix oneshot skills preload 22f66de638ae89189ade4ce9520aecefc8f03d45 fix(skills): publish and read the (map, platform) pair under one lock 4f12cfd98df813b0cdd8ced04ead2bb083f9f47b fix(cli): wire /whoami slash command in classic CLI 1fa66f257798f5ce604a3004fc14d5191b35a759 Merge remote-tracking branch 'origin/main' into feat/keyless-web-search-fallback 4511ba49dd5830062ffbcfbdb3f2a4fc7f278ccb fix(image_gen/openai-codex): do not save progressive partial frames as finals d0132b58214d5cb1c8ae9b294134d9d96cc47aab fix(cli): give every wizard free-text prompt arrow-key and Ctrl+A/E editing fa62b22ee7a4c77d9ff7c1c31983e5e8a2a81ec9 fix(cli): enable editing in custom model prompt 938f41e1cd64e421baa4996cdfe0ea9975236a3b Merge remote-tracking branch 'origin/main' into feat/keyless-web-search-fallback aacadb36b5dd5857290af72fccc77b41c325b6df fix(computer_use): the Desktop provider refuses when no Desktop answered 8408edcfb5e086b500b8bc47c5e43b418335b5fd fix(bot-mode): protect ordinary sessions from hide sweep d604ba6585b856d90c02232ed08ab06f5fdc78f3 fix(bot-mode): running kanban/tool workers now light the Bots roster (#90268) dc24eaa4e4629b2b58b94f3d67a8fee27df098c6 fix(desktop): a lite install says the Computer Use bridge cannot run here 2ab9d188e5e8b8213e6c9b890a06fee8773104bd feat(desktop): profile-scoped Computer Use bridge, out of main.ts 5001f62fb41388838202e61e0b9f1f173d7f84a3 fix(computer_use): bridge behavior belongs in config.yaml, not .env f6d184c64b9d4afc5188844df8d3bfaf2c546881 feat(computer_use): route the Desktop bridge from the session, not from config 6d1284a0735b8e4f571d4ddf0f28f83dda71b6f6 test(update): deflake the Windows progress self-test (both race directions seen in CI) 2d3a9c7def41e4363c42ffe1191490d1215a8a8f fix: scope Desktop bridge by principal and profile 31ff69c8301550da4e41b56c5ffe9d5d055cd822 Add Desktop-managed Computer Use bridge 430cbbe8c0361e8d01282b5593ac62cc807f9f44 Add Computer Use bridge backend f7d90c941038b1cf38cadaaad4f751401909539a refactor: single canonical reasoning-effort vocabulary ends the per-vendor clamp drift dbfd7fea5a909265215509d776c7206045b30bc5 fix(computer_use): let each provider answer whether it can build 3d62508240f7cb6fc886355f67aea7ffaef97bb3 style: sort sidebar-archive import per perfectionist/sort-imports 3e0503327532621b12a68598923678f6fce46a19 fix(desktop): deleting an archived session no longer leaves a ghost row that spins forever 26da56fd53bd4bc8498b6abee590d64ccc3f735f docs: tool provider selection follows the hermes tools pick (post #90317) b2ea0f3810ba568d420cc4004ccb63bbc4ebda54 fix(desktop): gateway restart no longer clickable-by-mistake next to reconnect cfc55d34872a17be91bd9b93a29b9f41595f7bc2 fix(config): remove obsolete cwd warning parameter 2cc83543bb30ec1c7075a88c6d243f94e0a8769c test(config): cover unreadable dotenv warning path a93f1b2becae001c1cf160cdd122d5991812801c fix(config): warn for all deprecated dotenv cwd entries 31561e37ed7ac2f874d2b80c5d0eb04cef6e98d1 fix(config): read deprecated cwd settings from dotenv 5ead08977509234edff9152a90c05ddcd1a3cc2f fix(desktop): cron panel empty states stop suggesting a broader search when no search is active 20059cbc6993570ca52db4df7eb46286d6e1134c fix(desktop): sidebar search results no longer show raw >>>term<<< FTS markers 98b6f8676d26544da4ba655a6602effbf92e9721 fix(desktop): Models/Providers settings no longer hang 20s when gh CLI is signed out 612b3633d2a4fe43be7fcde6a11227c56f60a431 Merge pull request #77915 from bbednarski9/feat/relay-native-plugin-init 890d3ae4f3273462ccbd2c5371a0da1097418ad6 Inspired by Factory Droid: Space stages clarify choices from the keyboard b02381b34cd458662a3bc9c6a5e8496474ec99ae fix(computer_use): ask the provider at dispatch, not at construction fbf5eb8dd9c6eb9426f2c96abfe95eae89ac6c7d fix(cron): DM cron thread seed keys through the DM arm — thread-typed seed row never matched the DM reply's key 1d86dccad1f6cbf7f49e3b99e8194f68e02b21c5 fix(cron): seed continuable delivery independently of mirror opt-in d2b9b73986ef74e8732be9da0b12739c03a90437 chore(gateway): loud mirror diagnostics — name the exact drop reason 4673836f79d9189d8089387532424c41d0832933 fix(cron): deterministic in_channel seed + companion thread-surface seed d46b3533d4482b7aa94f6c010e4c05e942d4e2e8 chore(cron): loud diagnostics on the in_channel seed path 3c52d3589fa5028c8a0faa90d809feed96af3cd0 fix(cron): in_channel seed must not require the attach_to_session mirror opt-in fab8479aa005e3c6f9e779a2b9da4e186a17db4a fmt(js): `npm run fix` on merge (#90408) 4f0d43cb2b4e7381dd02e57c0bc53fb971b1478f chore: map contributor email for attribution audit ece92a5ac9b2c8ffc92d63bf0019c98a7148f068 feat(cli): add --format stream-json for structured JSONL output 22b81836d2fd819252e9c662fc6b28b8e1a3eb12 style(desktop): prettier 12d438ceb363b8e7dac5268154c25e39f9b6dfa4 fix(desktop): keep the two-argument call shape for session RPCs without a deadline 0734cfd31988838f9aae400f4343089d16df2c45 fix(desktop): keep chrome API home when opening a Bot Chat 2367b90b9f1643a13c2414e7ddc1f637a3ac3f44 fix(desktop): keep Sessions workspace when opening a Bot Chat 6ec4aa8c3a9bfa7bae3db3d94eeb8ead98202ccd fix(desktop): move the hydration-timeout retry into host.openSession 3a50a6bea8d0208ba4e5438ba52c56a4010b8532 fix(desktop): bound the profile-activation half of a Bot Chat wake ad889540f20ba49157976487a29becb762ce7933 fmt(js): `npm run fix` on merge (#90384) 89d8335152e16cae8928b6664f6f836012fe06cd feat(config): computer_use.provider replaces HERMES_COMPUTER_USE_BACKEND 3cf6c00664abeb51db7765d6434f1dd437523beb feat(plugins): ctx.register_computer_use_provider ceab2148bb7b159b9248cf74df4aa0fea485ea92 refactor(computer_use): resolve the session backend through the registry 17880ac57db482c31cd127960a4a908be7fbc6ac feat(computer_use): add a provider ABC and registry for backend selection de322448ac435b720177b94496e51ae6c10ad543 feat(desktop): move the HUD's way out onto the bar and drop the strip above it 701314c6dd7ecf0b289a8b3ae5af9ca694888409 feat(desktop): fold the HUD's voice controls into one menu cba8efce2101ebed649a5fb6d65dbdb1aabf0cc5 feat(desktop): paint the HUD band as the app's thread surface under Glass 7f9e79b2e17c6abd7d49d9d8f399b7e63e478866 feat(desktop): back the HUD band with the same window material the app uses dcbeb01d0d43a413fd795ca39d5f711cf9dbc282 Port from cline/cline#13329: normalize host-root Gemini base URLs to /v1beta 685c520401ae44784af78f201261e8393701c20a Port from cline/cline#12876: classify Anthropic output-cap errors 96e411c05f646ae9aa6b201d60b220bc92452776 fix(desktop): say which machine the Computer Use card is describing 8e8d0015814fd48165591dfef11eab90ad08ca7e fix(agent): stop the HUD note from telling the model to drive the wrong machine a63225783f9b242f5743b18d74e4006a4dfdab04 fix(desktop): tell the agent when the window it just read is on another machine 095f00337710446f6e446515d63781080326802f Merge remote-tracking branch 'origin/main' into feat/keyless-web-search-fallback 2eb0b3b2c895e4a6f99714a52d35578088ad8ec7 Merge pull request #90351 from NousResearch/bb/terminal-tab-trap 449471c33424f529863f982a31ef70fcd97f8e44 feat: runtime stall guards — identical-call loop breaker and continue-intent recovery (agent.stall_guards) a094d45095f6a431bb9e5ce8267b6bb2985bb1ed ci: retrigger — workflows never dispatched for 4d87290d39 803397ecc3d8fd9eb3d128b867db52a8a2d6db08 feat: wall-clock run budget — wrap-up injection at 80% and deadline-scaled stale timeouts (agent.run_budget_seconds / --run-budget) 7f3d2559312fcb6991bc98037f20c3f5f33f7444 test(desktop): cover the terminal overlay hiding on an unfocused tab switch 2473e568592f3ab06fd8d4b69462303a0d8373bf fix(desktop): stand the terminal overlay down when its tab loses focus 4a83b03c3ad83ff8770711284b0f059636be3dda fix: read tool_budget config via load_config_readonly (config read guard) 09e657793eb9dd0b508ee25861a1d1271e67869b feat: MCP tool results spill at 50K and carry upstream-elision warnings 4d87290d396a66974ea58d8a984bf549cc7c066f feat: keyless web traffic splits 50/50 between Exa and Parallel like opencode d762ed9b3c79326cee1cfcd357cdc5aabbc523bf feat: execution-discipline guidance now reaches all tool-capable models (config model.execution_guidance) 271e49a8ffbaf6bf006013c2247546bccf3997a8 fix(bot-mode): accept both host.connections() shapes in the Create-on picker normalize a46fe01251b87e299707033a495dd63e95fa7c63 chore(sdk): remove unrelated session helper from #89893 b40d2019e8728fcb945d216a00e84ff1292bd79b fix(sdk): preserve primary in registered connections aa2cec721faccd15a6f0156a82041b0938cac062 test(sdk): cover registry primary connection mapping c825be4c770495be56b9830ad2f0db8c91198dc5 test(sdk): cover connection registry list contract 6ad587236fd3298f414e2b868be7a7a6c1e48c39 fix(sdk): return registered connection list 19113b34d1b52dfdebe8b3fd46349b4f74c0731f test(tools): repin selector/picker tests to the provider-string contract aa3c5e59d3e837580892bac7165a84facf7c7b4d fix(tools): honor raw stt.provider: local; finish _reconfigure_provider provider-string migration 89e75f4770705f12dabfb61bd713c8fbceb7643e test(tools): pin strict provider-string selection per category b10c5a8084b453595e796281249a70d39bb7c8c3 fix(cli): persist one provider string per picker row; mirror strict routing in status 7f83d3808c13dcda96c12f488ba3d819c44c9437 fix(browser): strict cloud-provider selection; camofox becomes a selection 099258ef488e0a3aede6ad374c919ff08ad4261d fix(voice): route TTS/STT OpenAI audio on the stored selection, not credentials d7119ea2a641a39a52bdbef139e290dbb90caf5b fix(web): honor the stored web backend selection; no silent backend swaps 2dea073a1c50da45948c9b45c96fbac3e8078616 fix(tools): dispatch image/video FAL strictly on the stored hermes tools selection 9ec5750aca33bf6e977cfde468868b0f0d66e339 fix: widen reasoning-effort wire translation to sibling sites (#89503 class) a664429192c2a6cdb31ba5654ba80025e42a8859 fix(agent): cap the ultra reasoning level at the wire vocabulary 010c9925e30620c83ccbbcf2bf5c314ce8071e10 fix(bot-mode): roster age, pulse, unread, and sort now see canonical Bot Chat activity 42f805e6b734aa89e8510c68cf553b1f3b80a5c6 npm dep cache db136c0934224ef5e3fd02ec11a22b9db290b3fd Merge branch 'ci-fix/c9-flaky' into ci-fix/integration 6c0c8eb51536e06d0c09a279deb8e8a31d957370 Merge branch 'ci-fix/c6-provisioner' into ci-fix/integration f96a86483d4ca8b59ca6b016c4f0471b5538bbae Merge branch 'ci-fix/c5-update' into ci-fix/integration 9263d20df7a73d8856efadf8110ce7b419ae7d82 fix(test): gate the child timeout on the child turn start 773009a3368dabaeeed637c736155e6fc6dec282 reorder defender off a2a425f15e8757d88d7be9b1563cd5a2a3c23b90 fix(update): update fixtures write the self stamp, and cmd_update adopts pre-stamp installs 08b7fad3a54642c5891d4f85d25fc4278af85707 test: registry zero-credential resolution may return a keyless-capable provider f08d3e400ffa38b6e3c38542ca8a34c3aa074a69 feat: hermes tools lets Exa/Parallel users pick the free keyless or paid keyed endpoint c108da70f669992cda126bedd62cdafa82604f80 fix(tests): align the provisioner test cluster with the restacked managed runtime ed454abedc718c0001902f02a91af438108ae0e5 Merge branch 'ci-fix/c8-misc' into ci-fix/integration 2d9dad0bae578f0b7f2c5b98d8819f163ddf8bf2 docs: correct Exa keyless rate-limit characterization 549be0e5f3c1f5949e0e92db2d7fce91a9579060 test: align the lazy-deps hide-window test with the uv-only ladder ad3778ed78d6a22bfeaa747c36b6270f299e8c92 fix(deps): restore the [google-chat] extra that the cherry-pick lost 0701b59f42344fd14d57b8a867ef0ab68738c525 fix(cli): restore the from_signal parameter on _arm_exit_watchdog 9bc215d33e9d6f73282c0550ad002f96d26864b0 fix(docker): move the runtime-facts heredoc into a checked-in script df04286074966f941030b2faff481463f9ea3b34 Merge branch 'ci-fix/c7-desktop' into ci-fix/integration 1dc6d8721580add0d4b3a6ab6d42d26b73ba439d Merge branch 'ci-fix/c4-locale' into ci-fix/integration 553104fdc4ddf1670b878d5d4aba51267a0fbe37 Merge branch 'ci-fix/c3-footguns' into ci-fix/integration 806b92f9e1784c0f59b79cf3954f144f84379d13 Merge branch 'ci-fix/c2-installsh' into ci-fix/integration d14628f20e5c2b70a0df373396620dca2713a1d9 Merge branch 'ci-fix/c1-installps1' into ci-fix/integration c5a9a0aead997bcddb74907f8c438d47fdf65b0f fix(desktop): fall back to python3 when uv is absent in write-shell-stamp 22f6858410188037ea98ad53882ef8866dadfaf8 fix(desktop): repair the lint errors in main.ts and gateway-settings 6044e7068d95bd9efac501d6a4faf1fdbd721a51 fix(agent): make locale regression tests accept BOM-tolerant UTF-8 reads 6073dd3428c0cc00b80c2ee4e02824baf57e8446 test(install): pin the managed uv design, drop the node swap probe c7b971747cde27c20da8a600e53a3ed3e4e65653 fix(install): use ASCII dashes in the install stamp comment 96c2fd3c04214ddeed4cb0c412dd0e04a516cc22 feat: web search/extract now work keyless on fresh installs via Parallel + Exa free tiers 3d28382360f15ed288d89bfde8a12a73e3f55834 test(install): align installer tests with the install stamp and log_warn 1583aac83939140baf3c7c749df5ba8823f18002 fix(windows): read files with utf-8-sig and write files with utf-8 bb23ebde9db71e756998def18e76069fecbcc693 disable defender MORE 7b25941b0ecd1a2d367edc7b6ef89a0958c10822 fix(bot-mode): unwrap connections registry object so 'Create on' picker renders d23c7745eaf13f1667c010be5d9e8648e860eaba fix msixbundle 2ecf00c918fccd7b65e5c4931032b23372d0ede9 ci(desktop): drop the verbose npm and broad electron-builder debug logs 8430c1b4da889f5e72153d59a129b2f19c19beba test(codex): cover nested retention entry paths f6d1d774a126e4a8197cdb2a668bdc34af6264e1 refactor(codex): name the dropped shape in the wire-guard warning 26530e7df5d5e367098b11f4a2ccdbddb2b6c62a fix(codex): strip nested extra_body retention at the consumer Codex wire ba4bc39afdbfc6eb0337bda334758fd8ca6a7cf9 test(codex): pin the retention drop to real endpoints c7b6854ba1c2e3df01a7522faf7b906612a6da26 chore: map contributor email for #89969 salvage 8e2949495a62d4c70101e428a114e5944b765a2d fix(codex): strip unsupported cache retention at wire 8e04f9a0201521692b9b9fb7c531cf09eea7321d fix(ci): the sign cache keys on the runtime pins, not only the lock 209e6b110385d84e4c682064bf6cf8e3abe797ef ci(desktop): drop the dead uv cache, harden the payload cache key ce9d48ce85ce9d7d20ded8c406bea8ef89aa14b3 chore: map contributor email for Haik-G aba96d52512c413773aa78eeefbf127071db446f feat(image-gen): route live-catalog models to the Image API; merge picker catalogs; docs d6e6e8b602ff7bb3e091ae3d2406b2ed12011053 feat(plugins): add OpenRouter Image API surface to openrouter image_gen backend 49cc3708e50d146fbfce90d4e733712f16cbbda0 fix(dashboard): coalesce repeat gateway restarts for a short window f52e68e5d40d6bb6c871f46069ff5ef01a2dd31e ci(desktop): the release body shows a builds-in-progress link during the matrix 01b8e725567081aeab89024f15d753f0551737c3 refactor(release): release.py starts every desktop build, by dispatch 957dcc9f8847ec13c4e735bdce7304c9d923bdee fix(release): draft the nightly, and refuse to upload to a missing release 4ea9b668b9beb2cb02f35a2398759d264c665c6f ci(desktop): the bundled release reads its toolchain from the pin table 657550716f370bd5d1e848a57fc24b9c404cf982 fmt(js): `npm run fix` on merge (#90248) a946169533c1bb11b8bdaf5b7da3708185a2b237 Merge latest upstream into fix/remote-bot-routing 336b3216d51938f790f28f08e85bfba9d3ea543f Merge current upstream into fix/remote-bot-routing fe2752a05db5ef426a8346b230e19005711ccdf0 Merge pull request #90239 from NousResearch/bb/close-preview 7f73978ee4318ca0a3b93ad80aa647ac20cf66a2 feat(desktop): close preview tabs on preview.close 60e9ed12c435c31497a31a5e90cc2dedc41f6e6e feat(tools): close_preview so the agent can dismiss the pane it opened 479d19500a8544944973055b9fa146da1c551c88 Merge remote-tracking branch 'origin/main' into merge/main-3 e0d0c0484377a84e6e20be9de4ddbd02e128c075 test: import resolve_update_channel from the module that defines it 4363019a8d982d90610b8e99527da411d51b534f feat(update): reseed the channel record when the artifact flavor changes 3acca90eae3e0a2312491fcbe9676ab3bc3522c1 fix(desktop): a Windows-legal file version for nightly artifacts a9a54ff79b61f3596f98e97509b4779889e15fc3 fix(desktop): a nightly bundle tracks the feed it publishes to eae68041892cdfead465aae791249515ad775333 fix(desktop): stamp the shell from the payload tag, not a shallow checkout f0ffcbc7532f5ca58d62eba474b0a398082c6e93 fix(approval): align the execute_code CLI fall-through with its sibling guards 16af3bed8c0b4c4534e1d49b7835c67ce2226ee7 fix(approval): route check_execute_code_guard through the CLI fall-through too 93f218b512107bdaa4e50cdf40d6cc0f2b3e3a7f refactor(desktop): share the version and update-state UI between About and the updates overlay fdf6f1d4c80f510c1d579e7fc3b2769f81a97892 feat(desktop): add an Appearance toggle that disables the intro splash 78ffd71f14021c808a959ba598b33b557f93d8b1 Merge pull request #90205 from NousResearch/bb/windows-update-reexec-unattended 52d9f3006d74a4abc8194f694a1baf2203ea654a Merge main for the MoA switch test fix (#90212) 6c0f35452494258dbfd3d4271f7d32a9fb549c2c Merge pull request #90212 from NousResearch/bb/fix-moa-switch-test-reasoning-echo df9e2251f860f9b0dc1df1fb002ad87586dc7e0f test(agent): give the MoA switch fake a reasoning_echo reader ae6c973fc7eb0fc03436674768b1ee85c15f5ac5 fix(update): run the Windows update hand-off unattended a9ed17221eb8849a1bb9014abfc0bd2e89b58ad2 test: update render-table fixtures for the HermesBundled rename 48b5f348e569829060a0ca9bcb277f71c1b5eb32 ci(desktop): keep the bare per-arch msix off the release b2057c16856fc01eeb17a40aa65853a68e61b981 refactor: extract duplicated load_config_readonly try/except into helper 7e3775de2ec35b21a3f8573056cac0cbd5ac290c chore: map contributor emails 8d0e3ab8145a8cd38da7b0a21628c2aa74dadaa7 chore: map contributor email for yingliang-zhang 4ee8a9a169c74253ca37a4166b739fac2052b0a8 test: production-shape resolver + init-read coverage for reasoning_echo 663fa68cd43486a29c783481c9e80ad6255e0fda fix: add reasoning_echo_flag to init snapshot and switch rollback 73243b0d2e4c5b2a1193730c6e6cc6c4329efed8 feat(config): per-provider reasoning_echo opt-in for custom providers 66af43ba5ffe583015b285f53368d3f5b9565159 build universal msix bundles 6284afbaab4c39438056b04d985dca97c30d0e65 Merge pull request #90194 from NousResearch/review/88767 73a1d583e343c824aaf3478a40b8b5e2acbedfb6 Merge pull request #90192 from NousResearch/bb/windows-update-shim-self-lock 7fb5f1483f0caa62c779bd0723f5c18cb43a1cc2 feat(bundles): refuse running on the wrong arch 268615cbb3aad3a36aec37151f5c6ef1652494e4 test(update): cover the Windows shim self-lock class e602225d86b3337f8b5ea1fabd5ec37cde4aeda3 test(update): cover the progress contract without a test hook in the updater cf2ab8522ad957b011ea51465a159592ec015167 fix(update): one elapsed clock, served to the shim by both orchestrators 3f6d4c6338b258245da98c1ab9f1537352bb6a32 fix(gateway): run Windows /update as a module, not through the shim a9eb99d1724a9efa4ad6723bbd46f930a2478889 fix(update): stop deferring shim renames to next boot 867ab54e20cf491bae62133614fa4708ccaef96d fix(update): re-run Windows updates off the console shim 7a94b1fbf77123140de2c0e1d8c8eca2209ca8c2 fix(update): resolve the project venv as venv or .venv 107531549a76238ce8bf51f280b0d7ade81bcf83 fix(update): show live Desktop update progress 87e32b6b30f3e5113e26ac7468319d000a3affac Merge pull request #90070 from dcdexhome/fix/desktop-pin-sync-reentrant-crash 3a034356a237341452b7afebd3a2bfd21021609f ci: run the Python lane for docs and website script changes dc8481b78bb6c1f92c75ce62294d9a0f224200c8 feat(skill): route hermes-agent's unknown-feature questions to llms.txt a45d854d7dbf9d53bbf28f3927a2dffbf45478a6 fix(docs): index every docs page in llms.txt, not a hand-picked 98 bdc5b1f74c26e6240deb8f067ade6dc91c00e8f2 chore: map contributor email for noahingh 9551df12051383cf6fa8872558727a898fb5c181 test(skills): add CLI regression tests for skills uninstall --yes/-y flag cd3f9b64dec90fa95a5d949867477f6a1094a0bf feat(skills): add --yes/-y flag to hermes skills uninstall d59b082b2c50d2a03b152352fd1f964fcc9bd16c chore: retrigger CI (zero-job dispatch failure, auto-heal) d087a87cfbad247af5b73e18d64e2bbccb6315bb chore: retrigger CI (zero-job dispatch failure, auto-heal) f10fa8549590543b0f4e1ee81622e2db315e5400 chore: retrigger CI (zero-job dispatch failure, auto-heal) 509c417c96470c64915a8abdb5c8adfee1999191 fix(whatsapp): contentless Cloud API envelopes no longer start blank agent turns 56916b039d549d8b9c7f0023244c6b51904ef5d1 chore: retrigger CI (zero-job dispatch failure, auto-heal) 3d803697994ec1c324f455d3e500772163e231ce chore: retrigger CI (zero-job dispatch failure, auto-heal) 405e4d925b76bf3a81f952c2ad3dc6b07e10d0c9 faster cachin :3 0bfa31ffb3ea6a5a6b9df9df74042f4a9df06c14 fix(discord): skip obfuscated channels in directory and backfill enumeration efd9ff3d5a8ec9cf89e656a124232123dc85c42e fix(desktop): record the payload python path in the manifest, drop the item walk 00888e80acb7059c36646c304eccc4edcabce454 test: drop the upscale-defaults-off catalog invariant eab087c06fd6bc46903499663e6bf0687011bf4b fmt(js): `npm run fix` on merge (#90140) d21cd51d860454b921abf9f2fe1d5dfd4c071e33 Merge pull request #88887 from helix4u/fix/desktop-repair-missing-venv 0a0497060ad4bf1ccd7f6846b0c4d4b03f8476f1 Merge pull request #90014 from xxxigm/fix/desktop-wrap-toast-titles 0e5499b15300f10ad51a211ccf1c76824193feb7 chore: retrigger CI after main image fix 6c6c17e0fc1fdb48cd4f7b50d5e263ec86acee5d Merge pull request #90112 from NousResearch/bb/tour-unanswered-bridge 84d81d258fda93416d6d8a29cdeaa8784e0b3104 fix(tour): an unanswered tour bridge no longer costs 45s per action 28803e68b452d39435c89b148407d327e91b0735 Merge pull request #90113 from NousResearch/bb/review-submit-isolation 9b5e7a32269fbe478001bfa2a3d5bcb8ede0cd00 fix(image_gen): Grok Imagine 2.0 no longer upscales by default — opt-in policy restored bc92c875efb0b1f281937df0265ec9a22b8c9b06 test(relay): defer compaction flush expectation 00e5a361b60f621ae2246dffdd0a0252895d8493 Merge pull request #89611 from NousResearch/bb/desktop-godfiles 6a3d50c6e05ee9a3c1e5ecf2268524c5d0627b9f fix(tui): allow the ESC byte in the SGR param matcher 2725d3225b902b5f17d27362291c0f3b6ce00596 fix(tui): stop the composer placeholder from sticking Terminal.app into dim 830108c8d958ea7651a37a61aff7620c2aa98d51 fix(desktop): send review agent-ship to the composer that opened it 04956c1a874500b2697639deab0fd35276e1eef8 fix(desktop): isolate composer submit to one visible surface d697457f3810c1f9fecaebb1f835d7cdb89717a3 Merge pull request #89837 from NousResearch/bb/glass-acrylic 1087381345cc6c43fc9be7eedbbcb9955517a4ac Merge pull request #89817 from NousResearch/bb/sidebar-all-profiles-scope 3f33bb809a2801784fb803c66de7d72364aaaf50 Merge pull request #89833 from NousResearch/bb/scope-session-lookup 8e9342b016a02af68a6bb5f3c6de90192a0d540f chore: kick CI 70743bc4cbb9ebd690b9dd76bcb5d5f2344366c0 chore: kick CI 6f7596e9a2151a7a07d0cd56e8a734f435a84da9 docs(relay): link supported observability exporters 31402f630b6dafaa5899a6e1d329ec3ee43db99e fix(relay): complete native plugin cutover 0cc00d0a0c75225bc3eeef611a8199159951f41e chore: refresh pull request head 743908559135e4b0ce2589fffc4c99d49a1e8b74 chore: retrigger checks after rebase 93bec27f668a5ca55d468dc57c42b670713ee345 fix(relay): preserve shutdown scope cleanup 6ec2c0ba8b47cf9a515ae2b1cea50fe13a1f5a97 fix(relay): define process-wide profile policy 3fad83df319e6cdaa3d99b11bdf24b76af4c2399 fix(relay): guard native plugin ownership cutover ad9fb060c55b7ffb289c0b4f351bb715b4650b0b fix(relay): clarify opt-in plugin layering 2ce4f228feb4e9dc3a1900915374cd8373926eff test(plugins): drop unrelated fixture rename c86fd74e286c0b462dd6a005354cca270fc7fd0a refactor(relay): require 0.7 plugin APIs 4e34dfc9329781c4f3f48064d71d5de5b25ae73e refactor(relay): use canonical dynamic plugin config 8afd98ef2af3988ba7fe8a9a29e07d53ca4cb42b refactor(relay): remove legacy observability plugin 0a079b946f221cb87fe6a15d7af50a3a3a09679c fix(relay): retain legacy observability plugin e8644e05a375e5431eb851baab635ad23a6be9b2 refactor(relay): remove legacy observability plugin 0b7288ebcb3cbbb5b25da1948c98097dc76a41ac fix(relay): require explicit plugin configuration e7da915f678f3eb46520c887cb542ebd789fee62 fix(relay): defer subscriber flush to shutdown 918dd8a2657de70c5da6021c08e7da523efc7662 feat(relay): load standard dynamic plugin records 88300217c28f620d53be71d3494b6421356ab765 feat(relay): activate configured dynamic plugins c4ae7f7a3bdeb678a8db566896b32e6a16ad95a6 feat(relay): initialize discovered plugin components 808fde106dc7f81aec097a98560e14d28d7a966c test(desktop): share the duplicated fixtures 9ab5d92fac2e84021aedb4903c61abcc74daadba fix(desktop): sort translucency named exports for eslint 7ed3a5cbe293692fc33e42b70e025fc8f87ae17e docs(desktop): repoint comments at the modules that now own the code a8d87ac1d9e055b33aaa45dd8b5ca2cae6e84f04 fix(desktop): keep the preload bridge alive under the sandbox 5a027a0081ec1e5cd40950383a5bde9a34b0f7ae refactor(desktop): give duplicated helpers one owner 8a918bdc6483f386fa248f83f81785410c389901 feat(desktop): scope the translucency controls to what each OS can do f6e63237d42935ec6e5e6ad0c3c224a017cf1625 refactor(desktop): extract IPC clusters from electron/main.ts 149ef3ed2b735001c5d5649de1023a72ba62b812 refactor(desktop): split lib/chat-messages.ts into concern modules 0553a06728fedc59ddd67a2f83be5fb7a0f7269d refactor(desktop): split gateway-event.ts into per-family handler modules 759d320eeb62f178fdba2f37c102143f090c5594 fix(desktop): keep recents when ALL-profiles scope has one profile eb523288570408132b4e005f58d6cfecb78055ef feat(desktop): back window glass with Windows 11 system materials aa20dbe73e57545b2d4cb7d3383f21d5047cb217 refactor(desktop): split src/hermes.ts into src/api/ domain modules d959ba5601f342ba673ce1c245a2535f7662a06f fix(desktop): scope session lookup to the active profile b5455fdd16fe608214f91149233660e1836b067c Merge pull request #84645 from rroverin/feat/add-nemotron-lightning-35-model 0599b66de77e59daaad0d928010b23016feb6172 fix(desktop): stop re-entrant pin-sync reconcile from overflowing nanostores 1100f196e0f85b0195aeed1a419f867055abbdde chore: trigger warm-cache nightly validation run afcf4f5214df400a71ad52d4679d70dcceb1ed9b docs(relay): document the two new descriptor capability bits in the contract §2 table 723dbda0414ce2d8fdc86283b76302537d91b724 Merge upstream main into fix/remote-bot-routing 31a4b8503db0384b98e357be524d58e807e6d04c feat(relay): block-formatting hints on relay text egress (rich/markdown blocks) 85b89451f60c1afe1f23a65f56d5666f2b168418 feat(relay): flat in_channel continuable cron surface on the relay lane ab6e7b93da55f216d4816c4002672585c607f148 test(desktop): keep long toast titles readable ca20ee90bba57115421e54e121073d1169b72b77 fix(desktop): wrap toast titles so long errors stay readable 63875d2122b3e8192b15513a65c0de95abeb02b4 ci(desktop): toolchain, sign, and pin-archive caches across nightlies 46f5002bd6c91b00731d56fa2732d55ee19b61df feat(installation): pin-archive cache for the provisioner 2f5db1c4447cf1e8db32b01c112a58f87908f7b3 feat(desktop): route Windows signing through the sign cache hook 08de26718df75bff565bb3fdefa3cb100f5d36a1 feat(desktop): cached Windows sign hook over Azure Trusted Signing 5da21482f5a793cc420e2d0612edeea188d7f1c8 feat(desktop): content-addressed sign cache core b5f95d0890bebe3d54ea225d9ffd6246fd38c7b2 fix(relay): drop replayed inbounds — bounded dedupe on (chat_id, message_id) 9b7ab9d65aeda7c535e0a91e5a1c0d951cb48180 feat(desktop): route remote bot actions by connection 2861293a0b39c41cdf6d654e2dfaeab40a66d099 fix(desktop): bound the profile-activation half of a Bot Chat wake 3d6d1db6652c25be53e3a93dcd93d68b397951bd chore(desktop): format explicit session owner lookup 9fecf197b621add46326dd6ae706c700864a4ef8 fix(desktop): preserve explicit session owner on resume 097b92974d49cf09af2a13beb7c1cd8385b34fe3 fix(gateway): multiplex default profile no longer serves another profile's home (#89556) 7851b9d17a6f1e10835e9a7469d8fe389176b735 fix(image): keep grok upscale opt-in cda00f154879f44e758703dac219d937bf9063c5 fix(web): use react-router + shared ui card imports in MemoryWikiPage de6faf64d862419a9a175012699e5523e45042a8 fix: gate dynamic shell words in approval checks bb372087d107e6383efc3b023591effa995c02b9 docs: add session export timing infographic 95d74d61056cfd68fc8e59fbdbff52d68978d2c9 feat(session-export): include timing evidence ec5fc9f2fd635f5a7753f1a77d48f6c24ca8e938 fix(codex): reap app-server descendant processes a23296c1463fc249be3db46965452b0376433e54 docs(tools): clarify terminal background waits 6b03bce1ee6d1bd1dde29e0a3443134cab7df8ef fix(image-gen): Grok Imagine 2.0 no longer defaults upscale on — unbreaks main CI 1d36b4148cd274f8d629be185972efc74453c015 chore: add contributor email mapping for @daveinturkey15-byte 7115a9a5178d3a2cda5297e28cf611d8f336a275 feat(delegation): expose per-spawn reasoning_effort on delegate_task and widen the lifecycle effort ladder 50e72b386c5e46347f81feaf3120c770aac66576 Inspired by Perplexity Computer: persistent-memory audit panel + salvage hardening for the Memory Wiki 6d08c8d2dfc1b319cc4a7e8d10784872a430532d Port from code-yeongyu/oh-my-openagent#7006/#7008: memory-pressure early consolidation review b48a64408915979fd146dae5058e1eb2a60dce86 feat: add dashboard memory wiki fdab017f9434864630d2b71738ef648f9c765269 fix(prompt-caching): tool-using sessions no longer 400 behind LiteLLM Anthropic proxies (#89886) 8f64bfd96ac32d12fc2da940fb371f7d9573e518 feat: support per-child lifecycle reasoning 141fbd92e6aadc2d78bfc6b8d746321c0a78b9a0 fix(agent): respect permitted web retrieval guidance 13ce0c5c675e843af70d19c9e5144249cd51c8d1 fmt(js): `npm run fix` on merge (#89914) 1a19fedb5ae5d8f875dc2c14d302c251f8a7f542 fix(desktop): Bot Mode chats no longer paint blank when switching between running bots ac3d7ddae7feb60771d1ad3ce7c3126b8d0f2bea fix(desktop): skill hub installs on non-default profiles no longer 404, and failed installs surface afcf4baaccde18f96cf22a9aaa31f4771911a8d9 chore: retrigger CI (zero-job dispatch failure, auto-heal) b5460b4f5933c975b792ce886a9cd51c011d73dc chore: retrigger CI (zero-job dispatch failure, auto-heal) 563506b66acb8305ff98a9a8d064afde0143da5a fix(desktop): Bot Mode chats no longer paint blank when switching between running bots 7b5630144474d1bb136969e2a6816c2fea0cc324 fix(desktop): Bot Mode chats no longer paint blank when switching between running bots e5baf8a3c180d3209cd1ad5eee133ca55e0596f9 fix(desktop): skill hub installs on non-default profiles no longer 404, and failed installs surface dc77f2c87f11c4929e151e65396b8f321a1d6a14 Revert "ci: force workflow re-parse after zero-job dispatch window" 43e67f1f0e93705b397b6eeec91d058762466647 ci: move orchestrator to ci.yaml — ci.yml workflow identity is wedged (0-job startup_failure on every dispatch; identical content dispatches fine under a new path, proven by probe PR #89894) ab173e26d2aa0300f22f5a5944c0284d732cfa8f ci: force workflow re-parse after zero-job dispatch window 9c6ecf2ca72aa2771ea9abfe682a5986e00a1a6b feat(image-gen): OpenRouter image picker lists every live image-output model; xAI edits honor dispatched model 008d469991ff52746384ccf0194aab3533e4884f fix(xai): forward image_gen.model kwarg to _resolve_model in generate() 21260c32819084edb8ab9b2cbe4ddf68c70d8722 fix(gateway): carry the profile in adapter-derived session keys (#88404) 5a3410eb9a7dc25a719889be6687ae68b767e41f chore: map contributor email for salvage attribution a787bfeab971463b72bfad5d817abfe94605c9c8 fix(desktop): restore profile/agent switching in release builds (nanostores 1.4.2) ceabb030fb78a2d0b7488faa444906abc0105cff feat(image-gen): add Grok Imagine Image 2.0 to the FAL image catalog ad567732e351cc7a70898437341819c037f50bd4 feat(image-gen): OpenRouter image picker lists every live image-output model; xAI edits honor dispatched model 72b68e0a9659004ac0c0c501edc4f6414723ada6 fix(xai): forward image_gen.model kwarg to _resolve_model in generate() af9eb6ef5a035caaabef7edf014892ebcccebb9f ci: retrigger after 0-job workflow startup failure 9d4944159829b2a078258e237d4a92028800248f test(desktop): share the duplicated fixtures 753399fb601caeeb55ca535cf10a3f5974a76ecb docs(desktop): repoint comments at the modules that now own the code 69f9edb10faf1c98ceae31501764a24ef409c06c refactor(desktop): give duplicated helpers one owner cd16de0503712cd9e43d93bf7f38d14699ff8222 refactor(desktop): extract IPC clusters from electron/main.ts 6930ec720a4892529e3a2bfe0d841be9ebb95d08 refactor(desktop): split lib/chat-messages.ts into concern modules 96b1494073b610c2defe3f009137868e52019378 refactor(desktop): split gateway-event.ts into per-family handler modules 2e36b285560c0e8e08a01d6fb6b4a0c59fc40e28 refactor(desktop): split src/hermes.ts into src/api/ domain modules 56088a11adba0e2b912d7807f73450885767dde3 chore: retrigger CI (zero-job dispatch failure, auto-heal) 4d13d747d17759bed093f4d78dcf98c606cad47b chore: map contributor email for salvage attribution fad1d32e541a673abf167aeff2e42e937ab3503a fix(desktop): restore profile/agent switching in release builds (nanostores 1.4.2) 9162ea6db1fe0f57d6fc4de5120fac5c5a1938be Revert "chore(ci): touch ci.yml to bust poisoned workflow-parse cache" 0f73adb74f3dd3ba4b467ca8124339150b392bb5 chore(ci): touch ci.yml to bust poisoned workflow-parse cache b154046e4efb26c1c62d91f3ad52534cfa523cee chore: map contributor email for zhuermu ac0a8cd281faca3f727a6cc7a5c5c5405631cdbd feat(image-gen): xAI Grok image catalog goes live-driven; grok-imagine-image-2.0 selectable e6ff4eacdb7fdde74cfb83586942a2465c5183e9 fix(tools-config): widen stale-model picker guard to legacy image and video pickers c6b680c4454202f7fa0d4e5ac01c93d20d14e5b1 fix(image-gen): handle stale OpenRouter model defaults afa4f4c660b5200e1395a47ee4adb9e9583f8adc fix: 7 GitHub-adjacent tests no longer fail on developer machines 9e91aaed681f8bb90b2dc69072d03f08467bea74 fix(desktop): clear lint on the agents waterfall e4d1228c8579aa7d9e23af5e6046c908ecdb0056 feat(desktop): agents waterfall — live + historical execution traces 21224a976cd5ea3598fbe6476ef7a9277d02f370 feat(gateway): expose trace.get and trace.turns RPCs 3228b2744a53e24f5c6b2835cf3e54835160a04b feat(cli): add hermes trace command to export/show a session trace 5c0e1256d3dcefdcdfaf58e60d7f92b5d2454018 feat(trace): derive OTel-style execution traces from the session store 70e3a413f8fe11069240b08e3856b29cb710417b chore: retrigger CI (zero-job dispatch failure, auto-heal) d2cfe498a502c08612806874d0e6838137649600 fix(desktop): sort translucency named exports for eslint 63565fa26b00a2096247064785c4380aafab2303 fix(desktop): keep auto-speak silent across the stream-id rewrite 4180c3f326f4c7b2dc67ba1f5fb80c448bb9a027 Merge pull request #89623 from NousResearch/fix/tui-focus-regain-atomic-repaint 1ec87a927951c382978dc005c12b891f6676392b fix(gateway): carry the profile in adapter-derived session keys (#88404) 845ccaf15b503047f7fe10e0d9749c50f0a16785 fix(desktop): keep the preload bridge alive under the sandbox a9de457776424d3f5dbf21b52ccd1d93663b6927 fix(tui): allow the ESC byte in the SGR param matcher 70e818c6e3e3d5dc8ca30fab5d6360e14631d874 Merge pull request #89814 from NousResearch/bb/session-group-icon-fix ca4a0c43584f0a595faa2da3b2c05b427a498e28 Merge pull request #88233 from helix4u/fix/get-windows-recovery-command d2433c176e936e2dc732df432ffa6c6f4ba317be Merge pull request #89838 from NousResearch/bb/update-desktop-rebuild-status ff3dbed3f7513eb67545a93543453dd7158879ec ci: retrigger workflows after the orchestrator died before scheduling jobs a5bcc2d41508e925ed91b47a0114eaac82710d48 feat(desktop): scope the translucency controls to what each OS can do 3e6b0bf787dd55649785eb500747b6c7628f1035 feat(desktop): back window glass with Windows 11 system materials 0223710d0034677406e6dc650e0273a6e867d6ef test(desktop): compare get-windows installer path via realpath b82f8b06540720d1b637e97a8d605e3c2eb69870 Merge pull request #89257 from xxxigm/fix/desktop-files-panel-remote-download c9318bb6fed013ba034f0de53acc9751f8fbfaca chore: map contributor email for zhuermu 193cab5f616bd6aabae7e7c28bbbf2fa715453b8 feat(image-gen): xAI Grok image catalog goes live-driven; grok-imagine-image-2.0 selectable 55b013ea7b75f180adfec103957bb230a9412344 fix(tools-config): widen stale-model picker guard to legacy image and video pickers dbd3cd64a9a3876754ffb100e18d511949886731 fix(image-gen): handle stale OpenRouter model defaults 6907c9784771fecc9d2e091fe29591fbc257458e fix(update): don't report success when the Desktop rebuild failed 040b4575e175cfd4d9ae85a04332a314b87343cb fix(desktop): clarify spoken-reply rewrite comment cddf6147d4a1ec37f6eeb6bfa2f7c006e25ffa0b ci: retrigger after GitHub dropped the PR workflow 2507bc649ffbff6ffd0ef15b51bff4c6977c3efc fix(desktop): atomic profile-switch publication v2 — fail open, lease mid-dial entries (#89622, #46651) cd90b3b97452d67e399655dc543418593d17e5f1 fix(desktop): scope session lookup to the active profile 99a5c00dc35a775abe905377beb2ce95686227f5 fix(desktop): sort the spoken-reply import so lint passes b44871db0aa2ff361a3c531e3ec2a4e94c08089b Merge pull request #89819 from NousResearch/bb/keep-gui-surface-direct 76547615f870549f3af5624ad2fda995970b10d9 fix(desktop): the release upload attaches the msix artifact c12d2962db21340ac4c397ad5ca66ce03b68ef8e test(tool-search): cover mixed MCP assembly and the HUD note 022898811d6ffa1626205bfba26b30c79fc68817 fix(tool-search): keep GUI surface tools directly available 53b422e1aa0d59c6359b45e8582fa442e4bba390 fix(desktop): keep recents when ALL-profiles scope has one profile 0e980e80494f595d78f8d30078b39b8c9427e221 fix(desktop): keep mark-all flush with the sessions header actions a85a5b2dbf39545d54b885d9cb3174298f9020bf fix(desktop): absorb the auto-speak id rewrite and cover Read Aloud f5cc53eac20fa25493ffe9cc972b9507e6a7958a fix(desktop): identify spoken replies by turn ordinal, not text 649c20629eedea5a26d34b01ec8f3e14e96e9249 Merge pull request #85429 from NousResearch/jb/yolo-settings-session-info-emit 77f4d2793f5bd2a59d36e26179ad1a449df9f74d fixup! idk what, fixes render builds table 38f79e25a0506bf27538475589578e9c2528aef4 Merge pull request #89798 from NousResearch/bb/tour-demo-remove e4771b92a7f3f64f898d1f453449013247613421 Merge pull request #89808 from NousResearch/bb/turn-activity-timer 443c104e61546efeaf900fde82db338812d6ead5 fix(desktop): treat profile=default as this process's own home ff8c4159e8a029bb6b2df4e4a249591f8274ba86 chore(desktop): drop the dev-only tour demo 3e773c3b50e08e92903cd29a71e748c5530af010 no network test :3 ccaa4872d8d60f705a7f0ab044920920fc223a8f fix(desktop): time the gaps a working turn spends producing nothing 7c3c2d112be6b3d91a401ca91dad512790a639f2 refactor(desktop): give each chat surface its own turn clock 3d6d0f52ced6cedec2084396cb31520961bef302 fix: 7 GitHub-adjacent tests no longer fail on developer machines f82f2dbabd9e66b714f2b4f8a40447fe0c13e732 fmt(js): `npm run fix` on merge (#89795) 6cf6ad47e1d28b971ca4a8a9f2c76639fe342eb8 Merge pull request #89620 from NousResearch/bb/agent-tours d23a4875aae831dcbe7584ddbca7538ec18abca9 docs: cover hermes chat --query-file and the file-based Bot Mode DM transport bbd6607968d26db9f56075beebc8808873f98077 docs(tour): document navigating steps and the handle vocabulary f0d0971899ebe5d0b6165615ba937261bf5c94d5 feat(desktop): add a dev-only tour demo 702d7bacc9226594f23093b35011c864060d3b8b feat(desktop): name the app's shared surfaces for tours d433a452cc9c1c04cc4f66191a238296c5894d10 feat(desktop): give tours a themed spotlight and directional motion 98bbfbda6e7cedc45f30684452a121295a068c56 fix(desktop): keep a tour bound to its target across navigation and re-renders 93b50ea0bb750cfeb121dbf4d7d30c0ec0dec59c test+docs(tour): cover the engine and document the API 23d88c2b0e684568f296d7e87ae2144d849ba32f feat(tools): tour — let the agent walk a user through the UI a178719a1c3e27bf82f4510493185d745d1af1cd Merge branch 'main' into feat/local-models 0d572e063b298c46b59636e6d37a22d02ad76f56 feat(desktop): answer tour.request from the renderer ec69940537d133d971cdcf8fc1749c1e9f8fc76e feat(desktop): run tours inside the preview pane 018176915b28aa6a8555864e15472c12481da012 feat(desktop): tour engine — highlight and narrate any DOM 5dc20eb319e7a16886ad21093e1c790f6072e807 build(desktop): add driver.js for guided tours 5d3c15aaa776cfcb4c88fb6e4f0431a95387eeab restore profile switching 38fcc9e5b13c76e4536e3d98fb6346a51e127efb restore profile switching 4903993cdd9747a8a0e11d4022d88d1e20b33eb4 test: enforce -q/--query-file exclusivity at parse time 1190825652e97ce76bd16e818dd2186a250921ee fix(bot-mode): DM protocol no longer shell-interpolates message bodies ad5c03182fd36c7226708b2c5d3746335bdb15c8 fix(desktop): profile clicks land again — lease switch targets against the socket pruner (#89622) 610deab371124632c32b452526eb00c9791987e3 fix(desktop): a script shim has no architecture for the payload gate 292d0df04dfe040506694d4f180ccc75a935d2e6 fmt(js): `npm run fix` on merge (#89759) 9ed738fa0c638c20e8dc5041fbdf045e503deb35 fix(desktop): stabilize gateway settings interactions c41ec9c588308f14ac8be7472e9cd7fb70868b9d refactor(desktop): scope gateway context to Sessions e999df46fa20bcbec2a121ff7a066a8cbc12d291 fix(desktop): keep gateway search shortcut local 6e9e12075cf0dedb8da51c4cdb17aea2c8303181 refactor(desktop): keep gateway details contextual 2c6dcf91c71c80cf1fce7cd0832c6773f7332790 feat(desktop): keep large gateway registries searchable 0a36fa7fbd857f5aa1ea06e83bd30c81c21ec065 fix(desktop): keep remote bot identity visible 72fc5ab7ca4d1f2f365c8e3b8fc1ad81d19608b4 fix(desktop): use gateway terminology in connection UI 3095ac54db5fb85481f814525a4560a7a1a199cc docs(desktop): clarify connection settings copy 2228bc7d88f7bfef408371053d89fecdf067af26 feat(desktop): remember the last used source ccd30f955c1e5b0e41f32a1b53f4002128b980fc feat(desktop): distinguish sources from profiles 0ab0ed54ff995aa69764c16094a348fe68f8d5d3 feat(desktop): clarify active and default connections 4ea516b8d472353c405e69729bd6b8c75c8c321a docs(desktop): explain multi-source session scoping fa73b45d34caee8ab32e63380c0f5d3c070374f6 fix(desktop): isolate state across source switches 0ca7443824f8d4c3a52e3b8f93a2d311f27f0c54 feat(desktop): switch sources from the Sessions rail 7245b022dbe442f215467a9302de9984dda38cff feat(desktop): route REST through registered sources 8e5f55f83b61e43144179874f368ee14e3e99916 feat(hermes-bots): add a collapsible group activity view 589bee99cfbcc62a3350428971e922a995342f4c fix(bot-mode): never resubmit into a still-running stranded group member 2bb6104d289c606451a9e2068b3198c21f2d434f fix(desktop): the payload arch gate follows the git-optional pin a6bada232c4889fec1a2b50664f859d5335bc542 feat(mcp): per-server oauth.user_agent for token-endpoint requests (#75576) d4408912046bd561f53a9c309cfd3d613ab1ee9f test(desktop): update canonical-chat-identity expectation for salvaged PR #89031 ed47d41dc95d5f7cfdeba185b0f500b360330fe5 fix(desktop): bot navigation no longer forces the all-profiles sidebar on af3373f7c8174d6b9675590a8a18aa33fdd354f5 test: follow-up for salvaged PR #89020 — focused-highlight contract includes the !activeGroup guard 80f080b6ed4f1aa3a7313dc2349273e97b8929af fix(bot-mode): highlight selected group chat 3809f740c6d30c08fe4c973639c5b21f612b7411 fix(bot-mode): reseed $selectedBot on register so re-enabling never leaves it stale 35078e849b6974339d925702e31526c36f71ef33 docs: surface Bot Mode in docs landing paths 00e9a3245430de19e82446ac3fff591293561b14 fix(desktop): keep Bot Mode routines docked 104ec97595567466170e2727cc8ec2f6ed382db2 fix(bot-mode): group room preview shows the bot handle, not @default cb0fd836ac8a1c18744acfea7e06c8a049f312c0 feat: Bot Mode blob avatars gain 4 new silhouettes via blobatar 2.0.0 ab099779de6aff3f61a631e5122800133b137c64 Merge branch 'main' into feat/local-models 84e875bf1ad1efe80cfae6682f521e610402f1fa test: drop the stale node allow-list pardon 855ea04c4cc7d31b85caebd99f263dd6c639d0d0 test(desktop): add an end-to-end check for the sidebar PR badges 85cdacd0898fe2b8b9ad8eba3a4f4419bdd7f8c0 fix: close the seams the rebase verification pass found 395c70d616f6426e990632ff8b57cf1e9499702f fmt(js): `npm run fix` on merge (#89703) 77d857c259e9b9daea4289fc4f713b96817931de fix(desktop): restore three main-side blocks the main.ts merge dropped 0b879298a7885b62425e65500c85c584d7c516d5 feat(desktop): browser-bar controls for the address and the page 1314a539c2bb944b8fac312db227836289d54b17 refactor(desktop): custom translated context menus across the app 07b5b7cdcca9ad328d1a5ce9729a23fdc81ffcd1 fix(gateway): service units take PATH from the tool store only 1f1c6c62104320814d8a20d53774ed00ddd3fc49 feat(desktop): show aggregate status dots on branch, repo, and project rows 7d1bd3e67b9c5e3799636114f8cf9c912edf6e1f fix(desktop): follow electron-builder 27 in the publish-resolution test 9020c7f378cd71f2b995f692a193a7602aadf08c fix(pins): restore the union-shape generator pieces the rebase deferred 9307df5c08a3a910826829fc14de030dccb18e34 fix(scripts): the updater-import audit resolves lazy re-export registries 9137ef75c05e205841756f54e6fbf5da3310d3df docs: TODO item 10 records the prune re-audit result f2100320481d40f2b8ee6c5c34358029f2664220 feat(desktop): prune unreachable members from the bundled payload (~150 MB installed) 2ac05f83a17f5ba0c37f6d1e49b8381061923f9d docs: item 3 names gitlock, and the rebase is the fix b31d9c59eb29a1f6bb703c79c19827d6f339ddce docs: TODO.md records what the restack chose not to do e337bbfef3efbcdc392c8e695e66bdb3bda5ee9d docs(desktop): sidecars, install state, and the install lifecycle 6aece41de087de7771e98beefbe392b948820765 test(runtime): the bare-lookup guard covers git too 6e5bf11008873f22bdb24f7b9715a695ee27cacb refactor(gateway): delete the superseded standalone service script e5b1d9db52b61e1af9e8cd16440e6e7b62725197 refactor(tui): trust HERMES_PYTHON for the gateway child c36e23f918c848974e846e0f7d1216f01aee5b5e refactor(subprocess): delete the unused node launcher resolver b2b48e72469c5409639b27e7ef1a9fb61ccec82a refactor(doctor): report the node and npm that Hermes would run 243f36bd746bfee4354a1100300b6f10cfd8c9c6 refactor(tui): the node bootstrap decides from the runtime facts f554e6ab47c32821814b8489595a38cc9a19298b refactor(photon): run the managed node and npm, never PATH b1c24125d6b23c7dd4cb928a171f335a179ef866 fix(update): mark the ACP launcher docstring raw 25b90060ca0529525d28fcec9c17a8ce73d1d669 refactor(git): one locator, and no bundled git on macOS or Linux c3e1d91e3ffdcee32f7a06c8b86e4ae1e36453b8 test: a session-scoped managed toolchain fixture e4b4b1a890f25ab79c05ce77928272a48106ab8c refactor(deps): the install path is managed uv only 645b7c6c4261e289220885277c89ab8abbff4b9a docs: record the Termux removal 2551a49886620b9bf987202afd3ffec543b75ca5 refactor: remove the is_termux detection primitive 44b397d6d2d6e29345e0018b1127a3a68dc20f1d refactor(tui): remove the Termux TUI mode 57ceef90095de3b0af01a2daea3a426caed48d3a refactor(gateway): remove the Termux service and status guards 61247232a40e36d5c3b2e7ba2edc3127fd532306 refactor(cli): remove the Termux startup fast paths and UX hints 5319b97c046be444674d154c8ad7b17280a54def refactor(install): remove the Termux install lanes 8ecccc30282cf93a824ef4529361bb9cda8fc466 refactor(update): remove Termux uv bootstrap and psutil shim 55477e96785294fdb0a6d82a76a5443e107ffe1a refactor(browser): remove the Termux npx carve-out and PATH dirs 29d76d5997223c2f82b490066243eb54208dfa16 refactor(voice): remove the Termux voice capture backend f40c98b38e2facb4c0f0d9b3d3125b2d916a5a6b fix(acp_adapter): read text files with encoding='utf-8-sig' 5bc8f7b395125b26e82a187b963669b3376773de fix(cron): read text files with encoding='utf-8-sig' 83935e3162cb09edd4654f6c584ddfc2f472ee57 fix(scripts): read text files with encoding='utf-8-sig' 11c4c5b0da4dd49cfbc588b846c87053c693d564 fix(plugins): read text files with encoding='utf-8-sig' 3c416d25f7d9bf88b8a6aa4de0f71c0007ec5230 fix(agent): read text files with encoding='utf-8-sig' 198d026342cafdc5ff2c54e8a2635ca752553713 fix(tools): read text files with encoding='utf-8-sig' 53a7d75c038599ede3ccedc188426540d7dd4a43 fix(gateway): read text files with encoding='utf-8-sig' 6e3cc8802fb49111606a0993fb4ffbbc9fb2e1fc fix(hermes_cli): read text files with encoding='utf-8-sig' 2f8e3348bd331b57715a5c33a0ee5b332bf7430f feat(lints): encoding-direction rules in check-windows-footguns 985b748a44646e2bcf481521f120d3ca72a4919b feat(release): second-precision nightly tags; caller carries id-token f19dbabbc1baa07233b6d9ce144b526bf5033ddf feat(ci): Hermes Setup built, versioned, and signed per release d11daf8c1c4e599ad43ab37355d6db393032f974 feat(release): download tables rendered from real release assets f829b7ee8c11631ec25a37596d0a50b4bd19a20e feat(release): nightly prerelease channel published by CI 84e65da2272af708e40dec6abd4682984febdd93 docs(website): switching between the desktop app and a source install b3b5adccb0585bdd68232cf7295afcac2944b248 feat(update): hermes update self-updates the sealed desktop bundle from the CLI ef35732a6f002848141fc1b1945e24e0d7f9fa2a feat(desktop): About shows the install id beside its channel record 243c6f23c912845428202a7ce5a937ed8371324d fix(installation): move schema manifest to right dir ef1d7ba266abddba55a3d3f8ffea37531b1302bd fix(tests): re-point stale tests at the refactored install/build APIs 3ba2ac1d05c9f9b12886cbec4bbb99a8f3a5075a fix(tests): unblock pytest collection after the pinned-toolchain refactor 0108140c7a9eac94fc90b937689fc9dd9a7cd291 docs(desktop): document the bundled runtime and installer stack 673595c30f12eaa2608c7d8e810374348ec81803 chore: bump version to v0.27.0 (2026.8.15) 4bf5ad7b5a78a695f861540cef99af1d05ed04d0 fix(desktop): the PortableGit arch exemption follows the store naming dc2ec9b0a14be7af8b38bd4e3bc6bbea870c6bcc fix(install): retry the publish rename through Windows scanner holds 2ac58432bb5cbb9202e15e17e305381c422ee34a fix(desktop): darwin-x64 builds cryptography from sdist like win32-arm64 7ba83cd31d75d443fd0781ed26513aad481e5fb7 fix(desktop): the arch gate reads tool paths from the facts, not a map 9ed7982503da553ee24046f3c4c1b04abf395801 fix lint 724b8c5631a582f8c2cce3ad0244dc60172a01da fix lint e65cbd2345097882983723618445c5b90fc4265e fix(desktop): payload staging calls the provisioner it ships with 3325877c61443de78c907aac0727a86b88a52d9b fix msix icons c3adc4a7f44714af9d902fc4793442ecf1d37884 fork updater channel should point to fork 57d001ee88b15e88f0ed36882d2d7da9486da1ef read electron version from package.json 5eea394649a92cdbb84c084d901e98fe2f20f641 ci: kill xprotect baab100cbfe42eee389a13f080fe085ca3c7fd64 ci: cache electron-builder winCodeSign on the windows runners 4493b45a33f05188bab5b3e52313beadae162c11 refactor(deps): read the lazy-install specs from the pyproject extras 5814e72b19c492b9921c1aff69472f8c2e159c91 fix(deps): hold the [tool.uv] overrides on the lazy-install path ebd4c8f79bc560cfc758f31729ed13db35f5d135 refactor(desktop,nix): the stamp decides the install shape; HERMES_BUILD_INFO goes away ea2cf41bd9e92825529249cd6506b0c2d2879ae9 feat(update): post-update step owns launcher-wrapper repair (step_expose_cli) 55d481df05be7de8fd3ad3cb6e46b8786bb2ed32 feat(install): pin the playwright chromium pair into the shared tool store 3ad865e89b8937a6cf3cff86578a806fb4589e6a feat(doctor): read the store split, sweep orphaned installs and store entries 9afb216e55deebaaf5a512005804e1ee289908c5 feat(boot): a sealed tree that drifted from its pin table says so at boot 0f9e5d4c47704bb50f5f8e86411044ce2341143c feat(docker): build the managed runtime dir from the pin table 1529ebf6ccd331c21c4569399dbcf3f53b022333 feat(update): tell POSIX users who still runs old code; wait out cron scripts on Windows 821b373ff3ce075f9f17bbf4d671dfd57ca2038f feat(update): freeze the names old updaters load mid-swap, enforce in CI 086c900ec5ce2d81d984ddf12ab020d58ebbe46b feat(install): one state folder for each install, keyed by sha16 7a572020e1f5c49c7f93da7d2c23b4647ba7e362 feat(install): Termux is one verify-only lane, not scattered ifs 0e87f167f2ca4c1a600b8f0235ddb4bc6822be4c feat(install): the interpreter version is a pin, not a family 5d7e1f49c15a2f7e84292e2eecc2231c42ae583d fix(install): the POSIX installer works again on minimal arm64 Linux 5dd15872a6878a19b9b5478b6968b38f48dd311f fix: never evict pinned CIMD sockets from the callback reservation FIFO 0b588cb3a42a72bd53cad63614689c51e8300678 MCP CIMD auth 22a5c73236fdc40ee11286ed7c4c23cb5092bd3d refactor(setup): setup-hermes.sh wraps the engine instead of being one 59dd4c97e61de0ac90bef841b490b29c14e9fa5e refactor(install): one uv-to-pip install ladder, policy by argument b00e2260d9f1153d9fb9397e6def50cf6879ec55 feat(install): accept a system git that clears the flag floor 8a1b6b037762b36ed194efb2f9dfc6e34446fd6e test(update): hermes update leaves boot records, and only when it ran 9a64a828ae9eeddd030866fb2ffd4c03dcf70dda feat(update): post_update owns the venv sync and re-execs onto it f4f440a27a33ebd598a2fb3ab4732c49bb5b2cdd feat(install): bootstrap git goes through the tool store; ask git for HEAD d0a30f3bf10999481ae8d7aac1625000a1832df7 test(update): freeze what an old updater imports from the new tree bf1c07521dcfa55a1001741264a2a87def8ad398 feat(install): managed tools go in one store that all installs share 72d888c0bf66ef1310a924f2e078fcf69a05ce06 test(pins): digests and urls must agree in both directions 1dcbe9c028d822ce0a192bb07ad279001523e6c2 refactor(install): one git version authority on Windows 4a4b0ecbcfc2ca851ae74da4e47503476c35a49f feat(deps): pin the browser BINARY; the npm module gets a lockfile c9febdde53d93ff6137c7753045ec5252b8d459a refactor(install): clone first, then stage the pinned uv where the code reads it d4291c8278a88c60469d5b99b337d8f69a7c828c cleanup: delete empty log.txt 5bc540ccf4478e0a9cf89114fd3f02f3303f61db test(install): gate the PowerShell scripts on the real parser cd49f1082404fbe9fcd9e2659495d7b857251525 refactor(uv): ensure_uv provisions the pinned uv, not astral latest 7796860461f785bc970ee7bf5e5a5d140ba8a0ac feat(install): the installers get uv from the pin table 9e7252f5a0890f497e82f55f33749ef2bbb1cf58 refactor(installation): the pinned toolchain is the only Node authority e4c9c3300bae8edccf3c97c2cc17e1b4c54b0938 feat(install): the pin table is the only Node authority, and it is mandatory d98e79aa6cf4bc1799a7bbcb5bc6609b2da0b726 test(engines): the PINNED toolchain must satisfy engines, not a stock one 2655c868576bf71e3d822cb54b07519135cc4228 feat(installation): run the pinned node and npm a9d6948c346b2d8febc14b56b629873a8267e17b refactor(installation): one package owns this install and its tools 82c6b10d85559000d58e7ac6ad51406e04fb7e5b fix(runtime): read the pinned Node major from the pin table again 16f694dbe9894f3b63c06471b1385d528eb64d6c test(runtime): guard the provisioner against a bootstrap deadlock 335cfebe2a757789d5dee1270a209700ec600879 refactor(runtime): the provisioner provisions for this host only 9a47289b8223650e2d76fa9f73997122d1c1d7ad chore: set the version for the restacked series 4893dd0a458fbca8da3d498fa950bf6cb370924f feat(tooling): a minimal sandbox for local runs d3a93a224057931aff704b179c47fffd06be2127 feat(nix): nix builds the managed runtime dir from the pin table 1f843d7d7e9e710f000da78bd0193d454341a943 feat(install): the installers and the uninstaller use the provisioner 81e40799bf551c3ce39a4407d5bbcb5581eef6f3 feat(runtime): uv, node, npm, ripgrep, git, and gh become managed tools 9e72597e94eee7bf258740f268f628068ea6575d feat(runtime): one env assembler and one provisioner for all installs d7399456b5628c9261be8e31d753ee1aaf3cf99e feat(runtime): install-root resolvers and the runtime pin table 9accf4c642c57c91a8c623bf68575594c9407ecc feat(desktop): the Hermes Light variant cf6178fe651b497f43c3e94ffe16a0e2a63accba feat(desktop): a backend registry and per-mode connection modules 81213624c9b42f568a7b825b4d9e4253e1721287 feat(desktop): the app shows install provenance and update state 524144e7c439bacb779b9b1249db18dc6a16952e feat(desktop): MSIX target with a baked product identity 4436ccbe3657677e66ee933d4132e9a3867cd3c8 feat(ci): the release workflow signs, notarizes, audits, and caches abe5ad2e822dd3fa9be02a919bb7d56c921240fb feat(desktop): one self-contained builder makes the desktop bundle 0d2d056e0d19199e08e4128ad0bac07072f5cf0d feat(desktop): stage the agent payload and run it from app resources bdd0a79c6a0ebc2344d5d6913c70bd89fa59c894 fix(goals): /goal resume actually restarts work after budget exhaustion 51013e9ae07f9dc4dc41b2c9c6cc1c4070dc8ca5 fix(desktop): /goal clear removes the Goal paused card immediately 23c1c9815ff44f28a576f9e11f46d6ce63d61026 fix(desktop): Bots sidebar highlight and Cronjobs tile now follow the chat on screen 074c2b1afcf0ebeeabc96063ddde75023e4188b0 fix(tui): scope CSI 3J to resize and re-assert modes on focus regain 74f99af470ae8ce47f0903cf431d106cecbd37f2 feat(desktop): agent-applied layout presets — apply_layout joins the desktop_ui toolset fc956de711562e3d7879bc7fd3884492d6cbb527 fix(tui): heal focus regain without a separate screen clear 35b5343350c9e2baab3166f9d0c0b42f3d251c32 fix(tui): avoid destructive redraw on focus regain b7bed2419e6578539651008345ed8aca6eff2508 fmt(js): `npm run fix` on merge (#89619) 20e220d9aaf92babd1a18ffa49372019f083a34c feat(desktop): show the PR badge on project branch lanes 66bb77cbf95614760d12445218a8e5af18e0b0a1 docs(clarify): advertise the questions batch in the tool description d9f98fe07109b56a9c1de194ad4692c049a65054 feat(tui): restore the earlier answer when a batch question is re-visited 9a9015dfa8742b3691d09a981d90d0b7a99d8ad5 test(desktop): batch clarify E2E spec and mock trigger 96b17787c7d08128859b24c51dd1f8021b5b37d0 feat(tui): Tab cycles batch clarify questions directly 100380bbf584646ad77d833bf4bc6aaaf0ea39f7 feat(cli): batch clarify back-navigation and answer visibility 25c6516607a34324a1ef2ef89a6f5a330fb05f47 feat(desktop): single confirm for the batch clarify card 838c4692bca565aa50a10fea51e2f68734178b50 fix(desktop): merge duplicate batch clarify cards 86a6865e6e483cd5788bed54408970df9004cbfe docs: describe multi-question clarify batches per surface b4526d46d09259c7f14b3cb253962dd3d6b5f01d feat(cli): compact multi-question clarify panel a9b8d69a118d2c824cf85438d30d3cff7e85e7bc feat(tui): compact multi-question clarify prompt e0d8a2eb89f6f5744dcfbf3a703a50ed5f3ec85f feat(desktop): multi-question clarify card with per-question locks 879d6a4c78e9f9df7ef4e2946c8e222cdfda1e2b feat(tui_gateway): batch clarify bridge with per-question locks bd8b658a63346318491752fa2439d40bd6aadb8d feat(clarify): accept a questions batch in the clarify tool core 3e906c8f5cf774b259840045235807db2dde5b70 fix(tui-gateway): persist git_branch on desktop session rows 171100448341ab85fd9f5756fed4c4ce16f5c51b feat(update): install manifest, release channels, and update gates 7a02465c14695ff2f87998158220a4a48cd66df2 feat(install): one install stamp carries the build provenance 1f234a1033ca15be0aff851657f542af408ab2e7 fix(nix): let the install-method stamp name a home-manager install 00c38728824e7e5d8120a229eb82fc94df44095c feat(ci): add nix flake check as unrequired job 1dbe469276b11d53c74615da75c048f452638892 refactor(ci): hoist docker detect-changes into the .py file d5a9c2ba6c1e04a177e2e1a1c96ea670b8ab8dff feat(nix): home-manager module, shared with the NixOS module 3c675019f1249b137fd2baa381f5986cc33036ab fix(aux): retry once without response_format when a provider rejects it 8f2d61e3dea057361f75d1aaea99986e1cded703 fix(aux): translate top-level response_format kwarg on the Anthropic adapter f709bd844561474b3b0826367e07637c9e297e3b fix(aux): translate response_format to output_config.format for anthropic transport 81d42a9f0f2cd435a851209003a2bf828e652b2a feat(release): create SemVer tags and draft releases 4d59a6b914ebd63924c3e5a52dc48f8f6e7b903f test: stub the SSRF gate in tests that need no network d3522d77a6ff9e25c8892bc284f0dc86ec4dacb7 test: give the fake agent package a secret_scope stand-in 1a29c01d42c3928cd658fee19a92d9519a053cfd test: teams collection must not die on the lazy-deps probe f9b6f95846b6870c1f1eded290294c243bf497d9 fix: add openssl to the dev shell 1e0749bdd8990de8e1c047be2a17147608107616 fix: forward the editable-install root through run_tests.sh 83c59178ae88ca2f265bf2ce698f6133f3ffb1a5 fix: forward the NixOS login-shell guard through run_tests.sh ea8fdf5ca363effc8ba1214097a005223850e1a9 test: resolve bash from PATH instead of /bin/bash a2f38c08cfcd94232967c91bcb0657ca167b8a05 fix: the working diff must ignore external differs 9e6b60701d4fc52ce6759cbbab855ef7e33eee0a fix(cli): show the deprecated cwd hint on real lines 7305f596aa0dc4df56776102f5d53222d4008122 fix(nix): let the install-method stamp name a home-manager install 534f8d4fb098b36b5ef5ea31fe401209faa023c4 fix(relay): WAN-friendly keepalive tuning (ping_interval=30, ping_timeout=60) a7946f6502e302a12faaf38168ccf88116689cd9 fix(relay): fail sends fast while the reconnect supervisor is mid-redial d2975f4219bcad1081ced887623586caf4a4a259 fix(relay): _read_loop fails in-flight pending futures on any exit 2163f7f8ca82f7c892c7e815dadd80a1486cc194 fmt(js): `npm run fix` on merge (#89580) 4ac938ddeccee2e9846d5508450639587f1e04ef feat(desktop): sessions/bots tabs are show/hide chrome — no close gestures, right-click + Cmd-K toggles 34d1aed3f1d8a101571582b8c9776564d9772efc fix(desktop): hide close affordance on navigation tabs 34075591bc67b012223aff2544bbdfeb3edc0ed7 feat(desktop): sessions/bots tabs are show/hide chrome — no close gestures, right-click + Cmd-K toggles a7a54cb5c01e92fbd51512017352b6156b2725ed fix: never evict pinned CIMD sockets from the callback reservation FIFO 6c93a0570adfc1429fea905e46f03181c6885555 fix(desktop): Bots sidebar highlight and Cronjobs tile now follow the chat on screen c1fbb09489d0ef7fd72c889369bcca1754c7ea5b MCP CIMD auth a807d18a13705b27f9024737e99a0fd361532a73 fix(desktop): hide close affordance on navigation tabs c69b6471e677d7ff23b5cef0cbc2924e900b6453 fix(gateway): real user text stays clean in the transcript on resume-pending turns (#86580) 0cc26777bb8a31437c6207f50bffd15f0e5d6b56 fix(gateway): persist resume recovery notes 1e62ac620a67725ec8ea23f62b854487ac1a85c9 fix(goals): /goal resume actually restarts work after budget exhaustion 0c5f195ee238a47b2897f5fdee48cf95dd0c59c1 docs: document one-click plugin install links (hermes://plugin/install) 4f665a807137e6818a80f2a78a09395119a51da7 fix(desktop): /goal clear removes the Goal paused card immediately 210cdb0ed35d4f7ef0957182312baaaa9e19bfbc fix(agent): legacy hidden redirect placeholders get the neutral wire payload at projection time (#88955) 693c0e1c62aea75f2dd490b66a960917a62a370d chore: remove case-colliding agent@Agents-Mac-mini.local contributor entries 0ee9bc8d1e16daee44c0b2c466659c8c113461ce fix(agent): give interrupted-turn hidden placeholder a neutral provider-replay sidecar 97b41f8cf34c8d62da705b1a4e3bba94fa28ea19 feat(bot-mode): group chats accept PDFs, files, and drag & drop 9d86ac62b41d2b953aafc7d9c1e75711762f68e5 test: shrink the goal-DB timing tests to sub-second wall time 6e67841a9a45c8160bc85846001004edbca97386 refactor(goals): share one dropped-write warning across managers 46d8cf0be32efdaeb6591d2558a9824adbe528b5 fix(gateway): /loop paths warm the SessionDB cache off-loop 246477a80986f2af64fd00181eeb4ed5c5b6330c fix(gateway): /goal no longer lies when state.db init is slow a77ee88ce29c4f1d89f8d60e5b662322645072d8 feat: Bot Mode avatars default to deterministic blob faces drawn from the agent's name a47d3e3989fd66eb22484ca6e26f5d10b8f2e37f chore(deps): modernize sprites-py pin to >=0.5.0,<0.6 f8767d1e71834b7bd7c386b5a95650b641b56434 perf(desktop): durable transcript-tail cache — bot wakes paint at ~0ms 5ce09b3c1e5955d53076de483e88fcc46d4ade85 perf(desktop): Bot Mode wakes paint-first — transcript paint completes the wake instead of the full runtime boot (#89206 class) dd39668ca860d63d98d69f3eb806c7251423fa51 fix(terminal): register sprites in backend classification surface added since July dfdae489a6e239ad037f246c05e0f8bba069a73b Merge remote-tracking branch 'upstream/main' into add-sprites-terminal-backend 8cddd36f8de43b2f5b592ddf40f0cccd36ac5549 feat(ci): add nix flake check as unrequired job fe400c87cfde00ee8acadce6d01aab6fd1898480 refactor(ci): hoist docker detect-changes into the .py file 93109d05ed97b4d69bcc5d228054cfa0aad65775 feat(nix): home-manager module, shared with the NixOS module b359db72ee53e052a31066f9fcac2f3ba0566a49 feat(bot-mode): group chats accept image attachments every responding bot sees c70e15251dc2a262acb1964db864d5aef5fb29d8 fix(tests): goal-verdict tests stop flaking when SessionDB init overruns the loop-thread grace window f0f4f29e27fc5923da1761a20f9bd18d099d6877 docs(desktop): state one fallthrough contract at the agent seam 4e520f0850d1c5a6f9c37cbb4588642962af7340 fix(desktop): guard the profile publication on its activation result too 162aa6d72aabe996b4672de78083b8d3d1e8f7b3 refactor(desktop): wrap the prepareGatewayForAgent signature at the project width 053eb7aab0f3105b1e3e9ed452c132fcf966c015 fix(desktop): publish a gateway switch in one nanostores batch 20ccf88acd46dcc9d464d41d29ebd1672a5363af fix(desktop): fail the agent switch closed when its descriptor lookup rejects d0e0951cf1db60f3b30c4e90017d650211c50421 fix(desktop): publish the agent activation atomically too d57f94a330ea2c206abe42983fb6bfcfbaeafd15 fix(desktop): publish gateway, profile, and connection descriptor atomically on a profile switch b18ae5cdc1e0c96ef4e7e0ca9732bc6e601c2442 refactor(goals): share one dropped-write warning across managers 19591aa390ae6d244829406f02dc371aaf2be0ac fmt(js): `npm run fix` on merge (#89501) 359e09fd65c82063058b8fb9fed59b69f3a7eab8 feat(desktop): one-click plugin install via hermes:// deeplinks 72f9e014976b2dbfe31e23c220938869b0566af8 fmt(js): `npm run fix` on merge (#89492) ae162f7e5c947fa603cb2c1289d3287b4868285b fix(desktop): clear the theme preview at palette close start 1e3106197b70a251394bcfaf56f5b2ab0f3c6a43 fix(desktop): read the palette highlight from the cmdk store 40fccbf082a1c9d1280c279c22638b0973a1c6d3 feat(desktop): live-preview themes from the palette highlight 052fe7240ab7a78bac740aed8e09bef44acc6756 fix(providers): plugin-profile fallback skips endpoint-less placeholder profiles c7d0f6c35f5cc7bbf3524bb1d1becd0769656e1c fix(providers): honor a custom base_url over models_url in fetch_models 7072fc4f87e04fccbb30767387bc72ff0bc3f15b fix(providers): resolve plugin-registered provider profiles in get_provider f5ea3fa9cbe0598b486b9d1671eef1a10b5cb5ef fix(commandcode): accept base_url kwarg in fetch_models overrides d354af5e1290c5860369d108de1346deb17e4ad0 feat(desktop): unified Sessions list shows every connected gateway's chats (#88880) aae96913dfdae30ba53df27a66dea9b84236edd8 fix(desktop): register plugin notify handlers only after guards pass; re-resolve activate at the IPC boundary 73ddf6665c5ec85965f169847370b585d6f83865 feat(desktop): rich plugin OS notifications with deeplink activation 72b7c6c8d17c388de5f15440603931025c82a414 fix(models): keep discovery sentinels out of the user-facing models mapping 015f9990c685487c38071eb394657f380e5e949b fix(models): persist named custom catalog identity 4daaf1e619236356469945d957cfa8a0dad94b2b fix(acp): preserve colon-bearing custom provider prefixes 7fb6b28ec86ca4294ed89b2661a8d661f8d7ab4e fix(models): complete selector parity safeguards 81e813507f3db464dc27762b361f885c16f2d5d4 fix(models): preserve empty catalog and custom model semantics 9d2ba6c655c18aff0913632882302adf7f439ecf fix(acp): isolate custom catalog identities 7e61bd38c63ad477331596c8adfb7a0745642519 fix(models): preserve discovery provenance and endpoint identity f70e9abce9bd917162be78e780de66c39ef9059d fix(models): close final provider discovery edge cases 17405de9c1969c4450f2ca8c7848621d68739eee feat(acp): preserve native provider catalogs and identities fa1bb88e3e56f06de9550bf4de340da8ea674c35 feat(models): propagate native discovery across selectors 638b72f5efab4ada384226862aa5ab3fcc0e3815 feat(models): add native Ollama catalog semantics 6a1fb37c94c3b0d63b34f67bcbf164407ebdb678 fmt(js): `npm run fix` on merge (#89485) 38b7a40382696263f500801b70a5934a7496e3aa chore: map whisky0809 contributor email edb9f96d6d6441948a7dfef8334a31add5ac1598 fix(desktop): keep escaped dollars from ending a shielded math span 21fc7c5a141adf72c4d019cc8ab64b2be44f7919 fix(desktop): shield math spans from the visible-prose rewrites 47066f5ea06107a361982842f3c6f7ab4fc4174a fix(desktop): normalize hugging multi-line display-math delimiters cc421cb697606264c6dd861f8a1d8fc6af269aab fix: dashboard console skills commands no longer act on the wrong profile (#65828) ae6578aff885df76ae736a40751d6116bcc41693 fix(desktop): route session RPCs to the profile that owns the session (#89206) ced900a57da2281f4bc439b802de159cd3a83e7e fix(desktop): file-path links in chat now open through the preview pane (#82140) cb7dd6d2b8670ee0d89b6056d03c80c903f9e22e fix(desktop): MEDIA-delivered .md opens in the preview rail, not as a download link 1c4dc4cf5f60dfa5bba87203eabbe841d265c9e9 fix(desktop): collapse the docked Bots tab with the sessions sidebar on narrow viewports 1855afc1c63888f0a8176b6acd5bbb6c4f0ae06c fix(gateway): /loop paths warm the SessionDB cache off-loop 3ae594b0f4587adfea0081c9a3df5574f9ee130b test: de-flake STT idle-timeout tests on main (run 32099139396) bbb04bd89d99c9c7bdbe961a1187f1a21d08cc6e fix(gateway): /goal no longer lies when state.db init is slow f94cead3374c8576f701175b59e2772c7bb8ad2d fmt(js): `npm run fix` on merge (#89453) fb249d475be07024023ecd906a7789bf3f09a8a0 docs: describe multi-question clarify batches per surface 764fe812df0cc4c42daf24dbd738da07dfe937b5 feat(cli): compact multi-question clarify panel ad90f978f1ee7d7be1a0bc8778400ff29b4603fa feat(tui): compact multi-question clarify prompt 9c908b7b84e9559e443d49867cccdecffb3a0c6c feat(desktop): multi-question clarify card with per-question locks 74aa5bb91422136372c92148b79ac2014daaeb1c feat(tui_gateway): batch clarify bridge with per-question locks 613e8e88e5af519880d0c4eb5d4468b32207b841 feat(clarify): accept a questions batch in the clarify tool core 0416b5ba1cad4571d7a338022d78dba33e2768d6 fix(tui): stop the composer placeholder from sticking Terminal.app into dim 542e146b055f0d43767ac43cdb9e78054b240263 feat(desktop): show a hover close button on pane tabs c0c340e177948641cf096ec9fce079b115230def chore: drop accidentally committed .venv-clean, gitignore it 0093bc0fcc0d7080afabd7cb43ce76bb5337e348 fix(skills): preserve manifest file mode across atomic rewrites 3701435306acb775df848ac9e8d0def0a2840ed4 test(desktop): align preview test comment with math-only normalizer 034589fa224214c9bd97028b69f2fead2be48572 test(desktop): add behavior tests for .md preview math/table/img/link rendering 6a3ef22346777c516847992d58f833a4b814a024 fix(desktop): render math and missing markdown elements in .md file preview c445cc4ebd7bb5c3a7f8e6d87e2db15472426db1 test(desktop): fix lint in file-preview math render test 0fa1212c97f5c46472cc1532f9c0b51a80745d39 test(desktop): prove file-preview math renders to KaTeX 93a2fae4e63f4773615069c8113d5ed8df228938 fix(desktop): render LaTeX math in file preview a55373437585b393d524cd5ea53e184de5ed9749 fix(trust): treat None subprocess stdout as failed worktree listing c820a5d38321a8d870e5b1ed0d89f8b933dd48e8 docs(teams-pipeline): document fetch --organizer-user-id a34157c6ea1a8a9ef0907c786e7195875119abc3 test(gateway): fix background cleanup fixture 663413e3bbd945a3b8f193c6e5e9b71d9854b223 fix(local-runtime): vision_analyze's native path also transcodes WebP for the managed server e88d8831d223417c30d99c1584f8d77de35f8921 refactor: consolidate owner extraction onto _owner_from_payload a6ddfa5769fef5e28a185989af0c8f9162b145e3 test(skills): cover same-name inspect/install provenance mixup 696fef621431439d2795e99c5303678bba7780d7 fix(skills): keep inspect/install from mixing same-named hub skills 6fccbdc54c19029d5cc66fe67422585f66c1f4a3 test(skills): cover umask and explicit skill paths 0b6e2bac2b0f18c910bbd74f23705724769b78e1 test(skills): cover private supporting-file mode 030687dcca2bdd7d6e64109ae4e5a5c2a2d37244 test(skills): strengthen mode rollback coverage 66fafebce0123c24290b1218750dc53976e354a4 test(skills): cover supporting-file patch rollback f33831e4d9c8ab4a77dadd2ecbf01048bf20405c test(skills): cover security-scan rollback modes 968853c5b5a920b251612eab56916fcec584444c fix(skills): preserve document modes during atomic writes 7d780ccb705c2f4a76d160a6dcbf91cd2ab29338 test(codex): cover retained fallback models 3a87f8767a71b97ca0de9553ae38bef4b5c84f75 fix(codex): drop unsupported pro defaults 5cce14b55a1cf20849707082e7e34602dbb7ceb2 style: ruff format on changed files 3450523d761cbabb0fd55f6a2fe6dc31452858e3 fix(desktop): keep the composer opaque under whole-window glass 3e899b258f0bac0afaec49858bcec8ca28d3cf6a fix(local-runtime): transcode WebP to PNG for the managed server — its decoder drops WebP silently de213b5210af6f635720035fc7dc331f0a3ec012 chore: add contributor email mappings for vadelma-agent and tmielika d03fe2adf47ea24bd9ec0bfe027b9a74ff8fba2f fix: detect base64-encoded transcript markers in Graph ids db004d1801b1752f361f8dd544295850dd9dad50 fix(teams-pipeline): support organizer-scoped meeting lookup (#83422) 79c5380f41e2f2dfdf82d3583b02c962c93d6f8c test(teams-pipeline): cover getAllTranscripts meeting-id parsing 182a96645aa97c9223e48b413dcefc570ccfb956 fix(teams-pipeline): resolve Graph transcript notifications to the meeting id 9d8ae051dce412cc812dab0298c2d8148f681006 chore: map lazy-idler contributor email 9005ad1ff71708c426075c3c0b7f89b4c340016e test(desktop): pin selectable-text opt-in on group chat bodies 56ddc036e4531769ee8ca1f23e7e2929825ed2c4 fix(desktop): make group-chat message text selectable 6d1e6113ac97d6345c8fc9e71877b3fdad6b7842 feat(desktop): add copy on Bot Mode group chat messages fac2b127eed2d5eb1f65e7ddb535988c79a4a1c0 test(desktop): require copy control on Bot Mode group chat lines d07be6e1650abaf68408e671946c445df9defcb8 fmt(js): `npm run fix` on merge (#89403) ef5bec0e145f0f2cf11f658d062103e1c1a721fa chore: map contributor citizendev9c ce751ff584b1d2730bf68bf70fa8f34b4d19d72f fix(desktop): resume cold-opened Bot Chats even before selection settles (#89206 class) d758fdbce50d5192412c089aeb3e04227f39b452 fix(desktop): make Bot Mode switches hydrate canonical chats 31f62d76af068abde3c699f91190e8ded07fd05b fix(hermes-ink): reset SGR 22 when a style transition drops bold or dim 57f1219d77f3991b2c25fae19ea40697368338ff test(kanban): bound delegated CLI subprocess test 9c0fccebd33835bacc9df77ba3a2070137feaece test(kanban): cover delegated CLI refusal exit status 0ab6cece176ae406d91ee422865d45a56b496c80 docs: Bot Mode group chats — editable name and room picture 4349cbbb230850c2a7951f140997e7f7b34964ae feat: group chats get an editable name and room picture, at creation and after ff3c65f757ef1e1b2c9b94674b2fd19f0f8ab052 fmt(js): `npm run fix` on merge (#89375) 031b2264090cdde9a991b3d2da6c4d324121b98d feat(local-runtime): vision capability answers from the server, not a cloud catalog d8e2386912f5840bfd6f0fdc5e1460dd651390ba feat: Capabilities view configures the selected profile on its own gateway 411a37c95c145dedd5791a40774e12b4e024cd84 fix(local-runtime): preset generation crashed on every catalog model with a vision projector 82ec5dc419c4d817a7e3f60859dc1be8dadbe5c2 fix(local-runtime): machine-scope the runtime — profiles share the engine, models, and server 55e69e2b05b55f5f00aee70bcb07b6566a048fd2 fix(local-runtime): never adopt a running server whose presets predate the staged models 6ac865e8d740a0fc3f9cdef67b416ffcbb3fc647 docs(skills): describe whole-package manifest fingerprints (greptile P2) cfb077d29aed67d4983c0d8eed0f31ea3fa0614a chore: retrigger CI (zero-job dispatch failure, auto-heal) 3e16d3bbaebf572b913a212844e77d3bc9a833a7 fix(skills): validate registered-worktree membership before sharing trust identity 471324f638453868baa6cc48cd986126d3f3f3fd fix(skills): canonicalize project trust identity across git worktrees 2b72ed24ad06d6f99880eab5268ebee00779bd91 chore: retrigger CI (zero-job dispatch failure, auto-heal) 26e322dddcee35344fb7ada3be577c63d71e6363 chore: retrigger CI (zero-job dispatch failure, auto-heal) 9e157da779b561da69a4251a1e0f3f901f030cc8 fix(ci): scale per-file test timeout by cached duration to stop false FLAKY kills c9944c262db83f45d81de4bd0787b7bfb989ebe3 fix(tests): give tui_gateway_server timing waits CI-load headroom 2ffe04bfd0a484ca5eeee511dd3419c46d364a7c fix(skills): close fingerprint-gate bypasses from adversarial review f429b27786da6096afe1adafc8ed28e30db52342 feat(skills): project-trust sidecar with per-skill fingerprints and sticky deny 9664e386f67965ec8bec5cf3db9d411f2c2b6cc0 Merge pull request #85581 from bbednarski9/codex/fix-openai-sparse-response-objects aa09c8fe8cebba03d3c3f28f80e3aba0c6fdcefa Merge pull request #85580 from bbednarski9/codex/fix-relay-client-timeout-payload d28f2ed05b33dd8bf42e8ccd2028f64c0c7ce33b test(desktop): cover remote Files panel download action 6a843f95c8e9ae91fa0858cc687b7db6a6d01a53 fix(desktop): let Files panel download remote backend files f6bfcb973ce518c1515cc39e4d000a122325d144 Merge remote-tracking branch 'origin/main' into merge/main-into-local-models 040e3c2f227ccfcaf53fa0182ce5994c335f7e85 fix(hermes-ink): reset SGR 22 when a style transition drops bold or dim 8911e2e0edf750b104edbdc106d63d6cdac88524 feat(desktop): route agent-opened and typed URLs through loopback reach 956642c4fcc5f12b142fccdde9cb508b5122a96d feat(desktop): resolve preview URLs through main, which knows the transport 0600738f6d8fca8413fe8a0263790c3d5ca681c6 feat(desktop): loopback reach for the in-app browser over an SSH gateway 2d579af869912aea8d0c1000d64f225433632ce9 feat(desktop): drop the Tools & Keys in-page search — ⌘K already finds credentials (#89192) c1358e45d26c1c340c04659258e582c45630409c feat(tui): paint references in the composer as you type them e69d2fda8a55e9c4e5bf8126533331343d4539cc feat(tui): one reference vocabulary for the composer and the transcript 43f395a4f88402adf79faed3aea8049e45d8d138 feat(tui): export Ink's colorize so callers can match its color depth 8a754104ad0621114d526456a498fc7db5504097 fmt(js): `npm run fix` on merge (#89185) eb6922a8cd3c5cc507e148409c77a476aa37eb60 Settings search is ⌘K: deep field/credential results everywhere, scoped palette + edge pill on Settings (#89167) 593ad08496f6d82f550ad25b38c542c6977ca068 fmt(js): `npm run fix` on merge (#89178) 3e9859beca680d0587f5457e60c4423117607b16 fix(desktop): explain why a remote agent's localhost URL won't load in the browser pane 0593293962a0ef6e5ea520740ee74c4d8eaa0906 fix(tui): Ctrl+C clears a typed draft instead of interrupting mid-stream a9a4a040705f0c312488e81dbdd96bf0b951feb7 feat(desktop): open the browser with a hotkey instead of only through chat e02d1e41fc6104187e20af9eac8b2820566e3508 fmt(js): `npm run fix` on merge (#89135) 4d1cdf83c989ca73133fa6a984bb0dc05e9524a6 fix(desktop): claim Cmd/Ctrl+R in before-input-event so it works off macOS fae8e27a49136f758f5f3edeed29be451b1a2a06 fmt(desktop): eslint --fix import and JSX-prop ordering d48b44150615f9647af2a32281377ddd3db457df feat(desktop): open web links in the in-app browser, Cmd-click for the system one ccabff89766fb89e025276e013413a6fd4ab1827 feat(desktop): route native browser gestures to the in-app browser 5117eb7c93cc77a0e4599fd6d77723bb1108cdda feat(desktop): give the in-app browser an address bar and history controls daca38696738524ffdb901c18dbdbef64c1a97a9 fix(desktop): @-mentions now autocomplete in Bot Mode group composers (#89049) 7cae03b8c02542ca2a9b95d7cd3c02b71010f796 fmt(js): `npm run fix` on merge (#89070) a1682376ca37abe3fcfd30a1febed25ca3678d9d feat(profiles): rename any agent — the default profile gets a display name (#45624) 6abe6edee6bad4f24be139cb9a5028967dc3dc7b feat(bot-mode): real Slack-style threads in group rooms — main composer starts one, reply-in-thread continues it 7a0cdbcd790eddb3627d2b0ffda84f1c9e02847a fix(tests): pin workspace snapshot in plugin-prompt-sections byte-stability test 8a770aae0d550bb92eb021913bd102a61ccc40af fix(tools): spillover is the canonical home for oversized results on every backend 83d451e7b533dd0fd81207aaff74ba659ace1c7b test: budget-replacement assertions accept persisted-output blocks c91681c69acbbc5ab1155c9bb6bc9fafe96f4e59 fix(tools): large tool results persist to HERMES_HOME/cache/spillover instead of truncating when no sandbox env is active 4bdddf4e9585dccc5b05bc1bcb26a5a8d6300978 docs: escape backslash in cli-symbols glossary so MDX compiles 8505559fa94e35f09f17fd29c228b74fb4acdda1 feat(bot-mode): group rooms fold older conversations into one-line summaries (#88925) 2d511f55aa66f6f48fdf66b5d539bcc119e1318d fix(desktop): closing main in a side-by-side layout promotes the neighboring session instead of spawning a fresh draft (#88924) a75d1b5c8921cd656329d939826870b848fdc109 fix(tests): de-flake gateway SSE and goal-verdict tests that raced spawned tasks (#88975) acc614e72fa6b635a19e5eddbc29ed147147a090 docs: add CLI symbols glossary reference page e624e9fde561e1add9388384012b295fde669ade chore: map contributor email for #88864 salvage c381aef16f8c3e689c55ef82f85eb3730ffb69e8 fix(bot-mode): fresh-room name uniquify counts every membership, not just the legacy scalar 7af25a92b06be680957d8431b1ead845d041edf5 test(bot-mode): favor behavior over source assertions 10d6faade986a766977d7c0699afef9e56249022 test(bot-mode): verify shared-member room isolation 9bea439189cec804bda6136ac183b6063181cd0a feat(bot-mode): support multiple groups per bot 7e05e9080b2e46cd35e6f0caa016360301258823 chore: release v0.20.4 (2026.8.18) ecc7a354f0c61d41f0a5e8ac014677ebfb55c213 fmt(js): `npm run fix` on merge (#88981) d4a72b7d7e51ae63face82de069a44cec6fc0f90 chore: map contributor email for #88807 salvage 4bb7e4913fe9e7ec53a07e4d8448aecdd4c65b7b fix(desktop): preserve cross-machine group routing b95ec1cb5dd610130eedeb53d7b8f989737f0f35 fix(delegation): running subagents stay visible to list/steer across parent-agent rebuilds, and child-started process notifications carry delegation attribution 0bb239990045d8427ff593031f2768950d0e2767 fix(tests): sibling hangup-protection tests tolerate the branch+HEAD suffix 8ce8ffd42955f60c84cd698e9ae4470c3d2388f3 fix(update): 'hermes update' no longer claims success on a parked feature branch — switches back when safe, warns loudly when not a943895f2ecca994ed773a77ec68ce47204ed2c0 test(desktop): prove the install_id collapse (#88828) and boot-descriptor connectionId (salvage #88697) compose without re-appending the twin-address primary 7e156c6d2ebcaf7d0eea5deb663ea5c5bd420197 fix(desktop): preserve primary remote connection identity cb337d39ba63ecddc9f214679d08daf75789a8e2 fix: Bot Mode cronjobs panel no longer shows two empty-state markers 53d4c1da247ca79559aa7e33fb77f60f7951739c chore: retrigger CI (attempt 60, Actions dispatch outage) 5c91b040d394288b1b450d539fe6650acd449527 chore: retrigger CI (attempt 59, Actions dispatch outage) 59661446db69164e2fa732b79e05698c28c77df8 chore: retrigger CI (attempt 58, Actions dispatch outage) 0a350b7e2b1ac35d0f1a706fabc09a0d694c7123 chore: retrigger CI (attempt 57, Actions dispatch outage) 537ac11de64a5ca01f3a3595299ab30a8912ba43 chore: retrigger CI (attempt 56, Actions dispatch outage) ec32543636e3872b5a6b403e534b7823b6ebeb22 chore: retrigger CI (attempt 55, Actions dispatch outage) d5c8298da46969264a0abd79f944264e3919002e chore: retrigger CI (attempt 54, Actions dispatch outage) 07975d136133f37707024bacfc8efa87f44ea560 chore: retrigger CI (attempt 53, Actions dispatch outage) e30e4b4346c643a7a47f585aff689c57dea32655 chore: retrigger CI (attempt 52, Actions dispatch outage) 944054374e534242080d0802d79e2b50eac0d773 chore: retrigger CI (attempt 51, Actions dispatch outage) 531fade3f19c75d06b5e7f3ffdf265215cd89ac5 chore: retrigger CI (attempt 50, Actions dispatch outage) c1aaee6621f1e3eb76de31a10f99e02edefa3d76 chore: retrigger CI (attempt 49, Actions dispatch outage) ae4e6e9b69c209accfcb47fdaa47d0196bc94c47 chore: retrigger CI (attempt 48, Actions dispatch outage) 605753e4673fc395bb494262a879f04b1542991d chore: retrigger CI (attempt 47, Actions dispatch outage) ebf7dc040e84ea12b8083cfb227ec21c32353f6e chore: retrigger CI (attempt 46, Actions dispatch outage) 1ede625f41f18e12f1899b7dd667c696b341f7f6 chore: retrigger CI (attempt 45, Actions dispatch outage) eb71bfd3d950577035f933f6bbfa70829c850faa chore: retrigger CI (attempt 44, Actions dispatch outage) c63f46c6ddf0cfad4a433cc670996665404f98ac chore: retrigger CI (attempt 43, Actions dispatch outage) 704255a537449ef4d0c6f9842a8e401665102277 chore: retrigger CI (attempt 42, Actions dispatch outage) 146e61b29213ab4d94f53e92098c698fa4944b0b chore: retrigger CI (attempt 41, Actions dispatch outage) cbee72c94c3d57b78375b5c7d8bc408a28eccbeb chore: retrigger CI (attempt 40, Actions dispatch outage) 58c929f5ef204bdff7a689b85d1efa948c7b5298 chore: retrigger CI (attempt 39, Actions dispatch outage) e1c660dc5ec975524afa58758a20c4cee7b9a651 chore: retrigger CI (attempt 38, Actions dispatch outage) ec4e8bb921b6bad484144bd9577cce443c30aee5 chore: retrigger CI (attempt 37, Actions dispatch outage) aba283d2b96282fade93486ad04da3075ed431d4 chore: retrigger CI (attempt 36, Actions dispatch outage) e59e8d86f142f74d3a46725229bb8bf89e7926e3 chore: retrigger CI (attempt 35, Actions dispatch outage) f9ac7c66aacbaa369701b24f89180a2097dc1b41 chore: retrigger CI (attempt 34, Actions dispatch outage) d3c573993f46d724c00fa816bb1f392ebedb5da1 chore: retrigger CI (attempt 33, Actions dispatch outage) a246b2da84a5e9de01c1e20b40b73ea85bda1188 chore: retrigger CI (attempt 32, Actions dispatch outage) e9cefa4d754bad279ec637e0c0b6acc0120b666d feat(desktop): pre-select glass on macOS 9f1b92ce6bdfc0e7e92b9504f81e6069e02f6b88 chore: retrigger CI (attempt 31, Actions dispatch outage) d36cbfd7e8ea3a75123d13897ec88203c9dd63e5 chore: retrigger CI (attempt 30, Actions dispatch outage) 21e1258ba8ccc8c20990e27c1167aa9e8274513c chore: retrigger CI (attempt 29, Actions dispatch outage) 905e40ca9d4d653b09e27159c5c665a61734f2b8 chore: retrigger CI (attempt 28, Actions dispatch outage) ca824d1297195c22773dd653c295e1da2f03b7b7 chore: retrigger CI (attempt 27, Actions dispatch outage) 347d6b371411424fe2c11e6637a35da47e703dde chore: retrigger CI (attempt 26, Actions dispatch outage) 57dcf0414b36e1f1acb76322a7c98090eb4b55e5 chore: retrigger CI (attempt 25, Actions dispatch outage) 277a9038639f754752ddaa9f26d4d24896e7d50a chore: retrigger CI (attempt 24, Actions dispatch outage) 9e68e0f1ac108f6c4cd20d3d3e1cd03fec04eb7e chore: retrigger CI (attempt 23, Actions dispatch outage) a5d1579758891ad3e896d91cb88b6e294840f7b1 chore: retrigger CI (attempt 22, Actions dispatch outage) 1912cd2e7028eb126118799812d6063d068f7cf0 chore: retrigger CI (attempt 21, Actions dispatch outage) edbb0045def6672c2221cf48c1f1e5c69dbec01a chore: retrigger CI (attempt 20, Actions dispatch outage) 90154eb9ba3995a71f31b662346e63ae124476c3 chore: retrigger CI (attempt 19, Actions dispatch outage) c337bc6248268af6e4c702473ca8e9d4a8e084e7 chore: retrigger CI (attempt 18, Actions dispatch outage) 4f4845ab0c5c56e892068c5dee31417bad5ed217 chore: retrigger CI (attempt 17, Actions dispatch outage) 8969d604536797de3ba77355f3b21d43f9bc1dfe chore: retrigger CI (attempt 16, Actions dispatch outage) 6668ea9d771566fc806a274757cfae9379368422 chore: retrigger CI (attempt 15, Actions dispatch outage) 0d09ab933248b3798ea44ffdda0c0459c54ad16a chore: retrigger CI (attempt 14, Actions dispatch outage) 7a81dd9efdaa1d27a98815df6aecc26d849ca084 refactor(desktop): trim the glass surface a1fca9b625c139a164d77f218c3b3af8b961c7ce fix(desktop): close the glass state and perf leaks 6eb23c79d3af43d90a5391bea792d6ab2d222f37 fix(desktop): clear-mode fade tracks the drag again f3bfa9ae5335f882f3220228e3e4aae07afcf030 perf(desktop): stop the translucency slider thrashing the main process b86db1410b693d73651c98bfc7869fe2665f9d31 test(desktop): the glass assertions were never running efa15b5eb43ada1d4d6027d10c25adc7e42fd8b2 feat(desktop): frost picker, sidebar glass, full-range tint and peek 113a07f29d12839a7884c94082d05d5a7c866257 refactor(desktop): one surface helper for the three chat windows 0ae0641ce74c0721b96481a0f89255e757e9589c refactor(desktop): surfaces declare their glass role 5851f9367c2b3e5e9aed673eff666bc254566f3b refactor(desktop): one mac check, one translucency atom d6adef6991c6418967259471fbd64df92b905347 refactor(desktop): one owner for the translucency mapping 985db37cadb83ecbd1b6719380f41ced40c5c6ae fix(desktop): glass cold launch — omit backgroundColor instead of alpha-0 1eb9cbdb7a12b14cd88c11b848edcc187b4a5122 fix(desktop): glass was blocked by the webContents backing and two app-shell painters 0483133842dd72b11f94782e5a1bf56fdc956894 fix(desktop): even glass field via one painter; raise overlays; darken clear scrim eb6f352be70c32a87e3a785542ce1520a86ad45c feat(desktop): matte glass option for window translucency 374779dae8d46f89e07ee7722c9421f4d4a56d94 fix(desktop): curve window translucency so the whole lever is usable 62beeeef84975e6f6bec514c2020c87784be5f39 fix(desktop): finer window translucency steps 15c451fe94313458e47026d3fe809a02f26bfb5c chore: retrigger CI (attempt 13, Actions dispatch outage) 6076cd2b8834eb284d52b605409ddc7c79d3e72b chore: retrigger CI (attempt 12, Actions dispatch outage) 63704dcebaf85adbea2d044b15a9d94a93ef01b6 chore: retrigger CI (attempt 11, Actions dispatch outage) 3fbc4b4605e16a4d4a10fc87fcbf4310b1fd0491 chore: retrigger CI (attempt 10, Actions dispatch outage) 5bb3f7f0fedf0d156bfa99884a5872f585ba3343 chore: retrigger CI (attempt 9, Actions dispatch outage) f5472fff2858558da87d0af354e1c85fbba7cb3c chore: retrigger CI (attempt 8, Actions dispatch outage) 5aa35a276e73fbfb7e124b81cce425668c284773 chore: retrigger CI (attempt 7, Actions dispatch outage) e0f5b69c23857dfdda552cf0bcd37416412f4c66 chore: retrigger CI (attempt 6, Actions dispatch outage) 6f51071e1b4f4d0b1cceee82382653a4c58bfb56 chore: retrigger CI (attempt 5, Actions dispatch outage) 0727a85cca232b2f70d6d73d5cac5e3082582700 chore: retrigger CI (attempt 4, Actions dispatch outage) 6921fcb800eff1a12fcb3ad6ab1e3c7f748c7a8a chore: retrigger CI (attempt 3, Actions dispatch outage) 6dbce988c162154d3df02675bcb34f11f317f004 chore: retrigger CI (attempt 2, Actions dispatch outage) d7f0ce0b975175df6527716fe151a961b1051898 chore: retrigger CI (attempt 1, Actions dispatch outage) aaaa4314e8b49ece63b22fe1e3dbcffcf79d85d6 feat(desktop): cinematic intro reveal, ship-gated — dark-mode product story with live Blender-style viewport b3021dcc24dab074113249f38c9a8bc67dd14d73 feat(desktop): life-automation starter prompts from the intro-reveal fork 2f67b9b38565e2162bb3a2fe9fe42f710fd7f63b fix(delegation): running subagents stay visible to list/steer across parent-agent rebuilds, and child-started process notifications carry delegation attribution 6680afba4a5580d1fcc39e1e85fcb1ac5ae9ca4c fix(nix): exclude test js files from src 30fcf95805a02e5e927fcac53a2d493cda8492d8 fix(bot-mode): group chats no longer lose long-running member turns, remade groups start fresh (Discord bot-mode feedback) bdc9a810f3990597b3f26203348e849e5128afb6 fmt(js): `npm run fix` on merge (#88888) 898b4236396015c210a781b9283018377abf7477 fix(desktop): force the enforced zone's tab strip visible — repairs the "only Bots shows, Sessions unreachable" regression 47eadccdc4b2257c6903e13c192ffa9f692e6f33 fix(desktop): SESSIONS | BOTS is always a tab strip — the Bots pane re-homes beside Sessions on every boot, no heal guards 48c1eefa2677419a5b80967f708eb1098e415709 fix(desktop): repair missing Windows runtime f30ea0eb9a1a00a29e68735eaf317b253823d82d Revert "chore: nudge ci.yml blob to bust poisoned workflow-parse cache" f6667e7bf9a65dce370ae3334194f843d0ad07bd chore: nudge ci.yml blob to bust poisoned workflow-parse cache 6170f844c4de5da17cf8992782058b45c2b195dc fix(desktop): remove profile scoping from the Gateways settings page 74dbe050d71c388898a98b1a788b2c1f6a63cb9d chore: retrigger CI (attempt 24, Actions dispatch outage) 5df635af8b2321cb12320c8e43ab3e7a910975a1 chore: retrigger CI (attempt 23, Actions dispatch outage) ec6f43465e1f0feefa1af2c7ff8f331702a2093d chore: retrigger CI (attempt 22, Actions dispatch outage) 678329c21bf4331d841dae7ba92db11e214b9783 chore: retrigger CI (attempt 21, Actions dispatch outage) 0dbddbdc8da6ae22a8ed9b7cad218894188202f6 chore: retrigger CI (attempt 20, Actions dispatch outage) 1136f071c4d9ed9e75ebaa7052f7ddacfbdafca5 chore: retrigger CI (attempt 19, Actions dispatch outage) 1cb88566d4f5b458fcf937da42dfc9516fd10495 chore: retrigger CI (attempt 18, Actions dispatch outage) 8db4c4d3c7d5b1eabc12894a75339b0aad726330 chore: retrigger CI (attempt 17, Actions dispatch outage) 659656b19e13b3da6e93e185854cda89cb67d4e7 chore: retrigger CI (attempt 16, Actions dispatch outage) c1d1663fa5e46faacb3632e0384b25e77e19de3c chore: retrigger CI (attempt 15, Actions dispatch outage) 6fa80ca56eb841e5166b415cd8d0429e2002c9e8 chore: retrigger CI (attempt 14, Actions dispatch outage) be9ac07c3244bb0035f79970716964932c57c3a3 chore: retrigger CI (attempt 13, Actions dispatch outage) 550bb3056cc764a943bd999eae7a725b48cd34ed chore: retrigger CI (attempt 12, Actions dispatch outage) e6a46749d445c6db58d06cf427b889ba8ea755c5 chore: retrigger CI (attempt 11, Actions dispatch outage) e182d4471a0da8a2f1aec9a00cdcc2cb062ee071 chore: retrigger CI (attempt 10, Actions dispatch outage) 8cf1920c60a80619a418043891657bca9847f256 chore: retrigger CI (attempt 9, Actions dispatch outage) d7818705b1668b37edbb6831e6f9860f405ef480 chore: retrigger CI (attempt 8, Actions dispatch outage) 0e7437faf9712b820c5d1027b1c70a60cb19fee7 chore: retrigger CI (attempt 7, Actions dispatch outage) ba2a98c82d936d30224d07129629eddeec4488a4 chore: retrigger CI (attempt 6, Actions dispatch outage) 53a0bbc5c6727032c03991b79d2500236c39d387 chore: retrigger CI (attempt 5, Actions dispatch outage) ae0d2dc87f72d2d1512f97d778179758f9212ecd chore: retrigger CI (attempt 4, Actions dispatch outage) 44cc0f3ee608652dd3e017691fca5c40bf2d971a chore: retrigger CI (attempt 3, Actions dispatch outage) a2d0ba3d81257e62430982bad239c44a1397fcca docs(relay): clarify timeout payload isolation 2bcecc71d8cc7f69c7d1b42717c0544c026a1b00 chore: retrigger CI (attempt 2, Actions dispatch outage) 7006235bc128988fd36a4d7700d3c63f700de54e chore: retrigger CI (attempt 2, Actions dispatch outage) 46f377aa6036c7bce603371f4793f637c764c6a1 chore: retrigger CI (attempt 1, Actions dispatch outage) c9ce66e25e55332b557b6af4471fbcdee3779022 fix(desktop): one roster row per bot even when a backend is registered under two addresses — /api/status install_id + roster collapse d127b27303e16e281a75438b08d19ad89ca667b4 docs(desktop): document the tabbed SESSIONS|BOTS sidebar, Bots-mode-only Cronjobs pane, per-bot Hide/Unhide, and host.paneVisibility (#88788, #88800) 04963b135c84954113793863e334a6e9216a82ee chore: retrigger CI (attempt 1, Actions dispatch outage) b95394ca56ac3ca92fd440d113abf6624240cd93 Inspired by ChatGPT Work: keep imported agent setups in sync (`hermes import-agent --sync`) 173a6447db741ed552a8e6263061a85b63129bc1 chore: retrigger checks after main merge a51337ecee2a61cfc6c0a444314d3214bc93c702 Merge main into fix-openai-sparse-response-objects b18016010e53a2b8111fcc9ad01fd5f5bfe12b37 fix(desktop): remove profile scoping from the Gateways settings page 0f5f5a59966d5eb26a8ff217264f4dad73ba6dee Merge main into fix-relay-client-timeout-payload e818025b4d2cd7b5bf622608284bf497b5babe17 Merge pull request #85582 from bbednarski9/codex/fix-relay-lazy-completed-streams 24b1678d10f620b64b9c8a1d2662ddba47e17859 Merge remote-tracking branch 'origin/main' into bb/pen 75bbc055a7d6137bd0a54f9de551a3c3f8fa300f Merge pull request #85579 from bbednarski9/codex/fix-relay-canonical-operation-names 41a80d52518c1c391d62c8d1852bdce83593b751 fmt(js): `npm run fix` on merge (#88818) 4b3fdfd353994104335179728e7e7b57512fe3b1 Port from cloudflare/cloudflare-os#168: never auto-retry write-capable MCP tools after mid-flight session expiry a3995f8aed014fdf7d2dde5e82f73f3bce9cb88e fmt(js): `npm run fix` on merge (#88813) d7d197f95293885774875019b771bf8b195a36c0 fix(desktop): remove profile scoping from the Gateways settings page 7390df4b892418c93921927724bdc16a8f2d262c docs(desktop): document the tabbed SESSIONS|BOTS sidebar, Bots-mode-only Cronjobs pane, per-bot Hide/Unhide, and host.paneVisibility (#88788, #88800) 133381508fb111955fe68e4c4e31d5a0c906a8e7 feat(bot-mode): hide bots from the roster via right-click — header eye toggle reveals and unhides them 6d27545106d81ebb6fb07aa658678f6530edc84c perf(desktop): stop the translucency slider thrashing the main process 3637fd035f1ba14f57661560a8b6c0c0e9ce6d95 feat(bot-mode): hide bots from the roster via right-click — header eye toggle reveals and unhides them bc76f62c2034515dcd8dd0e71dffb582f69e7806 feat(cron): configurable media-send timeout + non-empty failure reasons d9ec9dd3fdbdfcc41a97d360b2e8d370f5f3e261 feat(cron): make the media-send timeout configurable 64b7c96e456b53ab0951c07114afbeb74d37941d fix(cron): media-send failure logs an empty reason on timeout d89434e3525f30f326b025014f791f827ba57eae fix(desktop): Bots pane is a Sessions-zone tab again (not stacked below) and the Cronjobs pane only appears in Bots mode 4014eb7d5c28b461c2675749e4bdb65a7a52336e fix(bot-mode): sweep CLI-born Bot Mode sessions out of the global sidebar (ownership-based) 46c0c6ec42a75611971b725954526df22b0761ef fix plugin list provider entries 24f7f9a9da6dfb3b0c9d761f7f32d5c9ab078e21 docs: reflect the unified Gateways page, settings profile scope, plugins cleanup, Bot Mode group rows, and host.openWorkspace 44d363729fe2ce9f2de309f71aaec0e185f7619b test(desktop): the glass assertions were never running 8b03e65804712f03926f8b92bae15a0bb1705910 chore: generalize field-report attribution in code comments c9dbdbcea735dae65e7c9fc6c9d4a6983ff156be fix(gateway): grace window keeps first-call goal persistence on healthy DBs e99743500420e4e8fdee8de9a16ff04858afb701 fix(state): v25 prompt dedupe degrades gracefully on a contended DB 8e81e2aaaefdb9c247c422f90dc0f68c4d8382fa fix(gateway): never construct SessionDB on the event-loop thread 22f0f22298cc322c095b6c93a648e809e80443b6 fix(cron): manual runs no longer silently drop media attachments b2c8a148e83e41e949527afc0a5724ac9bfdf3f4 fix(desktop): fail-stop deleted-profile reconnects and evict the stale rail badge 9ef463a9093cdbde08497a9e52f6cd09576744f0 feat(desktop): frost picker, sidebar glass, full-range tint and peek 336059011521c595d00803be93d1652aaab58720 fix: address second-round SkillEvaluator review feedback 2c2697b52e7ce608eb9236877231468be66bf915 feat: widen Tier 1 advisory scan to license + security checks 183f18d53073f4086b34137d9f1d9af86f41ac7d feat: advisory NVIDIA SkillEvaluator Tier 1 scan on skill installs 9aa1413781bbfeaae013bc56ee02f687897690e2 feat(desktop): extend kanban native notifications to blocker/failure events 180262084749880f6d1a1a530fbaf9bea292e7ef chore(desktop): remove local markers from kanban notify comments a30636f8174adccc3aa3af236c4ef3d413f63c55 feat(desktop): surface native OS notification on Kanban task completion 7999ac6e3d59f63e7b60b3297b9a4f24b234f43a feat(desktop): shared 'Applies to' profile scope across settings pages and Messaging 56de3c1428191bdd72114abf696e69494bc8c6e6 fix(cli): persist one-shot resumed-session turns (Bot Chat bot-to-bot messages) 54b0a5bc46c2c69a6b8715711a0b5006d346f03d chore: map contributor emails for @loafoe and @k0rnacki dd6e0989865129cc5b9e4d135a0da80b9deb4cd3 test(api_server): pin the recovery-net alias guards 135243903691153972460fc334d04eb1c5059cca fix(api_server): recovery net must never recover the advertised virtual alias 152b1940d760cac15b196810a3f016e9a17e3c68 fix(api-server): stop persisting the virtual model alias as a session's model 77d6c78cf52ec9f2c3245174cf763ff32a75d572 fmt(js): `npm run fix` on merge (#88760) ae5c4c167281ea699337129de28b3861e24efcaa feat(desktop): Discord-style group-chat rows in Bot Mode, opening in the main chat window d16413ef4306ddb5875dc52e96aa51ff3a39b4d5 fix(desktop): stop Skills Hub picker overlaying the installed list and cut Capabilities lag 76ff06074817cd4359160443b6ffa3f7e8a3a0b7 fix(desktop): clean up Plugins settings — drop Example Plugin, hide bundled built-ins, add profile scoping 9a85769fc33aa3a87dfcbbd45e712888de0de283 feat(desktop): unify Gateway + Connections into one Gateways settings page 91878fb3c112e7e94ba5b8f2b1820f4840cf1e11 fix(desktop): visible eye catchlights on dark-bodied Bot Mode avatars 189de16280a641debc5267239840b3d170d50b45 fix(peer): live-verified cross-gateway bot DMs — session shape + virtual-model replay 6f2dbf3a055267c13a0bae434780357e48cb0f1c fix(gateway): widen scope-aware session DB resolution to the runner and release cached handles 17ba9921082e238622ab50c54fca3c95a057d3f0 fix(gateway): resolve the session DB inside the active profile scope 10134bd846b7bd3c9ddee3e471a8d237f1787b80 chore: map contributor email 6c84c3354601aeb091369dee2c5a29c1230bddb4 fix(bot-mode): explain hidden cronjobs in the Routines pane empty state 799d3fe021888b12faca0516a53a0424460f5934 fix(desktop): show legacy cronjobs in default bot e3c4bfe9aba2f678206efe4a345cc0bfbdcbbd89 fix(bot-mode): show profile-owned cronjobs aa8ceed4b66900b9dbcb9ed120d91a21b2e03987 fix(memory): keep a stale holder's late close() from evicting a fresh registry entry 4f354c27b749fa1cad9014e61091ab3f1a8fff61 fix(profiles): release memory-store handles before rmtree on profile delete 399fdeae8b890bb150f8bd06225eb89fafbcd136 fix(bot-mode): plugin listener leaks, jsx key prop, OAuth poll overwrite 5324b59bf1d70a3dc0d74272252c34a763b9bd43 refactor(desktop): one surface helper for the three chat windows fcf9838aaec4c5344e383e9dddf076c2eb6fed2d refactor(desktop): surfaces declare their glass role 74dac7a3e6df225011d62783e0439b79e14068a3 refactor(desktop): one mac check, one translucency atom e993992e60e36525f0700467488f2d514d479073 refactor(desktop): one owner for the translucency mapping 7b22ece9e06ad75f3a2b95cc96a4aeb8d36e75be fix(desktop): glass cold launch — omit backgroundColor instead of alpha-0 8a0dd538bd5ebdf2fdff534c65cb734940311f5d fix(desktop): glass was blocked by the webContents backing and two app-shell painters 51c2cd12bfd4612dd2bf4348cc1a9899168bcab6 fix(desktop): even glass field via one painter; raise overlays; darken clear scrim 8cfc24e169672eee857a281afb7e136a7774da90 feat(desktop): matte glass option for window translucency d8f8221143ed341c0781ec5f3f3ef9d1d7df00b5 fix(desktop): curve window translucency so the whole lever is usable 64c886114f4cde4460f60605eaa649eda73c2fb6 fix(desktop): finer window translucency steps aa2622128f934ea6bc0ac7e9d1156a77b088e2a4 fix(hermes-bots): show profile pics in group chat rooms 9b112e5736898582a16a54d524e93ebaa20557ad refactor(desktop): extract pool teardown into pool-stop.ts with behavior tests c07171209a4748063500b577742fb549128f5d6a fix(desktop): await pooled backend teardown c6a0789bc580fe2c68e37d4fcbea3c8609cec0e9 fix(desktop): retire old-name renderer sockets and widen the deletion gate for renames 69abe41f3673adf7477f844a07589b8e0d4c26ab fix(desktop): re-home backend after profile rename 4b7eb02907f80fd64ffc36000a61a191ef52b748 fix(hermes-bots): group chats never surface @default — Hermes keeps its name 6229683b62bcb25ccbb9c5074ac08a39c6258186 feat(cli): hermes peer — bot-to-bot DMs across machines and gateways 66221397a13a43a01fc96d636f3bac4268efc5c3 fix(bot-mode): always hide Bot Mode sessions from the global Sessions sidebar bb924730743cc05934bf0dfd188abdfdb46c03c2 fmt(js): `npm run fix` on merge (#88720) 55e34fb7d0cd8fd1e16be82a1ceafee05fca63d3 fix(desktop): avoid local profile REST backend spawns 51de5c91b516cb92276866d7e8c5aaf574217004 fix(termux): preserve Nix update guidance 9e81a102df570710bf33eb90bb9eb069fef6a8cc chore: map contributor email d685ea4df5434418df2da8ddd171e01b38f927a4 docs(termux): document community pkg distribution 26466d05941740a8cfdad47ed07ed541b0e2bd58 feat(termux): support apt-managed Hermes installs 976183f536106b1b6bed4527eb7b1af362f5c053 fix(desktop): stop deleted profiles reconnecting 68a713385e3c85c1300b9c8e89a4f5d11fba1738 fix(gateway): preserve configured context window 2c8a2b65aa148ceb178d2251c54a523af12092c9 docs(sdk): document profiles.list preferred_session_ids lookup 21aa327c697268ec848a1b0879caf5b57a33c761 style: ruff lint + format on the eval scripts (encoding args, formatting) 5033aedaa3830595e874fd4d54ebc7f3cfa167a8 feat(evals): add the Browser Use mode A/B benchmark from PR #81958 4151599e8166c000fa67d6795ca44d485ef20f22 fix(desktop): cross-machine bot DMs — canonical chat, sender attribution, reply relay d0b02efa9d4dca73bcc8f259d436977a134e5a15 fix(desktop): don't treat a mid-switch 404 as session deletion (#88540) 848478683245856b8f0e04c81637e908927cb228 fix(desktop): align BOTS roster preview with the session its click opens 69a62ce2c884b2b887e4406124c9d7e40b600310 fix(desktop): keep the Bot Chat pin 379338a7c00671766844ed330e93da1ad56c96e5 feat: pens are project-scoped — one canvas per project, sessions in isolation 78b0f16f384dadb6178e2ef50c1444a6b159c672 feat: canvas checkpoints — one-action undo of agent edit bursts dc2e9dde9a6ef4625c24eba9c33421da869a79a1 fmt(js): `npm run fix` on merge (#88671) bf53915331b7a928bd147cbca9cdf624760c7c4d docs: Bot Mode guide — Create-on picker, cross-machine mentions + group chats 62f376279bbf3f29113966648d947ad957a0e440 feat(desktop): cross-connection Bot Mode — Create-on picker + multi-machine group chats e3c954447cbe345da31c060034d3b9655b8f7bcc chore: map contributor email for @AL-ZiLLA f89f884a5daefc43c318e342a7799bb23aff586e fix(desktop): mention Connections bots from this local chat 30299efa3852026732008661a1cb5a0e2824391b fix(desktop): open SSH default bots on the remote root profile c2c3058ecad2661d4ae7d362154ee0610d25ad96 fix(desktop): never spawn SSH dashboards just to list Bot Mode agents 4afe08f4945284e4646583955f0f3e7a9fdca8fc fix(desktop): retry failed SSH Bot Mode inventory after cooldown 89877d10a5160b3b79bd346140014113b96e3cdb fix(desktop): drop Bot Mode rows for removed SSH connections 4068162118bbdd71f548f6dfa72eea03b68cea03 fix(desktop): keep SSH Bot Mode agents visible across local clicks bd9c7d87f01d3c42cf58a866233c4b22b41132d1 feat(desktop/bots): add disband (delete) for group chats 39c0bc80b70e200179a596cda694d90f57e958ad feat(desktop): link the installer from the app-build-out-of-sync warning fc9f1ad6b97ce0f68f58c6f75e0940bd51828188 fix: reopen pill publishes under every identity the session wears cf7b3d0c90e697f6a6bee36e766f23e1f5afe80f fmt(js): `npm run fix` on merge (#88652) 851a30d0abf385ae0a4fcd5380b8e2f674dc3abc docs: add a Bot Mode user-guide page 70f9560b2905dfd2c1132f126d8b4b84aec68a07 test: accept keyword args in the prompt-submit fallback stub 3ead0f8dc177c41d808f96b7f89616cf07fc9c81 feat(desktop): widget clicks reach the agent as hidden user turns — the widget updating IS the response 6e22d265835fe035e648f53b9f28d772037566f0 feat: project-skill quarantine + non-interactive trust inheritance a13be69572c921a1240e57907410520b40d0649d feat(desktop): warn in About when the app build is out of sync with the runtime a1fee66b6aebf98cf5e3b73420785e51b5549fa8 clean: trim barrel exports with no external consumer b779fbf4237fee171f9bad0f2d4680705fb57280 feat(desktop): route the bots face clock through the SDK budgeted loop aeabff6aec6fe0e8a32ed96cf76b9a692eaf705f fix(desktop): satisfy the plugin-render and import-order lint rules 20ec564684c324cfb961d685e8df44d003e529bf docs: align the ::preview description and storage example with shipped behavior a1fea534548e30c169d069899a5334ff88203f36 feat(desktop): inline previews read as native widgets — content-sized, theme-bridged, interactive d690e0220e3d410ae09b25f62158c98d3d67ac59 fix(desktop): drop provider-echoed duplicate text so replies don't render twice 5c4f1e744cf494eccaf7e9ba51fbe7d7ca47be55 fix(desktop): inline preview frames size to their content instead of a fixed default 8425f8286bae28e164ef053ffa1ab02a2982c2de feat(desktop): ::preview renders the page live inside the message, not just a rail-opener card 8f2ddc9676ff082424297082ff6076855d3a733f feat(plugins): per-plugin durable data directory that survives plugin update and removal 59b1c40cdfb5f62c863df4e7667c91f008c70cd2 feat(desktop): plugins can render inline components in assistant messages via ::name{...} directives 9ed4a7c0251478dc5b6c6cf34f2c06625db23783 chore: map contributor email for laviesony f2f6dce785376e6d7e43c7179be31ecfc3409f32 feat(providers): flip bundled meta-ai profile to the Responses wire 9cf553ca3e326a88f325d75593ad8d4f40d20551 refactor(agent): document meta api_mode fallback intent + review cleanups d4658ee6d560af8ab04105a52a55886e0814e153 fix(agent): preserve provider-slug rewrite when host mandate fires 24545418eb6ae1e2731b380632ae4633c77b2233 fix(providers): route api.meta.ai through Responses API for prompt caching 5de09f7b0cbf30c5ffd9ede004f835e71a6550f6 chore: map contributor email for intellectronica 9a862483bbedd456b8d5baac5c6576ee35f448ee feat(models): add Meta Muse Spark 1.2 to OpenRouter curated picker d99ecd555a470548cddcc0d175ac9d73860896d8 feat: pens get friendly auto names, like session titles 097ec128e3717a144c6b226b605cb5c15a630865 fix: transcript mining matches library paths INTO the transcript d109785bb3cae7ac3024a34e06cae58b5bd95c0d feat(desktop): shared createBudgetedLoop helper for decorative rAF animations eaa3c72c3e13a7d908ee429e3acb974cad1273d6 feat(providers): adapt bundled meta-ai plugin — docstring, tests, docs 833f0e2ac1bed7d8be7704270d28d5322602d75b feat(providers): bundle Meta Model API (Muse Spark) provider plugin 7339f5f160db5c96657a3bab60151227cc61f66c chore: release v0.20.3 (2026.8.16.2) 481156139dbf01d95b88e81003a028bde415f9dc feat: misfire catch-up for external cron providers d7f5acb94e4b1f23fcfa7d3212bbc6c1d487ce29 fmt(js): `npm run fix` on merge (#88567) f891d702dfeb5351f8020e621ee257c40bffa0a8 feat: project-local skill discovery with per-repo trust gate 187e5b2b956a5fdc367397b6063b2be17d88e0a7 fix(desktop): stop phantom local default on remote-gateway desktops; keep the main agent named Hermes b919dc7db83f6c470f18b49e3c94aa592f96d585 chore: map contributor email for @negroni334 577f5cf207c3b4f6f5f0518ffe13aa92f90a3583 fix(desktop): route Bot Mode group-chat Markdown through the plugin SDK cf2d28a2ffb400a10641d9aa45929a62918d1f3a fix(desktop): render Markdown in Bot Mode group chat messages (fixes #88391) e3eddbb934398810f6a985a16917e9e2f7e3a52a test(desktop): cover DiffusionCanvas 15fps budget and instance cap ee616b4b64919f07e6a4032be4c19510c4023122 fix(desktop): throttle DiffusionCanvas rAF loop and cap concurrent instances c776bdd244babe94b19e5f28db0abab7047e6145 fix(desktop): pause inactive diffusion rendering cb1b1da21901ed60008cc9d96e1bd1a0172e3acb fix: surface missed cron fires as last_fire_error on the job record 36d5dd3aee7b397a897d6bb925e4119aaa651305 fix(desktop): sleep idle pixel egg animation eb63c254bc3b4a2a6706b5307d5441b750091bf0 test(desktop): remote-sub-profile routing cases 15dd3bf5863ef317990bd1140377996d9ef3128c fix(desktop): route remote sub-profiles through the primary's remote gateway ed20a6f01afd9ae900d85d9b42f5af0659566357 fix(desktop): preserve Bot Mode source routing ce1f5dd30d0f429aa8ffa703aae0c7abcf00e18c fix(desktop): park the bot face clock when idle and tear it down on plugin disable ba2fb191c6b85697069dfec1f284c7e868d3e1f3 fix(desktop): bound bot face animation work 97a04aef6cf3c75beb8c250ff77c119f0df93bcd fix(desktop): install get-windows binding directly 965ea01a47c94465b970edbc49a399f0dcd8ba52 Merge pull request #7 from afourniernv/fix/pr85582-review-followup 157cf12f491f7472d48c1122a54f1dfa75d3d001 Merge pull request #8 from afourniernv/fix/pr85579-review-followup 94c05d648136e238eee31cd8b33f8d257366fb2c Merge pull request #9 from afourniernv/fix/pr85581-completed-sparse-fields 7ee68cca4553fa4b947ea9c3bdbef2f8d48a2f65 test(relay): cover lazy completion with interceptor cc3418e069f39511d1f11702aa5de9c3fcb0f033 fix(openai): complete sparse response normalization c86197e60798801f62986e4e59460b1272d0c687 fix: make the self-repo git guard Windows-only 0ea430ab844d9950594374393ffa017e7feb146b chore: map contributor email for @29206394 ece487ceee0e358839fa65788fdd82800f19317a fix(bot-mode): live active-connection id for roster classification + source-qualified row keys 7dd945b92062314202b3e2b74365663f417b0df2 fix(desktop): deduplicate Bots roster and reuse canonical chats 185209242e86dff1fb363095a05042a0609b285b fix(desktop): stop duplicating active-gateway bots in the multi-source roster 69f6eb5b980f8f75743c92d296c8686d20158ca3 docs(relay): explain canonical operation migration 256d7efbfd7412921a26d7407736c1d544d1a256 test(relay): document stream priming boundary 4323c67dcc6048fc8e311cdff7600d3d6a17807f fix(delegate): disclaim only the fields a failed probe actually left unmeasured ce93a398e826cc9d0de32aa349d047e87a61262d refactor(delegate): extract the unproven-payload factory; drop the source-reading test 97c4f9eeecd8c5dc2e00f40ea6a10a7805dbe239 test(delegate): assert the unproven-state contract, not its prose 38ea711fd0f57e7c2ec92d805aa2cc3f56b22c8b fix(delegate): tell the parent when a worktree was preserved un-inspected 2b490a0513eed4d420c2b26d395a62ca6cb6377d fix(delegate): keep the worktree when git inspection fails cf64ca20c5ab99ebf7e8ca272c69edc7ea0636ed fix(compression): stop an aborted rotation from growing the parent it could not publish 979ca57a50f44f9766ae84d7d156c57586928f38 Merge pull request #88244 from kshitijk4poor/fix/handoff-cleanup-race 3baf6c14a5da2bd3df8f761ba4fb7525b14f8061 fix: guard against string schedule in _clear_run_claim_best_effort baa1cfb89de1246b1d9d9c33893a87e44102ad46 perf(cron): skip run_claim clear for recurring jobs on dispatch failure 70fc5a5ee2d813c9b03e566f45e69de88386794a fix: guard claim cleanup best-effort + add #86522 regression tests 6d85f214ac7a9c9fffd68b92456eab3a85ae9907 fix(cron): clear run_claim for one-shot jobs on dispatch failure (#86522) 0c3452bf75ce6aecc603954d44c8d470d2a20c15 Merge pull request #88327 from kshitijk4poor/chore/author-map-kstawiski eb4bc1513f0dabe72d80723185907d33d48a96cc fix(telegram): log first-choice IPv4 stick as info, not warning 55e2dffe16f9f0e4e4cd8beccbcb5bb1ceca9887 refactor(cron): two-phase ledger query + reuse shared terminal-state/timestamp helpers 6370134bfea93ace104b2f3c90d9a566d395e81d fix: ledger-terminal release only for rows belonging to THIS claim 9b9cfbc1fdb97d98a2fbab53fa8d704bf241b9de fix(cron): reconcile stale in-flight claim against executions ledger (t_8b5480b3) 0a8e70370195e7e3ebe24df5d4a22858bd2e5fdf refactor(cron): dedup EMFILE tick-failure handling; share the fd-exhaustion text matcher 80dc1836c4f4557836741911197367fa47be42a3 fix: single-owner fd reclamation, shared backoff helper, clean CLI tick failure 815934ae52b95dfb6fc95fe8716bd8e0f79c94f1 fix(cron): scheduler self-heals after EMFILE instead of stalling silently (#87644) d153bfe6cb15f40badf9b18bbd2a3d59817e7b7a refactor(cron): single cadence-measurement implementation + bounded cadence cache 8a4b28f4394672b693a3c37d29f513c6657c319d fix: re-arm wedged cron jobs to next legal occurrence, cache cadence 122bfad5356acdb2b5873deb05f671afb852c258 fix(cron): persisted-state recovery re-arms recurring job stuck in stale last_status=error (t_8b5480b3) db606506281badc1b3d6db6b7ceb5678ca0dc14b chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 4 updates b52b725f625d4bd380201b7f655dae0f6cf87ffa refactor(telegram): collapse sticky state onto one sentinel bd5565650d4b2217db1bfe40dc0dc0989714064c fix(telegram): try IPv4 API IPs before the dual-stack hostname df68cc1c1ab621353d1caa744f24e15bd5718ea8 test: adapt stale dedup test to outstanding-call semantics, add cross-turn coverage 0b8fd04bea602898d499bc9fc292c805e93f45d2 fix(agent): keep tool results when a server reuses one tool_call_id 458f3bfac5da427a32447a302ae2c1d325cca487 chore: add kstawiski to AUTHOR_MAP 046a868b7f29e5d0bd8afa37f51d0bbc86ba302c fmt(js): `npm run fix` on merge (#88321) 2c0035d3b4122ef301f9c32def7dff6f72c88593 fix(desktop): bound the pre-start settle hold so a restore/edit arm can't latch the composer shut 5975aff8a1a188f8aa8c6ee8ed1756ecc6669f1e test: assert sprawl as a behavior contract, not a pack-count snapshot 31fe024e936cdacf84719bee223ccbaab34ff528 test: make pack fixture deterministic via git pack-objects 25c051d480e8400cabd9b76677895bfc32910894 fix(cli): self-heal git health around worktree creation 382060f02277c6404d4f0f1ff4df1f5c974a26b8 feat(mcp): speak the 2026-07-28 stateless protocol 9adc6071904dba099b667700f3ec177b3fb95eca fix(providers): give each CommandCode profile its own base-URL var for desktop parity 8800ec66d656f749f1fad1fe128a78e81497b4ef feat(providers): wire CommandCode into doctor/dump/setup surfaces + docs 26d8bf567cf7d5d978169e325e419e27c16e576c feat: add CommandCode provider plugin 1ae1a12de96958987e45ad13d594154592014449 fix(providers): give each CommandCode profile its own base-URL var for desktop parity fe408560a38cf619374c1083ea4b479f9dce1bd4 test: assert sprawl as a behavior contract, not a pack-count snapshot a8b12200a7cb0234ea03af519f17ccb5780cc77a fix(desktop): bound the pre-start settle hold so a restore/edit arm can't latch the composer shut dc3c04113036fb3b07b43191caf62a87f70a18ca test: make pack fixture deterministic via git pack-objects fe8c9f1c929bea341ad1d25e37a44b55efe34e33 fix(matrix): blank bare media filenames from m.audio/m.file/m.video body 07f56df94cb780088b7c8cc08dd883a35c80fc7a feat(providers): wire CommandCode into doctor/dump/setup surfaces + docs cadf7c3d03b94c960b2fa950f8c24320f5b4e55e chore: retrigger CI (attempt 1, Actions startup-failure wave) 7e77d9bd71def70a8a720bff570ddd8e05b2ee67 Revert "ci: cache-bust workflow re-parse" 077a7d536ab296d9221ecb035e308b9af6383e1d ci: cache-bust workflow re-parse a9c4e414d7dc30061ae0d5a5dfe231c0fc7d860c fix(test): make lazy-secrets update-check E2E tests network-independent 88303642a0c61b53633dec340e8d5792881fa259 feat: add CommandCode provider plugin 5be0e28fe600da4107c9cf6117e8753c097d1b83 fix(cli): self-heal git health around worktree creation 73a10648e64376be78a4fc910de05b1016580a7d chore: retrigger CI (Actions startup-failure wave) 9809c178fb623108c8a7f6eec1f3933b1c06dd9e chore: retrigger CI (zero-job startup failures) 17fa4e2944a7ba746f26bd81ef104bb1a5f28ab4 fix(cron): direct drift remediation to user-owned pins 123cbb219e8f521a3c40228b473ff700a0a40176 feat(mcp): speak the 2026-07-28 stateless protocol 1ed94d24522277f8d24ef52e78c0d64f3ed7bf5b Revert "ci: touch ci.yml to force workflow re-parse" e9e3291e7161199d2df3054b869f23bf51bd7de8 ci: touch ci.yml to force workflow re-parse f1dd8d32a81a3c342d65b8d74602b05ab93e365a test(desktop): extract ProfileRail focus/visibilitychange wiring into a tested hook 70598f52e117209258961de31e8ae3d44da54db1 fix(desktop): tighten shebang-exec script-name match to known console scripts 19c68e8c96ceff21fb4817037954cd41d69a8483 fix(desktop): work profile deletion silently reverted after app restart 780ede4d17a28d1450d7a0f3bc985bbca0d49547 chore: map contributor email for PYTHONHOME/junction salvage (Starfie1d1272) bbc894b0ab1832daf704d82b4dee74b4f18bb88b docs(tools): tighten subprocess env isolation docstrings 98389e7895778a42308c1c13f387ef3659c27d8f refactor(tools): simplify subprocess env isolation coverage d67cd58e7723601e6944b6cd1484f19a273ea610 fix(tools): recover repo-level junction lexical root via exact identity 64563188704333b27d3e07af958d3d0cf220c222 test(profiles): cover resolve_profile_env configured-spelling invariants 57d94dd8dc8b00308f55a441788ff0c19f682b16 fix(tools): keep junction lexical root across profile re-home deb49537762794b75c6c4bfbeeae2de1e4fad141 test(tools): make subprocess env regressions Windows-portable ba85da4898fabfdc287b0484cdb99520fc14948e test(tools): cover execute_code PYTHONPATH composition with contaminated inherited env 6e9eeb54130ed97b359d5caf3b804d4725730ee3 fix(tools): harden subprocess Python runtime ownership 73b49f473ace05031f602eca53e8266ecf7b4a42 fix(tools): tighten Hermes PYTHONPATH ownership semantics 850686a515b15faf50c0506cc1a879db4b767a52 fix(tools): sanitize inherited PYTHONHOME (#75018) ced80b2a202bb0afd070b475f4e622b8cf661d82 fix(tools): preserve user PYTHONPATH entries (#74817 follow-up) 23a86594cc188d34e6e05410b03c4cf274978652 fix(mcp): read the elicitation schema under the SDK's real field name 6cca9f3e710e341b788861885f3b1a2273164331 fix(desktop): validate SSH host input and redact credentials in ssh target logging e1e472d299b7cf53ba797466715af9ddf4d0600b fix(kanban): host-level cap accounting, daemon cap resolution, review-lane reservation (OOF-30 review) 4beca7a943bbef9039e70a5ced391a15b9d8fe6a feat(kanban): memory-aware dispatch guard + memory-derived default concurrency cap (OOF-30) 1f8c057832e4a8bda67aef39d9537ce936ea23ae fix(kanban): apply max_in_progress constraint before both ready and review queues 1a74e7fb43f85bde2627adb09b8336af1e90920e feat(desktop): offer Bot Mode agent handles in the composer @ autocomplete 72785b26579c920af85b4ad203f2a92155967654 feat(desktop): Discord-style group chat creation in Bot Mode 894b29df167a9789b4809316b266c6aca400f366 test(cli): make the doctor journal-mode registry fixture order-independent 1aea75843d27c73ccb662e5c43a810901b0a9a2b test(cli): pin the diagnostic detail in doctor's unreadable-database rows 2d911b477c0624bd4df66a982c9b5286c836b899 test(cli): cover doctor's journal-mode probe against live connections 911b7e86792cc4459d324dc57015ce4679db72cb fix(cli): keep doctor's journal-mode read errors specific eae17277215ba17a4ac0b3e3428b35b660f67477 fix(cli): route doctor's journal-mode probe through the pre-open reader 3d6cfdd83b9816a3cbcec9326507a98b070003eb fix: close sibling finalize path for handed-off sessions (#88234) 59f302fef9f6309b25f44c32a7d568e6bb7a17f9 fix: prevent handoff leg data loss + surface state.db corruption to users 040ee114aa12e54cfa176f816169007b3dfc02ff fix(desktop): remove invalid get-windows recovery command 8f97ae9aec729bcbbad17da462115e1ec1398421 Merge pull request #88202 from notwitcheer/docs-installation-migration-routing bceda18df08b79130a734495a41f5cd7dace3b58 docs: document MCP sanitization and tool-result annotations from the scout-slate wave b202293125edf81cb2bd2e5d4bb05e3fdee43b6e Merge pull request #87604 from ehz0ah/fix/openviking-env-reliability cecb3a6ed71d04029f25fc36540656807979f637 fmt(js): `npm run fix` on merge (#88206) 2038d4034d496c4c650fa5877667440d094d0d84 fix(desktop): prevent deleted profile respawn 9adc900ab28b18a473654ef5abc2c2afc09fb399 fix(bot-mode): route bot-to-bot sends through --create-if-missing e0ce06e358d8e493846d4fb2d7465fbf6995c9c2 fix(test): drive MCP identity-header tests through sdk_httpx(), not httpx directly 77ed1bbf40d2fae12e2875aab4a714866fd4cb73 fix(mcp): seed MCP-Protocol-Version from the handshake version, not the latest 2e1d724e3ebdbf74b15fa7b9061d822879f89f1d fix(mcp): accept both SDK generations' streamable-HTTP transport arity 48470f86281e52f6e31829f0bd018293bef4c8bb test(mcp): port the slash-worker discovery probe to MCPServer 11a9dcf56743c2e4a0866b6bd5fbae2dfa5d32ff feat(mcp): migrate to the mcp 2.x SDK 7a2ad9ae55eb3089839b76bfe53323aac2b4cb89 chore: map contributor emails for PYTHONPATH salvage (Yiipu, mmchuangyt-ai) 8e7a5f63b52dc829e7eedbafd1140c31ba1289fc test(terminal): cover Check 3 depth=1 and depth=2 boundaries 2824899321dcaa0ce971f989cfd557d34d8cb90f fix(terminal): correct off-by-one in _hermes_repo_root path resolution 43c463fa9594469bc73e677d6367fc4dd131c3e0 fix(terminal): strip Hermes-venv site-packages from terminal subprocess PYTHONPATH to prevent cross-version ABI conflicts f4d8a0c5e91764140da70e03633d95c961456f63 docs: route getting-started and updating readers to backup/export migration paths 75a307179bd7061b44b900a7b01bc7660d045bb2 fix(tests): close leaked SessionDB handles suite-wide and cap pytest memory 93ed11379b6a7203f87ca8a9cb3e4e33dda4e6a7 fix(desktop): recover the tile and regenerate paths from a dead runtime id 243352e7b8bddc9f33eba1b6506810f8dd88beaa fix(desktop): unbind session tiles from a reclaimed runtime so they self-recover de29f46bab15276c13db443b7610f16238978ec8 chore: map contributor emails for salvage of #85421 134bf66b3bc78b911f1ba84547d145fdd62e2c2b test(telegram): cover the lazy-install rebind path a85e45da139578a9fa13a8d7c084039db7b62543 fix(telegram): rebind TypeHandler in the deferred SDK import acaac9a18c00f8fa37f4ff7f11e55959f55cb9af fix(config): extend structured-value parsing to multi-line YAML blocks with a conservative trigger 6f2a4676a9bf0e0b98602cfda781bd95d768b994 fix(config): parse list/mapping literals in hermes config set 5099a65a056cc0c7afc6011618008f7afae903ec fix(desktop): re-resume session tiles with live runtime ids after sleep/wake c59c1de36c994743ec79f3079fc152e9af32f876 fix(draw-your-font): shorten description to authoring hardline (<=60 chars) a98ae1929fd298d2558a15705a8a2dcc4a96e563 feat(optional-skills): add draw-your-font — handwriting photo to installable font 0e378e59aa7a6869fadb49479e56055b16a5e87e Port from paperclipai/paperclip#10978: skip locally-edited hub skills on update unless --force 3ef63373f8ea7755354d47f7e89bfd8ff0a09732 Port from paperclipai/paperclip#10875: route all dashboard copy actions through the HTTP-safe clipboard helper 66312aec48f65393bd48f412bbd440ecf167964f Port from can1357/oh-my-pi#7553: allow quoted shell metacharacters in allowlist matching d5167831b8541c8724d4132a3c32bf3b30c659c2 Port from can1357/oh-my-pi#7306: reject answer-shaped auto-title output 0043a484e7af36e0286358e8c7e3653724108671 Inspired by Copilot CLI: /worktree — create isolated git worktrees mid-session 1002dcd3cca9c00a0e56096d5f624f6944834314 fix(simple-english): shorten description to authoring hardline (<=60 chars) 56182cf8f7c88602e22e320227fb4bc3861f1aff feat(optional-skills): add simple-english — ASD-STE100 Simplified Technical English writing skill 2e4d771c699d5d3d59b17c194c742bd45def1e87 Inspired by Factory Droid: accept unique ID prefixes in process tool lookups ea29702749833048d47fd02a419362ffe94c9990 feat(cron): --continuity / --no-continuity flags on hermes cron create/edit 0b13cafffafba56f054fbfdd8d5c0e684de64031 feat(cron): continuity toggle across dashboard, Bot Mode routines, and TUI cron RPC 2e7a46cc27743bb70b610fbcd51c5852b55a89a4 feat(cron): continuity=true/false flag as the user-facing surface for self-context 47d7661aa87e7901a19f90cbcefa99540ca5b667 Inspired by Amp: cron self-context — context_from='self' gives recurring jobs run-to-run continuity 35598d8e8e7003caaf521cfeba1bd7eb48a37e8a Inspired by Perplexity Computer: sessions pin/unpin/pinned CLI (#52955) 07a5179158733741e3bf6ac9480951026c77df14 Inspired by Poke: nudge review of repeatedly-failing recurring cron jobs bd4b709258604a808116d3f862af0b2bba289300 Inspired by Copilot CLI: /rollback keeps user hand-edits by default 9d139320d46b2e6f1df52f06eccdd37ff323efb7 test(plugins): accept scan_decision_cb in _install_plugin_core test stubs d44a295492be84486eabfe6a80647de8b009a447 Inspired by Claude Cowork: security scanning for plugin install/update 341d5aebc6f51b8073f6099008e8d24bc74a8b0c Port from MoonshotAI/kimi-code#2647: read UTF-16 text files by transcoding to UTF-8 c031fec365df42a61921d1ea8793891c1f006a57 Port from MoonshotAI/kimi-code#2596/#2600: surface MCP tool-result _meta to the model, minus protocol-reserved keys 8bbda8ff3399f720bce1caef66c5a52a2511247c Port from block/goose#10746: strip invisible Unicode TAG chars from MCP content 4be4b9866ed20400ecd21af9656e5a6cee13dc43 Port from earendil-works/pi#7494: preserve Gemini 3 tool call IDs a8d5e16ccfd4c50b91c8c9d9e96846356117e2b3 Port from earendil-works/pi#7681: support AGENTS.override.md context override 08d982850325e245a6de26db2a599cdfab5b5432 feat(approval): coalesce identical concurrent gateway approval prompts 75336301500b165dee786b5a689d1b8ce40d01dd fix(error_classifier): classify connect/DNS failure messages on generic exception types ff7c9511518d39226303a916c8d4bbe27a9cefc8 fix: suppress windows-footgun false positive on binary tomllib open 64cfa38fa6e94ec603436b0994e09e719fb4ce6c Port from PrimeIntellect-ai/prime-agent#630: report version transition after hermes update 19952074707fd868b5acd9afb3fee822e64aefb2 Port from PrimeIntellect-ai/prime-agent#628: resolve symlink aliases in ACP cwd comparison a35625d7c55185bf66e350f727882d88547b8db6 fix(search): zero-match probes return the file paths they found, not just counts efe41abde0d5c4804e6d32f48c84d289363da35e feat(curator): per-mutation audit ledger + single-edit rollback 070c6a5f8ddda700d7b96890663b00b4c0300210 fix(curator): abort rollback when safety snapshot fails 184cddb449d1728c81f957e612f8bcd624444d75 fix(delegation): honor pinned delegation.provider — no silent parent-fallback substitution b7329647a9d7caea531032bd8a9026abbd807594 feat(cli): expose delegate_task subagent model in the auxiliary-models picker ad02425470a39b6b51f9a68d74d4293da603ce5d fix(web): gate keyboard-inset scroll pin on chat page visibility (salvage follow-up for #74579) 67710548ecdc7b9f5af19b5698f2e5c3a60f02a5 fix(web): keep the chat terminal input line above the mobile soft keyboard (NS-434) c7727540f3d342b70c18cd642da58e57741adc0b test: strengthen empty-response guard tests (salvage follow-up for #75115) d10f87245e51972db8f094f6c4f7ea6e0edf60c5 refactor(agent): move empty-response guard settings from env vars to config.yaml ac06c2ff8b4318a2e8e63aa787ea6d69b9238a2b fix(agent): stop re-billing deterministic empty responses (NS-503) 204302bd645a036250eb3e5b5f4c4891af58fafc feat(terminal): interpret signal-termination exit codes for the model 25851e6e5800401be885c79bbc8510ccf9bc248e fix: resolve semantic merge conflict — startHermes update-wait moved into runPrimaryBackendStartup (waitForLocalStart); drop duplicated waitForUpdateToFinish call, keep login-shell PATH merge before backend resolve c13105a8c5ee3b4b6532c940d33d301bb9cd019f Port from cline/cline#12482 era: login-shell PATH resolution for GUI-launched desktop (cline/cline#12429) 77ed972f487fe60b898b00dcbe378f825a335649 fix(kanban): drop --force from worktree remove so git re-verifies dirtiness (TOCTOU) 395eedb1891a29c9cbf1ef8f929eb9e93edcecaf fix(kanban): kill tmux worker before removing its worktree cwd bbe91755772717ed2ac2a189ddc885454385502f chore: normalize contributors/emails/razsoc.01@gmail.com to LF line endings 89bf7f182e6311a1d38d0158fb56256e6c10978c chore: map razsoc.01@gmail.com contributor email to Cossackx 00c184170b73a2c1cede810e1de6314e6a7cb0c1 fix(kanban): reap worktree workspaces at task completion and archive 0e4552199a8ece86098cef00a5290a4c59afe3cd fix(status): keep fatal platform entries visible when gateway startup failed 3b9a963b8e5cdb804a422755bed9a60fcd778273 refactor(xai): lift API-key precedence into resolve_xai_http_credentials behind prefer_api_key 32170dd1a255cbb5aff7672f56bf8f69443e7b5c fix(x_search): prefer an explicit API key over subscription OAuth 1826310f49707023c2d4a4de90ea1f0393974ae6 fmt(js): `npm run fix` on merge (#88128) 55db6187e59a0abed801e449df676865c1a5b12c chore(contributors): map skip-agent's commit email for attribution b2cc4ceef0bf0ea4b8e61e5fa5c22f1912cde8e1 fix(cron): attribute cloud-path refusals to the cloud-synced script, not a lifecycle command 42a96e75432746e49e752e0d7d8eca2457473792 fix(cron): move cloud-placeholder refusal into _read_referenced_script and cover ~/Library/CloudStorage e6f59e5b7730b9c0992f7520d5e77520004638ff fix(terminal): avoid FileProvider reads in lifecycle guard f8f43c95237ca26f935be7b2d7ec41080837457d fix(desktop): make git worktrees work end-to-end on a remote gateway backend a36583e311a7bea351a245f703dc5e3850450f41 fix(desktop): keep cloud bot avatar eye catchlights inside the eyes 97b5f660308b979d8625a62801c1582ff78ec552 docs(state): soften stale SessionDB self-pin wording after #88063 d66341ab28635d9eecbd30a18d50801d927153b8 fix(status): strict writer-identity ownership for aggregated platform entries (OOF-3) 57279cf2b97d8adf5eaf78d7d90a8b99723d37d8 fix(status): freshness-filter aggregated per-profile platform entries (OOF-3) 1d46a9fe0fc577ecb628dce305928f8b8f24a31c fix(status): aggregate independent per-profile gateway failures; harden key filter (OOF-3) f755ed5e90ce8ef1bb0556aca096c85b7ac25d62 fix(gateway): surface multiplex profile failures (OOF-3) c127d0c3b11fafaa94182f8fd976e45bc14d4b73 fix(gateway): attribute scoped credential lock conflicts to the owning profile (OOF-3) e3c71e052db7ecc6ee9954f7950b8f2e8dd56f0b feat(delegation): record model/provider in live-transcript manifest (#telemetry) 71de3a39d0d164874cde9e0c7084e6c9972c5cca chore: map contributor email for Moodtuner997 (PR #86067 salvage) b5af7a54bc8a83df61f005848d3637c38555da84 Inspired by Amp: relative time bounds (7d/24h/2w) + wrapper forwarding for session_search after/before 0968a22f2f7e686ff7abf7b0374fe505b732cab0 fix(session_search): apply after/before in SQL WHERE 493eb3be875e1bbd5dbce95713edc8e583efb486 feat(session_search): add after/before bounds and exclude_session_ids 2bef9e8f5171d232f78e410e0925e3293def9e92 chore: map contributor email for tigercraft4 (PR #74468 salvage) b711fd05135c672d71e7fc2879dee644683bc6ab feat(desktop): carry remote gateway headers through the connections registry, test probes, and Settings UI fcef62ef72ff1f17d942902bd99821ede981c1a8 feat(desktop): support remote gateway headers 2b7f49673f38271b490b3db3eabde4f463947154 fix(desktop): self-heal dropped SSH/HTTP registered remote connections ace85d63de0623ef3f17842dfefd1715559ebb4f feat(desktop): add status bar reconnect for offline gateways c0f89d2545bad0630d28e9202566e47f7d6f3b7b fix(gateway): scope slash.exec's skill-command check to the session's profile a9b4ec3126687e89edac7e1c15eb87d53996d51c fix(skills): rescan skill commands cache when active profile changes 8dc427949f48280b7ccbc4304e5d71302f02ebf2 fix(gateway): accept CJK full-width punctuation as MEDIA path terminators a40324bb328f4a07e1b29b9d26caf9095a708609 fix(gateway): ignore invalid managed Node directories 59c7a9908420ef2066755fbc15043162ba95ef02 fix(state): avoid overlapping context manager change b454e4da760d0443d4eea823a598c392284a5326 fix(state): release abandoned session database handles ab7f48d4b0160431f31e266420202660aa2c1aef feat(state): support the context-manager protocol on SessionDB 48221569231bccd92c35c2161363f57910df660c fix(cron): stop retry storms when the gateway is deliberately stopped (OOF-266) f0ab10455a0f4c5d8c3d5c89f001107af3e79b56 fmt(js): `npm run fix` on merge (#88079) b82b94811a7fe7f3076b9f51a2664cbec97d0f37 chore: map contributor email for attribution audit 307d46c2078d180e6c9f8b428012a253fd16e209 fix(desktop): map SSH profile aliases in REST paths bab7be3ca7ee2ca58d38f29c189ddb4dd38035ff feat: raise Codex OAuth context to 900K for gpt-5.6 family and gpt-5.4 (subscription 1M rollout) 8236b417713dd3f4a6bea0ff26cc5f64a1d3b8c4 feat: sync bundled Bot Mode with multi-source roster (Hermes-Bot-Mode#68) 9829064f8985ac80dd0be526b9f119d55f0f278e fix: capability fingerprint reads config via the canonical loader 4e22d070f4deede824c9eabc8bbd6b7814a11bab feat(agent): one-time protocol upgrade for legacy Bot Chat sessions ea4310e76c211a93670268a98d4ff2fd0d51a0cc feat(agent): capability-refresh + timeless prompts for eternal Bot Chat sessions 72bae0e91a84f71a1e20ef89d6679532046b078f fix(agent): Bot Chat gate reads a session-title hint before the DB 400400e1d9de26325f15f8ae3c65ab40c806960d fix(hermes-bots): composeSoul honors the bot_mode_protocol capability 78a4693eef62adfa39e9cb31bb68009843eea640 fix(agent): scope the Bot Mode protocol section to canonical Bot Chat sessions d516496cef659a3295c2dcf2444bbf1e5dd6ef80 fix: track bundled plugin.js sources past the tsc-artifact gitignore 2b39e92e9e4f18cd6aaf972ef14ba7a846d25a93 feat(agent): core Bot Mode teammate protocol — stable-tier prompt section 366d8814b87662a1c3d3503654ae8c60d0d883dd feat(desktop): bundle Bot Mode (hermes-bots) as a built-in, default-on plugin 9e671bc6d23f11dc1652a53f30ed9c14d7e7c4b7 feat(desktop): ::preview renders the page live inside the message, not just a rail-opener card 9248eddfa7c2ace695726b5cab1808bb279d11a0 feat: reopen pill falls back to mining the transcript for the canvas d3f9d4e449baa870e23f745f8d6a0d8c91293a70 feat(session-search): OR-relaxed retry recovers paraphrased recall a5da7a81dc2b4eef8ee9b1ed2742f8f8f172aec8 fix: canvases opened in draft chats now tie to the session they become c2e473f432440b20ecae8dd52c9896cddba8e1ba feat(gateway): 'decline' unauthorized-DM behavior — one-time polite decline instead of pairing code 9ec8f29d3a75333b38b37622e831f007ec50e699 feat(plugins): per-plugin durable data directory that survives plugin update and removal 356ca1531721379dc7d94d2fbe2ce0d224169807 feat(desktop): plugins can render inline components in assistant messages via ::name{...} directives 1534932d5655d11e2730187e731a2baf0f327526 fix(logs): survive log rotation in 'hermes logs -f' follow mode 35c202b6bf5c9e7427a0a4ddd6cafea554aec30b fix: closing a canvas keeps it attached to its session 7fd8c564b7dc59315cc7e73cfb59ac3e353ac92a refactor: split the pen host god file into electron/pen/ 3c108589fbcaa7284ac9b4b31c0f1c75ac76cd47 fmt(js): `npm run fix` on merge (#88016) 1fe4d08a0a5386c1b0452c655fade7051f5c0879 refactor: canvas tiles are provider-shaped; pen is the first provider d8f40d4176461119ca7628215ec4a5a3e0021920 test(desktop): steer suite drives the real redirectPrompt path; hydration fixture carries durable row shape f1f694aac13dfab0d5cd8a07494956acdd5739ca test(desktop): harden steer-order suite against fake-timer id collisions b2f345f5408a761a11df55fb2c8a7d0f394a1b4a test(desktop): pin steered-turn transcript order end-to-end 587089a0882e52aed30b63b81d2bd1bc94d36133 feat: canvases in Artifacts + real thumbnails everywhere d378a25e8502833e92adf7ba25ad64f7dc3c7661 fmt(js): `npm run fix` on merge (#88014) 4ee87f76ee7dc2646fe8fcdcb70202c4f46d97bd fix(desktop): read cron run-history from the owning gateway 5f8d488830a88cc97582040098d797b44e5f19da fix(desktop): keep profile rail alive across remote/Cloud connection switches afe238ac7e3cd9a50c4f6bdacf2acff3c864714c fix(desktop): scope session/pin lists per connection across windows d0d605ad0a9b03d26e6032f88d87342d16a000c0 chore: add contributor email mapping for addelh decd6a73fa16933d75f100cf3370da14e131bd6b fix(desktop): preserve registry route identity c76b7e634371a346221b8002746e71783d5fb54d fix(desktop): harden plugin route lifecycle 17271a8a6bb3aeadabb42dfae34932d24ca3fe9e fix(desktop): route plugin profiles through registry 496946ba8cc67cba064ff157a682f1ff4bf7ad5f fix(desktop): report remote plugin target profiles 27e4f0954093d70f53f18fc2822b8d9773ef55bf feat(desktop): expose connection-aware plugin routing 210997133069156bbab42805d9364cdca8845a4a feat: get_selection — the user's live selection as agent context 33bead95724ddbfadcc47df5c7fc02e2709fe4e2 feat: blessed editor bundle ladder + working agent cursor 298f6621080ebf9721e487d39b1fa7e5f4aa4ab4 fix(tui): restore Alt+Enter for newlines (#87066) 522997543883ccb35da4a239ab203e1ad23f580d feat: raise Codex OAuth context to live-verified 350K for gpt-5.6 family and gpt-5.4 2085c7e3955c8db39488b045bfc973bd632d3b1b feat: sync bundled Bot Mode with multi-source roster (Hermes-Bot-Mode#68) 86b2057a1b3365b93cedf1ea9b1962dfc6b08170 docs(computer-use): note driver contract auto-repair at update and runtime 00c12dac613a713b173f44c19c789a9b9154eded fix(computer-use): auto-repair an installed driver that fails the runtime contract 63fa3db400cfc2fc9dd54682d76375bef91827a4 fix: capability fingerprint reads config via the canonical loader 63008f97e4d814294de6be9ee77314ddf8c151a6 feat(agent): one-time protocol upgrade for legacy Bot Chat sessions a01d2ee21a97971a011a7f753f285aac919c3040 fix(desktop): declare the repository so publish resolution can succeed 1e82967bcc8530e7d674940f7092bdd07e197f65 fix(desktop): keep the local pack out of electron-builder's publish path e79bed15494c6b3f7459bd490c49677eb262d6e3 feat(agent): capability-refresh + timeless prompts for eternal Bot Chat sessions 3fbe65cee3d206360fe0ffeeecb6dd255d54c0f2 fix(agent): Bot Chat gate reads a session-title hint before the DB 7bd0915efe7e3e4b539509d2e84f33f930bac0ed fix(hermes-bots): composeSoul honors the bot_mode_protocol capability 68830e70c83c038c9c5a1d85cc931190c8cbfca6 fix(agent): scope the Bot Mode protocol section to canonical Bot Chat sessions 12b1f0f83d281fee0d2d39bf1a683ae7e1127a87 fix(computer-use): align browser guidance and screenshots 5b010f448f51ec0087a4d7e061ad095bf09bef67 fix(computer-use): verify Windows driver repair c83ea25dd4c222ad2c8dc31925719831c0a5ea2f fix(computer-use): preserve missing driver overrides 31627452768e71e1c0d1d53cc97dcd0e7890c2e0 fix(computer-use): report unusable driver exit status 3e0087abe2eab76a0bca9ecd38487ec20375ad10 fix(computer-use): warn when an approval bypass widens the driver mode cdbea83e1ccec6860797adfa2197e01d879b0a1a fix(computer-use): keep a v3 capability manifest on approval-bypassed runs 5f049b517bf01d93e9447c8782ccb6cefcffde06 fix(computer-use): make the typed-browser bind/snapshot split discoverable 9a96fdc5b8c056016f647dd1e1b6d455747d9e54 fix(computer-use): enforce existing-profile grant, unblock the opt-in 81af2ef013311eae8fa1aaa419e4daf6e434941a fix(computer-use): reconcile existing cua-driver installs a403fe6f9294f2be27884715fb5867f04b1f977d feat(computer-use): support Cua Driver 0.20 runtime contracts c257e9196bfa0dd93e82b72e44bb9b05a9840c81 fix: make every tool interruptible — sequential executor abandons on user interrupt e425f76a356f8c78126b568c7d3ceaf4b04126f5 fix: track bundled plugin.js sources past the tsc-artifact gitignore a7c72f89c4dae62447020e1361407e2eb62c3d51 fix(gateway): honor whatsapp.group_allow_from for no-user-id routed group turns fe057e3cff2605d6adaa18ba7fc6167b76e9a38c feat(agent): core Bot Mode teammate protocol — stable-tier prompt section 7f6c2e1900f2ca5fb64062d914cefd1a64b7e681 feat(desktop): bundle Bot Mode (hermes-bots) as a built-in, default-on plugin f06c41522ed94ad54b65c425aeeb4c698dd6b742 fix(image_gen): disable default-on upscaling everywhere — opt-in only ca84f13b971d9ff4c63e6df636c5a1486ffad0e3 fmt(js): `npm run fix` on merge (#87880) 2eb9d292809845032a4ac1460ab05c37cc20c23a fix(desktop): scope pluginSocket's connection to the active profile c23605ef761b878ebc0d4b75f53662594e1e4e1b fix(apps): dial primary sleep/wake reconnect at window backend not active profile 2c51abe8e11be4ab2534cdd657ed0160249df563 chore: map contributor email for xkam7ar 0a6ead0e9bde7c37a1728bce6c452a1b84b91f36 fix(desktop): ignore stale remote connection attempts 19631b52926984070c743909f3a64bfcb7d781af fix(update): tighten gateway-side unit gates to exact/hyphenated shape 0b42cae068b8ce118e2e59e328c60c15ed5fe853 fix(update): tighten hermes-serve unit gate, dedupe fleet/cleanup restarts f97cc250da6a2a7075e80d9f3f389e92de5d32c7 fix(update): restart hermes-serve systemd units alongside gateways 250232ff91550752d2fbd984eb992365a6b55e83 Revert "fix(agent): harden canonical tool call deduplication" 587ad8748f9ad6818c0ef89b6f750977a1f6f993 Revert "fix(agent): preserve local reasoning timeout opt-out" 2854fab46c7a5c1b7589bbec0753d5abcd57134e docs(openviking): correct environment handling explanations 38175b8c2263c0cb7bf47c3437c8a69dac5bf151 fix(openviking): preserve non-UTF-8 env bytes on update dde7075d6c8716cf51dfe0e53a82621b4e817482 fix(openviking): read .env BOM-tolerantly when rewriting credentials 4fdaadd907fd37fc118e46b5c9de001830248867 fix(openviking): strip PYTHONPATH from autostarted server child env (#78153) 06b9141109fbd320b14b8c88645ab37fc4f42c9d fix(state): classify structural DB corruption as its own persistence cause 21c1fe6686c61e8688736e7e8a0d92982d08805d fix(tui): modified Enter and bare LF insert a newline in the composer across IDE and macOS terminals (#87854) df4b65147d7ddd74dd449f9067aabbca5aef0ec7 chore: release v0.20.2 (2026.8.16) ddc51ec109443a1894a59731b76e5373c06b0dee fix(update): reload process-scan modules at the dashboard-cleanup entry point 5331ae28ef3d712a9b0a284ed2d2dcad72c82e35 fix(update): reload _subprocess_compat and dashboard_procs after git pull d709d29f19975df16ee874c33266211e14987c78 fix(agent): trim background_review to the enabled switch 410c4379552b7082c286ef2cc7eddf6d7bef11fb fmt(js): `npm run fix` on merge (#87844) b007b80cb7e976ef7b2542a6de53f85e5508f166 fmt(js): `npm run fix` on merge (#87839) 12eeadf8ac6eaadc624ac41d920a694d5861c918 style(desktop): order @hermes/shared import before nanostores (perfectionist/sort-imports) 9caff74408af3a5a5cde61b0ab1a76af0695033f fix(desktop): key fan-out event consumption by (connectionId, profile) d905954634a20ad5fde692b8245aa064bd1eb217 fix(desktop): route registry 'local' entry to the genuinely-local runtime bed7e975aa14d28ae43c69ba30c289ba467a8853 fix(desktop): omit empty rewind rebind requests 7095e23eb2066fe9a2f93b99cdbfe0e2b5ece397 fix(agent): attribute background-review usage and add cost controls 00ecb5d538a6b4282a3da714cbd2bdbe06d20b35 test(cli): retarget the wmic-encoding regression test at bounded_probe_run 4e3de140c1995e11c132328c0fdb2836e1f8aa14 fix(cli): bound the Windows process-scan probes so a slow WMI scan cannot wedge hermes update (#87134) 5b19c8ee557eb5e5af63cb4b60a9537e7e14acd3 fix(acp): make --acp probe tri-state, cached, and mock-safe 877e85136f688af219ec2f0019deb95e2ec29941 fix(acp): probe CLI for --acp support before spawning subprocess de254c48fbc4013c292be39f21d8e9f73520685f chore: map contributor email for @yflmq001 0816ba2f938dd7ad0a1631b07c8336a6277eb738 fix(cli): address review feedback on chat -c fail-loudly PR a2fcac087c986f6d83a99b5755b5d485ab45587c fix(cli): chat -c fails loudly on stderr and gains --create-if-missing fccf2b718ea8ff7426c79a048b9d3ca05df612ad fix(gateway): complete /loop ticks after streamed already_sent turns c2e94822d8d8c5ab06f61f5eecd228689b47288e test(gitlock): pin the git-process guard in sweep tests (deflake slice 8) 275f8d41bc00c0a550d63f51baa52d5617401319 fix(auth): only fall back to os.getenv on ImportError in resolve_provider (#86918 review) 047c72eeadb9b7a9ca238b133bebd92a97d87f97 test(auth): cover profile-scoped key resolution in resolve_provider (#86917) 8ff5f13c09eca2b861a2bac6639f0d904c6b487b fix(auth): resolve provider auto-detection keys through the profile scope (#86917) b560c0d241f1b60d6d68933413da741c1aff4440 docs(agents): record multiplex profile-scoped env fail-closed rule (#86905) 795e035f60137b82587879ca00828328f30a53b6 fix(cron): coerce script_path to str in the NUL guard so it can never crash (#86829, review #86832) 5c290caa9cd9f691f25407965823eeeb7ae39d33 test(cron): pin the eager NUL rejection contract for _run_job_script (#86829) 40586082e5a908dc22d46b01c219065e092c4578 fix(cron): reject NUL-bearing script paths before any Path call (#76762 class) 089b437b35dd1362611ad3f4c8b4609d9a2211b4 fix(tui): stop queued dispatch after session close ad85feec434ef12d5d5d3b216ec22ad2d2005415 fix(tui): settle session close against active turns 0a1cca56480f3ab7ad60443c703849309badfc99 refactor(gateway): share breakaway marker constant b921fdd886130bd29f07830dffd899fe3ccf8d78 fix(gateway): improve Windows detach diagnostics a7253a6c02881800a3cb396257b2b348b5a1d67a fix(cli): deliver the Bedrock API key through a named provider b44f956dff0173d7b0e2685134cb50e93ab720ad fix(desktop-update): put --daemonized ahead of ORIGINAL_ARGS in posix.sh re-exec 309cf2c5e2b3327bf302f8d3c8de240a70604221 fix: honor JSON-array string forms for skills.disabled and agent.disabled_toolsets bd0586e0623acb01764658004727a1ab153b1cb5 fix(update): surface config mutations applied silently during version-bump-only updates 58d6bf2d61f872344b41e0949fe7ce8b1e2eeb35 fix(cron): log and document the .pth bootstrap fallback (#86816 review) 029a0d8c76e63f44b0d0486714346eee551ece7f fix(cron): process .pth files for Windows uv-venv script jobs (#86567) 56526bc0d36522ab7a87ee0056f70e3847d2f0e6 Merge pull request #87630 from kshitijk4poor/fix/kitty-extended-keys-proper d67583ac66ee805594e67491eb2985e3f96655cf fix(tui): classify repaired rows in rewind rebinds 2b33a09fcb59932cc28d094a5c2c033f0db7828a Merge remote-tracking branch 'origin/main' into codex/81234-live-main-final 03bf85d83b0d35cb779ef0f6beb37ea6915b9ecc fix(cli): restore Kitty keyboard protocol push and complete the extended-key alias table 149757a63ad06bd25e8c590715a826d94d1f468c Merge remote-tracking branch 'origin/main' into codex/81234-live-main-final 7ca19874593becb81aa742aae5800eac8c9088d2 Merge upstream main into PR 81234 f4c80e4243d4616e7210e53cbeaf1e1492bb668c fix(desktop): recycle live backends and sockets when a connection edit changes its target 28c729e68f6f841a88f17678c369792a8ea22c8c fix(desktop): tear down renderer secondaries when a registry connection is removed 9e062912b9c309993c970aa978cde339a7559627 fix(desktop): exclude process-less descriptors from backend pool LRU cap 6ce7922af11ecfc2b668293b94c24401414c0a83 chore: map contributor email for focused-session atoms salvage 5fa092b4819c43bec6fcdeb7aaccf113e85101e7 fix(desktop-sdk): address adversarial review — type honesty, real tile coverage, docs a445a812792801eff3a3ab514c96973bbf8431c5 fix(desktop-sdk): type focusedUsage as Partial, fix expect arity 74b7d5da2d2ca58212730f1af583b9e491f198a5 test(desktop-sdk): contract-test the focused-session host.state atoms 68bd8befd243254bff4947831666449e6b59cbf8 feat(desktop-sdk): expose focused-session state atoms to plugins 829f1ac40a453499089cf53390e81e67913b4b1d fix(desktop): key fan-out event consumption by (connectionId, profile) bcdbc2a802cacd266ec9108c04efbb24d9385ee3 fix(desktop): route registry 'local' entry to the genuinely-local runtime be38224b49f015cc8dc1d7ae4762be85d19ea97a fix(desktop): lint and map contributor email for running-is-not-busy 3bc52fb9dfd97c4a32573b2f068887aadfb853ab feat(desktop): running is not busy 1e54e052273ef43e3939cde0e4110bd098919e0a feat(desktop): paste-anything MCP server import 28fc9d9c0d5eec03533ed15942c53665fdaaa582 fix(desktop): make plugin SDK turn flags follow the focused chat 0a9337d2bb219e3096a3707ca143968dc4bcc005 feat(desktop): expose busy turn flags on plugin SDK 39bf984765e4a2c75e49b0c52019ca41ed3667c9 fix(desktop): sync connection atoms and share the switch mutex for agent activation 45398957b76c78fdeb911b6934b7246a21b21a9f fix(desktop): never resolve a missing named gateway scope to the primary ea2daa0935d07fe8dca4ee4cf55ce6be99cbc2f8 docs: full multi-gateway setup guide for Hermes Desktop 34271eb069aa1599f3b66d9c85e9496965ac82a4 feat(desktop): make the multi-gateway Connections registry discoverable 6c745e81ae856cb0cbfe5b1ec84c860b1f292ad7 fix(tools-config): stop reconfigure flow clobbering image_gen.use_gateway on managed FAL rows 58a9062f60843a0c326172b270b6ecd637c8c257 fix(desktop): resolve sessions from sidebar caches 4e4d37f6bff0b34c48a67d167b054f9ce941caba fix(desktop): harden profile-scoped refreshes 4f670a3f95c58f32fbe99e831d7039c92ba37242 fix(desktop): reject stale profile refreshes 8477a5a83dfa403d8d9b00f7a454383f7e269dce docs(desktop): document profile scope helpers a0f22234bca5db23519126c14f4e1f46c9882c90 fix(desktop): ignore stale messaging page responses 1f24b3ed2ec3a6398b1f5b9d49908ae382411f2e fix(desktop): retain messaging totals per profile e264b483949214d5a5d289ccc4b15e5e2073ae06 fix(desktop): scope messaging to active remote profile 0a3e61cf075b8771600714b2b7df73292d5f540c fmt(js): `npm run fix` on merge (#87607) 1c3fbd21ae51d2fdff3b2cce1a6a59e8b45bd2c7 feat(desktop): background MCP health checks with re-auth nudges 5d33efd9909f73dede49d7c49e497f8636aa486b fmt(js): `npm run fix` on merge (#87599) 56eafcff3cf91c10592dc690fa60ae51acf29a7f feat(desktop): hermes:// deep link to install MCP servers with explicit confirmation 3e0bf6dcaa42a2731b854bad59543f86cd40839f fix(desktop): hoist GatewayMock type into #82462 edit recovery suite e14b095f20eb73e7a34f1e298a8e01459624cfa0 fix(tui): map lineage edit ordinals past compression prefix e22fa90769a501dc11883541e5cfb638eda88b94 feat(desktop): MCP fleet cost/usage overlay with schema token estimates and 30-day usage 577093def22c24e1918b7a9dba3b7ca255eb2bab perf(desktop): hydrate transcripts with a small tail page + on-demand older-page backfill ef37e92ec1505eed450131817bd8cf61b6f8650e test(desktop): pin steered-turn transcript order end-to-end c6db20726af9a887a9a10c810e02e130b4f8a43c fix(desktop): give Windows start-marker PowerShell probe a 30s budget c3d74603aa31b34fc373904d1ba5d7b5480c12bf fix(desktop): avoid PowerShell parent marker boot gate f325008ebf35250c6156a13a0abb9a9ffea1e6f9 chore(contributors): map emails for P2-sweep salvage wave 8033389662a491fa6f8c355dd2a87c9bb4572ff0 fix(desktop): match custom provider aliases in model catalog menu eb2dceb4d4575aaa18617475f6aac0b2a93f6660 fix(desktop): show failed status for timed-out subagents in fallback stream path 25fabcf8eb897ac3a4ec749dfb46c54c1934c124 fix(telegram): keep /loop and synthetic sends in the active DM topic 1e6717baf248094cd32547396f98276b44febfb5 fix(web_server): discover root user plugins under profile-scoped processes 4ce0d64be4224589dbe96aca262c8806635ee891 test(caching): pin signal precedence and the openrouter-host opt-out 0038d96b781492c94135f8374a0ed4cf641a80f4 perf(caching): narrow the widened capability lookup to the LiteLLM grant 435d6f30b533f47f2b14ccfc5311533a7d3ed459 fix(caching): match the litellm provider id token-wise too 1b0e953b476236a6486d51a00daa2c2e862622a6 fix(caching): use the envelope layout for LiteLLM Claude on the OpenAI wire ff4df5e54dac7b00b36ac474417239106f3681fc fix(caching): engage prompt caching for LiteLLM Claude on the OpenAI wire 53daff064479bf42f587b81c282a2237daf04c0c fix(desktop): don't cancel the running turn on Esc while an overlay is open 095d25c6122a3e8fd4ed57eb816e389c3512b8ce fix(gateway): keep persisted model routes consistent c32dd7580a251bd3172a66ae6ab4a3e62cfa6f3c fix(desktop): identify unsafe update blockers 7af27c65ab73158df8af803270d0cdaebd9c5550 fix(desktop): close safe preview blockers before update 9ca11399c0fe2193aa9e65bdf42855bc438e7f7f fix(telegram): honor group_allowed_chats in early auth under multiplex profiles (#87132) ed0a8a480e891758b29b15a1c15f23b592143a8a fix(skills): resolve skills dir before relative_to so junction installs work (#86971) b3df990832cd380523253347a84773283834b80c fix(gateway): offload hygiene streak persistence 39d2d858fd7821deb85d3b126a7ee7cdd9353ab1 fix(gateway): persist hygiene failure cooldown rung 5602f04a6ec0ed7fd8e8fa7a1f662193b9319263 fix(agent): clear in-memory cooldown when hygiene overwrites the shared row 2cb8381963ae518116d1fe2b313f01ad3a5a6831 fix(agent): do not let hygiene idle timeouts block in-agent compression 2d7c9ef6b9c0599818be01c4bbadc2b85389abf8 fix(gateway): don't crash on a foreign XDG_RUNTIME_DIR in user-systemd preflight (#86558) 95190e4544b765139ca664d123b3ea26d8205a26 fix(gemini): raise maxOutputTokens when thinking is enabled 076b8a5aa8b71a6f984c3f4967d10bb845340cd4 fix(backup): bound locked database snapshot waits 8fe863325467a88e787273a194d9c49d4036c3f9 fix(codex): clamp xAI max/ultra aliases to the model's reasoning ceiling (#87279) 7f1c49cdaa3ff9c0927687f4ac14d966751291f6 fix(ui): scrub esbuild override during builds f33ec6847898cecdec535612190bf2e68667b1fe fix(ui): ignore inherited esbuild binary overrides be8b58dcbc548a7d2a35bea80c4cb9efefac0221 fix(gateway): let an explicit workspace move win for a running session 8fc4189edd23dde055232cc07ea14d1d525e44ee fix(agent): harden canonical tool call deduplication a55d29d9fb3526120df0191daceb9cc2c5768c4c fix(agent): canonicalize duplicate tool call arguments f4f08f9dae6936b503c3c71a6ed963865bd8182d fix(gateway): make managed Node suppress PATH fallback da392043a9828192d62a80a1e3578e300377f0b0 fix(agent): include timezone and UTC offset in system prompt timestamp a7b25b3c002ef3624a4c87ec2a141733d7ff7dad fix(desktop): never reap a backend whose parent Electron is alive df899956749c9b5c9168f00b5963b609a2db81b9 fix(desktop): keep startHermes inert without the single-instance lock 7cc006a2ef4cd8a4210a72e7051cbdc15a36a59a fix(desktop): hard-exit a lock-losing second instance before ready 0a8092ac32662932ed3aa64c4ee9b82835298c2d fix: guard exit watchdog against mid-cleanup overlap f1e3e0a4d9b814eba5af1be25186f825a6699967 fix(agent): bound worker finalization when iteration budget exhausted (#87096) b48ab1b4ad0371c7e2527e384d8611a51005c521 fix(agent+discord): guard truncated-response continuation loops and cap Discord split delivery (#86581) 0a42bc7113e266300b019b0b4c2728943fbb40e9 fix(sessions): align prune filter derivation 0b8a09759c18713dd17ef1deb4ba02dcfbb269c8 fix(sessions): address prune skip review notes 29dfbf2d6a5c46997bebce0df3116b68d3459d88 fix(sessions): surface open sessions skipped by prune a6f405314faed9795070f22ae580a8f1aa78ed2b fix(agent): cover provider wait teardown paths 0fd059e745af666e2bb42f52d75fbd959799df53 fix(agent): preserve stalled-provider escalation 7008fb81b3b22646dddf35d38fed2ed84595db42 fix(gateway): put --external-supervisor on launchd gateway argv c69a0872ea35139ed0827a2956efcea2d0da0956 fix(gateway): preserve launchd supervisor marker across stderr_timestamp wrapper 730c5fc5d0a5b84df00b58c796b6d617b384e600 fix(gateway): treat Ready scheduled tasks as Windows supervisors 1596148ff2256ac1fafb5b19c5ce27d98b0fd22e fix(approval): deterministic approvals.single_query_mode for -q sessions 26b2b475935d5f5f369142fe1648cf5c95e7b056 fix(agent): preserve local reasoning timeout opt-out ca50ff332fd3d7d17d11381ed0046751748d51ae fix(desktop): reject bare modifier combos in the input gate a11fb1cd89918ca9eff22f99d55da80effc4f376 fix(desktop): restore mod-chord keybinds while typing in inputs d6f18cd7db260df75766787e44e0b9f71677ac77 fix(mcp): prefer server-native tool over generated utility on name collision (#87112) 25672c0e7f742656358ff1267e7f805669994bd4 fix(cli): allow persisted contributor tier consent 3cbd86aac8577ea2671da69db4cdbb3aa43e85e0 fix(cli): warn when --provider default_model cannot be resolved d6688adcc21a2eef8542928feccda3eefdd2c85a fix(cli): use custom provider default_model when --provider is set b7936c892de59132f712c7bf61ff95eae6adf691 fix(gateway): catch BaseException in _process_message_background to notify on SystemExit 3a61fa86fac66b2d6b2b77eccd6f01825808d17b fix(gateway): keep broad connection phrases out of the provider-error gate 5cfa2b2f0fa977cf075e0e2e5ef6b3b5c8ddcbef fix(gateway): surface actionable message for local model server connection errors ae7b5c8eab65ac9f0288bbc524b04cd90906e7e9 fix(batch_runner): propagate fatal and validation errors as non-zero exit codes faaf2ae0930e0b7130263cfce162e1b9d59b9467 fix(gateway): read routed profile model config 9ac1e65b0ae4e83dced9d5c8a406cc57cb589702 fix(cron): do not treat directories as unsafe lifecycle scripts (#86753) 08baf96537a920e6d6008c91793e4d7cf927f80d fix(runtime): exempt loopback custom-provider pool credentials from the usable-secret floor 3beea05438afc5e5f44c48879172d7156b94e570 fix: persist computer_use provider selection so Desktop picker survives refresh f13f3401a16bca690f5607063a76d12ea8b965d2 fix(webhook): authenticate Linear deliveries via linear-signature HMAC (#87348) eac1f65340f428fadeca666f5cf164af01e6413d fix(install): validate --commit SHA and fail hard on fetch/checkout errors (#87268) f887819421e8482f2284929def96ae000ef19f9e fix(install): capture npm output on failure for diagnosable errors (#87340) 9219cd39445fce7375f7b7e07548f1619cc1402a fix(gateway): isolate post-turn loop failures 2f6bbfbcbc87a755b0dae9c1ccb0887b37fe8b73 fix(gateway): release loop ticks after empty responses 0ada5b97d30c37f6738efc6b3b765049b957bbf0 Merge remote-tracking branch 'origin/main' into bb/pen a7551da049d682ef9bb70d3a022e10c8f9cc4ab5 wip: pen canvas as layout-tree pane — webview embed, session ties, library, agent presence e143c011776c5c41231af48c34be2ccad50e1785 fix: bind gateway approval buttons to request ids a15de345459cb044193202893982911a2410a777 feat(desktop-sdk): host.deleteProfile — teardown-routed profile delete for plugins 69f7c655b4a823740dbff9a9cba3e0cc5ad9d87f docs(tui): document defer_history vs omit_messages precedence a2fd20f89649c64741f7c72b59a3c24b83e0a455 test(tui): isolate deferred hydration worker 7a1b2cd0d198f5c18e0c7a1993e7fe2dcd8e9316 test(desktop): preserve bounded deferred resume bd1a44fade0e2de75d95a442ad028f83b05dbfc2 test(tui): wait for deferred profile DB close 60be8ef26dc9d6ee03b37cca0a1da0e77c7f2fb3 perf(desktop): make session resume incremental b4cfc8a6bb0d240d85c4dcbbc5ffe622dc320093 docs: add local memory guard infographic 09bb9c3b2f20f22bdb1688b6efcb78b24f1f19d6 Port from google-gemini/gemini-cli#28792: harden internal git env d7e4e3b4949cbbb27206b5a547d4812bb0ab47ce Merge remote-tracking branch 'github/main' into claude-code-inspired/local-terminal-memory-limit ea3a8da90d85315dcc6a78ac35a53f44d3325c92 Inspired by Claude Code: cap local terminal memory 643385931c65cabfe4bcef007a270b3d31b224d1 fix: reject duplicate V4A patch paths b78ce0ad36565c29d1206506aa7ff4c3b45e1f12 feat(cli): add CPU profiling flag b2369172ad35d47a3df7df2a244c38eb3a838f62 Merge pull request #87516 from kshitijk4poor/chore/author-map-justinbowes 37445d6dc2187f5bddbfe13e98a3a8b5f60b207e feat(desktop): unify MCP Servers and Catalog into one coherent list 2cd5393af70c70d202fa114e9f1a2d67148ccac0 chore: map justin@bowes.org to @justinbowes 2be183142c6dd9ac309b6db5b783af5e25c3be18 refactor: extract _install_paired helper, fix misleading comment, isolate test fixture b353ac39a2d33b8cb7c59305bf241d7dbc5d90d0 fix(cli): map all Ctrl/Alt/Shift+key combos under modifyOtherKeys level 2 c6dfdcbf8d55605de3f2d712b59e61e824219960 fix(agent): reject masked verification results 1f8f79b3209ff3e802c8269784d8090b344c6230 fmt(js): `npm run fix` on merge (#87505) 6bb8f60f5721b8d04ef8f3c356e37db8cd865350 fix(desktop): defer credential-warning onboarding to the first chat attempt 8ad055414bcae75486952c5080d366679e074c1b fix(terminal): warn when exit_code 0 masks a piped build/test failure 406c5daf04b0f788a2027d88a58845b004d9bd40 fix(compression): bound the rotation tail clone below the rotator's own flush 652f5c2ebb9c5f9369bee8ab50d58fa6803e25e3 fix(compression): rotation path clones the concurrent tail into the child 21d3e6370232f620944651e9c262f026a1f59952 fix(compression): watermark commit — appends flow freely, concurrent tail survives compaction 128fb74d9858db849cb3a8f59ec6a7a85a0bf70c chore: map contributor email for 5Hyeons 9975180a592c827fbbb7bafa57705dd063a7e521 fix(mcp): handle DCR clients with secrets across all OAuth paths 411903b6fa258f81afcc3869eb615f6218e1776a chore: contributor mapping for NikolaRHristov 20fcc11a0c924b608aedd676bc9110b3bc7240ba refactor(hooks): share fail-closed approve logic; update sibling tests d083b85591f493be839c85e29bd1108df89e3dad feat(hooks): pre_tool_call content transformation via `modify` directive f3bf718a620d4bd1577414148893553fc13932bc feat(desktop): drag-resizable panes on the Capabilities Skills tab 9b9dd6eeab2052dae1fdb1fcd6f0c989e8ade2ba fix(computer-use): zero-rect AX bounds serialize as unknown, not a position 1d5fc2bc0b50742571e454b4c10a21e7d2904454 feat(config): wire compression.tail_mode + docs (en/zh) 4a9411cf7f325cfae66e0d15db626d796a8b204d Merge pull request #87326 from NousResearch/feat/compaction-eval-and-tail-policy b7f6280259057f04ab3da91b7b112b3ef75e6748 fix(computer-use): refuse wrong-window input on app= mismatch; hint near-miss actions 39d7b0a3b09b44a149f596e7ccaeefbf110deaad feat(image-gen): add Grok Imagine Image 2.0 to the FAL image catalog 5426cfa5d80ed3ec4eb275a8c2958f9272a8d21c feat(video-gen): add Wan 2.7 FAL video family (t2v + i2v) bf824bb5eccb08a508b7448fbc659ff4e91c5e3f Port from can1357/oh-my-pi#8153: send $/cancelRequest when an LSP request is abandoned b7790d91a6b97a05616ea7d768d635deeb835268 merge: refresh onto current main (take main's superior sequential-timeout de-flake) 0ee5ae61e203673f852869bcd5a512ef43d830ec docs(evals): real Codex CLI head-to-head arm + results 40bd4f61c8be1a56788173e33fb9af444267be67 Port from block/goose#11114: bound local image reads during the read d638d6723bdffab38975c554e3f4b15d8c754937 Port from block/goose#10989: widen pipe-remote-to-shell detection 460d345642ee3d143a3e461abe39fd42b86a7e54 fix(computer-use): flag macOS zero-display capture in doctor + discovery reason d303e18d09f50db9c3347b8a6acf54e28e13ca02 fix(computer_use): ignore placeholder pid/window_id ids 61f2738205652579cab8c3ee6f837f22fb1a9d6f test(tool-executor): close the second race — deadline vs middleware preamble d24d294421fa1c1b08e574cabeee4afb19c22187 test(tool-executor): deterministic worker start kills sequential-timeout flake 933ef69470551c67f9403d0e203b276954a4ff68 feat: session picker lifecycle status + delete 99500aca11eac3001fce89ccd104284bccf07f3d fix: guard breadcrumb writes for bare test fakes; fold session category into general d6f02e34969ff488203cb668d4aced737f1c1462 feat: per-terminal --continue via terminal breadcrumbs 04c61f2949204a918942400ee6596f79ff8551a6 feat: import and resume Claude Code / Codex CLI sessions 729e6c0119a9dfd98f9f58bdec6585418c683e3e feat: session picker lifecycle status + delete 5b68b4937b7b505279ae1bb25b082eef7a322657 feat: per-terminal --continue via terminal breadcrumbs 4c77969df94193168085930959d266aeab9b449e feat: import and resume Claude Code / Codex CLI sessions 3a235fa0d58703fcda5c5d8254f272a7e94f500c test(tool-executor): close the second race — deadline vs middleware preamble e2990428e7e65053d5aeb4e56ac3fc13680879e5 docs(evals): ship transcript-building scripts + full eval detail in-repo 6f1d82032873edfc3f57fdfe6c806a9fa2d40e7f test(tool-executor): deterministic worker start kills sequential-timeout flake a2cc86787069e5d98d22a200c803f2f62901c6e6 fix(tests): de-flake sequential-tool-timeout race on loaded runners 2ff0daea408a3bc43065bd12f44a607227f2a57d fix(computer-use): flag macOS zero-display capture in doctor + discovery reason 1fc7d60b9ad2f87af2f7991dde6487e795b455c7 fix(computer_use): ignore placeholder pid/window_id ids d5773bfc3ad32148f0ff2e1de975fc94e37a0335 feat(desktop): Skills tab hub browser + full-skill detail pane; drop Browse Hub tab; SkillsView SDK export 95aa709606feda7592c45f3b916e26d12b3b4d08 fix(computer-use): diagnose empty window discovery; fail fast on dead-daemon CLI fallback 9146f4c85137c25df87259025c0ae115301f96ba fix(evals): explicit encoding on all file I/O (ruff PLW1514) 44536bd41b4aa86e48f880fee5885ee169bb8574 docs(evals): 4-transcript compaction scorecard 31ca1200ef5cd04d9786c2ffd04bf2e08fdcfef8 feat(compression): field-proven summarizer prompt upgrades c4bbb14e528c3aa257f0f26c930e339b9afa3bc3 feat(compression): mechanical anchor index + region-scoping tripwire 7a82457ede29b5dcef4a6203466fe843b7595347 feat(compression): digest noise filter + FTS5 recovery sim + digest-aware query hints 8fe9025abd4573c5dd277ba1e88c173860ad1d18 feat(compression): lean tail mode + recovery-aware eval arm 33242d5ee0f65945abaacae557027d63fa0a6b09 feat(evals): compaction recall eval harness 9c58a78a7d8059626d0fb0fe957fb9cd11c0c7f4 feat(desktop): Capabilities-wide profile scoping + one-click hub installs on the Skills tab 951ae62ffc51e2c279142905a054d0f696e2a54f test(computer-use): pin 0.17+ split refs/content_refs merge behavior bbd3462e25f47e6b0cfab8d0af8422f2230ee439 fix(computer-use): merge refs+content_refs in _ref_map for cua-driver 0.17 17c7b0bebd3f10eface4af1cc7c1c6a60e200046 fmt(js): `npm run fix` on merge (#87296) 2e9dcb7c555d3512078708c4c966c9d160b9ca3c fix(gateway): session.history ships durable row_id stamps 3e8ab061073654b2ca57314cf5524f64fe159121 fix(desktop): never send ordinal-only truncation — resolve durable row ids by content c2a50a86620c573bdfae4b401803dc47b82672a7 fix(desktop): skip failed turns in the backend-facing user ordinal space 20cf326bd117e66b0c3a0385dcad20a53f19d6f2 fix(computer-use): align browser authorization with live-verified cua-driver 0.19.3 contract 48dd9c87cf0523e85ecc918e6161b97af6ca3aeb feat(computer-use): user-facing authorization for cua-driver browser attachment 902b3b8c7480a535dbfd743d8320d7292041e836 Inspired by Factory Droid: /branch --stay keeps you in the original session 0921ddf436a414149597d96510f46065deae373a feat(optional-skills): add video-shotcraft — Remotion cinematic product videos ae6faeb3efb105b76bc8df1c43bbcc894f4c08be feat(optional-skills): add squirrelscan — website QA/audit CLI skill fe0a56ed16bb13122781c3a296c0fe7a79f3895f fix(nemo_relay): bound plugin Relay marks so a wedged native pipeline cannot stall the agent 92c998c86c8348b572b0409e3a53e380c8f60f10 fix(update): restore quarantined hermes.exe shims after no-op installs on Windows 763b10c320aafdd671934c9f94cd348505ee1402 fix(gateway): run session-finalize plugin hooks off-loop and bounded 37280c7e0c85de1902c95c9fa145acf114abc843 Merge remote-tracking branch 'origin/main' into codex/81234-live-main-final fcea2175e23fdeb95f7e615f0cc7d6e5f3f485b0 Merge remote-tracking branch 'origin/main' into codex/81234-live-main-final 0c50bdbdea57f3d63571e58ae70b3520c4f8b62e fmt(js): `npm run fix` on merge (#87257) 67ee481621449bd8fe798d7acb642795660c6399 fix(gateway): preserve pending transcript state on failed rewinds 9c7f92bf93ffa97cec5176d512113c30f0349f94 fmt(js): `npm run fix` on merge (#87251) 3863de3155b0c352e7cb2fbc703fdcb298ac9bc5 revert(gateway): keep profile truncation routing out of scope 0640fe71194c9df82234e1295d45b5a916b423f5 fix(gateway): route truncation writes to profile database 79b7d969d390e17633510c86335ada78dde52f19 fix(gateway): reject unstamped durable ordinal rewinds eec4d5ec197a968e9341367c1379c8989351f567 style: order deep-parent fixture import before siblings (perfectionist/sort-imports) 9f78a0d37f25aa72ef553e304b7e2315d711058a fix(desktop): preserve turn-elapsed timer across session switches 9859e8852f39e52492a7be426b4cb779723d2bf5 chore: map 807847218@qq.com -> Tommy00748 for attribution audit 93a9b2318fd5da1673f8170ceaf7161ca30f0d32 feat(desktop): show per-turn wall-clock duration in the transcript a525bbed0ec91726a21b6b532818df580eb286f9 fix(update): avoid cryptography self-lock on Windows 4b583e4476c8722c9d60b17344547a94107bbf7c fix(desktop): discriminate backend-confirmed turns with turnLive so the settle gate survives submit-time clock seeding 3e46389e4060a0953db1a5b9fb7f29bc91475501 fix(desktop): settle a turn that ends with no assistant payload bac7c2928c74f753cf7d9dea081b15f7b832d53a docs: add Official Domains & Phishing Safety page 165c889e5b4277b56dadd42949a4112c1e6175a6 fix(cli): stop pushing Kitty keyboard protocol that breaks Ctrl+C 45af7a71fcd420b4422d2c074b1ce58b9ce0d048 fmt(js): `npm run fix` on merge (#86935) bda83a473709c32f971e77a678baf3ff42ecc689 style: satisfy desktop eslint (curly braces, import order) 07161e1da4f3b0305fce2c9da71de170b5ceb84f chore: map contributor email for @RGerrish ed4f91c4ebc5b65efd32aaf1674d873ec40b1bb2 fix(update): widen stale-lock self-heal to banner and desktop; align with compare-API status 7fe3bf042b14056978b13721d9c0f030bf2217d2 fix(update): self-heal stale git locks and stop false 'update available' on shallow clones c9a806e9d2582aa1abfcb8eff305b9c0f2a6e62b fix(browser): pin named sessions to their own tab on shared browsers f70277bc704e92c334aa195329a4f9a86c09c348 fix(desktop): arm the turn progress timer at submit instead of waiting for message.start 56e5385e96c29af0fa15f2c5181405d54b8ed4ad fix(desktop): stop blocking the image submit path on vision pre-analysis 12859e9eb555f0e69eadca69f8b528e7856d75a6 docs: add Connecting Desktop to Many Hermes Instances guide fe63353cbbb78a50b152119a831ef496f8861977 fix(tools-config): stop clobbering image_gen.use_gateway on Nous-managed FAL picks bb4f680f22b8d6ac66cecd0dec310c5a68f6b556 fix(browser): named browser_exec sessions compose with every backend 3d5f4507817035275cc5a38fe219d961b8f3dccc fmt(js): `npm run fix` on merge (#86915) bfd9cef389b060bd6ff61fcd4bf653c3fc48b893 fix(worktree): deepen shallow clones so worktree cleanup can verify push state 3671529e9d15f6d6be5e56fb705f4040e48cbd8c feat(sdk): export route-decoupled McpTab + ToolsetConfigPanel for plugins (#86896) b70bd03b3cb71279c394de1d805969d1a13a8f90 fix(updater): mark PID probe POSIX-only d528f4da00bf7118fa00c49fae3ed1af4e6f5126 fix(updater): defer native parser imports after recovery 97051703ae7bc378b359f16dac78b977089cea8b fix(updater): keep recovered retries native-safe 8f5e5e49a2f5439f7807a38ef2f17d69cbaaa1f9 fix(updater): recover deferred installs on update retry efdd715f8ac1a858e72d179d492205694aeb5a7c fix(gateway): resolve the profile-aware scheduled-task name in the reaper guard 2795b2ab9f4ecdf40f40100e4efae706a1f059fd fix(gateway): treat a Running HermesGateway scheduled task as a supervisor bd3a966c0eb8c63e05d5bea39e154110512930d5 fix(cron): log the pre-dispatch stale-claim reap instead of swallowing it 22e638db7c1e378ab86caf2ff22dfa5a87778678 fix(cron): reap stale execution claims before a one-shot `hermes cron run` dispatch 4ef56cef4c6eecc009e2284fe2f1df20664f357a fix(auth): bound the no-TTL key_cmd token cache; docs for key_cmd 6efab28726263fe7e1b8066004648ef4a535dd83 feat(auth): add key_cmd credential source for custom providers aff19d0251a87ef123675892678254387fbb6f67 feat(desktop): multi-source agents end-to-end — sockets, roster, SDK, fan-out updates d65b7d0760235210f5cf29c0eaaf98fe10078546 Merge remote-tracking branch 'origin/main' into codex/81234-live-main-final 3f075d41dd593191b4bcf11fb608b72d698c3d3e Merge remote-tracking branch 'origin/main' into codex/81234-live-main-final 7a16840addc345666abc510dbfc2ffbe6631f948 fix(compression): couple pruned-skill reload instruction to the preserved todo snapshot 8fdfe04371703e72061dc7cdc74ba52705403722 fix(update): probe gateway loop liveness before drain; bounded escalation for wedged gateways be083358b2d78f6884791fb9ec72f8eda93ccfe7 feat(tui_gateway): INFO 'prompt accepted / turn finished' records on the Desktop/TUI turn path e729055a56b98d2e99cc58f35af57b9b5b45bdd6 test(delegate): regression for #86632 — cron sync fallback must return after child completes ece3bc7d524ca4729fe4920a9c0975071037d7c9 fix(agent): skip the automatic background review inside delegation subagents 0fc2a10d8204a063a392c08427993b236e51d82b fix(cron): stop one-shot CLI `cron run` from orphaning the job; reap dead-owner claims on tick 5b05e51f2e7e7ed310476c02772471fe20b4c00e fmt(js): `npm run fix` on merge (#86876) 0d1828294ad85657ac945bc10186d0e02d33c4d7 fix(desktop): re-target find scope on a keep-alive surface flip (#81726) 041cbb5e48b649ff60478cca6aee135402c64f65 style(desktop): add missing trailing newlines to find-in-page files (#81726) c856c5f6db02be20fe1fb3ab97887723a481b618 fix(desktop): keep find-in-page highlights consistent across React re-renders (#81726) 4e86caa1e2a07fd3895d48285213f87ddd298998 fix(desktop): re-wrap on findNext when stale marks no longer cover all matches (#81778) 0ea734933653587f3659f6fc3f400661635bfe9c fix(desktop): case-insensitive fast-path in find-in-page stepping (#81778) 7ebef79c65ccbf61b4a95c9cbebc0311ead6a7ad fix(desktop): resume sibling traversal after a fully-consumed text node match ab3b7394b19b0420a47a56edeb5a0c71ff576417 fix(desktop): scope Ctrl+F find to the current chat view (#81726) 8711f2c0051646ad17419955f7f1d3cb1661fca7 fix(update): make the self-lock deferral honest — fire only when the swap is at risk (#86735, #86780, #86781) 0d00ebef794f7c1ee47bd5b46a344d9babfa6edc fix(state): bound the state.db repair loop and stop dead-backup accumulation (#86747) ca8a47e276c9d5e1de60f9a58d6811f51779eaf0 fix(desktop): keep find bar out of its results 62d3ef683c5294b876363795e2b02ef786e3701e fix(tests): subprocess-surviving isolation marker closes the #82770 fixture escape c0684e42233b8f8f7d735ed3c8edb47e7305b786 fix(state): make the pytest-launcher match platform-independent f5163bf83b14dec635333ddf3551c16bb6a2496b fix(state): import Set for the routing-cleanup annotation 3f026fe210d764573c796c1172ac4a44f894da80 test(state): assert the live-DB guard against the real platform root 174ce8770d3ef1b7638d80789fbad08d42be98fd fix(state): arm the live-DB guard by process ancestry, not env alone e0c73bfece3bc093b6dc25d2ae7cc8cba68bf4bb Merge pull request #86847 from NousResearch/salvage/72959-titlebar-tool-count 5d3358ecdae526f6be6709092863af8515176441 docs: /save is now a cross-platform session export (json/md/html) d8536709b7d6093de62698b5f0dd3da5bece2e8c fix(desktop): re-measure find-bar offset when the files pane toggles or resizes eaef39df183dc3f1294659278c5ef09648bf2d70 fix(desktop): position find bar clear of the files pane when open 279ec2f75bcf123bebc81ef776bf6265f3b92b58 style(desktop): blank line before statement in open-find-bar release (lint) f5e531ded00ea28898e5a2aef03dcf2dceb9322d fix(desktop): gate the Ctrl/Cmd+F main-process hook to Linux only (#81727) 75f0602301ccdded523d3eaff89b139132527f9b test(desktop): cover the real macOS Cmd+F chord in the main-process handler (#81727) 2d51f6d02250b404bad0f0c588ae0fbfc21f6776 style(desktop): use top-level BrowserWindow type import in find-in-page tests d3193da3b1d212c7a780bc0b871a0966aa63b4f4 fix(desktop): claim Ctrl/Cmd+F in main process so Pop!_OS / GNOME doesn't eat it ca5c04818b49d25ac74cc09a892463c6a3ff43d1 feat: bare /save shows a usage card instead of exporting e5a2c80c0e795ce345bf248e08216c799d8a4d71 fix: harden /save for test doubles, async session-store boundary, snapshot shape pin 26aa12337aae423c7cd484432e3f5bd425d23c95 feat: /save exports the current session as json, md, or html on all platforms edf6d2a0748b0e8177ea188eb1c6ab094bcf08f5 fix(cli): coalesce None title/model in single-session HTML export 23ad35b7fa6b9f06c924a4baa0727f7c8fa98000 feat: Add /export command for session export (Markdown/JSON) to CLI and Gateway 883b57cbd8493f1ca57170e6c9c5f58c1a3a7a25 feat(desktop): route backends by (connection, profile) — registry-scoped pool keys 467ec9208a722db6e7c45b7cbf0ab9272eab2c8f chore: map content@tyfpro.com -> tyfcontent for #85181 salvage d059239aa4a4ad8fbf559c8e1ade77b6d73e7617 fix(desktop): space out find-bar buttons and anchor below titlebar fc8ebff6d8ae228995c762acc20a31261c5e50a0 feat(mcp): unify the desktop MCP suggestion directory into the catalog 001e2b0b85c7f1f07ca2f50be3d7b1900a0897a6 test(desktop): add archiveSelectedSession to keybind harness deps 903250772fc5c0f5abf52599c1a09137019b0cb7 style(desktop): satisfy perfectionist import ordering in find-bar PR files 16a1ad6ef483c51754131e7f50148e5e813a10cf fix(desktop): count the right-sidebar toggle in the controller's titlebar slot too d0ba405ab77c5adbc421753c46b5d716a468ca01 test(desktop): cover the view.findInPage overlay keybind gate a1b24c52f7311c822bd19b14930dbc2bcee07b1c fix(desktop): count the right-sidebar toggle in the titlebar tools width 4e8e991d61e975620c8b94e049fe2e8f159a21ac fix(desktop): find bar positioning, overlay guard, and keybind gate 3f9150e5c4ca23ae7f060c3e4bf6d4bedd859f34 fix(secrets_cli): defer bitwarden backend import to first attribute access 5618f5d5b311cafec067f387b97143b3100b143a fix(env_loader): use 'enabled is True' (explicit) instead of name whitelist 230e5ff04832909dd702d58c939faf47ab250b47 fix(main): revert secrets_cli to upstream, wrap registration in lazy closures 5a76c8a978a14324664c5807b972ad638cbc72d4 fix(update): lazy-import secrets backends + defer registry import — break Windows self-lock loop a85a981107071f022bd44dc4b3c7756957edc8c7 test(lazy-secrets): fix CI compatibility — run from repo root, avoid live-system guard abf4dfc1b859158c1dd20d643926de225be16da4 fix(env_loader): defer secret_sources registry import until a source is enabled 3dc31868732dca5b21dce0f4590ec78319e0ddaf fix(main): lazy-import secrets_cli to prevent cryptography._rust self-lock on Windows ad42ecfc0610bc4a94cd0432636c65220708db69 fix(desktop): stream remote media without renderer credentials 5ed4506f425f5074ba14e7029a03383aebb420fb fix(desktop): FindBar no longer overlaps native window controls f0c222c73dff282784dcf2cd91a14a32035a2ccd fmt(js): `npm run fix` on merge (#86820) eb4f72f91487061b30d42846772ce57297d718c2 test: satisfy new unread props at remaining sibling fixture (session-row Tip test) 7f921871e710db36349622442b96ec5ce6a8103c test: pass onToggleUnread in wheel-overscroll VirtualSessionList fixture (cross-PR prop addition) 0ceb739abc846547e99eeacb658327a1709107e0 style: eslint --fix on salvaged unread-dot files e1dd43bf7b16b181439ca64fa714b1942f435660 chore: map contributor emails b44b99e62ab775d90f921d828f46ba2cda8b6ab5 fix(desktop): integrate the unread read-state layers — focused-session clear acks persistence, mark-all/mark-read ack watermarks, new-turn baseline reset 5cf6122e8709fc07d2e007496ae1d6902002fa8f chore: map contributor email c75d835555b0d197a882f4e4a312ab668fc4483f feat(desktop): mark a session as unread/read with a persisted watermark 71e8c35285cd3868ff365fd792b405ad185a54f6 fix(desktop): clear unread for the whole conversation family, don't re-light read sessions 1abeddacc1e474e4b3171a727058f9a072f3bb3e fix(desktop): clear unread dot on tile open + add mark-as-read actions 26b4315e09b562284dc5da64f14c9a49a28726ed fix(desktop): profile-scope persisted unread and stop cold-boot storage clobber d2c2b0b6d4fae0749c99709844b08f5c7bccc3cf fix(desktop): persist sidebar unread dots across app restarts a5b50437e4593ee11ef7866c8225463aab524ee9 fix(desktop): key the completed-unread dot on the focused session, not the selected one 77be513de1da24610ebe8d1d4848228578c6bdf3 fmt(js): `npm run fix` on merge (#86813) fbe4d73051f72f6ff41d9dc9f6afac5319e81df0 test: type the WebSocket mock to satisfy docker-build tsc strictness 180bd4b5a3654de9a20e1657528326b9163bc789 chore: map salvage contributor emails for attribution audit fef9c537d7f096a9b7b6fa7dfbb8d4fca704aaf5 fix(cli): convert Alt key shortcuts to sequence tuple for prompt_toolkit (#74169) b3447c21299f0d444ef99a12fdee366e0e8b145e test: align submit bindings with multiline default 2ae7884ffa198c4461ff4ebc951b174d61944cc8 fix: make CLI multiline shortcuts work by default 24af6685b02f43fece6c0f2881eb17cee5beb66b fix(tui): word-delete forward and transactional cut 4e6d863d0eb3779968745cc7389f93bd8c4d28ff fix(dashboard): gate shortcut sends on PTY state be250390dbbbec7572f0d8dc0b16a6abdd692cb4 fix(tui): restore copy and cut shortcuts 2108d4bfda61ef6fd8b9be66a2b6daaa11d68621 fix(dashboard): paste on Ctrl+V and word-delete on Ctrl+Backspace/Delete c21dc294b29f4a672044ee896f9414b5b511c0f0 chore(contributors): map salvaged author emails 77fcc2ea31e074cbdedf23f31e682f2b76c188e2 feat(display): honor display.timestamps across desktop transcript and TUI 4a663dd6933e990c903dd06893c774eae0f9ffc4 fix(desktop): sort imports to satisfy perfectionist lint (#84508) 1dbeb47497c9eb90fcbbc40aabd5d8a970fe927f fix(desktop): timestamp every desktop.log / RECENT LOGS line c9d0cbaba3ab75a6e2b6a9616b481324e74b581a fix(desktop): show exact timestamps in tooltips (#70450) 5f2a15a669d464137cd8d272d57f618cbe9cbd78 fix(desktop): separate system timestamp text a896322b467b28782105eb661acdb7a04414902d feat(desktop): show detailed transcript timestamps 6a375a24a5bf49ade3cf6c80608df5fefac04b51 fix(gateway): timestamp shared stderr output 1db92735847b4f216938e5498411781c6c58a274 fix(gateway): timestamp launchd error log lines 7f7aefe5cb13856c4027368efaa4edbccec72342 fix: restore complete message timestamp coverage 03636ab33f6bc53f2bbe0ceda8c9bce03277fe66 test: add message_metadata unit tests 79a41c1d321c3abd241e7c61bfa59e5a96e5680d fix: convert remaining messages.append() calls to append_message() 261ed6e8557ded1e431ff80957a91d7f769dd266 fix: stamp timestamps in model_metadata, turn_finalizer d61558793e85afc23892c758a8e3f587c6ee8471 fix: stamp user message timestamps in turn_context ca7715763931149258e54da84dc064a625dec665 fix: create message_metadata module and update chat_completion_helpers aaaea589f69fe44153161e4221234b3f46988170 test+style: align session.new binding pin with #76185 and eslint --fix 100098ee2dbb0b2ca1250bacf3ed40b8e1ee86fc chore: map salvage contributor emails for attribution audit a9361cfaaefd4a14783f05ba72e6e9858c3e8b59 fix(desktop): add zh locale strings for the Disable F12 toggle dacb99d5b85dd5e1dbc3862ac9cea312c934ae81 fix(desktop): keep the deliberate mod+N chord for session.new 3b5d5e48d12d89e40460356911b75f99a293304d fix: address review feedback on Disable F12 DevTools PR d4fa3f7352770aee79453a70bc16fa6e9362774b feat(desktop): add option to disable F12 DevTools shortcut 89f9375bc0dd5dfe8d549a4ffe101f2344892c55 feat(desktop): archive the current session via hotkey and ⌥+⇧-click 34f484542eb63ab160f6b662048fa366a00e4c73 fix(desktop): show platform Kanban modifier f61fb52f9464a07791d5ba6c2bcd481742009b12 fix(desktop): show platform layout modifier a590321de24a7eece657298805ea776ed3b18761 fix(desktop): show platform commit shortcut 245efdaaa3fb49b25638f6b67b8eea041c8ba251 fix(desktop): dispose the HUD snap shortcut on native window close 101dfd782d552d0bce9895215b83dda08ecd2b27 Add PageUp and PageDown keybind support 13acf7759e3bbbd04329627ae525af22fb1a5b25 fix(desktop): remove session.new keybind hijacking typed N keys 1c9de87ffbbe31cde055b04e0f97f1fda6a6578d fix: drop duplicate composingRef declaration from rebase weave 32efae941f5c52bbb5ef2b9b88d5746f306d367e chore: map contributor emails for salvaged commits 89df391580be7646bebec9f326a5de9e06335733 fix(desktop): keybinds skip IME composition keys; pin draft survival across Settings navigation d0642e61e52e5d47b7127756d3607a60ec9cb62c fix(desktop): preserve legacy attachment replacements e2a2fba4aa9cc98cf5297235df530da9740dcfc2 fix(desktop): preserve in-flight attachment replacements 462e7d8e6b2cc952cfde866bf702e4c5de5060a1 fix(desktop): preserve tile attachment ownership 193c199b23b5da27439c5ab65c6764d8bfd06992 fix(desktop): make image attachment updates occurrence-safe 7d5e9757eccd5047bc83385306d1fc6fbeca8ca3 fix(desktop): preserve image preview ownership across drafts 6dfe63e1e251a917f45cf73f3ad6b783b53eafc5 fix(desktop): preserve image attachment occurrence ownership 5e09b4008b14c35bdc56bca2aefefe50681a47ab fix(desktop): serialize composer image previews d345f0831f0678401292eeef8b2479a45e985271 fix(desktop): bound multi-image thumbnail raster cost 485e1e8f69aeb35184d4bf46c9b7abcd2230d341 fix(desktop): keep full-res previewUrl separate from downscaled thumbnail 24fc613318af2378d3666088d16261b8607f8e03 fix(desktop): downscale large images in composer preview to prevent UI freeze 0d447712a0bd5f16e9be72bd1c336a1cd678500f fix(desktop): keep composer stable across compression 224530211e9f30e312de49bca3afadad2136b033 fix(desktop): let composer status titles use row width 47970a9e4cbd186f4cebde2c252b6adff9434ecb fix(desktop): clear edit-composer submitting latch after 200ms cooldown 652ae4877a71b9879386466f193d632e143e2cce fix(desktop): let the edit composer scroll long prompts 49fbca18802d8bcc9feec889d8e8fea8cbf49907 fix(desktop): prevent accidental composer popout 354abd7c578d6a5aedbb4e62d8d1c20417b0aec3 fix(desktop): keep empty composer from collapsing 2a82c6ffbc442d117a5f061fcc60102f84bbda91 style(desktop): align empty-state width with full chat column 006a4a8873d43b8fe99c2fe071f54b0a8ea71d2a fix(desktop): restore full-width chat composer column f2a30fa400235c38a85c1da126357180d4e9e100 test: derive lost-and-found synthetic width from the live schema af585de28e331fb12c31aa43e2361c19052e430a fmt(js): `npm run fix` on merge (#86801) 0930133dbf73e5da5406b0c9c812031ffdea77d2 chore: map contributor email for PaulBlackSwan 03c85a1c7ce56a7f0779fd186e2662135a43ba5e test(desktop): port gateway-file-download tests to vitest electron project 27b003996a04a926d3c490860bf2f94f4948c5b8 fix(desktop): stream native gateway downloads + 404 data-url fallback d5a865882a8e5d160d34107dfdf66e0881876d09 fix(desktop): save remote gateway files natively 0bc7070cf8f49eab6a2ab4fd6fbae651962f340a fix(desktop): gate image copy on decoded contents 3c570c61ff9fbec63e1c5647de285b013be1e1bf fix(desktop): preserve copy image for large remote media aa27edd971a6c512696765fcc132aa6b4b09b73c chore(contributors): map jackoconner55@icloud.com 46fe44fa8d28ec1c3c505c958b457e68ff6868bc test(cli): stub portable-MCP lookup in completer read test; bound resolve_toolset memo 2f54ad4023236f299ae753e673e0e172423d5f4e perf(cli): skip launcher-side plugin discovery for TUI handoff b9f7525a1bd5617b3ecac4c2e3c2adb356929925 test(agent): pin measured-work regression for display-flag config cache e25cafc83e937b60c760470c0b02a82903b8d4ee perf(agent): cache per-turn display-flag config reads 7b45d1d0492084270305246b4731127bfedbfb66 perf(toolsets): memoise resolve_toolset keyed on registry generation 2a5093eefffafafe45df2430e7efcf9ca9c94f9a docs(auth): note get_default_hermes_root in the global-store memo docstring 47400fe2af5894830ffafcf0e83a1755151b8eff test: make memo pins pre-fix-safe (raising=False resets) 4bd746c6e9d263b40022c73434b34d7f9c8d95ed perf(cli): memoise default-hermes-root resolution and global auth-store read 473490a2e97a863d1a517d38f0be2857b351d0be perf(cli): stop per-keystroke config re-reads in slash completers ee1731b13c9ca40fc905177812bca74ede0510d5 perf(cli): re-export decomposed command modules lazily, ~60ms off every CLI start 8a22220ca850cdc4443e10d97ca6966a7891849d chore: map contributor email (audit_pr_attribution) 07b9090259b889ce95068c419534ca1fae62a85e fix(desktop): preserve complete history when branching b066f2b37319ca17de1ba99d364ce933cb1fd2eb fix(history): isolate branch transcripts from parent updates 101740ed36ae6fa3a44149860f61f4e63a9dd693 chore: map contributor email (audit_pr_attribution) 73e9b1a12448db9834de6ba876cf56ea44ece55b docs(desktop): align getGateway docstring with $gateway atom subscription 20e5d78f546c456e48d2bdd597c8fb1cb56f47a7 fix(desktop): recover failed gateway catalogs 1ef7a0bddacb7f3b53997a72b434de2021a9f9bb fix(desktop): recover empty model catalogs a654c524190cf7bc4cf78ec12c0797b0868162b8 chore: map contributor email (audit_pr_attribution) 6da30f72a2866f8928ae346fba6661214f1d19f0 fix(tui_gateway): fall back to session id when session_key is NULL in truncation persist ddf6456794ad68219e269d47a3eb2809d39e34bc test: stub virtualizer.measure in virtual-session-list mock (density invalidation call) 29c28136fe8e6359188849a49b1bbdbffaaabb64 style(desktop): prettier/eslint pass on salvaged files 865e4e71787f8d02e58b87d70fe4920bce92555b fix(desktop): default session list density to compact 8ea53d7ceab8846691e2e71f2979f6174ba66a02 chore: map contributor emails for salvage attribution a33ac1e95e5f65c7028638cdf9bc0a8754bdf06a feat(desktop): add session list density modes 505f289d37dc1ce42d64a22a8e40d85c0154020d feat(web): add collapse toggle for the chat side panel c6ec8a95e6ed95963ed618856d5ec827ba04aeb7 test(desktop): cover docked zone chevron direction ac0d0f889750e31e8344f64f55f69ac8e1f767fe fix(desktop): flip zone collapse chevron to action direction 10bf145e303e4ad8e49f743b52cb9925f0144331 feat(desktop): collapse thinking by default 2b0b4a219195e9203e83efb9f1b87cdaabf45f76 feat(tui): auto-collapse reasoning blocks only when the reasoning phase ends b587681afcd80cc859aeef71cf1c5c39f43244af fix: keep historical thinking collapsed in tui 7f84de277547aba2f059d64d86aff23bbe5e3313 chore(contributors): map lepetitprince716@gmail.com -> lepetitprince716-prog 3806f8fc9a9bc5c9726ec05d14544a792d7965ef fix(session-search): forward detail through the public session_search wrapper 7e439dbb1bc7ad6b56dea0492ba4437d7c9d2eb6 perf: parallelize provider model-list fetches in model picker 2162d583b118b06d12046ff83ada9c34a4771c34 perf(run-agent): reuse the Anthropic request-local client instead of rebuilding it per call 4415f917b47471929b5675ef32b8c387d7001140 test(session-search): lock positional parameter prefix 888807d55c0ab15ada640490ce94531186fe6cc4 docs(sessions): clarify actual-message retrieval 163d7af310be38a6b2d8549d54f889bcdcf9ed44 fix(session-search): forward detail through agent paths 6e1bdc0a186495635ddaab1c421cea033c9e4fcf perf(session-search): adapt discovery result hydration ee9ec6164ced44838282017a3b3d3b8fe841b148 perf(state): stop selecting full message content in session search 29ce4820478509c9e04f94ce3de5eae02be185a0 style: eslint --fix import ordering in salvaged IME tests daa3f66d082f0dc05f32580df138ef19672a2945 chore: map contributor emails for IME TUI salvage 00516e6e8edab6aa2bb32d8cac68edfbbd4181e9 test(dashboard): cover delayed IME fallback after unrelated input 0d40955fd1f818daa716a2459ed1ff0af83ee2ae fix(dashboard): handle chunked IME composition input 434f1e954c98671b20dffb83b00fac069bd9fb71 fix(dashboard): retain composition after unrelated input a428531ef653b439ad40d5e33949c1586fa519c7 fix(dashboard): preserve consecutive IME composition input 874ae74a10fa03f3ca2d489adba0e5108d5135e0 fix(dashboard): keep mouse input out of IME fallback 3d9fdb2e2b07d5c637cb85a8d32cfe85a59ad5b7 fix(dashboard): avoid duplicate IME fallback input c066b5a1d377d874630979265d2fb319e81280ad test(dashboard): cover IME fallback lifecycle 0924e33369074fb2eab2fb28d0bb3db28d7f2800 fix(dashboard): defer IME fallback until xterm input settles 6ece2da7389db8735a24035b09ba87b498530051 fix(dashboard): forward committed dead-key input to PTY 278c6ebcb7288b3c65dbaf320f77470532fe3e9f test(dashboard): reproduce dropped dead-key composition input 2af4da45ec24d849c1c707eacbc3bd61891c469c fix(dashboard): prevent React from dropping first keystroke during IME composition e2f7850ec389518c3762932ec74743cc4c3ffde8 fix(tui): tighten IME test per teknium1 review (#55415) 5dec501c6e2fdf6fd9cb2a7322b351854c4382f8 fix(tui): stop Vietnamese Telex IME from dropping characters 834a9fc89d498f9c45d2ca9c48240ffcda75af76 fix(tui): preserve IME text before return submit 084fca9dbffd8bca5c6b3a359208fd2b1aeccf4a fix(tui): clear input after Korean IME submit 15e7c563b33fdbf830991c49158b8f1743a6ab47 style: eslint --fix on salvaged IME test (curly + padding rules) 27a22b8de7077f85b7c3d19aa96f1a23669cf158 chore: map contributor emails for IME salvage aa9593946921c1069c169ea21fe67f74a89e2c31 test(desktop): cover IME composition guards in keybind combo resolution 587788405a7e8e957a69dc565b277fc244e071b4 fix(desktop): extend stale-flag self-heal and keyCode 229 guard to the edit composer 9f2e6d05ab2a345cfc350998c9ea0a236fe6a6c8 fix(desktop): ignore IME composition keydowns in keybind combo resolution 39e760779469e18e366ea346864559412f57d954 fix(desktop): recover from a stale IME composition flag that wedged the composer 202e5b813af4fac7661716826bb243773d4f6707 fix(desktop): block Enter keyCode 229 after IME compositionend 3d51c4099725f0357807247799184b6ff4543353 fix(desktop): prevent IME submit in inline edit composer 20beee774cc471aba8d6277df93cf202c27a8740 fix(desktop): prevent Enter from submitting during IME composition 6fb6123f3bc40a074153aa4e9053225d7eed25c3 test: replace any-casts with typed globalThis narrowing in plugin SDK test 3c2daf5ae730d1c1df469b6d4c6005b215317bf2 i18n(web): add kanban bulk-confirm keys to all locales (English fallback) eaaecbcc3064770265f1955123ad8a525f6b364e chore: update contributor attribution map 1025cb0e663f37bcaf6a71f147c79be7bf6aed3f fix(desktop): stop deleted sessions resurrecting through racing list fetches 4c24629bc91e09ec8ed3f87d5e6019d11d017d48 fix(console): skip the checkpoints prune confirmation the console already took e6708af1f23821e7b9c962d94745b362bfb343d8 feat(desktop): confirm before deleting a session 8e35ff0a628e38dbfab0483c5e0c2cdd60da8baa fix(desktop): confirm before clearing the entire Enabled Toolsets list (#73319) 7d34d7d8d19249091466d9218f0adce1b71563dd docs(tui): clarify destructive confirm controls 77f35add0cc4bcbc20f67cbf937b79c8a8dfa4a7 fix(tui): honor destructive slash confirmation config 08f32a63351f32aab5882f6a8d81a570beceb113 fix(kanban): replace native browser dialogs with in-app ConfirmDialog 7448e7a5065daf17f33fb2c21349b1cb2ed69d0d feat(plugins): expose Dialog/ConfirmDialog/Toast/useToast/useConfirmDelete on plugin SDK da68ecf4b3c5621865f9bf69a3da43e66015f8fb design(kanban): add side-by-side dialog prototype (4 variants) 6b39ae490d7bf111f319c6ab181ecf32a5295480 fix(desktop): let sidebar wheel scrolling chain past the virtualized list f080bc3db15914d72a822634afd9818f6f0a539d fix(tui): steady scrollbar after transcript shrink d16326bb2506e415c1752e0d43beaae01edfe3a2 test: align lost-and-found schema pins with git_metadata_generation column e0e4d3ab9d145d9c36370137fd6147fa0c892b77 chore(contributors): map salvage-branch contributor emails cab6eb78f9fbddd913084103897b0e960138972c test(projects): widen lane-id derivation regression coverage f378a8fb3b71c5e8375ffa19a3d757c429a9452c fix(projects): dedup project_create by primary_path (#75820) e89532d97eb2c969a97766af0342e17f04631fbe fix(desktop): order async session git metadata db1d8983e50003899ea64253ed6985068cb2f6d6 fix(desktop): no-op branch switch on non-repo project lanes d40dda7db6c5a2e244719b989024d71e27306e46 fix(desktop): preserve lane session recency order 3defb25a428d2563d2a67b2b65d8ed9c9cd1ce71 fix(desktop): evict stale lane entry when overlay moves session to worktree 0fd223d1bd4e9322c11ad57c6bbe4dccd92fbf5a fix(desktop): stop dual main lanes for non-git project workspaces f7de2ca4169fa48f024c5f4ddee7edb5fe44d0ee fix(desktop): order project-tree lanes by recency in the overview, not alphabetically 0d07fe63f9c2d4b1728601deb9627fffd4f21ceb fix(projects): use _branch_lane_id for non-git folders to prevent duplicate lanes (#53329) 2fecf392a28d4d91d77cd34739072d70b74a823b chore: map contributor email for Hangzian 94ce8396e84ccdaa96d2a85d1fc2ced4bc2e0c61 fix(sessions): release active-session leases against their acquisition registry aba493427430d41c73dbd46045a5a9dd4e8c92b3 fix(agent): omit unsupported metadata on Relay scope.pop b9672ea24e9b984b29d46848d23a946f4dd73e04 fix(pets): remove the non-PNG base draft after hardening 7de5a6590626ffa1b42d15bbc5cddc5a6c0c63e4 fix(pets): delete row strips after extracting their frames c99a45b28eb392f9c9a22b7072cc91babd035d94 fix(browser): reap leaked agent-browser daemons whose owner is still alive 3d73821e9de082a043f40c9357ea0e7c12807f22 fix(agent): stop thread output descriptor leaks aa8e92f516e3225e008bccbdf048449dc5003513 test: pin document.hasFocus in status timer test (useViewedInterval gating) edd73daaf441b9cf54089fc06b137e2cb720ae3f test(kanban): regression for idle-board WS disconnect detection (#77833) f535a4f284017ca1fb3a27d404e28bd51b435e31 test(desktop): pin document.hasFocus in background-sync backstop tests 106207c7fbc6aac353eb852487c040931d032a37 chore: map contributor emails for attribution audit 67a1c1ed1adc97ff162b059d6e7e4c4db5b750a0 fix(dashboard): use a fixed sidebar cache TTL (no HERMES_* env var for non-secret config) bee0d45ddf1beb9adc7dcf11a76f4b65731f166b perf(desktop): pause background UI work while unfocused 5bceb3e84bd32e4944788cda25c3c8fdd867d0d9 fix(dashboard): add idle back-off to PTY pump loop (#42627) 6d0d748aa032f6f1a010edef270fa1155d4892e3 chore: add contributor email mapping 44665783a936d173aba639ecd74483e0a6a016ce fix(kanban): detect WS client disconnect on idle board, prevent zombie poll tasks f0cfe5a56f83ea8cb2c9f6d78350c5fe4efc7b0d perf(dashboard): bound multi-profile sidebar polling 868c400e54f9ddbaf4d4516f2ebe0b09bfa826c2 fix(tui): stop disabled pet cell polling 1c23c2a50b6d3c099c81b374355e75a23740f78a chore: map contributor email for attribution audit 4f293746626531d95dcdcae93dcc815c1571c656 fix(gateway): send-once spritesheet semantics for pet.info (#54730) 8052d5dd243b98d8d978f7f9b770837a810f0921 test(pets): lock the quoted-false behavior on the CLI surfaces ce02f0ab8a30e2d701af36a0f978580599d58947 fix(pets): cover the pets CLI (doctor, has-active, /pet toggle) too 343068eb10c24c7bff2a1f1e6301cac0fc6ed587 fix(petdex): cover the CLI pet pane and status-line signature too 9e8828999d5ee1730c31c91ede43f57cbfcb2867 fix(petdex): quoted 'false' now disables display.pet.enabled everywhere 28d2de18451c788416e3837804d5d605f51cffbe fix(desktop): surface isolated tool failures in pet state 5eb1d2b0aa9426d3db2d7a8e8ab4a820e59f7da2 fix(desktop): restore pet.info backstop after live-sync regression d474ba5615b071fe5aa5b780ae27ccc8f5061d92 test(desktop): cover bicubic smoothing in pet sprite fd0872214bb198485794e8fae43979e2581cb0fa fix(desktop): smooth-scale pet sprite frames 34e05c32ec00bc62502ae7ff0dbf02c2c02b0093 fix(desktop): render pet sprite at devicePixelRatio for sharp HiDPI output 18bac64044d3cff99228adb8bd56cf23ea2fe7ce chore: map contributor email for icemeng bceac696aedb45ca356aa08c15401f95f07b2244 fix(desktop): artifacts page timestamps render 1970 and local images fail 021950ac8115eec305a11040229a5dd57f83c4d1 fix(desktop): stop artifact over-indexing 96d6db1993d6a0ade40835c961e1ceff36b39a58 fix(artifacts): convert DB timestamps from seconds to ms for Date() 647949332bb499cae25ab8393637ad483e545ca2 docs(desktop): document Settings → Connections (multi-connection registry) fbaea9bddc72c705527f3532fedda88d8e3b52a2 feat(sessions): generic 'hidden' session flag (sidebar-hide, still resumable) (#86797) d2672a349b6e783868e681735b45cad181cb05a8 feat(gateway): optional profile param on cron.manage RPC (#86796) 688abc585f4ed8ba7b19f6fe0629821857fed7ce test(vision): assert no max_tokens cap in browser and video aux kwargs ec470d9db212c9b19cdf2b31f59a1adc2fbbee03 test(vision): assert vision aux calls carry no max_tokens cap dcc2f3de1d3a11b21289d50343bc404cddc55635 fix(vision): stop capping aux vision output with hardcoded max_tokens ce996d40577c242dc04cc6d66e827dcdf8daa569 feat(delegation): raise max_concurrent_children default 3 -> 10 (+migration) (#86745) 8b58f9f68f01a96f101366b6b9a98dbd341db301 test(bedrock): pin stream-path cap omission; document truthiness edge 5ef52273cda8f34fbea589a8dfa61345fd5c6bd1 fix(bedrock): let aux calls omit the Converse maxTokens cap 30c469b15313711d47c45e7175d6ef5c8437f1ed fix(gateway): spare pidfile-less Scheduled-Task gateways from the orphan reaper on Windows (#83683) 0807673e1f470a56a77cbd1bbd8f058ff63f2ea6 fmt(js): `npm run fix` on merge (#86751) 0904f50e3e5c43b6fef5f192a6e8dbe545b7611f fix(desktop): address connections-registry review findings b54b0521dc284523a894444e6b6aabf0ebd6497b feat(desktop): multi-connection registry — named agent sources (schema v2 + IPC + Settings UI) e3fab0437ee50ebe511cec57b9ac36f0c2803268 refactor(cache): never-raising scope resolver shared by both call sites 96cdf19a0b3f2bae5f5e204012ee698a335bc415 refactor(cache): fold self-review findings on the rotation-scope fix cee244622236d97ea90012c7134d456455827553 fix(cache): keep prompt_cache_key warm across compression session rotation 471c687c2bd3f13e9b69f3ebb39a6b8d1e75e2ca test(managed_uv): cover explicit-patch fallback on the next minor line; dedupe retried versions 2bccd6ad08be88958633fe2f2492ec8a131f7384 fix(managed_uv): fall forward to next Python minor when current line has no fixed SQLite build 62014d8dd35cf24f319207eb5a55807687c71368 fix(guard): steer live-checkout block message to disk-backed scratch clones 3af56c22036c501dd0056b59ab1a8b940f967f37 fix(install.ps1): surface uv installer errors and add GitHub + existing-uv fallbacks (#69216) 5599dc048fa0d0588d644050f352fa11d8d80f10 chore: map hbasheer@student.42abudhabi.ae -> hxwvaa for contributor attribution d1df111ccdc61f73039cc134d9910617c1edbb43 fix(update): restore Hermes Tools dependencies b67f2021842e3f39f814e294b74e55daa60e514c fix(update): honor lazy install opt-out during restore 979a20052ff55fc0038cbb7bb394e35aaff0204d fix(update): preserve activated extras across runtime rebuilds 2a9f57c505f47b6b5cf6373965375a43d2d191a8 fix(desktop): suppress skill suggestion pill when the session already touched the skill d57be843ec477854c418963c5861de04741e25fb test(managed_uv): cover explicit-patch fallback on the next minor line; dedupe retried versions b9e03b4d55679be4a92acf0c9847ae28d5f79de3 fix(desktop): give chat images native right-click and proper save filenames 4aa9f738cedbe8a69fbd08595d0fb67f812ce2d3 fix(update): rebuild Desktop after release artifact loss fa72a1edf8d243f9f210f0ed41ab888e64c82843 fix(kanban): re-create the schema when a cached DB path loses it (#83445) d1d3714d8ea08f9519166ca482193a0b002ef158 fix(managed_uv): fall forward to next Python minor when current line has no fixed SQLite build 4b0c1031dba37cd6d3dba402ab91d20b720e48ab fix(desktop-update): wait for rebuilt executable before relaunch 0cbc4ce83bc75b82d9decb40ec5e4006c1c3cff3 fix(streaming): gate the interrupt worker join on live Relay managed execution 0b988b01185fbe9eaf2072541b5e0c8f5b1f12e1 fix(relay): keep orphan drain bounded by the scope-op timeout 3537ef9d015e8371fb5f128815d2725da36fbf71 fix(streaming): widen #81521 interrupt join to sibling paths and use version-correct Relay top accessor 81c4f3a143fe3feb80fa43cbdb8a3ea767d3baf6 test(streaming): cover interrupt join, orphan drain, and EIO paint freeze 0c9d8ab0ceb31df5af55b6e63da768519a583689 fix(streaming): join stream worker and drain Relay scopes on interrupt b32aa0be8f49d993507ccb90ed442127a8963fdd docs: document provides_tools client-tool registration for platform plugins 4b7b2b00499a3bb24150c35b688293f4ddd0679f fix: widen base-URL hostname identity class to remaining substring sites 198e2f27467bd6f0b41978c322af6bad21f1cd28 fix(routing): use hostname match for azure.com endpoint detection (#74312) 2d9f116351ba35cb90ded82e6520d5c83402269a fix(agent): anchor ZAI/Kimi base_url host matching to avoid substring false positives 42a1db4c643fea85a5921d229939b6a689a4b24d fix(update): use canonical venv_bin_dir in _install_repair (no open-coded Scripts/bin) 0178aca4a414f034eea01683255034f581015ab7 chore: map Halldrix contributor email cd34661e9ccfd9175651d42bb7efe1798a4db4bf test(update): mock gateway discovery now that the restart phase is surfaced 19cff893000a6728ce525bd339b118d908f34968 fix(update): complete pending core install before any native import (self-lock loop fix) c6a71294b6b16e2e0ebd9559deae912e6d91074e fix(update): detect updater self-lock on Windows + repair venvs whose base interpreter is uv-managed 49d72a02f6fa86187f4158ee0de00ea014dd6615 fix(update): verify Windows gateway cold-start survives before reporting success 517151ee4aba08827792e735e5d7fc796c3f7852 fix(install): fail closed when a stopped gateway leaves an empty survivor probe 95018b6bba49a3c88e16a8144fd0a064f21278b2 fix(install): surface aborted gateway restart during hermes update bdfdd4392f4aa09465cdb518595fa606523c9847 fix(update): gate 'Code updated!' on HEAD actually moving (#79678) ac2e4207c11b0c99dd9fe693373412a4457c21f5 fix(desktop): confirm detached updater spawn before quitting for hand-off (#66753) b58fa89cd74340936d362926c81bd68b9b30b35c refactor: centralize dict-valued model.default coercion via shared helper 49e30440a2dea22dc9696f3db841f5ff210b543f chore: map contributor emails for mariobgsp (PR #83902 salvage) be708ff1b959d639a9f8e3d6edfb86042c009305 fix: normalize managed config overlay before merge in load_config 998329a621e9fec9e3373ebda71b0e6b3962080f fix: flatten dict-valued model.default at config load boundary 86054eff62aac03998e790614bb83a3d8c5f7a78 fix: keep nested model.default provider paired through HermesCLI cb4daf23f36367186d59f29dc06ea41390bb0329 fix: coerce dict-valued model/default config back to string across resolution paths aa5a960675d95add389f8385f2297cb22e550f7a fix(installer): hold the venv rollback source through dependency validation (#83149) 737d6339b7577d0a55d87521a348042ecc86f6b9 test(install): lock no in-place venv gut on rename failure 18b442cdeb54737e5432e1b069a0bd3b7206acdc fix(install): abort Windows venv recreate when rename-aside fails d82dcf5da070a9c8e0195d27066e22c7bb1705d4 docs(update): document transactional Windows venv recovery (#83149) be1e0c89c98c8cf0ed592aed85a070343cc4aa12 test(installer): align Windows venv process guard with transactional parking (#83149) 11268e7e6a254952a180f445c54f67a88c4da0fa fix(installer): make Windows venv recreation transactional (#83149) 6dab0318bf68348383d94ec713178f85bfab78c1 test(installer): reproduce destructive venv fallback (#83149) 059e3464228d15d1f548696305e14b5b05685a2e fix(gateway): abort-aware parallel startup connects (restart race parity) e6daa7aba56019ddd766f4dcaf83a2ea7c0bf58c chore: contributor mapping f8d75db026bfba798e271b1be1c4d64bbfe3d40c test(gateway): accept keyword args in _connect_adapter_with_timeout mocks c22815fcaad6043a95fd879482ed65ff367e1e8a fix(gateway): cap Telegram cold-start connect so startup reaches running fast (#85993) 42a4e862394d1db8b525e0f3dbbdf57a270e2698 fix(test): genuinely verify parallel startup connects (#83791) d86c67dc7e97f619a56c025e974cf4cbabcd39eb fix(gateway): connect messaging platforms in parallel at startup (#83791) 366fd70f98e42ae4fa2afdb3b05e306b3bddaa55 fix(gateway): registered_names() honors profile scope like is_registered() 25857671f739913d40ea303a1ac1f77bc948a0a7 chore: map contributor email for attribution audit 7a6b8917f758c4c78624c06d5bd663e25e12092a fix(tools): recognize discovered plugin platforms 722430185617dd2a2ae138c4e6ff3200eb683e34 fix(toolsets): admit explicitly-configured plugin toolset keys in _get_platform_tools (#81163) e42db348c927654c0a3a4e48b0510e85c697d47f fix(plugins): register deferred platform client tools at discovery (#78050) 7a390f7c43a5a8b4b0683fe43b941c12935d4d45 fix: __del__ delegates to close() for full cleanup 1db4801063b98a12e5b81c7a3f61215c42c7ce2a fix: close leaked SessionDB connections on exception paths (#83226) ce658e82ff2a62ac1601c32953e8e82a80335e1f fix(session-search): narrow lineage escape to reset/compression; trust SQL child classifier 2b5a3fb8ac922f51992162cac1808ff3a653fe58 test(cron): expect tick to contain create_execution failure per-job 0ea79484d289a78039eee8826da9270c234866fc chore: map contributor emails for cron salvage 2d81236f7f079c090244ee560aec8620da33f09c fix(cli): report background-dispatch cron runs without false 'failed' (#83340) 5733ec097bfbb87e36e9ee83a01ecb6679ee691f test(cron): adapt guard-leak regression to owner-fenced dispatch on main 569b7a34b15aba978ffd0c1756e12c42c7d29579 fix(cron): bound post-run cleanup a5bb1bcde384238f1e8af945f1b72bad988ba6e7 fix(cron): make transient-DNS classification platform-safe c2a1179a34bee8b1a5a3e463b1f83714b4c337cc fix(cron): fall back on transient DNS during provider resolve db696c798a6e8c97798d4c07a0cd695d993500dc test(tests): cover cron fallback delivery idempotency and interrupt skip 4668750fadb969d3120fda867132ae253bcc68da fix(cron): deliver alerts for escaped run failures ec1aa8977c7e5afda74a3ebdda855aa2e72d2f20 [verified] fix: clear running-job lock when execution creation fails f57209bc9fdd66260133859a6cdbcf9336851146 fix(agent): carry the ambiguity of Anthropic's 'out of extra usage' 400 through classification, cooldown, and terminal surfaces 6fbbe18be8e335b25b185f7707be8159e4ac4787 fix(agent): reword SKILLS_GUIDANCE trigger and stop mislabelling its 400 as billing 24573b396be37ca14de05a38b53c06c8a273ea71 refactor: bind gateway anti-growth guard to locals, trim overlong comment 3bb83a9a5187a9350b15856a59c20dc39e680da6 chore: map contributor email for salvage ffaa63f887b12456133271a01c40413b1add1ba8 fix(compressor): never commit a compression that grows the transcript (in-place path) e7418f1621b6075729bc1c1923fdd8afad520306 fix(gateway): never persist a hygiene compression that grows the transcript bc36d7d6c84f60e18642572c063ab6047eb6e053 fix(deps): exempt no-upload-date and exact-pinned packages from exclude-newer bricking cf8b505531339a20d385bd963107887bee79621d fix(desktop-update): make posix hand-off survive Electron quit teardown (macOS) 9b3823d08b483aa308ee1b4db3d792f72a9321c5 fix(install): provision Node 26 so managed npm satisfies engines 73b35b8b2baf053bc1b42a92049e627853ada33f test(backup): assert an imported member cannot keep a setuid target's bits 66356fe24b8ab87c488b8d5649417b3949d0b43b fix(backup): drop setuid/setgid from the mode restored onto imported files 60f86662e3c80b359904f75c1cdb421cbac1f4c5 docs(backup): note that atomic_replace's cross-device fallback still truncates 1c3c1f4d71a004aad69666e048618e41cd7fe41a fix(backup): preserve owner on atomic import writes and close the 0600 transit window e88c9f0ef29c5cc59ddfdbf94633009752c48793 fix(backup): restore import members atomically so a failed import can't erase config 5ecad87d1eb3ef5fc774bc3f1f1c94c83ec26b3d fix(cron): report ownerless interrupted fires so their notices still send baf70348509a6e02898f4f71e64939fcafb78907 fix(gateway): deliver interrupted-cron notices before adapters disconnect 4b06d9e9b10305b7f6c09596884f31b4b392ad56 fix(gateway): keep the cron drain floor compatible with shutdown test doubles 45bb486b26b4c6103d8c436839176e1411431f4f fix(gateway): give in-flight cron work its own drain floor 1f6f86119f0104686f49370fd564c3bf59366017 fix(cli): stop hermes update from respawning orphan serve --port 0 (#78821) 69d1843512a3f6d4c9b95feb526b2b3c76e65846 fix(packaging): ship bundled plugin manifests 169ff2db4fc98c3534fa84583e2c470934a229fb chore: add contributor email mapping for arccat-114 0dba3316b2987f2ba8a3dad879a457d41cdf985b fix(gateway): generalize supervised-gateway exemption in orphan reaper to all platforms 102369c5f6ffe2b3eb7d7e27d652d1e8377d734e fix(gateway): spare Scheduled-Task-supervised gateway from orphan reaper on Windows ac9b058ef4d32d71148c6e56aa527f337603163e fix(gateway): exclude service-managed PIDs from orphan reaping 547043a4d89faead2f6c8c43a0f9a321e2d7fe80 fix(telegram): honor fallback disable during connect dac3c44afc1c0e83e769e4d6ea4bd71815cdae3b test: fix salvage test imports; drop WAL worker-thread test superseded by read pool 38709ae6f26ff783d53dda8f39cf1b461f71c98d fix(cron): close leaked SessionDB connection when init outlives the timeout-abandoned worker (#72782) 39e480c051ed1865d908dd6a7bcde7a8ddbcce2a fix(state): close leaked SessionDB connections on exception paths (#83226) 0d91ab88899df8120d1f3693430039a30d4c6ae4 fix: close leaked SessionDB connections on /insights and sessions-repair exception paths (#83226) 8dc5608a7818ee4aabeaafc10b79d9652df27cf1 fix(compression): adopt live continuation tip at flush across multi-hop chains 70704b962ffade3c173b9b2a7755287dfb1204fe fix(delegate): child's dedicated SessionDB must follow the parent's db_path eef43e31608c45cc2162ebde24c97e873cdef056 fix(delegate): close the dedicated SessionDB if child construction fails; test degradation 65e005d0e73ce00dd6337064c226d2bc5f0e7d33 fix(delegate): subagents get a dedicated SessionDB, not the parent's (#81267) 480342232a1d6871d1a213cb121c8f7fb782f160 fix(gateway): close leaked poller sockets in weixin/email adapters (#79889) 49bea9ecbd965791d84a5038bd00b85b855400f3 fix(desktop): resolve react/react-dom from one origin (#84018) 453e6d8b950aba02f3ece662b1d89bcbc1a499b9 fix(moa): preserve facade across client rebuilds 8369170feafa66b4c3e883d5158ae6ef30cd587c fix(agent): only strip _moa_prepared_request when the live client is not the MoA facade b2113202bee8051a1af17618caf5a07903400b1f chore: map contributor email for x1051445024 6bf3d39499507e41ff1f827e4563a2a508750fee fix(agent): strip _moa_prepared_request before dispatching to native client ab879a1e22183ca29e456b71a03b626fe427afd6 fix(agent): stop the MoA prepared request reaching a swapped-in native client 24eae1fa153252530bfb259b4ac03b4e94950258 fix(agent): preserve MoA facade when rebuilding primary client (stream retry, rotation, fallback+restore) f45813ea77f0d09b4b90ffc0bf0111ec3179e338 fix(sessions): run state.db schema migration eagerly at backend startup and stop swallowing locked ALTERs 542f180e7aa007c848b8ef18823863351a689975 test: pin Test-Node managed-Node swap to same-directory renames d6a711c783e97538043f0dda3e8ac3b26ce133bf fix(win): CIM-based PS in-use check and same-volume staging swap e4d0e4c3d8fc1e22fb22c638085c8c808dba230a fix(win): never rewrite the in-use managed Node tree (#80926) 4642f9630d62c81f977a7c28e7841164e1c0cc8a fix(gateway): reject unsafe ordinal-only truncation bec7df1bba16b00c33dbf85724f59804980f3c29 fix(anthropic): coerce blank system text blocks at extraction (#70909) 4542192086fb4339153a529ab610800013a92a8f docs: fix voice mode guide link 4e60771ab7e29ff899e8cc04f93b74cb5d4d8b16 fix(transport): scope empty tool_calls comment to transport-layer coverage 071d295a6ed804dc6c3b12bbd7df7f1cd4a7493b fix(test): rename misleading test — non-empty array codex field stripping, not empty array c464001da8880235ae75731c775beceeabbabae8 fix(transport): strip empty/null tool_calls on assistant messages f316f7d086fc70dbb40bf35ae46416855a99843b fix(session): drop empty tool_calls in repair_message_sequence (#77921) b2453b5894476abb3a4f057a07701e76cea8fa6b fix(sanitize): drop tool_calls key when dedup removes all calls 11ccbb4b6f8b72d7aeb1de93473cb7b4bfee7a37 fix(gateway): route delivery-ledger owner-liveness probe through _pid_exists (#41662) 86a8928711cd781830e16acfde6b8f92c22bad86 fix(tui_gateway): read profile DB for live session display payload 9bff109783aa904a71c6443dc97d1234d8dad17e fix(gateway): cancel native clarify only on free prose ea4cfbb3d6f800481717b5c126a985d2503f32a4 chore(contributors): map loulanyue email 28b62b069ad82719c070366ce78230e7c6e508a7 fix(gateway): keep first clarify resolution c1c3557723b17d8b48a47a346a4f58aee14dceb0 fix(gateway): release rejected native clarifies before steering 1a06e70e1ef549441cc9c740302e5aec06918ba3 test(session-search): cover /new-reset discovery, scroll, and browse bc659dbe62b617c816dca11d2e8e51dd9a11da9d fix(session-search): recall /new-reset sessions in the current lineage fffa303db2b7b5541dcc143ccaf8b72d1e3ef860 fix(ui-tui/ink): don't skip a zero-height box that hosts absolute children 1d958880b3ffd94760536f7dfa29635830e8fbed chore: contributor mapping for Ufonik88 54aad0d670c98aa61b8d817b65956d0290dc8ccc fix(tools): refresh activity heartbeat while a tool call is in flight (#84491) c5788b5ea35e269810cb5e9bc9295e235743b14c test(agent): cover inline hard timeout and in-flight pool-request abort cc0d5ce7b71d683853f4a1b1cd6d8adb9ff10b9f fix(agent): bound hung inline API calls when abort cannot kill the socket dc2fe99ecfb7408ab32e54d1772079b95cf82bae feat(delegation): mark max_iterations-truncated subagent results for the parent (#86641) 06431056118699d59b8018ee6c07fc6feabac507 fix(file-ops): skip per-file tsc when an ancestor tsconfig.json exists (#86640) eeb2d23b8653fdfdd3c8196cf82bdae714742937 fix(memory): accept new_text as an alias for content (#86642) a6af0af13f893226e2a491b99be29cfccf70b10a Inspired by Cursor: pre-built Docker sandbox images (sandbox builds) 77248f8cb082e05b37dbfba720dbcb198ae73364 fix(desktop): clear the stale stream target on the assistant-tail append path too 9184915c42131d09b7d9c35fcddbb36d150cebd7 fix(desktop): skip stale journal duplicate folds 4d4bf0e0e57b55f0cbb7f482c90b6066d29e9c34 test(desktop): spy on the active localStorage implementation (#82832) 4588126bbde74a5c34efd41740c3d8e148b407e5 fix(desktop): bound inflight journal persistence (#63047) 2f094a2645ab047dbe66d05453e48e9a3f813727 test(desktop): align transcript paging expectations with include_compacted reads e4e7dd5c6eac30113e0f38eef7a069f1817a2cef fix(desktop): preserve full transcripts for running sessions bbb6cc7e994ef7bae27b11fb7705cd16361f7ea5 test: cover tool-message dedupe and latest paging for include_compacted (#80680) f71f91a39b8098327656963d7579caeb22535c1b fix(desktop): surface compaction-archived messages in transcript reads (#80680) 5f619cfa0e78e9883ca6f9148ec980e9010eaa14 fix(gateway): don't restart supervised services on clean exit b3f4655514bebbfa90aecd1590231d42afb174e3 feat(desktop): multi-connection registry — named agent sources (schema v2 + IPC + Settings UI) ebb28591325d2e6e4e88e959b0fd11a09ba510d5 fix(clarify): preserve resolved answers when clear_session races a button response 525ca9ca1c6f2e0762829c4b99afee184b27a18f fix(gateway): match the profile-namespaced session key in the clarify bypass lookup 39f3bb93121ecfbb65139b16bc872fd955b76048 test(compression): cover degenerate compress_end same-session handoff keep fc100f4b3b6108ad318ac0343e2d838448ef6404 fix(compression): scan full window for handoffs before cross-session discard bc5805c35f670a965e05fe3ddf52073805ed362b fix: compare base-URL hostnames, not substrings, in provider-identity checks f9d64b9a9d8b306f64851c1a13869d96ad5d7869 fix(cron): add reliable trigger feedback in Web and Desktop clients 1a8625abee3a3e51e403775f3cef2c4c0b2ec4c2 fix(cron): harden gateway fire admission and provider compatibility acaafcc6bba3f6fa1af0702ce986e0c4f79ed0c6 fix(cron): make immediate execution race-safe 5d9e4aaaf2cc2edab6868d146ff5311b3eae4820 fix: raise ProviderStreamError for choiceless error chunks + regression tests 48cca664c6cfd9929382f90a54289f44606b5c55 fix: detect in-stream error chunks in SSE streaming path efc3cd8697f320b57d9a1a22b977c534786baa9d fmt(js): `npm run fix` on merge (#86634) 662a77f31e7787aca62b0e868625c3fc014b6b4d fix(desktop): don't let a stale resume snapshot mark an open chat idle cb3ca0af0edda6c3212807e0a03ccc43a74f6fc4 chore: add contributor email mapping for razultull 6202fca05915be1801024c94f17e757ff6a71d0f fix(desktop): keep session marked in-progress during async delegation c0e07837c2af9e4937321d25d68f70dc0540f517 fix(desktop): clear stale turn state after lost stream events 12d99312aa24999ad5e754fbf8ba068b056bfd9c chore: map contributor email for nicolasdmolina 7d74375b0b75a2e82e931757448dcdec39beb628 fix(desktop): keep session-list scrollbar clickable beside pane sash 6f64a2c631bfb1a27e8a2aff493fb853c121630b fix(desktop): reanchor transcript on window focus bb45dc06c35174bcaba2fab79b2f9fcd627aa027 fix(desktop): stabilize virtual session scrolling fceab286023c05092174f649b464fe611f0c0a6d fix(desktop): cold start no longer hides Cloud agents until Portal re-login 01512ca00013222f41f0529e3bfe186fe1efbd15 fmt(js): `npm run fix` on merge (#86631) 5a3b5932305654d168e2cadb4bef26569a62f05f fix(desktop): order mid-turn user messages after the assistant output that predates them 80645500254a49a18234214908694cbd48b17cc3 chore: map contributor email for attribution audit dac5f86313a59d5d5968c81a7a305a1dd6a99793 fix(desktop): keep the session-list merge/dedup/order pipeline invariant-consistent b6d2f15b6cac1ab61cc4d597d0dcb2198edd5cac fix(desktop): dedupe persisted sidebar order ids to stop duplicate repo headers 9247f4e1a8cddccdf0990c23efc2e2be7e251ed5 fix(desktop): compare pinned/archived in the session list signature d0295754073a1bb2aa2d228ccd90976e65f35067 fix(desktop): sort survivors by last_active in mergeSessionPage to prevent stale sidebar order f8cc6d082e56eacd62f8391feb89d6ddc8237930 test(todo): make JSON-string coercion test order-agnostic 99033ab1f0592ccdc394f6cdcbfaec2ff94bb210 chore: map contributor email for PINKIIILQWQ cf30d895866b61d463e2ce7677a9a020611fb7f1 fix(desktop): import MemoryRouter from react-router in collapsed-indicator test 8bd83a9f7cf54c7184a913822a05b572a5a8c3f1 test(gateway): pin get_update_result in metadata-mirror snapshot test 0e7151ceae1d7abfec09725df976c12aac08dbc2 fix(todo): keep active step ahead of pending rows 89fa8298022495c9ad15241ccc78f5bc84716a6a test(desktop): pin the tail-only contract for the loading and stall indicators 6fcc202687ddc42f3f0e8f181e768d630a35a1e6 feat(desktop): show collapsed todo running indicator 2cabeba563cfbab827583c0115ac752e52eb911a fix(tui,desktop): refresh context usage live during active turns 2b3c50546392a3d1325213a845dda5bc95951bee chore: map salvaged contributor emails (audit_pr_attribution) 73bcfddb3de2505b518a0767e01fbf723de8121f fix(desktop): replay pending clarify prompts after reconnect 1134d2c9981656ebab535049a2a4f2f7729bca1b fix(desktop): stage keyboard multi-select choices 6cbe5a35b63b0783776a4755f3b95fb7d8731696 fix(desktop): support multi-select clarifications 34d76a1df081aa87916431b4e898a31cab7629a8 [verified] fix(desktop): reveal active clarify prompts 38b9005b957f6ef3841072a1b4e0012f479abf30 fix(desktop): replay pending approvals after reconnect f703e7061869fd6af9efb599ee3cfa435c49c551 fix: make desktop approval routing reliable 62dbd87b1b726bcb66b2370a4e0be43e0c02dfdf chore: map contributor email for salvaged PR attribution 898cc871250f0390adcf339e4509d8fda1b74e4a fix(desktop): salvage session-race sequencing cluster — widen Stop cooldown to tile interrupts, prove submit ownership both ways 33b39f3f4b7aeb15e7f641ff5f4dcd59a041fd31 fix(desktop): prove submit target belongs to selected session from both directions (#65328) 801fd0b3d8dabd6baf2ee8c8aa8eedffd01eac2c fix(desktop): interrupt-first after Stop so edit/resend avoids session-busy 4ac12d53fb73ea6d8e6b8d2a484cbdc7369b9746 fix(tui_gateway): keep steer-mode fall-through bursts queued instead of interrupting 3995fd434cb457c85dfacfeead04f69c65bad092 fix(tui_gateway): stop replaying live-turn user text after redirect b9482484f7c20603c80e5ccaa561641f43fa3c38 chore: map contributor email for attribution audit 1c80085f04cc4064ee61991fd0230c90a7f2031d fix(desktop): widen terminal-status handling to sibling sites e3c3d0895dc02015153538aadbc34f928a01d1f8 test(desktop): late progress events must not revive a timed-out subagent row a01c7bb43bb21e0a74121c6612c1c9afa13c9b7f test(desktop): completion events with still-active payload statuses settle as failed d3fee89993a87b045a381f9a8bd4b62e5d0e6df9 fix(desktop): prefer synthesized timeout summary over stale progress text 09b1726a1d3a246fdbc90790aeb369fa59cb42f8 fix(desktop): fail closed on unrecognized subagent.complete statuses; surface timeout reason a351c17d4abe379c176553cf3ed454e3be7d6838 fix(desktop): normalise timeout/error subagent statuses to terminal (#73728) 4faf12b9ce0207213d98ad1bc2d6ceef2dfae59a chore: map salvaged contributor emails (75day, KBANTH) f9f5c14f9aaf2ce273fe4dae81e1082dfd0a72b0 fix(desktop): keep live gateway across profile switches 077c04755ecea50b85fecaa7819fc3c2767fcd68 fix(desktop): sync active profile after reconnect 8edb4626ca228fece2bcc3ef8ec3e71dd4d1750f fix(desktop): refresh sessions on profile switch 21b57c61f4be6f08833897b9044c2e4be9b70544 fix(desktop): page remote profile session reads 5a23ab513c41ba6549c1c2fd63c8dec849208cb0 chore: map salvage contributor emails to GitHub usernames 01e542b764442d5271add29a12470cba66375812 fix(desktop): address transcript refresh review feedback 1a2b0ca8cbb7d6e70e875927e2b20987808877fb fix(desktop): refresh active transcript on session changes f0748b451c2ed2cc8e57f7154257c14cc1891253 fix(desktop): stop empty REST transcript refresh from wiping a warm resume 9cc428cff8141c88c1cd02195d69646f585aa66f fix(desktop): keep responsePreviewed settle gated on the boundary flag 71a98f69eefffff43c201a2a631cba1e53eee398 fix(desktop): settle final reply onto interim even after message.start reset the boundary flag cf63b794678576bbf23ce79376af7571051b8701 fix(desktop): drop pending stream rows whose reply the transcript already carries 56121e528d88be1d7414e450c27aff71d7f9c000 chore: map contributor email (audit_pr_attribution) 62eefff697b33f0cb0c1332d2c9b64fe89164699 perf(desktop): bound long-running app resource use 4712721033202b8109c9ee19d6a2b4aa7ca626ac perf(desktop): pause decorative animations when unfocused d7e95315f7211054086268f5c25e01366cda2682 fix(desktop): expand HUD transcript when resized b55677077fad79c7029ce1e56ccd1f157a149f48 fix(desktop): keep completion selection visible 957a7c20cdb75d9d608787864c8f7bb7ab794c56 fix(desktop): keep text navigation keys in composer 0611f9f8562be82f93c8a06d9c54e50953be5e71 fix(desktop): retain HUD composer focus 23954e3e31515a56c947628e674e5c87a7c1dd69 fix(desktop): prevent navigation from stealing focus beb9130a5598098443267751a1ef60aeed2de093 Port from paradigmxyz/centaur#1393: expose skill deletion in the dashboard cb47f59ffa1056732c0a5194d2a1847dc64c2c37 fix: standardize media-group CancelledError to raise 42dc17ec975a178e7ca47392da968538fed7062d fix(telegram): close hold-lifecycle gaps on permanent fatal and connected drain b4da6b15e132e49b64131888f2f807a4d6f652b0 fix(telegram): hold inbound messages across disconnect instead of destroying them ed4f50de51d3adfb8f99d96dc18881d09a9cb859 fix(send_message): hand unresolved cron and react targets to the adapter again b9fa46b5a57af8f21af5529df2ad342318641940 fmt(js): `npm run fix` on merge (#86559) b6726d57e4d0b91e78d9b57831c25cf70b89dfc2 feat(desktop): per-profile scope selector in the Capabilities view (#86548) 8a04225b020dac85c0f3c8ef20dfba1c7183a70a fix: apply memory ceiling via ulimit -v prelude, not a pre-exec callback 21b31d32f5f8a64bf497a253195709a9dc715195 feat(delegation): prompt-cache-friendly launch stagger for batch subagents 05492e957793ec95e94f1096d30c87b08e8394fe feat(terminal): per-command memory ceiling for local backend (terminal.memory_limit_mb) bab9a85b67f42b7c7931d1f7c769f504893c3d63 fmt(js): `npm run fix` on merge (#86533) c83061ba3d0e5467fca62c45e59bcfb38cfe5e3d test(desktop): cover the context gauge fetching before a turn runs 25d1c8d7406b934fcbd0489ac64e4d99dfc4dcf8 fix(desktop): context gauge reads the session it is on, not the last turn 50d98fc1f3d49d7a7b522eaa7f4553cd864a0218 feat(delegation): raise subagent iteration cap default 50 -> 250 (+migration) (#86506) 832eb56b771730b365f52dba5c008fd7d73492ab chore: map contributor email 167dd48b4012268814f4baf66ad1f4a93f39e0da fix(models): trust certifi for credentialed catalogs (E-1002) 90253cc0a01d1e4f46cf3461d186d79596ca9d30 fix(providers): route Actual's fetch_models through the credential-redirect guard 2eda1292f6b54c0e70427f9170e0596a11501c6a chore: map contributor email for #56522 salvage b55dd047114ffd37624b04ee3dc8e148c5a4494e fix(streaming): adapt provider errors to relay 04bc5321c9c9407a27c8e4af7ac9bae68f21d1fd fix: preserve non-JSON provider stream errors 5cbc645d09073ac0ba1f8d652b32944271c8666a fix: require terminal signal for streamed errors 0fcebb29f442544e1ecafba618abde6e2f5fa197 fix streaming bare data error payloads 661a4c4f888b95f2d885a3d87a8fc12f63276f80 fix streaming provider error events 44d580617f33adb67a5913c1aa3b76319d057809 test(providers): tolerate stream kwarg in metadata probe mock b21e0bd8c9ac2f6fc54924b1a3e8a8efcb3b5bc4 fix(providers): honor per-provider TLS on custom /models and pricing probes cbfe186da8fa82bbf5830ecc20031735503773dd fix(config): canonicalize legacy api_mode spellings instead of silently discarding them f92accd05d171ab951cbb86b3133725d61de6f91 fix(tui): lead slash_worker PATH with Hermes' managed bin dir 73b4e41ab2ebe6f61ed2c87aa74e633e010f9198 fix(tui): prepend Hermes venv and user-local bin to slash_worker PATH (#83845) 47fd2eb7c82bc79223ff0f77556fa9242d9cadea fix(browser): strip PYTHONPATH/PYTHONHOME from browser-use CLI subprocess env d275b96bfdaaf3271cd3ff2cafa4a019048c5542 feat(gateway): per-profile MCP server lifecycle RPCs (mcp.servers.*) (#86473) 452465bf78c187c091e41103db869d13d2bb6968 fix(tests): reap leaked TUI notification pollers between tests 01b1175ea6a605b65969048f493999645f5c1f60 fix: drawer inset for vw-derived widths, theme-matched canvas strip cb480899327e63a20f97f83fed58c102a204be2c feat(desktop): guided empty state — time-aware greeting, starter prompts, attract loop 356ab9fad4c0098106df26c4bd8d12ea51919bc0 feat(desktop): instant guest account — first run opens straight into chat 8e509c729e92f0e6cde354d4334a1c174e677cb3 fmt(js): `npm run fix` on merge (#86430) 7d96537bc8627f05ff3617e7d48c14fb5736ad92 fix(desktop): the main agent's model pick persists as the profile default (#86414) 9e1822c5d8199bfad3cd74e64ba0daf83b82d2bf fix(computer-use): align browser authorization with live-verified cua-driver 0.19.3 contract c35ccdde7a4fee5f00c542023da59c3001318d9c feat(desktop): peek through settings while adjusting translucency 31e571acf66dbf099b8ed3b2cd42a4f46c7fe372 fmt(js): `npm run fix` on merge (#86407) eb20188d2e5c40419c49f8f463061b2342945721 style: import order + padding lines in terminal.test.ts 3f7140fbedd3e383833b7f767af6513571d3317d chore: contributor email mapping for salvaged PR #66538 5d8569d04382158067f4eda2b038919242c9301c fix(tui): gate BSU/ESU on capability for ALL write paths, not just alt-screen d509e6df2fe2a6a9a750afe1ac4a2f1d782492b0 fix(tui): don't trust DEC 2026 synchronized output under Zellij 802a60a1502da137c4084d0e383dcab95735ccf2 test(gateway): pin restoration of pre-existing HERMES_HOME override 308bb56349ac996bbd2c57d1a0885eac24d31c4e fix(gateway): bind profile override in _persist_live_session_system_prompt 4d1ef7fbd2f26ce6deacfe96aa3f6650905f1800 style: satisfy curly + padding-line eslint rules in usage comparator 513f683aa778f97ed675b7bc9b19f42be071a472 fix(tui): widen usage comparator to key union + regression tests 8606867ebc613c6beba5bc6c8263fc642f76b197 fix(tui): reduce status bar flicker during streaming 3abe6cc5037697f0277f47d7806c46f867335697 fix(gateway): bind profile HERMES_HOME override in ephemeral agent threads (#50233) 5821691642880f8f3afab02fb21b9990880821e9 test(dashboard): extend ChatPage Terminal fake with onScroll/buffer/scrollToBottom 7f7ca89255689be1156f75346e5408741f09a043 fix(dashboard): weave resume follow-scroll into sanitizer write path + contributor mapping 4406d8ca6a8d1d5cb37773d36adf709e74033c8b test(dashboard): cover resume-scroll stick-to-bottom logic 82e05b20402b421fae3ce34224d25beaa5d38be1 fix(dashboard): scroll terminal to bottom when resuming session 64f4229b1788e89bb50bc5cb2a1c7c61349aa42f chore(deps-dev): bump electron from 40.10.2 to 41.10.3 c925b523a11b465283471f3409525825cc387db3 test: simulate contended wait for resolve+reload path d729019e46fc842840c8f39983561d6732b012a2 fix(sessions): harden turn lease refresher and skip unnecessary reloads 6b25e67047d6f13073d7e7af41c497829145ada1 fix(sessions): scope refresh interrupts to active turns 967391cd4b5c5f32f0db23301c12563e59f8943a fix(sessions): stop lease refresher at turn boundary 19b1204392012a73c5073926cb879b1932bbcd89 fix(sessions): revive uncontested expired turn leases f1025b2c00f6a8c5346604baf0ae6f27d2553dd1 fix(sessions): fence transcript writes with the turn-lease holder c21efeeb52f53dc40b18d14f7d21cd99d2e204a6 fix(sessions): keep turn lease across inherited-marker compressions 5e2be43fd44c162ee4a46d261b99f2168fb1b445 fix(sessions): harden cross-process turn lease wait and refresh 3b0945601955e13b6159816141dc4acbc80c4132 fix(sessions): surface wait status for cross-process turn leases 6e929a96946a5c69644d08bd59c9dcfdc757e91b fix(sessions): serialize turns across processes a373a1b7491e9bfd0c21940cd0a968283e643085 fix(desktop): tolerate omitted get-windows on ARM64 689a4be6f218570bec554143fc8e55535cee834e fix(desktop): degrade get-windows on Windows ARM64 58e4bb04d6fbf266bd89334b6681e16e1cc22313 fix(desktop): make get-windows optional dep so Linux build doesn't break (#85377) 5269c8f69b87b4b9cc59f87cfb92d132eb362e34 chore: contributor email mapping for salvaged PR #50873 253d4aa996523e067a13a4039fc6f2c1e46b6621 fix(desktop): add focus to ZOOM_REASSERT_WINDOW_EVENTS for high-DPI displays fcca026ec3c2728d28537718ec62e0b993eb17f4 fix(auth): an active subscription login outranks a leftover OPENAI_API_KEY b66b4a50cf1cebe69e5e3b2932b6f9babe2b1c1b test(desktop): cover the torn-renderer-bundle detector e1098cbb184f65c423ffea5f01fbaf5f6ef2c497 fmt(js): `npm run fix` on merge (#86379) 56f1afc834764d67d65ff673cc8f5a2003c2f0a6 feat(dashboard-auth): extend RFC 8252 native sign-in to password providers (system-browser autofill) (#75808) 518bc90e74e0164e46b113a3605ce1772ed10572 fix(agent): bound HERMES_HOME override wins over shared session-db home 1347e31113e276cbbeb9900b1d00d00e78506912 fix(gateway/relay): guard platforms dict access when config is a list 5bc13cf5742df99b8ab831d10dd6f7ebee3fb1cf fix(gateway): tolerate list-shaped gateway.platforms from setup (#83185) 3d34b1916dac5bec5bbf9e9c0d3fd19e921728c0 feat(desktop): add 'Open in terminal' to the session menu 867eb1a38120f260feb9f4ddf17a658c37cd8dc4 feat(desktop): expose openSessionInTerminal over the capability bridge 237abc1e9e3e063864b3ce84cfc3b6d0323e52a4 feat(desktop): resolve the user's terminal emulator and TUI resume argv 4d6f4a6fe7b509b34c0b5a185d633a6e0e763827 fix(desktop): local & remote profiles reuse the default socket after 0.20.1 befc406839f8eee603363032b2d414f94686af51 Merge pull request #86358 from kshitijk4poor/chore/author-map-seashoreshi 9f004c8217960bbf5751cb3ff593bc33c0082e08 refactor: hoist binary_extensions import to module level 5c988e2461986b4acaafe0911c54d858c826bbf5 fix: cover remaining anydoc-extracted container formats 6d51c831ebef675ba6a8980a34eb98f12de18058 fix(file_tools): refuse plain-text writes that corrupt binary documents 1f1b4d994710263be5755db28a67f87ce6dffd25 fix(agent): scope SOUL.md load to the agent's own profile home (#50233) 8134aadc18f108287b3e9e4d048ba8490cad397b chore: add SeashoreShi to contributor email map 4691eb5433bc615d2dd27f101d1769f3754afe36 test(agent): drive the profile hint through the real resolver chain 126acbf21911af2872d699b8932b7760f74a2734 fix(agent): stop doubling the profile path in the system-prompt hint 30e9449403c6448d24036ecf31b7f9ceaf67b769 fix(agent): keep legacy ambient home strings byte-identical when no agent home a0c346543ad77c510568ff2fa3e272705141b60b test(agent): cover agent-in-profile-A with ambient home bound to profile B 8fd0f9c1d2af096b7d2537be6262ee3c9d43a274 fix(agent): derive profile name from the hermes ROOT, not the ambient home 2f25dec3494d12337d3068676c73941ea9a76e53 fix(agent): scope the skills index + active-profile line to the agent's OWN home 0b36a5be4231dc99beb38a36925f984576d7fcd2 bye bye 924074906e8f096e0e1c8bdcf43aa5a8535a9dd6 perf: precompute intervals outside lock, cache croniter, use _ensure_croniter 24a9203008698a412a11998c65ab3b698e4a62c0 chore: map contributor email devops@sycamore.group → sycamoregroupltd 50febe97d94bdbc8473ba716cbe7b26b41823202 fix: follow-up for salvaged PR #86129 — config.yaml, eliminate redundant load_jobs, consolidate dispatch e14248ac1ee5f8fc000d162945c7830ca15cb1f7 fix(cron): self-heal leaked in-flight claim so a wedged recurring job re-dispatches (t_8b5480b3) 367f0c21ed6541999ca2c362028b4896e1d51419 feat(agent): resolve sequential tool deadline via timeouts.tools.sequential_call (#85125 2a) 61645cde826af1f1351a97e8f5202355566a97fc fix(agent): exempt clarify from sequential tool deadline 82a1b5a115349fa48b8b8132f6505f88e6244552 fix(agent): suppress late timeout observer events ededa8c4f1e211ca3c750c82ad77530dacc0639e fix(agent): bound sequential tool calls 4fe509096473dfe7c039434f81a0e610c2ee30ed chore: contributor email mappings for salvaged PRs 2912093e06bee0e58d3e1910d54c99d2614cb1b6 fix(dashboard): redraw TUI after PTY reattach 6356dc392e081f445b45715e1eae6bc808379dfb fix(ui-tui): redraw after session resume 96e794aa4a1b50b54c4345a806a320dfeb8f1103 fix(tui): redraw after terminal focus regain 20e5d51beafd7e578af7a4a374e27db67c026e57 fix(browser): managed-first browser-use CLI resolution 54fbe24f9c4b3265876b0b8f1e671147bec8f8d3 feat(computer-use): user-facing authorization for cua-driver browser attachment 6f49bc7d5237ce56bc5cd0d3b4dd8e42525ae950 chore: map contributor email for the salvaged Windows updater commit f696380d0781951842770f060c3a66a33a969b60 test(desktop-update): guard the Windows hand-off python.exe contract 5bfb7ee42fb0276518c06a4dadcc687670fc72f6 fix(desktop-update): drive the Windows hand-off through the venv python, not the hermes.exe shim 3f39f803558f9dac12449aede73b5f74a829306a fix(update-check): never flag local-ahead checkouts as updates (desktop SSH sibling) 898d786ad7912823dde7a290c5cbf3e404f957f1 fix(update): count real behind commits in SSH fast path 29760fe6b1da44bd6f98887b68dd72ef066ba717 perf(desktop): reuse the chip preview bytes at image submit ca1b3f870596d4ab24b3cee6eeab4f61e3a9a597 fix(windows): avoid locale-sensitive update timestamps cd104ed49e732e8dd5d69dc15e14f9e40f896fe0 fix(desktop): let you type spaces and arrows in the session rename dialog f79440e0f4bb578c86e417c20bc87feed5259623 feat: /loop — recurring in-session wakeups (Claude Code parity) c7a243d7853fed74ecd4076ae7dbec481dc97b34 feat(desktop): tag each sidebar project row with data-sessions-project d8d7cc068db8080f33e875355c3cf5d52ca4b7a3 fix(update): stop reporting bogus 'Found 9980 new commit(s)' on shallow installs d29abb7e6bcc6fbde34d40bc5cd696d212882a32 fix(browser): discover browser-use from user-level tool directories c59e30f14cec93000af8dc5b5dfd84e113361296 perf: cover all six attach RPCs and report surface exposure 9d4ba40672d84bccc5f644779770d2a8b317aba0 perf: benches for the image attach path 7de5634a2f0b14488bdc2208560583fc7b0c512e test: attach RPCs complete while the agent is still building 8b06f7df8ea00d1c09f18e8b7b15e0325d4b72ad fix: attach RPCs no longer wait on the deferred agent build cd9110295513b9723e03f60db0053008b1c216db 3 default job bf10349ebd013ecf850e4da604ccc6abc256ed05 chore: lint fixes (blank line, useMemo dep) cc9358e525da8aca710abefd4533c179644694fb chore: map contributor emails for salvaged commits 9442a718dad395049485df9443f459b2a7b36282 fix(update-check): recover the real behind-count via the GitHub compare API 3dbdea8b8b6560d6bb43421530727835375c2aae fix(desktop): make shallow update status presence-only 54bd47b811e6fd890c55b7e6bcea4420e68129f7 fix(desktop): show 'update available' instead of fake '1 change included' on shallow clones 294071bf088c9e026d045c9268a5deec8f525d97 fix(banner): stop fabricating '1 commit behind' on SSH-official remotes c2bf1ac70a74ad792a5537d8b8a810130988a9f9 chore: contributor email mappings for salvaged PRs 3bd98ec4bfd3b259dea591fc677796033425758a fix(cli): redraw on terminal focus regain + docs for scrollback rebuild config c3d7f6eefde38e0d58fdeddd28af7ff83331fc04 fix(cli): recover prompt_toolkit paint after tmux attach 88a1a9fd95673bcb508174855bcd591067ed8c62 fix(cli): let redraw recovery rebuild scrollback 0e1cba326b85c67d5f9e8524bc1b6bc887d7b2a4 fix(cli): honor persisted status bar visibility a22fbba340d990879480a729a01d0904258ac599 fix(cli): don't replay transcript on the session's first benign SIGWINCH 6625c72c924e44cc723f9383954ba6c755ccb97c fix(cli): use _suspend_output_history for interrupt marker instead of clearing _OUTPUT_HISTORY 3885c1096a0077ee132804d5e40ac03b4dcb9ef8 fix(gateway): stop internal bookkeeping writes from advancing the session activity clock 1169fb50a4cdfbac62463d0e8bd9766fedcd4189 fix: install Browser Use CLI for every browser backend except Camofox 2bd1355c4b97a06f9ccfaa35bf1f756e843bdccf style(install-e2e): export TS_BASE so shellcheck sees the use 7807f54b51046d56e79859f856db5f88183d2fe5 fix(install-e2e): one time base for every transcript in a leg 4c3ee593c0f2d8f4a845a38fc811d09d2fbf44ed feat(playback): ansi n styles d6a5cb9725df4b3d14a61aa7a2f717acb30c901b Merge pull request #85147 from kshitijk4poor/feat/unified-deadline-layer 4bc6bfede1ef0ad92ab6a60c559cf357a2a5f1ab feat(playback): ALL·merged tab - every log on one video-synced timeline 717ea556637dc05049761ae9d0edf3f7424a137a wip: pen.dev canvas drawer integration (native WebContentsView drawer + pen_canvas tool) a90d5369f76c87c98547d2e283aa26d5cfabf322 feat(gateway): dump wedged worker stacks when the turn reaper fires afe09c794267c44bcb9c443f4fe40ce0a1ee3188 fix(gateway): exclude wedged turns from the restart after-turn wait 0c6761c5118cc31478e5b7b44fc8d9d3cb50e580 fix(gateway): restart_after_turn_timeout default 6h -> 30min (#79133) 0e4e8baf630e4d92fdf08bb2e51e6c7be275b317 add deepseek v5 pro 0813 to model catalog (#86256) 642b735dbdbae4f01f5df0b9288d5f67a7e530f4 feat(website): Skills Hub picker embed mode (?embed=picker) (#86243) ed653d3434a537e3c9e1e03740c6388f1d70fb1b fix(gateway): profile editors hide opt-in toolsets the profile hasn't enabled (#86239) 11c5aae104cb95b5141744dcb277448ef8b24dce fix(compaction): gate checkpoint replay/prune on current request eligibility cc1c125cf3a670a45515bcf64e4851624f3898aa fix(gateway): honest capability surfaces for profile editors (#86227) 6f5ccf16d7c9edd89e40e5cc7832c22ac214996d refactor(local-runtime): drop the Spark-class UMA workarounds; physics owns unified memory 0a8765a236ed1d253ef18ecc856cbe881fa3e52a fix(gateway): model inheritance gated on the model section, not config.yaml existence (#86212) 0ba78a7ecda00c73eb07c1eb6b646919479ba609 feat(local-runtime): quant selection targets a large context window, not just the floor 83224e70307bf2df6cc247c727caea0dc871b932 fix(local-runtime): catalog rows advertise the overhead-priced window 412b55b27edca8024e44c61df199dd4f69f38b37 feat(local-runtime): show live placement — how each loaded model is actually running 3f7621432669aa4f4db858720e9488d68b774667 fix(local-runtime): price runtime overhead into fit decisions de0abc0617794a8c4ae661d2f67f4b23d4ab51fe ci(js-tests): drop dead electron download-cache path, skip redundant npm upgrade f56a9a1185bb649a34b3ff2e5503c4c539f69a87 ci(js-tests): cache the installed node_modules tree, not just the npm tarball cache 860ee24991280a76e4573756118a4de5198f6f46 fix(local-runtime): launch and growth decisions price against capacity, not live-free VRAM 29d0cc2602e01943ab300c0382fc9d97efb376da fix(dashboard): treat Ctrl+C serve shutdown as a clean exit (supersedes #52970) (#85711) bf146222507ea80ffe76665f4ef5c9eef9d9ca83 feat(local-runtime): Qwen3.8 27B replaces Qwen3.6 27B as the recommended model a9c259d94ba27c629aa5c0f186334310752a2924 docs(lints): rewrite the new lint prose in Simple English e0b96494630c9443a5d9f1c9b811b7f7edbddf72 refactor(lints): remove the lint: keep opt-out from the age-gate lints 5a3bd76015afb16c3243fadb9c085739396fb39d chore(npmrc): drop the age-gate excludes that have outlived their reason e188aa29c25c6fd18fbad4aad6fde9cb24f18ba7 feat(lints): require an age-gated .npmrc beside every package-lock.json c5b9cff700519adabb711db90fb312d8eb03c06c chore(ci): align the autofix patch artifact on upload-artifact v7 9e0f9c079d09a866e814e62ee310934f61762a6a feat(lints): hold package.json overrides to the exact-version rule 76805bc46eda519580567a4d9468713a7e7e9544 fix(lints): anchor uv exclude-newer-package key edits to whole keys d211847c0d39147fca19cf63c3a7b25ab63e67f4 test(dashboard): actually exercise the pre-0.36 Windows fallback KI contract c896c09c42910c584c4c7d2325b58c14713ea42c fix(desktop): windows-safe spawn + surface spawn errors in the shard runner a66a643863f69a70eac3cff55ce78bf5fba4b859 ci(desktop): derive shard index from the script name via a guarded runner a163c2ba1210db652c56a95040d1f1b4078403c8 refactor(desktop): single-source the ui test command in the shard scripts 8c05906acf7c86c6e013d2600d5d9b21b0d9ed2d ci(desktop): shard the UI vitest suite 3 ways to cut the merge-gate critical path 5b15b192d68f942c225cc9894f7efb80c035fb32 lints: adopt three AGENTS.md policies as enforced checks e63dbadcae8c11469c1ffa33912ae75d50aec878 autofix: reconcile patch guard with dep-version-gate excludes 6514dea0a34d1dee62e9d1b9aa07277ca6f46bc0 lints: migrate tests + infographic workflow, add dep-specifier lints 4874e15dc690cbd9627aa102fec2dbe94219daf7 lints: support uv's exclude-newer-package section form too 9377af7c336ce5b3a5f6ca614ddfd83e1f078835 lints: add uv-stale-exclude (autofix, pyproject + uv.lock) a06b587af5b999ad7715314c610fbe5d12c9be48 autofix: carve lockfiles out of the .json allowance; verify npmrc writes b7511316a49fb9c55cf6327a5c03321afff1e2eb lints: add npmrc-stale-exclude (autofix, network) cd9e0e4355c50a2b1521fc5a74297e0c43b6f964 ci: generalize js-autofix into the project autofix bot 179194a2b25bad720345715cce309ae7a90600e2 lints: bound each fixer by its own globs, not the union 3a7ff7c00d08a485c5081cfe9e4dc9acb182dc76 ci: run project lints as one always-on job c864fc1a0f9af5a8b090aa2345c1304ae0c956e3 add project-wide lint registry + runner 1b1975781f372e4d7fe4f448eab86cea5441f2e7 test: use tmp_path fixture for import test HERMES_HOME d6b4083f41fc9bb5472f4d246005d54a9ae33416 test(approval): cover CLI EXEC_ASK leak and fix slash-worker Path mock e37a0321ebc65714275da9434cb09f4fdb07e12a fix(approval): show CLI Dangerous Command prompt when ask-mode has no notifier e5d9c447781fff4ff79e7ff59c6f2350e3462388 fix(tests): dedupe toolcall regex, fix mocks returning wrong type 1f8fdc7bd824c8d07e3cefe109bd96425ec3171f chore: map contributor email for @infocentr f84f1dd1323153987213d7fa144cc8f49fe38a9e fix(tests): return Path from get_hermes_home mock in slash_worker profile test 58094752400782d86b71a5b8b88d90170e282ca4 feat(compression): preserve epistemic stance of uncertain claims through compaction 4f37f0e8375db2589d16698bd97fe304ff6f016a fix(tests): mock get_hermes_home with Path, not str, across tui_gateway tests 4359031e4f1bc78d11263ef78b19d25aee3e664b feat(skills): add short-drama-production optional skill (AI 短剧 pipeline) 56a41715dc3b8bf6f50a740ff9416c4036ef4259 fix: persist provider on model switch and add billing_provider fallback 4bbc6f258aae3e7c48cdadb5c2cb5115628e3ed9 feat(gateway): share_auth on profiles.create + MCP servers in describe/configure (#85963) 16b54e2a0f3cd4d725fffda166812fb43e5128f5 fix(tests): resolve cost-guard fixture collision between pricing distrust and gpt-5.5-pro confusion nudge (#85970) db1be4bee988c452c6734aab7583d2b9ea21b904 fix(gateway): exclude wedged turns from the restart after-turn wait 7d53f04cf64312721c1c46033d1fd0c2e068d301 fix(gateway): restart_after_turn_timeout default 6h -> 30min (#79133) 2a3d6a279309841026e8c324b198a7ad9a8ca249 fix(compaction): gate checkpoint replay/prune on current request eligibility 3c5fd918e3e2537cd74f4f88c990c5de5cbd9f63 feat(sdk): warmProfile — background socket pre-dial for roster UIs (#85954) 6f53373eb2e85b2fb58b2a3eb949574e76bc93f9 fix(cli): route startup guard through the selection-guard registry; cover the light oneshot fast-path 83d373aae689a0f62c045fe23bfbbad3159945a9 fix(cli): guard expensive startup model overrides 1e18f68148b5bce93cda76bba2fa68f51043220b chore: map contributor email for @dpersek f2678b8706182a34337f081a7904a46c1512094a test: registry cost-guard passthrough uses a models.dev-trusted provider 54cc39aa153ca800292a407372bfd84460505d94 fix(models): don't trust foreign catalog pricing for custom/unknown providers 9a8af40192d2aae588af574031b116326b4813fa fix(cli): run /model expensive-confirm off the main thread (#79401) 37e8d2a1fd1eba6f2a9d0e97d8c29851427e465d feat(sdk): warmProfile — background socket pre-dial for roster UIs 858a6008be1619e50b1922c53bf0f55dfce2c643 fix(gateway): keep process notification routing off-loop d0067d0fe73ce3adc3e1207c3bf1007e73a05621 fix(cli): route startup guard through the selection-guard registry; cover the light oneshot fast-path c982d6730213cd98013dddc7d7702f53ec73f000 fix(cli): guard expensive startup model overrides 064aff5431bb98b3a33391f4b3f5adcb48ce9593 chore: map contributor email for @dpersek fe8fbd0be34bd87bc1543eed4446237744e82558 test: registry cost-guard passthrough uses a models.dev-trusted provider 9fd1a67cf35b788b09a1867d769c5aeb3a8f2476 fix(models): don't trust foreign catalog pricing for custom/unknown providers 7619564fbdc24d1e7464ad42d21828c0d698da6a fix(gateway): gate background-process completions on spawning-session boundary e10e3442041a0ed8f2770ca26d859f01dc0c2bfb fix(desktop): make the HUD exit button findable, and only when wanted 4469251f27ce3ced2b002cbad966e6842061e7e3 fix(cli): run /model expensive-confirm off the main thread (#79401) b9e7bead133e3f660d627df8339e348e6e6717d2 fix(gateway): coalesce same-tick async-delegation completions into one turn (#70300) a96cd10349f74ca5d3406bdde42ca677ccb9dc77 fix(gateway): force-redact coalesced completion output 7536655b8fea565fe32fa5f5aa61567a86f1f004 fix(gateway): own completion batch task lifecycle cf09a30a9acea757d17220bdda70b46a3fc3fd5d fix(gateway): coalesce concurrent process completions 8dc9401d7ef81e76533c76c01a9d0961597be092 fix(gateway): persist internal synthetic turns typed as internal_notification (#82888) 1292a31851bdc18ac9c3a442baf9df8e8a51fb36 chore: map salvage contributor emails 84b4fb9eca9ca6f7b50aab7ce139b13016b9070e fix(gateway): force user-facing redaction on the direct completion and running-output sends c0d204810d0c537f9daed3c6de87d05bfbd16aac fix(gateway): redact secrets in background process completion output 668396c2e10fa639bc14e9a932e504639e3f090c test(security): add tests for notification-path redaction 6c7cfd662152c875ec3b048fb27970131cab07f3 fix(security): redact secrets in background process notifications d2d77667503c255e4f2f36efb02f83ab927bb0fe fix(tools,gateway): format watch_overflow events instead of dropping them 9b554758bdd92bb37c2dafba0826f39f5d7a42cb fix(gateway): honor notification-off watch reinjection 8cf9e8a61bf698fe6ebde5c65de1f7e40af7e2af fix(compression): ignore background process notifications 9166530942966655badf6863cd7a44719b5056c7 feat(models): unify selection-time guards into one registry across all surfaces a06f1d7617672bfeaf2f4d47fff5608061cd571f feat(models): warn on data-training tiers at model selection 91ba10835a54dc28e97ab69d9d6dce7cc83d2ae7 fix(install-e2e): wait longer for init 9cb456a9b9cb29b8785b75f339d3ad1225fd9b2d fix: unify route dict or-None discipline in /model persist 285eaaddc033bf9e2ce5f4e70f58ce437d7052ce chore: add contributor email mapping for seze@andrew.cmu.edu ce20857f5a193857fa3111e28454b25d28106466 fix: exclude launchd-managed gateway from orphan reaper on macOS 8c0164cef9dd5e484e08ab4cf8dfbe28f44a8d9d test: add regression tests for launchd PID exclusion on macOS 17d6a7d42626a33d90379c3ec29c300b419afd93 fix(desktop): avatar misses expire after 30s instead of caching forever (#85908) 6c40300f93aa1395510d2cb5497c57a9a771ca7e feat(gateway): roster previews show the latest message, not the first (#85905) 1c971769eca94cb0020894393c8167321a5dde3e feat(gateway): concise background process notifications by default 529ee80ac08d65f39fc14c127a714de700cd93e5 Recover from a half-replaced desktop bundle instead of requiring a reinstall (#85887) bee9ef375b958ed793b006d84fa30d8d2fe193c8 fmt(js): `npm run fix` on merge (#85898) 084265538260572c419bf22b882052a88324e814 feat(desktop): sender-side delivery notices — 'Messaged X' / 'Message from X' (#85888) bd22451f0d591ab7c05eec1d9931b27fb7b98116 feat(desktop): collapse inter-agent exchange replies (Grok-bots parity) (#85884) 421f39179d16517d4f2993cefccecc8134be7832 feat(desktop): collapse inter-agent exchange replies (Grok-bots parity) e19f00d7704dae7b14549c434851d29db5fcbf0c docs(desktop): document HUD mode — long-press to move, resize, snap, exit e8debfbdc313649501355f6c6f029e63a8f17a75 chore: map contributor email for attribution audit fbec3c78fd52589c08aa6b325370cb1fcc231724 fix(compression): clear preflight block on provider-confirmed rearm 2b9da1f2525f9e2cf21f6e1bd5ac655bd2b5da75 fix(compression): re-arm same-turn attempt budget 80a87337a675afa104724bcf1d552c4f2460c4a2 feat(gateway): concise background process notifications by default 5e8d25d7e78da269e00d6ac46374a38d97e92081 fix(cli): --in accepts Git Bash / MSYS-style paths on Windows (#85865) ad9e8c9b574ec6937cc09d8901ca83a769225963 feat(desktop): expose data-attributes on sidebar sessions area for custom skinning 2a6eef77b7d0ce64183ec09bbf0cff24bc8c2efb chore: enforce LF line endings for all source files via .gitattributes (#85866) efad7c9161a872205686140387bc223eef1242ad fmt(js): `npm run fix` on merge (#85867) 7a9634568cdeb8f5363bc99042a24ebff9df0e1c feat(desktop): agent-to-agent messages render as attributed cards, not user bubbles (#85855) 380e4da3d1d61c5cf0e88f48a6fb41c7c51f376d fix(compression): rearm budget from verified usage 72c828ca2cc6e4255aec460d32420be83c21b046 fix(agent): refund per-turn compression budget after real progress 3c72a441f248fd6c8ae8307b5289b5098509d27c chore: bump version to v0.21.19 (2026.8.14) 5af265c937efd396972713fa87fcee343fa3bc70 fork updater channel should point to fork 0d0e9fe5c91c657b17824c055c27a633fddf4373 read electron version from package.json 6d66598112337f4a06596b90f237dc41e320bcbd fix(local-runtime): CI failures — Linux asset names, GPU-less runners, subprocess encoding 37ff83f3d3d8e6d7884241941c456ad5fb421d0d ci: kill xprotect 82b7b6d8046ae5af5f7d96e720dc916a38e638e0 docs(local-runtime): Local Models user guide ad04a076bdf8ce858d822b0098d04a0a8ed2f9e9 feat(desktop): Local Models — one click from nothing to local tokens aa4bf1ec2b3f8d0a1a3b7c5f00c738f1e323a091 feat(local-runtime): model catalog and dashboard routes 9504edbaea29ce249864a1be05819d972f8fae8d fix(desktop): agent mentions insert as plain @name, not an @simple: chip (#85841) b95e38757aac162e322b615daf3e4f82fd3aed45 feat(local-runtime): context policy — fit, grow, spill deliberately adb2fdbf5c564c097fd9889d16ae8e26225dd141 feat(local-runtime): managed llama.cpp server — install, supervise, resolve ad8365d533cf02b62c350932feb2aefa96f956da fix(desktop): preserve multi-pane plugins when closing panes 86379c519ac3ec7dba5923546d5b2b29733314da fix(desktop): add missing update mock to ComposerActionsScope test double 44bdcf3a304906a2e186333950fd100b09e34169 docs(dashboard): document memory/disk pressure banner and /api/status resource blocks (NS-656) 9c15f0191c1b0269de690250676cfa47e89889f7 fix(models): refresh xAI picker via models.dev; pin grok-4.6 5970ac73abafc2e321cbfa87de3557dc6e6170a3 chore(skills/box): Hermes-compliance polish + docs registration e450b09dd1c9b163d9e1ad41472e6f9535c7c8b8 feat(skills): add bundled Box productivity skill d4b0039940aeb893c777f086c7dc838476ebb95f chore: map contributor email for @silence-de 44463ef802240b42ead5be0fef0170467943ede7 test(usage): codex cache_write_tokens + Qwen/Kimi flat cached_tokens coverage (#70543) e331b834fe4907be97230f15c6f93cf7edb2d476 fix(usage): preserve OpenAI-wire cache writes at canonical accounting boundary (#85706) 11de734331f7161adbaaa1130932b6a67a81ab02 fix(usage): support dict-shaped usage objects in normalize_usage (#74314) 5b82e696931b5ec0e300b9480b86dd40885cab6f fix(agent): read Kimi/Moonshot top-level cached_tokens in normalize_usage (#65722) 69bc3159e855891eb1dff02addcaa4d4369080d7 fix(agent): fallback to Anthropic-style token fields in normalize_usage eca85e81d62660e377d442d6cfb482f341243aca feat(complete): offer agent profiles as @mention completions (#85799) 16a173a8d6912735c1c2dfb682fe93ab69f1ed6d fix(tools): do not adopt a stale cwd after an interrupted command 6977d21fa7cbf5f62ce645d2d3f8a433f8870ce0 feat(gateway): disk-usage telemetry + dashboard disk-pressure banner (NS-656) f5a26b15756804c4414f8c450087241c2a90cd72 fix(web): scope every memory-banner dismissal to boot_id (NS-656) ba5dc00bb20128017204f1185e5034998e83c22e fix(memory-status): review follow-ups — incident-keyed dismissal, honest copy, single mobile offset (NS-656) 1745cf3b4022289c45f46c6fe3b58123b7ac0c13 fix(web): rename memory-pressure interface to avoid declaration merge with existing MemoryStatus e11d1ddc7fa352b781d3d4699749831905d40090 feat(status): surface memory pressure and suspected-OOM restarts to users (NS-656) ff190a646203c43aa378920f1a5a182c5ad19619 Inspired by Copilot CLI: plugin auto-update at session start + update --all 71ad6eb81a158bc5bba733b8ef0e2a6927d59c5b DO NOT MERGE run ci on all pushes cd667debfa09b70e4e1287bde430c7756f5e6490 fix(install-e2e): windows transcripts were empty; player gets #zip= hash + one player per run f52feed1efb4ccd8506821081f81000cabe5746d fix(azure-foundry): scope Responses reasoning suppression to post-tool turns (#84320) 342c2fc66c225b923330bfc7b42d678e17a78269 fix: eslint no-control-regex on the sanitizer assertion in mcp-launch-target.test.ts 5b6f7a4d5a615c6fb5c0c69bc2ee8c7489c34c48 chore: bump version to v0.21.18 (2026.8.13) ac8c6e4e051f3aba25354a4587c1f8666c70033b ci: cache electron-builder winCodeSign on the windows runners edb33be51164b7ab5edf8e31c28cba5c8fcc993d fix(desktop): persist dropped image bytes before attach 258d0976b77d991ed7ce1c7af4eeee823f1624b2 Port from MoonshotAI/kimi-code#2843: show MCP launch targets on the desktop consent card 486f4ace20ba75401681c0915ab79a0968fa6bb1 fix: voice dictation broken in profiles created via profiles.create (missing stt/tts config) (#85755) 2707183fed47ff920de05ac0121147180ad46696 fix(desktop): stop offering unsupported GitHub MCP OAuth db268eb168d25921f6864c236e96e78ef4d5133c chore: bump version to v0.21.17 (2026.8.13) b087da8e3b951d60e8eac9be19be4d3337b52c29 fix arm32 win builds e50db44b12dc52027d9ddcc235ae224dce966cc9 docs(hyperframes): document preview teardown to stop leaked Chrome workers 82763e9febed13523348cd774553dff93e9a0e66 fix: compare base-URL hostnames, not substrings, in provider-identity checks c8dca9723b2ce4d01a96f3a1ffa9d0eab5120d88 feat(tools): expire persisted tool results after 7 days via file mtime 40ff8eef436e523afe8253d448a2bb0afead0768 chore: map contributor email for @wangs1203 3ab7f849c155615b6f048c0ff1c72647d201e4c6 fix(dashboard): extend clean Ctrl+C exit to the Windows serve branch 931e1f7b153e166ac0e8d213937d753fb891b62b fix(dashboard): suppress Ctrl+C shutdown traceback 423f92e607dd51908d23b04758bc0fcd6ec5ff39 fix(desktop): connect pills reload tools into the session that clicked them 685a5c95ad8953c6d9c2f4514297d2e171305798 fix(desktop): a withdrawn suggestion pill drops its phase and cancels its work 0280cf09c4628efa3b45d5215b0d7f2d623b42e2 fix(desktop): suggestion pills paint the current offer, not the first one seen aa80956318086f87cadcd351b5de8eeb74beb61b feat(desktop): glass is the default translucency mode on macOS 8c8d55bd07575604a76f6df59bfbb42ceb6a71e6 feat(desktop): grow the MCP suggestion directory to 18 official hosted remotes fb1ee93a6333587aa0b4863c873b9effa8472c0b fix(desktop): suggestion pills wait for a completed word and stand down on workspace homonyms 30afc89960d8cd376add8b1c6a148b0228713b25 fix(desktop): frost picker rebuilt from a real material census; sidebar-only glass scope fb6a974cd080a88f9969753976daac699b0697fa feat(desktop): glass frost picker + full-range tint slider b6fbb8ca139a76586d6f18eac2e379d10ea1abf2 fix(desktop): glass cold launch — omit backgroundColor instead of alpha-0 7e21a2f281aa6f1136b0291fae639b13662a043e fix(desktop): glass was blocked by the webContents backing and two app-shell painters 89d3e43f5e61146bff46923dd8a9fc7a6cfc9d63 fix(nix): add registration lifecycle to pyproject.toml 5a357527e8377f49aeaf742eb7649943631a3d83 fix(desktop): even glass field via one painter; raise overlays; darken clear scrim 9d27c8ef68316745749a98065946e35e0fc08a8d feat(desktop): matte glass option for window translucency 6ed9a6bb8fe64c4facfb562bfdd897a764873708 chore: bump version to v0.21.16 (2026.8.13) 711f0b6d934cb2140a785a5f91a344b05603297f feat: nix builds the managed runtime dir from runtime-pins.json 2bdef2f87f5bd57779e2d3d5b58daf23c2f3d2cd fix: give the managed git the env it needs to find its own helpers 990b91c690f012dd8485521f11fac6c2e1803dfa Merge pull request #6 from afourniernv/fix/pr85582-real-relay-interceptor 596ad437a4a0b61a41a86682da683dee54469855 Merge pull request #5 from afourniernv/fix/pr85581-sparse-fields b0fcb54d862e6b5dc62cd926ef28b641b1ba7913 Merge pull request #4 from afourniernv/fix/pr85579-protocol-descriptor d16e2366df3f52d3d849a46a94ae3f42281fa268 fix(desktop): don't dial per-profile sockets for profiles served by the shared global-remote primary (#85665) a3cda34137f449034ef512caedd9f9fdbf8b187f fix(models): repair the two CI slices the default-flip broke 5b4c91f1dbaa3d446273504218fc8d237011e039 refactor(models): simplify-pass follow-ups on the refresh path b1ce502535b413a6308137cc214cd739036f762c fix(models): close review findings on the ETag refresh path acd8737c10f8fdfa6d3eaba6b22d6fbe6ba2a413 fix(models): ETag conditional GET, no-network hot-path invariant, mirror URL override for models.dev catalog ef9cb96b1a4a6e508211dce5037cb16396841a68 fix(desktop): re-emit session.info when approvals config changes out of band 53c7aa6a1b2cdad346312b07f361fc52754f9fee test(relay): exercise lazy streams through interceptors 89c44c0dadd12c79420a1e8ea78d7c7e354fc82e fix(openai): cover nested sparse response fields 8418ada162bf03127717774b257ce517fd865e50 refactor(relay): centralize protocol descriptors 2ae96939f53b0cc0aa82868fc9a44702f3dd6c09 fix(cli): self-heal cooked-mode termios drift that freezes CLI input d0021673905b37c16c9c77783f092feb35d731f0 fix: delete stale top-level route keys on /model persist dbe24dfc126aaca41a132d93581927f2e5abcb42 fix: heal bare-custom provider at persist AND restore; persist --global switches to the row b8f85f18e860ca2d03d1bf0e68f421fcf1ef63ec refactor: shared /model persist helper, canonical gateway_runtime reader, cross-surface route persistence, tests cdd0a26031648b8c152fe1937143fd069b50e844 fix: restore session model on resume instead of falling back to config default 4d30bb6bb86746330a7c5a840d70f101b2c239b6 fix: compose kind classification with capability manifests; per-entry isolation; docs 90dacec87e87ac5a30053371873b5fd31f3ce5cb fix(plugins): report entrypoint capabilities in CLI 17dc773156774c79cb434262b0f4699bf87ec7a0 fix(plugins): discover entrypoint capabilities f80f453ae0679347e38abc917c7f94f717bf96c5 refactor(usage): simplify-pass follow-ups 2c068d7680df132f3cb06551bf1d618413ab7ade fix(usage): close sub-cent gaps found in review ccaaca7e66b01dc0ac57a0b274ced7cd6b19982b fix(usage): cost display honesty — sub-cent labels, cost buckets, included notes 67ab2f296862cd2f3ecce615add7b5d72684a811 refactor(models): simplify-pass follow-ups on model_overrides de47d19f1f860c22bbb2235511d486c6342d21a9 fix(models): one canonical override schema, fill-gap _default semantics dafdba324affcce21842b5c7f3da3ca66a7bebf4 feat(models): per-model metadata overrides via model_overrides config cdea8214cbbda51c64290d44d07558d5e4f589be docs: fix stale parity claim in _BARE_BILLING_PROVIDERS comment 1c87772186c35115d6735d48a2b156b3c7cdf7b9 fix(tui_gateway): restore openrouter provider on session resume a364390dab3bb5050d639e94c4ed1b4c4ed77fe3 feat: forward repeat through cron.manage add (#85602) 3e5e4c5d20006e0f29f5389224ee0265e444dd3f fix(agent): preserve live turns in compaction carriers bfff32ae8c6a9c585431997a6cc3d791b6ec9af5 chore: map contributor email for @sjungwon03 (PR #79787 salvage) d0be93bd9a6fa34bb64091859d1869e3516ac159 fix: explicit fallback api_mode always wins; clean up dead-code guard 17a675574c2dca5d659738bb8775ac068ccc12b1 fix: preserve anthropic_messages api_mode during fallback activation ddbef9cd79a4348612f0b9bf0bc5f03c5bc9bd17 fix(auxiliary): keep ZAI Coding Plan routing a0939901df6534ace6bb8044c59b491148a1b27c fix: address review feedback from #85512 4fa728b6bed3d0f4e1313ea0c6d183963fc5446d fix: follow-up polish for salvaged PR #85512 316f31c9d5450c73896f6a3a727112dca13c6c04 fix(agent): honor prompt caching capabilities for aliases e505ff9777ca579f0ba2dee64f56a01aa483cd87 feat(desktop): add reset-to-defaults to the statusbar context menu 56104af1965fcd4368651c8b2b92aaf73ea27c3a fix(relay): unwrap lazy completed streams e514d3713e125cea52c27a20575b7c40606bf151 fix(openai): tolerate sparse response objects fe55b7786e3b8d131096a1e203769da9cc94fd3a fix(relay): keep client timeout off managed payloads 377784ac61aa5f08dd63cdacc92c6115d1384e86 fix(relay): use canonical managed operation names c69231270432914be78de4641651806f30654109 feat(kanban): GC stale done-task notify subscriptions b640e630358907bdd704bf94eab084f8cd586f0f fix(kanban): preserve TUI subscription after done 294272c18ca0564d70b0e1e69c89d370c7a450e1 fix(kanban): preserve notifier subscription after done dcbfc79f8d80773c8e8c8ee04dbf45e080844657 fix: forward include_disabled through cron.manage list (#85566) e5fd1c7b43d634e9ef1983e3d49aa7bc618e116a fix(kanban): make creator wake turns graph-safe b6383d4188492ab62636287d4a593825203efdd7 chore: bump version to v0.21.15 (2026.8.13) 056f10acf67e9f8bcf378f99f26bfa1147e142f9 fix(gateway): goal/heartbeat manager lookups for internal events skip activity touch 77166a5c465cfdb97ea6d695d50df6cb3d4d9249 test(gateway): cover activity-touch call contract 5462f689bac93efb988fc307a48a1f30a8e821a7 fix(gateway): keep internal wakes from extending sessions f57116b23135a34cfc964768d5637dedd9710a9a fix(gateway): run wake-only kanban delivery before cursor advance with rewind/retry 120e465c9741d1fbf8f98dcf85ecb9df7cf09a05 fix(desktop): show statusbar by default 4ef7ee9971ec930bdb7d50844c87f2507ad14c7b chore(contributors): map xaviersudre email for PR #75040 salvage 0b600c859aff172f2b62d2da7d9b08cedcb8ee61 fix(kanban): wake API subscriptions in destination session 720f0443a0a3b2655cdaf3c1546a4ad29dfe7873 chore: release v0.20.1 (2026.8.13) 991e2efdf48add9e490ac882b9faa18234bc7ab9 chore: map contributor emails for cherry-picked commits 541fad3c3c871b60d60e9c37669b3a2d7f4eb651 test(cron): reconcile summarizer tests with honest chain wording and composed no_agent gate efbbc993f62fd4a697ee45c9aa780293a9358cfa fix(cron): avoid false provider failure summaries e5573a8f8c6ac96d6dcb5d4f653ea24551014cb5 fix(config): recognize cron script timeout 7d039d7ee67f46eb8a80630721b275cf240eaa27 fix(cron): classify script timeouts separately d1fc20432f3b9bfdd89ad5ad7ecd50a6115e42af fix(cron): don't attribute no_agent script failures to a provider 2e3895224a1584522c451d9a25bc8518e52b16e1 test: update _ProviderCollector construction for new name arg e70b187d519b3745741d29a7b899a9ec6266fdeb chore: map salvage contributor emails c600fd46bd59e592e373ce50b98e5a03a5a40a5b fix(memory): complete discovery and registration parity for out-of-tree providers a883977b125d4d780fc9d837b8a5e3515b328afc test(plugins): activation-contract coverage for entry-point classification 450bd0930aaa0b124a48509aef72c0ad9c38f8b1 fix(plugins): never import parent packages of dotted entry points 826e9d18af3f924c8f41cc7b8ac954a925f62e15 fix(plugins): classify pip entry-point provider plugins without importing 364adc89af589d2a389ac42e5da1f53412b20536 fix: support packaged memory provider skills 74ce2990709f602d97f127e59b4d8debd622aa43 test(agent): align explicit-base auxiliary tests with host-anchored rewrite policy 6f33f510e84d1c199a9a0d98872f8ebf77808f44 fix(agent): anchor dual-surface marker matching to the URL host 0d24c4f4135383d132a8cde01b338b26ef59ec13 fix(agent): only rewrite /anthropic→/v1 for dual-surface hosts 266b2b361147dc3d9f770a3c63b5c4a71c5f67d5 fix(update): repair failed Node deps on an already-current checkout (#85539) 6257405fd5123a120068546ea776734795e7c570 feat(skins): add bunnny — barbie-pink coquette theme ♡ cd344a280fe63199d559dae6f75d8df149c58e71 fix(auxiliary): honor /anthropic-suffixed gateway base_url on aux + fallback calls 56f7ccd7a66c4df4e15f035153fa31ae3cf34090 test(kanban): opt wake-scope subscriptions into notify+wake delivery mode 5d3f75110a502bb7a9846f6265c67ca0bc4ed9df fix(kanban): key terminal-event wakes to the creator's workspace scope 08d9f27773c4077f634ce3a54d71489241ab054a fix(install-e2e): results chart 📼 links against real artifact names 6a198f8a12e1dcfba79238c1185987b552395df0 fix(install): a failed Node dependency install now fails the install instead of printing success (#85537) d0bb377c9689df938a5d4699192c2d37b9819f26 fix(installer): recover Windows setup when node-deps host exits abruptly (#81390) d92d174ca4313c089ab57e092f39a9667e4feb7f feat: nix builds the managed runtime dir from runtime-pins.json d753957e8a12cd75c6192a6a1d73915a7a33fd9c fix(install): Windows setup no longer hangs forever on Node.js dependencies (#85529) fa92aa1984b0a7825cc1c50b2ece5a1553747c1e fix(desktop): keep a markdown render failure inside its own message 1641512c94c4e1fa95aa0a33c47931ef7f63fbef fix(desktop): bound raw HTML nesting before it reaches rehype-raw 7afac122efde1db6172b2a6ad4020f7aa7380343 feat: profile asset store (profiles.set_asset/get_asset) for avatars (#85530) b8d9230cf2e9f7e042ada149ee506a4d8d9df9e5 feat(models): add google/gemini-3.7-flash to nous + openrouter catalogs, drop gemini-3.6-flash 787f42cc162f02cb3f2fa1705e45e70443e33943 fix: route image.generate through the provider dispatcher (#85520) 70143def0fccc38aeef064a94cb197111281d92b fix(docs): remove stray conflict marker in cron.md 3fc320c7c1c08df682f6f74c04cca1bc3ee507e3 chore: map contributor email for cherry-picked commit (#72056) 9f2fb838e230a149a90618dbe5d0cd5a81e61b7f fix(cron): classify TERMINAL_CWD lock timeouts; scrub environment-specific comments 05a84f205ef92ce0208591c065b41df9fa02dab1 fix: clarify one-shot cron drift recovery d6d4338a015e7072af7f6ec45a872e644f8e4876 chore: map contributor email for cherry-picked commit 422c3eaa18947defea53f4cbe6df269f58664a1d fix(cron): deliver the drift-skip alert untruncated e6ce8c37f151a32f58dcf10f1816af0661c8d5c0 fix(cron): drift-guard skips alert once per job, not once per tick 4282c69120d530f96290f06d84309d2a97c292d9 fix(cron): name the remediation commands in the empty-chain failure alert a830c73adb6144f23bf9b46024ebc9a4493e0f2c fix(cron): fallback-chain wording reflects whether a chain is configured 0b50c8e48f548e6c3b181aeefd8e1eeaacf51a16 ci: wrap uv python install in retry action on OS test lane 53ab06cefb5eab17cc1caf33ca25ae938256cbe0 docs: unified desktop halves are opt-in 7c48dfba79fb798edcb04d18641f9898a7079e9e feat(desktop): ship unified desktop halves opt-in; guard cross-root inventory rows 01773dd73302c39cff46edc4784222c71a63327d docs(desktop-plugin-sdk): document unified one-package/both-SDKs layout 4c1365b6c4053040502db27e4f1682e63635c4b9 feat(desktop): load a desktop half from unified agent-plugin packages 6026247ad704ddca8d914f6242343f0f6ab9fc98 feat(desktop): group-chat presence UI — attributed member bubbles, typing pills, roster strip 7583a41d9b0a09df6521ac05c69341ae397b71ae feat(gateway): per-turn group_note on prompt.submit ab4d79c75cd0d693baaec8cc21ad92f88ce264f6 feat(desktop): in-chat group sessions — @mention wakes other profiles into the room a41d1be2da21eb1044f056db15efe3642caf3d4d feat(desktop): @profile composer references with rail-colored chips 91c7a67f44f60c984d12283569bfe073a7d57624 fix(sessions): close the session_switch legacy gap and fence the resume walker at reset boundaries 5a10537b24f84b1f16f5d8d84201558b56b92c23 fix(sessions): stabilize legacy reset lineage on resume ce89afa59ccaaf063694f7670153d62ff69dfa55 fix(sessions): keep reset conversations listable ac9b9f54ca8859b245f780f896585459324b15b5 fix: drop uv.lock change to avoid team-review requirement a569d5bb1b23d7f6dcdf3e81df6b5538213157f5 chore: map contributor emails for adopted commits 12269700013e97f9e88e1fdb1f5c63e2dee5c08e fix: track and join honcho-memwrite thread in shutdown 9e77d83354f2985d34f026cd233395d79a488c5e fix(honcho): gate memory-file migration on the declared owner 27021f5f840b3952e842122b0397035d09a0ba72 fix(honcho): resolve migration owner gate through _resolve_user_peer_id 7bad91c51d94de86924909ce2b5388074c1ac3dc fix(honcho): skip memory-file migration on non-owner sessions (task #00000801) 756aa54b67a4934d9231cbbf3629adece7920494 fix(honcho): honor writeFrequency in sync_turn by routing through manager.save() 9cfff1546d6ede381221c30fda52ea9a6feaef6a fix(honcho): join the session manager's async-writer thread on provider shutdown 08b331203149bf252bf7273602286e4fd171ac8d fix(honcho): persist one-sided turns under the empty-content guard d610b238c63ee865ad4e4ca8cf104f52720cff6d fix(honcho): extend saveMessages=false guard to shutdown() flush 2042b3122b1c68e80acc09b33832bc0bb2258eed honcho: honor saveMessages=false across all automatic write paths ffdc0b0be6e0abed164bbfe1bdf95ba0959f64d1 fix(honcho): enforce saveMessages write containment + reject gateway-internal turns c28c43470616a689a61243e889eb004d73aedc52 fix(honcho): surface honcho_reasoning backend failures instead of 'No result' 606481586a0666847a0882e41daa12e00ee3f7c1 fix(honcho): honor explicit top-level apiKey on local base_urls; warn on keyless profile host blocks 32238f99425681b3dfcba4f87ac6c6c9474caa8d fix(honcho): resolve peers host keys via profile_host_key (underscore form) (#76414) 41d77caf11d53b6af25eea9c74221b5063900437 fix(honcho): drop non-printable base_url values before client init 968f5dbe0086f5f4c406d9f75493abdd1285177b test(honcho): pin the composed baseUrl precedence chain and the dot-form 401 regression c5f6f58d661c21fb66279dcc3327703a0252415c fix(honcho): use _host_block helper for dot-form legacy host key fallback (fixes #37436) a97d6747f3e0e8ca8e57f2264b2de650277a34d6 fix(honcho): honor host-specific baseUrl ad588542ea7fe54c2261239a163fb54e50e02935 fix(memory): read endpoint.baseUrl from Honcho config; accept HONCHO_URL 5118692c256742c71efd203d556719ea832d41cd fix: replace double-lambda with functools.partial, close from_env config_path gap 3a7d29a8ad3135a89ef023f49c65653b4e78f535 fix(honcho): drop unread _client_slot_timeouts bookkeeping 1248e4e7bcbbc050d12535e18a4d106e3b8de60e test(honcho): pin multi-profile client isolation end to end a5dde2d176cbf6351512fd70d3d9dd1ba59d5478 fix(memory): propagate contextvars through MemoryManager background lanes 671f9cbafa24265324976fb9b802e02002a7c138 fix(honcho): propagate contextvars to all plugin background threads 696470ce8a50b2f74a8662d0e6424906658fe482 fix(honcho): cache clients per identity with a rotation-stable credential fingerprint 8b7d0ed4c7df200bc4bc66b2560b040b54b64a92 fix(honcho): bind config provenance so background threads stop resolving the wrong profile 7e88373ea1fec9a3e0a925eb70f2231f231d01da docs(slack): document native streaming and native task cards 21245fefac287bbb4eedef02f3492d1f45feffbf test(slack): cover native task-card progress — ID correlation, workspace scoping, fallback 56f8655bc6b5691c3ae748aa697ae5539ad75b89 chore: map simonvanlaak contributor email eb137762ff99f16d798eea0907d25e56b32824ba feat(slack): render tool progress as native plan/task cards (opt-in) 47ed5e4964aab694d418f90a321f652093e7057b feat(slack): native streaming via chat.startStream/appendStream/stopStream 35720fbc441fe8e2198a53860baffe41e2d9fdb2 chore: map contributor email b09e1daa84153a9bc852ef712cb4c36cf56a06e1 fix(agent): reject stale 32k metadata for MiniMax 69b27e3c74d208fbdce8097cad03c3bb869ba610 fix: gate entry-point provider scan on plugins.enabled and skip register(ctx) targets dbbd8935e9b891a2573fd4a7050efdcf7e98ee1b feat(providers): discover pip-installed model providers via entry points 005dfcbfcc5d3384986bb276b6d5c788324d2559 fix(tools): symlink-safe exclusive creation for all spill/cache writers 6def7ce1df85bebb316fe06ed6cbfd0f8e0d25e8 fix(models): write context-length cache atomically acadd719d3d9deae156643eb9d1b0c5f4330475d docs: note Grok 4.6 priority overrides in resolve_fast_mode_overrides docstring db5e2402c2e869720aecb2b7bb9b14612e09ffdf fix(xai): preserve Grok 4.6 wire capabilities d3a8be46305b09ad2ff55aaa6b6114c2c8ad94b9 test: regression coverage for the non-positive context-cache guard 2fb28ad3d4caaca3e19a7e700ed2bd03377a1bbc Refresh context-length zero-guard on current upstream/main e49a7fe568f9de27d855560d2206272d53d20370 fix(google-chat): post cron deliveries as new top-level threads, not replies b812c34fb9966acd55fec0bef81bbd6afccd522f feat: manage npm 12 as a pinned runtime, ordered by `extends` c495be19aac01ab05a791f80e68865a50ab2cc42 fix(kanban): inherit ALL routing columns in notify-sub inheritance 88557667162f1fc875be6bfa38ba68191d7a8252 fix(gateway): expire orphaned drain markers past a max-age so a leaked marker can't wedge the gateway (#85433) 4a6d3640b99b412238e710b6bbee56a227efab61 fix(agent): default context lookup for empty model IDs 6a1103dff26f2bfe746edcc8ec2e9c4ed34968b8 fix(kanban): default api_server notify subs to notify+wake 0818086c50c08c3c17cd6efe0b4683e02d517a45 fix(kanban): backfill legacy gateway notify subs to notify+wake on first migration 6e81ce273cd70bbffdf88cac5cc2ad3ea0cf929f feat(kanban): explicit notify/wake delivery modes with faithful wake session routing 9c5d08c0d5ca911f41870b73edbd04c408260113 fix(gateway): /sethome must not persist Slack's synthetic per-message session thread as the home target 58ff0fd30229804b39c802c8ae3aa61585b43ff4 fix(cron): relay-fronted Slack delivery — synthetic creation-thread capture + preflight fronted-platform blindness 8b243dff62261a9b69867b61b877bfae9f946d7d fix: security + efficiency review fixes for salvaged PR #74379 34c727c5c2a44fd83ab2f60bfca991f262d0f98b feat(hindsight): memory provider improvements — recall_sync, retain_source, setup templates, memory indicators, error hints 151e8af932e1146b73b125cf3ac10c1825331cec docs: document nemo_relay session-span segmentation config 85e08110fbc623d967745e2231b84e3b8682d65c fix(relay): defer rotating-compaction session close while a turn is live 11c74beffa2a6b08d74c8cf517179cd6dab8e6a4 feat(relay): session-span segmentation for continuous sessions 1df33dccfe014179dc9961e177dd9d1d052b39f2 fix: restore stale-base revert hunks in conversation_loop.py and moa_loop.py ace830134ea393f17cbfff5018b6c375830a1977 fix: reuse redact_sensitive_text, fix leaky abstraction, fix test data e665300d6b1edb94adcbae23b8d3ba4410ecafa1 feat(langfuse): widen tracing to errors, sessions, subagents, and MoA fan-out 3cf8293e44046517ab18dc7f328dff3047b05544 fix(auxiliary): keep /anthropic base_url for anthropic_messages custom endpoints 24ba86627515ad5fda69a39ef338c365713448bc test(slack): cover handoff-thread ts and standalone media send response reads 9cf2cbd38245574d994dbb64fdb0ca30315cc711 fix(slack): read real SDK responses instead of gating on isinstance dict 91e550b0cf7822875fad537c238d584aedd2dcc5 fix(model_metadata): generalize pre-catalog stale context-cache guard 53ad7794e5810fa48cb532edf0308c647fb8d0da fix(xai): drop stale 256K grok-4.6 context cache c41db467fa53d0a48607b13d3654925c9b0dea32 docs(delegation): document delegate_task action='list'/'steer'/'stop' live orchestration 0e030b03f4eb923f534a15f0bd26a4d31081fcd5 docs(enterprise): overview, concepts, deployment, installation, security 2a6903fd07f3b9955c906039f6ea1e9c48ae9216 feat(enterprise): controller — deploy choreography, rollback, namespace lifecycle, CLI 8820cd5a90ee2afc2974c1dc7f773f303db55b96 feat(enterprise): deployment packaging — Dockerfile, Helm chart, RBAC, smoke script 77a17b9f17fc105003032835c059a7bf28361aa0 feat(enterprise): secret brokering — workload-verified, value-free secret operations f5da9815b2c69223be072e10a2037334fae3d944 feat(enterprise): native IAM — principals, roles, bindings, restrictions 11f69d28931d4d132f3e86642a6fb03f9750f96e feat(enterprise): K8s sandbox driver — verified containment before harness start eb65da4fbdec0054a99eb76d07faa1d2c68aa88c feat(enterprise): KubernetesComputeDriver — candidate provisioning via kubectl, gated harness start 983ca66dae751cac5aab4420bfa8492eb9232be5 feat(enterprise): access gateway — fail-closed identity verification and tenant admission 1a796a12472598dd365f34c90b87ea8022706a26 fix(model_metadata): never fuzzy-match an empty model name against endpoint catalogs 996ae10ebd33f6003024e5efd789e503295bc5a6 fix: use handle_request for voice.toggle in audio guard test 4498daf00f9d26af6898f0fab6a5f8f7b5ae84bc chore: map contributor email hustwkr@users.noreply.github.com 3b3bda7b00df9fe238c06783dc6a3301a11f9a42 fix(gateway): pool-route wake.start/wake.status — same STT lazy-install chain 6a9d2dc2f3a2fa59ab717c4e1b4419567290f34b fix(gateway): pool-route voice RPCs so STT lazy install can't block WS sends 9a71b400537fac2f52aa1a0ce9c7c6665f1c5217 feat(enterprise): control-plane core — resource model, store, audit, driver contracts 2ffed55c322ed3c0db90305c02007863a26f4037 feat: server-side ui_meta on profiles.list/configure (#85440) 8d4b1e4b0e240af67c1f4eb6601aee99eac0bc49 fix(cron): apply create-time origin resolution to the update path too 68d8b2d4de9c258513f1d51d29a7082882012556 docs(cron): document agent-managed scheduling and create-time delivery resolution a297edf3ce2577f8cdb5513f5fba2b7ce2bb2547 feat(cron): resolve origin delivery at create time for cron-context job creation 6e76c2698cecd8a08a5397faa26afb741352a1e0 feat(cron): config-gated agent scheduling in cron context 49015646942b0ff858445a9ac40653b1c181538b chore: map contributor email 02df90fc0cf30c6fbe78b86fd5dc1512fba89303 fix(gateway): propagate compression exhaustion result 09993ea41a7a9775a1385520e23b550cf5c9e067 chore: trim hook test suite to core coverage and condense hooks docs c7c687aa4bd30ea51d12f3b1a4bc8a65ab43ba1e feat(plugins): rename hook to transform_api_error_classification per #64231 verdict e9a29b9bda713ce307e9ed757679f0994585d318 docs(plugins): point classify_api_error at the hook-taxonomy contract a2a99418ee69aa35476814d33125aefa0edb02e3 docs(plugins): conform classify_api_error dispatch wording to the mutating-hook taxonomy 0180907fe8086096468e172f8fa2f29fc566466d fix(plugins): synthetic hook fixture, shell-hook exclusion, docs per review 1d93b549ca11d149c3033bd7008f313a1b7246e4 feat(plugins): add classify_api_error hook so provider plugins can own error quirks 6ce0231478a80b95dce38c617edfdba1d608eb75 chore: trim observer test suites to core coverage and condense hooks docs 5e10351683bc3f041fa36c1696160df41c0fe873 feat(plugins): kanban worker-lifecycle, task-mutation, and dispatch-tick observers 2a26693e22f43f29319be15d12433c95a4eaf6a8 feat(delegation): live orchestration of running subagents via delegate_task action param 75736cd3a4dcf50a370252eee36e26ac1936d3b2 fix: don't double-count session-stream turns in the shutdown drain 001bcb908e8a17e53435711bc9dc9db750bb8e87 feat(api): steer active runs 1fd21cbd0f519ce6fd82e2f2c8cc2852060cf22f Merge pull request #85410 from NousResearch/jb/mailmap-yoniebans 4d1aa2d73560ad4ba317dad1ce06f077e8543e19 fix(mailmap): jonny@nousresearch.com is yoniebans, not jquesnelle fa83af3f9a42790730b8966ff67e7d9fb627899f docs: update picker paths to "ChatGPT or Codex Subscription" f795812c1655176155893994eceb0c030248ac1e feat: profiles.describe/profiles.configure ws RPC for profile editors (#85216) 94be91941136a69fbe078d60ece1cfaa9358bbe0 feat: rename Codex OAuth provider label to "ChatGPT or Codex Subscription" ecdc25cacc8dc7534b33abf9e9b09a9bf41e59b7 fix(agent): hoist checkpoint carrier guard above the reasoning branches 6c2d4efd02b9fd08146b71864032043266fc75ad fix(agent): keep native compaction checkpoints out of the thinking-only drop e029e300caa1229164edd48e7397c09e1dc5d197 fix(compression): harden native compaction rejection matcher + config coercion (#82777) a723351a9257e705f5d58c644f664671b2c4e96e refactor: hoist preflight clear into restart handler, single-source qwen predicate d7517d6e734a05050211950ebe9576e2438d2527 fix: restore empty-response fallback retry, dedupe alibaba set, thread TTL into aux replan 9a5cf8354102b28e3c24bcb7fa3da17658f59fb8 fix(agent): propagate prompt-cache TTL to MoA/aux, clamp Qwen 1h, re-preflight on failover (#84733) 7060ac7bedd9128223a5f226e34e734072749845 feat(computer-use): provision cua-driver at install time and on toolset enable ae56c97c6063a87250e74eccfb5697dd303bf930 feat(desktop): show full session title in a tooltip when it truncates d254ad616f1747945ecd6c9a1a724fee05bbfcaa fix(cli): align _build_web_ui's npm closure with hermes update's (ui-tui + web + --include-workspace-root) 94f095e8b75c692a745f95f973dc19f22653cf77 test(ci): close the pytest-wrapper gap for check-windows-footguns.py 793f0b3ff172e157e441be262963e958f6fe30e9 fix(install): stop npm-installing agent-browser eagerly in install.sh/install.ps1 047a45e41071f93ad4acd7880f32e3e372c27d6f test(browser): cover warm_agent_browser_npx_cache's hardened behavior 737e7aa5628b445918b30eaa8003cf5dea1e2b57 fix(cli): protect root devDependencies from hermes update's scoped npm ci 03cdc3b20c591171fca2d2c9049fcb793858c7fd fix(browser): harden npx agent-browser resolution 7cb113d6c886499edd033b96b22ef0ee2341425e fix(cli): apply Termux carve-out to doctor --live's npx browser probe a9a0e2da070edc1d2657f58cdd2ef962658a046e docs(termux): correct browser prerequisites for local vs cloud mode f4d3592b65f7cc1787d28c458efbff3f10fec8e0 fix(cli): restore managed-node-path and PATHEXT-aware fallback rungs b9cbcc6bf56b1441f82034166287342973717ec4 fix(cli): teach doctor --live and dep_ensure the npx agent-browser cascade fa85964ac1ae63307320c81cdad687079c829bbc fix(cli): warm npx cache before hermes update's lockfile-unchanged skip 675d41fb25012ae039a81aff7491e12cf214ba00 fix(browser): pin npx agent-browser resolution and share a sentinel constant 31337b388b17a91386129ebe1b7e98da159c2c1c fix(test): mock subprocess.Popen for npm engine-failure watcher path c196e0f08f6252b757c4d1a99863dea756b6d6ab fix(browser): hide console window for npx cache warm-up on Windows 5eaabe38bcd5a7dfdc9bf3bdef0558fcf8a49af5 fix(test): accept path kwarg in shutil.which mocks for agent-browser cascade d09bb0cdeedd9f7e3062ea8cdca8120aa116e00e fix(cli): teach _has_agent_browser the npx resolution cascade 44170c271363dcb672078c84606d038c4c87c980 docs: update agent-browser install docs for npx-based resolution 5f5f8d5b62812db00f6b6d958d6dcdc07893db3c fix(cli): drop agent-browser/@streamdown-math from root npm deps 136a911065fd259ca479a8887d5a1c2bf52d9a3b fix(whatsapp): classify npm install failures as non-retryable fatal errors (#80095) 6f3dcabfebacf1ff83de7b8366a0cc02262bfd94 refactor(openviking): reuse _headers() and _status_code_from_error() d97667008109cacd667d2876b64b7f439b8fd4f7 fix(memory): authenticate OpenViking cloud /health when anonymous probe fails ccce6976e3f88d0215ea03a6d28c2c6fd4a011e6 feat: image.generate ws RPC for plugin surfaces (#85183) cc389f81550180ad81bfddaa8b40dd0338d13c6d fmt(js): `npm run fix` on merge (#85175) 926c8d591a3a384d0e0cc3f406787eaced6a9032 feat(desktop): cron + blueprint recipes in the sidebar nav rail 7fa084f58ecf496c2d3b7a8f8d7afd0843103895 fix: send Hermes Agent attribution headers to OpenCode Zen and Go e4b3b91b6266c5c873e080aa5b6a343558648b5f fix(compression): prune pre-checkpoint history on native compaction replay e4aeb655994d98d810380fba80ffca4554b691fc feat(webhook): per-route toolset overrides for webhook agent runs f4749a77a58c6221fda77fc31a16b3d6ce560100 fix(mattermost): escalate genuine WS auth failures through the fatal-error hook 684c18b42830d053126bc677c1ea786409b612e9 test(mattermost): add verifier adversarial coverage for 401/403 classify fix d184d68f3790eafc99996b5d3501e3d8f39c2865 fix(mattermost): stop misclassifying transient errors as auth failures cfc5e098f278ebc40f3d302885b08129945636f2 fix(sdk): keep all-profiles sidebar scope on cross-profile openSession (#85155) 04d82221158ac8b3f801e9736809b54b9f1d613f test: use constant in log assertion instead of hardcoded 75 64aaf56dbc26f6e9ff4fcea1d1246d29116003c6 fix(gateway): contain cron provider shutdown exits 657fd6a116d666c5b041ca33f2a4831cc45c8ee5 fix(tests): close SessionDB before rmtree in codex persist test a7f0abc8456e2cd420f74a42f81fdea7d50d4951 fix(email): dispatch partial batches, seen-after-fetch UIDs, reconnect UID baseline restore 9b8da52f413b3bbfaf906b0950f677d117c0c59c fix(email): surface IMAP fetch failures through the fatal-error hook (#80016) 8b387962ac3230ee1cf0a8040dae239eb0c0a247 fix(agent): suppress windows-footgun lint on POSIX-only killpg branch 8ac9ff18aecddab97a6ae9722086b2fa8fe99211 fix(agent): harden deadline layer per self-review 90c7180dceb40cf7afacca0dc8c30f7867705008 fmt(js): `npm run fix` on merge (#85140) 05fb89b29c68ffe8dc091c3f730500a6557f9a6d feat(optional-skills): add interface-design UI/UX craft skill a4f468e8325118b7f2bf2208eb2edd78c8fd5231 refactor(gateway/desktop): consent-first truncation precedence + dedup (simplify pass) f6081b664753ec50f062e78c5a884778faa35c12 style(desktop): satisfy perfectionist import order + padding lint rules 42eec4ab386775c08815dd4af9658d6ca79c68f2 fix: return survivor row ids after rewind so clients can rebind stale rowIds 4aeb6f4a4f9615e1573b2606fc5e638107372af4 style(desktop): drop stray semicolons in rewind.ts 040420bd1143b9d8cba8f4d52b484d84fe86fdff refactor(gateway): dedupe truncation-target validation; drop dead state and redundant test 16de3c3f1b29ee691900cfaaa445a37cf59d2453 fix(gateway): verify memory/durable alignment before trusting position in row-id resolve 23da6d6fe2368b9bd228f491ac537f10b5f5e9ac fix(gateway/desktop): durable row-id addressing for rewind truncation 083f8a60711d17eb713b7d3189dea249322f914c feat(agent): unified deadline layer — bounded execution primitive + timeout resolver (#85125 Phase 1) 9bb902c905041de5286a4d47c1962c7e29acbd88 feat(mcp-catalog): add patsnap patent & literature search MCP 09cbbd9e4d892fd86f3ed6300f0b4105988b9ad8 Port from block/goose#11173: classify byte-size request-limit 400s as payload_too_large be0cc364c0a49fef5b8bb79c2a87de3ebc8eaea6 Port from RooCodeInc/Roomote#1218: keep scheduling cadence out of cron prompts 9460cc11d41d54f6fa09cc13f94910fa31eabf6b fix: profiles.create mirrors launch credentials so new profiles can run (#85111) 9deb0302ca306bf51baa55b588a972591b07e69a fix(desktop): the sidebar remembers grouping per workspace scope 9be9925467f336efbc5139bd8d7b69616721dd69 fix(desktop): themed fade scrollbar on the virtual list, not overlay 81587c4f8fd0acc29a317dd3e92f54d9bd01218c fix(desktop): inbox cards render in every sidebar view, not just flat recents e7032bb26743a11d1e725e9b1a689aede3f42471 feat(desktop): recurrence-to-cron suggestion provider c8cad1cc9efca1bfb398154f7d6c703eddbc903b feat(desktop): skill-match and connection-repair suggestion providers a3da6d8071d4467d730a8c7f5183aa9e43019626 feat(desktop): quiet suggestions the user has repeatedly ignored fe5e7799f248fabd1ebecf5a0d5e5de8831163b7 refactor: fold tailored intents guidance into the connect classifier b10e7890b6fb3980dd288ed9710f50fc282646b2 fix(discord): name missing privileged intents and stop reconnect loop 590d547b40f36a6b2286fcd781a05545d199409c fix(auth): tolerate legacy Codex suppression data c28114a5f8b13e8b294a7ff789e45f3503b6cb0e fix(tests): isolate suite fixtures from host auth 654435210c4d4cfc0a568b6dfb752ebbe51a9a80 feat(cron): surface model drift impact in Desktop 1ef0a366dacadd4224e3c262e4eba26e87eaa6de fmt(js): `npm run fix` on merge (#85098) 89a84e1ae6ccb226ed6c66c0c58193b850177818 feat: profiles.list/profiles.create ws RPC + plugin session-navigation doors (#85093) 91a30705eb08e4d249b6145cb9babdbf353d7d4b refactor(desktop): generalize the composer suggestion pills into a provider bus c7a1bfea07762b82ef47e0ba31042963dc359490 docs: note the clarify recommended-choice ordering in the tools reference fd6af8f832ea30e4680af6d3ace2b2f4e17f3d47 feat(desktop): render the clarify (Recommended) label in tertiary text 10cf651484019c7932c63f878ffa838821ce4919 feat(clarify): label the agent's recommended choice on every surface 08a3b20dff6d08835e55690cbf82c656cfeae545 test: register setup_mcp in the desktop_ui toolset + post-hook contracts 6ef0fc4f6250a4a45cd52996674bd4f8b5614306 fix(desktop): cancel MCP OAuth flows server-side so a retry doesn't 409 3efce9b98c36fdc731eeca3277f98c14a081b0fa feat(desktop): suggest MCP servers from the composer draft as brand pills 6cd4793081976efacff878febd59d1660ae331e8 feat(desktop): render setup_mcp as an interactive consent card in the transcript adbc77eb507e11e0bdbd42d64866aaa861b0d51a feat(desktop): setup_mcp tool — inline MCP consent card over the clarify-style blocking bridge a9eb7e09d9b11c558aa764f936655c43ef61e5e2 feat(desktop): marquee clipped inline row titles on hover f84ecd36071a83f3a56927b16643507079b74683 chore: map zhjay@stu.xjtu.edu.cn -> ZHJay for contributor attribution 1535c114c967354c83f2d17a7512382a53747e9f test(desktop): cover connection.json owner-only mode end to end 7e151bd9d3cb1daa8f4c7897acb39b9ade7be42a fix(desktop): create connection.json owner-only 7626105380b78bd360a20fe3ea3752046efc4a45 Merge pull request #84943 from NousResearch/bb/review-summary-chrome 6397776fe897b96ae1bd85caaeded23146c700c5 refactor: simplify discord classifier + move attention threshold to config.yaml 91bc82233006bc77f4a877717ef36eac4fb1cc51 fix(gateway): classify terminal adapter connect failures + escalate long-lived retry loops (OOF-156) 5af2c2ff523097b0ca4008f76572d5455923737e fix(desktop): messages typed during approval/sudo/secret prompts run as the next turn 3d07b31f1c629ef573a4761e4d02e1e862deaefe style(desktop): keep the inline row's trailing figure off the right edge 04846b212052fdc66727cc32fda4af4228cb62cd ci: retrigger after 0-job workflow startup failure 1706502aa70485440a64127475f780c193784d6d feat(computer_use): spill full element tree to a cache file and report numeric bounds_scale (#85047) 4ea2a0e546b16e3273c896d1698c3d60d524eead Revert "Inspired by Perplexity Computer: Model Council mode for Mixture of Agents" 825a9753c103e9cade72554b120503b8769ecdfe fix(computer_use): resolve cua-driver at its official Windows installer path (#85038) 6c9d6d9d5b70692cc14ee8554e3c8ce14861d98b fix(computer_use): keep capture responses inside the tool-result budget and surface coordinate-space + typed-page hints (#85037) a1817c188d2e7b9e652bf130ba6924194b842dbe fix(desktop): unbind session tiles from a reclaimed runtime so they self-recover ec69a884db3d421bf422754df96428c4ad32ada3 Port from lobehub/lobehub#17937: surface Gemini promptFeedback.blockReason as a terminal content-policy error 08606fc2317f591f4e73292670be65a9bf35da72 fmt(js): `npm run fix` on merge (#85024) 4d9202b9633fa8e5d8e47b8cb9e07ff3cd92636b feat(desktop): right-click the shell chrome for window-level actions 071d27d1c355324f6ab7fed121d08f5fd1b4c520 feat(desktop): paste a PR review comment as structured composer context 2960bf37ab5863e6b2b6d1bdb70fa5d6c823c60b feat(desktop): steer a queued prompt into the live turn 07ed2fdb60478705488dbe0df36ee631bdaea7bf fmt(js): `npm run fix` on merge (#85010) 8018f9e016a934fe68174ddfa6e7e735956a4c54 test(desktop): shipped sidebar defaults now include the preview line 8403595f78aa68e86373440e6674857aad90580c style(desktop): satisfy jsx-prop sort on the recents section card prop 92620e4ad3271c4c74d55ebe08521bb54c395827 feat(desktop): live task progress on inbox cards c96e0daba597f048b363c8c33059946a0956d86e feat(desktop): marquee clipped card titles on hover 45f663b7467db93f130a2ce0ae8c57da0a04d37e feat(desktop): opt-in inbox-style session cards in the sidebar b6ed6542a169f8e332b3461dbbc30ca03207a4ef fix(desktop): stop double scrollbar gutters shaving the recents list fb206fd12bb65b3d7aabe37e151c8ab915aee7d0 fix(desktop): idle sessions without a project color get a visible dot 1518a9fe8255058eced79780200c95ad39bf32d9 test(desktop): shipped sidebar defaults now include the preview line e3983f91eb50e4942c50a9c65318437ba6ce0540 feat(plugins): capability-gated ctx.platform_actions facade (#64176) 3b7c940208ad586bc4878f3970b46aec02da1b94 feat(gateway): more normalized gateway_platform_event types (#64176) da67b214ebe4728e441447826385dfbda9c3a749 Port from block/buzz#5318: recover text-only endpoint 'not a multimodal model' rejections 0bf0d6fbfb4734a7eb6b6a631f365c0187ad0a3e style(desktop): satisfy jsx-prop sort on the recents section card prop fe8b44dac4d610a760779c888921ca6d4a19c9f3 fix(ci): sync lazy_deps SDK pins + update WAL vacuum test contract 41ecc9c6447ed43701658993d051bb557b96b0cf feat(desktop): live task progress on inbox cards 46e20083d8e2597745e4b9f98b5861b358758d37 feat(plugins): plugin packs — declarative, shareable plugin sets (#64166) 7c31a3ff09888f86de1d54dc3fdb1ea0070ace66 feat(desktop): marquee clipped card titles on hover 14ede2c6ee4208d7f34330b4535043fe195d6a2b feat(desktop): opt-in inbox-style session cards in the sidebar f4c2c263f0672a4b1485f3071cd5f79cd32d38ab docs(plugins): note autostash behavior on plugins update eb214ad148c2c55e8765de4d964f972d4d7a73ed Inspired by Factory Droid: plugin updates autostash local changes 6ee58f4088e70798b51e001ab79adaec3b34fa4a Inspired by Muse Code: opt-in git worktree isolation for delegated subagents f508c6e40a373cc3296d0f0e71c79361f08e2768 Inspired by Perplexity Computer: session-librarian skill — prompt-driven session library management 314968f5fb6e27f59f7d1cf37405d504c156222c Port from PrimeIntellect-ai/prime-agent#1258: derive OpenRouter reasoning support and effort levels from catalog metadata 25363985e90a41d0540c05d6b6c8379263ba443e fix(skills): shorten blocked-page-recovery description to authoring hardline (60 chars) 537722bf65ecbe06eda0c6aa527a54009b9d0153 Port from code-yeongyu/oh-my-openagent#6662: blocked-page-recovery research skill 3eac116b9d56dbcb7ed2a8624fcf28477d12f280 fix(mcp): invalidate OAuth tokens when the configured client changes 8d9e18d40b60426113adec32cfb6c7a6a816bdd2 Inspired by Perplexity Computer: Model Council mode for Mixture of Agents 1965fde3940f2a0ed02ecefa3419dd8daab24a8f test: update Windows shell-hook flag test for the Popen-based spawn 3b9d1b3cde8f5ca48362004caa17e373b5469174 fix(hooks): kill the whole process tree when a shell hook times out 91345435a1b296e724f9a930182d08d97f21967f chore(deps): bump platform SDK pins — PTB 22.8, slack-bolt 1.30.0, mautrix 0.21.1 97c06dcfd7caa3e96c42f0ad36c52b1c36c38efe fix(sessions): probe sqlite3 CLI for .recover capability, not just PATH presence 6dad74596e468c1f1abc2cb6f745992aad3d96d1 fix(sessions): recover budget exhaustion + lost_and_found last-resort lane 7d0b5a332cb5d6dc8a8ac84d705261c01e536058 chore: AUTHOR_MAP for zhouou6@users.noreply.github.com → shali10 66d7a39ea68141b27c2839c48e4c995d60717ccb fix(state): self-heal 'file is not a database' write connections + retry transient EIO on journal-mode probe 9cf4fe5513b16e6e9547eda6c87f9144eacf61c2 fix(state): bound WAL growth and checkpoint after VACUUM ea6f4e33c3717fe37aacb27acd8bc52de9cc784f chore(contributors): map ernst-bablick email for PR #69609 salvage d724bd0376264344c70a57dc39c6df1c240e0852 fix(state): make a refused pre-repair backup a hard stop (#69603) 923d86e09953ed6785eb5b24d218438c60092d79 fix(state): serialize state.db schema surgery across processes 12a7a465782ef70c9641ae5aa9ff715fa397df1f chore: map hermes-agent@nousresearch.com contributor email 4354a07c3412344a9736984ec3a89ad8d4785899 fix(kanban): PASSIVE not TRUNCATE for the dispatcher WAL checkpoint ba80f3b86de7e555bf7e94079b3e259b3b6a865d fix(state): PASSIVE not TRUNCATE for all state.db checkpoints (#45383) aec7fb3ce600bdc28c87a0a0d1c067a9594a9ff8 test(relay): pin isolated plugin managers as discovered 8be9c76f8c01f652e1c7acd576c37e4bdaed30be fix(plugins): hook delivery parity + symmetric force-reload (#64178) eac1e25127a75c61116a0bbb8ce7681a2f8b61b4 fix(observability): parent marks to the live turn scope, not the session 15959d8259e612be003d8667cad9a7d461a08f4d fix(observability): forward Hermes session id on approval hooks 24be384bb8b5c2c8a232b8c5f5b111cdefcebe58 fix(relay): bound the interpreter-shutdown fallback lane; unwedge test fakes at teardown d607f0cafbc6a3bf9a74d0933e3c194cb237af41 fix(relay): bound native scope lifecycle operations so a wedged pipeline cannot block the agent 11310068c66e934829940f84e4151b2061dde1a1 feat(plugins): pre_command observer hook + capability-gated ctx.call_mcp (#64204) e9bf8a7844f6462a72ff1d57258063d6ba5d779e test(plugins): assert per-hook stream ordering, not cross-thread interleaving 4be8bd081677476c8f269694825152420a118add ci: retrigger — previous pull_request run failed with zero jobs (transient workflow materialization) b9542f8e1fd7c8869c34f8c89009245c7024193e fix(plugins): preserve force-path platform sweep + scoped plugin-source listing after rebase 22197479906007940ac495edc8691aace21dffaa feat(plugins): widen ownership ledger to all registration surfaces 85020f2238d254456bb428de6ea5503a19dc9633 fix(plugins): isolate ownership by profile 4e1b2e436c004b182e9ec34b2d9f7c887689d31d fix: scope plugin manager by resolved hermes home (keyed cache) 22af80bcfdcbfb75ea04b9891fe25eb92ac0749c feat(plugins): add ownership ledger unload lifecycle 03d2c0e144d8adc29e753521f46ff620c075259b Merge pull request #84966 from NousResearch/bb/todo-truncate 2c7756caf2657dc074389e6edd058827ea8a7752 test(gateway): accept language/source args in gateway transcribe_audio stubs bd11791a0ee621bc9718384430fb4e542d3578ac test: accept new language/prompt kwargs in cloud-trim STT stubs 52eb8eb5332c5949131a9275ee57fb8df7b7130f feat(plugins): add pre_transcription hook and STT prompt threading 46ebb1b05d452b8d7ec72c7f93272ccc78a63086 fix(desktop): let status-stack titles use the full row before truncating 67168a391f26211eba13adfe4ecee74bd365a25b fix(plugins): bound event delivery and own subscriptions 17030939db86649d9f5401d378b2a62b67f25ec3 feat(plugins): inter-plugin event bus with declared emits/listens 22002b1d3eb46f286442eb07d3c171e61bc65b5c feat(plugins): per-source pattern attribution + explicit pre-screen rebuild proof 50f12e6ad84de4809a987bd868c64625a8189927 feat(plugins): reject ReDoS-shaped patterns at redaction registration cfeae1497b864c696630da39815c8e1c101cb482 fix(plugins): reject top-level alternation in redaction patterns, unbundle demo plugin fdd45323bf795fce185fff7e0ba21c1717f5475b feat(plugins): redaction pattern registry — vendor token formats as plugins 367f6794f31107f1b6c70b0ac51e2009a69aa54f fix(desktop): stop double scrollbar gutters shaving the recents list 35b05ddf283fec7a62924ac5b801fc92105422e3 fix(desktop): idle sessions without a project color get a visible dot 79ad5bc353a9ead9da63fbe0fdf94ee28d826abe Merge pull request #84955 from NousResearch/bb/paste-to-focus 2e0183169c345dae2aad6a90adfdf3950f989360 feat(plugins): community plugin index + hermes plugins search (#64181) 34e4ca14e8731ec9145ab27dbb57a3633fd339fe feat(desktop): paste into the composer without focusing it first 88ab589f68e33a1aed5e09c598b6ef925a92380e Merge pull request #84947 from NousResearch/bb/composer-pr-lead b85e5bb4ba17ecc43347cc49918cc39dfc5c953c feat(plugins): allow plugins to register custom @-prefix context references bd6dcd4bd5f0986edefd2ecf49052047e4328991 feat(plugins): manifest v2 — schema version, api_version, inter-plugin deps, pip-dependency declaration seam, config schema (#64165) c89ca9c4bff4884ef33a3c26b228836b26e5a6a1 chore(attribution): map dnethusahan.h05@gmail.com -> deaneeth (PR #64317 salvage) 00f4da01ece1b5d21dce03a03b055c42a13bff46 feat(plugins): add streaming output observer hooks 985594aaa3400b9814ccc9ab64f000632592eced fix(desktop): one git glyph on the composer's coding row, with the PR number leading c5097da12b6eea6895873ae3f696721e95559534 fix(gateway): revalidate stored role grants e64fb2b6143cfd2e6ec8fc840b914491b5bc560e fix(review): harden plugin gateway injection f46c600a547c61fd42c7183008f85f1c79f5a3f1 feat(gateway): allow plugins to inject session messages ebf8443604172feaea773fc3b51f9016a4dda1cf fix(desktop): paint the self-improvement review row as the memory write it is b088535c7811fb4a5a0ba68c924c04df30e52620 feat(plugins): capability declarations + install/update consent flow (#64228) 0c3f60fe4fdeca00927dc4c2df6e683fbf6feeee Merge pull request #84903 from NousResearch/salv/41236 40712da40f153c82aff387fe63f585289c097dc3 test: adapt #41236 password-store tests to real-host _make_packaged_executable 46da6784aa9f8950a39931c69112b3aac34344cd feat(xchat): full feature parity — encrypted media, threaded replies, new-conversation handshake, key-event meta, read receipts e3215cfbdce8eeec6fd0c3103c08e8947c9e3d7e chore: map hfsearcy@gmail.com -> hsearcy for contributor attribution 2d91c085e3f37402e257c4f2c93694e726ee1d23 Merge PR #41236 (Linux keychain auto-detect) onto current main 715d26cdf492a412a60e0c0349c8c3d5bd6a6b04 feat: auto-install gateway service during setup and import d48c5f29ee6d5c5a4f46e8c2ae6d551a42fa2718 Merge pull request #84878 from NousResearch/salv/62319 e4f480510891682ebdc04fa770cb472bb7d2164d test(gateway): declare routed profile as served in reaction observer test 1e46e09bbd99cbb8e5d4ad03da5737822f7a8a60 fix(gateway): scope reaction observers to routed profiles 9994bc9ec9f610d8068050db4c579cf683a9f08d fix(gateway): enforce post-auth normalized reaction observer 24e3aa180f5f284ab2937f7d3a423597aa837799 fix(plugins): gateway_platform_event error logs include traceback; pin handler groups c0a4535a26e170a6d75054aa533fe86c3b92ade0 fix(plugins): address #64176 review on gateway_platform_event (#68431) 929be4d1aa99934cae176af11fa63cecb1c8736c feat(plugins): gateway_platform_event observer hook (normalized envelopes) 33840149d088168ee02fdc48fd609b3018bbd7cf chore: map voice contributor attribution 0ca78e5f329d6f81f18a864bc2bf4b430700941a fix(voice): preserve existing TUI drafts f1c45f57275143f406f8d180462c509f4cb49c9f feat(voice): add configurable TUI draft submission 98c3edbd8b57cd96a52ff5968cedd4d74125139d chore: map github.commits@widow.cc -> Zeus-Deus for contributor attribution 4c8e326500aca04b7b670b34611915ee7f0b7caf Merge PR #62319 (keyring-less Linux token storage) onto current main 316bc843e2881982b091cb076f8c1c26852f9b0c fix(xchat): address review — valid event fields, persisted cursors, edits, signing keys, key-blob safety 9acf0db88944839ec8bcfd6a2261c48d15447944 feat(plugins): add cache-safe system prompt sections 6cd40d42571cb2de5bfc2dd82c203acf6be0095e test(gateway): synchronize pending-drain handoff e2157b8697b90260b07f5dd16f95d9e9cc42dd61 fix(tests): await gateway drain completion 6601330e0affdcc7dff0382dd748c9fdf6d86aac feat(plugins): install exact commit refs d409f67485db76e8ac8b06de3a2f88b8b67b0286 feat(platforms): add typed plugin send paths b58c7aaf9db2e54e1384e2f3c5343511d04e02c0 test(send_message): move plugin fallback regressions to target_parse suite a009b7176683f11fd11a78e0f8ed14b1cff91727 fix(send_message): discover plugins before target fallback d3ebe14b030446aad1bee78da867e7212edea459 fix(send_message): constrain opaque plugin fallback a37192546e7200194375fbeac20a79fe7e6c767f feat(gateway,send_message): plugin platform target parsing via PlatformEntry.parse_target_ref_fn and verbatim fallback (#67941 #33547) 274214d3c9289a98adb3e8fcc0e5ded6b48be8f9 fix(send_message): avoid shared schema mutation and support sync enricher handlers 482682db785a0cb639fe6b2d53acef8257bdf735 send_message: plugin enricher registry for custom platforms 7a5062fbcd1cba127d8dd8bcdc9a49531fbe6ee0 feat(plugins): add runtime-backed plugin Doctor 2711e41c4f64068db2cd9edb2750d43cf3e7348b docs(plugins): fold unique guide content into the canonical author guide 1636206ff00399210c36a0353fae6d37f9a2ef6f feat: add Plugin Doctor plugin cd7c674d745e9ee5f9a863d7afd15c4649bf88fb fix(plugins): harden approval transport boundaries de56e49a7c776f52ffcff8e0d768d64f0faa48cf feat(plugins): add approval transport interface 5265409012dcb6c940e0341b1f126b818ad5f568 docs(plugins): document config and state ownership 6bf93c0e38a3f653e716224ec0fa91bfd6ad13d4 feat(plugins): add namespaced config and durable state bridge 223e74345e207eb788860a355282410210e938f1 docs(rfc): align config bridge with #64227 — namespace jail, real APIs, acceptance criteria 516ca4170aadcf8b86bdc21fb340231aca6e4baa docs: plugin config & state bridge design proposal d36c432da4f63410b171f35b01d4cab66b52ece9 test(memory): use explicit fixture encodings 729b8a71697d0fdf012057063b2e85edf88c41d8 test(plugins): enforce behavior compatibility contract f6aaff46469e9cd161592bbb877af2c29923f15f chore(contributors): map Magnus Hedemark 79c11aea7ae6a3056b6a0a4f6528edade9367e06 fix(plugins): complete task-routed LLM integration 1176222b7cc90a948b055dd0fe989ef85279f430 feat(plugins): route ctx.llm.complete(task=) through registered aux slots e0bb71cb7334ba321fab0d4f0081f9fb92009a1d fix: track secret source registration origin 2e29de2296a062c72ecc929a51d3864cb1b2b20a fix(plugins): delegate secret-source enablement to is_enabled contract (#64177) 7a7e73d3106a2a55f451ab0e8c0e5692099f02df fix(plugins): re-pull plugin secret sources after discovery (#64177) 299996f7e05b29384e5873359dcc88deb5e45c40 docs(rfcs): plugin-architecture research spike — Pi and OpenCode lessons 6b626f9d410cb351a1df7430f7b0846aac33f0d9 feat(gateway): add X Chat (encrypted X DMs) platform plugin d1111a1fe27221f590ff7f2a24f2f8c05a538692 feat(models): replace deepseek-v4-pro with deepseek-v4-pro-0813 in nous + openrouter curated catalogs 2a7ed25db86026817aaeb2f750afd8830aea46fe feat(skills): cover all Hermes browser pathways in har-derived-api-client c558e3520a7872b60660ae489029c374761feaf3 feat(skills): add har-derived-api-client optional skill 49ac259215663b2fbd27276a05386084a5bc9045 Disable Browser Use telemetry by default 7dad8f6a51a14ba92c7a75244cae60506acb127f docs(github-auth): document headless gh auth login --with-token hang + hosts.yml fallback d2c6af3aa258c47d64c41a56fe9ff61815334e17 Merge pull request #84852 from NousResearch/bb/atomic-replace-windows-sharing f514d546be05c8cbb12438561e825bc421bc66c9 test(utils): cover contended Windows renames on the Windows CI lane dcbe1754230b405c61bcf25d365933ad6bc1ed1c fix(utils): recover Windows renames contended by an open handle 66a41616208135198dfe96d0e3b8e5510b20d035 add grok 4.6 (#84837) 1d3d021282098261ce2ad224a76d97d89b16188c chore: map 1759158233@qq.com -> wanquanY for contributor attribution 0763e77bc4f0a53e384523d2bfe52674b27e46e0 fix(search): keep grep fallback root searchable 41e9fee5b145117ec237288f6728c63c1cfec346 default to 2 tags e138cb555dce08c01ba54e5f456e44ae18f443c3 feat(install-e2e): hook the leg player into the results table 068f58740c21cae7e485895d878bd2a58d961776 refactor(error_classifier): guard grammar check + extract shared constant 847cc47cdbfb2fdfb68731bf59c1285efff3c1e8 test(error_classifier): cover Qwen applyPromptTemplate vs llama.cpp grammar a768a6c1a26e87d450bbf078f0171b7ef5b754f6 fix(error_classifier): stop misrouting Qwen "no user query" as llama.cpp grammar 169f207a86872b3ba1af3a5fcff6e48cfc08273d fix: update kimi auxiliary test for medium→high mapping d8e3b4f51674bdc6c04681e0bb2af949f2a5f4b4 fix: map Hermes reasoning efforts onto K3's low/high/max vocabulary 05ffab9d1857044e03f591abd54ab74c18c6af8a feat(install-e2e): playback.html leg player - zip in, video + time-synced logs 9080999171e4637a1f4f9353849ae4d8c226b3be hog the pool 263141861e68e57b0fb98ad8cc8835f4abf78f05 chore: bump version to v0.21.14 (2026.8.12) 7113a69248ffe831e4165247553e0f3668c0260a fix(models_dev): map meta-ai provider to models.dev 'meta' id (salvage #81418) (#84679) 9eab7a4473a32ece06d924b6a9c374c1444b15d0 fix(ci): stop running uv lock --check on PRs that can't touch the lockfile (#84675) 6aaa181f0eb4dd517d9cf163733e7e41a8e126e1 docs: present /export and /import as the second way to share a profile (#84668) f525772725ee23b20dae488de037f3e5df563ce4 fix(desktop): keep config/structured code blocks fenced instead of unwrapping to prose (#84664) 62a9c0f0e99a83c12f62ce9096ae7b67d259e891 fix(file-safety): approval-gate ~/.ssh/config writes instead of hard-denying (#84663) 8a6deaaacf2f255b6581cc7f798a2e9df57f9987 docs: present /export and /import as the second way to share a profile 3e09adb109dca4159203bd9225b270dd83b5529c add grok 4.6 (#84661) 1abc7ce8f059aadb60466fe9400913c55bd90b92 feat(models): add Nemotron 3.5 Lightning 30B-A3B to NVIDIA NIM picker 1ae3961d3adb31499f33b3eb13a3cfa17d854ebc fix ssh redirgithub c55bc5bf2f122d0138d3ccfe61cccd6ac8395b29 gate BFL removal d81ba5e7017ba451c838c3f5f813424154584eff feat: first-run setup offers every connection mode 9cbf550621d461e63f259e0160e950f2138c377c refactor: Settings renders the shared connection-mode registry 24622cab64fe8b0797b50b9e3a99824deec50f37 feat: connection modes as per-mode renderer modules 6ca5e89413f7015d0903945e94364484dbc55d09 fix: resume the first-run gate for every non-local connection mode fd17d18fa6c407f5c61e1b353de11ae695b52f5d wwwwww aac34b64082ca752c58066497bc103581f35ebab chore: bump version to v0.21.13 (2026.8.12) 8d93f5ff4078e081b3afd9bd7f2dc198d22bee64 fix: scratch cleanup failure marked a staged runtime tool as failed c97773ca19292cab1d027cca05ba5231f28cc226 Merge remote-tracking branch 'origin/main' into remove-flux3-promo a871948d8d4b0f774d4ec40467bab1078a9f28d5 fix: correct Lightpanda fallback docs — remove nonexistent PDF/upload/clipboard actions 0a81935a9d4d530d83152a2dc6d28c8720451c87 docs(browser): document Lightpanda local engine 7721b26a9aead0603505b1af4ab5732c34851ce5 fix(install-e2e): boot the app-update legs against a REAL configured provider fd02bd86218bc58ff56e5d336bc06e26784c0c79 refactor(desktop-e2e): one mock inference server in tests-js/scripts 6e139b2c22f609210015d740cca64ff753edabc6 fix(windows-e2e): pin the driver's git to git.exe - never through its own shim 4578b5d0a65c7fed24336fe07352c14ed79ab902 ci(install-e2e): result chart says WHY a cell skipped 6fd7f05de48e9163f64f97a7facca4bdb4eee821 fix macos screen record 368164d7dcbd98527a37c89d54bdd490c058e440 git shims for fork detection disablement b715e2f18554c291757468af46b39bc3ec5a1854 chore: bump version to v0.21.12 (2026.8.12) a35402ea33abe83f4ed65b459faf17cf67376b0b delete unused git dlls on non-win32 d9295c3cc747b728eb0c953e30e6f94775a3648d add runtime pins schema 09ecb5b4d3fc4dc47e206b1ec7731fa38fa0b967 ci: disable spotlight at start of builder for speed 5b56c116dff88f80802a58250e36ec96f5d0c2b7 desktop: fix broken signatures in uv builds 42f67fa35425724d1d9543f2c5527e3882b362c7 chore: bump version to v0.21.11 (2026.8.12) 3b52ef899b62be30161bdd3499bb46254bcbc3b7 ci: uv cache suffix based on variant (different pkgs insalled) b86fee6624768a25fe1c1afc77501ab09c90d787 chore: bump version to v0.21.10 (2026.8.12) f369df2ccf260372a498d00e6e77a56879d84278 fix: hostile archives could chmod outside the tool dir and clobber files f1237a6f8c01ee67ee6a4b3ac921a5ebed0cfc3e chore: bump version to v0.21.9 (2026.8.12) b44bccc2bbc5ad502bd87306ec14206e51e00160 fix: managed-runtime lint skipped only top-level dirs; git test uses the real API 45aa18109757b90be1a2719c315f2b68824fcfc5 refactor: exact pins with per-target urls and digests; delete salvage 0270f9446b1775faf3540dc3d98a877a0567b39b fix: tool pins 222465d84709379b65173b0283a6eea87516acfa refactor(tools): unify probe caches and dedupe the exclusion log 89556c63ac050c3e093782fd4ad2ef1e4e8c8783 fix(tools): harden interpreter-environment probe for the strict-mode default ec884fc655189c01ee2a281e7067f12428232c50 feat(tests): add tests to cover external-venv PYTHONPATH isolation 76961b61bd8c58a0bc4091aa5cb117dfc16bd6d7 fix(tools): isolate external project environments 31f07edc6e7eb396f7ff3217f09d58f809828c24 chore: bump version to v0.21.8 (2026.8.12) 05b5c2121fcebad33d266d85d900e05b144a2229 chore: bump version to v0.21.7 (2026.8.12) 3a2e2e5c33faaf9e2b64e4d6d6d32534d7ef2ab5 fix: isolate the install root in tests, not just HERMES_HOME 26c4b0187df2a4ce981f80974d1bffb6334ff93c feat: launch hermes light from hermes desktop b3591d61ad0289755b8441500399cf41c044e01b feat: bundle dugite git and gh in the desktop payload; macOS never touches the shim (phases 6.17, 6.18, 6.20) f4d419f823dc08341ec04e11cdf6c842e46d8636 feat: git is a managed runtime on every platform via dugite-native (phases 6.16, 6.19) a3bcb2c23265dd6bc571fd7522ca4f6475c1b9a6 fix(tools): mirror misplaced-arg recovery on the terminal side c5e2bff6c186ad2ab69082770d57ca4d6957b0f3 fix(tools): redirect non-string code payloads in execute_code handler e8607417d7ca842d6ec037cb2367b72684434767 feat(tests): add tests for execute_code error mesages b50d8f69172a9c15ba83f0475ee58964ffcbca75 fix(tools): improve error message when wrong args f4c4c17dc678c35fd6468854e53b659fca40561c maybe make macos screencap work? f20d16fbf168a3cb2b0814aa61addfba515102d3 fix(windows): SSH ControlMaster gating + stop hijacking the user's python (#84452) 8d0d908bef14cb9c716b65bfe2b49a8cd4e8ee90 fix(tools): skip degenerate identical hunks in V4A validation 6061377bbfc8d6b5255f07450b6df98fe7989b24 fix(tools): mirror must-differ guidance in skill_manage new_string schema 48db2011b9b9f701dd645db655fc4dab3c778e6f refactor(tools): extract IDENTICAL_STRINGS_ERROR constant 9c541de91a391937cc20d76c108d3edccf7b589f fix(tools): improve patch tool parameter description 31a04db4653590b38b8d8247c36d085d7866a4ff fix(tools): clarify identical old and new string error 4a2198bf5124f0c4d915cb958f141116ae8607f0 fix: Windows MCP PATHEXT resolution + python3 -> python in cross-platform skills (#84429) e1caf88c6ca62e364d4599a53c097b10c70ffb03 fix(security): approval system covers Windows destructive commands and paths (#84428) 1156ba43bfd222e036a2715885cf2981ad54ecc1 fix: steer agents off MSYS paths for native tools; pin line-ending preservation (#84426) d0b791d0fc1af1aad0d32dcb838705fb6fbd1d46 feat: install-coupled caches move; legacy rungs and stale docs go (phases 5.13-5.15) 7dc342ce73c8409ecd8595a57802c36f46282bd9 feat: desktop reads the runtime registry; bundle state leaves HERMES_HOME (phases 4.11, 4.12) 9a222d91d8652cf058ad88744bed5116ad2b90da feat: uninstall and profile copies respect the bucket split (phase 3.10) ee472a7fdbbc55924f91ab122dbaa29bd07668b0 fix: Windows agent-loop papercuts — path splitting, hashing, autocomplete, screenshots, OS detection (#84419) ea19897e1b5e81708300e81430888a894230a593 feat: steward detection reads the install stamp (phase 3.9) 5225b609129327bb104a951182747184a55c612f feat: installer diet — deps come from the shared provisioner (phase 3.8) 2b39b885d6ca048fb9b18ec9edd27d28b9a32e51 test(install-e2e): macos desktop-installer arm - the published dmg, driven for real adf7d55f4b63412dfde2c0b6fefff03238c08317 ci(install-e2e): windows composes install x update - one driver, one job a5170af4a87d362f76f178dc6e03a9a11702cce6 chore: map hermes-agent@nous.local commit identity to @C-EXCITE-STUDIO 223f7030128abf9aaff8e784201f3fe5b424ab68 fix: close provider-anthropic MiniMax proxy bypass + rework cache observability c1e2529ae2f97906fa8632babec25e4566fe24ad fix(cache): opt M3 out of cache_control markers on Anthropic wire 33855f1b30f470ee2ba9bd8c28196296d3a667bb perf(tools): linear-time masking rebuild + last-opener early exit 307cc814adbf715aa0abc426794888167132ad5c fix(tools): harden heredoc masking into a conservative shared helper 2bfdd8cd347d90f3eefff92466e5511c2bfbf464 fix(tools): strip heredoc bodies before background-'&' detection 11f00b823ca3c6209fc4e180bd1324711317cd49 fix(install-e2e): installer_supports lied under pipefail - buffer the probe 17688f994e6c4c681f8dd3d160b210ffe49aa273 feat: add Nemotron Lightning to reasoning timeout (#83982) 6da8b65413d54e226aa2c92dbc4680c9c0baf32b delete tmp file lol 0f903e14a32d039c6e9ff67f1b281920ee6d1367 test(install-e2e): hermes-desktop-app-update goes live on the script driver 07ee4a2ec8d3a678248d5e0bdc148a457c782d8d fix: Windows path handling in search_files rg calls and patch escape drift (#84378) 14692ec917d20093bc12e647b8cefa6a6307e896 fix: make verify_on_stop opt-in everywhere (default False, not auto) (#84383) cdaf0cf0910baf1daaf46b6f72223c7f471ce15e ci(install-e2e): one screen-recording mechanism on every runner, Xvfb for headless linux 197a18314fbce45499ec9c7149f72858144e1c98 fix: warn agents off driving interactive console TUIs via pty on Windows (#84364) 0490b00e74913c5faae52e98900569d36206bb34 fix(nix): set HERMES_BIN default in wrapped binaries 239523414e1b22c6140d8a92d17c992d08551398 test(install-e2e): installer-script+desktop is its own install and update method a2fbe745b45f9f8237cfdcc25a37e7caf9e40471 chore: map contributor email cmoiccool 5b4c03fa4b2ecf54b599fb7313101157d74ae746 fix(kanban): query show graph before closing database 1af20936638cfff1ea02ec9853d26c89f363aa07 test(install-e2e): split app-update into open-app-update + hermes-desktop-app-update 1b04f2b44e2484913c57df038cde1545747931eb feat: ripgrep joins the managed runtimes; one PATH seam (phase 2.7) 2ab62cdca4c677fe926e8fd40b4115caca847bbd feat: managed Node moves to the install-scoped runtime dir (phase 2.6) a64b5f5cafe2b3e65bd874fe224a5ac51f0d5338 test(install-e2e): smoke hermes desktop --build-only between install and update 42529a9a318f2b1fa1411dd93fed65b203c96ef0 chore: bump version to v0.21.7 (2026.8.12) 2acc8f98750cd69e2c539242e1e0fbbbf4c95f10 desktop: fix broken signatures in uv builds 10b2b11efae6c1c558ad4d808d8ef6232158746f fix: widen APIConnectionError handling to finalization drain loop aa3ca1c3bee916cae9178c37eed10f469121a3d1 fix(agent): tolerate transport errors without requests da1170670b967bd357773a1040d89c7022ee9d57 fix(agent): log Codex transport failure details 07b203ae9f2de2ab4ed3b7bc8c06bdb36de70887 Merge remote-tracking branch 'origin/main' into fix/azure-foundry-responses-post-tool-replay bb597e1c022fe9dfcef8ddcbd51620bfbe57088b fix(cron): managed-cron fires execute in the gateway process (live adapters + dashboard forwarder) (#84339) 333536e7c92b4ce2b53d4d0607399def2318ee4f fix(relay): stamp logical platform + relay trust on Discord interaction events (#84318) 995c42387ffa3ccc8d5d25727f47e0a2d80f6fda refactor: fold duplicate tool-id resolution into one _pair_ids helper a4561d42f5d7e5a3d203abcaaf04692aab4b629b feat: managed uv moves to the install-scoped runtime dir (phase 2.5) 2639d6bb8b9b1ead7c7eefebe0a0a9565b7b10e3 fix(azure-foundry): pair tool calls on call_id as well as id 30b80b86f3e3195407c061c9bf2c96af18c52fbf feat: runtime provisioner — one dep engine for install AND update (phase 1.4) 89096f48c5bc5578e78dcd01cacd899f53e0c069 feat: single PATH/env assembler for managed runtimes (phase 1.3) 5fffe560661c87d988c4ef2834df14bfb8acba55 fix(gateway): exclude permanent supervised watchers from the scale-to-zero busy check (#84327) b2a3d36c6e9d220bd49ea476a7986846ff4acb7b feat: central runtime tool pinning — runtime-pins.json + registry (phase 0.2) 5ff0b391382b65a29f66bd7c27e3f8f7bc9441aa feat: add install-root and runtime-dir resolvers (hermes-home lifetime split, phase 0.1) 4044ac05a0313421ee8b2b6c1deeb7cff442767f Merge remote-tracking branch 'origin/main' into fix/azure-foundry-responses-post-tool-replay 5cc23d17b2a7b454822ea82e59653ac19a97511c fix(azure-foundry): scope Responses reasoning suppression to post-tool turns acdfd5207730aa826c71aa9f44c0972c8e776a4a chore: bump version to v0.21.6 (2026.8.12) 017441ffc4f790d96d9615e855a73712c552a0fb nix: add desktop-light, move the linux .desktop file to electron-builder 6a8da1e9ecaecd23f2d0748915cc81a3253c9125 update product identity logic to allow all variant types 76d832d3857551a029c4b39c23945eb47c16fe5b fix(cron): deliver to relay-fronted platforms via canonical home_channel (#84300) 356c702b55be6e96e68f7d0cb5e11815f791909c fix(gateway): scale-to-zero gateway self-suspends via flaps socket instead of relying on Fly autostop (#84295) 87af576e60a94530477be7040d54d87581d10f5f fix(auxiliary): honor main model for title generation (#83636) 99807385bf97078eb850bfcfe239230b006d1820 chore: bump version to v0.21.5 (2026.8.11) 52871db96379bafc6f392020ce5454e399738f64 rip out old stuff 4ffd7ced3a06b275b0595effd7de5f7027c9874e ci(desktop): APPXSIP_LOG to name the corrupt msix inner PE 3cd663647172f11477b7b94fec029cfc03672422 fix(install-e2e): stray paren broke the generator - every node invocation died 31d958800117c2cd802eecbc1e61df969dd13904 ci(install-e2e): full installer transcripts in the job log, folded in ::group:: 8e6f6d863ce2d13e882c54fc782040b6c8132d95 ci(install-e2e): result chart on the run summary - conclusions per combination x tag db969ce696e4f9ab5c81fc9b88f2fb14c61fe766 ci(install-e2e): result chart on the run summary - conclusions per combination x tag 80a0a198dd1882f91c6f99fc5e84ba4dc2487813 ci(install-e2e): plan chart on the run summary - combination x tag markdown table cde3b4ff093f9daf495a1292154e407486ddfc34 fix some names dc23cbbb9b54584cd8e58095d04597bd6c1c9414 ci(windows-e2e): stderr chatter is not failure - EAP=Continue around native calls ae3a822d4e3f736c102972dad9a83958004c29f1 ci(windows-e2e): driver installs its own pinned @playwright/test - never the app tree's 20e98c3f624517822ced9feef2de861fca31e766 chore: bump version to v0.21.4 (2026.8.11) 3aea0735a250f7fa4ffd4806b31cc2142064274f fixup identity 7a562a269e5f54de526dd6582cdd4ba5db478314 test(install): windows installer-script e2e - irm | iex arm goes live 44482c5173dbb15a460d638a9eea40283f9c0ccf chore: bump version to v0.21.3 (2026.8.11) 64ad597a7d1744119ae4ccc33c915fdcadaa7152 refactor(desktop): bake the product identity into the bundle 9da6d455c9e1f2bf74bb9f47766ee9fc52e17bfb fmt(js): `npm run fix` on merge (#84193) ed0e70791419795b1a97a967cb89335a7b90189b Merge pull request #83634 from NousResearch/bb/handoff-window ea4cd375f818134ada420c3c5ea53c65b0c9a223 ci(install-e2e): retire the bubblewrap sandbox - git redirect everywhere, macos legs live b80894310bd7034ed88d66ad628df045cf96b0c2 chore: bump version to v0.21.2 (2026.8.11) dcad41b85d28d5844032bdfece931299ca7e3102 fix(desktop): msix minVersion 22621 — the real 0x80080204 718722ae5e359fd490ce47d36c750f2accf4ab40 test(install): installer-script e2e driver - git redirect, no sandbox 96ff338bb8c64b11faf1db8a6a96d7c007925dd4 fix(desktop): declare uap3 on the manifest root; local msix manifest repro e6e056f854596db8ede6d32c5c79ec9caad37c68 ci(windows-e2e): step names carry the actual install-ref 2c5879855171a67ac8d5047572f42bb3fdf38571 feat(release): only upload artifacts if a release exists 208292fd2afdbf6e5311fd4c22652ed591c200ea chore: bump version to v0.21.1 (2026.8.11) cc03000f0c7a733fb1455efe9b97cc5bd4932494 feat(release): publish releases as draft e9579a98966ba022961fba850a6f0f0171aa5f3d feat(relay): ambient token endpoint mode for gateway.idp.token_url (#84074) 50fe62f588ebc02bc46aa5342ca7044e694f531d chore: bump version to v0.21.0 (2026.8.11) a189286aea8abbf33dc93e2871cf67d8d87b0d2b fix(relay): stop sibling gateways answering another instance's button press (#83677) 96c24b25006ba8364f83d92c9e841729ba889eda fix(release.py): update allll version files 8168cc3ae99b21ca653e9a4abccfc53082db1fa5 chore: bump version to v0.20.5 (2026.8.11) 5b6146016aefbc473766b15b6c983501dad15586 refactor(desktop): builder light cleanup 69ae247cf3dba34a37ab4af8484b96d3559a4fcf Merge pull request #83798 from NousResearch/hermes/hermes-f2b15435 10e9da6f2df58956ec94fa8c45c80f457d5d797e fix: ASCII-only install.ps1 comment; allow-list install_cli's uv PATH fallback baa6b2e34d802da92efef59d371b85b47e8aff4a feat(browser): auto-install the Browser Use CLI instead of silently downgrading 4280413dba456b7120b428f2f1465ae4e79c060b fix(update): exempt manual results from the hand-off freshness window 6d7ba869630ab20b2f8d5c9dc31800b914c890ed ci(install-e2e): collapse the method vocabulary - 3 install ids, install+2 update ids 17dea59026caede152bc147c579a0d642872062d ci(install-e2e): generator drops runtime validation for jsdoc type unions 78a8c9f78924c3143cd30cbded7b7f2a05deb857 chore: drop the vendor name from a bridge comment 1c60bdc30d07ca68c24aabebada7d1c43df8f371 ci(install-e2e): back to the generator - workflows stay generic, names carry everything 4e886166ace71290e18abb42d30a2e8c52dca3e3 ci(install-e2e): leg names carry everything - os, method pair, tag transition 043b34674e5c08ac81e3266b3d3c57204bad7a1b refactor(desktop): generate the copilot key fragment; per-variant deep-link scheme 83e9f883d8029d47a07f13cdce73fbf909484b9f ci(install-e2e): per-leg names are just the transition; tag capability annotated at pick time d00f51ce4fc5348be3717038c9df4a339072c49a refactor(desktop): derive the builder config from one light flag 6515f8132aa40faf1739f8721f648d527a04aa28 ci(install-e2e): hardcode combination jobs in the primary workflow - one matrix box per combo eca69557da3025a407dd4ca4a37ec83776e84646 chore: bump version to v0.20.4 e3bcdadf8bfe375d5034d935417352aac43358f3 refactor(desktop): whole electron-builder config in the .cjs, typed 660b9250dafba63df0fdba4d7bbc36fa7de00e57 fix(desktop): unprefixed uap3:Properties children in the copilot key fragments 5521d32a56db94d9cc0036c8661854b44ee7c397 ci(windows-e2e): probe the starting tag for apps/desktop - pre-desktop releases skip 6d94678e62db5acdcefe637b1786ad1282b5885c ci(install-e2e): jobs own their skips - generator is pure expansion 3eec049c29afabe2ae30d19ecdc92990bc2af985 ci(windows-e2e): static inner job name - github renders name expressions unexpanded on skipped jobs 83d009ae8293a1ebff6d315ee1f096d15a2177b8 ci(install-e2e): nest the graph per starting tag; skips live where the knowledge lives ed5e17f4b86da0c4f09c0694757b6074ae6b9d16 fix(auth): /auth/native/authorize 空 provider 自动选择不再统计会被拒绝的密码 provider 5a31a14f953acf3966830df9ab92e8ee3d106f11 ci(install-e2e): native per-combo skips via a reusable skip workflow 1bf0a1c95be2df7d4bb66d8f8489b8503fbd9daa ci(install-e2e): generate every install/update combination - one job per combo 53c50f423d148b7c7df63a8fb3fc2714f614d4c4 chore: bump version to v0.20.3 41fc67f573d880890259beb7c6ea28eba2ab3788 feat(desktop): MSIX target with Copilot key provider registration 77c3a398f2f687f9031f40b03c726ff646e92471 ci(windows-e2e): install ffmpeg - not preinstalled on windows-latest, recording silently skipped 005fc5a6eb76d98a0e45a9514770902571ea3017 ci(windows-e2e): ffmpeg screen recording across both GUI phases d31d671ceb6b85e8b018cbb63a37a3a5714ccd24 MCP CIMD auth 71281c27e5af505117295896ba780315d94e90e1 fix(windows-e2e): parenthesize the tag-list split - -split bound as a git argument e8bdb6933e610948eeaa7a7a5059eedbf06ef944 fix(windows-e2e): 'auto' sentinel for install-ref - powershell -File eats empty-string args 2a906ac6a0f720fe999abe171b527659da2e1ba7 fix(windows-e2e): stage OLD as the served main - the published installer has no commit pin fd4c610aa1ae6f37a3be24abfb35854f28d3848e feat(release): explicit --remote when more than one is configured 27636cf422d8a6de78f6b7cc14106aafea7645fe ci(windows-e2e): slot the GUI flow in as the windows-desktop route - generic OLD -> HEAD 3fedcbc6a8d94bc0c5bc7872f17d8f55bf2b1b94 ci(temp): branch push trigger for pre-merge validation of the windows e2e 1f81c63dd0f782eb2390898540775c8ead1adc6c ci(windows-e2e): retire the AHK-only axis - superseded by desktop-windows-e2e.yml 0ce3d187d7020b6b657843791129dea7e9d21d35 ci(windows): GUI E2E fully green — foreground relaunched window, drop temp trigger cf2692418cb436f255f8a467f10b0f7a56e59382 fix(e2e): pre-set .skip_upstream_prompt so the fork-only input() can't hang a263a7c670b6aef662dc782ba9e35978dacb1d3c fix(e2e): allow time for the release->CURRENT desktop rebuild + tail update.log 7ffc26ec563de453f7e827b873a4d959e3327d82 fix(e2e): detect update hand-off via marker file, not Playwright close event 31b97289aeb74ae067ded3c701755647084ace85 fix(e2e): dismiss onboarding before opening Settings in the update driver 256c9b350cf7c92f3833271225eafbe3be89fcad fix(e2e): resolve @playwright/test via Node, not a hoist-blind path check f83548420a16b3a334df8e9b4681f833713dc9b5 fix(e2e): pure-ASCII PowerShell/AHK (PS 5.1 parser choke on non-ASCII) f95506e665a00d0ad4980a07b65d685dae09744b fix(e2e): don't require installer pin to be an ancestor of CURRENT 60493c9e7efc9fc8b0d98d0674c7d1dfde13320e fix(e2e): re-capture launch-button template + correct fallback fraction 100abc953e477fb275444bd0d0f7bbee494dff9a fix(e2e): re-capture install-button template + fix phantom window geometry af7b3d3af4d2dcf5dca5c428994214aa670a2751 fix(e2e): AHK driver died on first Log() — no-console stdout write throws 381cc65c78be58805bf7d535c3131a016284ada5 ci(windows): REAL-flow GUI E2E — website setup.exe, headed clicks, GUI updater 3e265f4a4397733d9b3ffdf9c3e8da165d516923 ci: drop the temporary pre-merge branch trigger 3aea9781f6e29289ac12f3d72f15390bc1f16c1c fix(e2e): redirect via GIT_CONFIG_GLOBAL, not GIT_CONFIG_COUNT env config 82f48a2de5114601f12a5774d347b9fb16badb47 ci(temp): trigger the Windows E2E on this branch for pre-merge validation f7f7d2f99475a7e5e50f055add4482fdf9873821 fix(ci): runner.temp is not a valid context in job-level env e64853a37333c44ac2d2ca4b01a9b6786345cf6a ci(windows): desktop install + update E2E on a real Windows runner 03d0ad9bd90cbc66911ab5ac2202eb15dd29cdf0 ci(desktop): disable Spotlight on mac runners before dmg build 968ec6c6f4deb6069cfa5ee5f758acd25909afd2 fix(update): manual-result protocol so gated outcomes reach the user ba28a18b95e8cb2b1ae40641581e4a51692970c8 fix(update): fail-closed cd, rejected-launch semantics, guaranteed recovery surface 1dd5c9de83894c857da458ce121c2c60d4e102b1 fix(update): launch acceptance before the terminal event, on both orchestrators f121cd8a065f4174adab69b8ccc056b0c41748b7 fix(update): run hermes update from the install root + unbreak fresh repro bdb4cfd35e31270635cbac330756a24207b1a777 fix(update): posix hand-off truth ordering, relaunch-gate port, JSON escaping ca5b015e720023da3bc42001833603b2ad2d238b test(update): sandboxed repro paths as npm scripts c9f0b6824e49342930d9757a269739ee8a1a12e6 refactor(desktop): replace the in-app posix updater with the hand-off c991e3f62fde4432adacc73da1ad71f9893ec2e1 feat(update): posix hand-off orchestrator (mac/linux quit-first updates) 503e61b3b1b03cf79aa94d79e95dbe88fd7ced96 feat(update): shim UI + event channel for the Windows hand-off 854ab7f6df3f1a3ea1aaaa6767bd538c8b6fdcda fix(desktop/windows): quiet minimal update hand-off window f51aa6a9b5ce514e15f8e337777f522fd5cc6fa2 fix(ci): repair red main — busy-mode test + missing checkout in skills-index workflows 936dd7346fd7fd8107af1ce7fc019c07c001c1bd chore: add landaun to contributor email map for #83906 salvage 48c233d503f1b74f3e0f12c6e02b079f218c67a5 fix(gateway): offload remaining atomic_json_write calls in async paths 5bf47cfcedddb1d217e6c4ab0043686a2ab89f30 test(gateway): assert the channel-directory write leaves the event loop 0cf48bca2572339c9c4f88882dfa6739d347f99c fix(gateway): run channel-directory write off the event loop 9ece46e94d65eb7d9db1edc7dfeb0c8b3363fb5a ci(windows): GUI E2E fully green — foreground relaunched window, drop temp trigger 871b83551a9de6fac19506fd04cf7ac946de1415 fix(e2e): pre-set .skip_upstream_prompt so the fork-only input() can't hang 3721715caeef06705c3208e0aed2f17465ebd73a fix(e2e): allow time for the release->CURRENT desktop rebuild + tail update.log b47737a26cc3518ed8c6643e8a3537178b6e4186 fix(e2e): detect update hand-off via marker file, not Playwright close event c8c0f67b82945709cee3955dee87fc686f7439df fix(e2e): dismiss onboarding before opening Settings in the update driver b101b1a7682941f6f88c482453065ca30f79092e fix(e2e): resolve @playwright/test via Node, not a hoist-blind path check 6b65880e69dd929687a1ec0ff42553c81df3cdb7 fix(e2e): pure-ASCII PowerShell/AHK (PS 5.1 parser choke on non-ASCII) 365fc6e47d17a347b74db717f716d8ce4d9cb67a fix: ASCII-only install.ps1 comment; allow-list install_cli's uv PATH fallback a96dddc1eb178b35159f06740ea2e2eea3c4ac64 fix(e2e): don't require installer pin to be an ancestor of CURRENT 2a664d32842d92ba94e7302815d49aeb8d0c37f5 feat(browser): auto-install the Browser Use CLI instead of silently downgrading 75779e2c4553f8caca9b2c0c81e5185400e16421 fix(e2e): re-capture launch-button template + correct fallback fraction d79fb3721777d56264a2a3cc2684130a22bf5a52 test(desktop): cover messaging-platform profile scoping a9b2bf01b9bc79e6456f9ac63c67efe14f9e5e7a fix(desktop): route messaging settings to active profile 5ac4a2eb3994b3d0eddaf001ba399c67f1fa78d1 fix(e2e): re-capture install-button template + fix phantom window geometry 731f9c0d2288f7ae3aa629cc7aa1b35e3c25f76d chore: bump version to v0.20.2 8c5f6b977f2d05e3b71cd95874bb718a8378acec feat(desktop): Hermes Light build arm — variant overlay, build script, CI matrix c0106e50e7ecedb3ce34e785d949725dc4e0e457 fix(kimi): send Hermes attribution headers instead of claude-code/0.1.0 3ee1bb323e8e891d3db0fd0ac63b8e7196c85abd fix(ci): resolve fork PRs in the E2E evidence publisher 4dc8735ebf0ef76fb502607cd66793a9285b8d4f fix(e2e): AHK driver died on first Log() — no-console stdout write throws 973e124a8e192429f7cd3e23cc659d209db6d0a4 ci(windows): REAL-flow GUI E2E — website setup.exe, headed clicks, GUI updater 9829746dfe3d5077f4f076e257505ec7f8feaa65 fix(gateway): require explicit route rejection marker c8f235a106680b900b54c0ec15c515dfa0b91490 feat(gateway): allow selective multiplex profile serving 2477484eb6896015aa79d52af4f4a585aed685e8 ci: drop the temporary pre-merge branch trigger c68ee0a8d9674782b694f025f15ca9ec0b9e4a04 fix(e2e): redirect via GIT_CONFIG_GLOBAL, not GIT_CONFIG_COUNT env config 42ad82983e2d41b28fa7b673da8faadfe2d7f713 ci(temp): trigger the Windows E2E on this branch for pre-merge validation 4881cc35ca0921f4cb6da3b6b9cee4cca6490b36 fix(ci): runner.temp is not a valid context in job-level env f6f9f89a77f3b757cb458384e987c45be1cc004c ci(windows-e2e): drop RUST_LOG from the update leg - it manufactured the deadlock it was diagnosing 478f2a998ba4849ad207826e6ec46003d1b39f65 ci(windows): desktop install + update E2E on a real Windows runner a31be48030f60383bf4c1d96ba46bd4b48430218 fix(gateway): respect routed profile busy modes a68b8b2119efd4c1ba49b475732eee21ff485b20 style(tests): ruff-format the added relay prompt tests b029b13faf7cb8394ebe00e8a10d2c7857c3cbb1 fix(relay): stop sibling gateways answering another instance's button press 9d6c5a920c773f86fad9ea16528212faeaa21815 fix(desktop): collapse Fireworks behind the provider disclosure on first run e3d22b5b2966319f51822cbf5e61a52b46d0995f fix(update): drain uv/pip stderr - undrained pipe deadlocked windows desktop updates 697f2896bf948731eb6fcb93caa7264478590843 Merge pull request #83648 from NousResearch/bb/custom-provider-profile 1db3405c0daf1626ff316b6d10f4877936adefa5 test: assert profile scoping against on-disk config and .env 1e6a7b3315fc9790dc7fd41973248efe6f9f91bd fix(desktop): scope custom provider settings to the active profile bdb1b53c088ca7006e32ac15d6070770f085dcd4 ci(windows-e2e): 45-min handoff deadline + uv debug tracing - diagnose the silent dep-install hang 3663b9c9f309234b08b428df900fc8eb8ad239c6 feat(desktop): rich web progress UI for the Windows update hand-off 2cdb30a474d76cca9eb61714d889c18f493aa7fc chore: contributor email mapping for salvaged commit 1edfdeee81283a05891a19ea649863410cc200c4 fix(desktop): keep serve backend alive through Windows launcher 6c93048a82a2ffb1f100a3090e036a5bfc951fe3 Inspired by ChatGPT Work / Codex CLI 0.147.0: extend hermes import-agent with Cursor support 6a20383eeba46ed15c3650be2c6f5efb11669419 fmt(js): `npm run fix` on merge (#83609) 0a60b164f56e632544600bf368e374c0ef4e8986 fix(desktop): single-owner console capture + HUD lifecycle coverage 0c1a11ada6a332244480920acad4f5dddfefb97f fix(desktop): correct import order for window-renderer-lifecycle before window-reveal (#81290) d9663938143f45eb6e33a745786e378e4cda9e1d fix(desktop): wire renderer-lifecycle diagnostics into OAuth and portal login windows (#81290 follow-up) fae0309c00242f0812b1065ca27db6ef25915acc chore: drop accidental .omc/ gitignore change from PR 11f920b81263f33c53142954ca9da636ff12d550 fix(desktop): attach renderer-lifecycle diagnostics to all BrowserWindow instances (#81290) b909254bc4830ed000d461c1b34a5520ac0102ee fix(desktop): guard the pool spawn and continue-local IPC on local-mode availability 65ca0f711ffcb663712118cf58a85d37228ae927 style(desktop): blank line before the availability assert call 0289dc924d23c3fd73e1c669428be727e49c4a0f refactor(desktop): one shared hook for remote connection setup dd51c763e6bc9503b24652659c38b61f460fffdb feat(desktop): backend registry with per-mode availability bde4b59f2fcf0eb1a48b764bbb52fa408e650714 fix(windows-e2e): screen-native button crop, ImageSearch only - PixelSearch removed 455016b82d99ce851e37693e333293f7ba85dece ci(windows-e2e): poll for a rendered UI before the welcome screenshot - 10s was blank cba48161b9bfc0edca15a9e2473923bf9decab89 ci(windows-e2e): TEMP - stop after the welcome screenshot, skip the AHK path caf0e6ac428072bebdc70cbe7291d7587e3e64a3 ci(windows-e2e): capture a lossless welcome-screen PNG before the AHK helper runs 33f8e96a72945afb29f3bc9ef9991940f0bedcf7 fix: guard has_env profile probe with _safe like its sibling fields 0d21eb82b591777772b25fbb768268291238aa6b chore: contributor email mapping for salvaged commit e2e0f1677c31d8c3f1ebc2a0355dc61dce78481e test: isolate _ACTION_PROCS in #52470 spawn test so lifespan shutdown hooks don't trip on its poll-less fake 373631bea1559e1f8e767f2eec5d897bbddd0a42 fix(dashboard): raise fd soft limit + replace iterdir with scandir to stop fd leak (#81547) 91de3beb7232e8dd54efbd3b2883de30ffd79dd7 fix(desktop-ssh): raise remote backend file limit 0b15eb5f053e19e11610d174825d266862a15f6a fix(desktop): terminate app-managed gateway on shutdown eb9fc9ad7f1c0102796d4f36da308c25375e2370 test(desktop): reproduce orphaned gateway on serve shutdown 07298df80589129bc1af290cfd890872a72d0dbc fix(gateway): reap orphaned gateways before spawning restart (#77276) 7b3f197c459256a4023f4b2e85e45d896042dff2 fix(windows-e2e): AHK loop killed a healthy install on its own flawed heuristic 61d056c2066dfebf57674c600426bc7ab0aca867 clarify __release_rev_count__ 91490032a82c75b16b17b9558886b343f1877b60 fix(windows-e2e): pre-seed managed uv - astral receipt hijacks UV_INSTALL_DIR on runners 3359d608023bec6f398540fc8366877526161844 chore: bump version to v0.20.1 f4243c0c7c64c9650aac92ee51e4b7cc82c417f7 fix(windows-e2e): PixelSearch scan band clipped the blue title, not the button 9af302e025d9af6cbcf6b66bef1828d679ba65d9 test: adapt request_tool_approval session-cache test to provenance lookup 5e6eab0cd38b8ecf6bcfc08d01d42b4f9ad7209b fix(windows-e2e): fall back to PixelSearch for the Install button 931a9e9d5663ea62962d61d7a731d650ff6ed266 fix(windows-e2e): raise the installer window before each ImageSearch attempt 23aafb53d195a2a7ea1de42f070d00642be91558 feat(approval): explain silently auto-approved dangerous commands 746aca265472f582869248ffd3c9922d36972ba2 fix(windows-e2e): button images matched a dev build, not the published installer 444c292f9c354a66630156ee29fee69439462913 fix(pricing): treat negative catalog pricing sentinels as unknown a1bfbccc02d5bfdaef1568facfca2cc1456c59f0 fmt(js): `npm run fix` on merge (#83539) a75e828b1a42f9b8fd37b8df197aeae30c78ee11 test(auth): assert the Secure ATTRIBUTE, not the Secure substring b685efed678d9f3be6bd56b3401256eed05e0229 fix(windows-e2e): AHK helper wedged on invalid stdout handle before clicking Install 52629a5de6561ff348e8e25819abd7be533d07d8 fix(auth): make prefixed cookie deletions valid per cookie-prefix rules e5e2fb8b2dbe1cae85aa5ad6ce45aef376016e43 fix(desktop): persist renderer crashes to desktop.log + finish the render() isolation class 15dbe772b38272e05a132a20d0c5566deb14102f chore: map contributor email for repfigit 5e57bf19a2d82b87f957332fcdeda655091ee6b6 fix(auth): mirror the PKCE setter's cookie shape in clear_pkce_cookie 9b1a2a14ca4a1e76d85591579c7d8fcaa0656782 fix: use psutil.pid_exists for orphan-reap liveness probe (Windows footgun lint) 1485a4ac2b656b2120f757db1ec7ca1ae9cf8bff chore: contributor email mappings for salvaged commits bc1223840d78da4ad00b070a35af2ca8d12b9c54 fix(desktop): reap orphan gateways at startup 888624ae61aea195973ca785461ce3fdea1c373e fix(cli): never reap serve processes owned by a valid backend.lock.json 585cee1a42ed1f198a56734b8ffad03f3d006886 fix(gateway): persist RLIMIT_NOFILE floor into the generated launchd plist b06f79a100be0c790043ecfe98b88df6a1aabd99 test(runtime): use anyio mark to match repo test framework 6386c753063d40e9fd0f874f0c31e8f59d6e63cd fix(desktop): reap orphaned local serve backends on desktop boot a9a0648f495fad150613562f265678e353f5ec78 fix(desktop): reap orphaned serve backends via parent-death watchdog + group-kill d93913b4212ad66538fab11c577f6e9b285162aa test(runtime): cover nofile edge cases acb7547dacf90c5ace8cf5b1e6eb5a1723529097 fix(runtime): make nofile soft limit configurable 0472c31aa1bed30cf1ed71b4983890bc48444ec9 state: bound PEAK read connections with a permit, not just pooled returns 87aedbe7b60499037ea627e96e41de5fad9725ce state: pool SessionDB read connections instead of leaking one per (SessionDB x thread) 7c7cd24d00b281d25b4cb9292fbc6acf0a45478a fix(auth): use SameSite=None for PKCE cookie over HTTPS to fix cross-site redirect dropping 6a7cf19302ebc04f728d4a0821b4dc6422598cd5 fix(gateway,relay): stop frozen-preview finals and dropped idle-session delegation callbacks (#82592) bd80c4673635ffda93c07f97cc24319f4227bdae refactor(desktop): drop the undefined union from the stamp declare f5cd0b7a6da25c5f4cf445cad2795e6d64153661 ci(windows): install test tools under RUNNER_TEMP - untracked dirs in the checkout trip the driver's dirty-tree guard cae085be593c98956486a1116eda4c76d93b46b9 feat: single desktop variant selector and baked install stamp ee4bb75b532e932a1055d9a710802a7435163b6a docs(teams): correct devtunnel webhook protocol 5bda888bae9c927566858c1fc5bc6d68d2941423 feat: run the hermes update post-update phase on new code 3e95932805bc20a432767314b35d9917ab2bbbed fix(desktop): download PortableGit to tmpdir, not inside agent-payload fafbdd25ad0e81758df8d30ef34aceb1a8add647 Merge pull request #83458 from NousResearch/bb/profile-export-redact c7b79c38b05027bb75576da7b3fd9c5fde92c6c2 feat: boot-time post-update bootstrap for all install kinds e74f44d7ae65e37e0165c932b9a8a5def0e5608a ci(windows): desktop install/update e2e - published installer to this commit via fake git remote 049196642e1d7cca7983717f5f77f299754b3d08 fix(desktop): exempt whole PortableGit tree from arch audit 49c632310dd6877302e8dfa92e740b0ceddb97b8 Merge pull request #83454 from NousResearch/bb/hud-title 6c5cb2db4a0584c96d9f09c9699787b91ac07382 fix(profiles): scrub secret-shaped strings from export archives 9e7700e8a3da8d06ca687e803e3ec9e50e7188f7 fix(desktop): title HUD windows Hermes HUD 920beecfa8f62e60254afd3a274aaf3105f80f6b perf(desktop): long streaming agent sessions — steady window cut, stable rows, stepped backfill, pane-shared budget (#83446) fcaafd705cf50fe25edef831bd4ffac152b77bcd fix(desktop): use fs.rmSync maxRetries + exempt PortableGit .NET DLLs from arch audit b1e979f3be4445d40817055d0ef5b01b00d30f3f fix(gateway): offload evaluate_after_turn to thread executor b50e27e6d7cd1885a37b4c468dabfab56185c329 Merge pull request #83301 from kshitijk4poor/chore/author-map-angriff36 84434a52505327623509d281f5287ea5fdca0631 fix(desktop): retry temp file cleanup after 7z extraction on Windows b614f70361914e85fd2a00dceb7fa2ffcafabe0c feat(kanban): teach workers to flag collision hotspots instead of piling on 5b9ae70f2970287cfb07add85440f00b3e7cbc89 kill backend trees on updating 11b0271243ac4fc74360c4909a0ebfda55b4150d feat(kanban): add split-brain decision-ownership contract to orchestrator guidance 411a07481b9660e57ba3dea97a6b566e667159e7 feat(skills): add decorrelated review lenses to sdlc-review a98aee47cecddab9ab9f58fc3a3b94b25f78d394 fix(kanban): move descendant invalidation to domain layer, make it non-silent 917c27d4a5ab39b3d658d75e12c1ca941a653f10 fix(kanban): preserve failure counter across review transitions 1810cfc8dd4797efcfce03345b5cf02a17aa7474 fix(kanban): guard request_review against live-claim theft a235d1917e1f382afb3e361a79a693e83c3a72fc fix(kanban): skip PR/success respawn guards in review lane af0a41866677862b11cec8a2e863fe764f733e68 fix(kanban): make write_txn nesting explicit opt-in 1a8aded87f38a10a3c9eb6424ad7d7408e7f64cf test(kanban): model legacy notifier ownership 2245928757075911066d4b500ca7c930630e10d0 fix(kanban): require durable re-review provenance b6a14d8297ee86149a5d949da87c4f04d57bf787 docs(skills): modernize SDLC review guidance 31c0e0fe67ccf8fc8056293733e15492f4e9ee4c fix(kanban): preserve reviewer across re-review 4317c92751ede67b7ed7fd70d97e9f68c15115a0 chore(contributors): map Nikita Barkov 0acf49b16f03d97c2753f123bad41461d1e3e647 fix(kanban): isolate review handoff ownership 6d7e86c262fecb9ea98e0080c37ab2221aa53e1e fix(kanban): enforce review lifecycle invariants 4ab998a7de4d0e606405930c62dec463614cdd68 fix(kanban): close review graph race gaps b90da8243b07ae1c1ebafeb205a8ed54c51df32d fix(kanban): preserve review phase across retries c230d1202f72bdda6de0325d8a283355c7a98585 fix(kanban): clarify downstream review inspection fdda104f1333a6c44f9f4e611b3817b9510b06f9 test(kanban): harden cross-platform assertions 0fe4d9022386e863c04209c6abab161fa8881fa6 fix(kanban): harden review graph handoffs ae23b1f676276d8fa55ea9d9b7483f4925bc7d6a fix: complete kanban review lifecycle 16accefd2f5f799c6d67c86d26e13d197603547c feat(kanban): add first-class "review" handoff lifecycle 1b5da4aacfc9294ddc377854053fc228f9129138 fmt(js): `npm run fix` on merge (#83409) 12e368d2de42565d20ba7db16d09395be436a55f feat: composio optional skill — 1000+ SaaS connectors (Gmail, Notion, Slack, ...) 5b8cbd5ef2891eca3cf414306ca8e6ec8a3bf118 Merge pull request #83404 from NousResearch/fix/blender-mcp-compromise 8d8bc85dcaed6154c73b5c143e0f03760acc55dd feat(browser): make Browser Use mode the default browser backend 6fedb9499cc5de2b227969c291fdbf84f3116b76 better dirty UI b711d9b1d6af51a497421270f6037f12f25b368e feat(desktop): bundle PortableGit 2.55.0 in the desktop payload 37e46c774cad6e000407dbf0b79cf8826eac895a cleanup: remove references to simple-term-menu bdbdfead041745f3b835214b3422e8d133f6f022 fix(security): remove blender MCP catalog entry and skill after upstream compromise 1362ffc7d2322a7cc6411a94164c36b1d5f2bb11 feat(file-ops): name the binary type in read_file refusals (magic-byte sniff) 0da8793881f8c3a43fc6f4dc608a53412d342504 refactor(desktop): merge artifact/runtime rows, rename Source to Build Origin 03da1606bcee38acddaf77028108122170ecfdea fix(ci): merge all duration slices, not one 7ca751aa160c886a8030882a138d7258932429b4 feat(desktop): carry the runtime location in RuntimeSource ea95089a88b161faccb50e17dca6a88f7e7c3524 feat(desktop): unsupported updates messages af1b298d116e311c5d0a2ff7c19e5e6b4193cb80 refactor(desktop): fold install axes into a single hermesRuntime union 742ae688ceec8615e41ed18184b399e57c323fe0 fix(deps): hold the [tool.uv] overrides on the lazy-install path e5bc6b21868efad57414b1d28abbbb5ce26765c9 fix(attribution): correct AI_AGENT id to registry value and carry harness markers into all terminal backends e47a931d3305d6295738cbb5fabea175cf033a9e Port from earendil-works/pi#7493: advertise AI_AGENT env var for child-process attribution 34b6bbb96a8964bd8e36a3d7750d212ef73e83a9 feat(skills): add bundled merge-reconciler skill for neutral multi-agent conflict resolution 8edcdd1a807ee7a84d6cadb556ad7e129cac5683 fix(desktop): isolate plugin render hooks 21835cc951fd3f0652589ba6605c37c6318d9168 docs(delegation): document frontier-planner / inexpensive-worker cost split d3560b82c4c49735f839a67a1379b833ec49638d docs(kanban): document the parent-link context handoff for follow-up cards 2b618fe7e5c31ea62a167a40b3b72c52a88047b2 fix(sec): move cryptography to 50.0.0 8789cf9f0cfad85ac8c8e373ca04b7972a359e46 fix(sec): patch the npm advisories main left open d5ddd442d75dcd839552bbf16140d4231c0fecb6 fix(ci): review comment poller deadlocked on its own run 7e04718ec384d918885e66c3b1e5078524752c22 feat(browser): Browser Use mode composes with all CDP browser backends f21d9714e87239344819f42525ababb6421c0e4a fix(browser): don't migrate Camofox users to Browser Use CLI mode 39a234b13304c8bf9cc11e4579f0850b327e1be5 fix(browser): gate browser_exec on terminal surface; pin schema helpers digest 9e5e1740ed5e7801368e910c6eabd37856319a1e fix(browser): apply safety checks to browser_exec URLs e076d230f46fb3cc79f7c0ebe1bdc25821c1186b fix(browser): rm secrets from browser_exec subprocess; /browser off; hide windows console 92968a5c7d4adec3633fe123d1410685f135e5f4 fix(browser): persist workspace across browser_exec calls; raise exec timeout 300s/1800s max; teach in-code aggregation + count verification in tool header a1835c8c17f5ae07115499a79bf2809809b3ba64 feat(browser): integrate Browser Use CLI 3.0 60938d5bab0bff66306e3ef7232a624e8380529d feat: hermes mcp serve --tools — expose Hermes' tool surface to any MCP client eb4a0a3da77f9085d3c036fe131a5256d72d653f test: read _MCP_LOGGING_CALLBACK_SUPPORTED via module after _ensure_mcp_sdk 55f9e472a06ef63b85e6161fd086121675be1e27 perf(cli): sub-400ms warm startup — probe-mode check_fns, lazy MCP SDK, banner snapshot, parallel worktree add aa79e4ce0fdc2a141b99421a9fb6c35bd285d944 simpler migration 623669ab9eb46cafd18cd88c386a635bc8e821a3 feat(desktop): deny updates when working from random git checkouts b649d600b5b437058b0fde2602473ac77f3315f1 fix(desktop): detect worktree roots in updater 7b2ffec3c24f0b91cd1d7bd57646e4c18810b60c feat(desktop): console-log when second-instance exiting to help understand why it exited 55a48afe3d73881eb4570569121bc522d23e4cd3 fix(desktop): don't throw misleading error when an install stamp file isn't found 396fd37b590fce40665cf8c752459fa8d70c5ebb feat(desktop): show updater errors ab6b9492f0b7cbe904da04db7974bca6f192a89a feat(tooling): minimal sandbox 8c13c991895af07f91dc34385736989b498e5e93 chore: add Angriff36 to AUTHOR_MAP for PR #29543 salvage 075651c0724d5e163b972adb1775d95a4823e4f1 remove flux3 promo 04f096ad80d62774bfa666700f98a4696dd41b66 remove useless automatic updates text 5e09f7cd6d70fbefda6014da62e9192f0ef1ec32 fix(ci): give darwin notarization headroom + osx-sign/notarize debug logs 4a783b1c21a0cdf941a31b94e6e9a1d6160beeb5 unify install provenance on a single code-scoped install-stamp.json c375b9c28a7a02dae0169b9a5365ef5b7cf05b00 feat(desktop): gate uninstall actions on install provenance 02872b26e25433d2985d24b66860626c14c63cc5 fix(desktop): scrub pbs's stray x64 vcruntime140_1.dll from the arm64 payload ef3020de1fe62da62c77aa0cfaeecdec4a071d00 style: drop useless slash escapes in the exempt-path regexes 77d4164d77d10729d262f3ac52fd50381b314c41 fix(ci): exempt electron-builder's nsis elevate.exe from the arch audit 03fa32c92dd445eb64c7f67434dd91b32c40701d fmt(js): `npm run fix` on merge (#83143) 6735e6a10a7d3a6950efa77e9ca2b5603a96faad Merge pull request #83138 from NousResearch/bb/titlebar-tahoe-fullscreen 86d747e00d81711d1dbdc25b2dc7deee5769193e fmt(js): `npm run fix` on merge (#83139) 4ed6f4f7f18b7b36de199e403b5f773417b92102 fix(desktop): satisfy no-extra-boolean-cast in fullscreen guard 3139a30e52b560ea96c69b003cf9eb49652fa11f perf(desktop): multi-tile grids stop lagging — evict leaked session states, index lineage aliases, split the turn journal (#83133) 4f9d3459560e0fc14d882c06d0111743c677862a fix(desktop): skip titlebar Y nudge on Tahoe and macOS fullscreen c08b086013f0e3897ee500e93d95f7c568eb4f13 fmt(js): `npm run fix` on merge (#83132) 338bca7968690660716bef1ca6a65fc0c625ca81 Merge pull request #83130 from NousResearch/bb/hud-snap-pointer 422b25693974288adc33c207cdfa4c18a37fd71e fix(desktop): sort hud snap imports for eslint 440e6fb6405ce79fae3c7ddbd82741507126e51f fix(desktop): list HUD snap chord in keyboard shortcuts panel 9c75e4863f95124a91f6d643b094195d21223d5a feat(desktop): snap HUD to cursor with global ⌘⇧G 5a3920b7344787fa1d4f0d4cec1f8cf4a445c189 Merge pull request #83115 from NousResearch/bb/browser-pane-resize 75dad8b15c910e3e8e1a2aa0f46cdb2adfb1fbbe fix(desktop): stop HUD window growing on drag; add corner resize handle (#83091) 33ac4bce56f1919d5bdd546dc1e46702775d2f6d fix(desktop): satisfy eslint on pane-share-memory test 92ed8be9235ad2b237442a122cd7ce3f7ef6c3df fix(desktop): reopen docked tiles at their last split share d67337ee1a4a5f5c987c12662c391231528745ad fix(desktop): keep min-width floors on stacked flex zones 7267adafdf5485e646acf45ab5ce496ee5e94250 fix(desktop): don't let webview guests swallow drag gestures 54e33c95a64a07345f40ff28117eab722604581e fmt(js): `npm run fix` on merge (#83099) 4e46129ffea7b873f976df921f7c22bbf584bc46 Merge pull request #83083 from NousResearch/bb/titlebar-controls-y a843bcc9409d54ac24536b1104b2698cb078fa4c fix(desktop): sort titlebar import for eslint d1f2e32b13a2fb593eecbf42222a43c16c6dea69 fix(desktop): titlebar clusters — macOS Y nudge, 24px targets, 13.9px icons ec41b6e8c69e713c8d750a37ccb6bdd89d77f6a7 test: read _MCP_LOGGING_CALLBACK_SUPPORTED via module after _ensure_mcp_sdk 990c6a53f56481379c6d70e371e411ad0b6685c6 perf(cli): sub-400ms warm startup — probe-mode check_fns, lazy MCP SDK, banner snapshot, parallel worktree add 92dd230c8c3bdbc900f29a3d6cedca1ce1450b50 fmt(js): `npm run fix` on merge (#83078) b278dcb2d366c0c81802ab8d95fcf45b37ef619c Merge pull request #83052 from NousResearch/bb/sidebar-all-profiles 7e1f4f6f36cbe386e286f6c17019dcf820ea23ed fix(desktop): ship the sidebar grouped by date in every scope 8de786c7a7e7d1c560247e3979ebf89297b743d6 fix(desktop): give every row's trailing metadata one right-aligned slot a1da384c6d968000773ba0d1617d6931dfe25748 fix(gateway): carry desktop_contract when activating a lazy session (#68392) ad2c7af86a28075296a1888b16a8fc10f8dedd76 feat(read): jq retrieval hint in notebook output truncation marker a607b762821b6cabebf9506d0772623cfa32a328 Port from lobehub/lobehub#17855: render notebook outputs in read_file ipynb extraction 6c371e944c68975eabba10a9b506761bfae5b1a3 feat(desktop): fade the sidebar's scrollbars out until you're in the list 2278056256be5c31e6e92e7b58af92cbceb642b1 feat(vision): disclose downscale factor and crop offset for coordinate mapping faa188bf52dc59e4cfcb8e6a0701456fb623b6d0 feat(file-ops): clamp oversized lines in the shell pipeline before transport 7cb14523f8a8a8036120b97a6086e067417a9bfb docs(delegation): document frontier-planner / inexpensive-worker cost split 79ae67301eafd933be1140a19458e3eddccf3bd7 docs(kanban): document the parent-link context handoff for follow-up cards 83391e382cc0c2570d5406ebddedefed31751c15 feat(skills): add bundled merge-reconciler skill for neutral multi-agent conflict resolution 82255fa8ef059fdb8162131bd320a893d4955881 fix(telegram): reset failed primary transport pool 771b214516d7f89f185c8dc3b959e9f76c97aa8c feat(desktop): show every profile's sessions in the sidebar 7e1bfeab8899bb0603db422b7a1bb374a99335a4 fix(desktop): read-only keyless plugin rows + backend contract v6 8fdb92f44936c0137bbdcade7d8b5d280347e1dd fix(desktop): hoist the sidebar's sort key out of the flat list 03a9c69dc6f6f4e1ca41ce95aca33e357a0e57c1 fix(desktop): preserve keyless plugin row identity 5b68d2271b3b2ad279ba9f79fe348b39d2f51a5e feat(profiles): serve a cross-profile project tree and per-profile usage totals 6e19c20d0a4ae239df8af32f6e90975304e7fcdd fix(desktop): support keyless plugin rows 56dc01d904d5826957208450e62a1634b5dc76a3 test: adapt edge-case pagination mock to the sentinel probe ea68bdda921a92f29ea17f18e4ae7145cd4e3dae test: adapt read mocks and fifo guard test to the sentinel probe e0b50059857fa839d36f06bab0615512f3ae0d2d fix(file-ops): stop read_file blocking forever on non-regular files 0514d67fa6c41dfdc9cfd64ef4c4997c215f509d chore: map contributor email for salvaged commit fc09f1c69535f8f86235da2cb88e426cba894f5a fix(process): reject non-positive wait timeouts; distinguish log offset=0 from default 893792c9934447e80f40519437e7c64b4479fc3a feat(tools): name the dead end — past-EOF and empty-file notes in read_file adecaf8086bbd38bdb7284082691738f787cfb49 fix(ci): unbuffer live comment poller output 12299ca54c11e3fb51e5659888f13e53ea5d22d8 fix(ci): keep review-gated files out of the js-autofix patch ee0f060a7d56747e66b1c97695f6524f564bd75c fix(ci): start the poller on in_progress, key concurrency per repo fd452e26e3c0377d5e28f931149278957c73ccd8 feat(tools): unicode-equivalent filename retry + near-miss suggestions in read_file 03f239b9fd60389de27631531a5a8fe139f58abb fix(ci): notarytool wants a .p8 path; write the key file in the workflow 82b9c9c2ef86c1d0172585b2f5e2522d2790a499 delete notarize a534415e360ad3ffae47b994a5308956717bc347 change: builtin macos notarization; delete the notarize scripts 5102f70260a7dab3d5e3692adc7b09ecb9d72811 change: ship the unpacked app tree inside the release artifacts 31c10948737f935dd8eb3eb57dd98abfd4ecd043 feat(ci): per-os desktop build check with unpacked apps + updater feed 2b1cbcc925a402c429b0aecb48c47b786b43d133 feat(ci): fail the release when a bundled binary has the wrong arch 2f09a80d374565ffac40b073922c0dc414159841 perf(ci): cache the payload python + site-packages across releases 1837ae9c2b6bc8af11f8c5a4043e12996cde698d update cache actoin 15934251da2ca13f6bbda22bbe09eed3f20ff9be fix(ci): sign as a workload identity — no subprocess credentials c9f3d07e9620bc3e347e951464960db130ce7186 fix(ci): the dlib's azure.identity accepts only dev/prod chain halves f4784418c2f4e36020ef3f4ff010221fe84646fe fix(ci): narrow the signing credential chain via env; keep builtin notarize off 8d9a156aded8d4e0b6b2d28ab95d69e22da9adf3 fix(ci): the v27 schema types ExcludeCredentials as a string, not an array 9da67850862514d2885b4e94d327a1eebea2e775 electron builder debug 4c885c49028b9c67ef0bfe994544fc8835d4e393 fix(ci): the signing dlib skips the imds probe that hangs hosted runners 657cc3880507a71d5af153664755aff9ba8bc105 fix(desktop): macos signs mach-o only; payload symlinks sanitized d32e24731fd4f01fdd747468e2e6f7ac36dd8127 fix(desktop): the payload ships no absolute symlink — codesign rejects it e409de879d995572c97a1430a8c671a05cffa241 change: drop stale electronDist references from docstrings 2983fbf11bd2635f67309b9986050739416c0570 change: electron-builder unpacks its own electron dist f33e6feeb7e72cc8cd627139c71ff3854be1f023 use payload python ver df98acfa2fc0f21016fd9e41355a8265486d0123 log level verbose db82bf3dbd9bb509260b5b4feaaa0921db1949e7 add timeout 34090f39dd431571a47ecaf59262632fbad04c64 change: update ci action verisons 0ea986db6633a8da997250aaadeda3fef709d200 change: electron-builder 27 signs with signtool /dlib, not powershell 101de260678e079cba4dfa4af69888ae7dbb7b7a fix(ci): the signing tool needs a .net 8 runtime, not a preinstalled module 8478b53adc65ca935a99c56c4e9a71bcfed9d6fa fix(ci): the arm64 lane no longer stalls or duplicates work 847416ab3cdc4dbc4e63767c1dfe57d54fc76e67 change: pywinpty 3 — v2 sdist cannot link on windows arm64 5f231f83f68f5d4730bc98895fd841dfb163d697 fix(desktop): electron-builder never publishes; the workflow uploads 43e9795ab99f2185d4172519b2d9941950d5e40c docs(desktop): how the bundled installers are built and tested 3c6073de3c0bbb7244542c948365a4acaa2a4dac change(desktop): the windows installer is one-click per-user 2a0bb64d1868b37058e6474ed5e2148545faea5f fix: signing uses the azureSignOptions schema 19c0f4e5e2829a1aaf07d436165fe653ceded190 fix: windows signing config moves to environment variables b926dcc3d9214db490b3c93febb7bc6c49ccf8dd fix: builder args with spaces survive the windows shell hop d2777660b3aef8fad8ac0b7c09d8e6060ec87abb fix(desktop): write the stamp through uv, not a bare python3 323df71ed318c8292b6137a19f667f4328d13b1b fix(desktop): tag-to-commit resolution survives cmd.exe 4d0df3882a1f4565569d0ace7aa65ccccd44da2d fix: the uv triple gate accepts official windows banners 12839c91f526abd46108f72133e12543f726f642 feat(desktop): About shows the install axes b073513d79c404137a98d8f6849a23a89f50837a change: gate the build toolchain by engines and embed the gated versions 62df64e85390300b705283ad06b96503bd7ad9f8 change: the bundle build always runs every step fd6b0fc1bd88835f8da334554efb9e770e0afc88 feat(nix): a self-contained builder for the desktop bundle 01859bf72cfa97e157f7f85af828a815f6db4258 test: the update suites opt into a managed root; the guard tolerates sentinels 3320b561e8ef5809b6bb5371c239d5156fa25e90 docs: record the sweep's tree-touching tradeoff 140dfe7af30cb6af95751c8c6157c8faeae54737 feat: hermes doctor reports the unused legacy desktop checkout a28ecc88ff74f94f4acb5548df5cef07a6a3ac20 feat: hermes update asks before it touches a non-managed checkout eb676fe66e4a0393070dfc723e4dd33f726e7ca7 change: derive install state from .git and the build stamp 60372c16305788ce9e73a949b0dceebb50c7fe3d change: an embedded app always runs its embedded payload 18478723f19d6f57dd59af8626966858fcf0292a feat: the nix build stamps its steward 28451113c02f58855346f4bf5bb63220afe57e30 feat: stamp the steward into build info 0f752ec5bce4404123bbc51398605ae1b57ab0b2 fix(nix): keep Linux-only tools off the macOS devshell 5ff391af5bd37c9751e7ded24d72ff3251b1e4e1 feat(desktop): channel-aware update vocabulary and version details 33a30fbc80a503702b024b936a3e10b8171589e6 feat(desktop): run the bundled backend from app resources 08f13942f4f92071d52ca9c0ca52c6553ef87d32 feat(desktop): stage offline agent payloads into the bundled artifact 694bd9ab2e168a47e9b14bf27149b5ecbd4fc54f feat(update): install manifest, release channels, and eject 01aba5cf16cdae6ee939a148fb1bf60f45fb9cf3 feat(version): one install stamp carries build provenance c1af64ee99aa6ae9ddcc25f8d34f626f61fc6609 feat(release): create SemVer tags for new releases ddd21abfa89498fc105b4948239ddfb9c4d101bf chore(evals): track results/.gitignore (its own * rule excluded it from the original add) 0e63ed1feb569aaf826c788bc227ab4827e784f4 feat(tools): stat-based special-file guard for read_file + readtool eval harness 58bd286273087eca73a84852f54b708b0deb9846 docs(sessions): document repair-routing and the continuity guarantees e09ef9ebd8e4456e17d45df8f4ecebb55c40d88e fix(transport): use getattr for supports_prompt_cache_key on stale profiles f45a3fb2b0ea83ee0dac46267351d7505d8f5fa4 fix(update): force-reload config modules before migration check 4227336677603eff418ee23405be81f7749324c4 feat(skills-hub): fall back to live repo for optional skills missing from local checkout 481ccdafb765dd395d29640dd0d265d9b4a8f531 fix(desktop): keep react-router in one runtime chunk e400dca96ec875c0454c798a29570d596cfcf21a fmt(js): `npm run fix` on merge (#82962) 327f7efab8b28a77d40d24d577cacfffa6f0e598 fix: close sibling display_kind drops and ui-tui parity for #82756 4d79bd3d02568d58ac7afa1d954329fd3d2469c5 fix(gateway): reject boolean ordinals and bare confirm_truncate on prompt.submit 60645f8a536c13e9a26b2e3126692de5a736f65f fix(state): make a rewind truncation recoverable instead of a hard DELETE (#82756) abd85a94bcb10b300f3938889dfd2ae1b0a7b97b fix(gateway): keep the personality pivot out of the truncate ordinal space (#82756) c91024e6c7ef310f098320050b8c9fc73c16f08b chore: AUTHOR_MAP for aameobius@gmail.com → francialisomlimoeiro d3e87eef44ed0df46188184da5bcebf0d2421130 refactor: drop dead sys.exc_info check in delivery error log 100219f6643684061a898c85295b7d8da1db008f fix(cron): surface exception type and traceback for standalone Discord delivery errors b1663edf2a2587881c442b6a67d833841c6e3a2f fix(cron): load .env on no_agent path so standalone ticks resolve delivery home channels 6fa646e7d8955688e5c65b19ddc3b4ee9097a004 fix(skills): reject colon in bundle path components (NTFS ADS bypass) 2afa4be9326ea9d655768ba78bfbbeb43c414dc1 fix: trim comments and fix sibling pop site in summary path 126a6ffa4d62726ff0595f25e5d1ccef2b00840b test(agent): cover the API-copy build so restoring the marker pop fails 97ced4bce29c0b2515500e1b77b1e0cded8df477 fix(agent): keep the thinking-prefill marker so the drop pass can strip trailing stubs 1439a65829c6464891a9aad3f921c4ab712410a7 fix(tui): recover active goals after compression exhaustion e4b2a90dadf2b33cd59c34f14a838a26152b8f2f refactor: follow-up for salvaged PR #81692 6c2c77efba051cd26b2a587c18484bf96cbe24ab fix(agent): persist completed text turns before the loop exits (#81641) 8359e760be499fd8e804242e7606d81dde931abb fix(ci): don't report all-good before jobs start cd4317b449f93ef34aab83a7dbce5ef6eb14684f test: convert the last host-OS fakes and guard double markers a298dbcfe3005781bfd1ef15ee7e3e3e541a00dc ci: print the zero-selection diagnostic instead of dying first 641d254db43663334d8dd95da39318f6a18f74c9 ci: add macos and windows test lanes for the os-marked tests 30da5d0a8932ba149210f13090ecf529ce751763 test: run os-specific tests on their real host, not a faked one 6e0f4e381bd4dfede2197c875c5dcd85974d95d6 Inspired by Poke: hermes recipe — shareable setup bundles (export/preview/install) 9f786a0adb6e5e1d8f56ad4738ddca4aa4743a3c feat(photon): gate setup success on iMessage opt-in via first message 3aae9f1bc5f2b6bd9b5d3115ee9f0d63f5d22e8d feat(cron): give scheduled jobs their actual run time in the prompt 0d8dba4bbba35aa0132ebacdcc639f7ccbebaaa1 fix(gateway): preserve approval card content when resolving on Telegram and Feishu b46dfb97a12b1ffb30a0da74c2cbf38e3e255115 feat(session_search): bounded lexical query expansion for conversational recall 9b8e6312410948cc789e88f483fe1aee33f2938f fix(file_tools): refuse plain-text writes that corrupt binary documents 866dcca8dbafcea12a3f3b2b8af845460cfecd98 docs(evals): record feature 2+3 verdicts in readtool SUMMARY de57ef76f629228a9e7d048673b2cedde1351530 feat(tools): name the dead end — past-EOF and empty-file notes in read_file 471efcc2ca6e41f852aac74eb03e9ca86de385d8 feat(tools): name the dead end — past-EOF and empty-file notes in read_file b6bb06f3655f7ee205d081663479c7edbc68f6e6 feat(tools): unicode-equivalent filename retry + near-miss suggestions in read_file 758524fa5ff4962aaedacba71f025ad785862a76 feat(tools): unicode-equivalent filename retry + near-miss suggestions in read_file 3bd844edf1777a680115f88a68474b4fb434092f fix(desktop): make un-highlighted code readable while streaming in light theme 71206f01b35fa86fb7b985b895743c674a80e740 feat(tools): stat-based special-file guard for read_file + readtool eval harness 81571ffe5da5edaf0eb50822b80645ef4cbdd813 feat(tools): stat-based special-file guard for read_file + readtool eval harness bd67c9884141efafefe11bc7b0be60031c337b73 feat(skills-hub): fall back to live repo for optional skills missing from local checkout e34c4c009a1859b3c12f37e6301814dd2eb78e2c fmt(js): `npm run fix` on merge (#82771) aaf0fbfa95180a2ce23b1a2e2d5b0bff26f7edba test(desktop-ssh): cover wrapper preservation and explicit-path passthrough in locateHermes 8b752603c4768558f9c607a0f6c4bdafe7777d46 fix(desktop-ssh): stop resolving exec-wrappers to python in locateHermes (#74411) 497c90f317f7bf55fad0daa7791253f85654adda chore: map contributor email for hillimited 784f733cf81198319d6adf9eef6cecdc389cb881 fix(gateway): honor session_reset policy when recovering sessions 6e99531c8e878cdea7b65a1d34697565a2117398 fix(gateway): respect reset boundaries during recovery (#68539) 7830d9e102fbb0ea23888b7d7b4a922ac03b39e3 chore: map TomAce7 contributor email for attribution audit 6e8dcb8f47e2a31771f3ddd5d4babb04ff3267ef fix(gateway): distinguish durable cached transcript rows 59f1aa8bf6a3af93455fff47115f415a065b7c2f fix(gateway): carry origin_json/display_name into /branch child sessions too 4f0531c972e550776a409ca72f5c63cbd776f6b4 fix(gateway): also persist user_id and session_key in child-session creates 3cbeeaa175af452f6be3a747033f70b535a5103e fix(gateway): carry chat_id/thread_id/session_key into /branch child sessions too 3e05d7abf136e6bb102f35a7bbc6da01bfe4f548 fix(skills): trim ast-grep description to the 60-char hardline c002b6fbe596d4cf9f03797a6beb94d123e5de37 fix(desktop): send full tool args so expanded rows show the whole command 60bbd01b6f8c8fee501a37a858cb1f0e0f81ba54 fix(ci): don't report all-good before jobs start 461c4939725b8c85aebb78abeda92993a9f53efd Port from code-yeongyu/oh-my-openagent: ast-grep structural search/codemod optional skill e95e13783bc4a17ce97926a4a6b226e6d297abc0 fix(docker): per-session container isolation and session-scoped workspace mounts 5aa121ecfd0f21ab77f7e64808345ecf980e24ff refactor(deps): read the lazy-install specs from the pyproject extras f046bca36d57f7c57de40592eff0eb25893f622a fix(photon): dedupe the last stale @opentelemetry/core copy c6483135f7cb2b7452db8fc97bb464dbdb0c1bc8 fix(sec): move cryptography to 50.0.0 5ed1c972d94a81dbb17ee859829d3731dbf1287f refactor(sidecars): one resolver for the Photon and WhatsApp children c195b0988cde8ba7204f0e3d55f4451c9ddeebd5 fix(deps): hold the [tool.uv] overrides on the lazy-install path 5c4219cad5c15de50a6697f062c0f14c3471819b feat(photon): move the sidecar to spectrum-ts 12.7.0 935f58a9626bc0b920b01bb750694984314df0b8 fix(sec): patch the npm advisories main left open 1527a81b5eee6631e5bbec8d7fb0ce69db6a166d fix(state): keep canonical writes available when FTS is corrupt de0f20ff05b7e0dbf7120656c1057bb9c05250fd fix(gateway): spool cap-dropped pending transcript messages instead of discarding c790ed2a5d2482d812d75ccd5ed335a6ec7e5240 fix(state): recover gateway sessions stranded without a routing identity 408634c2e13f992a11f0f509d3c35e325c7922c8 fix(tui): fix unreadable session-title chip contrast in the status bar e7d01dd021096d26a697531fd2aa400f2533bf25 fix(personality): preserve config comments in TUI/gateway config writes 7aecab56db3bc560288f7a06040ecaab3d3c487c ci: move the review comment and the image build out of the CI run d2a4d373ebb650c8bea2de372768f69377fe9cea fix(gateway): make session identity durable so chat continuity survives crashes and restarts 0e2b5f3835832301bb6b081f94ee9fbb7e58db5a chore: remove old plan files 244d296646909aca1dd16c9759491da0ef4cd163 fix(personality): single-owner personality state + one-time reset migration c9411b72dff3ac4180688ac766ed37f8416ee757 fix: store strong ref to detached fatal handler task to prevent GC 7bc81c4ffd2dd4c962a84837deaf6448fb67d9fa fix(gateway): shield fatal-error handler from carrier task cancellation f2846934969a5d194544df51b4cedb57da8f1f64 chore: AUTHOR_MAP for afgl_mk93@icloud.com (PR #81851) 1e8339a48c96e8135a871b7d4e654c37d3bd53d1 fix(compression): preserve live tail before snapshot adoption 326bdfb7a27e292a25aa1a8a073e6fac43460a98 refactor: clean up gateway scope identity predicate and tests aa32e8114148ab932689bcd396cd67c1802a18c5 fix(process-registry): bind gateway scope identity to pid ff5dfdecefd941e9339d5f488fb919b3f7872cfa fix(process-registry): keep CLI workers off controlling tty bcdfdd51e58381b68627c680e38ef08d6422c0f0 fix(gateway): make the restart-loop breaker see slow crash cycles (#81642) 6bdeb2df24d2d1d47cc08862a6bbc3171105746b fix: move ghost filter before alternation repair + promote scaffold constant 0072969c1889d207056ff123c9b7a11752f0fd6b fix(agent): drop legacy interrupt-scaffold ghost rows from API replay 68d1aea1ae1a135a6b4156a536a4844eb1ea3dc9 fix(agent): keep interrupt scaffold off the tool-tail redirect placeholder 2446c8bb6755ff5e6feff4d26e425661edd4019b perf(gateway): 10x faster cold project grouping (3.3s → 0.3s) (#82472) 368625e001d9e8b333efbfb0749b2d63f9508a32 perf(gateway): warm every path the project tree will resolve 3ef8cdd2678275092abca6a1d3ac2d530dcda8e1 perf(gateway): quit reading system prompts the project tree discards e3836efc5fbcae31929057abec9d330a0e26ec07 perf(gateway): stop spawning git for paths that cannot answer 28e401c30b9dc74678f21f1565651ea291edc7af fmt(js): `npm run fix` on merge (#82468) a4970d07d58af41968b7371776481b56411bc3d6 Sidebar filter menu (#82463) 868d2161b79d9bcbc220bad2a8b9cbaa159063d9 test(desktop): stub repoStatusForCwd in the review store tests 83b8ca1e12c5d8fa34e0248ac22fa66d111d0b13 feat(desktop): sidebar filter menu 9c73cbe66a051774a5cb8f115fb06e9f0615520a refactor(desktop): one profile glyph 21aaa8b4f8d36ed8ea33b6df46622cc1596c748e feat(desktop): resolve a session's pull request 4f675cf2fc1dede6a6f951f682c3232f41c4efb7 fix: double-paren bug in dropped-tools prefix + add empty-response nudge sibling 45cd93fb5b5366446ced799596578c1bc7ea8d2e fix(agent): recognize the retry loop's other synthetic nudges during compaction 35cbad5854155de5541adbe4578008269d60c5af simplify: match delegate_tool.py hasattr pattern, drop change-detector test 9c9be875ff29df0e3a752cd0f67e011133229ad2 chore: add contributor mapping for adam@exo.ai (PR #82070) 71435fa0ea987e49298bde6bde3d17a4b531e0ea fix(agent): cancel in-flight background review before a new live turn 3f832978d30e0e14437edbf7a3f63315f08bad36 refactor(cache): share the boundary-declaration helper and simplify the registry 4c5be0c295d7d4d0cc04d780edb86b7f3af1bb5b perf(cache): harden the stable-prefix boundary against eviction and memory growth 214f2b82db9833e5733a96dfaecc6f0eac3ae847 perf(cache): split skill turns at a builder-declared stable/volatile boundary (#81867) 8295d2473676bf9964663fded4ede01157c56642 fmt(js): `npm run fix` on merge (#82417) c8318460e489367363b702b56bb0bd5273282ce6 feat(desktop): read the window below through Hyprland's IPC (#82226) 774e9d4d59ee91da5c4a73432c4423b5913e4453 Merge pull request #82390 from NousResearch/bb/draft-status b824f7537f138c1211ac5431445408cc35091768 chore(contributors): map yy28's email for the cherry-picked title fix c0d502db645e1bd0286e5b32b8529d069a812512 refactor(title): decide on the stored title and the real turns behind it b684cbb094f32906d9f25e916f9418cb48ddd356 fix(title): stop model-switch marker from becoming the session title 53a4003208b431137d1ca8494dfe763e162ddc21 fix(agent): stop titling a session after our own scaffolding, or a TTS model 4fbbf0f1c454bbc1d18a77ccec21419ce75518ca fix(agent): name the sessions the titler used to leave nameless 071eab821b30d960363ec3d770e33c977747f31b fix(models): let the titler actually see a provider's model catalog 34577fcb036f9a368046bf18c2d0908b43e6b793 fix(gateway): rename a Discord thread once, after the reply lands cedc933c1ffe78f3cf2a64379b37b26d4f9a6dfd fix(agent): stop cron and subagent runs auto-titling their sessions c143ec7f0c5892f663c79fa06baf5a54c5146f8d feat(desktop): name a draft after what you have typed into it 5b3a5ccae65eec91baa46b4c2cda0916a69dd964 feat(desktop): mark an unsent session with its own status dot 11dc61b45eb06718e121034b54184c81df251bfe fix(desktop): keep the HUD exit chip clickable when the composer has no focus (#82403) 124aff0aa94877c6f800be626bd7257fb99d8dc7 fix(desktop): open HUD mode on the focused conversation's profile (#82325) b105a3b057c804245ccef11a46833086af45cc09 fix(desktop): keep the HUD on the session it was opened for (#82360) 085a9d332f60e5547d3f38415868220d1b27b43f test(desktop): widen HUD composer containment regression coverage (#82319) 952f44f84189b3c61b50b743a54ef679ccff846d fix(desktop): focus the update progress window, then hand focus to the relaunched Desktop 357b97eda6d124520703edda60402d2585990381 test(model-metadata): use explicit fixture encodings d143bf7a3b8656c3edcfeb3a81db075f7e06ba6b fix(model-metadata): resolve provider prefixes from live registry 19e51d2ccabf6c7f5d2f230777e9a9faedf84aa9 fix(model-metadata): auto-extend provider prefixes from registered profiles 36eda6112b647af4f2f2064cefb55bec7fee9b66 fix(desktop): detach relaunched Desktop from the hand-off console + UTF-8 child streams 51c07bd8f80514e255b7b4b945e5f9900a56f4dc chore: AUTHOR_MAP for drissman@gmail.com (PR #82061) f9f4fb432781f6f184d88e4bda1b8ba0001ed1a4 test: update systemd scope assertions for start_new_session=True 0e492a484052679b5af564089843699db0599e2c fix(terminal): keep background workers in a private session under systemd scope (#70716) f8bdbc540e3240de8c164760cd992acc0a793f19 Merge pull request #82373 from NousResearch/bb/drag-title 45af62cae4b554e06121be075da5896c6c25c2d3 docs: preserve observer version compatibility 638ca16af65cf10db99f945756970ff9d19b5698 docs: correct hook timing semantics ad7732455917bbb23f0e323b9ffa140e48e14f49 docs(plugins): catalog shipped hook contracts 6495ef82f79a1b96a6949a976fc819f2daa6dade fix(desktop): hand-off hardening - fail-closed gates, truthful completion, progress UI, result surfacing 3b08a0f9b552093bb42b162f6dc9e5fd2bdd1ad5 fix(desktop): give the update hand-off script its own console - a detached hidden powershell dies before -File runs 35b82fdef35eef5031378b91e7a7acbb8de0e0ed feat(desktop): drag sidebar rows by the title, not just the grabber e128f1c1311653d8597e657dff0f633a0d5d7f66 fix(desktop): stop lighting drop zones a session can't land in 26b3918dd967b98cb197ef7f911a95d51242c3a8 docs(plugins): clarify tool description sources 934546fd5ab8032893f3665ce5f50ac36eeeba99 Merge pull request #82345 from NousResearch/bb/home-dupe 35e562ebd0f3b84b639f1e09e0a49f6dff9de387 fmt(js): `npm run fix` on merge (#82346) 41d435ff4d27637caefbce3b910f3033168aa185 fix(desktop): stop /home showing as a second Home project 92be912d7355bb9ed38d0847a5aabafd99fb7010 feat(desktop): repo-owned Windows update hand-off script - stop depending on the frozen hermes-setup binary 61515e81163509cb05263dc59d5e63a9ed1c613e fix: update legacy draft test for new supports_draft_streaming gate 3332ad4dbf92b3a69db6fdad88e9172322893d9a fix(telegram): avoid MDV2 draft preview when rich_messages lacks rich_drafts 471baea520e89220c7a5306d6410b5c8ce7e34d5 feat(plugins): map portable Agent Plugins streamable-http entries into the native MCP runtime 961f7481a7a75456e5e13b71e5343c70ea2ec74b fix(relay): bypass managed execution for nested calls inside managed callbacks 62431364e35aa10ea17a197a344f9b9f774c1a8e Merge pull request #82233 from kerpopule/fix/desktop-hud-composer-clipping bb8280b753755accb58c0e4ae366481c41717c01 revert(desktop): roll Electron back to 40.10.2 ceebb21dd7cb7391a58e4b1d345951e5218860c5 fix: suppress pydantic serializer warnings leaking to the terminal c77ed825960ad2ea92227f10fda0de0b4143bf09 fix(install): provision the VC++ runtime before the Windows desktop build 1d45e62f3010d2a08cf32ae5385b41d48d33145d fix(install): replay npm's debug log into the bootstrap stream on failure 4832295ca3285fdd527cec4228674934cb76e331 fix(skills): conform graph-engineering frontmatter to authoring standards 2d75a01284ca3fef50843d65d5eeef401242bd45 feat(skills): add graph-engineering optional skill (knowledge graphs + task graphs) 3a915c46d34682a1299188dae63a4a06987f9790 fix(update): scope bootstrap-cache refresh to the update-target ref, match installer pin rules 3dcbe9001f30de749971911041c02916437b5bff fix(update): refresh the installer's bootstrap-cache scripts on every update f2731da4a4f143a0fe7e60cdd28795b93ed387db fix(desktop): keep HUD composer within window 7423ffa1524f83e5bd27bc6506c1ed4e128cde9e fix(update): refresh the installer's bootstrap-cache scripts on every update 0464605c2ee91ed1a7323c52e9cb575101dbe2a0 feat(desktop): read the window below through Hyprland's IPC 1792e756e426fa8d84af7083dab67527da5db1c9 fmt(js): `npm run fix` on merge (#82209) 4b601931be1cb10094c353e0d344e39f8e2d3b0c Merge pull request #82201 from NousResearch/bb/xplat 9eec86923c777f5c26092c0b3e0f657ca18f2d98 docs: align Ollama tool-calling guidance 04afc8d48e60696d74ece96ec0d54a729252440e fix(desktop): say why read_window_below cannot see the windows da933bf279ba1c2985aa4df2c3910ad958633679 fix(desktop): keep the HUD clickable on Linux d73bc7f17affe8f6fa6bb071da905c147ab135e3 fix(desktop): persist window geometry on Linux ccec8f3e535fc36178d2c29c54c5efb6162dd112 Port from can1357/oh-my-pi#7906: recover line-number-gutter pasted old_string in patch tool da3a0a852fd82041ce69e8170bf60bb747782080 fix(update): make orphan-backend reap tree-aware + drain Desktop update trees without pre-signalling 826bf9b6d865b11bfedfca14bd35c563f07a8a66 fix(update): reap orphaned Desktop backends instead of dead-ending the venv-holder guard a09124cea591e882eb48b6bcf5450e59aae2a3fe fix(install): stop managed runtime child trees on Windows 9c8a2352f727963572917480c8d1b6009d90b0a0 Merge pull request #82171 from NousResearch/bb/allowscripts-sync a692393da715017654d5b3e5a076ffe18fde7b56 test(build): hold allowScripts in sync with the lockfile 2cd9e1777b47f001acb6a5d4ec5848677b331c31 fix(desktop): rebuild get-windows when its win32 binding is missing 7210db5646151c163f130d312811eb001f7f73ec fix(build): allow get-windows install script, refresh stale allowScripts pins 851f23ebc678ee10fb55341de40b340b4586a3dc fix(cli): fence OSC 11 background query with DA1 so late replies can't leak into the prompt 54641186ff8e0dae736b146305e8256647e6042d fix(cli): drain late OSC 11 replies after TCSAFLUSH to prevent input leak 588447d3dbabd616e0eac3a3a08bf8dc470895fd Port from QwenLM/qwen-code#8578: Feishu interactive clarify cards + native choice picker 0b17b691d64a9e092b24b28df368bfb983bfa9e7 fix(gateway): skip attachment upload for failed first turns in queued delivery a52dd17d939e66c0a59b8a01f5f4f890dc5fe195 fix(gateway): preserve queued media continuity b0b7f9c7775c612d763e4d94cf45c755b5f98aa4 test(gateway): preserve queued media routing metadata e2216790027465045f5e5121634f84999e748748 test(gateway): preserve queued bare path text 1648ab3a9764d3696876e0eb0e60c0f2694eb5c6 fix(gateway): keep protected MEDIA tokens on queued resend 4da0d06db2cfa56a629f1644d2a257e97e8d2a53 test(gateway): use allowed media root in queued follow-up test 808c8570a6dcef4f56857a6b29865affb5a8e784 fix(gateway): preserve queued follow-up media delivery d220f1fdc04d0222ba9d0383ae1e17b64c4f3ef2 test(gateway): freeze queued follow-up media delivery 90311ee75f860d3a951c7b270bf3756067cb846c fix(search): strip % from non-CJK FTS5 queries c595dcb955ee42a9da52053ef7e5367347f57bbd fix(search): strip the FTS5 special characters the sanitizer was missing 0569c001d08fa40a4dbe8652bc397cbca4d18d21 fix(model-switch): route switch_model user-provider key reads through the secret scope 0c97a883af75ace61844710dc58c6f1732d0faed fix(model-switch): read picker key_env through the per-profile secret scope bf7c7166485ec7fcba5ca3a63e9fd0c2d7c91e48 fix(agent): rebind pool entry id after env credential refresh 0b33ee88e43b89065da8154ada764fffa7eb6815 fix(update): don't truncate cmdlines in the venv-blocker scan — it broke the gateway exemption fd2c386279ffff5f61bb0d771a71a0cfa442066e test(gateway): synchronize pending-drain handoff aff37be9dc308ef9b17288a37a594e3b73000d26 fix(tests): await gateway drain completion b79e83827d1e275f3b5f91594e9f7136d7293e5a fix(model-switch): surface candidates on ambiguous alias instead of guessing 21bc9ba341a63443f7474134410651dbb747bc7f fix(model-switch): split YYYYMMDD date stamps from version tuple in _model_sort_key 628372de4696f63157b6a3cb05380cc5ec5d18d5 fix(otlp): span exporter now inherits configured resource_attributes afc178977ddd682179e68f4b2af3fbb008a4ba68 fix(deps): bump electron 40.10.6 -> 41.10.3 (GHSA-9f4c-93c8-jc8g) 212e84176dac687247513885b2670600b6e0d1ed fix(compression): charge stale thinking to the tail budget only on the newest assistant turn (#73624) e65664f512ded961ec7b2fdbeb4a88008f439866 feat(browser): Browser Use mode composes with all CDP browser backends 5ee62e8c491af0d68c933adde99859095be649ee fix(browser): don't migrate Camofox users to Browser Use CLI mode c60c0841be81bbc1c7695f6f4435d5cc1d1462fd fix(browser): gate browser_exec on terminal surface; pin schema helpers digest cdd5b2f760b2daec7ba2a3495666539793422840 fix(browser): apply safety checks to browser_exec URLs 89468a95869194f8ed93d2bd0f52c017b0dddf16 fix(browser): rm secrets from browser_exec subprocess; /browser off; hide windows console d0dcbabba05655df5f27a722eed649bb72f9b953 fix(browser): persist workspace across browser_exec calls; raise exec timeout 300s/1800s max; teach in-code aggregation + count verification in tool header 04092938c3f27cd57ea5f25452d89280f8c3a8c1 feat(browser): integrate Browser Use CLI 3.0 5f62b6c1ab7d866f14d56d10112d3fbe47df2661 Merge pull request #82113 from NousResearch/bb/hud-unsticky f2d03c1f2aacead8c7356d070382b5142a037c0e fix(state,cli,tui-gateway): keep reasoning fields intact across forks and branches 3a8d95a93bdca9082ca4b33b9a6e682364286dbb fix(desktop): give the delivery-target group an accessible name 67927808bebb2e21cc17896bf0baf488e68b5e89 feat(desktop): support multiple cron delivery targets d91f08a39a94e91e0fc4cd81f60a4074e803776a fix(desktop): keep tool rows and notices out of the HUD band d408fdbfc4f30948d93baf1973fb43e5f9275bb9 Merge pull request #82104 from NousResearch/bb/hud-note-trail 37bb73d2cf2652703a03f9bc1648f981617b4093 Merge pull request #82101 from NousResearch/bb/hud-slash-popover 86b50c6a294ee8097444d33105b862f91989f628 fix(desktop): keep earlier HUD windows in scope for the turn 9e199317705487da915b9d2950f29e9af07b31fa docs(telegram): explain rich draft final delivery 05c5a337f6efdf8123862e8718fb45b84958dbe8 fix(desktop): settle the HUD band's glanceable hold at 1.1s 99d1f18377d5ff2633148c372779fc8466e78e05 fmt(js): `npm run fix` on merge (#82099) 1040cfe28609c9764be59bc35582ace02c4d072e fix(desktop): shorten the HUD band's glanceable hold to 1.75s 3d5f173440aadd3893d8d08d92b783fb80586e0b feat(desktop): lift the HUD bar off what it lies over 051a7fb1e2d9ba9c7146c979e40dcb2d9f046731 fix(desktop): open the HUD completion list where there is room for it 5ff506896fc6f02bd478c58323cfc303c91255c5 feat(desktop): sit the HUD band back when a completion list opens 5a16635f409e0f5e3d754bb6256bd27707bcec4c feat(cli): show session titles in status bars 05330e804af9f8f0ad0238879fb589e3f886ccc0 fix(video): bind managed SeedVR to source request 70d165222cc13a57098337d6897cef1ca0317319 fix(gateway): cover all finalized stream sends 0f2272716728c1253e1ab18b5bb614911c83f867 fix(gateway): omit expect_edits on finalized draft sends 70654074112fac99560a28d47fd432443e8fdaba Add more FAL models to nous portal (#82019) 34f3135879ff7dace12321c0e4bce6b47842b28a Merge pull request #82077 from NousResearch/bb/hud-drag-and-chrome d2dc0ce707a3a622cb0589f582ed3df651d458de fix(desktop): hold the HUD band when the window loses focus bed3960e9dafbffa46d9eb550fa5c518dd909354 fix(desktop): give the HUD band a real glanceable stage before it goes c5494ddddb570b0849e5811b77d05a585e46ded4 chore(desktop): satisfy eslint on the HUD drag additions eee38db824fd3652402a18eaf95ebb2a460510b8 fix(desktop): let the HUD band fade while a turn is still running 7e3deea0a8ecd4474a5338d17062e42f9f212fcd fix(desktop): make the HUD band a real box so it scrolls a260c2727f0017237e0f12026c0931921eb2a496 chore: map voice contributor attribution 2e3bf4decbc46cd82f9414c61bb5038daca93847 fix(voice): preserve existing TUI drafts 3c36fab02cc89511f130de4b48c3147fd7fd0ee5 feat(voice): add configurable TUI draft submission 048907fb665dec7dae83d08ef846347949271077 feat(desktop): show work and focus on the HUD bar itself 4424a5a60fbdf6305b87348f03195b521e445126 fix(desktop): stop the HUD painting sheet over empty space dd11b8e8e8e3641b4155ecd1102d4a73f37c07e7 fix(desktop): drag the HUD by holding the composer 0db27883388ac72b558017b7a429ba68b8ecfb4f fix(desktop): keep the composer focused while reading the HUD band 50e0640d1a03d135d7c7b35be5a3773df4b0f12a fix(desktop): drop the "Edit message" tooltip from user bubbles 67518a2adf1086b3812f0a6b23f1ec19647ecc78 fix(desktop): repaint peer windows when the appearance changes f2204211d83c42b78b4f32259cd472d98821d2cd docs(plugins): clarify tool description sources b952a6cd72a08bd1572a6ed2bc702988fe40ce50 fix(middleware): preserve pre-Relay tool request snapshot cb0f080d3fbe688784d3a09dc347abb75899f7ac chore: map Kanban contributor attribution 025c287b45cf7ee3b7102616dd0ed899c54f60c5 fix(kanban): dispatch dependency block hook post-commit 1ce6d95f20f410585945e56de39e14f4e767b8e3 fix(middleware): chain request rewrites sequentially b7b99049805281ae60c820ff1b3f6a16d1434fe9 fix(gateway): scope reaction observers to routed profiles 8ab62f1a0f897d7f6622db421995c5e5c3da67b3 fix(gateway): enforce post-auth normalized reaction observer d7e1462c79860316902bd80435ea9a355022e49c fix(plugins): gateway_platform_event error logs include traceback; pin handler groups 5bc4328096489a2b46271683c30bca5b0672c36c fix(plugins): address #64176 review on gateway_platform_event (#68431) 8a3e268c3dda817a943b0452ed1f875145dfde64 feat(plugins): gateway_platform_event observer hook (normalized envelopes) 3e6a081d60e8d04a03d37008464f44555bc88832 fmt(js): `npm run fix` on merge (#82055) c6554ee6a35c89d83e185e41d9b659a9486ba06a docs: preserve observer version compatibility 65232b386cc773ed57ab59003b4fae5d9d678b31 docs: correct hook timing semantics ecc2287f78540a9fa6a3aca89ffc08b9302b7ee4 docs(plugins): catalog shipped hook contracts 55982159dd3e9d879d5d0e2244316cb3abd39703 feat(tests): CI-enforce skill authoring standards; clear all remaining debt 3898e646e572f4f03a8d0375d263a4f51106f3d6 Merge pull request #82044 from NousResearch/bb/agent-plugins 44790bc9c87d2e3a9a290a2e94777078468643bf feat(desktop): plugin descriptions + open the agent plugins folder ed9eee5dc9363b7c1f488e5590e7ede99b882236 fix(gateway): report bundled auto-loading plugins as enabled 1c9433897c7b8a3b2754a84875e8f86d0a42991a chore(skills): standards sweep — bring 42 bundled/optional skills up to hardline c86da8397b6eaafafaa1dc81ae0f3e0c47f6cb3f feat(desktop): agent plugins in Settings → Plugins a60b492e079995a3a04375b1da38cbf2f39f45b7 feat(gateway): key-addressed plugins.manage rows + portable MCP toolset fold-in fe42097865749eac032af7f816d9c2fe056f4792 Merge pull request #81985 from NousResearch/bb/session-titles 33554b17fb1dc1a44da376822cd30eee78125b42 fix(js): allow get-windows install script in npm 12 fdd1c5e5163cfe5afc326243bdfadeaac76745db fix(photon): dedupe the last stale @opentelemetry/core copy 6718aaa8cc7488dd6dac9e2f02cfc662e1b98509 refactor(sidecars): one resolver for the Photon and WhatsApp children fd9a2ec6640e581c554cc9e01e1c11e8df9ed524 feat(photon): move the sidecar to spectrum-ts 12.7.0 995baf309fee7c7058ebb7c4381e8d8ad1024ffe fix(docker): bake every container-capable extra, and keep install_specs 68dc7c85332212de3c38a74cc88c28c6f42e0011 refactor(deps): read the lazy-install specs from the pyproject extras 636ff99a6fbc89bcdd5e1612b60664f4ff28524a fix(sec): move cryptography to 50.0.0 d0f5424a6cf81064356cf5e55b4b820235ac6970 fix(sec): patch the npm advisories in every workspace f726090d489dcbfb72c3d719f8e97d58f6571a62 feat(sessions): name a session the moment it starts e358eaf44a4db22e03d4f916769583601dffbe34 perf(sessions): resolve the titling model from the provider's live catalog 5566379f57ae9320f168582112c701d8194b9fe9 fix(sessions): give titles provenance so they stop overwriting themselves 33918368886d1edfa139ad305f1ddaf9b89acd93 Merge pull request #82036 from NousResearch/bb/session-arc-source 4907e3d900ffcc038304c13103593dc90a5b0270 Merge pull request #81977 from helix4u/fix/desktop-main-window-ready-fallback 41ae3db426d1d9636b6e261c5af353751108e724 fix(desktop): reveal every window after a missed ready event, not just the main one 041cbff5e37f6da8ea5ddba43023efc547ac2493 fix(desktop): keep the Playwright reveal path off the production fallback 615a435b7aa758b26b6a4dd8278f53b193565135 perf(desktop): stop a settling turn from repainting the whole sidebar 66ea4e686de8f0147058fd97860f9cba154d821a feat(media): default-on upscaling for sub-2MP image models (FAL + Krea) 137960c9aa17a54cb03015f3a4564cbba7ec8d95 feat(media): opt-in upscale pass for image_generate and video_generate across FAL and Krea b07ee44f1bbbe0aefea872b84b2e635817729eb4 refactor(desktop): let the sidebar row read its own status a90674877ed300cd32f833e495646dbeca974d8c test: convert the last host-OS fakes and guard double markers 7d06a1ba2223eb2ccc1abc8ed93c3d6533b24069 ci: print the zero-selection diagnostic instead of dying first 71326399d30034e786cf42ccb9f00f686d183e4c Merge pull request #81991 from NousResearch/bb/session-status-dot 51597c5e078256680ab05f0f2aad625ed8efeb30 Merge pull request #82007 from NousResearch/bb/hud-surface-note f04ad5a829b397991bd01aaacaab1f2304fefa63 style(desktop): drop the pulsing glow behind the status dot 302ee80b6faa7f99eb8f8ae5ccc98b4b385ff67f refactor(desktop): give the status dot one source of truth and a quieter look b70c5cadb39989ae9115d9a6c0ec55c1e4886b06 fix(desktop): stop the session status going idle while the turn is running 4cc805ac98339fd1342a83ce2641e41fc77397f0 feat(plugins): install exact commit refs 0665cd4b5b5567e07662c9371795ecba1bcb7998 style(hud): tighten the surface-note comments and test helper 8e9ecc1f3e95aaaa3cf2c7582a9da17788a5aa99 Merge pull request #82014 from NousResearch/bb/hud-band-hit-area 665129ca79c2b657a0487737f4c2b27d4a0982ba fix: address agentskills review — redirect bases, Content-Type detection, inline data e00965a7e8c862065654ec5ba9678b1c9659ba36 fix(compression): correct prune boundary + exempt native compaction checkpoints adf9549cdd251d46773f407cfbda9049fcb3f92c fix(compression): prune stale codex_reasoning_items during compaction (#71058) 65710ca186cb70d5ca2f4d992fa5b4d1a384da0c chore(skills/competitor-news-monitor): cron-recipe shape + competitor-watch blueprint 309c9bbbe911046fa701acb10dec801b30dd1560 feat(skills): add competitor-news-monitor e3c1f12e504943b6f51be52af99c5805c53e9ff4 feat(platforms): add typed plugin send paths 42fa3060ed823427db32217048eb58bc1989c303 test(send_message): move plugin fallback regressions to target_parse suite efeaf3e3beac2de5cde560678b32659acc0792b3 fix(send_message): discover plugins before target fallback d633e08cd7f6ea74387c6bd4bb6aea4ec8adc3dc fix(send_message): constrain opaque plugin fallback e2fe6ee0e1960338650be9063becbc05b242f628 fix(send_message): verbatim target_ref fallback for plugin platforms 4f0659d18c7662948c8ecf630d74bb8225fbe549 feat(gateway,send_message): plugin platform target parsing via PlatformEntry.parse_target_ref_fn and verbatim fallback (#67941 #33547) ed664f155b7a2a3490dac87e8df669263db32f91 fix(send_message): avoid shared schema mutation and support sync enricher handlers 1da88933af311f66f0bf1098a9611d666098df49 send_message: plugin enricher registry for custom platforms 5f4a7e99f00de52b120485b4f2a34088bcfcb9a1 fix: explain provider DNS failures as possible offline state bdfdd2773f8db0d4a73ecd69123882728c444e64 chore(deps): reconcile website lock after Algolia search migration rebase a1e4fee33d16627069162e80a5cf62395cd44d19 fix(deps): enforce 14-day aging + exact pins on all bumped versions 45f31de4e988ee59ed010495e0ee0fd7dfddf33c fix(deps): mirror aiohttp 3.14.3 pin into lazy_deps feature specs 7537de9e74940f0f954438138bd87dacb9969751 fix(deps): patch 31 known CVEs across Python and npm lockfiles e9aa4e64766e67d421b3024e84a9a50f26297a60 ci: add macos and windows test lanes for the os-marked tests 74f499c0291a9afad46e8274e4c253df5eb5c0ae test: run os-specific tests on their real host, not a faked one 717b49c08469d20e44e31c644cf69134b5379620 fix(desktop): read "is the cursor over the HUD" off the tree, not off a list 48d672e493d66138ce0c0f57ebc5f05c5e0bb0d1 fix(desktop): the HUD only takes the mouse where the HUD actually is 16c20b9c95ba3291dea2cd6a0c8ccf08a98cc1f3 feat(plugins): add runtime-backed plugin Doctor e24bac49fa0c5debb610443213756a728fbe1d86 feat(desktop): tell the agent when it is floating in HUD mode 2c94e3fb63b36106bc36ab825093cb8b7d9cd3c7 refactor(gateway): one helper for prefixing per-turn notes onto model input da297d8f811c135bf531dc15254b8c23e90ef366 docs(plugins): fold unique guide content into the canonical author guide 84e76b2ac393267cd2f56178de3c941e9c457418 feat: add Plugin Doctor plugin 3da72f1fd16ca39471b26bbb8f4b4c50e3f5cde0 fmt(js): `npm run fix` on merge (#82000) 92d77b72fb4a2781e7e69e271788d494cdfe019e fix(plugins): harden approval transport boundaries 687c5279dc821d28e2dcf0e709964ad513b3e9f1 feat(plugins): add approval transport interface a726a4aee6dc6bd3bf42e32e51d391b60eb53aaf fmt(js): `npm run fix` on merge (#81997) ad85b0a8db2dc29ca0aa7a8d42f58a287a68e59c docs(plugins): document config and state ownership 9288b3853b397aee03ffc88ab0bfccc7ced301b2 feat(plugins): add namespaced config and durable state bridge c7f582e2052cacd6384acb05bf3fc97bf21f291d docs(rfc): align config bridge with #64227 — namespace jail, real APIs, acceptance criteria fc09c00c85ab887f819422ad8dbb797b6cc6be73 docs: plugin config & state bridge design proposal 6f1870cd116ae3736564b76a535e2c2bb9e6726b Merge pull request #81956 from NousResearch/bb/new-session-workspace e0c3caf3b8d62adc9925ff4362c2a895decc2582 fix(model-picker): serve cached custom-provider catalog on no-probe opens (supersedes #81665, #81556) (#81973) d0ff03234a9e744438d4de10852b592a81441cc0 test(memory): use explicit fixture encodings bc3aed2f2020d149545743de2bb962a5176ecb65 test(model-metadata): use explicit fixture encodings 0909b1ef5bd7861bef8526ecc271dedfda60f65b test(plugins): enforce behavior compatibility contract 8ef08d86b0edaa48f6bbe8208b41ec007bd28a5b fix(model-metadata): resolve provider prefixes from live registry 93c7965216eb6d74af457686dee9304658eaa387 fix(model-metadata): auto-extend provider prefixes from registered profiles 2382f50f53dae197398922422c95ad6a522ce0ff fix(dashboard): bound WS ticket minting on the events + PTY sockets (supersedes #81931) (#81978) c96b978d544d261ec706eaa30b9011e5df076819 fix(desktop): drop a stale comment describing the removed inheritance step 32dabfb3d9b2c48f6b4f29d7fcc2d8ad2872faee feat(plugins): add cache-safe system prompt sections bd39673b8f8e21103fab164f9f502896858e9c1f refactor(desktop): one path-comparison helper instead of two f8781917e650cabc668a6d0fcaaecc1538c7d8ab chore(contributors): map Magnus Hedemark 3b42d99170bea19e40529a34866fb7f6dc5a9e88 fix(plugins): complete task-routed LLM integration e722f03ebca47216d5cd89deb58e2a572c0e0b2b feat(plugins): route ctx.llm.complete(task=) through registered aux slots 81413f00772d7b096377841242a4e978e5ed77fd docs: explain model refusal attribution 48c05e0c6b2d1ccc871936959c1d083e64a8f906 fix(desktop): reveal main window after missed ready event 9050913e68ca566f3ca5d8304361bee820c77437 fix(desktop): remember the workspace you picked, not the one you looked at 7ff9d7db91830ada55da309be669a618571efbca fix(desktop): match a project to its cwd across Windows path spellings 6dda0c91d9dc6214a59fab0eb25c9f721b3e4832 fix(desktop): stop new chats inheriting the focused session's folder 372b3b7bba4b2b8f5880581984eedf685056dbdf fix(cli): decode cua-driver autostart PowerShell output as UTF-8 5b5b5e8da0d5a457b5217d54444d04442834d22e fix(goals): decode quality-gate output as UTF-8 instead of the process codepage 26eeb8568e2609fe88d47d556e5a6c9028ce3cee fix(tools): decode git output as UTF-8 in working_diff on Windows 9dcce84c38999662f4f1d6a7ad142b6f27502cb6 fix(clipboard): use base64 encoding for PowerShell read path to prevent ANSI codepage corruption 93be7f01174e8be812b9f0a43b2920dc0154679d test(file-ops): end-to-end regression suite for the UTF-8-flagged-as-binary class e40315d53a767c2a843818670f93027efce4d935 fix(file-ops): classify binary files at the byte layer, not on transport-lossy text ad82fc9bdc9d47bc0c7cde59d41e26dc385189eb chore: contributor email mappings for salvaged Windows-encoding PRs 4c9e1e82236cbcfa2d48296b1bdc28a3ebe86ccb fix(test): make desktop ui tests locale-agnostic a61961673603972732e0469f0752b0ed857b79df fix(test): read add_contributor.py with explicit UTF-8 encoding 45ff8143800e17e2cd14fa96f47fb1b432fa6afc fix(testing): tolerate legacy console encodings 967157a7c9b0fbf834f3810f66aebadbee0c6540 fix(windows-tests): address parallel runner encoding and symlink privilege errors (Fixes #39480) 298ef06458f95043ef984876e7f865f732604e5c fix(tests): Windows-aware path-list split and UTF-8 progress output in parallel runner 5945929d4b6c4a31dc7b7640ab4e490b243e26d7 fix(tests): read and write test files as UTF-8 so the suite runs on Windows 7b1f02377f012b677493609b7b170f32d7ce5940 feat(lint): close the fdopen + chained-call gaps in the encoding footgun gate 9bbd7f97c866633ec652070bb2e368c1c690e90f test: pin module-level _AUTH_JSON_PATH to tmp store in salvaged windows-encoding test 9e6cfcda5aee016e51c0b6838ed213d4aacbc7e6 fix: finish the missing-encoding sweep — BOM-tolerant reads for user-edited stores 7fef76a6cfb1da34e0dc00a0f928726fb8d870bc fix(auth): read .env as utf-8-sig in the dotenv-vs-shell detector 3fee5c291b55175373f2cbe5ca6650bc861ff1a1 test(tools): cover UTF-8 BOM input in json_parse sandbox helper f2feb6f37d01447baf21f3fa47a8262da06cbbbf fix(tools): make json_parse tolerate UTF-8 BOM (salvage #57870) 2e227d74f4eed4a09b9a06d553ba822798d9e93e fix(gateway): read auth.json as UTF-8 in _read_nous_provider_state b11627b5d4453b5dd2636b17dd7df75a48b33fa1 test(auth): cover the two remaining Windows-encoding readers 2fda6a384c69b5689ac4aacd3b21b1914e12c379 fix(auth): cover remaining auth.json readers across modules 762f1c588eec3eb18020b69f5efd30becce877ba fix(auth): read auth stores as UTF-8 to prevent credential loss on Windows ece678db97d81e65189b8212b0101b584482e1ac fix(cli): apply BOM-safe .env decoding to hermes send's private loader b76498ba07ffb55a4f2ce6d2e69e910f25ff3e84 fix(cli): strip UTF-8 BOM on latin-1 .env fallback path aa1fac980d8d2957a0a74b5aed2efb416fcf667f fix(cli): read .env as utf-8-sig so a BOM doesn't drop the first key 566b5b16a996cdefb443597ca581b495f3a192ee fix(agent,gateway): class-level lone-surrogate chokepoints (#80366 #55143 #55309 #50959 #19819) 8b799fa77d438e5b7739e875ffbe3ef85022b881 fix(cli): scrub lone surrogates before oneshot stdout write 45aa902c18d4b2ee2250765b5cc038d8ba0bdc2e fix(process_registry): surrogateescape-safe PTY stdin writes (#79178) 73cbc5e731c9e75241e330a6a3370e0c8caa4bfd test(file_operations): pin early surrogate rejection over the backstop (#79178) d6eda8d9c5787235393e8b894a3d341a837aaf64 fix(file_operations): reject unencodable surrogates early, hash with surrogateescape (#79178) b0594118ab10b32338117e05e2580dfc04668774 fix(environments): surface stdin write failures as stdin_error (#79178) c5a1a5d7b0750917cf9c2fbddb5544b523e02ac2 fix(environments): surrogateescape-safe stdin piping, always close stdin (#79178) d871cda170e140c227ac437036004a0fe19061b4 chore: contributor email mapping for salvaged commits a024ccd66e475a9827302cde7fa75b4b0f0ba89d test(gateway): regression tests for UTF-16 chunk limits at the Telegram boundary (#55844) 65f407184dea1cf0d784ec133029a8dd11c44c34 fix(email): never let unknown or malformed charsets abort the IMAP fetch 0b73330f7cfdc260b1e3e28045c0550090065a0c test(update): strengthen UnicodeDecodeError regression to assert_not_called() 70957591ffb55504fddc2ea9a73566d64726a2e2 fix(update): handle UnicodeDecodeError in interactive update prompts 1bb261251bdfc78426a76b8d7f6cbcd92f887402 fix(gateway): tolerate invalid UTF-8 update output 022d196f38e66562e19fdc8fc287dbcd00ad3681 fix(telegram): honor UTF-16 entity offsets 5b50a582e84fc1eb0ea95819aad4b23cc42598da fix(batch): normalize checkpoint warning emoji spacing (salvage follow-up for #32982/#66680) 0ac32cf820e1f704864567de5fd72059d4283328 fix: restore corrupted warning emoji in batch_runner checkpoint handler 4b4b607e5b322edd366ae3fa6e341aa9fe2932a4 chore: contributor mapping for zcj1122-rgb f1c13377a3979f7732ad5ff693ecb549855aba49 test(cron): regression coverage for Windows encoding cluster 4af7f055078abac06efcdf0164e55739a5d16b56 fix(gateway): write cron delivery output files as UTF-8 c55f50a5b9e866b8feb3d9ae5a71b4ca9960152b fix: ensure utf-8 encoding in jobs.json daabb2d445d4b3d00da16c5c9b7ffd48768ef499 Merge pull request #81946 from NousResearch/bb/personality-preserve-system-prompt d19b41229b0c9163ed3611107cbe7b174ef62592 fix: track secret source registration origin efd795b95293ab891ac2edd3e3d900c9de857c43 fix(plugins): delegate secret-source enablement to is_enabled contract (#64177) a4cccba4c33218ca6ef92d262d7bb9d84265de26 fix(plugins): re-pull plugin secret sources after discovery (#64177) ca7f4292d990afbd6f8409573226cd1933a23840 docs(rfcs): plugin-architecture research spike — Pi and OpenCode lessons 91a545ab1e09a266aead11da62665ab7230d9840 chore(skills/social-media-content-calendar): tighten to hardline standards, ship optional 5cc4c2d30d51099f71c1d91897c2ef3d9df5f460 feat(skills): add social-media-content-calendar fe9e4d177696dd42538dc4979ef4ada72dbf4850 test(personality): regression coverage for #81791 a0d406dcd8a78cc466dcc99976f2f1b9cb48e983 fix(personality): stop writing personality into agent.system_prompt da6f0030aba46d66a0edb2fec35797123db6b6de feat(config): resolve ephemeral prompt from display.personality 99fa93035dd5c50a8f6312f2172de1593b453cd7 chore(skills/weekly-review-planning): hardline polish + wire task blueprints to their skills 6eaea9c7015cd61829acc89f63fd16ed56d4ff5b feat(skills): add weekly-review-planning 5e1b50115f01cda8f8749a347d6a75aeda03ff18 feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 36f73df13970d2a1aa792cf069e461a4b4b2220a fix(skills): widen BOM-tolerant reads to all comfyui workflow-JSON call paths 50f742f8ed1da8e8b7d5a5bb29884a4d397459c8 fix(skills): pin text-mode file I/O to UTF-8 in comfyui and pdf skill scripts 20fece3b4215c82c39bbd0ff3b12b51c5e0ce588 chore(skills/product-price-monitor): cron-recipe shape + price-watch blueprint 56d9e75db8672890234b25c6f20d0b18d7b98951 feat(skills): add product-price-monitor de1f370f9c680ab4b63d7fb6e92581eecb9b9ff5 Merge pull request #81920 from NousResearch/bb/hud-frost-backing 60942fc786da19ef57dd891474b0fb825e60db48 feat(docs): replace local lunr search with Algolia DocSearch 93964fda3de028f8ce7699b4a27e188e2535db80 fix(api-server): resolve reasoning for the request's model, not model.default 092ff2b9aafdb38b2824233735f85d160745d254 fix: suppress windows-footgun false positives in linter pattern list fce314eabd8674d81f05c2cec3263366eeaff874 feat(skills): advisory SKILL.md convention linter on create edb27240e2d99b4ca9587d9ff919b8d04d4560e1 fmt(js): `npm run fix` on merge (#81914) f03fc468459a8539dc2ea419a3d359a4b23c13df fix(desktop): don't frost the HUD window the sheet isn't covering 06d8aa72e1192a6183ffb05acdff57a997eb2eb2 Merge pull request #81881 from NousResearch/bb/hud-empty-thread fad88cf1308e53229b7793d21ce6aad9c1d0134f feat: extend clean-room office skills toward full parity 51570f4da746386f23723953f27829f12c1e5334 feat: replace Anthropic office document skills with clean-room MIT implementations e65204b953b7a8dc09d2ca5aa53abf6d8c9df055 Merge pull request #81891 from kshitijk4poor/revert/dcp-context-engine 2b48ba0249624c26ac499799701dbb32c170af2d fix: clean up SkillEvaluator Tier 1 security findings in bundled skills 0647bf98895426f0759599a30c8b0a0cf5640e37 Revert "fix: rewire DCP context engine to current main architecture" 206f74baac0736d370f0e97ec11d3544290880cd Revert "feat: add DCP context engine" 9841a6c65161b9253c342f04b20f3a8bdb63884c fix: rewire DCP context engine to current main architecture d7072ab914de0bd3c98cd5cf006fd193a5ee752d feat: add DCP context engine 238351a60ce689e1c460fabf5b3f50e3b06b44bd fix(gateway): widen container->host media translation to home, cache, and in-process gateways a7dd88543934f4a495a8a270ab424ac3c7d5e5eb fix(gateway): support Docker /workspace media paths in gateway delivery 843c3abcc7f27f8942864db4519bcdfdf4ea5495 fix(desktop): an empty HUD thread shouldn't paint a blank panel 73997c41bb4950f259898e16fc22f97de2d760cc fix(tts): split long speech by provider and platform limits 0c2cdccccc805063f7e74e6e1c26196a1140a496 fix(build): win32 get-windows staging must skip the tarball's bundled darwin binding beda5149d9c99e0178058d7caa96a04c2244d347 test: pin read_window_below into the toolset + post-hook contracts, appease eslint f463a7e8eecf3f8e8b2cf78afafa93055f855a58 build(desktop): stage get-windows like node-pty f22ae72921b1ed5a041f74e15ee149841b17a5f1 feat(desktop): answer window.read.request with the window below 406501fd97721e0784fcc0f73f940130809a3238 feat(agent): read_window_below tool — which OS window is underneath the desktop app e34a29be566ed0eced2927cf384b2fd17978b957 feat: install skill sets from AI Catalog + agentskills discovery indexes a6ede70c2ad2e39cead64113a2fa26ae770f24ff chore(skills/meeting-action-items): tighten to hardline standards 8dcebded58c9b13be4f9fb4a83b153acbcca04cd feat(skills): add meeting-action-items 2389564d83f5e31a293727f471631dab46601e2b fmt(js): `npm run fix` on merge (#81849) 31cedb4830191da7f8c3ea4b962d40997cd85b21 Merge pull request #81552 from NousResearch/bb/hud-mode 3d7dda4cf42176d587b459345c56236a26030324 fix(docs): retain prior builds' hashed assets across Pages deploys d135f64b51b1a69333f7faa3d5eaf64758aea482 fix(curator): protect cron skills referenced by absolute path 19e0a7213903dfaec5fd8a6342c2edbd39d8256a fix(ci): use explicit utf-8 encoding in retain_pages_assets manifest I/O 5f7310a7d9f408fa74ca6b8c6bfcf6c3bc4c5baf feat: replace Anthropic office document skills with clean-room MIT implementations ac662c3f717eddb8eb70500aa190e5b594877efd chore(skills/google-workspace): fold daily-brief into references/, not a sibling skill 9e2d372508112a5f0176fe5733c65f182d1cfdaf feat(skills): add google-workspace-daily-brief 7c02bfce899716a10ec32dd9fbb60885c7ddcfd4 fix(slack): insert resolved display names literally when humanizing mentions d3fca90fa6c8c75fc288e2e08c2b11d278d90161 test(tests): stabilize write_json concurrent serialization flake 690b953d1b26449d7f07af2cd5628930e6165bbd feat(compression): native OpenAI Responses server-side compaction for gpt-5.6 b14cbbfe034c2e52a1e66dc675104bb108fd4605 fix: psutil.pid_exists for PID liveness (Windows footgun) 78a0deb4fb24b89b971545f152961c175d087e12 fix(gateway): widen container->host media translation to home, cache, and in-process gateways 35768f3451009ca1200e17f2333b61dd319a59c7 fix(curator): protect cron skills referenced by absolute path b470cd95abd898d8077cafa906921aac2341c9bb fix(gateway): support Docker /workspace media paths in gateway delivery ab2bfb98ef3b8cca6f6282165e43627751b3d188 fix(docs): retain prior builds' hashed assets across Pages deploys 7c2bc87f8153907061a649e58e7f65fcde5ce1ea feat(read_extract): label each unreadable PDF gap with its preceding section text cb2cb195f51d4beab54d36a1118a260fa775275f fix(ci): retain previous Pages deploy's hashed assets to stop CDN skew 404s fe54ab4f983f84f76c2bc54f6641fca208832dd9 fix(docker): close the cold-container and multi-backend gaps in attachment delivery 464e7e4e5fbfe15a20c703a53745f6e6af6452ee fix(docker): read attached binary files in backend (#76577) cbe39b15e2673b08fbab3236d78e7e7bf217749e fix: clean up SkillEvaluator Tier 1 security findings in bundled skills cbb8cee47d0cea9b3b0372e804d8af62991658cf fix(read_file): surface document extraction failures instead of the generic binary-file error a9d9634678bb3c81a11a0080bc244ace95fab036 perf(docs-site): split search index by section and stop indexing code blocks cd9fbf9f19d937024bde2fce16b07f5400099723 test: convert NB2 catalog snapshot test to invariants; live-verified t2i+edit 2b16a6b03cbe40219c56182ba2c01aff60bd11ff feat(image_gen): add FAL Nano Banana 2 model e861c7930fe4f32efcec0b4b354b5e537485ea2c feat: prototype SkillEvaluator Tier 1 scanning for the skills index ef9d5f8c060346dd16c4fad0e531de9bd3f9a379 chore(skills/github-issue-to-pr): de-router, fold in maintainer issue-to-PR discipline 29783634bd709f790c0e1db2b745fa698d7c1bf6 feat(skills): add github-issue-to-pr a51a4cb0964c0cbe5e4ac4a6998dbc3811917b0d fix(api-server): mark replayed tool calls completed in Responses output items 5dc0fa38896b681588724d0c4e8112414c4ce437 fix: post-merge audit follow-ups for #81138/#81139/#81141/#81148 c5f71f9a5138035685811b5d9641c9f9f245fba4 docs: document read_file document extraction and the scanned-PDF coverage warning 765940df79374d9580af7c37ffc2d76ba1b729c2 fix(read_extract): keep scanned-PDF coverage warning on the backend bytes path 8de3ddb9efe9164496b2209be93fe689269d9415 fix(tools): preserve document extraction boundaries fb4664f79de881f02463e6d5594d414a18ab528d fix(learn): process large sources incrementally 57ca5995c671cb573e8709363a5cc82a5fb35925 fix(learn): extend existing skills during relearning 1dee73400e65b4272af5a5ac7550e61b45a7b98f Inspired by Cursor: fail-closed hook semantics + exit-code-2 blocking 70c6cf8e7efde9bdbce013a493b577170f9b3d75 feat: add new FAL video families and image models 2e2fcc09ff6fb1f913cc9465f1d4e4a5bbaf928c Port from superagent-ai/grok-cli: directory-chain AGENTS.md loading 1405d330e7e5fbdcab11db8c81361ad4da0a310e Port from superagent-ai/grok-cli: description-aware slash-menu fuzzy scoring 530d37820c6ad8a4687815bed0e8511473b084ec fix(terminal-tool): redact terminal error result fields 89c14aeb9e1cbca8221e209e4f516fa1ece42ff6 fix(read_file): warn when PDF pages yield no text (scanned-image coverage gap) 72eda946be949a5932923df3325037a0d6c5da49 fix(security): redact terminal exception results and ACP stderr logs (#77484) 2a743e5f4377419c54054ce7c65c79cff98a092c fix(image_gen): confine generation source images to the terminal backend 90badaa284e4b5342fcf252171a5c78cf946e8f6 chore(skills/email-inbox-triage): tighten to hardline standards ebb242d8136da309c11c6692f271d3004ddf9ff1 feat(skills): add email-inbox-triage c5f5fa40c36e447740f9b313423efe747ce2fbf7 feat: --resume latest keyword and --in DIR launch flag f46636bfe2a2ea0655cfcdaae25693dc8df23333 fix(vision): retry container exec-read for Docker cold-start, surface stderr (#76566) 9eb3ac50fe723606facca777149dbf98cf2c7a90 fix(video): route terminal-backend reads through the shared media resolver f2e936dad569d8ac9e5e2569f40b319b45ceddbb fix(video): read analyze inputs through terminal backend a978f769b173b580799e0100e8fa5c9d2f9851a8 Inspired by Cursor: MCP config context variables (${userHome}, ${workspaceFolder}, ...) 52920747e17dc5e8ab18a41e4084ed28508b4e6c perf(ci): build only en locale in docs-site-checks 973c14b57c10874138b9696a2b300cc2f89e40e3 refactor: fold simplify findings — 6th copy in update_cmd, drop dead wrapper + speculative kwarg, behavior-contract tests 72898984946607c443f563a368f15d78c24c17c8 refactor: consolidate five duplicate byte formatters into hermes_cli.sizefmt 4af8fb21487a6e3e0d59cfcee9d76da0e0ec8403 fix(ssl_guard): tolerate truststore SSLContext.get_ca_certs() NotImplementedError on Windows c8e558c72cedcfe2f614366de869df5c2ab10279 fix(tools): keep non-bash -c invocations covered by the shell guard df0a5c3ee4d619798c6220210facbf35411a0070 refactor(doctor): reuse backup's size formatter for database listings 39db9d11144cac86bf863b9e938e0497a8a530fe refactor(tools): unify the tool-error cap on one constant daa139c9e38e41453722f13e78a48de99edd0868 fix(tools): classify git bisect as a worktree mutation cd869f26f33606c76485e18cdb06065e16442fe6 perf(tools): stop safe git commands spawning alias-lookup subprocesses bb311b395127c8c2e2d8cef83ef8766fe932c670 fix(tools): parse bash option grammar before extracting the -c script 4cc3ea01f6d34c8c9aa6a01bcf50325688749502 fix(agent): separate continuation fragments so joined text does not glue c8cf8bfdb634891d43e3fc877a00afefc8d94218 fix(agent): strip length-continuation marks from outgoing api messages c5c040cb351bdcbf80f87a1296bb1649d31f1fcc fix(agent): clean up the session tail when the continuation ceiling is exhausted a96a4621fadd4919a01303776961cbe1deb93b5f feat(doctor): show database size and the repair command for exposed databases 6583297086827f948eb0e5b16eedfcb5bc74fb18 feat(doctor): report per-database journal mode with WAL-reset exposure 886092bc54b11fdb8157eca896c0137362befcf1 fix(tools): block worktree removal and moves of the running source root f0a3ef8bde410ad23fc50f0867d0c6ed713bedc7 fix(tools): harden live source checkout guard a9f94022b02fde606cccceb30eeeb32accfe2d37 fix(agent): bind finalize_turn at import time ecbe6ef0dd574312bbdc80e63f588e4b547cb8b8 feat(tools): hard-block self-repo git mutations in terminal_tool 206531a1e1ab1bf9216aa2f4dc8eecc7d881bb30 feat(tools): detect git mutations targeting the running source checkout ad59d553386b04417351c272586063eca36616b0 fix(tools): bound the exception text dispatch writes into its own log line 84bc430073094b4496a05528205fce21341b9c00 fix(tools): bound the truncation log so it stops re-dumping the full body 2181d2e7c2450b6664792e8c023af5db292edc9d fix(tools): bound tool error bodies at the dispatch boundary 350f366a81ed200969d0f0221ea1196345638305 Merge pull request #81630 from kshitijk4poor/chore/author-map-wolftacdigital e3698fd8d3b15ecfeec58ec111d5037c380f43ec chore: AUTHOR_MAP for WolftacDigital (PR #49945 salvage) b3344502f88919c0e09e7d2b62d6953542dde613 chore: map Axmr1 email + update stale Go routing docstring b35cacf8b5ec73b013891783c310ecb963d5712c fix(opencode-go): route gpt-* models to /v1/responses (codex_responses) 520a1e78128c8fe328b1e70aaea99c72e26880cc fix(honcho): keep _pop_auth_notice tolerant of minimal fake managers; make fast-path test binding edfe4f51369f08a3b14925b7e932f6cf19cb16cb refactor(honcho): dedupe refresh-failure handling; harden exchange budget, dogpile cooldown, and rebuild race 086dc8b88083b37c0ed8cfb58cdf800a8d985ed0 fix(honcho): surface the auth notice when session init itself fails 864035b241166ceb9619b3e98344f9d592bcd844 fix(honcho): route every authenticated sdk call through one 401-recovery helper da1f8779ef9babf9b9b47ab40ac8a01d8b338176 style(honcho): trim auth recovery comments to one line each b1414baa095490ef5186d38691d198ad7a0d1f43 fix(honcho): stop classifying bare '401' digits as auth errors; redact session-side auth logs ecfc427b283ff8cfb001a7441ee3bf7c7ebe830a fix(honcho): skip memory calls while the oauth grant is dead 6ea01262fc4223879855b8ececb7887be5b86f26 fix(honcho): recover memory from mid-session oauth 401s and tell the user once d81f2f49ea999a4f9af69c15e1fdd5d710a91580 refactor(compression): fold simplify findings — dedup floor constant, drift-guard test 39056e8de4d96a016f21db706d556479b61ef72e fix(compression): filter clarify non-response sentinels; share prune floor constant 3090e9e87190d51c4c204ecf7a4a7947e41c9c6b fix: reject forged clarify summaries cf1863c878afd0978b3529d40d0b11366e065929 test(compression): cover clarify persistence path 6433d5723f8df44ca44097f0f0904d076d18b4b4 fix(compression): make clarify summaries UTF-8 safe d6511aecb6feb5553d5f2503552696fa0d9d19a9 fix(compression): preserve clarify responses 98e96e1a60dd9a9f740d2951d4845aee74066f6c refactor(agent): drop the run_agent classify_persistence_error delegating wrapper aed114a69bdab975e892bc3537c49cffc401a520 fix(agent): treat max-iteration nudge as synthetic during compaction c5332b2f868d6d8ccfd6109c77c304308087f255 fix(desktop): stop the HUD going click-through under its own dialogs 4500b43914de4ef6fec8dc13f3a1189b43fd674d feat(desktop): frost the HUD band and fade it in three states 10c1530599cd7cbdc91e6f963e09b1773d87a83e refactor(desktop): put the HUD toggle beside the layout editor f444e0c5e7bba9a298933b834853b970933975b0 feat(desktop): point an open HUD at the tab you toggle from 1005a057f0e287810300ca685a5f6a1aae0386cd review follow-ups: canonical classifier in hermes_state, compression-busy=locked, hedged gateway wording, drop dead constant a24cbaf426f2ae24227cc66143b61df35a6de97a review: tracked ro-connection for stats, single WAL warning, hedged locked-cause wording 64c342c1c9fd8943c8c0a89eb710d26735e18252 feat(doctor): state.db health stats — size, WAL, FTS shape, holders, growth warnings 01bc8a87528bacca671c93580622e7158fc2eae3 fix(gateway): honest recovery message for session-persistence failures instead of 'unknown error' 2a9f5b34764fb2acd21bde6d5eec259c88077600 fix(agent): classify session-persistence failures so lock contention is not misdiagnosed as disk-full 063f6941e57475155d2a94116aee0c6972c1e225 fix: drop redundant None-guard on agent_result in agent:end payload ff7af1cbafb60e2a065d2ee7728092ecaaa372d0 chore: map kweiner contributor email b68a5322951d1c0569404ba12d771a72ce682774 fix: handle replacement transforms after CLI streaming 1f5a22264cfe65ea340d88dac858d2063ad0d61b fix: add model and provider to agent:end hook payload 367dda813ce47ff6bb56dac15badd65d1a319fec fix: print transform_llm_output appended content after CLI streaming a4af262638e8aeacd402ef5445e4f642bc22793a fix: revert except ImportError back to except Exception 95520b812f4087ad201aab4dbed292494e8f421b fix(agent): fail open on malformed telegram extra config 9f582aca1d1568dc9a02bad708f40628762aa1bc fix(agent): read Telegram rich_messages config from correct path 0041fc69467a0739ee5048661167ff01970460b3 refactor(simplex): hoist json.dumps above branch in _standalone_send eb048772f6644e3e4d3d992f7c8c555c61df8564 fix(simplex): use structured /_send for standalone DM text sends 3a04d9c4d799eafaff43d5e3616a0ff3bd48ba6b fix(simplex): use structured /_send for DM text messages to prevent silent drops 077e6170a96fa9b8154923525469c93ca08d173e test(gateway): cover same-PID differing non-null start_time self-reacquire e54ba2ade2c9eab2f6dd023b95d70dca4f713020 test(gateway): cover null start_time scoped-lock self-reacquire 2e18e2972376c8a0cc9860dd4b923e38fee060e3 fix(gateway): self-reacquire scoped lock by PID alone 5077665b88b32e8862910c4b46d9ede42fb9d433 test(wake-word): verify resampled audio values e3be3b0481edd7ed35450927dba2b0683709b2fe fix(wake-word): capture at native input rate 2ddd24ec1f5cbda3a9c7eff9ebc1a2dba3dd090f fix: use is_job_runnable/effective_job_state in remaining pause-check sites c7a5de7d6eff45156f100dd32f120bc4c4c2bc08 fix(cron): make pause authoritative against half-paused records 2d5e93161bd73bd282315edd9f7abfeab477d142 fmt(js): `npm run fix` on merge (#81589) a8ccd521236b2a8c99cdb4e0b9abcded7d82ae31 refactor(sessions): accurate scope wording for tip-only resume rejections edf2cb4bf850455f25f83ab177fdc8f8720c7f99 perf(sessions): skip counting entirely when transcript guards are disabled ad59bd92c709ebbdc224eb68f44340309ab0381b test(desktop): align renamed message-fetch mocks; brace query-param guards e8b05dc6c2dbc8f6ade4fa2f2feefed16be93aba perf(dashboard): keyset pagination for streaming session export 5b4b9bbf77fe2012c3ce1142214ebcd1becb1b89 fix(sessions): tip-only resume guard on the CLI mid-setup path; fail open on guard errors 2607dc9a85713f4f4b186f98e147504f496d6512 fix(desktop): forward pagination params through the remote session interceptor f0794640f61be5d0b3d657750b9617cd08ff1464 feat(sessions): config-gate transcript safety limits c750d5354aedc98aed5540276fd1f8cd901cbc37 fix(sessions): prevent oversized transcripts from exhausting memory 643910afe33ca7dec9cfc1c9116d8b960510e093 refactor(gateway): narrow worker-start guard to Exception 0d312126a096086d789d75fb6b05dba793498a90 test(gateway): de-flake history-lookup timing tests; add worker-start-failure regression 38cd1999cbf6968ebce49be0df1a695a68982e92 fix(gateway): fail open + release admission slot when history-lookup worker cannot start 271867f6fa418db293f9baaf9b2d3b0c5ab8738f fix(gateway): bound media history workers e52acf76a1527ca8b94cc202a947e042bb777800 fix(gateway): keep media history reads off event loop c360333a3fc14c6c0b6572ff67800beea576b4e3 test(dashboard): deterministic lock gating + plugin-providers RMW regression 4ecdee38a6b9af52101c1b61f9913ae52bf49f95 fix(dashboard): close config-RMW gaps left by the off-loop sweep 965a5487884755cef4f1e2d2f16fd51425b2ef5b fix(gateway): serialize config mutations and finish the router off-loop sweep 52c9aee3bfde2531d2ed566236be9247f713e3a3 fix(gateway): move _profile_scope and config I/O off the event loop in async handlers e6b168855b40d3d1b27e8618a3a0cbe283c7aa7d fix(gateway): keep auto vision preprocess concise a3d57f18c24f851641671e014c42261b6fd08c66 fix(desktop): open HUD mode on the tab you're looking at d92bfa0a384486050cb78c8640d28895fd636007 Merge pull request #81570 from NousResearch/bb/figma-mcp-401 f99d2912477c768a3bc49fd818e79a1bd6ca89db fix(mcp): let a server that 401s at startup come back after re-login 0e260b3c8c8fa89e775e48e9ac101f2909e4f1b2 fix(desktop): grow the HUD band smoothly, and flip on the visible panel ba4456ab00171d3b0f93875929f7c99173421693 fix(desktop): don't flip the HUD's fade when the bar parks at the top 6ada733f9de677b7802fb67a24d35fd4707dae29 fix(desktop): HUD sizing — empty band, stranded exit chip, early stacking d57927f3bbb5eb54b9cd95a6864fad1b69a72f4c fix(desktop): stop the composer's two collapse stages landing together f9860b050875d3e0c45fe33a29fe39c2ba3f7aee fix(desktop): size the HUD band to its transcript 6a01b429d7fe303652d213581f7db7f505491b00 feat(desktop): reach HUD mode from the titlebar and a keybind e8b83f37c83caa47631c7a3e3671744fa2ea7d50 feat(desktop): the HUD surface — Spotlight bar with a fading chat band 7b0dbd2242e8921da9c2e30afa87ff349b433d42 feat(desktop): HUD mode window and its session handoff 8560dc6b97777752cdad1c5c882462b2ce74be5e feat(desktop): let a composer draft move between windows 0db11f9952f97921810ba386c17cc71d55e7fb35 fix(desktop): keep the transcript whole when resuming a running session b9aa9289a8083f2e9d248ad6837b2938f5ee92d7 Merge pull request #81414 from helix4u/fix/ssh-remote-tilde-cwd 4bba9d351c9109cdfadc2ac3d7cbdbd0c05225a1 Inspired by Cursor: `hermes inbox` — unified view of everything in flight 919bffe2ce866e0680453008ad277b2490cdb7fc test: pin read_window_below into the toolset + post-hook contracts, appease eslint 4a7646468ffc678640505917def8ddc71b8e3ef1 build(desktop): stage get-windows like node-pty 26905f5943b302980433e5206aef134c94468dc4 feat(desktop): answer window.read.request with the window below 57a7194a13d03ec7b06e9a2d804003a767cb3373 feat(agent): read_window_below tool — which OS window is underneath the desktop app 3eb653c74dcb744593aa715314a9526bf0d7dce0 Inspired by Energy: extend `hermes import-agent` with Gemini CLI support dbaf473ae3dc4cc81cda662a294f2e76edc1afe0 Inspired by Claude Cowork: pre_llm_call block directive — veto a turn before inference 9c69d988641d128d7da1c0fdf215eed158011ada fix(terminal): preserve SSH remote home cwd c6806a8e977febad6f97cae6f0cf1af515d9a0cf feat(approval): make invisible Unicode, control bytes, and padding visible in approval prompts b3aa561faffd64f05436e429a6415d175e534ec9 add Hermes headers to Fireworks provider (#81321) a8c50eb1d841563eff22bd707d80472e7f1e9c9f fix: relax start_new_session assertion for systemd scope path b5c2116783eddb48b1952039c154eb23581690ce fix: defer O(n) fallback_data construction to failure path in _save_entry c5e032c804de32a3c5f751659f6809837cfe6744 fix(gateway): close ambiguous recovery cleanup gaps 46b5314229a0646d84cbc1d0fabad83cfca84608 fix(terminal): harden scope fallback and memory override 5ff328cc76ecf9f874aaad4c0c16873fe2c20f12 fix(gateway): make active turn markers failure-atomic b0346ba42ab4a33bbf3735ccad757af37c4cd996 fix(terminal): align worker limit with local guard 5f9308322116372ca0a4334be43463b965dc95bb fix(terminal): bound isolated worker memory 0690fd77c6e6c9fa5dae4e5b37b63b4f8f220c23 fix(terminal): make systemd cleanup gateway-safe 69397937ddcf978169eb715c62a2980af53f9739 fix(terminal): serialize systemd scope capability probe 59a128c6fb20d7b1178793812b1058eb6424312c fix(gateway): harden active turn marker lifecycle 6774760b6fe3e852c3ea8ecbd1f30177c6604c87 fix(gateway): recover exact turns after unclean exits 21de22a4ec4c4b37e989d0933a5d027cf1b50b71 fix(terminal): fully-qualified .scope unit name, exit-code check, already_exited cleanup (#70716) 7cfa90d90a52868558aa9de284519ae445aa1ad1 fix(terminal): address review gaps — PTY isolation, unit-name kill, --quiet (#70716) 099eb7373170673d0b42060a21559b12c869358c fix(terminal): isolate local background executors in their own systemd cgroup (#70716) 005421d888a40865cc61d143ff77efd87a037a1e fmt(js): `npm run fix` on merge (#81276) 33edfe9a8134c34f97ac3c8cc70ad4bf89e76ef3 Merge pull request #81261 from NousResearch/bb/desktop-stale-session-recovery-consolidation 7307f88993fc0bcc827d15eeab079cd8905c3e53 fix: follow-up for salvaged PR #18255 15927c1d24e39e22234485a6389c135109646631 feat(cron): add usage_audit.jsonl logger for cron token leak instrumentation d3e3c623445af824222172a7c9ad9ac7e2c3e1f0 feat(cron): set skip_background_review=True; doc title-generation non-presence eaeba6474fc0c6d7bc1fca00c1250da5e1c58019 feat(agent): add skip_background_review flag to AIAgent constructor 8370141f1cddbb0ba7b9d3b4a91bca8c576b6019 fmt(js): `npm run fix` on merge (#81259) 37aaecf48be1cc694ecb05451a1de6a49d3c06e0 test(desktop): cover the stale-session recovery bug class c1305b645d0875a7132baa859ca17104a7eabaf5 fix(desktop): recover checkpoint restore and tile actions after a stale session drop 3c4f5c5217381ef1c8ade256ecb21b6bbad19d90 fix(desktop): recover image/file attach and /compress after a stale session drop fab99e828ac42cdfa64d4ee207f2647ec9e24eaf refactor(desktop): one resolver for stale runtime-session recovery 10a2b3d7a27ab2957ea12136506a5fdf7b7dd4fa Merge pull request #81247 from NousResearch/bb/desktop-files-pane-cwd-ownership cdc10cd78411f45a8bfcb562351dda78bd538c33 test(desktop): cover the Files-pane cwd desync bug class 074f3dce2c3f0ca387554902cc066a36065e9fe5 Merge pull request #81239 from NousResearch/bb/sidebar-dup-main 6ff052479bdf7d125cd07eebd205c82ef5c705bd fix(tui_gateway): report a lazy session's own cwd, not the launch dir 9cdbeceda4fd639584b3de7b893a28815447cab7 fix(desktop): don't let a named session.info rehome a fresh draft 416e025c46c6d778316f411616a2f76db01563b6 fix(desktop): rebind the Files pane cwd when switching sessions ae6eb578bbef6bb3204686e655cd2e596a2d8088 fix(desktop): add workspace-cwd ownership so switches are atomic 690dc87a88f808a9691e2e83219f7b2262dc84ea chore: map contributor email 4cefba3ec91d4a6c5af4f90feda338fdc5e2d412 fix(desktop): stop rendering a repo's main checkout as a duplicate sidebar lane aaa4299a2839b95aa01be18c133470c4500411e0 fix(gateway): normalize common repo root separators in the git probe df7e1784c77a263f7b2b625062963d22d83e1711 Merge pull request #81232 from NousResearch/bb/desktop-boundary-recovery-triage 78bc9acdf16dca8bb9550643c4b9a628b086e6df chore(skills/document-to-action-items): promote to bundled tier 7b8d0d800c3fe8b0a8ef6de37d5529d36e7fc635 chore(skills/document-to-action-items): tighten to hardline standards, move to optional ff2fa40b130cbddc471cf7e923e1dacb87c38437 feat(skills): add document-to-action-items c015663b215c0e14de4295346b0727db602cbb1d fix(models): corrupt-at cache rows degrade to live fetch in cached_provider_model_ids 24b7ca725812e9afd3c1a1aebce084a2e43aaa35 fix(desktop): preserve root recovery through StrictMode replay bb9434d3075740aa7d5e2b0d4d355b76c6499890 fix(desktop): match current assistant-ui lookup errors 0405c26645601f17ab0c5233597e13febb79be9a fix(desktop): recover root boundary from tapClientLookup races a62eaaf3162c637e40fa3879592b97ac1c24c046 fix(desktop): self-retry transient boundary errors, reactive edit composer context fa1a5c0485a6a912517ef2ded76e39907aa26087 Integrate verify subsystem with the existing verification stack cc1acfb229ffccae2e42339af71faac493523ddd fix: Windows-safe process-group teardown in verify runner (footgun CI) 47a35d63c0ee219f5ef834147e16efc1c17f4628 Port from superagent-ai/grok-cli: verify subsystem (run-recipe detection + environment manifest + hermes verify smoke runner) 73579b3af17e22e9ff2f2818e08f28618d893418 chore(deps): bump mermaid from 11.16.0 to 11.16.1 in /website c14e465abad82908b9c064c07072df992399f0f8 chore(deps): bump js-yaml from 4.3.0 to 4.3.1 in /website 08ef4a101baf7d3fbcf3b9ea0b6a17489bf09b1f chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /apps/desktop eaa53de4eb00ac2686438f4d5e4c674158059ba9 Merge pull request #81203 from bbednarski9/chore/relay-0.7.1 8cb066404e3edc3501a07a408c59834dc745cc74 fix(plugins): address portable MCP review feedback 6575fb0f80dd01a3d53ce47485cc7e65d0acc67f fix(plugins): preserve opaque stdio commands e288d93fc17b2c2402e6588cc465819a5d724053 fix(review): harden portable plugin boundaries ca78c6d7a67b69a23cb167b82fd2bde8fef72fa4 feat(plugins): load portable agent components c5117655b6ea8d1ef7850a392793a80fb53fa6c9 feat(plugins): validate portable agent packages 920eaf2fc487c7861a695a94c0969bc0cf58c118 chore(relay): require 0.7.1 6e87d43a5765d4480359cfa57b574e97bc5eacf4 fix(tools): lazily bring up sandbox for vision_analyze reads bc80a0be5c1b496a6212a1c6c594b3c5a78e31c6 test: stub EnvironmentConnectionError in environments.base module stub 5c29566e8d475064d0dcae2e51635636212c6000 feat(terminal): graceful degradation for remote backend connection failures c228d1c559c98bf4146866c54877e4f32ba80081 fix(dashboard): fold one-field doctor category into general tab 1006faa6f89577a019db31fdef38fac545249c86 feat(doctor): add opt-in `hermes doctor --live` real-call backend probes 0ebaa490b515cc0a1cdaa6f8df7b20d94cf990b9 test: use valid 2-task batches in schema-rejection tests d6ee58b5833d62b443508221bf49c8f7fe552b93 feat(delegation): optional structured-output schema on delegate_task e166159f26ddeb952cf4c6899c83625d406a2b85 feat(vision): optional region zoom crop on vision_analyze fe66596df342c660d0cb42172884070ae02ac5a0 feat(security): protected agent-instruction files always require write approval c8369e37f49a5d3633f357abe9d01f6b4f2149df feat(mcp): trust-tier gating for write-capable MCP tools via readOnlyHint 37cc99992627d440b8a37accdbef7a2c8633cb27 feat(mcp): collapse const-only anyOf/oneOf unions to property enums 9fad45fcda96485b28e5aad9087486486cb9824c feat(kanban,mcp): orphaned-card reconciliation + per-server MCP identity header 5db1b72b1fd3aaaba740d70148373b1c4abf8dcc feat(cli): global emergency stop — `hermes pause` / `hermes resume` 5396da844a33d009de8c62ec5ca9ed525a4bd07d docs: DX sweep — 7 verified-absent documentation items d7635e43bb06cb5a9132feb9e7c5c2d272222d72 feat(delegation): surface per-delegation cost in the result entry 94bc3194b36f56f040d3b6f31084fcd62d2cc9c6 feat(delegation): validate batch task quality before spawning children ed903f953e536dd35c6eb1bc5a67e7fbc71afb82 feat(cron): pre-dispatch configuration validation (blocked_config + alert-once) 04e8a661f295466ee4d1947c4c9e0fdd1abf824e feat(cron): per-job durable notepad — KV scratchpad surviving scheduled runs 6dff2109aab2d47fc26900d3b55796397ed023d0 feat(cron): monitor-mode jobs — hash-suppressed change detection 563f0a6fdec1c84cd0304b08c8f1e78fe891c2c9 feat(cli): add `hermes approvals test` — dry-run approval verdict CLI 7cf71c32bbd27ac4044b6b6a5f0c280268e7ecb5 fix: follow-ups for salvaged PR #80740 fb435aae976d94238fed84ed263e31d8f0b2e905 perf(model): disk-cache custom-provider /v1/models probes 83bad5cdda0102ad78c3a4ad8a7efd48cbbbe7cd fix: follow-ups for salvaged PR #80795 2d0c2682c7ae398487ebc3599cf682efd43916c8 docs: document the gateway agent cache memory budget 6bbe55dd09649447ad97e96e7eec32e5a2e50d29 fix(gateway): bound the agent cache by memory, not just count and age f15a38ee73631b3cd5f7d30765c37d5f0245d403 Merge pull request #81107 from kshitijk4poor/chore/author-map-prashantjain25 5ded99af45f8ad3d2ffeca566524160dc236e01e chore: add prashantjain25 to AUTHOR_MAP 48e2dcd7a0118834ca994f1285f047b313879a63 fmt(js): `npm run fix` on merge (#81102) a4b235c4b2fd76c81c0e0113587801f248c44a21 fix(desktop): virtualize git file-tree to cap DOM nodes (#77257) 4a3942d948871a4cf447ef104d10506ed0376d50 fix: show explicit member spend cap message instead of 'no credits' 813793db230e8518634665177d944fabc43fec9d test(tui_gateway): pin the raising-close swallow + no-retry contract be14a4bee3d5c134fb903b4aabc4e8a7e89c8ab6 tui_gateway: close dedicated profile SessionDB handles at teardown too 79625e3c0bda8e625bcf3e7b18c1d31aca0ca8ad tui_gateway: session.resume abandons the profile SessionDB it opens fecba5afcc58e0bc10c623e2982bdfba63afc25b refactor(agent): fold simplify findings — DB picker parity, single scan, canonical strip delegation 4eabb595f0990b8b48ccd933af12dc12abcd4171 fix(agent): finish the #80622 bug class — sibling predicates, refund ordering, prompt carve-out, honest skip response b9636b1047c4f771192b598af06e2e97986531fc test(agent): cover reference-only handoff sole-active-turn regression 6d3ff6eda8cd12551b295ebf32c81d3253512066 fix(agent): stop reference-only compaction handoff from becoming the active turn 3737bb1adf7fdd276832a01921660c913bb39eaf docs(compression): correct the projection's safety claims (review findings) 6d89b10653d0a75c78a1f7071cba405837824399 fix(agent): project real usage in preflight defer instead of fixed growth tolerance e7667e56df2e492b6ba5095db2516f0af6455a9d docs(stt): honest memory-behavior wording for idle unload 72c63aa5862346c449f0451255931284f1af44b7 fix(stt): close idle-unload races — strong model ref, single long-lived watcher 7b006ea6e8668bacecd9807a4db82c034d8371d6 feat(stt): idle unload for local whisper model 5cff192b392c0b36e25b59a5e9401bed917d68e5 docs(stt): document the 12s short-clip gate for the cloud trim 3277eb88721f4b4889f305a8cb3cdd41ec095674 refactor(stt): fold review findings into the cloud silence trim a683ef95d2cfebd266f9738d70bcccf157e91e2b feat(stt): pre-upload silence trim for cloud providers 83a1ca686207ef797e4eb86a46725dfe7d9a2f10 Merge pull request #81046 from kshitijk4poor/fix/vision-stream-download-size-cap 5c6aff1430678628004db7e331dc964ebc5939d3 fix(desktop): keep the chat in front of the terminal in Focus layout (#81019) b7eb97a835a8add7258f2748cce7b88406b9e141 fix(vision): stream image and video downloads with chunk-by-chunk size cap 23dce021a5fd5540f88e6845014c44a05866d1a5 perf(fts): drain trash tables with a high-water marker instead of re-scanning f3ec2f36f8563d9a3f65c126a5bbb652e9fa45d5 perf(slack): parallelize conversations.info lookups with asyncio.gather 025fc7e74b482b022607871881805cdbde4b9959 fix(slack): dedupe thread-qualified channel lookups (#80668) e5e96e8bb57aaf4c0a8205ef5c1885f4519301a4 fix: harden _await_disconnect_step against outer cancellation + add claim keys 95e78556f466b1e3dfbc58ada7c84f9d84c1b297 test(gateway): cover fatal-handler queue-before-disconnect (#80598) 7141a6dc3abd687f5218a9e97cfb4d54d134e6ee fix(gateway): queue reconnect before fatal disconnect wedges (#80598) 6d1f9f8ed4c751d69f3415ff6523ee3271a5d0f3 Merge pull request #81035 from kshitijk4poor/chore/author-map-dombejar-toprakeker dfa0de92c5d35047a4f00e8b638c3527c4fd3f3b chore: add contributor email mappings for dombejar + toprakeker 2a0d0bc698a54ce34b275a6dda224e5d26e9eff5 refactor(gateway): drop dead degraded token field; de-churn salvage diff 3a3aed3c1f317cdcc4c86d8b440b0e9f3163283c fix(gateway): keep pending turn lease acquires registered b3e9e91709a58fcd081c457c7cf27ca8b10bf038 fix(gateway): configure turn lease timeout via yaml b2b681fefdc1fb8285350b1976287b2ee1d75589 fix(gateway): harden turn-lease timeout rejection 29af112cd4e648a0914a076fdb614265fe02b6fe fix(gateway): fail closed when session turn lease times out 2ef294f0209ead21b8522f34f4bae6266fc23517 docs: spell out the rewind contract on prompt.submit c24ff38c513cb12177c58a59baaf06d627f1a74d fix(gateway): make a history-dropping submit prove it meant to 87fd0ed25210f86bbaf0cea0839be9e4e0b3869f Merge pull request #81024 from kshitijk4poor/chore/author-map-texasich bf2e193a0a48fa8bfc2ec2ed6aaca6e0a6eb59fd fix(cron): review follow-ups for the fail-closed cwd-lock timeout 30679b876cc441900ae3829fd6682a09a9c6211a test(cron): pin fail-closed TERMINAL_CWD lock timeout behavior 5fcca432f5ee456b9a7800a79fda16eb27c4d689 test(cron): cover bounded TERMINAL_CWD lock acquisition 11ce6419c3ba7a913f907c000962c81565a53ea2 fix(cron): fail closed when the TERMINAL_CWD lock times out (#79768) 69cf06a82479103b47156ebdde35068816c2b37c chore: map texasich commit email to GitHub login 458ce7b2b464ab8de6c30c2bdb421d7744a54f23 fix(streaming): close the same mid-tool-call drop gap on the Anthropic path e6f31b07cb9e20a01e5fae64764571c4ee42cdb4 test(streaming): cover mixed tool-call and retry-exhaustion paths for #80498 f7345780337bc0bc5e5640b31a3390131bf21d23 fix(streaming): flag empty tool-call args on clean stream end (#80498) 72b7305263308ec64354ffb9d18eb7ba7f24750e polish: document newline residual, reuse span local, cheap check first 9377c5a539e93c8e8f2db9d341fac81acb648459 fix(redact): narrow control-split join guard to line-crossing spans afb46fdab4047c0ac4fd2e1a416e3e2337f27925 refactor(cron): polish registration partial-failure surfaces f346458f29c2afc8c3ce30cc011df786f5faca16 fix(cron): surface initial scheduler registration failures 261aef5268e1335d7e1740c2bb17045f8a4ae449 perf(cron): stat-stamp fast path for the shrink-merge; no caller-list mutation 5511ec623b65a41e775bb5eb206d0b8b57f43c26 test(cron): cover jobs.json shrink-merge against concurrent creates 4d84aa2a63ff0812f98af42c97310d034e92d08c fix(cron): preserve concurrent creates when saving jobs.json aecb9ca894dd5064656f03b8bfd96a6c0f840405 fix(redact): don't join across controls when a fragment already matches 8969ebac1cb326e60cd7314de469b1e499e34574 fix(secrets): redact command in process checkpoint file (#77484) e9d1551e65a7a4f7201fc2fe491537d0c5a9bc27 fix(redact): strip control chars from mask_secret display (#55319, #55321) 5444f6853b6ab0ed675896d65412cc10a808dfd2 test(redact): harden new #77484 tests - assert fragments, opaque values (review) 8563fe34359381a100d13b3d62b17a9a89df402e fix(redact): close emission gaps - env suffix keys, control-char splits, process(list) (#77484) 15d7103aa79183c0104a801310f9d88ce5f6c302 fix: harden .env-read detection — review follow-ups for #61352 cf755f5c4232ddf5841c33ae3f2a0f07b49e45fa fix: redact .env terminal output via detection instead of known-env-var list 83902620c8ba42a46b48b28b9ab39e22dd5d1d5a chore: map soheil.fakour@gmail.com -> thatssoheil for attribution 1a02e8a7932e72593086ccce07632d5632a264c4 fix(agent): preserve destroyed tool-call argument bytes in the WARNING log c18e19c3c7e352d6e2f277a9d2819dffac921ff6 fix(agent): make the send-path copy structural — close the write-through class cd152d9dafa300ffcc6ae77e34448156fbdf910e chore: map ahmetsonersancak@anadolu.edu.tr -> 0xGr1mm for attribution e60ca1c6cae714b26ced24b9f5d018da4d1ec6ca fix(agent): stop the send-path repair from rewriting persisted history 8b6dd27cdb55ecebdef20699e6430986cafc4636 test(auxiliary): update _resolve_auto patch to _resolve_auto_route c95a1b7171cfebe5e07a8ee28d6af22e7b767f72 fix(auxiliary): widen effective provider to relay, logging, and endpoint detection 293e67328c0ac427368835d08c98d2360df82363 fix(agent): preserve auto-routed provider identity 427584b76841c09f419ffc95c7651d995c57d4ed Merge pull request #80933 from kshitijk4poor/fix/replace-messages-archive-siblings a82910c37baa7437a72a8ae82b9e5df686960497 test: fold review findings — plain fixture, call-shaped probe guard, public-API row counting 1e5b50744094959db5536eca9df3881d13fd28d8 fix(cron): move watchdog state under the request lock; fail closed on resolver errors d7fb503c2704e8763f1535fe85c92d90c76d7393 docs: note that the non-stream stale budget covers cron and subagents cb066a971bbfdeb64f95a31cf59a49a56007e1da fix(cron): bound the inline non-streaming call with a stale watchdog ee6d79648a596912cbed189eabba3894f67df631 fix(state): finish the #80216 bug class — archive-preserving rewrites at the two remaining sibling sites 20e01f935b132f0074677e7f2756f4d881807391 fix(voice): early-exit sliding window on match, clear barge phase in finally, fix test helper 979bf0cc4ab218d11de83dc10336d55c6d619eb6 fix(voice): require minimum evidence for fragment echo matching, use char windows b7bff6f2d7ef64b72ffc7fbfe5e8fdc139a062c7 fix(voice): catch short echoed fragments of longer multi-sentence TTS replies d4a753ea424bfbc03cd7891eaf2eef183edbe33d fix(voice): drop playback-phase barge transcripts that echo Hermes' own TTS 6ab7528c3304e61ab6ee3fd8bb1accc988fb3e06 refactor(matrix): extract _strip_reply_fallback to deduplicate text+media handlers e8511efe758fbd4b1de27ed9df426064c4fba847 fix(matrix): propagate sender + reply context to media MessageEvents too e245a987817a36028fc073b78eb0f8b7738f5bea fix(matrix): propagate sender MXID + reply context to MessageEvent 87086bc5d7812f9f38c6dd36e391ab0fcec92468 Merge pull request #80928 from kshitijk4poor/chore/map-wintle-contributor dacdae014d5760b505dda7446c132f39fa7470aa chore: map contributor cwt@users.noreply.github.com → Wintle 1fe53bd1ab3bfce098a2161cad0622d436738476 docs: comment accuracy — pending-ness is a presumption, not a construction guarantee 03beb662e8368dffa7b33965674440c99f7c6c9f fix: cover the partial multi-call batch in the in-flight exemption c4c2265f00baba788c435d28963b78a0743eb7ac chore: map craig@shotflame.local -> Shotflame in contributor directory 788b8ab4978b5b4ddfbc4669536daa87fb064265 fix(compress): preserve in-flight tool chain across context compression (#79278) 416d2a015727252855e0b8e961fee9e9519f5fb2 fix(gateway): re-signal interrupts when work is still live at settle-window exit d9ddfb23d5cb3a4346a8305f25d43e2827ed88a1 fix(gateway): interrupt every in-flight API turn on shutdown, not just /v1/runs 51fa7db46919dfe109ab2dc29994f0c897f9d651 fix(gateway): interrupt api server runs on shutdown timeout 2d9b809ff0b787ce63865bb4369933fcc4d45f18 fix(yuanbao): preserve archived history on recall redaction 30c1421acfb386f3e3e9d74da1894be8353cc66f fix(gateway): make retry archive preservation fail-safe 56fbac6b3858c50c504b117b7f16238011e97e28 fix(gateway): preserve archived compaction history on /retry 65de109ef379e751e606fcacde5f7a05206e93b9 fix: notify_all on lock timeout to wake blocked readers a1e5ccb325e2a6991d2fe3097412abd8c804812b fix(cron): bound TERMINAL_CWD lock acquire with timeout (#79768) b0090040e60a513334f557705f5b781ef25dd302 feat(skills): add human-writing optional skill (活人感写作 Chinese prose) 3fe9caebeee5e82fa00b2dcc3d2cdeb6eb03331a Port from lobehub/lobehub#17855: render notebook outputs in read_file ipynb extraction 99237a4444ecfea5110642e95e1cff81ce510b43 refactor: derive teams install hint via feature_install_command(venv_pip=True) f5784617e8759e5216a04d6cacf8725c5134fa3d refactor: fold simplify-code review findings a658dfe509602c8581d34070c566dbf7da22cf60 fix: address self-review findings on the check_fn/ensure_deps_fn split 0d32607c62ead92f4f6263dd7549acfd6c48109f fix(gateway): split check_fn (passive probe) from ensure_deps_fn (active installer) 042c309ec50c0d349895af067a8ee7775427adba docs(teams): native gateway start and Hermes-venv dependency install 98408f713bfde5ba0e5c2779136ec52b9af7d972 fix(teams): lazy-install SDK via registry check_fn a0801b878a534801165e4357425207df06c032af fix: bind continuation-marker exclusions to the queried parent (fail-open fix) 95a7058e4b90244f3ad27d4c3cc810db2528fd69 fix(sessions): fence expired orphan recovery leases 988f2baaf8f8c2fe0ac5fe83a1adcb6177ff4efa fix(sessions): recover compression parents without continuations 803ff8dc3602b1cc66e73e4df5dd047ce9e1b572 Port from code-yeongyu/oh-my-openagent: ast-grep structural search/codemod optional skill 78f008ccbc919cd79d6fffd17209fd58fee70989 Port from paradigmxyz/centaur#1264: surface Slack emoji reactions in thread context 4a15d268011ae7da5ec0769e15cd6c947eee2de0 Port from block/buzz#4959: classify transport timeouts distinctly in API error summaries 71dc211b9e7846dcd55144b7f92bde5fe23c1c1a docs(cron): document async manual runs and per-run prompt context a8d5adfb2e0ce178036f4e7d5c4aba42e1c0117b Port from paperclipai/paperclip#10978: skip locally-edited hub skills on update unless --force 358d55051ee08295f3b4453fc13783cac872d311 fix(plugins): use asyncio.wait_for instead of ClientTimeout in Matrix standalone send 66c60f81b6ec746932f4a09459fa0bed39942ba2 fix(cron): thread per-run prompt through cronjob(action='run') (#57331) fa9641999347c22725e0800b0187277eafa97cfb test(cron): add _build_job_prompt extra_prompt regression tests 7a5fe00244523862a0b706279dddc173947a3ea1 fix(cron): deliver manual runs on gateway loop 62770162a284fb9f283726b32d6d20b965978ec1 Port from paperclipai/paperclip#10875: route all dashboard copy actions through the HTTP-safe clipboard helper 12dd7d8f10822b61c3bb73a58ffe88916d012ce0 Port from can1357/oh-my-pi#7553: allow quoted shell metacharacters in allowlist matching 034f543c7f5abdb1404477480546f0742c7818fa Port from can1357/oh-my-pi#7306: reject answer-shaped auto-title output 3671c9f188e1563fd7acb6021f430e4607e17900 fix: share in-flight cron dedupe between ticker and manual runs 7ab42dda607bf1b767706d46fa942683d56f13c3 fix: dispatch cronjob(action='run') to the background like delegate_task c76d82e7e8605f8a39dc7351852dd864abac8eb5 feat(optional-skills): add draw-your-font — handwriting photo to installable font 32e7fb07a0cce96997f161ec6be8f6aae9e6632f feat(/learn): expansive knowledge-base skills for books and large corpora 3ed1d2ed61dd7ecebd756016fc5e3f44a7670de1 Inspired by Copilot CLI: /worktree — create isolated git worktrees mid-session f6a88a61305b6bc51242af0ea38c6efbf981f386 feat(optional-skills): add simple-english — ASD-STE100 Simplified Technical English writing skill eb1e63090a798e61226eeb3b6bd685ef05e18422 fix(skills): align hermes-agent-skill-authoring with hardline authoring standards db407c8c932f06fa6b58aa9b4a7ab32e22c33462 Merge pull request #80797 from NousResearch/fix/sidebar-stale-schema-probe bdee48928f11b3109e43e52d88f9a24cf9e4cc0d fix(dashboard): derive the stale-schema read probe from SCHEMA_SQL 85f21e54f4f6bc7e7db96e79a9c7303fdaad5aa9 Inspired by Factory Droid: accept unique ID prefixes in process tool lookups c069b81d8998270a8d8d2a01ca7ce071a6eb1989 feat(background-review): evidence-grounding rule for memory review prompts 14cdef20e3523204c53e8fbfea6b85f4b94a17c8 Inspired by Amp: cron self-context — context_from='self' gives recurring jobs run-to-run continuity 55505be152e3a18c7338c533c286dac655b701ec Merge pull request #80770 from NousResearch/bb/desktop-session-integrity fc05247be8d5d6eb89d22f16309a9a097495d4db fix: preserve session history when a turn crashes 623d5c93e0901709abc89c8a76126104a9273732 Merge pull request #80736 from NousResearch/bb/reasoning-summary-blocks a25af6b2729d4d5f1545ece4c473fde6082ed391 Inspired by Perplexity Computer: sessions pin/unpin/pinned CLI (#52955) bee2bd8bc2a321dec0abfba37e52cffeb3d3cfaa Merge pull request #80747 from NousResearch/bb/remove-gateway-pill c71554a05f6de0eb57c4a73d421e6bb5ed682cb8 Inspired by Copilot CLI: /rollback keeps user hand-edits by default 846d04e5aa07bf225c11c2c935bbeb9059299081 Inspired by Poke: nudge review of repeatedly-failing recurring cron jobs 6f1072c83cc33411fec1b5a276357ab88332abc6 fix(desktop): drop the gateway-pill dogfood plugin 85440ed2a35ecee9b262eddb2534476392e9735d Inspired by Energy: assistant presets — one-command role profiles a5cddcd8dce6d29f8e51221f265ad0805bbf2479 fix(desktop): render already-glued reasoning as separate blocks 6bb630ef783e8bacdb4135fd06b6fcd2445eeb51 fix(codex): split reasoning summary parts on summary_index 0f836618081c289546e81d0a1e117f01bb8d75f2 fix(reasoning): keep gpt-5.x summary parts as separate blocks on the chat wire eb8421ba9864cd58b0cf246cdffc6d45f6949372 fmt(js): `npm run fix` on merge (#80725) 7b16de3f7c9f8ead64cd0e2c071e95def640ce32 Inspired by Claude Cowork: security scanning for plugin install/update aacd3194c917ed403ba302dd37b6702c6fae04ee Merge pull request #80719 from NousResearch/bb/running-process-elapsed 4b0238578e6168f9c4d1fdc15556f68f45dfc183 Merge pull request #80711 from NousResearch/bb/sidebar-pin-sort 01a61c945f981b230cf4c49c7ac48045b7531366 Merge pull request #80718 from NousResearch/bb/show-earlier-threshold 45f23205d790d65762dae6dd75d24e2124e1cbb0 fix(desktop): show every pinned session, however many there are 38929dae9f4f18c25c14603c8fc5b95e255bb533 Port from MoonshotAI/kimi-code#2564: announce date changes via a per-turn system note 0265797b8de911fa081b4cf8d4a8db3531868e23 fix(desktop): keep elapsed status text from overlapping 75717d29eb031a2a42d1879c8ccdeb3519590bae feat(desktop): stop hiding a session behind Show earlier 31459ef0c99dd834acb8b75d376dde5800e0e46a feat(desktop): price a turn by what it paints 6c564a81dbe588c8f6c7d3337a4951c3427ff06a Port from MoonshotAI/kimi-code#2647: read UTF-16 text files by transcoding to UTF-8 7eb461d693cfb5940190adb30279cf26845e6d22 refactor(desktop): share how a tool row renders 666434e4aef557d8dfe8955148bdcbbe99aa0514 Inspired by ChatGPT Work: convert large pastes into .txt attachments in the Desktop composer ac22580ae084f072b56ea2b246763a94477dbf4c test(gateway): prove the GUI-tool fix against a real remote backend 295d7016157125c700c5ffe7423494bd9a9ab893 Port from MoonshotAI/kimi-code#2596/#2600: surface MCP tool-result _meta to the model, minus protocol-reserved keys 03b759db869115336c188498b695489e218d7075 fix(desktop): rank dragged sessions inside their date group 256aac54d9a3ecdd80e933739e7bf15cadc1c3c8 fix(desktop): show a pinned session once, and keep its drag order daeedf67c987f6600a0147be2c5a7c7216b41a35 fix(desktop): hold the pin write guard until a page confirms it fd9fc50dd2ca89acb3e7b57ff3ebf3e80fd52af4 fix(desktop): stop dropping pinned sessions past the page limit cef7d1a1e18e9c31039962cb9dfb40a90d34b33b fix(api): persist session pins instead of 400ing them 55f23734983d0a4256ab042b8cd8f151a477def5 chore(skills/grill-me): contributor mapping + docs catalog/sidebar regen ded527f8965e83736dc5939f2296bf0ae807038d fix: shorten description to 47 chars, reformat to modern outline, add author c7b3abd1f0bc2503d9f34e222e13626023b9d32f feat: add grill-me skill — adversarial plan interview before coding 226b095a59df0be88e195a90fbd209f236665b7b Fireworks user agent (#80422) 19fb03a93c3eee9d35b87fc9acd50be2924cfc66 Port from QwenLM/qwen-code#8602: cap a streaming response's total lifetime f88f6f8e676c710fadb12cc090a792fff695469c docs(reference): document the desktop_ui toolset ac745a0b0767b80795f6532d882e35eb517bac32 docs(agents): surface capability belongs to the session, not the process env 7ad9ace2cca48c99f54a39ac82336a2c18799a3a fix(agent): the desktop's tools reach it on remote and cloud backends too b333fa7e50647f7f5d87b0ddf8b0e119c590b8cb docs(reference): document the desktop_ui toolset 1fdab33ab92b26efc38a3c7141f078676548cbde docs(agents): surface capability belongs to the session, not the process env 0b5a62c9807b25a4354e0b80c7f52d212c380ce8 fix(agent): the desktop's tools reach it on remote and cloud backends too fe3a1cad6e5db98348a06ec0af8ae3c7b7527d05 fix: align helper PID check with Python parser + dedupe drain-wait 9d213918e456a07e46aa023cd37d82534a818b31 chore: map rjhilgefort@gmail.com -> rjhilgefort in contributor directory 65b7151dbd95767d0d203711216e43b0aa43113f fix(launchd): require a supervised PID to call a reload successful a1e4c905f525f64bec0995ce2a31d3b85acb8001 fix(launchd): stop stranding gateway label on plist reload 242b1b11568108ef77eb0e1348db3b13192c9d03 Port from block/goose#10746: strip invisible Unicode TAG chars from MCP content 41efb0ab1b7dcb633baec0803186267eb5c44a1d Port from earendil-works/pi#7681: support AGENTS.override.md context override fde6a843e5b5ee171eaab90b6c84c9fdffb30d00 Port from earendil-works/pi#7493: advertise AI_AGENT env var for child-process attribution 141a746ddba7899dbe321d4f9224330e4fdcd29f Port from earendil-works/pi#7494: preserve Gemini 3 tool call IDs 4db8588395d37166fd40daeb2fd6400f357e4351 fix: suppress windows-footgun false positive on binary tomllib open db8a3a41e77d1c2e06297d69d0edb395920dd203 feat(approval): coalesce identical concurrent gateway approval prompts daf13324caec39ff7e6f5e7db28a513b4f335f93 fix(error_classifier): classify connect/DNS failure messages on generic exception types 9eaaa59decdc36e4e95bb16c3b95319e369611a7 Port from PrimeIntellect-ai/prime-agent#630: report version transition after hermes update 4d8181fd84a74b3a5002e56dede7db222b97f66d Port from PrimeIntellect-ai/prime-agent#628: resolve symlink aliases in ACP cwd comparison f1e16a9928c8869d7c13e403983ed0d0934b3a84 chore(deps): bump mermaid from 11.16.0 to 11.16.1 in /apps/desktop 0957277f2f468bac22bbfcfa7c43029858c9597e refactor(skills): move polymarket to optional-skills/finance d273e0f2fa70bc6c277d8f8f002cb68c65324996 fix(search): zero-match probes return the file paths they found, not just counts c503acde6fc8735ec7336721493203c3e6bec879 chore: retrigger CI (workflow trigger dropped during GitHub API incident) 326c9d6221399427ad06b0c3bb7fa6755573e9ad feat(cli): expose delegate_task subagent model in the auxiliary-models picker 492a63f3cc24984c4d511fb578b61e3b58341a17 feat(delegation): durable retained subagents — registry, follow-up messaging, persisted usage attribution bc86426b51da15ff52a68ee41293da11fb444677 feat(curator): per-mutation audit ledger + single-edit rollback c66ef39bead8e258f12996fbd8a8dd169a9b680c fix(curator): abort rollback when safety snapshot fails 9d4ef04ed00055414c13fcf33925d85790221a3f fix(delegation): bind steering to session generation a94ebf5f5e4a5edb066d546bdce1a37f53bb3153 fix(delegation): harden steer lifecycle ownership 60e1f7517c94aed3b2ee6e8cc919ca541129705d fix(delegation): surface a child's undelivered steer instead of dropping it ee6b581e83044fae6db9ca9391ec26d1318b690e fix(delegation): honor pinned delegation.provider — no silent parent-fallback substitution 0b0154ffaa925d8fc42a58a80345efa2f51512f6 ci: treeless clone for lint-diff checkout 293c6ed7f6af1eade5d1e8022274a750ca889c86 ci: fold slice generation into detect + widen to 16 test slices 07c4e873d16de03c6fdfa034043ae1b59059ba6a fix(deps): ensure_dependency honors the lazy-install policy gate caf0f06199899265938046b54c803804c45a04f1 fix(web): gate keyboard-inset scroll pin on chat page visibility (salvage follow-up for #74579) d59be84459f3c0f61e68aa5f962c56ba70a79597 test: strengthen empty-response guard tests (salvage follow-up for #75115) bf80c3ce8800efa3b53739d3abc4440dd524862f fix(cli): mention /model reset in command help (salvage follow-up for #74899) b071f4b5b21fd3436d30555c1e4e876b794b24ca refactor(agent): move empty-response guard settings from env vars to config.yaml dc2b8a53d3954f5cfa1f42d3a5b0e24af80645d1 fix(agent): stop re-billing deterministic empty responses (NS-503) bae2bd2acf3c3fef0823824430194d77d49f8889 fix(i18n): add /model reset strings to all 16 non-English locale catalogs f94425e5864534b415cc067d10433f0c593d1ccd feat: /model reset — clear a session's model pin without losing history (NS-563) bc0961600b1291d21de260816148bc27ec839214 fix(status): strict writer-identity ownership for aggregated platform entries (OOF-3) 728267b83088c989f14166ed0783baf79495aa71 fix(status): freshness-filter aggregated per-profile platform entries (OOF-3) c0d6f5940294174d02bee1106039f03d3dfdccfa fix(status): aggregate independent per-profile gateway failures; harden key filter (OOF-3) 17a25e5b6751d13cee63d723ef4b3f5ed3c0eb9d fix(gateway): surface multiplex profile failures (OOF-3) e43a7b487d0643a46363e58088047b53247e985e fix(gateway): attribute scoped credential lock conflicts to the owning profile (OOF-3) 458cdf21441937090493cba88ac5c85b24b677f6 fix(web): keep the chat terminal input line above the mobile soft keyboard (NS-434) 6e9cae6ac4b41b5325d3ef8bdce5ed8e6fd9b28a fix(tests): resolve guard's production root via expanduser, immune to Path.home monkeypatches 19fc9c103e47a51875fe94a462afb9da259156a5 fix(tests): fail hard when pytest resolves the production state.db (live-DB isolation guard) c4aea323175e6dad1ed1294cb4193126405fcfe0 fix(db): never downgrade journal mode on a database with concurrent openers 70de958921eb1df77e403739c314f3cdecd65e0c fix(cron): lifecycle guard — never crash on binary referenced paths, stop matching lifecycle words inside SQL/text 863e31318553cda8ad61df681d08175364d4164b fix: close simplify-pass findings — scheduler sibling site + home-unresolvable totality c135b88d2df46aa869f607ff344032184f3ef670 fix: address 4-angle review findings on the guard-total change c8d48b8b138b0c38bb54a5815c692631afb6b267 fix(cron): make the lifecycle guard total — sanitize at ingestion, not per-syscall ea0d54db1d22416ea07cd98abfb5d6e160aa86c9 refactor: fold /simplify-code findings 10fb01e725bf251136891b283b0991d04aa374a4 fix: harden human-wait tracker from review findings 3305cfd2bbbde0cd6a907a4a2f263579ea019d22 fix(agent): measure batch-deadline exclusion at the human wait, not authorization-gate residency aaf9688519cca58dd5f76a589a0911aff269b060 refactor(gateway): extract the hygiene recovery gate and forward the failure reason 8f2712725af78c98c9ef7cdd447d14cb9348428d feat: /refine — run the memory/skill self-improvement review on demand 6518aa184edc81517fc0c36a22659fe846104c29 feat: /heartbeat — recurring session re-entry prompt fired when idle 6e041d524439b69ddfec73398816f8a7b01edfa0 feat(goals): quality gates — deterministic commands that must pass before /goal completes ff3793fdffb10b0e0b9a9b02e0c0d592e641bc4c fix(read_file): stop promising anydoc conversion in the tool schema ffdbc883eedfa06f22ddf2804dbfdb259da9805f fix(read_extract): cap anydoc input size before conversion 997a913a58dd4435516489f8fb97a25147ed8504 fix(read_extract): retry anydoc init after failure instead of sticky disable 01a1037d1e6d7b6eb96a786ef282c3aea4818194 chore: map contributor email for rille111 4e7e103ba6ddffc4e92c3f965c40c04ba46287af fix(gemini): interpose placeholder model turn between tool result and user text 0afeaaa0a11b00edb3bbedb41d1d105d6523a268 fix(gemini): prevent user message merge into adjacent function response 4e4c7c0b48578be59cd0137c0c63193784297073 fix: resolve semantic merge conflict — startHermes update-wait moved into runPrimaryBackendStartup (waitForLocalStart); drop duplicated waitForUpdateToFinish call, keep login-shell PATH merge before backend resolve 35f972978b6c9edcb9dd91d20a181946321a1ffe Merge remote-tracking branch 'origin/main' into cline-port/login-shell-path 169758d42f5e23eb2aefd26d890c75949b352d41 perf(tests): cut test_hermes_state.py 52s -> 10s — kill sleep throttle + per-row seeding be1740d11030fa5cfcb5803f01de9ded3ba6235e chore: revert incidental uv.lock churn (no dependency changes) b2598b41e1c918bba7478d7a56711ba738018d84 feat(read_file): widen document extraction to PDF/legacy Office/ODF/RTF/EPUB via optional anydoc 9baf92b7f31752aaea75a45ed8659c5b213c5958 test(search): update grep command mirrors to -rnHE for fidelity with production 7c6f9affd76d074eeedf6ad40f9409cf101c2080 fix(file): align grep fallback regex behavior 71f1b371c623e1886af19b0b40ee607dd53f3ec8 perf(ci): 12 test slices — cut the merge-gate critical path ~33% 9a9cf6ae83e99fcd383bf895519b9c5c980bb95d fix(cron): tolerate NUL bytes in referenced-script paths at os.open 5c5f1a6b7621d5bec0e01de13964c5a18f0a2105 chore: AUTHOR_MAP for @dromai (PR #42700 salvage) 03dc4aad52cfdc8138895277549e6a9216ffed4e fix: hide memory tool from cron agents ca120413fc092d0aaa4bc5d6140953dad21763ae fix(tests): forward HERMES_TEST_* knobs through the hermetic runner c0d974b19f52e4085485e74515908a169ee91e63 fix(gateway): escalate the session-hygiene compaction cooldown on repeat failures 43fc86562c7b3c1868b17448e4b0f218dac2b429 fix(utils): tighten create_mode semantics and close the yaml 0600 transit window 3556728a54707dcd5b1f86fac2c66dc79de12485 refactor(utils): move mode+owner preservation into atomic_write_text 4541d301818126d8d7df814245e856ff535d0eb6 fix(cli): keep newly created SOUL.md and distribution.yaml at 0644 c005546cbc4ce87df3cdee13815e5a21595075bd test(cli): skip the permission-preservation cases on Windows 67827dd99e5a90ae4c9fa92e2cc08474dfb30fda fix(cli): route the remaining destructive user-file rewrites through atomic writes 52a5fc0048ac434bb9674c36e621463d6f1dfc5b refactor(state): consolidate SQL LIKE escaping onto one shared helper 55e70f570e4711d2dc46089dbb991ec11142edf4 test(sessions): guard the Windows backslash child arm of _cwd_prefix_clause 4bab919446a1318c73d56fd1b725d83317d2d1c8 refactor(sessions): use _escape_like in _cwd_prefix_clause b37de01926bafb01f44aecad8d76ddd408677d08 fix(sessions): escape LIKE wildcards in the cwd-prefix clause 1d2dabce56cec1ddf31296b33bbb570e2c1736cc fix(sessions): escape LIKE wildcards in prune/archive substring filters 9ea01979dc00d3ed0b08977c28325e6c3ed592d0 chore: map contributor email for @sylbae 042a2cf3d70d456128eabd3f375c2f4c9d96d2e0 fix(agent): keep the start-order gate under the batch deadline and abort abandoned workers 5d83400f891c223350a1558420d23a387458d200 fix(agent): bound the concurrent start-order gate wait a88b76bf7dad81653486fd3afdf5cdf66442835e Merge pull request #79693 from kshitijk4poor/fix/79669-empty-fallback-deleted-heads 7112fbcbcf8fdcfaa1504a2109189aa70860e5b7 fix(nix): update electron sha 145e77731495cd0ff7799f58ecf2f7405eb96bf9 test(cron): close a blind spot in the kanban env drift guard 80f37e36eda72c612c1ad8a87cd528b1c46786ee fix(cron): don't let a cron job inherit a kanban worker's dispatcher identity 68ebb198c7a722193cd3b41d75d8bb5ab68da7a8 fix(gateway): don't claim deleted head chunks as delivered in the empty-fallback recovery 392e3a8c53bb8c679db13a0e6cfea389573ad46b fix(gateway): finish the split-delivery bug class so the fix cannot duplicate or still swallow a2ca5c2a7876c58eefa7e7d3647dae67cbab1c52 test(gateway): cover payload-less split-delivery final-send swallow c46027b049e175ad9263ed7be122cd26b2be1b45 fix(gateway): stop payload-less split delivery from swallowing finals bf68a554480ae5030710dd8dc7fa7e723afc851b feat: /refine — run the memory/skill self-improvement review on demand ba2ae963ac9229df933145841ac410c21855a56e feat: /heartbeat — recurring session re-entry prompt fired when idle 298378c29bd723cd1fd2636cac2aae3115018121 feat(goals): quality gates — deterministic commands that must pass before /goal completes d1f9e77755b019e3f02a5597c6c7335868cf3ae4 chore: map justin@actual.computer to somewheresy for #26491 salvage 5aa798fecca2dafde69dd7be1a8a17d286235a17 feat(skills): actual-setup optional skill + provider docs e79f16cab608bb6fa6000834f08ee947ccf1eafd feat(providers): env-var metadata, config-driven local no-auth, reasoning-effort clamp for Actual b6d55a790ee1c1eee155124d7db155757220bb68 fix: adapt Actual provider salvage to current main a9acb400ba061e1199ec4670d85848679b3f499f feat(providers): add Actual Computer inference provider 49e4e5e6917649f2c6816fb1aedd5234653744bc feat: Prime-Agent parity cluster — goal quality gates, /heartbeat, /refine 241605d1ea34aac28b67bb0701294574d2ebf79c fix(compression): durable-sync the prune runway on model switch + fast no-op for incapable stores 565b2c42eba3afc4bb4ed38371e15f25ff6cb8a4 refactor(state): extract shared model_config merge helper bf6a210ab99d3f4c366a7d35feff282cffbbf0d5 fix(cache): make proactive pruning durable and cache-aware ced8e302174c1ef393061a7a941f0607b6863ce2 feat(scripts): reproducible core-toolset A/B eval harness (toolperf_abeval) fb402106f8c3adb5a97592da0505212bc2238cc0 fix(dashboard): auto-reconnect the events WebSocket with backoff (supersedes #47876, #47921, #24315) (#79524) 6564f319a647b47de391cab2f608660323804a2b Merge pull request #69416 from afourniernv/feat/hermes-relay-install-activation-metrics edf0a7e14be69007346c522b0266ded9ad016ff4 Merge pull request #68978 from afourniernv/feat/hermes-relay-client-dimensions 0531aad55dbec9feca98ec48e14ce562d4e1e86b Merge pull request #68883 from afourniernv/feat/hermes-relay-skill-metrics 83990730890676e1e8217484488638312b52d810 feat(tools): register manage_tool_connections in the toolset 25c7827ec95c5f41cc90b1eeb147b92f0032ad3d fmt(js): `npm run fix` on merge (#79521) 69bedb7bed5859b9049739c8e06c608cfd532958 fix(desktop): stop reporting false failure on successful backend updates (#79513) 64646dda56fe7e446804320280734679633b126d Hermes can read the in-app browser (#79482) 28a3fe5c334db6708ba4f413dfb60f1e5424e689 Merge pull request #79507 from NousResearch/bb/remote-pdf-preview eb68ffbe4392c879b53fdc13f69bf5e2b2ca2adb fix(desktop): make remote backend updates terminal-state driven 950b55d4d7fe60071a873c01fef450e81c750b71 feat(update): emit an action-scoped terminal receipt from hermes update 9e9b3fc669d5cd49d706dc5fa32be4870692c976 fmt(js): `npm run fix` on merge (#79505) 7e16241825ef41ea1a505024b9d686ac7422bec0 feat(wake): hands-free wake word for remote desktop via client mic streaming (#79491) c8fdc51740864eb901e5d4f8d411293d58924840 fix(desktop): render remote PDFs in preview rail c6fe31a9becf6d19bb27592c30e772f9f9d242cc test(desktop): expect client_capture in wake.start/status params c8648278c38473e2dc2a79f2064c33b79d31ea42 In-app browser and previews are real layout-tree tabs (#77705) 4aeffb89c7ebb30e97a1c82b55852935c7d0a87a fix(desktop): open remote file rows in the in-app preview (#79494) 18ed612e5cd445a47aa55f68af68675688036961 fmt(js): `npm run fix` on merge (#79496) 7c33b806a1a4ad25e97ad719ad59f95d5eaca08e chore: fix import order, map contributor email 17a5a9587119eabc4bc5d925d4e730de5ea2066c fix(desktop): open remote file rows in the in-app preview 069551d19bc572744ed570dc51b82ee4b0efb6c8 fix(desktop): preview remote HTML over SSH (#76008) dfc1cbebbd076c7edde2a6eac4b501bafa0457af docs(config): document wake_word.capture in cli-config.yaml.example 6df3912e0a70db08deffb35ef0b5db79d6564dbd perf(desktop): coalesce wake.feed frames 60808dcf724962f2fca265c65723ec3958d31e21 fix(wake): auto capture keeps the backend mic when one exists d401c27edf1918885b5474e51808bb3d3a9d4e88 fix(wake): address review on client-capture re-arm and feed queue 105fbf6b7df3e7a35bd661491caf5c431f3f39b0 feat(wake): client-capture wake word for remote desktop cc245e84d2c6cf74b972da9abfdd7a79b50313ed fix: correct cron mid-run restart claim in salvaged docs 2183ed392137dec8d5198d681fd741424a406cbd docs: fix stale PATH location in windows-native common pitfalls 7ce6f9794578793d24a0566e9c0336f20a99af73 docs: explain the slow silent first turn (prefill) on local hardware f8aed15cb19dfc11a1ef6ba4ec130f111676dcd6 docs: warn against pointing two agents at one Hermes home (memory, profiles, FAQ) a5ab9b2e5acd2eca9395a9e7960b6c4ad595d132 docs: add troubleshooting checklist for perceived agent-quality regressions 8618eba7c8dc0d57ef9669a7a3f428cd7a33cb90 docs: add security-posture guide for running Hermes on a personal or work machine 6cd0aca48cac1d1a451d14d8527501bc0551ec35 docs: surface existing answers users can't find (migration, prompt-size, tool-call parsing, Desktop label) e20cfd35e006ba95b9f6aa0ad2b5ccb09134258f docs: four small accuracy fixes 8cc4ff249e861c72cff87b49535f2e40a64fd58f docs: add per-plan subscription billing table to providers page abaa43ed7c442ea6dc006994b5d56aa9c2d27222 docs: add 'Which File Does What?' - one-page map of SOUL/USER/MEMORY/AGENTS b4312f92c6f1ab34a9b0cab0533ffba1ba6a694d docs: state the /goal vs Kanban boundary on both pages acb590fc4aa1ae6336e799b498f364ccb964e26e fix(nix): fix electron headers sha b27cdc38242b810e37ce41884acb93b0f525f093 feat(nix): desktop app icon eea60440983e5a045b449c46af6ad1a480d8cfd6 feat(desktop): register a Linux launcher entry for `hermes desktop` b879df27fb9f00679cd8b846f7b99bb10fd13e64 fix(desktop): worktree dialog names the project, not the branch cb7f594be893170375fdb2fe6c8ffd98fce77f4a feat(desktop): let convert-a-branch reach remote branches too b818c427c83048570a788e6f5ce21db67bf5ccc3 fix(desktop): mount one worktree dialog instead of one per composer b846f0c0024f1933887efaee3e5d6ee49c8d65ba fix(desktop): stop dialogs clipping popovers opened inside them ee7c614eefcaaec1c8caeda65533eb3d9a35507f fix(ci): follow artifact download redirect without auth 1d7d0e41af32d3d99f96967126260acdc90d74c3 ci: poll review statuses from artifacts every cycle 949babd08318cdad7f32485a55d66a108b725186 ci: add detailed logging to live comment poller 49d8a155c4d107210064c285b00ca1c94bd77691 fix(terminal): skip binary content on the referenced-script remote-read fallback (#77703) ae6c2e57e12b2f320175e3b9bb1bc13c3402255e Merge pull request #78682 from NousResearch/bb/win-8dot3-profile-paths 9b3c42329c9e2229e84ff38c4fa6204a6fb0d983 fix(ci): place the resource overlay over the profiled window, not the job 979b9bf7b6ff6dcb59fa83e1ec35676c55e84288 feat(ci): overlay cpu/ram/disk sparklines on the timing report gantt 1be70d63548845eb8918c08ed698cda0674cf9a7 fix: join heartbeat thread in finally + add error-path test 62800ddadba390e87816a9d5188152d6eb9c2be1 docs(delegation): note in-flight model waits count as progress d55bc063f1d903c16f943d7ae7ebc8160454c359 fix(delegation): keep subagents alive during slow model waits 84e93ffefba3961d3ac56179684e7b5a88b92d3e fix(state): stop delegate/tool children corrupting compression lineage 2b2c1d9b3a80353c4666c53e06f3ae866a8e3d07 fix(dev-sandbox): force-copy fixtures onto a persistent sandbox's root 82c6acae6fb98446ec61c65986ad58406ca6791c chore: add contributor mapping for burak33bb c4f3d5a3137f95a71ce2bca4f9b805cfad721cee fix(agent): prevent historical steer replay 34c3f06f9116329f4bd60d2be70f12df3e57eb39 fix(cache): scope prompt_cache_key by session to stop cross-session bucket sharing 22210107177b63428ef2a8a3a58d2f0eb6566ed6 fmt(js): `npm run fix` on merge (#79155) 530d8148aa2f2d7111729d512e39d9e1570e82ce fix(desktop): scope restored navigation by profile (#67709) a6e1e270b1103cc026275419a21ba9b5f581f96b refactor: trim verbose comments + drop redundant default_flow_style kwarg 63c0bb694e0c8495d9e3cb2413a55f712e538a1d fix(cli): correct the skin_cmd fallback comment to match the actual read path 649ce1f811332862b9eeec4aac9e82fb130c744e fix(cli): make profile.yaml and skin writes atomic to stop silent field loss 652ebc58995d7dc351f5246e2c6646bea24bd17a fix(console): handle string SystemExit code in _capture_output d96a7f98a8c37d94fa3c1a9a64465e64dc9b4c6b test(install-e2e): assert a real chat round-trip, not just --version d408e6b6c39cb94a0b8fc4d745014a198faed992 refactor(e2e): extract shared mock inference server 16f88e178c01c9b19a3f750dcea0a38eeaf48b01 ci: shadow the install/update e2e on ARC runners, non-blocking c0bd7fca6816f87d9241838e8134b91a04e51bd1 test: deflake hindsight prefetch op-completion tests 1c6e521d69820863c180134dd77705cd52b6901a test: deflake command stt/tts idle-timeout tests 5a9788babeb1564904f85151692d49f66c82028d ci: add newci-* shadow workflows on GKE self-hosted runners aec331899e4748739927fddf02a54327e64419a0 chore: suppress windows-footgun false positive on gated killpg 42e92c9c09ea0490dcd20c9ac8144333efc6f008 fix(git): kill the whole probe process tree on timeout (port of openai/codex#36793) 535a59c5c0d8703924932a7b457b46e5006c6bfb docs(observability): clarify active profile identity 806c2b1fdcd16c184acf1fdd1ebb8aeb08b9f80f Merge updated client resource metrics into active-install metrics e7eaae2bd37811eda7a10bbe347dd3aad261ac2e Merge latest skill metrics into client resource metrics 451a078a502ebeff350c237a3fb86d6d8e638e96 Merge latest origin/main into skill metrics 06808417975df93354bdf5aaa355fd7bdccea4ef Merge updated skill metrics into client resource metrics 334c02b77e2ff90603b1860f84167f05a57111ac test(observability): exercise the active worktree in metrics smoke 36cb5ae5530a75def7df3195e49b7a4aa2add482 ci: test updating from sampled release tags, on tag + every 12h 3d9ec4d62edcc0361edb8d9bddbe57ed0f398d02 test(install): prove updating from a release reaches this commit 84874c58a5f9fe8117ce4890629d44e7c11e3315 feat(dev-sandbox): support fake installer / fake main / git clones 34833303f55984a3ad96baeca47b227f4aadc8ff ci(install): actually run the PowerShell installer tests dae7e5477e39a4c59e14208c66ab2c09b6a418fb test(install): exercise 8.3 normalization by running install.ps1, not by parsing it 9621f903254db25f2c98dd5130043b6852c0026b fix(install): resolve 8.3 profile aliases so a built desktop app stops reporting failure c85d9318dd49584013a0ca931900bf990ec1b6a5 feat(tools): manage_tool_connections — let the model mint and check app connections fdc342c082c837847ca8de4a77d489f36a4af354 fix(models): a model id missing its vendor prefix says so instead of 404ing (#78909) ee7be1a66dddf9cd5cba2e664293d8093a849203 docs: reconcile the contract and wayfinders with what actually shipped 2b56c8c07df2055edfaa600a372c185b2ff344d2 fix(tests): stop the tool-provider test file leaking stub modules into the suite bcdd412da33e5fd30e45ac17d251bfef7a9df58e fix(capabilities): scrub the vendor from category, not just description dbd9d58ed0d524af701640d7c53b8c95a7917934 feat(capabilities): scope UI read-back, vendor scrub, and the /mcp redirect b667e3b635c94f3707997925ce3c81c841865031 test(e2e): hermes integration harness — bridge, dashboard, and full-story probes 43717123ca1566a073270c5a61431e2e0e4a0211 fix(models): a model id missing its vendor prefix says so instead of 404ing (#78856) 0a48af25bb22d569d84d35ba4d73f4934a5943ec Merge pull request #78812 from NousResearch/bb/profile-share ec9572f876b2a67e94fdd383453cc281122b344d Merge pull request #78854 from NousResearch/bb/session-move-project 0106844c9b9cc4427bcd309be53d18e5d4deabb5 Merge pull request #78849 from NousResearch/bb/multi-tab-drag 1d6606d2cff6e1db0a8bd1b86be25e1fb563b512 fix(profiles): exported archives open in Finder (GNU tar, not PAX) edae3eed10dcdc1ba498b8dae95315e88265d9c0 feat(desktop): move a session to another project from its row menu 28b3b0dd1c7bd42b22895b2594f19f0e8c860b2e feat(gateway): session.workspace.move — re-home a stored session's workspace d98287fe3c8443f63e0e88230a7f5b240d828021 Merge pull request #78831 from NousResearch/bb/session-read-state 33c1d1f2669597feda55deed6b899f39ba312704 feat(desktop): shift-click and opt-click select tabs to drag together cc8e97499caba1ae037ed554e1094258c6f072a8 feat(desktop): the layout tree moves a tab block as one unit f40fbcf40917fbdd1b5918b15eaa80baf5c85e1a Merge pull request #68882 from afourniernv/feat/hermes-relay-tool-metrics ec0c8d9c2064ad2fbc711d5fbef7ad0efba88768 feat(state): sessions carry read/unread state b3e45a3d46ce1af52a267cc3aaa3cb6c4f52d1e8 Discord drops an empty outbound message instead of sending it (#78815) 44897dd6f003da95bcc46f88a84e4a6cbf7ea65c Merge origin/main into feat/hermes-relay-client-dimensions 6e7eafc7e84421dee860c61c38be02fedfecc005 feat(desktop): share a profile as a portable bundle - theme, layout, skills bde8c4e1083cabe65fc2868ea5e2321301418a96 feat(cli): /export and /import slash commands for profile sharing d1196750c0cc7a896affdf7743a7888a35d199e9 feat(profiles): REST export/import + extra_files overlay hook 9712b8f0cc7112ced7d38ce789103c7090508c3d test: teach the hand-rolled fake pools the failure_reason kwarg 9cd0338688e0ecacec464587f4399f672b0be21b fix(credential-pool): bench a billing 403 fully, even as the sole key d1eb08fcf3a22c9345a1adeaa63812a2cde7f32d fix: thread sole_credential into next_available_at sibling site dcd750434958d9ba55cb9c70567a17540c39f77c fix(credential-pool): short cooldown for sole credential on transient throttle b281b2c87bcd1968d14aaff303dbc7608279ef9c Merge pull request #78683 from NousResearch/bb/55191-transcript-window 97641a820dbdde5120f572a0c7789c6bd7f9bd52 fix(debug): say where a client-side log lives instead of "(file not found)" (#78687) 2d70f56327ff6d138a7f344fe0ac1f56e8bcc80a fix(agent): adopt .env credential/base-url edits at the turn boundary (#67843) 6acae30751d179f32c2f38208e6d15bcb9d072e5 feat(desktop): ctx.os — plugins get a curated door to native notifications, links, files, and clipboard (#78685) be55e99cbc60d35e086f0db2c90f54d88592c0ad Merge pull request #78679 from NousResearch/bb/tab-keys-leave-pages fe859a1f55ac8487bd3f7dde86514607b1570c0c fix(credential-pool): clear exhaustion state on key rotation (#22622) e8ccb4a2eae185cee8bf305a0d034de0c2d2239c feat(desktop): ctx.os — the curated OS door for plugins 62012a5362f60c15d04a0c57839a15f1ac66d3de feat(desktop): Show earlier pages the DOM, then pulls older history from the store a538b1c989bcb81e38cefb75ff256be8c74d291e fix(desktop): bound the transcript reaching assistant-ui by render cost (#55191) 1ed702be73e40c437f151b6fb7fba6191a3e6d13 refactor(desktop): share render weight between the two transcript budgets 5d24594ab34de8223eafd503dec4b6a250fa0e4a feat(desktop): expose native OS notifications to plugins via ctx.notifyNative 91337e5789c4ab1e67c2993b843459828b67a18a fix(desktop): ⌘1 / ⌃Tab return to the chat from a full-page view ceede989e3267c8ae5b99b5745abf7f57f61febb feat(skills): add document-to-action-items d74f7e8bd2d6d0adda483b5c349b81b11f5638bf feat(skills): add email-inbox-triage 7d72a2b13c06977d8b68302b5768a8fe75309ea0 feat(skills): add github-issue-to-pr a133b96c1d65b810ed64f9c3fa1a95f9edefd5ea feat(skills): add google-workspace-daily-brief d71a0dba5b4ef3d73a8dd702a8365de8d62f006a feat(skills): add meeting-action-items bf8ab21e74fda79e51d369d53dd91d4d46c3825a feat(skills): add product-price-monitor 353bb9763abb60b58a53f0df9ccfb00d45725070 feat(skills): add social-media-content-calendar 1eb00969f6f24f2cf431a465fd768cddfcd5aa16 feat(skills): add weekly-review-planning 193d6ae91c0574f5d68237d40dc2c2c797f20f9a feat(skills): add competitor-news-monitor d20debd4460f8ac2bfaf32fe0ec9b562308d2852 Merge updated tool metrics into skill metrics daf67f2e599187e65d225b512f7807fae0234702 Merge branch 'main' into feat/hermes-relay-tool-metrics 3fa318a50c02df8dbd2c55499f5f73d51ad77188 Merge pull request #68881 from afourniernv/feat/hermes-relay-model-metrics 5943bab1ec8d4d6425d232e28f24eb30bf7801f5 Merge branch 'main' into feat/hermes-relay-model-metrics 344fd3c0bc58e74cd12ecfa585c20f8c0ac109ff docs: wayfinder — transcripts moved to committed location 51ba5b1511ff72ea82d8b5f918e44534d9a4711c docs: wayfinder — transcripts moved to committed location 42708f8bb39c9c2fc19146956699699bc3ea2da5 Merge pull request #74864 from bbednarski9/fix/relay-concurrent-turn-scopes e6977f41bc4625c101f06791011cb44a66952edf test(model-switch): cover Ollama context_length models dict probing f66319097e363dd86d30694ffbdc6bde4b1bdf7d fix(model-switch): treat models dict as metadata, not allowlist a9f01093b1ece61503612032ba1b9a1178354be1 feat(dashboard): render server top-100 toolkit catalog 301795183763a70f673d798844294952237eda25 feat(dashboard): render server top-100 toolkit catalog 80c7ccf4a6f635d7c90ae4124cb1984a59c2b92c fix(relay): gate skipped task completion f5be9236e00ddf2f2a412697f267078fc4ee068e refactor(xai): simplify _xai_prefers_native_web_search to use registry 29eba9cb08cada9d40db057b5ec804c333aaaa22 test(xai): cover Firecrawl vs native web_search on Responses d2772b4206a0243202dadd0c62ba94441b01353f fix(xai): honor configured web search backend on Responses path b8b17b8cee50b85adb7fba6ea332dc06731b86f4 fix: wire HermesConsoleModal WS into stale-token reload guard 19e697d9c32f1af7afa52939c14a3056914adb42 fix: update ChatPage test import for react-router v7 cab8673ea69ef664235796bae0b8de35fb18d421 fix(dashboard): reload loopback tabs after stale session-token closes 3aeff239bfc49a5e025eb05fb6fd3a724104a1d6 Merge pull request #78362 from kshitijk4poor/chore/attrib-junhohong e9a8b70fc4fe1dded5e033350e2316493bfdffc2 chore: map jun@junho.co to junhohong e05eba26a3af1313d304799ffb85a11b8c2b0988 fix(telegram+sqlite): resolve polling conflict loop + misleading WAL warning 1709f82c1533009670a2bd7c545b08680da226ad chore: remove dead tomli dependency declaration 622b9a9f9f2e9b43111255084a41754cd697d589 chore: update uv.lock for tomli dependency (rebase fix) 8c19e29259db433c5633214572648b4cb7b243c3 refactor(file-ops): fold simplify-pass findings fcae5ad49a3e68f9cae959add21803160f91185d fix(file-ops): surrogatepass in bytes_written encode (review finding) eb78ab235f1d61c3a66387cde8d78cb7263e4184 fix(file-ops): decouple BOM detection from pre_content, add V4A backward compat cb3e8e9fb1ce15abbf065144c1d30ccac603643b perf(file-ops): eliminate redundant subprocess calls in write_file and V4A patch path b1454e2ab6f11d0eef976e0176cb784bb9c3bf01 docs: wayfinder for tool-provider bridge branch a9b537a679bbbc5e01ffd26089afd3fcb8548636 docs: wayfinder for tool-provider bridge branch 3fd13ff99c27e3af1d388392a09f2d06d8b13167 feat(dashboard): Capabilities page — toolkit control plane + MCP folded in c69b5648aba75ef8c87f65e2333ab8108bfd1576 feat(dashboard): Capabilities page — toolkit control plane + MCP folded in 1f920e621c8a24a812f8b54a8bff01c61bee2647 feat(tool-provider): bridge fan-out, app_connections tool, session-init auth injection 0776fe41128e2cb4c484a1aae33abce69069e62d feat(tool-provider): bridge fan-out, app_connections tool, session-init auth injection 4075c8fd5ade673c93f757903b003ddc52603577 fix(credential-pool): lock the quarantine read-modify-write of _entries db0bd42119ae41e33b120aaecae89955f0898c24 fix(credential-pool): re-select in acquire_lease after a deferred refresh fb4e17b1ea50d92f4f5dbba99347b1b0b18ef544 fix(test): feed the SSE writers an asyncio queue, not queue.Queue 7e344dc0dc726db113e6c72df608e1142c3966bb test: exercise the production _loop_ref path in put_threadsafe tests 64882bc68439ca9aaf012f0b1c95174945c8eb11 perf(tui): bound reasoning-clean input to the displayed tail 98165daacb2058ca6e81acca8d05d385096f8077 fix: reconstruct fused test after conflict resolution fc8e3936a6a27d30d77f22fbeb14644ca3c4f071 test: add cross-thread put_threadsafe + long-reasoning tail tests 221afc0cb066fe175d17e4ce31dca32c802e59b2 refactor(gateway): route session event stream through _sse_frame (ensure_ascii=False) 1a09b07253606419f542dad4bf1a50255f749719 refactor(gateway): route all three SSE writers through _sse_frame() 7a1f2e3a668599c6e66ed533528b1927887861a7 refactor(gateway): extract _sse_frame() helper, dedup 5 inline SSE encode call sites 7098862deaffa90cc57f9d36ce9ecfbb890143ac perf(gateway): replace SSE poll loop with call_soon_threadsafe-fed asyncio.Queue 9076adaca58b3c3b1839c42228f97410ddb43722 fmt(js): `npm run fix` on merge (#78271) be54f28b16906f4153f618eeb4369495667af7ce test(desktop): cover minimized/hidden window-state + visibilitychange pause for GlyphSpinner 9a20d7f6805fb0124d5e691d468817b1efbf7433 perf(desktop): keep spinner frames out of React commits 8f52040dd086a427ed9f62c37ac4b5c3862130c1 test(cli): regression tests pinning auth-first ordering skips registry sweep dbafb59227ceba22ef1e46214618e85b9c7d1aa6 perf(cli): check local auth.json/config before slow provider registry sweep 5c078b987e972636c47a01dce00d353682936888 test(tui): pin picker-cache prewarm wiring in entry.main() bdc82e39e983b4c5c75f2b4a946e6971c78a40a7 perf(gateway): prewarm /model picker cache on TUI startup 9ce917f8a96890f42fadbd9fb87e673d4eb54adf chore(ci): rerun checks 743dc94ab90adb0529bb233b8498c6fd6ee0e020 chore: AUTHOR_MAP — add BobClawblaw for PR #77870 salvage 9fc8926975a36c84b7ee1f835612e23d60564396 perf: reuse request_input_estimate instead of recomputing estimate_request_tokens_rough 78c8bcd1225d776e469c1e8930b7a080b507a3b0 chore: drop CHANGELOG.md and docs/reports/ — not shipped with salvage PRs 04098e2b5f98d7f475a6f3afa14e9b773d952de8 fix(conversation_loop): prune dead vision-strip fallback; harden output-cap retry tests 9938d2050338825a7ead49b5a27e2151a44fe743 fix(conversation_loop): compress messages on output-cap retry path (#55546) 15d51bb88a1024127cf3719620c9bb11d3a3b4bd refactor: dedup stale-marker regex — use compiled _STALE_MARKER_RE in conversation_loop e18c040c3d343d869a39f6fd38498e022bd9ae64 fix(cli): back up state.db before clean-markers writes by default e1a2739692dfaf3377d9c53521a518e879949997 feat(cli): add sessions clean-markers to permanently purge stale tool-call markers (#78148) 70d7e4cbdfd817e845636ba0ef1406e1ad03269d fix(agent): repair sessions already contaminated with stale tool-call markers (#78148) ba9068c8b6e46e70851e9fb95a093649348bb26d fix(agent): discard bare tool-call marker before fallback/persistence (#78148) e623432b8921ef8f909a96f2e8aded2fb8cd7464 fix: close the Codex app-server session on agent teardown 9c88625e25c9ca5debce728b9360c32f1acd1210 fix(gateway): bound go_dormant ws.close with teardown timeout 3b0bb3b8bb6f0125b1bf000fcade334af01694a1 fix(gateway): keep event loop alive during /compress and Relay drain e4888a9f21f1cb97eef66c2dee74dc8364babeea Merge pull request #78226 from kshitijk4poor/chore-razmus-email f66d625825dbad3168ef7898213e8e38ce3b70b7 chore: add contributor email mapping for johnrazmus 60c721ada68f0432a1ba6d37f2889a00d01ad38a fix(model_metadata): read llama.cpp context from meta.n_ctx + accept sole model 942ff91f21a3972e5bf208979c839b0728892c98 test(gateway): cover named-custom context pin on session-info banner 3a0a2951099d742a13846eae5e6ffd6bab3e0af4 fix(agent): keep context_length pin for named custom providers d2184961137dce23c92dc587040ce652be6dcb61 Merge pull request #77924 from kshitijk4poor/chore/author-map-elsnacko bbe4c26465f04ff554b1dc175bd764d3ec7b3474 ci: test updating from sampled release tags, on tag + every 12h 303c77f8789914b2ebc989e0e21ab67d1756a8b8 test(install): prove updating from a release reaches this commit 11a12f7965242b4fcfcfde9735adefbb80516ef9 feat(dev-sandbox): install as a normal user, off Nix, from any ref 86bc2f9abc4a1de2773e621b7b0604a6999da7e0 chore(deps): bump undici from 7.28.0 to 7.29.0 in /website f806fd4aa2de8802fa25a8b97708120503d2d3c6 chore(deps): bump postcss from 8.5.19 to 8.5.25 in /website 29c1ca0012c2cc78b491afcfbebfd97d40c48267 chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /website 70db671fac918ee62203f9ce16d5545f7fd3a760 Merge pull request #76643 from NousResearch/fix/termux-nemo-relay 91937a6dc3ffbbe2f3be91a500f0ecf962c4cf53 test: swap context-switch-guard fixture off qwen3.8-max-preview 3c3ae7428dca9693dfea59f5756bf8602225cbde feat(models): add qwen3.8-max to Nous portal + OpenRouter catalogs, replacing qwen3.7-max e3555123797fecdbeb2d582de3cb83aa7a460b6a feat(terminal): interpret signal-termination exit codes for the model dac4bbea09a342879d9769d6a5357b12b84b936c fix comment about relay workaround 244b6fdb55064aaa3c81cf169d68f1f61b60f080 fix(imports): keep `import gateway` free of httpx via lazy AuxiliaryExplicitCancellation import e1caa611bf034edfe85f89a41628140e05e1b11c fix(relay): preserve skipped turn context 2e65b0c60447182c1f800e4c88dd02ea75abc044 test(relay): enforce LIFO in overlap regression a2a08fe1475e3fdefe023bf7ffe6801597485010 fix(relay): gate skipped turn metrics 704baa5c3365139e7599e89b4e463af0c4984e38 fix(relay): preserve legacy turn shims 9a9b670e29f592fdf50bcca1e3e777150522b6b5 fix(relay): avoid concurrent turn scope corruption a991dfc25daf68994c21d6adcdfbafb1b3dc23cf docs: document /personality none|default|neutral reset across personality docs 8a3ae1a98f7671f075aaa12dee2f9eeac56e44cf fix(skills): sweep writable mode on the origin-hash fast path 52373bcdb2dde5ed763372c7b937bb19f54a6bcb fix(skills_sync): keep bundled skill copies writable on Nix store 0845232d764617129d6c6c21a5d9be62dcc05d44 fix: prefer explicit anthropic api key 827bb0dd16d3619261e69136378f7c65c670a939 chore: add contributor email mapping for ElSnacko aad8f7412c7ae091b4cb6f2e1cb839c364342c5e fix(backup): serialize and atomically publish snapshots 215967f5e6eacd235ab68b3917171f60605b69e2 ci: don't *2 cpus for parallel test jobs. 53cc628045669b6ad60e3c3cab3b1ba19e3e5837 Merge pull request #77912 from kshitijk4poor/chore-haowang-email f40d63d5db421e95152237207834d13a9c75e1e0 chore: add contributor email mapping for HAOWANG116 d92a28dd34bb254227d62eab3c1fe81f236b1f0e Merge pull request #77902 from kshitijk4poor/chore-zabih-email 164c3d60b2384fc8b247feb674da8434e418b815 chore: add contributor email mapping for zabih-sudo efbfe0842fb99b93f37546cce406307c0f5eaec0 fix(prompt_size): search volatile tier for skills block after the stable->volatile move 9555525a7d55f18af7014a6b38aa29bca4e63c7c docs(system_prompt): fix stale reconstruct_static_prefix docstring example 9b9cbdd7eb05f8d432b55276dfaeba857839d6a6 fix(system_prompt): move skills index to the volatile band cdcd79b4a70fc84d0bf6c449b5062139ad4fd5ad docs(skills): document desktop trace logging + nixos cdp launch 86b8fc2651bac217fd1459eb4530075a9c9cf6ed fix(nix): fix npm run dev on NixOS 7eefb093146274526bf4378605fcf1fdc72a7fdf fix(nix): tie devShell's HERMES_PYTHON to the venv actually on PATH ddae511ab1bdf404d3294045aebb1faabd630856 fix: thread extra_headers through the call_llm split 23f8ae32c0aad2de5ec070c9362d1acdca6d858b fix(agent): cap auxiliary LLM concurrency per task 00475e1b26fcc8a2a0871a681dcfbaa602b6dd98 fix(catalog): validate http+api_key manifests declare the header's env key f8f475569f4f5ecfd447d2c554a3db17bd3ed8a5 perf(compressor): release allocator pages after successful compaction 861ca18c672fb83aaffd5c91d830194ca6f44891 fix(catalog): wire api_key auth headers for http MCP servers df9dbba2ba5deda7a294dae3e213ab4d62c1a294 fix(backoff): keep 60s first-hit cooldown, escalate only on consecutive rate-limits 9267c7823c382ae5fc1d6fb67dc4be3d7c8792c2 fix: exponential backoff for rate-limit fallback cooldown a7ad713f4335d94241fed2867ad14ff7f0810786 fix(tool-executor): unpack 5-tuple runnable_calls in _max_workers_for_tool_batch 952d86b7972e5744d3599e116727b1d2762086a7 fix(file-sync): serialize concurrent sync cycles c0b0cc39256eac041790db305b29e4cca48290ec feat(image): parallelize image_generate batches b2ede3eb9b7c1fd0bdb0637f9cf8431e706ea0a8 feat(desktop): forward renderer console.* to desktop.log 5503eff8b05ca621265a94fd3b1792b1f5b01cea feat(desktop): add debug trace instrumentation e6f1d613b683802c6fe7a7d5155fa07724dd4f02 fix(discord): leave voice channels before cancelling the bot task d1c6c6b58e87d132f7370333e92899205d6232bf perf(moa): cache resolved preset + per-slot runtime to cut cold-start latency (#66793) f03eb252cb6a9d50a3ee3afa7ab8c005180ec798 Merge pull request #77867 from kshitijk4poor/chore-ahmett-email 376370691dc0034e86cfc16978b14649f4517856 chore: add contributor email mapping for Ahmett101 0b4b5416722f83e5b7799adbbf07b12e4ff03a2b feat(desktop): ship sourcemaps for renderer + electron main/preload 3c27eb6234bf91b8ceee9e9071591b31e9b148cb chore: release v0.20.0 (2026.8.3) 1f8acb340f9c72aec1426248cca54139816a77f5 fix(agent): stop re-probing endpoints that blackhole TCP connects 2f09df5615a09d42506795823fdac436830c787d fix(relay): route Discord tool-progress into the auto-thread, not the parent channel (#77830) 003b4c8893245ed96fef8b344c9e89c3e218cd3e perf(gateway): per-platform skip_context_files to cut agent build latency 0bb14627b8909a6b7275eb007ab5692a07c8036c test: harden cold-start regression tests + debug-log the env-var skip 25a9c2c245d75c7582633275dcc6133e6c82c1f0 perf(cold-start): mitigate ~14s GIL stall during backend init (#60800) 733e7d26c0898b366768e620b2bee621e05bb438 fix(model_metadata): guard _localhost_to_ipv4 against non-string urls fc32a38c3a6d6361e9a4385449cc782944e61320 fix(model_metadata): rewrite localhost->IPv4 for the remaining local probe sites d5584a32d883effda949e0062f7c4dfb1e7999f3 Merge pull request #77821 from kshitijk4poor/chore-archer-email d48a78a293de3354d6f099c4aee17d6aac07d72e chore: add contributor email mapping for ArcherQAQ 67d4bbb812cca491cde220b1e571cbaecc412681 fix(state): route session-resume reads through the WAL read-only connection 177002838b2ec606fbd051541c1e5ceb40859b82 ci: retry uv python install 128ca2efd559042116abd818455f31b0d6c90292 perf(tui): memoize useSessionLifecycle return (idea from #38491) a8907014b3ae42789d3f5a87ab02c04c3cc5bc7e feat(dev-sandbox): support fake installer / fake main / git clones 5bff3984bebe12fa8d3c74ad5fa873e5328760a3 fix(tests): update two more append_message.call_args assertions to append_messages_batch da6d9604ddd76a12b8aec934152092c2a32beffb refactor(state): fold simplify findings — reuse _insert_message_rows, share guards, chunk seeds 84146fb9c6858c3ec9642743ac5852b796ff05d0 test(run-agent): update flush-path fakes and assertions for batched writes b58b3adb9beefce2dd5bed5106a7476743c2f111 perf(tui-gateway): batch branch-seed history copies (whole-bug-class) 06ae5b6faa4695405d2e7ec4e5ca5540900f8b38 perf(state): batch the turn flush into one SQLite transaction 5bbd0dbd86bc5e45433ae4deade8ecaff61e937b fix(context): dedupe subdirectory hints by content digest and skip backup/vendor dirs fe4cf36c2ca865eb8a138173bfd9c696b0a63aad Merge pull request #77796 from kshitijk4poor/chore/attrib-cicav 58286878efaf95d5a5b74882c090dcd90a934626 fix(tui): avoid writable Kanban opens on empty polls 26133b534152a5faa088e653a507fdaa8092a408 chore: map cicav legacy noreply email 7d066c3c56aece0b8fe4400edfa384b94f966428 fix(state): deduplicate session system prompts 41cc4a13fe8494652451225cdc6af3c279de3543 fix(openviking): catch endpoint errors in setup validation functions a49a9e5e379e6a64f66063c86aa3d9be1a6ca7fd fix(openviking): verify servers before sending credentials e443d327181a4dd2eb4dd7db0b410e9cd7b3b4a9 test(retaindb): guard scoped secret config resolution 8fb9c3b3e37321672feecafdc46f4bd74aa769ec chore(contributors): map OpenViking source authors e43bc0b7aa5c0a3cb97249eb80e4b54db1929848 fix(openviking): integrate reliability and configuration hardening 4b5794320a33d05eda333ac3fa85c0e5bcfe4ef7 test(openviking): cover config.yaml recall settings with temp-HERMES_HOME tests 4ebe9904f88b620c3bac6f724242ae88c8a35fe2 fix(openviking): read recall settings from config.yaml first, env vars as fallback 5396dd8f02ac109d371e57966b858e88eb2e0a8a fix(memory): read non-secret provider config from config.yaml for OpenViking and RetainDB f94914f7730327f0ad39f0c0168dcee903f5bb8e test(openviking): cover the compression lifecycle, not a hand-set latch f0cb219e5e8d36419e7fa6b7004450e8a06204b7 fix(openviking): re-arm the commit guard after in-place compression 9014aa02637f9061dd85e84574e91680506e2081 fix(openviking): drop stale "disabled for this Hermes run" warnings a3f6953f1a9accf2445dea5af4cad05c285ef430 fix(openviking): don't spawn a second server onto a live port 65bcca650bad95671d1b1d5a4c744a3aa057033d fix(openviking): fail closed on blocked endpoints c7fd21add3dfc5d0151dc818f389af1760e5b742 fix(security): reject always-blocked OpenViking endpoints ae17163e928d5fb3853b887e7aa745cab0966caf refactor(state): drop unreachable regex guard in trigger migration b66111fc58275850e18ae023777de6a20babab42 fix(state): quarantine CJK when ensure soft-fails after OF migration a5ce909bbaf43eb3ea7e8703f4cd8dbce204711e fix(state): fail closed on CJK trigger migration dab7c8860400b4290e331b4ae5693cd4ac0524c0 fix(state): narrow FTS UPDATE triggers with AFTER UPDATE OF + migration 9d76d48d0a52a54496e6a6f00ad3c19128aea1bf fix(lint): import sort + eslint-disable for timer-handle ref clear in effect aece98c5f35b03fc7ea58f3e051e7d96c77c2ca8 refactor(desktop): shared pulse beat + fully-gated cron peek (simplify folds) e2a2149df46dfff780bce30df803bf0e9a7b16fd style(desktop): restore alphabetical import order in agents/index.tsx 52fb96de4b4a8fa48dfa19d566a8bf14a6b26bf4 perf(desktop): pause hidden-pane timers in agents view, cron sidebar, and floating pet 7700597a17079c9f638f7359062a35d95fd7e16e perf(desktop): stop scroll and status loops in busy sessions 416b56b7ebf37c64e68939216cbab654bde08c87 fix(desktop): flush queued deltas on window focus 7026177b30afa7040ad7129d8df6362c7e4ae71e test(session): guard config-gated performance PRAGMAs across all connection types 3ac71680a3bcd86d945bb93e215a18518bd45c01 fix(pr): remove remnant local PRAGMAs from PR branch eaf4d5184072b2e584c38cc4baf2673bd54b2db4 perf(session): route SQLite PRAGMAs through central apply_database_pragmas 7e47a0fdca30a9cbca291dc4477f5ea73dbaf647 Merge pull request #77779 from kshitijk4poor/chore/attrib-bkstock f1133c9b6599288fd86884eb0875e8a7e7520b00 chore: map bot@bkstock.dev to BKStock dae5df22e1e34c4df3881f22211d415b9d4dc05e chore(contributors): map marzukia@users.noreply.github.com -> marzukia (#77774) 4a99ba195fed56c9712c524ea4d88c27e6e126c7 Merge pull request #77760 from kshitijk4poor/chore/attrib-stremtec 8167b9f9dcd7959cf6a2245d487f9ea7fe554dff chore: map copii.list@gmail.com to stremtec 82019e7c1b2d0accae08525872b7a9a90f73edea fix(credential_pool): unpack the tuple in next_available_at's gate 13172fca0277d985874f67b685ead90430ec9585 refactor(tool-search): drop dead fallback ladder in _available_source_summary 48e12a06fa3ab2583f4b043ee487574de4c97120 perf(tools): shrink lazy tool catalog overhead c2c95f533983cb2327b13317d0fe1886a5cc960a Merge pull request #77713 from NousResearch/bb/review-76744-fold 2f32092b38dce4c3ade0c48897c6fab0edecb893 `hermes sessions optimize-storage` aborts with 687dd632a12b952c141c5820c8c7be552d35c108 fix(credential_pool): serialize deferred-refresh pool mutations 9cd605f30321dcb8cc9a2181cf10927d335e083b fix(credential_pool): defer single-use-token refresh outside threading lock 4c2d473a80097b87c903ff659a56ef7a4d62a216 fix(credential_pool): run next_available_at under the pool lock 6611d87003505c6895940a6cb446eaa70ac6778d feat: reset-aware primary restore — stay on fallback until the rate-limit window resets decf12eda0170097146b046d8529b12ff40002d5 perf(dashboard): serve hashed /assets bundles with immutable cache headers c0c45ab68ae4783378b4690d7568957ccb95dd3d fix(plugins): keep loading gate when cached manifests include a /chat override 41bba3c13edb65970a87f96b76a1446424e8762a test(plugins): export cache helpers and add focused fallback/refresh tests 057939c2af2bb4fcd5117f15746a609638cbd316 fix(plugins): validate cached manifests are an array 050b9533e01af66abd4c61defbbdbd6fff5766aa perf(plugins): seed plugin routes from sessionStorage cache for instant render 5932bdd81a5e534d74d9ec2f8dbf0301e4da342a fix(desktop): preview console/DevTools live on the strip, and DevTools tells the truth 1ddfdbac1ba0e16d0ca80dd75917b630850d586c refactor(desktop): preview tabs are layout-tree tiles like session and page tiles 44f66430041accd39188a8ea35cd38ac42a4f8ba feat(desktop): shared pane-strip primitives — one bar, one glyph, one close menu 9645ea8d52aefd0b270786ac16f7b0278ca8175d fix(web): avoid blocking provider validation 2000278874040f65959a99e9d850a8d59916d4af fix(clamps): raise profile fan-out limit to le=500 (simplify-pass finding) 105aba6705c1dc61fbbc7b5ea69bdfedf76764e5 fix(web): clamp dashboard pagination and analytics-days params (#39200 + #74778 salvage) b536f0697d5f5e6263adec6cf7ebf904bcf41522 Merge pull request #77644 from NousResearch/bb/review-75967 773d69057e4eb91630ec6f7db7e15921b05d09a1 refactor(insights): drop consumer-less get_skill_breakdown alias (simplify-pass) e3ce092f8d23e4e5096aa45a9574f0af8e0cc9f4 perf(dashboard): keep tools in focused analytics usage (#18511) c1639322c2daf1a1c0df10ecb2d5539a8ab0ec0f perf(dashboard): skip full InsightsEngine on /api/analytics/usage (#18511) c4ac62a7eedbd24a5fa8d483b6602c24639f5363 fix(desktop): cancel the pending commit-cost measurement rAF 1f1acc0e4ddd8a39ca10a6aaf832a8029232ecaf fix(dashboard): warm cold check_fn verdicts with a background probe 9fa17c133b3135a65c157cba3d7a15c220062df0 test(dashboard): cover install-hook invalidation of plugins hub cache 0de8c32f52f73462be13806eca88caf580bdfe41 fix(dashboard): cache plugins hub payload and avoid auth probes 7a4d047e375fbe6772c87b75eeababc668d53939 refactor(desktop): one live-tail vocabulary for transcript reconciliation dbefd27ffbc68a5052ff52ad7dadc09432c924b2 fix(desktop): require structure-bearing row for live-tail same-turn carry 2ecc1db2767394a33178531ce66c3958b8f271e0 fix(desktop): scope inflight dump suppression to the live turn tail 53398ff4855ef431d0ff625d3cb28a02f9a8397a fix(desktop): do not sandwich structured mid-turn rows with inflight dump 1f692a8be2894a6d2f65afbdf96ff15b1da4a82b refactor(desktop): hoist the reference-line matcher; drop dead textWithoutImageRefs cb11a7e25579638c9f67e8501dd151f581c4c942 chore(contributors): map two B3 salvage author emails (#77685) 34f0427f7fdf7f6019b4b39835c37a3c104b8b4e fix(desktop): stop a finished reply rendering twice after history catches up b6f15f546d3a37be4a9430cc4496a916512c124c fix(desktop): keep a mid-turn reply on screen when its session is reopened bc3fa54f5748fd6c735ad6ced8bacebb752ce3e6 perf(curator): trim dead tool-schema from the LLM review fork 82fd574badf8c159d679c58b563b4903a61bea7f perf(desktop): stop idle chat re-renders — memo ChatView, stable tile props, gated adapter re-sync 1306ac089712ac27a2991fdd17b10921921cc258 fix(desktop): un-break the .btn-arc rule — '*/' inside a CSS comment ended it early 94fac067f7b895a1bf11f16799539ed15ec609d9 chore(contributors): map vittoria3103.123@gmail.com -> VittoriaLanzo (#77665) 5ffbea81e995aaa3b6b6b5ba81d1f453a6b88ef8 fix(desktop): escalate gateway reconnect on elapsed time, not attempt count ed66ff17d8ae94456cb0188d6c1d6ef328c977f0 fix(desktop): full-jitter backoff on gateway WS reconnect loops 2ebe175dc12cb64ef3f9c7414bc4483cbdb3e4ae fix(desktop): sort reference-kinds import per lint gate fed10fa245e48bdc312809dea5b35a3c8b3f05b9 test(desktop): cover wire reference normalization edges 3060beea07f9bf991cacd6e8d1d1eb02fb4e1931 fix(desktop): dedupe optimistic user turns for all wire references, not only images b9b0505cfc30e1cd9d731d6249b84ef162398436 fix(desktop): measure adaptive stream flush through the deferred commit frame 34d6095e41c1c595fe2f458923f3a85e9081a414 refactor(honcho): delegate _is_trivial_prompt wholly to the shared classifier c093492b067628def6b1866deb3c6bc84059ef24 refactor(memory): single shared trivial-prompt classifier + gate tests 46073d7b1c99c09ee1b174fedc6a8f0455e8ff8f chore: add ayushere to AUTHOR_MAP 2f14c3e5b0b10a7cc2311c4e03b0daf4bf7bd904 fix: skip memory prefetch on trivial user prompts (greetings) f795d542f6ad5819aa0a59a8130f67452f191ea8 test(session-search): guard projected enrichment ffb54305c4171b7347183046da8691d52dbbb08f perf(session-search): project fields before enrichment f327c898e2cf5e2504bfc3bf1d06a957e2005818 chore(contributors): map four B2 salvage author emails (#77641) ebda9952aa69d106bbb3b9f0f644cec7e3c8e8f3 Merge pull request #77640 from kshitijk4poor/chore/attrib-aydnoktay a762625a0c43b340a15d063aa02ba7ec6d2107a0 chore: map xaydinoktay@gmail.com to aydnOktay 219bb35c359ba546cd1a05b3f9bd70496be49843 fix(minimax-oauth): read streamed error bodies inside the client context + real-transport tests 94ef36a7f740ca7d8386143964be25b436f400d1 Bound MiniMax OAuth error responses 0e4daade1463de4e6c7c2688a8ad6638c3e15629 perf(zai): early-exit when the highest-priority endpoint wins (simplify finding) 9e99a335a754143995a62f9ee2aa31cafd3e8415 test(zai): cover parallel-probe contracts + restore candidate-model loop 9891f4b63f1a2452b198562092e4bdbfd30a6ec5 perf(zai): parallelize endpoint detection probes 2b0d58e88b1d1c298249dfc8f5a9b2092198564b Merge pull request #77636 from kshitijk4poor/chore/attrib-frizikk 4cf2fb5370bb07edd86e3113f7c44278ad61396c chore: add frizikk to AUTHOR_MAP f3add023c27c0c547e69c551392a766faebb6e9c fix(yuanbao): pop tracking entries only for truthy matching msg_id + regression tests 81c86456af960bb4dec480343bfe1ebf2cd81459 fix(yuanbao): evict stale entries from _member_cache on TTL expiry b6511212cf5f1d686e6dd0632fed9e74924b49da fix(yuanbao): clear _processing_msg_ids/_processing_msg_texts after each message 7db282752024d578a29324955179756e76ba5698 refactor(state): chunk the batched tip-row IN clause at 900 ids b2e1d574668f95c899a860b4bd2339e72e4aa9ad test(state): guard compact_rows threading through batched tip-row fetch adcdf9dc63a46f104608c086cf11562c8d7c2711 perf(state): batch compression-tip row fetch in list_sessions_rich 5017deb3db50ccb0e3d4ab63e9e9606a24a6664b refactor(insights): strip INDEXED BY pins via an attribute loop 401e054d5997e3723c88e400d9a99dbbb6063e55 fix(insights): fall back to unpinned queries when the partial index is absent 7f1d84fe7f5b03ef9a3a37733957728b8e83db93 perf(insights): pin partial index on assistant tool-call queries 034eadb3260c747644482ab33697897c9f91b88d perf(state): index assistant tool-call rows for Insights queries 14b6e0d8ce817ce96d8d57c4fad351e9d66fdeee fix(state): take the connection lock in session_count_ge + document archived semantics be3be061828107801cf1b7d776d8cce42829c82d perf: replace COUNT(*) with LIMIT-based existence checks 23021f44f42441e6689fbc9843cf08bd062c8dcc Merge pull request #77632 from kshitijk4poor/chore-woj-email 6cedec172b5d9d27df33cc8eb569395e88412af0 chore: add contributor email mapping for WojtekMR3 e80b7aeda18898da46c63ccb1ada609b9405e8cb fix(feishu): test SDK globals by None-ness, not globals() membership f84e3687d8730a499deb1479f2952b169ed8f15a test: bind lark SDK globals session-wide, not per-file b51c4e6a7840a5a4ff22e16f51550dfda0edc255 fix(feishu): defer the lark_oapi import off the startup path 0422479031f849c78abe9dc2154e903bf04ed199 perf(cron): skip config load on idle scheduler ticks (idea from #33612) bdcdde9ff6078afaac1e52b7aa19170d4a71fa66 perf(cli): add --prefer-offline to npm install during update (#39267) c8df4224220b757c71dace31b6f80fe7c9e50ad3 perf(gateway): reuse loaded turn config for timestamp check 78e2987e202eec624ff4cf5c4d413f3472e704d8 feat(transport): imply prompt_cache_key capability for api.openai.com f4fb23f3d001d164a93b7835caaa5b4c3a1002fd perf(transport): gate prompt cache keys by provider capability ad345a99d8f9415a7e18cde2374143aa403e7e95 feat(gateway): add opt-in 'latency' runtime footer field 51743f490467cf4372be1dcc6300a82c07e2a42f test: pin the hit-path copy guard on the provider snapshot cache d0be6091477a89773a6f5a35c5eb5a3830b7a423 perf(providers): cache provider list snapshots b953a5ad0c3421fa25de99af837fd72368c81357 test: fake clock for the backoff-status test (was busy-spinning 7.5s) a278db1339d3570af907b13e0ecdebf63bc0399b fix(agent): jittered, interrupt-aware backoff for empty-response retries 844411da864d799bbed4f98423f821435975fad0 Merge pull request #77601 from kshitijk4poor/chore/attrib-light-merlin-dark ec10cfd364b5d00e91b0e1dabeb633bf7935fd13 chore: add light-merlin-dark to AUTHOR_MAP abe7f7833f8da843a50cf0cf393bbf7b0fa52671 chore(contributors): map tbsonline@protonmail.com -> jasoisjaso (#77600) 425c54b51e622fc7c0582e11bc8017ebb960e9e2 fix(platforms/line): fix broken import of non-existent config functions 2d6d4d57a2b8a99bca2ed728f0c6434c59d90dbf chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 3 updates 4e698cd471164cb70ebf9f8e5d640f9b7eaf1f07 Merge pull request #77586 from kshitijk4poor/chore/attrib-endeavoryen 9aab062687951f9d8fd777b44c08ffa16849e3c7 chore: add EndeavorYen to AUTHOR_MAP b45d886906b4653d5251a16b8ea443e6bb3f7911 fix(api-server): reuse toolset feature snapshot 16bd5d23b43e4f257a4cde3a2319c18053d990f0 fix(tools): reuse subscription features for toolset listing a1b3ce6bfaa70375326100b3883c734fb322717d Merge pull request #77574 from kshitijk4poor/chore/attrib-rodboev-maarten 5bbfe63ef5dba2dc7a3b74873a871ff049398205 chore: map rodboev and MaartenDMT contributor emails 7997c9ced872dfc9f520d65ecd3cee2098acc500 Merge pull request #77565 from kshitijk4poor/chore-szz-email 9c20f7f2773003522f3fd62d914f821353afc927 chore: add contributor email mapping for szzhoujiarui 536ed6a33e4c46fc7d258d8181ad250c2bc404a3 fix(credential_pool): classify copilot sources by exact match 77404ce08692a98a661e559c3c3bd8c81c484fa3 perf(credential_pool): skip gh subprocess when all copilot sources suppressed 0a2a69d80b7d2d1ff8e40ee570e1b5c51c747443 fix(credential_pool): check copilot suppression before token exchange c062fde8b1a73fd74ed19c2a9e59b219255c406a Merge pull request #77560 from kshitijk4poor/chore-wyy-email 32686bb9c543321582ff7fa53d0dd26057239a76 chore: add contributor email mapping for wangyunyou fe6330de035c27f64c356a819a2218ee1cb05e93 fix(stt): thread confidence thresholds into faster-whisper's own gate (#74178) ebf967ff2cecdc040cd9701b0cf52059c7e8da4b polish(mcp): simplify-pass folds on the lazy-startup salvage 1d5ecad56869c0f5ad845f959880431ca3ff7d49 feat(mcp): lazy server startup from schema cache (design from #56832) 135a29452a0058aef655febce3d1e84e384091f3 feat(mcp): add fingerprint-keyed on-disk MCP tool-schema cache 636d4e6435e4c9e63e1430318a61387cff737826 Merge pull request #77515 from kshitijk4poor/chore-baau-email 815d2e24938dd5bb3ca26a30b45d90d27a042cb0 chore: add contributor email mapping for baau 5b5a29f96e72482e8958ea80c836e87a25baa406 fix: exclude DeepSeek from OpenCode caching path to prevent HTTP 400 633bd354f99a9f9bef13e093841e0b5ec9a2fa9a refactor: dedup _convert_user_message to call _fix_blank_text_blocks_in_list a3257cbf46b648c78836fdc455961298dcd8a64a fix(anthropic): drop whitespace-only text blocks reaching the Messages API f07f47fe7dfdc87c73dcbfdee24a35dae3f29c2f fix(lazy-deps): skip the install ladder on package-manager installs 2ba064bc54dde6929c8efcd6578f07c1c62431ca Merge pull request #77492 from kshitijk4poor/chore/attrib-vansh 2f916679c37c57fcbc0c1a2632bbb72819ed879a chore: map vanshgilhotra8885@gmail.com to Vansh5632 911d3802962772b5fd7001146d7923f837c5c491 fix(tools): allocate snapshot temp paths with mktemp instead of $BASHPID 01252816093bfd696d4dfc71c3121e51baf6d4ee fix(tools): allow Unicode letters in workdir validation 72e8e2983ab690b18d1cf3f1a3bbb65508446d13 fix(session-search): strip ANSI from recalled messages bd56440f4cc1b83de300800484bb2fc9b8f2399f perf(models): cache GitHub Copilot model catalog for 5 minutes dd08277104ab03da588620e9f4aa6afefa01d11a test: expect omit_messages in the tile-delegate resume call shape 67fb0d7c2e11fb894520dc6e83233b1cf9852b61 test: expect omit_messages in the queue-drain resume call shape cd41454dfc42c66a17e9bacb2409c56d549f8258 fix(gateway): let Desktop omit duplicate transcripts on session resume e1843c7d088e01636e7ded0d6ff244a5e26db59c style: fix the type-import sort position in pet-gallery.test.ts b0089e8bfaa875b1275a6e4761cb80997cbb081e perf(desktop): skip store update when pet metadata is unchanged cb0226d4ae38981028b48e2b865be1b08d21eea8 docs: update stale samePetRevision comment reference 1573829a7c8b33052536aa12e8501ca509f179c8 fix(desktop): avoid repeated pet spritesheet fetches 51defb9e29314d1bf311cb60fab3b70376d0d3fb fix(desktop): adapt right pane probe to per-cwd status 105143432523e2e722491a295ab980cc330e3bff perf(desktop): isolate right pane layout work 1746f6d3835913b039e7f716fc7a43f69b71374e Merge pull request #77451 from kshitijk4poor/chore/attrib-flag0x369 d0dc1ad2a26f84300ecea0bc803dbb9cf7846127 chore: map f1aggo_macair local email to flag0x369 d1afa16053a3777849c2b5465d59a0147b2172f9 fix(cron): retain completed one-shot jobs instead of deleting them on completion d127fb21971515536124de6463aba825fa3b4ac7 fix(approval): stop treating newlines inside quoted arguments as command starts 55b3e1ee5651d7a88044cfada6244f3147155c92 chore: sync uv.lock with nemo-relay android marker a01f979b6e86d24a798968d5341788e008f96caf perf(tools): restore benchmark-sensitive phrasing in compacted description 4be0d5602334c72e76f972e8b04400cf8c51be59 perf(tools): compact delegate_task description by deduping against param schema 6858e0d9315c21dad04958f3343de44ccd2d232b Merge pull request #77371 from kshitijk4poor/chore/attrib-johnny-xuan 1d3242ac72b841fc5b3f0cecabb6be64f8347ef1 chore: map universeszym@mail.ustc.edu.cn to Johnny-xuan 5633764733cdb64f5e72964d6f2d654eb9b50906 test: wait for ledger-wrapped sends in drain assertions 5b36d64583bf9ed8c30b127d24b671f229f8abcb test: raise blocking-probe timeouts for loaded CI runners b7e3cc37bea6f44c55811c718da8f064d0e2a466 test: move the redelivery event-loop test to the class that has its helpers 498800a22ef606323ffe14b515d77f0b87999232 fix(gateway): offload delivery ledger I/O 07dd2f8fc93c0ae47f37edc2f815c9483c58e73b chore: AUTHOR_MAP kshitij@k4poor.dev -> kshitijk4poor cc04825c5dd49afe9dd503f4115d1e9b37e64505 fix: content-based diff for model-switch marker merge (#76870) f9ed58e6aca4f774cc5b2e063d405566ddf01589 fix(tui-gateway): merge agent output on model-switch history_version mismatch (#76870) 75901a295dc44f359f2b6336e03cd3eedbcf9d4c perf(tts): pipeline sync per-sentence synthesis with playback dd600d1ace727fc9f10c9f8763f21b564e25b06f fix(discord): suppress link embeds in tool preview markdown links e599f100ec1bb95c1881930f3fdbf682900181e7 fix(discord): avoid truncated URL link targets 7af104b37b4de8039bf7affdfd9f059a82ca0025 refactor(discord): keep link formatting adapter-local 56941eb3293acfd22b4aabadaa9514b9f67d0b44 refactor(gateway): share markdown link formatting 911d8dfbf45fe590aefefd764c3079c34ef38da5 refactor(discord): simplify tool preview links df9e039d2da8e0182d8796a059b003fa67502652 fix(discord): preserve links in truncated tool previews 037825c1f24d86cc54f47b731330524cf1cabee2 fix: check NUL bytes before size limit in _read_referenced_script c98ed22e42509d46b92ae35e08abc169bafb2353 fix(cron): stop lifecycle guard false-positives and crashes on .py/binary scripts 21040c4ab66899995d78cca00e83e5325f786883 Merge pull request #77339 from kshitijk4poor/chore-dblank-email 45d3416d82652feea3c2cfb9a323ef61ff120a27 chore: add contributor email mapping for danielblankhh 947fdeab3bdef53bb3ff856a4bce0e6e6235122a fix(whatsapp): guard bridge reconnect against hangs and unhandled rejections 648c01c6939e08e9f840236bfd58774370d3f126 fix(matrix): pickle key from resolved device ID, skip migration after reset, cache enc info 80d5a57b9447c92bce6a4f5408bb5d5d6a912d29 fix(matrix): commit the migrated account only after the session sweep 3a43422065a631604e321de64f3b5fb48a49eb5d fix(matrix): migrate crypto store when the Olm pickle key changes 907bdc7856b2e48df1cf43af52a54dca215685b1 fix(matrix): let the token's own device win over a stale MATRIX_DEVICE_ID a4b686c29e81b7a93a95d6d7c4fcd66a0fee0963 fix(matrix): reset Olm crypto store when the access token's device ID changes 799102a4d884c63f3428e0592e724c86d5161de9 fix(matrix): fallback to homeserver query for room encryption detection (#71067) ff3c9848d44877da80b3c644b0066df923d7634f fix(compression): route overhead-aware tokens in post-tool compress + add recovery-path tests 4ffc8449a315504271f79953782d41fb33b68aa9 fix(compression): overflow handlers pass overhead-aware token size to LCM recovery (issue 441) e8c1882766d257145f6f20ca1b3d37289680bf34 refactor(ui-tui): single source for the floating-panel kind set ee8765c9300c40575e16d94d2d6c000487a02d6e fix(ui-tui): gate status-rule timers on real occlusion, not $isBlocked 873af72f8cb06344590ac9abe9aff34507bbd98b fix(ui-tui): pause status-chrome timers while a blocking overlay is open 372494fdf940452f1f67a353d170739807a2df26 style(desktop): eslint --fix import order in sessions-section test 416f91d271dece024c41d76ecdf356b153600801 fix(test): export VirtualSessionListProps and assert sessions array identity change 09ed1ac9509b47afe09f6dcef23d52aa3d5750ba fix(desktop): memoize sidebar flatRows and row renderers to prevent scroll jitter (fixes #73629) 0cbedc58f0f527aecec5be8ceea112af82629962 docs: note atexit re-finalization interaction in shutdown() docstring eb4f514b2d386e80f907e94bc29a192ee49b32ad fix(tui_gateway): retain live-turn sessions unfinalized when the drain deadline expires e2391845217a76b5f040c6660e5c8188277815e3 fix(tui_gateway): bound the shutdown drain sleep by the time left to it 1fba2dbe85f0c106d26d49b444c692973eb5b943 fix(tui_gateway): drain in-flight turns before finalizing sessions on compute-host shutdown 28d994f26c0db6cf17ec582dad01c1a155a0ec23 test(gateway): cover restart after-turn deferral (#77184) db3f7e4eb99731ddddc8c091f2e4fd28ff835bc9 fix(gateway): defer in-band restart until active turns finish (#77184) f105db2136361f6e57da32ee712bfa5581752ba1 Merge pull request #77335 from kshitijk4poor/chore/author-map-atran28 307ef0061c7aab03184b5987ecfb7b0da876a15a chore: add ATran28 to AUTHOR_MAP 622c220ebb99681942213c87c20633e0f599ce27 refactor(agent): rebuild hoisted patterns from shared tag-name tuples 9421c5afdf36af145ba775dd4e2d84184c6efa84 perf(agent): precompile response and skill-scan regexes (#33208) 3b53a3c5606737d5fbcf673b26aa0e67b659324c chore: drop stale diagnostic report from PR #77021 a93969dbd183d626b35f46671ca2842225b66f6d fix(tui): snapshot history after pending model switch applies (#76870) 8f61e61991a48e871d38cf4503bfd5fed928bac2 chore: add contributor email mapping for LFDMcore (core@lfdm.co) (#77331) 1228bfb27046856e4eddab675ed1b3476d7c6655 Merge pull request #77329 from kshitijk4poor/chore/attrib-ckaznocha b6cdddd3df10aea7ff60a54b650123239080a801 chore: AUTHOR_MAP for ckaznocha (matrix crypto PRs) 68391930d0aa2bd580d8ba9f0e65a8624a15171d perf(tui): bound scroll rendering and preserve anchors 7598bc6c9527ca3abc5471662ddf861e3a6d80d6 Merge pull request #77319 from kshitijk4poor/chore/attrib-egilewski-myk0la af6efdcd150d48465340ebd5cdd5805754791c44 chore: contributor email mappings for egilewski and myk0la-b d79a6f0e3e3fabd23a06b92efc7e443ff2652e1f fmt(js): `npm run fix` on merge (#77300) aa8f0d4c8589a4e06b9847ee12be6c3bb6629ca7 Merge pull request #77292 from NousResearch/bb/composer-mixed-paste ef9f6effaffc5c454598a072c7ffba12048783f6 fix(cli): persist YOLO mode across --resume 9e373b3828e0a505e61dfd50f07e8e5db58ace9b fix(desktop): paste rich text with images as text, not blank attachments aac74be2f11f0fc80a1988bcaacabf40b28a1295 fix(approval): classify CLI/TUI approval timeouts separately from explicit denials f4604f89dec8d225d67d7a68065c1b425fd3732a Merge pull request #77275 from NousResearch/bb/tab-reload 942d7315531c45f95edcb0ce6614e4e6a2086f63 Merge updated client resource metrics into active-install metrics d0322fad69d555cbf9ae0d787546e3e0c1879620 Merge updated skill metrics into client resource metrics 884c2daa1cfa548b98c9877e183a502326442eab Merge updated tool metrics into skill metrics 14c8bd646cfda8d497a6ae893f0865aa08c8f48c Merge updated model metrics into tool metrics a97abcd55a5501c8c328867fe07ec25e72f4aa25 Merge upstream main into model metrics 17bdc99db4e6faa70ea2a9781f8d84c5734174bd feat(desktop): reload a tab from its right-click menu a4a91610b05acc75b4d76c077a5cd89c1ee066ba test: cover gateway per-turn reload and flip dump terminal-backend pin e471c7165e945ac09f8f899ddbb259e8d5ad6dba fix(env): make config.yaml authoritative for terminal.backend (#29186) a6defd4f1549da3fe1d08d6f746fc645c64543f0 fix(skills): match evidence quotes through markdown markup 4660673a3c0cc4fa4c02b93e14b24808c640983e feat(skills): add fact-checking mode to grounded-citations 8d755d074818c79f6b7fdc0016f8930ea4872b26 chore: contributor email mappings from open attribution PRs 58e3dcf3d6731eb54cf6a78796524959bf59cd9c chore: round-2 review nits (re-review #9) 44c362889a1c8f92d20b09da90ee91c35eb8eeb0 test(agent): deflake progress-extension timing per FLAKY policy (re-review #8) b2963f8034bcd2e5f6b6c32cef2a11ced187242d docs: document agent.session_stall_timeout + compression timeout keys (re-review #7) a0e700c4cf3c9f59a2e6fcd4892d5261985fc6fa feat(agent): emit pool_saturated compression-attempt telemetry (re-review #6) 06bdc48c1ff4f2d9c4cce50dc2804fa6ade9e69e perf(agent,gateway): back cancel-wait polls off from 1ms to 25ms (re-review #5) 0628e333472f4b8549b9577b09e60b5196c00ff4 fix(agent): clear archived parent's activity labels after rotation (re-review #4) 53a5983af07a7507a5b7f6cbc0bb7ef1cd160eac chore(state): bump SCHEMA_VERSION to 24 for activity-tracking columns (re-review #3) 58f0fe305d2a16e8ffd10c5eb7ed874da9f7e241 fix(gateway): bound the stall-notify adapter.send (re-review #2) 0277cc48bd15d8d4d7b340f75ecf0947d9a9aaef fix(agent): never release the durable compression lease mid-commit (re-review #1) 15267a1d2d7f01bae8e0c7009ff1a15e57a0223c fix(agent): reconcile explicit hard-cancel (main d15b638a88) with pooled fence rework fe2fc5724045d40ee35009707d2d80f1b0c84653 test: skip live aux feasibility probe in worker-isolation regressions 038c1ad8724614ea2a76d72c1792ce7b172a708d docs(gateway): precise watchdog scope, explicit import-resets-activity contract (review S4) 89c4e26e23e74fab6cd1141435cb805b9fd9a2a2 fix(gateway): revalidate stall candidate immediately before /new delivery (review S2) 92c736919d320fcf1ac7e8e69fb5fd01b303cb0d fix(state): sub-second busy budget for observational activity writes (review S1) 99100843c6a1d92af8ef2d10e45142f0a05ac917 fix(agent,gateway): charge the idle wait from the last progress event (review S3) abc0db8cde60e32a01d28b2b4ee6b6bb302acafa fix(agent): bounded admission + stale-job cancellation for the compress pool (review F6) 36a60c5edc55300079682d06f8c3c796bfa96dd2 fix(agent): rebind the caller's session ContextVar after out-of-place rotation (review F5) fdeb09a596f231413d88edd67dd376f2aa784a40 fix(agent): holder-qualified durable lease cancellation, cooldown ordering (review F4) 971d81f892331bb1641a9d3f389a7b14355eb5bd fix(agent): isolate the pooled compression worker from the live transcript (review F3) efdd2298840699f4269a7b8304096c0b2b1af910 fix(agent): revoke commit admission on every host unwind (review F2) 980aea225e6e8d20cae975d698ff199ba34221c5 fix(agent): observe commit phase without the fence lock (review F1) a05b102d0df8c0f24270dac9f8186651a5284dd9 test(agent): deflake concurrent-fork suite by skipping live aux feasibility probe 024a58ddea8566e5335dabfb82778fa6a672982a refactor(agent): pin session activity heartbeat cadence + harden best-effort write 2fb0aa1c0e8d5dc0cda22111f2020ea63ee0cfa4 fix(agent): enforce bounded, surfaced commit-phase waits past context_total_ceiling_seconds 2e75aec512ddaf725d09f7b82045da3cc712647c fix(agent): restore end_turn in run_conversation finally 06c7f9b26f3fd83a34b179e7e7a709d8e172916e fix(agent): clarify compress_context ceiling is pre-commit only 240148b440a053316386112c2e7f7a3ab8b20047 fix(agent): force-persist compression completed past SessionDB rate limit f3c9d4c61096f301e3c6ee1ae17eb063c22a8693 chore(contributors): map fangliquan@qq.com to fangliquanflq 61e722261ce18e94adf68885f3335ac76ca4a501 fix(agent): silence detached compression heartbeat after host timeout bcbaaa40203704f92cead3a308724112508b14b9 fix: propagate logging session context after daemon-pool compress_context 962e4538dadb29ddb45ef23254d70054bb8b67ab refactor: reuse existing utilities in salvaged PR #72424 c2088efe9efab25b4a3bbe2dd1d2f1051a736834 feat(gateway): session activity watchdog, stall notify, compress timeout (#72424) f01c193be4aa034874ab2204c74d20e4e4360259 refactor(schema): trim terminal and execute_code schema prose ~40% 80631c4aeaa34e4c0f3aca987992846593c333b1 feat(terminal): recoverable truncation — spill full output + report pre-truncation size 1c6d1a23c081014ce70595396c4becc1112426b8 feat(patch): list match locations in ambiguous old_string errors 7713d216f5c64b40280c02f23c796566c1d4cf8f test(search): guard zero-match hint wiring on both engines 794d6c434e16d15add4dd7dfe8d8dda665af4f24 fix(search): restore zero-match probes on the rg engine after auto-multiline early-return 1c39f1c9f984705e7b5be66f826ebecb9d381629 feat(ci): auto-fixable contributor attribution — audit_pr_attribution.py + gate points at it eb6214300693d2f3472d605b76282989d334bce9 feat(execute_code): recovery hints for known sandbox failure classes 1cefabc8af5f2a75441b9d05fb5757452ed02cbf feat(search): auto-enable multiline mode for newline patterns 2a3a7e6f53b8c29b525bb9a941b91314927ca1ce feat(skills): dedup repeat skill_view calls with an unchanged-content stub 2c8a932f8015eae8568eed20faee52a7b8e4fd32 feat(file): verify write_file content on disk and say so (verified: true) 5d675a2ca78d16a324e57403498cc4190193ede5 feat(patch): whitespace-visualized diagnosis on residual no-match errors 75a8d4a59790d1d297c85335cccbac31588e4f41 chore: map nicholas.mariani@hotmail.it -> null-runner d0e73ff30ce2defd9f0458338ce62fab66967e6b fix(tui_gateway): widen reaper delegate keepalive to durable session_key 719c1b03669c37c26f49e2a1e61465a66d05ee11 test(tui_gateway): route lookup-failure regression through has_live_for_session 6101c92dd1d5062fbfca4be926427e4d6b282b01 test(desktop): follow upstream orphan teardown path 719a3da11fee1ece6669d8e929557d62d88e3d05 test(desktop): cover finalizing orphan delegation state 820f63e842d15516e2a55a87b51134bfaa360fa5 [verified] fix(desktop): preserve background delegates across session switches 6f5d6b1f5b832dc8389b728bd25981e46471fba5 feat(terminal): auto-save parser-limit-blocked payloads as runnable scripts b1711c6f2e968fab13deadee3bd63a8c44c365ac fix(terminal): blocked-command errors carry a concrete recovery recipe 0b149ca0308e91d85cae58f14204385dd419dc5c fix(process): wait timeout result reads as status, not failure e7aa06c3a659b4f10abe33fdef0a751825ae63e3 feat(search): hidden/gitignored probe on zero-match results 5797b502887797196f5e3fe35e4deff124c68b85 feat(search): zero-match probes and multi-path recovery 660237026be1629ebe9a5bbaae3cdcafadd4d647 chore: map bennybuoy noreply email for a2a salvage attribution 81c7e5de48dcccf358b7ca01d405f2339ef485a7 docs(a2a): website docs page + canonical agent-card.json path in prose 3271cb6907a25fb0dd49fb07ab81c92008f57a53 fix(a2a): override authorization_is_upstream for A2A peers 5a8102d71cd9f8c418a79656dfafed26ec7960c1 fix(a2a): JSON-RPC conformance for a2a-sdk 1.1.0 compatibility b1819ceb7dbda9b83c7376c71806b6a6120ae451 fix(a2a): align multiplexer with v1 protocol and tenant isolation fe1aca57708302077192af4a8ca0bb644b373c5b feat(a2a): file/data Parts + push config full CRUD 41c406e1ab5a6730e7bab4b843be8728b8755491 feat(a2a): v1.0 upgrade + full code review fixes 37481dccf408399e5357b07a929dfec4ceeb2d0a fix(a2a): security hardening from code review c6b0e3a80ee4b14828b38a438f6cf1ecb4d06466 feat(a2a): Phase 2+3 — SSE streaming, push notifications, anti-loop, orchestrate 436e5a9cb5afaa2036759d1031814b96513af48a fix(a2a): integrate all follow-up fixes for #41711 38318cec1ece7c81f618d8afb6d70d4abfae98af fix(a2a): wait for final replies before resolving RPCs 7d57422936f018943958b3c28a9d2c8a51aceed9 fix(a2a): client tools take args-as-dict positional; accept agent_name alias 64a50ed50ae4cc9dc8495639311e5be4a6de3ab8 fix(a2a): default the a2a toolset OFF (opt-in), like spotify 837003b1ed6742d2dd3c15b181c0d628c58fb8b6 feat(a2a): consolidated Agent-to-Agent protocol plugin (closes #514) a18a2f170c51b4f1a5bc771c96fc1e052686304f feat(terminal): echo cwd in result when a command changes the working directory 99d6f55e385bf8d6c4028bc081cd2ba6ee478270 feat(patch): detect already-applied edits and return success no-op af27e60603fc630888733369ff32b6ca5f1d4be4 feat(file): raise read_file default limit from 500 to 2000 lines 9158b4b60b0e6d9afb5fe7e0c4254e978b88c1b7 chore: map contributor email for @Guoen0 7483745da7e4ef8f2fa15d19ca7198d4844a597d feat(gateway): simplex channel enumeration + show configured platforms in hermes send --list bc334f538019d21d605da85a0ba8b28d56d99506 Support adapter channel directory enumeration 677473273ea5ae4ef662013ca4e80b04b4cc232f feat(terminal): output-pattern failure hints for common error classes 5b4d20b524c641a3c7a708a5dc8696a4c6a28588 fix(hooks): flush outbound queue at interpreter exit 86fd6da1dc64423ea134f7ad41c7862cbd77c172 fix(hooks): single delivery_id across header+body, never follow redirects 3829e34e235991896a4f4ba6bbb402e5a6e24774 feat(hooks): outbound webhooks — push signed lifecycle events to external HTTP endpoints 43c79cd84a7dcba6172d06f56f5af2f6fb08af4f feat(skills): add grounded-citations skill for verifiable sourcing 9667236ccbee9fb139431b41ab9a43b84818029e test(tui_gateway): accept predicate kwarg in _close_session_by_id stub e57a8f5cb90223c75c2e12d7dc0c07b959c20608 fix(gateway): preserve delegates during session reaping d0b87dad77944c669b453385bb797d53fa33c4f7 fix(relay): key auto-thread rename on prospective_thread_id, not per-chat cache (#77052) c83ddd6a51ec211458b3145da7139aafb70191d0 chore: AUTHOR_MAP for amoreno16003 d13e8f751049c6015d58f9363d3c3a6872375939 fix: Discord-specific guard + cron sibling + non-regression tests 3db7a405e07058c8d0f6309fb977fc656a8c8580 fix(gateway): key CLI→platform handoff thread on thread id, not parent channel 7380b485891f24194af793abf22f0e128cde4264 fix: widen source guard to include manual:device_code entries 0ab4cdc27df97d14e9df769532e65282d20dd7b1 fix(codex): adopt refresh_token from auth.json even without access_token (#70097) fb6446fc9e2cc66ca704d862ba3abc4d888e2afa fix(cron): scope cron approval context per session 5b73cfcc985c059aaacecb07a77d602b6250fe28 fix(desktop): bound review workspace scans c5829fbb344b8ca842153393b15e1ad4c749ca51 fix(desktop): account for transcript payload size 5b5932886ce6477a0f4a3d25ca465392288d5126 fix(background-review): inherit prefill messages + OpenRouter provider pins on non-routed forks 857926ccebe94fc49bcd2c88751969dd0f6827e3 fix(background-review): preserve gateway prompt context 177f1d7c53e25cc4fa3596dd720de8e6756367b3 fix: display sub-cent model prices with extended precision instead of $0.00 c2ff2e8b17f5dd0460aa020aaa21deb59d7fe15f polish(discord): surface ffmpeg stderr on pcm_to_wav failure 70a3c2d9c9aa460d82721fb597625c0e61071a93 perf(discord): stream voice PCM to ffmpeg instead of a temp file 579672d87df1875ddd719ea45252af974cccc59f fix(desktop): keep cold gateway config off event loop fe9bdd17e305b54b826977013f70629af59f8a77 fix: exclude killed PID from orphan sweep, fix test, add regression test 2a2e6ee2a4bea45a9978deae81a3dce366198085 fix(gateway): reap orphans on stop_profile_gateway (#75936) d5cf89f3b275a6c5c0e86d497f1746f86fa9de42 fix(tool-executor): use lazy logging format in debug calls 9eb8e20c684730e0853b3fcabe63ce8d88dd04c3 fix: use lazy logging with %s formatting in logger calls 2bf2bc141df4b53fc9ca5274dc07b55424e082c6 Merge pull request #76976 from kshitijk4poor/chore-wayne-email 94a0a062146a8094ff6b3630f34de1cc3c7fc138 chore: add contributor email mapping for wayne1992127 af077ef0396726f4daab467bf559e28a5f2abe10 fix(api_server): run the cron-fire token verifier off the event loop 47fa4385df76b4f6937c48e3d155223b1086c373 fix(serve): cache /api/status profile-gateway topology scan 710b02663ed1f47f78c018da2356060f03f9611e Merge pull request #76966 from kshitijk4poor/chore/attrib-fixitfoundry 69f68e5f609aae90d43e8be936fa9c66da0cd10f chore: map jesse.casco@gmail.com to FixItFoundry 9d7c2d450ccc6e08c769a0e4908d50841711429c fix: _check_disk_usage_warning runs full rglob on every terminal call 013779924fc5e682a2833ae35689be0645d11b19 fix(agent): fail fast on custom-provider /models auth errors 9b50a99b395b46ec7cb97ed823f59b717aca18a1 refactor(tools): existence stat outside the global tracker lock 4fa8d7bb67dbc7c48332ac042e133ee27c5cdf07 fix(tools): staleness + tracking-parity fixes for the not-found cache acfb40c9c773ecc123eeeab4ef2589bdb3d064a8 perf(tools): negative-result cache for read_file + search misses c575351d9ac50f8e976a6c910e07eedd49e09e32 fix(mem): 5s force floor so delegate-batch closes don't stack trims 3fad8fdc45b9150173829464b8f075c3cb5171a0 polish(mem): readonly config read, debug-level trim logs, loud frame test da43a8527b47f4cff6a1e6ab93eabb44febd435e feat(mem): config-driven allocator trim with telemetry and lifecycle coverage 99533f70b163a90f8e7cb61063beb4ea650180ee fix(secrets): resolve google_meet realtime key via secret scope at spawn time ebd61ce5ac930c6a73e182556be8930521dab833 fix(secrets): scope tier-3 credential reads (teams_pipeline, deepinfra models, FAL/XAI/VERCEL/DAYTONA/GITHUB presence, HERMES_API_KEY display) 2438305a220055196f6091c78f2ed4f4e4f6baa0 fix(secrets): scope browser plugin credential reads (browser_use/browserbase/firecrawl) a23ede5569176d14b80f6411732d181c0fc80261 fix(secrets): scope image_gen plugin credential reads (openai/deepinfra/krea) 74b28c8910ebb369ef2a0d278cd28c934d533e61 fix(secrets): scope memory plugin credential reads (hindsight/honcho/supermemory/mem0/retaindb) 9bbd956b739d9997751d0b33bcac4274f35d00a6 fix(memory/hindsight): evict timed-out retain ops + coarser status polls 1be353bf9c1eae871f55597810e2c65bbd6472d1 fix(memory/hindsight): gate prefetch on server-side retain completion, not just queue drain 94b10eccf5d444a272bbd52d8e662d8f8aec843c feat(memory/hindsight): order background prefetch after pending retains 7a450ca5ce4682a0b20ecc31eca04af6cbd78206 fix(memory): resolve dim=1 float32/float64 blob ambiguity 958ffd108525c7c469b463217bb67a740f0ff3e7 perf(memory): store holographic vectors as float32 54eafee30b83e644abd950355e70f468ee01b8db refactor(gateway): single allocator for the shared routing counter 50c4afe40ad09c1650756f1017b28b733c9cd4a4 perf(gateway): single-row routing UPSERT fast path for metadata-only saves 2c9bbda072d98e828788f4e27d175a14a11ffdd8 test(secrets): consolidated tier-1 migration regression suite 5239b4d6d58577f8e4262f337576f5653b7a2464 fix(secrets): scope-aware Azure credential presence reads in identity diagnostics ca5ce1110b80e420876188a75c9e8f671566bd67 fix(secrets): route auxiliary-client provider key reads through the profile secret scope 5c6cc38010478a0604bc304a1d25884aed18e1f4 fix(secrets): scope-aware credential reads in core tool/gateway/web-server paths 359ff01c239c41a69c32dea3c176d6ff70a06a03 fix(secrets): scope-aware standalone-send and startup credential reads in platform adapters dbbfcff56d9ba3ceeba371dd3057e58f58e8bdf4 fix(secrets): route authz gate and pairing allowlist reads through the profile secret scope e4306ac5e20f5495203d7c46d830ab40099053ea chore(contributors): map salvaged PR author emails (#60420, #59076) 6dec4bfc886b4af4733749b78049fc91de583967 fix(tui_gateway): install the parent profile's secret scope on session.branch ff89f1b8629d1508a72827176cc8749752fbe26d fix(email): Slack-pattern helper for unscoped default-profile adapter + scope ports/trust flag f08f403157d36d2c31b6329ca79740fe085f7158 fix(email): honor profile secret scope for email adapter env reads ed9986873de2e700990bd4bea49de586f76b7202 test(qqbot): mark environ-opt-in isolation case xfail pending authz_mixin gate PR 4804c585ac1a3e03c109b33bfcb00d5090808785 test(qqbot): pin the scoped platform user-allowlist authz read e8c5cb57104229cc1bac8490d9089c1036fcd5f0 fix(qqbot): scope the authz, startup-validation, and direct-send QQ reads 224e59df5293d7095064cc0320ef5bca7aa862ae fix(qqbot): resolve credentials under the active profile secret scope 7d4c8f9a541318d4b81cabdb483c36017932af0e fix(secrets): scoped BLUEBUBBLES_PASSWORD + API_SERVER_KEY init read; add parametrized regression tests f4b268b7852694abc8207cbf5dacebcc1cff9942 fix(secrets): Slack-pattern scoped credential reads — Feishu, WeCom, Photon, Buzz 6333180c9ad4a4385966316fcfef46369bb7dff1 fix(secrets): Slack-pattern scoped credential reads — ntfy, Home Assistant, SMS, DingTalk d7404f197c6af7ec5a586865de4e028f2fa55389 fix(secrets): Slack-pattern scoped credential reads — IRC, LINE, Teams, Mattermost 062d44bba7973aa911d086be2be495c8db980744 fix(xai): fail closed in xai_http.get_env_value — honor get_secret's verdict 44640149f75075a58baaa9e6fbf58e18c6f148b3 fix(secrets): allowlist API_SERVER listener settings as global deployment env f7efe3d76663d608578ff78f2f4aee674f41b1d2 fix(weixin): Slack-pattern secret scoping for WEIXIN_* credential reads 3fb066c37287a008d6e7b524c083eedb44c6692c fix(agent): dotenv-compatible inline-comment stripping in load_env_file 55abf206bff4ed8890da5f35a3e9e119ab9d4c12 fix(agent): unescape quoted .env values in secret_scope.load_env_file 696fae8e78c0c93fe4ab1bdbaf7c56127ccfb11e fix(agent): strip UTF-8 BOM when loading profile .env into secret scope fe497d8722eb43780ada1185db6d4012f65de885 test(update): make EOL-churn dirtiness deterministic under racy-git stat caching 45c15d33e5ed7f42c6b4778ab8d34b40ad27cc86 test: update fetch_api_models call-shape assertions for explicit timeout de0ce24c2e5660bf74d69cfd888e91d648cae54d perf(cli): cap /model picker custom-endpoint probe at 1.5s 4ea379ca2e08b56a590e35b328de4fb4d74e2b6d fix(gateway): timed-out turn abandonment is an explicit hard stop d15b638a88141e2ed6e948f218f7d2027d28f98b fix(compression): let explicit interrupts cancel safely 06b4f64c31d1ba20006c5ef8dea446af9b9b7c45 fix(auth): memoize the valid-token fast path too, add memo tests 9929743b729a24e6f25494ff8a7fbdf900396a9a fix(auth): memoize resolve_nous_access_token to collapse startup burst ca10ac5c18691c30d3bda13a49fc06c55927a357 Merge pull request #76929 from kshitijk4poor/chore-jeffstone-email a50bd2ae3fb5528d262529a6eea3fe4477639007 chore: add contributor email mapping for JeffStone69 68a7839d8ba809b216357bc2f40ff80aeadc54e6 Merge pull request #76927 from kshitijk4poor/chore/attrib-sparkeros 5d1875fe3adce2130344b6dbf49706ecbffab22b chore: map rkt.2@hotmail.com to sparkeros 9060e3c2d3d3f7f3a21c297b5617e06ff9237085 Merge pull request #76921 from kshitijk4poor/chore-zachariahchu-email 0d9f17ffd433f9661ac57661b9ad9915d670f657 chore: add contributor email mapping for ZachariahChu 4983c576b1ed118d56ddf98feed468f4b3a7042c fix(docker): gate the remaining every-boot chown walks (cron, pairing) f1da9d0d66a311df442e647aa7e803a8c9f6f38c fix(docker): skip redundant stage2 chown walks d080dc24a8f5e225550ba860eb474816df6c42a2 fix(gateway): skip topic recovery for non-DM messages dc91ec931c9f446b29255061d3bae98720b09633 Merge pull request #76907 from kshitijk4poor/chore/attrib-soju06-jabberelf f09011048361b0005d8e37b5ef4f0f1bfe215574 chore: contributor email mappings for Soju06 and JabberELF ec4f8419c0af61f92e8b85a69ba42294ccc938ba Merge pull request #76903 from kshitijk4poor/chore/attrib-aider4ryder 1e2e69db989066047e5fce2cc0a0c24b24633c9f perf(state): truncate FTS index with 'delete-all' instead of plain DELETE 2febb5823c0ec187971f78547b38d63d01ba5d6d perf(state): probe empty FTS index with EXISTS instead of COUNT(*) b2d5995fc6fa1f8ee11b895f3adf4995f8f23bbf fix(state): do not stamp empty FTS after interrupted optimize-storage demote 9c6e85688c8cde8ed7b2c06fbb32d513b31a8d0c chore: map RyderFreeman4Logos@gmail.com to aider4ryder 4e0a77558073a2e8401d0e4051b9f31a57ef5bfb fix(state): make VACUUM interval configurable bd856a02f269cb50b3c723a9087ace28b1fd9734 [verified] fix(state): throttle repeated VACUUM rewrites e38055a85e242dd999809155bf4f7d472508102d fix(state): close the read-only connection when the FTS probe fails 9bcc326207e724a44e0aaccfbab16aa7af2445f7 test(dashboard): gate WAL preservation check by runtime 57197cd48d84c31080745bba85f49b0f1b21d3b4 fix(dashboard): preserve maintenance writes on read polling 024f3e044bfd89ee226afc604fffac1c2005f7ec docs(approval): _get_approval_config returns the live cache sub-dict 48e825456769be705d29f294f65e6fae587e9ab9 perf(tools): use load_config_readonly on the approval guard path e8656bedfede4e519b54159c435dcecdbf571351 fix(agent): byte budget for the canon-args memo cf803603dc8b0a4dbe9b0f62c7700aede08841bf perf(agent): memoize send-path tool-call argument canonicalization a2f95e4c0e0df2ffe8a55bd4033f0885d427fc86 test(memory): hoisted-retriever fixture uses a real tmp db, not :memory: 89f74d58f6ba0aeeaaa02afb0d58041952b231ea perf(memory): hoist loop-invariant HRR encodes out of retrieval loops 8f91e249e45ed75fde966822423183a5fc2f5620 perf(state): add messages(session_id, id) index for window/ordering queries 6e786e927ff0746ddb55509c57bae6de979e47ea refactor(cron): drop dead advance_next_run import; wrapper tolerates duplicate ids 947310437b2548d75e4a4e384deaad068bf8ca47 perf(cron): batch advance_next_run for the due-dispatch loop c4d67c3add8e08684c0807d28319fd04a964202b refactor(discord): extract shared reply-reference helpers; fix PartialMessage comment 01ca8be20729ce2c2bd364b0c823bad89a623b1a perf(discord): build reply references from ids instead of fetch_message e4257c171ad4d7941dbac772aae40bd8898ebcfe refactor: single chokepoint for the pre-import version fast path d3832a24bcd44536f48846a239f92b41e93d10dd fix: fast-version follow-ups — PROJECT_ROOT NameError + renamed output label 3d20f106ca69f02af6a207ab7ddc8891a3b7c303 perf(cli): fast-path global version startup 26e0b1c12c2bbc2d1ef4640df18abff2d737445a Merge pull request #76837 from kshitijk4poor/chore-nkreadly07-email 4b3f0148d1c70ce35bfcf8b7888b05d2d10962a7 chore: add contributor email mapping for nkreadly07 30ba736bc97a0f1778403600f153cdff8c4f36ec Merge origin/main into feat/desktop-gateway-favorites 0a62610f10cc34d696b2239b2c69fa1ba0f1ca63 fix(cli): swallow fsync errors in the openclaw EXDEV fallback 9d6ef41a53d2886e5e33ab4f85e244df88f68299 refactor(cli): review follow-ups for the config.yaml import guard e75336d5977f50047259389384fe3d5a83d13c82 fix(cli): preserve symlinked config.yaml in the migration script's atomic write 981a5986469df4cd6d95d3c675ebb908edf060a6 fix(cli): stop hermes import-agent from destroying an unreadable config.yaml 849130c3e3b46a83c7f096668974f9d5b9d13277 feat(desktop): gateway switcher menu in the profile rail cd6585abf88df4556cfdcfbc02a240a77ec7ee76 refactor(process-registry): fold kill_started_since into kill_all via exclude_ids 8f0f55eaacf13fe6465f490d5a20681edbf5397e fix(api-server): epoch-gate abandoned-run reaps and cover the /v1/runs sibling eb4772ec2f1d788b85952e9dda7793437f39624e fix(gateway): guard empty task_id reaps and prefer the finished worker's result 1b886822deaf01a596493209a43a52197e974600 test(gateway): cover the run_generation guard and API-server disconnect reap a35691781a3a7b684975a12b8de1f9f0f3531e23 fix(gateway): close cross-turn reap race and cover API-server disconnect 80e4fb5995ec3f1c3bfbef4851b1c0900dd4664e fix(gateway): reap only the background processes an abandoned turn created 0cd26ce9a514b1edb7c2fdc74f288805650b136c refactor(cron): log the heartbeat ceiling stop + test it 8fd1a68106ccbed7f8d9dc85b1f5b2e69484e548 refactor(cron): harden the run heartbeat (review follow-ups) 2314abcbb0effe03cddf8df6098e66513f756ea1 fix(cron): run job without blocking the calling turn (#76502) 840fb55a8aaeb69bfcd6f34a80e57f9a5bcd44ce fix(auth): enrich device-auth timeout at the source to cover the dashboard poller fbf26e3845344c256e5832658bb23fbda0ebf195 fix(auth): actionable CAPTCHA-aware guidance on Nous device-auth timeout 0f2da9687f654a2f0d8be671d88c57e851204d58 refactor: share category detection and prune vendored SKILL.md hits 881ac52423ad76c3b4925bc0f3390cb91b49866b fix: widen category guard — hybrid skill-dir nesting and file collisions 75e85ef6ba9a485ba73bdcc7aca3420bea1c5a31 fix(tool/skills): refuse to overwrite category bucket during skill install (issue #75983) fc61608a17d613c70dfdbef107d5d10aea626541 fix(security): isolate explicit Docker passthrough snapshots 7138b9587a26be8f4b75ab71a09f4d50bd8c18d2 fix(security): scope passthrough env to routed profile 845031ad81e4d4d2c53a7905015bc7d9d604cef1 chore: map salvaged contributor emails (CocaKova, sergioperezcheco, x7peeps) 52308ff455c50ef2c75f4097af14378362d2d5fc fix(env): seed .op.env bootstrap into cold-profile hydration 5438e9c6293a53414f99a01e0aa7b08cf14350ef fix(whatsapp): default-profile UnscopedSecretError fallback + full bridge env set 4f4ea9a6ded9a16c046ec1a8a54ea82a1a210bea fix(whatsapp): route WHATSAPP_* env reads through secret scope for multiplex profiles 6ab390a4764050bfed7f6ecb9d88c8e1d6377547 fix(gateway): hydrate cold profile secret sources 3d9a146d81eb15e5d952903ec6ce30aebe248f40 fix(browser): scope Camofox session identity 76cf19fee1f470061c4364321fdca30184f212e5 fix(tools): isolate model tools by multiplex profile 153442dd5b0d98cca8e44d53b80bbd9494dcea0d fix(matrix): honor profile secret scope for recovery key under multiplex 651c5160b7503506beb7107835069bdec629eaee fix(gateway): run manual /compress under the profile secret scope 226e27035b73e940151e757daab26c5c53ea45ad ci: temporarily disable Desktop E2E — red on every PR since Aug 1 engines churn (#76627) 14478ee4271600f0843a45a1926ce4cc5c794eb6 chore: AUTHOR_MAP webtecnica@gmail.com → webtecnica (#75838) 077317a0f6d17b4e030e42344ded663a4818315e simplify: collapse aux config reads, trim comments, use load_config_readonly c19c63d9e6dc35f5a5fef22d4aea1d7d32d20eab fix(agent): make auxiliary auto-chain fallback configurable and free-only (#75803) f86693c2f9c073cb38694aef009ef7b6ab8bc3f5 fix(tui): fail closed when prompt.submit cannot persist history truncation ed2ae200da866b4decf97b89e094327275838300 chore(contributors): add contributor map sswdarius@gmail.com 3b767d8905423a48f8e39e96f7397ce4ba4492b9 exempt android installs from nemo-relay 582606f176f5467deb96bb949e0879a8e18f31dd test(tts): reconcile test file with main and add regression tests fa60bc5a9064a6af6354f56f0cc3d47763f3e053 fix(tts): apply 7 review fixes to prefetch pipeline 026707a516070bcd5265115be09aeda83d695e99 fix(tts): per-sentence prefetch pipeline with PortAudio resilience 88a629b9dcd2fb12af5cda3334642cc15d16f072 refactor(agent): share the cache_ttl disable predicate across init and stub paths 8ee51747fe52fefe428e3d174a43bd2001e5bdde fix(agent): consolidate cache-disable stubs with blank_cache_policy_stub 8e1a351e827d1319c5a582418259df0794e6c050 fix(agent): preserve None cache_disabled when MoA has no agent 67db87009ef2e952f2884c7a7e1ece6bcdff91c6 test(agent): drop unused pytest import from cache-disable tests 8a29703a1b1256971e143852958e98032decaf9a fix(agent): honor prompt_caching.cache_ttl=off on stub policy paths f5ca0e2f0bb01011d09870c58289e12efd4dd101 fix(gateway): honor empty WhatsApp allow_from over env grants b35f219aedde2f25d55b1173c0af8954bb152816 fix(gateway): apply WhatsApp identity aliases to cloud pairing revoke 810c8777e1529111f933e84c88ecd09846ae82c4 fix(gateway): preserve WhatsApp allowlist config precedence on live checks ddfc6342ad153751f734ae86dfaa3104c2e56b1b fix(gateway): revoke WhatsApp sole allowlist entry without restart 6035f50477d2732135d85726dd4c42e733d7f21f chore(contributors): add contributor map fangliquan@qq.com f0c87da61874bf8f06e920d9a378986fc6d5d285 Merge pull request #76618 from kshitijk4poor/chore/author-map-686f6c61 0044876a1169a7fc70d7c55ff9a5f49ca427870b fix(browser): guard against concurrent expired-session replacement race 58e85f43143e9d9bd27e1d88078bcd2985386b21 fix(browser): replace expired cloud sessions ff01e2f6d72c2c4fc343e28b5333752854bbf47f chore: add contributor email mapping for 686f6c61 927662e48f34f4e57055bff0e1673691dd853f13 Merge pull request #76575 from NousResearch/bb/desktop-lockfile-engines 63ff4b87b6d00176c63b34e1555fe370944e7ce3 fix(install): sync the lockfile engines mirrors with the manifests 8ced76d619795dc67fc823560a2f9493355b1e22 Merge pull request #76562 from NousResearch/bb/npm-engine-outage c51c92a21830abf4729874464f018b8c85b0b9eb fix(update): survive a hermes_constants cached from before the update 6a9c035a55ff2b4012bf0af5c4143d99afbc4138 chore(deps): regenerate uv.lock against reverted pyproject 8e08a4a16e24144949c066521afddde12d5d31dd fix(install): restore installs — engines floor no shipping toolchain can meet d3f4bf63350a85ca46fb2afe113a6a22ef1624f2 Revert "Merge pull request #75037 from NousResearch/sec-fixes" 47f0070b143d59dc833c4368c18b9c956a477b48 Revert "fix(nix): update electron headers sha" a43a297cb8c90676f25e5fe97bf351676098507f Revert "fix: fix @nousresearch/ui version, update to npm 12" 34b31b3a32d1936eb3f967c93f19fd7dacadcf8c Revert "Merge pull request #76459 from NousResearch/ethie/bundled-node-path-windows-layout" bc1d911df18e14f1c0cd459048b3c6477d4d5e38 fix(update): re-provision outdated managed Node on engine failure 8bfd5af3bc24199cc747172f27e7e9da15bece45 fmt(js): `npm run fix` on merge (#76547) 85c8956ec7f2b4607509980794995e1c5e21e292 Merge pull request #76459 from NousResearch/ethie/bundled-node-path-windows-layout c7b4b4e178d3c24feee60054964066718287875e Merge pull request #76536 from NousResearch/bb/composer-path-copy 46dda84bd7c6b50f9cc653ac19c633ff39e1d026 diag(gateway): temporary relay inbound src-keys logging f979e47eba6e5f6d850ea2fd868f3b3bf46d2b27 fix(desktop): the branch-bar path copy confirms in place 8de9c16b7cf044e500864bca1cf0c4a3db4746b9 Merge branch 'main' into ethie/bundled-node-path-windows-layout abb84c4cdfe5085d515d9f03dbff9beaac2fc6a3 fix(install): upgrade npm on the managed-Node reuse path too 3e0720dd8e767688a5af2db83b325ef28f10cc62 fix(npm): relax engine range for Node 22 / npm 11 (#76486) 97f13602c1ab823add47f2f5f4282b9e2ee1eb49 fix(install): install npm 12 into the vendored Node tree on Windows 6fdc64efcd718bf2d2389b2ff663ca4a2c9e27e9 fix(install): install npm 12 into the vendored Node 26 tree ee276a7982507a3901e36bb53f9b8a7c16273646 Merge pull request #76517 from NousResearch/bb/win-update-lock-handoff 22df1840d6f8fac0aa103282175dac01a4c94ff8 fix(desktop): restore localStorage in jsdom tests under Node 26 e1ccd674c0950912c86cc1f794eb6ccecc72d126 fix(desktop): apply the stale-installer marker guard to both hand-offs 5b3b761404d49111c85cf7fb84cd8b73a0b6b598 fix(desktop/windows): don't pre-write the update marker for stale installers a041526efe650511d4ef4fe28d70defd971c3bb7 feat(gateway): key Discord auto-thread sessions on prospective_thread_id (#76513) af93cb33cb56c5426a539a812affb346b89fb79d feat(gateway): key Discord auto-thread sessions on prospective_thread_id eca996aa33f59f69ca758e9fde95fc52659a62eb Merge pull request #76401 from NousResearch/bb/composer-link-open 2ad0ea4d3f2320473676092e7d660f4eb5cdb99a fix(docker): drop corepack and add libatomic1 for the Node 26 bump 0c3551849f0e5fed3c893fcd90478dd52653943f fix(gateway): probe the target user's Node tree when generating a system unit 777512b76041ec5b724991bdae01f7cf3cf68947 fmt(js): `npm run fix` on merge (#76498) 5ba2564ca0ef3aba4f8b024712f2ad018ddedf66 feat(desktop): act on composer directive chips from a hover pill b13148d354c9ac28d36325616d8fd8a7b9e15ad5 feat(runtime): heal outdated managed Node trees up to the target major 713a983e4aa8824ce9efbceb3b32c1cd962e0a7d feat(runtime)!: require Node 26 across all installers, heal, and upgrade paths aa4ce7a507f0135623dcc02bc1b536c327348a5f feat: add .nvmrc w/ node 26 25d0bcd424d541be72a66ed195cde163fe2a7a97 fix(runtime): resolve Hermes-managed Node and uv before bare PATH baec57de6653bc7cc5ce30606ab88a9fc9de4a10 Merge pull request #76429 from NousResearch/bb/composer-placeholder cb2311fe2b51c650b0aa2f634c618300f3ffcddf Merge pull request #76493 from NousResearch/bb/sqlite-repair-locked aaa6a973781fd5e034c5782ba161c1be123be969 fix(managed_uv): keep project uv config on the candidate locked sync f5130f02328079a8f1958f803e5c90a32213ec5d fix: pin uv python to 3.11 3bed7d4ae7bc9139dd9e26cd54fc70e8bc699226 fix(desktop,install): keep bundled Node ahead of system Node on Windows 3f497e2b4f92ef83f45a98c02f7cb47c12ee069e fix(gateway): relay thread-rename must carry the parent-channel discriminator (#76465) dbb15e71334fc6857af970744aac776090894b83 fix(update): harden recovery diagnostics across platforms 3c20a5661bdc0daf6efda64562f5d65d8bc2b610 fix(npm): keep compatible remediation actionable 849bb47c15a2976c8c6c1677f6f19880c128c0ef fix(update): read npm cache from shared root dcd000a431e9f585cf1c30229e611dacf9545e3b fix(update): verify npm recovery convergence bb50b79284325394760dd56552fd1675f010805e fix(update): make npm failure recovery resumable 38c09e5d739fd91b8f7d281ff92e3e321312cb3c fix(tool-executor): emit tool results on hard interrupt to keep alternation 8e2997125f95c809d3ff060713727bc919022e1e chore: map salvaged contributor emails (keepConcentration, JoaoMarcos44) ed1170cd8ba17740910315cce4711806290a9224 fix(config): make get_env_value scope-aware — the last scope-blind credential reader 18e0683bfc9e843da72387998f9683f2bada0dde fix(auth): route anthropic adapter credential reads through the profile secret scope fe5a718c4ec762ff4c1ae966fb11b659b05928fb fix(env): narrow startup env scrub to profile-managed ACP keys 61b2fa7937ff212352f053add15bfe210832cfde fix(env): strip export prefix in dotenv key scan for cleanup (review fix) 968b66338c9fe41d6e78f122a00bb0e41a9a3575 fix(env): clear inherited Hermes keys missing from profile .env (ACP leak) 6b519255eaf5ab86b784d1cb8ba08f8df7182a18 fix(update): provision a managed Node runtime when system npm fails engines.npm cc93fb4f8406fbfdd2c06966aa93178a1ccf3d23 feat(desktop): register a Linux launcher entry for `hermes desktop` 7f4d155159e2a5d4098bb2f27d3fccb01ff84c3d fix(tools): validate timeout, reject whitespace old_string, narrow /private/var block 62f00319db1713ffcfbb049a163836072a573cd4 fix(patch-parser): tolerate CRLF patch bodies and Move-then-Update c0b0c886263abe3f32abfbca26b585b97081ff59 fix(fuzzy-match): stop context_aware from silently replacing wrong content 021a076880ccb545c5bf2d5d3ecd73ae0b0b9289 fix(file-ops): prevent non-UTF-8 corruption and symlink data-loss 9d08c95464c90bd47e2159f97d63bd3f3d4cf65e fix(tools): dedup eviction task_id + workdir cwd leak 9467e99ac533c338c7db2d566e4295feaa2c0f4f docs(site): redirect /quickstart and /installation short paths 38453baeee4046d742b0d315918442bd6640acc6 fix(setup): warn loudly when the wizard finishes without a working provider eec6d3efde7a9e71dd0f95a7358a7a55b5922349 fix(teams): suppress SDK import-time dotenv instead of clearing environ a98c8eeed1911a8406355a19274d30a193b72635 fix(gateway): isolate deferred platform imports from os.environ leaks d7522118efa196c474eebbfa80d1b1c9094707ef fix(cli): route keyless first run into provider onboarding instead of a broken chat cc0af6b9e8b4682ac54d67d115198f6b12343784 ci: skip Desktop E2E + Docker build on tests-only PRs (python_prod lane) 93ec02bf79d6d11ff0d998adec5809f73eec0514 fix(desktop): keep the hint off the text during IME composition 97971643abf4643cc93f638c1b3553f10a7e52d2 Merge pull request #76417 from NousResearch/bb/kanban-model-picker a5f94e93ad810cb2f3e59f923cb7f86fc385c900 fix(acp): bind session_id in session context for subprocess isolation ff6ed7c491ba285178a2fdc0975d619aefae7035 fix(update): detect EOL-only churn via numstat, not name-only 9772e3b189ccb8ed7d7916b2fb2808a5e3d9a614 perf(model-picker): serve stale model caches instantly, refresh in background 414e5af114d8d94e5eb14e6f73c0fd9ce9010093 fix(desktop): the composer hint stops acting like text you typed fcd5e2cc61f4f3418e68c4eb81f690b15e33f66d fix(file-tools): resolve local V4A patch paths before apply 8c172726c80c8057047c4492908233b7dfed6277 fix(patch): anchor V4A Begin/End Patch markers to full lines 8b8ebc26bb5a433c1975615c7c8e4a0182d94f36 chore: map contributors arcabotai, Sora-bluesky f3cb7c0e01b2b315372cdf7590fe898ba27475df style(desktop): satisfy mapped-profile test lint 5cb19d7af5bb5b247ec4e340bb11f30ba438a2cc fix(desktop): keep Windows SSH runtime at machine root 6d3cb23d24fa7f58daf7552d4f33347e943a4aa7 fix(desktop): reject reserved remote profile names e2c6f2ebc4468e7e7839d611c2b0393e08a2cd3c test(desktop): cover mapped non-default SSH profile 621975de859763d0a87a5b001c0c04aaa6e15460 fix(dashboard): anchor the SSH token dir to $HOME/.hermes, not the active profile d6be88fbc87ebda9f899c227cabb71e9a0ed11a4 fix(desktop): map SSH profiles to remote profiles 4ebdbadef801021fa4335a49f887349495f1ab79 fix(desktop): close wake indicator with main window 53b8f44e75925d165df17809d050dd970a98e023 feat(desktop): add notch wake indicator ff8df5822b072f4c8b4c3bb3e6573814ebf0ca95 fix(desktop): derive font-setting save base from the config cache, not a mirrored ref 261c67b2f8526bac3555cbfb6e186e68ecaca7a9 fix(desktop): cover pending agent terminal font cleanup 0399711bec1865e8afa00ceddf24009b90549f76 feat(desktop): add terminal font picker 131aee9260fdb787c4e347c6cf93e08822b5ca8c feat(desktop): add configurable terminal font family (terminal.font_family in config.yaml) afdf8f9cc5abb00b6429132f139235815b9d7314 fix(model-picker): stop Copilot token-exchange retry backoff from stalling /model open defee936e99420a55bd111269a2710ad5f1af255 fix(desktop): keep the composer's model menu pixel- and behaviour-identical d5d3086b41b6cf3c304d37dc9064520b4b33cba4 fix(desktop): let the model catalog own curation, not each host 602fc5f9f5aded91102ea3003931dbe40a6103ea feat(kanban): pick a task's model and thinking depth from the board b35c34d58cbff05b096b363df1eb6874967b41b8 refactor(desktop): make the composer's model picker a reusable primitive f0ed0aebbca787ea68975dc20d60309338f4b996 feat(kanban): expose the per-task reasoning effort over REST 0b69a6ac021c454ef6496d943ccd61d241e51dda feat(kanban): let a task pin its own thinking depth f88ed6c71768cdc7ea3bfa8cf62d16654792fd2a fix: fix @nousresearch/ui version, update to npm 12 d7c24f264631d48bd4018a1c1023d02837bf27f7 Merge pull request #76409 from NousResearch/bb/example-plugin-off-by-default 9175b05b40f2831afa365eed71f835186b9203c6 fix(desktop): ship example plugin off by default a09ad04653f61fe224110b9dd304afea7b608f03 refactor(desktop): share the composer's floating pill treatment c5be6e7792c7541a91b1396698a09952c5e24991 fmt(js): `npm run fix` on merge (#76404) 7e271d96fc59e804cfd910125f6a9ebd586bc0f9 Merge pull request #76290 from NousResearch/bb/coding-cwd-copy 87bc710609f8b89b6e6b4aa418dde8ee30ec6873 fix(agent): scope parallel batches from V4A patch headers 003af7f85ce2ebe24b38556d735a0d7678a4a8dd fix(docker): update runtime tests and docs for the entrypoint dispatcher f40f4711ed493e945d2946aab3a75793e5d08ea5 fix(install): support non-pid-1 container entrypoints 090d146479260ee7d9253e282226af528141a55c fix(desktop): stop pullRemotePins from reverting fresh local pin toggles 56cf87432b720da71c0cf57a6cfcafa6e729f418 fix(gateway): add submit/bootstrap to lifecycle guard Branch B and label-independent detection d8b041e58b97aff00f4e42216f9f63801ea3206e fix(gateway): resolve sweeper review for indirect lifecycle guard 31dc4f0912004e5c2c6e9e174130eff051f9767d fix: close indirect lifecycle guard bypasses d2fa4590effcd675ba54147369f5efa856057a27 fix: block persistent self-restart jobs 30878411b8e36f43484f8bb07f6ac48be3bebcea fix(gateway): stop stale streamed finalize from suppressing the complete Telegram response c05f0bb81df4c52d41cfe07f91d90bfdf1d4946a test: importorskip discord.py in the slash-gate isolation test 81c0691e1756437355865f7862ad5d0874f2ec0a fix(gateway): per-profile Discord/Telegram allow-deny gates under multiplex_profiles 8babfe95b4510e36f2121e595211b1cdf2dee4c9 fix(gateway): only follow settles into same-repo worktrees; never override an explicit cwd a22d6516df23873247c2f89c586a8e512d79fa9f fix(gateway): don't re-home a non-git session onto a repo it only visited 50d4d25ca2245c806babbb10a05f758245a0e393 fix(tests): stub the auth function doctor actually calls + restore dropped parametrize cases 467c312280b01179ed74197feeccfda348790ceb chore: map salvage contributor email (chelsealong) 64c1db961f6c7b0fa514777b33f3b2c56e559b3e fix(desktop): close the same handoff race in bootstrap recovery 8e06b30cd8b8b767f2e857be9360068c9585cee2 fix(desktop): refuse a second update hand-off while one is already live 5eeafc8d250a02bb8008beae084d5a440b6d2085 fix(security): cache OSV malware preflight verdicts and stop double component discovery (#75485) cb1e059a989acade79c44a4b2103ed495037f1e1 fix(agent): reader/writer path roles in parallel batch planner — search_files no longer races batched writes d5e135a51353c2dbc489d5c2583158b22d8efd7b fix(nix): update electron headers sha a71f20dd18153420fa5a72ac1554e1a8412a644b feat(desktop): copy the branch-bar worktree path on hover fed098bbf0c104edbe232002901c43491b0c6155 fix(gateway): use connector-owned no-clobber guard for relay thread rename + trace logs (#75912) 470cf66b039c73bdd2c21d43094ce41a4db74eae fix(update): discard staging litter when the commit phase fails b675fb2b3e19117889c337cc2ab12e238c604e77 docs: correct os.replace claim and complete the hand-rolled site list bbe93ab8a86874b8d0b9c812e4e622b26b92708f fix(update): restore mid-swap backup before clearing leftovers in staging 66ba36ec81f3923cb285441d528158ab232bcfec fix(update): let callers pass the platform verdict to the venv helpers c1f36f52931dcd6d695290660e44d57259f4cc07 fix(update): extend atomicity to top-level files, clean up failed staging 83314ca381653ca66d0510499c81271171a7b022 fix(update): make the ZIP replace atomic across all entries + dedupe venv layout 15cb86eba3fec5541ac57b7073d9a7e1b55ad3d2 refactor(update): one definition of "first-party module" bf18710a546b42740fcc01ab85ad0d3d23c1a34f fix(update): make the git-path import check non-destructive 822571fa8ea38d61462c12b867b624e77edd54fd fix(update): don't roll back a good update over uninstalled deps aa5d4fd6eed8c278d31f3ed1e7c9749c20c8fc2d fix(update): probe the venv interpreter, not the driving one baecc840e5fbefdca8826ca82472101f60ba50e1 fix(update): catch partially-updated trees that parse but can't import 85e0073902eb1809d8fea7593efa478fae62dbfc refactor(compression): fold simplify-pass findings into feasibility skip 8daf03063dae8a78ac056cdf64247417863bbe78 fix(compression): add pre-LLM feasibility check to skip costly no-op summaries d50858584c699836f11fbd75b0f27a2e32daad67 fix(tui): preserve queued image ownership 5b3c66a04f26569474cc2ef85dfe09dceb3b4fc9 chore: add carlotestor to contributor email directory 321cbcc2e2d702c0acf177f57720f4c5628c3bcb test(redact): add YAML ReDoS test, strengthen existing test with keyword 13ad903a3c6a95714dcc26fca00ebaf6acebf143 perf(redact): eliminate exponential backtracking in config-key patterns 84952e89f922415f47b6e483105e1fcae95ace7f chore: map tron@chriswykel.com -> Wpnx330 (PR #68334 salvage) 536754919d433f1da96990642d40f6d3395e9db6 fix(auxiliary): replan cache sections on the async fallback path too e7340ea28159196caa93a90810c448fab2eedd4a perf(prompt-caching): make PromptCachePlan.marker_count lazy af06308425a01805584fff9cdf0e909657aa5266 refactor(prompt-caching): collapse triplicated destination-plan and label parsing 7ae4a5efbaaf4173bae556963418551d07269b75 fix(prompt-caching): consolidate static-prefix split, guard empty volatile suffix e078c8c6ef9bf739257404d35a9a935a1720c893 fix: widen fallback warning to the sibling custom-endpoint 256K path 4c2d0c7fd86daed75987921272d639e80f3b89b1 refactor: dedupe fallback warning per model, drive pool-cleanup tests through real run() a1ff62a139aca2c5dd13a2c312731371475a583b fix: context-length fallback logging, batch trajectory durability, pool cleanup 34c11fa6894b6b5f843e3356151a72adbf33095d fix(terminal): honor explicit config keys over stale env 9fc12bf7a4bc232698a14acfb18621523a711ceb perf(prompt-caching): preserve tool-loop cache boundaries (#20880) f09c56c003c03de08c01d08084bc48e44810701b fix(gateway): dedup model-switch markers so they don't accumulate in history c4e8613bbab04209ca7126679655dae27e9c5ad7 Merge pull request #76031 from kshitijk4poor/chore/contributor-email-rodboev e9d52d2bdadd3ce124a05d03893ae6b6f50ffea6 fix(caching): honor prompt_caching.cache_ttl disable in config 7d54cb26723664de2d6c07fa6960b5a801e5b5d6 chore: add contributor email mapping for @rodboev 40e0e7ad56f7faac24c757b11d3ef6f0f9b83de4 docs(acp): correct late-refresh docstring — post-first-turn tools land via between-turns refresh 23c13589dd03c9b8647d04cec85982ce171e5c35 fix(acp): serialize late MCP refresh with turn start + self-sufficient agent-build wait 640de6562e040bebdc7f0400e905f49e8f564a2f fix(acp): add bounded wait + late-refresh for configured MCP servers 89f0b63da48bb41fa95fed854d9bdba48afbed5f perf(mcp): non-blocking startup via background MCP discovery + TUI fast path 9b1d8341b23292dce2fac670418913a61de3b2da Merge pull request #75988 from NousResearch/bb/cwd-focus-and-display 1a25214364a39ede3534b01d5ebb9d752d183a6f Merge pull request #75998 from NousResearch/bb/pane-size-remember 3d5f3967d56ad4e4d28e3541bfd8301a39c96c50 Merge pull request #75984 from kshitijk4poor/chore/contributor-emails-prontsevich f35cca384adf1ec07b60124a1534eb9c06a2b61f test: importorskip discord.py in the slash-gate isolation test 5657c4a54113e28ffc3989937e406975460751af fix(desktop): sort display-path import for eslint 47d7b7fb1dbf5a39e91bc71cc381934f06fb3ca6 fix(desktop): keep review/files rails at their declared size 54d8b3a388be425d308846d8b41f9a2e1cb6ab84 fix(gateway): per-profile Discord/Telegram allow-deny gates under multiplex_profiles d109138ef5bdad2231d6be311c1cb6ec117b2631 fix(mcp): avoid replaying historical events on startup (#13414) 883076ccd774061e376d11ba4dfb0d86b7cfd239 feat(desktop): ⌘N/⌘T keep the focused session's project 3707741d9f77de340c2eaf1b1332ca62f9ebe262 fix(desktop): statusbar cwd follows the focused session 5b4c57a7ffed913ee69ba00c487f0fbe137a1c14 feat(desktop): shared path display collapses home to ~ 57b1eb8c4d2e0c3d76c6b8d64dd531ac02aeced7 Merge pull request #75975 from NousResearch/bb/terminal-session-link bfc014e3a8a462290c5114a9e7f6959559a3b9bf Merge pull request #75966 from NousResearch/bb/dither-tail-only c450fb931d4610c0aeb6946e9a3a18c6e0470d8e feat(desktop): switching sessions re-selects the terminal tab in its cwd eb545ddea9f5b6b59011eef0e743ca1be826b1f1 feat(desktop): ⌘-click closes a terminal rail tab ba756333347d6212d5dd04b1c5ae3895d289ac84 fix(desktop): never show the thinking indicator anywhere but the thread tail 151e72a5fc808cd7f122f6894132f3ab2e63de06 refactor: simplify pairing check return and drop over-defensive getattr 29b3adf902fe278ad797d9b0341a783779fafc18 test(telegram): cover allowlist + unauthorized_dm_behavior pair pass-through dae4cf6bb6b76f98f62d6512a0d8aacf1cbfda4e fix(telegram): let pairing-bound DMs past early auth with allowlist e5ba319a5ce89442b7568be4d59f7e7a4d09b2a6 chore: add contributor email mappings for @Prontsevich 18627ff00995dc53d916e8a15f327f7ef4ba7673 Merge pull request #75931 from NousResearch/bb/tui-slash-priority 3572d4bca14307dabbfa04a5ab9326f4ef957b4f fix(mcp): ensure MCP discovery completes before agent build in non-interactive sessions d1c40a731da9097f1cd4fc0d59eb45e8584bf873 Merge pull request #75949 from NousResearch/bb/fix-copy-with-reactions 90e6fe4f55d6ac46f1ed66a1f4a1b90a223541af fix(desktop): terminal selection mirror yields to chat copy 1d97c035ef102802be2c3e02829747cdb1d4f486 fix(desktop): drag-select and ⌘C work on user bubbles again 312f2b13e22a39f2fadda497319acd51e1fa4a5b fix(gateway): stop stale streamed finalize from suppressing the complete Telegram response 85148f79f78af6c5dafdf0fa4e7545ec7f7a1731 Merge pull request #75937 from NousResearch/bb/win-icon-size 5319da7bd2e9c8d2bccd6eb6530a8bab95ebc33e fix(agent): reader/writer path roles in parallel batch planner — search_files no longer races batched writes 4be138eb0362be5716156ff3ac73d3d192d8dc07 fix(config): skip URL alias without extra_headers instead of returning early (#74465) 595be544c0402156ff8265a66c390299ce8d9273 test(config): add regression tests for broken-YAML config preservation df09a90cd6f43d4cbba490fc6663eb5edc616a35 fix(config): refuse to write when config.yaml has YAML syntax errors e5243101186f6b5e081d3098140988bc862b1f9e fix(desktop): render the ico truly full-bleed 41e55679ee695f4d8d4e699e66ad0ca2dc489942 Merge pull request #75848 from NousResearch/bb/toggle-terminal-persist d41d9e4faa4ab389de82d8f5dfdc055ddb2cc039 Merge pull request #75935 from NousResearch/bb/card-retire 72ccdb493cddd7a2fd49f66a2b472c6fae62c33a feat(updates): simulate the update flow on demand in both surfaces 697df8897f2247c99df1fa425cb0024bfcd6a552 feat(installer): minimal update hand-off window bc651571c0b4bb97fec83d069694df3083a93bd4 feat(desktop): reduce the update applying view to loader + one status line 9a463a9e0d8ad1aae8a23785c8059892455169b1 fix(security): cache OSV malware preflight verdicts and stop double component discovery (#75485) 5c7393cc3ea684c2c0caf48d3f7e162b8822e3f1 fix(gateway): add submit/bootstrap to lifecycle guard Branch B and label-independent detection fecf6067c6a9b728a1c70867929c69d3aee455fe fix(gateway): resolve sweeper review for indirect lifecycle guard 3a00b817ba029d561e734d3a823b76b9ee2b08ee fix: close indirect lifecycle guard bypasses 3ada1669e78b0d872aecfb78ce9692bc648b93d5 fix: block persistent self-restart jobs fce3b6e6ffcb2f0efe28a2e7be4e423051bfdb5c fix(docker): update runtime tests and docs for the entrypoint dispatcher 700a7d175c61bf05da9afe835c2888bd63f0ea9b fix(install): support non-pid-1 container entrypoints e0aee14254a33685cfcd339af9c24605596623f9 test(config): add regression tests for broken-YAML config preservation 534062dc059d28ee0f72730515fad8bb345e234a fix(config): refuse to write when config.yaml has YAML syntax errors 80c86c4949901e5f87ecc648c8fff9393f411689 fix(desktop): make the Windows app icon match native icon size f68f58002f68e1f3c2e995fc5e082d58fff5aa50 fix(gateway): only follow settles into same-repo worktrees; never override an explicit cwd d2b698dfc55962640ef9250fc609923c6ad314eb fix(gateway): don't re-home a non-git session onto a repo it only visited feaa32503353cf2c01a94580a6588f0c263b0de4 Merge origin/main into bb/toggle-terminal-persist 9cc3f515629dcf8287ba7ffb237014dbb24d4a29 fix(desktop): stop pullRemotePins from reverting fresh local pin toggles 0b8a3582c6bc622f77a12bc862942cdca174f118 fix(desktop): cap the changed-files card and fade its overflow 15b0b954137b6c08c77eb06246e332e39fb3b476 refactor(desktop): one edge-faded scroller for the whole app 4773e965c0bbcaed624e001588f7f56d21a87fee chore: add hans@groupg.org → hansai-art to AUTHOR_MAP 2d6f8c8a25312a0a0b4eff0540a2dd809e330875 chore: map salvage contributor email (chelsealong) 46027ffd4be4079ce3a65fb3c4a619ca59878c69 fix(desktop): close the same handoff race in bootstrap recovery ec9258c27105d5d89f162881c40827b4f8995047 fix(desktop): refuse a second update hand-off while one is already live f8958f34c844531ad49e6cec35148ef068c382e4 fix(tests): stub the auth function doctor actually calls + restore dropped parametrize cases 64dd8659127df0e36817df6a7b4f2f182fd9cd80 fix(deps): repair Google transitive security floors (#72108) e008b62a72074a802ac4b60c1f2046ac5ea20016 fix(state): route no-more-rows retries through the shared patience helper; add contributor mappings b6ca4fc856c8e8bc3bc922ed48957af853fa3dfa fix(state): heal session_model_usage PK unconditionally to restore token/cost accounting 14eca89779e5d005b4f38a1dbbbeca2c044e7f51 fix(state): retry transient 'no more rows available' across all sqlite3.Error classes d5463e5f6d6d53d0dffb07dff64ecf5373a899df fix(agent): invalidate flush-scan cursor at the defrag marker-pop sibling site 2aaeee2ee50ee46ae24de7249765eb466298a87d fix(agent): invalidate flush-scan cursor when finalizer pops db marker a266155cc440cacf68faf891eca3e0885a1a8829 fix(cli): untrack sqlite connections only after close succeeds 05103c6bdeb8a90dd000a98572cbdeb13b19b99b test(config): add regression test for scalar model sub-key preservation 3ba67fd7bd0837c76835a5c7d347d6319e924079 fix(config): preserve scalar model id when setting model sub-keys 73b8847d7bab62aa7aaaaeefbbcd65e11235bbd6 fix(desktop): toggle every pane off the tree, not off its own boolean 40ec9834b2af2b5700510d131d55f2b6dee540ce fix(tui): keep slash completion alive after a leading command 609cd28b179e8e12d7f7d6558ea8f323d6ce467b feat(tui): rank the slash menu by the skills you actually use 6989a797459f2c7e0029dbc909873cefb16d0dc6 chore: contributor email mappings (rkfshakti, x7peeps) 3b9cf56affb9f0ce9e0149159086f8ad7569b8e6 fix(agent): exclude reasoning_details envelope from tail-budget walk (#73298) 530503a6a56516ce813716d489705e7dc3576489 fix: exclude reasoning_details from preflight token estimate 3127ddcb64631094868fb00b72ff8044564f435d fix(agent): preserve a non-empty user query after compression 021d1914789f6ff156ef0304b4c6cf3135fcd0f1 test(gateway): real-DB restart regression for persisted hygiene cooldown (#74136) 8e9702d2278f358d5500e00d0004faaba5ff78d5 fix: persist session hygiene compression cooldown to state DB d2098331e70101500b4d05c5871d2b49b967d504 test(agent): add compress()-level E2E regression for short tool-suffix OOB (#75588) a1f70343fd568e1c6418aa7b1f850528b0498cf4 fix(agent): clamp tail-cut boundary and summary-scan indices to prevent IndexError 1f5040bdd0f99a28469eeaf3898687ee4cb4ddd2 Merge pull request #75918 from NousResearch/bb/pin-assistant-ui-0.14 cc5043f33f15b2f1aa8f7603ef2c2760d31c8fa0 fix(prewarm): byte-parity with the first real turn — keep thinking/effort/max_tokens ee09120e7c3b872bc9480addea0ad5a6ce26f4a2 feat: prompt-cache prewarm for TUI/desktop sessions (agent.prewarm_prompt_cache) a11d0bdb01ce30d1d05b393adf8edaca1270327b fix(tests): remove stale shadowed test definitions in test_doctor.py b5ca19118e698e9f2a24a0f52fc49a326f840ff3 fix(mcp): guard against duplicate spawns and stale connecting entries (#58862) 5826450d17f0e0ce1e836f91d22882410f33e716 fix(desktop): declare @assistant-ui/core as a direct dependency 41e4b96233fabf837b8efac06e29938a77580892 fix(desktop): restore reactive message and composer runtime hooks 031b0a6786a0f57dcbc6256f2ea84a3f14d16a5c fix(desktop): pin @assistant-ui/react back to 0.14.24 9ceb0858abfd1d3c3b32bd6f76e98d14ed7a2fbd fix(codex): defang reserved Harmony tokens in requests f2060dcc8c2d29d6b2d05121c1de9a4e48b5e331 fix(gateway): use connector-owned no-clobber guard for relay thread rename + trace logs 0d9892379cd77e4d658319f1b14d30c5aad6c767 docs(kanban): document profile-owned notification delivery in multi-gateway setups 6b6435a8748859cc256c7b1d1b4bf1a195d99197 feat(cache): enable DeepSeek caching on OpenCode 5c45d9c20886ed591d8efa33e25345c33ffac473 fix(agent): mirror substitute_api_content's guard in the estimator shadow e3bc51703469bbb26e8d1e9b7b5ec6e26176c364 fix(agent): stop double-counting api_content in the token estimator fae0c4f5f4d556a38c889ee1bef5dac4859e7944 fix(hindsight): create embedded profile env file owner-only (0600) ee5a66ae3e80a141a0146999eb6ec6d6b6d2b98a fix(distribution): path-aware allowlist; preserve legacy copy-everything when omitted a42e3e8ba49c1f533d145359a5ff25615aa6278b fix(distribution): respect distribution_owned allowlist in _copy_dist_payload a0b29343b4df876d1c75044c618777f60eff0de9 fix(gateway): offload preflight-compression warning enrichment; behavioral offload tests 95eae03883e2c8d2839b005e5b7cfad9b31045c6 fix(gateway): offload /model context-length resolution off the event loop 4aa029bfabd366186a9927fd74f48c60b1fb71dd fix(install): expose hermes-agent and hermes-acp launchers on PATH fa9e967a2dc9245f4ba2509ce149e1ae7bb869ec fix(gateway): scope session lists before limiting 75aeba09e0b6002c9dd771de873144a653b567d6 Merge pull request #73914 from JoaoMarcos44/fix/codex-oauth-cancel-race-ia01 95cff54586601bd5c58c59d041f773825119d02b test(config): add _SECRET suffix case to env-routing parametrization 750ef49c07727f76fc60c67ece6c35f50b02e9ad fix(config): route _SECRET-suffixed keys to .env c74f4c5335ac784937689976941cc695a67dc914 Merge pull request #75890 from NousResearch/bb/disk-full-toast 4a1bff642ae6f588d6b7f7cbc4797b7c989f99c7 fix(cli): heal a bare custom provider to its config key, not its display name 57a807373d498a90513d3946a320ae7210733659 fix(telegram): send_image uploads still went out on the short read timeout 6f400d2a2076915c36d33783c3a613a308dad7c0 fix(disk-cleanup): re-validate stale test entries and protect new dirs from sweep 5286fe19813c2281aeea2329556360ba3654ec70 fix(disk-cleanup): exclude project directories from test-pattern auto-deletion (#75403) 3e356612632dce19cd371af99f8c21b4c9c752ba fix(gateway): /steer fallback uses _enqueue_fifo to preserve FIFO head (#75164) 0d87e5d71b374b45edcbf37dc6a21ed9e4445023 fix(api): enforce pagination bounds on session/message list routes d1cdfcd38ab319a6b8916833ff1b34b1132799e9 Merge pull request #74348 from JoaoMarcos44/fix/ia-03-codex-post-terminal-retry 99f773b136fc954f9276e21c903efd8403393a9c fix(routing): guard persisted api_mode against provider mismatch in explicit resolution 854007d1c30e7c868040bc1bbcd5dcee6c991cfe fix(auth): route remaining main-agent fallback key reads through secret_scope d52a1c25e03b4edccb974618d3b53752516b6a54 fix(auth): resolve fallback api keys through secret_scope, not raw env 87f5c5351a2c56e27dc271d7a865a874c18b0bfd fix(yuanbao): await the forwarded-records loading heartbeat 7729c183b4a2f70c3b583eee6f93e7149a4081f8 test: restore four silently shadowed definitions and guard against more 3dee0634c1436635fbcf51c87a7f32b4101a41b9 fix(cli): dispatch /background inline instead of queuing it behind the turn 221be76e36de4f2c0c9395126a71552abe7b4a9f fix(sessions): briefly wait out a live compression lock instead of killing the turn eeaba3a88db906dc1bc7e86946644adbce4bbe75 fix(gateway): do not claim a destructive-slash opt-out that was not saved 65e9ece964988b03c777ea6a563f438cad42f2e1 fix(curator): restore the real skills tree when a rollback extract dies part-way 31032b4f51a0b254b751a838f927f34baee1bd03 fix(auth): a transient read failure is not corruption d358edd9169e5adec8910ed8e1c80e5810b6b092 fix(update): snapshot venv launchers before the gateway drain f3edd0e5383810231bbdc15fab8cb88a1560c662 fix(desktop): use the canonical gateway matcher for the preflight exemption a31fe8db6eb701ba7a9226a19e9f09ae651a6c00 fix(update): stop gateway holders the guard finds after the pause 0bec37aefc454849b0016c887d4bfb9257be737a fix(desktop): don't report pausable gateways as venv-update blockers 05504bd9f090e1825ce08d4ddd10ab9a7edf75d4 test(gateway): make test_gateway collectable on Windows 9507f4382e912d200919ee6c511319f0a300a2c2 fix(update): stop the venv-side launcher of each paused Windows gateway f9522fdcefeab490aa478e26162a8af8ef347641 chore: map salvage contributor emails (zakhounet, Kewe63) 16e66e721fbd92bd0d658366936d69758e5d168f fix(desktop): break renderer-led reinstall loop on transient backend stalls 0ee9723b52c7b5483e58084f687ff6a7f470eccd fix(desktop): make the non-Windows updater bypass an explicit policy d649973751cd7fb28a5d0204441521d88862861e fix(desktop): skip hermes-setup binary on macOS/Linux 484e451cb5c261ff59d53a80f7599087550b4a74 fix(tui): rebind extracted config handler to shared indicator constants cc0146f2de447faa10badef8585c1da6cb04a7a2 fix(cli): dispatch /indicator to set the busy-indicator style (#50618) dd15a28250b543d231f66fd22a0fcdc7b6ac3f61 chore: map contributor dongjiang1989 de6a672168fe29a2204edc27112f79bdb9386052 fix(skills-hub): include owner in ClawHub source URLs and add retry on 429 (#51236) 67d4800d670d4beca3843dbafd48973158affc86 docs(config): document --force destructive-replace semantics a017297cf140c58f5f4e2a4f8879506daf10f29e fix(config): respect --force for bare model key overwrite 99cfa8f06392588bc3bffd3f9ff70c097fa16e1d fix(config): guard against scalar overwrite of mapping sections (#74995) 11f4c213a5605e125a2871fee0df27f56701a02f chore: map contributor Zeraphim e050ca97ff60d03a2110fb2dd129ff77723d5edd test(background-review): reanchor unresolved-failure coverage 2ace68ad378ed0375f9f10e39bcfad7bff628b5f fix(background-review): reject unresolved failures as skills 3b1dfca207235c913c3ead15cd85477d671c56d6 chore: map contributor spfcraze b0040414987c7fa6566bf3df8c9470cab791fafe fix(cron): close GitHub auth-header exemption abuse in prompt scanner 0af8fb05bfd634d2d96ce2cbc0d2826f148c3942 fix(delegation): prevent child HERMES_SESSION_ID leak into parent process env abd10ba7c90f6b64dd77f661eeff6fa16c8dd837 test(agent): cover malformed steer budget path 0fd0db1a8c1d2a2d58853f8937cce1519f840b55 fix(agent): preserve /steer through turn-budget enforcement ae8131ba1ba9340facb84a9cbdf4ed330476986f chore: map contributor praneshnikhar 35b44e0d5f3fd5caa7157f76f72467c6a92c279f fix(auth): apply same source-path write-through fix to non-pool xAI path 4e6299af48a9b0a71bdad1a0dc4d750c770befbe fix(credential_pool): use source-path-based write-through to root (#74339) 1a5a73a563e5f167f6a5b7c35d9476e74abefaff ci: skip Desktop E2E + Docker build on tests-only PRs (python_prod lane) 29eac371d1b0c4eba9f2952f98dc0649f1b7a27d fix(context): persist NVIDIA DeepSeek endpoint limit 2f2d90344c8dfa6898d23371db5fb80aa638f7d3 fix(copilot): add explicit UTF-8 encoding to JWT store read/write 1737741730c3d537bcb95ea28b985ca8852d572c fix(copilot): follow-ups for salvaged PR #58743 7779409a767385055d865bc68ae0ba7635fbc61f fix(copilot): recover from stale/degraded token 400 AND expired IDE-token 401 df8e42877b4980ccace8d475b3da81c453c5f175 Merge pull request #75852 from NousResearch/fix/moa-completed-response-streaming-cluster fdfddb55cbf0ef14330472021c6f3062aba44b49 fix(moa): carry completed responses through the managed Relay path 8fde4ff9d8a83bdc9357d8305563a243721d00e9 test(moa): cover call_llm(stream=True) completed-response unwrap at the outermost seam ada3663ce72f9d49d42a16a48986626b7b39dcdd fix(moa): unwrap completed responses in the auxiliary streaming path ed77a347307e2e9c7f967ae146c4d3148a63433d fix(update): make the ancestor-PID lock handoff cross-platform via psutil 6e8691f432127e4b798b0421a1ba0462ef5dfdd7 fix(update): fallback to ancestor-PID check for Windows update lock handoff 087b2230c4651743541078fcd1827e6d1f9be8d1 fix(desktop): accept scheme-less host:port in the remote gateway URL field 859573d283f3eb9a47ab1585631b9f3be37a4868 test: import LAZY_DEPS directly and make httplib2 pin a floor invariant 37e42808e73fefda2c239efe26f428176a44776b fix(security): pin httplib2==0.32.0 in setup.py REQUIRED_PACKAGES (GHSA-j5g9-f88f-gfj3) a7c26bbb5cf3e83f653b9debd6962d2a839f5c27 fix(deps): pin patched httplib2 for google extra 69902c203e2b83f21cba9a596b5b8a5b1638eab0 fix(desktop): toast when a send fails because the disk is full 24f346ee7770c8d3a7ffded11a4c500fb953f4b4 fix(gateway): fail prompt.submit when session storage hits a full disk 0454b370d1d9283f944643c0bff92a4e9bbd0b67 Merge pull request #75862 from NousResearch/bb/cmdk-on-off e25aa3a3387d88145d2184c95442cc1b891bc356 Merge pull request #75873 from NousResearch/bb/logs-cmdk-only b0d1e803a997aff314e7ed709d92bfc241c893c7 Merge pull request #75869 from NousResearch/bb/terminal-theme-bg 75fb139977f24810efab8f8aba254bfa77d426bc fix(desktop): make the logs pane summon-only via the command palette ad26ccdb1e5764e249650471e695cd984c9f7df3 Revert "A reclaimed session tells the client instead of vanishing" 6f756272f8e240793ebb64f030a315ae5c807e43 fix(desktop): stop the agent terminal falling back to a white background 1a2eee0d637c98c36c4ddf3863e1175c33d3b8db feat(desktop): paint the integrated terminal with the transcript background 35724244025a183418c236097a4de1f79868c23b fix(desktop): put Toggle terminal on the ⌘K on/off pattern 48ded07155ef379d2e0d5e70b729a2943b1b4744 fix(codex): handle completed auxiliary responses 743c4906d928f650f367d5b8161dc2b0a3acdae1 fix(moa): restore a valid preset after fallback model drift 716d274f5814c930d670f814de54ae21ad81cf7a test(moa): cover direct provider streaming for Codex-shim aggregators 8e191af0fb1def683f49feb40fd73149cd5750b0 fix(moa): stream completed aggregator responses safely c23ff21d7ce80f7ec531ccbccc243236ecd89689 fix(moa): carry completed responses through the managed Relay path 52705e496fedf54fe6de8f4f514b352e95e2e28c test(moa): cover call_llm(stream=True) completed-response unwrap at the outermost seam 654915f187d45c1e29e618fb419abb43adee6a5f fix(moa): unwrap completed responses in the auxiliary streaming path 991f5f1e9e192ee8039ad5245401798a925fb380 fix(kanban): deliver notifications from non-dispatch gateways e900331a9dc2b413fc96a3c83cb7204e001d17e7 fix(auth): preserve invalid UTF-8 stores 9d8b1bb28bdb6495368d03404d65c0629b36af4b fix(auth): preserve store on transient read errors 16431b8ab282d7579a5971c7278ca18bd077fe16 test(desktop): cover the tool-panel toggle and hidden-header regressions aca571ef49368f74fb6e004a77fd58b92f9d80ba feat(desktop): let a tool panel shrink to its collapsed header 4802d2d88d92bff9812d0544fd983b4daacea407 fix(desktop): keep a hidden zone header hidden de46fb03655db5ac083bfabaea4eb1656eeaab92 fix(desktop): make the terminal toggle work wherever the terminal sits e08870f62c5904461a9249ec978b8aa0b40cc3d0 Merge pull request #75831 from NousResearch/bb/coding-row-hitbox 008f1efe087feebd4ec76677c2f8f78908ae5f0f refactor(providers): delegate is_official_openai_host to base_url_host_matches 173a73e19192f403060b574240c1855f98fcde4d fix(models): honor model.base_url in OpenAI discovery, cache identity, and listing authority 33a2f29a6334b91539aef22f954a8f9ba2390884 fix(runtime): fall back to the provider's declared transport, not chat_completions 564e9b90afe788083d4b766a012ff4b84d359d9b fix(providers): recognize OpenAI data-residency hosts via one shared predicate dc87d155867b64d1565afd327156e9d5a348f286 feat(terminal): raise Docker sandbox /dev/shm to 1g by default (configurable) 950fe236d0e08d0739d6a2bd90290c30ebcf5272 fix(security): extend secret redaction to GitLab token families f21332f07384cf1582be2b96e7e64dbc18fba0b8 ci(security): include photon sidecar + whatsapp bridge lockfiles in OSV scan 9704ed86c13d0b14a1fe9294636ef6b91fb3e934 feat(cli): ! shell mode — run a command without spending a model turn 5686ea43d4651091332dde2f795dff851d8ed1b1 test(stash): drop source-text keybinding assertions (banned antipattern) a55a52c72f0a7d09af11786f2e7eb4a1cc572a7e feat(cli): complete the Ctrl+S prompt stash — keybinding, state machine, tests cfc5dd6aaa40b74152efcc16afd2fc633204d930 feat(stash): multi-item stash with browsable panel 7fb5d2bc39bd2132dca7926c86f2a3644a383378 fix(process): decode background process output with incremental UTF-8 decoders 89f920901b0715b38e7b475eaa756f55e070dbc0 feat(mcp): warn on hidden whitespace in MCP config values 4579838fd31b6abe51d02ef92827a7139755a508 Merge pull request #75836 from NousResearch/bb/session-reap-notify 54ddc96b6901b1cb92f638fe55a51c195936e300 fix(desktop): keep the coding strip's layout byte-identical 9824e9585cfe8697395c60f4b37518e37a0bcf10 fix(desktop): drop cached state for a reclaimed session 2b039d90e3b9742c4284cf089a65c03d63892387 test(gateway): cover the session.reclaimed broadcast contract 6debeb083662ba1d4ce9620e8b617b1a210cbbcc fix(gateway): announce backend-reclaimed sessions to their clients 6b3d8cf2f17e559f2e644ce3e722c9ceba906ac6 fix(desktop): open the review pane from the branch and diff counts only 8555c6d67a71bf4c54689aa884422a60ec173a5b Merge pull request #75822 from NousResearch/bb/cmdk-plugins 696c2e82655f05f21fd67408b35f5cc8a31b42a2 feat(desktop): open Plugins from the command palette e444d165807f489b5c1ab8e4a612c8d09c2e67a2 fix(vision): make desktop image uploads reachable from profile Docker sandboxes (#69575) (#75671) d782e05daf371161def115f8e1b5861914846281 fix(desktop): mount one worktree dialog instead of one per composer 7cbb04ee811c3cb7175c74dfa7aaefb111be9bc0 fix(desktop): stop dialogs clipping popovers opened inside them 4b60979dc188655eb4fb81abf292890147ec2d4c Merge pull request #75583 from NousResearch/bb/hide-kanban-worker-sessions c2872cf53b6529ae0cb7f44ac4d78718b0695e48 fix(kanban): key the worker-session retag per board, not per database 4a8eeb5d1cd427d200ef2e9b55bc22e48bd4ebca fix(gateway): relay semantic thread rename — register eagerly, poll send-result feedback at fire time (#75581) 17e5f7244af5524841228edb8866633001c4fede fmt(js): `npm run fix` on merge (#75582) 805c483ca56a65984b21baf7d06ea82ba9faec3d test(kanban): cover worker session tagging and retag e41d2029b72a14024bab6b074408ed34949e2976 fix(sessions): keep kanban worker runs out of the session lists 9fe36aecb105f3d2a45d20dc2641193c7bae02e1 fix(state): reclaim kanban worker rows already on disk 1d58e7d2318fe88fae0b04fbb496f5fb931e3929 fix(kanban): tag worker sessions with their own source 890e3c34c4842557d8e633395a366867f6b5fafa Merge pull request #75563 from NousResearch/bb/logs-tab-close 56f4b1a20af1ccfc90ae39cb81c8920a7e538bdc fix(tui): expand collapsed paste tokens before submission (#75565) 2286ee58c52d392b94aa9965691d53ba598d4872 fix(desktop): drop imports left unused by the shared close routing c25e4fe6874d1147aa7c5b685ba977ba5f1163f3 fix(desktop): close the terminal and logs tabs like any other tab cfae306ab6e2f53c4381201c8cbd0f6f48509b48 Revert "fix(desktop): tool panel tab ✕ can close and re-open" 6ecd335aa897e9765fc5c4d02b2f74b2d1e2c781 Merge pull request #75037 from NousResearch/sec-fixes 6cd68d17c2b2c2d8c780f756e514a8b8d9190ed9 perf(ci): route jobs to the new capability-split runner scale sets 0324849fe4a29ba11ccd6689ce4a142c2695fc37 Merge pull request #61173 from NousResearch/bb/desktop-kanban bc49e98143c88a45e97d3a7dbd17494f02d9ca02 docs(contributors): map salvaged supply-chain PR authors dd48d9a8164ba843a44afeef2f7db7720de6c96f fix(desktop): tool panel tab ✕ can close and re-open e803c5aeacdf6a062da49fd7af331e4d500ba81e fix(npm): self-upgrade a managed npm when engines.npm rejects it 3975e9d753360d75797b91cc92dac63bbec2a46e fix(npm): npm 11.10-12.0 support min-release-age but NOT min-release-age-exclude. 9c85d68bcc6aef8c13ca752273fde4b9f95a362e fix(js): update vite fabc2d7d331e067607a55429d9bfd635743950a7 fix(js): hoist eslint shared devDeps to workspace root f7082c5172a697177e5dc25c3e10465c25d55005 fix(sec): pin exact npm package versions in website/, lock. 94c27cae6081e9f1eb407bfdde51fa89bfef836c fix(sec): add min-release-age = 2 wks in website/.npmrc a4ffe39f7330c4155d6730d593e4f5d3cab4fe39 fix(sec): add allowScripts to website/ 88aed1b7974b094a91674aa35d423df4a83e433b feat(sec): add exclude-newer = 14 days to uv.lock 43f18cca81df109c7e8fa69e0c262288f9a0a7e3 feat(sec): add min-release-age = 2 wks in .npmrc 515e88a80f051f8c8c7a1b626058d2e934ec267e fix(sec): pin exact npm package versions everywhere 2158f2a5ad97a5063117d3b5f7cacc7325f749b2 fix(sec): add allowScripts f976284245fb54ca8c85ee82818540c5a4287178 nix: update nixpkgs, update nodejs to 26 390a1771b2942f42a99c8630bf2c0388c8dabfab fix(sec): update npm deps to resolve `npm audit` warnings 1f70e7ee7e5ba4ed029e28030623ad49ec2c3205 update tornado to 6.5.7 ea266a606136e1d7d62d7647363309d13e687d83 fix(sec): update pynacl to 1.6.2 09da0755051fbd40f78cd6e5df7472168d7a9e18 fix(sec): update pygments to 2.20.0 f8d032588cc48122131a2150047694f077f93ab5 fix(sec): update pytest to 9.1.1 eeab0a251dee97431a393d23d668bfc288270d45 fix(sec): update pydantic-settings to 2.14.2 bb2539ea1603451db24a363ce0fbc6c6f2aad209 fix(sec): update pyasn1 to 0.6.4 abcd213504854098e1fe7a90275c873934c53617 fix(sec): update pillow to 12.3.0 0945cc5b52c8578dee5ec12aa89a034a170617e6 fix(sec): update msgpack to 1.2.1 a7efeb082966afa6fe886f4dbb9e0f996274c29b fix(sec): update mcp to 1.28.1 32c392a503a857a005276c46999c34ed0f641441 perf(ci): sparse+blobless checkout for the test-slice generate job 8f8bee94f7f358cee3cdaf96d5a0d44b0c5c1622 Merge pull request #75547 from NousResearch/bb/statusbar-off-default d399c1644b86dbdc97f5d789a8260e9df0f34903 fix(desktop): statusbar off by default afc54ca8060f65f918f9ff4341302db136897f19 feat(models): add deepseek/deepseek-v4-flash-0731 to Nous portal and OpenRouter catalogs 4a94858dd88fa14051c7155fef217763c620b113 perf(ci): drop per-job ripgrep/uv/Python setup, use the baked runner image daa1befaf61f2e2f3f0643818cfd6b32e2b51b10 fmt(js): `npm run fix` on merge (#75517) 53931ffeaaf14f3df26a2164337773ce6b9fbfe6 fix(ci): restore buildx cache reads on PR builds via pod WI login 5835201de19b099d76b8e4c64afe8af90c98af05 fix: keep queued paste payloads atomic (#74797) 24963d574e9866734eab5a93b4070cb97c5bf46b feat(ci): sparse checkout in 'detect-changes' to speed up ci d27f9e6bbff0fd76cbe01839ef7b2d69962affe6 Merge upstream/main into linux-keychain-auto-detect f72d274cf8dc33ddab96d368a90a8970551583b0 Merge current client resource metrics into active-install metrics ac1045e571be0a0b549cf7b08d9d65bfe6645ae8 Merge current skill metrics into client resource metrics e3d10f0a8fc7aba54c4af5ebbdc9485c58c72f5e Merge current tool metrics into skill metrics 1318c213b0214e13670b5939599852d763ca706c Merge current model route metrics into tool metrics 0de9b65c23f37e1822a6217c8d39ad6235d45d28 Merge upstream main into model route metrics 0a7d07c13a979693924682b3649f5a1358b59475 Merge client resource test fix into active-install metrics 07ac9ca6872cd79c4f0995413b8e4fdd0bba06ba Merge updated client resource metrics into active-install metrics a0c364f8f331e478c48556daab70504cdab16a9d test(observability): assert strict client resources 9b8d4133db0585e80f003d2163c0932e9e9aa29e Merge updated skill metrics into client resource metrics 3d5fcab70f0ec5437cb0c036aab7640ded301ad9 Merge updated tool metrics into skill metrics aef76ba398430ed3d5dc3a0469d1d20dccd4c39c Merge updated model metrics into tool metrics 126ff7071b6b755055879648f4e859b3187d0fac Portal free user vision fix + flux3 polling improvements (#75448) 44e5641dac52987251385b20c3accc0370835b86 chore(contributors): map james@terminaloutcomes.com -> yaleman 74fdc578ccda42a7d7c78010ed857493bbed89fb fix(cron): set headers for chronos JWKS requests eaa9582e389a0cacbffd835f9a8af29f386cf542 fix(dashboard): set headers for Nous JWKS requests 83cee29ff715b5278f1e8be7c7a05c19d8b31fa6 fix(dashboard): set headers for JWKS requests eb08467a7a549e37a840e03139ae287058d88941 fix(desktop): redact gateway credentials from token logs 3553c1b31334ae92cc0d93b09c42b73f0245ccd7 fix(desktop): reject empty encrypted token payloads 6cb459af9e8564e329e1865c1ac57429d9ebf237 fix(desktop): harden native token store handling 61d8be5cb0a20602621114cefa166fbe204110dd test(desktop): cover native OAuth persistence path f15c4db4c871251bb82a9762c5fbc772e9903831 fix(desktop): log native token decryption failures a3618c2b2210fb2d3363b22d0cd2a5b8421f5e6a fix(desktop): preserve non-Error OAuth load failures ca7659a86c6a98be9a187e7cbb71cea188a4e043 test(desktop): guard native OAuth parser boundary df1f825ce7395b7ed4ae2bfc0a8deb8d8d731e48 fix(desktop): restore native OAuth tokens after restart 0558ea0c48613e038abe04c9df8eb76b542ddd02 Merge upstream main into feat/hermes-relay-model-metrics 43d29a37c8f040bea4936beacc43e7059d772f4b fix(observability): include auxiliary model routes 539e9b5c1b7a6fce1ea80a4f8ce5a9178472a3bf fix(dashboard): gate resume hydration on sanitized PTY payload bb189bf6fea542a69e5942e983488432acf95949 feat(dashboard): show wait notice while resumed chat history loads 490f7048dddb3858532464cf950be0e3b9cb68ee feat(dashboard): add resume loading overlay helpers c31c27e03a0f61eccb003c714aa8c59e809d44bd fix(desktop): preserve voice stop across speech setup 1789e06ed8b1c68b6ebfb2fcd472534aedcff999 fix: trim identity prompt — remove jargon, tighten directive b24c915168397e526fab2e810fe303e4bbfb05ed fix(slack): trust adapter routing after stripping self mention 53559aaf86b84dadae83cd9bb605ca476f9a0606 fix(agent): protect batch-compaction markers from micro supersede/defrag c696a5fd9cf7ffaf32efec10a4a2a48255217f54 fix(agent): harden the finalize-turn micro-compaction gate against duck-typed compressors b8bfd68af137db300951fc4db1161846a712114f fix(agent): make micro-compaction alternation-safe and defrag user-preserving 9ca4ee72cadc8bf0ef7f1c62757023b8b60694b9 feat(agent): make the micro-compaction cadence configurable d19c18287935cbb009d44478a54304122f29efaa fix(agent): ship micro-compaction opt-in, not default-on 60781a0cc8f07a5a2a3c2828e1a6624b0898147d fix(agent): do not destroy compacted history when a session resumes e8237050fc768897aeaa23f426d3bb6be7f51454 docs(agent): state the real cost, and make model choice the main knob d6265285604e03ec0d928d38a056525f08536d16 fix(agent): derive the micro-compaction cursor from the spliced list ac48add3a7fdfcb53d15c5ee7f97db352c692d39 feat(agent): report context occupancy, not just tokens saved cac9526d2a8dfe3ef24aef0d3209d3f8114256f0 feat(agent): token telemetry for micro-compaction a72f898d0fd7cc88d2e3dcc3a96b666d783ea908 docs(agent): drop a fabricated issue reference 214b5d8612f1e4e510d939971f840d52db4b029d docs(agent): state that user turns are never micro-compacted cd9d9d03b31f98a68f2e20a02a65d8ca9e842aae docs(agent): explain micro-compaction 186cad02f9cf1feff42a1b472b740aa7a41a8b6a feat(agent): per-turn micro-compaction to amortize context compression 7b5a18817e5952a1f4d60edd30fc034c10eb16e3 fix: migrate sibling custom-provider slug sites to custom_provider_slug 2de1e86c160c1a2bcc0219529425f1c15800e396 fix(cli): stabilize custom provider identities f5a18cde69001aec152c3d40805fb65c60bee65d Merge pull request #75344 from kshitijk4poor/chore/authormap-lxman 01c0879785b573c9e5003b558062a2a220a7305b chore: map jordan.mymail@gmail.com -> lxman in contributor directory 98105f31f46d3de58a8f69a2a439cee3f7a5e389 fix(file_ops): harden new-file umask chmod for portability 5aa7594993a4a2c475481c9f61c56651817ac250 Merge remote-tracking branch 'origin/main' into fix-73914-atomic-cancel ce1e8982d18165d38a5549e3ded279ed37282eff feat(ci): speed up npm worktree list 84fc713532eb614c173a866110a1522c99d71f6c fix(ci): fix misalignment on the timing html gantt chart 1d5eb3bf406c4a2b2119c6156b3671a1600c0f76 fix(ci): review fixes — PR-read-only buildx cache, per-arch profile labels f3cda0ceb18d8ba7465a6d223098ef0e56c8fee1 Merge pull request #75218 from NousResearch/bb/idle-cpu 8afdca422ba6d5d330eedc5d8cbe18065dc95bf5 fix(ci): update docker/setup-buildx-action to v4.2.0 b6c51d3a2b0dc2b4efa3286530795ef4be45bd71 fix(ci): update actions/download-artifact to v8.0.1 c6a7f9b0aa8527f2d469b26f9580d6c0f13e7662 fix(ci): update actions/setup-node to 7.0.0 e6343c4e926456b3fa8ab6c86fa6742043f9fa20 fix(ci): update actions/cache to 6.1.0 f84ec82d33908c8076a08be23666212cb7406b79 fix(ci): don't archive timings report 553db6ac638fbbcb85f032b82bb7436b61c8544b fix(tests): forward HERMES_TEST_IMAGE through run_tests.sh hermetic env 98134f4c208963f57c04e46f31153311e5c769d4 refactor(tests): explicit HERMES_TEST_WORKERS over docker-suite auto-cap 0744d23cfa786fae86d719c771ba51423746ab8b perf(tests): split boot-heavy docker test files for parallel boots 4e1eb2ec177af8f6573080d19ef49a9618a28355 fix(ci): grant id-token to the docker.yml reusable-workflow call 31c5021d720791570631e9ea2653b7461c471664 ci: buildx cache in same-region Artifact Registry (keyless) da5fbf7f510cd6b5941e83ce6bb7a89664eb1dc6 fix(tests): join agent-build threads; restore HERMES_TEST_IMAGE env dac754954bcf574dc9d8322862bacd9bdf25d3e1 fix(tests): pre-clean container names + tolerant teardown in docker conftest 34c60b3313432b5b64434952bbb68d06c7d6cfa5 fix(tests): auto-cap docker-suite workers in the runner itself 0a5682f1bd11586e824afd3bbd78c11128470623 fix(ci): cap docker-suite workers at 4 — the suite is dockerd-bound a02db9a5535a0574a8818db6fcbbaf5a54a5c059 fix: doctor + termux-audio container-env parity 26778b756224ab3fe3425500609a81433e9d605b fix(tests): cgroup-aware worker count in parallel test runner e4b38663dd1606e0ea3703192a0835432d11f3f2 fix(tests): two more container-env parity pins in gateway service tests 6c100ec334307ea7bc9d1c29b21827d8cecca914 fix(tests): CI runner-pod env parity b48d73ab6020cb5d8d51edfc0a0e137fc16ac81a feat(ci): cache npm deps better 1fc0f09555baa52502bc9f203380f437844807b9 feat(ci): resource profiler d4e940f241cf66f12cd4b781b4e2799caadc5380 feat(ci): migrate all workflows to GKE self-hosted runners b0785fc1a19afa84ba693ccd5f8a82c79da2f729 Merge remote-tracking branch 'origin/main' into HEAD 044800e3587601d8b6b8d0a78dccfcaafe479a02 perf(desktop): stretch backstop polls while on battery be7c4b8fe744e5e3a38f39461db85073d524be40 perf(desktop): let the hidden link-title window throttle 8ccb4c2cee14a3d0604b6df26adfe5ff2b3b9840 perf(desktop): scope background-throttling opt-out to live streaming ce6dd1a65f4b6b20b1f3b31f75184a3e26583488 fix(sync): read org state from the org endpoints, not the personal ones (#75237) dbe14424ed192b83993e5655629b0dd5714f3355 Merge pull request #75210 from NousResearch/bb/inline-attachments cdca2474243260351d3ac23aa4055c63b98030c6 Merge pull request #75180 from NousResearch/bb/composer-cut-placeholder 22af266b4f3b865144279c81bc77c5cb4dbe7fd6 fix(tui): stop announcing attachments outside the composer ca5ee5ed331dbbe029157f7bcbb5f8b8f3fc8566 feat(tui): attach images inline at the cursor, delete the token to unattach fead8c8d6ad3fa6f422937e97a35936929159a79 feat(tui): one token type for everything deferred in the composer 0b4bd3c7c77532a2c899164a224d237a05e9586e fix(desktop): the placeholder comes back when you clear the composer b1858f33a1cc6083ee34aea41417ea5e18564d2e fmt(js): `npm run fix` on merge (#75159) ab158e8088a847890057b75a63a951155ea93004 Merge pull request #75127 from NousResearch/bb/close-last-tab 9dd7ac670a05f2eff55245a33af22405016edd92 Merge pull request #75126 from NousResearch/bb/terminal-links 193e5f84f7ac755547dc9be89e98bbe82d6f74c0 fix(desktop): the main tab can be closed by gesture and menu c7b021ca487277c322281aef040ae743681132ba fix(desktop): closing the last main tab lands on New session 463fbf5b16749898dd3076c04e8647400c80df3e fix(desktop): middle-click works on a real three-button mouse 4d6589c69c1ea89a1c12aef8f8cf42c638c313dc fix(desktop): stop ⌥-click spraying cursor escapes into the terminal 0cec9896a111ab1cb9a41edfc310d1a371c65736 fix(desktop): open links clicked in the integrated terminal a3fdc189a4f1e2658b754e907ea381646af52504 fix(sec): update httplib2 to 0.32.0 9bdfa9f36e72440559da72bb39b7129a0247f70f fix(sec): update cbor2 to 6.1.3 e9f64e83c17665dd545cf87f5a38edec8eaf9bc1 fix(sec): update setuptools to 83 cc4cab2f592e60a197e796506de9168f74baf3ea chore: release v0.19.1 (2026.7.30) c0689c3bcbf4c67d9a21fe15c0cd5a85e7773faa test(tui): make _load_enabled_toolsets assertions tolerant of first-release back-filled toolsets 97c6a183af6baf1de3d2ca3ddbb1d2487ee7a24c auto populate flux3 in tools for nous portal users 524ab539947aa7a092d749921e0e93913cb683de fix(telegram): apply media read_timeout to all upload send paths, not just video 0a2859cf9a2d6908bb00fc4d246eeb9300d8a642 drop env var 88f6949097d294d1dd52a9cceadf9807f1ca3dd6 more conservative 061b04ebb4b76bf7449e57e5c58119da7c9656f5 fix video delivery 5932ec4552bad49e00790184d6e22a55e7d54c5a more conservative to 120s dcd7a9570419512aa298cc0629983024958ede19 higher telegram media limits 4c7cc62f9fe4294fafcba298a5515346cccee14e flux3 messaging system fixes 5d6aae02bffa7714c4a94f3a0900b37774442dea fmt(js): `npm run fix` on merge (#75055) 3a2b3329855066d2b3ca81e1fdbb64ac4ff6bce9 Merge pull request #74938 from NousResearch/bb/rail-own-worktree 4a798f4bce29302c9e981c877753e083f80fe533 improve polling for FLUX3 video gen (#75010) c9de69c6d5ed602059f5e9c9950c150e07b89212 fix(desktop): keep queued prompts bound to their origin session 07447bd5dbd291389438c19586780b7f7fe67c66 nous portal video gen (#74963) 0f70aab5799e5dfffb7885c42e01cf46867a9e46 fix(desktop): front the workspace on ⌘N when the selection is already null c0369f08914ee6e4b6cf993be66b1e97783814f0 Merge remote-tracking branch 'origin/main' into feat/hermes-relay-model-metrics 8f4ab7ad2c53a5ffda2ba4ff4f1f29d7a94633ac fix(desktop): coding rail reads only its own worktree c48d9a9c6dc38da03160a582eef9f07b855ffe16 fix(desktop): mark tile and branch runtimes as background dd762d07bba2d059892d66b7dd55f6bb962847d7 fix(desktop): only the foreground session may write the composer atoms 8defb9fd60bebe2802eaab7c57fa2ee6a4ff6281 Merge pull request #74833 from NousResearch/bb/status-stack-seam 1fd7548b499b70621fb08501ae55959c4870fe13 test(desktop): query the profile row kebab by its own label 95571de9d79a74bd4904c506dff1e2be9a495257 fix(desktop): fold delete dialog into shared, level up name field, test the view 4d9b7718d96afda3a17c2382e56b52741510e643 fix(desktop): use shared create-profile dialog on Manage Profiles page 14abd64b00bbd5d0f2d6207d21ce50e2c36141c8 test: drop change-detector test, keep behavioral test fbfee8e405fbea96e915f449d8322d3cb81923ac fix(file_ops): apply umask-default permissions in _atomic_write for new files (#70856) 9ceac1896ea96cbedf911da4b682740a2d5d8321 Merge pull request #74902 from kshitijk4poor/chore/author-map-webtecnica-email ad12233f765772a2a62283d78d78bb75817cf8b1 chore: add contato@webtecnica.com.br → webtecnica to AUTHOR_MAP acfd376d66836a2542f0b2d9bca0252f0663fdd1 ci(docker): retry buildx setup on transient Docker Hub failures 7965462d6c6fd680dfd96789f23964a6bb7e0c24 fix(compression): choose summary role by template-visible alternation 36e41c09ed02bd783c1186564bf08cca5c8e821d fix(nix): include new flat modules at the root (#74362) 77bdf932fc55bf57076b0270b5c67bb04c413a61 fix(desktop): fuse the status stack to the composer again b4f8c491d3452926deb7628edbdb6fe2a85ff576 fmt(js): `npm run fix` on merge (#74827) fd90ef77be02d5a082947593c87b03789aa0a618 Merge pull request #74815 from NousResearch/bb/composer-clear-parity 466e6402f6262b63ceeb027c869518862f7c638c Merge pull request #74806 from NousResearch/bb/ref-parity 84d71fb88f088d4939ea30e88a867a9b05be9354 fmt(js): `npm run fix` on merge (#74814) 570337c099018cd5935bd4d3dad3d7808d343347 fix(desktop): clearing the composer lands on the same empty state every way 3eebb99ca82432e704377143e91a1f4209313a99 Merge pull request #74804 from NousResearch/bb/tab-close-stay-right 1238efce135d211f260da6a2ab2d6400224ea03f fix(desktop): track kanban lane phase in state, not a mirrored ref 81e196f2364b61d2e5051f867db59b1ad254966d feat(desktop): kanban new-task hotkey — the plugin command pattern 6a67a4e952942bbe0a9f3d14de917dfc5e22e4e7 fix(desktop): resolve contributed keybinds through the fallback chain eaa61d2aa6c753add91d0abe615103a07ec9a47f i18n(desktop): move kanban to plugin-scoped ctx.i18n (per #67303) 77f1e84a349252834d0b610dadbff4327a32d3d4 feat(desktop): plugin ctx.onDispose + self-disposing kanban bindApi f6c8f35a4a4f6937ed74183872e3c2891ac26f40 i18n(desktop): localize the kanban plugin across all four locales 901205420f63195bf4de1f7e2a436ff6a9c18e79 feat(kanban): talk to a running worker without a restart 346149c4f8075447346eee83ab451a187240b7d4 feat(kanban): task effort estimate via the auxiliary model 027ef381a4fe94150a939cdfb06ab85532bce7df feat(kanban): scope boards to a project 9be67b7762c7e7fdef7fa51bc6508c31391365ca fix(desktop): roomier kanban create-task modal 5c4d1e1ea2797d66d20c2e250ff223dd46a0d055 feat(desktop): SDK — useGrabScroll export + dogfood plugin touch-ups 79e7adae2d3f08e31ef79d4682b7e27592b2be5d feat(desktop): Kanban — dashboard-parity board plugin on the SDK 81aacdef4d27f3546b849394b8997ab198263612 Merge pull request #74802 from NousResearch/bb/dismissed-projects-cmdk 0c4a5d70f5956246ae004427d45c8d9a3c9130c3 fix(desktop): a sent reference renders as the chip the composer showed 0567613497cec4f57c2be227289840d74d7c26b2 Merge pull request #74790 from NousResearch/bb/worktree-diff-scope ec1645a5baab456f6d025ee4eb9560ebb718e838 fix(desktop): stay on the tab that fills a closed slot 383829df2e594ebe52486e94aa0cfeefb36225c9 Merge pull request #74782 from HexLab98/fix/74761-update-marker-self-pid ce6ecf306e315f0b7d71a0f66692b0deaf5a1156 fix(desktop): hide dismissed projects from ⌘K too 87e14d1f2d03c493312a6f4ce4e6f2e464ac70a7 fix(desktop): unclog lint on worktree-scoped rail PR 2e3e9c176544b2b08a238f3248787924ad1bbc27 fix(desktop): scope coding rail + review pane per worktree cwd 14db1a99e21e5523ee61f10f5c3300a5087e8449 Merge pull request #74781 from NousResearch/bb/pane-context-menus 67083c6dde22be9b08d420f349f99d891fee67cb test(installer): pin own-pid adopt for desktop-prewritten update marker 160586ff8d7a069389a7d09849ef59434c6d48a1 fix(installer): adopt desktop-prewritten update marker with our own pid dba7bef5ceb17dadc43dbaf4f86ec3ad0e34a52c fix(desktop): stop right-click showing a lone Select All on bare surfaces 3735ccee236865f2c666971b84c74663fa43b98d Merge pull request #74772 from NousResearch/bb/code-pre-padding 1afe076dbfc02535a99ddc42d5e9a3e1a3c95930 fix(desktop): use the native Menlo/Monaco mono stack for code b7ee610dc95322b6714797f2a91abc0fa59ec408 fix(desktop): drop the doubled inset around highlighted code blocks 937222f4ec80e6991e934e0b140b60e0030c55fd fix(desktop): keep a mid-turn model pick painted in the composer (#74759) d8a9c17dae8dbff598866336752989a26200d56e fix(tui): keep the pending model shown at turn end instead of blipping back (#74766) 206eda50a52dbfe43600392e05114d22de8b3d89 Merge pull request #74734 from NousResearch/bb/tab-context-menu f27d45e2880b46a2239b184ecc8ab88ecfd2843d feat(tui): reach the model picker without wrecking your draft, and switch mid-turn (#74756) dd4eadcf7939d7b80ff9ed04aab04598415eca24 A finished turn ends on its changed files (#74732) 3b47e0c436d6277aaaf9bc8f600a2ce322a88ab4 fmt(js): `npm run fix` on merge (#74751) 9650f555d072d89f51b2c659360bc99799d4bc3c Merge pull request #74668 from NousResearch/bb/composer-attach 19556db610b36e3caa666aef05f1814cf2948554 Merge pull request #74747 from NousResearch/bb/loading-bg 1ee75fc473b859f13f127ecb7951aa486f2776ef Merge pull request #74746 from NousResearch/bb/chat-widget-chrome 7c59101c4a09512dc742b9c8c00d3aee00df98e5 fix(desktop): give every tab strip the standard right-click tab menu 5e807390fde1d9bbae092bc5717ce56c2b176dac Merge pull request #74487 from NousResearch/bb/update-eol-churn c999dc2e8ef402fda2365dc312ad2953f2bc8813 refactor(desktop): one `.ref` class, and the theme owns every accent d83d296473b5ff513b012c9ee039761320473ab3 refactor(desktop): one reference vocabulary behind @ and / alike c17053c4f7e5c52ec34c02ce6323ae0baffc2fed perf(desktop): cache @ path completions like / completions already are 47180dec83e3bc262cc1ea8e9c65586323cf28ce fix(desktop): one label per reference, on every surface 1f72da4f88d294717e7b6c83e618a3dc74f81e49 test(desktop): cover the directive-scope contract cf5b6feae89e71b0fff96be175c534817b1f1e58 feat(desktop): show the active @ browse scope as a popover header 130cc0b8599f4155dba63370628c52093df481cc fix(desktop): pasting into an open @url: scope no longer doubles the directive 4fb4d78989719153ce90176e39836e25747b9bb7 fix(desktop): keep the browse scope through Tab, Backspace, and a mid-message pick fb5efe917abdfce2bee5eb12e182feee7105830c feat(desktop): parse the @kind: prefix as a browse scope 1486046b36223db30ea13c3acad0684a645ceec5 fix(desktop): paint the zone floor with the chrome surface a48f1b6bda0da48e366cc62ab135aa3253147c7f docs(desktop): record the widget shell and thread hairline 277a6f944a3143c28070326e0c920e9810556dd7 fix(desktop): put the transcript's hairlines on one stroke token 148cb807713baf31e36c8c6d1d1c3864cfe2e938 feat(desktop): one shell for the transcript's inline widgets 11089899fbb3ec1c043427c680e8fd8f4cab06c9 fmt(js): `npm run fix` on merge (#74740) c581ad402e942c8ab5ce7eb0be325b33061d17bb Merge pull request #74736 from NousResearch/bb/clear-draft 9d75c418adef0b0739196d6bed4c79cbe46bfa43 Merge pull request #74693 from NousResearch/bb/cmd-backspace 6d5b3e2520d7b935bdda4d941c37cd3d0efab24b docs(tui): list Esc Esc in the hotkey panel; correct the Ctrl+U/K wording 01022d737abd891bc87a4b899e79c4b2684f8903 feat(tui): double ESC discards the draft, even mid-stream 59a7da9a894943039bf8870859da5870ceb62f82 fix(tui): scope Ctrl+U / Ctrl+K to the current line, per readline 94924c6430816849f214d63bdec6528b010718e6 Merge pull request #74674 from NousResearch/bb/yolo-palette 1ae1eb47bc7ad8a1d85ce8bb7e8ee5d50f1d096e Merge pull request #74729 from NousResearch/bb/no-auto-filetree c1ec394160377155177e5dd38cf15731809c6b9d feat(cli): double ESC discards the draft, even mid-stream 7996ec66cddd633e9954c9f3e53ab950ef4080f1 test(desktop): match the switch and disclosure labels to what they render 6cb1aa44ed18ce3c87d02a9f18b1d0a3225f286d fix(desktop): opening the diff pane no longer opens the file tree dd241cf0cda317f8ce2680ad3d24580998e6dc34 Merge pull request #74644 from NousResearch/bb/double-tap-heart 640056704c8162ead5721c7ac33607cc77c8d476 Merge remote-tracking branch 'origin/main' into bb/yolo-palette 3f5ec8b45de9e3ed3101e4d532ec9b4cceb88fa1 fix(tui): Cmd+Backspace kills the line; Option/Ctrl+Backspace stay delete-word 8d112c05f77cfc61cf0478bed2617b9961302036 fix(cli): route Cmd+Backspace and Cmd+ForwardDelete to the kill bindings 9accf79d833f4aeaca2061422bbbc0d920ca70e7 fmt(js): `npm run fix` on merge (#74702) 129b4e7fef9273a225c8c04c0fb34632f55b2e1c feat(desktop): make the ⌘K row note a shared primitive with a state variant 2c71a37ad11475f4d564faede56a94dd93481389 fix(desktop): clear double-click heart lint errors b69d4e5a78b622df59994c23cc9ad728cc709430 feat(desktop): double-click a message to heart it 9d589b92d3e3206a4552fc0ff39345bc0fdb98ad refactor(desktop): one hook for a message's reactions d437d3e54d50ae5d52c800a8ff3f6f2849bba256 Merge pull request #74665 from NousResearch/bb/palette-perf b5ca90050886b171da2802cf27b80955c3d18cb5 fmt(js): `npm run fix` on merge (#74694) 04817665619864e96ac40d78dca74d084f9e2746 perf(desktop): make ⌘K cost nothing until it opens 09fa5c063ccd3cf8a47aacd3de93d4a5fc037a1b fix(desktop): make ⌘K group order the priority it already was c55159f185e0c4a18f4fdaacb666f77d39d10623 Merge pull request #74683 from NousResearch/bb/osc-tab-title 3198ed7cc3d325cfc4b314d530c27d95fa742a26 refactor(desktop): name value-taking setters set*, not toggle* f97583705475997a3f58be7b9e6e5bb16da6b692 fix(desktop): name the direction in labels that describe live state b86ae0d108e1916d6ea72cbc63c75c4dda13a706 feat(desktop): put YOLO in ⌘K and show each toggle's live state 975f4ef38d2ff671172edd2078b75f05bf3b87d0 perf(desktop): budget the transcript live tail in parts, not turns fed48cf5b032304e0ef48338af9e324c8fd7423c fmt(js): `npm run fix` on merge (#74677) f1a91ad416bfb0c4073d0f5afa04e557f14556f4 fix(tui): split terminal tab title from window title 866c9adae3989d079ec34c4744c3df8e8f87d376 Merge pull request #74651 from NousResearch/bb/composer-paste-directives a2a74d7acf4db1aa6042eb9e0b27897243c37493 Merge pull request #74623 from NousResearch/bb/open-project 0bf471dd68b3bcc3746ebab7d94e078d48b81e83 fix(gateway): preserve voice_only semantics for text input 05f5df6bdb7cfcec57aadc9ac93d7a08c684cd5d Merge pull request #74640 from NousResearch/bb/undo-close-tab-focus 1e2d55072c073b8d6c3b99b070ad6a2e46c43a05 Merge pull request #74642 from NousResearch/bb/sidebar-icon-clip 422ecfe1da8376df1dac88fc523c21675d827830 feat(desktop): hydrate commands when repainting inert composer text ccca952b92be9cb9b887518e795d4fcef1252174 feat(desktop): chip pasted directives in the composer c5a68213fad97c8d533c0661c14560c18cadeeb0 feat(desktop): recognize slash commands in text the composer didn't watch typed fa8b959b92c8450e7d66bb659327d932c1a21b79 Merge pull request #74630 from NousResearch/bb/update-restart-race 3209236ae3a25558bf27ca4b88fffe66e9b420e8 fix(desktop): fade the ⌘-held project label 958ab818b8855fd1fda8cc23d7efe5a80b7a7551 fix(desktop): sidebar labels truncate instead of pushing header icons out 8e1debd5ed6cb0fe5737c59682fb0036d79c29f5 docs: purge stale xdist/_enforce_test_timeout test-runner references repo-wide 53f7d137ed8fc39257a10db247e7acd4cc3445fe fix(windows): native Windows correctness for CLI, gateway status, banner, and WSL browser paths ba194c1d19999f1208cb9afee6688e74f21035f1 feat(desktop): File > Open Folder… menu item a11611af39d8514ec483a2856701b079b0a1bb58 feat(desktop): projects in the command palette 5affcd6bf451545e60c9f9fbf731f4e2a05dc5b2 feat(desktop): open a folder as a project with ⌘O 7556c51234d607fc79e7fe37c83cb31de8461730 fix(desktop): focus the tab restored by undo-close (⌘⇧T) 382282d5a0e22e8a1a7b0526c663db65f78e90fd Merge pull request #74610 from NousResearch/bb/checkbox-indeterminate eefcc098a70758182ae201698f9e15324268f715 Merge pull request #74611 from NousResearch/bb/composer-strips-outside fa183062e411570b3f5b1e439fc2f6b43bcd97e7 Merge pull request #74533 from NousResearch/bb/emoji-reactions 8c76fe19f80c96c1a462147c447a7666b826dd2d fix(update): let the GUI updater's hermes update child pass the lock it already holds 98e43be8e00c84cb7087cd1a798a7d0435e8d257 Merge pull request #74602 from NousResearch/bb/pointer-intent e17d05826997e9c0b060533ca29d7c86f80247a9 refactor(desktop): move the composer strips out of the drag region f790d5a6ce32e54f46290e156baefa0500c9f515 fix(desktop): stop the checkbox painting the check and dash at once ba7d214b6a7c3726c38235139def14b46898d625 fmt(js): `npm run fix` on merge (#74605) 745d1383cbc648e7dce1fbca0b4d5b9a051300c7 fix(deps): add frimousse + emojibase to the lockfile without pruning other platforms 5ecc35f9bbae17b7ec665affd5cf444767245b61 fix(tests): teach gateway-server fakes the include_row_ids kwarg fec1ac0a7acfda0b926616e031bef59c30a762c6 feat(desktop): reactions are opt-in under Settings → Appearance, off by default 1af88391397cdc4734f369352643537cd47d97f2 fix(state): make _row_id opt-in per consumer instead of universal a90ccd46b733e0964b71fe2e32ebd1116e681f4b feat(desktop): :shortcode: emoji completions in both composers 6ec319f5306052c1c2ff8bb53d8b94e63b23ae19 feat(desktop): two-way reaction UI — tapback pill, frimousse picker, live paint 7d92056c49a43658e02422ffc006a734b0220719 feat(gateway): iMessage-style message reactions — storage, RPC, agent tool, model context aaf3298d61cf663ba5226a8cd9964c7cccb03bcf fix(desktop): pickers stop eating the keyboard and the pointer 913882cdbbc21a5a7426d2c5f6a3b4765b267d1c feat(desktop): keyboard-first overlay primitives 71a86101abfed1495a7a45617315f541cbaf3529 Merge pull request #74601 from NousResearch/bb/hover-tab-fallback 0ad06ae9da55b5ce3df3f15f1a34e818b6942ee3 fix(desktop): keep ⌘1-9 working when the pointer is off the panes 8eb06e75b9dbf29dfad90683a8efef546e0058e0 fix(tests): stub _ensure_vercel_sdk in vercel sandbox tests — CI has no vercel dist e7bf0ad8cd0f302ce13f51859c239172859023cf chore: keep LEGACY_AUTHOR_MAP frozen — mehmetkr-31 mapping lives in contributors/emails/ 0fe6a36e6e34fdaf42292f2cf6cdffe7e0098fcc chore: gitignore the .lazy-refresh-incomplete runtime marker 6cf4bdd165a8f690b869760eb47d3e2dafa5fda2 test(gateway): fix order-dependent telegram-mock flake cluster 080bb837461a3cfee4c97ebebbf2cca6f3a96a02 test(homeassistant): prevent unit tests from calling live instances 9e9c2206083289ce09dfb002ecd159dc1f359be3 chore(tests): drop accidental temp guard probe file 230a2c273e0e11a5c431b4c73ccb02f10678e6d3 test: harden yolo and kanban signal tests on macOS 3e7a11ca2e5fb9a1faa4866dad493b20fc30b0a4 fix(test-runner): native Windows venv probe + glyph-safe stdio 0860b9804fa912c760b3f9e8a491d451d4a61145 test(tui_gateway): pin goal-command config home against collection-time _hermes_home freeze 7216ca19a6f26999ccafcf2d0eef9e065cc6b939 fix(tests): live-system guard treats only argv[0] as the executable 00cd9b2b3ae95cf4ffed214fb93335878237d9d0 test(fal): pin fal_common behavioral contracts b631f80b7a0645cedb63b7d72dc1e93428f46f65 fix(tests): register no_isolate and ssh pytest markers f708a85d2edadb16f0f125696c9769d72ed25c5b test(tui_gateway): make the tui gateway suite order-independent 9c28600e77ce9a60eccecc7142b612c6e55a649d test: prove concurrency with barriers/witnesses instead of wall-clock bounds f04fd1e7ad4bd23028d7505c7d62a8bf6c2283cb fix(update): test runs never mutate the live checkout — pytest-guard the marker and repair paths 3233de9a21bda73c75fa875090a60128a340dd67 fix(tests): preserve config module identity in backup tests 788126e5abaa3e314da1dd728b9de0967ac177a6 Merge pull request #74545 from NousResearch/bb/model-picker-hotkey b614521fa720ad2df45dee42f2073e74a4827c01 feat(desktop): full cmdk-style keyboard selection in the model dropdown 2d404942471633d5338a8ff514ea7da24549274f fix(tests): tolerate mid-import kanban_db in the write-guard sys.modules probe ef1b06d8536e38d4ed014500c6e83cdc2eaaac82 fix(tests): stop the suite writing into the operator's real Hermes logs dda289933dfa738066397d26a30de0c597a3bae4 test(cli): fix order-dependent test_resume_quiet_stderr flake at the source 7ac63975f725b85c229f7356cf49053dd1aca4f5 test: fix restored-test regressions vs current main c770515e2b6498d87da75593e018875e7bb24360 modernize re-added Vercel integrations: SDK 0.7.2, telemetry off, sibling-site wiring ad12df6ba488129c07c2b58d9ad30dcaba440ab4 Revert "remove Vercel AI Gateway and Vercel Sandbox (#33067)" 0524eccdd8eca64f2021644ce53987b68a97596f chore: contributor mapping for mattmiller@comfy.org (@mattmillerai) d9101bef0aa357a7922319d0d631f85a43ccdca1 fix(mcp): curate comfy-cloud default tool set + drop legacy packaging line fee0eae6d8114b0dbe4dbe052e89d1c83194a0d6 feat(mcp): add Comfy Cloud to the MCP catalog (remote HTTP + native OAuth 2.1) 5a23e3c5221e4a44a38e7bdb79a1d306f0704551 fmt(js): `npm run fix` on merge (#74544) 789d69271aa5ea7b6b51bc7c62ef2f0ce1377376 feat(desktop): ⌘⇧M opens the model menu on the pane under the pointer 33bbf24a625009413c44c7682f28993a5c2f35d8 fix(desktop): make the composer model dropdown's search commit honestly 611c6aab76d452a502ef7053ff600d9209a61abe feat(desktop): highlight matched letters in searchable pickers dd51931bfdfd0e7abb7b4c953abfd61933b52828 Merge pull request #74526 from NousResearch/bb/tab-restore-homing f1120ada4d487416c3c76fefd73346c70f641835 chore: contributor mappings for FraserHum + AlexxRussell (#72542/#73982 salvage) cea4c3362d6a44019375d88298d215ae0f42d1ed fix(gateway): collect quoted/spaced/home-relative MEDIA paths into the history dedup set 8f4122efd29d6a23c889de055be16e17b2a240cf test(gateway): cover current-turn TTS media dedup 4dc9fb8008e60efa36785a045c19dbd7fcda9e50 fix(gateway): exclude current-turn media from dedup 4aa672b23e518bb2e628f4190a1385d64e4b0ca3 fix(desktop): stop cold-start resume homing focus to the workspace tab (⌘R tab persistence) 0bd82a8a84595720ea1f14b103aeb81ca3cc50ef chore: contributor mapping for eapwrk (honcho salvage, #67576) aae6e52005961446aa7f6617d319911518743ab3 test: opt install-ladder tests back into lazy installs under the hermetic gate bd1a850fa280baffc75f60ffe9655617026a0834 fix(honcho): network-hermetic unit tests + lazy async writer start 8d009e4f3e145ef343d72c9a15db918be78031a0 test: guard browser and Keychain side effects suite-wide (#35404) e461e86502c0e9cc056c0f5ecd14e7a6abe1d44f test(cli): remove importlib.reload seam from web_server session-token tests (#38034) 7ba456e98d158375a02e68259be2cd03c0e7a795 fix(test): fail-closed kanban write guard prevents real HERMES_HOME pollution (#69283) 74d9110a7ad3fe03a8492586072383acd0248ad4 test(tui): scope close_race orphan-cleanup assert to own session key 05afea65f4533840a3d258b8cd3d49465b313e4d fix(session): resolve default state DB path at call time 3e54a366e7141aa529e8ef7ce4a38a5414d5382a fix(test): patch _launch_configured_cwd in completion tests for hermeticity (#70041) 66c4c9c0b1f6450f6443b9d644f0a9653355f558 fix(tests): forward Windows location vars through the hermetic runner; patch Path.home() in hindsight _clean_env 2472793b1d707b668ddef933960d97736fc5e296 Refresh on upstream/main: resolve conflicts (no behavior change) bcec6c8d39a02b2376002adac9a8b841d075b886 fix(test): hermetic env-detection tests — pin container/supervisor/HOME probes (#422) 2c37b1af25f936d48fb00edeebd661a7d0b0e775 test(approval): event-based waits for blocking-approval E2E polls (PR #63522 port) 67435c9a020ceedd5d93efae2cac2d8a70cabb56 fix(tests): restore original module identities after vision-routing reloads (#61597) 483b9e33287a10d69662f7aa9e1e5f320bf87e31 test(tests): assert SessionDB timeout without wall-clock 646761c7831ff4c4cd0d6ac711ed791d487fb665 fix(gateway): widen explicit-MEDIA resend fix to the streaming path + log bare-path suppression 7a83f44c4a0ea452baae5a09e76bfff838dc3b4d fix(gateway): preserve explicit send-image requests from session-wide MEDIA dedup 36f885573c5d054fbb3827e5d45f235cf42fd791 chore: map webtecnica contributor email for attribution adf217b58418caec69b870d8cdadd2aa807beb53 fix(cli): sweep aged venv.stale.runtime-* backups on hermes update 819357d7411e74a7539436b9bcf34334370719d1 fix(cli): remove venv.stale.runtime marker after successful managed runtime repair 9d4bfd5e3d261739de59e43be5ded78c07a0db88 fix(config): register WAL sizing pragmas in DEFAULT_CONFIG 52b16c2d924c4fb9e1afce2b1206ac66f40f60dd chore: map salvaged contributor emails for attribution 75528cd26af682d1edc86009b6038a48751d0865 fix(state): reconcile salvaged WAL fixes with current main 74d6cc2209daa729dad0f4856433fd7b4143e7f3 fix(config): respect database.journal_mode from config.yaml 55678460062237fa8bdd18244ea0f75b8375ea4d fix(state): retry transient disk I/O errors before WAL fallback 144e563cddddad1dad19ec3e56dd03bca34a916b test(state): prove silent WAL fallback in callers 0f60cdac27e90a32e57258c6c383f1c126b37510 fix(state): escalate silent WAL→DELETE fallback to ERROR + opt-in require_wal f50d80e8eb7c8d5e288f0f4d7abe8e3b799ac49a fix(state): detect silent WAL→DELETE fallback on macOS NFS / SMB (no false "wal") 7dbf6c258942620afe5bb46e670d7051b60caf57 fix(gateway): add disk I/O error to WAL-fallback markers for ZFS (#55305) 91351b7b775c1add3502d835a18056c6db2ac450 fix(state): make journal mode canonical and behaviorally verified 92914e9b09d6c57aa571fa9198fb6df5240ff1bc fix(state): restore async_delegation.py symbols, keep only journal_mode routing 04ec8414625a0545ead71de7dc28449c5dd5c3df fix(state): configurable journal_mode + centralize all DB openers d26983e4856ee54424fd9daa20df7b4747298eec fix(gateway): relay TTS attachments + semantic auto-thread rename on the title turn (#74482) 8da8a7887d06373e169af6e431ec52ebb439ec7a fix(state): time-based write-lock patience so busy sibling processes can't destroy turns e65ff9625fa4368b39c5b6df10df1fc21508e45e fix(update): repair managed checkouts still running core.autocrlf=true 240afd0b70a016ba17568d597e0f2c32f94f4cfd fix(telegram): batch near-limit command chunks so split /queue pastes don't orphan their continuation 22ccebc4c22556a9b73f62028be4f5b1b19f073b Merge pull request #74455 from NousResearch/bb/composer-chip-stability e4b21efa566758debfd2a546717fd47835c9bfd3 test(desktop): cover the composer chip plaintext-demotion bug class 5fa03c6f3ecfb4ef45c28c1ec9324d39b95c7959 fix(desktop): keep chips atomic to composer trigger detection 1ec592801226b39cad7807387b06bbaba7adf9d3 fix(managed_uv): repair vulnerable SQLite runtime in .venv installs too 08e428ac8bf13b6109157242f2d486f78ad8eead Merge pull request #74446 from NousResearch/bb/desktop-pairing 3ca4220fb3b223fb88345b9990ddded4232c2df3 fix(desktop): stop composer chips demoting to plaintext on every re-render 4d9541b9c35ea49b54ccee40283b2a0147c0cee1 Merge pull request #74450 from NousResearch/bb/memory-save-chip 3c5da5307c8d70951de29b8c27d8f68b0733f765 feat(pairing): give pairing its own change signal 508e73a15afcdf8c31783735e2aa5b8fb3a8a93b style(desktop): gold→purple chrome on landed memory saves c0364fa02eadf26abaec99c42f4b4c142b85ff75 fix(desktop): treat landed memory writes as success, not warnings 4ae5efa3f46bb203ef80d1a73e3af1fb41a36a57 fix: floor gate only refuses configs with an EXPLICIT below-floor _config_version 4b33e5663b4b153784206ebaf734b1e03f6aee2f refactor: config auto-migration support floor at v12 + deprecated shim retirement f174c0b6bb1611a773bf9e244301a9519094a1af fix(pairing): scope the approve/revoke endpoints to a profile a6397c379b8a1c752676513a13adcb00c16cec4f fix(gateway): align multiplex pairing stores 75657f89c4c5afbbde4aa6657cc33b07976e7dfe test(gateway): patch hermes_constants.get_hermes_home so profile store scopes to the mocked home 4cbd46545e285e47fcb9f67d5848d19842aff960 fix(gateway): scope pairing platform discovery to the profile dir d063684b3fe2b177b859997329cdd2b6230b3069 style(desktop): sort the confirm-dialog import (eslint perfectionist) cd8ea6f0f4116e61c7edd303b20682dcc1f8172c feat(desktop): approve pairing requests from the messaging page 5c07ba2f3a49858d7893a919514ef61b6cc0f3ae Merge pull request #74422 from NousResearch/bb/platforms-changed 1d95a227f8813deb5e4ef89228c6ef9019d638f7 Merge pull request #74447 from NousResearch/bb/hover-tab-slots 5010b9496a133a8646a8cbf11e6a5ceb44e7afab Merge pull request #74445 from NousResearch/bb/cmdk-session-tab 011ec4513ead9dde823ed2d6c21d3cec5635e5e1 refactor(web): extract sessions/mcp/skills/tools routes to APIRouter modules (wave 2; route-table equality verified) 1a3a9de630a809cf1b177ec0ddf5b7ff66291e65 refactor(gateway): extract run_sync onto TurnRunner (completes the TurnContext seam; AST-identical body) 15a55cbff1b630c75db791bb09f97a4dc19126ac feat(desktop): tab verbs follow the pane under the pointer 93e54139c44493ac4a89e474815e864de8edfdc5 fix(desktop): stop ⌘K and notification clicks stealing the main tab 272d3be6c8c4371ba57501befdbebb8d3872f341 feat(desktop): find and reuse an open blank "New session" tab fb120f850dfcb993ba20b0d9575ec8851d0b0287 refactor(desktop): move the main-is-occupied check into the session door 4b7f70984397c1c56a5a43363f16b31b7671788a Merge pull request #74436 from NousResearch/bb/update-mutex 7002ed9f9d4d41d536de04bc89634e3ce0af925f Merge pull request #74427 from NousResearch/bb/pairing-approve-entry 4a8697a9d1b2bc23e9943d5e9f1c82bec942d9e3 Merge pull request #74438 from NousResearch/bb/thread-clearance 800c8a0458cb6c6d4ef96c5ed0de04d85a06bbc5 fix(desktop): stop an unowned publisher poisoning the thread clearance at :root 37519b4eebc50b70baa388dcb721f1b3a0eb1240 fix(update): use the no-kill pid probe, not os.kill(pid, 0) 37d0766ba594ead9aade3ee44a5bfe0dd54a6616 fix(pairing): keep GUI approvals off the code brute-force lockout c352a322b081c7074fb99737b0c596c48e24fe83 fix(pairing): reset the failed-approval counter on a successful approval 57ad22262060bf8b8553ca13fcbf05b26709fab0 test: cover pairing CLI approval paths 774d92fbfadb8acbadcb94fa894b30bd9122fd13 fix: approve listed pairing requests 6a444ebec7562e177aa748b83d6e6ad7000f70f3 fix(installer): release the update marker on success, not just on drop 92856bc28acebbc6672e2bd26ae482dced3ce0e8 Merge pull request #74383 from NousResearch/tests/prune-low-value 38d5f44df1895fc33847dbdeb61afb29cdeca86d fix(installer): refuse a second updater instead of clobbering the marker fe8e4d93daad6a3ae24b69401946b0e3bce3df31 fix(update): make the in-progress marker a real cross-process lock 3913ac2ba04f20619a8bae3ff38e4742775ed382 test: pair load_config_readonly stubs at pruned-file sites (post-merge with main's readonly sweep) b3daf1609c6ca4c3feb176599d26a950774b84cd fix(installer): never let a stale --commit pin roll an install backwards 1cf5d3841b37f02062a39557c4a7579a51742e3a perf(cli): stop hermes -w stalling 30-60s on a flaky fetch in _resolve_worktree_base f8e07a332e3e75a3b717db1fc0e0d622dfbb8601 feat(desktop): platforms.changed broadcast retires the Messaging page's 6s status poll 7142dc458058bebdf373d0e63efd0cc6ac7bcfa4 test: complete the readonly-stub pairing sweep (6 more files) a16fd675df2850a63a7d550c645d3485e0af5bdc test: pair attribute-form load_config stubs with readonly siblings 243c9182b1f543ece6ec468e8365a9df815b8619 test: patch load_config_readonly alongside load_config across affected suites 97aba0140620d7235b68098afda369c5a34a3966 test: patch load_config_readonly alongside load_config in run_agent init tests d3cd6f4158c46a5f83b09bc9b8fd451e48d403ed test: cache-aliasing regression tests for provider normalization 59ee85ed50d2796467e6ff18ef7737a001c9e0ff perf: use load_config_readonly() at read-only call sites in agent/ 3c6e7b1b114db790ae377f101a756e2d69bc70d9 fix(config): don't share the cached models mapping with normalized entries bfe4cbdc2a70050a5b0c865c54eaa37992b1f142 fix(config): stop _normalize_custom_provider_entry mutating the caller's dict 7c5a98d888a0f20c654c6933eeb1ff547c91ba15 Merge remote-tracking branch 'origin/main' into tests/prune-low-value 25927884e0c2df0d63ab59e0063254aa0d2fd494 docs(acp): document the Buzz Desktop model picker ce9f6712ffafda485cdb2f00ac21fae3eaf40e53 refactor(agent): remove the inter-tool delay 1a088989bc118857d25f335955f50dcd9a793bc0 Merge pull request #66730 from NousResearch/feat/hsp-sync-client fc551f969109f3c5ab8abb494c544565addf331b Merge pull request #72103 from victor-kyriazakos/feat/relay-slack-blockkit-native-parity a17ac2ca67319dd68658ff149af7f37e5437dc2a Merge remote-tracking branch 'origin/main' into tests/prune-low-value 28524adb0ef62145e8e31d3f2c2f749765e3e5ca fix(tests): eliminate flaky/broken tests — shadow sys.path inserts, unmocked network in compressor tests, stale-SDK feishu pin guard, quadratic redact regexes 1f70ba6bca71caa2c440607b06b74e596969e1b1 fix(mcp): propagate cancellation untouched in _connect_server orphan reap c00a1d58d505123a64fef7e2f0500f6e483e8193 fix(mcp): retain parked startup tasks for clean shutdown fd5397d69afc15dc0af4e8768017d23759587d8d chore(release): map shady2k contributor email ab0d3fac3d4cde14333d4107d8b5ae1475399a04 fix(mcp): keep drain and stop on loop thread cac74e06c85c1d1eadca82d088cc4f425e6a859d fix(mcp): bound loop-owned shutdown drain cc21c4f78ff661e4709f1b6b3d96bf468b16bb4e fix(mcp): drain pending tasks before closing the MCP loop eded89ace26f29ababa098baf8f69147038bf9b9 test(mcp): cover parked shutdown drain path 40ec417881536c2d303ab69322f1761577a81ecc Merge remote-tracking branch 'origin/main' into tests/prune-low-value dfb8c1bd4d0c690ccd5eea653e17e3d94f5ea480 fix(observability): preserve shared metrics compatibility a4973c3f11d9cc92da986cbe150d1e79d094626f Merge pull request #74363 from helix4u/fix/windows-wake-input-device 39975613b13b418e0eceda178434d7be90ad4f91 test: prune wave 2 + speed fixes — 28,106 → 19,757 test functions, suite wall 315s → 294s a0222295666558c72cc2b03d69f932801dcf96e6 refactor(gateway): TurnContext/TurnRunner seam — extract _run_agent_inner nested closures (byte-identical bodies) e23d158f48370d40e9e6f0f78244f8b6741af740 fmt(js): `npm run fix` on merge (#74360) 6b81590c55bcc9c1001a33b51b528784f96c6a07 test: prune low-value tests suite-wide (wave 1) — 46,820 → 28,106 test functions 94d1dff50d170b985b358a62d660286fc173ea55 fix(wake): route desktop control and select input devices f5b68ad58b0130ac90d70d1c8482c610cc21c015 Merge origin/main into feat/hsp-sync-client e0233f8fc592328590832dfdc795ac2ec6f08736 fix(desktop): full-duplex voice barge-in — interrupt during generation AND playback 70411a6152024ecb061972e778f900289c7ef046 fix(cron): scrub ALL GitHub auth-header curl blocks, not just the first 7b5997f11195cbbcef15e0ce8fb1a7f277e9fd1e fix(codex): don't retry after a valid response.completed on drain error f8758dcaf89bc5c5f8608011cad86da56f6e1218 refactor(agent): single-owner call_id + reasoning_content sanitization policies (wire-parity verified) 1ea2ea18fda5c24fb24785db92250329a2c73799 Merge pull request #74298 from NousResearch/opt/tui-methods-split 27b1377b4c5284d0fc16ed5df4c27c507b86559d refactor(web): extract git/profiles/cron routes to APIRouter modules (web_deps seam; route-table equality verified) 46bae7504292a51e3c52635b59f727b51ada1043 feat(observability): add Relay active install metrics 5607d09e03c24baa7894c5b1d7de5a0e2075bd07 feat(observability): add Relay client resource metrics f1fd678e4427be05f98f6ade2502e8fb21576a7d feat(observability): add Relay skill metrics 8502e464a8f8f8499c968f057c21d2b26f0da74e fix(observability): harden tool lifecycle metrics 8714040954757c653a6acfd0fd8c2984dc8fd741 fix(computer_use): resolve gateway session-key namespace in permission-mode lookup d59974fea5fb6c892ec4125a35aaeae78dd47d38 test: update session yolo approval query c2683977525025f9f523a27be69415f8e841b722 feat(computer_use): align cua-driver 0.10 permission modes 847e401b7400e5235bb070550f22d420ab0e9e93 feat(computer_use): align cua-driver 0.9 contracts 3dd8059a05dc4ce0616aaeb5fb5c63cd7f6b2178 fix(tests): eliminate flaky/broken tests — shadow sys.path inserts, unmocked network in compressor tests, stale-SDK feishu pin guard, quadratic redact regexes bcb352eeab113381b5b48f1e2a597b2463d4be59 refactor: registry-owned execute() on CommandDef — informational commands unified (thin slice) ab08e8fc765f4157246f174ac2cd0e6864b92a93 refactor(gateway): consolidate 19 session-keyed dicts into SessionState (turn/conversation/persistent scopes; eliminates wholesale-reset races) b521fd9dc929e005343391b66025d69f085b8519 docs(relay): finish the QA-N scrub in the new relay test files 0dc293f4f774a2a17d50b7bb0c389f2559d317d4 fix(relay): coerce Slack behavior flags exactly as the native adapter does 33833e232e5195ce55722bafa50701c52aa24365 fix(relay): apply the Slack thread anchor on the media lane too 3bb239750d41673e663f320840549c23f2de26fd Merge pull request #74286 from NousResearch/bb/tool-ticker-clip 30c783589cbf548685a0da46eb716894d7c7764c perf(agent): cursor/memo optimizations for per-iteration full-history walks (byte-parity proven) ba7da1332cfcc067f778f424a1fac03b91b03081 refactor: single-owner model switch parsing + effective-model resolution (kills the api_server/run.py divergence class) bd93ccb8905bb3168966399c384c74780cce853c refactor(gateway): shared fence-aware markdown chunker core (yuanbao-derived) + canonical table-row splitter 5b751dc0ad9e7408b20008fea5ec7b29a48afe71 chore: remove unused imports and dead locals (ruff F401/F841 sweep) 4ad78a98fbe103eedd5aa605d8f6f631dc3a9be3 fix(observability): derive tool metrics from runtime metadata f67ca220ab5ba1f2a764b84b9c8db7d003a042f6 refactor(tui): split @method handlers into methods_* modules (mechanical move, registry set-equality verified) c3ffe27383b3cc3c995ff9ed26b526e69053f78c test: align doctor spawn fixture with stricter health_report validation 28cc6599dff8f9063a26fd0003d38f2248a8fba3 test: pin cua-driver resolver in CLI-fallback sanitization test 16720dc45b0f22a2cefbf5f9fe16dff4432802db fix(computer-use): hide the --no-overlay help probe console too b0a8775d66fcdc8db0b5bb0d5924b92ff16048ea chore: map salvage contributors 7bc9956660401611863acd9f0785873861a8934f fix(computer-use): normalize Windows manifest paths in WSL 50e27abdd35da2c5ae4e93e7e44ede2f847d300e fix(computer-use): hide Windows cua-driver subprocess consoles 88c19a4edf0adc5ca29037a1e857ab2c9ab81213 fix(cli): repair Windows cua-driver autostart registration for paths with spaces 2164e548b1834adfccf42bd2d729976578990794 test: retarget nemo-relay telemetry stub at read_raw_config_readonly 44d5a2df5a50440e14a1aef78792e98eecfe81a3 test: point relay-metrics mocks at read_raw_config_readonly c2eda92fd047665aa8752e68f2625059c409c073 perf(config): stop deepcopying config on per-turn read-only paths 6d292fd5eb3fb04d70716de26b9f3ef4f97fce8f fix(discord): retry slash sync after failed fingerprint 53e4f87017a8ce8493bd3a2c8bdb4eb8005db1b1 fix(desktop): let an opened tool row escape the live run's one-line window b84389c6255d68805ee973ef3bfd896cd18872eb Merge pull request #74277 from NousResearch/bb/remembered-route-per-profile 8b0c3da8c04b9f205270688559007b4b0bd021a2 feat(observability): aggregate bounded tool metrics a0476b360512c0e9f109ae99f705e31e7cbba95e fix(observability): preserve configured model attribution dc4714b1e035619aa8e8882e37ee6f4b4007fef8 feat(observability): report model and provider usage c5d37bb95cf7a932d644eb2811f57a7f00b9f670 test(tui): pin approval-mode fixtures to env HERMES_HOME for canonical resolver eff3b11eb22cb98903a354a5023f3d42334ead07 refactor: complete approval mode/timeout resolution migration to tools/approval.py core (TUI + codex surfaces) 703fe941745174d206386579e45d0f75a9dba990 fix(gateway): keep no-patterns early return in mention compilation 1f45ff9e8ae98c32f2318612d48143f651289a3c refactor(gateway): shared exec-approval/picker formatting cores in base adapter 4fe5410d5789b3a8909018a91475fdaff5a21dfb refactor(gateway): shared reaction-ack policy in base adapter 58400a67931f3aea31b6dd2631caf36ea6a4fbcf refactor(gateway): promote compile_mention_patterns to helpers 21d1d08a2f916171d1e19f9d340a0475b560e828 test: convert doctor env-sanitization check from source-inspection to behavioral 57b3c1a86f0828801384e50a7093844e7e2dfdad chore: contributor mappings for cua doctor/key-combo salvage (#62915, #68452, #71590) b9215f5bc95ec3dfe0c5417085e8200749e32c48 fix(computer_use): surface CLI --version when health_report version lies c6db7b0f4f010b64f6701521b535cbab89cfd76d fix(computer-use): fallback doctor when cua-driver health_report is unclassified 0411869503c0d9c76f58ac28f3e1aceed3891f78 fix(computer-use): block destructive key combos in hyphen notation 8eb5e2cd20e18f97391e743fa39a89be2a5fcf80 chore: map contributor email for umi008 f2a4ca9637666f3407600dde9e80308eefeee1d3 fix(computer-use): normalize cua-driver result envelopes c4212b94530025300166797cf0e406f857cc4645 fix(desktop): scope the remembered route per profile 595a408f4028fb72e244ba818ddec2b7d92d670a rebase fix-up: carry perf(update) 3a69e34702 changes into relocated _cmd_update_check/_cmd_update_impl c64a4d75e5dd9f6cc80eae9fbb822238da3d67b9 refactor: extract dashboard process-hygiene helpers to dashboard_procs.py 0e7c4018f767a8d552c19e5fb94ea93a7d1cd05a refactor: hoist cmd_sessions out of main() into sessions_cmd.py 927463efcc441060c833aa70c99161115a547583 refactor: extract update pipeline to hermes_cli/update_cmd.py (mechanical move) bc747001eec58150aba08e586ff1e7a25fc532aa perf(imports): lazy-load heavy SDKs off the cold-start waterfall 2006cd58955e8e9b53b7ad792589af9b85fb3df4 refactor(gateway): declarative busy_policy on CommandDef replaces hand-written mid-run command chain ed33ebca1d60ae5069f871e4e5f13d97df384e4c refactor: canonical config loaders for behavioral reads + guarded raw-read primitive (kills the managed-scope/env-expansion drift class) c92e2c0fbf9bc436c5ecbb5b68ae0b481a024fac test: age the disk L2 entry too in the server-swap redetection test d7a4065568b84139306c34757747c99ddb11ccbf perf(local-endpoints): disk L2 for server-type + ollama ctx probes, faster timeouts cfa43f520a1c192b157bac03f45eb5409f7b285a Merge pull request #74245 from NousResearch/bb/pinned-messaging-index f9f3811105edaf19c0a9954343c7644ebb253440 Merge pull request #74247 from NousResearch/bb/session-render-jank c8f911112c13e152bd029ad00f1717837a911af6 Merge pull request #74033 from NousResearch/jb/session-detail-profile-stamp 0c1a872af725443af1d7f5958e1e499e88787100 perf(install): run connectivity probes in parallel — blocked-network worst case 16s -> 8s fedd689d37f18cc67e01a062303349032ea16d7b perf(config): one raw config.yaml parse per process instead of 3-4 abd9edbea3921272ae0fbb5a907d9a21ea836507 Merge pull request #74234 from NousResearch/bb/session-pins-server-owned 0034da2975c56a23477b9704693732b8ebdae887 perf(stream): replace per-chunk repr() with delta-length byte estimate 3a69e34702871be755c03d66d46c53585a365dde perf(update): cut redundant network + subprocess work from hermes update 9179fb72ea96546848b10c69db7397058387e22f refactor: extract web_server Pydantic models to web_models.py (pure schema move) bf15259e33ec16194ea80b071e0e089e0e0c8325 refactor(gateway): shared media-cache mime dispatch for adapter downloads (per-adapter overrides preserve historical mappings) 7b6a67f82e6209e71561d442f4c811f01ae4e2ed refactor(gateway): extract duplicated StreamConsumerConfig setup into _build_stream_consumer_config (preserves both sites' divergent fallback semantics via parameter) 326764e25520296621bc40940f4b9364b2b4b6a9 refactor: table-driven config migration registry (17 if-blocks → (version, fn) table, byte-identical semantics) 21c7ae856300145fb0f07cb29fe6bfb5c22e20aa refactor: split SessionDB into Search/Schema/Portability mixins (mechanical move, ~2.9K LOC out of hermes_state.py) 3d48f893da3d361189201123b5598668a4ca9b98 refactor: single build_subprocess_env() factory for all child-process spawns (profile + secret-scrub single owner) 1a7f73b8ea72109b9a8432d90fbb411309cdfb4b refactor: migrate hand-rolled error envelopes to shared tool_error() f57cb2e4823231936e3f91102c90214374158be0 refactor: use utils atomic writes in cron/skill_manager 6f7f7cd064b2555724eddb8ce4d185d1fc15bb17 refactor: use shared strip_ansi for inline ANSI regexes 7c198c5e4461ecefe8c047ba23c05a0d64598791 refactor: single shared Retry-After parser a7cc924204a7d6ca7c9ea1b6e775fca2fdadd177 perf(desktop): add a session-load scenario to the harness 8c92983fde0fe4a5d36b6cc065fdf92a7a124f31 fix(desktop): anchor the transcript through a session load 46b55c2c9143f1ef4b6856d823e1ccf6653d8770 refactor(desktop): extract the pin index and cover the messaging slice ab694586b2ba8a5a39c6e97d66ae16dfe2257bba fix: resolve pinned Telegram sessions into sidebar Pinned section 58b78f5a0a6d71861dedeec999056140c56cca80 perf(banner): scope startup update-check fetch to origin/main 5081551f098d893ff45bf763e0b8c9e0eb3725e3 fix(voice): full-duplex agent-turn listener — interrupt by voice during generation AND playback 8c196ed85c724ab592d736a286b7c3a67c05ecb6 test: isolate computer-use approval globals between tests 33fe1cc9e536d1a34634ef6c00186041e3163757 fix(test): patch threading.Event class for CUA timeout tests 490056d6d37b6b6f40f56417705ae74d3e115162 perf: lazy mcp SDK import + tool-discovery mtime cache + browser_tool import diet 8ce8b70dcaa295f9bcee1bb625d3caa3342951b4 feat(desktop): pins sync between apps sharing a gateway 3290807e60f97afb5b7c585d7c4011f3526b9bea feat(api): session lists carry the pin flag and never drop a pinned row 1b317d23fba418123c7d1bfe65ed6630486cf7ae fix(sessions): a pinned conversation can't be paged out of the list 7369b353244b65833c73224317b55046485f6fa9 perf(install): run connectivity probes in parallel — blocked-network worst case 16s -> 8s 3334db67a47b3e74d49c2d96d2206d9bea42f65d docs: fold in remaining live fixes from overnight-sweep PR cluster 782d0219a0a3c475882b2dae0dca7d8d80eecf0a docs: sync overnight sweep with registry, gateway, curator, cron c6f98b0cba9c8509ce979619ba04d4968c07b0a1 docs: teach providers: dict as the canonical custom-provider format 1fe06115d1ed00ac859e5aa2a6afcde4a2c8bbbe refactor: extract DEFAULT_CONFIG + OPTIONAL_ENV_VARS to config_defaults.py (pure data move) 19055492aac32e26bf5c57c3ead376b0b084bd28 fix: route stray HERMES_HOME hardcodes through get_hermes_home() (profile + native-Windows safety) b8ceba97ed0b2bf0255cc5c8c61c9110a026cda4 fix(web): make PTY resume sanitizer work against real PTY output 88e67508bc5758d99d7f91829f1cec63836972cf fix(web): replace stateless PTY regex with tested PtyResumeSanitizer stream helper 5e37c9490689f9de322e07fafc9b87ac6d4cca70 fix(web): gate ANSI filtering behind resumeParam and reuse TextDecoder 4b6e1e440e966d2b91c83a12359f7db04e934f8f fix(web): strip ANSI erase codes and blank-line bursts from PTY stream aff380ddbeb76584ac10562dc546b6871a890658 Merge pull request #74176 from NousResearch/fix/cua-driver-refresh-pin-confirmed-version c26398ccf1920684493df4d117d9364c698b6405 perf(tools): harden manifest cache — atomic writes + per-checkout scoping 7251e71ff28431bfab01e97529373fd19783ecdb perf: add mtime-based manifest cache for tool discovery 5fdc9d2a9d4d1315a572b3104fe6e14f9ed94a73 fix: pin cua-driver refresh to the release check-update confirmed 7de33cc57eb5091ea414c795af2eae227d47e149 Merge pull request #64536 from victor-kyriazakos/feat/gateway-health-diagnostics 43874d1a96134729ff65d8a0da84a38ef0fc723b docs: accuracy sweep + coverage for 2 months of shipped features 068d7812a40d5216b7e6d4ef0fb587cce535ed03 docs: document Hermes Relay and the desktop feature wave 355b37622594d8dd8ead25bca1b845e80b54632c docs(skills): regenerate skills catalog; fix generator sentence truncation c19fd5c5056e1cfc24136f99cbb04d4797b87137 fix(cli): wire hermes import-agent parser into main argparse tree 707f31668740dce1740952b45161a4700818282d chore: map contributor email shag@agentmail.to -> sg-shag 64beb25a350283985e8b613ac62d800e9e32037f fix(cli): stop hard-wrapping streamed paragraphs; prefer OSC 52 over SSH 644590369ffcd5504a1ff60c8438f7280eb1b821 fix(tui): keep local tmux native copy fallback 8736ecac371595b7a75d7f5c66296a3c7e87a234 fix(tui): prefer OSC52 for copy in remote tmux sessions 1773752c8cad08992fc4ea775c6613bf527b8455 Merge remote-tracking branch 'origin/main' into feat/gateway-health-diagnostics-monitoring b6729ba90552f11ac1064c3c7dcb7ef20361ef8c test: importorskip numpy in thinking-sound tests (lazy voice dep, hermetic CI) d04226431047c5343615cd884d1fe505a74b658f fix: guard _voice_tts_done access for bare-constructed test CLIs (getattr pattern, skill pitfall #17) b0734b0aa5ee4aca0893852efcc54063329fad8e chore: contributor mapping for beardedeagle (#71083 salvage) c15f9b71a50809f4352ce583708e4b5665a71312 fix(voice): spoken barge-in works on every TTS playback path (CLI + gateway/desktop backends) df093bf33cf1d491a19b8032c8d4624aaea32665 feat(voice): calm ambient "thinking" sound while the agent works in voice chat 6fdfdc15973d8a079c6219ce8cc83207430ce615 feat(voice): "Say to end the voice chat" notice on voice-mode start (CLI/TUI/desktop, i18n) 9e5f1b619c3e5fff457c8d6fd8a5709b97bc60b3 fix(voice): silent cycles never end the chat while the agent is busy or TTS is playing be424703c4d942af9edf18533720e84d5e25e921 fix(voice): rolling-window VAD, duplicate render suppression, TUI gateway mirror 27b9e13ebeb17bd49b794856e4c8de355c8d78c9 Merge pull request #74138 from kshitijk4poor/chore/contributor-email-mattezell e327eaa2a070bf6788d179e73c9ae5096d652e94 feat(sync): default the sync plane to production cff9728587da4f3c0beed0786f9bea528e489f13 fix(cron): record failure for BaseException escapes and leave a diagnostic when removing wedged one-shots 97fa2603d967d1c2e7674387c3dd936228dfed48 chore: map ezell.matt@gmail.com -> mattezell for contributor attribution 0dc0f228dcec8fa54430882daf72e901d6a89f79 Preserve provider-zero retry semantics in production fixtures 41a07f5b8451f88a8b8b5adfc0cfdc2ada0a1f90 test(cron): lock the #65773 env-injected credential contract at the cron layer a8ec50f6812e6f395eec23625be3bf97f9fbacd3 fix(sessions): always stamp owning profile so cross-profile open works toward default 5cc5c58e019ef91802a5a9f7ba12b69ad281f685 fix(gateway): flush pending memory writes before session teardown (#73297) 222ea2b6c9d5470bf6bb62beec530e8687737718 refactor: fold simplify-code review findings ccf7129ed06912627bd9a15c8430657b2d65391f fix: restore zero-arg fetch_models_dev call on default paths 11ca7eedf05ad944fe0c248e7b99273ae666fa26 fix: follow-up hardening for salvaged #73621 + #35853 a479a1599f9e8cac1ca6239f924b7eee820e106e fix(models): use stale cache before models.dev refresh 8c50aaceb688ce420fec8370f2ce193ab3c4457a fix(gateway): keep models.dev refreshes off event loop 9d6b9f44f21d49776fd69923948d4e8645c87d92 chore: map megusta52@proton.me -> DonutsDelivery for attribution audit 24a56f027c2314a34f0b5aacfd1a92394943918f fix(lsp): expose lsp.idle_timeout in config, harden reaper, log reaps d7578018c541eb40855b1ede114cfe3b62448e27 fix(lsp): reap idle language servers 472658d0143ac6599b02408674e6720726de7e43 fix(desktop): pass shell to serve probe; bound Windows discovery probes d9e03e938e14581db9a5632544d4e5576ed4df5d Make daily coaching continuity safely publishable 022a175e0ad5eb71fef0892dcf1d7f558d73f8b6 fmt(js): `npm run fix` on merge (#74057) 74f8e5987756e3899fe930b904c35ae22d0718dd fix(desktop): widen probe-budget fix to sibling boot-path probes 22492f0c46a7ea7dd567fbeded58691b921170fc refactor: extract atomic_write_text to utils.py; fix write-failure error handling 8a9ab8b56b8c37ab8741e03fe6f2d280a787737c fix(cli): stop shredding an existing MEMORY.md on hermes import-agent 23e44a284329614caee8aa240edf5d99f0ffa612 fix: consolidate agent-history preservation into shutdown_flush module 40837e2dd07a553cff14c31f7c60b00343668ae0 Fix #72680 (retargeted): preserve agent._session_messages on shutdown flush failure 4305027f67e404cddc634cbd7da5c1825ac7920d Bind dual-coach delivery to verified runtime authority 015718066ab8e9499c3caea3cda9f7ea469036fc fmt(js): `npm run fix` on merge (#73999) f199c4c92e3530b8cf3a1318b8d0f3a9441ab76f test: update boot handshake test for synchronous warmup (#73083) a9af49df0936fc8af45ba7542e19e3c1274835ef fix(web-server): absorb _warm_gateway_module import before lifespan yield (#73083) a7925bdd4917c2c4bdf80af5ae48fb915d494841 fix(desktop): raise backend probe timeout and retry on timeout cbecd72e976a59e4c4b8277086abaa59ab3dc510 fix(setup): tolerate feature dicts without an stt entry in the STT status line 96bf65a6f7f3fcbac3ef116be60d21a3cd345b98 feat(tools): full Speech-to-Text configurability in hermes tools + GUI c80acad5b72d97aefb2eb9374a3c3daa04dd7a19 feat(dashboard): add STT model dropdowns to config page c892ca25e01afd45367c5ba49f681808c8187dd7 fix(doctor): resolve managed/legacy agent-browser dirs PATHEXT-aware 1cec6afdfcf830bbbc69f5484e893b08f869f918 fix(doctor): detect agent-browser in the Hermes-managed node bin so setup-browser installs aren't reported as missing (#53192) 7d3075d0d5e64e2c14bcb93809c2f6588e8cfde4 fmt(js): `npm run fix` on merge (#73960) bff22069727ae7b7f8ede8d7da110ab0f1558d69 test: convert null-local-config assertion from exact-dict to invariant bf8004e3a8ae4d8b97917066db47ce7f9a9cd2ca fix(stt): kill faster-whisper silence hallucinations at the source aac753dd05eed00c7e25ff9146e3447ef8477160 fix: barge-in stop-check tolerates stubbed voice_mode (test fixtures stub the module without is_voice_stop_phrase) ba131322988a3f8742386bc96f28028fa0955533 fix(voice): bare stop phrase ends the voice chat on every surface, spoken or typed 738725d18bf01e5e4518c9548daf5c1471078631 Merge pull request #73881 from NousResearch/bb/composer-type-to-focus-main d60a2eb3b40be9b41ae0a2e39a4f9b5036121fe2 fix(desktop): gate backend respawns on updateInFlight, not just the update marker (#73822) eaecca4a71a088b9e5c7ef89f9a44b80805f03e0 fix(desktop): widen local plugin-root fix — profile-aware root + dir-watch path e614876c6332ee54a3509dd5c434585c703dcdd5 fix(desktop): resolve local plugin root independent of remote backend a0770d0954994e404ef2a16270de3b41e26e38bd fix(cli): flush-left responses + native clipboard /copy for clean copy/paste f98b223b58c477e4596ece384bef248321a6fdfb test: accept path= kwarg in global shutil.which stubs 2319dbb014c1d04deaf87f4f43beab8e5ede8590 fix(desktop): honest browser-backend readiness + explicit backend activation + full OpenAI TTS voice/model options f12e6526a676e8b45353a98e185c53242e26a1bd fix(desktop): heal type-to-focus onto the visible chat surface 9bf1f7376fbd731f300056b9b6c92500a85904d1 Merge pull request #73875 from NousResearch/bb/review-69049 8b2d81095641d52bddf28f62ab211b78e0c33811 Merge pull request #73884 from NousResearch/bb/cmdk-update 158e9a99779428245c7f524aade8ab398e44676c refactor: remove the claude-marketplace skill source (redundant Marketplace hub tab) 540ca0d0369324dd9cb87fc52cf68bd2b15f027d chore: retrigger CI 7c6caac160a4822bb1728c968359ff8b4cd9f436 docs: document dashboard session filter tabs and photon immutable-tree fallback 720cdd1d1440845957248d152e53f0ed890b2a05 refactor: use atomic_json_write instead of hand-rolled _write_payload 72024950cf766c7c1a80d37d1b01bfb602ca12ab fix(gateway): harden shutdown message flush 219c04a34122a0de7101526a7753c63446dec375 docs(integrations): unified Buzz integration overview page f75b577b960852ec90bc76cdab42284a402b6d97 docs: fix 0.0.0.0 bind-default drift after dual-stack change 2c771be40626efd0cf54962af656583da5738f15 fix(gateway): dual-stack webhook bind for wecom/msgraph/whatsapp_cloud/teams/telegram siblings cf1e3585b67bff6aa99d62db3f8b6e000bd4c903 test(line): skip dual-stack both-families assertion on IPv4-only hosts e24bb0b42fdf2edd75b3d03fa0ca0a62d8f51713 fix(line): dual-stack webhook bind — 0.0.0.0 default unreachable over IPv6-only networks f7c5e0d59a08a958e90ed09920658e6e5ddc0358 test(status): point status-view mocks at the refresh-free classifier 5ea2e0a0bc45cd2a1f56a1ccc553f356aef57907 fix(auth): use refresh-free Nous status snapshot on read-only display paths 0764163f804a2aaebff5f1fe76ed0a71960bbc8d fix(auth): stop JWT refreshes from status polling 3ab583044ab305275f7fbe48b804fa5c60d6088e salvage(#51128): translate new session-filter strings across 17 locales; expose public get_session_rich_row for search hydration eb087b308952d58f0e152b86bb355eb4bcc7e262 Fix session search test double filters cb0049555114890aff26874738764b3f791e97d0 Add dashboard session filtering b62fc24dfa64a33a4693f7df9336630d38ebd431 refactor(photon): resolve sidecar dir lazily, not at import time 0dfd5546fcbe86ec69f2f73c918daf677254b5c1 fix(photon): support immutable install trees for the sidecar (NS-606) a65494ed009927d546052b0226d6921a3e6791a9 fix(gateway): treat pid=None lifecycle sentinel as unknown ownership in mark_exited 6459b8df76b862c68535b150c7c4971eede5d50a fix(gateway): use no-kill _pid_exists probe in lifecycle ledger 9c76c133b763bdee14fec91a298866115c71e564 fix(gateway): detect and report unclean shutdowns via lifecycle ledger (NS-608) 805c1c340cddb0382ce7775f1403e43ee3d7d391 feat(stt): support OpenAI gpt-transcribe transcription model 2a4b1787c89a3cc2364c410b5730887fa6f329e7 test(memory-setup): stub install_specs instead of the retired _pip_install path 0227872bf574ba9fcee6598987114f236609f2ec fix(hindsight): route setup + auto-upgrade installs through lazy_deps 8bbd77f368513fa970b31084d480df309785205b fix: route memory-provider dep installs through lazy_deps durable target 244759114ae6e097e31215fc08fe3cf310b5a78a docs(photon): document immutable-install sidecar resolution (setup step + sidecar README) 7d5ddf8c332ed77af1675c59832b1ecfa3777fbe fix(photon): support immutable install trees for the sidecar (NS-606) 2796fca8c93f10b76642c65a80a3a5ed40a50eb8 Merge pull request #73885 from kshitijk4poor/fix/73596-tts-stream-kwarg 19c771017411a281a21e9fb0918a9e91f6b80c20 chore(deps): update protobufjs to 8.7.1 4de9e53f10bcbb3d91cfb46f6c99a66b372f585e chore: contributor email mappings for #47588/#73358 salvage 5422d296075f6769150eb5de281d4ec12fb16313 feat(voice): route CLI/TUI speak_text through the generic streaming dispatcher (#58930) 7800bb1a29dadc7e43684c0a34108914c890e125 fix(tts): route streaming-provider secrets through resolve_provider_secret; bound per-sentence stream bodies at 16 MiB bc4dcb1b02b9aeb49308e01c2beeacb9154e4c66 feat(tts): Gemini SSE + xAI WebSocket streaming providers, tts.streaming.provider knob, docs + E2E tests 3a4aa2f8e698b133236c91c0110500a639af9403 feat(gateway): streaming TTS adapter contract and consumer (#60671) a6c0803f59c98e394e391266c78a54b71d29031f fix(web_server): stop Codex OAuth worker from finishing after cancel 02eff547a834c2be14eb37753011215c5e623ae5 chore: add AUTHOR_MAP entry for kingrubic (nnqbao@gmail.com) b8cdb698d1888c1202d67fb25a22e4cb49e03305 fix: extend pool-credential resolution to Bedrock API-key flow c4d9fbacb3478e46cf296121dde6a73e8f72c5cf fix(cli): honor pooled credentials in model wizard 3b703bf6b3d4b8cddb7fcea4478b8ac5ba5958bd fix(tts): accept stream kwarg in xAI TTS test mocks 20a0bfc9a60a98a63c8b7ba1dc565af1b596bbe9 feat(desktop): show the running version on the Update Hermes row a121b4972c3434cfb163ec7166fa27c0d30cbfee fix(desktop): aim the Update Hermes command at the right target cb9e9b72725a76ba850821f65184e785b0f6d10b refactor(desktop): resolve version/update labels in one place 59400262455b4c4df6721c9b8b598eaade09f1ba test(photon): drain detached fatal-notification task in zombie watchdog test f2364f1f8129a4cd78555fbc537f62c9ee9e2251 test(photon): copy sidecar helper modules into the spectrum-patch fixture dcace573da016851291132d4db795ca9fc92ecf7 fix(photon): rework zombie-stream watchdog for spectrum-ts 8 with strict probe semantics 87fe75fde40c68dba798febcf40e007692fc050b test(photon): replace source-grep URL-routing tests with behavior tests 709dd3282fec2ac80f361e8b729383b9d502ca63 fix(photon): recover inbound after half-open ("zombie") gRPC stream 2f4462fcaa910764159247a03fd056afad0a1330 fix(photon): send markdown messages with URLs as text 8830f22c9d33e6acf693c5c4c4147269f250df03 fix(desktop): scope the queued-drain binding check to fromQueue 402286fcff119419fa159ee9f1d51b446eba40bd fix(photon): tolerate SDK builds without the iMessage effect surface cf550c086396d6baa90ce7ff7ca96f7dd1527778 feat(photon): support rich link previews 324f3102639d75eb116a11001cd24017c33e31dc refactor(photon): reuse the /send-poll primitive from #43665 for poll clarify fe95194c59f7de2f0c81dc86907cce4c1a59c874 feat(photon): render multiple-choice clarify as a native iMessage poll 06150f70af4b884a74f23849a2e850c56f1999ac feat(photon): add native message effects 077c583c75d420a382a1a54cece2f6891712157b feat(photon): add native poll sending 8879b9e9b2ca6eabf03bb3c1b51221bcd6dde790 fix(desktop): keep queued drains out of the foreground session on session switch d0ce132e5274678ea47bb07308cc72d44760cf25 feat(mcp): add Snyk to the MCP catalog 95d303138b0ad2271ae7c34327aaed8f82c249df test(photon): fix PlatformConfig kwargs in target_not_allowed standalone test ed02df6ddc0c87ad610e1974b64f78b470c806d4 chore: add contributor mappings for photon lifecycle salvage train e68f3fd825ed2f7e3478f3cf2b39436bdf4dd27c fix(photon): harden structured sidecar error classes + target_not_allowed 91c4c6f9d230cc5a6b41a8aee778511017125641 Preserve Photon sidecar retry semantics c0ff5e91696279ad2f1ea1c3c8c80f196da1e9ed fix(photon): run the Spectrum patch spawn off the gateway event loop a90a2b3c3c04d33d64491aad1df87fb522eeb637 fix(photon): inspect port listeners off the gateway event loop 1b7db6e037fe76476a952879a34a44dae7b3ad87 fix(photon): guard inbound-task cancel against self-cancellation in disconnect() 74939d2bfe72a72abe87b405ccdd16ba9c039738 fix(photon): stop sidecar-crash fatal handler from cancelling its own supervisor task 3c7cff843d45c02666dfeec60439210b4157b47f fix(photon): dispatch fatal-error notification from a detached task ef61fd7aded13672407f944d475a67071b712eef fix(photon): keep sidecar alive if spectrum patch fails 201be3e5462124cd9ecd44388faa7e1f99200535 fix(gateway): reserve retrying Photon listener ownership c608a6937ac581eb8d87bb792e3cb7ff6564fa20 fix(gateway): release failed Photon listener claims a908c62d28eaa436c97c1fe957d7b80fac9c953c fix(gateway): guard Photon sidecar listener collisions cf19ac8ff30739b62ea5dcc615ae3aaaa1385073 fix(gateway): prevent duplicate Photon sidecar storms 88ff722f94b7b829da8c9c6799b3255de406d4d7 docs(api-server): document profile-bound HTTP auth from #72285 41233e19c6905b0d6909f3ac378b921d948e9c17 fix(gateway): forward failure_reason through the empty-response return path d4ff5662326f57da9f1b01c0573e51431acd977d fix(model-set): persist base_url/api_key on auxiliary slot assignments 07e931fcb4d48c4c7aaa4121f426e5eaea7e77fe feat(buzz): WebSocket inbound transport — NIP-42 auth, live DM discovery, poll fallback 21c7b806a3f95d95edbe8788f6c8400d21c05100 feat(buzz): dependency-free Nostr signing module (NIP-42 auth, BIP-340) ceaa7880ee1a46f17218c1bafe770e81386e4ea4 fix(photon): un-shadow the U+FFFC deferred-wait handler; fix stale sidecar-deps fixture 0f64557c06f3e878fd9ec5170b9bca7f20e2778e fix(wake): coerce dead onnx->tflite on macOS ARM64; clear stale voice turn-timeout 533d633ab9d18ce0f05bc44d4077576b69dc58e8 Merge pull request #73774 from NousResearch/bb/desktop-messaging-icon-churn 8a342a000282d54ed02e9382eaaf02baf805b139 fmt(js): `npm run fix` on merge (#73780) 40a53ca0317b0ddc1a79133fb70fc5eb75c3d74b Merge pull request #73698 from NousResearch/bb/desktop-overlay-perf d76c7f54095d9a1c25e81759ebcefac11788ca3c perf(desktop): memoize PlatformAvatar + StatusDot to kill messaging churn ada389004f73a65250dd27147372c356d09becf7 fmt(js): `npm run fix` on merge (#73770) f088fa507007524e4939f07776cd908766061dbf Merge pull request #73764 from NousResearch/bb/message-age-fallback 50d0de035813bb751609715caa0fd7e1ce12354d fix(desktop): satisfy lint — import order, unused import, exhaustive-deps 64bdbd7f3cefc1c198d3a97d5ce0d6c12075db32 fix(desktop): stop message age falling back to the 1970 epoch ("20663d ago") 4acc16271284c0909485eea2e0724af1bad90fbe chore: overlay churn measurement probes (sweep + median A/B) 6fc01f8ab81c3438ec5b77e050677c132c95bb57 perf(desktop): memoize sidebar rows + status dots + artifact cells 76173ba8cd18ef10b0cf9366346d9e794e55ce94 lint: suppress windows-footgun false positive on POSIX-gated os.kill probe f041c95b7fc33655a7d7684d84ef22908e631ed2 fix(send_message): pass photon DM chat GUIDs through as explicit targets e79d316a043ce188be97c8e2c4de2ade1d7253ac fix(photon): persist sidecar runtime record so cron/standalone sends work 4f65f5627979d408a6f51dd453dd129cc788b631 chore: contributor mappings for DI404N and JoaoMarcos44 893c99bca1880c7a0edc3319ee7a21ae4d0d4e0a test(photon): stub token validation in setup tests to avoid network 1887c4e82058edac9dcae4131b8e46ee96e49f5b test(photon): allow auth.lock sentinel in temp-file leak assertions 6294703dec259756fa4a3214c4ed3e7e1189e775 fix: disable httpx proxy for Photon sidecar localhost connections 9cf20460815b5b6d24e5a2eb6f4cbd77a26c693c fix(photon): unify sidecar-deps check, harden log unlink and truncation de5c39c033a282eba39ccb14302552fe70550dcf fix(photon): surface npm install failures in check_requirements() diagnostic chain 703de9bacbd6e78be6fb7daa6217010342e954ce fix(photon): skip secret regeneration when existing credentials are valid eccf39dded9ec6028686c82169e314d8f0d88044 refactor(photon): route setup token check through validate_photon_token cd158466d1fbccb625ad59fd15cc1190d1d40382 fix(plugins/photon): clear stale token and re-enable channel after setup (#72763) b378bc6fab56154fddc254ddb0183449eb0d987e fix(photon): serialize auth.json writes with the shared cross-process lock c3531cfac24525386d52684862c62799b1c9b3a2 fix(photon): close the raw fd when os.fdopen fails in _save_auth 2b30744c34aec084d04358d2c29d89fbee43c95b security(photon): create auth.json temp file with 0o600 atomically 9044c4b836ffb672030b29935e464946e8cd4c35 style: eslint perfectionist import order in session-source test f65cde9fd5737d12e65e4b2f871a02e9fb5ac084 chore: map contributor email for Bounty13 f2954945beb4e46565c1096e52cc2b81612b56b0 test(desktop): add regression test for Photon messaging source (#46761) 560be7dbf2f3d52a84a0bb251d50b0334b64ba95 feat(desktop): add Photon iMessage section to sidebar df841d342ca8a058c8185980ee4d7235b746da4f fix(state): complete the bounded-merge protocol — usermerge floor, progress-bounded continuation, tolerate mid-rebuild missing index db16c5ce51c6793a28cfae697746d06c6fac9526 fix(state): bound routine FTS merge work 52b9cf1e0e4206a9fab972cddf3458b9cb66e815 test: de-pin aux default literals in provider-parity tests 63fc810b95a4c7ebc673f691060472d422195858 fix(gemini): sweep hardcoded Gemini default models to gemini-3.6-flash (#32360) 482d1ab0f6a2e5e065d0fc8b68f81fcc9895ab66 fix(photon): unwrap dashboard project responses 21264c43432a0f23e21257f3e7d560d4700ead64 fix(photon): mark adapter as not supporting message editing to suppress streaming cursor fd4f756492091ad8b2c4decd2e09fbbff274bb51 fix(photon): ignore iMessage media placeholders be057413499f44f4f5992adb74a94c862a148f7a test: isolate delegated and Photon environment state e807b7106cd271e211df9fb29a6192eef8be9f11 test: set returncode on fake Popen proc (main's player loop reads returncode, not wait()) 050461ec83384c700507c59b01c8517edd607e6e fix: hoist STT credential read guard to the public transcribe_audio entry point e251e78df90fe9e79ed9e22f2fb340fa8b474fc1 feat(tools): env_passthrough allowlist for command-provider secret scrub 59fc68e93ff61b1deda35f88409f9a003bc7aace test: align env-scrub fixtures with idle-timeout runner; assert env passed in no-shell kwargs fc26e965bbecb540965300b097ae2688f375b8ec fix(tools): apply idle timeout to command STT runner (class fix for #50081) 38bb193f381fa0f3fd42ac7f1e48e44b50179386 fix(stt): route transcription inputs through the shared read guard 37d0b6c81af01a78a4dee3ebceb3b4c513cb0576 fix(tts): block output to protected paths b76acacbb9da3dae7f6c8813139720e6945dc8c0 fix(tools): execute local STT templates without a shell 273b986fd9979c0ae8438da32b743a22318cabf2 feat(tools): expand command TTS output_format allowlist (m4a/aac/amr/opus) 3ae25e0fbd6e191b72c45d1581603227dc6c6ee9 fix(security): scrub credentials from voice playback subprocesses 24a6fb6448e3963c4219b6ea0c5b7a1a6e25abd9 fix(security): scrub Hermes secrets from voice command subprocess env 4e8a66daceab56e9d2d76ad9abc8b65ea8fdd907 fix(tools): keep command TTS deadline through exit 1b97e3efc527e57d84976f30c72d7e8d8a634598 fix(tools): chunk command TTS stream reads 3884f078bdbde95992941b7614fc9c256f0265a7 fix(tools): use idle timeout for command TTS efe76378c2133a06a86a63addfa46d8ec64f72c0 chore: full overlay render-churn measurement probe 43333acdda80c4f3fc74b704d25cdcaac6b0cb76 ci: pin uv version in setup-uv to eliminate per-job manifest fetch 7e7f7d3059f917dc31300284c0e9acb478f1ccea Merge pull request #70509 from NousResearch/hermes/hermes-29661bf6 392f1b947771e215a8f36385345fccae650412cf Merge pull request #73705 from NousResearch/bb/terminal-clipboard fca2aa7236c4112c854b6fcb3492f52fc0bbd8b6 Merge pull request #73741 from NousResearch/bb/composer-strip-align 1b9377b1fd626e0b2af0ebfb86a8cc7b9e80904d fix(buzz): scoped identity lock, negative name caching, sidebar registration e01d6650fed21e4c6465713efca4e2bcfbeb44a5 docs(user-guide): add annotated recommended default settings for Buzz adapter 7e1e3b92f8ffe6ca8ad749055c4f47eb937d9ca9 fix(plugin): classify Buzz DMs by p-tag so un-mentioned DMs dispatch ffb38f0c03b045b09c178dcf285ea3353bc9f94b feat(plugin): add require_mention setting to Buzz adapter 65f52d491324b05f1b6f19e30e774d446ccfcaa6 fix(plugin): strip leading @mention from Buzz channel messages 01f8852ccc112f4fceda31f4a988747be55a9f1e fix(plugin): bridge Buzz config.yaml -> env + fix reaction flags 66fc2e2a92f53a826d836c167fc13bc68c5030c1 feat(plugin): add Buzz (Block/Nostr) platform adapter 82ed4dee369c5a30902445ab4f87d17ae49bc214 docs(acp): verify Buzz relay-bridge docs against buzz source, cross-link modes, add zh-Hans c83dadc1d32d213a4c4e843d24e4fe25f59c59d1 docs(acp): add Buzz external-agent activity guidance e755f1725f0d53b01294ac2e70d767612cda2b39 docs(acp): document Buzz host integration a7e3536a7069c040c2f3cb765e4e45b8b83e3999 fix(desktop): align the composer status lane with the surface 58708c7066c1bf2abecb0d32fb76cf8ac8c0a917 fix(git): never block internal git calls on credential prompts ded23149107ae6b457abfe31c7f4e90137b49c88 Merge pull request #73711 from NousResearch/bb/composer-micro-actions 6cccef6c103e150469e872449d65d07487744dfc Merge pull request #73710 from NousResearch/bb/triage-large-remote-attach 9b6d91045cc821428455939f740519f5099a6dc5 Merge pull request #73704 from NousResearch/bb/slash-skills-by-usage 254aeda122ae502808eff2ac34491fc456b87e10 fix(desktop): dedicated reader for large remote attachments 612b23f6c086d8f34a497debb57c517c7db57767 fix(web): raise uvicorn WS frame cap for Desktop file.attach 1e355116a1ff3efffb163ce41218055b19ba4f4c fix(desktop): keep composer chrome out of the pop-out gesture 9b01c74f000ee00d7fc22ef7e4231f10bd462691 feat(desktop): render the micro-action and underside strips 1cefad55230b511cbbe6a05aaaa46e5a4932195e feat(desktop): composer.microActions + composer.underside contribution areas 807dc0c45f6dd081b3458e0afb5ffe0572939c14 feat(desktop): copy and paste in the GUI terminal 959d2993ab3a5d76fed209df2c1b2b691a49eb33 feat(desktop): rank the slash menu by the skills you actually use 75bf13e03215c6770aa19d66b2290af366ddf854 feat(gateway): report per-skill usage and origin in commands.catalog 9dc191d4372fd5952c7e53bbbcf7257dd12e8577 fmt(js): `npm run fix` on merge (#73699) 1073ae2b462ada42fd5b887082c424543252d9dd chore: CDP probe for overlay render-churn measurement 3d0e543aa76c788471bc93903b5e79ccee05666b Merge pull request #73697 from NousResearch/bb/session-list-user-send-bump 7d5b92cdfbd1ba0d473c7907485d2a4b30344715 fix(desktop): bump session list order on user send d65b226497d1497da69d1b1de9cdd7b26032a5e5 perf(desktop): gate hot store subscriptions + memoize overlay nav + palette rows 7bfbfa3e341a8fe0315170bb7e2ad79e2af44da4 Merge pull request #73681 from NousResearch/bb/macos-tcc-identity 6c2a3b4bb2f63b24539e28f5644aae0bb88e9b5c Merge pull request #73673 from NousResearch/bb/desktop-eventbus 812b75fdfcce525650cd0ba9b08ce546b67988be fix(desktop): refuse hardened-runtime sign when entitlement plists are missing bc1c168d4941a91ff2d169d63c6ddb998450fdbb docs(desktop): explain macOS TCC permission persistence and the keychain identity opt-in 456818875d35cb0cba22ddd99f2e4bd28605fe8d fix(installer): route macOS re-sign through the config-aware signing fixup 5d171ffbbe6264261bbca938981418e8f553d58f fix(desktop): stable macOS signing identity so TCC grants survive rebuilds fa8fb82d0e47f9b0665018a2061a32fba0a721d5 test(gateway): change-watcher behavior contracts; align status-snapshot test with 60s cadence c14ae3796e31eed04afbe1bfa22376f7bfe693c3 feat(desktop): fs-watch the plugin dir + demote the status snapshot fe64cafa33b5631da7fb911b1803da86407b0ebd feat(desktop): event-driven live sync — change broadcasts replace the always-on polls 3378e528e7c529c791a3f310541245e685532e3b feat(gateway): generalize the skin watcher into a change watcher (pet/cron/sessions broadcasts) 43ddefd08fdd7b1b431e38f92cadbe5876414a89 Merge pull request #73675 from NousResearch/bb/edit-models-hover f9d7bca2526e73d1a7cdaa4a4653f9d3275b3db0 fix(desktop): overlay scrollbars on conversation code blocks (#73670) 6d83a79f939aded46ecf1dd96699bceeff33081c fix(desktop): match Edit Models row hover to the model picker ed5fd3503db2344f043f447ef7265a46682e8048 fix(desktop): clear surface height vars from the attached surface, not a detached node (#73638) 20de37d4091b94cbcb4cd84b4bb1020a95b6829f fix: reject ambiguous MCP tool name collisions f9c4d835f9a92188dc190de2e30ead7baf20120f refactor(sync): name the access gate for what it is (Nous admin) 66e20786d0be6252caf32f5f2f44f55273048a86 fmt(js): `npm run fix` on merge (#73666) 03af12c5c93c255ec052ad1241c222a9ec626954 style(desktop): blank line between node: and vitest import groups 20e0b26c4ed7c1704575620304df8aa5c648bf97 test(desktop): run venv-blocker-scan tests under vitest 1dd1c449bb68c5957e7bc384560df8dc411877f9 fix(desktop): run venv-blocker scan async off the main-process event loop d210500b54536c81fad41235b3d6732cbe532a7d fix(desktop): surface external venv update blockers 4f990ec09ea93fe6f13ea7367103ee5f3434bb55 refactor(sync): put every Skill Sync verb under `hermes sync`; drop HSP naming 01cb38e8ecfe4b7fe338fc9e7c17d022963b74bd fix(gemini): preserve bridged tool response name 9dcb44a21943ea950c43be29f002dac23ba4248b fix(schema): preserve dependentRequired property names 3cedac00b7874a94aed9879f47f9196d3920493c fix(credits): reintroduce grant_spent, gated on an in-session crossing (#73634) 4f001742fd65df39144cb11fe12b630062f40f06 test(mcp): make discovery-lock tests cross-platform 81516707129ec2f3c86b16cf45507c4f2df7cfc2 fix(mcp): widen discovery lock wait to cover real discovery durations 362fc215776d5a2cdd32371a9858f6b9ed2a5899 fix(mcp): guard discovery with cross-process lock 56bda4529b23ceac398e810aa21d713f778dd9fa fix(computer_use): revive ended cua-driver sessions once 3a3744a6b2a04c661cf04b53911437b0425e8b2c feat(version): show provenance and distribution f2aeea95e0920e6ea6873caafd0153ddec486fc9 fix(desktop): allow multiline tooltips 6cbd3a6ac31683fb9558c199b74e44a81612fef8 fix(version): preserve unavailable Nix branch metadata cad2864f8c557e1f7e0d7ed2031d94830abaf136 change(desktop): don't show commit hash on toolbar 67e432aaad795606dd1e24f903e233698180018c nix: add actionlint to devShell 444053b53429b4d90a41ec3c3dbe3044e909a2d5 fix(nix): strip refs/heads/ prefix from sourceInfo.ref for branch name dfec7198f79767412a4b831adaab8342f61b99c9 refactor(docker): pre-build install stamp in CI instead of inside the image 17c7dfea8cb1d5391adf134c414fccc17272cc03 feat(version): add commitDate to build stamp and version_info 5bc44cb8c3a1cdbfa5596567c994fc584750c9d1 fix(dump): update _get_git_commit tests for version_info refactor 813f3a002004b079c89f299f4fdfce36a842e183 refactor(version): centralize build provenance on install-stamp.json 1a4c4eca0d9d998aa855f283fa3f6d2feef94d17 feat(version): derive display versions from release tags 8c5e846536c8b35bb5276027ac8a103e25386390 fix(gateway): bind HTTP auth to routed profiles 3d30232eba801a2b2028d3372bc4a4d885146e5b fix(delegate): isolate async batches from parent interrupts 5423e26a7de5314823cb74137f16c32250d3569c fix(gateway): preserve rate-limit failure metadata 713982a8f89f0f79c4aa36a20d8833c128a699df test(model-metadata): cover local Ollama fallback 0c2d9aee0b977a1c64c2d85354999f1ea6483958 fix(model-metadata): prefer local Ollama num_ctx d98ea211f91e1ae6a59b6cd9160855b3d75a13df test: cover both multiplex URL policy orderings 7b18de5f4045bc55b32037cc8374ab2ac48c8404 fix: scope private URL policy per profile fa9217542d7f052e60cf2030a884448fe428d22b fix(desktop): preserve local model provider endpoint 237b0f5d5e6a3356cf0e95a32b355b15e92e351d test: opt TestSpeakTextGuards out of the new audio-playback guard bb09e3eaacc7b8eafa68575696090c5163f93d0b test(tts): adapt salvaged #57681 tempfile-fallback test to registry streamers f71d2d854f22ee2cc4034d51d9b032189430c15b test(tts): cover microsecond default-output timestamp (salvaged #43911) 42091a83b9a4e89f7307dfcaf7c9ae3ef8a47053 chore: map william.reed@acquia.com -> wreed4 for salvaged #68090 946ed967857df4dbd1dc32573d3bac8f7fc6f121 fix(voice): reconcile NeuTTS backbone/codec GPU device strings 555d4e10ada65c719a437eb18a82df36389dec20 fix(tts): close temp WAV handle before playback in streaming fallback 45f7030786c4c631bf9a4f8dda64101ebab4de59 fix(tts): bind MiniMax credentials to their region endpoint 7b0a575c82d275f30c5a753567c5b454a0f96099 fix(tts): use microsecond timestamp to prevent concurrent output path collision 4c7c51fcb24f23496d27ced1e58014a5c4c0037d refactor(gateway): one media-cache cleanup loop — extend pruning to video + screenshot caches a61edf952ff9109bc4e6def4fc985a2351ecc502 fix(gateway): add cleanup_audio_cache() and wire it into gateway housekeeping 562c8b418fdda15ad560334fc2c8c4b0f2ff57cd test(voice): drive the micro-pause test from the explicit clock too 309ed7ec65237e7244373b99f3a8401970705284 test(voice): drive silence detection tests with an explicit clock 98fea1323b33eb18844342284d5ea4be4ceb3c2d test(gateway): keep Discord document-handling tests hermetic against host DNS 63be8ce863e103280adc3fb1430b100f0747c683 fix(tests): stop the test suite speaking aloud and launching a browser c911a5f10f9731df46386cd15dc9df6761b61a97 chore: contributor email mappings for voice-platform-inbound salvage 368d3488d2bfabaabd4cee3c55519aff97079fea fix(weixin): preserve voice transcript origin cf6ff8cd3097d8d6659cd8cc34a72a226a7f15cd test(gateway/weixin): add integration handoff regression for #27300 voice routing cb1798b43c23e78f668b90a6775c2bb39d7f3e43 fix(gateway/weixin): route voice messages through Hermes STT instead of trusting Tencent Cloud's text 1c30c57f11520e6bc54346ab7ea19f49d53c8ead fix(whatsapp): preserve voice notes when STT fails afab7ed46ea8e3fee556757b7a96f327b8a756db fix(photon): address review — U+FFFC before _record_last_inbound, MIME-based CAF promotion, add tests 5277065260959b6e3eac8d5815ceb4367a1662dc feat(stt): add CAF format support with WAV conversion for cloud providers 6b91b50c6eb12562b9f09b9128a66149c9d75fdd fix(photon): handle U+FFFC placeholder with deferred wait a865509e54e5aac6d9197f7325ec90d5a7cada1c fix(photon): promote .caf attachments to MessageType.VOICE b813e8e6ea05be90b2f2b6b42e28e44d4dd441b8 fix(photon): map audio/x-caf to .caf extension a2d8d3afc5f8ad5fa898af74d986cdee7dcd6368 fix(qqbot): always clean up temp stt wav fef1b8cbbe4ed75b6fe9d40e2ec3772e8e9e6dc5 docs(qqbot): clarify comment on file upload guard b5c2dc7cd2f68367a5a212bf556adf6c548eca04 fix(qqbot): skip voice detection for file uploads (content_type='file') e7cc10111a196fee015201a5c8de845fce426479 fix(qqbot): keep extension fallback for voice detection, skip only for explicit file uploads 3122dc17445a3bdc847936a875340f8192fa55b0 test(qqbot): update voice detection tests for content_type-only logic b74c033ca10d2b4fca45cf6a3eebabcbebcf755d fix(qqbot): stop routing file uploads through STT pipeline 73e193c03d4e7c2df18a129e6812216c98ce12c4 fix(line): normalize inbound media types and cache routing 7ee111ff9b055da88feccd4a285c66a269df0a5a fix(dingtalk): don't let richText re-derivation clobber VOICE classification c762314561d490d4256099e9dcc3efbb22459259 fix(dingtalk): add EXT_MAP constant, PHOTO classification for images, card/interactiveCard message handling 2c75c83a02b9c0e2fa2aea3a7cfa8ddf3fac4c2b fix(dingtalk-platform): extract ASR recognition and file message text from incoming messages d0c6353999fe6645ec2995f74202cf6ab399d6d6 fix(feishu): voice-note duration on upload, turn-scoped TTS dedup, audio path dedup 1ca1deb7f6d1ef8940079b0d50eeb75c3a2be412 fix(feishu): classify native voice messages as VOICE for auto-transcription 2cf656f23d288996fbb58d67dc6c6a6258f3962b chore: map contributor email for AtakanGs f1eef8587784f4fa197ecee62215e2833cbc291f fix: replace RuntimeError with graceful degradation for unverified LM Studio loads 8c12fa7cf09c18481864c09b570a04cd80270c6e fix(lmstudio): respect applied runtime context 678916b427c7732a6047d5c9a4c3360c4e838c5c fix(gateway): preserve memory prompt during manual compression aa0465a309202c389845efb5167020f4b81213a4 fix(desktop): clear surface height vars from the attached surface, not a detached node 28d11ab38c4cbee47f14a1064ada363f7ea93d3f Merge pull request #73623 from kshitijk4poor/chore/author-map-enough1122 f5ff8fa4f8e7b02ab05a24e966433f9ff65305a0 Merge remote-tracking branch 'origin/main' into wake-toggle-config 38574a73975913effa01929dae46a8e0bc0b381b Merge pull request #73544 from afourniernv/fix/relay-desktop-outbox-export 09f7e6cb5bebf1a76de2a7c44b5d2a973cc60a5d chore: map Enough1122@users.noreply.github.com -> Enough1122 c8cdeb435fb4f6b274d76681a9a4604ec3e9c46b fix(desktop): allow renderer camera capture (#73558) 64469bd2c86dc0abfd9ced326008a7cdd7c7e197 test(tts): accept stream kwarg in the 4 stale xAI fake_post mocks (#73619) 0cf58de85e5f6d4a60fb06efd33c52feae3a04d1 Merge remote-tracking branch 'origin/main' into wake-toggle-config 89490ae373bbfa0990e1beab4c6d74ed728b2665 fix(desktop): honor gitignore across Windows path casing 15317e1fd7392646cd21542e7e30498a847d841e fix(desktop): upload Windows attachments to Linux backends d4221b27365a4bccaa6e864620991ad85701cf4f fix(desktop): validate WebSocket token before backend ready e45f2b39e291a44991a6cb65c3fde9baa11f24e2 fix(codex): clamp oversized Responses call_id so MCP tools don't brick sessions (#73492) eb8d88f33a65d11115b8b2e1dfc3a2b8de9c42d8 fix(desktop): await wake-word mic release before opening the voice-chat mic 1c582c4c4a073e94fe1e4858901aff8a9441349d fix(observability): gate export on subscriber flush f9d7be82fb7b1a43e1ecb55a7198109b9d248a3b fix(desktop): speak the first reply of a wake-started voice session 76b0ea5118ca11373e49234cd8bdd608848e423f fix(state): rebuild legacy gateway_routing PK; guard session_store in dispatch hook 097f0d01674156aca9e63cc9f8d35b14c8b29935 chore: contributor email mappings for voice-desktop salvage 43e1b7f47410967a375371a316ffe4cfddb63e9d style: eslint padding fix in profile-scope test (salvage follow-up) e27997d63f771ce06319a2354924040189359ff6 fix(desktop): route streaming TTS through the active profile backend 5f1c400e724ecf8c36ca9f5273eedb024ee73eab fix(web-server): profile-scope the desktop audio endpoints c95f04501d9d00c98afe1321075bee59235a1fa0 fix(desktop): skip markdown tables in speech output f02d41cb2161de298009afb56e5a913e8a5954a6 fix(desktop): summarize code blocks for read aloud 7c398a5c8ea05f9aa56de63b7cd4f64b8ec25faa fix(desktop): prevent voice playback from auto-starting next sentence after stop (#70955) 181511473e5257174b782a3ab29a56f03bf7a67c fix(desktop): render video/audio image-markdown as media, not broken 3e47efeb250dda0b871010195ec84c321f51b2bf fix(desktop): stream remote media through gateway 3a1efa5e301fa4184db20a489cf23562296d1dce [verified] fix(desktop): scope TTS requests to active profile a2b0c314aea7cd37b1e3acceb6bcdb339cd1a9a6 fix(desktop): scope audio endpoints to the active profile e04c2a9ebd42d0ee151db68cd65dba392d7dc511 test: update voice-submission test for _VoiceInputMessage sentinel (#65827) e6b034405239fabc50e1d33315ea4d53d35f6f9d test: adapt salvaged voice tests to current main + lint fix fe3dc2900993e69602a7681b9353e34e016b921c fix(voice): honor quoted beep_enabled strings + correct PortAudio OSError hint 0062107094acdb16542b3b1377d2d299723e4209 fix(cli): only prefix voice-transcribed messages with the voice-input instruction (#65827) 3524b20728073365438e15c44a33aadcf2f6d487 fix(cli): surface local STT model preparation 1818d63052e916ceb1fdde9d9f05765a9777b14c fix(docs): target installer venv in voice extra install command 1605cb5fe4bb2941694e14190872d9d263eb80b9 fix(voice): point pip install hint at venv pip instead of system Python a1bc12f191b9b11a50c3869cb57ac2c4151b910a voice: one macOS output policy across WAV, beeps, streaming TTS + tests 0179ff97389b536b5af10bbacde9beb9b214ce31 fix(voice): skip sounddevice on macOS to avoid TCC media-library prompt 0a5c5519fcb503fcff40f9183a4a0a72a6b42caf test(voice-mode): pin Termux:API detection probe ladder + #31015 fallback e3f4dc2103b4aaaf8ee6d970919733fbd395dcb8 fix(voice-mode): make Termux:API detection robust against pm probe failures 0560f52047dfb2c537d34b81bc20e0ebb4276209 fix(voice): add WSL2 PowerShell audio fallback for TTS playback ec7a46a6fe88048d62a53901d2daa0bc2c61eaa6 fix(voice): add WSL audio warmup to eliminate RDP crackling ef686c38782b82403714d86fd326c4adfebfa825 fix(voice): honor forwarded audio (PIPEWIRE_REMOTE) in WSL detection 2a75664c0c6b0e84b59ce99f9c3c21c453d5fa3a fix(voice): capture at the input device's native sample rate f98952b2676a53d81485a515881541892b7cf0c1 feat(voice): make beep notification volume configurable from config.yaml 89d57856928d75edcd155287b7fa6af4ab136986 fix(voice): prefer requested MP3 for playback 1182efa0a8ea199b2828850465ed69cc39bcca40 fix: play returned TTS audio path in CLI voice mode af7205bea5bc3314a675e06819c80d44937746c3 fix(voice): thread max_recording_seconds through the TUI path, add behavior coverage fd213a82f44482ebe1194c0c62a178d87dc82de9 fix(voice): enforce voice.max_recording_seconds (was dead config) ee5f20bdf2365272ede48d9ebf14c49d697c0644 fix(voice): prevent restart race when continuous mode stops after 3 no-speech cycles 268b98253d05ac69e3d98b239277baf0f01b5641 fix(cli): disarm continuous voice mode via hotkey during agent/transcribe (#67545) ae697db19ccdba9ec34f87abce9c71f977e2e4f1 chore: map salvage contributors (voice CLI/TUI UX batch) ea80b557aee950169b75f07e31e2ab838e562cd7 fix: route busy-steer voice through the shared out-of-band STT choke point 753d0d77e30bf6f6e8f6b5083cd75e6686a4207f fix(gateway): keep the STT echo ledger across pending-media merges 6710ce97c476948d912d035f308fdfa05ce122b7 fix(gateway): gate [[audio_as_voice]] to audio files so images aren't sent as documents 0fd0161dfdbea0d9339cfccebeb9500e88aa1ba1 fix(gateway): steer busy voice follow-ups after STT aa40f16d3e7bce7b99420c6d17a437d77f3106f9 fix(gateway): transcribe clarify voice replies b8c38a451a5f967c28433ea04b92f1b8af2644aa chore: add contributor email mappings for voice salvage PR f76b2b47aafa6ea0559d14edc8dc9e8632bbe775 fix(gateway): pass channel_prompt into voice-channel STT events; guard empty transcripts a4c999483792f6f1c5b233be36c215bfba7e202a refactor(discord): delegate ffmpeg discovery to shared tools.transcription_tools helper 9b89da23fb8d76a7c208168c57c3eb5bec891d60 Fix Discord ffmpeg discovery on Windows ae8d3e20278be497f606d1298839b7214e6f38e4 fix(discord): make voice timeouts configurable 388f612435f7137f361d911be640a4191de07ac6 fix(discord): drain pending voice input before disconnect a5b32a721a37afbe7dccd769d92fd1154feb1b94 fix(discord): preserve voice reply threading 297f5142a651e80e005e4ba34968c55daba289cb fix(discord): prepend warm-up silence so TTS first word isn't clipped d22a1ee5bec8d04d51bca0d59b0a42b7d5b24d8e fix(tests): add _FakeAudioSource to discord mock for VoiceMixer inheritance eef1ab72d55ab502f84200e810c2c2e81297d8bd fix(discord): inherit AudioSource in VoiceMixer for vc.play() compatibility 31301c1af70f9d247b4f064c344a2cd738282796 fix(discord): wire voice input callback at adapter connect time 79da6adfe90ec1ed3f59b925911bb34aacc9aadc fix: add _handle_voice_channel_input mock to _make_runner in reconnect tests 1b0836c7c7c7fa6aba16d4a5be84978bfd098122 fix(discord): wire voice input callback at adapter connect time f440a44753ed69cf5e0b40696f49f53de090f40d chore: mappings for bare-noreply contributor emails 4d9dcf152a73da5e637fdf845683722259976390 chore: contributor email mappings for salvaged voice-delivery commits 2008d80a9e6266e73e80cd8ff4a4a9a837d63a05 test(gateway): regression coverage for platform-aware voice delivery ee15e0480392c2a1778825d7c645c2a238db6e27 fix(telegram): render markdown in voice-message captions 1753369f7c3c4797e26ec446d5892619149c9728 fix(gateway): platform-aware auto-TTS output path for native voice bubbles 28adb868914a9207394745a05dbb8ad0d5646746 fix(gateway): honor global voice.auto_tts in runner voice-reply gate ae53b4ba5a48176e03d57c3865f1138e6e851ebe fix(feishu): pass audio duration + thread routing fallback for voice bubbles 88f7fe3b1f1f06fbf8320f5853ace46178b62a9e fix(tts): improve Opus encoding quality for voice messages 33313e88f866b0abcfeb906c4012a5a3d28ffff4 fix(matrix): enforce Ogg/Opus at send_voice boundary, probe metadata off-loop 34ee3bbf8ec286950b1a36e01928b5bf31fcf9d2 fix(matrix): add MSC3245 duration + MSC1767 waveform metadata to voice sends 4aac89b42925f2f5a5ef5a6f1fb04026e528851c fix(tts): unify TTS text preprocessing behind one shared cleaner ee019d1cc149bc66e62cd2a66ff38980c143682a test(tts): add lang_code regression tests, document tts.openai.language c0dda61032c0e7d77bdecb88735ceabb055a6cdd feat(tts): pass lang_code to OpenAI-compatible TTS providers (Kokoro multilingual support) ce4e2e6102c72896a2cf457fdb887d5d306f0f1a docs: add xAI TTS params to cli-config.yaml.example and tts.md d1e93447168cfb3344582e4a07ba8bbc46cc3ffe feat(xai-tts): wire text_normalization parameter 462b3cf994c093c25aaf2a10159b135e757959d0 feat(tts): add optional provider parameter to text_to_speech tool 1daa76951bf38ef6fbed8c24f04f43b4f0568607 feat(tools): forward OpenAI TTS instructions field through text_to_speech 8171e8ebb38e177f8f57835746430af58ec54194 feat(tts): expose speed parameter in text_to_speech tool d9336e74533415b3e6ba15d907dafd24edabc032 fix(tts): strip reasoning blocks from TTS text ef274a482906cfd0eb1f2bf0e754b5ebd7bcc701 fix(tts): keep Telegram caption on the original reply text a9a9005f31434e584de983dd5efde87888bb683c feat(tts): normalize spoken text (units, symbols, markdown) before synthesis fdc24a975efea32c3e3c4d32973052c3f94d05fc chore: map contributor email reneisaipa@gmail.com -> IvanMiao d259b24edeb8f40f126974d058766d236db2c824 feat(pricing): add gemini-3.6-flash and gemini-3.5-flash-lite official snapshot entries 26dd976fbe39b4d915d701bed85ea24ffd45d28c fix: align Gemini billing pricing with provider catalog ecebff82d234f59a3ea6fc74446328a60f1d873d fix: support Gemini billing route mapping and pricing update ee1e789877f7626108661e6df63b13f71926944c fix(vertex): merge duplicate vertex curated-list keys from #68767 salvage d7f6dadbea08333bd6667c04cce2010673ad3415 feat(vertex): add validated Gemini model catalog for /model picker e25d516c8cb3bc39d8598d3f4a7fea6a8539c748 fix(gemini): bump native provider aux default to gemini-3.6-flash f3cc2bc0226f336e9b41add6aa59e24ae3c5e167 chore: map moeadham and Vissirexa contributor emails 90b68520ac260bcd37abf3521389da37f07239d3 fix(tts): bound the Piper/KittenTTS model caches with a small LRU 60b841bbfb633a00d4ce17596ea83ce679b70bf1 fix(tts): bound upstream response bodies 43b8eb84b39c70546661dba1cbc2c37b2483a350 fix(tts): base_url parity audit — Mistral server_url + provider config tests e5fc806ccc2de4c1a1fcd7558c4b6ba5762217eb fix(tts): support configurable ElevenLabs URLs 3356703d1f0379f1076f9725df4912a8fc21ac2c fix(tts): streaming path also honors tts.openai.api_key from config 861c2fecd284de6c559836d5f388e24d02162251 fix(tts): honor OpenAI config for streaming efc81a19a6780fd1d16c9855b62f3bc050c6aaa3 fix(tts): honor tts.openai.api_key and base_url from config.yaml f96eee3a916296dbdef42b27bc84fca2cb1a65c4 fix(xai): pin oauth side-tool base URLs 0d0ad3f9d908e453007c9614f7caa51432dee52b fix(hermes_cli): lock dashboard xAI active_provider contracts and setup unsuppress f42be940491a33fc83e8a3f024e1e8d901cc6570 fix(hermes_cli): preserve unset-active dashboard xAI OAuth and cover token save modes fce06e909d4bfaa56bc72ddae1dc6ba045e33143 fix(hermes_cli): keep TTS/setup xAI OAuth from switching active chat provider a54067a6fdf75117376b2019fb70e87285a2b6a4 chore(contributors): map tobiassafaie@MacBook-Air-von-Tobias-3.local ff279649e1434083cf6fc37cc7d8cbbf9d8270be chore(contributors): map bensheridanedwards@gmail.com bcbae3bf411b7114ec17999840397f76c16a661b fix(stt): cover 401 retry and keep proof image out of the merge diff 36de3c5c3e36eb13aec0746e096a45fc9e74dcf6 fix(stt): retry xAI OAuth after auth rejection d889c980f5cdd7e63ab8882b6f36dea9906aae7c fix(stt): prefer explicit xAI API key c0c5dac5310e9647b440ccb8e091ef96bc94c96c fix: stdin=DEVNULL + windows_hide_flags on STT transcode subprocess (guard test) d66ec2f5f403b4afdda02aab26f13de337315a9c fix: explicit utf-8 encoding on ffmpeg STT transcode subprocess (Windows footgun lint) 4eadabb8ea94e3257bfe522702b1082b689856b1 test: add BadRequestError to the fake openai module fixture 0897e0adb8d773dec4e47bafce5978ea79ef1d87 test: align dispatch tests with provider-scoped validation and named registration errors ce57e9fa859462f5c4fbef8154e275e06046c3de chore: add contributor email mappings for salvaged STT commits 9467dc135fdb5d6dda0f9c4aff9659de83322f98 fix(stt): lock local model load; allow keyless local OpenAI-compatible STT ef0d8ce2c5a53617cd40d65a0197794422ad44bb transcription: transcode to m4a and retry when OpenAI STT rejects the audio container f50a7c307a27229082a29802ffc155a5da8eb351 fix(stt): preprocess .silk voice notes before transcription a784e74c7fb14f629c1c80d9ef5628d8e10d9c96 fix(stt): better error logging when faster-whisper lazy install fails 7a56ab2aa22cdccc9746afe5351215f8e2f9bce9 fix(stt): validate selected voice provider availability eaa2dd6d09c56f98dbfa8ce5fc766a08dc6046ef fix(stt): check selected provider (not any) + plugin support de057fe24f3c6e50709b8d4c8d38b2f3c9010512 fix(stt): check_voice_requirements() should recognize all STT providers 7d2b8a3cade08ddf2cb20a689b66ee26407d8c5e fix(stt): anchor qwen asr envelope stripping d219392e5b58e2f03f1d54e3be05adb3af5e5c8f fix(stt): anchor Qwen3-ASR envelope stripping 517b8debbdbf5e1559f7b07e25718bacb4b3f993 fix(stt): strip Qwen3-ASR response prefix a5074c0ca8f050e19aad2b780fcdf9595891530f fix(stt): report unregistered configured providers 3290c18247608394bf4e4eaa7b9010a148989601 fix: handle missing transcription module gracefully 9e114c5e978a34c705e6393fb1921d7ad0b10dc0 test(tts): add STT fallback regression for _transcribe_mistral (#53259) a6a439338ec72a6085cefb176a2d7e0c4611507b fix(tts): fall through to raw import when lazy_deps fails (#53259) ffc3ce27d53a80dff9e8ed53877270dcd90275b2 fix(stt): scope upload size limits to remote providers 884900ffd6a80ff18a7a9e9713b2a62f1f19ee9f fix: avoid local STT crash on Apple Silicon 766e856118e3d795ba5ed8007758f1ab914718a5 fix(stt): treat CUBLAS_STATUS_NOT_SUPPORTED as CUDA lib error 06fc6e0c2968e8ef0af41a7c40175e663b18e739 fix(stt): respect device and compute_type from config.yaml fda771498e563b66e0385a5b024994687ea2fec8 docs(acp): warn that Buzz auto-approves Hermes tool permissions 38cd253abd9aec5973095d692109bcd2de745526 feat(update): self-heal the hermes-acp launcher + document Buzz Desktop as an ACP host a7d5147cf1074a89bc04545a15d11883f12582cd fix(install): install a hermes-acp launcher onto PATH c136400c9e70734959ecba930749894e214d396f fix(voice): single scoped resolver — STT/TTS keys fall back to the credential pool 79bcfc23abeb4df3e6b8826f4c3960bb50d72a17 fix(tools): resolve TTS/STT provider keys through credential pool ed591a56640514cdcb5229c4bd51476b44adaccd fix(voice): resolve the TTS/STT OpenAI key under the profile secret scope d464ae3652cee225bc667c6b64caf749bfb55965 feat(cron): user-owned model pins + cron.model fleet default 156edc5deda4ca53c5537e7abc10eda337c19fe9 refactor: extract shared audio container sniffer to tools/audio_container.py 26f50e2f1aadb5a09e8ffd936816e83e8ac038ba chore: map salvaged contributor emails 62106422976b9c18d271a3b46f4d6d445bc24ebc fix(signal): detect M4A-branded voice notes so iOS audio reaches STT 38b0b7ae3fd24ce243df2857d4457bd66d4a72e8 fix(signal): detect RIFF/WAVE attachments as .wav so they route to STT 4ae27548d6080fce7f91837a4981d926a95ea20d fix(media): recognize m2a audio attachments 971cb9b8866de6612a5230616c816a868076024d fix(stt): accept .oga and .opus voice notes for transcription d72c4a791e88149af4fcfcd6099aa7a772d29e00 fix(gateway): sniff cached audio container type eaf30a4de79ab1ec916bd7a5162353ec7787d5d4 build(desktop): declare camera usage for signed macOS builds 47cb4ea1fecc94cc8e1bff0177ff37f810ebe560 fix(desktop): allow camera capture through the permission handlers 9cf1227d4ee70e88e2992e04b4cb6f7e50cc97bc fmt(js): `npm run fix` on merge (#73555) 2faac36866fcf11d581d6dc7c467c787173bca0b fmt(js): `npm run fix` on merge (#73552) 5dc6a14c1446656a83cb4bf5de20ddbf75daac29 fix(credits): remove the 'Grant spent · $X top-up left' notice 2aa34c54848c94afac8ba52607f2bb95b728dc87 fix(observability): export shared metrics after tasks 754fdbdc9863048d584b9754e36990d67935caa2 test: set HERMES_HOME in _persist_model_switch tests after save_config_value fix 585726ac2e08dcc2bd32c134e0124e0657ecc519 test(cli): regression for deferred platform CLI registration path bff3aa3c1e788de514eb1c24682c6550a2821501 fix(cli): resolve deferred platform plugin for its top-level CLI command 071e2adedeedebaad297dab1ce7dd363eb447981 test+i18n: follow-up for salvaged PR #68969 c8a4b18d348af31ea4a1c6a9d55a8011b846f2b5 fix: address community review — system default, clearable schema flag, UTC fallback b5b3ed6563ddb11163b2f47b7536499f7d68a5ae fix: address cross-vendor review feedback 5cb0a6aec1b75ea0673d571e53e0851a9db22631 feat(desktop): searchable timezone dropdown in Settings → Chat 353578faca0577ae5b222cb77cf3b6fbeca9240f fix(config): persist runtime settings to HERMES_HOME/config.yaml, not the repo template e581d924299d687fd61e138ed363e6c3f289ce4d Merge pull request #73497 from NousResearch/bb/active-session-clarity 8643ccc193b0e67389b437266c86ad08425fdb2f Merge pull request #73493 from afourniernv/fix/relay-provider-stream-error-preservation 3b55419cb15b74024322b3a2ab3303b579a940d4 fix(relay): close logical calls in stack order 78aeeab8d1a53be636c2185f057dede774d57a3d feat(sessions): say which surfaces hold the active-session slots e35c2f6049633d3b6d897d63e637fc63b1b8b8c6 fix(sessions): claim the cap slot on first turn, not on open fbc878ee2ee56c76b2d9de49e7ffa3802d0e8ed8 feat(models): swap Gemini catalog entries to 3.1 Pro + 3.6 Flash; drop retired Qwen models ffe5a934794d87bb208e4a20489b8e0398d41b0f chore: retrigger CI (run 30381290401 died at dispatch with zero jobs) 09c62d5da3509cf5d12236971fbdd1b0141b83a3 feat(desktop): end a hands-free voice conversation by saying "stop" 5e34fa2d5c32a4c1c45d658d7bb6039acd018cc9 fix(relay): preserve provider stream errors c7dd9e56702f831de54bc117d6f597fa3f68ef41 Merge pull request #73120 from afourniernv/fix/hermes-relay-anthropic-context f106e0ebc256fadc4d1374a939ce45f5b622de14 fix(wake): raise default sensitivity to 0.6 and fix inverted Porcupine direction a8bc64a41887f49a743872e567628dfeace01be3 feat(desktop): play an activation chime when the wake word fires f2a88878152d02756106ea16c3e470eba68e81cb feat(providers): tunnel custom endpoints over SSH 956fc87eef9c165ebb7976531097b02555821a34 test(relay): gate native Anthropic streaming in e2e 2dcd7448d5ef28b76ccbac0f02ac42d2f19a2913 test(relay): gate provider stream contracts b1a5d67e71bdce6ab244260425cbcd6738750fb0 Merge upstream main into fix/hermes-relay-anthropic-context 3d2cc391588121a1000d5f37356de5cc03e52533 chore: regenerate uv.lock with uv 0.11.33 to match CI f228e145ba35cbbf785eded2021ae6682285b91b fix: follow-up for PR #65541 — track read conns, convert remaining read paths, mark WAL tests 6623ee9bb2ed40c9591d25b67128b38a1011faad perf(state): read-path split — per-thread read-only connections for recall reads 30ed3f82bdbf4ab39b40a5d43f0c2e17119448fc fix(wake): reject ambient-speech false triggers with consecutive-frame confirmation 913aa7709bfe9214bda91dd956c8a2933e1d7d1f test(wake): pin tflite runtime in artifact-selection test; merge tflite_ok into available gate 7d19033d2e48f52b434bad2db0b04dcf8b3b6952 fix(wake): run openWakeWord on tflite on macOS ARM64 74fae07d75ff530a62609255da04cc925de237a5 fix(desktop): the wake-word ear ALWAYS shows — never hide it 1398cc40cd49d7c6fcefb39a04e239b659bcb4ee fix(install): ASCII-only comment in install.ps1 voice-deps helper 757ba253d808ee15f4dde0fafdd23a2ae5b79e76 chore: retrigger CI (run 30323335182 died at startup with zero jobs) a832139ba39fad0f7c3c86b3bb76784ea33fc185 feat(wake): eager-install voice deps with the desktop; wake probes never run pip 46faa4f63929e65ff781ed0da2095566b3c98cdf fix(desktop): keep the wake-word ear mounted everywhere — paused only during voice chat f03bb2b4ef9e7230333080cc9774ae3e39124ff4 feat(wake): gate arming on STT + TTS readiness 514dd59cad8fc8d65137d45a34b76db6be38e3f5 fix(wake): detect dead-mic streams, stop the ear freezing during first-use install a56275771759af1b05620d07a3dc439d2f8044de fix(wake): reconcile the listener back to config after a voice turn ends 4478e76061b8768c3c3253b683f48259bf69fd67 fix(desktop): extract wake pause into a callback to satisfy the no-ref-mirror lint rule e8f9d471c6c4329da297a16778dccc222ef61eb3 feat(wake): the toggle IS the config — explicit on/off persists wake_word.enabled 7a87c6ffd60dfee253898300030046154cfa9926 fix(wake): make the lazy-install path reachable on fresh installs 625d39632aec3460cc924463cf5e853c0a36a6c0 test(wake): stub numpy in the fake-sherpa fixture for hermetic CI e136f2fdeae131f30971c6657c94dee0a6c2fe7f docs(wake-word): sidebar entry, env-var reference row, voice-mode cross-link f2b065658d125991d631b0ad5fcbd30887c17f3b tune(voice): calibrate sherpa sensitivity mapping from live TTS matrix 2a35c8f0b8a8a60bd3c442b490e2a89ac311dc2f feat(voice): route wake phrases to their profile — "hey " wakes that profile 567f47f01feeeffa4e20ce60e363ee4e220d4d87 fix(lint): explicit utf-8 encoding on the sherpa keywords tempfile 71a2feeade179be125d7b2d1b435c9cf3715de46 feat(tui): /wake on|off|status slash command 8177457cd1a1c0011245499f7948f87970906d33 feat(desktop): wake-word toggle button in the composer 0ae305ed4efbc3a0a34026afa185e5c063b2f051 feat(voice): open-vocabulary wake phrases via sherpa-onnx KWS dcc26fa28a3054434ed48d26d3fbf47fde9fae87 chore: map contributor omid3098@gmail.com -> omid3098 9f84bc30bd73e351a2e6c99c919e09879a3b4e9d feat(voice): bundle the trained "hey hermes" model as the out-of-the-box default 5839aad13dbf9ee7b58066e219e1be24b0c44c29 fix(wake-word): enforce single-owner lifecycle e43d1418fda6b7b0feb5b6dfff3f53455ede18e2 fix(ci): sync uv.lock and repair wake-word docs MDX 8e155bdcc85f46d649d9faf18f9206c7e777ab65 fix(voice): honor wake_word.start_new_session on every surface c01c3f4b28773ad32ec8a87ae817e0c6f10c43d7 chore(voice): tidy wake_word — drop dead SURFACES, unused np, stale docstring edb12bf4237fa76acdd9067cd40238663cdbfae7 fix(voice): stop wake re-fire loop and empty-transcript error spam c597b4c47b0528ed88ff3095e8ee640ec73aa5f5 fix(desktop): start voice on wake via a latched store, not a window event dc4c2414f94c758da7bf4fdb77339e0cf149a07d fix(desktop): re-arm wake detector after a manual voice end 813d9ffad0c32efbf2b0b0abedaa73e05cfea786 fix(desktop): deliver wake.detected over the websocket, not stdio a6aada24f5162ae8bfa63b87bdcd86e588c32278 fix(desktop): handle wake.detected on the canonical event pipeline d2fab75ffb8c24a2b2881e00b7ca9b623191205a chore(voice): log wake-word lifecycle at INFO for diagnosability 8a4d58287e4849cc5f9f8424396d9cfa874d4539 feat(desktop): full back-and-forth voice on "Hey Hermes" wake 86d5b8b90f801754ca30c986c2bb1794e64e6e5d feat(voice): extend "Hey Hermes" wake word to TUI + desktop GUI 5f43452e91e9f8350426001a936b1d8db16830fa feat(voice): add "Hey Hermes" wake word to start a hands-free session 2e9559adf0583b174e67870872f8ed2ce6855032 test(compression): resolve context_length inside mock in overflow-warning fixture 49f50c68a082fe9a2402611cbfcd35f51d09deaf fix(compression): coherent context_length setter — no-op guard, re-floor on new window, un-strandable init log e762a5a4737e12a99c29f640f2bc2c9a0a77f7ba fix(compression): copy-on-write in image-shrink recovery so degraded images never reach stored history 5ce8e347672caa6365bf4aa6ff3875f08bc44eeb test(compression): resolve context_length inside mocks across suites hit by lazy-init deferral fd53fa3eace5b0e1042e4e9945c35b8d3bf9b515 test(compression): resolve context_length inside mocks for tests added on main since PR base 4da1abf789082ac9a07a3d9243823518881f041c test(caching): guard prompt-cache shallow-copy mutation-safety + byte-equivalence 092f76753b3a8ed961869bc2a2c5e5eda8914770 chore(contributors): map tutors1997@outlook.com -> Stoltemberg for PR #56081 salvage 44bd0521a47952164fcbdf0fd21c88067fb16668 fix(compression): keep ContextCompressor init non-blocking when quiet_mode=False f8d6f79c1ac9830d58d8188216c173be6fd35a86 test(agent): fix lazy-init rebase test fallout (#32221) 958a81a1e4386780f544733ff019e7739df64d1d perf(agent): defer synchronous httpx.post out of AIAgent.__init__ (#32221) abc2069f497bb082325c79a6b6a7604e1e1ffd1b perf: pre-compute sorted reasoning timeout floors at module level 43a9bd9e0bfcf5759e968ca8bfea9f05b15b96c0 perf(caching): selective copy instead of deepcopy entire history ad6df5eb95b1e96da9b6c2c9b037aecdb5cfc692 test(compression): recurse into control-flow stmts in AST walker f6abc6a046bdcdcb85c30afaefb3e840a520d4e6 fix(gateway): write hygiene compressed transcript before rebinding session cf258b6ae7933c70b568f0f9ab14c6a76b01aaaf fix(session): widen display_kind filter to prompt.submit ordinal + rollback.restore 748c12b1483da55ba60ee8293e92cee7d357c4e0 fix(session): skip display_kind timeline rows in undo/retry turn targets 9e2f07e704d6433c118cdb4543e8519e1fa62762 perf(dashboard): use GROUP BY for session stats instead of fetching 10k rows 82e2c9ce40a7f0d96cd55073da09ddef9abaeb1b perf(agent): reuse the per-request OpenAI wire client across sequential LLM calls a41dc65ba77a56218596d213f892ea793af653b6 test: guard coalescing field lists against update_token_counts drift 927633272fcb0bbd67bd9b02e963b013fca543c9 fix: claim busy before clearing queue in _stop_token_writer drain e49705d6afbe8e8a376949dc8733808cb8700016 fix: respawn dead token writer and never let coalescing kill it 174ad459393fb6f4f81b79d3fc30a7989af40c62 perf(state): apply per-call token accounting on a background single-writer queue b5dc4711521dbf4f72f85db24c3faf87aaa9772d feat(desktop): make attachment data-URL size limit configurable (#73221) 6a174e9967b3d4f68b0e7788f3771c3c5ddd49db Merge origin/main into feat/gateway-health-diagnostics b259668cac1cba7faf913c227b9262fe7a513da2 fix: rewrite recover_pending_to_db to use SessionDB.append_message 58f6678e6d01685be026fc05c1bb7eb6f58020bb fix(gateway): flush pending messages to disk before shutdown clear (#72680) f134f8cac6dc9cb3ca5a310f1a887075ffc1dc1f test(agent): cover mount-pool interrupt abort and zero-socket warning 173fec8c03fadacfd17ae4ba7864796f960707bd fix(agent): shut down sockets on httpx mount pools during interrupt abort bd1c782456b15afadf43d7da7fb1001a583be6ae fix: fire-and-forget read receipts, add docs (#70340 salvage) 652d858f2edca16df739eeb51bd6e98c4b83c391 fix(whatsapp): apply read receipts after intake policy 35afa8ce06eaf7b7257b3d2fd1338887f92cc550 feat(whatsapp): support inbound read receipts 560800f3cc8115302f52c532b88314a0387510c5 refactor: salvage follow-ups for PR #59177 3a358cb56b47fe22b1eb21a45f91e5c9259f3a76 fix(cron): warn before model config changes trip cron drift guard 9d9a472171b8a4f03cd13f03b3833220f9f0e880 Merge pull request #73321 from kshitijk4poor/chore/author-map-maff-t2b ff12b62e823a751e78a495365fe19396e099e5c4 fix(gateway): await hygiene prompt restore 76a17046e29e9738e5e90c7ae3d697af05694af3 fix(gateway): preserve memory prompt during hygiene compression 8ed80b698744848474b65f470c3336ba6f04e38b chore: add contributor mapping for maff-t2b dd866eef34788749423da9f6f6fbe3bd4d64b61c Merge remote-tracking branch 'origin/main' into feat/relay-slack-blockkit-native-parity 277fc97a0a16e57d04814e41fb9d32ae83332743 feat(relay): dm_top_level_threads_as_sessions escape hatch — native session-keying parity 3e628edeb928581d83cd6c34a3cc3b3911b046d9 docs(relay): replace internal QA-N tracker markers with behavior descriptions 09c4a1d34917d319d2f3f55a6ff3dd023a29a39f refactor(relay): remove dead _strip_synthetic_dm_thread; pin the run.py anchor-suppression boundary a09015d31e29cac5389fac8eb662b49c0645a8d1 Revert "fix(scripts): encode tool_search_livetest2 output as utf-8 (Windows footgun)" 1dfe781edd5e96d09511cf27d800a03e63b09789 fix(skills): avoid redundant bind-mount scans (#72622) 30526baab546296909b82eba5ea70326d3728e04 Merge pull request #73262 from NousResearch/bb/dedupe-main-tile 87a37b9492de36dfb84b3cefe8266df77f85432d Merge pull request #73247 from NousResearch/bb/skill-chip-only ab741ed331e1f771d8de071d2adcc7c30a9976d3 fix(desktop): drop a session's tile when it loads into the main tab 1faed58537c35f3bf3b3c5c0bdd5d43e0d470fa2 chore: kick CI dddfe6e4a3cf7b21fa210818928ba592b6476036 test(gateway): expect display on skill-bundle slash payloads dcc543af9a553bb040f93b7deee7f59f36985ba0 Merge pull request #73172 from NousResearch/bb/featured-models 7ddf3f150020ddd3294e47775296e34b877b2e68 Merge pull request #73161 from NousResearch/bb/default-zoom-out b3ba5570c99734e57692dd227046c06da9123a13 Merge origin/main into bb/skill-chip-only d2cdb21633d4f39b254793bd3238fdd7454bc956 Merge pull request #73250 from NousResearch/bb/sys-event-rows 42fc6227f6b95a09636cdd5e9fe2692b3869c8f3 fix(ci): sort desktop imports and stub skill display in TUI test 4a9754b3c3d04a155ddbfcb45642d3afe975c735 feat(desktop): default UI zoom to Appearance 90% preset 9ffb35c3c7bd1d6be4fd6413c437cc4dec562cb9 feat(desktop): collapsible providers + select-all + search in Edit Models e682a9c0a749fc85e772115abf42b9bfa6a585ec refactor: drop the shared subpath export, keeping package.json untouched ff7418315f00f1a34274eabd01aa8e158beae2d7 fix(tui,cli): render a resumed interrupted turn as an event 7ab55679534b43b0e7886de9ce3899b8a1f7a831 fix(gateway): read an untyped recovery note as a timeline event bf0871fbf828843e8721fcf460a8e5aa1a431b59 fix(agent): type a synthesized user turn when its row is written 9a6b69d9af5af8de59ba390d19271d7da7149dfa feat(ui): indeterminate support on the shared Checkbox 64166f87baff684cb9a71478fab95fd1e6f81d0b feat(desktop): default the model picker to the featured shortlist d4449c47e264166071cdb339d01fcc80bba502dc feat(picker): derive a newest-per-lab featured shortlist from models.dev ddd6b57938af594246cf7fe0303a7eb55a228c8d test(desktop): a leading slash now chips, superseding #71664's exclusion 20b2022b8c6bd4589100fd778a93592deb7be68b fix(desktop): render a skill send as its invocation everywhere it surfaces 5a940180b492c6cae93cea35ba2c47cb28eb7d86 fix(tui): show the invocation for a skill send, not the skill body b700f9f253229a54785bd3762585db50bb0e52c6 feat(shared): read a skill invocation out of its expanded scaffolding dd39ec26942241a4e3912ca5109233e20816163e fix(gateway): project a /skill turn onto its invocation for every client 48cadf197efd7abbd54de2e19cd0126fb0e563b8 Merge pull request #73229 from NousResearch/bb/slash-catalog-cache 9ad400580cc464b421a667cf8c4fa83f51f92554 fix(desktop): pin E2E sandboxes to Chromium zoom 0 3ae9b1692825de251915c8020616cbf6425e3418 test(desktop): cover skills-only completions for a mid-message slash 99d766fcaceffda8ee71eddb3433d66bf3b27226 Merge pull request #73220 from NousResearch/bb/subagent-runs 341f95b249409d0da1018ef6f7c7a3a42edccff3 feat(desktop): cache slash completions and list skills on a bare / dc50ddbbd6cf00b2164b3fc7af372f0debd43547 style(desktop): hold the delegation card to three-quarter width e4564586bc5dc9936d7a773eaabc42383bf7e4de Merge pull request #73218 from NousResearch/bb/focused-zone-tabs fd39696ccfbb1221ac9fdb6119f629f9821e195d Merge pull request #73216 from NousResearch/bb/desktop-thin-scrollbars 8fcad214aeb99a24274ed03ed40fce278ba59444 chore: kick CI 2818c9e514ddec9be2e86144c6eca0629c79f964 feat(desktop): render delegate_task as its live subagent list 63841210d54191d5d455e9db715e5e0e00cf3d96 Merge pull request #73121 from NousResearch/bb/desktop-dev-cdp-port ed67b2088850eb0cd152da02d51c0123bc54a0ff fix(desktop): make the tab verbs follow the focused zone like ⌘1-9 1cd8f8c37e152cc6938a567c6d368e95ad1588ef Merge pull request #73180 from NousResearch/bb/composer-popout-tabs ef8f2e701c4852a6574aeb3524392740fd837e6b fix(desktop): thin chrome scrollbars without platform chunk 88b6a7a49caccf6b9dd3ce39037a6b183fd7e8b4 fix(desktop): measure dock proximity against the chat surface, not the window df25d7713113d04833c6c3690376ad009fbb711f fix(desktop): scope composer pop-out to its layout zone 25ff775136781830f80a609937a8e676d26a5608 feat(desktop): let every chat surface float its composer 73e3e0860ed17062a88779d9f62cb4cfc492cfb1 feat(desktop): expose a pane's layout zone to its content 5771a6ebe616738e684ce174de88c7718411a046 Merge pull request #73200 from NousResearch/bb/tip-after-model-pick 9a5f102d0e95c2aaa67f64e827519b546439abbd fmt(js): `npm run fix` on merge (#73197) 914c3f46c6578b210f438c8396474b990251a037 fix(desktop): stop the model-pill tooltip popping open after a mouse pick a9c9467dd8f0757cd3c04d3138992fbf3727b32b Merge pull request #73178 from NousResearch/bb/dupe-message-id 14790234ff7081cda3bb7664f84da813110baac7 fix(desktop): stop a duplicate message id from crashing the workspace pane 4da7b9ee029c6ece2eb7992fc27dbcd086982c84 Merge pull request #73169 from NousResearch/bb/queue-drain-semantics 48b21acb90375e28082b944eb96bbd1a3759c02f Merge pull request #73164 from NousResearch/bb/pins-out-of-lists ab68c5efecac303033b4d42cebe67154a566629c fix(gateway): a queue drain never becomes a live-turn correction f2a4452c8a40c5ce916b7ad7140de6561255f45e fmt(js): `npm run fix` on merge (#73165) c3a381488524a32161c465ab974e6e2f618e224b fix(desktop): keep a worktree lane whose only sessions are pinned 7806e6a9a8421d1b674868d66c02068d957cb8dd fix(desktop): keep pinned sessions out of the unpinned sidebar lists cef85482fcda81f67d12680d6693ddf42a615091 Merge pull request #73158 from NousResearch/bb/tiny-model-switches e95ce5a0e1db81dd3eb781d611f053e95aecf811 Merge pull request #73146 from NousResearch/bb/steer-transcript-scaffolding 5b32f9dc3650793454870f56a0138933921af102 feat(desktop): default UI zoom to five steps out (~91%) 69a4f65164b4a8f81b4947ccca17265a8582a377 fix(desktop): use xs switch size in model-visibility dialog c80b199f36db75349015646f61904170a59ba4c9 fmt(js): `npm run fix` on merge (#73155) 4289a934b2bf5a721bc65c27b220613140b5df6f Merge pull request #73147 from NousResearch/bb/session-open-in-place befff02e9baec4874b51f8a073e60c0b729b696c Merge pull request #73150 from NousResearch/bb/session-tab-slots ff06b47ab055d42c3e1028a9cf103a6b79ef461c Merge pull request #73143 from NousResearch/bb/floating-panes b6c7df6cb695e3c4fb5267b9be3e08f601f7c2b9 fix(desktop): sort session-row imports for eslint 319bcedfeae9119f559be2b7118d21015c84b072 desktop: open sessions where they already are e67e4604dba174e1dd150ed3a36d4840dd597c87 desktop: shared openSession door for focus-or-route f65fa01926fee90992df40ad7a56251ff9ef237e desktop: ⌘1–9 slots map to visible tabs, not raw pane indices 589fd23947d6244288d328a046d01c2a9098e804 test(desktop): cover floating pane adoption and live drag aad7f128bbcdacc1e5c8cffad5af5581216b2960 feat(sdk): expose FloatingAnchor to plugins f78521785f9698f8d0eec2786d27a9d936177911 feat(desktop): render floating panes above the layout tree 6dd1c6c062d7debb1f35a85f4af6453b637750b3 feat(desktop): floating pane geometry c8ec2a6f3c93076dec4c117eff0389fe626a0d76 Merge pull request #73141 from NousResearch/bb/figma-mcp-oauth c883367bd2f6e8ac9addf04b4418f0c3d1eed338 fix(agent): keep interrupt-checkpoint scaffolding out of the steered transcript 1eb5ee1eaad7d03da183dcff3844d6869f6284e6 fix(mcp): make Figma remote OAuth work via DCR allowlist defaults 3c388db06b6543821f15ed62efb9d8e7cd9bb9be Merge pull request #73128 from NousResearch/bb/steer-mid-stream d76d08360b4cfa84e166f6fd637c690044c92aed docs(skills): add inspecting-hermes-desktop-dom 5b22bd955682a8fc7b07769784c5129e23f53eaf Merge pull request #73105 from NousResearch/bb/tighter-turn-block-gap 070093a318d5cd9e56614d76cbda6df56f8e73cf feat(desktop): on by default for dev-server runs 4cee9aab6174d857352616263a358bae61c43bbb Merge pull request #73075 from NousResearch/bb/drop-leva-backdrop-controls 12cd4ab423e633b91d8289e67d1d2837fc69505c fix(agent): steering corrections survive retry/backoff, and the interrupt sentinel stays out of the transcript 0ae299734553e05d59ea9dc1242f904a3c788e60 Merge pull request #73110 from NousResearch/bb/composer-at-chip 16ef964fdb8a600d449fe872d3f658213187e551 feat(desktop): rest the thinking caret at a faint hint instead of invisible 2881243df3cfe65ff8197ba062f92d17faf34950 fix(desktop): tighten the gap between adjacent transcript scaffolding fab4c888aeb715a4ba287759be8f4e622154070d feat(voice): say 'stop' to end a voice chat hands-free bc997a36a8eea29eec8b81281bd027423a75c7c8 feat(stt): default global stt.language to 'en' 6254c568c89e4e63d83fb99b2439c7072babfb2a feat(desktop): opt-in renderer debugging port for dev runs 90797eb224551f6681967ca312a05d72e9eebb9e fix(desktop): chip a bare @path into the ref it means eda54775e274b530656f27db7f52fb187645a0cb fix(relay): isolate streaming callback contexts 14bed44c8cfad8e51fab9283555fb4c53a37c998 Reapply "feat(observability): integrate NeMo Relay runtime and shared metrics" 3af7b867fdc18f170209cd82a6236c095d559184 fmt(js): `npm run fix` on merge (#73107) 73f8ddbb8b69c270b7bd87dc5aaf451f21caf48f fix(desktop): stop hoisting an @ ref that is already inline in the prose 045811f5beb5419644a9c1c73b5ccca41171e83c fix(context): keep @ref tokens inline instead of stripping them from the prompt 56aacbdb0125eeab2fdde2518088760f8b7ec1c5 Merge pull request #73101 from NousResearch/bb/queue-double-send ac8310bcc29606a321f032676b2a49a0eff92e1d test(desktop): cover the busy empty-Enter double-send 9f4a6fdf4ab0f68f42b96885ed9883ea6c578c47 fmt(js): `npm run fix` on merge (#73096) 84d77b608c4a217b3624bc2bfb0d493f3ff9f4e3 feat(desktop): double-Enter sends the queued turn, and the row says Enter 76ac2048460de293dd39120b176b66acd4817529 fix(wake): run openWakeWord on tflite on macOS ARM64 ef267011348a7bc67ad3f46c9b0a0dcb0f4b7342 Merge pull request #73089 from NousResearch/bb/desktop-sidebar-counts fae29c841054852c3866cf1f75e942ce6a928f62 fix(tts): class-level .ogg container repair + multi-platform opus voice detection a10bd49dddc96d9eda2ed9aff043b06117f44047 feat(stt): unify language resolution across all STT providers 7e75752516b725a55891cf1f34dd2ef8ba345ee1 ✅ test(stt): isolate null config from language env 131251a1aefdd64817b3a2422ce552eab2e79514 🐛 fix(stt): declare local initial prompt default f65481674bbbe84bb379b8e8113c111f0a258f56 feat(stt): pass local initial_prompt to faster-whisper 13b52e0fa32937398a58d87c00168b93561313f5 fix(tools): null-safe Groq STT config read be109982647e10af98e9b1abf69253d0d3b17db2 fix(tools): address Copilot review on Groq STT language hint a355db1ef5d3d0e2b94e519ccd9e6da81110c665 feat(tools): pass language hint to Groq STT af2948343ca753bd15970d2b2118c2731976724b feat(stt): add language parameter support for OpenAI provider 725c7ba53481da44377f338106bcdd43d6a57f6b refactor: single owner for empty-content wire repair (class fix) df45811198672781cbb1fbc84c9d99e148101374 fix(errors): self-heal empty-content non-final messages before send 4587d77e0efd15dbe237743653bfa555e233a305 fix(errors): log when the empty-stub guard and malformed-body classification fire 207a6c969de4e5b17d8041a2036b9249eed16824 fix(errors): stop empty-content stream stubs from poisoning the transcript 67ea00327da6bd515a447c8917655762419b19bb style(desktop): drop the remaining sidebar session counts 058c4376d2ed20c6779fbac0f2cd06d37c5110f1 refactor(desktop): drop leva from the chat backdrop 202140db53536083b85aba7511c555d07f5ada67 Merge pull request #73074 from NousResearch/bb/slash-after-command c1964f977b9fcbe07c4bd15b10a9cc43319ba77e Merge pull request #73047 from NousResearch/bb/link-brand-icons 9ed212e096db63982136e7cc63a5a52dad2ab769 Merge pull request #73062 from NousResearch/bb/sane-tooltips ea0775eb8b18b9289111581317a3525a41709ce6 Merge pull request #73073 from NousResearch/bb/composer-image-lightbox 015353d970fb9d18cb453bb0fda1e1c15c6d11b0 test(desktop): cover short actions labels and tip-less close buttons 970c4b533692550d34474f0fe195796c1c5dcbfd fix(desktop): shorten Actions aria-labels and tautological copy 9b5c15727c491868ff3eb3b660f864256344a851 fix(desktop): strip Close-X tips and statusbar tip lectures 5dadacfce7deacb3b3bf2e1778b0a876535bcd48 docs(desktop): ban Close-X tips and click-to chrome lectures eb851d619ecf44d66a485afc70cc42ebbde58b4a fix(desktop): keep slash completion alive after a leading command 0b32ff708808a9990eb0796d3d3633aa2f8f2207 Merge pull request #73068 from NousResearch/bb/inline-image-download-anchor 71e66f3a11b4182f7dc98e330f0ed8904ea41e1f test(desktop): cover the composer attachment click routing d8cb73b4ab2b3c766185fd654100175cffd7bfb3 fix(desktop): open a composer image attachment in the lightbox, not the rail 2e61feb94eb4380b1173350146d468fc5b426afc fix(desktop): anchor the inline image download button to the image, not the block df7352aec657abd988e98897b8bb194d808de044 style(desktop): quiet inline links to color-only until hover 1910d613ee1cfc7ffb957cae5d6a2dd95f7296fe test(desktop): assert kebabs are not wrapped in Tip 26413bbf574b64243b9b38a7ebdc1328d8ca9051 fix(desktop): stop tip-wrapping kebab menu triggers 58714e0e2a1fe0d772967a087d971b76f883b5ad docs(desktop): tip only when hover teaches something new 84858d76ba4a77a66f1f65cf0289325767b82f13 Merge pull request #73054 from NousResearch/bb/codeblock-chromeless dc7414b1f2f375648372358c434b3b073a6c3ed8 Merge pull request #73045 from NousResearch/bb/composer-at-leading-slash 6cf572c9e5d88a33e0e51cfc5bcfe47f02682731 Merge pull request #73053 from NousResearch/revert-67607-feat/hermes-relay-shared-metrics 841a5a744ad115b001a2720bf1eeb6bec3dfcc7d Revert "feat(observability): integrate NeMo Relay runtime and shared metrics" b3174092f64e057f1aa2d66de07a5ce236edf808 chore(desktop): drop the now-unused assistant.tool.code string 39bde52014f2eec2ca2f76157d43e1506286c3b5 fix(desktop): let the expandable fade match its own surface b7fc36cf3cfcc57856e55d46c9f842da7d5cf5ea feat(desktop): strip the header chrome off markdown code blocks 23459c036138a5817e1770e120df27d48eb49a87 feat(desktop): show brand icons on links to known domains 0d19e93f5da13d425606286f80a47d07960d3586 feat(desktop): resolve a hostname to its Simple Icons brand mark 5e88745f125c0d332c1d16ea0363860d447657f5 fix: exempt codex_responses from the empty-assistant-content pads 25a85745922c91b200dd2487caa237b974455808 test: adapt multimodal pad-safety test to main's assistant-content flattening 2a26be69c941fc6196af7ecfa5cc11497fddd47e fix: send-time pad must skip multimodal (list) assistant content 309f06b044e99682129f8e971697992a3d4d10c4 fix: prevent session poisoning from empty partial-stream-stub assistant turns 10d4975c2e5c41e588209aff930ebb890f696b06 chore: trigger CI fa7b0fcf5d6e3576a59514ef1e281cd1e0872b8b Merge pull request #73035 from NousResearch/bb/clarify-composer-enter 044cf46a0dd23cdcbd754f905354f91a89a1c7fb fix(gateway): treat a leading `@/` as a separator, not just an absolute path cfd79e5b1b78590025b98c5013969e8565da6847 Merge pull request #73038 from NousResearch/bb/palette-active-theme 7100e8d539f68d901cec7ff260235a7210481daf Merge pull request #73041 from NousResearch/bb/tab-strip-scroll-into-view 1470022ad8f8a509b17747106ff41ae59df2de9e Merge pull request #67607 from afourniernv/feat/hermes-relay-shared-metrics b6244959a61b0a6953cee9e8191c0bd6de7bc6a2 Merge pull request #73040 from NousResearch/bb/context-menu-parity-2 3d649f337605ca97ab15623228b02b82538d818f Merge pull request #73024 from NousResearch/bb/desktop-cold-start dfe3a23a606a9530aeb05727d2d4e4e2f097e10b fix(desktop): scroll the tab strip so a new tab and the "+" stay in view 9b84c6a04628d11c4b3ae5ad342224a13c9f3af2 feat(desktop): right-click actions on the sidebar cron rows 48368bc4a7b0e2abd4a2c093ba5db96818603f2c feat(desktop): right-click parity for every panel list row 69f72f2b7c31d5d3f7a10d4d9750f305e320a331 fix(desktop): show a check on the active theme and color mode in ⌘K c0dd6e1f3fb6fdabdeb13a037cc4a2d063e2e367 fix(desktop): stop a clarify card swallowing keys it doesn't bind 251b668f4d83c113cc4b3175741ebb16126a4a05 fix(desktop): let the composer answer past a clarify card 1baea21cfb839d7aebe6d04122c9866fb647d969 perf(desktop): load shiki and @streamdown/code on first use, not at boot 6fb5d2d89cf85ec63afb2d712958988a02130b2f perf(desktop): split heavy lazy-only libs out of the renderer entry chunk 347252a296ac30780c5afb7a7c29c17b09c85317 Merge upstream main into feat/hermes-relay-shared-metrics 71e7eb3c168a49fdd3179efb8a921ad78f6e8e1d fmt(js): `npm run fix` on merge (#73023) fe71e32a874404d3bb781fb5decbe56c2766ae7b Merge pull request #72893 from NousResearch/bb/desktop-activity-grouping 50b700c56d7c8f5d0cff0cd05e650af2418a1523 fix(update): widen the remote refspec so --branch can resolve 4c602f2e0591677e31b30b78e5c4aeb9d175121f fix(install): stop pinning managed checkouts to a single branch f1af61354e788132fe23cdbc09a29c73faf6685b fix(banner): scope the startup update fetch to main 094a55863501befcfe2b66f2958c7f6077dc8038 Merge pull request #73015 from NousResearch/bb/layout-aware-keybinds 83cc5831fd79dca103d6e737bfcf8848f4f981d0 fix(desktop): resolve punctuation keybinds through the active layout b2bfab48373dc18e1311bd3261bae2e4b5c37c53 fix(desktop): honor layout-aware letter keybinds bc8933042fdb69c4f31ec7cd7f81a588007b1642 fix(desktop): stop the enter animation pinning opacity over the stylesheet 147e451cc888b5713ffc535eb4b2a5aa02d70d79 Merge upstream main into feat/hermes-relay-shared-metrics d83e858507a9bdb7f96c7a163d89c34c60909dcf chore(xai): drop noisy default_headers comment 5cffc53194062769f9a4018365cc42c6ab0cc685 fix(xai): send Hermes-Agent User-Agent on chat/completions d89512107e7f562a380c2867870d0dcca67bae98 fmt(js): `npm run fix` on merge (#73004) e56480057c8bf337986a50f1c691685fc4defa4d Merge pull request #73003 from NousResearch/bb/tooltip-skip-delay 7a10e48e2ffa38d9eb322d11edabe5a40446f18f fix(desktop): one weight and one gap for transcript scaffolding 46df6ca70521bfad886699ee4857524a6d22720b fix(desktop): keep a run live between sequential calls 0b0e53cee19945df8811ac3c4630e2e4a1891657 fix(desktop): retire the drafting label when the model moves on ca605174cf7dfae52c56826cf7951700f6143ef4 fix(desktop): zero Tip skipDelayDuration so every tip waits its delay ba4f5b893aed8986a35d407001e65aa9ecd532f4 Merge upstream main into feat/hermes-relay-shared-metrics 373632e33813c86b1b9b024168a5892af1926b83 fix(state): recover from read-only database files at startup f800aa3caed1cc645f6b50aa85961f3687960903 Merge pull request #72995 from NousResearch/bb/edit-composer-submit c89d21189a573406a9f2098cbe2801224ef9329d fmt(js): `npm run fix` on merge (#72992) c8806728467b91388d293ea602da12631130b9ae fix(desktop): send a message edit when the arrow is clicked 4dd4708346c3e3a1a072bcf2a8ec5c9d9f3ebd57 fix(wake): reconcile the listener back to config after a voice turn ends daefa8c34ed9df8f94e1ccc7ddf1878af107a54f docs(relay): move behavior-controls docs into the relay-connector contract 67e592b01569ee1bdab9f7c3c25788db24e93411 Merge pull request #72987 from NousResearch/bb/context-menu-parity 53a81cfe50cde636b0dbaccb860728e798629a9c fix(desktop): give tool rows the scaffold colour they were meant to share e23ef9f312cf37012457f88ea8835142cc23f0d4 Merge upstream main into feat/hermes-relay-shared-metrics 66a94dc177b816df556edfa9d3e302f75dd3316f Merge pull request #72985 from NousResearch/bb/tooltip-delay a67b2d93cd86ada0f3433f6fa4105d06d67d9d0d fix(desktop): paint the live status line as scaffolding 85a75f3155c19de8ddeca9804567b2e128f5e1a3 refactor(relay): drop the flat_dm_status knob — liveliness is unconditional; add relay docs page 84a25212de8c14ce7ab0c1838cf61444b55f4212 feat(desktop): mirror every kebab menu to right-click 0d14864b94c1b04aa5e0ff6f0ec7273a2d3940c5 refactor(desktop): extract a shared kebab + right-click actions-menu primitive 705b20a57d34b1e2bf0bf9a551eb96480311b539 fix(desktop): delay Tip hover-open by 200ms so tips stop flashing cf0c42fa0b27bd453bcab5d8257544ae64b5c963 fix(agent): never replay chain-of-thought in the active-turn redirect checkpoint b1f4b9576192bf273c6f64390cd239f6f96e6733 fix(desktop): measure reasoning per block instead of per turn f08b0e5606de357632c87414238481b574285371 Merge remote-tracking branch 'origin/main' into bb/desktop-activity-grouping a3c46ac09ec95c3bcf1d2e56e60bdc8ca8ac160f refactor(desktop): give live tool runs a one-line ticker d7b8a63eb7573265dccefe61eb708820773fed78 Merge upstream main into feat/hermes-relay-shared-metrics 96db67b849e78d9c4c0bc0e1efc6dc95f22bcbcc fmt(js): `npm run fix` on merge (#72967) a19cfa4531e951bf22a1895d0169eae9ac78fe54 Merge pull request #72960 from NousResearch/bb/desktop-statusbar-toggle 6ba2f3e6444dee14d8911b2a2f97cd1efa8a0919 fix(desktop): say a sub-second reasoning block was brief f96997c36face3e0db92954fd6c0724ebd78c6c8 fix(desktop): settle a tool run whose calls never resolved f7d6c1be8f62b24abd45c1d9a3d4aed8a7f8e4ee docs(desktop): explain what UNBOUNDABLE_TOOLS now guards a77c75f3e0b2b0e36606425cec902c45baad6e60 feat(desktop): report how long the model thought 7151ea4c77b6bd5448e8c78a5f51d4c8b24630b9 feat(desktop): collapse a settled tool run to its summary line 97d790d8b171e4ad5d665aecc3364927d84c1a86 feat(desktop): summarize a run of tool calls as one line c07f2e023aa422e7afc15b9fdc75deecacc6171b Merge upstream main into feat/hermes-relay-shared-metrics 9f02bb207dba669081e7b44a553a16cef29dca8e Merge pull request #72965 from NousResearch/bb/resume-freetext-search 9864e00fb42a4c7f49b2767dd58a8a0a1f832865 feat(relay): flat-DM liveliness — status anchors to the triggering ts, replies stay flat (QA-8) 71d5c47e215beda042d347d765451a6134e4e2db fix(relay): per-message sessions for fronted Slack DMs — stamp the inbound ts as session thread (QA-3) 981feb673055f9c45e98887af4dec1be462bfda6 feat(skills): org skills are editable in place; local edits survive org updates fbd8d1a93d9e2a8f47dab2565d94ddf1ac74472c Merge pull request #72963 from NousResearch/bb/artifacts-real-preview 3c74f463d0b392746c16069bbb7ec39ee8a75e79 fix(desktop): keep /resume's free-text search typeable 181358d583ce071001a206fb9030c9e677f03e02 fix(desktop): keep /resume's free-text search typeable f4e042f4665e0f981b5df003aebbd6ef971770b8 style(desktop): sit every pane tab strip on the sidebar surface 7de4fbd493bcd290337fb153d2b4298d637d0817 Merge pull request #72956 from NousResearch/bb/slash-freetext-enter cd25a9f4053c603756209b22ba9b91da4257a893 fix(desktop): open a preview without dragging the file tree open 003ff53fb4b78a6eedcae4e25cfc8952918b1c03 fix(desktop): scope composer and transcript state to their own session 96999b116b5efcbdfbe4e84b79ef28b4fccd045a refactor(desktop): put every preview on one rail tab list 43571601aa71fbd30e839f567e540106a92d8a03 fix(desktop): don't let Enter swap a free-text slash argument for a completion e3acdfb21da9a06f9b326f001563cf41641787c4 refactor(desktop): lift the completion-accept decision out of the keydown ladder 58c8d86bd5c98e09c2e1b31cc3754e86817e4881 feat(desktop): let the status bar be hidden b42919447836d22eafc08e19aa6eeaf9ce7dc366 refactor(desktop): simplify free-text slash mode check (#72815) e19ac3b7458c6290419d4e6a0f86152771814841 docs(sync): point users from personal sync to org sharing 5efeb73b9f901b62805c61cc86ff1d32478ce1d2 Merge upstream main into feat/hermes-relay-shared-metrics 7c532e100620ff2ced86112b5911036c66a37003 Merge pull request #72889 from NousResearch/bb/composer-at-paths 42c308ecdc3d7fd3d5b325ebef4588bffd2ed1a8 Merge pull request #72897 from NousResearch/bb/desktop-drift-fixes 3666e3417e486c9280463ed950730a68a511bfc1 Merge upstream main into feat/hermes-relay-shared-metrics 14cb0507a7f3cdd2a6bb787aea504c0de4e6fe51 Merge pull request #72912 from NousResearch/bb/desktop-project-count 70d8db7409d34f1986a1218ac85f538e65a9563c Merge upstream main into feat/hermes-relay-shared-metrics 56d9e3faf291d68d9bda145263440d3f4e49c1e4 fix(desktop): extract wake pause into a callback to satisfy the no-ref-mirror lint rule 7d951032b2e015be4b5c20d5702e820ffdee61b7 Merge remote-tracking branch 'origin/main' into wake-toggle-config dbc18c6d62c02c664c94978120df972d01ca0fe7 fix(desktop): preserve live model after settings save (#72903) 4e6567c62cc183f383c33e31d0b5760804cf3c49 feat(wake): the toggle IS the config — explicit on/off persists wake_word.enabled 731aa0ccc9d0968bd61a0c6cee7911aa787c58b2 fix(browser): stop stale cdp_url from stalling every startup by 10+ seconds c63be0daf77827fe74ca9b22be3c15f9a658f815 Merge pull request #72900 from NousResearch/bb/desktop-home-project e04ed64637d1de9405c05c6730c0c51c2862098f style(desktop): drop the session counts inside an entered project e00901259c6383744dc6ac13d0939f88f3154971 feat(desktop): Tab into a folder from the `@` popover 579b66336f5c4b310c55102491a74969ef4145a2 fix(desktop): let automated teardown quit past the active-work prompt a88e27e9e53164ce95a263fe0a13cae1c8d3351a fmt(js): `npm run fix` on merge (#72902) 1d76a151888dca67fe80461bd1968d0436404cee Merge pull request #72899 from NousResearch/bb/desktop-recede-chrome-seams 5a5d7b938615e274bbdb631dd2b57d1d4b7a7b53 feat(desktop): pin Home to the top of the project sidebar ef0f4763e366c3d62a50aba2717eba910b858253 i18n(desktop): name the project-less bucket "Home" 60b6ea237f6d48f31e2e5f50dcbfaac440772a31 feat(gateway): group unplaced sessions into a Home bucket in the project tree 2a7da2b5498128c5992e93915386b91707803c08 style(desktop): fade split sashes until hover 35a002a4412dbfaa41ea84d1b02dc9c1350f390f feat(desktop): mark the active pane tab with a primary underline d8b5bbf607d7f51d62983852c7ae719f566b485a style(desktop): drop the titlebar and statusbar edge rules c7ef4c192d321407d06bb33e826bc8209cc271e1 refactor(desktop): name the overlay z-index ladder 9ae3bd73c984caa371dc10b01750397833dd3cec feat(desktop): confirm before quitting with a turn in flight 2f5926ed0591e46de3b5835d12b77ce5cbf7c529 fix(desktop): time a stream stall from the last activity e9bb4c39511f7c60442514d73803c76d63945a2b fix(desktop): don't alert for prompts a reconnect replayed 93477b2a0c266c3b1a28611d98cdf22ab5e1d571 fix(desktop): paint diffs from the theme palette 3be565fbdee3115ab5b9338551768b8e5e655c56 Merge pull request #72886 from NousResearch/bb/desktop-titlebar-sidebar-bg ecd5c796364a61a77e51a3f5388c06e83958057f fix(desktop): sit composer chips on the text baseline de0b376cc9dbafe72f3b7c43dfaacb5b089bd447 fix(desktop): keep the `@` popover open while typing a path b378cc0a72228fa6ec2201a7d7d8dd9b7a5fa77b fix(gateway): let `@` completion find folders by name bdd75630a7c1ba6fa9dcc463db3a15e6d5c79e59 fix(desktop): paint the titlebar with the sidebar's surface color 551e1c6d6470a0911dabd9e0d1a756ca2f86e8b1 refactor(agent): direct flag access in redecoration, matching call-block site 708390f47dc1a139f4a519c75e4c6875b97e39df refactor(moa): co-locate guidance peel with attach, add round-trip contract f9be15d0f958bec0eff31c0d3a720c9a87e93953 fix(agent): rebase MoA prepared request even when guidance is empty bfd82660b59df931fa81393cedde26dbdfef8457 refactor(agent): share static-prefix reconstruction, memoize failed rebuilds 2322f0dcca68a1135a8935d789442a43067c4d81 fix(agent): restrict strip flatten to decoration-produced shapes ece0107fc22f5a0fe38ffbad9638389f0817b888 test(agent): cover prompt-cache redecoration across failover policy changes 3e86df275358582dd6f47e688b44f2d1f13ac467 fix(agent): redecorate prompt-cache breakpoints after provider failover 5646fed97eac67c5ec5b21e5c491309d8c97639d Merge pull request #72858 from kshitijk4poor/revert/72817 2c1809e6ca62d8624e223d92086fe02edbecb9e6 revert: PR #72817 — session activity watchdog, stall notify, compress timeout 1f405aa9ef57af2f5629e60a44609a7ce7d6a753 fix: propagate logging session context after daemon-pool compress_context b1218e5e70116ed1624612635387a9e21834345a chore: add contributor mapping for fangliquanflq (#72424) c135b8543b429a3ae4d8c4d66af26c63939cccac refactor: reuse existing utilities in salvaged PR #72424 cfb206fe2e8034793a97a10944cfc733d2ddfc8b feat(gateway): session activity watchdog, stall notify, compress timeout (#72424) 71bae295f21eb9c1513e800ae849923a420c84ce Merge origin/main into feat/hermes-relay-shared-metrics 088014d6904ba0a3fec6166f86174144501d9429 fix(wake): make the lazy-install path reachable on fresh installs 5fde131eb2a6683a3879497e69918feae33224d0 Merge pull request #72835 from NousResearch/bb/desktop-remote-routing 8314854d526ff28773c65076f09ef22bcfa6e2a0 Merge origin/main into feat/hermes-relay-shared-metrics 51a36f1fc1c33379be4bd1eb4d333f93effac3c9 test: set _incremental_persistence_failed=False on MagicMock agent 8e934e84ac7d3c5aa73e30dd33cb0cf99ffa77dc fix: follow-ups for salvaged PR #72425 858bedea028857b42438d3029d31921f3aac8b99 fix(session): persist tool activity before projection 5409e81f55e5859dd8d992d78d11d46206ed4cf1 chore: credit the contributors this cluster is built from 97a8034dfdb21bd9ec1738c13e72f6af5826ff22 refactor(desktop): resolve profile backend routing from one table f18e50a0704034aada3096821467213fec9101ca fix(desktop): record main-process faults in desktop.log d7e738af90c5e08a5cd9e51559c9f7049a100c8e fix(desktop): retire pooled remote backends whose host went away 3884e0eea055f4c35910fe41b3fbce8788f6adca fix(desktop): reuse global remote backend across profiles 704a32187030146d83fcfa323c62bcd60c32e126 fix(desktop): preserve OAuth sessions in sidebar e643f2e9102a561ea38cd805b81d87c8a2571dac fix: update signal guard test for _install_signal refactor (#72677) 8b112497557392f9f4e116961c7cd16a7742ff56 fix(tui-gateway): guard entry signal installs to main thread 4b4d2ae4cd4cb405f6e51a2be57835c4523bdafb docs(delegation,api): document stall detection, timeout metadata, /agents live status, runs-stream subagent lifecycle ea2499bcfe105c2b856d9e2058e9c94097444c6f fix(update): close the stale-bytecode class with a launch-time checkout-fingerprint sweep d76d0d61d8bcdeb3f4a849a1468839316c6a5a47 fix(update): refresh runtime modules before lazy backends 0543078e971b6dbb452ef8c295ffcf13f8c424b3 Merge pull request #72794 from NousResearch/bb/web-build-toolchain a133a36eca743d8a40dc024f0ea506f0e092720a fix(desktop): front the workspace pane when the route lands on a page (#72796) 9f3b130d6c63ba0d58b48079ecc8406fa21592c3 Merge pull request #72811 from kshitijk4poor/chore/author-map-reinbeumer f5f5ac312af29ea1bc276663e2b7d71091753276 chore: add contributor mapping for reinbeumer@gmail.com 29abaeb98fcc48c0a9f3d87c105c13151351475e fix(timeouts): add claude-fable to reasoning stale-timeout floor table c34ff393a9677d84ccb4835652dfeb671dc0be74 fix(desktop): record main-process faults in desktop.log cad0398aa778bdfeeb36d27207fd92ec7d2c3334 fix(desktop): retire pooled remote backends whose host went away 3e4cdee5ab52682196fca598ba3f26a504470a18 chore(contributors): map gercamjr for the #68945 salvage ac9a10ccbb9fe05125c54692c601b0d229201820 test(desktop): cover the workspace-page reveal bug class f6ea8b462ed7450d665c9124ceb85db1e42130d0 fix(desktop): front the workspace pane from the router location 8323bf3d7138d9b609db4f4dbdd757d161d2dcf8 fix(desktop): classify router targets by pathname, not the raw target 5ecc6661468fd256fc3753183956f71064a313bd test(desktop): cover workspace pane reveal in selectSidebarItem 9cef5496eb88b7b04e91d86cd64d9b4b38bbd07c fix(desktop): front workspace pane when navigating sidebar routes 690ecfa1c7d317338086a98e8849105be6501187 fix(update): anchor the web toolchain check on npm's actual search path c2e45b555f8a4e78e8dacbeb965bbf3fcf5d709a fix(desktop): keep free-text slash arguments editable (#72768) 363d1aefa449e74c6fe1a92a14f76c59002fe69d fix(update): recover web UI build when tsc/vite missing after npm install 8ac686fa27afe950d99add703cb3dac28430f35f Merge remote-tracking branch 'origin/main' into fix/hermes-relay-review-round3 2b0fb72acae67f51652de5c51db556bc15a68f0e Merge pull request #72736 from rob-maron/nous-portal-anthropic-wire a51a17ebe30960f79c7c1cddd2225e5215e27681 fix(relay): promote the surviving reply_to anchor into metadata.thread_id on Slack sends (QA-7) 467534b43ed87e55861d0ef87ebd7822f313bc3d fix(relay): typing/status targets the per-message thread — synthesize the anchor from the inbound ts (QA-1) b493bf63c7e327bed92a47937edd87855d7f52f7 feat(relay): rich Slack status-line parity — advertise supports_status_text, carry live per-tool phrase on typing frames (QA-1) be9de31967f1b11c1d37ad7a8e337c48bbb3745d fix(relay): final DM reply honors thread-per-message mode — gate the reply_to strip on reply_in_thread (QA-6) 95103db64552f05da214eff7d97191d8530534f4 fix(relay): prompts trust the run.py thread stamp — no self-anchor re-derivation (QA-5) 02d5e2308589b34f2faf6615656b21caf523c8da nous portal anthropic wire 8699ff58ede07f852fbd000e86f1eaa834466473 fix(relay): close child sessions inside turn ownership 3be8a2f5f9a85e98271097a84fcd52b5ead8fdea refactor(relay): serialize provider objects by capability bfae9c2572923eebbf4a8c2895035a279fc56d15 fix(relay): ignore rewrites after codec baseline failure ec6c881453b31f87d175b1b7902f36e600b43e17 fix(relay): preserve buffered provider stream chunks bc597571fe54f271c320e5856dc51ee71ecb44ec perf(relay): bypass inactive execution adapters 4fe4b0dca737a8defbc26661fdd450b784b22213 Merge origin/main into feat/hermes-relay-shared-metrics 846b14ab01a84483d2c3dd429579173040474585 fmt(js): `npm run fix` on merge (#72703) 820a8083d47d371049cb344a33f2ee22a7570a3a fix(desktop): Branch in new chat drops the question and loses the branched session on restart (#71960) c92417e77f8799d606b2fde45ff27ef979ce8cba fix(desktop): Branch button silently does nothing inside a branched chat tile (#71969) 8eaaa5021c098544044cae3dd546f0a011104c1a fix(compression): update _pre_msg_count after durable adoption 74ae2d3bf2438e58dec5b78ee7b2207de31f0226 fix(compression): default in_place to True to match DEFAULT_CONFIG e0a9a114668e63db821271ea27ea83003e6ac0f0 fix(compression): adopt durable history when the session grows pre-lease 1cd5f52b3e65557a6b230124b1527cdc5ab6af15 fix(model): narrow custom-provider fallback exclusion to real custom: syntax a5ea9a6fd4d9e23fa99b27f796d23eba05a8a235 fix(model): don't misroute named custom providers to openrouter on save 5a55ce7dd5d382c1bbdaa724252c62cb92ad9369 fix(model): don't strip alias-derived prefixes for the custom provider bucket 4be89059aeca1b00a57892c3aa81795e1a7eea55 fix(hermes_cli): drop privileges before clearing s6-log lock ad84330ad0a123305567c25fb62a1105168c9519 fix(hermes_cli): heal root-owned logs/gateways on every stage2 boot 6898e5a3553ba762556057c97723ca6db7018714 fix(hermes_cli): remove restartable root chown from s6 gateway log/run d71033a4077a6dfdcdb42c9e9eeab4c41e4a7012 Merge pull request #72524 from NousResearch/bb/session-switch-perf 323033f21f1756ac74960e74d20afe0353018f41 ci: retrigger checks (GitHub Actions failed to resolve workflow file) 3bd2574d2ae9159d8786969dbae92cb374007122 fmt(js): `npm run fix` on merge (#72532) d7311b586c4a6520f09c1c8aaf31cc7399588d98 Merge pull request #72523 from NousResearch/bb/tui-resize-color 215ec101be1dde26a3e4dabe6944e9789b8ead91 fmt(js): `npm run fix` on merge (#72522) 0b1ee22b9e45142a4ec85ef9f265b65e221e771e fix(tui): paint the OSC-10 default foreground on quantizing terminals 628ce5bb866582f79fe9cc3ef2866450f0533396 perf(desktop): bail the transcript out of router-driven re-renders on session switch bbfe181a2a5361b7cc5e93a4e97344852259c745 perf(desktop): keep thread message component types stable across a session switch 825069004a09023452a50c649f79e9a39bef40b5 Merge pull request #72504 from NousResearch/bb/desktop-real-session-perf 9f0e62c5c40f366881cbcd732b5e4d2de0eea8db Merge pull request #72514 from NousResearch/bb/desktop-pinned-session-order 437b9b1204e67ca582088c6a77c1982ae9b51323 test(desktop): wait for backfill before the duplicate-count baseline d60d981281719ebb9ccbe0fd3b8595a4f7f3886a fix(sync): don't require a base URL when an explicit client is supplied 39b5965569a4ef0adf05a38893f7669cd74598f9 refactor(fallback): single owner for backend identity and failure-scoped skips 797c52b5716bcf96c720f37e501df2f74e8cacfd fix(sync): wire org skill pull into the runtime; scrub internal jargon 9c28771cf3121b2e03fe752737ffe638a0173c6b fix(desktop): keep pinned sidebar rows in user order c7b75a7849cb260e6f17a045473bfdd0ea21ca81 test(desktop): isolate compression from slash completion b1081c1d22c2f10d0c1f9e1d76e340920228866b test(desktop): assert compress argument stage 76e416052c88feb87a4660f0a4e9c5aeec034ccf test(desktop): wait for committed compress directive cff60b205d68acd670b4c320cf39d146a995bf8c fix(sessions): verify fully reconstructed recovery 21dd2d4d412acda06536d66df8181885ec2c2bc0 Merge pull request #72507 from NousResearch/bb/cli-resume-cwd-scoped 7f87b672455c79bbbd0360788782d6220b581b43 Revert the streaming-backfill gate — it broke a real E2E invariant 98fe6d0a8e36220801ada098a0598139e7129222 fix(delegation): integrate lifecycle refactor with tool-history + daemon pool f60abd6e37115c99a715828bea5d6101fdce8165 fix subagent lifecycle ownership invariants 1865fb5fcd702ba3409a67e0b6642e63c8e97b3a feat(plugins): add public subagent lifecycle API 28a87d6319b847260f876b249084fa7fa0e88392 fix(cli): scope -c/--resume to the current workspace 81779fa6a0382a4b0e54742065e218979f6604fe perf(desktop): don't backfill the transcript while its thread streams 2c867b05ce2a3803c919d1f6784d75a10899b5a9 perf(desktop): 60fps sash drag on real sessions — height-gate the RO pins 0a2c245cd6af3dfcdde3f61077f7429bb9c8a48a fix(auxiliary): reach the main agent model when a sibling aux model fails on the same provider 83f20e07e0aa0bb09e4559d2f5c7ab9b35a95dc1 fix(auxiliary): keep provider-wide skip for auth/payment failures in fallback chain e8f8b34b0c534af8e018abf2a707d04079a4108e fix(auxiliary): don't skip sibling models when a configured fallback_chain reuses the same provider 15134fb875a74994a44fa8bdf7720215329414d0 feat(webhooks): support compact Discord thread starters 2a7e4d91d3cbc9bdcf7a1093cd692e3567512ed3 feat(conformance): Discord + Slack ingress mirrors — layer-2 pure cores + corpora cb06017b1d6e1b9ae0cb35f99a48ffa6bcbaa828 refactor(guardrails): make runaway-loop caps per-turn, not session-total b68787ad25077b5055c0aba239a10f1e390cf4c8 Inspired by Claude Code: session-wide runaway-loop caps for web_search and delegate_task e56182c4f7dd724a4b33d9273bcf9d97806f46e0 fix(web): merge one-field telemetry category into security 96996a55bf1aea4fa20390cfb9c965582dde4c52 fix(relay): per-platform capability descriptors for multi-platform gateways (#70717) 91d69c4ca379fe9b7751fd20ca74b176f2ccf0e7 fix(desktop): satisfy eslint in kimi-k3 picker rebase 37e648128bfab390f1cc84c9602231e77a9f91be fix(picker): fold live bare k3 wire id into curated kimi-k3 row 39902f1888f202aa77ac471a2655d0b34d5bfe88 test(models): cover kimi search alias for Kimi Coding k3 c63e0cd3e315ba8b3df0832b5e8fa579faf242e5 fix(models): match bare Kimi Coding k3 when searching kimi 2be2464d259a6640c72a6f5b4efd6a03ef745176 fix(desktop): satisfy eslint in approvals-command rebase f9cd57791577360430aa38c97600ec93a2a56f48 feat(approvals): add cross-surface mode command 443ce196f4e649e79af2757fc85a043e917ee348 Merge pull request #72442 from NousResearch/bb/statusbar-session-prefs a56c341190b3c0b8e0643f357cf5412511e6cae1 Merge remote-tracking branch 'origin/main' into feat/relay-phase6-ingress-mirror 610d3ad98cbab86a4e530e6b720b50edb328ee71 feat(conformance): ingress mirror — pure parse cores + ingress vector generator 8fbe2e388fe2dddb31cc64dee39f3e841c2be968 feat(tool_search): probe-validate blind tool_call args against the deferred schema 9b97dea1e6e54d344899e27f108f78c3526bc863 fix(skills): parse stored GitHub credentials without scanner false positives 4854961d743d7bb9688f06a3f53b9e1410337803 test: update reasoning-only exhaustion siblings for the terminal excerpt 214ae7b77ce642f7369d13bbce3510405f759800 feat(agent): surface a labeled reasoning excerpt at the empty-response terminal a751924c04daf0b7fd327613399ed0ac50305844 fix(gemini): preserve typed enum constraints as strings b41eee450be49dee3113170e7c14420e77c6964e fix(redact): stop masking prose words that embed a secret keyword (Secretary, tokenizer, author=) 474c84ed8d209cf38b0f9d55ebc3c22c2d050366 fix(agent): uniquify duplicate tool-call ids to keep call/result pairing lossless 1e239f724bb27298f0bb54708f54e70700e9ba5b chore: map contributor ruslanvasylev for #68056 salvage d4381f0e391c1df8fe757f6c362dc24b9d5bc35e fix(gemini): explain legacy Standard-key 401 rejections with migration guidance da26ff986bf4a64b0aea92559ed763809488ef1f fix(approval): detect recursive rm when flags follow operands 53bfe40a35d41a3dbb6bd2d76b2918ce3c9ff5f4 fix(errors): classify throttle messages before token-overflow patterns; add new overflow shapes c4d19132949b7a41727250aa5156f66f122adb47 fix(tools): normalize Unicode space family and minus sign in patch fuzzy matching 6437701228a907c0c87642b3be00ba62a32f432c feat(approval): require approval for docker/podman daemon-redirect commands f7cfc6ecd318a112c535e12068b36b21470417e4 test(statusbar): cover the session readouts starting hidden 5b9518db418ce6482b6aa6fbece772ffa7191337 feat(statusbar): hide the per-turn session readouts by default ef60509a26d07b40c4f512f864c8242a5bce4076 test(delegate): model socket-abort interrupt for the inline child API path ece050ac300c1e31ca8187c550de6fc13911eb2f fix(delegation): route delegated-child API calls inline to avoid nested-pool wedge (#60203) f8918391d9469ed9e185944c7e477a497afa96b7 fix(desktop): drop now-unused clearSessionSubagents import in gateway-event 1c5387105ad8b45b408ef4849cdb4f5c28441c2d chore(contributors): map sophia@hermes.local -> knoal for #67005 salvage 14c754cda466b70f2a309497bc9973e2dc6600ff fix(desktop): remove unused imports from gateway-event.ts 8a324263002979ec40d4cdd41654ef72da722078 fix(desktop): preserve live background subagents across message.start (rebased onto main, #64015) 666076d13753276faf4ccddbc9c0156c49417297 fix(api): redact subagent stream fields + forward child_session_id 4fbb86d2b8f430d28fc2b10793c481062f27607c fix(api): forward subagent lifecycle on run stream a8c9ad0bccc72a906ff5e59f6cadc559432b5ef7 fix(delegate): strip URL userinfo from tool history e369d6ea3f8ded58012618ac55300cdb1fc24b8d feat(delegate): expose redacted child tool history 9216198601189e8dc7d850890115531739d83e8c Merge branch 'main' into feat/hermes-relay-shared-metrics b9ba7c78e41b5d187e2c8fb446655c4b71c42aa5 Merge pull request #72345 from NousResearch/hermes/hermes-5ee2515d a94ec27f970b5f30859ecec6b1c9c60619fe7ad0 polish(desktop): tokenize artifact card font sizes, drop redundant hover class 8c36cd4670c240d20376223503b9902a56c201cd fmt(js): `npm run fix` on merge (#72411) af1cc1c245363aa8a543c7508263c0d2dbcc50bf Merge pull request #72388 from NousResearch/bb/desktop-render-salvage 56f312f28dadec57ceec07e3d3659232981dd8b8 fix(weixin): tighten TCPConnector keepalive to drain CLOSE_WAIT sockets bd7938fa0ccd2bc10f3b9ed22fecabe05146e573 fix(gateway): keep _reconnect_watcher_task tracking the live task after a supervised respawn 4b039e954320bbf9ca5c0a948fb473d30fae32cf fix(gateway): spawn platform reconnect watcher with task-level supervision 3c4220cd9cfc7a7e55852453d16ebf7039c2504e fix(agent): keep system cache breakpoints across provider failover c2ee5039ee822806dbbc7a64c945d4d999f217f2 fix(gateway): preserve media dedup after streamed replies 47f5795046fdbb1a1edcecbf16276f94cc6ac4bd fix(install): avoid realpath-dependent uv launcher on macOS 71c9910ff510f2ba2119548da468c590e252fb38 test(telegram): regression for #71593 fallback-pool discard-on-failure ca2491f201995045496d37a18d65be8344251f54 fix(telegram): release fallback transport pools on connect failure a228b81501a01f947fcb2cfc3136d1ec8aaf9e07 fix(sessions): preserve recently active sessions during pruning 769dba1758ad0adadc8e9b511f9e076d68ee0d5d fix(gateway): bound the startup-restore inbound gate on a slow boot-resume turn 0fb46b81857020707c058ca2fb28e5fd8534f252 fix(agent): keep the compaction summary when the turn-end override rewrites the user row 6290cd0d5927abd76302f5687ee94c5067a3dbec test(environments): cover multiline session env snapshot injection 9677495004ef9a3460d4b29748e916db600b1b1e fix(environments): exclude multiline session env from terminal snapshots 59482ea800650e1759569c5a25145fb895c681cc fix(skills): never change a skill's source registry on update c3e99fce49b842d57c01428215e5c9328a5384c4 fix(anthropic): keep the assistant cache breakpoint on the ordered-replay path 236b1b56cdd18da14bc1015233e117b03003e8f1 feat(desktop): artifacts — versioned cards, sandboxed live preview, right-rail viewer 139282f2410c9a14f2b0f6ea6b73475a65b283ad chore: map contributors LeonSGP43 + spiky02plateau ebbcad26ce5e2f25163f6c1ce6fde7a8514c2b6e test(memory): cover mode-aware provider deps + force reinstall path 5645169c8f1a3faa00a49ea82b94d659a752cb6b fix(update): refresh active memory provider deps after venv rebuild ab2c9289cad5c446401c407f29dac6760620b577 fix(hindsight): availability probe must cover the embedding stack for local modes 623762f2f0aa37e288aa88dadccd94e106d669c7 fix(deps): move CVE pins to current fixed versions so update stops downgrading patched envs a48251c3dc1ef4e1cb00026406d0cdd3630f335e fix(update): refresh cve dependency pins 1959e2a6b68b2c5d97f7346491d1a681ade0a6b2 test(deps): class invariant — every shared LAZY_DEPS exact pin must match uv.lock 2a55f33483d54ff2c41304ef2506b5c0ae0b57fd fix(update): avoid refreshing inactive lazy backends 3d6c32b061d54185958c39f92b11e6ca50728599 perf(desktop): derive the tab menu's row narrowly instead of subscribing wholesale 132654cdecf13f2f4d5ece81bfd3c9c79e41321a perf(desktop): finish narrowing the statusbar's store subscriptions fc3af6095f8be5524c01f0166a39ed7bb0606e5c perf(desktop): stop cross-session churn re-rendering every composer status stack 610762472773efa11bae533b3fe6983395c497f4 perf(desktop): stop the model-picker overlay re-rendering per streaming token c74f48b62e7005ef6894f2740afbbf0743b78432 fix(desktop): null-guard the rotation signal fired from ensureSessionState 9aaabdcbf40e2f1afa84130cda1b76acdb6b0994 fix(desktop): cover nested terminal layout changes 651a313d2b8f9cf0732bea66a0cba46cc53175e8 fix(desktop): suspend decorative work when inactive 5c8ac975e753edec98db8c0809ad37366714f62c fix(desktop): invalidate terminal overlay position on layout mutations 7a5d534f5befbca0f16fac94a652f878952666d6 fix(desktop): gate idle renderer loops f8a554bced3122c10b220c0f847fca968eb88cba fix(desktop): keep message component types stable across Thread re-renders 571b75792c26438039b47521fd359c9351088908 fix(desktop): stop renderer OOM from session.info heartbeat churn on $sessionStates 38619a2152c5dd1055e1385d433fe03345980f39 Port from cline/cline#12482 era: login-shell PATH resolution for GUI-launched desktop (cline/cline#12429) 0fa5e41c86f022bba147797849f0b44865721476 feat(diff): cross-surface /diff with staged/all/session modes 88d45edca26d3ccb69e4b9a2a4d016daad34a1e5 feat: add /diff command to show git changes in working directory 2078af601a37fbe1c69a798019d36a16bb4c4d2d Merge pull request #72346 from NousResearch/bb/desktop-perf-finish d6fa2709de6a778caff7fe3f7b3fb8724fcae3f1 feat(cli): /focus — reduced-output view with hidden-line recovery and status indicator e1ace0ac987a5a39e82a52fc4fe32ce6e5403a93 Merge pull request #72336 from NousResearch/bb/statusbar-prefs 6cea77303b6fc99c2ff964dd14306a9534da5244 Merge pull request #72339 from NousResearch/bb/redirect-user-row a9cc0ac9ff407a3e4902acfe3bd0b8b4e93f8a14 fix(i18n): add the /context catalog block to ar.yaml (missed in the 17-locale sweep) 07370a9dba90985eaa529e71d1347f5ed3f71029 feat(cli,gateway): unify /context into a visual context-usage breakdown 8b3da145f1ebd8467cc42f14467948b8b51486a9 fix(prompt-size): include names-only skills in breakdown 8b9423444ea86ea062985552930d6ea4a0f928a1 feat(prompt-size): per-skill and per-toolset token-cost breakdown 4fe2fecf54e376641b7bc157cd4b4613debfa08f feat(gateway): add /context command for a detailed context-window view 3dccc45032375a5554998b48b40fd11dd7eca267 docs(portal): describe per-model routing accurately — not everything goes through OpenRouter a0112ef26eb5f0ac32591d8608499cfadc609cc8 feat(approvals): consecutive-denial circuit breaker for smart approvals a894879d28d9b4577ea6b44fff96ee647720f1e1 perf(desktop): baseline multitab + render-churn, leave idle-cost report-only 45d4cf634dc3b12629b62ccf591624e0c549b751 fix(desktop): time interaction frames on the clock that drives them bbfc4df3577e115b46b3d4ebf3f87d50330db8a5 perf(desktop): one app-level TooltipProvider, not one per Tip 31d49f0dfc67e5b4d68a5ba6c3422c10864d2c5d perf(desktop): share one ResizeObserver instead of one per consumer c5336b472e4a1876af8410578ad45d4d1ddfc313 feat(statusbar): right-click to choose what the bar shows 85c2976e22aae0b6c66d9f79e5556da3619bbd3b fix(update): migrate legacy pythonw Windows gateway launchers to the hidden-console design 1e652cca7aec9f925c3445ba7103fd69ced89061 fix(cli): register 'approvals' in _BUILTIN_SUBCOMMANDS (startup plugin-gating parity) db90e36202be3d5d1879a4a67efad84242da0bf4 feat(approvals): hermes approvals suggest — mine approval history into allowlist proposals d6fdae67469bbe9b05e56c6ff573641e384689d4 feat(desktop): quick-entry window — global hotkey capture to any session aa3121bb340f60fad983d8879ad2a0a160f7a860 feat(desktop): Quick Entry — global-hotkey mini composer window 5557b10fb6a3816c22689843665dca21a908db8c fix(desktop): tear down find-in-page highlights on navigation and pin the keybind registration 6d427e82dfef70ab55e6b4fe280305bf7b6c06a0 feat(desktop): complete find-in-page with the find-next/find-previous accelerators 31385a0102bf7f22603820db667ae9cb183cf77d test(desktop): cover find-in-page helpers and multi-window routing 43e86ea50ec5c06ac19820ec59640e6364b870d8 feat(desktop): wire find-in-page in the renderer 7bbb063c718f0821e3c34cdd5d76c66db4dea175 feat(desktop): port find-in-page bridge to TypeScript Electron 9ca33680ea302ed91b8b76f0f1b07c06541204c8 fix(cli): report unknown line deltas for content-free diffs instead of +0 -0 ce997f9e6219cb19d2bd1375ccb5e7557e3a74c7 feat(cli): per-turn summary line and live token flow in the spinner e769560c7609420fc2cdd87979223cfd11e41b71 feat(cli): show active /goal segment in the TUI status bar e5d21e87cb3d0e00c447c7c3c1e5ba67ae62c5ed fix(desktop): hydrate goal indicator on /goal set and controls, full locale copy bb985956944814ba81099d03d7764ccf8aad2a7e Add desktop goal status display 24c3c27ba866a1fe74a5a9a906537ebb49657b48 feat(cli): hermes import-agent — import Claude Code and Codex CLI setups 62e8842d07d6399bd09ae0091b7a8527aa4ec546 fix(tui): emit multi_select hint only when true — single-select clarify payloads keep the pre-existing protocol shape d778732cc8382a88f5fdc6496c0be44f54fb237d chore(contributors): map ghislain.lemeur@gmail.com -> gigi206 10b7ab5cb6dceb4889a03cb739f3f06d32c4befd feat(clarify): extend multi-select to gateway text fallback and TUI bridge 0b670f0539678c8070b7dd4769fd028ec116b310 fix(clarify): route multi_select through current dispatch paths and harden callback detection 3e2f91f6b3f2754179acf7d593d4bb1a8b710b2f feat(clarify): add multi-select (checkbox) support to clarify tool bd1db5460aa4a5e092d1cede6ec3b5cd1f14bf56 feat(approvals): operator-customizable smart-approval policy via approvals.smart_policy 95b7ea5e5df689a4d3cb7e075570f26d274ccb4f feat(cli): /init — generate or update AGENTS.md from a project scan 2109a1875e8b8147d08f7c114d18f6de498c7a52 fix(desktop): stop dropping the prompt a mid-turn redirect corrected 2dd4cbbe61cd6feaf73f7b690668d44a70416cc1 fix(tui_gateway): keep the original prompt when a redirect corrects a turn 0f7492f43aa30b6e67d1ffb0cc2c61e62c3794d5 refactor(sidebar): drop session counts and the COUNT(*) that fed them 7b827959d82021b08ed304decaf819db2cfb7382 feat: /loop — recurring in-session wakeups (Claude Code parity) 40dc36a8423b9a94b1fc18e7c72bd0ef8bfb91fd fix(deps): converge huggingface-hub on one exact version (1.24.0) across lock and lazy pin 35a9b3a7c2346e932408e906cac44aed48012e55 fix(docker): ship a WAL-reset-safe SQLite runtime c476ad35aef804a0b54f9ecc2bbc12c986eb8b2f fix(update): refresh stale managed-uv catalog so SQLite runtime repair can succeed e2fbd0dcd719d218242eb3b1b7790150eaec8250 Merge pull request #72303 from NousResearch/bb/desktop-session-status a75ec9278cac87445d2fc8a9477d6f66a78c7b2e fix(model): track explicit models: declarations in section 3 so a singular default_model doesn't suppress live discovery 0f554ce19ea8bf677bb1e96b919c2b0692ac239d test(gateway): drop source-reading guard test from #71671 salvage 12fdaeaf1a7e3184333244597276e3965cd2f04a test(gateway): trim docstrings 3ec5fb076ed0d9bcc9e2bd192036f2211a5da054 fix(gateway): survive faulthandler.enable() when sys.stderr is None b792bd0529ca21bde168b17e9a00ca8dad992b90 feat(delegation): structured stall metadata + live per-child status in /agents 8e163852d8939cf21fa145c5b1b800776ffb8b46 fix(delegate): include explicit timeout metadata in subagent results 2b38d5ad59f1fa4c3f7b0c04e7739f2194f64577 Merge pull request #72308 from NousResearch/bb/tool-group-bounding 19d84d10715bf43986cdab9afe445d2a79c1bf04 test(desktop): pin the sidebar spinner's liveness contract 136f8dab6709ac1a9caf8aade60446dd8cbab7a9 refactor(gateway): promote autonomous silence matcher to shared response_filters helper 55d3272286ec3b8145c46f11822fa93c6973c3b2 fix(webhook): honor [SILENT] when the agent explains its own silence 058aa34d8afbe2ed94782f79f95abaff9b8a920a fix(desktop): stop reads and edits vetoing tool-call grouping 6b273f419a2ebf3e67fbe2a580def311c29224f6 fix(desktop): keep thinking traces and tool calls across a mid-turn switch 42a30d13dbcf572585cc566f37d0c28d69f4c3d1 fix(desktop): settle sessions that vanish from the live snapshot bd6437d60518606fffd4db035327ea4ce9d11729 Merge pull request #72288 from NousResearch/bb/composer-undo 2ec84c5d256e27cb57c1e184159de6dfa69fa4d6 Merge pull request #72245 from NousResearch/bb/desktop-idle-churn 759f68bc25e528945f61b5f29eca4c9cbfaa6633 fix(dashboard): stop rendering 'unknown' model placeholders in session lists 2df57fe641c0f46a438a32f299b0739d45bf1441 perf(web): lazy-load dashboard routes and split heavy vendors aff48958d3788a471cc01a0c1db0bedbc9b2febf fix(deepseek): drop retired models from picker and provider defaults cc7c418b33bd8a0952ee659c078ada46ab2291b1 fix(deepseek): remap retired chat/reasoner aliases to v4-flash 148497f6d6ad2dd251026cc4ef2fde48ddae53b3 fix(kanban): strip stale session routing from dispatched worker env c93ed074597c475266d2fb2f7b4f6aa4f5c30156 fix(kanban): route active named profile through the active adapter map dda6f0f63ed92ddde367ca2147bcf9faed5e5845 fix(kanban): widen notifier pre-filter to secondary-profile platforms 67826e3068ddb40c7d8a27ccb71b40306ee58416 fix: scope kanban auto-subscriptions to active profile 92f62bedd7e98392b789328983aa66c8e452a256 fix(desktop): extend the composer undo stack to the message edit composer bc2ddf5bab59750b0952b469080b55ff03f5abbe fix(desktop): give the composer its own undo stack so Cmd+Z sees a paste f34a69b1cd7c5a6f73c2f7573634be07f666fc60 test(tui): prove agent build installs the selected profile's secret scope 2db6b8c85b12aeefbb3d52450fd159b6ab074dbe fix(tui_gateway): scope secrets and MCP discovery to the active profile (#67605) b93fd077c0652a53d66231f5aeaa701e242692dc fix(session-search): allow scrolling compacted lineage history 370cc9394b642f451a735a1de6d27e32b4004985 feat(side): extend /side to CLI + TUI, shared prompt composer, tests, docs 034d5ce422e7a4c0a7327b76dddfa751e3536172 feat(gateway): add /side ephemeral side question (Codex CLI style) 5f5afb1eef1834288be502fb0c7c7c9ce46d9d60 fix(delegation): count streamed tokens as liveness in the stale monitor 99a381f310646791c3da0de9095c0f6340caf1e7 fix(delegation): progress-based stale detection for detached async runners 65420cdecdc85f05a448c60d231202f0cf439b1a fix(delegation): timeout stuck async child runners c593f7face1b83382af78cb8829cc7b3b64b2a88 chore(contributors): map salvaged-PR author emails for #59278/#62712/#63001 a0bc7d5572cfee1cb8dc240c6292f835db58866c fix(kanban): snap notify-sub cursor to current MAX(task_events.id) at creation a945364ba2c05915c9ba39e53e8640c10246aaaa test(gateway): harden notifier isolation regression + block_loop_detected e2e coverage 0b632f772a7a6b8c30e3a135ce6c8a42b9296a05 fix(gateway): zero-sub early exit for kanban notifier board polling 4436eacebff6b5fc77f80b1187fe58c447c801bd fix(gateway): kanban notifier delivery reliability f6ccfa6bd37961463af35da6b217713d571c2ae0 fix(gateway): isolate per-subscription failures in kanban notifier 83dc0b9b85bb8c86ec4aeb012d406e3a4086b6e1 fix(install): clear stale Windows cua lock 1a6754efa30ec83b9ff7913fc4dbe90672412b9e chore: map contributor email 23d0dca8324e9ae7dbf00f4b3821de566505a56b fix(install): reap Windows cua installer process tree 26670bce95780fdef8d62ddb0322691ddfcd3339 fix(gateway): dedupe chat_type wiring after composing #58615 with #60769 f174a08c93b6636a7d15d18167131d6cfb8303c4 fix(gateway): let internal events bypass topic lobby 1bdec6f065fff97d1fc17fab119a8f22e96735c6 fix(kanban): preserve telegram dm topic metadata 0226d1162ef2ff36a1b118a135c7a2c3f378ed3d Revert "perf(desktop): mount tooltips lazily" 8896fc75002af22aa64009fd91ee9a81b007eed6 fix(desktop): stop a chip inserted after a word from swallowing its space 48bdde1deb380b3c1a8ff074afaa1b2680cfbc62 Merge pull request #72230 from NousResearch/bb/bootstrap-marker-triage 6d1e08b2bcabda35e67b17a35fe1f1a82705a551 fix(dashboard): QA pass — log colors, nameless channels, config bool, UX gaps 8c3c52b00856f10d7b33eebf6a93d3ac1da25454 fix(dashboard): stop ChatPage from clearing all pages' header action buttons a6673c70211e89011cb14d5c989224b72b11afeb feat(cli): /focus — reduced-output view with hidden-line recovery and status indicator f64b719321c4a1668663d54019a87e6a1ab6ca2f perf(desktop): cache short markdown parses too 32de2ee2e0e30a32012c30e8bcae0fc46a15730e test(stash): drop source-text keybinding assertions (banned antipattern) 379d484cbccfd7ce1ef76df6dd257a4e46806bb8 feat(cli): complete the Ctrl+S prompt stash — keybinding, state machine, tests 58f6b47f1dd66f55a1220c0d7b6e1e5d4a877fef feat(stash): multi-item stash with browsable panel edadfcae9656ad0e4ea36d16b4f73cca26e82cea perf(desktop): stop every zone subscribing to the whole layout tree d1fcc74ebc178e04ad127a3cf6d4f9223b019d5d feat(cli): ! shell mode — run a command without spending a model turn 315e1b54a4e101425ee57410cc9e4bfb6de7e7e8 feat(approvals): hermes approvals suggest — mine approval history into allowlist proposals e817a6b4f82d39310b06a2e8d665ed2688cc3af4 feat(desktop): complete find-in-page with the find-next/find-previous accelerators 2616e55d21b0f1cab09f8b0c90bbc5f31d7af661 test(desktop): cover find-in-page helpers and multi-window routing def7de813bfb49f40c6569d7946b4f7e60f1243b feat(desktop): wire find-in-page in the renderer 94b508da2fb4f27636781b1776f0e54c955d0f41 feat(desktop): port find-in-page bridge to TypeScript Electron c2896d0785237df9c1538866fef39bc95acb9e83 fix(cli): report unknown line deltas for content-free diffs instead of +0 -0 44d30c1baca10ce4c66c8c1ffdcbad664575af39 feat(cli): per-turn summary line and live token flow in the spinner f18d9b28435297426661dd9f88a3fdfecd94ef6c fix(desktop): make idle-cost's drag actually drag 4798994dcec53e8dbd6bae1ac85cebe6dbcc2da6 perf(desktop): mount tooltips lazily, and measure the idle cost cbe33fdc4d7c33b55e8bc69be01405f7277628ba feat(cli): show active /goal segment in the TUI status bar 632fb7400d86a4869949b75954b0064ae2717832 fix(desktop): hydrate goal indicator on /goal set and controls, full locale copy c56d0031130e0e64e5d71df69bfa8ecb0be9c4f8 Add desktop goal status display 42e4f70eefdd9651b50b86f3c66542ca28d69ff0 fix(relay): native-parity Slack approval button styles + labels 0054c7edcb332829ed02d105fa0d6e39b66e227a chore: add contributor email mapping for xd-Neji (PR #57365) 7b662c8d728cd4a584a07602c9a4d68d2be016cb fix(kanban): inherit notify subs for child tasks 68ab2563ebe0cf6868ce52ec92e185620ea69c10 feat(cli,gateway): unify /context into a visual context-usage breakdown 2a1134936840bfc3290ecbf9295a5c52270cc165 fix(prompt-size): include names-only skills in breakdown e63e371ec62f3ad2c31aa98e4a5fc8347e4da342 feat(prompt-size): per-skill and per-toolset token-cost breakdown cc11d9f9013da5946135b1404e51a5f257a6df5b feat(gateway): add /context command for a detailed context-window view 806780b79d5bee6e3d9100de011cfa720f45f561 fix(kanban): strip stale session routing from dispatched worker env b7837092ae9b6aa82179951d27d0d07266062905 fix(kanban): route active named profile through the active adapter map 9b6c0204bf55245d1acfe7486825dceac1bb6e6b fix(kanban): widen notifier pre-filter to secondary-profile platforms 7ab398180eca50d58849a75e730f3f86e7a5f25c fix: scope kanban auto-subscriptions to active profile d94405c23697d03d0b7bc382c9a63eaebb045195 feat(diff): cross-surface /diff with staged/all/session modes 35eb9ef8c524896265fd56deb54bed2dddb3a8bf feat: add /diff command to show git changes in working directory 79b4a4056804394d1ec8fa7aef73023e3fae8944 Merge pull request #72220 from NousResearch/bb/tool-row-dedupe c86890f74bd83debd9b9a04bb20295a388cc48de chore(contributors): map salvaged-PR author emails for #59278/#62712/#63001 5dafe6a19f30af9056fd2586e9bca35677ca99d3 fix(kanban): snap notify-sub cursor to current MAX(task_events.id) at creation 78ca8b717ef042247549ee88c0389aba5160d886 test(gateway): harden notifier isolation regression + block_loop_detected e2e coverage a1ff5b714ecd9b1096d479f014ac7a519462a5c8 fix(gateway): zero-sub early exit for kanban notifier board polling 8eeb414e48febdf471cbbe190674776cd93aee43 fix(gateway): kanban notifier delivery reliability ee6b0a186f0e865a566003c23c01ad5152097b1f fix(gateway): isolate per-subscription failures in kanban notifier f10822870b4ff6e6aa600cbf2d3eb6ccd7cbba6a fix(gateway): dedupe chat_type wiring after composing #58615 with #60769 ab4222bdcfd6c753dabfc55be6e885ce88614bc4 fix(gateway): let internal events bypass topic lobby 64e2912f7bcd839e22ff00566e3ef2db925804aa fix(kanban): preserve telegram dm topic metadata 53707e405c1914b700cdefe15ca19cb1d5cf7daf fix(desktop): stop repair from deleting a healthy install's marker 73d5f4dac28e6e2410bc906da28aeb11a00a810a fix(delegation): progress-based stale detection for detached async runners eaa7fe39757b338931a00da2d4123f7e92008c72 fix(delegation): timeout stuck async child runners af8d698b418ede7dc8b078a8116510699ec94eb7 fix(mcp): propagate profile HERMES_HOME override into shared discovery owner; restore stdio startup + WSTransport tests a7bb123b4ae680bf76bad7e6d28c2e1197da6c9b fix(tui-gateway): scope verification and MCP discovery to active profile c6e811e48f262b15ae98857f1b146fe7ae540fb6 fix(tui-gateway): scope MCP discovery to active profile 830ff5967a2a5096743bda367aea50090f5d7602 fix(tui-gateway): start MCP discovery for websocket sessions 048e9b215049578a7aa6c8ba4cddbb5c7c272dec fix(desktop): launch a usable active runtime without a bootstrap marker 486c5ffc8d96e9790ff00d2b99e99461a3cc1161 fix(cli): live-probe dashboard status and share update cleanup across paths 05a1f219aa6ae96a3f95f5ad2bdad985d2cf181d fix(install): clear stale Windows cua lock 41f5953d97293cbd6133fd88a1505864a6205a28 chore: map contributor email 9ea94ceda8c1a7898ced2a81021961afd0f99c20 fix(install): reap Windows cua installer process tree 9c113335b142a73cc049649d5ef5c5af0ff91aaa fix(kanban): strip stale session routing from dispatched worker env 033be583335e96602514ebfce1f8557c3031b805 fix(kanban): route active named profile through the active adapter map 58addcfb0d7ada6ae0dfc1364e4c50208a6aac51 fix(kanban): widen notifier pre-filter to secondary-profile platforms 2b0b5e4c5391ffba191d92f672ac8aa8f38c0e8b fix(install): stamp the bootstrap-complete marker from install.sh too f082c02635c5eb383c4cd6951a4bf4a0250ce16a fix: scope kanban auto-subscriptions to active profile ec6719b04e5e088e9ce4333c6ea2de02889d10c7 fix(desktop): stop the tool row repeating its command three times f0031abc3969c8f45d88a71321c2e59fb1d6848f fix(gateway): send a raw arg preview on tool.start, not a phrased label ea3be4191e9d6872f1f94db7444316ef02547a1d fix(installer): stamp the bootstrap-complete marker from the Rust installer f695ce3461fdf952eb4fe90d3dfacb7431f0a008 Merge pull request #72212 from NousResearch/bb/desktop-transcript-renders e286658377ed63f17582be59bdc081811ed63b3d fix(scripts): encode tool_search_livetest2 output as utf-8 (Windows footgun) f7aee9dc8c570336a0bce1fc8af023a8819642cb fix(desktop): make render-churn measure streaming, not boot churn 920facdc4c4ffab9242203d601e43605b67066bc fix(update): never blind-reinstall cua-driver during hermes update 3dc2decd43b077cf1676756a439a33aceaa3906b fix(update): explicit utf-8 decoding on systemctl restart calls bd03960071c84a431a7bb40e2b6666ec23b25734 test(update): cover supervised-unit restart and manual argv respawn 8e1fb9ea34bfdf92399df429b14b9f1be5852d43 fix(update): respawn manually-started dashboard/serve backends after update d1f376006a523b274f7ff8e55ceb2da48fc6b9fa fix(update): restart systemd-supervised backends after stale kill 2a2ae3bca1473e90b35d5ca404fb2245d6ab6df6 test(kanban): assert DM wake resumes the creator's real DM session key a766f85042222e44a1b9644f37d8709619b62a86 chore: contributor email mappings for kanban wake chat-scope salvage c03a06b8d9549e16a2bbb21e54b077a8a43a1c53 fix(kanban): cover remaining add_notify_sub call sites for chat_type (#56580) a417c6e08d496737d1ac143d93f52362b5cd2eb5 fix(gateway): preserve kanban notifier chat type aa636c6fca0d7d9af7c574c524c43cb2035a6242 fix(config): merge duplicate kanban block so auto_subscribe_on_create default survives 2365fed9856b609a8fb3bf6d795dd46cfe00613d docs(config): update max_turns example to the new 500 default f2e1a71120b41c717115f704b42017b2b0e2487b docs(config): align max_turns example with actual default (90) 13590ce685722ad4d77cd9dada5d048fd6e48380 fix(gateway): GIS extensions, spaced MEDIA paths, and code-block-safe display strip 83bba799e2ed1f08b39847bf31aa3262cd09242f fix(gateway): deduplicate repeated media tags against prior assistant/tool output 02d3b92f04e60887c49cd4f8a083d8c611850a2a chore(contributors): map salvaged-PR author emails for #59278/#62712/#63001 578fb17942379a8bd464d1f47652349f3275ed48 fix(kanban): snap notify-sub cursor to current MAX(task_events.id) at creation 86a0cf292d727c7decfdffca159d6c620b860b44 test(gateway): harden notifier isolation regression + block_loop_detected e2e coverage 649fa2c0d56de14ba1b64992b4277f2cdc4056d9 fix(gateway): zero-sub early exit for kanban notifier board polling 575572a9fad98d4dbbf68ba6412f66f8f14355c2 fix(gateway): kanban notifier delivery reliability c7e2af3834f3b30e4aaf5afd3d4cd2f9fdf80539 fix(gateway): isolate per-subscription failures in kanban notifier b0a75e4b08e50ccdbaff66b5d450dbbbe6c5449f fix(tui): emit multi_select hint only when true — single-select clarify payloads keep the pre-existing protocol shape afd4c5a170d51b86524a43efba94c4a815a21719 chore(contributors): map ghislain.lemeur@gmail.com -> gigi206 7fa0b4e836a1f9440abdf42773fd28e8e2f1496f feat(clarify): extend multi-select to gateway text fallback and TUI bridge 800e50a51e82e09aa41b9139a7efa0d592bc6310 fix(clarify): route multi_select through current dispatch paths and harden callback detection 1b970b78ab4b66b12b885b2121044fb936b97110 feat(clarify): add multi-select (checkbox) support to clarify tool 6fc571afe982e28236d856e14f9b48da86f746e0 Merge pull request #72201 from NousResearch/bb/composer-url-chips bbe1e1eaf7b9c187671be4510327b803c1c2ef86 feat(approvals): consecutive-denial circuit breaker for smart approvals adfaa95e3bc6ad5196de55d7737f7d933005d336 feat(desktop): chip a link pasted or typed into the composer 456b2f9c7db2fbbaa184d03bdcf607ca7959b5be refactor(desktop): give the rich editor a chip-aware caret insert ee09162e4529c019889ad1e74129b0cd1d230f23 fix(desktop): label a url chip with its host and path d48909d5bfa2800a33b181438a7c489e2577229a feat(cli): hermes record — demonstrate browser workflows, /learn turns them into replayable skills 59529afee05541538c46774414a4866ffbd709c4 feat(billing): carry the payment-method union through to clients (#71542) 8943c9958b81f84b19e9eac0fde94dbce5830ea6 Merge pull request #72163 from NousResearch/bb/desktop-render-waste 4b2a8cfa2b2321c3941e486ee58e9d97c582cb1a feat(cli): hermes import-agent — import Claude Code and Codex CLI setups 6e28bfa605102681f2a03c70bd7bce0025919441 feat(skills): publish-site — versioned website publishing to GitHub/Cloudflare/Netlify Pages 511faeac7a0d272da8f1fe6ec70d7f0b8da5d4e2 feat(approvals): operator-customizable smart-approval policy via approvals.smart_policy dd6b2157c2baf9111a82fef204ed147e563d4b13 fix(gateway): let internal events bypass topic lobby b8a6b71e29187ce7b7b2d1cf7d3c457082a3ee80 fix(kanban): preserve telegram dm topic metadata 71fbeafade5a755eafd765059ac0f7bdff936da4 chore: add contributor email mapping for xd-Neji (PR #57365) 5d7fd62f4df8b1efd0dde5027984046468258b1a fix(kanban): inherit notify subs for child tasks 588b7059a8b57b0e3dea98b480048eb7199ce0b6 test(tui): prove kanban poller reads the shared board under a profile override 6247712c3f2cb5272f0a9372347f84c10d3335ae test(tui): drive a real subscription through _notification_poller_loop badb240ffa30d08e7aa19d6e3fce8d644cb4b004 fix(tui): deliver kanban notify subscriptions to TUI/desktop sessions 1b081e489156b84d067ddcebb1b72b45bd9b2b46 feat: raise default tool-calling iteration limit from 90 to 500 020e262c2aba4fc2229436878a598bfedbbde05c feat(cli): /init — generate or update AGENTS.md from a project scan 4a9f67acfb20253da997b094bac9db6ead1b958d chore: map contributor emails for salvage attribution 45af1118b566f1d091acc74d9ca8d6b6bf656bbf test(discord): update send_document/send_video expectations to plural files= kwarg c82f4636f2a57c8e1ad98c5224a2f0652c6c0f70 fix(gateway): deliver MEDIA tags with sentence-final punctuation and inline-code wrapping 0ec1b9f7fa3a3e4d145a367b0e03080d02e7dd20 fix(gateway,tools): add missing .3gp and .webm to video extension sets 384b0a0b5b975da88b0bf174cc4618734ed79721 fix(discord): notify user on attachmentless MEDIA drop 8eb29a1bb9cd79689630d4501b653ed52586c9bb fix(discord): deliver MEDIA video attachments instead of silent drop b129a72e0d40d5319628c650bc1c3c5766f4572b fix(extract_media): dedupe identical MEDIA tags 06ab6816cc72e7d9a1e44f16b688faae2ee10c52 fix(gateway): stop MEDIA tag regex from absorbing following tag or text (#68773) aaddc6c93a153844baa3b57b46028caeca8b2840 fix(gateway): deliver MEDIA: tags wrapped in Markdown emphasis b58b1fa962bdfeaeb6ef76d8af53baa9b14a01ae fix(gateway): allow [[as_document]] glued directly to MEDIA path (#63632) 41dd895e126644f3659c7ddfcd3b83a3a7998cb6 perf(desktop): stop the statusbar re-rendering per streaming token 41f2196c530b3359d9a7fc9c7bd41e9ddd7882c5 Merge pull request #71925 from NousResearch/bb/desktop-state-diagnostics 0e2808729e20e09dfe3581b15ab1018f839ff636 fix(lint): encode remaining write_text calls in the tool_search livetest harness 085c7da1113964855d56ac361e38e9a0de6ec11e chore: untrack committed PR infographics and enforce the rule in CI d7488a55796b7edde3102958a2cfad84ea6db30b fix(telegram): treat "never checked" identity as stale on a fresh-boot clock 08130a26f659fab6a76a8109891f26b5874f3dea fix(telegram): follow @username renames and support non-"bot" handles 08d67792ab54b415aa63d3d0385c82d6dfebdf6a fix(relay): post Slack clarify/approval prompts at DM root not in thread 15d65da5a2e4372483c44cbe063f04cd18eba6f2 fix(relay): stream Slack DM replies flat at DM root (native _resolve_thread_ts parity) 45580cc93ae53694b18e5f035238544bb5fd248b Merge origin/main into feat/hermes-relay-shared-metrics 339d968689a3b91c5f537d7198ff28abde32ab3b fix(setup): stop asking about self-configuring platform knobs e289e561c77b26fad904e83a4a07c87dcb9b15ee fix(tools): /tools shows the full pre-assembly catalog; adapt tests to tiered disclosure e7172ab1bac5f5637068af5334059b37597cc2d2 feat(mcp): fnmatch glob support in tools.include/exclude filters e9fe060ebf500eb8554a18f1d42c48f59025d18f feat(tools): tier-2 server-summary hint + per-server listing degradation; 5% default budget 7b793f7d2ff5ad319b418e5701198b4d90165090 fix(tools): rename provider-illegal property keys in tool schemas, reverse-map at dispatch 0986ac393f9dd96ae2a3196543214a542af4e7f5 feat(tools): tiered tool disclosure — always defer MCP/plugin tools, scale the listing with catalog size 2643ea17fbbeb3f9f74ab06907cfbb3153f54b0d bench: discovery-bound suite — paraphrase/absence/survey tasks isolate the listing's structural advantage 21cc643ac2a59bedd9158c9a77e1d2a24d32f287 bench: adversarial 830-tool gauntlet — confusion clusters, type-aware error mocks, strict scoring 6f5714372296b607e59d5cc79e297e65c6f5ae64 fix(lint): explicit encoding on probe-file open in UE harness (PLW1514 + windows-footguns) 3a1bbfac61b13f45eb14d64234dd75cf14ec436b bench: Unreal-scale live benchmark — Epic's real 830 UE 5.8 schemas replayed (Opus 4.8) a2c42be93c6dc7a489b18711f57e167d92c58c35 fix(lint): explicit encoding on write_text in livetest harness (PLW1514) e869accc1a1269b096716d606376d24df2bb6643 feat(tools): skills-style catalog listing for tool_search progressive disclosure 6ed7757d884748ae4a966a735aff2a9833f1fcda fix(setup): stop asking about self-configuring platform knobs beb16e74923b7f7474593f5a273e2bfa01a90d04 fix(telegram): treat "never checked" identity as stale on a fresh-boot clock 99d3f443e547696dbf90968f4af9e4f799493190 fix(telegram): follow @username renames and support non-"bot" handles 6179da549638dacc5717450e168b33ef4add0a21 fix(dashboard): one gateway liveness ladder for status + channels 914059fad66264fc1550fa0573d7666a4d46e752 fix(sessions): retain all reconstructed sessions 37ac8ae76a165a4e5a27582b917a9b91a6b91ea7 feat(desktop): render-churn perf scenario 44211f36082a5005cbf909f9312b5c9c5372775b feat(desktop): dev-only render + store churn counters eb52760564dbba2e5971fa54bd67384e281cd3b8 Merge pull request #71901 from NousResearch/bb/session-click-active 529ae164ae961588b2318540c3a5d7be88e84cc2 fmt(js): `npm run fix` on merge (#71897) ecf8ef970ee137e55c1fcf4028ca9affef767db9 fix(desktop): clicking the active session from a full page returns to the chat 3b9bd0de6df66e5cf3336600731ee4ad14f5199e Merge pull request #71848 from NousResearch/bb/sidebar-plus-tab af217e444ba8f1f25e797364993d7eff6319f218 fmt(js): `npm run fix` on merge (#71892) 080ee077a8667dfa52a2f93b6b1f622ddc933241 Merge pull request #71891 from NousResearch/bb/slash-tab-target f2f5b3253138d62bce2d391216151337f9011772 fix(desktop): expect keep-alive tabs not to repaint on reactivation 2a6368f0410c573850b542c7dbe1a2304cfa7f1a fix(desktop): send a skill's kickoff into the tab that invoked it 02721cc1c0d18e058d4174148cd4a34b7e2a978f Merge pull request #71872 from NousResearch/bb/desktop-ui-polish 9947a6065baca2fd0a7926acb79729818cc5957c fix(desktop): align external-link icon tests with default-off 76e9ac3915e5bea2a7920a73a2d3c5d52aa546a9 fix(desktop): preserve correction order in session tabs 651c0931debf86e75129b4c781f2669e41fdfd42 Merge pull request #71864 from NousResearch/bb/worktree-follow b8375fd3a65aaa24d67208481192c459b2c29d68 fix(tests): stop unit tests from lazy-installing backends over the network 8d243c8afadff539c145166d3bbd92ed136e395d fix(desktop): put the technical tool payload behind a chevron f2ac03196fb532ec2e2d2945c86f5ac2074ae4d8 fix(desktop): restore the pane tab strip's bottom rule 6b816ad8c3f6f294c9624f633f6e0974f903b64e fix(desktop): make the running-session arc legible in the sidebar 6893faf47299ff22ae96b886bb320878c9f662c8 feat(desktop): style inline links as tinted chips 37a27664cc11a33d36739fafe864d1d084370c47 Merge pull request #71855 from NousResearch/bb/cua-driver-atexit 953707103fff4376a7c1569fc064190b4edda597 fmt(js): `npm run fix` on merge (#71863) 0158569ee78b07270a55c96eccc4ddd6f4047304 fix(gateway): follow a session into the worktree it settled in fc39c7ac31f3c2f835af450dc2d50ce42c171870 test(desktop): scope e2e transcript helpers to the active chat surface 4dae897265f09ed5b26f5e02b0f0fcb1325e0b6d Merge pull request #71835 from NousResearch/bb/stream-history-cost de9196ed0c125ff037ff9e074a5e34c35c8c3464 Merge pull request #71836 from NousResearch/bb/stream-foreground-leak d64ab9e553a7363dcf105dff307e1e50019b1487 Merge pull request #71843 from NousResearch/bb/skill-title-leak 4e49af94bed94d85d99dc02a76642ca12b59f299 fix(computer_use): stop the cua-driver child on exit d9f1043c3337818b1f29224a7deb5bbb17402370 Merge pull request #71840 from NousResearch/bb/status-stack-scope bd86ce9938f7b69326a7875547a91e2e8f7dbb7b feat(desktop): open a tab from the sidebar "+" when a chat is loaded 2686cfa5b49d6e6a10e17a069f9331ccd8eaebf8 fmt(js): `npm run fix` on merge (#71845) e7f4b95b47148b2f21dcc6396c0acbe28f05b5c1 refactor(desktop): tighten the surface-var helper 20fcef5207f46a5626c78cc886068eb2185616aa perf(desktop): add a stream-history scenario to the perf harness ad09bf3872ae5a1b78633b165cc13c8d67be45af fix(desktop): flush stream deltas from a timer, not an animation frame 1aed1f7bf47e64421198fc9804981951a220d9d9 Merge pull request #71812 from NousResearch/bb/memory-tool-card c52bc5ec95fd4fef27736a903b4beb00333eacde fix(desktop): scope measured-height vars to each chat surface c489480cbba1fc3f60d109c7e32fdaaaae4f7ec3 fix(desktop): render the workspace pane from its own session slice 16042b0c4b2fc128ea61d92abded2d7d2857a5d9 feat(sessions): add `hermes sessions retitle-skills` for stored titles c3d199c248cb39ff54c23213f6843db1dcc9f0ed fix(sessions): keep the skill body out of session previews dcf5fc0eea340b973033684e8ed42c89f2050cff fix(sessions): stop titling a session after the skill it invoked e4724ea455963383a91733aed9d1b3384b75fe96 feat(skills): describe a /skill turn the way the user typed it adf47ca83264c3afa08c0db7f94c74c06b0aefcd perf(desktop): reconcile only the messages that actually moved beb3f566ba86724aa144ff9c9cdd6a8169fce0b7 perf(desktop): stop re-normalizing the transcript on every stream delta 87ee6a52fae121f4c445852f58a6ab54b6be12a5 fix(desktop): count output_preview as command output a97b6ff8f646f197efa14d405a1130c9951dcdd9 fmt(js): `npm run fix` on merge (#71818) 21a2185f86f64be10d28bec1ecc576d89230f761 fix(desktop-e2e): poll for the finished-unread dot instead of sampling once 3a3bc41c7e400262635ef19cd7841c7b71151087 fix(desktop-e2e): end the sidebar background-dot wall-clock race 6deb92df527ac7fa463d5883a299009d7ca58fb3 Merge pull request #71800 from NousResearch/bb/project-sort 717746ecf8f14cf8a54a0aca4d770160427b2053 feat(desktop): give memory tool rows a title and glyph 6192d3bb571f24fffdc5fc0d7d87566dffccdf0c fix(desktop): stop painting memory writes as errors 6ffd7302bf4a2178d784f0d296fb8094a48a5bf4 Merge pull request #71789 from NousResearch/bb/timeline-idle 29fc74635059df5450e46470fcb5b99bd5e0a994 feat(conformance): vector generator — native renderers as executable spec (#71666) d471fc9560f87c3ada8b4f4b422a8f76bcd16fd3 Merge pull request #71799 from NousResearch/bb/model-picker-perf 67380ba48e4c530a972eaa73cc2c14a7f11ce417 Merge pull request #71805 from NousResearch/bb/slash-busy-queue d2e733e636a43454aba054b017f6c825efd79450 fix(sessions): reconstruct missing sessions instead of deleting salvaged messages 428c909d2852222852d96b487348dbf67e4401ac fix(desktop): bind a tab's slash command to its own session 7ef3f1407bc7f2df5cbb4b75b8f49f46920fd17b fix(desktop): gate the slash/submit busy queue on the target session ad81e3c16fee91add7623f86bfe0369aca3aa139 fix(gateway): only stamp a session's own directory on its row 723fd67ac773993a112968c5f8324a67627424e8 Merge pull request #71801 from NousResearch/bb/thinking-gradient bf726a7ab8d0316ffcb8b3e71612c16f0ca4b685 fix(desktop): drop the fade mask on the live thinking preview 3172b8739eb482e308fcba9a6a11d34a44c75edf fix(gateway): record a terminal session's working directory 19025eb7ce4bf8f264512b166b67c3d73312989b fix(desktop): rank projects by real activity, not disk-scan time dacd8d5416f81030e864da06075380d17397e1b7 Merge pull request #71795 from NousResearch/bb/dead-worktree-projects 7dec2c9640ad02c56b17d55ed76f28788228074f perf(desktop): add model-picker open-latency probes 0b745bc9937c00b4c898af39e1a1a4da744e161d perf(desktop): pause glyph spinners on hidden tabs 667758ac24ad04df2c01382c130f9cdcf124d032 perf(desktop): defer model-row submenu bodies until hover 36926af2665bf9e7cf2b97313e1765a0182ce3eb test(sessions): prove the connector reached the lock before asserting blocked c8aa0c7a3440a7a20ba7f0c274fcaa2cd93f0cd7 fix(sessions): report damaged state_meta as loss, not absence 9657f6e343ea7ac6e2407a462df2637935dac0ba fix(sessions): close the snapshot check/use race and guard damaged state_meta b572ec3dda14e111baea637acdb037f11cb7aef2 fix(projects): don't promote a deleted workspace to a project c7fcb73e3d9eee0929a8c3397165e6f1e76f045d fix(projects): fold deleted-worktree subdirs into their parent repo 92549c9a6e6e7c03a9cb945a2c4e75179a0e2d7d refactor(cli): route every aux picker through one provider-inventory seam 9aefa4c61cb477b04cd1bb31a683310013bd3c38 fix(model-picker): show exhausted-pool providers in the aux-task and vision pickers too f7001f9683f6e3dc3bfbede0cc40669dc2231b4f fix(cli): show custom providers in auxiliary model picker 72c013b6622ec1e19b01601c3c8d83b297d364aa docs(compression): correct the stale in_place default in comments 2c6931674204bcb9a80db6cfe100d60fe2ad33b2 test(compression-lock): cover the holder-only refresh predicate 11c487e409db308f5c2b4e415df9df3d1fac3186 fix(compression-lock): reclaim crashed holders instead of stranding the lease 1c0884516c1af27a2305f925183ffc0a31009c55 fix(openrouter): give auxiliary calls the sticky routing key 91a8fe4a3e9fe5a524955beed22975467a3c2dd5 perf(desktop): stop the thread timeline working when nothing can see it be00a7176c526360f05fb33965d2510fe4e519a8 Merge pull request #71780 from NousResearch/bb/multitab-perf 9173f589c6705291369ae28664785d11de130628 perf(desktop): add a multitab scenario to the perf harness 982a425162abe1f787ed3fb27013bba5544d1800 perf(desktop): skip the timeline rect walk while following the bottom 47f0cdf3a2e5c4ad2c78a79f57bed226d9fddc59 perf(desktop): freeze hidden tab transcripts during streaming f2f4df064dce837d98417d4c493a071549b664e7 fix(nous-portal): give auxiliary calls the Portal sticky routing key a1c4d9995336dad1e606cc75a08b0b2b73482179 fix(sessions): refuse to snapshot a live database during recovery 508764d38415f65c5f01567d5e2135ba81955fb9 fix(sessions): add opt-in partial database recovery fe431651c512a194a5e438142a69858e9044179e fix(state): make the byte-probe guard atomic, path-correct, and fail-closed 95fb477856173e0a597aab008cf84033fbd6bbf4 fix(state): close the tracking leak and finish the audit of raw DB reads fbd5e5772b2bd7e4116e0f417e82e84b1406be30 fix(state): stop cancelling our own POSIX locks on live SQLite databases 2ea1ea0894b0561d4522af5c9a0f8e5b1e1520e8 Merge pull request #71741 from NousResearch/bb/tui-dim-fallback 0ce9022e0355d5190d768e53ec7e2d864da6577a fmt(js): `npm run fix` on merge (#71740) 4c03d5bff2a9a2cafce6cdc3e73ecd80262a257c fix(tui): keep the Apple Terminal dim fallback inside the active palette b8bf368b02c67f3b4e28299f908860dab809bfb6 fix(tui): anchor markdown body prose to the theme foreground 559d0849a9f7439f07b0500fe8631754980b6a81 Merge pull request #71716 from NousResearch/bb/tui-link-label 5c5f11d23a02915fa2411144c6f73fa305073136 test(tui,desktop): cover authored link labels and not-found titles 17b8b3f657c606add863ede4227d79266f9e7e5f fix(tui,desktop): treat "not found" page titles as unusable f244deffee34870207bf2c910225c7fe17518867 fix(tui,desktop): let authored link text outrank the fetched page title 9b909115fc129c073a00ac4445531564cb373fbb fix(skills): fail closed on unknown curator ownership 8a71feb84ca20d92908ab95a45f7fb39fd376b26 Merge pull request #71709 from NousResearch/bb/first-run-local-start-error 8b6ab1fba9e8fbe49a0cfea5ea3dac7d4d26e86c Merge pull request #71714 from NousResearch/bb/gated-health-probe 06573617e51e3450aae083e14d5931ff6cb830f8 Merge pull request #71692 from NousResearch/bb/woa-native-arch-probe 6cb5dbc65057479d0988d7c17bd38d50803d80f0 chore(contributors): add email mappings for the gated-health-probe salvage 75456183b6f48aacf12cfd70a283ed63dac83012 fix(desktop): wire the credentialed readiness probe and reauth latch into boot 36e2228a4cfdc837557bafeded023984eb5c5e81 fix(desktop): latch a confirmed remote reauth failure so the overlay stays clickable cf4fb8993f8f9002bc44e6aaaa8dbf6435ef9ec4 fix(desktop): name the readiness-probe auth and password-gateway guard decisions 8d025489cf426d6adf0a2729b71699d6a5ff4c85 fix(desktop): read a readiness-probe 401 by whether it was credentialed 6c9718151c59638bd562433cc8d6f55d6ecf0d1d fmt(js): `npm run fix` on merge (#71706) 46cae787ab07f11381e1e55416c4950357746a19 Merge pull request #71697 from NousResearch/bb/tui-slash-trigger f97e7086c7cf2968748bc9d59913913396fa1d1a fix(desktop): keep the first-run local-start error from being wiped on mount 243a01d5d72555061406de84890b2e9622f409cb fix(curator): make the autonomous write policy consistent (#67140) 6ab5d2df2a5748f23ba7557ec527fac628720a22 Merge pull request #71664 from NousResearch/bb/composer-slash-trigger cfd2a38223060afd9e6bdf41c65207833f243baa fix(conversation): anchor the cwd staleness read to the host-info block e741dc7d91bd181d1beda4f1c93de89444b688a0 test(conversation): add TERMINAL_CWD gateway cwd tests for resolve_agent_cwd staleness check 7a61b66dacc33b0bf3dd505fdf3eacf6f2f01c9f fix(conversation): use resolve_agent_cwd() and Platform line for stored-prompt staleness check 30cd6e989d9e643d411b94823339dbe225e52167 test(conversation): add runtime surface drift test for stored-prompt staleness check a2b0d6d8e4a23611dea5320bac2e7d1e2e990ae2 fix(conversation): prevent stale prefix cache on cwd or runtime surface change 3a06908433e5c618c09fadf292807f4343b2049b Merge pull request #71688 from NousResearch/bb/profile-gateway-inherit-label a135b278dd9198d0411ecd74b78d7702173e37ee Merge pull request #71601 from helix4u/fix/desktop-model-picker-authority ec6fa9bdb255ec71a2ed809f4df323bd67f3b03a test(tui): cover inline skill references end to end 07244c5ead7c1b4fd1b9027e2d9303ad4461a9f7 fix(tui): keep a referenced skill styled in the sent message 530e7c0d4eb39afd178f6059ba60e59ad4a140b0 fix(tui): offer skill completions for a slash typed mid-message c03a977a96daa8fdcdec059019ead75baa055ecc fix(update): drop the GetNativeSystemInfo probe that lies under WoA emulation 28c12c8c94fd6807a34a9e6ad4552855e30a36b4 fix(desktop): localize the inherited-gateway copy for Arabic 4656a1a00980ffc0761885c6c0094a2872338687 fix(desktop): clarify inherited profile gateway f2fd937dcdce58ab105340e8aea0c4828fc57fa2 feat(skills): add grounded-citations skill for verifiable sourcing a606d24cf2a9d1137d77fd92e7da459c89947fbd Merge pull request #71679 from NousResearch/bb/default-effort 43d1088ba2c3a901c6aa98ccffc0e8abafffcec9 refactor(desktop): give reasoning effort one owner 10160a18081c4ab32a238aef5eb6ea0051aefa4c Merge pull request #71672 from NousResearch/bb/tab-session-titles 412a535433b7128444aabe624c809f8fc56552d4 fix(desktop): scope mid-message references to skills and keep them as chips fab0e6057092160d891f34bf4d86663d2e7917dc fix(desktop): name a Cmd+T session from its first message 1f6427b75e4d0a289d13fcf279a22e80394fbd15 Merge pull request #71665 from NousResearch/bb/deleted-worktree-fold a288fc341c470ae1f2a724661bb5bb62d9419a34 Merge pull request #71678 from NousResearch/bb/code-block-overflow be1edef5ce93a55ce94cb4843cfa50b408205358 fix(desktop): show the real effort on the composer pill e2122f22b89bd186a5458943af16275fe2fa973e fix(desktop): stop the model picker overriding the configured effort 58f5a05655c58b747cb1b6d4ce96e1586e16c049 fix(desktop): publish the profile default reasoning effort to a store 7f2971039ab1105eb96741f653d9d09c01a49d54 fix(desktop): keep code and diffs out of the tool overflow window 1e067ec0b5ec493d93c16be72eb77a12846471de test(project-tree): cover deleted-worktree fold into parent trunk 47c95130f793038e6cfaf3a33ecf03273ada83f7 fix(project-tree): absorb deleted-worktree sessions into the parent home checkout bfc8e3b00db4ec87ef05e8aefff338bb6a42ccb4 fix(desktop): give ⌘T session tabs a live gateway so slash completions load 58d805302a095ecac7020690c72019a38762e881 fix(desktop): let a slash command be typed anywhere in the prompt ba159d6fa9a12f29f85aaefab9a98020d9ca683a fmt(js): `npm run fix` on merge (#71667) 751c15f9ebb33f1479bb9a10cd39c4c4a131cd6b lint(desktop): exempt benign ref writes flagged by the new atom-mirror guard e026fd61d816ff0239f3cffc7329e8360158f3f0 lint(desktop): ban atom-mirrored refs via no-restricted-syntax eslint rule 72de75c0ab367e231c207075ee972f7d2fcc0744 feat(curator): surface unmanaged skills and add `curator adopt` b9fedab47a7dc7bb09bbaf18c12ce7af3ddf7929 fix: curator labels bundled skills as agent-created (#64393) b6accee0d793f9b4dc50dced6904b59b930daed5 fix(acp): pin the session cwd for slash-command handlers too cca2a2fc8dfd4a79de82bc17a3d2537e2d989d4a fix(acp): pin the session cwd for the turn 40eebc7d70f3d8e95c429c8aa482f31ba6c867f6 feat(relay): Phase 4 thread lifecycle — handoff threads, semantic renames, reply_to context, hello command manifest (#71624) 1161cc0b53fbc89abe81283b13f81d85784bf611 fix(managed-uv): don't retry patches at or below the installed version 866cdce209fc488a45fb04e0c5cb8f7425928534 fix(managed-uv): retry with explicit patch when bare-minor SQLite repair still resolves vulnerable ec2a0f8c1ef534171f878d302a8a796d22cba7e5 fix(sessions): point failed in-place repair at offline recovery a9b8128bcbd4cfde97b3814aea24bffb21f10967 fix(sessions): add offline state database recovery 064b6e40c51c9087d933ed205e32cac34c05794c fix(image-gen): stop reporting the Codex tool_choice 400 as an account limit 2bfe9fabbc248f038a680b0ea8c2dd758da403b9 fix(image_gen/codex): remove unsupported tool_choice from request payload (#19505) 776c43befe3f43df77f73080ad1e5accd0996469 perf(cli): cut `hermes -w` startup from ~14s to ~1.8s by parallelizing + caching the worktree prune 44480617ffd1b87980cdbda46e872a4e5ff5e271 fmt(js): `npm run fix` on merge (#71638) 2ba1e028e4f8fb2032d95648ea774196c0379809 fmt(js): `npm run fix` on merge (#71634) 6b26b409cf53e9cbfc9b0c2a7f6593635dcd2428 fix(desktop): /goal arg stays editable, kickoff queues when busy, slash header stops echoing long args fe3dd9106a1c9d2327fb3795e55b09742c43bafd fix(update): stop WoA integrity gate rejecting ARM64 after IsWow64Process2 HANDLE truncation (#71381) ec734b6658a0a9c0955ea8138764e6bd89aa390b fmt(js): `npm run fix` on merge (#71626) 584b274495201829881b5546467eeaf5763a2372 fix(desktop): slash commands target the user's chat, not a new session c537ae5f40d1ee6e14be8baf3586423540d87f7c fix(skills): stop treating an upstream skill rename as a user deletion c943787bf6b67d064c7b6eaaff337bf47f426166 fix(desktop): keep model picker aligned with session state 9de7dfe1cc3bd3a1b7ae96d9380fe65b1a01e412 feat(compression): stream the summary call on every compression path 5121a2a20e47701025374612d41cdec29116ec96 feat(aux): force streaming for providers that reject non-stream requests fffa66122345e87a23fb4ba4266ea4dce3181cd3 feat(relay): Phase 3 interactive — native prompt UX (approvals/confirms/clarify) + react ack lifecycle (#71404) 593c884cc8e3d025437f164416d085c1d05ef5da fix(billing): keep the payment-method kind narrowable 78c06525e8e955e06a007b07b347c679f3977c3e fix(desktop): keep optional action handlers optional through the latest-actions adapters 344976773ae9b8abf4bb24688ecc11d42032785e test(desktop): cover stale steer action binding 8f53429651b1e47eee52aa50dc19bdf175caec3a fix(desktop): avoid stale actions in memoized surfaces 5baf174781a189506208336891f299ec8553fd2b fmt(js): `npm run fix` on merge (#71549) 57ae3e66ab443ccd92eaa9bebe233e830b0d84bb fix(billing): send only the fields each payment-method kind declares 771f1b7f21bfad9ab9fd6956bfecddda46573db4 fix(desktop): route live-turn and history actions by the current session, not a stale closure 32fd9d65cf091269709c5a6301b25aadac681aa8 feat(compression): progress-aware timeouts — stop punishing slow summary models ac327dfa38f6418619e9d5aa72fded4319e98661 fix(desktop): resolve unpacked spawn-helper before chmod (#71171) 54989fa26b2dc4ecc71ddf8199edf379ce939f49 feat(billing): carry the payment-method union through the gateway 57106fba77f3162b49f5dfdfcc7121794f61cc6b feat(billing): add payment_method union to the billing-state wire type 46815f49104bf205414a08cac2c28791f89ab6d8 fmt(js): `npm run fix` on merge (#71532) 5349c7c280dfb3732cb2fa282294d01324a79212 Merge pull request #71162 from NousResearch/bb/session-link-titles efe449166658d6892f6725836a017bf7f30537b8 fix(session-search): stop the agent restating a linked session's title 9edbc68d0f4d3ff144de7319b4e8e4ae4078cb38 feat(desktop): open the session a @session ref names 07e97d2f5dc3d2092cfe693ef07b2527a36cd2d8 fix(tests): gate WAL-dependent tests on the linked SQLite's real capability 35b1e578621af70c5dbffd2a6fd6c534a0a1a4b7 fix(tests): a run that collects nothing can no longer look green 689b51bef68f9ec95b638121bb9c7fefa3703fb2 feat(relay): Phase 2 media parity — send_media egress + inbound media localization (#71363) 6ad632bf9bfabda2d4bed2606f953654e81e3859 test(telegram): cover smart_deny 2-button row structure 116a44f46e13db1ad2e997e0e2669374c42737b6 test(telegram): cover exec-approval keyboard row pairing fecceec11e1a82c9314ad04dd35061f6688810a3 fix(telegram): restore 2x2 exec-approval button layout ebab890ae5676fc297461b6e069df5b54cbbefce feat(relay): Phase 1 parity — supported_ops discovery, wire identity fields, /handoff aliasing, provision displayName (#71300) 760112adb6458417da8614d2269e5325f0739ed5 fmt(js): `npm run fix` on merge (#71236) 0c48d2bda90da77f18071beb0d4a34d52ce4b606 style: sort Harness props in the leak-guard test (perfectionist/sort-jsx-props) fd29ce51025afdd4ec81b15e3cd587948a500c57 fix: widen requestGateway mock signature for typecheck (follow-up for salvaged PR #69689) 062d26195511ed876c3e5edb9d8e76fceaa71a4e fix(desktop): prevent cross-session leak in background queue drain 95a566b1e769cca26dfa441c1ff963ec03bdc7d6 fix: brace-group the filtered export dump so $BASHPID expands in the parent shell 50e1d7e3ae1fbc13012312cbad436f44b74bf957 chore: add contributor mapping for jrfbch f2e32ceead6bf92405fbcec038f399241787a6d6 fix(terminal): stop shared bash snapshot leaking HERMES_SESSION_* across sessions 3e340d93f44a46f8c8fb5b5046c867f35288f89f fix(tui_gateway): inject live session id into HERMES_SESSION_ID 886dddb82d51f1e90703550fd187339691963570 chore: add contributor mapping for smfworks 22e5dac4b6a8286e5b2378aac72268d286ed128b fix(state): quarantine lock fails closed when unacquireable (#68805) 6048696ed05b975fbf80ee7a1c89f52956c61727 fix(state): cross-process quarantine lock + oversized DB pruning suppression (#68805) fc99b549ee50410196aea48d61f5954acfae7583 fix(backup): skip prune when DB capture failed — preserve recovery source ed5e41ddd61124ed579245c98914f8e859034536 fix(state): loud failed state.db snapshot + zeroed-file quarantine d9c41b5178657d7159b68199e8bfd571169421f3 fix(update): detect the OS-native machine for the Windows exe integrity gate ce44c3413efb9fd30a58428cd263e5199787ca9e chore: contributor email mapping for the optimize-storage salvage 0b3a50f1088bbcc6333f9bafd18937c8ea8e78a1 fix(sessions): measure reclaimed space with SQLite page accounting 58b2a8c19261c8e7fc0b6b9f55fbf11a16566f30 fix(cli): show 'grew by' when optimize-storage DB size increases 4aab4c28d7590cc49c8106f6d66b4a71d8b3635a fix(scripts): accept legacy consecutive-hyphen GitHub logins in add_contributor 4ba71e6aa4a427f45244705cb141e1bdf1825854 Merge pull request #71202 from NousResearch/bb/desktop-session-drop-target 893dcda703e05b97720d557a30502c448ba7aa5b test: accept #71184's terminal error frame in the build-failure surfacing test ba4821d68f7b19cee8a31a1f00302227c4099d0c feat: BackSearch plugin — point-in-time web search/fetch (General Reasoning) 0e1332abbbb627ba4b5fbebc34be481866100d1c test(desktop): cover hidden-tab resolution for drops, focus, and timeline 771dfcc083b4696c075dd2470349284235220ece fix(desktop): keep background tabs out of blur, timeline, and key routing 3fbc9bebe17a6fa5629ef7f7602d71e2d8343d34 fix(desktop): drop a dragged session on the tab the user can see 9285de4a410fa77c247c5f41ed3edc91ab88e5cf fix(desktop): mark kept-alive panes so document lookups can skip them 78cf0e648647480ad52c4859d26515afe9bd0022 fix(tests): assert the current failed-build turn contract in the TUI gateway 9823f15f6a4e2a10b6bede6338cbe0b7682a4c4e fmt(js): `npm run fix` on merge (#71196) 62e07223d630c122317d5bed3102d24bd1144976 Merge pull request #71184 from NousResearch/bb/desktop-stream-resume 36703753e079d9f290cc3ac71829f62c467c5ca9 test(desktop): pin visible agent-init-failure surfacing + optimistic-message survival (#63078) 60c8fc6290a080b530488d63eb118f406e4dff49 fix(gateway): deliver the first message when the deferred agent build outlives 30s (#63078) b20b235206cc34a28883148b61f7dc26f10b1ce4 test(desktop): pin busy-gateway churn tolerance end-to-end through the submit pipeline (#64327) 83333c6cf3b0610e993a8edfdec866a36539dba0 test(desktop): pin the genuine post-create switch abort during attachment sync (#62805) eb2f648628a57f5df95fd4a14ac4abf9b9b81506 test(desktop): pin first-send delivery across a late React Router route commit (#62990) 620d5801d40805ecf86534add9ba7b0a7b944c47 test(desktop): pin first-message delivery through the new-chat route transition (#62562) 996d459fb6bd43fd84da25774ff36bd6ab3e2742 fix(gateway): emit error event when a turn is cancelled before agent ready 01232e8e217ad8e0c4499cb3063a409eb466d1ff fix(update): stop `hermes update` stalling for minutes on a large state.db 082bd17122dc6ca453289acdc51a0bedd157633f feat(desktop): auto-continue turns interrupted by a crash b8675a189902f674ab4dc5f3db9dc7295b3f33be fix(desktop): surface terminal error frames as failed bubbles 8d8d1d61fe3f92e5cf5aa4a11ac7209d540d89a1 feat(desktop): crash-survivable in-flight turn journal 57b351d36892ce81bf87c600c1596b2f1311d385 fix(tui_gateway): retain failed turns as replayable inflight snapshots 99ab0362912bd4f40360e85295bd4f92b2a1fd37 feat(session-search): give the agent a link to hand back ca3566301373d871f05c1841dafe11cbd8e37a4d refactor: extract lineage_is_logical local + document TOCTOU re-query c1fb170449feb282f909c8493422a63817c00903 fix(sessions): export delegate cascade before deletion 92439be3516b3091a43709645ddd9d1e92fadde5 feat(desktop): render agent-written @session links as chips dfbc9dbb1528e506fec2aea9898ad2d3e00486c8 feat(desktop): show resolved titles on @session chips cbad98e04eafaf8389b2ffb6f05341fef2ed4964 feat(desktop): add session link title resolver e0dfcf275a22dfd1253c71074c5b6be780e3c965 fix(relay): normalize forwarded Discord interactions to leading-slash commands (#71048) 666824261a017d62d82e2a7e646b4599c1fc830e Merge pull request #71121 from NousResearch/bb/desktop-image-persist 8f8b66d8ac6ed5172daa213b615037cae0ed92f9 Merge pull request #71141 from NousResearch/bb/custom-endpoint-keys-and-models 808c38ee639ed2ccc449920be4f6695fac17d042 Merge pull request #71144 from NousResearch/bb/custom-model-id-resolution cc80dba96fa9d05cfc62a9115a1993ba153b5b6b feat(monitoring): add hermes.gateway.background_delegations (unit/slot count) 1613dac0e8c20d08f9905ac51935c4cd2aef92ae chore(contributors): map jevin@jevin.org to ijevin 8ca4c745d0b6547fc7f74b48b082f70b1da526f8 fix(models): resolve custom provider model ids f71ba11d4c76ac83d500b89158a2dd137e9892e9 test(desktop): cover attached-image resume end to end 9b33f549131bf57b21b020401a7e3b81a4e946fa fix(desktop): lead persisted image turns with the caption 3d2033db6b0ac1f47ef0b02232297b7785973469 refactor(desktop): memoize the directive image-segment filter ffbcfa1597c0feefec3c12ab6c72f78cd4f1d29e fix(desktop): persist the image ref for natively-vision-capable models too 6811a79b6299e7a34904030d0ec9605955af3883 fix(desktop): quote persisted @image: paths so spaced paths render 46966123f482e88067c227c74a027d27c5d8bbbc fix(desktop): keep cached attachment refs on session resume d0f5ef70416da4fad0707e77a5defe22daefdd9f fix(desktop): persist @image: refs instead of the vision-enrichment text 15f29d0b6fd385507d8feae37e4d76b2598ed8a5 test: cover custom endpoint key storage and model-list persistence 8a2925f794466a5d4487a1438b1b6c700b88a1d6 fix(cli): store custom endpoint API key in .env instead of config.yaml bd2dcfe9ca40de8219eadc884c631033bbb96ed1 fix(web_server): keep Desktop custom endpoint API keys out of config.yaml de6375ebc5e44e5d1441839d5c5506b60e42ba13 fix(desktop): persist the whole discovered model list when saving an endpoint 0ef0816284ca7e287b63b992cd55730cace26a40 feat(monitoring): count background_work task-granular (expand delegate batches) 199f55805876965fadea0f7a7ef29ae9128602ec fix(windows): verify rebuilt Hermes.exe integrity before shipping it as an update (#69179) bfe7460c79fabcd61c683d66f4ecbc45f0340c21 fix(config): add a collision-safe env var name for custom endpoint keys 9ac8b24fd5a3fceacaab38861a0bce43a226e3b7 test: record getUpdates progress in mocked cold-connect polling flows c8ff720508863babb4cefb548f363ed3a7002323 fix(telegram): bind strict cold-start readiness to its own polling generation 9f8810a6937185b24d5817a2b31177834e292cf5 fix(gateway): allow Telegram readiness budget 83e30e371fd5764ae1f9d9444e4a554dda6a9cb3 fix(telegram): require initial polling readiness 1cfc3425af02c3065b3301c9755416ab1c94e051 fix(checkpoints): require positive volume-attachment evidence before orphan classification 1fc338a4ec7befc5f9b24039cbe3df58666eb4e9 fix(checkpoints): an empty surviving mount point is not evidence of deletion 7d4e272cdf50f173fa97ca4cc024b15a089914ce fix(checkpoints): don't prune a project whose volume is merely unmounted 3c567f7c84a7e12c1429f5eb16ca58d7bb65d04c test(monitoring): assert background_work in snapshot + metric_names registration invariant b49b78b7388c4d933bbfe38c563e262785f0f69d docs(monitoring): background_work signal + plane maintenance/extension guide 9edcb7b09113b291aa6cee7131411119704aa8af feat(monitoring): emit hermes.gateway.background_work (subagent/bg jobs) 6de6e36dbe599ee942aeecedc439de228c050aef fix(monitoring): surface cron snapshot failures at WARNING (content-free) a979ca2a67a6fe3c08dd97a10ec6131aca913c14 Merge pull request #71109 from NousResearch/bb/desktop-display-metadata 476f009ff655501cc7606e9eaadeaac02a39fc1c Merge pull request #71104 from NousResearch/bb/desktop-boot-readiness 0c40f00ad1ea7a85aa581716aea308e4305f5c40 fix(desktop): tolerate unparsed display_metadata from an older backend 19dc35cf577a339f1ba6f7106d37704638549ca0 fix(state): stop double-encoding display_metadata on write 3399bf28a5ad268ad806378346f8be0e90cf3fdd fix(state): decode display_metadata at every message read path 23cb26c2e3528c1b7d522eeec1295e5921d0714b fix(desktop): probe /api/health for boot readiness, and survive a stalled loop ccab46ca435a21c103fe5e7c1a8247f4bacaff54 fix(dashboard): add lightweight /api/health liveness endpoint bb4765d21ce0b8bb2c0187d0a1509b0b3b6dca9a fmt(js): `npm run fix` on merge (#71099) 2c1a38a3cc4b5727c817f007a46c377cafddde4c Merge pull request #71094 from NousResearch/bb/desktop-ui-consistency 0d865ddbb1e41cd7c6c7dbac13a124fddb6824c1 refactor(desktop): webhooks create form uses shared Field; drop status pill ef6049c2152498a69323905048d4615afb24816e refactor(desktop): fold cron Blueprints into the New Job dialog a3421aadda03ec17937ada0371153acdd26b7493 fix(desktop): unify overlay-pane padding and add primary PanelAction a8c7a5f70f7653104a0bd8fae498545f124e440a refactor(desktop): add shared Field form-dialog primitive 301e83714a96fa6ed7b4ab4427a4f110a1b2e9fc feat(approval): require approval for docker/podman daemon-redirect commands d372fda6f0cf321b14aed84599a5b2a2d68e0338 chore: contributor email mappings for the file-I/O salvage 0a6fda01e3f4b4742f668606ffa2ca870613ba2c fix: restore utf-8-sig BOM tolerance at .env readers the sweep normalized 75e0d52034656a3f1584649fa0c2a12fbbbeb284 fix(windows): sweep remaining bare read_text/write_text sites + linter rule adecb0d1a93bf9aaf31f6662332409d69653e85e fix(skills): read OOXML parts as bytes and form JSON as UTF-8 in office skill scripts 607f647141326b7facae729945806cebcf666938 fix(cli): read .worktreeinclude and .gitignore as UTF-8 in worktree setup 6e30aa2a3cbc777a9cac2d7c4faf8de64668d674 fix(skills): tolerate non-UTF-8 bytes in hub lock.json de9d480413dc1b704703146baa103ffaff44438e fix: add UTF-8 encoding to read_text/write_text in tools/ and agent/ 40828997a5442d6a97b1ac05ea79e113cb695d37 fix(profile): read .env as utf-8-sig in the distribution-install preview f1ea4a56c27f1ff2f826978b9974b4884bff6aa8 fix(memory): cover the remaining setup-time .env reads with utf-8-sig 75afc47baa527c15f330cc7a9295a888b0b8013d fix(memory): read/write .env as UTF-8 in mem0 and hindsight setup e02170f54a5dcc57b8ba59619b5d2b7f8f59d6fa fix(hindsight): specify UTF-8 encoding for file I/O on Windows 411a686de268c70b196c8c547bd79b21302ef4bd fix: add encoding="utf-8" to Path.write_text() calls (P1) 44649e69f4f5ab52f17b72993925f51ecaa8a010 test(install): add UTF-8 regression guard for skills_sync child path 3f1de1fc4a9a5d34915ad397d781ec6cde75bafc fix(install): emit UTF-8 from skills_sync on non-UTF-8 Windows locales cf35fd6de5c37420716390a130a8381024693032 fix(core,cli,gateway,plugins): add encoding='utf-8' to read_text() calls efaba061fb58dc7b1f6ee42b119f7fdf93f499bc fix(cli): add explicit encoding to read_text/write_text calls 9f6b2a64e003ee0b369186298089f43678c9663c fix: decode config and state files as UTF-8 on non-UTF-8 locales 049af61d64b6ede4ee43580d9b390f343be5bc04 fix: handle non-UTF-8 files in OpenClaw migration script 60dbce7c34903bb83057baec94525efcb0a8cd87 fix(doctor): UTF-8/latin-1 fallback when scanning .env 8dc99787418e5b10720c0a7a432addc02deef322 test: update credential-refresh tests for retire-not-close contract 1608a46884997133264ed70b6648356286923c48 fix(agent): retire replaced shared OpenAI clients instead of cross-thread pool close e51abb266dbea15f5756e7dac9fc8086c166de9e fix(agent): prevent shared OpenAI client FD-recycle corruption from stale stream watchdog 66cc0075a26ad25a45fb70e127e966cfc7f5ff4a fix(desktop): satisfy eslint import-order rules in use-composer-draft.test.tsx d083d9dacd4494eb4a9570b4bdf8ad6e5d0fafbf fix(desktop): close cross-session leak windows in composer + session refs (#59305) 86084d03ba3a21909c10efd286f5c522155837f4 fix: getattr-guard _stop_loop_liveness_guards in GatewayRunner.stop 9cd72968498976118337ed9d7af3b4af558a984a refactor(gateway): gate loop-liveness watchdog via config.yaml, drop HERMES_* env knobs df03120cb65f8b837fe97f2ff0eafe47736ae896 fix(gateway): recheck stop immediately before watchdog hard exit aff415b653a80f7070f0710eb9ae6c7cd74c425c fix(gateway): close watchdog shutdown race against final-strike exit 7af3a6fc7c9ea139bf4c6ebe5575c0cabffd4756 fix(gateway): detect and escape silent event-loop freezes dee0b5bf6958bb5d7c0ab16aa3acaa85b02d408d fix: gate SIGUSR2 faulthandler registration behind POSIX check eb2f5b5723852e1ee56e07e1c2fe4531a22121ca fix(gateway): stay alive on mixed retryable + non-retryable startup failures 7a62f62197e89b4641d5dffce8271c2817d99aaf fix: explicit encoding for faulthandler file open (ruff PLW1514) 83fe362e802c6a5572b10496037bcac40a390da7 fix(gateway): prevent reconnect watcher wedge after network-loss fatal error (#70344) 9c65cdb043d4c880b568d977de4ec2fc97d684ed test: accept the new profile-scoped kwargs in status fakes ddb86725b5cfab85b318bda1802c091dbb96daf1 test(web): pin per-profile gateway state scoping on /api/status c9c9b17d982d3bd736c41026441a16325fe7afda fix(web): resolve per-profile gateway state for ?profile= in /api/status 6fba7819456412256d433e00e7a108133c71c9b8 fix(config): preserve opaque .env values 18af81bb5b746996cfb12111dca93bcfa7adfba1 fix(caching): reconstruct static system prefix on session restore and post-compression reuse fb1b89b09eb9fdfaa62c885f937afe0ba27daad4 fix(prompt-caching): inject cache breakpoints after message normalization 9fdadf0cd793f537871a81a00ba1bf70631a413d fix(agent): cache static system prompt prefixes 6c14b12d1f22c2fba8734ccacd07f798974ffb41 fix(checkpoints): bind an empty orphan preview to an empty deletion allowlist c004c74df6095451e535ab69917c8cc796126cc4 doc(checkpoints): update infographic to show 8 files ac70af03952728d72424eaf9e468db97ff655f41 doc(checkpoints): add cyberpunk infographic for startup sweep safety a373fab1ce1ee13cd4e5ea06f30d7f81a91acdf5 fix(checkpoints): bind orphan confirmation to previewed identities 3ad8552f780a254b2b97cb3ac3f018e04689d038 test(checkpoints): cover prune decline/accept/--force for pre-v2-only and mixed stores dd8c0c7be89d4b2e899cae91b5ea6d81b6d52385 fix(checkpoints): include pre-v2 shadow repos in orphan preview cd3f653b4ee10daebeaf24cb0ee4e32a28df7a3b fix(checkpoints): never auto-delete orphans on unattended startup sweep 3960315af7bce6194801ddc628199afa8862489f test: order compression-tip fixtures around the closed-parent write guard c54fe5b33f4e44ea2f580ce2273595bcb728ebf5 fix: pre-lease drift guard must not fire on in-place compaction or mutated snapshots 2b3d442fdb85e886898ed6f2c267d58c261d3aaf chore: map contributor ruizanthony 0ee8d418784619e5b9cf5aae3b5fdaed764fba4b fix(compression): recover rotated session lineage 62ee34570e6e5a8b9f016754632a6b0852819bbf test: accept kwargs in managed_uv fixture fakes be633c1c330ca2d5a670dabaa440a351655d0596 fix(runtime): request minor line for SQLite runtime repair + tests 05a799e41c9f1680614fea719319567e9e9d884a fix(runtime): preserve cutover lifecycle on retry (E-949) bbee3011fd304c644d4dfc135f50262400df9756 test(runtime): cover managed SQLite cutover (E-949) 17bf3c828323115e5c07339414b79edbe4a9a6d7 fix(runtime): repair vulnerable managed SQLite builds (E-949) a5f9ea27411a757c0eb4ab9d4b0efac2cd34c196 fix(update): correct integrity-guard bugs from #70553 salvage + tests d68e043ba7f5e7fef5f58ab576c604f8f7c24a27 fix(desktop,update): prevent silent state.db zeroing during Windows update (#68474) 9e4492fd74e69ee3401f0d3bc0c3964d8d7f0ca3 fix(process_registry): reader loop no longer hangs when an orphaned grandchild holds the stdout pipe 3b762ba6957c73a6a20216758e553face5cc92bd fix: serialize on-demand slash-worker spawn per session 5aa3536b326eed8a98816ae6e4c3b877826a0a89 fix(tui): spawn slash workers on demand instead of one per session 410877c7e1f1e18407bf224ccce6ed9a46a7d134 fix(memory): close second-read drift race and treat invalid UTF-8 as unreadable 0c4c8f95e11a9f04bf27dfe19433a5f30293d2b1 fix(memory): don't wipe MEMORY.md when a read-modify-write reads it as unreadable 4be38125af0648650ee23882f0cd501fe3f20438 feat(acp): list named custom providers in the ACP model selector 62bec4b3f83ea61881bb526f6c3efcc17f1a8575 fix(compression): add recovery path to anti-thrash auto-compaction block 5a0f51325cd83e64efc015a1455e88c727ba10fe fix(agent): make dropped tool-call nudge pair ephemeral scaffolding 923704c7c243d4d0ff4008279eb95e3bfa48a64c fix(agent): move dropped tool-call recovery to the finalization chokepoint 63954d508c91e2e05f1d5b3f94dbea62c957e7c3 fix(agent): recover from dropped tool calls (finish_reason=tool_calls, empty array) 6a9340d40abc6582497a3eb8da6c78eba5b4e66e fix(agent): mark tool failures in the activity log (#69131) 182c09b80bdd71e2dd21d8421a158ffced8f3bc6 fix(agent): prevent agent hang after tool call completes 4582376cf375039cdf387a1538b7b491c779c6a8 fix: update heartbeat test stubs to accept workdir kwarg 8a2f5b7a578844087079e2498c471d42076f3089 refactor: simplify session cwd handling — pass cwd= to set_session_vars 0aa15c08dd59d4d9eec73f2879948341df7f3aaa fix: update test stub to accept workdir kwarg from salvaged PR #70548 91cf5448d820a522aae3367d7dde39b1108532ff fix: scope cron workdir to job session instead of process-global state (#69396) 214099d08de4ce279c9b9904d973ed834cb8dee9 chore: map contributor email for dhruvraajeev 81f60a0c84c12ab60b27ab625ee16436d911bfde fix(gateway): close readiness-probe SQLite connection deterministically 1d721a66f7fc63e5e05a9cd8412dce3fc366db5a fix(cron): close sqlite connections deterministically in execution ledger d10d3d7b422a92d95d27767dd6916685b2b81169 fix(gateway,tools,agent): close leaked SQLite connections in delivery, delegation, and verification ledgers dc6cb5c5008dc5cdb4d2c3e0a647c91baed824a8 fix(anthropic): keep replay content schema-valid when every block is blank 29f9cfeb4a3966e744ff63e6941264483fecbcc1 fix(anthropic): don't fall back to raw content when all blocks filtered c55d780d48e5d741ad9cfcbec0e3aa5bd365f71e fix(anthropic): filter blank text blocks in both normal and replay paths 6bc8d68ad7d752f0e29fa9e24a3c4847127a3b4a fix(codex): scope 24h retention to Bedrock Mantle 851b72b8f23acc636f9346c7538afd9b07b3a619 fix(codex): extend 24h cache retention to supported models f54fa1bcb7cb6946d8e88f812c787d46bdc4249d fix(codex): exclude models.github.ai from auxiliary cache retention 48049a1d31e2944756cec25703d6da3e58db52e8 fix(codex): skip auxiliary cache retention on Codex backend 339be21542c2a8ee2353ef1c5e4f3eea21d92809 fix(codex): send prompt_cache_retention 24h for the GPT-5.5 family 98470ae33b203b8a753b3205a839d9021c05513d fix(ssl): detect and repair a missing certifi cacert.pem via existing venv-repair infra 722bf5d51014705d2668ec1a09d10402d648514d fix(cron): preserve jobs.json ownership on root rewrite + surface failing-tick reason 939670cc4e83eb948a2c4a2b666a1356a0de4e29 docs(acp): document HERMES_ACP_SKIP_CONFIGURED_MCP for ACP hosts 366242e4794907193ac8f4bc196b6ac30e334bcd fix(acp): allow hosts to skip configured MCP startup 615a0d91419ce0e2058a0ae5f2250d7b5555c78e perf(acp): bound the cross-provider model inventory for ACP clients 33908ff9ff70251c1f3490850b3ca860cb464789 feat(acp): expose authenticated cross-provider model choices 431d2a628c8c03644749e4e5a6006f8b98d16a05 fix: break unbounded 401 retry loop in credential pool OAuth path 8b45a8b0d42b34eeca1e9fbf3b1da41a5808aee5 fix(gateway): deregister transient reload label after one-shot job + test ea94fc24ac2346b67e4d241ff285b63962367d44 chore(contributors): map webtecnica@users.noreply.github.com for PR #69500 salvage 2a32fe8914bc2c4a77e2ee5f762dd59582b5e3ea fix(macos): use launchctl submit instead of start_new_session for plist reload helper (#69098) b16e2be88f752efe6c56f8c3679a01744c652812 chore: map contributor akb4q 835de6f76461fb6d836706f521a3dbd04050e974 test(compaction): byte-pin every frozen prefix generation 8204b27618606fed8aa38dcae0b625047ec3860a fix(compaction): freeze pre-change SUMMARY_PREFIX generation, restore mutated entry b59cce91788b57ec17ce9b43c9cbe9d30b558f8f fix(compaction): strip proactive section headers from summary template 0fb0ba475dee759999fe665a7c59eedba7932be3 fix(windows): platform._syscmd_ver stub in bootstrap + PYTHONUTF8 in desktop backend env 8516324f84d631369ebc7cf05d9d16b7705150a9 fix(tools): utf-8 decode for STT/TTS command-provider popen_kwargs cc6e8fa75726b7b67dc6d5368aa57421bbdf9fa1 fix(gateway): extend the utf-8 file-I/O guard to google_chat + whatsapp 7b8a4d74f9352bd592b5a80c945b5a947d4ef957 fix(gateway): cover discord update-response utf-8 path (#37423) 09910bc3a5542f1d24057dd40c4de4fdc6880c95 fix(gateway): add utf-8 encoding to dead target registry 5b76ce169bc79dc077dd0b1aa70b126ef3c2cb30 fix(gateway): pass encoding="utf-8" to read_text/write_text in update path (#37423) cbb1457606ca3070bfc730570b30f8cdda4f16ab fix(mcp): use encoding_error_handler='replace' for stdio transport 7144eb4900be8a7e6bbdf67a0e6461b4a3b59b51 ci: poll review statuses from artifacts dynamically 18481742ee06032f18970eea77b43bb7e463dffc ci: add detailed logging to live comment poller 7cd48733db464471cf7da9501c12748ed9b570dc feat(api): backend-acknowledged session model lock with runtime routing baf9ac281f76f813b0cd0b2e02174ed249283b9a feat(skills): cover all Hermes browser pathways in har-derived-api-client bcfc928ff006108cbf70bab4433e3f3ad037de32 feat(skills): add har-derived-api-client optional skill 306c9f76617e733d939c6ff823d6c6c848af6715 feat(models): add anthropic/claude-opus-5 to OpenRouter and Nous Portal catalogs 58a7491ecd821990192ca612301fbfc37d175952 docs(monitoring): add fleet operations guide e3cd3a9cc1ca923e0b00268272eafffa48a2f6c8 test(wake): stub numpy in the fake-sherpa fixture for hermetic CI 5e11476024717641eec73c4cabc31fa18f77f1db docs(wake-word): sidebar entry, env-var reference row, voice-mode cross-link 2e2c77c30f7674d2c96456c745a0c949f611c377 fix(monitoring): normalize cron delivery outcomes 2a46acc9be6089dcc631a07b9ff452230ba417cd docs(monitoring): clarify bounded cron flush a65a647b04db1eaf6ccbc7ce4bebc09e81389acb fix(monitoring): correct cron operational signals efbf2fd79c0cbed2fe332430b86f6f2072ef84d4 feat(monitoring): add cron operational telemetry 9b098e7f78f16a9ded4fea5e7e32ea9a2109bd0c fix(monitoring): enrich gateway diagnostic scope 42bc6c862642b68afd26518bbe388e8da1248a24 fix(monitoring): keep diagnostics content-free 18b46645437fb44c828458fe02eb4a6aa0bd3076 fix(monitoring): drain terminal lifecycle events 4dc4f4302a318b3f6f361abd64b4f274a9fab915 chore(monitoring): align smoke and attribution metadata 73190cdbfe9948466823823ef5020d5056ab3634 fix(monitoring): complete production OTLP runtime 98a0260b0a10e79bfade47a4dd3434b0e5f666c9 fix(otel): identify Hermes resources safely 16e774f223372c4017fd0ce5abde21b5c2e9362c fix(monitoring): harden gateway health OTLP egress 87a15733c068ad4839e5b858236ac7272492fe85 fix(monitoring): address review — persist install_id, drop dead config, single redaction path 505d12f662ef447180b39be87c000c64f152705e refactor(monitoring): scope telemetry substrate to gateway health/diagnostics export fdb5ae012a848e4115a7ca6148ad4b3403448579 docs(telemetry): align observability docs with the trimmed schema edac3a7baef82bb3ccc658a1f828867261ad6b1e refactor(telemetry): cut dead schema; tests assert what's actually written 7c80b79bb01bbd3f14cf82f3bcfdd9453dd27e35 feat(telemetry): write tel_spans — reconstructable run -> calls trace 81a34156a56b0ecbe19d1b2e1b02ad06a3294a5d docs(telemetry): clarify reserved subagent-lineage hooks 24c86e160be2e0b6b0b73e2f020f31b4a89b40a6 fix(telemetry): aggregate requires local telemetry to be on 0d0549d83464b1f15cf763f626adade2522e7896 test(telemetry): end-to-end plugin dispatch coverage 72b7af73bd26e01abadf974929f3f17c8b99efb1 refactor(telemetry): drop "plane" terminology e829d03fec0c0fc4a1782d7d8ca006e4dd8814c8 refactor(telemetry): drop policy.resolve(); read config directly 3e28eaccded920f2f3db86593b0589aa9b662eea feat(telemetry): local-first telemetry & observability 7dd00bb47d8064f8a9400a35c7e04c3ceece1e57 fix(api_server): close divergence gaps from gateway/run.py 0f732cb3d6b11dc903ca4303ef2cabd99cbe0adc fix(cron): respect the platform-conditional decode design in _run_job_script + taskkill kwarg snapshot 804ce793dec893356465c1cd3deae4aae5e53e2b test: update kwarg-snapshot assertions for the utf-8 subprocess guard 477cd0941855c2165711d4e70b4e5a03111c1c09 chore: map stoltemberg@users.noreply.github.com -> Stoltemberg a5147331ea1924403e1968a476e1933069e5990c fix: repair sweep fallout — duplicate encoding kwargs, non-subprocess call sites, kwarg-snapshot tests ce2a4ac6c2ed269fd6c976d07a2e3ece654f8ec0 chore: map jinglun010@gmail.com -> jinglun010-cpu d4b867cf9fb8be7d46bf0825b23c64a17cd38313 fix(windows): sweep remaining unguarded text-mode subprocess sites codebase-wide 051217342b01123bd598a96cdfe21c4a115fe9a3 feat(linter): detect subprocess text=True without explicit encoding= db66119676fa4d5908266913d4c7597b8cbef3d0 fix: extend UTF-8 encoding to _op_version probe (#53428) a23115414a1e7810d4771d0d05970e46a53ed129 fix: add explicit UTF-8 encoding to _op_whoami subprocess call (#53428) c89481db5ec2400e936de6ac402c89e7a39cfe19 fix: add explicit UTF-8 encoding to all subprocess text=True calls (#53428) d460118a1dc185aa1369387cdc7b9594ffe81d81 fmt(js): `npm run fix` on merge (#70927) 819f39bcf19db7d8a2e5a94b934d59c9764ef0c9 chore(deps): bump ws from 7.5.10 to 7.5.13 in /website 0600ac2f77818618c80dc853fe4e763c0cd449fc feat(desktop): add Cron Blueprints to the GUI (#70066) 4a9447c726987856b0160d97717ddc78d8076d2b fix(api-server): expose model options inventory 78a343169cba2127a33cd0671a15c9250f19eba4 fmt(js): `npm run fix` on merge (#70914) fb8d824bcb7523808b6599425e0545eecc3d0190 Merge pull request #70907 from NousResearch/bb/desktop-first-run-remote d82dfb692406fed5792fbb639f7c7e4b4cbec2e9 feat(desktop): add Webhooks page for subscription CRUD (#69687) 7dd2b2dc7746621ec152107d3e7d8e2797ef6569 feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 6ab41598a369067e4b17567dcd9a8589b429c078 chore: fix contributor attribution for desktop PR 6ece52fc733352c3ad64f1b2d874ce1e4b220707 test: tighten spawn-rewrite assertions and add PTY-path coverage 753104e1bd33fb30d8cad23bd0f2b3b547212e49 test(fallback): cover xai-oauth → xai same-host same-model failover a9e7b321620fe9af308189ca1fa2d4ef8132906b fix(fallback): allow xai-oauth → xai failover on shared host/model 3070de19637da8868b6bd5d2f60f8d6008f2040f fix(tui_gateway): recover custom provider identity from the session's model name 45a408f41adc677194af146df1ec207e5a1067ce fix(gateway): deliver relay-backed homes after restart 6de7c0f7a71a5a9d24570a208d96220ed9a824d1 fix: use error code 4028 (4025 already taken by session.handoff) 75f61182fc1d2e489c6a2b978e9c5ea6af965e3e test(tui): cover empty truncate guard on prompt.submit 819e01c134f0d278cb00afff5bc7582f24e0eac2 fix(tui): refuse empty prompt.submit truncation without confirm 38c7722e3a67dcf8c27e09892e9b7269015486d8 tune(voice): calibrate sherpa sensitivity mapping from live TTS matrix f7e2c0e2e24394fe78951ce27727cdfbfbda6149 chore: add contributor email mapping for agent@hermes.dev -> webtecnica 7338309807ca84f7dd55a473f8d764c58866ad29 fix(telegram): prevent connect hang with retry watchdog and fresh app per attempt (#67498) d7512c8689a3d54f3423e426c289437df1a43126 fix: apply _rewrite_compound_background in spawn_local to prevent worker deadlock on server backgrounding 4a0b84ec0926effd29f2b692ae4256843eba167c fix(url_safety): harden proxy DNS delegation — literal IPs stay fail-closed + regression tests 931ca437ff2b8e29c3a8f8c0f91cec4329888270 fix(url_safety): allow DNS failure in proxy/sandbox environments c7690818033646a8b0fe86eb5b5ceb77aa019cb5 refactor: extract sync_credential_pool_entry_id helper 73c4b5a04511d26cabe9efdc87dd5ab5dc8dd87a fix(auth): stop stale-key credential recovery loops d51bd5fdc64fc2c812dd3727e55c9f56e01fe202 Merge pull request #70870 from NousResearch/bb/ar-rtl-locale a96f7c805bc0433ff6e2d952807de03d6d006b22 feat(i18n): add Arabic (ar) catalog for agent/CLI messages e39e3fb011c12b7dc0cfb441129ad785a13b752d feat(web): add Arabic (ar) locale with RTL support 5b6990e7a0567342b03bb76135242c877bea4690 feat(desktop): add Arabic (ar) locale with RTL support 9f384783e706ecb7805d2a147e11a0d4efe44445 fix(api): gate bare-model passthrough + route-alias model leak d66a82000c8b3729a01c9d0b92d424c3c2aa3733 feat(api): honor provider-aware request routing 97470134e9b6be6bb7986b11d13d72934c532765 chore(deps): bump httplib2 from 0.31.2 to 0.32.0 233e7ded3469b6e2f4d56a0e1c6def76a94de563 chore(deps): bump postcss from 8.5.15 to 8.5.22 1d96f00d7a39b7c525fa5392dec8264482cb78a7 feat(voice): route wake phrases to their profile — "hey " wakes that profile 3684ef9ef0ca6ead2de0eeb7eeeb641e6a489a7e fix(lint): explicit utf-8 encoding on the sherpa keywords tempfile f9dc0cb8989084bd7d08fb015940a9809fa4cb25 feat(tui): /wake on|off|status slash command c9074c5ce100e5857a728265415a2bc74674dc78 feat(desktop): wake-word toggle button in the composer bee51b2a1fa72f286ba7d161589f27f2f45eb2ec feat(voice): open-vocabulary wake phrases via sherpa-onnx KWS bde41202efbd7e049bdd4eb089b45ee598ebb2bf chore: map contributor omid3098@gmail.com -> omid3098 af75b45de976a76fb9a9018cd74a945e5db7ab91 feat(voice): bundle the trained "hey hermes" model as the out-of-the-box default 7a26e8a95beee6e9148ecbc527143616ef5019ce fix(wake-word): enforce single-owner lifecycle c2db9ef60c9bef76dc0ebbd52164414f4c7cda01 fix(ci): sync uv.lock and repair wake-word docs MDX cc1aa1fd93f95d7c85abf06aa061a1d622c377ad fix(voice): honor wake_word.start_new_session on every surface f48cfbe50a8db2c630c216ae38f15d728bc32744 chore(voice): tidy wake_word — drop dead SURFACES, unused np, stale docstring 10ca000d5c3439ee1ad3cbe98337ccd90eae01fd fix(voice): stop wake re-fire loop and empty-transcript error spam b4f53aaa9cce6a98bfbad2bd172fc51905e6138d fix(desktop): start voice on wake via a latched store, not a window event f09f22bd161a445070595d62853a9d362b3e5850 fix(desktop): re-arm wake detector after a manual voice end f3223efc0f000d183a2d9c1edebcef62a2cd732b fix(desktop): deliver wake.detected over the websocket, not stdio a13a6d0d5014ff4ad0ab727473fcc894f96353d8 fix(desktop): handle wake.detected on the canonical event pipeline bbfb6d725921f128800989333bff26db8070e916 chore(voice): log wake-word lifecycle at INFO for diagnosability 821effc9dad13de0ff90348427a64624778d2049 feat(desktop): full back-and-forth voice on "Hey Hermes" wake 20800aefc49ae5c190907a30bf00d4dd58a681f6 feat(voice): extend "Hey Hermes" wake word to TUI + desktop GUI 352d019c305d595020e3fb813ada72038577e6cf feat(voice): add "Hey Hermes" wake word to start a hands-free session 077e41330d64bcdd8e460fce692a5b13d00b868e test(docker): update network-reuse harness fake ps output for egress-aware 3-field probe 397e9fc1e46e594d9d021a9061095e1b109faabb Reapply "Merge pull request #30179 from NousResearch/feat/iron-proxy" ead23aadb9a8a56e082c7886977bbd37af132e3a fix(windows): widen utf-8 subprocess decode guard to sibling desktop-backend sites a214f3026d6148dbad07cad789355dba5f94fc28 fix: address review — add regression test, revert cosmetic churn, cross-link #61595 51fcf055dfef8f5daa828bc4575f6c2cd040ce1a fix: harden tui_gateway subprocess reads against Windows locale UnicodeDecodeError (#53137) 431f3803eddd6495513ef0c5ba453af80a06c135 fmt(js): `npm run fix` on merge (#70845) 951d606730faf81d09435358825f039d4c319b45 Merge pull request #70822 from NousResearch/bb/session-date-dividers 4cd4b3e8a22f0d323d662658212f8c8f42272058 test(gateway): account for the auto-archive construction-time sync escape 107843877f43d52fe2f308582eaee6e7bd872b55 test(sessions): use mock.patch for the config gate, matching file idiom 99ffea6d00a0258912bddff4e40da6c7b67ca7e0 feat(desktop): auto-archive toggle + mirror sidebar pins to the backend f16b80362cd4b10d776fbd282d32f366c9ce310e feat(sessions): opt-in auto-archive of stale sessions + durable pin flag c416d9ae0a302c5778aa2ae52c2c33a4591dae62 fix(desktop): let the pinned sidebar section grow to fit all pins ed6ec0c1751d0eba0d05248937292c6919d19ca5 feat(desktop): date dividers in the sessions sidebar 55ef425d0c3967022cb54093112e638c5c3f9e01 fix(skills): sync bundled + misc CLI skills to current upstream cae5c819565f1a5716967d82974aaa0b84cc6d6a docs(design-md): sync skill with @google/design.md CLI 0.3.0 9a894dae5f128195a5dc96985d620f9ca6ffb270 fix(skills): sync coding-agent CLI skills to current flags/packages 1c646499b61be77d727776a779730f5010eab7a2 fix(skills): sync mlops training/model-infra skills to current APIs 8a2b288462cdbbef3843811e2626216567e0fe1e fix(skills): sync mlops structured-output/vectordb skills to current APIs 80e575dfba3b4443383d5ea25d3f22933b178313 Merge pull request #70604 from NousResearch/bb/profile-routing-super 73ce7f9bed2c12bd3f644eb897b5052471d5ceb6 fix(desktop): make WSLg window-control buttons clickable 29dd62149813ecda1eb4e396b774149258cdd7b4 fix(tui_gateway): bind the branched agent to the parent profile's home + state.db cdc8d2e3d7f64fe1e9f4a93e898eadc2b1bdd1f8 fix(desktop): unsquish WSLg window controls, harden GPU fallback 8611b69dad0a3cecd09f3b31cdce0a5388605bd3 fix(skills): scope 60-char description enforcement to the create path 0a262b7dbf10017b820d90c1f55c06189265d7ce fix(tools): enforce 60-char description limit for skills 9457a901986897e070cef4bb1040f29a076b836b docs(skills): sync generated pages + zh-Hans mirrors for related_skills fixes 73b01fb7b64b96ef2173f177f645d49fd315c2e6 docs(skills): fix remaining 13 broken related_skills refs repo-wide 26685a9f343ec5ba86270bf00e48b3cd6109d55c docs(skills): fix broken related_skills references (#37338) a98fed2470f70ffabaf7b63ff4190c73b9afce8a docs(skills): update pages, catalogs, sidebar for skill dir renames 503da4e3085ebb7106652864cdd68d6eee080eaf fix(skills): align skill directory names with frontmatter name c0170311c90f2e4ac819e867dfa0dd5a33845b9d fix(honcho): default device-code poll interval to 5s when AS omits it 2aa359ea70bc260e2a539cb651d988c1c7c26c7a feat(honcho): add OAuth device-code login (RFC 8628) for headless environments 68df6d3d50ad1e3121bb8005e0ce4ac1020cde3d fix(desktop): WSLg window controls + GPU crash-loop fallback baae55bb3246f3e4b4073eb92616d003046bb0f5 fix(relay): per-platform capability descriptors for multi-platform gateways a61183b56fdb45b9d2a0f2f6b8482e665ccf702f fix(cron): scope hermes_home override per-profile in multiplex ticker 6c98eb2d45c09129f72e78b5786ed42816407903 fix(cron): tick every served profile's cron store under multiplex_profiles (#69377) 7e3acd02d925b25fcf5fb5afd0076954bb6fc769 fix(memory-setup): sanitize .env values in the core writer too 8f0da78f84e78f4038773deb994a2138de89673e fix(openviking): cool down failed refreshes and publish conn identity atomically 1cfe23c6e4d5c71626a387479a47491789158225 fix(openviking): serialize client refresh state cf0bd5dd4c53685970d42deb4b606cf528b010ec fix(openviking): stop pending runtime start on shutdown c4d0f1c1d6b6bbe57d852b5d4ee13bccd1b43a80 fix(openviking): serialize local runtime recovery starts 60a141594c57489779d2905f5a6f4d87c8dffdc3 fix(openviking): start local runtime after reload e9a7c1889005b4a93113c09f0f663f1b0fa52369 fix(memory): honor disabled toolsets for provider tools 8fdc9c58e0e1530153f8751d835387405135ab86 fix(openviking): use readonly config loader aa4f9f8c44364a9cac7e27d74da47855af210575 chore(release): map wgd753 contributor email 5ea3abc3b36586254d2fd7159e84d29f34d890f9 fix(openviking): match tenant-header errors structurally instead of hard-coding strings 82a383d9709c5535b31eb90d8dd7c1a280eda385 test(openviking): cover reconnect after startup health failure 21a634b98a593040919fd50e1289bc1c9c3da5ff test(openviking): keep root tenant errors out of trusted retry 36f01d2e54435317282dfad1dfc0c7fc72d3115b fix(openviking): sanitize splitline env separators 35d3ade3aa07aae415211b579887934ae0d0a052 chore(release): map koshaji contributor email d3520944c7bccfa8f6167554483f09df0707e542 fix(openviking): join runtime-autostart thread on shutdown (SIGABRT-at-exit) 76181217836f9969ecafe707c9fff7b2bbbd08eb fix(openviking): refresh client from env on every access 9291b786b425532d41a1f2dfad5a9b2953cdc0d6 fix(openviking): sanitize embedded newlines when writing .env secrets 579d149f0b394f8fe93801c2c745eb502091eab7 feat(webhooks): create Discord thread per event e9a243ef785b93b675639f51a72fe03aaa7934aa fix(state): inherit and stamp profile_name across rotation and branch children 40a80487c40e7a013b209eecbe39a82a469e6103 fix(desktop): branch a chat on its parent's owning profile b9d2eb7f43d63701a1fa78dc87061247b73b1c16 fix(tui_gateway): honor params.profile for session.* state.db access 46c7a4076fc543bdc98de12b81c2c85ef9c864b9 fix(skills): accuracy + concision pass over the hermes-agent hub references 23476207bc947d52bb48a0a3cfd1d6a3770b3ece feat(moa): default advisor fanout to user_turn — the cheapest cadence b0ef72a8a0a20fb9dd85d1e74b85edabc0c80813 docs(skills): bring 69 skill descriptions under the 60-char authoring budget 826ffdd75e76414ab089689b0b0e88fda5309dee chore: add contributor mapping for AlanBurningsuit bc744d30e0a24510dbb925c2ab9ead258a222cf9 docs: document 57-char system prompt truncation in authoring guide and curator accbf4d912f71f0ddd810d40a6857099df96361b feat: show system_prompt_preview when skill description exceeds prompt limit 5eb772111d9f4552abc1d6282804593fc2838bb1 refactor: extract SKILL_PROMPT_DESC_LIMIT constant and normalize description helpers 6441b05888fded3fc223db2893322974f5ec9db3 fix(skills): keep xurl SKILL self-contained; move x_search routing to gated surfaces b9b100da112e150da9ac0c4e0338c940e04b1224 docs(xai): clarify x_search vs xurl routing without schema cross-refs b718725121496d9839810e515fecff0a88f50d55 fix(skills): move computer-use skill into the autonomous-ai-agents category a56845bd8c97674e0d11e048b09a16ac96c746c1 fix(skills): add trailing periods to pinecone descriptions per authoring standard 2a1ee322edba79f564ba69d109e5c7a1823258d6 chore: add contributor mapping for immuhammadfurqan 2978a9e9c21d9b649c9d374f64c2035c0752d15a fix(skills): rename pinecone-research, shorten descriptions, add scripts + tests b29ee6a6501eb3568d943ce760f271fd93bd5ba9 test(desktop): give the auto-compaction E2E real headroom over threshold_tokens a0d2ebaffd1041cacacb61bd02a098465802fc79 chore(contributors): map aakash@plasticlabs.ai -> akattelu ef6ce56cad1e2e156b50e6effe6c785a2517e5c2 fix(cron): reconcile external provider after a claimed direct run (#70479) 3910ab28c0892fcf846fc61318d2fd15689eddf1 feat(skills): update simplify-code to track upstream /simplify evolution (4th altitude reviewer, inline fallback) 25f81b36a479bc8b5932292f390da834cabd5e18 docs(skills): clarify xurl search returns raw, engageable posts df1464ef95f344ed3470cf9b8e15d3b07304f352 docs(jupyter-notebook): mirror new zmq/xsrf pitfalls to docs pages a4fa699a820f6ce5643dab2c3c499179d9ee9184 docs(jupyter-live-kernel): document zmq transport fallback and disable_check_xsrf pitfalls 9a4d1a013078367249ea6b64e858aa35e08f18e4 refactor(skills): move yuanbao to optional-skills 0728f21613554394a7fcd70ab4168bc4151bf8a6 docs(skills): sharpen nano-pdf description to contrast with pdf skill 832d691627b4f581c6f1394a5cd638834d52e004 refactor(skills): move segment-anything to optional-skills ba9277cc3e3173771bea06dfbb4f5781a8da4ee1 refactor(skills): move heartmula + audiocraft to optional-skills/creative e3d524b482d7111811a884b69a25d3b1f2e87831 refactor(skills): restructure hermes-agent into a hub + absorb themes, desktop-plugins, tui-widgets, petdex d4b61650186d5eaf4eea2d5e44d976e405cb458a fix(skills): move dogfood skill into the software-development category b55bb2cd109b9fe5b24a96007cf8bd62fc126ec8 docs(context-engine): scope select_context/on_turn_complete — replace-needs only, MemoryProvider for observation-only, cache-stability guidance 13fe08d7e939d8b16e976733471f981995e3a844 fix(context-engine): short-circuit the inherited no-op select_context before any per-request work 56e00f4ca15259de4ab23c76e2d7c66a2aeb175d docs+test(context-engine): sync public guide coverage note; pin finalization-seam observation contract 5f65f0b0f864e04460b774c3959350d983b68950 fix(context-engine): snapshot select_context read-only inputs; scope on_turn_complete coverage doc 915942935d88a272fc8c60786bf18385a7b71f8a fix(context-engine): fail open on empty select_context() result + doc public hooks 71220cdf5b7ea75f5eb76e4c3ed0c462aa50f1b8 docs+test(context-engine): document select_context ordering/cache contract; add cache-stability + downstream-sanitizer tests 589cbafb87d3d7761876bc16a38e21f5b3de7ded feat(context-engine): forward real usage to on_turn_complete() bb9ef9d72c0729b8c4481360b40f07fea28dcd74 feat(context-engine): add on_turn_complete() observation hook dec464c35141a59b8742c02b4f35553c3dd3cdaa feat(context-engine): add select_context() per-turn selection hook 4025329ac4f733b72df50e3b05cc4fda93a43904 feat(gateway): opt-in compression progress notices via compression.progress_notices (#52995) (#70457) a7a696ba59e0838a81351859abb39fb8484d4973 fmt(js): `npm run fix` on merge (#70455) 78598d091a8fb18a0b9e803f0222642f3016bbb5 feat(skills): org-skill namespace — token-gated discovery, fail-loud collisions, provenance (M2) 7b65073dc919c9a930315b78f57520c0d772eed3 fix(moa): tolerate SDK-shaped tool_call entries in _render_tool_calls 975eb3a365fa9b7384994fff61cac1b45d02fa6a fix(moa): trim reference messages to fit each model's context window 55f38262241ea389f42c702f42c6e8b33b65fd42 fix(moa): keep real accounting for interrupted-but-billed references; don't cache interrupted results 68cd7557311f7d0d1a16e9b69082fde5cdda0c9e fix(moa): allow a user interrupt to abort the reference fan-out wait 62c2b299a316fcc0f400bca22710d52e6acae1b6 fix(moa): act aggregator-alone on the facade path when all references fail f0ed77b627773b76af545bcb44ee0e8e7df4b76f fix(moa): skip aggregator synthesis when all references fail d3fc27bbf89145c44f3ae486013263ece4d1a9cf fix(moa): make reference_timeout default inherit auxiliary config; filter recursion-guard skips 223881e492dcbdeb560476cd52cb40afe6dfa686 fix(dashboard): reject invalid MoA controls ccdf171bcd8d695e30c1136140901ebfc909ed7f fix(moa): contain failed reference details 3ef52292355227fd5f9811a80c9a8f55f0ed2dd4 chore(contributors): map liuhao1024, robbyczgw-cla, SquabbyZ emails 3d693ae034ebbe861c98ddd8f1c45d89853bbf85 chore(moa): add trailing newline to reference-prompt test file 6afbb33af1ed795f6b91693910e1aa71ff780be8 fix(moa): add explicit warnings to reference prompt against claiming tool execution 3dfe712384f6291c017d3f01dbd1b9560c2f3385 fix(moa): scope quiet relay to machine-readable CLI 2487dea9cea6c49cca2e9bdb52dcb366050a4037 refactor(skills): move jupyter-live-kernel to optional-skills as jupyter-notebook 0b17d4d71e1ad94aa8d3d9ae3172e031ab42860a fix(windows): re-fit env_probe console suppression to the temp-file _run + add no-window tests (#67690 follow-up) 5c5960d9f93ad4ddb3abb224ef1a2cb2faed0649 fix(windows): suppress console window flashes in env probes, lazy installs, and platform.win32_ver() 385a0655e5579ee1d4c842ccc6b407cef85f44bf test(moa): tolerate enabled flag in slot-shape assertions after cross-cluster rebase 513d302ed9e192050565e1fd211c60e6c5baa661 test(web_server): update MoA slot-shape assertions for per-advisor enabled flag 280c4dce7030ba3f12623d97631f4fcfe884bd35 test(moa): round-trip regression for per-slot reasoning_effort + enabled ca294d3e62eddd3280abeeff51e18508450aa3cc feat(moa): add reference model toggles ad6a2ae401e4cfa67d4fb558a88de61311410f6d feat(tui,desktop): surface MoA fan-out progress from moa.progress/moa.phase 89e6f4c989aef5b38af8583c37324486cd674085 feat(agent): add MOA progress indicator (#59546) 6cbb8cca9438c24812acd2ef218d1002c49c985b fix(desktop): add MoA preset enabled toggle d7fbd13997c7ceb73fa31934abc76a0529f6da98 fix(tui): fix mount-collapse and live-progress gating for MoA reference panels 07a732c2e5b4537c1029bd30267262890764c32f fix(tui): keep MoA reference blocks visible when the thinking section is hidden 43be8d1dd91640e52c813b600803ea76b9b2b749 fix(desktop): accumulate MoA reference reasoning blocks instead of replacing fbf04ae079b7cfc14a96903bcfffeb02fc52813d style(desktop): apply eslint/prettier conventions to find-git-bash module 6c2c866a9ae3a20ee5e7adcd3cc6bf6778b28a58 fix(desktop): join Windows bash candidates with path.win32 in find-git-bash ebf5426b1a42aa5c3816652ca84ff0e1245ec9e1 chore: map contributor email for seamusmore (PR #64339 salvage) 6b278eeccc496fbf46866c362d79bc7ef9f379b8 fix(desktop): respect HERMES_GIT_BASH_PATH in findGitBash() 4276fe8ded72b63b4b849d253773ad02a96ba5dd test(windows): pin hide-flags contract for LSP client spawn and npm/go installers d6ffe3d7677525a9de270628e85b2bf7ca35b06e fix(windows): hide console flashes from LSP server spawn and installer subprocesses 30bb55588fc05dc2afea9fdeef8d8f5fe016cb72 fix(gateway): retry detached restart watcher without breakaway f7b90e6f80dd1fe451e8fe309b7aca9650f39753 feat(moa): add privacy redaction filter with display/full modes 850f576f3d3abb7ab45ed633fc5b838d8d5c671e feat(moa): add every_n fanout cadence with cached-guidance reuse 74a56b76b08bccc4b4a85076af15e2c176ab5542 test(moa): regression for aggregator-model thought_signature resolution (#66212) 16950a4568715c9439f217a67533fab7d4b8643f fix(moa): normalize Copilot aliases + carry x-initiator through retry rebuilds (#60293) 4c66307c360838756115fa0442df93fc417cb975 fix(moa): pass Copilot initiator header to advisors 0749cac7a13740eaf0173faf722a10221d025b81 fix(moa): share facade factory so restore/recover keep reference relay (#53802) 55011878472f00ee804f2a954cf0a1587d9b5295 fix(moa): restore virtual runtime after fallback 8d14e19f9aba3754409d0c461c2bbeac33b45a9a fix(agent): close MoA stream on interrupt 8d119832b4f1f02ade9f72484ff48639d436af50 fix(gemini): emit thoughtSignature sentinel for cross-provider tool_calls in native adapter f65d105cbb533a241f152165e4ea6b85ed8d3264 fix(agent): preserve Gemini thought_signature in MoA aggregator mode b21e322702f8e1adc0d7e7ad1ecf057951c763ff fix(tools): normalize Unicode space family and minus sign in patch fuzzy matching 372e94b49a01735f4e666ed10b93aafc84765c4f fix(errors): classify throttle messages before token-overflow patterns; add new overflow shapes d0d116be2e038a57cf5ec34979c767f1f8d1fbc4 fix: getattr-guard min_tail_user_messages for __new__ test doubles d43cc2ca80c9f6e332eccd67dc8724224f64ee3d fix(compress): gate N-user tail guarantee to actionable turns, behavior-preserving default a9c868225e32c1e67dd7fef8aa0305c775eff373 feat(compress): preserve recent N user messages during context compression 69365109b3a134620424b25a67fedb1d0cbaaaef fix(compression): mark raw skill_view bodies summarized away, not only pre-pruned rows 28f73d32e97d897cb24b1c0ec6daeb7d7a167d9d test(compression): ghost-skill defense suite — marker round-trip, protected prune, real-compress survival 44c67fca91252d0290feb1e47888825b4cbb9cba fix(compression): ghost-skill defense — canonical marker constant, protected-skill prune guard, deterministic marker survival 6816f2f02c12e787d6d5f0c7ebcb1dda962157a7 fix(P1+P2): marker names skill_view(name='X') + DEDUP rule for repeated [SKILL_PRUNED] markers 5faef80a43ccd17f619eb603ae7542d5c3cafc68 fix: ghost skill P0/P1 mitigation - [SKILL_PRUNED] marker + safety rule 9b868f6f677f5153b4bf348bd760b273270967fa chore: contributor email mappings for wen0531 and iniak df051c17cc916f741803948dcd6c64705b821b3f fix(vertex): surface vertex in the /model picker — credential gate + curated model list 3ea35d671106e586b51aa17ad0f4d162467b92a0 fix(vertex,moa): register vertex in PROVIDER_REGISTRY and HERMES_OVERLAYS a7d78ad685edd444c71e089c98169586f6304986 fix: filter invalid MoA slot providers d4c6ae7b1154b41212d41c2342749ea1b831448b fix(moa): preserve save_traces/trace_dir on GUI config save 85b2d52b71fb6b30880b4e2228bbb8876ac2ce99 test(moa): regression tests for JSON-string reference_models parsing (follow-up to #59497) 3638abfbf9c311d78814cd45206eeef729e1f80f fix(moa): parse JSON string reference_models in _normalize_preset c1f5f0f9115ef779bf08cd2de70326a5ce4877cf fix(doctor): recognise 'moa' as a valid internal provider d661886c90a7f6dcb0e452b6535326aa8c68a918 test(cli): assert HermesCLI.__init__ wires moa: to the moa provider 8d72845399a84f4b1660142c3d5047d49d3baec6 fix(cli): resolve moa: model in non-interactive mode b7a05b6b6f509d14f708a2fe7b7c1d3559396ef6 fix: re-anchor summary-input bound to current main + bound iterative path 80ece3867b8b53324c18e5ab8918f377df64f661 fix: bound compression summary input fa4800414cf7d6d28a535315a67858bfd6e30db3 feat(compression): prompt-cache reclaim gate + hardened wiring for proactive prune cb481e2f2b78c00ec4968b6171aa7e29c189e92c feat(compression): proactive tool-result pruning for large-window models 66fdcfa3bd5aa82173c43d55fa4b5db29af42fe7 fix: harden salvaged preflight display rollback for test-double density 17a81ac89e6399ffcab9853d2edb983ccb46bed4 fix(context_compression): roll back interrupted preflight state pollution 6a8d31856fa8e14350157c2b051790839602842d chore: map kinsonnee@gmail.com -> WOLIKIMCHENG for #59526 salvage 34678d2f2edd46cf930b8d3f6164133e79995eb4 fix(compression): skip empty post-handoff summary windows eebc2286fcdf7339653d130dd7914c295f8d7c2c fix(gateway): retry-next-message semantics for compression_deferred + regression suite 056a40aa4d070f414cdf6dad5ae3513c1322a4e2 fix(agent): defer turns during compression lock contention instead of exhausting fdefb2d38ca8fd27f4adf23ebd741b1c9fdb44d2 fix(compression): prefer psutil.pid_exists for lease liveness probe; add same-pid self-reclaim guard 6ab8428b88d92d4dcb3242ed1d783429ff60c33e fix(compression): keep PID probing POSIX-only 8cd49c496fe7d6f6cfd82bfb623f84308d437015 fix(compression): reclaim locks from dead processes 69339aab9106a3d83c289e4677e57f03343de113 fix(compaction): skip compression when it can't reduce tokens bc7212cf93020f1571c09b7ec35ee2b331b4857f feat(moa): per-reference-model max_tokens override ead9d7b256390876a2170e2751365fdf2fb6cc5f test: cover gemini-native max_tokens forwarding in _build_call_kwargs 4ee74fa5dfb3369da7c6fe1f6448b023ba89f581 fix: forward max_tokens to gemini-native so MoA reference cap applies 3dce1b967f336a46dcdf7462863943ed9acbe222 fix(auxiliary): scope max_tokens to moa_reference only (not aggregator) 289fad1868fd6bfa368fef93b2577273a5ffe94a fix(auxiliary): thread task=task through _build_call_kwargs in fallback helpers 3616ce006aeb85190cfe5bfc5b8df731422e535f fix: use auxiliary_max_tokens_param for Copilot GPT-5 compat 32a4faa2d5b0eb66a6c85bf9be6436c5afc76318 fix(auxiliary): honor max_tokens for MoA reference/aggregator tasks cc1725cbe50feef6d452bddc42784effae4373e5 fix(moa): stop reference_max_tokens from also capping the aggregator 1dfbc128fa25dc764323745eb7320c7dd1be3192 Merge remote-tracking branch 'origin/main' into feat/hermes-relay-shared-metrics 245fb964e2f52568c2d902008b71527c5c8a8321 chore(deps-dev): bump tar from 7.5.17 to 7.5.21 b1bdc93951c095755e7975f50c1535c73cdf8736 chore(deps): bump body-parser in /scripts/whatsapp-bridge 5be99b6fce16e7d5304196bc9faf3f0cdfc3031f ci(js-tests): split check into parallel matrix shards per workspace (#70252) 502e4d63a22dc3659b3d1adfb83e6e2b4710c89a perf(relay): avoid disabled mark initialization 5a5743188b8a6bae0550d068dad131709cb68f16 fix(relay): close failed chat streams eagerly a3ef27ab70b4d742be95ae4aae0826a156dc0339 fix(relay): preserve intentional request removals 06ed41aa1f4fdd4e319e58e55897a8cf7c6c8a00 fix(relay): preserve managed cancellation signals fb1e417367ce1203985b9408d3f321d8ba7299bb Merge remote-tracking branch 'origin/main' into merge/relay-metrics-upstream-20260723 ad6fb26681b7ae134741366392e9c6ebf10b74ee fix(relay): fence bypassed stream chunks 5e1b68ce163cbff0b859a04efed1c7706dbba0f8 test(telemetry): mock profile consent source d2e179c54f5495457a7fe7f6409fb6a5dd712172 test(lifecycle): document finalize coverage owner 6fa96916a8eb981365668339c1fb1e419a357c03 docs(relay): disclose managed data boundary 43d994986ee5f20ad267d9798f687dad937e0345 fix(telemetry): keep consent profile-owned bba63d87862fbc8ad668a94f9e704ee72a088262 fix(telemetry): prune expired local metrics e1a6becf862db7050c41b4ecd123b9992785386c docs(telemetry): disclose local profile identity 31387a4621107ebf0e0928f5bb40c16b38be0850 test(tools): verify hook ownership behaviorally 4788994bd27d5f1f5d5687d9f3e8815389c41395 fix(relay): preserve managed callback context e9b5e4c8f4e1b52f25ee7a2cf062f924b278cc7a fix(relay): protect turn initialization cleanup 937fffcfecc5b48c62d7a44e0f3a2ead168e3e89 fix(smoke): resolve Hermes across environments 1500ce163c42ca0eff01450e0581f860d7d5df59 fix(relay): normalize rewritten LLM responses a54e52aeb119ebb72543ef44b70fbb5ee26c2dcb fix(tools): preserve sequential middleware trace 0be07b0553a7fd59bfd95038b0bcc20b7cf85152 fix(middleware): hide Relay control flag 2378bd4e4c2697e723ab914102620600423b9b53 fix(tools): prevent duplicate managed dispatch ea171c947a30103f57f68aa98e0777f6e641a831 perf(relay): bypass inactive tool interception 4c9628eab5393e7561bbd2c1faaa1765fb14a5f9 fix(anthropic): coerce empty/whitespace-only text blocks on the request path (#69512) (#69517) 36185bf2e2f6aa6b968fd8ef61f4c873ade1a3eb feat(telemetry): expose shared metrics setup 591ba267d263d98bda05f9b931e0b0fba458f595 fix(relay): release session lock before callbacks e862099dffb26e6b31bcc12a65194ecca035b7b2 fix(relay): merge Anthropic stream usage c789bdd38a35aa332b3da0e2f44f4fb01a9d3583 fix(relay): close managed provider streams f370af68163e0bcbce9c8f36411f21f8ddd1b66a fix(codex): stop draining interrupted streams c0c0b4e6d9a9f92702cdbfeb3b81d0e31e6fb814 test(desktop): cover post-compression queueing 9dfe6901256fd78faea769e3121be3998cc4f093 fix(relay): preserve provider request extensions 053f162f940e584ab3fd5a4e07279bee5830646d fmt(js): `npm run fix` on merge (#70291) a6fbff1d7ecee0e9f8dfeb12f6ef9ae0ef9f469c fix(relay): retain active child sessions 398a8ca580400c3d8b997d345171f9e8a80b570c fix(tools): serialize concurrent approvals c16f86dc4c2570b61578fda0f0128b71ed385eee fix(relay): serialize rewritten tool results 53bdcacf17ddb7483633013e76697672fb3106e0 fix(desktop): stop assistant reply rendering twice after a tool-call turn (#70232) 1c6a96032c6dc946d07250f7848fdcac1f730016 fix(relay): preserve successful managed results 1ffeaf226c7c4d0cd716f42cfd50aad12b4b151d test(relay): skip native suites without binding 164c9dfe49b2008746ed4e2b996378c8990f32ef feat(gateway): generate desktop REST contracts a1c30df6542c9b03c2c73fe75f30407008b8b56a fix(ci): generate contracts in all frontend build paths 2cdfe35429e5c37d705b681dbcbdd6820bc6de8a feat(gateway): generate shared TypeScript contracts 75afaf46da8359b54e9a1754608a5b37c7472cb7 test(gateway): use valid API server key in env override test (#70274) 0842fdbb11eddfe250549c8505d6871571e14cbe test(desktop): cover interrupted turn persistence c4f5a45d5d9903998fb318ac6f3c5e6623e60445 fix(gateway): tolerate bare GatewayRunner instances in the ignored-channel guard 66513768c1a59370f729254121de083840bd6259 chore: map contributor emails for mwbrooks and replygirl d9fe008db8eb315174b039849454c5008e04e568 fix(slack): prefer live send adapter and try multi-workspace tokens individually 8685fea0ce33cbf191c15ba8f66105134b7d9d8b fix(slack): resolve channel IDs to human-readable names da131aef3af079ed8123c68fc4fd248437113394 feat(slack): bridge slack.ignored_channels through the YAML→env config path 0a5d8a16fcc7bd4e196bf4ae8c2d083c9c54978c feat(slack): support long app descriptions in the manifest generator 805c22c83675a72b4e211d1cff939f1774da7355 fix(streaming): add Slack streaming=false default to match Discord 2946805299e1e471df5fa68afe50c5bc50b7bade feat(slack): set HermesAgent User-Agent on slack-bolt client c5b62fdbae4c7d89cfb8a2b576327020de6da190 fix(gateway): guard chained .get() against None intermediate values 241bc112e85e22c4d6410e5659ecacc546ef6708 fix(platforms): clear home channel when setup prompt left blank ee62aab1a76ab6e543e58583e33f33737b83ef93 fix(slack): honor disable_dms setting f8f5ce7da5bea17f6ace6aa42e32e8c1a49676c8 fix(slack): honor ignored channels before gateway dispatch 543941f70974d5879decdef6aa0f29341001bcad fix(slack): tolerate bare adapter instances in _remember_channel_team ambiguity map 5ee1c426def45c715b1ba3c17460fcb422c8157f chore: map contributor emails for C9 salvage (jordanhubbard, trac3r00, benjamin2026-dot) 9439f117174ada1d80af4345105ea6a83f996267 test(slack): pin download-token workspace routing (#59742) ca8aee87e8162d7fe2c757c08f164d6cabe59a2b fix(slack): route file downloads to the owning workspace via URL-embedded team id c1c991ae9e5b86d7f816fcf188467657c3c3def3 fix(gateway): unify legacy-Slack-key recovery on the claim-once path 06be0e69b6caa29a5bd6d8effdc64d682fd9d591 fix(gateway): namespace Slack sessions by workspace ed67f9aacccf8deaccf36a40fa8be129774e769a test(slack): adapt main's marker-mechanism tests to workspace-scoped markers a60b00e12d0a70523d47a842321c07e0deae176c fix(slack): isolate workspace-local routing f50c3d904c5befe087318c7022c1bd25922a65d9 fix(delegation): persist origin_session_id in durable dispatch records 0796a981d7f7c38b6fbb065470671918773db70a fix(api_server): bind chat_id (raw session id) on /v1/runs 2cc0ff44b6a6fdcc0d17dfcaa051c12f7424d8a8 fix(kanban): advance notify cursor only after a successful wake self-post 246eacea7b2baab5db55fecc5d06dbd4ae23f652 fix(gateway): deliver kanban/delegate wake-ups to api_server sessions 185b08a2eb2c0772c9465b8b34c6f0295df216a0 chore: add contributor mapping for elphamale cd6fb2b167bb4ffa6fc9483ff7edd31ae582a05a fix(prompt): scope api_server MEDIA: hint to actual interception behavior 08abc5eba8b64659c8eae0d06b5dd6ce040ee4b4 fix(prompt): forbid MEDIA: tags in the api_server platform hint 25b3cd2ceded6998eb5586777a8941b79830fc13 fix(desktop): i18n the gateway auth error summary + clean regex char classes 32f7c5afaff4f4ac6c6b13cfe026df61b6296941 fix(gateway): distinguish gateway auth 401 from provider API key errors 6ced760a3db3bc8c5d57d35e482202f62da0fbf8 test(gateway): cover gateway.api_server YAML discovery + extra bridge; docs: document config.yaml support 53e64359080a3e322d0fe0923710ace873da759f fix(gateway): parse gateway.api_server YAML config section (#66630) 089f09fa5f7edec0de9a4f5269c0ce61ba5edbce fix(api_server): mark rejected API_SERVER_KEY as non-retryable fatal error 9e4b89857a0a8db009695f4349fb73aa36b203b2 fix(gateway): require usable API_SERVER_KEY to enroll the api_server platform at load time 1f4550460990799cd450b4dda19bd5a7871daf74 chore(contributors): map 2001Y machine-local email 80dcff8458fdc81a53321ce532e8c870ce06e1c3 chore: map C11 salvage contributor emails + fixture kwarg fix eaa35ae68ffad153b63eddee95208f4af71af6ec fix(gateway): balance code fences on every remaining chunk-split path c934c533db35ecc50833f2474c49c293a460ca94 feat(slack): opt-in Block Kit markdown block rendering for standard markdown a7738796e1d9e38cf70dfffc6780d0edf72f39c8 feat(slack): wrap and align GFM tables for proper mrkdwn rendering 72f714ca368f719b8b4fea231ee013b402c45f07 fix(gateway): preserve adapter overflow splitting in streams b86ca7cae5309998c240d7b150c2b8150c98748d fix(gateway): keep overflow stream chunks editable b932997f44dad84d454fbda4627b3e2953eea546 fix: also close orphaned single-backtick inline-code spans 3e2fe3fcab93532978e9e83187aa7e36878a1907 fix: close orphaned code fences on all send paths 9ed5aef1e6466ae57911112ace2aaf6ee83595ba test: code fence tracking coverage for all send/split paths 5e44413b7c1df832d38afc522a92cfd07dab4fb3 fix: escape triple-backtick in reasoning before wrapping in outer code block 132e0005c88ea6216e4c67279d5d54105843db1a fix(slack): avoid duplicating rich-text link messages cc64f0289a7cbab5f9f158ed80da51ef168dd5ae fix(slack): add bold-text zero-width-space guard for trailing non-word chars b810711e4e463bd203d4529849843081855ef2f0 fix(gateway): strip language tag from Slack fenced code blocks 8e6d1a9a534109f7658a9b899bded4b938608d52 fix(slack): stop double-decoding HTML entities when escaping message text 50a6dc7efc9012b668183d23a2a6b06ada7acd9e fix(gateway): duck-type set_reaction_handler on adapter wiring sites 1f25791b1f0cf00987addf1b820bc4a018194820 chore(release): map C17 reaction-cluster contributor emails 558dab0e3edb5ff14cffcef44a702f63b9cece11 feat(slack): opt-in reaction triggers, removed events, hooks, channel handoff 9c9b057b73bb67f82d9506994e06593554163ca0 fix(slack): forward reaction_added events to the message pipeline 9ddcb58a213cc64964823ba00c27a804a441bed0 chore(contributors): add email mapping for metamon-p (PR #36220 salvage) 91799405aa3894989851d696e069fa5b3e43bf1c fix(gateway): hint Slack/Discord channels at the prior auto-reset session 61ea2719009bca98cea7c05f0c9ff8324b9e509d feat(slack): elapsed typing heartbeat — 'still working… (2m03s)' on long turns 8d1b1372e9a76c2dcdda932d4c28b4b46acc1642 test(gateway): pin automatic /goal continuation drain — no user nudge required 6bb0eac3983576455643a726ae8475f297a70491 fix(gateway): don't re-deliver consumed background completions as raw watcher messages a4bc1ca502be7290549736d8310c6cc90d992a78 fix(timeline): persist typed display events (#69771) beffbab3d79941c50f4ef7dd0b10cfc99a394d9c docs(bedrock): add cachePoint architecture infographic 4dccfcd9b7cf3905444b5b5a0160259289911451 feat(bedrock): add Converse API prompt caching (cachePoint) 12096b1e3d2eb59a4e77bf0222ff22514a919e10 docs: add SQLite FD leak infographic and report updates for #69678 8e4b5d8774319408c3b480fc8db77d69528103d1 harden(slack): CDN-allowlist inbound file URLs, DNS-pin token downloads, widen token-file perms warning fccc222bd71f257b5d43aa053d36f0e52b79aa7d fix(slack): warn when slack_tokens.json is group/world-readable 1d7db1ba17eaec7dbd084c52c4f3fcedd117c801 fix(slack): neutralize prompt injection in thread-context backfill 2e08b778ab26c2f045900216b1d2e4d58d0ece6c fix(security): validate inbound Slack file URLs against SSRF 0cd4afeafdf10c80384786a8bda2678e376f5ccd fix(security): guard remaining preflighted HTTP fetches 42626da1ce1307c31c9319f6495125368576623e fix(security): pin DNS resolutions for SSRF-safe fetches ca988df8d0afb16480b13789b311aea69b2a58d9 test(slack): importorskip real slack_sdk/slack_bolt in transient-edit tests 21ac2b50dca981e49ea40479e3c5e46a96c52c54 chore: map contributor emails for Slack C6 progress-cards salvage 5c89cc43590156ce2bec60a79813197000642458 fix(slack): clear assistant status on every send() exit path d35b003f02c1830371206878f1c13d26e046e956 fix(gateway): respect reply_in_thread=false for Slack progress messages e40a38aa29facfa8e5e5a445bf9b51246101bd86 fix(slack): avoid assistant status on synthetic top-level threads 62747aa58471aaef9f4b1866efbd1cff077a396f fix(slack): delete stale progress messages fa8a3e328ee056f8dc99ef7cd9f4e5520510b9ba fix(slack): preserve progress edits on network failures f716b876a8279b46c190950dfd5cf9d06df2061c fix(slack): edit status bubbles in place instead of posting new ones 93a47dd466ac7b9c6745501ef8e4affb612b91ec chore: map yemi@lagosinternationalmarket.com -> yemi-lagosinternationalmarket c132783ea0a1743892aa154bf597bf616f0fde04 test(slack): regression coverage for thread image/file context visibility 2d7353cd3b8ab98660f098d42144b75b6834b0ab feat(slack): deliver thread-root images on the first mention turn 26a2fda8d709122d432ab7bc0345303ff95e6f5d fix(slack): surface thread images/files as markers in fetched thread context 3ec5a06f4faa18dbf54ca10be7fcfd53a4d7c006 test(slack): mark block-privacy fixture message as human-authored (client_msg_id) bc56002124bf4d0f1175a454a2f8332bd303a104 chore(contributors): add email mappings for slack C13 log-noise salvage 44f6f8435b91808c4706a97b7843560f426843ed test(slack): behavioral log-noise/privacy suite + keep clarify choice text out of INFO logs 565ea19a491c7164d09a135cf33262a17bce44f5 test(slack): pin catch-all event matcher registration and non-shadowing 390ddfd0284e80dbdd095d99adefb4cee8214c86 fix(slack): quiet Slack display defaults — no heartbeat/busy-ack breadcrumbs in channels ece3dd1a4fa83d4abb981eaa3ef88097a94424c5 fix(slack): avoid logging block text previews 93102e91cfec4ec7226f5cb495e19be784be83dc fix(slack): add catch-all event handler to prevent Slack auto-disabling Event Subscriptions c1529e58da2202328b13d3aef80c92a41cbeb4a2 fix(gateway): quiet Slack missing_scope channel directory fallback 0eb5cb5e07b7cdb6f3c1092d973a9b96eff60679 fix(slack): surface bot-event arrival and allow_bots interop diagnostics (#30091) 42534605b7c7574c5d05d6bba60bf128f08db790 fix(slack): throttle channel directory warnings e027f43f70736370efdcaa6733ef722cabcc8107 fix(gateway): key Slack capability gate into the prompt pin; defer positive note to tool schemas 96f21e8a54ff071fa8878f9d2220fab080622795 fix(gateway): make Slack platform note capability-aware when slack tools present 24d7333eb1003e9219a104a682733f9f09547708 test(gateway): cover msgraph_webhook port/host/secret bridging + contributor mapping for #57320 74db4bfe684de68740653f1515f97789c0df58e6 fix(gateway): bridge top-level port/host into extra for webhook and api_server 6b1b2e6f0e9a707059c56f91bf3dca66fb81c13a chore: map shubhambc09@gmail.com -> navahc09 6d4f7f40492e24fb688e0943c205278951b523b9 docs(slack): gap pass — mention-gating decision table, allow_bots deep dive, clarify buttons, ephemeral slash replies, cron/DM targeting 2b226be8e3c7f2190f6810b4c275fffd55fa764c docs(messaging): document the '!' prefix for Slack thread commands 4f7109551a0e7124c62c575015fbfdaf8e6bcdf0 docs(slack): document bot message handling ada06ee7b029ab051e9d700c12c0f60cc53e7458 test(gateway): loosen hygiene-timeout wall-clock bound to flake policy minimum (#70202) 3638136e7ec6c90e9ed7352d8c3d354dadaa39a2 fix(auth): count MoA preset slots as explicit provider configuration c7fd3eb37703370e304ecb898a07a30969658f51 fix(gateway): honor explicit api_server enabled:false under env key 78312c192d008b21d58c7cb035f07cb231e75585 fix(moa): preserve custom provider context metadata 4ab3bf66f185cc8ac38d82ab22b00e9800c9f7f0 test(moa): cover the one-shot /moa aggregator path for slot extra_body 1d603fe8229f4ad3fc30a474b392163ac92668b8 fix(moa): pass custom extra_body to slots 2962ba2b7bb3bf518036aa31ec8e67a2825eb6e3 fix(auxiliary): treat explicit model:auto sentinel, not just cfg_model 0dbf639bc8d622efefea495636f38f4a449350a3 fix(windows): hidden-console daemons — extend the parent-console fix to every detached spawn path (#70205) d9165d7a678d4105f42921a7fc1886df3804531b fix: resolve current entry unlocked in try_refresh_matching no-hint branch 769381fb3e01e1bfbc7ff980b5704a479281f66f fix(credential_pool): complete the locking boundary across the public pool surface 5b794c984e398eb425fb93bf55cb6f5a0592c6b8 fix(credential_pool): acquire the pool lock in has_available/peek/current/entries 65d42e35d4eab5a49f95d3ca2747554f7cc47ce1 fix(kanban): stop decompose siblings sharing one worktree checkout c2c2449d058e41e3a7f198523f8275a05223665a chore(contributors): add email mapping for drleadflow 547bf1ee9e5baaf05924a50f6a6f3cc95f706517 test: isolate unmatched-hint regression from live ~/.claude credentials 3d67f00fe1ef24fba928a14ef2796e17017ab4ce fix(credential-pool): stop lost-update cooldown erasure and wrong-key quarantine fdd3943cb12dddc03ff321daee9e7fe73b84c40a fix(update): survive undeletable untracked files during autostash (#70161) 76d4b65d5905c391f5433a32c1b04c3b3e454cbd chore(contributors): add email mapping for airclear 1f07fae6df427f88fb1c00cb8a945934c5faf3f3 perf(credential-pool): persist same-key sibling exhaustion once 0e15805e25c0bf386bf31b2390e0ff2d7064ccc1 fix(credential-pool): exhaust all entries sharing a failed API key on 402 01b0451909eaada46c455387706ddf21ca1e113c fix(compression): compose the blocked-warning probe with engine preflight d5c03fb36939ded4c919b7822918e84dd6030818 fix(compression): guard overflow-warn dedup reset against minimal test doubles 1d1b670cb5ea901b7726190d8802afb6571e9dd1 fix(compression): reset blocked-overflow dedup on every compression path + noise-filter survival pins 5c8d098eb3275b6f7a3f8cb1e6de876e86b7e048 Address sweeper review: safe should_compress_info + cover all guards b0a88899bf3490776c71ace5c1719cb4653ef4d9 Surface warning when context exceeds compression threshold but compression is blocked 781968be5e1ec2c253b617409f8bfba652c10186 chore: map team@williepeacock.com to peacockesq b9b5481d6236edb3ec8aae32cc4b5c661569b872 fix(kanban): preserve cross-profile project child routing 6833eabb53324a4b5f17e94e740300dbae558eb9 fix(kanban): isolate worker-created child workspaces 4c88e2163b96c5ee8e5b2ed0b67b2a2e7c73953e chore: map rmk799@outlook.com to MustafaK99 dc3e4e84283820128734fcfda412365f61e93ede fix(kanban): keep delegated results in worker turn 6bd02ae1a67e6df147fc7433f26c13c300a7e84f feat(image_routing): accept vision alias for custom provider models 51083d2edc0962af7f183005efcd4d6636209ee2 fix(moa): route every Copilot credential path by target 02f1dd08579727fcf47a867e1a0c157bffaa561b fix(moa): route Copilot slots by target model 4cb85fb7fc9a6848cec45985a3534d2ddf78b46f fix(compress): type-pin the lock-skip signal check at every consumer eb7be2eddea49d4e4b475480c169de6e1288de0d fix(compress): classify unconfirmed lock-acquire failures and cover all manual-compress surfaces e8000b42e72c81ef293d0ad7628e7909fa3a77dc fix: prevent stale lock-skip signal leaking between compress_context calls 07cb4a697e88aaf055d7f14b658d26d59036c900 fix(tui): show lock-hold reason when /compress no-ops eed6bb14bcb94b9ea5f9f7fd7fbe31a2fdb3ab09 fix(gateway): show lock-hold reason when /compress no-ops 65145d9c5ad7265388be8680874fb6188847471a fix(cli): show lock-hold reason when /compress no-ops b86367e49697d26456a6b0c13bf8a938f44f8e8b fix: signal lock-hold to callers when compression skips 08298dabbd202eac2ce0b66deee0452863c738e0 fix(computer-use): handle Linux cua window metadata ec5835ab8b50f2ba20f71417133cab01b6fadb4b fix(compression): persist anti-thrash state across process restarts (#69872) 849c17752db9fd76d3c393d99dae8b992d1e805a fix(skills/tldraw-offline): correct the computer-use delivery note e321b8339239a0764d7d1cc0b114d9f0b0714cf9 feat(skills): add tldraw-offline agent scripting skill 683059feb54f511717c831e0989e0f3c54450785 fix(api_server): fail closed when API_SERVER_KEY strength can't be verified 2755bf558e6dd0d557bd8a1fa1ebbb932b689ec3 fix(auxiliary): route all MoA aux resolution through one shared aggregator helper cdfe562342ca394e127e422151d65ef4e9a27a81 fix(auxiliary): unwrap explicit provider:moa to its aggregator, not the literal name 3ab819dc87d372179e2e42d917b15a3a8d7f3619 fix(lazy-deps): never downgrade a shared dependency; track a range for huggingface-hub 21695a10bfca888fe45e841f8dd3cae6da077b72 fix(lazy_deps): unpin huggingface-hub to a range so refresh stops breaking Hindsight 792ede0a364bbe607f02aeb8fe38787f84e5e523 test: pin repo root on PYTHONPATH for subprocess-boundary kanban isolation tests b327eaa3a6a9d431fce3c4daad1a872c29280ef8 chore: map trkim@vms-solutions.com to ddifa86 a7dcf9787bfa6300dc0a6071178a52ca0e81c4cb fix(kanban): harden delegated-child mutation boundary 47bbc12e18a6eeb6196a9ec28391fb13709e70fd fix(kanban): isolate delegated children from parent task a553bc74e4c6c94a773118018d66736fe565a902 test(windows): regression coverage for the six #56747 hide-flag sites 714d7cc1a4695a062a792b85647deb1d5ec4d457 fix(windows): hide console flashes in GUI-reachable exec paths and provider transports (#56747) 1c58fe43621335c04ed178c67fa3243762ed0780 chore(contributors): add email mapping for schattenan 129b9f9d33afad50f470708ee5a515d8150b0d40 test: make interrupt-pool double's entries callable a9613d2e5715c2ff2eead14a3ac2dd2bbde621e8 fix(credential-pool): refresh the failing entry, not current(), on auth recovery 795bf4a9e6f7534ff1dc82c865acfeac53861265 fix(credential-pool): attribute failures to the key that failed, not the shared current() pointer 509960e8274defe2dcd3dc1c186fe8ad0af5b60c fix(update): stdlib-only early recovery before hermes_cli.main imports 40fd2b8c08e965cc6ce8ed87a06f3a48de1c0f51 fix(update): split core vs lazy markers; probes cannot false-clear 8aa2a8bbcf48387bddd34c564692012e6012deb0 fix(update): import-based recovery under Windows hermes.exe self-lock a9a8ba2acf8360bf62fa1f8fc246fd38328b1dea test(update): cover lazy refresh venv repair after failed installs de602b72987d2bd12e93ad90ac8fd116209ee151 fix(update): self-heal venv after failed lazy backend refresh acbc3abe8b5efe97be599f2b74b3be504e3ebe3b fix(cli): widen startup worktree pruning to all .worktrees/ trees and detect squash-merged work (#69831) 2e9765b34efda07577cbba8a4858fcb3f263a699 fix(gateway): route hygiene-timeout warning via profile-aware adapter lookup + verify lock reacquire after fence cancel ca9c30c7f00d6450d831fe5acb8d843e049fa441 fix(gateway): bound hygiene compression failures 49a8c61cacfe9db9fc844a7e8efa2a0fd53014d4 fix(context-engine): route pre-API and idle compaction status through the quiet-engine resolver d81a3dbfbb73ad08d0034ffb6f1ccf7d47519f65 fix(context-engine): adapt quiet compaction status to turn-context refactor 28dced24401d04ce2f31847994f2d7fc79c3d9d1 test: isolate quiet compaction status assertions 4035d70bbebecb541a42913b0189695bdcf49501 fix(context-engine): honor quiet compaction status 2ca38e5df43411afe11aedfc34bfd71a2eecd4bb test(compression): pin scaffolding-tail standalone append + stale-snapshot refresh 06a2d773727b55359a593b4c6672312b103181d1 fix(compression): gate todo-snapshot merge on real-user tails, refresh stale snapshots 33fd7054210baad2e1e64c620bef2f6f05d78b36 fix(compression): preserve multimodal todo tails d2bb6cc25181f6041a6fd0e124be83ba55e4e07e fix(compression): merge todo snapshot into trailing user msg to avoid consecutive user/user turns 18d83b4da9564aed796ab2b734f5cd1c3ded760b test(agent): pin the #61932 all-oversized-tail dead-end shape as compressible d12ea20009f7a09a0742d9d71641ff3a6d464a5a test(agent): cover protected-tail last resort fe2ae409832bba1fbab8153d6e1705ce4cd5d869 fix(agent): demote oversized tool results in protected compression tail 4fbfb26704214decad630883a3e0981d83a0eeb7 test(compression): audit abort paths for per-attempt in-place state reset 79a83830ba0bae1f55411f1e189c8c90dd713742 test(compression): verify abort persistence after restart 03c96b7ab51966c5882e398a3cff246c6553e5b5 test(compression): retain durable persistence regression 17b3a4bd41055fe07fab7153e4fa541b645c8f9f fix(compression): preserve flush baseline after abort 929c952596a4b8d40c49c96b1f1feb80655ca044 fix(agent): wire should_compress_preflight into the turn-start preflight flow d1c0c33a8ba3557860cea7fd12a3835aab45519c fix(run_agent): call should_compress_preflight() for sub-threshold engines (#20316) d462116226a3de2b2d98ede6e2ec5e175838fa83 test(cli): prove /compress type-ahead queue-drain; map contributor email 0bc7fb2b3bdcfdcc93989ee29680b6daadcb93b0 fix(cli): keep composer editable during compression 2cabeeabcad5efad0b4c3fce52b3bce8935f99d4 refactor(tui): relocate /compress arg parsing into _compress_session_history choke point 9284a3402f64c85b3e43cb08356b96d6fb8c23c3 fix(tui-gateway): parse partial compress args in /compress here [N] 9d4cc126052efd70a065b05ac995c937605e6ad1 fix(photon): register Photon as a low-verbosity display tier c9747106b683428d2c7cc910ae20a943cfae960c fix(runtime): retry Relay stream construction failures b4e105031ab1bcc07ef60bb9fead572e05432fe0 Merge upstream main into feat/hermes-relay-shared-metrics 91546b8337068891cc0a6b834d89d0d9270fb3ec fix: preserve named custom provider vision overrides 97d51ca20db1b0d89ae69cb2a3b3cd78ea7389cf fix: use canonical _get_platform_tools resolver for memory tool status c82c5786f4a4fb81370f80faa2864830a408e374 test: cover config-aware memory status labels + AUTHOR_MAP entry 4c99a44e6d4cf914e211486ef5a7dd74ef7bd5de fix: hermes memory status now reads actual config instead of hardcoded 'always active' 2841a9cbca17915c5b983131fa18e3f21bd3983d chore: add contributor email mapping for fangliquanflq 9220c0c0bbe349d4771a732196fdfd0db3fe4424 fix(agent): close tool-result tails on invalid-tool and truncated-tool early returns 8058e01834233bb56e575f46c2213bec64ffd83f refactor: dedupe check_info call + fix trailing whitespace in doctor 7419de6ac6f3fbf8cfb7164ed5b17abb9707352f refactor: simplify WAL-reset gate warning dedup + tuple handling a94f8e69e11fb9fa8083a833aeb798079d03017a test(state): cover SQLite WAL-reset version gate and doctor probe 953cbc030075d644ab1afa9bb044bad1990dfbc5 fix(state): refuse WAL on SQLite builds with the WAL-reset bug bdef497a5a04f977a487db069e14e6c4d6e6ce22 feat(sync): M2 org-skills client — _org/ pull, hermes skills propose, 202 handling 8fc278207b0f5b25e567966f9615e1b1737f62af Merge pull request #69938 from NousResearch/bb/desktop-dev-fixes 44b171fe3dae30b2d866176c727851aeb456d120 fmt(js): `npm run fix` on merge (#69941) ecc6aec4bf9947bbd3df3c8258576f686ee79de5 fix(desktop): isolate gateway HMR survivor across vitest cases cbea2acbb82d594b6fc74376fe4d6ed863505d90 fix(desktop): gate HMR session-survival entirely out of prod builds 1943c1b7508ce57a8beb6fa9e29eba0a5ed855df fix(desktop): dedup profile in HMR adoptBoot 813ddb4555de3d1fe34eb0a81c869263eb352d69 fix(desktop): keep gateway session alive across Vite HMR 7c9d05267c550dd6b0db2bdcdecda9d06a73baea fmt(js): `npm run fix` on merge (#69939) 17dc350a6b47b8844b014b9e2fa0812e295e3d45 docs(voice): document the wake word feature 64686e6ec51f79ba325768a9e9d08f87b8ef199e feat(desktop,tui): arm the wake word over the gateway and start hands-free voice 129178bf09e542080e79f6d8935a2c2d9c220606 feat(cli): add the /wake command and wake_word config section 8ff79323d8e8cca731443df1ea1e02b6bc67303b feat(voice): on-device wake-word detector with a bundled "hey hermes" model 3e163d29bd44ee971c24beeb959c4415dba445be Merge pull request #69936 from NousResearch/bb/voice-speak-whole-turn 9859e1f7dfce9ce46ea311ca9913c593c89033d6 fix(voice): speak the whole turn, not just its first bubble; idle-flush held narration e3cfe09195e73dbbf1cfefef0a7a9f3987712fc6 i18n(desktop): move kanban to plugin-scoped ctx.i18n (per #67303) ba06264638c6e3782365896390ae2d8f3e21ae3e feat(desktop): plugin ctx.onDispose + self-disposing kanban bindApi 46be41f7fdb19d86434b12db3659a4d82d1cb568 i18n(desktop): localize the kanban plugin across all four locales 07953b65b0f4ea09ba1982249467150f40540309 feat(kanban): talk to a running worker without a restart b2b03c5ade9a413c79bf74244a05bad453135e6c feat(kanban): task effort estimate via the auxiliary model 2bbaaeab6005864e7eabd2e4a5d821edf1ae8057 feat(kanban): scope boards to a project 7168845dc314e2621a64e616a9d5485668c366c1 Merge pull request #69909 from NousResearch/bb/computer-use-perf 5f06c15d9c701a8f915ea7212662151ec51bd853 fix(desktop): roomier kanban create-task modal a6c923fd5d6791ff0787ece1671f1cc8d1a9141b feat(desktop): SDK — useGrabScroll export + dogfood plugin touch-ups dcfd45061c19ead6c93f329db537a2aa2f0b0eea feat(desktop): Kanban — dashboard-parity board plugin on the SDK cc1765dce2fce9ea3a03d50a018b3da99628c4ac Merge remote-tracking branch 'origin/main' into bb/computer-use-perf 93f8da55cb2cc7655542958a95c44d72f2364890 Merge pull request #69903 from NousResearch/bb/salvage-53841-no-overlay d3d989c4c2539c0d2521182382c789516d43a148 feat(desktop): show credit-usage notices as toasts (#69808) (#69828) 8cfc9e4e27adc86e6b3d083b257bfc05cd8f06db chore(desktop): dev-only credit-notice demo hotkey 664b131c303b59fccf2368663a5d14e143959922 fix(desktop): billing page always fetches fresh state (team-account desync) d010220588baa1c7fe4326d7086ae651f301c716 fix(desktop): de-dupe credit toast icon, band-color the figure, split detail 59a735b8f32314408c909501e2d8c3c220c8e792 feat(credits): report $used of $cap instead of % in the usage notice 69b97a97f7519b664c52c71915f18c0debe24d60 Merge remote-tracking branch 'origin/main' into bb/salvage-53841-no-overlay b8a2b9b93ef732667a0a7bb44f7fb162bfbe80bb feat(desktop): native OS credit alerts + billing-page nudge (#69808) 58e3d415826a5ce2a2f3a32f6e63f4730f9e6c92 fix(desktop): render agent credit notices as toasts (#69808) a2172547a80e560e78f2c786cb1625a106496aba Merge pull request #69902 from NousResearch/bb/salvage-cua-driver-path 4d5180ae8889a7440cd839078a7c65f663b1efbe fix(timeline): strip display-only fields from provider payloads, preserve through rewrites, fix /resume display history cdc123ec2f9043cd4a7e586c1b1843667a08601a fix(computer_use): only disable agent cursor after session handshake 8b6d34ad859b956546b66c1a826b1e0360d28fce test(computer_use): pin resolved driver for update-check tests 34a72c3683e3f75b31df9730b41c43c2396c895f feat(desktop): show "esc" keyboard shortcut on stop button 742ecb527a1a3e6affceb22368bc063cf218463e feat(desktop): honor busy input mode 12ad13ddca763b82d79e842f86aed73f7ca496ad perf(computer_use): cap capture size and cache vision routing f957fe376080522a799621e40ea84692b8b72424 fix(computer_use): default --no-overlay on macOS for idle CPU de5ece994415276d215976836161f871f1d6d8f5 fix(ci): report E2E evidence upload failures (#69901) 3d846897147ba6ec257cbe930c0f8b855960d0e8 fix(computer_use): address sweeper feedback on --no-overlay subprocess + manifest probe f7a6c7a6e5a111aa81007f19bf9c66e232e431e1 fix(computer_use): add explicit encoding to /proc/version open() 8d4f7a0002ebb5c27f76ea250bdadf8e12cb9857 fix(computer_use): refine auto-detect to headless/WSL2 only, add driver version probe f43ff5b4bbd3df2c703ddd2d180fb76ee0232dba fix(computer_use): mock _cua_no_overlay in existing tests, fix platform-dependent assertions 8ceada6e30c12f743a06d6046b17028e57f3ae0b fix(computer_use): pass --no-overlay to cua-driver on Linux/WSL2 to prevent idle CPU be96f2202604b675144c17c4b581907018292279 fix(computer_use): probe resolved cua-driver path in post_setup 2f9d88caee267aefcf19cb8c9cf1a514bf1fed6c fix: resolve cua-driver across computer-use surfaces 030822b68daa40301636868e8747bcbc0eae6da5 fix: resolve cua-driver from user-local install paths a8e6c0f8531d3ae4a496697d04ccfb7ff198672d fix(dashboard): isolate Desktop-inherited env from standalone launch (#69891) 0721d2ea80946040515e83a340258fee6a46c02a Merge pull request #69884 from NousResearch/bb/salvage-55707-onboarding 61e7db28205ec783edc8eef5501180eb14aa7ec8 Merge pull request #69887 from NousResearch/bb/tile-resume-profile 26f1f6a76bd5dbaa55e849e78a460beb0018c37b feat(desktop): improve tool call detail views (#69868) c1b0f6f3c1d05f95fd3c9c96c37fc5c940898011 feat(kanban): per-task model dropdown — set/override worker model+provider from the board (#69876) c3602f7f05ae75ddaec04f51177c7e3a4c2237ca fix(desktop): route tiled session resumes to the owning profile 58ffc10c17eb7cd6332827bf2d0903a41ca1ec64 fix(desktop): stop spurious provider onboarding from credential warnings a01499136d243cb79c57d332c51864ea8a848b22 fix(tui_gateway): skip credential warning for keyless custom providers 7cbdcf1ba6f79b2e509963e142b4a77915eea523 fix(desktop): render remote markdown images in chat (#57944) 62fcd86f674a82bf0cb5ec258fb967e9016c8a28 fix(gateway): route hygiene-timeout warning via profile-aware adapter lookup + verify lock reacquire after fence cancel f1c5aad1f4cec40c1495427d851e14635085b447 fix(gateway): bound hygiene compression failures 8ee92269bb670a6c8ef10c908b196c13de889927 fix(desktop): route tiled session resumes to the owning profile ca16a8e07d742f2744d22c1ec5dadaff9a501959 fmt(js): `npm run fix` on merge (#69879) e59dcf46f162967bc60830bcd13f9949acee536b fix(desktop): end the #67603 model-switch dup, cross-profile session bleed, and [System:] bubble (#69861) 7a73af2d8562b70b5f57fa817b1fae1726724e75 fix(compression): guard overflow-warn dedup reset against minimal test doubles e1367b44bc0193e0b8d3f4bcdbecc72f83b638ea fix(desktop): let clarify choices and overlays keep their keys from type-to-focus (#69869) 8e0130991773f5c82764613f27f8ebfd69477257 fix(tui_gateway): preserve websocket batch order (#69684) a3a82134e1626a5f9494e4cc5e941d662ee6a6d6 fix(auxiliary): route all MoA aux resolution through one shared aggregator helper ec6438c5c43ed12daec942fc642fe6879e6510bb fix(auxiliary): unwrap explicit provider:moa to its aggregator, not the literal name b0358cf3c8aff565f193eea82e75586631438014 fix(slack): unify DM-resolution caches and bound wave-2 caches (C16 policy) 527c68baa41917ea7ca4d940a556b71150491ea7 chore(contributors): add email mapping for slack media salvage (robzolkos) 994a405f2de526088232f9d2725a1d8a7e75b29e fix(slack): resolve bare user targets to DMs across all adapter send paths 4ab4894f4441c020756b92696a72d377c46ba600 fix(gateway): make post-stream media delivery explicit-only c83a196402de41e578516836ba91b63d4aa7161a fix(slack): gate message files before metadata fetch 5bb933eedf6e57386fa7c971055ba6f1d7c4b045 fix(slack): reject unauthorized users before event construction f54e8706f756091f589e4dd93bed744a31164cbd fix(platforms): block image upload redirects to private URLs 40351d092311de7f02770faf5bdfa0a0dc2f520e fix(slack): resolve file events with cached workspace team 57f8ba3b19c3e91b4ca10536b88834f3b0e18978 fix(slack): open DMs for user send targets 8df8f86784dcfd66c853d2569c170bfc02f1206e test(slack): cover send_message MEDIA delivery 5f4c952ab07b50b611a32d647590177d33193caa fix(slack): support MEDIA attachments in send_message f119afb1c0de27608fe65efa0ea1974892e3f414 fix(compression): persist anti-thrash state across process restarts 33cb10ac3e387575744cd8fd52b445f03a7d3e03 fix(compress): classify unconfirmed lock-acquire failures and cover all manual-compress surfaces 3dda8ff4328ca1a371d68c41af61dab1ba155506 fix: prevent stale lock-skip signal leaking between compress_context calls 534fd126113f32723dcf1f66294504ba42d95426 fix(tui): show lock-hold reason when /compress no-ops 10b84c4967016df16448d27074ec0281c991fb85 fix(gateway): show lock-hold reason when /compress no-ops 7e17016344bc98fef8be7a5c09c10fd8958c4a0c fix(cli): show lock-hold reason when /compress no-ops fc8f622b08174923a5e34f201eb20554ee5a0048 fix: signal lock-hold to callers when compression skips 62bfba521d78dd2007087d4f6407fcd21a3944b8 fix(gateway): hide [System:] bookkeeping markers from every transcript 143942d497f8345d34b2168d0345f8f4ece1ef9c fix(desktop): scope the remembered session id per profile 6096f73ce8344cc8bb38df3dacef7a76e62fbc8f feat(desktop): add keyboard navigation to clarify choices (#69799) 2d248ac038dd410b31873306888238595b473342 fix(update): stdlib-only early recovery before hermes_cli.main imports 7d057681a7d83ebac2ad333dcf3cfd21510ad3bf fix(update): split core vs lazy markers; probes cannot false-clear 2845d8983941fb88fda0e71b05b93abb7424a7d1 fix(update): import-based recovery under Windows hermes.exe self-lock 92d1cafc81127aeee8248989a0b71a0b2d10704f test(update): cover lazy refresh venv repair after failed installs 685023dfd23c617bf5f27867712fb7eb3e87d517 fix(update): self-heal venv after failed lazy backend refresh f0a7e94b9f214de9c3f2fa3279cc4c893c72df2a fix(agent): wire should_compress_preflight into the turn-start preflight flow 83ca752b5af1ea8eedc611e3b7086ab4c6592857 fix(run_agent): call should_compress_preflight() for sub-threshold engines (#20316) 5fccc9aae9c3a698efb2bf37b8b9607c75eaac73 fix(desktop): stop model-switch dup + route recovery resumes to the owning profile 19f3b3d4b3e9446981ff89424bfc65a9740c1706 fix(timeline): persist typed display events e0db7c0cd30ab933d1b9ed9010a130427a4739c7 fix(nix): expose the provisioned Python environment to uv 25ac349314a9ff9d084b1bc3dc9b7218fe0a3611 fix(desktop): use the provisioned Python for real-session E2Es d09b627e634605e650e708dfdc241bd082866156 test(desktop): build persisted E2E sessions through the real agent 9602ec4a210dabec68f67a141ff6ff5f5dff23b0 fix(desktop): hide persisted agent-only history scaffolding 328e4f5a1e0a2d4980a65a4b940805619815406a fmt(js): `npm run fix` on merge (#69852) 7eb7d0a51e141041fdc7272c98a1bd223497afc3 test(compression): pin scaffolding-tail standalone append + stale-snapshot refresh 87e79170b704764c230f5d3cd19e699d7cfa0ad4 fix(compression): gate todo-snapshot merge on real-user tails, refresh stale snapshots b0217a8a856e3220a58ba6fdd23753b2c6cae06e fix(compression): preserve multimodal todo tails 2adaa97e499d51edab836999a34b65bc8fa9d190 fix(compression): merge todo snapshot into trailing user msg to avoid consecutive user/user turns c85dbb6115780115e1dbb941d3c247b312c32477 fix(context-engine): route pre-API and idle compaction status through the quiet-engine resolver 4c647cd20ff386e8ab78f39ba9575e1f3e849b3a fix(context-engine): adapt quiet compaction status to turn-context refactor 9089c3420233dee86dbb858cf2a2c8c4c48f1cbf test: isolate quiet compaction status assertions afcd90ae50836bea2fa3f8fbb9817b72c34e064e fix(context-engine): honor quiet compaction status c50fc28ac7a8c2319be0268336df53727305c17a fix(compression): reset blocked-overflow dedup on every compression path + noise-filter survival pins 4de4f2cadf40229c7a584ef19ce3a69f94917216 Address sweeper review: safe should_compress_info + cover all guards b04cc5c83c9b47d72a136a50f95b57edf63b1da9 Surface warning when context exceeds compression threshold but compression is blocked dc861964fc6d7eb05d3757752e0c80d6626ed474 fix(desktop): clarify options defensive rendering and layout fix (#69796) 46fb10203b65b141c65c93be2951e6fca8451093 Merge pull request #69841 from NousResearch/bb/salvage-69428-expandable-overlay e0a9f4e53bdcc348d6bcdecfd86b957b6700d0e0 test(compression): audit abort paths for per-attempt in-place state reset 2a4f65e53c598518688dc331474c65a1774779cd test(compression): verify abort persistence after restart 4e42f37e8c23052bc2200fd48c24d33b400ce448 test(compression): retain durable persistence regression 1bda6d81384baa62aed2d1486e8d76056241ad5a fix(compression): preserve flush baseline after abort 7752ff4da0f29fcc7cdde7856932b910da8e5b25 chore(contributors): add email mapping for schattenan 2798c5a68ac4d387e2e2e2285a5861cbf58d6f64 test: make interrupt-pool double's entries callable dffb4fb88cba94ff5f7244afc95483dd54ff7bd6 fix(credential-pool): refresh the failing entry, not current(), on auth recovery 5ff0d908971dff9e3e50c61acb05663d43768efc fix(credential-pool): attribute failures to the key that failed, not the shared current() pointer d21165c2f08dedd36b968bdd609085e52c89ec81 fix(desktop): keep clarify answerable across reconnect/hydration + tool-progress off (#69795) 7d28e84e72ec6f66cae12139b983c782d19ede66 fix(gateway): deliver assistant prose before the clarify poll (#69775) 507d479c8c910150d8a929aa32a9e22ee605d0a0 fix(clarify): one canonical timeout across CLI, TUI/desktop, and gateway (#69774) df0096279014573e5d91b33e4a8b7560ca7a27a9 test(windows): regression coverage for the six #56747 hide-flag sites a4170bb564b44ff8f607e91300a967a63449e152 fix(windows): hide console flashes in GUI-reachable exec paths and provider transports (#56747) 3dd9d5e6923c8428cb003e481569d2d2d97ea7e5 fix(tui_gateway): tolerate late clarify + terminal.read replies after timeout (#69773) 936b407a724c56452773dccf04dc892dace5605d fix(desktop): free code-block scrollbar & last-line selection from the toggle overlay 291829402007b283540f1fbfb274119b93fd50d8 refactor(tui): relocate /compress arg parsing into _compress_session_history choke point c4ddc724197a596b0c1687b2cf2588a345b9e4da fix(tui-gateway): parse partial compress args in /compress here [N] 6baa9b77ef845b43e7f69012381a5996b21db079 test(cli): prove /compress type-ahead queue-drain; map contributor email 5c1b0f054a7e30913192b6e0fee524e81388115a fix(cli): keep composer editable during compression da3b3f411cdf585dd69b026f9e3a1c8ef5cf58b9 fix(api_server): fail closed when API_SERVER_KEY strength can't be verified 390b03c455be6df898d17f5f277b953fbf5f0d10 fix(cli): persist provider on global model switch b3ff5fc5b1409479de62ccf77ede0facf9d6c09f fix(vision): resolve namespaced custom provider overrides f8d18b9b4d8f8f80f528edce9d2df4d0f0898312 test: pin repo root on PYTHONPATH for subprocess-boundary kanban isolation tests 67309f61e50ebcc8dbccc8ae4d9530b54612f34c chore: map trkim@vms-solutions.com to ddifa86 8bc53fce02b10a95573fe77621c02aba9b33749b fix(kanban): harden delegated-child mutation boundary b1a3370661fff57955bf75df52d26648ffa92475 fix(kanban): isolate delegated children from parent task 125fac7943ab20ed672fa7513801d9a616de4ed6 test(cli): cover custom provider false shrink warning c428e725aa4a9eec0d0f0f4bf1dda9f9afdc4a4f fix(cli): honor custom_providers in preflight shrink warning b0b7f15598f12105a44af7cbf08b8e29aad8dcbc test(computer-use): assert exact capture skips X11 active-window probe 988132865165527ee3660a4fdef30eac321112c2 fix(computer-use): skip X11 active-window probe for exact targets a57bab1c846db01297a05b75a28f34f15199dbc8 test(computer-use): cover Linux X11 active-window selection f320f3e5d7689d9eb8fa5a5f45da6a876e7a2019 fix(computer-use): prefer X11 active window when z_index ties ff6d86ed0f474b51a3c5db2b5738926a8ca3d92c chore(contributors): map YLChen-007 bare-noreply email f31c10a0daf340a911bb9febdbb0cea9f677dfd6 test/docs(slack): force-clear new gating env vars; document new options 2c159f00e490eb5afe1e9a92275238dd990b72ca chore(contributors): add email mappings for slack C10 reply-storm salvage 0bbf679e4c3107ae61ce8776864bdc803025f632 test(slack): add peer-agent smoke target b416907538ae543c9c41e53bf2965b06dafee871 feat(slack): require_mention_channels per-channel force-mention override 38863322a4c6f544e95aebc6e6b6e88915763b71 Harden gateway mass mention handling 094c883bc0ee6baa496c21202b60b0ac3dd3ccf6 Add Slack thread mention gating f50e1e9c51378a471665f5bad74492038b7f8197 docs(slack): document ignore_other_user_mentions 286ec6afb3224482b141ab664a0794f6442757f7 fix(slack): count pipe-form bot mentions as mentioned in ignore gate 7f9cab15d859af099af340fa366ee512d4ff7369 feat(slack): add ignore_other_user_mentions option 8ed766025b282d3ee5d69b804baa3dbfa1576b4c style(slack): wrap edited mention conditionals 49497bcddbc9dd9641ee07990fd8acbf75064e04 fix(slack): handle edited-in bot mentions 69e15d630e21382cba27815334d2c0bf3cdfcbd1 fix(slack): filter unlabeled app and bot authored events 2168df37b8855bddcd4e157fb19e5075d042914e fix(slack): harden parent-text wake check against None + restore fixture parity 3f08201baced9329464eb4e22d51fb86fb4751e6 Fix Slack peer bot status routing loops 406d7a67f03f15f9c7c23edd261cfa13a53b48fe fix(desktop): split steer and queue keyboard shortcuts (#69797) 3915b9ea85b3aa4276877de17e31a83714e2f157 fix(cli): widen startup worktree pruning to all .worktrees/ trees and detect squash-merged work 2ebeede006e19b1ea433ba723e33dd035fc8e10e fmt(js): `npm run fix` on merge (#69823) 7cf254d37b0370a2ed3ac12495c2b653ac28513d test(agent): pin the #61932 all-oversized-tail dead-end shape as compressible f4a030813e8a9145a9673a940e78866500e15857 docs: add guide for managing Hermes Cloud via the Portal MCP server 0309f0b07fb5638752aaf311b8367ea76009d1ae fix(photon): register Photon as a low-verbosity display tier 8028a988c559de824f9d0a402f6add1574f96692 test(agent): cover protected-tail last resort 19fa0f7cd748d6ab1ea6463b1b8ea94fc82ac564 fix(agent): demote oversized tool results in protected compression tail 88a95573858a3f8b4ac9988279441f91c29c6dd0 Merge pull request #69812 from NousResearch/bb/desktop-tab-close-shift 90d62968086c024ce3a233f84e34ace453448fe8 chore(contributors): map markoub email for C16 cache-bounds salvage 533e5412378ff7bbc760862fc7d82f30e528f522 fix(slack): bound remaining per-message/per-user tracking structures with oldest-first eviction d42b295792f63f4b1d32847696b48d70e9494159 fix(slack): bound _thread_context_cache with eviction on overflow 91693f9d4cc99bfb7f74134431b1469befec1e9a fix(slack): cap _user_name_cache to prevent unbounded growth 4fb1796331deba07b691148b2967effc4d5c90ef fix(slack): evict oldest tracked thread timestamps d8cd7ac2e7cb0d7617666f3af1abdfa2bf275e22 fix(relay): declare explicit relevance policy when require_mention is configured false (#69816) a4795da3cca70fa08b2cb52002debb119b6fe5a8 chore(contributors): map esther@feedmob.com -> Esther-Zhu023 c7b9dfa9618d3be358812ec535e358a7ff070d85 fix(slack): resolve user IDs to DM channels in standalone cron delivery 4f726ed46798a01e86f0a67523d90570be31e63e fix(slack): preserve media in standalone cron delivery f279f7fcf10642e71300bcc342d42479ac221e1f Preserve Slack cron thread origin 0c07a19752048b2cd63324b0946a4e896aa44295 fix(cron): keep bare platform delivery on home target b8939e8316e89896d5f7081f6148ef090a20f0d8 fix(slack): guard _resolve_thread_ts against async/cron deliveries using stale thread context 141d5db922213553400d53db79cf12e6a4fb2100 fix(cron): scope in_channel thread_id clear to the live-send/seed gate 7337a9d997ae26ce2c8c3728e9df1631c57744e3 fix(cron): clear inherited thread_id for in_channel delivery 700c8bfc5cc421b9d492745f5cfa1f3b635443b8 fix(slack): fall back to chat.postEphemeral, never public channel, for slash replies 79896788f39d4d26e0d77e9d39e6ae9b45d228d6 chore(contributors): map PavelTajdus bare-noreply email 1593bb82accd9ecd7023dab89445e50e9932fe8d test(slack): adapt salvaged tests to current main dcd3e917e893fc36ff92082aa6e1ee5c0248e409 chore(contributors): add email mappings for slack command salvage authors 2a8d4879f2de21cec94199670f34215811979e81 fix(slack): never silently drop or truncate slash replies (#19688) 0a53663ef801a114c4d33eea9b96d111171917f2 fix(slack): preserve typed command integrity across enrichment paths 5243fcafa1fcf275e05ee2bac4753eab3f1906f3 fix(slack): surface retryable + Retry-After on send() rate-limit errors (#46762) f8aef2e4e0f5abe5d80aa8361f4b87bb167cabab Bound Slack response_url error reads f36c748c85b9c814c17596a3d53a507a74e4acfb fix(slack): stop consuming slash reply context outside slash sends 02f5ced7660debf8043714e75ee982926e414f81 fix(slack): pass event-derived chat_type to _has_active_session_for_thread a83ec95c76325440e0e4aba1c9a972fe7c9db637 fix(slack): avoid rich-text duplication in commands + keep slash thread identity 5f3f1948b7d209086ffdcba7cea7069ee27c644f fix(slack): dispatch mentioned bang commands in threads ef8936d5994e921e1f7512affe41f626533fed14 fix(slack): handle leading-space text commands ad8c06047d6c820292b4d2d7f351afdbf732ec81 test: cover api_key_hint in strict pool doubles + real-pool routing regression 702f5f10ad5a0b394f31a20e9b510f8d6d6f2e9a fix(agent): pass api_key_hint to mark_exhausted_and_rotate in credential pool recovery 56b2b5a3319ab6f0b2961c034040638655ac9715 fix(desktop): mark session delete/archive in-flight so the row can't flash back 4db2f78ec7f44d00a00b37ffee53c3519be20bd7 fix(desktop): honor optimistic session tombstones on list & tree refresh 66747f154ccfd36b6df63a3906d47ebefdba3f24 fix(desktop): auto-expand a lane when starting a session in it, and stabilize sidebar collapse state 87aaf877485d9cbe6ea07d67c9a5ab318ec01449 fix(desktop): render session status dot from one primitive (sidebar, tiles, main tab) 3f9944bad92ed00f9116cfbad6326cceecb39151 fix(ci): run trusted Docker publish directly (#69803) 7d96e602a9d231f63f0a6977084d627c7c9c63be fmt(js): `npm run fix` on merge (#69805) 041f63f43bb1e753461399322d9576e4dc236033 fix(desktop): capability-gate buy row, consistent refill precedence, opt-in fixture switcher 9f5e56881299e3325836ae3cc2467bf8d14d3a6d fix(desktop): prevent stale worktree status (#69781) 4baf2ed8ada8440b2d9c6cbc93272d4807f94e8e fix(ci): authenticate gh-image installation (#69793) dbf4f69b728e0cf3c8e43822fea420117e109abc fix(desktop): queue prompts during context compaction (#69783) 067cb9e033101bc576d5d32603bded3a3f13eab9 feat(desktop): shift next tab into main on ⌘W + always-shown new-session tab 5c4d358a7e1eac5ebe9a92ab9e9afeb6060aa3cc Merge pull request #69750 from NousResearch/bb/desktop-fork-new-tab 26571fa940061f52efd92cde768b772c4cf5d4d9 fix(desktop): make no-card disabled billing actions explain themselves 6d76f5ca51fb7bab759fcddc54d198ae93ffe419 Merge pull request #69769 from NousResearch/bb/salvage-69720-clarify-late f91d5b2d135adc13c329d6ead3bccfc5706d5f64 chore(desktop): dedupe session-color precedence, tighten tileStoredRow e80e0360866e75ce8e5a6173ef5e5a138e086a25 fix(desktop): use instead of native title= on clarify skip buttons 305a3c74246118e23ccaf42018dab60419c6683a fix(relay): restore streaming delivery, Slack command parity, and status clearing (salvage of #69716) (#69747) 30f6fc81e2f6cf21d57cd95e968b364403a70c31 fix(desktop): keep ever-active tab panes mounted so revisiting a tab doesn't layout-shift bf21ba08e330ae995f57ae20fa5ef57733662d14 fix(desktop): resolve tab title and project color for sessions outside the recents page d63a1c4ccb1c06f3d5ed187136f36b6df3858fcd fix(desktop): separate workspace defaults from live cwd (#69765) b162371f50d612b4578f0740fbe8c66e22ed9444 fix(ci): retain delayed and composite-action jobs in review (#69768) efa002dd5de43b5a36630b7f0adfce9c74dc0fb7 refactor(desktop): share the clarify choice row and fix skip copy 8b96fc57ed186905fb3e354761cd2e0b6b52d1a8 feat(desktop): skipped clarify keeps its choices visible and answerable 9d146c9cc27c62fb0f294ab04eb95c3c3e34a0d4 Merge remote-tracking branch 'origin/main' into feat/hsp-sync-client 35cdc63ca00abf135aa7eb75e095a3ca305bc5c0 fix(desktop): use repo-forked codicon (git-fork has no glyph) a0a24ba215b76e1f5aa15007109f1e73957a863d fix(desktop): use fork icon for branch in session context menu 957ea640de2bda785205976a3907073016badc10 fix(ci): publish inline E2E evidence (#69699) 6326b30c939952fc7d6e7a5ab686c82b4060250b fix(desktop): open branched chat in a new tab and switch to it 8a21df18acbe73c63d06747d0ab359288bf84276 fix(desktop): place steer messages before redirected replies (#69739) 2c1d585002db2d9aa919e4c7515daec9ae15f6bb Merge pull request #69655 from NousResearch/bb/out-of-credits-ux da3c506db55ab0e4fc3f6e26429bacacdd455e32 Merge pull request #69691 from NousResearch/bb/desktop-billing-polish 540836c32fa7e76ab5494096b858945896eb517a fix(sync): register 'sync' in _BUILTIN_SUBCOMMANDS 6d17b2a59376d64f5ba62cf09ba40ee00d954171 fix(desktop): preserve active correction on warm resume (#69725) ce4a08d6e11927a2358c1460c04ca69c32d51b0e feat(sync): descriptive device names (hostname default, --name, Cloud env seed) dc392a240a762cb383a2146613666853295dc660 test(desktop): reproduce steer transcript placement 2a2474512bd8d8f2589b30e0e5102beff0f77b8a test(desktop): cover queued prompt turn boundary (#69729) be5e3c0cd32bbec7b8db1e154b3495fc69149532 test(desktop): cover queued prompt turn boundary e5b83633ecb7dc9e325d70de60515430f4c043a5 feat(relay): egress typing indicators through the connector (op="typing") (#69721) a23e39fe6dc179aec965c04731c56958fadc6f1e test(desktop): cover correction resume without duplicate prompts (#69708) deadb43cc23ffe8fd76e8c486e08a5e5acd1ad92 fix(desktop): show composer action shortcuts (#69707) 43787dab14c3896acd976e6b3ecec88b10f06045 feat(desktop/settings): DOM-shaped skeleton loaders on every settings page fae3ba2c44de31c07b4202bed578041244e23db6 test(gateway): pin routine-suppression + visible-carve-out contracts 9981242f883de7acf50a6abc1532d6868d648f80 fix(gateway): widen compression noise filter to all routine status lines a2068c668bd04064db1e203fee2c5ebcbb893e13 chore: map matt-strawbridge contributor email for attribution CI ccb5cb34a50a3278e905e1bd964101d011904e8e fix(gateway): suppress pre-API compression chatter f21f388697f34d68295538f670a82c3d13c4e8cd feat(agent): detect cyclic tool-call loops in tool guardrails 3651627d88858912e8460e6f949b7125725600c3 fix(desktop): skip bootstrap for explicit Nix backend (#69688) c35fe293a1fcabdd27800219c4358938de0e9a3b test(compress): pin manual-compress-allowed-when-auto-disabled on every surface 7580bc66d5ce1c80bb0bb7bf60cd5f2a04447226 fix(acp): align salvaged /compact wording and test with current /compress command name a007ac55c6676d369ea56d2890dd56a8d8485fc0 fix(compress): allow manual /compress when auto-compaction is disabled [overflow error directs users there] e907ecccefaee9c38e4e6e968cd3822eb16fb146 test(search): prove discovery scope and bookend bounding work together on compacted sessions 98c0d8b2915374540349da6fe8da908085624e7d fix(search): require compacted=1 not just active=0, scope delegation-under-compression 711f1c2f1ac80920e1b02ce3946d4a984b026bb9 fix(search): surface compaction-archived and compression-parent sessions in discovery 8c745314b9381effe6055461db3aeca016e98bc4 fix(desktop): synchronize context usage and compaction status 1f4eaec88a469e1bae3706f33f0fd87dc591fc89 test(cron): assert no-rotation tip resolution is a finalize no-op 7fa795a6747b89b7c3b6aa1203468af2f823ea91 fix(cron): finalize compressed session tips (86e2darn2) 50026fbaa1f05060b46b08909db5473051443770 test(compression): pin classify_summary_content agreement with summary predicates on live emissions 24e4c6fbf690fa8dd81be339c0a25b9206178c62 fix(acp): flag replayed compaction summaries via _meta f508fe09c64a0ebeea5e5a4d71edae05de1a036d feat(desktop): add skills field to webhook create form 02e08f9ac4901666e2681b7260e1fc9a0ac3cefb feat(desktop): surface Webhooks in the status bar instead of nav e4b2b77852c24d86181fed002d3f31ade35578b7 refactor(desktop): extract shared Progress primitive; billing uses it 93c97073d857230b7de095b7885e25a3be0306fa fix(desktop): prevent stale optimistic tails after compression (#69682) 066b53b282e9e185fc141b3f1c24fb3b41f500af fix(desktop): narrow billing custom top-up input (w-20 -> w-16) 6283a33a50b64faf90e6c321306fa7f0fe1de9d6 fix(desktop): show steer glyph in busy composer (#69612) 433673067e6454c5e3c01d6ac1ecfd638ca377a0 ci: surface E2E screenshots in review comment (#69631) 159de0d998dbad6b3ba424f578f6fff18c78b616 feat(desktop): add Webhooks page for subscription CRUD 8d6e045b8f0506ffbc6ffef496eab413de263fd7 Merge pull request #69671 from NousResearch/bb/skin-owns-polarity c4acc4d2c5eb04492d051657ee6b32d9f407fb0e feat(desktop): add prefix/suffix adornments to Input primitive; use $ prefix in billing top-up 55759cb2737cd3870f9de4693f66fa38eaf0dd2b fix(desktop): refresh composer branch after worktree creation (#69657) 9024835bf2a435895849e90c860ad66afad9df4b Merge pull request #69602 from NousResearch/bb/voice-interrupt-note 0ac07fdafddcc086de4cb1ce70237b00ab129789 Merge pull request #69511 from NousResearch/bb/voice-streaming e762ea1741a06c26b2111d3a1021a7b1ba80a207 fix(ui-tui): a skin that authors a background owns its polarity dd3bd70f35a11773447f94c1dd4659de9aff704a feat(cli): out-of-credits panel below the response 9c274db89ff21a66b524dbce52e496e77147719d feat(tui): billing wall opens a confirm dialog d0c4a82da97cf1d8605f1bb20f9ab74141be7373 feat(desktop): billing toast + in-chat status-row banner with smart CTA 960d339f86f1b2bd25c324a8c740784d6d22aa55 feat(billing): shared cross-surface out-of-credits signal 54aaff142e299b3cd4d8a47bbf3d861e34681b1c fmt(js): `npm run fix` on merge (#69669) 68abf0b33d53403de4b00da2e3ec403881e33442 test(desktop): add E2E coverage for session lifecycle (#69580) 177a57f70cfcc65624337ea61a91a6cc6e9d63be feat(voice): desktop flags interrupted submits 05b3637d8bc6ef23cf3ecbc5ee2f3e14b32a8180 feat(voice): CLI + TUI tell the model when its spoken reply was cut 393c100a929ba77fee2b49b0db6d842f1ccb1c53 feat(voice): speech-interrupted latch in the TTS streaming core 83456d0bc6e6fb433b16b8b980e1b54df5d8063b docs(voice): streaming TTS + barge-in across surfaces 93e9061f153f4e7a06111d097a7933648b9851b6 feat(voice): desktop speech-stream sessions with barge-in capture 68e1fedd2d0d0bbc2ac5c40feeee3345a883bf42 feat(voice): stream turn deltas through the TUI gateway, with barge-in b135a8badd79d022f734a66ac965d27142b3b5e1 feat(voice): stream any provider in the CLI, with barge-in capture 8ce18d2557ba23de1d659a3aea116967742d059e feat(voice): barge-in detector with pre-roll utterance capture d8f30b1df7d58a68d722ede84bde60352a655c75 fix(stt): flag empty transcripts as no_speech 8da98ce082fa2dd0dcc0a09cf0755eb35ef72324 feat(tts): route the speaker pipeline through the streaming core 592effcb2a42dbdf0b51ac9fef7176066ba86ac6 feat(tts): provider-agnostic streaming core with a shared sentence chunker 74951552232fe535577a865d5e5c713ed9db125c test(desktop): run visual E2E offscreen on macOS 1f33fb2d00ed30ec35ff4610ccd51236f6f4dc7f feat(sync): env-configurable sync defaults + rename local .sync_manifest 15dc65eeda397a5d4d35edd6779141eeb8139944 fmt(js): `npm run fix` on merge (#69651) 73c7f68456afed688863ab5441800b9c6cbdf48f fix(desktop): avoid duplicate inflight user rows on resume (#69649) 3c4154aca4768e67936cd978249d38aa8b00b0fe feat(sync): opt-in as content sync-manifest (design.md §2.8), cross-device 1b8e34e9456337955cb90a4e29afbaf7785189d1 fmt(js): `npm run fix` on merge (#69644) f9a8ecc0ce7e8d957a969c6c5564c47f752cf614 polish(desktop/billing): auto-poll, no-card notice, grouped card layout 705538537915c3e8a340c2161b5cda86350317bd fix(desktop): warm-route resume jitter from double setMessages (#69635) afd0b3ecd4e6f66b1cab6da70778bcfebd13e887 fix(observability): keep Relay session headers local 4add7d0c12883d73bbe0bc149ac0e24726cc3150 test(packaging): remove Relay dependency change detector e0d62b509e6ba72a70a809e8d5410d88f4d89051 Merge pull request #69632 from NousResearch/bb/skin-terminal-default-fg 1f652214df465b86b5ac8cd1d8eaf78215e9d501 fix(ui-tui): skin owns BOTH terminal defaults — OSC-10 foreground beside the OSC-11 background 2244be2282e29a155379e83c20a99942045d5172 feat(devshell): add terminal UI capture tools (#69629) d6080d4cf7dd642a43a587260121770dad25786a Merge pull request #69616 from NousResearch/bb/tui-input-theme-color 0033cffcfd2bfc543ebda71454321f08df9ab0dd Merge pull request #69613 from NousResearch/bb/fix-first-response-nudge 2a3e3157d2900c0f4319c66294b6154f11c92bf4 fix(ui-tui): themed input text — typed text tracked the HOST terminal's fg, not the skin's 2a672f28e11234b3dc27d73af04327a21089fc87 chore(deps-dev): bump setuptools from 81.0.0 to 83.0.0 b9ae75718bb1e66f3da87b7ba654043c00fa9d28 chore(deps): bump mcp from 1.26.0 to 1.28.1 b5d82319d8f77963c466d395c28267d26bcccd0c fix(desktop): keep first response layout stable d84e11af4d9927c41ad0a3b4db72042cca250c64 rip out brew + pip/PyPI wheel support (#68217) 0ee05d72f2b30385d4861fd8e30511c6d51100e4 Nous portal model pricing (#69579) 681abcc897da1b6b111540e957a3757c7c565753 test(desktop): cover submit drift through e2e (#69599) 41e00dcf870e540994d50bad01ed24c2d37d75ca fix(desktop): salvage /compress cluster — session.compress RPC + dedicated RPC routing (#68229) 0a43bc83b95a34054604e7fd2fd782b472e46fa8 docs(config): remove internal telemetry phase wording 1bdd478efac64ef95c04d38036f6966603ec602b fix(desktop): scope submit drift guard to genuine session switches (#69578) 91c8f88a2d6a9e29c41e1f3dafbf4adf9b198c51 build(deps): require stable NeMo Relay 0.6 87088d1821a3458871ff54f037d048359830b6b8 Merge pull request #69581 from NousResearch/bb/skin-live-edit-repaint afd0270a643c147b958c39844fb30d0b7d4a1ef1 fix(themes): repaint the desktop on an in-place edit of the active skin e0b9ab5ac5d0b593df4f4a289200fcc116d5f75f Merge pull request #69533 from NousResearch/bb/skin-live-broadcast 39f72e4a5ec8ad0dbc42f4ca7d9730ca15e43919 refactor(themes): DRY the event frame, type the transport registry, tighten comments 0ec4a873c14d7357818ce220eb18a9daa7f539af fmt(js): `npm run fix` on merge (#69562) bb24364f25ae2d9352a8b2849b79fe690662dfc8 Merge pull request #63104 from NousResearch/bb/active-turn-steering c07973aa81b382168f0db68d2e1420884515827e chore(gitignore): ignore installer .install_method stamp (salvage of #54855) (#67364) 5a40fd3777329ef8c1ff77fefdddb90f6082ef37 Merge pull request #69453 from NousResearch/bb/stale-js-shadow-guard 02fa447f8e5cf0cd213ce58ad67a86ea2cd75413 fix(desktop): validate gateway WebSocket URLs 9dbad8107792f19ef5d8d73bc505ae6944715c59 fix(themes): re-affirming the active skin repaints surfaces that missed the activation 76ec8c353e4908b3ced79bda54427b95305d5bca chore(nix): update flake inputs 7cd231df9494a4b85e29a016ca8f7c9ce897b5c9 chore(contributors): map dev@milanglacier.com -> milanglacier a8be142104096efdbb75e27909c646c4e0dcc1d9 chore(contributors): map development@schmitthenner.eu -> fkz d3c43bcc34fef342b02b0db1f849cfe8a8f4b7d8 fix(tests): pin gateway platform env in fallback-chain + session-row tests 1ed7a0c0fb9da01b8324f6261a23ee95353c3843 fix(desktop): preserve slash command and host compression semantics a209ac9936ffb82e8732d3bcaf61f6687fbec0fd fix(desktop): preserve provider choice during config initialization d6928c7d16cc2448bf691f83445a9e081781d20c feat(desktop): route slash commands with dedicated RPCs to those RPCs 949f123cc8461f54d287e1357f0acc4c90f1361b fix(desktop): route /compress through session.compress RPC with transcript replacement fea838c9f26ac00c5931a4ac13764ae49361428b fix(auth): detect upstream Codex quota resets and lift stale pool cooldowns (#69494) c2ab0da14fe0c022a8999bf245f285e9dbe24de4 test(ci): isolate systemd restart routing from host D-Bus 345946166303724368089f1d5a1dcf52abfd5265 fix(themes): broadcast live skin.changed to WS surfaces (desktop/dashboard), not just stdio 2b27c171cab8592f648813269a72fb46b5ba8a69 fix(redirect): cover the build-window and post-reconnect correction races b591afe1af85830782ad78553a7cf08ce6603c99 test(state): cover pure-Latin embedded-in-CJK recovery via the cjk index 96560ee60f3b2ab64a5777e40f010e4586c40710 fix(agent): recover pure-Latin search matches embedded in CJK text (#54242) 1d49f0c917c90ef65e3180f571d1a71c8d6bd503 fix(runtime): finalize Relay iteration summaries 537425ebe4e0cd4a96a0d93dd1338e42d12d0ab6 fix(runtime): close abandoned Relay streams 59614ef9af7c9415e3000c6446c8eb73e17c8f31 Merge pull request #69505 from NousResearch/bb/inline-msg-actions 9160f10fc95bd97514efa49bf3bba311b6b21d90 fix(desktop): tsc clean before dev / build ca244e2168e0fa141127f7d0da9317b1145f3e0c refine inline message actions: fork icon, sine-wave read-aloud, shared age util 4204e6d1cb9c0acb37af3db8371368e76e0926eb Merge pull request #69519 from NousResearch/bb/desktop-preview-open 70ba3c4828c537380bf373d62cf2bc15070446bd feat(desktop): agent can focus panes + shared desktop-UI event bridge 3d40a1cbf2421419ee011095678c423cbe22a0bf feat(desktop): Cursor-style stop-and-correct on the composer 79b047820f8e7e8527b3293981d9d0996b36dcab docs: describe active-turn redirect busy-input behavior 34d0de80e64a47cb1022d99b964d3755a3c2bd3d feat(surfaces): route busy-input corrections through active-turn redirect e4877ba96e85f75d007e073b1a59326c3641b7f8 flatten assistant message actions into an inline icon row f071f42244bd6bdc512dbf7221008f23f5727c14 feat(desktop): let the agent open the preview pane f6d2ee4afc25dea1b4df64c5be89115eb432bde6 feat(codex): honor redirect and hard stop in the app-server runtime cbf5b05c704e3c6c3fb53b3dca2cbd6f0d1ff61e feat(agent): add active-turn redirect core primitive 9b1028f2974f7b456285b23b28eac5336f71e13c Merge pull request #69501 from NousResearch/bb/interim-message-actions 72dd01c55301fb7b87f0417d594d7738c91f3094 fix(desktop): no per-paragraph action bars on sealed interim messages bcc3396b25ea51c8e61f9781c716d71ec414d0f3 fmt(js): `npm run fix` on merge (#69503) 163fab8d00ed5785d5cdff24362c56c283dd38d0 Merge pull request #69077 from NousResearch/bb/desktop-memory-dropdown-discovery 1efe7094ad24cad0cefa1c0ab38705e4811ad73a feat(compression): harden idle compaction — lock/guard interplay, config + docs 72056faf8f4258814ed99097a989b50ecc6fc219 feat(compression): add opt-in idle-triggered context compaction 76e17bc32d988be30713edfe0037b2ca61402f9f fix(compression): recover merged-handoff prior-tail content through the decay scan a4aedde3ae21a4a7fc578d26454bbcfd2c3a1a7d test(compression): adapt salvaged pins to task-snapshot grounding + add restart-simulation test 08ea88f4f72fa32a6e4dafc094fb6cc9abf8098e fix(agent): decay protected summaries after restart da20df2647e87728c0f5833ff9e563489f490385 feat(nix): opt-in NixOS VM integration test for the module fa7937fc64972cf6349dd60b5da41b8307f2e684 refactor(nix): dedupe check boilerplate with mkCheck; add meta to tui/web 761fce7f79c274b7e4da1bf782b22169ee78b02c Merge origin/main into feat/hermes-relay-shared-metrics ba61f61f9a24d7f434bd13d91a9ec746fbab26dc fix(nix): load bundled platform plugins from HERMES_BUNDLED_PLUGINS 21b7282a7bf9a7f9b871354a1b7080434fb32006 fix(lazy-deps): skip ensurepip bootstrap on managed/package-manager installs 10526c34ef33957e3f0b5d4fd18d5e5b3d3bf3af ci(nix): restore nix CI as trigger-only workflow with local entrypoint 7e5c240bb3cce1f2c43c880c9e9e1246b9b76e38 fix(nix): set HERMES_BIN default in wrapped binaries 64f1784e0ad32193f7e0a82d0e68bc15cd9b5cab fix(nix): Remove hardcoded hash in electron headers handling in desktop.nix f3c6282dae2422cbdf02fa6c7656fa3d38fe1f39 fix(catalog): point seed entry at a real plugin subdir ab1d9f4c15796f955283ea214efb4b93943464c0 fix: dedupe catalog sidecar helpers into public aliases 7880be4580a975cf18ef2a8957c72c947cd235e3 Merge remote-tracking branch 'origin/feat/plugcat-dash' into feat/plugin-catalog 741d06445db6c1ce9889e8132d19d49cc29ca2b9 Merge remote-tracking branch 'origin/feat/plugcat-cli' into feat/plugin-catalog 1c3d6e59dd7460f94887af907f54a97cc5adbf11 Merge remote-tracking branch 'origin/feat/plugcat-docs' into feat/plugin-catalog ae68edcfe32a61782223e2966e15b6817c93fbf2 Merge remote-tracking branch 'origin/feat/plugcat-action' into feat/plugin-catalog 355a8e407688dceb4954787fe521af0e10f2270a Merge remote-tracking branch 'origin/feat/plugcat-core' into feat/plugin-catalog 373ad70f4ca4391f06cb26bb481f942b594232fc test(plugins): cover catalog CLI surface and plugin validation f1b30414d5fd1ef49ef70d368d57da1e6b87abcb feat(plugins): catalog CLI surface — search/browse/info/install/update/doctor 44624631bf0547a3836d2d6e84d85a62619ca246 feat(plugins): subprocess-isolated plugin validation for catalog CI 8b70bf4c40b1f0d28fd5a9b9f3da4ad676bd68b9 feat(plugins): live catalog index with 6h cache and fallback cbc1054e2387c51b51f128b24a507481dc5b221d fix: adapt compression attempt logging to current main aux-call contract 356ff99030d85354b4220265db735d03b2e3dc40 feat: log compression attempt telemetry 5a3ee3c537b3226fed21ccc733314d775266b2d2 fix(compression): let handoff-strip supersede the head-copy skip 2b84ed921c8b721e6462ee54d72131be5e26f9ce fix: dedupe persisted compaction handoffs 020bd1ba0a4f2f9492b33f072877b761475326f2 test(compression): behavioral + config wiring coverage for threshold_tokens e5078e31525454a6c56ea0905a178bc6910c777d feat(compression): add absolute token threshold via compression.threshold_tokens 0acdf1d8c8a27615691d4b526749f299b863264b fix(compression): apply strict redaction at every compaction text boundary (#69294) 2ee50c69d3a1a4aef5f2dfafea17006d4b5b7eb0 docs(compression): note blank-echo removal survives summary abort 97cd0d98f16fea173d4fb496ffd012de9288e1b0 test(compression): cover leading and input-text blanks bc4824167d0b23aa123b65a7b1aa179ce268fdd7 fix(compression): preserve latest actionable user turn fe9dc0607103f236156530be03f23a06cb726f09 feat(dashboard): plugin catalog surface — browse, capability-confirm install, removed banners f13f845116941ac5616e8df3294f3379a3efeb20 feat(state): messages_fts_cjk — CJK-bigram index on the v23 external-content layout 8364576e337b8c213d32169871121e7432b1905a feat(state): slow-query log for session search with routing-path attribution b10952e9c6fc165a1a71b52798ddb6fc8482c1c4 feat(state): cjk_unicode61 FTS5 tokenizer — unicode61 + CJK bigrams (native extension) 6f5608bed31167b971bede98f85a3db87a61a84d test(plugins): cover plugin catalog, version gate, and installer dc4d9913732fb46c7863a7a6fef4b03f9a4242f6 feat(plugins): install-time ref checkout and removed-blocklist check dcdb9b25e4578f51f6ec644f8174c0b0c0769b76 feat(plugins): requires_hermes gate, config spec, ctx.plugin_config a22d2918d6c19ea0d10c7a31f0843f88ea5a072c feat(plugins): add curated plugin catalog module and in-tree catalog dir fb40a768fcfba5206cfb5181feaf545d92e5cead feat(docs): add /docs/plugins catalog page fed by plugin-catalog/ extractor a39bfbd80334b2d7d60d61d4d8501426e37d1731 feat(hooks): outbound webhooks — push signed lifecycle events to external HTTP endpoints 17155e3ae04d376dd8eba2e65f3dd966e67ab1ba chore(contributors): add email mappings for slack thread-lifecycle salvage 5d747a91c48b19b274e357cd840791ca62a60212 fix(slack): humanize inbound user mentions + ground bot identity 503c0c0e51910a213c935c33639016264a3f34f5 fix(slack): expose shared-thread author mention target 73d5c896ee66750b3e6ffb26feba09595c6f1a42 fix(slack): route replies from mentioned thread parents fee392fee14413f71246e7675833a9dc48bc6302 fix(slack): wake on human replies in threads whose root we authored fc0009b9ba0a58fe9087b2a46e95a5a7af41b5d6 fix(slack): rehydrate thread context after gateway restart ad4034711d246234899e47aa36db1ed4112e2a7d fix(slack): refresh active thread context on explicit mention fd433e046aeadaf9a5e587c756484c060fd13837 fix(slack): preserve thread context for commands via channel_context c8089dabcd6a1f6e67fbe5e99f4d4b5c5ce1f485 fix(slack): include bot's own prior replies in cold-start thread context 2d71e9e9bc3d4183b3fd586a4ce12fb3aab98a4e fix(slack): ignore stale thread sessions when gating thread-context reseed 8dd07bd51797db3294fef816cd5cf766370d45f0 feat(ci): plugin-validate reusable action + plugin-catalog admission gate 70caf3020365fb4829088dddd5de28bb8ddf61e5 fix(observability): coordinate Relay plugin lifecycle 40c3b62b301d067d88c8b8870ca02447b759d5e7 chore(contributors): map MrAbsaroka and 87degrees emails 3c5c389f189dc335dabef6869f9d9e3b95068253 fix(slack): widen Socket Mode dedup TTL to cover reconnect redelivery 45556b71ce0516327e35c5dcc471fa74747f316f fix(slack): close clients on gateway shutdown caf8e2f214dd1d0742a3c30e9ba2f63374a04777 fix(slack): heal wedged Socket Mode via ping/pong staleness 7bbdabbef2fd907b95c3b053ba2fe82c6d1dba78 fix(slack): stop client tasks before closing the Socket Mode session 54a0f07101a4024b03cd33e73d9d499e94d61113 fix(gateway): mark unconfigured platforms as non-retryable to stop reconnect loop 77beb6a0858d4b30d803abc200658039d38e7768 fix(slack): set non-retryable fatal error on missing Slack credentials b281134fdd9aa0fbd0306a2a7b8d5ab4ec38feeb feat(desktop): hover X close button on zone tabs d358280ad7fe4b43b97398ee382cfbc56dc4dc1c test(gateway): thread follow-ups survive a pending native clarify 76283a9ee4224a6b21f13c9b612b3a056bab6a28 fix(gateway): suppress tool-progress bubble for clarify prompts 07cbb500b62f4cbd29929c265962763531c51e49 fix(clarify): reject arbitrary prose for native interactive multi-choice clarifies 95aad9229b066a7f40285bf946c770a423a2be6a feat(slack): Block Kit buttons for clarify prompts f944e848582f819fc66ee4d893b2c9c8b1feb2d7 fix: close review gaps for per-model threshold overrides (#63020) 5f2fdf66bf213a71bf62091943e4d68f354fc540 feat: per-model compression threshold overrides (v2, rebased on main) f453c50b6fa0b341080ff99074c9e57b9a071da5 test(memory): behavioral check — memory tool handler works with skip_memory=True, provider stays skipped 45182401fa8aebe29c2330319e06a9b232c6e020 fix(agent): add regression test for #65429 (memory store with skip_memory + memory toolset) 596dda907fb9d7db70ac52440b0db50195d835c1 fix(agent): create built-in memory store when memory toolset is enabled despite skip_memory (#65429) 9bb253d4fa1dac4c8b299a803fe90df7891050a7 fix(tools): filter compaction summaries from session_search bookends and cap content length 75099ca0efbbec93b31d8814f2ae8341d6c6a7f2 fix(state): inherit git_branch + gateway origin columns on compression children 3c74c12554b769191aeb65ca9ca0dbcb7db1e305 fix(state): inherit cwd/git_repo_root on parent_session_id children b6a2b701c1d323db3a620ab19ea0db6d931955c8 fix(anthropic): extend leading-user guard to the extracted-system-absent path e71c1137e8cfca506803f37c67cdc76201310182 fix(anthropic): prepend user turn when compaction leaves a leading assistant message 17fa5910be4277ef4b4424be3b847ba54f8e0a38 chore: map contributor wernerhp cc84af9fad1c4bb943eb0717763d08af46695d5d fix(memory): preserve genuine pre-delimiter content in merged compaction rows 004de13f14ce1c21bdcceaadfb8d83b8f001eef7 fix(memory/holographic): don't harvest compaction summaries; honor auto_extract=false string cca7b93bfee43ca579e33667adb1cb9cb2910a15 chore(contributors): register Sora-bluesky email mapping 19a59f7d7b73f47b81f566118969b913853be52d fix(compression): mirror the full trigger recomputation in the suggestion guard dbc71fb6e4031bf2aa1274e24ba901f8cf33f757 fix(compression): don't recommend a threshold the small-context floor will ignore 295e20358c8a0a32d5c4eb71107abf322998179c feat(delegation): let subagents use execute_code (#69325) b2ba069cb44973b04cfdf62cc3e23a9c83bfb2b0 test(slack): regression tests for Block Kit boundary sanitizer and oversized edits a43ac2af65036092c3a44c8e8fadf6d492d4e753 fix(slack): sanitize outbound Block Kit payloads at the API boundary 72da4f8657ef26451fccb8d1210c812db3e03315 fix(slack): truncate edit_message content to prevent msg_too_long a2d8b4b1f6d5074002bbebc1c89453852e9e6b8f fix(slack): guard against empty text in chat.postMessage c13af091774ccf1d1cca5fc86bb9c88fc4bf41ac fix(slack): truncate inflated original_text in approval/confirm chat.update handlers 8fc0c086f5ab10407c294eeac5e47dff4afaf42f fix: replace assert with runtime guard in Slack block_kit rich_text builder d91a1439775e4a321d3d83bf17138d5504e9c749 fix(slack): guard rich_text builders against empty content rejected as invalid_blocks 870770b31ee00f9fa1d44c4b82beb318f58abe67 fix(slack): harden rich table block fallback 961b832c11504a84b1b99c115472823a13950f12 test(sessions): cover branch-seed and compression timestamp round-trips 9d73006ade5a5ba336fcbfa27d2a2b932227d501 fix: forward timestamp in CLI, gateway, and TUI branch copy loops 1927b6077557a7b25be637ef25a4a54ed7fae9f0 fix(tui): extend deferred context-engine finalize to the compute-host compress routes 7d4ed8e3217191ea65fc3f8ebca4019333363457 chore(release): map the3asic noreply email for contributor attribution d46f0fb2d5d0d68da746d7bb99849e7f130cd2a0 fix(compression): notify context engine after commit 15d33d5ab181c7f5e683cc6724ade2decd28d930 fix(desktop,tui,docs): dedup commands.catalog, route desktop /compact to /compress, update README 27a4e928024e334b3371c81ed5a9c5875fefdd41 fix(acp,tui): rename /compact to /compress and /density to resolve command collision cb39be92e428acb251860bd554368ac036a8d088 fix: update test assertions for /compact -> /compress rename 4c2e34f07d69ab3b180b2ffc1e541f1bca458871 fix(moa): measure advisor guidance before compression 8a580e8e31bedbe03c01590015f1f62f38d35647 chore: add contributor mapping for tandixit95 2eb6c84bbb24ce6ba621f99ba091177f669c7a13 fix(codex): wait for compaction turn identity 63e363f3066fdc7a572768d8ff8426eb185a7716 fix(codex): scope app-server notifications to active turn 453d0ee59850953ac386759ecd54b20470ff9e86 chore(contributors): map emails for slack block-text salvage (#29541, #61261, #52390) 3865694cf9447df215eceb9d4b1fd274a3117432 fix(slack): surface Block Kit content in fetched thread context 1f92842c1c6170895013320a6bece2176d2feaa8 fix(slack): read thread context from attachments and blocks 1e0f5a6f07218cce5eb15ba481061871dea3cdda fix(slack): detect Block-Kit-only @mentions in bot filter and router 8fceaac14305fb2305e4037f7070aad8d5fd7a2e test(compression): adapt strict-signature heartbeat test to signature-inspection dispatch 7f9956a6798dd1481a7eebf0062fcce14f81e9c9 chore: map contributor email for @WeiYusc 928bcdde246484fd2bd2c46d31f98833ced41aeb fix(compression): refresh gateway activity during compaction ea0fd393db290e7ecef7b01712e1fcc6b4224f3e perf(compression): gate CJK-aware token estimation behind an ASCII fast path 3f33a1c5aa5db75bcf975fbaa6eda6511652c0a4 fix(compression): handle CJK token budgeting a269a5b38c149e2fbc0b94773a1eb0cf06c0d1fc docs(compression): note acceptable false-positive path in zero-user provenance validator 7de7a073c65024429d075f0b703fc90e2ecb762b fix(compression): preserve synthetic user provenance c93e4041b63d8d613d952a71f2d426d062ca9048 fix(compression): preserve zero-user provenance 1c2faedd88392f93fbb64e9410bc25f2f095511f fix(compression): unify the attempt cap across every compression site cf433a33da7f4ac8e57d81573aeb25bafea7e39a chore: map dombejar contributor email for PR #63870 salvage fca883f06f63583b728b2db43c8d842d84542311 fix(compaction): cap post-tool attempts per turn 644b397fb29768bdfc8c3ada79a0d8fcf5349ff9 fix(agent): make the compression retry cap config-driven (compression.max_attempts) 28b6bd657020334ef8e84eccd24f3f2aae98c46c fix(api): preserve compaction summaries at any history position during Responses auto-truncation 3807df7a063518d473f077e9879cf2d735dca9a7 fix(api-server): preserve compaction summaries on auto truncation 1c21e96ed022761409b9fd17f9ca66efb276a547 refactor(api): dedupe compressed-transcript persist sites, drop config opt-out 146a545491a2f4ccc4d35b8e15cfe1c5122a5e2c chore(contributors): map LiangYang666 emails 4166fdda6a844d943e198d6d812edf55c83c509c fix(api_server): log warning when compressed response_store persist fails a26ed50e07f52da9e8b6ffda3a84b1f3e9dc2b92 test(gateway): exercise real compression detection path with fake agents f66e773c442fa32aef8fc06568070e3c94357ab5 fix(gateway): in-place compression not persisted in response_store 2ced02671e17e4dfc9fe76afc305ebf22c1248f5 feat(api_server): persist compressed messages to prevent re-compression 806b34ced98718b43a1e183aa30d7435e6173f55 test(gateway): add regression test for compressed Responses transcript storage 85f04d4d7e73fd8c36cc9b9a2a9d3a9732b6adfa fix(gateway): Responses API stores bloated context after compression b1201213b7fc984b16d374198730b074b8ffa02c fix(gateway): honest durable ack semantics for undeliverable async completions f1a1d2daf5998af048efa02f8baaec1131f585da chore(release): map richkapp in AUTHOR_MAP 93ff129b51d4a764c6fac745ee2c22dfe56b02bf fix(gateway): follow async completions across compression 4d23b2238eeba5910e57e68f75de387f33841381 fix(dashboard-auth): harden the public native-authorize surface edebe45482741e3262444396681a5697f6b6e27f chore(desktop): drop unrelated assistant-ui bump + lockfile churn 49423f80847a635ab0228fff2299814d00f70c64 fix(desktop-auth): make RFC 8252 native login work end-to-end at runtime 7857d8737c2fb0fb8aca74cadae5e0685a58ce4a feat(dashboard-auth): RFC 8252 native desktop sign-in (system browser + PKCE, no webview/cookies) 9fed768b567cf326d7790a85d417889ceb5c1b7e fix(desktop): scope model options by profile (#62795) 8967e73e67838c8a67cc412e9c8eb9d791cc1f20 fix(cli): restart managed dashboard service after update (#39166) 8f6ecbae26ff7d6754ee6e566d260736f762d0ff fix(tools): /tools shows the full pre-assembly catalog; adapt tests to tiered disclosure a521ed703b639db4cf1e0e80116c2e42d657e010 feat(mcp): fnmatch glob support in tools.include/exclude filters 8660cb659955b2c52f53ec93c321ebf65a643015 feat(tools): tier-2 server-summary hint + per-server listing degradation; 5% default budget 91da5ca28ec3b92e8cf6cd5407018a5dc8d327c1 fix(tools): rename provider-illegal property keys in tool schemas, reverse-map at dispatch c80ce5aae28e1fd893662bb0c41ea08e5e8690d9 feat(tools): tiered tool disclosure — always defer MCP/plugin tools, scale the listing with catalog size d799184ede192743e5e2866aea5130fc0fa16120 bench: discovery-bound suite — paraphrase/absence/survey tasks isolate the listing's structural advantage 805e9ca5017ceee40c7b80d78b4d097a1a45bfd8 bench: adversarial 830-tool gauntlet — confusion clusters, type-aware error mocks, strict scoring 72324eacbe4cff89b990c9671c58fe32edb232d6 fix(lint): explicit encoding on probe-file open in UE harness (PLW1514 + windows-footguns) bc36ff70830e43f3eb2033b20381bdc0d1f6a166 bench: Unreal-scale live benchmark — Epic's real 830 UE 5.8 schemas replayed (Opus 4.8) 4ddb443c12bcd10bf994464346af21df72fde49d fix(lint): explicit encoding on write_text in livetest harness (PLW1514) 3ee3394907ef50970e58d2e9f24ba22cb9d8ef1d feat(tools): skills-style catalog listing for tool_search progressive disclosure 9acc4b47f5b2abda0949d07372ecf67938d50a16 perf(state): external-content FTS + tool-row-free trigram index (schema v23) (#65798) 0faf4c838cde62506455e882e7a2add8b25c6f43 fix(secrets): unify encrypted-cache fallback with the merged stale-cache path e89216e7f5d5ce9edf186082160791d207901828 fix(secrets): harden encrypted Bitwarden cache 13840877297d35a45b1c94d84319084b083fdf75 fix(secrets): add encrypted Bitwarden stale cache 8d811f5c4513524671deccf0395989481aaa5678 feat(config): resolve ${env:VAR} SecretRefs in config.yaml, matching MCP config (#69267) 1cb67a5916a04c431f1ecad3b48a85e09670e436 chore: suppress windows-footgun on the POSIX-gated killpg call 4f0ee4d3ff1d8edeeab4b78e7c983a195d5b8ddd feat(secrets): rework command source as a registered SecretSource — no provider selector 3d5dd8efa54a03efcb6c2686d937a44904f97ffa feat(secrets): add `command` secret source + unified secrets.provider selector 4c64ff3aa07c54015e5cccc924973f50f033bc95 feat(nous): send top-level session_id for provider sticky routing (#69253) 0c4cab56b4ba0f01f37fd4d36cc7021b1bc69894 test(secrets): match real ApplyReport shape in isolation test 0583692c2d7ccc746893151f45796d5073a289d4 fix(secrets): scope BWS-injected provider keys c6f9e0c748677fcc46f62b71cc99a9069239de5b test(gateway): cover routed transport delivery ff46376614e0175c4c20a75a30604dd4a9ca79de fix(gateway): preserve shared route transport adapter 86fb046383fe9d3b72e89c211191fd404f00676d feat(secrets): orchestrator-level preserve_existing + profile aliasing (#69058) e66e02dc83e7b49d1d0e312883328f5c9db7f39b test(gateway): activate multiplex flag in cross-profile env isolation test c758ded6d2c60dc6ff6a84cc9263e49c18419769 fix(secrets): fall back to os.environ on scope miss when multiplexing is off c7b0c0d35fd6b2864d0772c60b3648dda170ee94 fix(secrets): mark _APPLIED_HOMES only after a real fetch attempt (#40597) (#69056) 8e089db689da1286a6b05fc42a8acf2dafdb73e5 fix(secrets): validate bitwarden status token fe5d0be6db2d1b248cf7f07ba2f9ec1391dd5fbd fix(env): stop printing Bitwarden secret names 2beed8b53d988f3bf79e522258287e2b822af507 fix(mcp): pass secret-source-injected env vars to stdio servers fe8c0f7eef1edd447e53ba15d07589a98034c0c8 fix(secrets): pass OP_LOAD_DESKTOP_APP_SETTINGS through to the op child env a616b9fb0f5940f3ded6f363b4c959a56d851645 fix(secrets): fold OP_CONNECT_HOST/OP_CONNECT_TOKEN into 1Password auth cache-key 7db521a69722d76e2954a6b6fe63f780de9f4bd8 fix(secrets): port stale-cache fallback to current DiskCache API + gate by error kind 77f3b3ef7fab1edf0d496c7e0a9a1f17d9db2f2a fix(secrets): fall back to stale disk cache when bws live fetch fails 7de554277de632364c74fcf8641daa58a9a977d9 chore: add kshitij@kshitij.dev to AUTHOR_MAP 0c76cc6c36f51b3ac8c9b3a1bbb40b4f051cf530 fix: discard both session IDs on compression for profile re-injection 8af21330097d8c8de4066d99509fef8b8ed79ae3 fix(openviking): align session context with shared profile contract 11c1ca01c55433528a40c2e4170960e88e75ea6d fix(openviking): inject session-start memory context c3c80e17968a0d62b9ff144c7bb798481f7e8107 refactor: cleanup follow-up for salvaged PR #58871 81fc424592d628b3bc0e4cb5624eba4dc2312c87 fix(openviking): chunk structured session sync 3fd96583f474b8504639a86ed2694a5a9c2b6406 fix(openviking): serialize orphan session recovery f7c198dec887240a323871cb992a55cf75d53d9a docs: clarify OpenViking local setup 323e9baf5d6914d9a2cda86d083c8de0dfeef502 fix(openviking): recover pending session commits 9ecacd6bf414d272b40ac5756650fc1014143e8f fix(telegram): update auth check tests for group_allow_from split 7078430934012cd38b58d85bf23e62baf296e153 fix(telegram): address review findings from PR #67816 45fce38b9edd426616a08ffcbadf866fa7070934 fix(telegram): group authz fallback + command sender identity 9eb7b1a6b1ffdd4ad1a85aee3f38edceee2b927f chore: AUTHOR_MAP for McHermes f4896015c113bac60de7d233585a139a3d78bf5b fix(compression): ignore assistant handoff summaries in tail anchor 9fa2906c189bc840fa6300974d32ee7ba37410c9 fix: restore base_url rstrip, extract should_clear_context_pin helper 63dd651b3d644d5f7c61380405f693ccd95dc23a fix(providers): scope route-owned runtime settings f3f0135154a7e0a8d3665a92b9b1f933a007fedb fix(providers): fail closed on missing active route ddd667503e20bc0ee48ab4dea0887e990f5d6dff test(providers): cover URL whitespace route identity 639cee521644b61e338142386429b1e7266098f5 test(providers): complete hermetic route coverage 2507af2194285cde24751be0001b5826fc2e43f9 test(providers): cover query path slash identity fcae6fb9b804308e934378da902d326fba84652a test(providers): cover route URL identity boundaries ca6b8cd85f663b7723037ddeacabc39b4ce6256c test(compression): cover overflow after blocked preflight cb785e6b4927df6e32db4392518312cae95924ed fix(providers): align custom route scoping 97499d702eee5d98c1f763678ee4084a37a6d328 fix(compression): harden startup route scoping 377244f7c825a2c6c8e29ac485eb01d038f4432b fix(compression): prevent stale-budget retry loops 3e953ed815ffb1e35277a77eb3e764d39dcf36f7 chore: AUTHOR_MAP for tinetwork 52d219b072bf4661e8d1c683b0c0c570e09e1225 fix: refresh vulnerable npm lockfile entries b7b0c37ef75e18257d6a26957c56f6db4cd5a6b7 test(update): cover fleet restart timeout isolation (#68523) e99882c2d91bd323a55529e49ac29a3cb9d77fb8 fix(update): isolate systemctl timeouts per gateway unit during fleet restart 4999de8fe6287d688bf30f928553fe85edae3cc3 chore: map anoop.mehendale@gmail.com -> anoopmehendale-cue 2ab153218ba401525ec02380305f8c3c4c8b1dc0 fix(gateway): make adapter fatal-error handoff cancellation-proof; exit if a platform is stranded e57918ac800121cf9c2956fe55e27df3ea80b562 test: update mock assertions for conversation_history kwarg a46fbafe314d37c25ab59aed765a2b11802c2f93 test: drop source-grep change-detector from #68480 1c0a57832bb1e0672d8c07d5a0549eb9806de061 fix(cli): pass conversation_history on /new /resume /branch flush 4425ddd94d4a98accdcd8526f6a062a10e65fc5e fix(gateway): hard-exit on KeyboardInterrupt path too c9ab8baf31a496c24641a0d301633b5d72497576 test: update gateway run stub for hard-exit helper fd96e138b64aa9f2266e971700df7bfd63cc41d5 fix(gateway): hard-exit CLI runner after graceful teardown e60a4ccbf4a291a387fcd71f063f78fc98c0ff0b refactor: tidy dynamic schema-options merge baa3bf39156b6174bbc8219a123f6a285ca25ccd refactor: make memory.provider schema-driven instead of a 2nd fetch 3493a6c73c282e8d2fd0ed8fdb1caf11d204b561 fix(desktop): feed memory.provider dropdown from live discovery d8bf3df255beccef4b55b85996884525e2ec28e3 fmt(js): `npm run fix` on merge (#69067) 60ec6a3b8ee147406ecb1ab1bab9cec673995ad7 feat(desktop): native in-app downgrade — chargeless preview → schedule → undo (#68761) 4b3ad6cb9438ae1be890762fac82f035799c15cb test(gateway): activate multiplex flag in cross-profile env isolation test 9baad4e0aa93cbc77326ce1d9cd3fc6ae73ece76 feat(cli): plan catalog on Free + plan= deep link + top-up/auto-refill copy split (#68689) 14f84410099f66240a9c9b16267343b599483c16 fmt(js): `npm run fix` on merge (#69050) 7c68b4eae1a1de14a569d6df371c55a1a2dc06da feat(desktop): Billing page revamp — current-plan card, in-app plans view, tier art (#68722) 5c4c419307b4f3f068043f89c63684f02a6a5f47 fmt(js): `npm run fix` on merge (#69048) 367810a942f180d03042f6c976108ab6c266d52f Merge pull request #68857 from NousResearch/bb/theme-sdk 808e208a88c4f436963df37d6231b8e8c748268b feat(secrets): orchestrator-level preserve_existing + profile aliasing 6766525b7d4d54cfd6f206ff22b1c8252895f35f fix(secrets): fall back to os.environ on scope miss when multiplexing is off ca02692303dbb999d4c82f010025a40d26db87cd fix(secrets): mark _APPLIED_HOMES only after a real fetch attempt (#40597) 6ffea7140074a8a220af6d574309b35eb06e1915 fix(secrets): validate bitwarden status token 7dc535ad64ae77dc197bd104e655ca5cc36a4327 Merge pull request #68306 from NousResearch/bb/tui-widget-sdk 8f51376db3326d12c54e400bc6bfd417112813b4 Merge pull request #69040 from NousResearch/bb/fix-verify-candidate-warm-payload bb775a5e387f801af79ff26128b943a3523ef796 fix(env): stop printing Bitwarden secret names ead4374d916cb37000e862c9ee228967ae8f939a fix(mcp): pass secret-source-injected env vars to stdio servers 90e319d24287f3c975f69030276f1f4bc2368f9a fix(secrets): pass OP_LOAD_DESKTOP_APP_SETTINGS through to the op child env ed2d9ec11d4bb2ed41f81375d3f50d732ba47f2e fix(secrets): fold OP_CONNECT_HOST/OP_CONNECT_TOKEN into 1Password auth cache-key 44159d1752efd2eb437e5c4b60af2e782bd12b0c fix(secrets): port stale-cache fallback to current DiskCache API + gate by error kind aebb6cf7ab407ba109dde878a1bcafa25b82bec3 fix(secrets): fall back to stale disk cache when bws live fetch fails ef81d9d4850df09e443c56835c860f7665740e5c fix(cli): add skin to _BUILTIN_SUBCOMMANDS for plugin gating 77855ce1f89c38216073abbe0e45d356c134bd52 fix(tui_gateway): candidate-inclusive display on child-watch resume + E2E 850b8da3324fc5ddd58274cc558e08d2af463a74 fix(tui_gateway): serve candidate-inclusive display on warm/live resume 300a0f15307d2b4406eb0c7af5d41bbe1555974b fix(themes): apply a runtime switch back to default on the desktop 50170fdd2d4d0bec6ab2bf6efecdd1b93064a736 fix(themes): reconcile element/syntax tokens with main's derive+adapt pipeline 428a0534ee20c04b33f21b6a92b35a7ec60e4277 test(themes): E2E live skin switch — config write → skin.changed broadcast 3ba6eebc7cbb4939a370d3d00afe777be7213802 feat(themes): dedicated code-syntax palette keys 4f4f938aef37439d51e34428af47064b5497fa3a feat(themes): `hermes skin set` — deterministic one-color tweak, bg untouched 2a4e5fac1a517a8f84acab9d89b61f9f2238db6f fix(themes): tweak the ACTIVE skin in place, never fork default 30ee6f749d551ed1d11045d8f053c7f85f493d5e feat(themes): element tokens (ui_tool, ui_thinking) + skinnable diffs 727f6704a7da7f2e7b22f463d67c7dbf52334952 feat(themes): TUI paints its own background from the skin (OSC 11) eb454919b22c95a20ded89be52440319aa3614af feat(themes): agent-authored skins switch live via a gateway skin watcher 91c5c0c1a64733072853ee90e3445cfde82c7ce8 fix(themes): activate skins via `hermes config set`, never a config.yaml hand-edit a8444fbcae2b89d74d396e00aba6b8b10a66d6c9 feat(themes): cross-surface theme SDK — one skin themes CLI, TUI, and desktop 2ed61d486c98214d57ea66c896e174fe27dc7314 refactor(ui-tui): host placement router + grid-test width-floor fix 9627d4f43f756ff1f7705e284bfec87113f58312 feat(ui-tui): ambient zone system + widget crash boundary a7e26716397415c90a46d3aae8d02018364917a3 docs(skill): tui-widgets — auto-open recipe (openWidget at end of register) ed93d6afe028fa1ce952b754a42fdee87fc02da5 feat(ui-tui): widget primitives — charts, accordion, shimmer, stable streams ca0b1b130c9ab997eb8115e3f9f70bf336ae1610 feat(ui-tui): self-authored widgets — user-widget loader, hot-load, skill 76b58d6127ab9fc2ee6d77904d77adea5e403cd7 feat(ui-tui): ambient widget mode — registry-driven slash catalog + in-flow dock fc3be32a9a9774a871d71b317375f41002853f91 feat(ui-tui): weather reference app — the async-data contract, themed ASCII art d8fcab47360812027eee49cf82d659cd663b0c8c feat(ui-tui): widget-app SDK — registry, host, dispatch; demos become apps ff0c5643b80c1449dd4fe4cf630f768c66fb5371 test(desktop): cover compression and queued stop lifecycle 32a9f2acbcc5c0da9e8e90ccd4c2c1189e5e5da6 Merge pull request #68999 from NousResearch/bb/widget-grid-hardening 5c714be5fe781127c2f97d1575f0154f6b9c52a2 ci: retrigger (transient setup-uv manifest fetch flake) 3de91c69743d1fafcf81e0f69db5dafd40c6205f fix(desktop): stop long-session transcript from drifting to old turns (#69019) 502939e19e3802ebd25cfbe390f2c825f10c0b14 chore: gitignore node_modules symlinks, not just directories 7d757cf7e20444fb1e6483d2ced27744fc824304 fmt(js): prettier pass on the new review tests cd24efec615cc0124e8be310679a6cc6cbc81780 perf(ui-tui): shimmer loaders share one clock and stop after a bounded period 9fb2a63db8dd49f62a589a34a7c5894977927265 fix(ui-tui): make `npm run visual` portable off POSIX — zero new deps c25e08aa2b483195583b4ebf2abe4d4722ab5447 fix(ui-tui): stacked dialog gets input before the grid under it e6cc5612e6e5afa6f373515364ee5ec11561248b fix(ui-tui): boot theme cache gets provenance — a stale hint can't pin the terminal b11b5ece2e68e4e5456fe1e3f364ff7564bdcb8b fix(tui): revision-aware reload.mcp — an ack now means the revision was LOADED 967e078ae46e6e748cc2ca36a88e0d0146904f7a fix(windows): share one bounded, tree-killing git probe across both call sites (#68997) 75be8fb463c5159b1d17e46c59f809ce1c06633a test(mcp): stamp breaker-open time on the monotonic clock, not a literal (#69003) d182d90708435f8926e716bfca92e554c553de51 fix(approval): detect recursive rm when flags follow operands 8208fc52701332f213e6c51ebc0b610be00300de fmt(js): `npm run fix` on merge (#68977) 96ba7ec529079b3395a7036dd84abf96e25e506b fmt(js): `npm run fix` on merge (#68976) 57f5c56d7f4451e9cd13ab31c058a7890847f69e chore(deps): bump dompurify from 3.4.2 to 3.4.12 in /website f182bb484df401a8e1253e0a7e2f355eac40b32e chore(deps): bump svgo from 3.3.3 to 3.3.4 in /website 56e01e809abbd3f3c0f552723026d7141bbb7d50 chore(deps): bump pyasn1 from 0.6.3 to 0.6.4 e10f72c243e3b7d42490b76083a543be1f60f36b chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /website e0e15436ee74ab6e90db138e9ca2a35c57b3dc08 Merge pull request #20379 from NousResearch/bb/widget-grid-slots e89d1f544c80e1017e0b64577906f3172347242c test(desktop): e2e tests for tile-unread bug (tab passes, split fails) c1ab279ad9f73a9fc0463b82a3861803365c5e6f test(desktop): e2e sidebar states — background dot, subagent, cross-session 59a85c0f2a3eb1e8eb9c2d2827e0589ed08fd812 test(desktop): e2e test for interim assistant message preservation (#65919) 9a6b74afe09f3c07f1c4c71d28fb7dcb70fe6bd4 ci: route workflows to ARC runner scale sets fe5b4c6b2e7fadbdb2308507afc81f3f87ac8384 test(mcp): make session reconnect probe uptime-independent 146f4ed07d1c10031c86a5e7f2ac78d11b253dd9 fmt(js): `npm run fix` on merge (#68938) 27c7c877c56a153f73be527ab923f7b6a3c7fb71 fix(runtime): close failed auxiliary Relay streams 0ada7837e454d70f04ac2d8fd5ee779ab5f3da65 feat(ui-tui): shimmer skeleton for the lazy tools section c543c691fcaf7bc7615219dc08ba5669845701ca fix(ui-tui): record config theme pin even when env already matches (Bugbot r6) 9be9a91d133a0dd62facf981d5dadc9627212325 fix(ui-tui): seed mcp_rev baseline at startup so first cosmetic write doesn't reload MCP (Bugbot r5) 2fb0dc6e293eb156cabf764098239e95583ee336 fix: restore package-lock.json @esbuild platform entries (Bugbot r4) 4bb9e6cfb013241ead243e0fa80ba8424e155d33 fix(ui-tui): first-swap repaint + config-auto respects shell theme pin (Bugbot r3) 6982c61b8cd250b0dbc2053e7ffcf3703345d3c0 fix(tui): mcp_rev includes mcp_servers; reload survives leader failure; /theme persists first (Bugbot r2) fdac23b6412f236e8c07a4b2f3f130550fa2d336 fix(tui): reload.mcp lock scope + coalesced refresh + macOS polarity flip (Bugbot) 11f2e54f0c5f27346c2115c144ae3a6104dbde7b fix(ui-tui): overlay width caps are absolute — clampOverlayWidth (Copilot review) 5bfffcd4457bf0cfb9cca84a3fc9eae5c78089ef refactor(ui-tui): every selectable list rides the shared selection chip — zero inverse left ce8c2c97aa4af369a5500483b533b2896a02972c fix(ui-tui): completions popover — aligned name track + neutral descriptions a0a9aaf8b8c949957930b28d22ff54b55ececaeb refactor(ui-tui): DRY the chrome primitives — shared scrollbarColors + hintRgb 505b2de484bde1ef52f47d71eeb7ec11a4b6b6d4 style(skins): default light overlay = goldenrod ladder, not neon or mustard e594e11baa5df9fe1f52e78907086e13dee0b6cd fix(ui-tui): session-panel fade anchors on muted, not the surface — readable on every pole 4426d57a8420aaed0984e28b8b469aff94a8e5ed feat(ui-tui): OSC-10 foreground polarity tiebreaker for transparent terminals 3c135abea5275202a7677e57aa17946700eafe3e fix(ui-tui): session-panel hierarchy + polarity-proof placeholder tone 6929f5f71f36dd12bec13ea6719de679d07b58a3 fix(ui-tui): eradicate every transparent-terminal black-slab trigger 28e05a3c85cdbec12fd4f02244ae8e8f5ef949dc fix(ui-tui): light mode renders the vivid palette RAW, not WCAG-darkened 296303302d8586a6748fb7ba402903baf5300faa perf(tui): skin switches stay hot — MCP gating, pooled reload, swap repaint c0763bd13a18f27c1f63b820b8384521b1c20828 feat(ui-tui): theme engine — seeds to derived-tone ladder + flash-free boot cd05498e2c72f361ece20ad5c8bfa74cc885e95a feat(ui-tui): background-aware theme adaptation + paired palettes + /theme pin 4a129af7098e3ef8aeac67648240c958ab2a73cd refactor(ui-tui): route production surfaces through the widget-grid engine 58d75ec5c68ba9b4f4c5976ef96fb284d1f109e6 feat(ui-tui): widget-grid 2-axis layout engine + overlay primitives (#20379 rebase) 81f4095bc1fc4179692a36cdc9c40177484b4b68 Merge pull request #68918 from NousResearch/bb/composer-focus-keys a1a406fd4015435433ff2987424e4d2745638c20 feat(desktop): type-to-focus the composer from empty chat chrome c5187778d7bc49d9765f3a35e2c26b038d94a4ae ci: migrate all workflows to GKE self-hosted runners 413ed6b9df18f22152d26b6de4093280dcb2b16b Merge pull request #68860 from NousResearch/bb/battery-status 76c2f0aae2d7422348dafb71057dfc093cca81fd refactor: remove pip and brew installation paths a2c2ec63322b791d6d1a7a024640064d96e7f0ae fix(status): make gateway_updated_at a stable RFC3339-or-null contract (#68657) 8fd5b258980b9e07235591d0f3598451e9eb8f87 feat(dashboard): component-level health rollup on /api/status (#68662) 27a90645985d1290f95c2a71002b9a82343a4f9d fix(desktop): preserve slash command and host compression semantics e2e8823f1d2de2aa95c8147d0abd105539d5daff chore(contributors): map yingwaizhiying@gmail.com -> tianma-if (supersedes stale msh01 entry) 0d5982d9106d7ad5b6783ddad914ea231268dc8e fix(api-server): count "stopping" runs as active in readiness work counts eff293115d1f6017e3f82e31ce746009fca55382 fix(gateway): report runtime source version in /health, not stale dist-info metadata 87e31cb7d1571caa3743a9581ac829874d219280 fix(dashboard): cap gateway health probe timeout 3c2903a2fb344dfb873a3ad7e563ef8a5d250d1a fix(status-bar): address Copilot review on /battery d87178eca7a8d835ef02a628579668c40a036198 fix(desktop): preserve provider choice during config initialization ef665a6caf680fc99a0a92252fa9e38cb8e0d2e6 feat(desktop): route slash commands with dedicated RPCs to those RPCs f85ddb182466eba0fcc62738bd106dbc160a5713 fix(desktop): route /compress through session.compress RPC with transcript replacement f218474552b28afcfc53f001603bbde0f105d010 fix(tui): gate the shared-owner MCP discovery wait on the stdio TUI flag c54b568a3889bb2a200b309501dce5a3ee294a2f fix(tui): give the stdio TUI discovery a retry-after-zero-connected path 8b6e92acf59d1f8df8303ec2282b37417f307999 fix(tui): centralize stdio TUI MCP discovery on the shared owner 4fda7efcbdbfa92a1fcbfc26ab67aa281064a331 fix(mcp): allow background discovery retry after a run that connected nothing fbe086f7cc3d24c04684a7bd56c93cebbfd9d8f6 fix(mcp): cycle-guard cause/context traversal in transport classifier 473545449b5147b14c0dfca2f9f8fc29e1875f49 fix(mcp): make transport classification cycle safe 1ae1dd8b2c63fdd3b950553c56d9f5e56f3d23ab fix(mcp): harden nested interruption detection 80209e51dbd407d29d9b57fc6fe5395e2f26daf9 test(mcp): isolate resource error breaker state f26fb901ea293a83b0ecb021e98cd70c206b4479 fix(mcp): reconnect message-less closed transports c4e8ff4d788a60ef4b309ebcc24d93d756e51a3c chore(contributors): map diffen77 + fazerluga-creator emails ee23bffee9acf31b61c32f63d01c7996ea711c72 fix(mcp): clear connect-cooldown state on every shutdown path 2c3aa3f7b80a2be0d370fbcb9af393f9d85d9276 fix(mcp): isolate a single failing stdio server from the bridge (#50394) 106d1822e3735cd32002013b928730804a7712be fix(mcp): re-register tools during parked revival da8b89c8358167dccab1adaf4ea8a01eea274fd1 fix(mcp): one WARNING per state transition, DEBUG retry chatter, jittered backoff 3e6b437762c12840c17364789673d5f4657afb33 fix(mcp): unwrap exception groups and park permanent failures immediately (#65673) 48be1068bb991a792c7917ab22f41d2dd45deb11 fix(mcp): charge immediate reconnects against a rapid-drop budget (#62212) a8a93b6c681af377e5cffe65b3d69cfaba66c9c6 fix(mcp): reconnect immediately on transport TaskGroup drop instead of backoff/park fb5b8e4c18c6df254f3e4d96dbaa599aa6541447 chore(contributors): map eazye19@users.noreply.github.com -> eazye19 (PR #42387 salvage) 7ae4da28b569ad140c9815a8f682c08ac9b77107 style(cli): open the build lock file with explicit encoding (ruff PLW1514) 9adb5a368fcded45a78ad877a7bc550bdaf7c6df test(cli): cover the web UI build flock contention paths cca2276115ee18aae39e32618605bd289ecba351 chore(git): ignore the web UI build lock file 37396fc66d541d41e08c6009ad45986ebf7165a8 refactor(cli): run the web-UI staleness walk once, under the build lock 3a9b2f2f84f9f45e03bf5c7e56d540a7bd568cf3 fix(cli): serialize concurrent web-UI builds with an exclusive flock e404d6cef96e2780a5a095edc754b67dd572a2ee fix(dashboard): content-hash web UI freshness check ad235d95a727325ff982e97dd124528a44e61f99 fix(web): guard _serve_index against a missing or unreadable index.html 18a3fa57bdb49222d26b33c8b88583567c0e880c fix(dashboard): attempt one recovery build when --skip-build finds no dist 26fb0c5d96513d817807aa62406717581e6bcaec fix(packaging): graft web_dist in MANIFEST.in and add sdist regression test 60cfa11136b730c53f71842ea6553f773c0f3c1c feat(kanban): add `hermes kanban repair` CLI verb 49828a3fd6de657b444efc185b307ca08cb83d9f feat(kanban): periodic WAL checkpoint (TRUNCATE) on the dispatcher tick 8fb3cc1b1a2ffefe04ee61f9475c8be4c05d24b4 fix(kanban): cap corrupt-backup retention at 10 files per board DB 8995131458ba368c01bb9f17ea3cabcab82dbc5c fix(kanban): auto-repair index-only kanban.db corruption via REINDEX 2d6b95cf2fd2fff53cf8355a5038fade1fe32fad test(state): exercise REINDEX repair against a REAL stale B-tree index 505fb587512301346c7408ba840c3d269bb94519 fix(state): add REINDEX strategy to repair stale B-tree indexes (#63386) 373ec23e37600330bd4c3e03b7ba9a17ec995c30 fix(state): extend search-path FTS self-heal to the CJK/trigram branch 11710c51fc3d2232d32562c8a6e9ab943c6b14b0 fix(state): self-heal FTS corruption on the SessionDB search path too 96c1511495fc8916ba92d7b77346acd719b3f1f2 fix(state): preserve degraded-runtime read probe + use canonical FTS5 classifier 57b3c477c01cdec0c52177b2270e9c40439799d0 fix(state): also catch sqlite3.DatabaseError in FTS5 read probe (#66724) 11e76f4e019d2b1cd4b7f5468a30f1bbcb3c2d08 fix(state): probe FTS5 read path in _db_opens_cleanly so partial index corruption is detected (#66724) 5e4529c02fd9acc58712eaf36d82bb3a701774d2 chore(contributors): map emails for PRs #66906, #66420, #63398 salvage 6096ad3d7733a624c36e2a88f2847c56ea1cd74d docs(touchdesigner): gate skill to macos/windows — TD has no Linux build 968efb0d24a31c2ab5554af68723f67197d60df6 feat(mcp): add touchdesigner (twozero) to the MCP catalog ab76cf836f2bc66d19fd72163653f4eae2b73602 fix(gateway): reap the replaced gateway's orphaned children on POSIX 50fdf136e887f9ddc912d583fe0abf986e52cbe8 chore(contributors): map jaretbottoms@gmail.com -> jbbottoms (PR #65178 salvage) 155fdd59f88f4cb9659e24bdf41f8e1edb770882 fix(gateway): take over live platform-lock token holders once ad7b4c7d2ed3135c0c83bc606d7156f7f93d2ae4 test(gateway): cover stale gateway_state.json detection (TTL + PID liveness) e54723a7544efc67ee3dc3c05bdd9cc8473513bd fix(gateway): detect stale gateway_state.json in `gateway status` (TTL + PID liveness) 3fc0cfb902d56abcd91fac72d18a4af4cadd6e71 fix(gateway): make stale scoped-lock removal atomic via tombstone rename 35fb2e428a1858fc7ef9b0df53b0ec971f85bc5f fix(gateway): guard acquire_gateway_runtime_lock against root-owned lock PermissionError 6f50c5607b3174d50c3344e73e5fde9abfdc2768 fix(gateway): handle PermissionError on stale root-owned lock file 2b72e06662a9803feeaf0f284989326e1905eb71 fix(gateway): detect stale lock when macOS psutil returns valid start_time for recycled PID 0008868422b746f2c7dd82344dbbeb654c38c68b fmt(js): `npm run fix` on merge (#68867) 0c33db0564597ac8e392e710555b0bddec5cdd1f fix(desktop): wrap missing sidebar icon-button tooltips (#67500) 9cc475cc5881133aef7bc621d2f7a365a8fe1f01 test(approval): cover allow_session tiers in Matrix reaction seeding and gateway payload 02d8cbadec0291b6782897a229317c3556ecfc73 fix(approval): honor allow_session across all button adapters a3297bd232175593b440ad171935d6f8e2e5a541 fix(approval): restore session approval for Tirith-flagged commands 625687f334705fd48d6f4672e371ff7936c63405 feat(status-bar): add /battery toggle for a color-coded battery read-out 6b54582438e7496974d32febe381a74ae2db0f9a fix: `tool_calls` double-encoding on import (#68856) 4dd535c8eab91421009a6ec666e74ec968a605e9 fix(ci): route critical supply-chain findings through review gate (#68833) cc1645452466afc465eaa130aa6094b8fa8dcc23 Merge remote-tracking branch 'origin/main' into codex/resolve-62319 93e2998f89ce5a8d7a540730c30b1a359fd98c83 Merge origin/main into feat/hermes-relay-shared-metrics a88512b114059fff642d60d54cbf30d5793c6c37 fix(desktop): drop the decorative top-up credits bar (#68649) 5ed7137fc629f5d95f977cf9e832157ecac8179d feat(billing): plan chips and rows deep-link their tier (#68666) 82d923ad5ac10745ff97f7e283af8110327cbf8e fix(runtime): close failed auxiliary Relay calls df892a08f63d36917eda793f567416b1041bb552 test(runtime): retain direct Relay interceptor coverage 6efc5fe0af0b64ecdc4149276ee2ff31249227d3 fix(runtime): preserve provider payloads through Relay 11ae6bf0e3d334ae74d3b240dfc4c64171c60233 Merge pull request #68725 from SHL0MS/fix/desktop-stop-parks-queue 039810ae14f291197dbeaf73c1a0fc2357358455 build(deps): bump shell-quote from 1.8.4 to 1.10.0 in /website a037724db1ea286c8eecc82f1601b0f0686cf2e9 build(deps): bump webpack-dev-server from 5.2.4 to 5.2.6 in /website cc3e60396e6673270785edb2105ad8ae6ea53e5a build(deps): bump body-parser from 1.20.5 to 1.20.6 in /website 73c8d40464ad551c9e198ad6e32de8f994f0e10d Merge pull request #68130 from NousResearch/feat/desktop-remote-ssh-current d604141d097eec4a49493ad1eaceb9b2ca1e496d fmt(js): `npm run fix` on merge (#68681) d9dae17e97268916c75528d0ea69c34c448b5754 fix(desktop): ⌘W closes visible file tab when preview selection is stale (#68639) d355e0e71dc22cfd6d2eed9184b2897124101d47 feat(desktop): configure repository discovery (supersedes #67630) (#68642) d3b0e614294e3f1d4f8c99da377a77981d0a5609 feat(secrets): one-command token rotation + actionable startup errors for all secret sources (#68605) ed3c39108b1b5521414cc60a8854cebd7c5af9bf Merge pull request #68331 from helix4u/fix/desktop-session-titlebar a31a31826ca269aff0570520218651e4511941b1 fix(approval): raise gateway approval timeout to 300s, honest stale-tap UX, offer Always on mixed prompts (#68597) afb7bf6a5a483486f812c1975ebca6cb922181f1 feat(skills): bundle docx, xlsx, and pdf office skills; refresh powerpoint (#68595) 03841c9658d727d08fb8ab51458f2556381bb03e fix(tools): make the tool-search context gate provider-aware (#68589) b49b1e5b93530401dc0ea37af5620fa1d39b11aa test(codex): cover ChatGPT-Account-Id header on /models probe c44c2fbb0b80e061b6cc7c52706ed7eb25a3a974 fix(codex): send ChatGPT-Account-Id on /models probes 64702f8f91661149128ca1a721f7a0fd4c22113b fix(compression): report live-resolved Codex window in the autoraise notice 0c0ec18d6fac0fbf3d87f6d3ac4bb887d74b5c0c test(context): cover Codex context rollback 60afc290a82a43059aae826117a113b12c54d1aa fix(context): scope Codex catalogue cache by credential 9a34cc91a5bdc2a30da0d3d8df97872a6d09cb6c test(context): document Codex cache persistence coverage 8a0701ca489a172bfdc19454ff64e9b99cb21029 fix(context): revalidate Codex OAuth context windows 279be8211d8347cc3500b9a78c6a0f8cb4d92a6a Revert "fix(agent): circuit-break AttributeError from commit-splice and detect code skew" 92574f775ba8c02e3b797cc7a6195276e538026b feat(skills): add sonos smart-home skill d9c7a41fed8868ce6a8168f87f7153186e5c6f6a feat(skills): add optional prompt-master skill aecd0cb6f60281a02536f4f393997c3bbfd2bafe feat(skills): add optional theme-factory skill f0b2772d910f8e5ca41616edd51eb374073146cf feat(skills): add optional react-best-practices skill abd847d80fa497d9b5a03f6ed8fe20f1764aa6f8 feat(skills): add optional last30days skill 8d8842db7305ca152b33112e5d3ca24054e57998 feat(skills): add optional weather skill 940fd969ce87eb8b8af771d7d59aa2cb3fb9e20c fix(desktop): preserve dragging with empty titlebar slots 25f4ba7b3cffca655a257faf3ec5b5c7eda4b734 Merge remote-tracking branch 'origin/main' into feat/desktop-remote-ssh-current b14be881b97bc7d887bc72bed4b8f53c7e277b5d build: declare pywin32 as a direct win32 dependency f4df260f26c93f15694698869f3ea8e965eea301 fix(relay): attach metadata.user_id on guild replies for egress fallback (#68320) 0155c0937441f2edbda04f50e55669d17e8740aa fmt(js): `npm run fix` on merge (#68462) 94c944363c10405e3544b0aeeaac1d00f0b85a54 feat(tui): show the plan catalog in /subscription on Free (#68357) b0da653ac827e24362efc4e5b052457c2177018d fix(billing): rename user-facing "terminal billing" copy to Remote Spending (#68355) 7a8852ddcb008523a6ea8e8acf3f22b903871495 fix(tests): make the live-system-guard canary fail closed 087732c8c60860888f6c8ac8b9e22271d5269e96 fix(telegram): widen fatal handoff to heartbeat watchdog path 1ba0e873ff42703dcec654af23119932f869b327 fix(telegram): preserve fatal recovery handoff 3a9b9d65d505646212c4c875bab19b96ae14b2e6 fix(agent): circuit-break AttributeError from commit-splice and detect code skew 6c28558161fdd739f332a2d740b3dbb469cbb392 fix(desktop): prevent contentEditable composer input from visually collapsing to near-zero height 0ba889d49206bbaff5b613b4a3a89427cc068948 fix(agent): pass persisted-prefix boundary when rotation flushes on cold resume (#68196) 646e71a9be070a8b8e05cf4fde7ddbad6ffa7fec fix: sanitize subprocess env for DDGS worker 77ee16b7471d58fad596f7f90fe2a50e803d60e7 test(web/ddgs): cover GIL-hold timeout, interrupt, and worker reap 21c7e49ad08c3a058d7c8681a30672a0af4e862d fix(web/ddgs): isolate DuckDuckGo search in a disposable process 693d3909c86a38f01226a39f77de488bdfa777c5 docs(portal): remove retired Nous Chat references 2da64e78401fffa0bebee2bb498106bd41765f30 refactor: drop platform kwarg, fix PTY test cleanup f6d82e1267b47e6bab720f2d0d580061adccfd5d test(cli): prove local CPR leak and Application CPR-disabled wiring 3f820a1c7c3c1d3a188dc08daf5fd23cda3dd6c4 fix(cli): suppress CPR on POSIX local TTYs under load 7651764ce63f44f4e02b1595798e73a67f678ebc Merge pull request #68390 from NousResearch/bb/paste-history-recall 79af4725829288bf00b5bea5aff3a32996b9704b fix(cli,tui): recall real paste content on up-arrow a85df69c066062284c7b1cf7b4e3c777879cc199 fix(desktop): Stop parks the queue instead of firing the next queued prompt 982485696b2cf02584d1277499d53ae6f56db08c refactor(desktop): bind workspace session lifecycle to pane 4b32561e9c455f1498bcde0d9ba3de13e84c1691 refactor(desktop): bind new split sessions to pane runtime dcc5f867e7ef58555cd377f1df0a19a96e0ee668 refactor(desktop): target content and runtime by focused pane 8ad301ed7c8cef2fabcbafcacccab5b55efd3c6e refactor(desktop): bind chat runtimes to panes 0bccaf6bab654f552b6fe12e4442de24e7732b53 refactor(desktop): make chat surfaces pane-addressed 280d20eee618374043756c461a2709ba80c5a4f4 test(desktop): model unread state through visible panes 8b0e2fc33dd4ab39cf06f3b16817a06921b9c302 refactor(desktop): derive session visibility from pane tree 6a5506cfb21a7d21582d024c9202190def14c354 test(desktop): e2e tests for tile-unread bug (tab passes, split fails) 1f2e13934532e6b180d9caada7763617b7fdd435 test(desktop): e2e sidebar states — background dot, subagent, cross-session 47e1c9d6443a00a37dcd1512fa8095bbb08f4471 test(desktop): e2e test for interim assistant message preservation (#65919) 477c08b44766ace8b890faa72bf82ecbcf2b3ba8 fmt(js): `npm run fix` on merge (#68305) f657840e06e03b9552cf2d28175a1e4e4af0210b fix(desktop): keep composer draft across compression tip rotation (#68079) 272bbaf7928e51c1f6c83c9aba0281b4fa8e7738 fix(desktop): avoid false remote gateway reauthentication (#68250) 56a95d0d38279ec8691f2ba2dc3bb5f69b838b53 fix(desktop): revert deferred paint, keep setBusy removal only 5c4dc46cce83be664fe39b02c8117ac847002e59 Merge pull request #68298 from NousResearch/ethie/cage-nix 933c823ae847d7b26427a655535107f4c1e9f6f4 nix: add cage to devDeps 81b903243e49e40acd04825cfb6f61e2897f2fd3 feat(desktop): bundle and display third-party licenses 6ea4e657530e00fb0f06467c96f82141c50c59a9 fix(gemini): explain legacy Standard-key 401 rejections with migration guidance fb0ed8396c1c598e3c116f41eea476ce18aa2dd3 Merge pull request #68259 from NousResearch/bb/multi-window 95fc08e7d6fff300247e98ad647ca90d8a9da887 fix(desktop): flip e2e assertion + exempt boot-failure from error guard a41346f8aeafc2e8e8ec0d49dbb743a5dbec070a refactor(desktop): tidy the cross-window deduper fb0c6d9ee15a4f9e079ba49ef58b860fc7098a60 fix(desktop): de-dupe cross-window cues so peers don't spam a90ca7fe34b28d38eaef16672aeeef35ec3dde01 feat(desktop): wire New Window to ⌘⇧N + command palette b586e4eff20de21df6a3aa1209d7d3b089df6bbc feat(desktop): open multiple full app windows (electron) 27b0b7c5a02ab4b6b08ae158b283180787bd7197 feat(desktop-auth): RFC 8252 native-app loopback login for gated gateways 3fc74ead6ec01a6e9c25262ef23f3e61adcd47ac chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 6 updates a41d280f95c69f67380358b305b62345934ecaf3 Merge pull request #65964 from NousResearch/ethie/ci-review-comment a84ffb1ba85a2563a546422cddc8b1fd42f30dde fix(state): parse tool_calls JSON string before re-serializing 464a0645e7b1a6792017c40a28ba3e9b10bca6c9 fix(desktop): wire error-banner guard into e2e fixtures d57947b493504ec4696849f78d4b01e75a25a74c fix(desktop): bump skills test timeout to fix cold-start flake (#68235) 5c7993ec606ff4ff3694630262e2f191beddb506 fix(ci): add detect to all-checks-pass needs so its failure blocks merge 1f76bdc5b2832592dc81a732d6d57ac4967232f3 fix(ci): pass App secrets as inputs to composite action 5604e1256feb4303ba067e7ce65ed577cd109f61 test(desktop): auto-fail e2e tests on error banner 51bb3e6b4b486c17382f9bf4ebcaa71843d6ff38 fix(desktop): eliminate session-load transcript re-renders faa3bce6dcbbcee9387d64e8817b48edf20a442b style(desktop): satisfy merged eslint/prettier config 7a69b82ad4785babc254309e119386157353985f ci: migrate AUTOFIX_BOT_PAT to GitHub App token b9f82ed39f42e6427b1cb1dba68159c0d50df0a3 ci: live-updating PR review comment with structured job statuses 578374675e6e2ac42daca75d42e4199c146484b2 Merge origin/main into feat/desktop-remote-ssh-current 8d2883abf88f1d5b31991ab0cf6ca25d08925720 test(desktop): e2e proving session-load re-render bug 9f8ecfe695073e059fc91bdf238f0ce9b160664a fix(desktop): route /compress through session.compress RPC so transcript updates d7b36070ef807841699ad32c5b6af547fee3ff64 fix(checkpoints): honor gateway config and task cwd (#68195) 71e3b7d832f50ca3d174ccca72dfece3ecbee0cd nix: add `cage` to devShell e2fd8a37dca030189ee4cdecaef96eb89b9f49eb fix(desktop): refresh repo status on session switch with unchanged cwd (#68208) 67e73ae95899c57b9b9134b4b10a2520dffd0a16 Merge pull request #68140 from NousResearch/bb/desktop-keep-awake 6fbb4cea00f8d7bcb80428c920a5db5f23d0768b Merge pull request #65805 from NousResearch/ethie/e2e e0028410ee69e797905e2c1d9d44a26cfb543c37 Merge remote-tracking branch 'origin/main' into bb/desktop-keep-awake 3ef5249558a47752e46c3c6a8f74c1280221af5e refactor(desktop): drop keep-awake statusbar toggle; persist in main fc8e96b200ec38e95b31192ffa0fb9fae1f4c94e fix(desktop): vertically center settings panel loader a0f6c1fab03f3fe4f2bdab0649d732401964e63a ci(windows): disable e2e job (not used yet) ef7749d4c2245ddd7a6f54bd67ff324cfa716ac8 ci(windows): add desktop installer e2e with AutoHotkey 3640b8e66624f1472cac19610b16958cb9fb65ee ci(windows): pull e2e-windows scaffolding out to its own branch f67c18a054aa5f7769ab7bc338cfbd572c121ae7 chore: map contributor ruslanvasylev for #68056 salvage ac9a1014a69cb55e142f53c9ce51caa370c0d6e1 refactor(desktop): drop System settings section; keep-awake → Advanced 2e10d7b94225ec8cc554722d4a4d8edb9bc3799f fix(desktop): address review — overlay a11y, e2e typecheck, nits 0b40ba10cdab38f8c2bda2048e6f07df27971cbc revert(installer): drop install.ps1 rewrite from E2E branch 3ef6bbd201263d354fd83ec55b3c306ded2eb72a chore: release v0.19.0 (2026.7.20) (#68175) 33c154e41f589a9eab2910777c5dcd1fcc2cf132 revert(desktop): restore Preparing error state in onboarding 18ca0e862cc970c20123226c550def9668d2fb89 Merge pull request #66471 from NousResearch/ethie/typescript-lsp 0e281b58e6ec0ee7c3a314984ee0d6b3c2fd48f0 fix(matrix): class-level split-threshold defaults for partially-constructed adapters 086a56a028d89c3eda92e517cf19a2634b6de78c fix(matrix): correct platform hint over-claims, add regression tests + docs 35e0f56fbf1b1f9331b675fd1e83fa58f3f193c7 fix(matrix): make outbound message length configurable (#53026) 08626c18be56d9f617c735fcd5fbed461a392c36 fix(prompt_builder): improve Matrix PLATFORM_HINTS with tested formatting rules 67863777caeaba2188977ab8df1738e36cbf9a3f Merge remote-tracking branch 'origin/main' into tmp/hermes-relay-pr-merge-20260717 a5b9803a51d33ecaa3a0f638b302593ae0446c93 test(transports): assert Moonshot wire schema carries required:[] acc1b6e76a1c089074674e2f78223cb577cd03aa fix(agent): inject empty required array on Moonshot object schemas 9ab62e8b21acef3177ccc8ea397e65d90c8a8f35 fix(packaging): bound the NeMo Relay dependency a15b98f414f07fe62147117ddefba7dc1cee4e42 fix(runtime): complete logical LLM calls after acceptance eb09df6ec8db2dedd9151fc5b94e32b6fd3685ee refactor(lsp): version-tagged _DocState replaces timestamp freshness tracking a632e68a0173e4cfb92039580a836397ac3e08ef fix(lsp): never report stale diagnostics — wait for fresh post-edit data 9b513a3b8d9752432c69dadce998ff1ce2a70c9c refactor(desktop): hoist shared ToggleRow into settings primitives 6ddbe8e5a40ee90ebd6ad2a0f5164dff95b37300 revert(installer): revert managed uv changes for now 456f18b19c4208115acbf0c6b226af49916b5480 fix(picker): scope exact-ID resolution to lossy alias collapses only 52e16c11384646972684c6d53189fc94ceb2f199 fix: preserve kimi-coding-cn provider identity 2ffdf08376756771891289b49e40fd2de8c061a4 fix: show both kimi-coding and kimi-coding-cn in /model picker b99e1e3bf65f56006a823e62de96a27e89a4f572 fix(model): collapse kimi alias/canonical to one /model picker row 3133af82155d4816c98dab48316324e72194dfc2 fix(desktop): prevent duplicate messages when verification candidates are persisted (#68149) c7102e4c77ae28719ff372a8bcfa9af67c86bfb9 fix(picker): fold live bare k3 wire id into curated kimi-k3 row 78624c3a5a12bfc2ae62e22bc6361414bd0a9fa6 test(models): cover kimi search alias for Kimi Coding k3 ae999fa8273a4404b563c73255d79fda7135040f fix(models): match bare Kimi Coding k3 when searching kimi 9399839dd4d2c171de829af95d189491a38c9bf4 feat(desktop): keep-computer-awake toggle + System settings section aa274364bb51ffe49c2a324df59aaae56d7ab947 fmt(js): `npm run fix` on merge (#68135) 470c7e2a608e75b9ee61dd1f2e10599983ca97ec fix(desktop): prevent timers from shifting as they count (#68131) 9403b4f8ba983fb2c634ff128786ee9b71428fae fix(feishu): keep msg_type=post consistent across every chunk of a long markdown reply (#26841) 17a99f6b153ea076f1b33974a3257dfb6a658dfc chore: map contributor ly-wang19 for #49551 salvage c0dff40e3a9cf3ce50e4fd06222f47820e403d82 test: use shutil.copy2 instead of os.link for cross-device tmp fixtures faa4cec01b0ad8f0b2d53a41ede9c92b21daafd8 fix(credentials): hoist read-guard import, fail closed loudly (#67665) 28028cce55d977631f9d05ecaef8b2f5e3980e20 fix(web): clear stale `api`-alias credential on provider switch in main-model assignment 977884e6cd8da5a03b5b69b823efadfeeeba34be chore: add contributor email mappings for PR #58019 / #29552 salvage ae22a03ef63943079ebbc53c85c8944218a1262e fix(feishu): render markdown tables via post md a66063098692343395c234d2e67353595a8a5520 fix(feishu): render markdown tables via post+md, not text downgrade 58c97b9dddaa8cc2ed0797dc5ac7e9d4e54cec43 feat(mcp): curated exclude list for cloudflare + glob tool filters + default_excluded manifests ce0defe4d861b469a646d4e26a15ac85de821dfc feat(mcp): pin ?codemode=false so tool_search sees the full endpoint surface d8faf7a3ef3ba442298420602b4f0ded28fd4e5a feat(mcp): add Cloudflare's official API MCP server to the catalog 5e999b98cb8ccadbdebc9c7b6766b7a5c5b25616 test: fix stale k3 fixture in deepseek signed-thinking replay test 25eafd7d713bbf7a8065d648f20adbc94471efc7 fix(models): complete kimi-k3 rollout across Kimi-direct catalog surfaces 495d4acec5702c24a328381c4970e0e08d512719 feat: add kimi-k3 + kimi-k2.7-code to kimi-coding-cn whitelist 54c39c030143be2b77d15ecebbf37805c133e385 fix: add Kimi K3 1M context window to DEFAULT_CONTEXT_LENGTHS 77aa026ca67f65a8e781df1b82c0786d511bfd21 Resolve kimi-k3 context length to 1M on canonical Kimi Coding endpoints b2857110b40bb2a84caa28a39beed1e1f45ba196 fix(desktop): kill loading bar in boot-failure e2e screenshots b2be12d456efb55741fd0afdb8d2d08c6380d2d2 fix(desktop): waitForAppReady checks overlay coverage, not just composer 0fd12ca11b511d56507e5060d06d27c597fb352a fix(desktop): kill boot overlay fade-race in e2e screenshots 2eb320a7bf88437fb179ea31b48596ae9dd70cdb fix(desktop): link artifact URLs directly in E2E summary c7f4cd582ff95f2208bee8ede782b86820401a40 perf(desktop): remove redundant build from check script 8b1738904d9951293abf36d3a3d688c8509f3ee8 fix(desktop): link artifacts in E2E summary + upload all screenshots 92eb59c99dcff0701a0c496394a01dbfe177d796 fix(desktop): stabilize dead-provider E2E 2c184ed3d1b3bbe90abc55758847c727a91a88f9 fix(desktop): keep visual E2E diffs advisory ff276045a165fa7e875470c1e8d016f985fbd2f6 ci: disable e2e windows installer for now 0860ee4e5a19be8cb08d3d4705a6763e90108a47 feat(desktop/e2e): Playwright E2E suite with visual regression diffs c5111388c7a136ae959a8e540a26d434017c510a fix(desktop): minor type fixes and devShell cage dep 69fc7a8d1f5979e1a62e15cc575c84ca6acef57e ci(windows): add desktop installer e2e with AutoHotkey 3dab86a956bd0a8ed6e5d6d46659a92f28b5c114 fix(installer): uv path resolution and PowerShell host handling c363db81e038b1b40c031f7868b76abf25d08bae fix(desktop, ink): don't wipe messages before final message (#65919) b520f507cc7d2f12a4558164ad3356e12d12a4bf fix(dashboard): clear the model mirror when its custom endpoint is deleted 6bedec47346e07f87aaac9d363c9dccaafcdeeac fix(dashboard): don't wipe hand-written provider fields on custom-endpoint edit 1705a44074b7d91b35614558ecd6a301f6affe2e fix(nix): include apps/shared as tui dep (#68109) 45acb62c6d362da2dfafb5b1dd0d82dfa1888455 feat(desktop): route Desktop SSH to the Windows lifecycle 8f33e39682ae27963c93c87ea13bd0a3c2a55ed8 fix(desktop): prevent false runtime-not-ready under gateway load (#66174) 3e6cead36367ab9488d49481122347fff3430b12 fix(desktop): stop session.info from overwriting composer model (#66603) c59ca46940ea3d3c06a70f20da75c02547777ea3 fix(desktop): keep quiet sessions visibly running (#65870) 59fdd41f5a8d7677586b3e621aa6341300393869 fix(gateway): filter finalized first response before queued follow-up send 3d7e1c5f4353b358f0d9c159c339c0b67dde4e0d fmt(js): `npm run fix` on merge (#68065) 2bb531b67a147ec1645e065996ddd3e7cfea8691 fix(desktop): extend read aloud + transcription timeouts (salvage of #39286) (#68056) 183712ab821caf8325d088c343496ca8e12fe3a3 fix(delegation): redact credentials in live subagent transcripts c8882c141ce36ec8470ef29674fa01e1a9980e94 fix(credentials): never mount master credential stores into skill sandboxes e77ffdc28cdf407f47ad0070c6358e343b390174 fix(tools): bound env probe subprocess so a Windows inherited pipe can't wedge sessions (#67964) 38a274b297f62160caf07ebc16eecde5d69ae8bb fix(dashboard): let an explicit api_key win over the provider entry's stored one 31c08a9aad6e83ded5d0e55dc7d41b94a99f08a1 chore: map contributor email for context probe 58391436f76a9f1003dd6df819f0852323e632c0 fix: reconcile probe cache with stale-entry invalidation + stale test fixtures 6be4944bc069be79d8aa450b2a75d2ac7494912c fix(bedrock): probe real context window instead of stale static table 222772ad61a36e9878e91c2a9d4cfc8df833ae16 fix(gateway): bridge nested DingTalk allowed_users into auth env 330b22452514642c2d5e5c698431006751d6c105 chore: map logical-and contributor for #62873 salvage 4cbceae9f471b994fcadd55c4413434ee13acdbf fix(gateway): normalize YAML boolean streaming mode and keep enabled a mode-only alias 62cdb3e1befbc60b0401166cad711d24f09fc9a4 Enable streaming when only streaming.mode is set ed3a0b394835d26077a055e9c474c526bb24511e fix(config): warn-after-write for unrecognized keys instead of refusing 3b2e445890e185b275d52f384bad576f04cb55d4 test(config): use schema-known key in config-set confirm-flow test 5bb00f9e3a4282fa26f79e61ebf5880e24a5b450 fix(config): validate gateway.platforms.* + approvals.* per maintainer review 477274f1d9a5a3a23966fd05c012e8aab7dd03aa fix(config): allow underscore-prefixed internal/test keys past schema validation fd19e8bb4828be5ccad285c120b892e687cbfca8 test(config): update placeholder usage assertion for --force flag 70679ada613affc6d84bfdd0fa85d1463da5f8c8 fix(config): validate config-key schema, refuse unknown keys (#34067) 77ba81f75f489e95b8f22a92820d96863a30be6e fix(bedrock): add Fable + Claude 4.6/4.7/4.8 1M entries to context table, drop stale cached values 3b86af90edecc5e08818f22cba619b8f3299e633 chore: map geo-prefix contributor emails 45f8ba0b9b13a037d73882aacfe1c017bcbfc894 fix: widen geo-prefix parity to all Bedrock ID normalization sites 487574c5b6afee541226e9c02a0433a1870fb3dc fix(pricing): strip apac./au. Bedrock region prefixes so cost isn't unknown 4e4904c3792a216a9e88aae503dd98849b7ab71d fix(bedrock): recognise au./apac. inference profiles to enable prompt caching a1813c1ef4d3d27fc80742a9fcff518e3cd8b3ab feat(desktop): inline TTS voice/model settings in the Capabilities tab (#68017) 369afc60be83cc8af279042242268d2e4ffc717a fix: migrate CLI kanban gate + remaining mocks to 5-value judge contract d401fd725198a43073eb5aa4f168dee148177390 fix(goals): update judge consumers for transport result 3b4f96ce947157d1505f30e4c850f2b81a15cc6f fix: update mocks in test_goal_verdict_send.py to match 5-tuple judge_goal return value 48fc1d780b8dd58323273a33665a6255a2827077 fix(goals): auto-pause goal loop on consecutive transport failures b9dba7eff59c9459bc14c62e4873ed30c7b48889 fix(env-probe): stuck Windows probe can no longer deadlock system-prompt builds (#67999) e89bc58a5ba80ec6be19b43beca37cbb03091afd fmt(js): `npm run fix` on merge (#67995) 4ef92d2e5dc95fa1e6f8818f454d896bb9826dd3 fix(desktop): survive older backends missing the batched sidebar endpoint (#67986) 34a304abb3c16b464e74c5ff48db10b67989be85 fix: unpack judge_goal 4-tuple in salvaged CLI gate; harden tests aa32154e4b3db32c75143a17504f1f8651420853 fix(kanban): apply goal_mode judge gate to CLI complete command 73543744bc9afda0ab8d96e41d88d9441c3a0c65 fix(gateway): key-presence precedence for session_reset/stt nested fallback e9bd3b6eebf27a9c0f8b7049650b971ad205cba7 fix(gateway): honor nested gateway.* form for 9 more top-level keys c8027d5e60bcb43ad27630962546199ee02af2af chore: map contributor email for whitespace-block fix a7e911150cf20669ca28f66895b2ea4f49833d1d fix(bedrock): address review — route list-string items through _safe_text, update stale placeholder assertions 9172048a2f50b775d1cce9c4717b8d04a53aa3b1 fix(bedrock): use non-whitespace placeholder for empty text blocks 7120f9cba9068b1489c8841187d90c8f3e536d72 chore: map bedrock-cluster contributor emails 81d4b3654ac50756d44f08f980707d056eb106c0 fix(bedrock): map Claude opus/sonnet 4.6+ to 1M context window a8602e4afa3156e6756be7adb3f76f88a9f3ddd8 test(bedrock): update context-length tests to match Anthropic docs 3cf6ee73553c9c24ddfc5e771817c89b3ea1cc9a fix(bedrock): correct Sonnet 4.5 and Haiku 4.5 context to 200K per Anthropic docs c02466d5e89be76da8e3ee1accbd14854d2ee03a fix(bedrock): raise Claude 4.x context window to 1M and add opus-4-7 47fb20c0bd09c0c1575a635a34145225e8af707d fix: session-scoped /fast + full /new reset to config defaults (#67979) 3441b80f4f20106d2adb8e3ff638c31e12656d2b feat(pricing): add Bedrock rows for Opus 4.8/4.7, correct Opus 4.6 to $5/$25 e101bbaebbc96348d0d0bc1bb9b10ea27204637d fix(pricing): restrict Bedrock profile normalization 54418a888e1014e8be28af276216107758464323 fix(pricing): resolve versioned Bedrock profile IDs 9ca8ce4335072e9055359d3821d373e456fd97c6 fix(kanban): unpack judge_goal's 4-tuple at the completion gate (#67973) c1af3772fcb05010ec7a181e93892585c04331c3 chore: map salvage contributor deepujain 523a64a726b66d04e239d2a8b6de60b945222667 feat(providers): post-filter picker by ``enabled: false`` for built-ins 305ecac8b263c56402f5f932ae0044f57c86c8f1 feat(providers): extend ``enabled: false`` gate to built-in resolution 7de06f700ed933da19013c150ce52dfecf4974e7 feat(providers): add ``enabled: false`` flag to hide a provider b239ee21238ba96b2d6ffa3d99bc829a40a1681e feat(model-switch): excluded_providers config to hide providers from /model picker 1b56d0d1a24653db884c0b0ed76bc8f1ab5a2ea4 test(cli): isolate model picker Ollama probes 766c617e8356b9db7efd059c48156f68ff6b8fc0 fix(compression): detect semantic no-op results 75af6dc57cfe87324bded621522197f2898d1263 fix(redaction): normalize URL credential key aliases 763c7f79d4e7ba26072102943b470291111b99bf test(compression): isolate provider handoff setup 46e4891c644d71c28ed836aec0e43860a7dd7576 fix(compression): close post-dispatch lock scope 62a00a7391fed515c4c525852f656064785aa7b4 fix(redaction): cover strict URL reference forms a48315e3223cbd6a7893391f59f5fbafc45f9c5d fix(compression): guard lock refresher startup 34bab1c6acc3cc3c668d4afdfeb480ef696ec422 fix(compression): harden provider context handoff 192ef93ad5ee69cbabd8902ac903d6f101b52132 fix(agent): harden pre-compress context handoff ad8c533cc784722796d4b0631f3f908053d371d5 fix(agent): capture on_pre_compress return value and pass to compressor 2ec1e81036a0cdd0ba1a60c61e96dba9853f123c chore: add contributor email mapping for GottZ 8decd39844cbf1f5d58473644187fedec80e0c85 test(file-sync): patch module-level _monotonic alias instead of shared stdlib time module f9158b818b1cbd6061f079223ae15afbdd4fcdf0 fix(file-sync): don't rate-limit retry after a failed sync cycle f904f185ee12e24942f82c2608670cb19216fc43 fix: regenerate model-catalog.json to dedupe sonnet-5 entries 24ea13a8e94ed58f9347c41ec98d0ab0ee3c3189 fix: align gmi fallback_models ordering with curated list d587048fca4ea26fd97b99f2f730b0de2f926111 chore: map salvage contributor emails to GitHub logins f6abfc05be0c84defa74229e08756acd1e4538db fix: keep Sonnet 5 intro pricing over duplicate standard-rate entry f44074df7f269cf57c5d8f247da712ec3143c671 feat(pricing): add Claude Sonnet 5 intro pricing entry 5d7326a90e031c4c2bfe4708d63c91b7ae80709a fix(gmi): add claude-sonnet-5 to fallback_models 877fd7edf515fea9daf43365b88ccd60b825f491 fix: dedupe claude-sonnet-5 entries after overlapping salvages 07f39cf9a6ad5accbdd3055010ec8084c30866e3 fix(models): add Claude Sonnet 5 to curated model lists e2561466c7eb1d49ffe642c40fe46ff999f64b43 feat(models): add Claude Sonnet 5 support 9bda6438d41eb3cd054d39ce2d4b8b6d31c303d7 fix(config): remove unknown-top-level-key warning — top-level keys bridge to env (#67924) 1c3a48965b34318c01b393f65b0a0f0711d2e9cc fix(model-switch): keep same-endpoint custom providers with different names as separate picker rows 7ed18dae90ef28dbdec37495ee66204958f2f521 test(model): isolate custom-provider grouping tests from live discovery 76fca0b4b34c2311ad2eb53af7593ad37086957e docs: session-scoped /model and /reasoning defaults dc0dbc938716555f7121fd9ca4d1783e3e80a585 fix(reasoning): default /reasoning to session scope in CLI and TUI 8590c2d0d9d9022568fdcc449ccd86754f88ccbb feat(cli): make reasoning effort session-scoped 8b6fde3a35e565f687bcb5c4cd6f91d55871eae4 fix(model): default /model switches to session scope everywhere 0d6d73525d99af105bb83707289b50bffc9d7e54 fix(model): default --provider switches to session-only persistence 98cadadd84fb1354fa5e999ed0e2f0eb294dbeae refactor: extract _build_partial_stream_stub helper 65bb16c8ce41597a5dfda82e8e45c5c6ec699b0c fix(streaming): detect text-only stream drops with no finish_reason (#32086) 134c2ed8b3a27bf737a05324d7b170d9d27470b7 docs(links): update moved Cloudflare Tunnel docs URL 23bdb2a121aa9f717fc2886067090adfa9ed775a feat(dashboard-auth): RFC 8252 native desktop sign-in (system browser + PKCE, no webview/cookies) 86e603e7d6a39d037027644413860ace94036e1d fix(compression): verify cached prompt embeds current memory before retaining 54c3f589ad4703107fd744b447dc58a51f3c88d3 fix(compression): retain prompt cache when memory is unchanged 463c2ae2556b54c8581d0edd93758b84aacc072a fix: section-3 grouping follow-ups for salvaged PR #36998 8bec1540f0c3d35585715452c2f685e54ac515cf tui: centralize RID-strip in format_model_for_display + apply to switch banner 4e02320ed9570283eb4ddc79d781913ce208d7c5 tui: friendlier model display + group same-endpoint providers in picker 2684e3077f26d9257477da05e1e12581eb7e0238 chore: fix import ordering after cherry-pick conflict resolution 0831e5e3268f733ecb812422d4f76d4d9ca1aa51 fix(desktop): preserve collapsed-provider set across profile switches f52b6530ff0b2717fa12f3d61edc9bcc765303e9 feat(desktop): collapsible provider groups in model picker da519ebc5cd5b112e88e661c134be570633d177f fix(dashboard): fold one-field mcp category into agent tab 60092f728c325c9bcd894c694dc332161e41904f fix(mcp): move auto-reload opt-out to top-level mcp: section + regression tests 1abcccdeba966137d8651f2dda4681d60a3267ec fix(mcp): read opt-out toggle from auxiliary.mcp, not top-level mcp 5c2d098bb0acc7fbb359725d1d91b34fae303bcc feat(mcp): add opt-out for automatic MCP reload on config change (cache-safe) f46ae969635f5c6dee63cfd0d9a770b05a822b6a fix(cli): expand env vars in mcp_servers config watcher comparison d46b3bdeb411acfe3a37a394295d925a6174e1dd chore: map salvage contributors ad86b8f469285bb30f174344bd9f244d38b6cca4 fix: add qwen3.7-plus to alibaba list + qwen3-max context fallback e0a27690d3a2b20d907a022a186860bd8b636978 fix: add qwen3.7-plus context length (1M) 772c232631db4bd6692dcaeaad086ee3f9f7d34d fix(providers): update alibaba coding plan supported model list 9fc35e0a31ece70d0f14e7d4cd8a589ee60eb08a chore: add contributor email mapping for Dhravya 95c616be204f4216ee5a10a1a13027ce26b0c43a fix(supermemory): complete self-hosted endpoint routing 24ac26a3da457d0fba978fbbae519f6ba28ae75a feat(supermemory): support custom base URL for self-hosted servers 244dabbd9c4b542bf5c1ad0159af512c2b5d6e08 test(cli): mock _cleanup_oneshot_runtime in all _run_and_exit tests 97fc8a4a3c6a5a2bc7a1a0d09c11b5c803bd03f2 refactor(cli): apply /simplify-code findings to oneshot teardown 2de60a3a7e645d7e6bb6862cd1ab38ac4751d25b fix(cli): expand oneshot cleanup to cover all process-global resources 7462546a33cecc9374af4984f2ef0bf6c6edac89 docs(cli): clarify oneshot hard-exit cleanup scope 54eea80bf7a30ed8ee76450bfea83888cfb25a58 test(cli): cover termux oneshot usage file fbfe89871bb2154547ce6fc01c097b7a4e136962 fix(cli): guarantee hard exit after cleanup interruption b82ffdaa4dc5399897ad00211258b329d5496cdb test(cli): preserve oneshot usage file through hard exit bfa7a794cb2fde81a539038a18b5d74e6f99736c fix(cli): avoid one-shot SIGABRT during teardown 113d9f63b5a1b254839f5f566e339dfd53ada566 fix: Windows guard, dedup recovery, profile-safe paths, clear SO_RCVTIMEO 01c02c6f8f93e0c6a145b4594cb0705e1dbeb5d4 fix(tui): recover from spurious stdin EOF caused by child O_NONBLOCK flip 39b30bacf7e22dc7c8028dcc5b00b82ffec04844 docs(x_search): comment out reasoning_effort in sample config blocks 48adc1f6029c3b4adfb6d0470aafbb47316a7903 test: cover X Search reasoning config propagation 5befa15abab1f38f7541ffbaf6ef6d72c00dbf7c feat: configure X Search reasoning effort 0144743b2127a6bed1ce658cbb79170acb85d764 chore: add contributor email mapping for kshitijk4poor 2ae195673e5009d4d1c2436a1da463047d6ae98d fix: widen metadata-preserve guard to list-of-dicts models form 311bacb572441e668a87eacf3de3705f5317b2b8 fix(model-switch): preserve per-model metadata dict in _save_discovered_models_to_config (#67841) cd0219da860d96c8621625589c7f463a0b162ad9 fix(gateway): stop slow restart redelivery loops 693f935936b9195523f37173191f827591f9ef47 feat(picker): fold Qwen providers into one group row in provider pickers (#67758) 0d7fad7b88bbbaab735565622709a575837adc78 fix(config): shipped template no longer enables session auto-reset (#67772) 1157c636c5920a1309cf2732a67102cecf26d06b fix(compression): stop the progress floor from splitting a tool group 3c72177061b12a3c6d62750b5fd4667acb7ac582 fix(config): widen doctor allowlist to all gateway-bridged top-level keys 54157da9eed837db2b2e9ef3a312331a5b941734 test(config): cover doctor allowlist for Hermes-written root keys 7c2ece53c05d365f35c8116835a122fb86bd8a4c fix(config): whitelist Hermes-owned roots doctor falsely flagged 371ee065fd708ef2e800406549d41443b78c3dad fix(gateway): don't spend a redelivery attempt when the platform is down f0aae14c684a84cd1eeca88339238406c30f3ed7 fix(desktop): retry OAuth cookie read on cold-start jar race (#67769) 3aeded6e32480dd4cbe002d0713aa8dc542add65 fix(desktop): scope multi-pane model UI and stabilize tile chrome (#67855) e702a45b5d35aeae8793ea2ce11aa61005251470 perf(desktop): idle-mount boot-hidden panes off the cold-start critical path (#67857) 9c3ffcaae3681bbf4921ea9828b92f31f3810a4f test(desktop): widen Testing Library async deadline to de-flake UI panels (#67849) 8eb63da470c49a69c1ec029edfd2b52b475a715a Merge pull request #67844 from NousResearch/perf/desktop-tool-row-memo 919eb30ca740bb399fdc56124c2ce54a0f301d92 Merge pull request #67842 from NousResearch/perf/desktop-tool-view-lazy-json fb2a35c0b581f064f10ee1151ee7b1eb57d4cf71 perf(desktop): stop tool rows re-rendering on session/cwd change + memo leaves 88cb824b14c77101fc82e2a7a67229c065cb92dd perf(desktop): stop eagerly JSON.stringify-ing every tool's args + result 3e23c502f2f671582e614d18fb7e6e3ca7fb0260 Merge pull request #67838 from NousResearch/perf/desktop-resize-raf 358e26a1c21be8fca2f99173a7d3f14ec88f37e2 refactor(desktop): extract shared rafCoalesce helper for sash drags 1dffe0e670727556ad3c051170cb3d0d04bccb96 perf(desktop): rAF-coalesce pane + console sash resizes 7f56f897062111ae2a469e4389b2b85321b3fcb4 Merge pull request #67824 from NousResearch/perf/desktop-tree-revalidate 0aa64ffcfcf50bc2b0f31d7667a0e5366aa8ad76 perf(desktop): targeted file-tree revalidation instead of whole-tree rescan ae15742bc2d76876ac59ff03973f034191833a72 style(desktop): tighten revalidateTree comments 61bda4f3ca9dfd01b2b69b3d039f7a7df1f0b9a9 perf(desktop): stop the file tree going sticky during agent edit bursts 7f12d4f8907f3f022653ad1250992e1d5362caed Merge pull request #67818 from NousResearch/perf/desktop-review-diff-virtualize 13337edcbee2071fbd2a1afd71a3b799a2e885f0 refactor(desktop): merge the two windowed diff returns into one 5ecf06e0ed4a634048530ac99db68f718b5e014e perf(desktop): virtualize the review-pane diff (no more full-Shiki freeze) b61c033c0bbed79e7f5ae2f44cdbff30ade6ee87 Merge pull request #67788 from NousResearch/perf/backend-ttft-request-estimate 26480e6c57c3558442a73c2dffe313996b19417f fmt(js): `npm run fix` on merge (#67793) 04113b5a896cfd83a8bfb65ec9f42e98fd0bc990 Merge pull request #67742 from NousResearch/perf/desktop-streaming-rerenders b0f60622aa07683266be627a10b48ed01818299c style(agent): tighten request-estimate comment c1c4e56e7ee0dbd5932b7d58531cf28a9ba97ad8 perf(agent): drop per-call base64 re-serialization from request-size estimate b6df712f444063c2759ef76aeeb0762da74a0b58 refactor(desktop): DRY the computed-dedup into stableArray + freeze 726b20d8c93a4331f025db61d691c9dd8164c1bd fix(agent): uniquify duplicate tool-call ids to keep call/result pairing lossless 36c0e49b005fd3935a5e69d82fbb64955e27414b fix(redact): stop masking prose words that embed a secret keyword (Secretary, tokenizer, author=) aa48f47159a03477cf1446051ba8f4e29b5f2dab Merge remote-tracking branch 'origin/main' into openclaw-port/gemini-string-enums a7d7c02cb6db071eced4ac82e24f878588619600 fmt(js): `npm run fix` on merge (#67771) 3d97893571dcb46b02756b8a2974cf3df7579fef feat(desktop): custom endpoint settings (supersedes #42745) (#67759) f6bdd87e5ef6fcb0d935e4f6210aadd1d7082a21 fix(desktop): retry OAuth cookie read on cold-start jar race b9ecfa74cfd97d971ae25348a0b28b30f66d4630 fix(config): shipped template no longer enables session auto-reset 042ac5da6e60332284852334ef86181c44253b29 feat(picker): fold Qwen providers into one group row in provider pickers 57063ad47fdabdb327a1f157a90cc95f60ee3d84 fmt(js): `npm run fix` on merge (#67749) 2f6a4e099ba7461a852635f6ee852e32b8e4cbf9 fix(tui): recognize standard DSR cursor position reports (supersedes #48762) (#67731) 54459e76ed93223680a8ef89e3cda72aafc138c8 fix: speed up CLI /model picker by skipping non-current custom provider probing (#65652) b30108143e5f6feb605e40d1f2624ea8b58bc4a0 fix(docs): fix broken image and video in TUI docs (#43501) 9b428ddd08415e3016cb39171541cb464731327a feat(x_search): default model grok-4.20-reasoning -> grok-4.5 (#67719) 33d71d687f602b9bcec99ea7ceb6ef190e2c03f1 fix(desktop): preserve new-chat selector choices (#67729) bc6839aa37b7ee63600fe5d3c614796d330eaae7 fix(desktop): stop hard-failing pack on non-git checkouts + fix ZIP-path autocrlf (supersedes #67643) (#67730) 5f154e881c21164d6411f7c1fde8cebe31880412 perf(desktop): stop per-token sidebar + tool-row re-renders during streaming 8142331616da7d005f66455aaec8aa7919ae14f3 bench(desktop): measure representative (warm-cache) cold start (#67733) b6ae910d8c1b2e5841ff45a3e85031c93d754b64 bench(desktop): trustworthy cold-start measurement (code-splitting is not the lever) (#67720) 1cf2c763efb0f60a22edfa5b45c4f550c29e0466 fix(dashboard): opaque MoA presets modal (stop page bleed-through) (#67410) 07ba9e9266c857d41d4f5b1787b9aa8d0fac4f3f fix(dashboard): don't let a provider-name query hide the selected provider's models (#65374) (#65413) b1fb3c528582d1282c7393f72ebb816c86bdc13c bench(desktop): measure the full picture — prod build, cold-start, first-token (#67697) dd418284db1804d33cd3d6d51c17bbfb1ad8f685 bench(desktop): trustworthy --spawn stream numbers + real baseline (#67694) 0d2ad3993eb91c486854bc71e2721b747ab1d0f4 feat(desktop): per-session color override (#66565 layer 2) (#67681) 1b17015f7a8d0c0d68b1f08aa389538e7fd172e3 refactor(desktop): tidy session-color pass (#67671) 3345b3cdfdd193443748afb1e87d46be0b7baa9a bench(desktop): make --spawn work + capture a real baseline (#67670) e361c5e20402375c74a65ca52810c6a380461226 fix(desktop): support spaced Windows Git paths in review 60811ced376a66f9ed17277d5ff168cbb5461642 feat(agent): adaptive thinking for Kimi-family Anthropic endpoints 5f2bfb66317f5d55691cd4ff8a8805133257276a fix(desktop): scope the cron jobs list to the active profile af400e1d1ca8ccfe20c0e44b16e95c9202accc7a test(desktop): pin the plain text opt-in propagation and the basic store startup e879d133da3cceff4e30a90caf317ea690edf605 fix(desktop): allow remote gateway token storage on keyring-less Linux 0ddbb1f2bf2fe19749841b11e138197043f08f88 docs(observability): document shared metrics config 299e409f15aa5615a8a64be488580be92cda351e feat(delegation): live-viewable subagent transcripts — tail your subagents while they work (#67479) 0385e155444d36203a6ef431f635223d78490d34 test(desktop): contract test — every cron helper is profile-scoped 65b73eb1e90e05c0931e3eac68f179662bc7ca63 test(cron): accept target_model kwarg in codex-path resolver stub 786df3ca6cf3fa063391491caa63d7ffad17e286 fix(cron): resolve provider with the job's effective model; default dashboard cron creates to the backend's own profile 6e676c768c64b69fdc1f9a390b64737061db20b1 fix(desktop): profile-scope all cron REST calls 6f9f5b9b023d59d0e251298664a34af94d6c936e chore(contributors): map Relay integration author c73478935f339d31259f0a35dd7c303392e23f76 fix(runtime): fence stale Relay stream chunks 80ef455027b309f963221f9a8cda65ceace4bc31 fix(runtime): reject empty native Anthropic streams 044b88eb69aadc56367035cc5a93dde70881fcb5 fix(observability): wait for concurrent schema setup 774bcac352cca5b97a78d14bb4044539031a5eea fix(runtime): preserve native streaming responses 9baa8cc96c9c17cdece66ed5acec3f0861e0d607 test(observability): exercise shared metrics with native Relay 2c8fd38f2e169cf07496780c048b1f465cd75333 fix(observability): defer logical LLM completion until validation 55b7903cf7200f958ab64728746365a0183bd0a1 fix(observability): harden Relay terminal lifecycle metrics 4dedaa4237371778f024a98468527608cc237ef8 refactor(runtime): consolidate Relay lifecycle ownership 9bc521b1384f5a7a19c5441059225ae8e9a24a09 refactor(runtime): manage Relay LLM tool and subagent execution 056e7df0e0c34f298aa8e20e8d46162b63be1b33 fix(observability): harden Relay metrics isolation and aggregation 64faff6768ffac903b84ab6abd94e1ba3b3cc58b refactor(observability): move Relay runtime ownership into core 3bd338d2a9e572e85c77fbfff57b5d319d72c83f feat(observability): add Relay shared metrics pipeline 36f2a966c7f9f69987494b867c3dcf96b69a5766 fmt(js): `npm run fix` on merge (#67491) 2ae0d67f63296c9e4ca94e052a88703444d6f1a0 feat(desktop): five Capabilities-tab UX fixes from live testing — hints, vision link, web split, key deep-links (#67482) 3fc006ebe1d3efd7b99a7a4a5f49cc834404cad3 fix(web): compute voice provider schema options per-request, align guards with desktop (#40338 follow-up) 1e17492784e6ee3b18a4a93d65d24eb33467f689 feat(config): surface custom and plugin voice providers in config schema 3a6e40b297d505cf42b6c35b94e6b0efd967527e fmt(js): `npm run fix` on merge (#67486) 1bf441cd19ef5d51f9175bf9bb28ed96aeaec4b4 feat(desktop): per-job model picker in the cron create/edit dialog (#67472) aa1ad32191c4c8b6f15fd7fb213dbf8bfee28652 fix(desktop): Windows browser-setup journey — console flash, idempotent setup, Nous Portal activation (#67473) 09109fec98016ffd7fef8622223073d296c02fa4 fmt(js): `npm run fix` on merge (#67474) ad0d21188fcbf428e145714cdb2791516d78dde3 feat(desktop): session color — inherit from project, shared across sidebar and tabs (#67469) 1d12d610eb6d83ae1739d6da9c4d498012a8ef7a feat(desktop): let inherited projects set color and icon (#67468) d1c455acf7ef17615c208d4b986e29badf6de770 bench(desktop): systematized perf harness; sunset 12 one-off scripts (#67466) 7710485c04d72f4e6dd8bf02d682bcc8bf124a40 feat(desktop): let inherited projects set color and icon 99a599e6f450edf26b61c1f6eda97b37d8ad9c8c fix(desktop): resolve session color for repo-root-only sessions 19527db73118edcd7841873f21406c83367162a8 fix(gateway): per-session turn lease + conversation-scope funnel (#64934) (#67401) 027243eb469c0e76aef85b5e321995313abcd2bc fix(credentials): suppress re-seeding when a pool entry is deleted via API (#55217) (#67429) 83595f361444e05c1e0921c964a4776f3162b6e5 fmt(js): `npm run fix` on merge (#67419) 6bb8a0aef15657ddd0b80cabfcf00eebe4e4cb85 fix(desktop): drop tts.xai.text_normalization — not honored by the xAI TTS backend 2783d4c698ca19412956852151810b9118753491 fix(gui): add xAI prefix to all xAI-specific TTS field labels 5c6499ce4ddbbe1b667fcd3c939ac6864095c83c feat: surface all xAI TTS params in desktop GUI config e58534f9d7ce84846da2c1318a6943ab0bffb03e feat(desktop): list config-defined command TTS/STT providers in settings a729a5d386073c038f72a9d0a8309fdba2585822 chore(contributors): map s0xn1ck@proton.me -> s0xn1ck 49167ffe0539d22ffe1bdb15f14bb7e11c13dd4b fix(tools): apply missing-provider setup pass to per-platform configure flow too 6912e934789f595032f3e0b2dd83bb740ae910a3 fix(tools): configure selected global tools missing provider setup 9a987f142dd26292b110f61a0055137b96422411 fix(credentials): unified provider key delete/update across .env, auth.json, config.yaml (#67213) 833bae32037fdddf9ae1938eb7f838b173f53099 Merge pull request #67206 from NousResearch/lane/c3-memory-panel 8b6714556b5389a81f85f70eefd85f502240ad2c feat(desktop): terminal execution backend picker with health probes in Capabilities (#67203) c372c4220b6435708f95fb330e4b031267794727 fix(desktop): truthful per-provider readiness in Capabilities (no more false Ready) (#67201) c0c76a47153398953c718ca729bc5192da1e63ac perf(gateway): byte-stable session context prompts 94f8166dc8528cafffff90ab3d43a4bf984a0709 chore: map contributor email for FuryMartin ddd81e9352d883426975f6083e1283a2c708b984 fix(anthropic): preserve thinking blocks on Kimi-family endpoints on replay f48eebae4e408ea1ef925a82fbd02654400b98a7 Merge pull request #67394 from kshitijk4poor/fix/67193-followup-timeout-bom 73b3a8afe3d136369f5e0ce6394aef9bec7ff824 fix(bootstrap): download timeouts + BOM upgrade for pre-fix cached scripts (#67193 follow-up) 00cf9b65c5bd7743f3d88cad3bc983eb7175152d fix(state): resume gate for interrupted optimize; remove dead deferred-rebuild worker 653a95f9fa55b4524452dc27279101fcda4976f3 fix(state): widen surrogate scrub to remaining raw-str bind sites 81d4619707bedb33c84c48cabf1c70579fd7e91e fix(state): stop a lone surrogate from silently killing session persistence 8fe9706da8e6d0619d8d4894880a16b83d79597d fix(bootstrap): make read_decoded_line cancel-safe under tokio::select! acee4f25c7247b94f61bfa6ed3960b3a5bfec825 test(bootstrap): cover CP1252 stderr decode and UTF-8 BOM cache writes 4ce1994159b571e040e122dce058efdc154cd4e5 fix(bootstrap): decode localized PS stderr and refresh mutable install cache 14add28785ffe10e7a5bc9235b4dff0e8c402e63 fix: exempt persist-disabled review forks from the session-scoped tripwire e4ec9e8bc81d47cc9360fd6072ffa52ac2010d4d chore: map contributor email for Hotragn 8c6627638ea487284bbdaefba37b6e22e2b28ba5 fix(agent): catch cross-agent turn overlaps in the tripwire (#64934) 4f67c33383204d28f4bf85de7db04f7265a73686 fix(config): whitelist real non-DEFAULT_CONFIG roots + normalize test line endings f5bacee274e069ef094629a7cfe1a1778022bf7f feat(config): derive _KNOWN_ROOT_KEYS from DEFAULT_CONFIG + warn on unknown root keys 336c3b13aa16f2686695d92ae98321a3ead65d42 feat(config): warn on unknown top-level keys + report deprecated keys/env in doctor 8ddc05b801af01ed8f4765a24f45b2997bbd9c66 perf(compression): skip durable refresh for in-memory-only blocks 1093263aa68aa6ed49633e18ccdbe879dd01397a fix(compression): close unblock-direction gaps in durable guard refresh 727392b5cb2552c3f2cdec13eed651a2fe7d5fe3 fix(context): revalidate compression state under lock 5854aad8b55dab32924893897f38b42573360e77 feat(gateway): durable delivery-obligation ledger for final responses (#67181) e598cef87465981fcea1c0339edfcf5d9716c917 fmt(js): `npm run fix` on merge (#67311) 897f3da276773443c95f5f2d1f228162097f8cc0 feat(desktop): share session color across sidebar rows and pane tabs 5a6e235833bfa296a9e5d6eeb68080b00314d839 feat(desktop): inherit project color on session rows fe3e5cf8aa345245a2b9e1a92ed9d437ee71bb21 Merge pull request #67303 from NousResearch/bb/desktop-plugin-i18n 45be429b3bc41e0ebd3d7129b70fd293b1dd6b36 docs(desktop): document plugin ctx.i18n in the plugins skill ffc69c184b45db25fd42095982391acdaf5b7fce fmt(js): `npm run fix` on merge (#67307) bba18c6008c39154bb57af006152592e942dc13e feat(desktop): expose ctx.i18n on the plugin SDK 6282b5dcda6468ea215002718f113110966bec25 feat(desktop): plugin-scoped i18n registry + usePluginI18n 228655a73ac39c532c2f1fd5ccd82712eea64116 refactor(desktop): share one active→default→key i18n resolver 7db2decbea2d35f1fd5d4347eef3577e1050f1c8 Merge pull request #67302 from NousResearch/bb/salvage-66870-focus-tab-hijack 360b07794b6b674b78060d5552ebccc01e32a442 docs(desktop): document the desktop plugin SDK (@hermes/plugin-sdk) (#67301) 43776f109bae6cd5216392771e9f98af67daa61f fix(desktop): prevent session rotation from stealing focus (#67118) fbb867f54f6595fd5d53c956742a09bf7925c2aa fix(desktop): don't hijack the active tab on reactive pane unhide a5396765a2d40b114475edde66d1203a22dbc8ea Merge pull request #67298 from NousResearch/bb/salvage-66109-action-menu-tooltip 78f38e79cfb501c5c4db8cf2cc7593f01e01fb48 fmt(js): `npm run fix` on merge (#67297) 60325fc1383f555d7cc7b056257afb4bb8a4f6e8 docs(desktop): document the desktop plugin SDK (@hermes/plugin-sdk) 84db32484f2adaaee979afc753b59ddf3af91ee3 🐛 fix(desktop): restore tooltip-wrapped trigger behavior 667b98b5cf2409b8411e016da7cfb6451b2cac33 Merge pull request #67296 from NousResearch/bb/composer-model-removed-fallback 4cdfcf568d49106e49ba79904bcf6295d8db7b52 fix(desktop): don't auto-expand user-collapsed side on reactive unhide (#65375) 4f4a4f0d431844c0ac9378ecdde77c84b56a3c7d Merge pull request #67236 from NousResearch/bb/tui-incremental-markdown e99a0f6a975b54ecd03eb8061e1c85abd0a996fb Merge pull request #67283 from NousResearch/bb/salvage-60980-apiserver-offload d5decee5ac033600d8cdd5e7b5a45657a0483993 fix(desktop): reseed composer when a sticky manual pick was removed 24b44d56a3f989dbdfdceaf346ec07e3d8e9e281 refactor(tui): tighten StreamingMd comments and fence folding 9ef66ea8c12593678de52cb16c50df713e07669f test: expect restored human anchor after user-role summary compaction c03c247e7c8a6434473a4781f346c9674a740161 fix(compression): keep anchor restoration alternation-safe and grounding scaffolding-proof d511ce0602acd3e9449bd19b0de2c8291c91e3db test: assert durable compression rotation 2f824ec5d23140be7bdc23f6136c96abf150dc45 test: align string summaries with grounded task snapshot 761a0b124eedac716c9875347b8f36117a76251f fix: ground compression task snapshot 960abf73a0dd5442afbae367470e12f9b3070e07 fix(compression): preserve human intent and durable handoffs d015500d45ccd41fcf7a61d5db415287dab2d30b Merge pull request #67287 from NousResearch/bb/salvage-38614-resume-cwd 73fea7b2b0d77aa52fad32ef6d77eb5b79c81af5 fmt(js): `npm run fix` on merge (#67284) 3700ca4a549381f54dc138572f027e2946e9d896 fix(cli): restore session cwd on mid-chat /resume (transplant to mixin) 228d8de19cf9b9de5ef007f2c1b72f078d90e40e fix(cli): restore session cwd on mid-chat /resume and /sessions d2cb318509ba6f3cd32ce35b76b6e03b58196272 fix(api_server): reconcile SessionDB offload with per-profile DB routing f099b469def3e1ae6a4dce8a83b0979459bb4f75 Merge pull request #67282 from NousResearch/bb/unify-project-status 66a7825ebb0ee9ccd99d0b864615f157be36f5e2 feat: unify active-project identity in chat status (supersedes #64721) 5529175084b5e001ddc2e419efc9d67bdef959a6 fix: TOCTOU race in session create + offload SessionDB init 7ba944d054dcb9bc67f7b953a360e23894ec8d10 fix(api_server): offload synchronous SessionDB calls off the event loop c7035ef2520a56b62049df3f7a43bf4d19a5c201 fix: add api_content to _CONVERSATION_ROW_COLUMNS for get_resume_conversations 39efad89a8c26256fe897866d1f5d5229eb42a98 refactor: shared helpers for api_content sidecar pop/drop/extract 7b3dcee928e6a8c61269c02ca5ee95dd04d25e3e feat(cache): persist the exact bytes sent to the API in an api_content sidecar e53f87fe6925f9b0575f16b814d8994dfd455128 Merge pull request #67238 from NousResearch/bb/anthropic-owner-thread-abort 19bf16c4da6cf9a5156b42ce7b828811f81de0cb fmt(js): `npm run fix` on merge (#67258) 8e9c1761179bdc063cd1d1aa9ad258a7214e0bca Merge pull request #67245 from NousResearch/bb/desktop-sidebar-batch ea1cc1dd4b4f2e2189af9b8966f95edde02143a0 Merge pull request #67247 from NousResearch/bb/desktop-resume-single-read fbabdfbe15b1a425745b3e633d6f4c4114e3cbb4 bench(tui): add per-append timing series mode to streaming-md bench 66ed9d63fea96fe2cdfdc63524378f74288e1e6e refactor: extract 6 copy-paste voice interrupt blocks into one helper bca886c84441fae08a0135654b246e7f57d2a737 fix(gateway): invalidate pending STT cache when media merges into event 5920b305f4269993aea24c9a2ff4f519d2faf59c refactor: delete dead _dequeue_pending_with_transcription 6a135142cc429f85f4e5e6b062af2193b7d8a604 test(gateway): use compression helper in voice regression 7b330b1d22ee887441e33ea1cb25798d26053a26 fix(gateway): preserve pending voice media semantics f5d493aebfa647ad0023b545274f1a3d7821cf47 fix(gateway): dedupe pending voice transcript echoes 71157cbf668e01b10a900435c1de24876c227227 refactor(turn_finalizer): extract _is_pure_tool_call_tail, fix SQLite durability 56ac96976bf86f67128064e6a21dad1ee8856352 fix(agent): persist the delivered response when the turn tail is a tool-call row 206953fb665b8812f94eb8b0be7a0914d528f40a perf(gateway): serve session.resume's model + display history from one SELECT 7235592ad2bd637e508088c47f8794fa0d2e6f69 Merge pull request #67241 from NousResearch/bb/telegram-reconnect-watchdog 40160e2a04cd9e2ae49688567f74fe61200b6f66 perf(desktop): batch sidebar session slices into one profile-DB pass 23d2fd5d78bfd8ca267e6f79d6771ae21f516b28 chore(contributors): map mkoduri73@gmail.com -> MaheshBhushan c2cb37532c43ae3aa7d9aabc21c1255f52bbf4bb fix(telegram): add cause-agnostic wedged-recovery watchdog so the reconnect ladder can't freeze silently (#66377) 3391e639f6a59215da2a13a96972420c8ef7b4ba fix(telegram): bound polling drain so wedged pool close can't stall reconnect ladder (#66377) 42c240f580429d98241a8a09677e28ac99091363 fix(agent): request-local Anthropic clients so the stale/interrupt watchdog never corrupts SQLite (#67142) a4890569a3705f3ee44462cf6a0b60ace9656279 perf(tui): render streamed markdown incrementally per block 0f36dc57e034519a8f0323a746b76d8d7a281aaf fix(desktop): render server readiness status in Capabilities provider pills 9422486e359cc021b5accc252d71e78615dadee5 feat(desktop): terminal execution backend picker with health probes in Capabilities 54f5696bbb2fe78a245eb43eee5ca91fea49da6c Merge origin/main into lane/c3-memory-panel 49334df405101b77ad085e9bd83320cbf0c84337 fix(desktop): drop tts.xai.text_normalization — not honored by the xAI TTS backend 4b1591e5b6a32fb3b6ba7e71525b11df786e29f6 fix(credentials): unify provider key delete/update across .env, auth.json, config.yaml (#51071 #59761 #62269) 02eda0ecef491fb7f17e5577e5be81e02b0a9efa chore(contributors): map s0xn1ck@proton.me -> s0xn1ck 519bf542fcf2bbb8ead0588dc04a52477a3849ed fix(desktop): compute truthful per-provider readiness for Capabilities tool config 0a5095d9e5734c8531a83ba9851a79f7903a5e96 fix(gui): add xAI prefix to all xAI-specific TTS field labels 83ce676830cf011a052135d75a8f3825d58bc247 fix(env): recognize export-prefixed .env lines in save/remove (#40041) ef5a9a591bc7ed3d429fcb143a00d1e54eb39049 fix(tools): apply missing-provider setup pass to per-platform configure flow too b754a969bf43aadd5de303de58cb4c92c6c1be6b feat: surface all xAI TTS params in desktop GUI config 307bdec7e2ba8311d23af40eac5555ff3942905b fix(tools): configure selected global tools missing provider setup 1d9d7aac745bc2aa159b66529ee5478af76fa8bc feat(desktop): list config-defined command TTS/STT providers in settings 614dc194ea7d853d39f9e84582ec62156f41a475 Merge pull request #67195 from NousResearch/bb/desktop-perf-p2 e30174fa173a4678cc730470e8f0aa3e19b5065a perf(desktop): scope tool-diff subscriptions + narrow profile query invalidation 34e66a0d527a762b128cebf3bd9165cd8d968c06 Merge pull request #67192 from NousResearch/bb/p2-config-salvage 2bae4df8bb29243fe6b627cb3942aa272edcffc2 fix: replace hardcoded ~/.hermes with get_hermes_home() in system prompt (#66450) 65bf42b669144a06ae8649d77e7c55b2d70f7e25 fix(auxiliary): resolve key_env in _resolve_task_provider_model (#66641) 90d3ba5be9093dd1a1ac93b275d4266593b87797 fix(cli): warn once per path for UTF-32 .env refuse-to-mangle 7d597cc5d47eaaa4f8de35b092a48655d4270114 fix(cli): sanitize UTF-16 .env without corrupting the first key 4441e11c7751fe6ccf2ccdcbffd7b1d19da6a079 fix(cli): quote .env values with internal whitespace in save_env_value bf411238d8f50ea7af1fe63bcb5a3585068b2eb2 Merge pull request #67176 from NousResearch/bb/incremental-markdown-lex-fix ed957aeb265ec80d402f4df6deac27a06fa3b3f2 Merge pull request #67182 from NousResearch/bb/p0-salvage 4f10b4f15dadd6c48ea44d10d8080f523128b6d5 Merge pull request #67183 from NousResearch/bb/mcp-poll-loop-oom d8b59bd60e05fadadfc8e8d36289499cb7ed27ca test(desktop): raise timeout on markdown-blocks property fuzz 1cec5c69d38fe1a1f2d0e1de3935d9995d4202e4 test(mcp): e2e integration coverage for #63892 poll-loop OOM spin 97249cfc8abb9053c518552cbec88ec45aee0d76 fix(install): keep install.ps1 pure ASCII so Windows PowerShell 5.1 doesn't misparse it 3df8bd3478b96d1665bf390c07630268ae522f7e fix(mcp): propagate stored timeouts from completed futures 651cff4273572c2c99500e9a08a458463a69d395 fix(desktop): treat built-in memory as built-in in provider panel (#49513) 7ced2ee394fbd704ae66ba5219e5664a3079376e test(web): unpin HERMES_HONCHO_HOST in profile-param memory config test e934ee440e7b22ab0ba02d4c744d6b3a42f08085 fix(desktop): correct incremental markdown split boundary (setext merge) 1310ceb07ba43be6ea5466a7c9895d7398af6e4f Merge pull request #67154 from NousResearch/bb/incremental-markdown-lex 3840e04b64f8a2eaf58715064ff6e7b32574beb1 feat(gateway): durable delivery-obligation ledger for final responses c84c0c5277da949aedd15c381f1f41bb6e46baf9 Merge branch 'pr-51020' into lane/c3-memory-panel 7a43ab042f65182bb8cb00cebbd1320867d751db fix(computer_use): reconnect a dead cua-driver session instead of hanging (#67138) c34b29d11a7432a30497024754522cf4079b4739 fmt(js): `npm run fix` on merge (#67152) bd4953b30ddaa587ab501e02f897661029de3183 perf(desktop): incremental block lexing for streaming markdown — 14x less splitter CPU on long replies 73e32f37e7bde4f5528ab04b5b6356bcf00d0af0 Merge pull request #66747 from NousResearch/perf/desktop-hot-paths ca0703feae9812a2bc177539c02e61538b7c3090 fix(cli): try bundled TUI before requiring ui-tui workspace (#67116) 11cb9e571f34a5bb4feacd523da90bf56ed401d7 fix: harden /model --once against persistence and config-sync leaks 3f84b7a16334ede95e68100d5cdacdc33ab96d7e feat: add /model --once one-turn model override (#29914) 7ab95b4c9c768d7f0011103a8f4e0a1390390110 chore: map emo-eth contributor emails for #66149 salvage 38b39b87efcfef6b8cb60d519e0fee2dc09a8349 fix(discord): keep recovery ledger I/O off event loop 2b2203e3a7934d1f69311be55a31db2bf343482f fix(discord): advance cursors only after final delivery bc0e5adb1de7f80b81f2c1eacc1acb46da05a18c fix(discord): persist per-channel recovery cursors 92a7145297d1f7c9705dcca15f69c7f534db1aff test(streaming): include original reply anchor metadata 9412f2dd84f7d7e41d359aee703cc6ffc44c71c2 fix(discord): persist streamed final delivery d5b9c1ee37bba5da3de61b49defe5d7fc40b0819 fix(discord): guard recovery claims and ledger failures da955a643e7a83e4179e18b2f822e7a23cd57a5e fix(discord): preserve recovery message identity 26eafd6a002b5cf745c717f73d8564967c198309 refactor(discord): remove unused recovery reaction probe fad6cbaed386cae9096f5c07d7a755237991aa0d fix(discord): make reconnect recovery lifecycle-safe ec24fcc6828d3d2b19d5d1c683b2f1cff1cc7d4f docs(discord): clarify default recovery scope 95ce3344c4512d9f73191be6e5b72667d6bd40c3 test(discord): assert global recovery scan cap 80744bc2bc4a8ff736f467c4510ef80d1961a3a9 fix(discord): close reconnect recovery edge cases 2278f2cb7ec303532dc71e6d20e412501c7ecf42 fix(discord): harden reconnect message recovery 867037bcedc067740ad293c5ab6f3e78a233f058 test: update Discord backfill import for plugin adapter a52041b2e0ab13d79c4721dd391794268b5be487 fix: avoid masking missed Discord parent messages 303949acdc334377278e91d4245d3be0669f4518 fix: backfill missed Discord messages on startup (#3) 9d6d7728376d110c468d15e0fdc9964b31099a00 feat(computer_use): follow cua-driver's verify → escalate ladder (#67123) 2637aa607f2017ec5f638ce1843b946312ccbd48 fix(desktop): preserve in-flight turns across gateway reconnects (rebase of #66234) (#67114) 862b1b37bf0aadba3a98b3756c7d71779379b53b test(error_classifier): cover empty-response max_tokens misclassification 032a424fa4e2e18e8a7899b98183f1912a3aa872 fix(error_classifier): stop empty-response advisories from triggering compression bf391030877f130240ba6f20684e60c8a8ac67b4 fix(desktop): accept shift modifier for keyboard zoom-in on macOS (#43517) 594e31c63fa6fd1084da5542a420dfe9fcf28ea1 fix(skills/tldraw-offline): correct the computer-use delivery note d8fd45e9a81875e2878229c56fa459322905a405 fix(gateway): getattr-guard _status_text for bare-instance adapter tests d4396797c3a1ffa9c10d38454da2105b916ce8d7 feat(gateway): live per-tool status line on Slack 16604d59ca00a2dc59b4a057cbc6244bb590907d docs(gateway): document typing_status_text on the Google Chat page 21d01149c7c622a2b8dd0541910e91f6e6af73ef test(gateway): cover typing_status_text through load_gateway_config dc0c778b22be86d4d4c899c49af0cfe01defa9dd feat(gateway): make the working-state status text configurable 5b44b658872be99580902a0f41a1aa44fb2241e5 feat(dashboard): schema override for browser.headed toggle e45d12642d5d0753e492d51be17cccf687aa8b06 fix(tui_gateway): prevent resume stalls during submit and teardown (#66573) 58a5945b1643349c2f617abe2bd7f15593281d91 fix(dialog): close button not working and tooltip showing on open (#66340) 48e36a5370061c905fee43fb394f6a7a88801f60 fix(desktop): open setup for missing provider rows (#66767) ad0ddfb15d2a3589fac70162a181cfbfffe49d97 feat(desktop): support Ctrl/Cmd + mouse wheel zoom (#40295) 5988fe6cd5547d3620df1de889ac6007f5463b4d fix: widen headed-mode gate to config, add browser.headed default, tests, docs 29899c2aa9f3baaab0d1ac26fbb74d9991cfc363 Fix headed browser sessions being killed after every turn 581e92e42c89645b5dacf8263abebb15348c791b chore: add AUTHOR_MAP entry for ildunari 036b659527efc163e103af5044dadc4bca78ddf4 fix(desktop): preserve UI scale after resize 5f95b251d6983505b1a70937b9f310ca4ba6b414 chore: add AUTHOR_MAP entry for SongotenU 6f42d6a5b88964230aa3134a600749a00260b950 fix(desktop): re-apply persisted zoom on every full load, not just the first (#46429) b1fc6530815ca453d5f2ffd9225ecec35b0d8e93 fmt(js): `npm run fix` on merge (#66983) e6327692699f05d83f80c06103bc871bc61a048c fix(desktop): persist zoom to JSON and save window state on first show (#56726) af6b41b18b449507831a23a6a0abc24e2ec75245 test: add coverage for manual-skill curator guard 62364122946e961e638226d8f5c9a0ce2e8f1da0 fix(curator): guard background review writes against manually authored skills 2c9b4ca2848eb7f37f424a4d538a53e61e3e811c Merge pull request #66961 from kshitijk4poor/chore/author-map-re-itrt e7400fb9bf054dbecd6058dc2148572f916ef158 chore: AUTHOR_MAP add 1940428933@qq.com -> re-ITRT c78aa0bad5dc96c8080b1d16def868f1ab039b0c refactor(gateway): dedupe detached-task consumer + reconnect backoff policy 8b14440d7565b169f7fbe485bf8ed7344a1c3f3f chore: AUTHOR_MAP entries for StellarisW and 王鑫 (PR #66222 salvage) f57157a1284e98dbb1161c9de1c62e7bf7a164f1 fix(gateway): recover Discord websocket and event-loop stalls c48a801b7c440868a0db8e77632728053c218421 fix: gate debug log on first-discard to avoid double-logging 4fa67d20146295e22228153e1d5641ef900eea4a fix(streaming): block stale stream deltas 3ec4c9ce4dce0ba7f273fa0271713c7150cd2ad6 fix: drain logs + release PID/lock before watchdog os._exit, drop infographic PNG e378ed0c91323e4b2b9b972aa97685886e382ac5 test(gateway): cover shutdown watchdog and loop heartbeat (#66892) 1bf5fd08ada10f34125b5f3d54ff9ae355a9f61c fix(gateway): arm thread shutdown watchdog + loop heartbeat (#66892) bd3d16a4906ae2a749eff7aa6947667d6bd4259a fix: salvage follow-up — remove redundant coercion, fix classifier, restore None guard 7942a77586229b8166275956756e89e1cf14b18f fix: normalize multimodal list content in build_assistant_message (#66267) aef0fe6f27a538fd44b57e9a000f548f9e1f80a8 fix: handle multimodal content in interim assistant text and avoid retrying local processing errors (#66267) 277eedefbea5707e304f62dd4062d269c9c676cf fix(review): surface respawn-storm env vars in config.yaml + docs fdcf3527970c34f9bea96640af268f15e69df13f fix(review): pass 2 — Bedrock reasoning-floor matches both dashed & dotted keys ff9519d44790d2093190493beb51ea6d464f5cca fix(review): pass 1 — consecutive supervisor cap + Bedrock reasoning-floor modelId d9209547471dfba33c82a014a31cbcd38450ddc2 fix(gateway): launchd ThrottleInterval + portable respawn-storm circuit breaker 71f4de3cd83f315388190e36bb5b8553fd9a8dda fix(gateway): supervise long-lived watcher tasks (task-level) ff56251555f73d835d0424635303c3cb5a2a46ce fix(streaming): Bedrock liveness watchdog (into #58962 breaker) + finite local timeout d296749056fa18f2c741dd46e5e60debe4016ed5 feat(desktop): billing settings tab (#61054) 7668d289d6807de8332ed065c2ef3e5ba9589631 Terminal-billing client hardening: shared wire types, wire-layer tests, dead RPC removal (#61067) 8f657b8f74e033df9727a2e68bc0e83acfc33068 test: add happy-path + no-markers coverage for autostash recovery de90f5831bcd52c1bacbdf1b698b1717f62d6d56 fix(install): continue after autostash restore conflicts 21f971bbab322e5d184727c59c02cb8e5ffeac5f fix(ci): null-safe files iteration in the paginated compare (#66867) b81bb0638dc46501d41ac86f65e8c6b8aa239527 Merge branch 'main' into linux-keychain-auto-detect d8dbfe844a09fcd83c15e62c756026dd29dde0dd feat(skills): add tldraw-offline agent scripting skill 7fd419e5e6a0ac53f934a69226262c41ba130a2c fmt(js): `npm run fix` on merge (#66890) c7eb0cd22c2d69f3e79625188f227b93e360c3aa fix(desktop): preserve dirty inline edits on blur e52c33cc9b63a16a86b9a063b25392adaa1b3357 chore: add contributor mapping for Bruce-anle (PR #64796 salvage) 56db7a5e6cd520df1d94a43f835db78788b292f9 test(tui): keep watchdog checks behavior-focused 68f7f15207c53f31e236a3d768abfc4c88e3a8c0 fix(tui): use direct parent identity in slash worker 3d031bdb298c26633c948698b3356c585f7c66b8 fix(mcp): use direct parent identity in stdio watchdog 4c96172d9bee8542a356610802b9aabc1419f650 test: stub discover_local_cdp_url in CLI connect context-note test d93c905808972560883d9bc11d1e82b4c43d05ff fix: /browser connect times out when another app squats the CDP port edfa4cd9b7410d0af759a97675242b3c8d0a05b1 fix(cron): widen UTF-8 BOM tolerance to backup/curator jobs.json readers f361232883470c23237b7ec8115b143be5bc7a01 fix: tolerate UTF-8 BOM in cron jobs.json and context files 51e1fb8fb92b490394427f18c36f4266c66457b8 fix(cron): accept UTF-8 BOM when reading jobs.json ddd34a98f3e80783245ec8973365f71d29b7e9da fix(desktop): harden Windows sandbox fallback against false-positive sandbox loss 2b0c4d69ea3ab9913159b0e9a320e548fd0ebfd9 test(desktop): cover Windows sandbox fallback marker and ACL helpers e53d2dfccbb96f0a40e07f798b7c72096195e439 fix(desktop): recover Windows GPU sandbox 0x80000003 startup crashes e5afc0d93bf66e0bd124151c11e5c73ff08d1bb4 chore: add AUTHOR_MAP entry for juniperbevensee (PR #66650 salvage) fb0217c6561a12c77841bfbe1f48632f167048e3 fix(agent): tolerate lone UTF-16 surrogates in tool-guardrail hashing 33300cdc7f649a2a9ccfdfe8303517ef44ff3152 fmt(js): `npm run fix` on merge (#66834) b51fbc738be26760939922981f9d4ee468770f91 feat(tui+cli): change your Nous plan from the terminal (/subscription, /topup, terminal-billing UX) (#51639) 5402cb5531e366a61aa24ad2995ebe87afe498e6 chore(contributors): map mason@masontanguay.com -> DictatorBacon 1aadb02eafd3420499ce30ce3154507433439c2d fix(delegation): stop mixed platform bundles from re-exposing blocked tools to leaf children 95b09d3f7809137ba8069738f77f3b8a436f3403 fix(gateway): route inbound-image decision off the event loop 06c729706f9019a436c6db86bcc964c4522793c3 test(docker): cover tini -g legacy entrypoint boot path be3c160a85fa8d3a59df897d8809843c7d0e021a fix(docker): strip tini -g flags in legacy entrypoint shim 3d9be2789552a495c7adf30148e867e7614a4bdc fix(delegate): declare stateless channel in one-shot and cron so delegate_task returns results 39b936e299df20c5616dd26429ad084ddd9c2360 perf(desktop): cut startup serialization and per-turn REST amplification c48d53413aa2c09f6d5703082361c2754f1d5350 fmt(js): `npm run fix` on merge (#66741) 443981ae978db7996c18e32bad2b1f7364a561fa Merge pull request #66738 from NousResearch/fix/ci-timings-fork-token 65f1c94d2d48f274232a04cc29f0f95b7625a496 Merge pull request #66737 from NousResearch/bb/tooltip-focus-open ecd54a001e6a7c13fa2562859ec4703b9520977f fix(ci): make timings report fork-safe (missed by #66577) 126559d6bb8e18480ec816bad8f7da56343e78f5 Merge pull request #66734 from NousResearch/bb/desktop-spawn-helper-exec-bit 7f69494c3aabf2ce94d531d063568774428ebb28 fix(desktop): stop tooltips re-opening when a menu/dialog restores focus to its trigger da805810d474299a9cba9dc3947c181ce03b1659 fix(desktop): restore exec bit on node-pty spawn-helper for dev terminals 77a33111c738b0caf2561b63226e81a0284370f6 Merge pull request #66470 from NousResearch/bb/picker-dialog-latency 7f78046e5df7b0f39301e3a746fc79b40c710c12 fmt(js): `npm run fix` on merge (#66731) 3bcd0c1b0006a1ed7a3ee4231550be7bd422481b fix(dashboard): only open the chat PTY once the chat tab is active (#59551) bf517f930144704c586be6f9deca30b072586c76 fix(dashboard): keep custom themes visible after embedded chat starts (#60601) eaa539552c4c2497428941792c1e5bbce59aff7d feat(sync): HSP/1 personal skill sync client (Milestone 1, client strand) 9d726cfda9f85d132bfeb54d44c12758eff5a649 Inspired by Claude Code: session-wide runaway-loop caps for web_search and delegate_task d59b79fadd1e9edd7afc5c679cc3b143838e7c01 fix(model-picker): show exhausted-pool providers in interactive /model picker (#66584) 5122ddd478143a6901bb752cf8ebcd1c5154b6da fix(cli): pass TUI Python env from dashboard chat (salvage #44797) (#66581) 9803b2fb89c0da0605df785df1cc686e7c83dbce fix(desktop): preserve numeric and display LaTeX (#66173) e7a8b374b780ee477d2d42eb183411c2a8d82657 fix(desktop): expose Local / custom endpoint in Providers API-keys tab (#62818) b9267b50eaa4ca838aaa05c0ad400fb575793017 docs(delegation): fix stale internal batch-lifecycle comments 35c578177bb17d193945f54a4d4dc1b1622316ee docs(delegation): align guidance with current contract 38233b61c2a96c6b646ca9b38148bf38a3b537a7 fix(desktop): trust Windows system CAs for remote gateways (#66304) 1e01a4bbe7ebf35cb1452c2e0c95f886dc9c758f fix(ci): restore fork-safe token fallback on PR gates broken by #66373 (#66577) ae1cd746cb0174396eb446c656b33df4f96566bc docs(kanban): explain why an unblocked task can later land in triage f29c28d6d0b221b1273406fcbfeb907a20aad0fb docs(kanban): clarify unblock status routing 9a7a43b5d6572e221e6bf367518281d09e3d5265 fix(tools/kanban): sync kanban_unblock response status with DB state 296494db0ee99f1cd9e384b2083e7a60aeb833ef fix: stop infinite loop when assistant content is a block list e7f208fd746ecc4da2862d40d1296773e378f884 test(cli): cover picker-path persist_global=True in #25106 regression tests 398634eeda15fc372d73be9f5fddf88f36f51660 fix(cli,gateway): sync base_url/api_mode on global model switch persist c7aa01ff06a26387c7f2f0d28faf52552912d930 fix(model-switch): override stale api_mode with host-mandated mode on OpenAI-direct switch 7498eae3f7204512c72ed17277dc3173a937e6ca fix(cron): preserve POSIX script decoding defaults 1b63737f55fa9821391d8d50a4018f1dbc9b5409 fix(cron): avoid Windows Python launcher popups 81083d70cd05ba96f6e89988d8ff07629cd00cf9 ci: live-updating PR review comment with structured job statuses 2c6c396f971d16eebf22915d3c83571ca751129c fix(desktop): waitForAppReady checks overlay coverage, not just composer 0b20f46cc57d702221b07a040913bfa20d2f8e51 fix(desktop): kill boot overlay fade-race in e2e screenshots 408578d966337d63924b5e2da65797b3143e85e3 fix(desktop): link artifact URLs directly in E2E summary 6811ca8c966cd5aea2799ffcfc2d1d7b6152103a perf(desktop): remove redundant build from check script 4476edcaddc628156466385d5de7dfcff81a7b9f fix(desktop): link artifacts in E2E summary + upload all screenshots fdc377bce7334e8f433465e1a3fc6460bd1b589d fix(desktop): stabilize dead-provider E2E 098a127e4a0a023feaa4730c15f80a262f1f84f7 fix(desktop): keep visual E2E diffs advisory f6d40bcc1567bb9dd634ceabac77afefd1b68a5a ci: disable e2e windows installer for now 1fa58a221462efd6f2c006aeabe062da0dfb640d feat(desktop/e2e): Playwright E2E suite with visual regression diffs fa85a40975e3584f6db5590e5aa5eb340fa9f3e6 fix(desktop): minor type fixes and devShell cage dep a69eca229e1691667d3aaf88161f2afa6dc5766f ci(windows): add desktop installer e2e with AutoHotkey 4c2aba59b422943dcfcf8ffc70b399fcfff25b74 fix(installer): uv path resolution and PowerShell host handling 6e5db7b29e8fc7dcb6e2348926063bcba912e8f5 fix: prefix-match interim streamed content to avoid benign duplicate bubbles 8a4c9579df9f04285efd95c6d1e82e86d882326f fix(desktop): preserve interim assistant text wiped at message.complete 1efb5ac3868d303e09c083521ed7fb328fe34c99 feat(state): decouple FTS-layout version from schema_version; require-mode notice d926a7bbbcb14872e29bc42a381682f7236e02bc feat(state): make v23 FTS optimization opt-in, not automatic 68a2c44b98e6df16ee26200fd29570af744764e6 fix(state): throttle deferred FTS rebuild so live sessions never freeze ea30c02ed495e8d53ee5544f05a1ec2391368457 fix(state): _fts_table_exists catches DatabaseError (vtable constructor failed) 23343c4849bf35e61070a2cd37b2a4b1a95f651e feat(state): non-blocking v23 migration — deferred chunked FTS rebuild 8035646d36ec318795f2e9f3f0bf5716fa281d12 fix(state): apply visibility filter to CJK LIKE fallback; note disk headroom in v23 warning 45251bba688d851e50e57b4f9ea426f9aeb89eee perf(state): external-content FTS + tool-row-free trigram index (schema v23) d9ee342414042bba7bca43438f19d2fba9a54806 fmt(js): `npm run fix` on merge (#66527) 3ea2c90d2324daa4e66a9a7e647a439daa147a69 refactor(ci): DRY the retried label-fetch into a composite action 597615ade48c3e1892323da84b4f98eaa1625a09 fix(ci): make tests, workflows, and attribution reliable under load (#66373) ca115aac0b67752c733d1297f26b309cb6861443 fix(tests): harden env isolation and replace remaining sleep-sync races a27c8c94d91de5839cf0a06b743b43db5d31a561 fix(tests): repair indentation from de-flake batch edit 0f56e20d2391f85d2d315bc24c0e621bf60074ae test: de-flake 30 timing-sensitive test files for loaded CI runners 6929d139412ee38c51e209871674a7a6c94f139d fix(tests): kill the two root-cause flakes — leaking pre-warm timer + env-dependent provider list 007ca57dc82720ef71404f219937618a1373e3cd fix(ci): kill the remaining transient-failure classes in workflows + Dockerfile 3edcf23a449f7f02cc8399955403e99e2ebcce5f fix(ci): curl retries on deploy hook + skills-index probe e0e7370beabe4150dbdca12149b26c12a97a1b08 docs(agents): document the file-retry flake policy c20c6560fd58d9d9aae2ac3dc752de2b2fc57c94 fix(ci): job timeouts everywhere + retries on all network installs 0cda648dfb1572e607856054429a099edbab98d8 test(approval): loosen wall-clock perf bounds 0.15s -> 2.0s cc9636817505d5daa0cb664f5cb5f52037424edd feat(ci): one-shot per-file flake retry in the parallel test runner 06adcfabf92d38234b032c5de9508fde19ab74f0 feat(attribution): conflict-free contributor mappings via contributors/emails/ directory 07f07c7b51643fe2ebbd6ac582f80b2a1b1c29d2 fix(mem0): migrate legacy OSS base URL aliases 4c0546c9cc240db3de30e2d5fc6ccf6e4f27f407 fix(moa): surface stale presets without retries 61bbc3933091dc418d683aed2928063e88be694e fix(codex): harden final cache-key boundaries 81496a892543c2526e178ea1b9b66dcf3212f803 test(codex): cover overlength cache-scope headers 8051ebae30c147f520f291736be644e6440dae4c fix: cap cache-scope headers at 64 chars to avoid Codex 400 error (#66045) 05b5e2b6e941eff9c014644eec4a40f6d676afd7 docs(codex): document live app-server display; AUTHOR_MAP entries 18331b9bbd96aad798a120649d1e66b04f75ad69 feat(codex): stream live app-server events to TUI/desktop tool cards 210e6b564340a0964ef8b2367b838818d424b58f fix(desktop): replace atom-mirrored refs with synchronous writes + direct reads 505a4e82672ac31e0c61dba1bdc6bbab90a4da81 lint(desktop): ban atom-mirrored refs via no-restricted-syntax eslint rule 8702e6a6cbc64742acd669ee98eaca82b87b8cfd fmt(js): `npm run fix` on merge (#66505) 7f76fc040a103e292609b142aba45d1220154b57 Merge pull request #64576 from joelbrilliant/fix/desktop-update-stream-output e4cdd8d9adc51e4fe493c1509b61808b6f8100bf fix(honcho): delegate the config.yaml timeout read to load_config_readonly 9769facae11df98ea6ee5b0dc1e67f14e08a3d22 fix(honcho): resolve the timeout staleness check from honcho.json like the build path 19bc02ff8e1b0c201901020eefd48dbbc4c36c74 feat(dev-sandbox): add --from DIR to seed sandbox HERMES_HOME (#66486) 11d36232c03dd950942a97a08003aeca18eb4b2e fix(desktop): stop button sends interrupt to wrong session + stale events re-arm busy (#66485) 7acd6c902c00cdd4570f4d6572fa94734a30abec fix(types): fix ty python env resolution + triage discord adapter 0cb42c10a40204e50e4b73ff527e4f12893ef8ba fix(types): declare AIAgent instance attributes as class-level annotations 169bfe20e4bc5bf3c7c4efdb61ee3e7167467dcb fix(types): sweep invalid-parameter-default across core modules 9b8b054c2d0638eeaf9c09b062f5e77fec39249a perf: fast model picker + dialogs — config-load hot path, model.options off the reader thread, off-screen turns skip rendering dfac0ee141b8366d638711aceb32662a4a64b38b refactor(lsp): version-tagged _DocState replaces timestamp freshness tracking bcea5371c8194097e867cc0d49a97e7eb958c5df fmt(js): `npm run fix` on merge (#66465) 29dac61d7757a0e936c3e7c3685e3f12a3f702f9 fmt(js): `npm run fix` on merge (#66460) f9b1fd7994b07be0e2024fd69f47eb5124ab906f fix(lsp): never report stale diagnostics — wait for fresh post-edit data cf52edbb595638fd6c9d7286ce4ff081fa95129b Merge pull request #66454 from NousResearch/ethie/session-status-sync 29e3983fa879186b2122bd6779a2deb266f4acc5 fmt(js): `npm run fix` on merge (#66457) 9930c2b47f0f0deea0cb617dd7337a62b9b75487 Merge pull request #66034 from NousResearch/bb/review-store-tests 3e7c563ddda1a6d244edfa5005fc2c7b11c62480 Merge pull request #66449 from NousResearch/audit/desktop-model-picker 270486226cca32bc2915f4f71d3b445f8e9a874b Merge pull request #66347 from NousResearch/bb/profile-switch-prewarm a75a8eda72a82a0e56972ff8084dd6ff5723a52f refactor(desktop): derive working/attention session sets from $sessionStates ba542338ea8865fe2d489afc643bda7b7c69c7a8 fix(desktop): session-scope fast mode, surface profile ownership + pinned model override 41fdcae6881512cb3de842877a7589173fc9ce32 fix(streaming): make the single-writer fence best-effort so a missing guard can't crash a turn (#66448) cfb9459cc8abf7993512988281477eec35f97269 ci: add 2 minute timeout to osv scan (#66410) 75b300f13af40878ad6482b2ecb39c55c86679fe fmt(js): `npm run fix` on merge (#66445) 2f00cca49a09b829de8f178c0021b6d3f6b807c4 feat(desktop): promote Fireworks AI to #2 in onboarding provider picker (#66432) 81a140266f4d75a3bc64deaca60c492c3f27a03c perf(desktop): pre-warm opens the gateway socket too, not just the spawn 594308d4bbe95548c9fe418bb10c449099426f93 fix(credential-pool): throttle "no available entries" log to stop Windows log-lock storm (contributes to #62698) (#66338) 00e9f6dd4d5760c2a0cce4222639513de75e6d50 feat(serve): add Windows remote backend runtime for Desktop SSH ef9e0c98f5c21b81ec3b85b37c1160efbb3d83d4 test(compression): expect complete runtime tuple 73057ed1616c7c9973a0bc9ed4d913b93c969c4f fix(auxiliary): scope runtime state to each turn 89130bf1f7a56db466bdc2796f8bccd2096c95e3 chore(release): map auxiliary runtime contributors ef9a9831543f2bf46d59eb8afda0648fee0ac7bf fix(tui): route images with the live switched model bcce700783814c0fc75459735f85082b47204004 fix(compression): reset failure cooldown on runtime switch c201b72f346a75fd121ce1661566697b508d4d32 fix(auxiliary): sync runtime after fallback restoration fdc6c32d7d77238095f1a8a909ebbf98de0bc8a9 fix(auxiliary): isolate runtime cache by live context 9e1b1d7536270b4e2bf56662903acfbfc54ac937 fix(state): self-heal FTS corruption on the SessionDB write path (#66296) 0bf44d557f4564c9d7d84cbf7632b02015f00271 fmt(js): `npm run fix` on merge (#66348) e4f87557b9cd3e33a67182bd61ef4949d9660d1e feat(kanban): modal create-task dialog, editable board project directory, comment workflow hint (#66333) e0390c0f70bbcbbd7ea81867559c8d487e231679 perf(desktop): pre-warm profile pool backends on hover intent 71252f0dcb92b957b45c371d062aa572b8dc4785 fix(terminal): fall back when the configured cwd is unenterable, not just missing (#66306) c49ed093360700f7a602c6e6a514fb4b44ee0721 test(tui): accept repair_alternation in the top-level server test doubles too 95cc3f7eb2378fa134c68dc86a2cac0b66d60978 fix(tui): heal alternation at the remaining live-replay resume sites bebcf9584755aff4f3f5e5d8930930d6996bff9a test(delegate): assert copilot probe with assert_any_call to de-flake under slicing 7ada946436bc083f37baf7adafceff1ea45af567 test(tui_gateway): accept repair_alternation in resume-path DB doubles 4579f263088fa90aa5cb58d7cbf903d2e32ccb8f fix(state): heal alternation at the ACP / CLI-resume / TUI-resume restore sites too ec3d958425a8d72937ea4e6a043ec70c3106fa55 feat(codex): webSearch bubbles + bare hermes-tools names in app-server bridge 11a91a6d1772b9d4794d3415f31496c2377a02a5 fix(codex): forward drained notifications to on_event during approval roundtrips c7205040c3c9b21dbbb143a2f75969fdd69f6b0c fix(compression): affirm tool use stays active in the compaction handoff prefix (#66291) d32a6d4ccacb0ab174b3e093fb462729f9e8d2f4 fix(codex): claim the stream-writer token on the codex_responses path too 35cbffd5c8be53b3372284da7c10e8eb8b9eba52 test(streaming): cover the single-writer invariant for superseded streams 0c9ac093134564961711455d3839cc8e94192402 fix(streaming): fence superseded streams out of the delta sink (single-writer) c66891db083cd422bdecfb1e65404489128b5c9d fix(cli): arm exit watchdog on shutdown signal, not at chat startup (#66278) 348e9912ff57f9f4568bd76080f930905e2799d7 fix(agent): execute valid tool calls in mixed batches with invalid names (#66317) 5f99b75536f743f003418277d6e1ac02043fab36 fix(mem0): migrate legacy OSS base URL aliases 582b0acba6351df831d5c61017de380f81b8c2e4 fix(codex): harden final cache-key boundaries a9cc17fd80648bfee0d0b677fa9ea91421f329fc fix: harden transcript append retry — lock, matcher, encapsulation, cap 53d35883896c22d1060c6fd73fe8f4b5d62e4b50 fix(gateway): retry transcript appends 7214b9ca80f9658ddc89b2b8ae6ae6372d7445e5 fix(moa): surface stale presets without retries dbd9da71858ea68332bdae35b245f4d4fdc6955a test(codex): cover overlength cache-scope headers 6f795f22cc2db4cdf497f23e41b44d0e92a55bf7 fix: cap cache-scope headers at 64 chars to avoid Codex 400 error (#66045) f32191fd52412f801de22bd58de0c7bed2e9eb73 Merge pull request #66254 from kshitijk4poor/chore/author-map-maartendmt b41b4b3ec002b277c30bc628b941b33cbff85470 test(file-safety): unbreak session-snapshot suite; de-flake fixture to env-var resolution (#66293) abc22cdf1a5c0fe30bf1a226bfe3caf489e8316e fix(cron): harden execution attempt ledger d9dd05b69d9b83e92c917589a231e704e117f640 feat(cron): add truthful execution ledger 174fc958ab1902fae67636131cad33c345649f42 fix(errors): classify Z.AI GLM token-limit message as context overflow a8ec41533cad60dc772da7df60d23f864ebc1612 fix(mcp): treat non-string nextCursor as end of pagination 6030ca8ceaa216508d6e56303bacd22d3925298c fix(mcp): follow nextCursor pagination in tools/resources/prompts discovery c356752b6beb9f974889d07102b712245f8e3196 fix(memory): drain queued writes on shutdown 332fbadd7b8294fe015d4b1c8150d5501e586c76 fix(backup): fail closed on sqlite snapshot errors b4221c6db2f45fc8fe4a95e38ad23f400865683f Inspired by Claude Code: protect session transcripts b78ff50d8d59ece8868af7d65d28888055dcb370 fix(gemini): prune required entries missing from properties in tool schemas 17485cbcd27440b1fe4563515cad861a89f072a2 fix(cli): sanitize terminal escapes when replaying stored history (/resume recap, /status recap) b90dbac1d62e97d65a00e76cfff98638b2480406 fix(approval): unify execution-bearing option detection 780e0980773a875322abd720e5e126a4fe448e7b fix: widen UTF-8 BOM tolerance to all sibling frontmatter parsers a4ecb3da9ad05b4d97cf968feaebf11a375c6dc4 fix(skills): strip UTF-8 BOM before parsing SKILL.md frontmatter f28248c66238d4419e11211358896ef49ee853bf test: update lock-io auto-reset assertion to the promote write-path 9fc0074bac1d32f95f33b35a89a88fade101f6ba fix(gateway): unify reset boundaries vs recovery — promote accidental ends, honor mode=none, adapter-aware resume guidance d17daf0b1279f3a82f54fd6cc9ee6b629bc7e813 fix(gateway): keep stale route when recovery lookup fails f5b61122265b19237f295094ec499177eca19c19 fix(gateway): fail closed on active-process check errors cecf2767ee256f0c52a54dabca46d54c624b99bb fix(gateway): preserve lazy reset after session expiry 3c7bab9c655c0000ca4c60ecd8e6f7cf9bb9dfe4 fix(gateway): notify user and log correct end_reason for resume_pending_expired resets 039f6b2f1be9149dbee965c53e5a5c885a9a4c6f test(gateway): add overdue-policy guard for stale-agent-close recovery path 4b12b7a359b06468b5d2f5e7457d2ab3df59dd71 fix(session): check reset policy in self-healing recovery path (#54878) 3305dcedbb98b44532d1e5e77d97cb753b0b9be2 fix: conditional promote + real SessionDB tests e701cdc86e682bbd7a228c91cfebde36862eeae7 fix(gateway): end finalized expired sessions as reset 78b9d98d76d7fe67c831ff4bbb8f515d3365c00b fix(codex): surface nested error envelope in Responses type=error SSE frames 4dc2b7be0f1d4cbbbb7a723e182d7292d5d9c02c fix(mcp): preserve concurrent OAuth manager refresh cf3ae7c59c27e229622490566f79ee7c95eff9a4 fix(mcp): preserve live OAuth state during reauth ebd737f4d9685753342daff89e21fbd03945eaa9 fix(mcp): close hosted OAuth lifecycle gaps 604552972448c32fa7bfdd31dbfe8de8cfb53937 fix(mcp): harden hosted OAuth across profiles and clients 11eaa77daf8d41536bc8dca1fb2c72f54948ddac fix(mcp): serialize hosted oauth reauthorization b09f1ba77081d37ae59a9d346842388e9ad1765a fix(mcp): reject invalid dashboard oauth callbacks 05dea7be04ea9f3418193fb872a7ae9b860c4b53 fix(mcp): complete OAuth through hosted dashboards 14ea8de76335365e53eaca212a495273acb02e98 fix(agent): harden non-finite wait recovery 1a5d2a12d86e03c2f267ff2bba315a3e0458da4a fix: handle infinite Codex wait deadlines 6dcbcd0277a2d5cf42c53a8a013f7ac18f931fa1 refactor(console): remove hosted-context command blocking from Hermes Console (#66144) 60419dfb4b6f67d4a8480efd058d4d3a79c9116f fix(codex): reconcile app-server bridge with #38835, gate commentary on show_commentary 68d5368f3825202f132dcf7ba5414e098f4bddbb test(codex): regression coverage for app-server event bridge (#33200) 7b63c4955ae80387dfbe0dda737a8bed9d633da7 fix(codex): surface live tool-progress + commentary on app-server runtime (#33200) e840cca1a924fccf4be5c2a80aa6a35a8a77dbaf feat(codex): add app-server event bridge for Hermes UI callbacks ebc32bfcf759b8ab0195863e2813523003733158 chore: add MaartenDMT to AUTHOR_MAP for PR #65637 salvage bd208a6d77f53f598f34fe091f7ffd387fd88330 test(cron): public save_jobs()/load_jobs() post-import HERMES_HOME regression 65d6bd2b9f4978676f7d3d3b0ea54bd750172436 fix(cron): patched compatibility constants take precedence over a repointed env 5c121f157fb694fe536ee96eef36d3ce7011eec3 fix(cron): resolve the no-override store fallback lazily so late env repoints can't write the real jobs file 0f102fa4dc04b7dfdab048169aaaa640d09d7523 feat(browser): store full snapshots on truncation; make eval denylist opt-in (#65923) 779019ef7d3b9f51870a280874cc9c684b7283d7 feat(agent): add display.show_commentary toggle for Codex commentary channel 7041c56cdf844cd11250c6387a68945c4cdaf9c9 feat(agent): stream Codex commentary separately b008131b54ad9f391b3198cffb6907a2389dfe67 fix(agent): harden Codex commentary interim delivery a15397d61accb5743070acfa35de23846734b2fb fix(agent): redact Codex interim commentary 136ade2ed53efc1258d172dea3de08d26b1358d2 fix(agent): surface Codex commentary items as interim messages 73ad9136b7712d4f1febb814c69fb8d1ab99638b refactor(credentials): consolidate single-use OAuth refresh lock scaffolding 34837597d298ee9b67be5a47409d7e24b6751ec7 fix(auth): make xAI OAuth pools multi-account resilient ef1c622105a3955f1b66903bf25def8686181531 fix(title): prevent stale background title generation from reloading unloaded Ollama models 883a465efd0695c41e5327625f2da121f3609974 refactor(skills): tighten comfyui MCP routing + trim skill below pre-PR size 07e4c45c9f4663f115203cbb181220acd22a3899 feat(skills): comfyui v5.2.0 — route to Comfy Cloud MCP first, offer local only for 24GB+ setups 61be8b3112ce62d85b4b44a504bcfcd86f4bcb97 chore(release): map seagpt noreply identity for PR #62983 salvage ed2f48b2e6361e82dc3c5db2791d3b309313ecae fix(titles): use active runtime for gateway sessions 7facf63ae71b846d6079a69483fc95ce9aa8db75 fix(title): reconcile atomic auto-title writes with collision dedup retry 9bf5822a2fec8a0d3c0d341641470e31ee8bdd89 fix(cron): robust session title generation (#50535, #50536, #50537) d05cd7c1ef113bb467d76685d22bc963034e638e fix(agent): make auto-title write atomic f725cf830f6bf3f74e985162c0f3bb071bdfd758 fix(agent): avoid overwriting manual session titles aad7eee82b625d4752fd3416697850bac550c016 chore: AUTHOR_MAP entry for mattmiller@comfy.org (@mattmillerai) 7778d739ec6e85e15fb36730e4631ffe3c5da47f fix(mcp): curate comfy-cloud default tool set + drop legacy packaging line 23d781ef09505ef2f8a644aab0550ab59fa4b1fa feat(mcp): add Comfy Cloud to the MCP catalog (remote HTTP + native OAuth 2.1) 46d16f4c2822722370168bd06a251ad5c193bebc fix(tui): recover mouse tracking without a resize via DECRQM watchdog (#66080) b170f522a4a3612c88ee12dbde246e07fcdc68bc test(honcho): align observer-resolution test with post-#62290 call shape 04d84df63cb66603afafef50fb13615b3855a4e0 fix(honcho): memoize timeout staleness check + host-aware status cadence e5bebe2cad41b009b6d799a9270b9681ff3baedb fix(plugins): rebuild Honcho client when timeout config changes 73a4574ede648ea28b072297ff896df061214c76 fix(honcho): preserve profiles for local IP config cd268c1226c9fcacfebbecb611c3bafd3cf66515 fix(honcho): read base_url and defaultHost from honcho.json host blocks 602998b76c581c001cb69324ef1399c1317127da fix(honcho): warn model away from minimal reasoning_level on multi-fact queries b08a13cd331520a3d0ba12744542e266b30e6836 test: add prefetch_context observer-resolution test for ai_observe_others 9a887e7c5b6f9767d1588000d12b06fc5689d055 fix(honcho): use _resolve_observer_target for user context in session context af550a705367ede6dd29012c5efcb889d4a2735f fix(honcho): reject whitespace-only search/reasoning queries 8222b1678574fdcf6e137778fcec51ca74038935 fix(title): follow-ups for salvaged #37349 — lazy config import, guard ordering, config example e20c3c1c29a37806ac7c06c7d743433657839667 fix: honor disabled title generation config b4138c7bdd48f9895012929012cceb60e7f5ff13 fix(mcp): serialize hosted oauth reauthorization fc39f9a498e2978b2cb10df4b7e021b4a6abd931 fix(mcp): reject invalid dashboard oauth callbacks c2a640d18c7dbced12ea4276ad5d93f53717aed6 fix(mcp): complete OAuth through hosted dashboards 328dfc9bb93b6d4658cd598d16f8e1bf6d30f319 fix: restore kanban dashboard dist from main after merge 7cb2d2cd4acf0c452349968ce8d90908e8fb4cd9 fix(auth): detect configured providers absent from registry (#66017) 3331f26c5ade308925bd1b6a6ed8e20fe5590fd6 Merge branch 'main' into bb/active-turn-steering 629aeeebeaf3ba70910993ee615da985c658eb49 docs(developer-guide): document htui/hgui worktree UI dev helpers (#64783) 531e5763e8f1dd6eb5c9855c184d39ff2003b1b4 fix(desktop): hide Windows updater console during handoff (#66040) 1f7d2be22f92ec07b3051f340727f9e785ff35fa fix(install): detect Git Bash Mandatory ASLR failures (#64651) c856f36459afbc7bf1d128d549f6f4f83a455b40 perf(desktop): kill the layout-thrash cascade on session switch (#66033) 3951d769fbfffa28b0ff69dfff31b892972762d4 fix(models): add kimi-for-coding-highspeed to kimi-coding provider list d57531b1a46849c3fbaff2f0860566e778f5d186 fix(unreal-mcp): pitfall 21b rewritten from live video production — hide sprites at source 665eaf1977f239f1e384f34719ad8a73fcea1e9a feat(unreal-mcp): video/frame-sequence pitfalls from live orbit production 18694e96d869975331aa81e1970966a42305a011 feat(unreal-mcp): advanced-workflows layer, live-verified against UE 5.8 ab818493ffbae5883ebec27344f93479a9c22246 fix(unreal-mcp): dedupe pitfall numbering (two sections numbered 4) d24ab204044161f8e774a0fc60e665c1f79c635d feat(unreal-mcp): live-verify skill against a running UE 5.8 server; encode e2e test findings a8b81c56a056ed1087b7093c9ca03c0b662d040a feat(optional-skills): add unreal-mcp companion skill for the unreal-engine MCP catalog entry f6edcb3d762139f5ae579190c12d8acbd06f424e test(desktop): cover the review store (refresh, selection, mutations, ship flow) dc58758a4b6cbb1a08bf02bc9045d5d1f1856eca perf(desktop): kill the layout-thrash cascade on session switch 56e2ba5e7949efa8bca4934a6b121d4e6f4ff10f fmt(js): `npm run fix` on merge (#66013) 36bf3c2673e39a7b237b04c5a637ff29e1278e66 fmt(js): `npm run fix` on merge (#66010) 3f199f5c51dd778c79e7666c05b6b043595cec01 fix(desktop): don't latch remote backend boot failures so remote gateway reconnect recovers (#65756) dfb76d36d545eac89da5b9094bc32ef835271e59 fix(desktop): put Hermes-managed Node on PATH for install/rebuild (#66002) 432fca55a7d28514e3f419a0ac7249557ba73673 fix(desktop): drain queued prompts for background sessions (#66001) bd00212337343150f2ee831d0e8738b417e03ae8 fix(dashboard): drop _HERMES_GATEWAY when spawning hermes actions (#52482) d4c3f981409d87ee795619fdd7189ae505c0548d fix(dashboard): unblock basic auth plugin when setting password interactively (#54489) (#63786) 921c17af8826724e9dfb468eec9c308499d43447 fix(dashboard): scope chat attach tokens by session (#60745) 10b6d1a910411f293c9c2422da3b6df6ec66becc fmt(js): `npm run fix` on merge (#65986) 64fe1e924c2b38f94083629795f840a83c2ee700 rm todo 39a93dc633679c025eb596b060dd8a0c2829f69b fix(desktop): follow compression's stored-id rotation to prevent thread reload (#65984) 75467998f90ba87adf66e1254a4d163345f23a5f fmt(js): `npm run fix` on merge (#65974) f08b1f34456d6f616309fcf03dd87c818cb0e480 feat(desktop): button tooltip keybind hints + keybinds settings tab + unified worktree dialog (#65204) f1315ae91e60cffc0310eb92cdd6f57492aa3dc2 fmt(js): `npm run fix` on merge (#65971) 0f05aaa2bf1b6dfbc625d1006b0d46c178995fc2 perf(desktop): make session switching snappy on large transcripts (#65898) 42bd4368aef12be890a74b749ae04d009c0a4412 fix(desktop): sidebar status indicators lag for background sessions 311a5b0a552be78f5c58807e2be1db02e3badcb0 feat(kimi): discover K3 on coding endpoint dc7a20cb0e28e37e5d27efa1bd75f68b5873dc07 ci(js-autofix): skip apply-patch job when no fixes found 75ca29fb21be23eba62f594b6504c42a6f9963e5 feat(models): add moonshotai/kimi-k3 to Nous Portal and OpenRouter curated lists, retire kimi-k2.x (#65913) 74fc222f17d5fa10400dbd35d75d45f5ae75df8c fmt(js): `npm run fix` on merge (#65912) 00222612348938ae0d3c4442557ba0ef3651ff7a fix(ci): use autofix-bot PAT 8d1c96fd2f60c8b47bd50ba8817a3fd1c23f834c fix(memory): align external prefetch guard with fail-open contracts d77c455d7d0cbcff99ce13dd120a6cbaae60c27f fix(memory): fail fast on stuck external prefetch 2ad6ab17e3253c5831e20a7c547eb4b22d0de99f fix(honcho): enforce recall latency and budget contracts ef68ae7ecc4129811f0f4391a16d7dc79ed54af8 docs(honcho): document latency flags and updated tool contracts e8957babf4318ff69efbad5efcded6de9fb448d5 feat(honcho): make latency-adding paths configurable e7fb51d5ac1bea0bd630869e06f3f37f374628c3 refactor(memory): make query rewrite provider-agnostic 8ab4cb9d0d93674faa94f4b8bb5126f116b95817 fix(honcho): gate the stalled-init prefetch wait to the first turn 56816f4232ea6a78f10a57803c6b02cf481866f7 fix(honcho): stop clipping honcho_reasoning tool results to the injection budget 29e04717081e5cd0bc15b0112f510f2f011e90dc fix(honcho): update SDK and restore CI coverage 1c051d1df948e2fb87cc67313b86d8e5b16b95ad fix(honcho): preserve delayed and rewritten recall context f4669f34cff3dbe4cb2b7c410974eaff5644d20e feat(honcho): add list mode to honcho_conclude so delete can resolve a real conclusion id 01d1a663e17b35d6f0e075f3486edc3531963192 fix(honcho): ground dialectic queries in latest user message 3e4e3db66d048efbcb84a8a15d22b8e22c1437ef fix(honcho): don't let first-turn injection suppress dialectic d2b6c21a3c3024660c17990d841367691728fb44 fix(honcho): resolve cost-awareness config from host block 111ca88fab0cb2019f28c84ac5e1d93865433157 fix(honcho): honor per-host timeout in config resolution 63288f1d805a2b3ea8e27bc845065b67c1e3f320 fix(honcho): stop dropping dialectic results on trivial turns bef9eea3e6c482742328567110bd662403b25a46 fix(honcho): inject base context on the first message of a session a35bc81b3f80de3111138eb5b04e64616409945b fix(honcho): honest, non-overlapping tool descriptions + drop dead param c1c59e3474f4eb68e1cadb684a82cd0e75b9f9b2 fix(honcho): make honcho_search do real cross-session message search 31a3822b80770c4adb655b09fccd251aeb8e7040 fix(title): contain auto-title thread exceptions instead of dumping tracebacks to the terminal (#65792) f1af945f6c576eccb126fa955edc9be258b33020 fix(desktop): slow session switch (#65890) b0ca12192ebf00633de3cf41f45724e1ca0cd272 fix(desktop): restore closed main window on second launch (#64800) 7d27a31ce779139d8182afb44756e937d39768a6 feat(dashboard): isolate turns in compute host (#65895) 91ed8e4a99131aaaf62f2b49d1b5db70139a21e0 Merge pull request #65893 from NousResearch/bb/salvage-63082-sessiondb-offload 2655c725cca7101c19a1ba0ab14a90d42e8d4744 fix(desktop): refresh default-derived composer model (#65896) bcf0d745727cca275e7ac33fd97be5a5fe1c4d9b fix(desktop): preserve zoom across display moves (#65874) 0f6abc73a885327a5cddbeac4856646b8cc9dd58 fix(desktop): refresh default-derived composer model c387be08b96eb4fc7a12b510a09006dee9ea472f fix(desktop): serialize git status refreshes (#65341) bed46fcd5c6c79ffcbcd747148813e653ab7df6d Merge pull request #65885 from NousResearch/bb/salvage-62308-stale-backend ee8275a8b23ebb276bcba2e628a30b9430555d9c test(desktop): port backend-connection-state test to vitest 71fa56e8aca48e92ea2087322cb0622459689906 fix(desktop): restore cloud reconnect action 783003179a5b661f39f542b503aa70eefbe1b188 fix(desktop): ignore stale backend exits 33996ab15522616305c84de9c4a62a587fc1dec2 feat(desktop): archive all threads in a branch from sidebar lane menu f0ff8d50970c35b67484056af9e913a6e6ba7e49 fix(desktop): preserve routed session on profile rebind (#65283) 0e704e9220d7e3f03443f69d27026a55a90cfa72 fix(desktop): keep tab bar visible when toggling bottom panel panes d5015bd3a8f3282c2e1f9f59dfa8ccf71767dfe4 fix(updater-rework): complete remaining items 21-34 e02fc5270207149a748869adf850d537709f7330 fix(updater-rework): address all remaining TODO items 7968b726f330daf9b6930454b0a73df4ab3ae5d4 todo: mark min_updater_version hop as done 99405b59412c0800b429dca17441aa3bd7e80b62 fix(apply): wire min_updater_version and bootstrap hop into apply 5e590b0434e630cfd408ba9f85fa8538c018443a todo: mark mutual exclusion as done 5c8598b5be43a30f040d55e7512bad8e193b5b87 fix(apply): implement real updater mutual exclusion 276fee4f011325da0c32bc4145c6d29bf8500f88 todo: mark Node reproducibility as done 6170fd7408b943bc48b79bd4cfc6c9b02da0933e fix(release): verify Node checksum and record resolved version af274efe6c24275d30b72aeffcbd32559d1ffa53 todo: mark desktop manifest recording as done 9696925ca295bfa837da4c463b8a16027db31bf4 fix(release): auto-detect desktop in manifest writer 3af8453f15a3346ebc771d65c75e2ed1b74ec3c7 todo: update trust root item with release source embedding 6b6290eb35db668459d6e5cddc7b88efb1c9d00f fix(launcher): embed canonical release source and warn on override 671e868d1c753d4a5101d354d968ff0532d63bc2 fix(launcher): establish explicit bootstrap trust root 9ce18d061ad674d1623e705b7a5c10040edab227 todo: mark fail-closed signing as done fef269285735d2855a0e85b8db8a833b1371addd fix(release): make signing fail closed and validate algorithm f84d88576cca9bbfa23738f2297cec1427d0aaf2 todo: mark manifest identity validation as done a033d17e8fabeafc5598cd595b99f8875305e810 fix(apply): validate signed manifest identity before activation 4f688126d479f546f229a2a9e3d0b3f0df252889 todo: mark symlink agreement as done 8631a0a9b894b0806b20137418e1efc35b47ea2e fix(release): make Rust verifier skip symlinks like Python manifest writer a6ce51fdf14228c795d2c05403b70df47ecef208 todo bd37ff9138d30b3e27f617320884222f1fc656b8 feat(gateway): inline choice pickers for /reasoning and /fast (Telegram, Discord, Matrix) (#65799) 7f06884da6b75441ce950bdbd135a063df989f3b fix(windows): accept locked updater exe during self-restage 8ca0cc159d48f855d6f7b4bbdb3942b5fbb6af29 fix(apply): skip preflight on Windows when venv path differs 53fe28889d6ac0f5ed5040527b9f1fd0cc328590 fix(release): archive bundle/ at root in Windows zip 87c7260e799e1d5d4f96ed953e7daf80a52a382d fix(release): strip leading slash from file:// paths on Windows 1f33497c5016ec002cf52a854eb970648d9fe56d feat(install): add hermes-updater install --source 8142d14a6a29d1c870a824b076eed94c74a909b2 test(e2e): use real ensure and apply_ledger with real PyPI cc3656492bd6d87f03b5ade49d2d27acad8b4626 fix(e2e): verify feature install in fresh process 1399891fb6cc486bf02854de96eb3924d2129d6f remove xtra package lock ac539fdfa3c9374f1dda8f08b89070da8e8995c9 fmt 659d1123c49ee6828627d07432ed8cf62578434a fix(desktop): model picker reverts in existing threads (#65777) d39612ab10e83c90eb2d8e1b7281a6350e383641 revert(desktop): remove E2E harness pending separate branch 6cd5a2c5f7baf2ae45d22183d11614d1f0301c89 chore(release): add sam7894604 to AUTHOR_MAP; widen /reasoning choices to max/ultra bfca45bda029f6f4025a5b5251df020a99255619 fix(discord): expose /reasoning reset|show|hide as slash choices 23526148d1845391fcd7dbecb1fe80b651635eeb fix(terminal): bridge terminal.backend config in serve/desktop processes lacking a launcher env bridge fdbfae825e8b5031273bc5e13543d6c097271d80 fix(tui): fall back to config terminal.backend when TERMINAL_ENV is unset in dashboard/TUI process (#54449) d0dcb9a5fd77aa8a6d7581372e64be0f2b1de409 fix(update): consolidate pre-update backups into one gated mechanism (#65754) 8462764367cc07964c132549b459051057266b7c chore(release): map bare-noreply test-commit identity for PR #62028 salvage b099652d9fd8824daccbc105ada50cf68592041b test(copilot): cover supported xhigh request paths cf73b3d41101dd218f45bce80cd1b51e267b4489 fix(copilot): clamp reasoning effort to the nearest supported level, not xhigh->high 633fc7ab88be7ca1c1c63b634fecabfd3a966605 fix: don't downgrade xhigh reasoning effort when provider supports it 0678f8f0199acca93276b1a3cab7f8d9c37f341a fix(desktop): force npm --include=dev so self-update rebuild can't be broken by NODE_ENV=production (#38416) 5f2064146524a0f9f63c3a48f76f0651bef97313 fix(e2e): isolate lifecycle processes 007cd151329c20f9d3854b6338375f3188abc184 chore(release): map focusedmiqa@gmail.com to m1qaweb in AUTHOR_MAP (PR #29290 salvage) 9298099689f9e79dbd03d8b6feae7b2c02aed40d fix(gateway): strip /queue prefix when no agent is running 5d9a72b7c219b5e96dfb308f51920296e0d369cb fix(ollama-cloud): capability-gate reasoning_effort + correct disable semantics 4759362188503931ca26aebbf0e8d75f84fdbe44 chore(release): add briandevans to AUTHOR_MAP for PR #64951 salvage 9078a838c7c81a269e80688b16beca1377726634 fix(lmstudio): clamp max/ultra reasoning effort to LM Studio's ceiling d79f75e1c69b3ecea9f3104a82fca7b8d43f9dd2 test: use object.__new__ runner pattern for background-task scope tests 8091c4405438ce84b8f727c1de29de189f0b4d73 fix(gateway): install _profile_runtime_scope in _run_background_task when multiplexing is active 58010c8b3d09afa86aa4367fec5a96ac11b41de6 fix(mcp): reuse cached oauth redirect port 9cb0c62e65c03b0d8e8f067ab616e683b260f934 feat(memory): restore the surface=declared routing from main b5bd0ef38b538627a0e5d2cbe5d3eef2c38ec792 docs(kanban): port attachment guidance into KANBAN_GUIDANCE 6cc4691c86bfbcfb27ef0e322fa60f84c84b761e chore(release): map otsune's noreply email in AUTHOR_MAP (PR #36019 salvage) c2e11bf41892c4148cc633e9c68db0811a0e7be3 fix(kanban): guard kanban_attach_url against SSRF via tools.url_safety f3cbe4560507b46657bc2858b8d7d8c64c343bbd refactor(kanban): unify attachment size cap on KANBAN_ATTACHMENT_MAX_BYTES 3fccd698fd2ab793d97cbcf0803a6fccc78bcde0 feat(kanban): attachment toolset + CLI to match the dashboard surface 14f023cd00c60da03bf2597904eba7f8338797f4 fix(api_server): run platform event verifiers off-loop and fail closed a7ec1b6e39634472bd4607b5058683b47a4e8e65 fix(google-chat): cache callback token cert fetches 1305a690e05950c70a5daf45b2005e6a444c0236 feat(gateway): route platform HTTP event callbacks 03c0b00f45b0a8fd85ee1192991e839f7c61518a fix(usage): read DeepSeek's native prompt_cache_hit_tokens cache field (#65678) 7edaaf4682bffc3edbfbb4645b61577b574ef2c9 chore: map nnnet noreply email in release AUTHOR_MAP (PR #36024 salvage) 558fcb61466af84d4f8e0728d01ca9abc0ca2832 test(dashboard): cover theme bootstrap CSS render + _serve_index injection 01bab394cde6fd05a6c73429667f6c678888b6fa fix(dashboard): theme bootstrap emits real bundle CSS vars; canvas rule flows through vars 72562be961bb369ca3de9d93058d088a6ff0f760 fix(dashboard): inline critical-CSS bootstrap for user themes to mitigate flash 2fba721ab08ea3da7271931a79c97e7978c84597 chore(release): map antydizajn's commit email for PR #36043 salvage attribution adb647269a46b0e785bbe52d4d9e993ab8b251e3 fix(auxiliary): apply review fixes to #36043 — guard named-custom routing, drop dead key assignment, tighten Palantir host match 367d3758d522a1958d27c5ef420c4b17ea6d0705 fix(auxiliary): route custom: through named-provider arm + Palantir Bearer auth a6d9d1d2cf2a72e2c1e60fef973f95b90a18bfd7 fix(security): widen non-ASCII compare_digest crash fix to all sibling sites 4ccb232af905736b65db94644acef0532f2dcf04 test(webhook): cover the Svix v1 branch in the non-ASCII signature regression 1b69c47e974e937b64e52e59cac299f1fc99e0a0 fix(webhook): reject a non-ASCII signature header instead of crashing the endpoint efb6c214983880e3a8a54fcf3253f6ad9af9c155 fix(api-server): reject a non-ASCII bearer token with 401 instead of crashing 27b31bb7ff69d2a84f7889f221333d67593453cb fix(relay): normalize a 0/negative max_message_length at the descriptor boundary fbf5005a7ed84f39bae298ad65ac5f6615d28789 fix(gateway): stop truncate_message hanging on a pathologically small max_length 9fc8fe2176e2258ea525a15a1ac2a861a5c4bfc3 fix(state): guard the duplicate-title repair so it can never abort DB open 3990bdf5513406934949f02a3b8a15f636c06f91 fix(state): repair duplicate session titles without data loss on startup (#65602) 998e35313a42f7d4fb82646ee57d0aea57f077c0 fix(auth): honor per-entry key_env when resolving fallback providers c3b2af95e3f556ed28c4bf2a2a28cb1cd092278a test: accept profile_name kwarg in auth-check stubs bb853b2e950b851e92b3d56fc3d5665b54aa0c63 chore(release): map rlaehddus302's email in AUTHOR_MAP (PR #61985 salvage) 6ff65c4d201ea2979da91c37a7106b7d48571809 fix(gateway): scope default-listener api_server requests under multiplex fef0b2d6004a6fd5a13766725aa2cb16a7c83c12 fix(gateway): scope secondary-adapter auth callback to its own profile 0cc9426c6d3b73140499406bc62a7f36438d1839 test: feishu port-binding report expects webhook mode after #52563 integration 9cb3569e97e7a57e2ca4071f9126d35e9e28354f fix(gateway): allow Feishu websocket mode in multiplex profiles 6b1267c2e44887ad6fd72e9008ede4855ec242eb fix(gateway): gate /profile source scoping on multiplex_profiles f7d6f099db2322ed07aaecc255fa7b3bc056c9bd fix(gateway): /profile reports the profile serving the source, not the multiplexer's 8191f621c31774e1ec408230cd2f9d07ce15cc9e fix(gateway): preserve multiplex profile in model picker dd9e75335c85d9b05a9406aba15ea66c57295206 fix(gateway): skip port-conflicting multiplex profiles fe2d847aca36f2c7c78a8180bbdcfcf6d8c164b4 test: valid-shape Telegram token in port-binding guard fixture e984a61306f528c0dc6e5e33af9c92539bcbe5ae fix(dashboard): reject port-binding channels on secondary multiplexed profiles 336620447422d4e037b6c746bc688c95f6476216 chore: AUTHOR_MAP entry for doxe0x (PR #50786 salvage) d34cc4093aaeffb936e250dde6ca8f7145e919d1 fix(mcp): per-flow callback waiters so concurrent OAuth flows cannot cross ports 454d553d343eec197f70a6151e43977b7bae7d49 fix(mcp): report a clear error when the OAuth callback port is in use bda8bd76a8c98cba07ed32fb97c236e92f443397 fix(api_server): mark port conflict as non-retryable to stop infinite reconnect loop (#65665) 9e13cd125bd59e2f191bc399fd574f0684e05ff1 fix(desktop): discard dead SSH ownership records 195d4557fc1cd8b92534cda05f01e517d122360b feat(desktop): add SSH to Gateway settings and recovery 75c878217d7c7f67cc865a781af4b78c4b81ca8c fix(moa): route per-slot reasoning effort through the canonical parser 4ad5036a449a051388152e094d987ad95a268208 fix(gateway): surface extended reasoning efforts a7a05024c11e4aeecb680e6886b665d933ad2c80 fix(auth): key reentrancy by auth store path 6ef13af4beac78779d983a29f89a39eac473d1e1 fix(cron): preserve resolver call compatibility 679487b80782b5e085dc5de02aecd289b7e4228e fix(auth): enforce complete fallback routes f68fd80f41ca2d5bb4a039089396ad2f759dfc26 fix(auth): preserve fallback routes and OAuth state 261b0f82409391fb64ed247df6f62b38c3d335ec docs(mcp): document redirect_uri proxied callbacks + redirect_host WAF workaround 56e06d7ee95f18262f10119183a8cc6b5a099d68 chore(release): AUTHOR_MAP entries for Florian Burka (flewe) and Peter Skaronis (Peterskaronis) f01f0f75fe74cae56dc74ed0b638cc5a5e02d5a0 test(mcp-oauth): redirect_host coverage + adapt salvaged tests to the non-interactive guard dc419d6e80db6c44ce00f507d977f8d13c2ffae9 mcp_oauth: configurable redirect_host (WAF-safe localhost redirect URIs) d0afcb125ce9566e80e773dec1084931474fc05d test(mcp-oauth): cover configurable redirect_uri + fix misleading SSH hint 6297634d223273189dd1e803a5b5cb7a8e9b0958 fix(mcp-oauth): allow configurable redirect_uri for MCP OAuth flows 7a78342ab37b40772bc8129cee23198777951163 chore: add AUTHOR_MAP entry for shuangxinniao (PR #40127 salvage) a61e29e8792d4da3641315ada7b2e85a9a4aa219 fix(pricing): refresh full DeepSeek snapshot to 2026-07 rates 97397a1cccbd28ebfb2301ed243647880e2bdd5c feat(pricing): add deepseek-v4-flash to official-docs pricing snapshot 53adb3fd9750376b520100b0f90b737da802d1e1 feat(config): add get and unset commands 5604d1852e9687e70c9dd5dfb79b86e3d6e66e98 chore(release): map aeyeopsdev noreply email in AUTHOR_MAP f61169861ae82a55a2146f185c048cdef827a94f fix(google-chat): allow http inbound without pubsub f003d888e1c60507c41aac945b0c903a3562323a feat(desktop): integrate SSH with soft gateway switching a6113b42293ac242cd6d938ba54db65ea723a04e feat(desktop): add SSH to the Cloud-aware connection model ae2175a584f37f526b5e2b107ca6448798edc50f feat(serve): add secure Desktop SSH bootstrap contract a340d0adc522e104ddf77a4b3afea3ae4232792a feat(desktop): add isolated SSH transport primitives 702473edbd15275a3fe6e377c06256bac07e248e chore(release): map jtstothard's email in AUTHOR_MAP (PR #63256 salvage) 01d3268e02821511691227d3b91f5c3ac65873f8 fix(gateway): harden multiplex credential cluster salvage 64746b4bd3ea3ebb1386d4e1cce3a2b1917c8981 fix(gateway): validate multiplex adapter config by platform bd44ef8645bec72c6e7104e8950631baaedbe434 fix(gateway): restore multiplex secondary adapters ea2c9bc10f10d5f9bd1d5da6a19de6a18f00615d fix(slack): scope app token in multiplex gateway 6160a8025327112c507e49dd3f7f6c669220a105 fix(gateway/platforms): migrate all Weixin fallbacks to get_secret() for consistent profile-scoped resolution 8fc989b416f501104b63c7061709596641124961 fix(gateway): multiplex secret_scope for authz, Slack, webhooks c82a196ea95c60036d1649b28e37d39531cb031b chore: AUTHOR_MAP entry for Code-suphub's second commit email (PR #44872 salvage) 49d3fee0bd324ee898dfeeaec0d4e9de15989c11 chore: AUTHOR_MAP entry for Code-suphub (PR #44872 salvage) 95a0f9c836b1a82d96fd4cbf5b25fcb4aa22e921 fix(mcp): close select-to-bind TOCTOU on the OAuth callback port f4c7caa70c002aed9287c2618cea0a4297f87970 fix(mcp): remove unreachable dead code after return in _make_redirect_handler 13e19a9092d2464e18c6dff39198a881562022d6 fix(mcp): use per-provider closures and allow_reuse_address for OAuth (#44588, #44590) 164bca658ee5f375ce53cd6217b1ddbdfdd0721a fix(gateway): bind api_server directly instead of pre-probing 127.0.0.1 (#65621) 21dedb85867722c03a68fa7b25f20957a9852a78 fix(insights): include auxiliary usage in overview token totals (#65603) 07e537d8ea210a5d2613008000489c254a4dda1d chore: AUTHOR_MAP entry for salvaged PR #65105 bfb51fec81afcc533332a402773c832d62f3700f docs(gateway): document external restart contract caf5f27e306f6550d54dd340e59edbecebe5c46e fix(gateway): preserve external supervisor ownership 7d8c499893516030caabc4bf374685c5de6da430 fix(desktop): preserve node-pty helper in packaged app (#65611) 59787b9ada6d464af3ac327585b956a2899232fa chore(agent): tripwire — warn when a turn starts before the previous turn's persist b60c940d9e2c03a3e4826f8e79fa913cccf99f9c chore(release): map wesleion noreply email in AUTHOR_MAP 13906cd4de7771bf7101b764445532c3d663c330 fix(telegram): support free-response topics a79b818360700d526c0a48107444810e3d6ecc2e chore(release): map kocaemre's email in AUTHOR_MAP (PR #36051 salvage) 681852a5b99fd6a9f40dbd92cbc8b6965a47a3bb docs: address audit review feedback 176a98c39a00b744d350ecd551cc817046249d20 docs: refresh salvaged audit fixes against current main a710becd6c57a21a7be547b60c910b5dbd0847a9 docs: fix 25 documentation/code inconsistencies (audit round 3) 0fe18b86505e94dc8d32b69e0879483648bba9ad test: alternate roles in the #35809 bloat fixture 4851f894be80a3c7a9f318514897f48fe526bbaa chore: AUTHOR_MAP entry for salvaged PR #64935 ee659d1d8f16daaefcbf1edbc6163cc02317fb23 fix(state): heal durable alternation violations at the restore boundary d73a6f5ac27be85abae70b52af13c845a31b4e73 fix(telegram): include duration in standalone sends 4a793059307dc02a18be0e0efc10b6d9c419f90f chore(release): map p.fabiszewski@gmail.com to szafranski in AUTHOR_MAP 27364b24fe0c636a210473efda25282285605d66 fix(gateway): set duration on Telegram voice/audio so long clips don't show 0:00 eb48e221068c86ca5ae459953b889476989e7ac3 chore: map drexux0@gmail.com in AUTHOR_MAP for contributor-attribution check 4fb6c297ee64f960e21d89e5bed1d87b593ff641 fix(gateway): /footer is unreachable mid-run — add "footer" to safe-toggle set ea028ca31145f67821f6ebed3d025d274d414ea0 fix(achievements): stop card hover click loop 244f70aae58f3ec114822f881b7f857115d1a3ee fix(agent): scope install-tree guard to fallback-picked cwds, allow cli/tui in-tree dev 33513991be0812668dc36cd9fdc7575a53d12559 fix(agent): never load the install-tree AGENTS.md as project context e89d56e48d03c6082142558fd687d35aed539ff5 test(system_prompt): cover surface-aware context-file cwd contract e7d6840989655ccc125d57000ab2907af35209b2 fix(agent): scope the install-tree AGENTS.md guard to the unconfigured-cwd fallback only 5e2d7a449d766637b3254747e9aa3c220db4d9eb fix(agent): never load the install-tree AGENTS.md as project context 9a21d0e3f277c576a2a9d9b16fa65a5b753323ed fix(agent): canonicalise paths in parallel-batch planner to prevent same-file concurrent mutation b4e4b5a43e3a30ed910b385d00cc28549d2d9ee8 fix(gateway): harden multiplex primary token gate — canonical platform map + unserved-platform warning 86e7917ba72a8dbf32cca6a33e2902ea98e5ed2b fix(gateway): resolve multiplex primary bot tokens without empty reconnect loops a04fcbf7796482604bdee9f1cf4a1b7d2d336c9b fix(telegram): widen transport-error redaction to all remaining raw exception sites 6e96b745d827c8f9e22d610fbf5a2e70cdae0702 fix(telegram): redact bot tokens from transport error logs e2db5ebad5c49981113b2c93a91cda61c711897e chore: AUTHOR_MAP entry for nima20002000 (#36022 salvage attribution) 193871f1a6125d92ce5c15f74a90a51621d139c6 fix(code-exec): expose truncated stdout metadata fce298f7003d4043eefc67888cc8070cfb8d359f fix(google-chat): don't flip clarify to text-capture at send time 09505a393e7b6b8fdab501d8204094a5d210fd44 feat(google-chat): render clarify prompts as cards 6803519aa5b6d2fff4d9eceadf43f706228d81c3 🐛 fix(acp): reset session counters on slash reset b9858acb0ce504dcfd0ade16792ee68033507d84 test(tui): fix flaky notification-requeue test — assert contract, not queue order (#65506) 94136efccaf13a1ae4ce19eea85a539a90410313 fix(cli): don't run Windows npm on WSL update and stop reporting success on Node refresh failure 5342f8613d66b4cab034f8094cba8c1d86768935 chore: add AUTHOR_MAP entry for brendandebeasi (PR #29860 salvage) fe5c0cb6c3284eff56773b716c765208fb2fcf41 feat(pricing): refresh Fireworks snapshot to 2026-07, cover full serverless catalog + cached picker pricing 365620ab28020b403124d4b1a33cf6af822fac60 feat(agent): add Fireworks pricing entries + routing branch 5a39f0501c5a9026cc8e2936da32c714c1f1de2e fix(video-gen): omit duration for range-based FAL families when unspecified a3c0de1a361ce541a3a2657ecc4507668cbb57ef test(execute-code): cover session cwd record precedence in project mode 4d6686c18abd255c64de4598e2de1ebaf33bc06a fix(execute-code): honor session cwd overrides 298a94926fbf0fe92b071ade81035fbdfa6c73b4 fix(agent): resolve execute_code cwd from per-session override (#56047) 2fd36b17c542eeb5ed4043c5927bce2fab8de635 fix(gateway): deliver MEDIA: tags for every file type via validated egress eb6aa03609ce4ff5a0a28d840ae5049bfc55ed43 feat(analytics): record auxiliary model usage per task in session accounting (#65537) c9c9bb33fcc6ab479846a1c496a6e9efe2c1c7d4 test(gateway): cover api_server multiplex /p// routing 7aa21e33624fad1f77e571af6c362d9e965ab882 fix(gateway): add api_server /p// multiplex routing e0240d7bf7ce0d665417d45de0bfa9a65cb0ab48 chore: add marcelohildebrand to AUTHOR_MAP for PR #42346 salvage 1a323d608efc4eebbf4a82e6b45a4553e71e059a feat: add LM Studio JIT load mode e844ea9f0b25cb23e3b73d0a6b7f619137162403 fix: follow-up for salvaged PR #65187 — add missing compression_state to 5th call site, force-redact error text at gateway boundaries 1e895f4c17ef12e14a1c654a7ebd958870774397 fix(context): harden compression failure feedback 577beeb9b9e36bc034a5176de25dd7d6ad5a7c19 fix(context): preserve missing-key compression history 202ad1b8c931c033db5040f49e0810a1c0d0777e fix(context): preserve transient quota retry behavior c72f4576b9b8cd5233d068f0f739c74dd594247b fix(context): preserve messages when summary quota is exhausted 5f171e36ab8dd6f731177a2b41c572768dc517dc chore(skills/mcp-oauth-remote-gateway): move to optional-skills + modernize 03885e0aa17a1751d86741053c7206e61cf522c8 feat(skills): add mcp-oauth-remote-gateway skill 49a8c3f836473c7c8e26d0f09440782711c55f70 fix(terminal): stop writing the cwd temp file entirely 0ccd05b78a2446d3e85cdeefaca6235f7d700d59 fix(local): stop re-reading cwd marker file 9420ad946aa8252d13fe94cd7fa4a2b562845b1d fix(webhook): scope reuse_address=False to macOS only (#65482) 6ee40b65ba19dff12f650eeeb70b894b0ee58ccb chore: add ya-nsh to AUTHOR_MAP 5330b2cfade28e48e608beb0a286c8646305f137 fix: use Windows-aware isabs for native paths under patched _IS_WINDOWS 5458c76566213be87d24bc2c19784b14f910f3e7 fix: normalize local terminal relative cwd 0f239f49c6d6c38447ec51698701ff06197771de fix(gateway): stop systemd retries on fatal config f0e6daddce980bbd4d08965ca9939816459baa9e fix(tools): don't report platform-restricted toolsets as enabled 9ce0e67f27eb9574b59746346e24c53bd63d180a feat(portal): ambient conversation context entangles aux/MoA/delegate calls 156ea4ad892f4a244bc997498fd362198f270aab test(providers): expect conversation tags in Nous summaries c98de70c2bb257109a9a315695778aebeef6c679 test(providers): update Nous parity test for conversation tag 479d1aff6cd31cb1891d45c14d8c58b56fa73092 init f8bf40b18b4c3e15b848a1fd3c4fbc5b67ae6ef4 fix(photon): hide the npm dep self-heal console flashes on Windows too d68ac9092aa7bf348ff5c4a2d97619820220b4c4 test(photon): cover hidden Windows sidecar spawns d8f7b608c98595a8d560b36537d5919cdea43c52 fix(photon): launch the iMessage sidecar headless on Windows dcbe8bbf2961f5fcdf08e208c5698e0a5dc7964f fix(e2e): target replacement runtime deterministically d9cbd1c1a8663a21835a97e742caa1d57b5f0b12 fix(features): tolerate stale post-install metadata 4a69a6620e989fdc2a2207f1b72ae34b546d5164 test(dashboard): use valid Telegram tokens in profile tests d1be769b45923c66160d700cd34a18e71ee33995 feat(dashboard): clarify manual Telegram bot setup 3ffd8b3da062768b02fa85ba08d50de4c1fd116e fix(dashboard): persist Discord toolsets to Discord platform d1691cae4aa775d7ebaa10d5fec64d088243f13d fix(features): reconcile after worker exit c80b244b5240c0d7097a7db6e810b4f00d44f8c4 refactor(terminal,file-tools): delete legacy env-side cwd tracking (step 4) 4d30b05d6d49dbb209b3ed7b16c6ba6f43e0e627 chore(terminal): drop reference to untracked local plan file fd3d9c63d05f4d240bbebe2a6882d7527e0dcb64 refactor(terminal): resolve command cwd from per-session records (step 3) 5461e0e09802b36e7b817f76196b3fdfa7863c8b refactor(file-tools): resolve paths against per-session cwd records (step 2) be2a1290de56933918b8626f11e7f81a44c6adc2 refactor(terminal): introduce per-session cwd records (step 1: dual-write) 0615300ed879ae39100ca417bdbe982c2bfc79f3 test(windows): verify managed bundle on VM 7e728bd8dc5ec0f97d93f040882e19344a1a5f37 fix(e2e): stabilize lifecycle handoff gates 92876effe2894ec114e61d2cae69814e9e7d55fb fix(webhook): make dual-stack bind exclusive d542894adf9c5c3380804b306cb2e3f58be4fb59 fix(webhook): default to dual-stack bind so 6PN (IPv6) can reach the adapter c92d8529e66d3d06d72ac5003ebf838c63078dc4 refactor(docker): run immutable managed bundle slots b27d8b6ac8c8eed4c995d1b92790d476eb6e7149 feat(cli): promote Fireworks AI to #2 in the hermes model provider list (#65214) 1549624d9da35319b38c78bec9a40b8d9a1e54bd test(e2e): enforce packaged desktop update relaunch 094f2b55d3e167bc6b78d10c3d043718e66be001 chore: AUTHOR_MAP entry for 2751738943 (PR #54785 salvage) ca803523ff649c90475d69865d81655c8c12bf1e test(tui): cover live notification ownership routing 54d0948d38db0d2b2b4007348776c14b5ecb1d13 fix(tui): route post-turn completions by owner 81fc24862c46fc177f0b6ab5b402e74706a2e4ab fix(tui): route bg process notifications to owning session, drop orphaned events 3ec320b140a3a3f6a3a1e2c4436bfb3ad243e7a6 test(features): use aligned offline wheel fixture 8254e85a2763a87c8f44c4ae514b2d4544acaf8f fix(features): verify installs in a fresh interpreter 5bb66a1c9aa465435d529a7c14cbc0abf4a70f4d fix(release): preserve CI toolchain and smoke intent 593d58416631270f69e13f6bcbeaebaaa6033997 fix(features): restore ledger into replacement venvs 25840084ed1271d41aa220b0e1273de680b1d6a7 fix(updater): preserve cwd intent across lifecycle hooks 95e494824f53e7c690a4b9cc2fbc5a308dbc7d3f fix(release): isolate bundle smoke from checkout cwd 5f3b948d1b52996a1d61622d0567a119296d4a09 docs(update): explain managed and source workflows 6ece31249de607d74e679b261bcb3548c4308f50 test(release): enforce real lifecycle gates 5113ca41812e4adffd610b4ec5c38a6fe1434f78 fix(dev): enforce cwd intent in the native launcher b55a885a0fe8ca45a723f7c7caa51f1fce189623 fix(adopt): run post-flip lifecycle hooks c058d1d9931afae9d29045d55bc6d0c78e34ccf2 feat(updater): report managed release status 2ea39daeb1f675d72e5c21c9400f2d58d7e6d71a fix(gateway): share relay adapter in multiplex mode (#65366) 6a35f9e667ec162489d14856e041f36ee63a12bf fix(container): keep named multiplex gateway slots down (#65368) cbb8af514768218f5a82333b0e95161cf1770d73 fix(release): drive runtimes from the dependency manifest 12559b774514319c80eec6fa7f190de9779dc98d fix(install): verify updater bootstrap artifacts 86ee4d807f29bb5fdd8806f1000aae0cebd0d2ea fix(dev): enforce the dev sync contract 967c0ee7aefe1d431c536a9831ec9bee8a686f82 fix(dev): fail closed on worktree activation errors c995e5861ea4439ee591adf95129bee83e6b52fe refactor(update): delete shadowed legacy apply flow 86eba6f6a900014a75fb93702035df1534773d09 fix(update): stream update child output to the live log (PYTHONUNBUFFERED) 89ca91b407209fe34dedcf4039180d538bc1aa3e fix(updater): complete signed HTTPS release flow 0911c512c6aac551ed7caa8b5cb5c0ccf35cc9d5 chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /website f8ddf4fd866d4e581a5353f728117faf2736ad4c feat(ci): semantic package-lock.json diff as an upserted PR comment (#65206) 669d90d1f5acfafca1500b32daf5969af480e807 fix(release): bundle the native Rust launcher d272731041042a04370da0fb5fef6044041688bb dump something in package.json for demo purposes 08270cf16478525c2406af1ccad9f03f41104780 feat(ci): semantic package-lock.json diff as an upserted PR comment e3fcea6b9666f2d2bc348abf75bd138559077322 fix(release): repair archive paths and Python selection ea8e2bb7b75f3a161417a312afec9752f091c8a8 fix(release): handle runtime symlinks and Windows Python b86ac0be234b9acab07cc9260c6a9dd84e1d737b fix(release): resolve uv from the build environment d1b03a14dbe3994bbc4f0b136333e7f6bffcbf33 fix(ci): repair release action pin and rust lane 7325d77b15a264173aecc8dcee0da1301ec8f5e5 fix(updater): make managed slot lifecycle executable 7713482102e1eccfdc8f1857881e5bf6ff47d630 fix(tests): accept name= kwarg in _ImmediateThread mocks bfd8b436626b4d009075f4a24000515ba8688974 refactor: delete legacy update machinery + all legacy tests (sunset) 7b459bbaaa6ad5afe7b37234860c4cee8868ba17 refactor: delete _UvResult, rebuild_venv tombstone, and code_skew (sunset) 663d21d3c3abf9c18608293a3d88480b48e5d152 refactor(install): --source delegates to 'hermes dev sync' instead of duplicating logic 8ee933ce78a907b6f2c743efd323e23ebce0e0cb refactor: delete updater_compat fence, remove --no-adopt/--in-place flags (sunset) 7886c5d648d0b79aa70f1e964d925bd11a7705b0 feat(install): install.ps1 defaults to --bundle, -Source for dev path f8b6d381e2f8e8b2cf84ac0e9e628ea062a173e3 fix(nix): dirty-tree wrapper bug + filtered rebuild scope + overlay alias (#65237) 52a5b25d109730858529ec1a35e0674a55b1b01e feat(update): auto-adopt pristine checkouts to managed slots 0c4ea889d7f9913093d75a77d2a32c13b0e746a7 feat(install): --bundle is the default; --source is the dev escape hatch 363318651e204db062cb3def7b92ed4d0ca1b0a8 test(docker): add live_system_guard_bypass marker for container test 8c616f52bb9df72ca22c65025f77faff021c26fb test(docker): in-container updater refusal integration test 01b3b6fa48758c837b75a61f68b7108085a1ac31 feat(docker): image built from release bundle 43aaad5bef9bc671d37743cb635066cd2d6197c7 feat(features): ledger applied on flip and dev sync c1aa0b52c76f691b0af8de29a4261513d734a302 feat(features): data-dir activation ledger a5987e7825b63f8e0575d433bd26c18e9698b8a0 docs: legacy updater sunset checklist + default flip plan 9fd7eca4e7810ba3f7fbc466aa7c7e2ebbeedcc9 fix: uv lock 17d4153aba46d0b9ef2053f3d05a3964b1294008 refactor(tauri): run_update execs hermes-updater apply instead of hermes update ae8d875579f80cde99e27ad89924689104d484e6 refactor(desktop): delete in-app apply + Tauri orchestration (superseded by hermes-updater) 5fdcfcdd4808938903dea19fda1fb85beff2f0b7 feat(desktop): update detection via hermes-updater status + dev-shell routing 64fda4a4de5a8567c48a52c750e0b083ac08c7a9 feat(desktop): slot backends spawn via launcher db05e2e3c05bb3ce892592d972368af78bb29508 test(e2e): desktop update via updater gate + windows checklist a16ac37dd99b59b2af3eea83e9cfa6c2e50bb188 fix(tui): redraw dashboard after new session (#65239) eaacd3ce0be54a032bd38f4c5da7a037a9864b8d ci: add Rust test lane for hermes-launcher crate c3805d4d0df5c45512fabad9fd8a58fcdaa00fa2 feat(dev): worktree-based updates for modified checkouts e5aab19bd95eaad427769d0e3e701401131abb5a feat(dev): app surfaces refuse stale builds instead of surprise-building 0955fab36d644a5ab8d493e74c05e3b8ea10d178 feat(dev): hermes dev subcommand + dev sync + hermes eject b26ec0b91c3ef2027a2525215fc6d00ce1ff7da9 feat(dev): hermes eject 2cde615f4b82a14ad54a5e26d0aef74cbe9f84a7 test(e2e): ejected worktree lifecycle gate 950f50c9684540f4022656e954fab029074fd5d6 chore(tests): deprecate shared-venv fallback eb28c3208fc91fd882d854a5386745d0af3d0fa0 feat(dev): cwd guard — explicit --dev/--global inside checkouts bbcac8b07161c2b1b8389fbc5c56ca6425f53689 feat(dev): in-repo launcher stub 3001aa868ab9be4321ede61cab7ddb8a72a98746 feat(adoption): notification labels distinguish adopt vs update 2b847e8449a2370fd8ab31f948b6918881b22b58 feat(adoption): gateway and desktop offer surfaces 583719ee881e247953c6804183274b3c2efe2018 fix(adoption): restore full detect_legacy_install implementation b448cb39bb23e8c814c33e17b06910f5c48af8f6 test(e2e): legacy adoption funnel gate 6b1ff80d54347aa35bea04e4e0e34d1223e92303 feat(adoption): hermes adopt hands off and exits 03e05926d334414d8f81ea4dde041f3b81df2997 feat(compat): expand frozen contract with archaeology findings 5cf3fbb65b891d3284cf7bfa87ab322807b1d561 feat(updater): adopt verb (hop 3) eac36aaebf650b2e8fff95b289131996b72e821f feat(adoption): legacy install detection + cohorts 572e7df8dbafbe3bfb9e5d30c42fde2201d09c02 feat(adoption): launch-time offer (hop 2) 4d939201f822d4534386e7cf1eb4c88f09ae4104 feat(compat): frozen legacy-updater contract + CI fence 43b7e4f3dab2b968e3ee625f859558097acb181f feat(cli): doctor --preflight for slot activation gate a1e4ac19ba1aff431c26f1b899184aa6e0bd5d38 test(e2e): slot lifecycle gate e437b0c97e5309d8c0c8bda53aeccc31ef552531 feat(install): --bundle fast path via hermes-updater d200852998e221b46076a9f4ee8b9e7ce94003ca feat(updater): gateway drain + restart after flip bb7c48e23f4b23916895acd362770e75d3e4b0f0 feat(updater): self-update via bootstrap hop + restage bf72e86a344044e9d2508334aee3ea75b396dbd3 feat(updater): slots + atomic flip + status/rollback da075868aa056c944d5b85c046a5d5a1b502b090 feat(launcher): release fetch + signature verification 827c30b95a4ff4b7d196f171ff87f3e422654108 feat(launcher): launch verb with venv self-check e0158c855c40cb939d086aed789ff4f369971674 feat(launcher): tree resolution + env contract a578718d1ca0f0cca945eb7eb980281fb6469bc3 feat(launcher): crate skeleton with verb dispatch e3ff71060d23e9bb9a81597be34b460f836c3764 feat(release): switch to PyNaCl Ed25519 signing, drop minisign CLI 93df6787c35ddb78196abac1a8aac2e070225ebb ci(release): install minisign in CI for manifest signing b11c2368ca9d36250854005a8a148e73c792e2f7 test(e2e): bundle boot gate b9e2531c6c42c29140fd770bc92c11e71c238260 ci(release): bundle build + publish workflow 222306d8aacaf63935e92c249c4c85d24d2d91ba feat(release): bundle manifest + signing f181ba612cb4626fe8cfaf07b69a4fc57ee8d268 feat(release): bundle build script 300afe6da3d8a8539c93cff9ed262c585801fc83 feat(release): artifact-root resolver for slot layout 2c727f0baa3b3cc2aa7479630b5f0037b019112d feat(release): relocatable venv check script 1a633047af5ea66d3b1551b44d1cc389b57d5415 feat(release): add runtime-deps.json manifest fd3e26997afd6b66b7913a3d1eed472afeac492a feat(release): decisions checkpoint — scripts/release/README.md f9aab87824591fb72b3f16df0f836a30e6bf8f5d docs(plans): wire native deps (rg, ffmpeg) through the bundle design 1785ccb6bdfc4863607fb85dcb43d45f89e50d69 docs: mention the cwd guard in the updater rework summary 12ba3a14278afc06a58d2fc27dc63409651c9234 docs(plans): strict cwd guard — flag always required inside checkouts 6cbc035f2c8eea138cbd36a85acce955e2ca88c8 docs(plans): cwd guard — refuse ambiguous checkout/install mismatch 94366203019c87abcb833f64d6a7a9f794ce0bf8 docs(plans): current.txt is the flip commit point on every platform 0a202b68cd895a3811bf7f3d30875815c6fe41af docs: human-readable summary of the updater rework 8b64602652a41bd59f7efa9a68e77f8c66dc4fc6 docs(plans): close review gaps in updater rework spec 5e1f5c4e428469de983b8e376b03b4db1ed99428 docs(plans): step-by-step implementation spec for the updater rework 664376c23272fc9aabf45b223079820a5aff49ec docs: updater world inventory + redesign proposal 3f2a389c7e1f1729cad91ae63c26fb08c7753c74 fix(auth): apply newer hosted bootstrap session (#64612) 5fc2d9e64d960b666c56476e4467ea46a556ccb7 docs(auth): scrub Fly.io host detail from quarantine-log comment (#60145) 8b1c1dfa1d68eb4a1e212c181563d9b34d40bd5d fix(desktop): review fixes for the agent-side TurnQueue b9663653f89bfe58ff5fa733904a55394be5316e style(desktop): satisfy root prettier config, sync package-lock for root-tests eslint 774ace572f0f0fca287ff244ddccb7236c033814 Merge remote-tracking branch 'origin/main' into pr-51020 0c1adb4877f344af8276d5277871e8056cef3ad5 fix(ci): handle merge race in js-autofix poll loop (#65231) 155a792013fc2640dde885babe958802645b03fe Merge origin/main: keep unified declared-schema config surface db5cbff8849cc256da0596d6c9f47ae0e11631d0 feat(desktop): detect and surface gone branches for cleanup 75f45a06926e5e6cd1d463d7861978380a042029 fmt(js): `npm run fix` on merge (#65229) 543b138c9491951cc79b0371dff28d2931ee5003 fix(desktop): rebase simple-git paths from repo-root to cwd-relative 5222d24f355704334605a8575e6c11d917520311 fix(ci): gh pr create doesn't support --json flag (#65221) dbf86b9234717983f65fe56e7bfd9d0f9632ceb4 test: port macOS entitlements test from Python to vitest 09f8a8268c4878fe03639bcf6e5662bf742ed770 test: port workspace-level JS tests to a new js-tests workspace package 2f3007ff5145070fe646e4dc6f89ad38e4478e42 test: port JS/package.json invariant tests from Python to vitest f8abc521f3bd2e5aeaf11ae3ed3a6e1214646060 docs: add JS test placement rule to AGENTS.md 64389a2ce26a9ecd5fb745343f6247582def0eb8 fix(ci): js-autofix pushes via PR instead of direct push to main (#65186) 5c8ae70d2e34172749e7a759c37be7096e3cfda5 refactor(desktop): drop the legacy localStorage queue migration 00a36831d214488f901df7de71efde02a8072aa4 fix: update package-lock.json bd70904c260647088556c77e1373c97feaae39d0 feat(desktop): move queue/steer to the agent-side TurnQueue so queued messages fire without the tab open 06d11e3316f82b3038f11911fe3b0f4b408a8b9a test(providers): expect conversation tags in Nous summaries 56ab9951b1708f65e8dbb2b4f3e79140ec5d7842 fix(dashboard): add MCP auth to profile builder (#65163) 3bfa6001f763ba6a03d3ae97de08a3e67e455904 fix(js ci): don't ignore native deps anymore f5c3a35ed307f93cb35715ae26f1459df421d6a0 fix(file-tools): stop cwd resolution leaking across sessions 341f093b25e7c06bb54a439b768932da87e1c3cf test(providers): update Nous parity test for conversation tag 93808ca6a78256abb161e005ab865fc84944ad71 fix(desktop): resolve eslint errors in composer-input-sanitize.ts 3102fc9a66d0aea596919f06cc4d90be910491f5 fix(shared): add missing 'fix' script alias 02613a4d50637f23a53becd123ff67d738c620a1 fix(web): resolve all eslint errors, downgrade react-hooks v7 to warnings 894e62759b6ba7a64313f5e7032211854045491e feat(fmt): add "npm run fix" in root f32a1f6078fc542231ea69077d86b9dd2aebf10f ci: add desktop autofix-on-merge with two-job security split ef7aabd3d123d15e1c9958fcb3f95970c784213c ci: add ci-reviewed label gate for CI-sensitive files 2179d5e8af7557f53cbc3152ab9d9c193375c9a4 ci: add eslint lint matrix to js-tests.yml 214cbf77f065aba4747b018d7aeb08ebcedb4576 refactor(lint): hoist shared eslint + prettier config to root 76500c8b7374d7784ee00d95a4b1fcbee773cefe init b80b52aa46516bb3652967a6dd8763cf577867fe feat(desktop): add background-task indicator to sidebar session rows (#65174) 31afeb4750f2c81585462e51719b957385680c33 fix(verifier): resolve file-mutation targets to absolute paths before keying 8b209e0dd7b8e308d5b923fa80f7a72f71042636 test(agent): cover think scrubber leak after flush-then-retry a569226f88fb3b5423e3a9de2d76031f40b173ea fix(agent): re-arm think scrubber boundary after stream flush 4e7b0389eaa259e0fff3c5d211a33e343471976e fix(desktop): match sessions by git branch in ctrl-k palette and sidebar search (#65172) c1945d410bab27327ec5cd7839da4a12836a6b2a fix(desktop): panel layout toggle bugs — terminal reveal, side collapse in column-root layouts, zone-menu restore (#65162) b6c11a35ac66b38719c8f7a91fb0644b293acbdb refactor(skills): adapt salvaged references to the MCP-tool surface, bump to 2.1.0 5601f24449547d0dc5b7296f512a86f974f164fa feat(skills): enhance blender-mcp with comprehensive references and recipes bd7e4802363d43b5ede42230fc1d65edf8ef80d1 fix(compression): give fallback candidates their own timeout budget + escalate repeat-timeout cooldowns (#65143) c81afd6e504875c8aea10e9423e8b954c5d9fcf7 Merge pull request #65156 from NousResearch/bb/fix-desktop-reasoning-flash 5f1991bf6b1a2409a98c5591a2eefe7143b72c9c fix(gateway): import PairingStore in _start_secondary_profile_adapters (#65118) 2b6897f982d470ba001b39b2ebba5d95b58700fa fix(computer-use): target Linux app windows reliably (#63725) 58033baba282ef133b219731eb9d0dd01f0558fe fix(plugins): classify stale-call circuit breaker as failover, not retry c346f018d4c1ac7e87f502920b8c09050f785c82 fix(gateway): evict stale-self-heal agent cache entries pointing at dead sessions a4c9b069dcebe59fa0a2e08c42349083c803bb75 fix(desktop): stop reasoning text flashing/re-typing on every delta e0e7cfa6732b5a5ad206071913f3e2f81294ac9c fix(dashboard): add HTTP MCP authentication (#65146) 7af5d36aac60c66512096b2ce1e92b3a69d7b4f2 test: update reasoning-only exhaustion siblings for the terminal excerpt 170959d80a7f5a9d08cc5e1d146d1b57b24aca59 fix(gateway): sanitize sender-name prefix in shared multi-user sessions 91f87137b63dba0086b100b926a03f26387940fb Merge pull request #65142 from NousResearch/bb/fix-image-tool-overflow 7a5a6ef99b0dc004b3d80c8761a8b9848b460cd1 fix(desktop): keep generated images out of tool overflow da4a28ec6db3c1e391db9abde20a60c828fa322e Merge pull request #65109 from NousResearch/ethie/finished-indicator 587e76fbc2b98ddf1f0559a6545117599510fc11 feat(desktop): green unread dot for background-finished sessions c7fd52581ab7977f6611bd449d0f1156eba7ffeb feat(agent): surface a labeled reasoning excerpt at the empty-response terminal 20a1ed1779c86139df6cb2b07b2cb2f27c0bcadd refactor(nix): overlay aliases self packages instead of re-instantiating 651bd9890a53fe95850216bc0c71224047b5e814 fix(nix): review fixes — dangling-backslash wrapper bug, rebuild scope, dev venv split 1f89f3102f701dea3a2706d174197ecbefac20be Merge pull request #60638 from NousResearch/bb/contrib-areas 5c03e27ce2df02126de797cc98294098f755ce36 Merge remote-tracking branch 'origin/main' into bb/contrib-areas d1dc6d48a56a72210e51434aee2af3b8eb7e79af chore(release): AUTHOR_MAP entry for Haakam Aujla 2d189c81bd95e31a9845a9db9c749ebf115a9caa docs(skills): regen agentmail optional page + catalog row a04b79965af44955b7580740045180d84c65b1b0 feat(skills): rewrite AgentMail optional skill CLI-first 6020b9f4fe27a2c32ee5b0545341633f20ec7c16 chore: AUTHOR_MAP entry for JiaDe-Wu (PR #34742 salvage) 3b15afafa268f97bd62c8101fd5a3a07c41eeb07 fix(bedrock): region-scoped model picker + geo-aware recommendations (#28156) b6f749af94c749f5e7cb5049c63799467cd7acde test(bedrock): monkeypatch-based bearer routing tests + SigV4 regression 5e6a0d9eea373e8eefcc0e40540f017d82e44777 fix(bedrock): streaming fallback to Converse API + image base64 decode + bearer token routing 2106f637236cf8935a12289d54f108ef27a8a8c4 fix(docs): disable fuzzy matching in docs search (exact word or prefix only) (#65103) fcdc10a0f3371620804aed7c9d866a5662b4dc24 fix(moa): reject half-filled MoA saves at the API boundary and hold desktop autosave until slots are complete a61a0bc01988420a89200b321b3f7a118720a065 fix(desktop): prevent MoA autosave defaults explosion from half-filled slots f8630a1456b2113e74fb2e7340d47910c82bed09 chore: add Burgunthy to AUTHOR_MAP (PR #20096 salvage) 647520f83e1d5c6f1ea4b2abf67a982a0ab4c993 fix(gateway): gate profile routing on multiplex_profiles + widen batch-key routing to all adapters c29ab7b9fe35a7e4934889c62745d46d4eef32a7 test(gateway): adapter→session-key integration for Discord + Telegram f58e4622cfc609fb57b31ae9c3e47f9dcada278e fix(gateway): profile routing — conjunctive matching + universal gateway_runner e8b7ce8c19d24db1b3a31609d81d2d2dd419122c fix(session): persist profile_name and route batch key by profile d7993ab1789779f95d1a970de43da48fbc1763da fix(config): honor gateway.multiplex_profiles nested form a1d6654264058a583738a8380bc501bfc96a9db2 fix(gateway): read adapter token from config for fingerprint check a55523fd6daaf4ac691aba1481ec3064037d8a2c refactor(profiles): drop dead helpers from hermes_constants 9166d727b8a3ced1c2fbc2f0b882fce3ec67f79d fix(profile-routing): remove dead forum cache, warn on missing profile 5e65f6d79f87279c937e49bc41f744c41d837596 feat(gateway): add profile-based routing for inbound messages 6efec39ecf8bd640173d31567884cf22aafe3424 refactor(skills): rework blender-mcp skill around the catalog MCP entry (#65066) 6a8e7069b4e1cb59106805e9060daffb7c5e8653 fix(agent): dedup codex incomplete interims on visible content 09b6d22dfec471d9d7aa814aa0da3758dad9ebec fix(gateway): harden hidden-incomplete detection against the sentinel final_response 08015c3a8feec5f43fb10271f0122e1bae5a46df fix(gateway): suppress hidden-only incomplete codex turns fe1ab949fdcfac4027bdb7833362d78ee8f81467 fix(agent): treat Codex incomplete content filter as refusal 704bbcca804c443dbc0d0ad82d7fc50b6549380d feat(compressor): keep image URLs and unknown-part markers in summarizer serialization 868a2f7d172a5e6f959bab327d3e4a0159cfc477 fix: handle list content in _serialize_for_summary for multimodal messages 191bae64e55b1854f335ab5ac157cab3b210315f Revert "perf(docker-tests): blocking exec with DEVNULL for wait_for_container_ready" 19ca99e86351554246157a92315462d2b5639062 perf(docker-tests): blocking exec with DEVNULL for wait_for_container_ready 1600008ab00e5a805b69f7ad89a4ed898dc111a6 fix(desktop): show +/- summary on collapsed review folders 1d48863b856d7a82412e1b47d87e30d0378b851f fix(desktop): inline git identity in worktree tracking test for CI 678b86df1cf33d3ced5858bb9ae61f5e7c5d4018 fix(desktop): worktree from origin/main should not set up upstream tracking 07be37d996be7df1965441ca8bdacdb3f884c7e2 fix(auxiliary_client): warn once + regression tests for bootstrap version skew f3ec79964ec178cc4eb4ece2b301fc8d902e85dd fix(auxiliary_client): add backward compatibility for build_keepalive_http_client import (#64333) 2388e0687bd07e9d22d2649fe50010e6016036e0 test(input): preservation regressions and prompt.submit boundary (#62557) 1011cd24e2acfaf4efe852800589989edada6dc0 fix(input): strip bracketed-paste leaks before prompt persistence (#62557) 7c954969b70bb75a24a1d16bbe7faeb8705a6f42 fix(auxiliary): route direct-create aux callers through call_llm (#65029) 306e2d2318745b48d0c9d249958b0190f65a07c9 chore: AUTHOR_MAP entry for Epoxidex (PR #29820 salvage) 8662254ab2fe019fffa4d82cf5263b235c914b5e fix(ollama): emit top-level reasoning_effort=none on /v1/chat/completions (#25758) a7ef17da7a395e8dc9c4e88ffbe9f57bad812e57 chore(release): map dorokuma in AUTHOR_MAP 31dcd68bfaeaa2503a9499e995ee8b4a19059fb9 test: cover Anthropic aux extra_body passthrough (Bug B scope + exclusions) 771571aee468258b0883b5ae2cf9ba1a4053bbad fix(auxiliary): pass reasoning_config and extra_body through to auxiliary Anthropic calls 9df5f879b4a5925c0f8f947e7e16ed8e845932c3 feat(mcp): enforce exact version pins across the whole MCP catalog a52393a3b6590ace81f28d162f588347b24cc500 fix(mcp): pin blender-mcp to 1.6.4 per catalog dependency policy 9be941dac1f8fad51a0320202d73fec423fbf3e4 feat(mcp): add Blender to the MCP catalog with a curated 4-tool default 7af59f474d59e46d7e209dd9e4186376d32ce4c5 fix(codex): raise hard-ceiling default above the max stale floor bcd7e2ce8999a48e887b50a1a37b6b7812eaa1d7 fix(agent): add finite hard ceiling on openai-codex request time (#64507) c2a3b9ce58f1300b5236d4278b7deee4d2878938 fix(state): use PASSIVE checkpoint for periodic WAL flush to prevent B-tree corruption 779c0dd80d47a9f552990f5789749db16f7a7d63 fix(compressor): unwrap web_extract dict URLs in tool-result summaries 8fa8aabbbbb1f5f65ad44d747527dfcd9b7a4866 test(codex): pin codex_backend issuer in xai-scoped salvage test (#64844) 1b059d1ae7a70a812889077b027bc8243ac9345c test(config): regression for merge_existing partial saves (#62723) 0ab90040adc3388f18641dc8e056bd5961ac2e75 fix(config): preserve platforms on partial save_config writes (#62723) b5aef05e2cd50bc6e4f5cda7ea18e1395c9938b3 fix(desktop): layout reset reopens collapsed sidebars c18edf4ac00bca06b2641a2f2733b84f1fc688e8 Merge remote-tracking branch 'origin/main' into bb/contrib-areas 305e26558ea6811be010a5e37ab867a8bb5125f9 fix(desktop): composer progressively collapses on narrow tiles 6212b5e4afd37494698dd03013af64c1e99a8571 fix(ci): route root npm manifest changes into the Python lane 569b912d7d0931c7256e9f5fb326609e9deda377 feat(agent): explain long provider waits on the live status line (#64775) 092a97ef7589db1f761bdb967f3f47a00207dbe9 fix(desktop): session-tab drag, focus sync, and pop-out isolation 2fc0e3d1aa63f892fce8dc3e31423f4110383e4c fix(codex): guard the continuation nudge against role-alternation violations 05d1ca549be07af9edbf3dd9998a9c73d0180410 fix(codex): rescue reasoning-only turns that die with 'remained incomplete after 3 continuation attempts' 07443ea21a30d7a4a341d3ad01600cf77de3279c test(codex): pin codex_backend issuer in summary-only reasoning sibling test 01b76092529335727f3bd3cf26cd3ac35e024815 fix(codex): keep GitHub/Copilot Responses on the reasoning-only continuation path 306a3774b68a00e8d70bd94522371e1d82dee4df fix: finish_reason misclassified as incomplete for codex_responses (#64434) 0a940972f4d8d66cb9a9c49543a86232e1937c05 fix(moa): aggregator resolves reasoning like an acting model when slot is unset (#64756) b34e565957f24b274ec88eb90f2e3575b082855a feat(models): catalog-labeled silent default — GLM-5.2 marked "default": true in the model catalog 97375e0f0652f49fd25a998d55964d84f4c44592 fix(models): route bare-provider /model switch through the cost-safe default a7784f11fb13d66948670fc9375a5e0cc767ac62 fix(codex): keep large-request ttfb watchdog active d6c14a952f69fb7c7ce4f01f7470faea09dc9be1 chore(release): map liuwei666888 in AUTHOR_MAP 3804df5b36aeb2fcb6ae1c2bc38dd53f46c4de01 fix: harden remaining display-layer surfaces against non-string tool args 05473428cb0ebbe488ad9c4d473998006131267c fix(acp): don't let a malformed tool argument abort the tool-call render be100d4dae0473486821c026218ad764f77475dc test: add type safety tests for _summarize_tool_result dd923619c79a817e238f071da7ff6cf3ab947f2b fix: prevent TypeError in _summarize_tool_result when tool args contain non-string values 3f0b0e20e8449ebaf4d3d69c292239547e445496 Merge pull request #64799 from NousResearch/bb/fix-assistant-ui-tap-compat f5c2ea49a4716ccd377c99511ee1bb9be1b56275 test: deflake async-delegation interrupt test under CI load (#64767) 91d8e4117c393ccb91b18ede7504c6803898c7f9 fix(tests): make @assistant-ui tap invariant workspace-nesting aware db488df1c3ad9e0a291b883a929dadf5e0c97d0f Merge origin/main into bb/contrib-areas 9baa7d4673ce89f09378daa3660530f8bf142708 Merge pull request #63970 from NousResearch/bb/salvage-51653-assistant-ui c91e651009a036f520119655341d3bcc8931a6a5 fix(desktop): restore @esbuild platform entries in lockfile for CI 6fc24651f74ca465ec490d25a63da2f57adf40be fix(desktop): add respondToApproval to clarify tool-part test mock abd7458e77aa99840f2ac456a2acf0ca330ddb95 docs(desktop): note the load-bearing isOptimistic invariant on the optimistic placeholder b50b83fbd827e9307a3a2041be48e11762482876 test(desktop): add math-delimiter fixtures for the react-streamdown preprocess swap 9eb89b8a12448ed987b3b88983e6f0da02c6bb34 docs(desktop): correct streaming-repair comments after the defer/smooth swap 673a61edc82d9545366f3fe50788295af13b5ce1 fix(desktop): match renamed useClientLookup out-of-bounds throw in MessageRenderBoundary 102d2d5676a265c969f0c7b0bf55b5d2817ebb25 refactor: replace custom math delimiter helpers with built-in normalizeMathDelimiters and escapeCurrencyDollars 4e10a38c9e14d00e34ddb419bf33c3a0b0c42ad0 refactor: replace custom lib/remend-tail.ts with built-in tailBoundedRemend 6c95740d9eaed10d214d4a35c2960ee6a08c066a feat: replace custom streaming wrappers with built-in defer and smooth props ddd6ad43f01839bd6de2e3dd2d1dc1042714a7c4 chore: upgrade @assistant-ui/react 0.12 to 0.14 and react-streamdown 0.1 to 0.3 d2c81eb681dea1382fbd1ed403f58320d5aef575 chore(release): map pixel4039 in AUTHOR_MAP (PR #64420 salvage) 5cbbade24c87fc9310bab43986b385a670b48113 fix(streaming): zero-event guard parity for the anthropic_messages path 92057474f3d2dfe38c1be8900cabbae3e696cf41 fix(streaming): distinguish empty-stream exhaustion from connection failure in status message f4af35f90d1d2a09bc9a6f217cc2bf3c5e480169 fix(streaming): retry zero-chunk streams 47d853fdf26415fc36de10267512dca6fd2c6f91 fix(delegation): fail closed on restored completions + stamp CLI dispatch identity 8ff3b67e6d63d7dc7404e133292cafe59b05ceb5 fix(cli): scope async delegation delivery to session 51580e192b548eb4af8ede85a5233800a8a269d9 test(terminal): expect bounded_capture=True in foreground execute kwargs cab457d722a28d60cd90d3cd6c7e5b55a12b659a fix(terminal): make bounded capture opt-in for the foreground terminal path only 0a07609173851939425f872c5f98e8000c4fe8c8 fix(terminal): bound foreground output capture e12626b34fb1024bf00f40f4759647f9cbd3f198 fix: adapt null-args salvage to segment planner, align tests with current contracts 94456a128898b300851a1c47e0217b0d6bc22773 Handle null tool call arguments f0a8e45cdc728c97b1e336df5ec6b9467bf23694 chore(mcp): drop stale input_schema comment on add_tool call 3ad5876feb438ace7788e13af3089c80fb9819d8 fix(mcp): pass params_schema to MCP tools via Python signatures e357b69a61d150aa5211c159e0a89b5f45d7b114 chore(release): map KCAYAAI in AUTHOR_MAP dbd87046737379f7d576d7550ff87eb77c461916 fix(slack): clear stuck assistant status on /stop and via explicit metadata e9d564c09cb48eeb2b7bbe44b8acb315574d8ce0 fix(gateway): resume typing after clarify reply 7df595c58b45a72214829df8bd78657fc63d0102 chore: AUTHOR_MAP entry for webtecnica (PR #63360 salvage) 398cf40c08fd955df38c136c5df1ed7e71ea5cda fix(nous): restore inference-api.nousresearch.com base_url c7489735a9f789267cb3879d92705401e5646f1a Merge pull request #64715 from SHL0MS/skill/humanizer-additional-patterns a28201a5e60d846c68b41c9aa19ab21bd40ad83f test(telegram): gate slots premise assert on runtimes without instance __dict__ 2dd27c7fcbdf05c6f52d0158b78742b8e987ed11 test(telegram): cover slotted getUpdates request instrumentation (#64482) f5f79ff1b4a4de458b4d026d6d096a3f01915f36 fix(telegram): instrument getUpdates request via subclass re-tag, not slotted attr 080daa3f424f06bc3a27ec9deb9267d94db9a964 fix: silent no-model default is GLM-5.2, never the Anthropic flagship (#64635) 5d410355ac2ca49241edcbb20f2b37e1b725ca91 chore(release): map justinschille in AUTHOR_MAP 0bb3a82c5392a7e67892b94629d8cf8a02367b9c refactor(moa): drop auxiliary-task reasoning knob in favor of per-slot preset config 5646dbdd5bcc131deb23bd0208defca50e3d7161 fix(moa): project slot reasoning through provider profiles 3dca75b45c2edf38089ef07c22023afe357aebc1 feat(moa): support per-slot reasoning effort ef010f874ac5c2ab9e891057b302d706bec0a6d8 feat(skills): expand humanizer patterns and humanize its own prose 798e602a8e0323269275851f1140e77f7cd99104 feat(desktop): tool panels collapse to a persistent rail, ✕ removes them 6997dc81cd21dc88c6cb808a1fb3626b6ce71254 Merge pull request #64679 from NousResearch/bb/fix-clarify-tool-overflow 601c1f16cb9bddcac2291283536e2fb6ab96a896 fix(desktop): keep clarify prompts out of tool overflow bb5fc723b67cdf31828a5a64d997c9eaf4554f57 feat(relay): consume channel context from the connector (#64649) 9884b4faad0fabe76ee767e85cd9c261785fb742 fix(cron/chronos): cache PyJWKClient across fires to stop JWKS fetch storm (#64641) 9661627d6b6da9e38683104701b6cf03004f4558 chore: AUTHOR_MAP entries for Snowdchike + knoal (PR #62674/#62378 salvage) 1ae327d0d85d38f6eb65d64beb937bb95b7119dd fix(agent): add FABRICATION PREVENTION block to the compaction summarizer prompt 863ddfbbf8f7276d13d55a51d428baa7e9c53e1e fix(agent): user-only provenance for compaction 'User asked' quotes c2d804c1fec8364e065ea176e9ceaa561976df1c fix(agent): strip fabricated 'User asked' lines from compaction summary (#62365) 65addc2c4feac4737ed2ce40e9baf5a8a33a6f83 Revert "perf(docker-tests): halve poll intervals from 0.5s to 0.25s" a7c778e3ba63cb4ce477e21f494292a152f6b2d6 perf(docker-tests): halve poll intervals from 0.5s to 0.25s ec926ce89e5460a67f556faa8432747155955bc9 fix(desktop): full-reset the thread runtime on a disjoint transcript swap df5700ebe317ff9f2d9ea4677513e012eb68b6f4 feat(auxiliary): per-task reasoning_effort for auxiliary models (#64597) f7198a205568d512ffae75d7b572d9036a5145cb Merge pull request #64598 from NousResearch/bb/desktop-backdrop-toggle 2c82f07fce86268fe4c88ec7a4bc79059930c6dc chore(deps): bump starlette from 1.0.1 to 1.3.1 bccc827dbfb7f026cb5c628b6839206449902bf3 refactor(desktop): trim backdrop store to match tool-view style 284a3cd47e8b7645b92eedfe63e714940d52c924 fix(mcp): use real wire name in ResourceLink marker + surface resource text in isError path 1d98f8dd95ab51b667f4dd7538a3cbb9032a8bc7 fix(mcp): materialize ResourceLink/EmbeddedResource/Audio blocks instead of dropping them d6590f8b17327bccebdd0ecb8d7a9ce076fa7d28 chore(slack): bump slack-bolt to 1.29.0 and slack-sdk to 3.43.0 1f216de3a8668a2f248acce267322cecf75de089 fix(slack): gate feedback buttons behind rich_blocks as documented fc8f8ad33f41fbb019d75012aad07b62dbfdd017 fix(slack): clear uniquely scoped assistant status 38cfae9b5429c7041f9f7668f309a1c992e8d50f fix(slack): scope Agent View workspace state 4554fe128a9ef9bae0a583d90e4d0f0c1aac2693 fix(slack): complete agent view workspace routing f1328a6bfd11fd63d08c9ccdf5bd3ecf0a4279dc feat(slack): cover agent view assistant APIs 9a3b676fed6eaf26d2fb2f9475d2b453dd14a7a2 feat(slack): support agent view manifests bdb1c872477658940798a08a713493ad0e6c3e09 fix(dashboard): pass backup output with -o 1813d3046c77271e9a2d284781b601dab5c2f2ea feat(desktop): add a chat backdrop on/off toggle 7dc21f08a188cefe346d12faa45cdcceeb2ca1fa fix(desktop): clear the transcript on every cold resume so sessions can't share one 3fc4e413d2f63f90ce06fab6c0aafcd034d398f6 feat(ci): track time.sleep in docker test profiler ca6ede33e1b62a9d309058e7391e436fc5e196f9 docs(docker-tests): document why poll loop beats blocking exec in wait_for_container_ready 7e84d2b5a43d47b1da33cfa662d0f87991774b1c fix(terminal): ignore stale env.cwd from a different session's cd 271a9d8ec6ada347375921a7995001b35ad89954 perf(agent): segment mixed tool batches to recover lost concurrency (#64460) 7bb409b2d0cde1b83f891ef8bd3e82dacbe4be28 test: update stale _load_reasoning_config mocks for new model parameter e81d18dfb449ee28826a76cfaf91029a02b0ac74 refactor(reasoning): unify per-model reasoning resolution behind a single chokepoint d9cdb81923e4953a9a80129c3df08accb60978d7 feat(config): support per-model reasoning_effort overrides 1f41bdbecda218b33f6c918760d2600c50076d51 fix(upstage): collapse unknown future efforts to high; behavior-contract tests 33dfb7e4ec17fb1adebab7cc63d16c4cacbcfedd docs: add Upstage Solar to provider docs (env vars, fallback table, --provider list) f88cac71bc9576bed1d51eced6bf45ac59cb6c7c fix(upstage): map 'ultra' reasoning effort to Solar's high 0d01831919c0ce32a8e34fe735ec8536303c471f chore: add changhyun.min@gmail.com to AUTHOR_MAP (minchang, PR #42231) 899e420ab9c121254de6db3e8513d570178f9607 refactor(upstage): drop manual auth/models registrations covered by profile auto-extend 35d3fc3b09142f4ce70b7d6d9d0396caecbf95e0 refactor(agent): drop the solar-pro rolling alias, default to solar-pro3 5f3d57400b46d1e0d2056c49fbdee9872ad9081f refactor(agent): drop solar-open2-preview from Solar context fallbacks c1e36f4329d78990cd457ed3cfbdd2bd4e60ee63 fix(agent): register Upstage keys in the env-var catalog 0031c5c3715cca9650683c89cc5aa1dccf8a5ce4 refactor(agent): treat unknown Solar models as reasoning-capable 20502b407c8d80e14808442d58ebbe90cb8b543b feat(agent): add Upstage Solar as a model provider 77d5b2d573f82fc514fbef02f0b6303c44149805 Merge pull request #59846 from bbednarski9/bbednarski/nemo-relay-upgrade 1908dd09fcbd8f797a196fbee33a95eb15ada546 fix(agent): size the Ollama context window from /api/ps, not the trained max 66a2a4c15b8824cb3d31a72cbbfcdebed5aa4b99 feat(desktop): auto-detect Linux keychain backend for secure token storage 46e87b14fd6c943ef0d6671fb0d74c5dde5d4c6b chore(release): map unsupportedpastels in AUTHOR_MAP 96a070844898b4fba9a77dda844a875e23e675d7 fix(auth): preserve provider fallback during refresh f9e35e6e9490b2219c9cee599c80fa9e17fcc398 fix(auth): route session refresh with provider hint cookie 72ac0d6af05346823faccf31221633fa3bf5a6e4 chore: add neo-claw-bot to AUTHOR_MAP (PR #58465 salvage) b013ed03e539e94466a0aaafc4d67e40cdeb888d fix(moa): scope the non-text placeholder to structured content only b4c2c4f922cb46fc35186d568348bfd1602a8756 fix: drop empty user turns from MoA advisory view (strict-provider 400) 4e6e5181c643b26dc8189b1b0f0196ed48916726 refactor(telegram): drop dead _content_is_pipe_table_primary helper b45a217e0a5b0e4fee19fa830c0322024309d4d8 fix(agent): gate Telegram rich-Markdown hint on rich_messages config 34d07732ddaadf25cf3c093972ec04391fe61c39 fix(telegram): respect rich_messages config for pipe table routing c084085a3e520178fb3aa27c6ba7a411df8c79a0 test: remove flaky test_crashed_runner_produces_error_completion (#64431) 2d0f2185cf3bbf996128dfd5341eea1395b3aca7 fix(desktop): clear stale compaction status across session switches (#64127) 444b5e96fa2829c29cfd7ecdc84d89f83a1441da chore(release): map arnispiekus in AUTHOR_MAP adf62065a73fa9682917053dd55197f63c4a43e4 test(telegram): guard PTB integration tests with importorskip c5aaf7646809f19452281f627df17d6c6a6fe52b chore(release): map @Roseyco-management in AUTHOR_MAP b8295cf6f737a9ff1a4696cef5fab9d010e27d3d fix(telegram): gate polling health on getUpdates progress 202be02ac9a1b6ac8b640e9b2e0917fae6806f4b test(telegram): define polling progress contract 8ef006933ec05eacae74c01ef9bf4f3d7f21bb0d fix(background_review): gate reasoning_config inheritance on not-routed + dedupe recorder stubs 17cfa0f0a543058b8ade8d4467338e524179b0bd fix(background_review): inherit parent's reasoning_config to preserve Anthropic cache namespace ca559a78523e9370bc2b46e689c5b7bb8ceb36a1 fix(gateway): never prune sessions when active-process check fails cd537187611769ebb6a1aa9460265e9ef5694606 fix(cron): prevent long-running scheduled scripts from running twice e16743b0d5d1899785a5dfa87d4f5f8d8e503226 fix(telegram): diagnose blocked-loop init hangs, unbind DoH from system DNS 320e886f3dd5b432bc85fcc651076ea5addec36a test(file-safety): add integration tests for safe-root denial messages 55d826cceff1a024d141085cacf8a2fad02cd9f7 fix(file-safety): distinguish safe-root write denial from credential blocks 1b5ceec2a0feca55fd350a81bda6873299493d78 docs: clarify write safety, HERMES_WRITE_SAFE_ROOT, and file-mutation verifier 2a0dd95ccfbd0f1d50e4d47a17ee402fe9b64165 fix(telegram): classify and dedup post-reconnect probe failures (#63243) 7452467f5409c8aeedd78adcf81c12f91437b39e test(gateway): cover ws_orphan_reap session recovery (#63207) ca907480ae3448880464f557e12e0662ec28cb23 fix(gateway): allow ws_orphan_reap rows in session recovery (#63207) 71e91f89b51da55c89e064be1198a6c98036a991 test(update): document shared npm cache scope d426b9ddfe55cc3bfc8577e50bd041f63970d06b fix: derive skip-key manifests from npm workspaces config aa56243a8985d98bd1801dd477aec3e81473f87e perf(cli): skip npm install during update when lockfile is unchanged (#17268) fd461b58cad4ed64d0121b60481694a597aa1e6c fix(gateway): fail closed on compression state probe errors ffa525754da49033ccd93ed622804560bb5b163d fix(cron): keep live one-shots when running-set check fails 78e844d4465c4d9f6a2cb2f44e5076d31e1c68db fix(agent): validate credential pool after provider auto-detection (#63425) 52cafa6f8e3e8cec6d3528b739380d4442a71cf4 follow-up: integrate agent nudge + dispatcher retry docs and tests 3cd8feb63c5c17175bfc635b542c6123c6d420b8 docs(kanban): worker-lifecycle + events table reflect the bounded protocol-violation retry 452861fdc1825702198f743c116513107f3b4831 review follow-up: violation-only retry streak with defined max_retries precedence c3656e9f0cdbd690ed84971a1a31a3991c592534 fix(kanban_db): bounded retry for clean-exit protocol violations 06845060727ecaa8249ab63f510dad7bd998d0f3 Merge pull request #64004 from kshitijk4poor/salvage/63274-cli-close-persist 370ebf2d3509b1fb7547e2ccdc55fe2a709e7400 fix(skills): guard skill slash commands against core-command and slug collisions f9c6f92c4b21bd8a03696e1266278c8685305595 docs(state): fix _enforce_macos_synchronous_full docstring 9aba95b053170e3bdd326d18ac9c57d8acb25574 fix(state): enforce synchronous=FULL on macOS to prevent btree corruption 03fbf6edbb92a5306c15dbb1bf437d68ebeea655 fix(kanban): nudge workers that exit without complete/block 3c2886f599692a341570546ba5af34fe3e451345 fix(conversation): clear _mute_post_response on substantive tool-only turn 8a7d32d4e40f9e562e3a825466f55e1d7f15b378 fix(conversation): clear stale housekeeping fallback on substantive tool-only turns 89bd0fba903bbfd78b0d99ce6f194863dd01b7e1 feat(codex): redeem banked usage-limit resets via /usage reset (#64280) 8582f35d9667e762816f4c6bf364334bdcb595a7 fix(moa): flatten structured message content in the advisory view (#64319) 0d3ad193d6cc235213489f509e26760ccb3722a1 fix(tests): patch catalog urlopen wrapper in gemini probe tests (#64318) 3e89edf830c363a822c7bd2e7b1e8cc6d0558932 perf(docker-tests): share containers across read-only tests 226e8de827a669e8ffa7035b27d70c19e44b1208 fix(gemini): restrict TTS client context to official host b8eb89f5c9460e8574ba4cb4e88d3cd08f093344 feat(gemini): improve request context for support and compatibility c7e09f25716764b2e4dacf518f1c553a497c15d7 fix(desktop): restore curated declared schema for the provider panel 861d69c7bba8d2ea6a1cd170e989c901c74d32d1 fix(dashboard): keep memory.provider in the config schema so Desktop's dropdown survives (#63886) 0e4598b2710a9161d508bde95ff02075c9e30622 Merge branch 'main' into feat/ollama-desktop-integration 5f37c9e85ce4341cf6bee2349319260f54037273 refactor(desktop): tighten reasoning part typing, drop dead useRef b663d50a6a0101d5214112b24ffe20924af32beb Merge pull request #64042 from NousResearch/bb/fix-windows-nonlogin-coreutils-path 19641fab72fd91dadb54148001a48d0fecf8554d fix(desktop): render reasoning text in the Thinking widget (#63999) 4a58e22e997ec56802fa93d4ca503a3767a02c4a fix(windows): put Git Bash coreutils on PATH for the non-login fallback 7e201fa1b6d0ac6ed9cdc6af609b9f9b8424843d fix(nemo-relay): align dynamic plugin configuration 3ec1e82629eaf49177db80e2be835b0abf443e03 fix(ci): pass profile env var through run_tests.sh env -i barrier 2ccfdb2db4eedf385f6c5b3fe722e183cee1b6de fix(agent): exempt parseable vLLM/LM Studio output-cap errors from compression-disabled guard af4006000fbe065790c68b98a660b2ba51038214 chore: restore test_ctx_halving_fix.py to main 62c8574d86320e7b94994db46ece020f257ba16e chore: remove trailing blank lines from test_ctx_halving_fix.py 127f6e15144dda80ece620a12984f4d54989072d fix: exempt output-cap errors from compression-disabled guard 7ef9345a551839ced721afe6ea970d1f0837e185 test: add output-cap retry with compression disabled + fix request-pressure test 57f18148322cbb4be2a0cb78f8b611446d74ef3d fix: use provider available_out + request estimate for output-cap retry cap 62ea8005868c0b129413c0753d0dee901e704cd1 fix: recalculate safe_out from current input on each output-cap retry (#55546) 9f9ab13a64a7fa6f0e26305204ab3230e6920189 feat(ci): profile docker integration test operations 2d71e2f1e451a84239ae9d013275bf29c47ddad1 perf(tools): text prefilter before AST parse in tool discovery 658c0112661693f4c8c2e4cb3da88c7295413770 fix(deepinfra): restore provider-prefix aliases for model parsing ff52dce1faed6e4d74ce8341ba13dfe76b8c2311 test(cli): cover noted multimodal persistence handoff b708d10db0afe3c3772fa0ad070ae8032b190535 test(session): type finalizer clean-history assertions 8341d775a97f7dfda65827617564d703e27719cb fix(session): restore clean API-local turn content 32bdc67e104934ca7324df430437e0cd839e01c3 fix(cli): snapshot close state under staging lock 962189d9ea66326d0e40672cbb7fd6110452cc30 fix(cli): clear stale persistence override before staging 50aebcbcffada3c8e7c3e7a0dd2181ee80c43e3d fix(session): preserve clean shortened close snapshots 69fd846ef86c034c74a855e98733f7edd3ce433e fix(session): serialize direct persistence flushes 0b422559f3b21b6dc2c94039b70df8a5b8a103cf fix(session): preserve clean multimodal persistence override a22a1079a39183cee3f5509c443990a203289b0c fix(cli): preserve noted staged input on close 475922f2ce125290559b86f9a82363c1f6c2639f fix(cli): serialize close persistence handoff a27d51ef467c4a5c16b08494741a04e7865fa454 fix(cli): preserve resumed history during close flush 35ebf6ba679f3b3e57e79b7c9ddb7a48c9c33646 fix(cli): persist close transcript without history alias ccb045ba7df3b6796584dd6d1e29bb5327fc838c fix(cron): resolve SessionDB timeout from config.yaml c675e7c793fe8e7d9678d7aa6c3fdf8302ffdb37 fix(cron): bound SessionDB init so a hang can't wedge cron forever 8bd4a419de633cae5bbc6f328a7706a53e575a30 fix(desktop): render reasoning text in the Thinking widget d14bf23fa3f9d7cfcb8b03aa05be854d4c4b3469 chore(desktop): build config — keep tsc emit out of src, gitignore artifacts a57b33782e3b0950ce9dbe5ed16d533ea071ba1e docs(desktop): hermes-desktop-plugins skill + starter template aff205dcc26ba23ae11a48b7bb40800b14096ab0 chore(desktop): i18n strings for tabs, zones, and session menus 369d0eeeff56da1b2da69c66cb9d567e25bff8dd refactor(desktop): retire desktop-controller for the contribution shell; views as contributions 10fbade64bc70106e523f1d488744e8d1b1a0208 feat(desktop): electron — openDir IPC + ⌘W menu bridge (tabs, not windows) 7f74b324c30db22638a59de3f18e065ba5aaa922 feat(desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers 0f922002eb778e3b723dbecb2e9b10693fc10d16 feat(desktop): contribution controller, surfaces, and wiring 0f398f8e9c611bce87c5f17775a088c247ac9637 feat(desktop): focused-session-aware titlebar + statusbar 2afbe777636078622ae39c60ddb85300d0690296 feat(desktop): session hooks — open-in-tile, per-session actions, resilient resume 860a3f67bb9fb7c730068e4a65adf10b79451b0a feat(desktop): chat view — drop overlays, composer scoping, tile integration eae1d7d14760b687a8390908070f1de3957a7372 feat(desktop): ⌘W close-tab, ⌘⇧T reopen, ⌘T new tab, ⌘1-9 + ⌃Tab tab switching ac4f596ca2beec467ffcf6d722ec946081caf662 feat(desktop): pointer session drag/drop + row/tab menus with close others/right/all e6fea77d14a93c8a1bbafc08a129d96911206512 feat(desktop): multi-session tiles — per-profile state, tile pane, pane mirror f1379bd6c26d7b0c5638c2c0932a675b0a1d2dce feat(desktop): routes, nav, and command palette as contributions aae35c5ee4049f509820f4ade1e37dda042a16ce feat(desktop): shared UI — per-session prompt overlays, gateway overlays, tab primitives 63a9bde77b22983c5d489aba9653381df0c7b99f feat(desktop): layout-tree renderer — splits, zones, pointer drag-session, tab strip c388daa665d22cffe6e90206e1441aac9325b413 feat(desktop): layout-tree model + store + workspace geometry 7ed71709602c2955954bbd91329cdbe1b566cd99 feat(desktop): plugin manager, runtime loader, and plugins settings aefb36299a6f6ff5eb3586ca92c9395c6debbddb feat(desktop): contribution registry — namespaced areas, keybinds, palette 99ff67eb038431265800113a360e32a1e4ed952f feat(desktop): plugin SDK surface — rest door, socket, react-query, UI kit 25d5b62c2fe8bd840d285a9ef821ff640da9e5fd feat(desktop): Cursor-style stop-and-correct on the composer 29b8cacfab18be3ecaaef7c6d0058fd34a01a169 fix(ci): add missing Δ Wait column to skipped job rows e117478eb338d0ba15e694cacbce7757e621170c fix(ci): align baseline gantt bars to current job start f0b7cf3836994720d66769f1aeae5b310acf6d5e feat(ci): show per-job wait times in timing report 7beca22bc01f8f8914f3ea8f2a9a01d273737e51 fix(ci): exclude skipped jobs from timing deltas and stats 2a25d53ee5d0e09075e6f0b1dd2234aa07717a56 Merge pull request #63995 from NousResearch/bb/salvage-63842-zoom-restore-sync 39230d17384cb99741aa8a0fe7044ca874b2e2f6 refactor(desktop): funnel zoom apply+notify so restore can't desync 9f7a3cb1f6e4f9e5d4312a6f0303b528f4bb6df9 test(desktop): cover restorePersistedZoomLevel renderer notification a1a4c8ce1f7cdc2e69ef32e45e76688f37ce2548 fix(desktop): sync UI Scale setting after zoom restore on window load 10dc1571bcb11d3e63351c8f0d813e68c60e3d53 fix(deepinfra): align refresh and TTS availability 2fc3f9c1ff335aa673656804790494e6c0ac19d5 fix(deepinfra): harden multimodal provider routing fe002eb124d9f9e23769afdfc437f716255983b1 feat(providers): Support DeepInfra as an LLM provider ed8ce1f96c8938d4f863ec63c8f9d130300c0b4c Merge pull request #63955 from NousResearch/bb/fix-windows-broken-login-bash 5d691374c3eed83bd08aa8b460cd59115370c4af fix(desktop): recognize little-endian Mach-O magic in native binary classifier 7577834206239485a527448eecc575fee1328a00 fix(ci): fail closed when workspace matrix discovery produces empty list 7a44a8fdec45cb27ee6f8c24470bdfa6a17272ce fix(desktop): prevent staging wrong-platform node-pty binary for cross targets 47d56b802ad1db9fc7e38cebabcf9a09a6be07f3 test(desktop): run scripts/ tests in vitest 79061f447c3edfbefd7648972b615e53b36367cc feat(ci): show passed/failed jobs in summary a6857faf481d5c4d473a6280326469eb98ad48f9 test(desktop): fix remaining act() warnings in gateway-connecting-overlay b034fa7026d6c5e39bd24515ee6a1c038307ebe7 test(desktop): convert zoom source-regex test to behavior test c3aa81be2f84282c59e95d2e41ed8773cef33e7d feat(ci): load npm workspaces from package.json 727025a2f3d5f8503faa1e91f93d7462e35262cf test(desktop): replace windows-child-process.test.ts regex with real tests c5794c505ed5dc69ebc5127399149f4fca0420d4 change(lint): don't ignore config files in eslint conf 955c5b73c5d97e041349c1480dd3ba5562243604 test(desktop): move node tests to vitest as well 74c69dc8ed3be321de3ee4f0e790239ffbb894fe tests(tui): longer timeout for wrap ansi test c008f41bb979257e0467e771550fd67d77ce75c0 fix(desktop): stage-native-deps falls back to electron-rebuild when no native binary exists ef614369673ed74ddd98ad4ea2598e4784d3336d test(desktop): fix React act() warnings across all desktop test files 999d63b517a04e3a1d961841c9fc2042314c23b9 test(desktop): fix a handful of broken tests 56bec611e5beaae07e6827f8257d97120fa2e788 cleanup(desktop): note that ts imports don't need extension in one comment 27625550383117bbecbfbfac10a549a8b7a2339a cleanup(desktop): remove 'use strict' in ts & mjs 6800ec9d66d5eb69879f3719e9f1f8b4ed750027 change(ci/desktop): move desktop app build into check job 7c98c65163a3daffd52e4009d8167ccb2ae13831 cleanup(desktop): lint&fmt all 0fac4cd8e98d0d29a7c2d0ebd4688b45cb3aeed0 test(desktop): fix session preview registry tests fails 6016997a72bc34df899e2118fea958256d922cae test(desktop): stub CSS global in .test.tsx files 92025df39366e03e99ce5bd10c3c130dc0b9c384 test(desktop): fix attachment list test not querying the selector correctly 66c097ab78c40131386ceb9b0394f489b3f6e141 test(desktop): warn when using `document` in tsx tests f382ff84f7e7ddd44de673c2a080bac06d6126ad change(desktop): add vitest config for the desktop app 3c408684ea8365afddc5e347ca28c2039b4d4023 test(desktop): rename panes test to describe its behavior 1c557bb98a4ddb993638b5cb00b23edfe13ba6a4 cleanup(ci): make all tsbuildinfo gitignored 47c47d6a038416de4b5ce7e997d3ef632918529a test(desktop): handful of broken tests changed to match intended behavior d6c76cfbfa13e7fef02ad42a9ae439ddb2c998a7 test(tui): extract cursor-layout + fast-echo helpers for real unit tests bffc098d09ccdf47b0b75deadb3ec47f8d80e448 test(desktop): fix relative import in oauth-net-request.test.ts, drop dead source-regex test 1b8f1504b32177ce1e12f47d8a618b320e3baa29 test(desktop): extract profile-delete routing decision for real unit tests ec2cb3ab4743d86a00fd3257bda0b1835d95a802 test(desktop): extract Windows hermes-resolution helpers for real unit tests 4527943e91c9cf767ce90fe85a34f2855d85cd75 test(desktop): extract hiddenWindowsChildOptions + stopBackendChild for real unit tests 5265b3002cdb7b245b1e20bc59fde4f414c72c08 feat(agent): ban regex-scanning source code in tests 5d41ad710cc7b6276b33dcb18b74a1c9dfd9586a fix(js): fix long-time broken tests 7b3f3047ab9a623d0e64919dbff64f8c41b11c4e feat(ci): run JS tests in CI, add `npm run check` in ws root f0d22e4b6c9a46e0ce2956131aec502797655082 test(windows): capture bootstrap only in msys wrap-command tests 67d0ab47ef6305b97cfac9f0366efe41355139e5 fix(tests): stop log queue listener to prevent FATAL on 3.11 shutdown c707165212aab9f71709a30a87827ea81baf8739 test(windows): capture only the bootstrap _run_bash, not the failure probe 2d2bed58911804b996c7cd64b398127fb543cf21 Merge origin/main into bbednarski/nemo-relay-upgrade 297dbf958fa23f3995862e9b37f7c1147066d707 chore(nemo-relay): refresh uv lock for relay 0.5 c44de998547816f8ef7e6bcc4ebe84370e6d2eb8 test(approval): pin blocking E2E flow to manual mode 6ce160a5a0cb6bbc131ac892c1de828505405bc0 Revert "fix(tests): force manual approval mode in E2E blocking tests" af7dceaf77bbcd5dcafe4f65982c7cd7df5f4c4a fix(context): persist fallback compaction breaker 5ce827cac9f97215da9d9da019c2d06a616abdd1 fix(context): count fallback compactions as ineffective 3330e7112ea65b5b498aeefd59b68b71c9ebbbd8 fix(tests): stop log queue listener to prevent FATAL on 3.11 shutdown 55624e10b93fc2995be275f8d1919088ede29eab fix(tests): force manual approval mode in E2E blocking tests 5e732af591ca26fdb51a3f260047ff0f46ae2874 fix(tests): force manual approval mode in E2E blocking tests b104657d5e619121154163680c274fe993e3d3dd fix(nemo-relay): widen supported relay range c4622a1d5b355b2f8f73470afe3eccee532d72ad fix(windows): survive broken Git Bash login shells caed552de1c8a8f9983bc555512412a1ac0e0a9e Merge pull request #63948 from NousResearch/bb/salvage-48281-stream-pin da52ffea1481396368c4544bc02cead1c831c817 fix(desktop): pin unscoped streams + clear view sync on switch c24a1a7e250c93bf663e9640ce8f3200248d25a5 perf(tools): text prefilter before AST parse in tool discovery 7fe1cb384e4f99aae3243c4c578904ac8c114b25 feat(ci): python test speedups 92d083b77da8d4d66a37f836eb338e0e69c8a426 feat(ci): python test speedups f6d1fd511ca8173f634fd42a582e43c3d6181762 feat(desktop): auto-fetch remote base branch before worktree add 6f7ee72be5a10c6979e02c38db2d986be8b28b62 feat(desktop): base-branch picker for new worktree dialog 2627933f337b8dfb4913caf9b596d72c6de22b93 fix(agent): distinguish missing from broken compression locks 8f29c9f4e3022223dadf87cab2f88d9cbe73408e fix(agent): fail closed on unexpected compression-lock acquisition errors 944dd0a93605f0bfa9d7b749bd7d1cc15245c84e feat(ci): faster docusaurus builds :) 915f1bf1bc2f939356226250e0eade3c9b3c5960 fix(api): reserve cron fire work during drain ffc10cc659d42ed79543af399caf586ce70a68cd fix(gateway): quiesce API and cron work during drains 104ffeae23a7dc08265f1b76ae7d5d68c3eaf2e4 fix(gateway): complete API-server shutdown drain 021ee345464662bc95381502b6562df19df87258 fix(gateway): drain in-flight api_server runs on shutdown 0512f06a6acc2115754cfcc590662c0c05284300 fix(auth): centralize pool auth normalization 1215fbbd7655d0c487aa9078cf662fed363d8cc8 test(auth): cover sk-ant-oat OAuth normalization (#63737) 77763f00fb9ecaf7ee7d4cca7b8c066dfc927dba fix(auth): normalize Anthropic sk-ant-oat pool creds to OAuth 7fdae5d22acc2a350661591a914d82676f4aab24 fix(desktop): ensure node-pty spawn-helper is executable 7f7a40381e86d73bf69c78410e5d9bbefcca8a9a Merge pull request #63864 from NousResearch/bb/salvage-63822-fallback-draft 3615545bca2b22e3e57257bfd5ef5bb3b47bbc28 fix(desktop): keep draft fallback rows across autosave echo 779f42286d9acef0b183a8968c0f7c998291fb70 feat(approvals): add write-file approval mode af250d84948179834820a62bfd870c0df6f264a1 docs(delegation): clarify background lifetime d2b2be0f0163559d1c3d0c3f50bb68a2b41fbf57 chore(release): map delegation contributor d0e9a42cecefe5dbc7a750ae43c2149f4d3264f8 fix(delegation): harden durable completion delivery 67f4e1b4a9df36a6900f2dbc3cf5b71e298c3a7f feat(delegation): persist background completions 94a7705bddc6146a36e754c69afa4f28b743f437 fix(gateway): deduplicate completion delivery 6882c22b6a60ce2a76c43882dff86682797b14d1 test(terminal): pin sprites dispatch wiring; make _sprite_name a tested contract 4c4b387b6adb5dc117956ffeaaace0208461fcdb fix(terminal): profile-scope Sprite identity + register sprites in current backend classifications 7abcf5545a31da929523d1eaa365ad39c45b4305 Merge branch 'main' into add-sprites-terminal-backend bd740f203b44237dbc5c27a2de4d86ef32af4dde test(approval): isolate smart observer redaction failure d921005e25cc2d75ae8d2e8f10044448234c8d1e chore(release): map @kavioavio in AUTHOR_MAP d48bf743f2cec4221ee51f1f51c92b96f07c84b8 fix(approval): scope smart deny owner overrides to one operation ba6430472e578c9f26a9d9f234cf03846431de84 chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 6 updates f96b2e6ef75ba6ed678c99954bc8f3ee7f6a38ba fix(whatsapp_cloud): gate interactive taps on DM allowlist ac705b52c90e114342370c3637e49c8d78b5afe6 fix(sessions): validate imported session payloads b51d365ef02a952f9e94f3be94c7eed84bf4daf5 feat(dashboard): add session import flow f813c7ddad6f7a4973f83737d36d5e11a5cbbe50 chore(release): map @Tortugasaur desktop commits 3510b18814c2edb0173bcf584ea1feb146b7d274 feat(desktop): add profile-aware approval mode control dfeedf613dcd2ca97d0903ad7fcacad118e39bca fix(patch): ignore inert context-only hunks (#63678) b03c94dbed5ee72e97eace2376e02092cc854f6a fix(approval): emit observer hooks for smart verdicts 2bd721cebc857bdd1b052d4246f977f624ea0fff test(kanban): remove duplicate final-results footer 98b4562947eb0c3ffc534b16edb7be0cf81b3f47 fix(kanban): make Done-card results actionable deae8e3b4d72f6fab1be96d539f35f334494482f feat(kanban): surface final_result for Done cards; show run summary when task.result is empty 73f486297eb7d5eb690472977511372119c20a53 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/active-turn-steering e4ea0a0ed7fc24761b2b425146893561a73216e1 fix(config): preserve string-typed config values a10081f83bf8b5c918262a5ff039ba0c91ce3ad7 test(image-gen): cover Codex capability HTTP boundary 402969670d84f01021c3bb19db438a8733a7964f fix(image-gen): classify unsupported Codex image accounts 8a5f8379eda3d8b9b223c82194cd88cc4ad41c69 fix(agent): honor custom-provider extra_body for multi-model catalogs d1961fcd7fe7be789052d9f7b96fa76bbe1c2b1e docs: describe active-turn redirect busy-input behavior 2150bd21c066439b559a51ec2d83e65634edaf85 feat(surfaces): route busy-input corrections through active-turn redirect 8755bdedbec3967a3e5e2962a78be9ca06d1c12e feat(codex): honor redirect and hard stop in the app-server runtime 687f4d61d5398ddcbd38b902e8b524d02eda2c8f feat(agent): add active-turn redirect core primitive 902379ea3ebb91b51a1cfc35383ac61a853cd562 Merge pull request #63624 from NousResearch/fix/desktop-new-chat-submit-drift-abort 80b58ec71dd37d181358787912d40f1a8137fdf8 fix(kanban): spawn goal_mode workers with -Q so the goal loop actually runs 0709714a6c11d8a7093c04d351955b18651c64d6 chore(release): map @yinkev in AUTHOR_MAP 8030b01a2ad6b82ee4c0434ba6f9726d0d1de380 fix(kanban): harden durable artifact handoff e6c42b5d80e0e2cfb4891deb8471f0386b999e15 fix(kanban): preserve scratch completion artifacts 5d524d042784f306ad8e7ef747c035cbde5afa08 fix: reject empty credential pool leases (#63620) ba7e5b052acb3db25e652fff946f88bf26075b0a Merge pull request #63621 from NousResearch/bb/salvage-63470-bash-paths f2fcf89c1f7ee4b4b2b894b5385cdf80a0dec2d9 fix(windows): bash-safe snapshot paths after #63113 8c288760d0b50107e608ed42df81f48c7ccedde5 fix(desktop): stop the submit drift guard from aborting every new chat acb3bde097cb854b038ca818c3d2437e3c29802c chore(release): map @jakelongvu-bot in AUTHOR_MAP c5e841ab0e301f9ab0bf00ebd430159441f828d7 fix(approval): honor canonical gateway timeout 155ba901e3d2c12401eb465ad9af1ebb31a79681 fix(desktop): queue composer drafts during gateway reconnect instead of silently dropping Enter 5bff2c28eea0d9fe900cc232bbbc33723ec9f12e feat(approvals): add profile-local per-tool policies cad5d116fd49342981dc24c3a35ea723fd5c8348 chore(release): map #22722 contributors 88b1e4249ea677730f75fe44a6932ff03da41aec fix(skills): parse stored GitHub credentials without scanner false positives e589b739ca70eba00aa90fd3d0228bada00dbf8f Merge pull request #63105 from NousResearch/bb/salvage-43809-wsl-bridge 6d3009454da9b67543def7f6ae4c5a63bf3ff15b Merge branch 'main' into bb/salvage-43809-wsl-bridge ad1505899ac520677ce5422c85739f90bce44210 chore(release): map @luxiaolu4827 in AUTHOR_MAP 4310a6fd1cae6af691f38859fb83f66fd6ee691b feat(approvals): add cross-surface mode command c69f3bee69064373a5183876b84ac888c42d79d4 chore(release): map @Emidomenge in AUTHOR_MAP cf335522d308cc121e2bbb2535ece17f2c75c021 feat(approvals): add fenced smart-review context aaf5691261f12601db845386d650dce1cdfa30f9 feat(kanban): collect project directory when creating boards (#63249) 2bffeece66440b5b1ee4f9f6ceaf87aaabf03db3 Fix mobile channel setup modal 7c19eb80a8bc0593b47c12752779dce4c8e36b19 docs(dashboard): align approval mode guidance da6d6164bafbf4de80a3f99098e40f12b3e2fa63 fix(dashboard): correct approvals.mode select options ed2ae3e52480fc723dbd7b116542f08700a6ee77 fix(gemini): preserve typed enum constraints as strings 7b5ba2054721dde998ed47fd4a0f031955278e99 fix(desktop): resync fallback editor after config reload bf3667aeec1e4e602653a069a6bd3b2f1b6ff12b test(desktop): cover the Fallback Models editor 21781d54ecb3da1d53a608f46eea64bc67f6c225 fix(desktop): structured Fallback Models editor 68107ae9d0e9663368233fa2a2c9a521730d8e5c chore(release): map @ansel-f in AUTHOR_MAP 0c8bcd3399735ec308350e59d9af3d5ef10429dd fix(approval): allow verifier temp cleanup f67aae323010e32c592a185984d36b20e9fa474a fix(kanban): make scratch cleanup explicit in dashboard (#63123) 837077dfae584c0b27d2654c4c2fe21adc26a2c8 fix(api): stop producers after run transport expires 8f18fa104f1ba4a56d5a2a1c19ac43beb43e9695 fix(api): separate run control from stream lifetime 1da89a5f3dd41ecad97272557a1623c851bfc12c fix(api): keep live runs tracked past stream ttl 2d9fd870b6d105e3b367aaa97477931b6671192e Merge pull request #59778 from frizikk/fix/desktop-sudo-dialog-dismiss-59765 04c7d104a79abf55478bfad3a540956531786baa Merge pull request #61885 from embwl0x/agent/tui-secret-overlay-expiry 9a15fad0d6c370ba09bf87af92144f46ccd2bc4a fix(web): preserve declared providers in model writes (#63058) b0ff1c3cc557a2cb7664ee13cdcfba2c5a0691c5 Merge pull request #63113 from NousResearch/bb/salvage-55481-native-msys dc3f61cb01dd39205fb2659d99e6c7450ef091e8 Merge pull request #57439 from NousResearch/bb/settings-autosave-audit 2b5d4ae916a805829e0c789a6dffe05f48e08a07 fix(model): merge configured models into picker rows (#63055) 8c77206859e46b0b0d5604180c36af2c197c3c00 refactor(model): gate picker rows by runtime capability 6503f36ab981233df7bbca4167ec8b3c470b8222 test(model): simplify routable picker invariants 938c2622f6787f095636c88e9cb835b192ab3359 fix(model_switch): filter /model picker for unregistered providers (#57503) 29c9dd99a4a7d210c97af475a18fc030d40f58d5 fix(desktop): autosave Mixture-of-Agents preset edits 4a4a0c2fc723fa2974246d3808866cf2ec2bbe97 fix(auth): enforce credential pool provider boundaries (#63048) 51382ac244702b09482e339ecba5a88649f5ea62 fix(skills): bind bundles to exact files and origins c36f6b72592662b5f6887c2a1aa0e6c7f7fc3a19 fix(skills): install referenced bundle files with scan provenance 1e75744b79918ed27e9014e7901bec115023ae89 refactor(model): centralize picker credential availability 3a67a7be55550f59888b2a01ae32952b73e724e4 fix(model-switch): don't treat an exhausted credential pool as authenticated d1ad9a0f5d205747dfca035449951e8c4fd1ac84 fix(windows): rewrite native drive paths to /c/ form for bash file ops fc232f8ce648645b4df96d8be3fba2dc7cfd12d5 Merge pull request #63102 from NousResearch/bb/clarify-answer-visible 3e9aec9f94a12e58906ef65e2d6839d3e6676d8a test(desktop): satisfy ToolCallMessagePartProps in clarify tests 40e9b893f752dd2effb9884e35a8285ef2f86862 Merge pull request #63103 from NousResearch/bb/desktop-docs-alignment 650d04d87917300a3613c4a5e5ac226e21b39428 chore(attribution): map VrtxOmega@pm.me -> VrtxOmega (#43809 salvage) 3c7b9f2e9d00025216e663e024b1ee6f415d959c feat(gateway,acp): translate cross-boundary cwd when running in WSL 88fbc8825cd2dedfe145c21252dd5d2953e255aa feat(desktop): bridge WSL paths for a Windows host + WSL backend 8bea079e2ef1d00a3bee7be771d2f462f59a82b2 docs(desktop): add judgment-first AGENTS guide and align DESIGN/README 192ce05d057932c4083bccf0fffbcff7a6461ac4 test(desktop): cover settled clarify answer rendering 9e7fe2dd014e7c12859dec12f70a1d20281c125b fix(desktop): keep answered clarify Q&A visible in the transcript b4829643d6baa35a861973f61f4bec26b9b71d5d Merge pull request #63091 from NousResearch/bb/salvage-48591-workspace-binding 33ab65a14fe75fab35eabdcdc4109cbaa2ee3585 chore(attribution): map palmer@dugoutfantasy.com -> professorpalmer (#48591 salvage) b5f0e451c15dd3346a593406b1551cb599ee215c feat(cli): restore cwd on resume (--no-restore-cwd) 0c4aed2499c37372cd07a127ee10bd74aec60cf4 feat(cli): sessions list --workspace filter + Workspace column 602fe1c15d59c763a796976d57675c98837228f8 feat(sessions): workspace_key grouping helper + tests 7c14d2a046217c5ccbaa06a9449b0fcf329221f9 Merge pull request #63086 from NousResearch/bb/salvage-59241-workspace-status e0a650fa7dd94fc442e984f36ba415b3cacc774f refactor(desktop): text-only workspace status menu + attribution 5fc08c0e0d98962501609fa5aa8f684f4f8ae15d feat(desktop): add workspace path status action 8895335453c629f940ce8cc0313bdc05bfe68079 Merge pull request #63077 from NousResearch/bb/salvage-61950-nongit-groups 59686df8fe1b4f499f48b83877f6d7db2f9de8d6 Merge pull request #63081 from NousResearch/bb/salvage-45744-workspace-target f63535a3474b8d3a5be251e6ef24fa9144c868ac chore(attribution): map esthon@gmail.com → esthonjr (#61950 salvage) a5c0715835250a49aacf8f7858dcf5f375f52ead fix(desktop): preserve sidebar workspace targets across new drafts ceb179163d767ebbf0f77e6ef7f1c93c7caa3c62 fix(desktop): mirror Windows path identity in live overlay + WSL spelling fff1769bd1171887df29b0491df9b8eb31aafe26 fix(desktop): preserve legacy non-git workspace groups 095b9eed3801c251796df93f48a8f2a527ff6e70 Merge pull request #58241 from tianma-if/codex/fix-desktop-project-session-cwd bdfc7c0b1e65d157646411d858a4632d912699fd Merge pull request #63030 from NousResearch/bb/desktop-boot-recovery-remote 65712bf788a4468128afc7bcb1dfec5b5809831f fix(desktop): clear the OAuth partition before remote sign-in f3af066b8545cbc81dc75f41fec57c6a9d71972b fix(desktop): treat connected-but-expired remote sessions as reauth c1c74d7518fab87943b67bf3aad45738e22a4c23 fix(desktop): recover a failed gateway from the boot-failure screen 5f9b8c41e3c861e5881628244730cb0ba64f79dc fix(tui): keep unresolved session models unset f8152d232382c858fed176bdc1cb0f96d4ce9ef6 feat(desktop): embeddable Gateway settings panel e1fa54d367573288061eefe2901657c77b7b44cb refactor(desktop): extract isRemoteConfig from the reauth predicate 79c08064568665251dac93b79b2247082b0510ee Merge pull request #63040 from NousResearch/bb/desktop-drop-dev-soft-switch 302a0dade8df2b2bbcf2d7a1f040d23772a39100 chore(desktop): drop the dev-only "soft switch" preview from gateway settings 7550c594ce18d7d100014c2120112576efb03c26 feat(reasoning): add max and ultra effort levels (#62650) 62a76bd3d5a658b84b3dafff6233f13e2522b95e feat: make smart approvals the default (#62661) 2043436af130ceb482c3f0f4c37c0e45b5429267 Merge pull request #63029 from NousResearch/bb/salvage-62022-tooltip be2b73e2535fc4445618895677ba59522fdcaa38 fix(desktop): stop empty mispositioned tooltip on terminal rail hover 0dd6ced0cd925b3358e0bd015bc034abde2e346b Merge pull request #63023 from NousResearch/bb/salvage-61584-terminal 1a3b2206510a836b9da888adf09a28ae6999968e fix(desktop-terminal): reopen terminal tabs in the last-used directory 817969f5a20b450fda0f825f516352d39d12e351 fix(desktop-terminal): trim trailing idle prompt on no-separator shells 164d9126cc0d4a9723776fd0ec052294ac020bb1 fix(desktop-terminal): stop idle prompt accumulation across relaunches 964ecef4011860ad7e793da1e454714072e3c6ed fix(tui): dispatch custom skill bundles as agent turns (#62859) f8054601a81d9c99ce75c1f0c1336c2f3b34b755 Merge pull request #62600 from HexLab98/fix/desktop-cron-no-agent-editor 4281151ae859241351ba14d8c7682dc67ff4c126 test(gateway): cover effective context budget 265ac7d812192d3b6f11888811512604681d3a32 fix(gateway): honor runtime context budgets ff84e3f7d57b301eab60c437d1751368973369b8 fix(gateway): scope queued context references 37a942650f8ef905802a521f866445e1b2090291 fix(gateway): scope context refs to runtime profile 4df6e6280d1a2d0e471cd05a743d9cc9ecb64848 fix(gateway): @ context reference expansion never ran (AttributeError) 8121dbb1660adbe561b396bd60d05156c29dbfa7 fix(codex): reject interrupted manual compaction 8c62a922965aaf4545e2d39101ac5d69cc52829b fix(codex): consume manual compaction usage gaps ec6982fbcf111f09655e60ee74ac65fc813d5309 fix(codex): evaluate native compaction usage b8d467bad9d90ed0fc9d79b9a81e28c7a0b03e33 test(codex): cover usage-less compaction response 83000c7295a03b3ab81306c922841fe724776abe fix(compaction): clear stale anti-thrash verdicts 2c6e5877a663915c2db6e0201f64b3e706838a75 fix(compaction): arm verdict after successful boundary a46bb90d6bcd2f3fd74bcbd7df0151e1988f82ef chore: map PR #62125 contributor 7332f207d7900033461ca34c68767c50ada2dd00 test(compaction): initialize anti-thrash fixture state 7f9485707d0183af0c9f04e1153e1ec9bd98aa68 fix(compaction): judge the anti-thrash verdict on real usage, not in should_compress d1724456296b2f312cabf4596f0e78e27c030f0d fix(compaction): check the threshold against real tokens, not an estimated floor 32f30d2a4f953496f0dc25b12f0db8f7e0115d5d fix(compaction): anti-thrashing guard never fired; score against the threshold 6142203bd7af6c5d78f5dd0d58dbe64af5c02345 fix(gateway): ground readiness in live runtime state f9728af5e213116a704f4de6ba6798600f4dde22 feat(gateway): add authenticated runtime readiness checks aac77f1686859c9386602b0a2880b06821ccb68d fix(tui): preserve picker session scope across all paths ce5c1f9f79a5735e6ac154903ef93782261b9c87 fix(desktop): keep model picker switches session-scoped c55298453419e0e7202b84691ee9ae41b8a0c66c chore: map usage attribution contributors 0d63c23f36b8bdd9162998393d3cab6547d27bf7 fix(insights): harden per-route usage attribution d14006ead22f7c91c0ea1874f0451ce84fcc88db fix(telemetry): persist first accounted fallback route cb7f6bbb2e5696bae2c595ca8a3a52cefb6a4a7e feat(agent): track per-model token usage for mid-session model switches 022c4991fc0c5245b8cc84b9e275ae7a64b27d30 docs: add Fireworks provider infographic 31152ae108e84325db1d75a2c7f0f49037c866ee fix(providers): align Fireworks integration with project policy c97d9a4c07b27c8ce94c10e83b916eea43a1e257 feat(providers): add Fireworks AI as preferred provider 8041be795419ee00890bbc6efd075c1459684acd fix(model): keep configured provider authoritative 0ca6a985412518545f8451153d999d64f3587d27 fix(cli): keep current provider visible in model pickers a0a6cd80f5c7850fe1dcff4839c2d4cead44d1c8 fix(agent): preserve none vs unknown tool effects (#61783) 5ecc07986f46463ca3096679b03a46402eb19cee fix(cli): preserve -t/-m/--provider/--tui/--dev before chat subcommand 91d05b982d0bc08a735a2c0b1fedccd93b7fc9cd fix(xai): recover legacy encrypted replay failures (#62420) c7619773e794135ecb1ef4ba4724686a1fa3b66c fix(agent): restore primary credential pool after fallback (#62417) 3b2ef789dfcf92f5b7b18c08c59d25948e50857f test(models): patch secured Novita pricing seam d83cd6f7c3ace9b5d5dfa2cee793cc25e28a0f03 fix(security): secure Azure catalog probes 1f46145e0391efcc3a5721c92fa6a2071698d031 fix(security): order sanitizer after installed hooks 92c214603907a3e9e80f047af5c9bcc82ec0188b fix(security): sanitize after installed request hooks 4530a4ca4cbfe303a25a76a6ef5892041d6169e4 fix(security): preserve opener-level header policy cf34a1e8c7b8c775fe77c0bcbdc8a559f1bca22d fix(security): cover remaining catalog credential paths 27a1042b130e3075abe3d0f913dec2f60b59c9c8 fix(security): preserve installed urllib policies 6fe2c8b78c4ebb275bd3b106d8368668a87bf619 test(models): patch the secured request seam 6e75ba7fa066c1667cdc09db02c0c1dca8cd4671 fix(security): enforce one redirect credential policy b8dd1bf3a5b94de3eb705d6d94f289b47e4b2715 test(models): preserve catalog urlopen monkeypatches 5415b77658e90fdaee349e7684efeebd2a1a3b5f fix(models): strip credentials on catalog redirects 61e3bd67d62564f4ef99eded4108d7e5a5c9f6f7 compare full origin (scheme, host, port), not hostname, before keeping credentials a061788d4356a8fcc2e9fdb488be412d99d8d22d security(providers): strip credential headers on cross-host redirects in fetch_models 9eaf3abf6e1acfeea4cde2fe280f058328d8e448 test(codex): pin final replay preflight boundary bce17bf6a2e260b8244e99eefb955e74761d13c3 fix(codex): enforce Copilot replay policy at dispatch 22d5a35c163b263abc058ec4b4ce2fd6545c00b3 fix(codex): harden Copilot replay classification 83b2a685cd0966afe3edc2bdc9caf488c9114982 fix(codex): also guard the auxiliary Copilot Responses adapter b9146a47bc8612417bdbd4f4543139012b6c0dd1 fix(codex): never replay message-item id on Copilot Responses connections 4aa499ff9f3fcc0c38ce61da46805a4dcc8f612e fix(telegram): harden flood fallback recovery 04898631cb72dbf84f5c066c3f87fc8c94df53a7 fix(telegram): recover final delivery after stream flood 02063ece119648eeb8e7603c857b03aceda22ffc fix(cron): scope inline calls to reported transport 47c91e4c344d620491943346c58c74f1ce919cbc fix(cron): abort inline requests on timeout 8acac440f4ef35c26b46b56c2d035cbdef0c465c fix(cron): keep inline dispatch behind the agent call seam 5c5dd6b7ecc1b44e7e83b28ef28efb96e419badd fix(agent): run cron LLM calls inline to avoid gateway deadlock (#62151) 1234f39e313102c49c87fe39936b0c9c658fae2e test(cron): guard direct API path for gateway deadlock (#62151) d00c15c0c502ebcc4adf44a8c0c4020950644eea fix(cron): run gateway cron LLM calls synchronously (#62151) 9f616983695d6ce6d0bb898945161d44c28c5b4c feat(desktop,cli,docker): serve the desktop renderer at /app on the gateway 7acaff5ef2bcbaa22bd23b72efe60906123a4f55 fix(desktop): pin session context during async prompt submit (#54527) 2afa92c74ff591dbd7b7b85decd9fb07df932d15 fix(desktop): pin composer draft scope to the swap-effect owner, not the render ref 0b2907f586552bbfd87f54ceda5d1a7343ea5cc9 fix(codex): drop oversized message ids on Responses input replay dabae386ef19010d2b0c9e4c4d7ffb984e9115db fix(cron): bind claim heartbeats to dispatch owner (#62155) 5ba2d167ba816d68f22c4bc5ce5a1f4da11348ae Revert "fix(agent): release pool FDs on owning-thread client close (#61979)" (#62141) a014dec94afe021eebe1b1ac137e7338e3932380 Merge branch 'main' into feat/desktop-web-bridge 09c7854662da484197b13af6a8662e89784df537 feat(desktop): web bridge — run the renderer in a plain browser 5e849942c3b9d36fdd48c80e9d13cb66212d9731 feat(dev): add isolated sandbox script for local dev 291eae63b7d37129661082e23df35804c5e89365 Merge pull request #62016 from NousResearch/bb/desktop-vibe-hearts 1fa3886bcebe67779f03bb1756cff978ac16f81f chore(desktop): remove the DEV Shift+H heart preview fc977f62bc978b05925a86bf439953626a0a0422 fix(desktop): remove old .js files f7c9feb395caa27ec79386b1ed3ae7b4675486a1 fix(desktop): only show slash popover when / is first char f000fbe5c5e9e4ec192b803f210d7b7506035fa9 revert(memory): drop the provider actions extension point f618984c644ea8f6219fd963cf2fdb423b1d4889 fix(tui): dismiss expired sensitive prompts b8880f124537acc5a6215718dd154eadc5af1515 fix(desktop): type-check electron/ in CI typecheck db8772a062bf5e90efd46071dc61b30d32f8056e fix(desktop): don't emit js files when we build desktop b9b463f3bd6517b76687d9b3c9dea1e62f01f9e1 feat(security): expose deterministic tool output risk (#61793) 35d777df07412081d21d660a4f388636ddd95e4f chore: map WilsonKinyua release attribution 1a2f3aea9a62ecb728b602d37aa050b6e0b7c004 fix tui finalize persist drop conversation_history so disconnect saves chat cd7a8dfde08b3f637f0383136497a711b856db66 fix(agent): release pool FDs on owning-thread client close (#61979) 9b72995a1dc60ba3d88764cf78c1846935a080a8 fix(cron): never stale-remove a one-shot whose run is still alive 90bd5b0f9b3bf5f1396193504f05ba8c2fd9005d test(telegram): mirror PTB errors in heartbeat recovery 97fb9e1f629c633e1c60d4b64ba490e7c3a61e60 fix(telegram): classify PTB heartbeat transport errors 54e1864577655aadc870d09e79aebbbcf8a812d5 fix(acp): unwrap web extract object titles 0b753d8918ca0447d2ac1f6a5344db1c62d0e9e3 fix(display): harden fallback label formatting c2a40b2dc9ce5998dc058b0c8dd09bc7e7a5458f fix(web): handle short extract provider results 459cf3402b7aaabd8c5efecd7100c47e40bdc938 fix(web): preserve extract result input order e640bb5e184c19a659a45d3327924b321f8892a3 test(web): cover model-facing dict URL dispatch de33c2413b19a8ab5d928468a7c623d469b53f04 fix(web): harden extract input and display boundaries 7ae9faecf700b618e07409d5a7f838c2e6dd21cc fix(tools): handle dict URLs in web_extract display and tool processing 8727e6729512ef6415768e1980b1aadc19084abe fix(runtime): preserve resolved fork metadata 97e9c64664293801f918dfba1e9e03fcdf904873 fix(runtime): preserve resolved fork metadata f39c88befb2b18d9fb5d643df20f19961d7940eb test(curator): assert review fork forwards pool and overrides 304cdbdc7746db1be3fa6d12eeef1ec23d0785aa fix(curator): forward credential pool from runtime resolution d37090ac363b7a3112ba89b32837fad69270594f test(tui): cover profile-local MCP discovery 623165a640c14d4d8ebb5afe1dcf60924ab6d790 fix(tui): discover MCP tools in slash workers dfdc3156fbeb3e1d67c7173101d836fcfee0be85 fix(models): remove unavailable OpenCode Zen free models (#61163) 8fa0d8bbbb220c3ed25d5b9ce092b3c6fa892b4d test(auth): pin runtime routing persistence on failure 0e67c7231d7c4387ddcdc1ece2b886cc5e8d88b2 fix(auth): validate and persist shared Nous routing 03b8a00e268f150b2cd2888b3a7da9e22cdeb4cf fix(auth): recompute Nous routing after shared recovery ca6513542d5128742d1cc76e4f01e1568997e677 fix(auth): recover runtime Nous token from shared store 3aaf7e3876a274c8dded71a376fbcb4cfe3c6af6 feat(desktop): TikTok-style vibe hearts on a reusable particle system fbefb5c07551798bf2e4f73ca158bfb4674fca23 refactor(tui): drive the vibe heart from the core reaction event 0e2adf9dadab1cc9eaf5ae2028765d7c7037092e feat(gateway,cli): emit + consume the reaction signal 422d9da9bd6468881ed1fb7e1673141315218a66 feat(agent): core affection reaction detector + reaction_callback caf557be5b4c9ae75b3a7566d65d3df2c701c5df Merge pull request #61973 from NousResearch/bb/desktop-tip-stuck 29f3dc0809899010fd1175edcc395cd968ffea4b fix(desktop): stop Tip from sticking open and blocking clicks a9f3f087001dcba6cb5f9e6a0d7c140f25a658f3 Merge pull request #61916 from NousResearch/bb/desktop-gateway-switch-ux 79a104d03786dafce080286b1bc4b08cf1c61195 Merge pull request #61912 from NousResearch/bb/salvage-55402-desktop-cloud-mode b3bde1fbee42c2e563287381d9dc79212bc94139 feat(desktop): soft gateway switch + gateway-settings polish a0032f5f92b9b738c1397224c9bd07f86cf75577 fix(routing): preserve profile and delegation parity 3aeaf3755d1437d50519dec6c7b1a839f8773c40 fix(nous): forward provider routing through Portal 69f1460c3d711073be7ee018127738e556b5ec2d test(model): isolate custom provider discovery 7628f2770a249539b22f8cbfb8896611ea8de728 test(model): assert explicit catalogs never probe 0629caac6237f896a199c090fb58ec13399b3c22 fix(model): derive catalog policy from declarations 5f00f36ba9f13b789bb0e4cb110c11454397a6eb fix(model): probe no-key custom provider catalogs 46cf87be16b0fb6e6b982cd0548c78bbe3789746 Merge pull request #61935 from NousResearch/bb/salvage-59902-bootstrap-repin 6207d689484387fdf24060975c5db50202d9d30a fix(desktop): prevent bootstrap stale commit repin on existing checkouts 678be9f1d8884afc7af60648d2666cae5514cf29 Merge pull request #61929 from NousResearch/bb/salvage-57912-dash-paste 301acc9eaaeed21460f29720d43272abfc35b705 fix(web): paste/drop images into dashboard Chat via HERMES_HOME/images 1318cd9b0dac379efea0878acf1e283a21c402bb Merge pull request #61925 from NousResearch/bb/salvage-61245-ui-zoom 57dfebe3db10a3ed4692baccb3e72282d33626d0 fix(desktop): re-apply UI zoom on show/restore, scoped to chat windows ed36edde411a35b11ab5f335de53c9ed8bd8002a test(gateway): recognize awaited reset result b196ce80c897d08e56982dbc88336b028285adf9 fix(gateway): unify routing save and reset races b3f77f5c8270f5a8980daf92c85a57c706f84728 fix(gateway): close SessionStore concurrency gaps 9d38a2309ece666807b9f26cc97d2514456283ac fix(gateway): enforce one async SessionStore boundary 08e9dcf182a95488e88ecb7eeae4eaf4c55c0a43 fix(gateway): move all I/O out of session_store._lock in get_or_create_session 94c2a4016bed3309bb33bf60a1c20d707bbfc4a5 fix(gateway): offload both blocking sources in compression-in-flight check (#5) 24ea21993f8105f786eceb9a73095bf13f0da9a0 fix(gateway): offload session store calls off the event loop via asyncio.to_thread 04ca34b5f3ec5f4ed0b73d6ba7efd7129f084d61 Merge pull request #61915 from NousResearch/bb/salvage-50488-msys-paths 24f6ed53fc1e4f8dc3b30d4d4633301b771aa1fb simplify(desktop): inline the cloud setup link like the rest of the app 1c7f31a577c60a0ce59c8f59b2c5605974da2ded simplify(desktop): hardcode the Hermes Cloud setup link 703487d7a6d6e7517a152687d0eda0d6cf990a05 feat(desktop): point the no-agents link at the Hermes Cloud instance-setup page 3f8b22004958506e9d476989365b3ee2ced4ecff fix(tools): resolve MSYS paths in file tools on Windows 9cb2a8abb009f656c184fac78f04c3d0329be092 Merge pull request #60757 from giggling-ginger/bugfix/issue-hunt-20260708 0ff097439e4d19f7b19f12fc74c3eab8e9b58446 refactor(desktop): DRY the cloud helpers 2d315d30f8b43776e9f1462a7d517ba57944c42c polish(desktop): normalize cloud-URL highlight match + correct signedIn doc c101207b99239f77395bddc185cfd53b2e3fa0c1 feat(desktop): Hermes Cloud connection mode — one sign-in, agent discovery, silent connect 6abf1956829d93c487e18eb3051c395b111d3d39 fix(agent): keep pending verification behind exit provenance 8fc80bc2aa5859384c9a916dd7f4671dc2841eff test(agent): pin verification fallback edge cases f46e7647eb72664c74829fe31550a2b74fe19314 fix(agent): clear stale intermediate acknowledgments 1453431881924f576b77b8f79b1a1429d744479e refactor(agent): scope pending fallback to verification cd7c203ab9fd6919c1e9b310783fb2d02d85c774 fix(agent): preserve gated responses without masking failures 53231fb00b122339dd169b1964efd4713d2c7855 test(cron): cover verify-on-stop iteration-limit exit normalization 3eb937a4985df1ca2efa64abf7c5949f1c6068a0 fix(cron): preserve composed reports when verify-on-stop exhausts budget f82c71396d0ff9c7016766b69d579f93485c87cb fix(cron): scope profile runtime during webhook fire ec0227b4350415ee500626a53a27e15a09332e1b fix(cron): isolate profile store paths by context f8361d29c8e2a2be6ba9ada32f1d694bf47a4b6a fix(tools): enforce registry result contract (#61787) a0972b9748585944c30d87dcee9c571b75a77389 fix: widen None-deref guards to config-derived sibling sites + tests 838aa742cb790da6a99a3399bf805d725ca1a726 fix(agent): guard .get(key, "").method() None dereference in adapters 5e50f18b3041067b42af7b9a5a6778d55e93fdfb fix(agent): reject malformed tool call arguments (#61784) 0b0f60bf22432f7a7ca2ef8c5c7c9f600a5129b4 docs: add Feishu group events infographic 651e632b6d1313a2cd4d3567dd63c257c284ee3f fix(feishu): ship Channel signaling SDK support 949e4cb72a78a38bf63d00c3e663b0d069df6f8d fix(feishu): add extra_ua_tags=["channel"] to FeishuWSClient for group @mention delivery 07271a6f628bcc6a3e8a2f921f2ab298dae2c68d fix(tools_config): widen null guard to known_plugin_toolsets write path c9d54912056271923afbf64055a0ea801b307bdb chore: AUTHOR_MAP entries for HumphreySun98 + 17324393074 (PR #61142/#53196 salvage) df886d0a4569276c818dc10be9a5d2f68e80c67e fix(tools_config): guard against None in known_plugin_toolsets config 569326577556d350739efedd2363a681359db5da fix(web): don't crash on a null web/backend config value 1a477697156cd50a3c2fc5d6a10af6ca89f02d06 test: deflake CI and dev-machine flaky tests in bulk (11 tests, 10 files) (#61816) 3a394210ffae0358100e9d14cf1639f764d7eab7 fix(stt/tts): widen null-subsection guards to all provider config reads 89371216b2fcf1e9bf38fb318c7b976eb99e8159 fix(stt/tts): guard against null config subsections crashing with AttributeError 4c03032a240a297ce6603bf352cf76d88f59d75f fix(cli): normalize malformed skills config in get_disabled_skills (#61797) 881a9520e3e0d157a632621df835f5726ac6c0e8 test: regression coverage for null context_lengths key (#47135) b2e227d24993a4f267c8ba178e75f57bcd3f00e5 fix(agent): handle YAML null value in context_length_cache c49d51bf723062120f91ad53a7f123437e2f2c31 chore: AUTHOR_MAP entry for kohoj (PR #61667 salvage) a4dd08a977f50672cad5173299bfa0914c30499d fix(session-export): escape html tool call names b5c655c89e5ce8a91328bff5aa8c79180299d440 fix(cli): normalize role into a single CSS token for the message class 0888a1f8a7b10301f0c324078fdef3accdda5a33 test(api): follow centralized run event publisher 540f90190f50f9518bf36632a724e0e58877a10b chore: map reconnect contract contributor 16b841b7f497545af1a3d71b2d4b0df14f1bc921 docs: add gateway reconnect contract infographic 9c40fc2f2c74aa95836d848d93b01be5e1cbc575 chore: map QQBot fix contributor 0f8603c571beb6c944bcdb9fa2d45f8f85aaa750 test(gateway): regression: every adapter.connect() must accept is_reconnect 276542c729c10ff9d093760897f4c2d1256a79ce fix(qqbot): add is_reconnect param to QQAdapter.connect for gateway reconnect compat da9e9bc876a97194e474ef75db85c4cd0d5ae863 feat(approvals): add per-tool policy rules 56875f4078d95279339c8a83f65055da722468d4 fix(config): persist last-known-good configuration ac91821bbc4f9d8cc5ce977a5313d76de12354dd feat(delegation): persist background completions 9062bae5822138841146245386f6014f06cc8581 feat(gateway): persist outbound delivery outcomes e16e285e83d7524a2e1a28c3eefaf1a1dd4a6375 fix(api): keep live runs tracked past stream ttl 3520a30978264300af5a0a2950405f0cf675b1ca fix(agent): sanitize tool results before observers 57da1e1cee940b9bdb7372972c44a37ab0407872 feat(api): add reconnectable run event streams ea39cf04d0b6c240a150bfe13142289fe22eb2e0 fix(skills): install referenced bundle files with scan provenance 931d33bf504e6915a55093ad0e4e9a5f5fdadbfb feat(gateway): add authenticated runtime readiness checks a7f65e3bcd937cd095ba599ab5927af2093a0d95 fix(gateway): tolerate scalar gateway config block 50c66b2f8ef488cdcb9afb27922c41766c69398d fix(gateway): ignore malformed config sections 46613071e4bf509db141b63930229287d036effa fix(config): widen empty-section guard to _deep_merge in load_config bdecf0ab944d00da7e05641dfb8e528b29bd1174 fix(cli): ignore empty config sections bd16395255024e7114f23b8b4274b5b4d788eea0 chore: add AlexFucuson9 to AUTHOR_MAP (PR #61347 salvage) c75789f2453cb1e2f98bb305dec2ae29a0922581 test: regression coverage for header reapplication on model switch 0a4b4d6df52f9a7ba9ae5914c5035b171d129f47 fix(agent): reapply provider headers after model switch a801046669657f117dfb3f3ce7f12ad94dfa87b2 fix(memory): resolve() the shared-connection registry key; symlink test b5226caff8eeca575ea64a4c68dee5dc84b1e50f fix(memory): share one SQLite connection per holographic store database 79f12748022817a7c4f3fee747e45e9e6979214a chore: AUTHOR_MAP entry for AlexFucuson9 (PR #61209 salvage) 9cbac6418b933e6b3a0850d4f48149604ecab95d test(gateway): pin in-place compaction skipping the destructive rewrite 549b87c9aa53fa091d65309b5e0861bf61bfc740 fix(gateway): prevent hygiene compression from destroying archived transcript b298fd5db1577ab93307d44188f7eae5573a15ea test(cli): deflake --accept-hooks position test — one driver, one import (#61734) 10c0d9b2a715100aee640cb4162fbdf73f896bd0 fix(cron): contain any per-job exception in the due scan; harden as a class 26f040ef202d4b4d054def52473e44c9c44478d9 fix(cron): malformed next_run_at no longer freezes the scheduler 8e2ce43525cfd1371f68443ef7e68f6bf6871d6a fix(cron): non-dict schedule no longer freezes the whole scheduler c71d19c0ead61b7f93535c4d87b8da0f35d111f5 fix(cron): id-less job no longer freezes the whole scheduler d2e64fcb89cd180c6657bbe60723980fc5498778 fix(cli): widen --yolo env guarantee to the _prepare_agent_startup chokepoint + AUTHOR_MAP 501616e8e64191eeced054cd031b041e94e302d4 fix(cli): set HERMES_YOLO_MODE before plugin discovery at startup 1f57ed2a53f0ab4eec515c8a6abf44dc1e52fdaa fix(export): escape tool-call name in HTML session export a23d5073fbd2efa133f96fd60ad172799de062e7 fix(agent): stop switch_model from pairing new provider with stale base_url fe25806a6bfa8318d56a3e1a4065abf04d619fb2 fix(config): retain last-known-good config when config.yaml fails to parse (#60591) 8e3f9537db21b49ebe796f7b5a6ff489028fe1fb Merge pull request #61649 from NousResearch/bb/kanban-worker-headless b06e2f846cf6631e9f679d81d66be3c5421ea355 fix(kanban): no-TTY gate in _wants_tui_early — the actual worker-crash fix 77db9d6bf384c71e145c556286386887dd3e5a27 fix(kanban): explicit re-queue bypasses the recent-success respawn guard aea570db4e21c2012efce042b790980fb6a1978d fix(kanban): clear failure/crash diagnostics while a retry is in flight e87c495dc2d827dbc9bc1df86f4e75673e11ed24 fix(kanban): spawn workers headless — TUI can never eat a worker run 5829fe1378eb1083c77c02198016f052b886abb9 fix(kanban): failure diagnostics exempt done/archived tasks b45f5bef163b69b30d32e9000c117669c25064b6 fix(desktop): render declared settings rows when backend schema omits them 111544d544d6cf6efed9875e116f2daeb76a1211 test(codex-picker): raise max_models so count invariant survives catalog growth 4af484d3ddf305427822d42aa8ddbf3cb3b50fe3 feat(openai): complete gpt-5.6 E2E — codex catalog + 272K compaction auto-raise 5da7b23d6fdb8cd482fa223e5f887305828d8c0a chore(catalog): regenerate model-catalog.json from source 7efee32868ecd96f2bc8fb00cfea3fd77207450d pro variants a3828a94d071a44b0c9e97a2923890f84c8179c5 feat(openai): cover gpt-5.6 -pro variants (PR #61587 complement) db117af4785f79d0adfafcea4d75ee556f4006dd review fixes: openai-api pricing route normalization, GA pricing_version, invariant tests bd767b574be4c65036d2bef2e74b189704d39cad feat(openai): complete gpt-5.6 registration — context, codex catalog, native picker, pricing cd16d9aec3d3537790ee0ba7c45eeb86aaf75676 fix(cli): hermes model treats local Ollama as keyless 83f88909ef1d0e6b6f1437a8c4a8a16a523384f8 feat(desktop): first-class local Ollama provider with detection, model management, and capability-aware picking 3a1a3c7e6727a31df89b61b27bad313430bdac45 add 5.6 (#61578) daedf4f627c73859974e587783b7cef8ce80e19a chore: AUTHOR_MAP entry for embwl0x (PR #60810 salvage) d23990f527cbd33b528e0e107cfb3449e2f1a3fe fix(gateway): offload channel directory session scans 73b611ad19720d70308dad6b0fb64648aaadc216 Merge pull request #61415 from kshitijk4poor/fix/media-tag-caption 709da844b5b62264d423d25dd53e57f5d593634e feat(gateway): attach MEDIA: caption to the media bubble on standalone sends cbdf87b21fed78e0660da93e87c534929d9aa130 fix: return per-call copies from the skill-discovery cache 9e9608ecc3047ae68f26eef0c1c826f00e9212d2 fix: harden skill-discovery cache signature + TTL 5a4249146fc49bc27d31b227c0dbfd7f26c97a78 perf(skills): cache skill discovery results by directory mtime 411d59976410bc6eabcd4d59b6f688de3e879f05 test: fold deepseek-v4 cases into canonical reasoning-floor test, drop duplicate file 1e16120603b4bc34114f87c0d278a7805241087c fix(reasoning): add deepseek-v4-flash and deepseek-v4-pro to reasoning timeout floor 3ed7c8a8da6dc9eeb15b07a167c147121880dd1e Merge pull request #61388 from kshitijk4poor/fix/dashboard-validate-web-dist cb79518d4fbe1fc918f6833c3f955442dd57490f Merge pull request #61385 from kshitijk4poor/fix/dashboard-residual-cron-event-loop-io f5bc18f9011745b7fb0bb0e72c7b5b756ffd686f fix: write expanded HERMES_WEB_DIST back for web_server's raw read e7648d59129ab1709ed111eca3b1d5f11408adac test: restore gemma-3-27b to keep-extra_content coverage 63ddd022a203e48ba0e4617f41c2661f3415e69e refactor(salvage): scope #40632 to the two live copy-on-write sites 724ab9098dfbf6bb4ebbf5de5733381dc64257b9 perf: avoid broad message prep deepcopies 4ed910c6894f602cf7b9b4533226dedda4d2db3d fix(cli): mock systemd preflight in gateway service tests for non-systemd environments (#15187) d928017742d5cf242998e1667c994a23df85d80e fix(dashboard): validate HERMES_WEB_DIST before startup 8cfada0df4e7034bc86e47efbbdeb79578d754a2 test(dashboard): pin cron fire + blueprint handlers off the event loop 74609f926c353129c73bfc3704f0deed152733fa fix(dashboard): run residual cron profile I/O off the event loop 1d689e19203281228878ac6770d4a6700d4ae385 fix(caching): use canonical Kimi-family matcher in cache policy fbbb8415c32730a3006db69284bf55f75aaef972 test(caching): pin Kimi/Moonshot OpenRouter cache policy (#25970) 750c1310a641be10ae33b74d41256a76195a25b1 fix(caching): include Kimi/Moonshot in OpenRouter prompt cache policy (#25970) f556edc10d9b1b41ff3ea8807105155910ab2087 fix(model_metadata): address Phase-2 review findings on probe caches 20cb385328f19ca8cddd5b3e4002bb4b77d373b6 fix(model_metadata): widen localhost->IPv4 rewrite to all sibling probe sites 040e30aa722a64d9c4a9fc4f6316135af2290bab perf(model_metadata): cache ollama /api/show probe + normalize context-cache keys c454d32feb266367bc0c30e3711ee19786e5731e fix(model_tools): honor model.context_length to skip OpenRouter probe on banner 9a18a2de12163482e59866dc3f4ed12a21926159 fix(agent): probe localhost via IPv4 for LM Studio detection 91ece5c2fc9dc6ef60878cca5c7dab51e40708b0 perf(model-metadata): resolve localhost to IPv4 in detect_local_server_type c889941916e6e96bc3c3fe5b9264f9e88a84735b fix(model_metadata): cache detect_local_server_type result for process lifetime 6f42bf344cf51bf99b237f7001f9e18daf5a81c6 fix(dashboard): harden PTY reconnect race, wedged-connect recovery, IME guard 3e88cae2432ef8235378254f6792c2931ccafd79 fix(dashboard): harden PTY input tracker against escape sequences 0b2b08d54c7bdec42fc29f4a9b1c21adb9add06c fix(dashboard): recover mobile chat reconnect a4ba8c9640c00f735a2e16bedf14c09e291f8100 chore: map poowis2011@hotmail.com → Umi4Life for PR #47377 salvage 3fe7f6d27a005a0a75644c1d1d42cef8c8750c5f fix: preserve fallback switch notice on successful fallback d54a8f7079e42505eaa0dfbecf651f50bfd6d574 refactor(gateway): funnel HERMES_HOME sync through a single chokepoint 8f18f6c6952371055ac78394a136e6cd911d3742 test(gateway): cover sudo system-unit refresh adopting HERMES_HOME cbf685356d99f470adda32731e4c1942e088b0ae fix(gateway): sync HERMES_HOME before refreshing system systemd units 55dbc3ffb5e42ab1ba76c8eb77ffec59a6e63e8f fix(model_metadata): bound the tools-token estimate cache f4d5cfd0fdebfd6a8a242c102750a77a38a4d6c8 test(model_metadata): cache tools schema token estimate 32a0f9e17a570c046f89887ac75e3b3b46490d29 fix(model_metadata): avoid str(tools) token estimate stalls 473407174bf304a083df166e40173503ea9eee89 test(dashboard): assert server still gates OAuth endpoints without cookie ad8f1030489afbd6fad7fd9b03e820aad437c13e i18n(dashboard): translate OAuth copy-code strings in all locales 3e24b16f566045399012bc1185fe0cdb6e1a1be9 fix(dashboard): support mobile OAuth login 88a58ff1355eabe468b4dcd4e152a596932632e6 Merge pull request #61277 from NousResearch/bb/fix-desktop-tsx-electron40 bf913abc2efcfb6379296007db46e6f0e3dc1738 fix(desktop): stop using tsx to boot Electron main in dev 513dba42e6a066fd55edd7833bf807afee8da637 chore(models): drop x-ai/grok-4.3 from OpenRouter/Nous curated lists in favor of grok-4.5 (#61097) cc01bcd1dac18b4e47f5a51a1d7c167a276258e7 docs: refreshed billing tab screenshots (usage-bar polish) 56a8e81d33a524f0ba0d68b6d54c8786ed283fb8 cleanup(desktop): `npm run fix` for fmtting 7a65530fa5b3a1795c4e24944ef7a6e7c4ff98ac fix(js): set @types/node to node 22, what's required in "engines" 39d09453f95e8aefc0c97e5d9b30ff341cae9ed8 feat(desktop): ts-ify everything fac85518fc8c6a5095f05184016f21294934abb1 Merge pull request #61147 from NousResearch/bb/desktop-tool-window-merge 6d6521025297493c5811d448689e5e9c0c75b7c2 feat(desktop): group tool calls across text-less assistant messages e0ed5dc9ed93aaa2d88ace82cf109fe0b33e4770 refactor: address Phase-2 review findings on /new boundary handoff d8bc4f242f6e127a330afedb2ecdf210f3946316 fix: serialize /new end→switch boundary on the memory manager worker 2a293319b17b1cbd6c3d618f696b5a5e3aae7c71 fix: run CLI new-session memory flush off-thread 449706cb5219257e2028ace22e7870cbb2bf3760 chore: add dexhunter to AUTHOR_MAP (PR #60339 salvage) e21ba912210ee6b974c46bd2aae42c082da4fdfb perf(skills): speed up snapshot prompt builds 0a01b2087d0c0bb11bb7ed650b8de3e6b5205856 fix(gateway): harden fallback-chain refresh from review findings e721ad89e30dbed8c3affaa2b01ff790e3da3d27 test(gateway): cover fallback_providers reload for live sessions be1346cf2a0edb6e0f64bee3f5ce10d470e4fb33 fix(gateway): reload fallback_providers on live agent create/reuse 74e28f7d10b587630ec41d97a3b8a963fc4798cc style(tests): merge import blocks in test_summarize_api_error 1792a3aa7261d05e8eb926a31713c9f87bacb8c2 chore: add gauravsaxena1997 to AUTHOR_MAP (PR #59868 salvage) 0569a637d0376e7abcf060c50f25ad9e7c31efaf fix(agent): guard response.text access in _summarize_api_error against httpx.ResponseNotRead 31e39dec84cbce925fb99cef9dccb739e2f92474 test: expect compact_rows in the read-only status-count fake 7a25017a00225359407a33b32c3252087c513925 test: accept compact_rows kwarg in tui_gateway session fakes 7570bb4ad4904afade713a9cd6950b2474581dca fix: offset-without-limit was silently ignored in get_messages 4f220fc88b82897e1404e189e1f06557478e8f21 fix: follow-up for salvaged #60347/#43653/#47437 22eb1af23a89abf24e388dc9ed1dd262d9ca26d1 perf(state): add compact_rows to skip system_prompt blob in session list queries 4df16c429bca248095a92d707ddaf4c1ec9ed2a2 Refresh on upstream/main: resolve conflicts (no behavior change) 0d5549a945d7ba320c14415840058710be0a9d3b fix(api): add pagination to GET /api/sessions/{id}/messages c95cf313c9c33abc1485449cd1c2b74e86129740 test: patch the cached PID probe name in profile-unification status tests 664878b0baa0c99ce58a40a13e09140df6f9f261 fix: guard /api/status active count against missing state.db 1e2ad17afd50fd21d55e8e5980f35f376db15a14 fix: descendant CTE must dedup (UNION) to survive parent-chain cycles 206c0423920759f1c302e949051ed2ac50305af4 chore: AUTHOR_MAP entries for salvaged contributors (#53511/#53966/#39140) 24d5bda1ef2ff1cef51319c0506c9f385081e9e0 fix(dashboard): run GET /api/sessions session-DB read off the event loop d7e4d94e2fa45d921ad70727bf932affe3f10275 perf(dashboard): recursive-CTE descendant lookup in _session_latest_descendant 492be28e5061199413177eec66ca0c2baaba0ea3 fix(web): bound dashboard action log tails 7d0ddbb2ff50419577d7671ad21ae0449ec9c32b fix(dashboard): cache gateway PID status probes 49fa04a2356dfa10201a4e78bc0d9dc251588797 🐛 fix(dashboard): use managed cron threadpool 346e5673de8dd2e2ccc11817c81323dbb16e78f2 🐛 fix(dashboard): offload cron profile scans 9a4341aa90ececee7027401974bfcab474be5db1 fix(dashboard): keep status responsive when session db locks 4d611ba0c3b1f09b8092674a2227254ce8e9d89c chore: AUTHOR_MAP entry for nullptr0807 (PR #60956 salvage) d6a275b735d7bd90472a193f35bc11888fa007ef fix(gateway): compact hygiene transcripts in place 62ada5175c2ad6e4aa55986286ab8f06804cfabc feat(xai): add grok-4.5 (GA) to model catalog, context lengths, and reasoning-effort allowlist (#60887) 17f7e5878ea48f9b5bac2d769fd9be028adf4a12 docs: redact card last4 in billing PR screenshots 1508ece2d98e018b68f550731741589381d0739f Merge origin/main: unify declared-schema and instance-schema provider config 20435c57d37431f3786a5f3f35022746e34fdbf5 docs: screenshots for desktop billing tab PR aabfedcac03c0615578c798053299b73aad4e4f7 docs(webhook): complete filters + route-scripts coverage across doc surfaces (#60983) 76381e2a8e3a21fbbd0a192b4b5f7356a7ca47b8 fix(compression): stop compaction thrash — 75% trigger floor under 512K, no summary output cap, reasoning-trace exclusion (#60989) 8e734810dfcb4f19eac2f442cb75b3962dfec728 fix(desktop): continue the selected stored session instead of minting a new one (#55578) (#60874) ae5e39005bde8deb989c2dda63959cce60bb4622 fix(gateway): run webhook route scripts off the event loop + AUTHOR_MAP entry 0cf2e39c411cfe99aff477b61113992f297cd6d0 feat(gateway): add webhook payload filters 75efd73961a88a531276d0e2e1cd30d1ec18019e fix(gateway): never resurrect ended sessions for delegation completions; /new severs in-flight delegations d39c62409b5f00da6f7bd31dd3fb437d8c2daad6 fix(delegate): pin async completion to spawning parent session (#57498) b848fcbf11dfc9d177655f8a5ba0790cd574fe79 feat(Yuanbao) optimizes media resource processing speed: parallel download 63c4100fe6184edc42d3d8673cfc042f4ea42013 perf(yuanbao): bounded-concurrency inbound media resolve 58e1647b498291bdd28563714513292406d6a876 test(cli): update FakeCLI._print_exit_summary for new clear_screen kwarg efb226b586a573da8c759e54b91d998bc81d96c8 fix(cli): preserve chat -q answer by gating exit-summary screen clear (#53009) beafc55c7d99d87d6165665a19339dea774dec8b fix(desktop): dismiss stale prompt overlays e10c8eba00b05a1d1c1b93ebbbe5b0ddb38c946d fix(whatsapp): use windows_detach_popen_kwargs to prevent console window flash on Windows 7e3986ae686977dd4a4dc6bb3080f0ce2fadb588 fix(tui): route /compress and /compact past the slash worker to command.dispatch c0fbee990e90656fc0fe49d5c237b97958499acc fix(desktop): register /compress command in TUI gateway dispatch so Desktop can invoke it 67d64124c3ccf2c7a3ce908f4fcc9706376cfab6 feat(desktop): autosave the inline provider panel, drop its Save button 65372395eb2975152727013ad1df6977745f52f4 fix(delegation): positive-proof ownership for the post-turn drain f75f3cd713995f7a242665fbcc80c8d34ba71957 fix(delegation): route async delegate_task results back to originating session 5057f03bfdce539b3a2ed28b84920586f9c54338 docs(i18n): align translated CONTRIBUTING files with pyproject Python range (3.11-3.13) ee0b54e16cbbd1ca96d4a1facdcef683c1608696 docs(i18n): align translated CONTRIBUTING files with pyproject Python range (3.11-3.13) b64b802131ff6db8127d275f242fb0eb09c7af48 feat(models): swap curated Tencent Hy3 Preview for GA tencent/hy3, drop owl-alpha (#60943) 4b27be11148011ca5fba5c9439e1f5490bedde3f fix(delegation): fail-closed orphan handling + session-scoped delegation lifecycle aab351bfa6c66381bda6c3a7b61dcd4e65f5c5e5 fix(delegation): route async results to origin session c7657974aa2fdb3316c991933814cfbfbc0d2f4e feat(skills-hub): unify both science skill repos under one 'science' bucket 67efe9b10de2097b3709acdf11f7cb85361f9a23 fix(agent): wrap session_search results as untrusted content ac6dd598a4b8a76c044f5b4cde4ca354845c9f45 fix(agent): tag desktop chat sessions as desktop 465cbe8bb51dc3c812210eef535f4d79c5a7d276 test(tools): add unit tests for skill_gist 5413c42f2cb8e9421b4ad1b5696ca3ff2a6f1bcb chore: add SiteupAgencia to AUTHOR_MAP for #57435 salvage 98804dbeef91c5f1ef517817c8f81dd2aeec523e fix(tui_gateway): back off notification poller when session is busy 7ecc822e1165f5f4d274075a40066a8ab04214d0 fix(cron): stop the ticker from stalling forever on a wedged jobs lock (#60703) (#60855) 1192f29450f1dc440d44b094817977f00475643c fix: Z.AI endpoint persist failure must not break URL resolution 6eeed3f1e8847a352ae1090450a71f0975a3d3a9 fix: don't flip active_provider when caching Z.AI probe result c75e1d1b876086bbf13c29048424bf35416b991e chore: add veradim to AUTHOR_MAP for PR #41201 salvage 832c5f9bc9018b5540c13cbc35805cc49ce8b073 Fix slow Z.AI startup by caching auto-detected endpoint to disk 1cd00de8a77c847f1c2d2f40c0821b6f730e9b48 feat(skills): add mcp-oauth-remote-gateway skill 8eac52054bf33f4362552ace09dcca5b4e1b47dc fix(desktop): keep configured MoA presets in model picker f64e4f4f5768c18a53f44890747653bafcab2796 feat(gateway): generic OIDC client-credentials relay provisioning (NAS-free) (#60730) 48788032da2e88f0a010791a61667539272df65b fix(tui): derive gateway-owned sources from the Platform enum, not a hardcoded list f5ef7ee9da66cff764296ed9da9c69b70105a90f fix(tui): prevent ws_orphan_reap from ending gateway-originated sessions ecc6725855280b4da7181c12bf930d95c7ae9a8d fix(gateway,cron): reconcile #60612 + #60631 onto one drain surface 8a573bb6e7d595efb6f2b94d7645c45a65d49469 fix(cron): stop interrupted jobs from delivering their pre-kill output 24e9ed73c2f5dd2667329d8c0a88c5ccec42936a fix(gateway,cron): make shutdown drain visible to in-flight cron work e6077af2798fd9cdefc0ff0b554cb5b11b27e769 test(gateway): cover cron drain during gateway shutdown (#60432) 862aee49564cacbbe9e397adf40f7f87cb575f16 fix(gateway): drain in-flight cron jobs before shutdown tool kill a208b7eeb44f0b27471c9ddec8d9c1947060cbb8 chore: add AUTHOR_MAP entry for neoguyverx (PR #60526 salvage) 6695640c1ddbd1f25ec7a4352792668731c23f13 fix(tools): make the YAML write gate syntax-only so multi-doc/tagged YAML isn't refused 2e1982f83d2b912a0eda9ec6e224cc33b863e915 Fail closed on invalid JSON/YAML/TOML writes instead of writing then reporting a212b37eff6ab8b6f106ada3022842847d5cb64a fix(gateway): fall back to default home when routed profile does not exist 4d7f8ade3e586d83003d61be76e909f364040fba feat(install): warn pip/Homebrew installs are unsupported (CLI, TUI, desktop) (#57225) 9de9c25f620ff7f1ce0fd5457d596052d5159596 chore: release v0.18.2 (2026.7.7.2) (#60651) c30c9753b6efc08e154d66b6501a444739df3859 fix(whatsapp): unpin Baileys from git commit, use published 7.0.0-rc13 (#60643) f9eca7e15f1c2bfe5194aae5aa489af53c0a1a23 chore: release v0.18.1 (2026.7.7) (#60595) 4f620a0bbc11f41f241145a8dad3f70989507559 Add WhatsApp dashboard pairing flow 6015ee5d2add69e69c6964147b3fe35fd6d1b643 fix: pass profile-scoped SessionDB to _session_latest_descendant in dashboard chat PTY resume 543f069093ba7f2c763f4e22139e93a275f364ec Fix dashboard chat model profile scoping 75de0057bcb6f12289edf678599a7b3117cfa711 feat(gateway): GATEWAY_MULTIPLEX_PROFILES env override for multiplex flag (#60589) d9a4b5a5e5c35b0a9ab050814c47346997f87afd fix: validate memory provider names before filesystem lookup and setup commands 4b184cbe5456837a36bfec3df10db823debe023e Add dashboard memory provider switching 4e4a69cbf7c3c92f8965552bc26afaa50248ee78 feat(relay): carry routed profile from the connector wire source (#60586) 8d66e78844f4be97b1ead2cb15f33d2076fb0ee0 feat(dashboard): expose profile names + gateway_mode on gated /api/status (#60585) 5633fa19b879459119c0d19fd433c452e6ef26a4 fix(dashboard): advertise truecolor to the embedded chat TUI (#60576) bf7639138e0292d4d44e43faed22b42423d5c358 Use read-only config loader and honor HERMES_IGNORE_USER_CONFIG in delegation config 0263f1d12e8b4671b53c405dd9b29d58fcc67677 Fix delegation config precedence c83f85abe69e1dcbc9ab7c78a7d479a1d0252b51 revert(desktop): remove the BETA gate — ship Hermes Cloud selector by default 6ca3d701fcd9ae3ed682cb8a654dc2605a09fc48 fix(gateway): only session-discover channel targets for connected platforms (#60574) db9e3e4ef96bd293ea52af72a94b60556724d3dd docs(discord): troubleshoot silent fail-closed denials 3e7ade418d030d241bda4c6352ff52409f4582ec fix(discord): explain fail-closed allowlist default c3808cfc1409e20e2ee0422f1428436465bbda6d fix(discord): honor pairing grants for message auth beffeea053787cabec5cb67fa0d8dfd2381d4502 feat(skills-hub): add K-Dense scientific-agent-skills as a default community tap 551f00109de824f147e0826260f649b3fdc3f9e7 docs(sessions): unify export docs under one overview section (#60554) 8a726e91ba2b56974498cc731cc8b51c95af3b80 fix(tools): enable platform-native toolsets when their composite is explicitly configured (#35527) b062083d0af8b1c1d893a7f950c7f93a046b8a35 feat(dashboard): report profile + gateway topology in /api/status (#60537) 838d50495f15713be8825615a6e713a3e2f3105d fix(mcp): guard POSIX-only kill primitives in stdio watchdog for the Windows footgun linter 2d4fd1d52f4884f3db60e5f662b5d057ddf301fc test(mcp): unblock recycle-reconnect test from the parked self-probe wait a6203839b4ed3c344e188e811fab4e8c1c483b84 docs(mcp): document idle_timeout_seconds / max_lifetime_seconds recycle keys + handshake-bound note bae3954f4f7d1e4609e6128c45198e3a3bc42ca7 chore(release): map rainbowgore + thestudionorth in AUTHOR_MAP for MCP leak salvages ea0b42c43ac35027663035deabafb2bc41878627 Handle minimal MCP server fakes 6c731fe591455e54373680b98502835d1d1577c2 Recycle idle MCP stdio servers 86c5febdd1d31200c6fa982c2e98eb27c116e876 fix(mcp): watchdog wrap after OSV preflight + forward SIGTERM to child group 5089c84dbf852a43ac879217d271ce3b8df9a3b6 fix(mcp): reap orphaned stdio MCP children on ungraceful parent death 4638f3b433b9e7d498912c0a99226ec737039825 fix(mcp): widen #59349 handshake bound to HTTP transports + cancel abandoned start() task 1f6836cd81aeadeae4c19d184c8925bf363ef497 fix(mcp): bound stdio initialize handshake to stop subprocess/FD leak 743c116fb2486d26e2b26a356b0ffe6838b206a2 fix(mcp): unify reconnect orphan reaping + move off the event loop f99e9f0d271e7691aa9a34ce13c8e5fa09c1003d fix(mcp): reap stdio orphans before reconnect 086596ca2b988ca42fd57a5a674b7a00d37998be fix(mcp): reap orphaned subprocesses before spawning new ones on retry 79f4f78fa44369aa9a45eddcbf9534857f029ee0 feat(chat): persist attach token, reconnect on transient close c3d2be073a10ee2ed44cf8202361120d0531371e feat(pty): periodic reaper wired into dashboard lifespan e10e4bca825fff6b3c690857ad18c56aabaf1a5f feat(chat): reattach /api/pty sessions via ?attach= token 41166bbe0d51cf9c5ee5ae4b9c773f2f90af9328 feat(pty): PtySessionRegistry with reap + capacity e5ac169c2877966689288f067b49c111d5b96380 feat(pty): PtySession drain/attach/detach with EOF close 4410 0ecfbc989005cb3eccdbb8351a2510ac7001450d feat(pty): RingBuffer for keep-alive output capture d5a5ea8640106b37705f4ce188553e9231a41409 chore: add doncazper to AUTHOR_MAP 117f49b7d46b77685205311ae2149c2e2de6256d fix(approval): wire gateway notify round-trip into the plugin escalation gate 36308f0667ae141546a5f4c8dcaee346cc3f0f3c feat(plugins): pass approve rule keys to approval gate f304f412665b6b7a3af766879912288e02444161 fix: harden explicit-provider gate for stale env-seeded pool entries + non-desktop picker opt-ins a0b14a31267db9a22c15d43ccc7408e4013a75f5 chore: map Ronald contributor email 37a4cf9000ce8e0da6017cbe8bb4a2e8617a7737 fix: limit desktop model pickers to explicit providers 0e04d14209d944a3e99aa3ae934628f3048257c7 feat(sessions): trace export + HF upload via 'sessions export --format trace' (#60507) 5e51b123f32b7f6a51fbd5759e89ba5146ce4003 feat(mem0): add self-hosted mode to the setup wizard b4289200ba93fad96a2e1e87270e036613b14293 fix(web-server): close OAuth token TOCTOU by writing 0o600 atomically b1500af27738c80aebe0d615325ad39e86a1807f fix: restore cli-config.yaml.example from main (stale-branch version leaked into salvage) 94b4ac118aa1244f456c3b6d491a450157af67ba chore: add alex107ivanov to AUTHOR_MAP e0176cbd47a186d3117282a14d8e36529023b000 feat(discord): optionally mention approval owners on exec prompts f76899facf8fc6d88da429adcf6f65be0494597e feat(sessions): wire html + prompt-only formats into 'sessions export' b172e03c200eef4a452cb38e7b83c0c6b26c88f0 feat(cli): filter internal session_meta messages from HTML export ab07e0652159ddad07f31ad998af036213a5f53f style(export): restore width: 0 for multi-session flex layout 4bd6fce1c1f70afb0fb2f75d7312e911d00b3c99 fix(cli): fix layout width bug and ensure system prompt header is used 271130af56273620537a8461714c60cc00a2da2c feat(cli): expand system prompt by default in HTML export a730156626b99af3af40284c8f5ec6a0f8e63d1b feat(cli): redesign system prompt display as dedicated header section 49dd0b1cb5f9e382097bc14f3b05529aeb2a2b11 feat(cli): include system prompts in HTML export a80e5e72bc2e71cb37a5b7e565165aeaea10aba2 feat(cli): add standalone HTML session export with sidebar navigation b598f8e69b05b0b77b2ee286cfaa30d4f101a624 feat: add prompt-only session export 9a322726ae89e2f242f8f20fb8f854b7867ba7a0 fix(mem0): prune dead get_all, wire rerank config default, warn on MEM0_HOST env override 53edf6f983e9093864e86b9c96186a33b4e4f369 fix(mem0): make prompt label + platform setup honor host routing precedence 2a14205ff43b81be569427c58dc4191ea33fab52 feat(mem0): self-hosted dashboard backend + recall tuning (salvage #55614) b2d6a512d5778b6fdf2445c3d674c63060d7b109 fix: normalize string stop + surface dropped stream/tool_choice in Converse shim e9da6298009e592cca1f6fec4f17ca1c82554c77 test(bedrock): cover auxiliary Converse routing for non-Claude models fa651375befc3352d43efddf481e480553d5312a fix(bedrock): route non-Claude auxiliary models through Converse API d43863f005484705e1941afcbd1310995725768f fix: widen stale circuit breaker to non-streaming path + all provider-swap resets 437052f03951f5c98757c7bcd01fb524995f39c6 docs: document HERMES_STREAM_STALE_GIVEUP alongside sibling stream knobs 2985d16be06ea5021f3d3a7d8e0aff724f11c530 fix: reset stream-stale breaker on model switch and fallback activation 985e19c110f19e1131b52f78c6505e2a06837127 fix(agent): add cross-turn stream-stale circuit breaker (#58962) ee66ff27909607c75ad30d5eb1a4e2d944ed6a27 chore(desktop): drop PR screenshot assets from tree 8ce3c2f99152e20be26abe604c57929fb8496dc7 feat(desktop): add UI scale setting to appearance settings 4c3a388cba9608f8cda0cc604e6c557adb8b298c fix(discord): widen expired-defer handling to /thread slash command b9d9b8aad685530e078a368a7d364b4918fd3042 fix(discord): handle expired slash defer interactions acfefa4fdacc8dfc16aed3766c1f7e2db8eda76b feat(sessions): full prune-filter set + --redact on sessions export 51dd5695ec30773204317028837bcafdeab2e3da docs(i18n): add zh-Hans docs for Markdown/QMD session export f3c27e30ebbd555e6c256f346492ab5faf0558e6 refactor(sessions): fold Markdown/QMD export into 'sessions export --format' 91885a32b3f1758a19c4b488e57d86cb42659f55 feat(sessions): export sessions to markdown 2e42bb2da558706a592e3711ba84a6352ccca45d Merge pull request #60448 from kshitijk4poor/chore/59607-comment-precision 4ca61869cba0514e29853b46071d2701c6b2ca12 docs: sharpen bypass comment per review 60a79f0a5c21aae7f3f2259de190b466d2784bfe feat(skills): add optional Pencil (pencil.dev) design skill 7faacb6dab090ce54a2ed4a8c97200e061543763 fix(desktop): drop panel tint, cap info tooltip width 1c473bc6a6a0f62e4c264fa0c59ce58606100301 Merge pull request #60291 from HexLab98/fix/windows-installer-node-path-npm-lifecycle a182ddbf9f8cb817be2c96238fb7e845488dfc22 feat(memory): per-field info tooltips + name the profile in the full-config modal 8333b0448313fda157484914a3ecc8d222599e8a fix(desktop): solid background wells for provider config inputs 1ba70a6f70c4b5d67478af4598ba76f32d16b885 fix(desktop): inline error + retry for failed panel loads, calmer surfaces 220e7ca274e039a34130bea8aa6affdb843064ec refactor(honcho): list per-session first among session strategies d33becd877377601f99bd4b67d3971c012c1deb9 fix(gateway): demote PRIORITY-path interrupt to queue during compression (#56391) 35099685beb1e3d0784df7207c3b882e88afca4a feat(memory): provider actions extension point 76c063b3d979bbea638d261a7f7511ec0a16f042 fix(memory): profile-scope the provider config endpoints 8ff162fb2de05b86ee003a7fc13786dd2adadea1 test(installer): guard Ensure-NodeExeOnPath wiring in install.ps1 2bc6e1a74b5848332c606d1b20c97aa7f374947d fix(installer): put node.exe on PATH for Windows npm lifecycle scripts 009b42d008b81c18af39414dded9ecdf06082d93 fix(discord): mirror all interactive prompt payloads into message content 2acbdd1848b7d48e1471ce39fc296f12300824d4 fix(discord): include approval command in message content 3c63ed3a3c81fd3d924128f4be51df7e7c21cd06 chore: add vampyren to AUTHOR_MAP (PR #59830 salvage) cc0aa18fe718967bc5032271f69d3c2fdd85a5b9 feat(kanban): add grab-to-pan board scrolling afb5808d8c9e0418ab14107a1c1f8b5598d6489b feat(discord): make interactive view timeout configurable (#60230) ef3bf57117296f191dfa847ba21bbbd01592377a chore(desktop): rename Hermes Cloud beta gate env var BETA -> HERMESCLOUD_BETA 09f96b5f56f5a99bd4633ed35c4d3fb52cf7aef2 fix(desktop): reliably persist cloud org, unselect cloud on mode switch, keep Change-org button after restore 0a60dca5b9386933d22db81c5eb7db52ec238c0c feat(desktop): gate the Hermes Cloud gateway selector behind a BETA env flag 254044c1e37ba4893eca70c6a7a68d42c5a27b4b feat(desktop): persist the selected Hermes Cloud org + instance; restore on reopen f99353c5494f9b62e8df178b2ec33fdce48bd44b feat(desktop): linkify 'Nous portal' in the cloud no-agents message cd658937d466e3fd990f3c781b73384e6e8e356a fix(desktop): make the per-agent cloud cascade actually silent (load protected root, not /login) b52aea15413dee808c31206f6f758db3c7508c14 fix(desktop): Hermes Cloud sign-in uses Privy session + multi-org org picker 5874e59d9c1a34695a4186c4832a0f2e730cf5e0 feat(desktop): Hermes Cloud mode card + agent picker in Gateway settings 382fb5cae9ff109a6da6454320a98f3f3def719f feat(desktop): cloud connection mode plumbing — widen mode, portal login, discovery, silent cascade 685f527d6b4fd7938248a9852a8d7104e787ea49 chore: add andrewhomeyer to AUTHOR_MAP (co-author on snapshot perms salvage) a1e6ea7d716c3a31ccad3f7888fd181fa3ea6734 fix(tools): keep shell snapshots owner-only 4f6313eadc62685f57ea6f24c9c1bbb41bbebdc0 test(tui): accept profile_home kwarg in _FakeWorker doubles c6a3d412d462df8cc33080a873ec67eba1f3111d fix(skills): widen call-time skills-dir resolution to skill_manager_tool 4a99571d54e0e0ca0dddd7918ba32446ac115362 fix(tui): pass profile_home to slash_worker subprocess for profile-local skill discovery (#40677) f8723c47818e84df7d4514228381be5b0509b7f3 fix(skills): resolve skills dir from active profile 491689784e6d072d22ee5c2b491798b99ba3eb92 feat: add uninstall dry-run mode 1deeaf71abcf84d9f5d4d8255abfd5654a0ed2e1 fix(discord): truncate thread titles by UTF-16 units + AUTHOR_MAP 0d9ed9214d3682f4d274b8d8e2455261217ebce5 Add semantic titles for Discord auto-threads 9c272a306eafd074b51520b5468dc816514e6d19 feat(gateway): default session auto-reset to off (mode: none) (#60194) b899ffd1ea846753b2fa9a28fe76b28191a45e90 test(e2e): stub reset-notice session info to deflake test_new_resets_session (#60175) 9420f1acb64d709ee5f827c3730a49605878c2b2 test(google_meet): assert ladder-based dependency install instead of bespoke pip argv ba865e40388f31c34e4ab7aca9be764ca7e0d078 refactor(setup): route dependency installs through the canonical uv→pip→ensurepip ladder 569b78c1f96573584f27cd0025d945e2434d6de1 fix(setup): bootstrap pip with ensurepip when not available in venv before neutts install b2c66681c4378c457dbdf3d1d7ca206bad03c2ad chore: add flo1t to AUTHOR_MAP 2718179134a555bf2ff92ab9b5491a9548b85b6e fix(docs): discord permissions (add Create Public Threads, remove Use External Emojis) aaeba213d90c7234772280a335e6324659c004f9 fix(telegram): bound start_polling() at bootstrap and conflict-retry sites too; strengthen tests 4aaaa206aa7d08b1cf72acb84802a2f7d2fd95c0 fix(telegram): add timeout to start_polling() in network error handler ce038a0e0557f44fa049e4daab99f619f2b92f54 fix(schema): preserve multi-type arrays as anyOf instead of dropping branches 7647eff360e00e652cafc6fc354791b101ad6270 Merge pull request #60117 from kshitijk4poor/fix/59607-cached-agent-expiry f341cadb71843d021f87724062e551da2403e6d1 refactor(discord): detect streaming bodies structurally, not by mock-module sniffing e0bca1cbe2d13af97924dfd8a4c8b0e81ab648b7 fix(discord): bound standalone response reads 87be36c240ecc14c4b47584b401fc236acba549f fix(discord): bound component labels by UTF-16 units b8ce583e05f90bf2d250cd0c7014248658aece86 fix(discord): bound REST response reads 87b65e24a799ded350c31afcdb7077cf45bf5c13 refactor(compression): scope Codex-native compaction to the app-server runtime d1c8c03416d7c6780d31ce2371c5b0777f10afaf feat(agent): add Codex-native compaction paths 8fc1cb754b7658c9e1f4121e102854e3fa9563dc fix: repair URL authority whitespace before web fetches (#46363) a796e0b79632bad8df19062e149f30a540f883a0 fix: cool down transient Telegram typing failures (#46355) 7ff86f4458dd7547cab4392686896cbe5fb649a1 refactor(desktop): route preview-pane mermaid fences through shared embeds registry c0adfd4a67ca1db66ae13724d2d1286b66e4147f feat(desktop): render Mermaid code blocks in markdown file preview 299d5c660343d879c5c6088f9591759d3130020e fix(cli): safe mode also skips shell-hook registration fc02b1c2766e4b52c30d5fb2353aa29ea81cfa7c refactor(cli): simplify safe-mode startup wiring 144457d801ab301ec8944e30c9c9109a06f6f5d6 fix(interrupt): extend post-worker /stop guard to Bedrock streaming path c2c73605e04f4ea4c578ebb5dc2880803853c368 test: set pool.provider= on mocks to avoid MagicMock truthy guard trigger 2e30a5e62891ea07afb631ebca693dbb01c4468a fix: prevent /stop signal loss and empty provider credential corruption 179ca25a38ae30471afc7dd52a71d65179fad19a chore: add williamumu to AUTHOR_MAP for PR #31041 salvage 8a7d0790dffbcaf6bfb94dfc0f9ed794a2a5525f fix: merge split gateway pairing stores 3c8130a82669042112554d2e6ee79a3f29c1e286 fix: re-apply confirmation expiry on the cached-agent live-history path 2c5762f5755ed6d63ae43e71178b540055cc7936 chore: debug log for untrusted absolute skill paths; drop misleading test patch 713e50e7d28507d78177b2b6d59f9bab01c6865e fix: normalize against tools.skills_tool.SKILLS_DIR, the root skill_view enforces e7082ea99fc502169287b86e043b8bf4260c19d8 test(cron): cover absolute skill path normalization (#59824) 62972060caaa9f7f3fc5a58688757fdd59b9a117 fix(cron): normalize absolute skill paths before skill_view (#59824) 07d93413e5e908859ddf6c4ea4b60c21131c10d3 fix: default memory null target to memory store (#46356) 6d3d9d0baf18291e5306691b35f81e5b2e0eecb3 fix: drop timestamp in handle_max_iterations' hand-built api_messages e7a6d676c8c6b81ed132e0504f62f2dbf68129c9 fix: redact expired confirmations in place to preserve role alternation 33a529538d1607ff1552e6eaf526cf95e3dfff49 fix(gateway): strip stale dangerous-confirmation text in user messages (#59607) 11516f3cc34ddb5d6809c93d593ffb53c5a421ff perf: partial index so the startup NULL-active repair skips the table scan b75783e6dc3ae881b49062a61d2e4fe3fc8fd36c fix(state): heal NULL active rows on every startup, not just pre-v12 DBs 7445df150512b5fe5eb165fef828c7d1badeec58 test(state): cover explicit active=1 on message INSERT (#51646) ae878e1aeeaf8241d8c88c0fa8d3b2e25728950c fix(state): set active=1 explicitly in message INSERTs (#51646) c22ea5bd54aa38f28bbbd23ff0f809dd9b1c10ff feat: add uninstall dry-run mode 043e71f1f46b7e1067d706cb85c6a49fd6c3484f fix(gateway): use process-level HERMES_HOME for identity files (#56993 salvage) (#59341) 4b9d9b205bf44cded07906a67c6c8bbea64d4f73 fix(dashboard): use loopback host for in-container WebSocket client (#58993) [salvage #59682] (#60092) 76979a086971cf688303f8a9267c503b623af80a fix(auth): per-profile Anthropic OAuth file + complete port-binding platform set (#57563 salvage) (#59339) 249c69b9586567d54dc7bcdeadd221f49aa2d304 fix(gateway): per-profile pairing whitelist isolation in multiplex mode (#53045 salvage) (#59330) 088b98944286e3a775b09562596fceeffb8d7927 fix(gateway): scope reset banners' session info to the serving profile (#59048 salvage) (#59329) f1fde49e453e508b9dc49ec5b70694fbbf0279c0 fix(gateway): avoid cross-profile session recovery (#59325) d297568299fbc0481e3edaa9f35d13aa692b20b1 fix(gateway): detect config token credential collisions (#59321) 2726c213836c19eb897d8d7eac90c75955fe223e feat(display): show file_path in skill_view tool progress lines (#60079) 5eac665252eb9cd85965afd36964b9cfc1322494 feat(status): expose nous_session_valid on /api/status for hosted-agent self-heal 182256206a43ecad1cde17fb02470ce72f767133 test: drop worktree-path sanity guard that fails in CI 444dc0da89a626e9a912894d4948f56d41942d98 feat(auth): log forensic detail at Nous quarantine so terminal auth death is visible 536ffedbf4704f220fc184cc3dc1ef0bd5f91fb7 feat(docker): re-seed a terminally-dead Nous bootstrap session on boot (#59983) 586aae4bf13c20c3f2966cad590b27946b227bbb Merge pull request #60034 from kshitijk4poor/salvage/59523-zai-overload-backoff ef599aa7f02d2a9c6af6c2b6dac16036d4b82819 chore: map spiky02plateau in AUTHOR_MAP for #32824 salvage 130e2337c24810bc0afa793495795b832cf593be fix(usage): scope Codex usage pool fallback to AuthError, keep singleton token on account_id read failure c59b3008653f7d305a19907fd9f969e76b4fdea8 test: lock Codex usage percent polarity b2213ba87017c1984091cfb51cf6f5704adbb65e fix: fetch Codex quota from credential pool 45f5a6e659ec8bb17b963ab0775043bf6a9bf7ba refactor(retry): single-source Z.AI overload short-attempts + drop change-detector assert ba03c5ab275179d642ff945a4aabd892386d3c9b test(retry): cover Z.AI overload retry ceiling reachability 1c702aa73edd33a8ce19bacc59160b6a705a43b1 fix(agent): run Z.AI overload adaptive backoff on the overloaded path 82d67ada01a4248c291c36583c7e7a595d5389fa docs(skills): tighten dynamic-workflow per donovan-yohan review 43aee56cf1ec0af5d502b16e10f59cadbb72fdbf feat(skills): add dynamic-workflow orchestration skill 05cbddc01234ea120cccc1f62d36f1ef352b0d52 Revert "feat(skills): add dynamic-workflow orchestration skill" 91bcfff479c70427b95dcd908d958bb28b25c21f Revert "docs(skills): tighten dynamic-workflow per donovan-yohan review" 8f80a982a67c601a800b3695ee4ef90c5d02f246 chore: add fanyangCS to AUTHOR_MAP d42e9b1788d9107962d2f00edb98069ab2ed9bdb fix(auxiliary): recover from stale fallback-candidate credentials instead of aborting f69e3aadf16f4c3ad172fac0c239072623749160 fix(auxiliary): refresh auto-routed provider credentials on 401 2e2a0dfe8b152438a13fc2c1557b54cedc208c32 feat(approvals): detect exec-via-flag escapes on read-only commands (port kilocode#11890) f846a350c7faaa69a4eca36ce27ec1d318a9da74 fix(nemo-relay): harden dynamic plugin lifecycle 2f74e29e3b1e9ce4c187a63fbc1432642e4b3486 fix(nemo-relay): preserve managed interceptor outcomes 0c8cf21882bead813b0b2104e0eb04bb2d415c10 feat(nemo-relay): activate dynamic plugins 830165473e0920c2baf8c2a6863976edb0c52943 fix(web): refresh dashboard model picker b3bee33ab3dbd45ae93169401e0c0bb088553e2f fix(tui): keep bare custom model listing stable 4b4f0588605a76bcd7ada14fba509f049c4d58cc fix(tui): probe active custom model provider 4131ec380babc55a6a45ef573459fbac28367b96 fix(tui): support model picker refresh 6604aa1cbe3ba340edbdafb7a2d3d9cffa7b94a9 chore(trace): drop external porting references from docstrings 70c6ae609ed643f2d43cdac7e3fc8b6c34411d12 fix(tui): stop hermes --tui -m from persisting the model globally (#59805) dd7198e71dbecc186fcda6c1bba8c8fec2af1623 chore: add tanmayxchoudhary to AUTHOR_MAP 5de42325db8456acd44be0744b551a5c0bab5108 test: expect model slug in autoraise notice dict (follow-up to gpt-5.4 extension) 60391d0eef1fb96b6c3ea94531576874d67b09b1 fix(agent): don't apply Codex gpt-5.5 autoraise notice when an external context engine is active fff240896120645c2f0d2b559735cf69f34106a4 fix(agent): dedupe Codex gpt-5.5 autoraise notice across agent inits bdca94e7491c52c53672a82a1fe28ecd23336211 fix(compression): keep Codex gpt-5.5 autoraise from lowering a higher threshold 0b6df665a929bd7389bd5b604655048005cf1183 fix(compression): autoraise gpt-5.3-codex-spark threshold to 70% (#48621) 948993cd62e93a0aa51074c880fb76e7a8e3d673 feat(compression): extend Codex 272K compaction autoraise to gpt-5.4 370a489fb4adb7268f6510439e25e8213bddb624 fix(auxiliary): floor compression timeout so reasoning models don't fall back to marker (#54915) 5e685999afae3bb989e4a9a1cfa2014aba79ac55 fix(ci): make the CI timing report unflakeable (#59818) 8cc1ca4ce2213b3a3c5f67faa3b572bd5338046c chore: add bigstar0920 to AUTHOR_MAP 78ee0aa36703dad6b25a33303e5fd19c4b3bc0d7 [verified] fix: account for codex replay in compression tail budget d4bcd93bb995b398d283a292c01daa1c341324f8 docs: browser provider plugin guide + complete the plugin routing map (#59817) 586acf53077e61869ea9ade8ae3c3d838d953e92 feat(curator): add `hermes curator usage` — all-skills usage view 4f008b6412588a54a0e7569bdb9dd07cc537378b docs(skills): tighten dynamic-workflow per donovan-yohan review 5e5191b9faeaf2ea6aac64fa5fe6d753fc95e0f0 feat(skills): add dynamic-workflow orchestration skill 2ebf9a90b762f21e33318b342e921b17e3d81946 refactor(skills): finish shop-app→shop rename in zh-Hans docs b24ff550c34e775a20f2ef05384b69cfdfc71668 docs: Plugins subcategory under Extending + secret-source plugin guide + 1Password sidebar fix (#59613) 1ea0bbbb0db0a9eae372ce14e6e4d74722cbee58 feat(config): add display.timestamp_format and honor it in CLI timestamps 94cdd56b8263b1f50b962907921ce970549555c7 feat(plugins): surface entry-point plugins in hermes plugins list 91c68bf834cd8de5cfdae6fbfae7084e40d2774f Merge pull request #55923 from NousResearch/bb/serve-headless-no-web-build 51e6ef5fca2220e7e0ba543701962ff06fc68740 feat(banner): size skills display to terminal width instead of fixed 8/47 5431bf29214681fb2fd25254568b58c9da8ce6e0 fix(desktop): default HERMES_DESKTOP_CWD to cwd when --cwd omitted 077419b220e5c8b22a158c126f5fd1c5b709d5b7 test(desktop): regression-guard fetchJsonViaOauthSession headers (#40069) 7dfd5077ceef4d5a6f7953c050bad1a75e86e215 feat(oneshot): add --usage-file JSON usage report to hermes -z (#59615) 409560a7d96a8a8ede1f0b109c64a4709b7890eb Merge remote-tracking branch 'origin/main' into bb/serve-headless-no-web-build af2e4f418bf90c5d27ca903909c2764ac588b53d feat(telegram): observe-with-approval Telegram Business Mode (Secretary Bots) 2aa908e867093206300a4ab99a1a2aafe8aa0c74 feat(trace): upload sessions to HF Agent Trace Viewer 0fc14fc2e9dc691a4d4fd92696aa8ee7dbb5b004 fix(gateway): drop --replace + Restart=on-failure in generated service units 7426c09beee73bdff94d916015bac71384f6bc92 chore: map hellno in AUTHOR_MAP for #49033 salvage d7348bf24b6157968cf069be1dd3146a655dab54 fix(interrupt): run user-approved commands from a clean interrupt slate 8235f484c947a9ce8a89b7bc2b8bf3453da90020 feat(secrets): adapt 1Password onto the SecretSource interface 8a76de962f6de470445a681be395616b6cddd866 fix(secrets): make 1Password bootstrap token reliable outside systemd 2dc4286e002fb6793b58b5b9f3331a00bdd84a60 fix(secrets): remove unused masked_secret_prompt import from onepassword CLI 5c4c0e9d9b87ed6745e9c62e14ccc39a6962a720 feat(secrets): add 1Password (op://) secret source db495b0fbaaa63ebd7f6404413730f98f0fdf76b refactor(secrets): extract shared cache/result substrate for secret sources 2d16ec7fb72ea40d5f4f9b49211634845409471f feat(secrets): pluggable SecretSource interface + multi-source orchestrator d345b9fbfef910ba31179f51aef26570f447229e refactor(cron): derive one-shot run-claim TTL from HERMES_CRON_TIMEOUT (#59567) e2ed2c13f11d98dfb0575e206b04d3be697a2045 fix(clarify): strip hallucinated Discord mentions from question/choice text c2bd7896cf6f040d8326dfb0533956be0d9dd297 fix(agent): route structured-reasoning empties to prefill, not nudge 27f74b26c59ec06d9c72b5a9ed33633c1a7a9b24 fix(web): correct 'disabled plugin' diagnosis for web backends (#59573) d84a2af3d40e6453abda403560fd95f23e43661f docs: correct Python support to 3.11-3.13 (#59572) 1fcf6e58b6205a55bcb143f8914597c076f5d78a chore: map waseemshahwan in AUTHOR_MAP for #56841 salvage 777cfa81f3e89e817a6946369a82b847879a0dc7 fix(gateway): drop interrupt sentinel before chat delivery (#7921) 09466971ff08999e10395dcf9bf46ade2ddc4115 chore: map AIalliAI id-form noreply email in AUTHOR_MAP for #44222 salvage 7487afbd99930b261b85c329d5457397fe9f46f3 test(gateway): update stale expectation — #31884 surfaces retry hint for uninterrupted zero-call drops a14caf7759e2571b23b44ef95ebae75e088ec475 fix(gateway): stop post-/stop stale interrupt from silently swallowing the next message 83e6a487ebd0d81786e2516e0fc8acd857ce4a29 test(tui_gateway): isolate verification.status not_applicable test from stray tmp markers 4df2536f214658a41d9042e98679e40a2f305af3 chore: map Ahmett101 noreply email in AUTHOR_MAP for #59455 2e828d4b752d01981f31f64fc17a55690135d6c9 fix(background-review): guard summarize against list-shaped tool responses (#59437) 4a80e27bba7e42a7bf81a584b7a29b41476221d3 fix telegram explicit private thread routing e53e8a782c98338f7da764288ec7559d79bfe480 fix(mcp): sanitize server names for auth env keys ef79ad014de5aa737eaa6a707e1a10de342cc2a5 fix(dashboard): accept HA ingress prefix paths 3b5c645433a87960eb5e5c2d124930548b90797f fix(cron): durable run-claim for one-shots instead of a fixed +60s advance 8f849ea36588a0372507b110f661eaf810794e7c chore: credit isheng-eqi for #59446 in AUTHOR_MAP 06cc983b86516344f7a6bc486ae8e0838ebaab09 fix(cron): prevent double-execution of one-shot jobs across concurrent schedulers f3af7930c2b543a4f8e6df8bc77285b2bdeda40d fix(tui_gateway): honor launch profile terminal.cwd for dashboard chat 83f14b2f21205455fa3315da6283a4696cb83fd5 fix(gateway): relax session_key traversal guard to allow interior '/' (#59322) 9d848cc60a3197b70a067a49f0b0c1984d72ccb1 fix(cli): pass custom_providers to resolve_display_context_length (#59314) b5158442f00bf30c0db039808530eab5e1bc2a5c fix(skills): apply disabled-skill gate to CLI/TUI preloaded skills 1a2885535baf0d420335681dd994ba43882ac32c fix(web): widen config-aware env resolution to exa/parallel/tavily/brave-free providers 026ab4737d67f6d5d70e871219b6ff0435bfaf34 fix(web): use get_env_value for Firecrawl config resolution 3ba5ba89c2479b04466a3cb2f6b14b1f6e8f164c test(cron): cover cron_list/status/tick/create CLI helpers 9bf2dac6b940701a28d2ce6abc0639d277e17a65 fix(a2a): client tools take args-as-dict positional; accept agent_name alias 582f15575383329f83f641191f5db5a451730bae fix(a2a): default the a2a toolset OFF (opt-in), like spotify 6a109c84fab596e57a1277dd9dc19f8174ada725 feat(a2a): consolidated Agent-to-Agent protocol plugin (closes #514) 400891d54243feaa786e5d845fc92fb847c77633 fix(caching): honor prompt_caching.enabled across model switch + fallback e6184c1cc688b00efc7db1485d4427a19ec17ebe fix: allow disabling prompt caching 7e7e3af5b06f85715c0353874fa07eff57dadac8 chore: map allenliang2022 in AUTHOR_MAP for #56932 test fold-in f6d4c1aa608066e78d82a2e013e82190e109b4b2 test(error-classifier): 408 boundary coverage — Copilot user_request_timeout shape, never auto-compress, falsification guard 8457752a3b87dcb6263063b1b99ad128283ae9eb fix(error-classifier): retry HTTP 408 as timeout instead of aborting as format_error a88e0fd2ab4afce191320ce85d6bac48db1e499b fix(file-sync): re-deliver deferred Ctrl+C via raise_signal, not os.kill (Windows hard-kill) c67aab763dd68a26a07bd3c7aec0443268c76225 chore: map isheng-eqi in AUTHOR_MAP for #59428 salvage 8def4ccb4ffceefb041a61382734006f82524a83 fix(cron): reject past one-shot timestamps in update_job fallback + resume_job (#59395) 0800af0b8ae01fd808e54be53d2cf12eca1d0638 perf(cli): TTFT round 2 — live reasoning by default, partial-line streaming, prompt-build cache, stale budget-warning docs (#59389) 4976d3c38da3324657d650437dba954a2b107240 fix(cron): guard update_job past-one-shot + enrich rejection message (#59395) 848089ac93b086542323c1649d34bb09f4f2c94d fix: reject stale one-shot cron jobs 845a2d815241c812ad849f4ae7010ee722c907b0 feat(sessions): any prune filter matches all ages; preview shows age span (#59415) 590a19332e898fc9bda55a31999926572d8fbc26 fix(skills): don't request Brotli for the centralized skills index d3602e630874b5633841d0ad21b95496ca35a317 fix(gateway): read multiplex_profiles from nested gateway section 040a5e30dd9e9f563906079075c72ebc69a8d18e feat(sessions): full filter surface for prune + bulk archive subcommand (#59327) 0f154e780e71c74f8a1cdccb25c97a6abd8e5a57 fix(gateway): isolate multiplex profile config env reads 9169591c501e775d6a1270004811843d30330658 test(gateway): pin random tip in topic-mode /new test to kill 1-in-380 flake (#59380) f761fb9d6a00347b86ac21acdbc38f6044333392 test(gateway): pin source.profile=None on MagicMock fixtures hitting _adapter_for_source f600dfca96c5b6e7a2a51096164ab35338a285dd chore(release): map author emails for PR #56854/#57417 salvage ab70551b3de2de49658e65476b1bdeeadc55a2f1 fix(gateway): fail-closed adapter resolution for unregistered secondary profiles 8a9bc38c2e72a20ed1e8b081917b6a0dd8891573 fix(gateway): route multiplex profile responses through correct adapter 43a4256320673eb1ff5a1d4389b2ac7de18d961a fix(mcp): wake stale cached servers on session startup + AUTHOR_MAP 6f5573c524c089a43d327be1d11f29c26116c0c2 test(mcp): make circuit-breaker reconnect stub survive a None session 756dd75fbe8b799b94461ce5be4599f0eca3a8ac fix(mcp): iteration-bound the session-ready poll so frozen-clock tests can't spin forever 27beeb183077d08e251afa1fece2d5a040f00d26 fix: reconnect stale MCP sessions before retry a124d16764a23a0ac29cfbfe14ef22310c4959d8 perf: cut first-turn time-to-first-token by ~80% (all platforms) (#59332) 9080c8b4fc498eca76ab90ef7091d0146f460820 test(agent): cover empty tool_calls array stripping in sanitizer (#58755) a7932d86c5cb835309eca289006e95eafeaedfb0 fix(agent): drop empty tool_calls arrays in pre-API sanitizer (#58755) 5cc7c9b6a01b90757973c641b4f413fc9a1b026f chore(release): map derek2000139 author email for PR #57838 salvage 713236dcd0f26c6d6a794e835e22664ece5ef593 fix(desktop): normalize CRLF back to LF in update-marker files d00c7193c12087067bc4d475cb1811709580241b fix(desktop/windows): pre-write update marker before quit dwell to prevent backend respawn 81becec45d7566938f4bea28f3f26bc5353cf351 chore: docs table entry + AUTHOR_MAP for preflight cluster salvage e8b0e38a2e0b867d925552e84764bd824c9afbb2 docs+test(mcp): document skip_preflight and cover the bypass with a test 549def3a2125594772e060c35b7f64653020dc1e fix(mcp): add skip_preflight config option for servers serving HTML on GET 32c1c47eef7315614052e1e85d55338c2e5ad928 fix(mcp): add POST probe fallback in preflight content-type check 18e840469ffe9f8235331c787e34ebbe908564b8 fix(install): guard Windows desktop installs against broken web_server 94205a113915c2435f5687efb7b8b3d6a248776f refactor(gateway): move routing index to state.db, make sessions.json an optional legacy mirror (#59203) 571f2a7fd2b8ad91a5a4135b1deeaa26718e27a3 refactor(auxiliary): fold main_runtime custom-endpoint reuse into the shared client-build path 92da7a9970548340f0d538ef94d7af543d1dc7a5 fix(auxiliary): reuse main_runtime credentials for named custom providers 3c2f628f5beddafd07b948ef509cf05dfec3bb5e fix(desktop): probe venv python in unwrapWindowsVenvHermesCommand so Repair can escape a broken venv (#59204) b6f230b88e993e2481ec900595465f0cfe1b2213 chore(release): map EdderTalmor author email for PR #41575 salvage 21a012b6ac77f3f2f8331c149886b4037bcdff7d test(prompt-size): cover resolved-toolset parity and blank-slate minimal count fe8d02cec722dbd43de39eaa46e6996e1015185a fix(prompt-size): respect enabled/disabled toolsets per platform 6d359e0681d002df032a491b5cea60a53928f955 test(mcp): initial-connect exhaustion now parks — update awaiting tests b80b0b682a91dc8ac2efbf20ec09add3c14d44bc test(mcp): parked server self-probe revival + AUTHOR_MAP for #54139 salvage 2ea03d8c6b95fa6a7080dd78fe68e53f14506423 fix(mcp): park after initial connect failures e412316b8143c6ab743459b311e8ad8bb0939282 fix(mcp): self-probe parked servers so they can actually revive (#57129) cdbdcd6432dfb83fa97d9d20b7d47f93c9a3741f fix(mcp): re-register tools after a parked server is revived e334700809c482df96a08b175609d621b3d05a20 fix(mcp): reset reconnect retry counter after successful session establishment f26ae4f6830d0ced54ab61cd1ef03b35fadb3f91 fix(mcp): align OAuth login connect_timeout floor at 315s across CLI and GUI 8a9e30dbd57c08b3c5aa5de76065e6a57b97e6f1 chore: AUTHOR_MAP entries for #54494/#56699 salvage d52d2973a113d7891b8cc188d40de68550a62985 feat(cli): add --connect-timeout flag to hermes mcp add a348368019bbbaf4620fcde74390aab064959164 fix: honor configured connect_timeout on MCP OAuth login path 087aa74e6ec3a5c15b3382fada4592b4df42969c fix(cli): honor MCP probe connect timeout 613328559617062658fc847572d5bf1de64eb077 chore(release): map Alix-007 author email for PR #54620 salvage 2bcb893d871593bf5a26efdd68c61871c0a6bc5d fix(feishu): set client_max_size on the webhook Application a26680eb2d9eee75c183d9ebe1648519a6f31aea Enforce Feishu webhook body limit while reading e82d71db402b49434a1c0bba70e49817e77df827 fix(whatsapp): set client_max_size on the webhook Application eec92a92c07cd1a6b9712b5d0a13e8198606ddc1 Enforce WhatsApp Cloud webhook body limit while reading deae37e33bf00e4181e1ec32ce2534b169cf1aed fix(tests): add missing json import in msgraph webhook test fixture 4f4cbff8bdabe1b78d7866fab8879c42a21f7337 fix(msgraph): enforce webhook body limits 3dd5ce236a7b05d77093af2752222e55333f9ea0 fix(sms): set client_max_size on the Twilio webhook Application 940b69b1a8610b3ebfe21386ef8a382fd1204e94 fix(sms): bound Twilio webhook body reads to prevent OOM c5a8df3af233d32edac7c3ec646cf8a0adb2916e chore(release): map jashlee+microsoft@microsoft.com -> s905060 (PR #57943 salvage) 127d2ee87ab1af06d15df3e9c5ffdbb6a0530e1e fix(photon): bound the sidecar dep self-heal npm run with a timeout 3cd93f6aa8c9cd0bf0799cd0eb195c508420c1a8 fix(photon): auto-reinstall stale sidecar deps before start ede7e316365d6922a2fd8e5ca3412728c1819d00 fix(auxiliary): gate main api_key inheritance on same-host aux base_url 8e09afda270cc9f1a582b32bf5cb736cfc69675e fix(auxiliary): inherit model.api_key for custom endpoint when per-task key is empty (#9318) 37df7ff01671685dae4e2d7204180beda7747a02 feat(tool_search): probe-validate blind tool_call args against the deferred schema 6fad6f1dd8bc63b5718be59ae3ede4202371fc94 fix(whatsapp): contain and surface inbound media download failures (port nanoclaw#2895) (#59261) 11647ec269823a8a4107d0fd5f0dc08dd9f38461 feat(plugins): generalize native platform handler registration to every gateway platform a05b64d677820d658a3adbd24a12c8f1f5e99727 test(setup): blank-slate disabled list must not overlap kept tools e5636da5d868c088cb2c8dadd2218665cd624671 fix(toolsets): preserve core tools when a posture toolset is in disabled_toolsets (#57315) b57fe5ca0194dec622ceb7c4f7f3cd40fa34466c fix(setup): exclude posture toolsets from blank-slate disabled_toolsets c9adbaff5efdf836505d67068fdab4c88828ad80 test(mcp): cover probe capability + config gating for prompts/resources 1f2a33f4acf253b58157ed0c87652884bc8e0558 fix(mcp): gate probe prompts/resources on config + advertised capabilities de7e0a88750007079395da7c941371e85abfb7cd fix(docker): heal pairing-dir ownership after `docker exec` writes (#10270) (#59130) e2fe529efbe1d2f36d2b7c4740c59dd81715dc58 feat(approvals): user-defined deny rules that block commands even under yolo (#59164) 8986981df4e55003e7b5aa6e14a2f1c8826550bc security(gateway): set explicit client_max_size on 3 uncapped aiohttp servers (#59180) 08232305452c8535342866fe1b324a933f65b85c fix(computer-use): sanitize env on the 4 remaining cua-driver spawn sites (#59165) 65117671e32496a119e3f58602134ef13c8e9ff1 fix(gateway): apply platform-disabled skill gate to bundle invocations (#59156) f514132ff340d84dc11b846d174f3915858774a9 fix: disclose mid-line clamp in truncation hint 25f0cecf5e21bfe87aa27ffe8a8cb8734af2b1ca Port from nearai/ironclaw#5029: graceful char-budget truncation for read_file 2f2e60801c671195d963234fb913f06f3a7bdb45 chore: add l0h1nth to AUTHOR_MAP for PR #32210 salvage 1197d2bc966727194b52fb227c805793e7327a15 fix(mattermost): accept leading-space slash commands 3167dbaee2aebc257dc61d569ec380b145f35a58 fix(docker): widen docker_network to file/code-exec paths + guard container reuse cd2b360d64f709229a0d94e16995646e86f07d04 feat: add Docker terminal network toggle 9ad912a79145651fa1b6441dca1377b68bf78b08 fix(agent): honor auxiliary..base_url/api_key when provider is passed explicitly e985e34659ecc6550bdcb7561edba2588b9c404a chore: add falkoro to AUTHOR_MAP e3203e4d805697eff3a7ae58a2462b670536aaac fix(config): invalidate load_config cache when referenced ${VAR} env values change 7c4cde9e824771ea64856b92acfde65e4de986c9 feat(plugins): let plugins register Telegram PTB handlers via ctx.register_telegram_handler c9a150d6407b700b4fb2f693415ba143b56a40eb Merge pull request #59131 from kshitijk4poor/revert/58698-pre-tool-approve 74cc9ee3f06ab09d7f6b06103b961722a2153578 Revert "Merge pull request #58698 from kshitijk4poor/feat/pre-tool-call-approve-escalation" 747386ecfa34eb5cbc10e104d326259fb538f565 refactor: consolidate gateway session metadata into state.db (#58899) 0b67ff222a9d5ce4d9f7ee4961d0eaa671ef2053 fix(agents): bound streaming error-response body reads a57306654337cd6d4c0fc559b17067adbd247182 fix(redact): skip env-lookup exception for JSON/YAML config field redaction 2e2212be1baff7be4ee3609e9cac619e1c447f45 fix(discord): dedup saturated mid-stream overflow previews to stop edit-rate-limit storms cdcbc3a31d398bda14639bc3d8e913918a67b473 fix(gateway): clear last-resolved-model cache on 3 more conversation-boundary resets 3817ff180dc091bc4f115f19d12284bb9935fb4a security(raft): enforce body-size limit on chunked requests 1e2914b40ac7e751c5aaab607da32f2e3e3f98df fix(telegram): redact bot token from connect/disconnect/send_document/send_video errors f10851e3fd9a9240a60f35502fbc96001b97ac29 fix(computer-use): sanitize subprocess env in cua-driver CLI fallback transport 04d732dc565e8271b09d20ebb0cc2b9d76f8f1fb fix(gateway): re-check every stacked skill against the platform-disabled list 9d2ff58f5f39d506bb0c6cb9510afd6f310c2bca fix(yuanbao): skip resource resolve on cache hits 5a5e7e2a465e7570f6c1fd9bb16d8dec1814e731 fix(nix): follow root pyproject inputs eab208db700dbe49a0eff7f915d598ea399cb671 feat(hooks): spill oversized hook-injected context to disk (#20468) 1b69ad0b8b98800af53ab7fb0af77995064b27ee fix: update salvaged tests to relocated feishu adapter path 77700a0ec0b82a11a543507bfaaa890fb4820fe7 fix(feishu): send WebSocket CLOSE frame on disconnect (#10202) a6079dd3502ee94c47481bc068caeea503045f70 feat(providers): GLM-5.2 native reasoning_effort controls (#58884) ba31699091220a37e622eb60358aeb5fb8098451 chore(providers): remove dead cloudcode-pa quota-fallback branches (#51489) 55e3ee1ab8859316a6e66b5ba2f634479bfcf0d8 fix: remove dead f-string prefixes via ruff F541 (216 sites) (#52336) 3d0276182aec2646daa7445e2da3dbd5edca3247 test: update MCP parallel-batch fixture names to mcp__server__tool convention e01f58ff1fdebbb6f7af971f04825d071f3f09da feat(mcp): adopt mcp__server__tool naming convention 5986cdd38085031176a5bd6cbc7878c35c61327b fix(cron): deliver before tearing down the agent's async clients (#58720) 6d9eff28b77593a196fdf6d9a538b5d195deaa98 test(cron): cover the interpreter-shutdown scheduling guard (#58720) 8aab8be50c716e61edbcb47b853d055fc0339ec5 fix(cron): skip delivery/dispatch when the interpreter is shutting down 18058c451568b7c4716555b9feb42cb5cf57156e fix(gateway): drain housekeeping thread over its own 30s future on shutdown 6b14be01864214412155b9bba875c1cf91da050d test(gateway): cover cron-delivery drain on restart dcd70c5823feb7644d9e0fc5390b248265e71889 fix(gateway): drain in-flight cron delivery on restart instead of dropping it beaa1a08e6abf2fb8efff0b05da8857bef21ce1f fix(config): guard xai migration writer + drop gratuitous annotation 123c6f3a23a39a45c79e093e81cd7def1f779a71 fix(config): close unreadable-overwrite bug class at a single chokepoint b109adede675043c145288e36bc319a76fe0aafd fix(config): refuse unreadable config overwrites 5b04a024a5ed6badcc3ba5d5a6f5afcb642aa474 docs(telegram): clarify fallback-branch limits wiring vs siblings 01ee312de68eae40f4c36a535f8694822540bae6 fix(telegram): forward keepalive limits into fallback transport 368e5f197e723ed39d40b93baae86e5522d7f22f Merge pull request #58698 from kshitijk4poor/feat/pre-tool-call-approve-escalation abf9638f4eb3dc02d4159bae5c3af86457edd323 Merge pull request #58974 from kshitijk4poor/salvage/compressor-zero-user-58753 b2c55582efb365bca5b0d99d20c8d8161fecde79 test(compressor): drop source-string guardrail tests 10ced056763a61b3db2992c9ea880224b9322954 test(compressor): pin the zero-user-turn compaction guard (#58753) 24add1db743dec5166048d406d8b8a58555b7697 fix(compressor): keep a user turn when compression would drop the last one 605727e3b471f22a11ba3698f75d4171f5534674 feat(discord): optional admin-only gate for exec-approval buttons (#51751) 8a04b516a89f4e45ec66633da83c9b8ce9adf9da Port from cline/cline#11803: recursively normalize JSON-string tool args by schema (#52220) b3b1e58ad60c4874fb491c181b5ae10d0f6d15cc fix(codex): stream commentary deltas through the reasoning channel 538173f679f7d182bc530dc073a9ae2f6d93d2a9 fix(codex): route commentary-phase preamble text to reasoning channel (fixes #41293) ea125dd62e93c07a7f6a68e2551bacece8a37f2d fix: keep Codex commentary phase out of user-visible text 372c0b5f45b7198dc7c9df56d0baa18ee516436d chore: add devatnull to AUTHOR_MAP for PR #58700 salvage 14c91ade32b75380b45acf404cf951090dd86255 fix: normalize display boolean strings b9de7044aa93bd57028cc32a47d566b238ee80c5 fix: preserve log tool-progress mode with status phrases d111faa3a76daf0357bc9d9958aef9976089652b fix: preserve busy steer env override 12f03b11ffc5d05c132599dfced0e7f82bda2bd5 feat: make busy steer ack configurable 46fbd73f662a4359f0cf8ec9edbd567a34c1e8af fix: strip tool progress display modes fddc95f4c269fd38753db662e48b7d0145ca5cfc chore: limit generic status phrases to long-running notifications 4bf5b563bdd76ca390a60b5bc6d916068c4e8093 feat: add generic gateway status phrases b0f2bdbe8b7e52a2fc5f4b3ed74813dd925cc8dd fix(whatsapp): gate poll-vote events to Hermes-created polls + salvage follow-ups 11627fdcb92a0ad57c9b637538f8fbea39142272 feat(whatsapp): native Baileys polls, clarify-as-poll, locations, and rich inbound metadata 0ca2a927cfefa77d4e05a623d54cec3a951fe1e2 chore: add devatnull to AUTHOR_MAP for PR #58697 salvage 558001307a26cbba75ecf61ccba1d119c5bec781 feat(desktop,docs): surface stt.echo_transcripts in desktop settings and docs 4be749d151a90dabc67b80ec93102f7f74d5f97a fix: honor top-level STT transcript echo config 406eb719c33c63b4b4c29f90f7391ea2e863bc0f fix: gate interrupt STT transcript echoes bfc5262725a3a12b0f1c6d4b9e051d27ef4ceede feat: add STT transcript echo toggle 95fc3c6b45d422b5f4fac79fbf6430e187adb363 chore: add alastraz to AUTHOR_MAP for PR #41383 salvage 519ec7b3b327fa55fd5f64709ed8114fec6b0ecf fix(computer_use): parse (label) and = "value" AX element label forms 13b75e73ff977d90ebd61124a181b1aebe5d8404 fix(computer_use): re-fetch via CLI when MCP returns silent-empty captures 7af9abd174b29cd5ac9f692b25a2742d17a7cc49 fix(computer_use): fall back to CLI transport when cua-driver MCP bridge hits EAGAIN de4310c8f685bc70d7f0c7f42f8daa7aa1018278 fix(computer-use): report the wedged startup phase in the session ready-timeout error (#58801) 24a754691868deaa1b1e4051fa395f15530362a7 fix(cli): drop shell=True from cua-driver installer — download to mkstemp, exec as argv (#58796) 2c0820c9ff55b663833dbca26963d1686e1e2bae feat(cli): autocomplete + ghost text for stacked slash-skill invocations (#58763) 1c156736dc5cd5606c04765911dd9bb11f420caa docs: warn that mid-session model switches break prompt caching (#58747) 7fde19afcc45ea774446b93db1053069dc87a6dc fix(cli): unwedge cua-driver installer timeouts — group-kill, stale-lock pre-clear, 660s ceiling (#58767) d537d29a6f3c3beeb5771922d5d36236f5d0f4cd fix(computer-use): increase cua-driver session startup timeout from 15s to 30s d8b51269ca9a548ffbb95cfb1d6d19993eab9f7c fix(update): skip cua-driver refresh when Applications is unwritable c13281ab57fbe616457b55cd80f3e89d22cb7695 Guard native image routing with file safety 51c1ba6976205671eea8da737580229ef155e2c9 fix(agent): apply pool-level keepalive to the process_bootstrap sibling builder 8324dd19ca283f1ea4ba34939489903c5d7450a6 fix(agent): replace custom socket_options transport with httpx pool-level keepalive expiry e02cef0d0da35dc55f33ed53610b3ff0d144274a fix(memory): guard local uploads against credential reads d577408f3f27c99999fafd74ef0cbaae084f7081 fix(webhook): reject generic V2 signature missing timestamp instead of falling back to V1 ebfc49c4d9cf3aa06806b7889b577c1e0c74bae2 fix(approval): require exact ./.. segments in the root-collapse hardline token (#56179) cb6c47af08f2397424f027a01991a84dc99be3ee feat(approvals): /deny relays denial reason to the agent (port nanoclaw#2832) (#54518) 9767e19b6071c5ec3d489dfd00cab605ccb4b1bb feat(skills): stacked slash-skill invocations — /skill-a /skill-b do XYZ (#57987) 30479961b8fd35db63a4fc897df1d97ea36207aa fix(gateway): tolerate punctuation on silence markers edf8e0ba94e506e49ffbb41a196bcfa713b588d9 feat(mcp): surface MCP server log notifications in agent.log (#57416) 4751af0a0bab56177693f305712d3750e6fe11d9 feat(errors): fail fast on TLS certificate verification failures with fix hints (#57992) 619db0175d2fe9e41fcb4f63783ec0d44bea7133 fix(gateway): move PATH bootstrap below imports, gate to POSIX 1b7853d7bc521d9562377db6e3cb38aa189f31aa fix(gateway): add system dirs to PATH for UV Python compatibility 708b57e009fc1819f00bd2c9ad4ace0091473a0c fix(webhook): rate-limit V1 deprecation warning + document V2 signature 70449a49393bb3e0c0a629341c70dec869d5f219 fix(security): add timestamp-bound V2 signature for generic webhook replay protection dec4485d2ffacc49f2d2af15d6b3fcdeb238e1dc chore(release): AUTHOR_MAP entries for salvaged PR authors 7e037e1a30109786b8e6b1689da7b39ff2753757 fix: cover remaining GNU-only %-d strftime site in learning graph render ce82b0c3cf7839993db23a38ed28c1bbe366ef1b fix: `hermes journey` crashes on Windows due to `%-d` strftime directive e4da3a7a52ac0af05c7b69a7e64bb02196d9d4da chore(release): AUTHOR_MAP entry for salvaged PR author 791583704b5000446d40f884117fb4a8a7c71298 fix(auth): prune stale custom model credentials fc18d15f404e0d46b49ce12b38871e51e6483f06 fix: preserve static custom provider models 020a71678c61ec9292ab9fd85957a31829f280db chore(release): AUTHOR_MAP entries for salvaged PR authors b7192b1cb0209b060ff1b3b84be3924dbb317cad fix(profiles): preserve symlinks in clone-all and skills clone paths 8d9684c9daeb0f072d4c344baa949bc8a28234ef fix(profiles): allowlist default-export paths + preserve symlinks (#58394) b6b9bcd2a194d85c8630677fb9ebab13ce96f10b fix(profiles): preserve symlinks during profile export 9ae17b8ac5020b32828af8d8125b66fdb86a76b3 security(vision): route local-file inputs through the shared credential-read guard b3c7b3488531e63734767460e8d6cc9ef2a21cb5 Merge pull request #58526 from NousResearch/salvage/3923-website-policy-cache-key d51657c0c6ae725ca05406800f92561b9965859a Merge pull request #58531 from NousResearch/salvage/3033-contents-api-retry 4eaf5bad71f731dd1418a5b79096951594e49272 Merge pull request #58534 from NousResearch/salvage/2854-redact-getenv-skip f23026f9792640fbc7eb0f8656f256bc85d3bc19 Merge pull request #58536 from NousResearch/salvage/3955-webhook-chunked-limit 6f052b7ff1d694c7fe0679b5f4202ee199ca121a fix(copilot): set x-initiator per turn so user prompts bill as premium requests (salvage #4097) (#58544) 485ae54c9f840d4f490a6b12b8ef4ef6a71a242a fix(gateway): pass full transcript to compressor instead of filtered messages (#58551) d810ff2f2b30d72e902852df783df5b26fe3bc06 chore(release): AUTHOR_MAP entries for salvaged PR authors c018096005eb10dbc229db42bd318b612e65cac8 test(whatsapp_cloud): intake-gate regression coverage for documented env vars 6c7960cfa0dd81cb847869610fb726fa5f3af56f fix(whatsapp_cloud): honor documented WHATSAPP_CLOUD_ALLOWED_USERS / ALLOW_ALL_USERS 132bb8a163d07fc8553819a3cafdd6a21f348fa8 fix(yuanbao): restore active singleton after WS reconnect 5b8593266f6e8847bfb536225cfb058f7de4fb74 fix(gateway): cap proxy SSE line buffer a0a3c716fc8d42f137b4f87049b01385ada72bf0 fix(telegram): dedup saturated mid-stream overflow previews to stop flood-control edit storms (#58563) f512d6f020eb6dcd67689d2b77dc5e0ffb07d45e feat(plugins): pre_tool_call approve action escalates to human gate 1388cd1c0c1800078bfcc92aebd144fbf145fdb4 fix(logging): thread-safe queue state + bounded hard-exit drain + record copy ac68a6411a3d048a91c08d4b33cf852f4e93b7e1 fix(gateway): drain async log queue on os._exit shutdown backstop eb0cc27201666b7e1f8c6fc9f406e31d718e86e3 fix(logging): drive rotating file handlers through an async QueueListener af01b3cb384365c4d5ec2603883c99db372456cf fix(config): stop provider-key warn-storm that stalls Windows logging e02bb34f3af9439f9e16963a50437ddb406cb7b8 fix(telegram): dedup saturated mid-stream overflow previews to stop flood-control edit storms 7e8f50a14176e02b514631b0b04470acaadae32a fix(gateway): load display config from routed profile 11b4a21a5634312dab41b2788ee23a804cdf917f fix(gateway): clear last-resolved-model cache on /new and compression auto-reset ff4c8172ce68edecb025fa0e361e6952be2c9b6d fix(gateway): attach credential_pool to session /model overrides a1915533a88d43a83c122a1bb81ea02e48c526c6 fix(gateway): pass full transcript to compressor instead of filtered messages 022f4f971bc76719d182e2406062114c8ba89671 chore(release): add AUTHOR_MAP entry for @tjp2021 (PR #4097 salvage) 645965e12d36fbd9aef0c27ea91b2922da397b05 fix(cli): set correct x-initiator header per Copilot turn 10f7cb043cf3949c14c7ddcd07c771ce1cce7dab chore(release): AUTHOR_MAP entries for salvaged PR authors 8552cac65e78b8bda252213a28ee87422c75ca9a fix: drop unrelated package-lock churn and dead poolside picker entry 70dffb6f1f3f08da524cbf971c0b6193258259b7 fix(codex): recover final app-server text without completion 55e7986896fc4ca8532301345c4948600ca066c3 fix(poolside): handle integer finish_reason and tool_call id 2bb11adb4976169f2434ce72a6185cb189d83079 fix: classify OpenRouter 'no tool use' 404 as model_not_found with fallback ddd3a2d24791c96235dc888d2f3e3d8a95b4df5d fix(auxiliary): fall back to token resolver when anthropic pool has no usable entry 2b4ec0082a4734758a4cda43cf81d1b9b93f9e7e fix(api_server): return 413 for oversized chunked bodies ec29590a0f193590e24012ff6c165de5ba2930d6 fix(webhook): enforce body-size limit on chunked requests 0d27d2ed147f5443bd111bf4cf3d295d9ec2917e fix(vision): bound the sandbox exec-read at the ingest cap 6c068358e439a3b97dd82bc8aef1f67187c3d2ee fix(vision): stdin=DEVNULL on rasterizer subprocess (stdin guard) 4ac8c7546be281a87113debafd7ab5ceb9058c5f fix(vision): mkdir converted-PNG output dir; wire SVG pass-through to rasterizer; AUTHOR_MAP for #52688 ac94f2c8a1e4419c649c563006ae57a00c3d7959 fix(vision): convert SVG/unsupported image formats to PNG before embedding ab2f5a077e14a0133700959d7d9ed0df02b5ee9e fix(vision): address review — restore bare relative paths, remove dead code, async I/O 316e77517e82d8f4af8936e036661ca0836990c2 fix(vision): unified image-source resolver + terminal-backend confinement 9e872db7d7eae9b962afc094a55a484890558a6b fix(redact): skip env-assignment redaction for programmatic env lookups 6fcd470d54982f44dbe3acb340f79e5ec385c70c chore(release): AUTHOR_MAP entries for salvaged PR authors c3ab1424e649c8f90d5359a0514096de4507f7ab fix(telegram): redact transport error tokens 2b58febe468073462b1b49c0dfd8583858e3dbec fix(redact): cover fireworks token prefixes a0c90edf48a1f8e6bf8a08823fedc680e5d89663 fix(skills): retry rate-limited Contents API directory listings 42b0182f6615bc5216ca9e89326da3d8cc4cd428 chore(release): add AUTHOR_MAP entry for @ludw1 (PR #53465 salvage) 4f67ba88c4b98454855e318345f7173d39ff56fa fix(telegram): keep edit streaming on legacy overflow cap d91083b2f7d44b558f1e0b296257bf070f98b1c4 fix(website-policy): key blocklist cache on the real default config path 3b46a5757e5da210268a0cc5bd0eaf8138a46d15 fix(setup): align neutts ensurepip bootstrap with repo pattern 0152f3d02afca4b495f2caa437d78152119a5e86 fix(setup): bootstrap pip with ensurepip when not available in venv before neutts install f29e6226aa5f8ccb91653972cab1d7f58ec29065 chore(release): add AUTHOR_MAP entry for @kevinrajaram (PR #3850 salvage) 592ce9af3067cf10d3a53b00466209f63bc1dd46 fix(gateway): move PATH bootstrap below imports, gate to POSIX 110c2fa069d323a9eb64ab61ba6d3cc202bec73e fix(gateway): add system dirs to PATH for UV Python compatibility 2ffb1a4a9edf24dfac983e762c1f7f9e8defad60 chore(release): AUTHOR_MAP entries for salvaged PR authors 59173aca3b9e00fe996398d8cdf0e8da8285a3e3 chore(release): AUTHOR_MAP entries for salvaged PR authors 1785eabcd13215835680b75b99db54427186307d chore(release): AUTHOR_MAP entries for salvaged PR authors f0c16bfbcb2672cb6a0c70bb043a406a78ea180f chore(release): AUTHOR_MAP entries for salvaged PR authors 14e23860a8d670f5ce8297b5e35d56c8f1b0ae47 fix(webhook): rate-limit V1 deprecation warning + document V2 signature 0a30640b3a6104b024f156eacbe6a3fccde23b97 fix(security): add timestamp-bound V2 signature for generic webhook replay protection 59ee963a07963a987233cbb0e3f0158e1a5c323c fix: cover remaining GNU-only %-d strftime site in learning graph render 6cc24a93124394a160c94ed68b5b219ed544f67e fix: `hermes journey` crashes on Windows due to `%-d` strftime directive 68cc13d814c7b46ccf1743a01a37bc62bddbd9e6 fix(profiles): preserve symlinks in clone-all and skills clone paths 68386bfe042ceb75d779b1c8ae9fe385f2bc92df fix(profiles): allowlist default-export paths + preserve symlinks (#58394) 0b373f21fe4e5379cebfd316bab722a783bee2e6 fix(profiles): preserve symlinks during profile export 3197bfb282d2db2862132a96fc6e4b5518adafb3 fix(cron): read per-job max_tokens from job config and pass to AIAgent 4b471007cb17cd7cd061161cc7165a787646d8eb fix(auth): prune stale custom model credentials 429c0459e7718af6f120aa4c5f5fd4406055a26c fix: preserve static custom provider models e0796047e3ed8a7d0068debd55c2216b5aceab09 test(whatsapp_cloud): intake-gate regression coverage for documented env vars a0761ae41b45f0d7e782b0d4e2dbdcbb38923cda fix(whatsapp_cloud): honor documented WHATSAPP_CLOUD_ALLOWED_USERS / ALLOW_ALL_USERS f813f03bba46e75e2cd32a128f63ec239850b58d fix(yuanbao): restore active singleton after WS reconnect 6143ef3099ca08e1c550c0d0db8bca478fbbcebb fix(gateway): cap proxy SSE line buffer e670d9cdd6697d24c4b170ac0ecdf6d344dc96a7 Merge pull request #58489 from NousResearch/revert-30179 f9c543d6d1d0815413d6eabeea9de8547b29862b chore(release): add AUTHOR_MAP entry for @danilofalcao (PR #56674 salvage) 058873805a85c1195afe23159c714c9522484423 fix(update): skip unsupported Matrix refresh on Windows c6dc7c03c355fb3a407c1309aabebb13520c9efd Revert "Merge pull request #30179 from NousResearch/feat/iron-proxy" 8790adc4c66fdfdc988824374b4d0c767aa27c74 Merge pull request #30179 from NousResearch/feat/iron-proxy fe5054bccfc5128167adafe8235e84c5f807b136 fix(desktop): avoid probing custom providers on model picker open bd480b4c8c7560600f71d34d0d48c3afc2f0515f test(gateway): cover per-backend cwd placeholder resolution 1cc68fc89726f0743cd4c77f131428b2f7563d7f fix(gateway): resolve terminal.cwd placeholders per backend and mount mode ac0b4a225b333af8671084e9ef46e4d76d0c117e Merge pull request #58483 from helix4u/docs/debug-nous-diagnostics 53a8a73673dc6e8c8d0c553a74c5dbd098cf9666 docs(debug): document Nous diagnostics upload 7203898ce47c9ab90e64866d6cff0e6e9ad8d1cc Merge pull request #58350 from kshitijk4poor/salvage/dedup-tool-call-id 81f1ba80029c16cd8b533314c2179d4233ce0788 test(telegram): cancel leaked conflict-retry task before fatal assertion b1c7b965476acb321fa517d62927c91b9e6782fa fix(telegram): bound the 3 sibling updater.stop() calls with the same CLOSE-WAIT timeout 8645b343030400ec2e6a74ab426be8546d8eb57c fix(telegram): bound updater.stop() with timeout to prevent CLOSE-WAIT reconnect hang dba585c1794e0c5dc4409c6c60996046e2005063 fix(agent): deduplicate tool_call_id across the pre-API sanitizers (#58327) 60906be3fc156a49ed046a6d4d2740ae272f4389 chore: map yingwaizhiying@gmail.com -> msh01 in AUTHOR_MAP d8504df7e48b17a33e5820162e5fd5df228f8604 refactor(compression): reuse _fresh_compaction_message_copy in user-turn guard 6e176e4c213040c7bbdffb2ff39b11fc1db4abb4 fix(compression): preserve user turn after compaction 2d3eac5fbdb9d5d6137f5bc5e8db4fa227416fa8 fix(moa): apply prompt-caching decoration to the aggregator's one-shot synthesis call 5daa5a0f2f218d2f5c8391dffbc47fe57f76232f Merge pull request #58293 from kshitijk4poor/salvage/telegram-init-deadline a37fd66dec54c92ca8728e4e6b3c539e2bae4729 fix(telegram): shut down abandoned init app + AUTHOR_MAP + cover the deadline helper d50aae0e355255312f4ca742c7f1f18600b32464 fix(telegram): use wall deadline for init timeout 86a0c5553e2da418ffa1b05844691ebd0b6b0b94 feat: allow suppressing Codex gpt-5.5 autoraise notice e02fc282807352141600307e23a87fdb7782b825 Merge pull request #58222 from kshitijk4poor/salvage/dashboard-credential-guard 8b24376d63c9aee031b3cf533884b749a645972a fix(dashboard): close credential-dir-tree gap + .git-credentials in managed-files guard 4a6751a2bccef3205c1a6b2810998481cfa6ed5b fix(desktop): preserve project cwd for new sessions 43ec69cef3aae483fe7b132c204cb871bfc895d2 security(dashboard): widen managed-files sensitive-filename guard past .env 14cbbd541e78251c727de060084692468404ac27 Merge remote-tracking branch 'origin/main' into iron-proxy-followups 86fcb2fe5f7ea5f4c7ea022b8c7bb6f9d405d4c4 feat(egress): first-class x-api-key providers + hot reload via management API 09693cd3a339d61a0f461e59d0a23b5a33479185 fix: complete OAuth-UA salvage follow-up (stale comment + test keychain isolation) 4c5b4417bbb65cfbe92f5a59b8e23dc72c016200 fix(anthropic): OAuth token endpoint UA must not be claude-code/ (login 429, #48534) 88f2c0caf63e63ca1a786cb96ef83eb15078784a fix(agent): match tool results on call_id||id in pre-request repair (#58168) ca596e228c46748d4186e5b017da7b1e7c1714be chore: map marxb@protonmail.com to Marxb85 in AUTHOR_MAP fab6d4d1b79ae5fde358b27eb9a8505e7142a907 Fix computer-use crash on X11 windows with null PID 5e94bc12d3025f81f7b141701448153e8ad3cdee Merge pull request #58165 from kshitijk4poor/fix/52060-cron-dm-topic-routing fc31f14cdaa1471181956d78bb9d7727bf22bde5 fix(cron): disambiguate Telegram forum vs channel DM topics at delivery time (#52060) 047b48dfdd946464f4a9899160c4b0a1d282e7d5 Merge pull request #58155 from kshitijk4poor/salvage/pr-28062-codex-max-output 3c8c968d162c894e3190a39cbf290fa447da1d6e chore: map huanshan5195 in AUTHOR_MAP for #57601 salvage 67df958dbe06bb10ca16b8686c76baf0de3bac03 fix(custom-provider): emit reasoning_effort at the live profile path a1c17edcbb33ebe66052219c94fc274340ca5165 test: update reasoning-effort docstring guards for new 'max' level f69a33794b6e7a612e546d73223c5f85fd88c8ce fix: forward reasoning_effort for custom providers (GLM-5.2 on ARK) 4651ac64a16a88d7ba29c0a01a968052c06eb243 refactor(ssh): extract shared _is_ssh_remote_tilde_cwd predicate 83fb8ec27765a0fbeba59e69acff4c07c8f4ecf4 fix(ssh): preserve remote tilde cwd 90f84144ed7ed8213860c9e0287106a373e4c746 refactor: gate pre-API compaction through the preflight guard chain af0ce1cf8e9dc728ecea7d1e804b7c8817822772 refactor(mcp): DRY the non-interactive OAuth guard + positive-control test 0c8441c8803edefdb280cbb05c2d52ac9bb0e3cf test(mcp): cover non-interactive fail-fast at OAuth callback boundary (#57836) 755194ffe9a117c70a81505ecf4cade1fbc5af26 fix(mcp): fail fast at OAuth redirect/callback boundary when non-interactive (#57836) 475dd972636904a330f0088f2f5c1e9ee2cc9eb4 fix: re-baseline flush cursor after mid-turn pre-API compaction 1f430e1aa23c8ace76c3506df5005be0edd5b744 fix: recover Codex max-output truncation 8229d7765adc332a857c7fdbb0b4ff88ca6512f0 chore: map lavya@loom.local -> LavyaTandel in AUTHOR_MAP 52cf9dbada1b95876e4a67d2d82984dd3c803835 fix(prompt-caching): align _can_carry_marker with last-part-dict marking 8b797f7a7b0c12141f0d67997e43cfb2e16d3fc7 fix(prompt-caching): skip invalid top-level cache_control on empty assistant/tool messages on OpenRouter 7a648a8bffbdc56d5f0821d9d564eafa68d521c9 fix(telegram): paginate model provider picker 36168f8457e0ca063e24d2dc851a2df890ed7772 feat(errors): fail fast on TLS certificate verification failures with fix hints 7653d71dc92a91025e246863786b1fe6e15a5520 feat(skills): stacked slash-skill invocations — /skill-a /skill-b do XYZ 9157dc2fca519abfece1846f6b1a1e8434ddd2a8 fix(js): set @types/node to node 22, what's required in "engines" d53216ad93d81fe0b0d06640918dd67572801a3d wip fix tests 85d9a24637db4f9d2846d1826a0242d56218d5e4 fix(js): set @types/node to node 22, what's required in "engines" cdd5fc219c103d11f124373ad3e9c70497018ab3 feat(ci): run JS & test tests 5445e42b87b9918d5b1bfa9f4eadd8e4bb10ff37 Merge pull request #57969 from alelpoan/fix/copy-button-tooltip 34325243b4e744554c1fcc2cf9bdcd7895123d95 feat(desktop): ts-ify everything 4bf749fd5f48072257bae3ff65897910d626fb4b fix(desktop): add tooltip and fix scrollbar overlap on tool output copy button 19d4174454624a1ca91bc47b8f2a7ae8c3b4b5d3 feat(gateway): add /sessions search (#57685) 86518638a3da5ae8f5ee15e5fe985e5b332e816a refactor(desktop): localize settled TODO(i18n) literals (#57924) 20c83af66485fc1cc546bae4477ddbbc55bd9d0b Merge pull request #57590 from NousResearch/bb/skills-renovate 914d19b3a9e46b8956c009b572a42b98e110ec6f fix(desktop,gateway,mcp): post-merge — CI contract, review corrections, hub search cd124ad1fae574dcdab8124924f84201d65277da Merge pull request #57913 from NousResearch/bb/desktop-tool-scroll f36cdd9a49d6da87411979a8c9a0dca8bd060bd2 feat(desktop): collapse long tool-call runs into an auto-scrolling window bb76a053869259b4d8d4f352565652cc7313523b Merge pull request #57902 from SHL0MS/feat/unbroker-blocked-tail 5218c8a1d35ac6716056ef515d112cefe2b779d6 blocked-tail pass: blind opt-out default, email fallback, peopleconnect delete-wipes-suppression 5a346903d28005eb38b8f18a2740b804052090d0 time to cook 65415b1a127829ebe9529d4972999fdca1fddcea Merge remote-tracking branch 'origin/main' into bb/skills-renovate 715aa3de8556dd08bbec880cadde49733e801481 refactor(desktop): adopt shared utils + app-wide cleanups 26dca5e54dff02554285bb9d0cbb1a74a2333ad7 Merge pull request #57842 from NousResearch/security/ci-workflow-expression-injection 05c01af68c2e19161a088d780091201e9209eb7c fix: correct detect install method when running from a subtree eb4040242062bc7a24d33eb40cade6c47c3f2030 feat: print install method when running --version 8fa9e6c0133cd776e83a9fd2b6f1ad0fb2b36bdb fix(nix): make `hermes` in developement environment actually work de45b9529d59bea9074b254478a3ddb018fbd934 feat(install): warn pip/Homebrew installs are unsupported (CLI, TUI, desktop) 528159f7aa6a0c234c61685f552cb45f22849c52 Merge pull request #57438 from SHL0MS/feat/unbroker-skill a35ac254374065da0c0426fe4b2a2356f87a37ae add `cdp`: launch/detect operator chrome over CDP for phase-2 browser + webmail f8e36f0f31ba657df34a12796d335bae55728268 field-report fixes: dob pre-warn, .env creds, show cmd, false-positive guards 2abe11a7fe02f3ccb0df53aa89e6af1400d619e7 security(ci): pass untrusted refs through env, not run: interpolation a6b9597d5fb92969d605a858d5f14536e805553a perf(console): cache CLI-surface summaries + bound console worker pool 1e7111d25dc8d6fa361499e162c3262b40bf09ef Use shared ANSI stripping in Hermes Console f7d90edd8be5bd6d58c9dfd494c1199cc73eb4c3 Add dashboard Hermes console UI 4493bba90100455cfbd90591979de54de4012556 Add dashboard Hermes console websocket dcbce869ae4f59b7b0f2f5cba3f1466fe7fae965 Add safe Hermes console REPL a9cd0e07cbe6f411c875d6cfd3c8c356ca90b121 refactor(web_tools): single registry authority for custom-provider availability a3ea73932ab02f57ff8900b260c506930b263c7f chore(release): map iacobs@webflakes.com -> m0n5t3r in AUTHOR_MAP e4105a2ffd525d97ffacab34d044643fb252eae3 test(web_tools): regression for plugin-registered provider availability 0a9d42ce402cc1a4e12dee18a313c1db2e0a02e3 fix(web_tools): delegate backend availability to provider registry def6d6fe1b7b1a214bb385500646ffde8fe82019 test(cron): regression test for run_one_job secret scope fdab380a1ada1e1fc127b3a51d5695f538cb774f fix(cron): run jobs under the profile secret scope 104232979d6ec24e82a42dfbf14ac98f3df3c827 fix(xai): route video-gen local inputs through the shared read guard c1826e2690fe7e4813913f9b230b357b07626e19 fix(image-gen): route local-input credential guard through one shared chokepoint + cover xai (#57698) 587be5b5b49340c560258b136dd98b03904649da fix(image-gen): guard local provider inputs against credential reads 203b5d4cea0c1be18cca51c3935b47eaf84d0582 Merge pull request #57728 from kshitijk4poor/chore/author-map-cocakova ad3261bc772e73e31aa19f993046b125536ebade chore: add AUTHOR_MAP entry for PR #57692 salvage (CocaKova) 22c5048d9c6a3d6e3d6c786ef014a0998ca2a0c3 fix(moa): restore prompt caching for the aggregator and advisors (#57675) 87ae4ae94bc13e302be2a37b30226f2b19909227 fix(update): harden #57659 follow-ups — task restore on failure, --force-venv split, trampoline detection, managed-install health (#57680) 0e9136cb2756f5bead66d45fc3998fbf26031917 chore: add suninrain086 to AUTHOR_MAP for salvaged #50685 0ad4dd60e9ef8dcc434974229a45628e7da5e4fa test(vision): adapt salvaged config-priority tests to async _handle_vision_analyze 149641485c7f5bcb33f6acf11544f0a816d8b054 fix(vision): read auxiliary model from config.yaml before env var 25aa626cb42cfec620083ea69fe12e8afe171ff7 fix(vision): forward custom-endpoint credentials in vision auto-detect 8bf797f1c20f7e4acfafb4457ab3918362dc9673 fix(agent): prefer native vision over auxiliary fallback in auto mode (#29135) b19e32c70200a6dd188bdd278ba15a9a87908e21 Merge pull request #57665 from NousResearch/bb/tts-managed-model-coerce 25d1a077466ef9d42a11680b3d9edafede869ae2 test(gateway): accept kwargs in _decide_image_input_mode stub after #36055 signature change f6a3d2e900f86880891afd58f944c250fd75540a fix(model): preserve named custom provider slug 769469a703d5d76e3d8d6fc10d07196a78cb52ab fix: route gateway images by session model override 5e116285465854b1d149247c84a4d2c2d031b386 fix(image_routing): check stripped custom: provider key for vision override b53ba0e188363800447b7aca4c0a85420c39d1a8 fix(tts): coerce direct-only OpenAI model on the managed audio gateway 7485fe0605a54eb148caf6eb7cf16fc23f18e6b5 fix(dashboard): make .env sensitive-file guard case-insensitive 62882b8e6f717a7b5305a543d7b603c8d41ea82c fix(matrix): isolate per-event failures in _dispatch_sync gather e4dbb67bf58040a905cf3fb830fce41f927df678 fix(security): remove model-controlled delegate ACP transport 1bcc52c14e714471ebe238223a7659fcc238981a fix(dashboard): use pattern match for .env sensitive file guard bc55c201c7563d5514477840506cda6d142f14ba fix(dashboard): block .env files from managed-files API 16332af60b5a5262111f1171c5d85f07463f929d security(gateway): anchor api_server MEDIA tag resolution to safe paths 47764f19f462c0b3a99865255f3b1dfae5098e74 fix(browser): apply private-page guard to browser_cdp frame_id routing 4470d957cb952251827cb1f1ec9c9da309fde903 fix(browser): block Camofox input on private pages b14d75f8afdb624be03cbefd19494ccc850bf367 fix(update): prevent and self-heal half-updated venvs on Windows (#57659) 741bd9ba426a3028692f549adf52007e3beb84aa fix(gateway): resolve queued follow-up session key before native-image buffering bb24ac6f20031383d3b1c289a2b49ef6311587ea fix(gateway): preserve queued native image attachments e88039648813dadc42adf884e87d62cd877ff4fb fix(gateway): key native image handoff by session 44cb0ea9e6089eb9c0d47c07274131fd0695eba1 Merge pull request #57658 from NousResearch/bb/readtitle-race 359518beacf18f251cdad11af24d752639ab3a8d fix(desktop): guard link-title readTitle against destroyed windows 929ba007bbcaf08091faa9f9b193fea3cd15252a feat(desktop): skill Hub in Capabilities — React Query + per-item store 16aa09aca5fa10a2fda864317ff8e4e1163a16bc feat(mcp): first-class MCP tab — catalog, GUI auth/probe/logs, per-tool gating 7e6d60aadccc4d513aaf6e1869952c68b5135d71 feat(desktop): unify Skills/Tools/MCP into the Capabilities page e0325cf769c25c81068150b722f3fbf3010e92e5 feat(desktop): Capabilities foundation — shared utils, master-detail, editors, primitives 662426ec3d569bd2df1bd797136441b20abe2e36 Merge pull request #57636 from NousResearch/bb/desktop-messaging-poll c1e825399cbd289d167b1e157eaaad6333c7fced test(gateway): stub get_compression_tip in stale-guard db mock dfb28cc6315bafa3a9a08714be2ab95b90d1beab refactor(desktop): only poll the transcript when it's a messaging session 52d0d671e79ec1d5727881a6e8519332d04c1a07 fix(desktop): poll messaging sessions so platform traffic appears live 1c4cc00f73f8843f642970c4f35b6aeec22dff5e fix(moa): user_turn fanout — synthetic advisory marker must not count as a user turn (#57598) eb99f82ce49a3a7317243dad11b13543d646ad5f fix(browser): surface launch diagnostics when debug browser never opens the CDP port c74f09352349343238474dcb4678c0ee256b0e5c fix(browser): retry next candidate when debug launch exits early c7103c637ceababd288619d6bc67a58ed0a24dbc feat(desktop): CLI/dashboard parity — skills hub, MCP test/toggle/catalog, maintenance ops, log filters (#57441) 9e044cf795d0bcf8672994570585eac28d727e6e feat(moa): per-preset fanout cadence — user_turn runs advisors once per user turn (#57591) 6eb39c2bbea97941e333e17bec64a8c20cb068ec fix(opencode-go): heal stripped /v1 base_url so non-minimax models stop 404ing (#57585) 372f8195c7f68488fafedf2a57e61188cea380da fix(moa): default temperatures to unset — provider default, like single-model agents (#57440) e1a1dac848681e1360474fd31f3871a484862248 fix(agent): enforce marker-strip invariant with a single terminal sweep (#57491) 3e204bd771f2a167b818d33ece62d214b2b4b2a8 fix(agent): strip _db_persisted when assembling rotation compression transcript (#57491) 5e2b051e60bf2bd483b4273c578c127f54470b73 test(slack): give the MPIM reaction-guard test real teeth accd6720545527ae24a03d8616f9bc71d5744e7a fix(slack): MPIMs (group DMs) obey shared-surface mention gating + reaction guard 42bc07d107cf9f932acc5a00c20aafc003737241 fix(desktop): cancel downloads triggered by link-title fetch window 7e9e13fe55ae5d9fb6c2390afd4869a5241903ce fix(desktop): use symbol-namespace codicon for Model settings nav 88b720ebb43830ee866ad609998e0e9e59cf07cc fix(desktop): use gift codicon for update-available toast 551e5af50dc6597069e57af047213f61e40246d6 fix(config): preserve owner on atomic writes (#56644) e9ce25037414597ed0deea3f0b825b3429ee465a fix(file-tools): preserve container paths for docker file ops (#56637) aaea22f89cab8ce38189af65d629c7d50d112824 fix(unbroker): suppress-first for PeopleConnect (deletion undoes suppression) 3e21cfdebbf790e3b2a89b01084a8aa86914c9a5 fix(desktop): clear stale active todos on turn end AND on rehydration e40175f0692b8b7bc062e139146325d26411acaf fix(desktop): stop macOS Tahoe misplacing the traffic lights 66c3d595d1dbabfa06cad8be4d90db2f78ca3dee feat(desktop): cap overlay inner-page width at 75rem 50db1d6f6d4d209b885cc2dcd2fff2aaa5b74a2f docs(unbroker): point README image link at hermes-agent; sync test count (85) 61176c861ee12e5de8ed6d9d4bb364f32d5f9712 fix(desktop): autosave Mixture-of-Agents preset edits c2828f2b9b5fffa222cbe0df938e6848798b414c feat(skills): add security/unbroker (autonomous data-broker removal) 89acc196067c3a4a8987a8f0d01ed4e08d7daa2d fix(dump): flag API keys visible only to the shell, not the managed backend 64ed99a6e61fbd92858fa66de01259985519b6da fix(webhook): close per-delivery session at the true end of the run (#57423) 4aad27b751dd764bd32aa56fca8375846a0fdba3 fix(desktop): extend startup long-timeout to the whole boot data burst 584d3ae532a07f77c38d24d47a420fadbfb5f29e fix(desktop): extend profile startup REST timeouts (#48504) 4d88facfc1c3cb1923fa16f7877460d91938d1ba fix(desktop): let settings content use full pane width 480a9b3b31f51214d7c34762351c3d98f8500345 feat(mcp): surface MCP server log notifications in agent.log ed4123792c135558e7be2e486505bc569faa2a74 refactor(providers): dedupe extra_headers normalizer + key picker groups by headers ab40e952f31b4da064d879bb7c370ecb60d79e11 fix(providers): pass extra headers to model discovery 703305751dee8b31ce9c6c72b8345f20eee00429 style(memory): flatten comment blocks to single lines 29016a50bcf6587ed5e22409795cc802dfb01b19 perf(memory): run provider config I/O off the event loop 1f94e74a2dfdb4b4dd4a57f341711f3c1f25e5cc refactor(memory): collapse duplicated per-backend field helpers 41e59f6126d49e93a47e8bf027bb18054bdeca55 fix(memory): retry failed config schema loads instead of caching None 0e09cc5cd457467a05f6c7b40863664b966aebaf fix(desktop): remount provider config panel when the provider changes 4d4db4281ee26128a7178bedfdb4670cb61613a1 fix(desktop): submit only edited fields from the full-config modal a9cce6d8448394b7b2c66f62b123ae40edcea596 fix(memory): write honcho config through the plugin's own resolution, locked 80a774f972b1b4dd127b87ccf3ff0b68bf3b356d Merge pull request #57379 from kshitijk4poor/salvage/vllm-local-context 0950dae2faf3acbc64ee938c10c4fd84ad2a4caa Merge remote-tracking branch 'upstream/main' into HEAD 822c8226d7a5b3ab21e21e4292c9a750daed390f refactor(desktop): group memory provider config UI under settings/memory 201b646d672733f75fc8d213f7b5b6c6efbc97de fix(gateway): complete on_session_end coverage across all eviction paths 90b618f48a68d5384b9e5e5753a71e313dd1c123 fix(gateway): keep idle cached agents alive until session actually expires 46ada7ed42a62555ca0c7dda0cbb99a0d9efd9bd Merge pull request #57377 from kshitijk4poor/chore/author-map-31856 1c93799b4917ba058fc46efcefb090a7f896bec3 fix(agent): self-review follow-ups on vLLM local-context salvage e73adb50437a591979e6d63eb1d63b79dbfd267c fix(dashboard): disable ws keepalive ping on loopback to survive event-loop stalls 26edfab004b6a4e09828745badcd46f04e219987 chore: add trismegistus-wanderer to AUTHOR_MAP for PR #31856 salvage eb806c7f5081483b9a901f84b18a3bd690195be2 chore(release): add infinitycrew39 to AUTHOR_MAP (#56431 salvage) b9a197ec59393ebd13b897ed342749a9228dd86d fix(agent): resolve review findings on vLLM local-context salvage 65cb70b8d09c2ae2a87dea754c429687d69f2252 refactor(gateway): add SessionStore.peek_session_id public accessor for webhook close de67f430b23dbc02e3aa943d17385adf01f7c6de chore: map gumclaw@gumroad.com in AUTHOR_MAP for PR #57322 salvage 14882bab7e9ae0b89a3065beb226c89acac80a79 fix(gateway): close webhook sessions on delivery completion so prune can reap them 53063d92b033f7754823905fd76bd26155c1316e test(agent): cover local vLLM context-length resolution cecedcddf3488e7972b4d40b7860f734835a0835 fix(agent): honor live vLLM context limits on local endpoints 048270fa069ff6aa41c01b403ac1eeab34b29628 fix: refresh NVIDIA featured models 9f60467426d71419e767786c28bdd7fe86013289 refactor(slack): extract _is_list_line helper for list-marker checks 033d7bf259c300472110424a1dd4486f51fe5290 fix(slack): guard blank-line list continuation on next-item lookahead d3c8a155cbfd265fd50d0fe126dfd368ea0ba5f6 fix(slack): keep blank-line-separated ordered items in one rich_text_list 2a632807e05425621669fcf7538dc59eefcf3bf1 refactor(memory): move provider config schemas into their plugins 3a122ba4acaabec5768ceddb46da82e43c382d7c fix(usage): capture reasoning_tokens from completion_tokens_details on chat_completions (#57340) 15c8c34c915ef8e9193b35174abcb568850bae88 test(memory): cover Honcho config schema, host-block backend, and panel 4ef0672cf9daf98baafee5b0d120342105cdcb37 feat(desktop): inline memory config panel + full-config modal 101b9f8dcdde8c01ff819c8bb5d82349baa054f2 feat(memory): dispatch /config reads+writes on provider storage backend 94a0cb283e65e0de9605ca9464e46a8be1f0f098 feat(memory): declare Honcho config schema, honcho-first registry ab942330fc627e931577bc7c68ef0ec086e810e4 chore(release): map yingliang-zhang in AUTHOR_MAP for #57335 67472fbaa459e360291ee991dd4cb4496b7d34ba fix(tui_gateway): route setup.runtime_check and setup.status to RPC pool 1501a338c3f1e017f092ecd84da4d2dd49f759aa fix(cli): stop profile-bound backends before deleting so rmtree converges 5a6720b884eb9ab373da8986a0b7ddb571e312e7 fix(desktop,tui-gateway,zai): stop thinking-off from reverting to medium c3f06a8fda6051cea05c0a5301b353a65db7cd29 fix(desktop): refresh profile rail after deletion (#49289) c5e8a60b0aeeb8125ffe2dcd4c4cdf6e782b5ba9 fix(desktop): skip ensureBackend after profile-delete teardown to prevent respawn loop 254328bf56d0f5c249a0b756bc1ff3b66aab7071 fix(auth): remove stale loopback_pkce reference in xAI quarantine removal list 5ef0b8acb0fa3b0bb9d65ae04313b9b64970d7fd feat(auth): make xAI Grok OAuth device-code-only, drop loopback login 472d75193f295e509e9f25e962c59655fb26998a Prevent deleted profile skeleton revival 6cffc37b5ac4467aa41fbdddbba29e0f04876378 feat(desktop): collapse profile rail to a select past 13 profiles (#57306) a2d49de80156cc0e20c1ff5a30c552585f780413 fix(terminal): also set MSYS2_ARG_CONV_EXCL for MSYS2/Cygwin bash fallback 51c01062d4a2e3cdccc1fb1fdf712dd44fd18e2a test(terminal): cover MSYS_NO_PATHCONV defaults on Windows env builders cc2abd570b8c5a842ba5ff77256ee047dd18659c fix(terminal): set MSYS_NO_PATHCONV for Windows Git Bash subprocesses a9b5598909585b851b1ed65f05034033676d1a86 fix(desktop): load remote model options before session fe82b3a774d97db0c4e948217a89f2b055ce73bc fix(desktop): read attachment previews local-first in remote mode c19bfb50ad6fc6368635cb0df8ec81bb820160bb fix(desktop): restore remote file picker attachments eb506e656ab1dd12bcfe39d15581fa4e40ea6ef7 Merge pull request #57267 from NousResearch/bb/desktop-journey-memory-graph 8da0a56ba86a713a49b6fd61c79004aad7580a19 style(desktop): fix pre-existing import-order lint in use-prompt-actions 931e2356af9bdc7ee0996e25ff9afc51216763ad feat(desktop): /journey opens the memory graph overlay instead of printing text 42ca4381316c54394f7e3e078dfc75119fcde9ae style(desktop): fix import ordering + padding lint in remote-artifact files 03406ae2553e802f11399129c3f376a096bbec4f fix(desktop): restore remote artifact rendering 9738870489d04ee168f87263d85922ae2a858d42 fix(desktop): call checkUpdates() in startUpdatePoller so version pill auto-populates 63354edfd79b8f29a7be64ce9363a4e76d16eb9c Merge pull request #57226 from NousResearch/bb/desktop-multiline-slash fb44b519d712e7c8452112dbfcaa5071d56c66e4 fix(desktop): parse multiline slash commands + hand degenerate payloads back 30e947e0a05ef535e4b25a183d8bbe34fd68d1d5 feat(gateway): persist per-session /model overrides across gateway restarts b98baa3039e357d97ccb8d84e6d70b1902a03582 feat(config): extra HTTP headers for LLM API calls (#3526 salvage) 4a09b692ecc385ad48f00694a1e315b8eed120cd feat(api-server): per-client model routing via model_routes (#3176 salvage) ce9aa869fcd636a0d395815d03bab4f7e6ce4f7c feat(commands): /compact alias + --preview/--dry-run flags for /compress (#3243 salvage) fb74ddf7fefa88e1ccc8b824f3700bc61a1d43af fix(i18n): add gateway.verbose.mode_log to all locale catalogs 39bff67957e11ae5ceca7ee8b7d6a057dfd1ac97 feat(gateway): add 'log' option to display.tool_progress 070ac2a71900f30b680ecafd4d68c162e9089a0a fix(status): label provider as custom when config.yaml model.base_url is set 44650a5ce3f4208781495d449fb5c65f5ebc5c46 chore: add AUTHOR_MAP entry for @ajmeese7 (#3219 salvage) c0d694a492e4672454671b06438d0da7b87b0cf9 fix(whatsapp): resolve LID sender IDs to phone numbers in bridge message payload 019950560d43f1058d0966b95480d73ed8daf034 refactor(image-gen): reuse shared image sniffer + raster allowlist in codex backend 460235d5848b1467cf7351cd6bd82078abe53edc test(image-gen): cap Codex reference inputs ecffd290a3f115b33f921505b5190228d1323387 feat(image-gen): support Codex image inputs a4a562ff0c5ef73633dbf6e399a6a99d12003f8c fix(browser): guard Camofox snapshot/vision/images on private pages 0a2d4a6eea796e9ac9a589939fa9ab452a2937ec docs(codex): clarify stale-floor docstring reflects the 10k gate ede4d12561b5a34dddfc1dd2221008992afbb81c test(codex): cover gateway-scale stale timeout floor and TTFB gate cb1ccc57e66636c411e52c38fc8c59953149d7f5 fix(codex): extend stale timeout for gateway-scale tool payloads d733eaa650ba6f91321d562b7f4b26c17045f867 Merge pull request #57007 from kshitijk4poor/chore/author-map-crazyboym-55828 be21e06ab339f53c5eb7a430796738e6a51812bb chore(release): map ai-lab@foxmail.com to CrazyBoyM 3f2a56d1a4aab9511770b81ee595378440376ac0 fix(cli): reliable interrupts, bounded exit, and exit feedback (#57000) 2068754d6f7e03d576293a2357b53ce61eec4af5 feat(api-server): inline MEDIA: image tags as base64 data URLs for remote frontends 88bd1c01e1956ef6ed35ac6cce00e02ec7cf29bb fix(email): harden adapter against malformed IMAP responses c43aa6301d5a203106f9e2ce87de450dde9f1974 feat(gateway): per-channel model and system prompt overrides (Fixes #1955) - ChannelOverride + channel_overrides; session /model > channel > global - Thread/parent lookup; YAML bridge for discord.channel_overrides - Guard channel_overrides when config lacks platforms (test mocks) - Add sampiyonyus@gmail.com to AUTHOR_MAP 0010c14e66cffbed84dfbf1b4a15093f0f8cc76d feat(gateway): per-channel model and system prompt overrides (Fixes #1955) ebef73f6b8478744cd7cbabfd75bb7156e187571 feat(gateway): per-channel model and system prompt overrides (Fixes #1955) 902b0b70e47e844a94aa047f4e58ca9c1a1114c2 test: env-flag 'on' truthy behavior contract (#2863 follow-up) 60039d5a3a950960b1e18e7d6cdf8e2b84172705 fix(config): accept 'on' as truthy for env flags via shared env_var_enabled helper 6546c5864126f4e2483fe30f3a8d5580341b3fab chore: add AUTHOR_MAP entry for @VolodymyrBg (#2861 salvage) bd4007396d0213ab7b2f09484bf526400d53da01 fix(webhook): remove unused payload from delivery state ea5d75befdbf728d2a37be51ecac588d36269ab6 fix(webhook): remove unused payload from delivery state 6e369a37622be1785c94640663752cdb655a1f2a feat(delegation): unify concurrency caps — deprecate max_async_children (#56955) 14639ded7737a3feafc8ed3ba0f30fcfa8f21b04 fix(terminal): stop stripping CLAUDE_CODE_OAUTH_TOKEN from spawned subprocesses (#56935) 8b1ad38ecb8e5002f74bd503efabd1009c84ff56 chore: add AUTHOR_MAP entry for @sahibzada-allahyar (#39227 salvage) 36b7e5e9cc9821a1366f88c7e488b443736373e8 fix(desktop): guard configured-cwd override against active sessions d2de9580e181b3cabb3b84c6e970bd3902eb13d3 fix(desktop): prefer configured workspace cwd b837f07dcd9092105ca56a4d856be91196e09d81 fix(agent): route restore custom-pool match through canonical helper 820a0525750b16cf22eafa550439d8f2b1e81739 fix(agent): keep primary runtime restore on matching credential pool (#56374) fb403a3a730f2a4eab1cfc60ffe854f7ea7c4159 fix(auxiliary): retry transient blips harder + isolate client cache per model (#56889) 71c0622122dfdc977c36b7a5c8fc68e231087f59 chore(release): map kiljadn@gmail.com to designnotdrum for #56480 salvage 46273a55a860995a6e326c905f7f06dfa980b642 docs(toolsets): clarify get_toolset static-view returns None for registry-derived aliases too 80733413f95b5cd900e61f27992c2195a11da124 fix(tools): don't drop a toolset from platform inference when a tool is registered into it 5317993a6dca17f2269cbf79bff88cc912ba92a8 fix(tools): expose static (pre-registry-merge) toolset view for platform inference 6a58badfdc1684f7ad03984234d57ebe09a17fe4 fix(browser): guard Camofox eval private pages f2b8a5d541389e3b7ffc41176615623c64c62a8b test(gateway): assert _record_gateway_session_peer fires only on the persisted split ed6f80a20c9360ec49401f543ec5a9434a573ae5 test(gateway): align fake SessionStore with _record_gateway_session_peer 2a04137322017193e206a105bce29938f4ebf58c fix(gateway): preserve platform + gateway_session_key on /compress temp agent 00ec3b1884c5ee0fbd4e042e5ad7aef7141a0a17 fix(gateway): ignore stale compression session splits d5b4879d4a734b963b0f5d822754094acda44f74 fix(gateway): preserve peer routing across compression recovery e2ffbf0cf45a0f111ccb4873cf73ccd8a794a76b chore(release): add AUTHOR_MAP entries for compression-routing salvage 543d305bbbaf9178162afc687bdd9d3ea87fa9cd feat(moa): add reference_max_tokens to cap advisor output and cut turn latency (#56756) 9be39de0f2afc8adc58f8f37970f26a6d7e734a0 fix(auth): make HERMES_PORTAL_BASE_URL/NOUS_PORTAL_BASE_URL bypass the Portal host allowlist (#56864) 8d84c543d22b3e91b506440d7ac0798a71095d9c fix(auth): make HERMES_PORTAL_BASE_URL/NOUS_PORTAL_BASE_URL bypass the Portal host allowlist 9c1a8395ac2e6bd4d4bec5988505906416a7c564 fix(auth): allow staging Nous Portal host in the refresh allowlist 88d1d6206f399c134d1f4c0b7db27733aaa3c50c fix(streaming): handle completed responses with empty/None choices (#55933) (#56713) 76be77009165cab23f177ba3d6ba14c2c15129fb test(moa): assert aux cap against model resolver, not frozen literal 79512509477209c90aca309b3ab3d9c23de00644 fix(moa): lift hidden Anthropic aux output cap 4d5d9fffd025e306ab3055a6b41dd268a456a211 Merge pull request #56582 from srojk34/fix/vertex-credentials-env-leak 7f64cce96d80c39e3e13d96cfb0a66c3e372d557 security(vertex): route credential/project/region resolution through the profile secret scope 2f7c51a3e2d270bda2f519b521b6b3b2cc17330f Merge pull request #56605 from simpolism/codex/discord-inline-bot-mentions 830860306ded5aa9333e411a608fb6b5c2f76751 Guard browser CDP on private pages 676236bb1d7a3804cb03edc90eb43da81cd8a5f6 fix(agent): honor custom CA certs on aux client + harden TLS resolution 3a2ba959ce2f09cbf3ed58d26f2526c6a98643c6 fix(agent): honor custom CA certs for custom_providers HTTPS endpoints 7e957cbd0b8ad63feeb60fe68e1099abc390ba84 feat(agent): add resolve_httpx_verify for custom CA bundle TLS b3bc302370aadeb792ceb0a899cf6a575ed130bb Merge pull request #56641 from NousResearch/bb/journey-cli-robustness 89cf65ab63988656124770e43cf8defd1ec8799b fix(tui_gateway): strip ANSI from slash-worker output for desktop chat 428b9a0c42dddadd19bddb259b3418fa39177be6 fix(cli): render /journey color instead of leaking raw ANSI ec319e4e3ed4a4b6bde71a734cdc1c98fa8d9953 fix(learning_graph): guard non-dict metadata so /journey can't crash f8a0764305a58ec36853038c5bddab30534dc16f merge: integrate origin/main (card-visibility re-sync) 752ccf1d488986255ce04ca1c7e297e5a5d4c5c0 feat(billing): card visibility + guided add-card path in /topup and /subscription 76a468e51315e7e822990257b284dc8ee938ff38 feat(models): add claude-fable-5, claude-sonnet-5, fugu-ultra to curated OpenRouter + Nous lists (#56617) 7c1a029553d87c43ecff8a3821336bc95872213b chore: release v0.18.0 (2026.7.1) (#56611) e9bceb5ae0c46234c0c66e136ced2c791dcc90d8 fix(discord): ignore reply-ping-only mentions for bot-authored messages 1a0d7878c68420a9b16b9a0b381d22d428f0aa50 security(terminal): strip VERTEX_CREDENTIALS_PATH/GOOGLE_APPLICATION_CREDENTIALS from subprocess env 2a520b191c775f442b25f07d30cbd406699cfb6a merge: integrate origin/main (final-pass fixes re-sync) d0e5a90ef1838c4c22918429ad827a5e7a189f25 fix(billing): narrow the CLI ambiguous-charge catch to indeterminate outcomes (final pass, R2) 3b77f4361ed7c505e408a5d8cff1915dd4fee30f fix(billing): cap the TUI step-up replay to avoid a resume-deadlock (final pass, R1) 60b1f6ce3f26c57dac480265fbf4a38e7a5c3a25 Merge pull request #56526 from srojk34/fix/browser-back-private-network-guard 93c50daf749449d3c5ad71e74ff92ea0f01fc634 merge: integrate origin/main (re-sync for 2nd-pass fixes) 3a5cd02a3f350ae168730c314771204b134ec59a fix(billing): CLI charge-route ambiguous-charge caveat (2nd ultracode pass, BUG B) 96ff097a640eac3c034fe3f7890733b3d7eafc00 fix(billing): guard the step-up resume against double-fire (2nd ultracode pass, BUG A) b225b30d082a062b89664f12ad088837689983ee fix(kanban): route notifier wake via profile chokepoint; harden review findings 3545d7491559be7082a0e1de52fe0fbe27ad747b fix(kanban): i18n wake messages — address review feedback on #54872 c69643026a986041fe488f20e63d93c97045aec5 feat(kanban): route notifications via owning profile + wake creator agent 7322da487f4e16e432978c29862c5297ef6928f9 refactor(codex-runtime): tidy reapply-migration control flow 35eb93c8df3297d30a3ef9650be667080e222c8a fix(codex-runtime): re-running /codex-runtime codex_app_server when already enabled now triggers migration 8af47c61b87eaa7c41eaef60d9606d776023b900 merge: integrate origin/main into sid/tui-billing (re-sync) 118febb4d9a8c83b79d6b21ca9175e2f2dc2a938 Merge pull request #56530 from kshitijk4poor/chore-authormap-54872 ee93fc8e4709aab1b3b3c2309d57c859217f58a1 fix(billing): close CLI subscription money-path holes (ultracode review) 199ebee6bd1563b1310ab27fb2219bcd6de6737d fix(billing): close TUI subscription money-path holes (ultracode review) 4e32743dc8b33d31fbc93332209ee7a20e80fb50 merge: integrate origin/main into sid/tui-billing (re-sync, unblock CI) b23e1c3077db2047725ae3030f7a5d405e642379 refactor(approval): extract is_approval_bypass_active(); use frozen-env bypass in codex routing 0b8e81996f756e8283571269692bd87a3bee5462 fix(codex-app-server): honor approvals.mode/yolo for gateway-context approval routing 06fa84c253faffcd0a659d6b65608baaf6a13cb9 feat(billing): full in-terminal subscription change flow in the classic CLI 30067b44b6988114972f9ec9bf21ffa12f884735 feat(billing): in-terminal step-up + clearer scheduled-change UX (TUI) 148674e27c39f29167d7c8a56244fb22cca243f2 chore: add AUTHOR_MAP entry for zmlgit (PR #54872 salvage) 4612ee946404e1a397ab28bd98493b8283ebbdcc security(browser): re-check private-network guard after browser_back navigation 9be292f1e678437644396b47b3410b433ba3433f fix(desktop): make MoA preset selection persistent, not one-shot (#54670) (#56417) 5eaccf5802be4e46e271b3e7ca8de5302b9741f2 fix(gateway): queue interrupts during in-flight context compression 16414418377ba7ca32fae372726966f81fa9c7ca fix(desktop): don't false-timeout long prompt.submit turns (MoA, deep reasoning) (#56411) eae3700b168500ef300a677ebcb6ebb2f8f6b837 fix(moa): raise aux timeouts to 900s and give the Codex aux path a stable prompt_cache_key (#56395) aa605b66c89cdc021b4f08105a763e79830bcb04 fix(moa): price aggregator turn at its real model so session cost isn't advisor-only (#56394) b795a45b8dd284bf7c657d58e15353820e234a6c fix(compaction): detect and strip merge-into-tail summaries past the delimiter a1a8a967e10d4855605308bbf4a2ff223075a692 fix(compaction): place END MARKER last in merge-into-tail summaries d00762623bec6f4d3e26eb01613cf1c6f2ee9044 fix(i18n): add gateway.resume.blocked_not_owner to all locales 5b3f064259ad3a3477c9705a59c4e1862826c472 security(gateway): fail closed on persisted /resume when caller keys on user_id_alt f1e58d8c1afe4245f468605e78dca38353981f22 security(gateway): allow shared-group resume in persisted /resume fallback 599a6391d4089802e68e5b244881e369ac7765a0 security(gateway): fail closed on no-provenance persisted /resume for non-DM callers 5248877c61f178bde89dcdec6b487ca83d3a661d security(gateway): prove chat/thread origin for persisted /resume; tighten DM scoping 33a5090bf6196e287a51a925200b79e0a3ff121a security(gateway): fail closed on persisted /resume for identity-less callers bb6e216aab5ba81fb7750d317e405cae23be5af8 security(gateway): scope Matrix /resume by thread, not just room a0018cafd0969a5d6a4b7a09004d5dcfbb9a7b35 security(gateway): fail closed on blank-source rows in /resume scoping c4f278c0212efae3c5f9383a76b8a36d334102ec security(gateway): scope /resume and /sessions to the caller's origin (IDOR) 5d613a5638f8ea02b6b9d82fd8573c3d73724358 fix(terminal): route init_session bootstrap cd through Windows path conversion 9ed7252a98607edf0037bdff0c8ee4a3491ae685 fix terminal cwd handling on windows ad5f3341d385ae2448cebd4a455fd01a322f8cbf fix(terminal): prefer Git for Windows bash over Linux bash on Windows ba0bc01d1f740c562b55925e404b82a48809c364 feat(delegate): remove model-facing toolsets arg — subagents always inherit parent's (#56386) 1bfe08145c8e01ab22ad8a9ebe8c62e8faa348de fix(gateway): pairing is a grant that syncs to the allowlist (#23778) (#56381) 04b431064320fc7cf71d8489e91d8ffc15e4256d test(moa): loosen parallel-fan-out timing threshold to tolerate CI jitter (#56377) d68d2716a7492db6853a81632de4d7e8acd69160 fix(tui): use shared harden_import_path guard in slash_worker 8dcbc910bfd131dcfa7b83bf61e11e4807dce4ec fix(tui): guard slash_worker sys.path against local package shadowing 7b45a22ddf9baba2ba74df3c79a7bc5c58bd5bd5 Merge pull request #56382 from kshitijk4poor/chore/authormap-gromykoss-56372 4076cbca59deeff6064d2ae3798f58e43e309090 chore(deps): bump cryptography from 46.0.7 to 48.0.1 3f6c6bd29e25441b8d36fbe934b019df13fff0b1 fix(vertex): surface Vertex on the desktop Keys tab for provider parity c73e74386b20164fa218414131fe8b03f07b3e7c feat(vertex): add Google Vertex AI provider for Gemini (OAuth2) a4af257a6d1a432b07355d7e18a08a1edfa73244 fix(browser): extend private-network guard to browser_console 0ebbfbcc84111b524ea20fb7fee4ad20ba5aebf6 chore: add Gromykoss to AUTHOR_MAP for PR #56372 salvage 65a6a3609332501a687c514526cb5c4a27bb027a fix(patch): preserve file Unicode when unicode_normalized strategy matches 2f167a2b846082f347bc87792c3e5adeaa13ba72 fix: comment accuracy + AUTHOR_MAP for salvaged PR #50204 40dbfa0e3ce85dc0d63f1ebe1319d212c53d3511 fix(gateway): revive gateway on /restart under Restart=on-failure units 0a756165141c6d70122b1877db1bbb39ff0f3259 security(browser): enforce cloud-metadata floor on all backends; CDP is non-local 9f0309504496a82d15b07aef30f8f7bf84cab660 fix(telegram): cap initialize() with per-attempt timeout so unreachable fallback IPs can't hang startup d7391949265234069e43023b00dae6a087f6a84a test(auth): mock new source-aware Nous state read boundary 050e602de39bad3d96e1fa754bfcdc214c592d32 chore(release): map HODLCLONE author for PR #49351 salvage 08d5bf9b06873b5d79cb0d21e10eb8555be1f0b9 fix(gateway): route session model sync through update_session_meta 70f8b96d1742b335abf27e5c1f735f03d2475fab fix: preserve Nous runtime auth path label 19fb1adf444781d6999ce4bb89703bbfcff8ab35 test: avoid OpenRouter dependency in Nous fallback coverage 6ed2f5d76f900abe635c7f5fad3cb8560e30cdcb fix: make Nous Portal access token resolution resilient cfbc7ed1f95aef7a1550381a3fe3682bd3cdfdaf fix(browser): narrow credential-query denylist to unambiguous names 937e56be92346aa1d293c21c4dad0621182435df fix(browser): block bracketed sensitive eval primitives a0beb52a5063e088582f7d748d9c113f081ae5d9 fix(browser): harden browser tool safety boundaries 7eb9716ad7c91c449501234acbdc36d5df2a127c fix(agent): apply persist override to the DB row only, never the live list (#48677) 34de127200331df19ee27224a3e4ee5270a42cb2 fix(auth): widen portal_base_url allowlist guard to runtime credential path f3c5327e6739b5c02087d7d1d2dad149facc69df fix(auth): validate portal_base_url and migrate stale api.nousresearch.com (#44710) 3b41df6d46a84ea5bdcf8b11d0bc024cc83bed14 test(gateway): regression for multi-profile node symlink leak; AUTHOR_MAP 9138176dcda15b9f7ff6656835fcd125a0720afb fix(gateway): don't resolve node symlink into profile dir 50aaa426c1382b5293088a132913e4bcf4432040 fix(gateway): pairing store cannot bypass configured allowlist 03bbd37dd7fbef796d2f9d9e8c54ee190d2ccc57 fix(mcp): stop EventBridge silently dropping sessions.json-only changes 55c8b2c81f96da5e1bce0bb40549f25973c06ec0 chore(release): add AUTHOR_MAP entry for udatny (#29433 salvage) c126a99fc1e2f82a1e23ebe27fb52e26687fdafa fix(subdirectory_hints): catch RuntimeError from Path.expanduser() 18a9467fca1a750e83c7579ee0cd422c082fd77d fix(tui): prevent killpg suicide during MCP shutdown 04eed932eb795ae9292958d83ea9eaea6e3e2ee5 test(gateway): cover auto-resume auth skip + fail-closed 0de67ad604c88eb73526e4e15b6bd534a03678a9 fix(gateway): validate user authorization before auto-resume 74e59b8b689b00b07471d608f3865b721575ed4a fix(security): close abbreviated-flag bypasses in git/sudo approval patterns 723ccda27525ed4a0f92a578b360b31a1612f03f fix(acp): also preserve archived rows on model-switch / restore saves 897240462a7a7425d257a57da6f152e37488e004 fix(acp): stop _persist from deleting compression-archived history b4342a83bb53363049e0fdcf2e6d57666474179a fix(approval): close bare powershell Remove-Item bypass + add ri alias (review) 4b92a8cd3161c51ee38ee9f4b229e8617e702276 fix(approval): detect Windows destructive shell commands 4c2c54c78c3731c3f78787b6c7882eb4aea378d7 fix(matrix): await inbound sync handlers dc1ea005d9dbf7cbe18380755bfc4d4c08df9553 fix+test(codex): self-persist projected turns; keep agent_persisted=True 5558382457dd5509121f8675cdc4302448413361 fix(codex): persist app-server turns to session DB (fixes starved recall) a76aa6198cf72dae995e7b2a38ee61be8f272eb9 fix(cli): flush un-persisted messages before /resume and /branch end the old session 154c382d65926f296d339ce9cbc1e68225080c52 fix(gateway): recover from truncated responses 74ae07b61285e32e2814e8bf79fa59ab1e98d0aa fix(gateway): normalize empty agent responses in inner runner early-return 9cf47fef54f2e293a7f6c59ef50bbef0d0e3cb55 fix(auxiliary_client): demote the 2 sibling routing fall-throughs too (review) c0d3ceb17e02d779ee4956adcb792d7a568a855f fix(auxiliary_client): dedup resolve_provider_client fall-through warnings fb7a38ad213b7dc8cc7a9c5bbba3326af8bd0175 fix(macos): compose launchd reload retry with _launchctl_bootstrap + drain-aware window 7a7d19e73bcbf78820cf3e4312fdfec103fbfac7 fix(macos): retry launchd reload on transient bootstrap failure d4e8c358c0f605d83cca0fb4d1f781925a0c1ee2 Merge pull request #56330 from kshitijk4poor/chore/authormap-valenteff 3b739b990b3f624a6cbd823c6b91bf27d83a694a fix(title_generator): strip think blocks from LLM output before extracting title 037e389c4f70301369adb2cf12368e5642f8dbe9 Merge pull request #56325 from kshitijk4poor/chore/authormap-session-persist 314cf43d500ec39a0eec241b24cc1623db90a316 test(matrix): assert real device_id in query_keys, not just guard-skip 09dbe76955dd65b102827bdbed48a3d08394e856 fix(matrix): reset _device_id_unverified at start of connect() 9048457eabb4ec95ec0321ba580fc32b4cfa7b67 fix(matrix): device_id fallback prevents E2EE init failure on fresh bot accounts 2d8d08cae691b6774df1f50ee3cb4667ac6a5283 fix(api-server): require auth for /health/detailed and fail closed on weak keys 9c870548e378567924c460837451a924377e9f96 chore: add AUTHOR_MAP entry for valenteff (#53277 salvage) 5126902f1d77ccca0fb7b0f9c780d9b80e6a4fe2 fix(title): honor configured auxiliary timeout b3f55c20374434c0c616be9b6ed648f3e3886db4 chore: add AUTHOR_MAP entries for session-persistence salvage batch 5178b3f056461e637e55b3894b707aad2487aa81 fix(code-exec): bind execute_code tool socket to a per-session RPC token 5de65624d13f61211ed89e7a3a2805f9bae88c18 fix(moa): capture streamed aggregator output into full-turn traces (#56312) 81595cd588f21b2a92705649402ba8e55d7dd46c fix(dashboard): run plugin gate after auth + enable example fixture b2e0086f1b9b17eb11f5a93f1cff14c5f9368ca0 fix(dashboard): enforce plugin disabled gate at request time and for bundled assets 7cff95644d022d17109fa0fddb8f6681c88f58db fix(dashboard): gate plugin asset serving and API mount on plugins.enabled 8415c4703a31e49ca4611ad3a5d6ce996c08aefe Merge pull request #56317 from kshitijk4poor/chore/authormap-bitcryptic d3c866746234ed3de27732de696328c328317fb9 fix(slack): authorize bot/workflow senders before the no-user-id guard fcbf850f337239ffc9729897b6f570e581ec52f3 chore: add AUTHOR_MAP entry for bitcryptic-gw (#53997 salvage) 27347b2239161fce8b7dcc1feb67ebee48622939 fix(gateway): align resume safety-net note with canonical recovery wording c2db3ed7d8b02e290f1eec7632feeafb860af1f0 fix(gateway): recover resume_pending sessions instead of sending a blank turn d1d1d819006da82a1c26ec684a85bdd4d0e0c5c6 fix(gateway): repair sibling tests + harden _adapter_for_source after fail-closed flip 49a87bcd1e226c0f6c8961baa0987b5ea35bb23e chore(release): map SahilRakhaiya05 contributor email for #44073 salvage bb304b491407054a847a6fae6eef6db688efb7bf fix(gateway): fail-closed external-surface defaults + profile-aware multiplex authz 8e94e8f8821986b5e94200936c1b6bc2b603487f fix(discord): tag unverified channel-context senders like Slack threads 23518a5e02475ad8cbf18015147dff2329f4a5c7 test(review): add integration guards for the two isolation wirings (review) e2fa509bf3d63d026cbe6e2a34c13fd913526eb9 fix(review): isolate the background-review fork from the canonical session 242c9639a8961d4e29a96196dff3ce686c38a30f fix(cron): prevent multi-target delivery loop crash on per-target failure d3010b74db0544a2dc0679f2f05fe6de35817e8b test(agent): strengthen id-reuse regression + refresh flush docstring (review) e4c6d1b22bd33e3a180099d0132e16c0ef775b67 fix(agent): persist messages by intrinsic marker to stop id() reuse data loss 1d6645b17f57da512d2631d7ea10cac24ff1041e Merge pull request #56296 from kshitijk4poor/fix/gateway-force-exit-pidlock-release b7adad1a726bec5f24b4961a87bfd14084e00b8e test(error-classifier): parametrize 5xx overflow test over 500/502/503/529 a04b7024ffd249c07a231c22bbbb608c5f410d86 fix(error-classifier): route 5xx context-overflow into compression 74809b4e9465a6e576634ba0fcf8e9c97e6f026e fix(cli): reap dead-locked worktrees so .worktrees/ can't grow unbounded (#56288) 5c2dccd06fdb0bb9a53d2101e8e8d6ca6e35a62b chore(release): map kangsoo-bit author for PR #47508 salvage 7a2369718a126f624357430a3defce1a1aec668d fix(telegram): keep polling alive during transient bootstrap outages 9dd6451c80925c62b553510c36bd7fdf6fa90c3b chore(release): add WXBR to AUTHOR_MAP for #46183 salvage 59e7e9d00788435d6d6a3dbd0530e7aa259d7ff4 fix(agent): persist recovered final responses df27267ed72cf495e2cbd7c3f19c9e46fb3cb128 fix(gateway): release PID file + runtime lock in the force-exit backstop e23f723389ed4c8da1f72e827d26642a077c6fbb fix: make streaming reasoning-tag filter case-insensitive f049227f31f9f15f4a6feaf188312db1318245d9 fix(state): order conversation replay by id, not timestamp cde3ca4ebf59e42a422c2239d917b5124a59ec5e fix(gateway): widen force-exit to SystemExit paths + os._exit regression tests (#53107) 1c350728ec3d34f49b34de3b6601f5b7fbecd238 chore(release): map Lazymonter into AUTHOR_MAP for PR #42914 salvage 8feeb0ccb8064460dbe404d3e5e4b12df49b8a7f fix(gateway): retry launchd bootstrap after bootout on EIO for install/start 69f08c2eb5a2a68a072debd3e7f274141b6b98bf fix(telegram): guard _post_connect_task access for object.__new__ test pattern 3362bdb4e5c9d01521feb3f8d6b4390ee8e95dd5 fix(telegram): defer post-connect housekeeping off the connect path 122e5bc0373e8df65db751d5d820445aec275a95 fix(agent): retry 413 after stripping vision payloads (#47339) 2b8adb8683f1234863a372f5af31829ee2234be2 chore(release): map tgmerritt author for PR #43553 salvage 320c587256aa5a0a73822abb2a9733ece8c5794c fix(context): parse vLLM's token-based output-cap error format a1f62f477779defd11b6cefea628706df5580ad7 fix(gateway): freshness-gate resume_pending against per-message zombies ac3f4aed9620992d319975cd56ebadccd58ee4d4 docs(cron): correct stale 'no new seed code' comments for in_channel 751a300fca914c6ebabf046b512d4abe7658046b docs(cron): scope in_channel to channels; document DM continuation knob 2c84fb42b0478f3f5e4d0a3657bd55bbf38ca393 fix(cron/slack): CREATE the flat session for in_channel (mirror only appends) 4b4349eb9a904d9babf519e0a580f960311c6035 feat(cron/slack): flat in-channel continuable cron delivery surface daf4f1a7a917b3ff82a6e2f02e45d4d88c63aa2e fix(tools): close the same session leak on the hermes_subprocess_env spawn surface (review) cc395e8050dffe5c4cbb85acaca1a8fec2307e52 fix(gateway): close cross-session HERMES_SESSION_* leak into subprocess env e3819a41432a9ab422a6badfbe6338d194e8c5ec test(anthropic): add adjacency behavior test for #52145 + fix vacuous refresh-UA test (review) 5efbd7cb05519d112bfd045371e600af19f7e12d test(anthropic): scope OAuth-UA source check to header lines, not any mention 49e129e4950d3b53ef8eea5c68b0ce7811f6f95c fix(anthropic): use claude-code/ UA prefix for OAuth to avoid 404 (#48534) 5881791adc596b9f6093c506bcfe99e3a53a5890 fix(adapter): enforce tool_use/tool_result adjacency in _strip_orphaned_tool_blocks ede5c09f3b1a16a9eacc69da69cfa02bd89e1b35 docs(disk-cleanup): clarify cron output-root protection is exact-match d173e8c3a76bcd8ca86df6861fb1e1349872e560 fix: protect cron output root from cleanup 7f71a48a3a9b2e309420fcf5ab7799c21e4219b2 fix(cron): release TERMINAL_CWD lock even when run_job body raises abc349bd79c8642617e661751bbb98656da6b1d9 fix(cron): isolate per-job TERMINAL_CWD from concurrent cron jobs db0fd8f290dcc3ec4eba590a6ce3693e9a4c26f6 fix(security): use caller package root for deregister opt-in policy lookup e07768a53f8207396beb6cf6e5d5cf028f322c2e fix(gateway): strip orphan think-tag close tags in progressive stream 6a6fd4211163a25b9a343913f650b991bbd64d19 fix(security): block subshell/brace-group wrappers at the hardline floor 1d94e2f9ecedd8539f3d82d0335a7ea28d2e06e3 chore(deps): bump pytest from 9.0.2 to 9.0.3 6d1291f2ccb3fc45630d33cad1d36ba5f4eac41a chore(deps): bump aiohttp to patched 3.14.1 (from 3.14.0) 6c37b2c7855dd69db01c3643bb390a734559f54c security(deps): enforce aiohttp CVE floor on all lazy messaging paths + coverage guard 828f33e6b1e3b2aab8ad8aa083f167f68b141e59 fix(ci): map contributor email for attribution check 6f956d74056bdd6777e82650595476255553d153 test(deps): guard pyproject<->lazy_deps pin consistency db57cbbaf63cb4b01ad12d7c755a07445c1accff security(deps): bump aiohttp to 3.14.0, anthropic to 0.87.0; pin cryptography floor b48cacb97baeee3bd0c12b6b940b0e555dd3ed0e fix(gateway,cron): guard cron model-tool path + add auto-resume loop breaker (#30719) c71f81695612f4a9bbe22a4e0a68b94ed75b5b36 fix(compression): clear all per-session state in on_session_end, not just _previous_summary 51feecc2b16636f3df1f643cb00a674a9038d8f8 fix(security): block shell-collapse rm -rf / spellings at the hardline floor d15a288812087254eee0fc2587b8b0a915c36423 chore(release): map arthurzhang author for PR #34718 salvage e13b6ce1c676e6bde7a83b78c5c45532d7f041d2 test(redact): cover Slack App-Level (xapp-) token redaction fdb9620ac492a332084fd7f53f0acc2c396125a4 security(agent): redact Slack App-Level (xapp-) tokens cc7d20d6838343f8acc70aecf207bae22dde4a88 feat(raft): add gateway setup wizard da6d5fcd13af2adb6ce7961e06f85cf714fde7f5 fix(auth): serialize Codex OAuth pool refresh under the auth-store lock (#56233) a8a97c358feee4ee546670691f6f72e8812f9d3a fix(matrix): block unsafe image redirects per-hop 868fa9566a855e316e79a3921ac0a55cd68a380f fix(security): block /proc/*/auxv and /proc/*/pagemap read leaks 64e6b98ba86b78740676972991cd0e1059320a55 fix(security): extend /proc read block to smaps, smaps_rollup, numa_maps, mem 275e293f5431fcac4118d1fcd03bb65f6dd7953e fix(matrix): decline dead/abandoned invites instead of retrying forever (#56222) 88d6e833f19ee7aa94cb24945f754c2a362519f5 fix(agent): wrap list-type untrusted content in untrusted_tool_result 0c0b4b6989f7f3c475d776a712e7991200a1a223 fix(security): collapse $IFS whitespace obfuscation before approval checks 10a54ccc2c5d07959b099336eef392aca7033754 fix(security): anchor @file context refs to canonical read deny-list 53b017f03e5490d0543c6b2be3b220a4a822c5e3 refactor(gateway): share error-text blob between not_found classifiers 01e681aa48fbeceb2a5b81c80029ef33912670f7 docs: unify /new and /reset rows in gateway slash-commands table (#56235) 8f1d22d7ed61d0421de2209e94f84aedc9badaf7 chore(release): map r266-tech contributor noreply email for #55780 salvage 46f45104c4a2fe8f315494ae8472bf9f0d1445e8 fix(gateway): don't mark an entire chat dead on thread/message-level not_found 4580c03e7d5ee6f50861dc50c1bfafcdfbb7d06e test(gateway): align salvaged #54947-cluster tests with async cache helper 116a63d3a05c17f64b7e05ac1e3f5a24c58aeba4 chore(release): map jcjc81 + Tranquil-Flow in AUTHOR_MAP for #54947 cluster salvage e7562c394ff8d646855f312afe2afb9c19228de4 fix(gateway): skip cross-process guard on session_id switch under same session_key (#54947) aa4731598cdd0c5d2ef30d507328bc8d8db476c4 fix(gateway): re-baseline agent cache count after first-turn session_meta 6bc0a7ce80cef1fe2dac54a9e03e68e121fbd405 test(gateway): pin in-band follow-up re-baseline boundary + placement b4cacba6ae34ba20a16508d5d44807e5331fa728 fix(gateway): re-baseline agent-cache message_count before in-band queued follow-up turn 22a137ed407a5549dd00d24e419a8527e92f5137 fix(agent): prefer late-completing real result over timeout message (review) c1784e909326971d485ac6435d1f2d6c0948704b fix(agent): bound concurrent tool execution with a wall-clock deadline 913e661a0947a72965cd62fb7f843f7b91bfd17f fix(cache): stop verification-loop synthetic nudges from persisting (#56194) 522a5e93b2873f896b57ddbd9f42af336eccc0a6 chore(release): map x9x9x9x9x9x91 for #49247 salvage 24cb80fd726ae0ca7f31f5005475541fc78be58c test(provider): pin api.anthropic.com host on fallback api_mode 18c61bb8cfaa2d06cb8810081bc528406b04cec3 fix(provider): match api.anthropic.com host on fallback api_mode detection 9efe01c3a0d7eb435b99f573bf5422a1f87933db test(runtime): pin Anthropic OAuth → /v1/messages routing across runtime branches a2251b40ebb22721d9255fb8653acba6fd6cad7f test(provider): pin api.anthropic.com → anthropic_messages URL detection a344c92050ca2fe96989c8d275cc1df1c722eabf fix(provider): route api.anthropic.com to anthropic_messages api_mode (#32243) f981d47cb000dc9463fc80f5505c68369c662115 fix(gateway): prevent Discord disconnects from blocking event loop 91982408c396feae186db269ee10df03175ccc00 Merge remote-tracking branch 'origin/main' into fix/cron-inchannel-continuable d57a4c197cc9c0bc2768890be41c90500a62de4b fix(tools): stop _strategy_exact emitting overlapping matches (#56211) ea533e7f418b0eb658732d04ee4c5c2284b0f19b chore(release): map justin-cyhuang contributor email for #31960 salvage 74d2660aeb23b9b6233ccea6ea89f5c82b9c468b fix(gateway): await async post-delivery callbacks in chained wrapper 8b14080e3019267b461efab7dcc401c4a04d39b5 test(tui): pin bundle shape to prevent #31227 from regressing 53d2c4191f5228d107593ea2db3addadbc01954c docs(tui): clarify why @hermes/ink is aliased to source in build.mjs 18297899d7088e291e4ca32a99c9c3d6e9abc7c1 fix(tui): drop ink-text-input re-export from @hermes/ink entry-exports (#31227) a658f3b28b5b66492c13aee6835b07d4a2717ba4 fix(security): strip dynamic Hermes secrets from all subprocess spawn env 053424c4865db0e8cc6ef9a8c2f49bf8882afd45 fix(agent): preserve final_response on failure returns 43edbae638b5068e428ca82b7f9d6c1266050e25 fix(telegram): widen NoneType reconnect guard to the conflict-retry path fb8efbb4a8a3734638cb4118ccb64e2d142f46c8 fix(gateway): ignore stale fatal-error notifications from superseded adapters a682091044955167c9a728f9641ff279c96a73a7 fix(telegram): close reconnect races that leave adapter half-destroyed 259e6b87a73911eca0e71a33a81381801364868a fix(teams-pipeline): reject dot-only recording display_name ac18a8658b2e4a745ac54d6fd426b233fa4f760f test(teams-pipeline): cover path traversal sanitization 3590543312a12334b06dabbc47d623406999a9c2 fix(security): strip directory components from Teams recording display_name to prevent path traversal 6d30f8c0abb29159a4f273f005e8fd27ca53c272 chore: add AUTHOR_MAP entry for PR #52534 salvage (@qWaitCrypto) e1ff736f2671800c29de8bff49fa41deaaa1ec1e fix(anthropic): preserve ordered replay cache markers 80d71e8d2e045f1e7d5f0f3541eeb6f2ae6c7198 fix(anthropic): preserve tool use cache markers 26b776c046cbbe5a1c6884f79cc75f37115ee4ce docs(cron): scope in_channel to channels; document DM continuation knob a2d6f05d1bfb6a6b8b8e95ad5b7ced17cf1b00ce fix(moa): append reference block at end of aggregator prompt for KV-cache reuse 670032ae71408e20e318b054805ed1ddd6b025ec fix(security): block shell-collapse rm -rf / spellings at the hardline floor 49cb06c07a701f89fa9b35eb871b8cafabe33265 chore(release): map sasquatch9818 for PR #41198 salvage 020d263ef6e8b3f52fa830d3da0001a7b2f4c597 fix(agent): defang untrusted-tool-result delimiter against tag injection 7534b5be2c823f8c0faa90125be8734207b63bb0 fix(security): anchor rm hardline rules to command position (#56193) 6e97f5c3f83d0e9d552a974539a4fe927fa7d484 test(compressor): tidy blank-line spacing + assert placeholder never overwrites text 8f4d195d5f5aa3ba8fc89ee3cdd2dd4b41c7d582 fix(compressor): pin summary role to user when only system prompt is protected (#52160) 82ac7e16b822582387fc2236cba251cdb33b3058 fix(compression): preserve network/auth abort flags across cooldown re-entry (#29559) 32b23bfb08138a8010dadd7b568d3aad40c17284 fix(compressor): strip orphan tool_calls instead of inserting stubs (#51218) 58ea7f907117f934e667024d6775188a2ac03033 chore(release): map claudlos contributor email for #52351 salvage 1b7e781d21ad96c85f7a896701b4f19572d4afd0 security(cron): fail closed in scheduler backstop when validator errors b24708eda01f7994f151b145cb723a03272c7ded security(cron): block base_url overrides that exfiltrate provider credentials a56aa9ac47b0fd52e50a40b1812728ee16bee873 fix(tui_gateway): reject negative truncate_before_user_ordinal to prevent silent history loss 01bf61c865c31d47be6cd4cfcc3ecef1a28aba0b fix(runtime): honor NOUS_INFERENCE_BASE_URL across pool/explicit/aux paths f70abae606034afe658c2622877298f775f2ef63 chore(release): map kernel-t1 for .env sanitizer salvage (#41349) b944c6e821c2177eac6da857c99ff24566aa56b0 fix(cli): stop .env sanitizer from splitting secrets that embed a known KEY= 8b11074a11fe5eb8ede4f7f49f7b7087adaea4d6 test(cron): apply run_job patches via ExitStack, not a positional list (#56192) db2ac840c1ebb59156ab1262ab2b88b5768bbdd8 chore(release): map kyzcreig@gmail.com in AUTHOR_MAP 2296fec2103a9bd9486717a242a94cb44f433b88 fix(auxiliary): treat aux .model: auto as sentinel, not a literal model id d5d7cab2b62afc5289157ffcf46813c3561a5b8d fix(gateway): persist compressed transcript before repointing /compress session 843a3be7d6bad2b19babbb225e56056c8971ff19 chore(attribution): map baris@writeme.com -> isair for salvaged #50124 a23aa4320e63db811d3f80ac3f1a2956282d2c53 fix(gateway): move handoff_state index to DEFERRED_INDEX_SQL 0695a6bcecd5b9a760975d73e6664b5787996f55 fix(state): periodically merge FTS5 segments to curb write-lock contention a56bfeb2cbd4278fcaf85122a7fec1fc10ce172b chore(release): map approval-bypass PR contributors dc8b5b4f47148e90ca96d625ffcd8d9759262aa9 fix(approval): detect encoding-based dangerous command bypass (#30100) 4b5fce66f56c920a30a4d8aa6236f7f2720b4131 fix(approval): flag remote content via command substitution (#26964) 1ebc56ca396a167cfb9ea9975d48c5ef3d12db75 fix(approval): detect shell-expanded command names (#36846) 907cbba885601e9f61269a89e680146d0b5c5572 chore(release): add Vesna-9 to AUTHOR_MAP for #41274 salvage 17f07aebdc74e325d5faf030abbc0d863b590df1 fix(security): close shell line-continuation bypass in command detection e00800fc89e761382326c3a5eef8f4cccfbbc205 feat(classifier): Anthropic-specific guidance for subscription exhaustion 5e64dd9a98ffe3b39b0073fdcc0b7b52bc8d8bc9 chore: map charleneleong84 email to AUTHOR_MAP for #11736 salvage ea9e8d6e8c80fbdd0b0b4864b833d2bfd3b429bb fix(classifier): treat Anthropic "out of extra usage" 400 as billing 12556a9a77ea0697a661702d00cd6e4c59a5c832 chore(scripts): drop Open WebUI local bootstrap script (#56178) 84c724d69296b8bfac7d96d0ea76192f2629cf1c fix(cron): commit one-shot dispatch before side effect to stop crash re-fire loop (#56177) 80d0ff8da598328e02ab198b76d50c5523a592c8 chore: add AUTHOR_MAP entry for PR #40978 salvage (@friendshipisover) 1d8bd73414f5e6930f9cb8fb1c8852f449bfba4f fix(approval): treat # as comment boundary only when whitespace-preceded 7bfdc0bca6c33495cefbe00226189072e9ca5201 fix(security): close env/config write-deny bypass via trailing arg or comment 83ae65487e092e500ab9ac021eabe36041326468 test(browser): cover guard-inactive + camofox short-circuit paths; fix blank lines 3e4c13825176a357bff0af4784860303b08b9dc8 fix(browser): block private-page interactions after eval navigation d578b6165dc0b9b3f41364345b09999bc2ba34d3 fix(api_server): pop fallback model kwarg to prevent AIAgent collision ce9d180a94aa8e45ac964fac854f44edc12f04ad chore: add redactdeveloper to AUTHOR_MAP for PR #36897 salvage 6b21a935af24b7b3c4ee2370598471aa8978a243 fix(doctor): ignore disabled toolsets in missing-API-key summary b94397fe7652a22faced9036c9450c6536eab451 fix(cli): route /sessions and /history through prompt_toolkit-safe printing 081c91c1472422b802c1b2c8926c1a4230b2881f chore: add AUTHOR_MAP entry for PR #40773 salvage (rrevenanttt) a81b519d41147cf347ad90e9e4be169dbdf9d852 fix(security): close hardline rm bypass via quoted paths and ${HOME} 32bc36522e9f974167640c5101eec979cba63c79 fix(cron): use shared get_fallback_chain in job runner (#36734) 5505dbbf43a480a31e35ac4500f0584519e2484d fix(telegram): accept both list and mapping shapes for group_topics config 42d017469996dfea8e4526b60e878ff6feb52ce5 fix(security): denylist ~/.hermes/mcp-tokens/ for media delivery ee710db135563c24a7b69728b0ce3f263b2d5bd8 fix(compressor): skip context-summary markers as last-user tail anchor 500c2b1e46e46684ddfb1f3464a4fe3a0fb060a0 fix(security): close SSRF redirect-guard bypass across all httpx download hooks e09ff88d025d7346e3496467047eb85fd70931b2 fix(browser): close remaining CDP-URL leak paths in supervisor (review) c626dded13b8bf74fac551636e63b7dd51c8ea10 refactor(redact): consolidate CDP-URL log redaction into one chokepoint 265da9cadbd776aaf4dffc96d6d702cf6bfb8190 fix(browser): redact CDP URL token in _create_cdp_session log and supervisor timeout f2a528fb597b1a6877dac6b0d0faf81947c5e957 fix(agent): never persist empty-response recovery scaffolding 8db6ed7bd9a6db418aa3a4cfe8e718b8bc70b5d3 fix(context): clamp -1 post-compression sentinel in sibling status paths b6d8fc41c8d186116531df6cf9bd1cc25ce4e602 fix(tui_gateway): clamp -1 post-compression sentinel in context_used 83b7c52ece76b73ee878e9336722572e7d273cab fix(tui_gateway): don't fall back context_used to cumulative session_total_tokens 6c3545d9e9faa2fee5d536be58b5495265999e1f test(cron): fix _make_run_job_patches index drift after env-seam split 836732f54f7235d8cbae01f5cd4e1b86b0b70b49 fix(cron): null-safe deliver in cron list + re-resolve BSM secrets per run cf427ccf0867262ec8c66d25d4b6b8c14c489c85 chore: add AUTHOR_MAP entry for PR #35130 salvage (@jnibarger01) 060779bb762a68524e13758b1b8cd08129417803 fix: bound threat-pattern/FTS5 regex input and cover V4A Move-File edits 8e492b5567b72daaaf235875b6f06b43fe057f00 fix(file): block credential paths from search results deb4629764372049d47fb8ba29bf50ed21109bc3 chore: add AUTHOR_MAP entry for PR #30491 salvage (MattKotsenas) dd22c2f5333eff799c670f64b9d494594fe5831b fix(mcp): preserve 'definitions' as a property name in tool schemas bc6cd4692513f3e3d4416295a9eb299883dd3baa fix(agent): restrict todo hydration to paired assistant todo calls 8d3c4501263886fa2ca91e59b75b9d578a4685cd refactor(gateway): reuse looks_like_telegram_private_chat_id helper 8341b7212282f4316532254957cd5fbf37c16630 fix(gateway): bind Telegram handoffs to DM topics bcfc7458fa6df22b670ad59500c3007af29d595c fix remote sync-back credential overwrite 2475a554d5f56c3a5abe6d40e07d0d979dcc9eb1 test: adapt salvaged SSRF test to current web_extract_tool signature 2e12401ed436309b59e813bf9444c8323ef05171 fix(web): re-check Firecrawl final URLs for SSRF 7136b5382a3b85804789f5255d16e0f2f896a06a chore: add JustinOhms to release AUTHOR_MAP for PR #24469 salvage 8f2131190632ea09cbacdb45568b05709bace4e8 fix(delegation): route native-SDK providers through runtime resolver; fail on '(empty)' sentinel 852c9b3cb2ce2f00a2403434a84fdbd7ebf95fda fix(bluebubbles): drop unused with=participants from chat query c279706d3374f7822afde6297a434eb5f4488226 fix(bluebubbles): drop participant-address fallback in _resolve_chat_guid 66325a77001179c16edfa93882de77a12aa152bc fix(api-server): scope run approvals by run id c8e5f999c2b02c45c8d4531bd7721b745bbd4702 fix(cli,tui-gateway): sanitize env and redact output in exec quick commands 55d92516c8eac87dd4fecf2c68273e62e893ead0 fix(skills): publish fetchable metadata for official skills 54f32af4a7f78c6be5be5fddc21af667c411e80f fix(security): require explicit consent before uploading debug logs 3aebdb1d2349f1b228aa0478fce2e2fe91827278 chore: add AUTHOR_MAP entry for PR #22523 salvage (@H2KFORGIVEN) fc2fac73bd1a843b9ba7737b6396fa9b01156a8f fix(compressor): prevent orphan user turn after compaction via turn-pair preservation e71f9ad0bb0192cf6bcc2f3ad79f4f44a5f30872 fix(tui): close busy-flag race that stuck queue-mode back-to-back sends 14a3e280a18027503b18da5667812c0f129a3660 fix(cron/slack): CREATE the flat session for in_channel (mirror only appends) 8d78be54603338f49a9b271372b9354902199e7a revert: back out prompt_caching.enabled toggle (#56105) for re-evaluation (#56126) 56d4bfe4ba839e38820d36b6402e0fe607819eea fix(approval): honour tirith_fail_open in cron-deny tirith path + tests c50f517bffff5c9aac1e00a1f895372861a8c94a fix(approval): run tirith check in cron-deny mode to catch content-level threats c1a0c0ada7d2c0ead5e67f344404c50f08242a7a fix(cli): re-land interrupt_queue drain so finished turns flush stray input 909330a61c028b815d9fa5ddda63101fb187d2a7 test(discord): fix double-dispatch dedup test for fail-closed auto-thread 50a7dce6bd509ff430dce88de8a3c342ced07f3c fix(discord): auto-thread failure must not silently fall back to inline reply a537baa81dcd239286cdab0511a6ece07724f3cc fix(matrix): route text-only send_message through adapter for E2EE support cc1e4c32c0227e808821822a4f6206d317973528 fix(telegram): normalize thread id in group gating via shared helper cdd553945ebd4c19676de471b9098848e9a935cd fix(gateway): guard stale /restart redelivery when dedup marker is missing (#56107) 36f9f50145b564b7ff0e28d4db535f058e040f2c fix(caching): honor prompt_caching.enabled across model switch + fallback c1c1a12fe61399acd696886efb441a3445f8b5e3 fix: allow disabling prompt caching 88c9dfecb23c372c20e760057e44856188b91566 docs(slack): correct block_kit docstrings to reflect native table blocks 7c7b489813184c54dc3d57a0a7d1c37182c4d8ff feat(slack): render markdown tables as native Block Kit table blocks b080b93ad87428221f7bf40360d11fc13e837727 feat(slack): opt-in Block Kit rendering for agent messages 2e8748ed225589958805799ff69eaef10bafb296 feat(moa): opt-in full-turn trace persistence to JSONL (#56101) 5f7deeba84a0120ac94a519bb37acd19091fd5f0 fix(gateway): suppress NO_REPLY/[SILENT] markers on the streaming path 703d7162289f6e75dd83b81cacc34c096d380a48 feat(slack): render markdown tables as native Block Kit table blocks 6f499c729b55b143b7c04c40a0d156a8a182cd6d feat(cron/slack): flat in-channel continuable cron delivery surface 3bdb23de10d866b3e65eeb1748265d6e120e9b10 fix(moa): count reference (advisor) fan-out token usage + cost (#56087) cbc27c8ef89fc8439286be1ea7500f4f2d190f45 feat(slack): opt-in Block Kit rendering for agent messages 1285c1b453cb9b000dd74f2b179d950d4e55ee1b fix(tui): close busy-flag race that stuck queue-mode back-to-back sends b561815eb3dc390f890170da25f2a3a8f97c7910 fix(gateway): suppress NO_REPLY/[SILENT] markers on the streaming path 1b54d38e759731a467aa684f320024101824ab58 fix(desktop): reliably persist cloud org, unselect cloud on mode switch, keep Change-org button after restore 44ddc552f5e054759a6970af8997ea588a9d81c9 Merge pull request #56029 from NousResearch/fix/desktop-drop-folder-attach 34d7d3fe2e5fd00f921f9894c3dc2b3d68b9d855 feat(desktop): gate the Hermes Cloud gateway selector behind a BETA env flag 7e1e9d62c4fc8142a54d4aacd90f6a595d0c9d47 feat(desktop): persist the selected Hermes Cloud org + instance; restore on reopen a488fcf107d1c61400db4274c0baf357b908c772 fix(desktop): detect dropped folders so they attach as @folder refs 729bbb7a309a3d13d8cc7d1cd2fbab79e7d969f7 refactor(relay): purge platform-specific scope terminology from the relay adapter (D-Q2.5c) (#56016) d8c00b8ce2f49d41381466ef0aebcb20ae705af4 feat(desktop): linkify 'Nous portal' in the cloud no-agents message 883fa67b7ece1f41620f20f8eb3eadcd0556e226 fix(desktop): make the per-agent cloud cascade actually silent (load protected root, not /login) a653bb0cbeaaefc1e275b2e3408c3968011d1304 refactor(moa): unify slot provider-identity on the single call_llm chokepoint (#55991) 0198713c3364f7a16603fa684e78671b1392941d fix(security): reuse auth chain when tagging unverified senders in Slack threads 8337d45c052d0d4ec96e8cea53986396c4265c20 test(moa): reconcile slot-survives-resolution test with anthropic name-preserve 7cb85733b89f11c01dbf88ad4126f23b1e7b185a chore(release): add AUTHOR_MAP entries for #54609, #54912 salvage 6eca91763186bd5adb05e5a153c48432ec129c0e fix(moa): route bedrock MoA slots through signed bedrock branch 4d43669921aa9663cb163a1bf4a71c0c618a68a2 fix(moa): route native anthropic OAuth references through provider branch 698c287fd0dc7f35594cdbd0117e91b9c71fd30d chore(release): add AUTHOR_MAP entry for CRWuTJ (PR #17082 salvage) 8ad15ff7dde90dc7f05114133cc3b553947018e6 fix(telegram): cancel delayed deliveries on disconnect 7de485703b7d52880aefc4ea1be96a3128e84e7b fix(gateway): preserve media + reply payload when /queue defers a turn 0f66995e2a6ce604f2c566ab3288a8a6b368722e fix(approval): catch GNU long-flag abbreviations for chown --recursive and git push --force 98d550e035b6489cd8fefa9a5f531c89ce261eef feat(debug): support /debug [nous|local] in the CLI/TUI slash command 89653db40386dcdbe07b3210ac2c3789f365d062 feat(debug): drop dead confirm step from --nous upload (stateless NAS) 51eeb70cb8cd83ba0e9f92ef8eb26316705610b7 feat(debug): add --nous flag to upload diagnostics to Nous S3 4a7a6fd401bbccb8b9c8f99b1703fb38e39aacc0 fix(approval): redact secrets in user-facing approval prompts 508156fd4254e6744375bf344c9c052ec73d015a test(credential_pool): cover Anthropic env auth_type classification 18966b6244ecca6ae8ad4304457bf5f3a61b43a6 fix(credential_pool): match Anthropic OAuth tokens by sk-ant-oat prefix b5267671f22ed9f3ee42fc469005c721a84d4618 fix(bg-review): scope stdout/stderr silencing to the worker thread (#55966) 972aa33d376e8cb308466192ee545c879459fd0d fix(cli): prevent process_loop freeze from MCP reload join and voice flag leak 36bfe3a4490259eb8f89a84b7a9cad2a7c4de8ab fix(anthropic+feishu): model-gate max_tokens fallback; wire Feishu channel_prompt 5fdc65ceb5bbce03a4639f7fe1b40d207697e1b8 Port from openai/codex#30511: warn against delegating critical-path/coupled work 20ca2d5759defc3795a0d6c75af2639eedc3d2ad test(mcp-oauth): yield for done-callback before asserting task cleanup 9f22f36625fb030adba767b55bb9f4dc3472f514 fix(mcp-oauth): anchor 401 handler task to prevent GC mid-flight d431dfc4487dabe66860e71fdc9ad8ed745a6281 fix(learn): honor requirements mixed with sources in /learn requests (#55956) d2c7760ceb8d1fa46a95e215040cb5655337ffb7 fix(tui): coalesce drag-resize reflow + harden resize-burst heal coverage 671b1b058e813abfc8c835ecf30226643d134136 test(tui): extract resize coalescer into a unit-tested helper 7e06e61fc88b6e5a388882d2cefc807c7c197705 fix(desktop): Hermes Cloud sign-in uses Privy session + multi-org org picker ff4c17411c758cb83399d430f33867911fe67c50 fix(streaming): handle adapters that return final responses 0ea3861b3323ba064cd3e7cddefd0729e0dfca54 fix: keep persisted tool results inside their storage directory caa2034f881b388916f29aebbf61de6207bff90b chore(release): map codexGW noreply email for PR #12302 salvage 608e8a6062271661ac2f2f27375ef9ad7eb32b12 fix(discord): accept raw direct bot mentions and ignore bare mention-only pings 97e0bbef53df86f1dfd253b410b3a85539bee2c1 feat(lsp): add PowerShellEditorServices language server (#55930) f0f8c84d1b7cbc739b4e05904d004f3ea3322945 feat(cli): make hermes serve a real headless backend 812236bff852a74a9fbdec4725ac58faae94de56 fix(compressor): skip compression during summary LLM cooldown to prevent CLI freeze 0e4c879a3b7c4851fbe27a4a3eac29b3acb40b9a fix: keep plain custom GPT-5 relays on chat completions 0cebf994c965672090a58a0dec3b78f565fbaac5 fix(agent): repair empty-name tool_calls in sanitizer to prevent Responses 400 (salvage #12807/#52893) (#55922) 638d2e7bfcad1be6e779c0d1af95481a6e92d811 fix(memory/holographic): apply FTS5 sanitizer to search_facts sibling cb6d6d46ab6b20b173c8215a1f066b53847e9ee5 fix(memory/holographic): sanitize FTS5 queries for natural-language recall 2a3dbcaf463ebf5d7732a52ed0be10a2234055b3 fix(terminal): prevent corrupted session snapshots during init 86200e75839ebb999d5d8726df767c3eb8a160c0 chore(release): map kyssta-exe id-prefixed noreply email for PR #55657 salvage 20871c1d941a697723aae24cd8e88afe701793ae fix(skills): require review forks to read before writing skills e55e9fad2c2e2de6181e12c65d3a12baf718d759 fix(telegram): recover when polling updater stops while process stays alive 437dcacbbf43ed3867e25dfefc9adcba0724bdcb fix(profile): gate bg-review memory tool on memory_enabled (#54937 layer 2) 1f1d346ceda2b133f9bb4f5758e31b6190a211fe fix(profile): resolve WhatsApp media-path cache roots per-call 96aafecadd86f514111d6417ea521f2f6f34934b test(profile): prove isolation fix under the multiplexed gateway, not just desktop 00eefc7f2bdd1a022e32a12460f6fe273f9c31c6 style(profile): frame comments around what the code does a6175d1f93594905b6cea37000614672c2da712b style(profile): trim verbose comments to one or two lines bc396dafdaf5db64c079ac37dbda3ea6c5379588 test(profile): two-profile regression suite + preserve skills_hub monkeypatch seam 09af0a8c1d2ae55eaf78b9976619023fac41d041 fix(profile): propagate profile context across thread/executor boundaries 10e60060d98b1f215c84ed4d997bbc365a68b148 fix(profile): resolve import-time path globals per-call to honor profile override 7b12753948acc373dab31eca481c3b8e6a6329ea feat(gateway): expose platform_connect_timeout in config.yaml 46ab06c238472d87506b654729b2f7f01f5b2033 fix(gateway): honor Discord connect timeout for ready wait e675a6084654b28594889d208252db6941da96d5 Merge pull request #55900 from NousResearch/bb/fix-memgraph-darkmode c6ba4b229ed138dcf636322487c968d2ffe4b999 fix(desktop): lift memory-graph dark-mode line + outline alpha fd2d054d8b7488b07d9192ff7cfff334c14c6928 fix(gateway): strip [[as_document]] even without a MEDIA: tag 6b89439ef1279e3420cd268c1ee5532b31dfa3e2 test(gateway): cover extension-less MEDIA delivery 6da181062b9756b6ea799303150fcdc9aad5883f fix(gateway): deliver MEDIA tags for extension-less files when path validates dc3d435f9d971db38a5177c0de1f82564d74be25 fix(gateway): deliver confirmation + reuse handlers for plain-text approvals c39c3ba25c8eb7bc3995a9ab9c526915c3608eec fix(gateway): route plain-text approval responses instead of steering 795913d3b0a23fe0f1edd3b1e7c45d88c0f0d770 fix(kanban): restrict goal_mode kanban_block to genuine external blockers d8083221a8a12d5e898877feeb8cba8ad2b14ca7 Merge pull request #55865 from NousResearch/bb/pet-pane-layout e96d2871bc3f3f6201efecef094b01410eab00c3 feat(tui): float petdex pet bottom-right with responsive text reservation c874999bc5acc240119865b478e36aca82d2c9d6 feat(tui): add $petBox store for the pet's footprint af35ae3c46ef569e8437b782ff185698858933c1 fix(pet): snap kitty frames to whole cells b77ebb5999fe9e5c2d3c78303820ec77cfb0013a Merge pull request #55871 from NousResearch/bb/desktop-composer-trigger e774d7fbf9be43beb7577498cb6125da1e47159e refactor(desktop): extract the composer trigger/completion engine into useComposerTrigger 7098c2b71e7a9779abb2b7a1d69a5b1a34ca9612 Merge pull request #55868 from NousResearch/bb/desktop-fallback-model 322138df51c3d965e52d4be7477e596332195479 refactor(desktop): split tool fallback-model into a folder with leaf modules d1af7e16cbe311570623e4e2e7bbb6489a4346b9 Merge pull request #55863 from NousResearch/bb/journey-edit-delete-followup 6241cc54e3ecae97b98b10e1bb1c1b1c4363759b test(journey): lock memory write format-parity with the memory tool 2fc67a3a5b087a864454958028ec58f9bbc8ff48 refactor(journey): route memory mutations through MemoryStore atomic I/O 05ed553c538092904e5e1d61dc9753ac5ea911e4 fix(journey): satisfy desktop eslint sort rules in star map d153918f145b86a0964fa8405a0adcb9aec4de07 Merge pull request #55859 from NousResearch/bb/journey-edit-delete bb67dad07a8c1540032e36f8ed10d76d2b186062 feat(journey): edit/delete in TUI overlay and desktop star map 08be8e5ef7a07e1bce9910b379b6a5fe48f40763 feat(journey): wire list/delete/edit through CLI, RPC, and REST a0576560eda6968ff9590aaef0a31978be79553f feat(journey): shared backend for editing and deleting learned nodes 571092ee36df3ab1ff615085b5cab9a2a9e633d9 Merge pull request #40825 from NousResearch/bb/desktop-install-update-ui 9e4ed4d7a922844710a5ebd9e551a72e5090eca2 feat(installer): redesign the Tauri setup shim — design system, OS theme, granular updates 8fe8c2d6c476d50d4aaed13a924329fabd57a190 style(desktop): bring the install & update overlays onto the design system 9f8de4dfbe024bc6ca2dacb0e57c7fc725c444cc Merge pull request #55555 from NousResearch/bb/memory-graph-cli-tui 57db7ddce638077359488107a7c25d061f3b1b1b Merge pull request #55842 from NousResearch/bb/desktop-composer-engines 8e675f65646fa16cfc6805e61e17715ecbe781c1 chore(desktop): restore package-lock.json (drop stray npm-install churn) b48fcfa8bd93268647c77113900f603ac7f7a93b test(desktop): unit-cover the composer URL-dialog engine 8795dfa33169b82f6cae7ec22632c430778182d0 refactor(desktop): extract composer pop-out engine into useComposerPopout a8f9d089f124c7e8ab6689585eb33f9f6565890b refactor(desktop): extract composer placeholder logic into useComposerPlaceholder 2a84bcb1499005d36f028d430225b2aca1554ac3 refactor(desktop): extract composer "Add URL" dialog into useComposerUrlDialog e009ba57ac4feac11e326db8f4c7da95d9028485 refactor(desktop): extract global Esc-to-cancel into useComposerEscCancel 5fdc2acedcf9caa2dffc01a0410ca74b1b28d369 refactor(desktop): extract composer branch/worktree engine into useComposerBranch a47afa6b3e9df8222d3553f763b7db4403feaa52 refactor(desktop): extract file-preview/clipboard/image IPC from main.cjs into media-ipc.cjs 9d19cfbb78d0439dbca2c83d8dc7353965a78a29 refactor(desktop): extract app-version IPC from main.cjs into version-ipc.cjs 150e023fe280cb86901a7513aa0fc0c25920747f refactor(desktop): extract uninstall IPC from main.cjs into uninstall-ipc.cjs 926602c0967bc2c6ef1e1c8a46fef0d2e9e7c1fe chore(release): add AUTHOR_MAP entry for 2001Y (#54065 salvage) 033f6ea4e7a2390a756a4421b09ef7b0587eff6d feat(moa): support reference role prompts 0b3752eede2e6dba51cc7d80ab7c2cbc3317dc32 chore(release): add AUTHOR_MAP entry for lEWFkRAD (#53848 salvage) 4d2351a528b3d81a1cd3d0817b9fed625ea33b26 feat(moa): stream the aggregator response to the user 936af2f4f549f5ff22ef00b082748d115080780e Merge consecutive same-role contents for native Gemini 8a48d541935deaa307244935cfa47fa75b3040cb refactor(desktop): extract VS Code Marketplace theme IPC from main.cjs into vscode-theme-ipc.cjs e167ed7bb19889bd3fd884b1fe20ae1a89878fcc refactor(desktop): extract project-dir + workspace settings IPC from main.cjs into project-dir-ipc.cjs 0ed0c2d39f392062019f4cf0d15cc12ed75156ab refactor(desktop): extract desktop-log IPC handlers from main.cjs into logs-ipc.cjs c147270a1c894572447a15d089a0da80b44c0ead refactor(desktop): extract auto-update IPC handlers from main.cjs into updates-ipc.cjs 880f5837a10eb1945eabe1e5f1a3aebade8bb1ba refactor(desktop): extract terminal (PTY) IPC handlers from main.cjs into terminal-ipc.cjs f3ce17bf9e8dab7c3edfa813eeaf127487e29ea7 refactor(desktop): extract filesystem IPC handlers from main.cjs into fs-ipc.cjs 885e80df74f017d5e897d39928f49b0212e9bedb Merge pull request #55807 from NousResearch/bb/desktop-split-onboarding 18d54bf0fd307e02f1ca3f877bcd8a26651297fc refactor(desktop): split onboarding overlay god file into onboarding/ folder 7274bdfc4bdf1c695dd448047161b07ca628a141 merge: integrate origin/main into sid/tui-billing (unblock CI) e2422ceabb765b6f54e44266aab4cc8dbc78f275 feat(billing): in-terminal subscription change flow (TUI) 311eee611d5e80ba5ab9e142d7d11325c2fe31f3 feat(billing): gateway RPCs for the V3 subscription change flow 3d385cee6176de7db4e3bdd332088be1ce9a8af4 feat(billing): subscription tier catalog + change-preview models e636d2bdd73c3ebcc2f1f29869e82c6562876202 feat(billing): NAS V3 subscription-change HTTP client wrappers abb11c86b98a1035cdf799c90abb622975ff3cf9 fix(journey): swap skill/memory inks so drillable rows read as clickable f99ba56df4bb6a1caf490e99c542507e3c3926cb Merge pull request #55331 from xxxigm/fix/desktop-projects-stale-backend 2f7b6cf298a3b64b39b0c9e5a102707e018eacbd refactor(journey): drop dead braille/orbital render code c4b59e64633c0637ef1645b1ee25db70dbcf69fd Merge pull request #55663 from xxxigm/fix/bootstrap-diverged-git-pull 59a40330d55d011fb5360e211f71e6dd5ff267e0 feat(journey): blank gap row between timeline groups ae78326bf605169a5f1f79b682e451f5939a1604 feat(journey): chronological slice/item tree in the TUI dc61642419a975156a18d6fc73aab9fd76ed0698 fix(journey): only drill into items that have detail efd87a154567b8e123535427dbe062814b6ed2e5 Merge pull request #55715 from kshitijk4poor/fix/config-migration-no-default-expansion c717be8ded71092e40531ed2c393549a6950269c fix(config): route every migration write through one default-stripping chokepoint a5e8cd4d400c3ed7efa457d507ceaaef7deaab9b fix(memory): degrade gracefully after repeated at-capacity consolidation failures (#42405) 62a1bf4c553c4c6ea3da15f725d0f1fb2677f374 fix(tools): return previews on zero-match in replace/remove to prevent memory retry loops (#42405) 83e10a6777f93ba2dfb2b344314912bb9f969202 fix(desktop): detect stale backend for projects.create 217b3c283a8277ab8a78bd3bfc52a53f6ddeadf4 test(desktop): cover projects RPC capability probing 1b3768558e02071b629d1014941ed7b2a0024c34 docs(image-gen): align OpenRouter model-resolution docstrings with new precedence 63731fe856cda744684ed23fc1962a977d953985 test(image-gen): cover Nous/OpenRouter top-level model resolution 1324add563ca0a90fd4dd8ba07e3a0dd9cf365c6 fix(image-gen): honor top-level image_gen.model for Nous/OpenRouter 665d0f0789ee0571e8c4284342c842cc57ebf2dc test(installer): cover diverged managed-clone recovery in install scripts a40f22798ec6b5877958f6dbe5aeda8468e7d628 fix(installer): reset managed clone when ff-only pull fails 824f2279dae543fd50e1b5c50c233ffce0e2b996 refactor(registry): drop dead toolset-check helpers after per-tool availability efebe451dba560e07669bd97b444a40910057a41 test(registry): cover mixed terminal toolset doctor false negative 6e84257717f7ef43e642ec3c26a346955debb4cb fix(registry): derive toolset availability from per-tool checks c96909087877d3b27ca3b088bb86269ff4a1ca05 fix(cli): clear input-blocking overlays when interrupting a running agent 8e6fd4cfa6ea263e1f0f7c93c00f06e2845acbeb chore(release): add AUTHOR_MAP entry for londo161 (#15795 salvage) fe355d0a27387d12522b7e4beb067496652490ca fix(moa): handle dict/str message shape in MoA response extraction 9dc6dc062f97954518214c0650e97fc4760491d1 fix(agent): handle string context compression messages c080a530ae4c7ead0dd4e7309b0e1a05cb9c5ce5 fix(cli): redact status API keys with --all a8841e2a6877f7b5e7b4b6ab0122ef2fde229fe2 fix(aux): preserve provider identity for resolved endpoints 1cae1bd0de786dd473807e169ffa40277d65c0c0 test(cli): deterministically join bg worker thread instead of polling deadline 6148a9a3fe472a4324b7fd627fb36060f59e636a chore(release): map nnnet author email for PR #25142 salvage 5582b51a680b16b399a82e9c04b3317c0fd06255 fix(gateway): stop poisoning the LLM prompt with STT-mode chatter cbe397ef458bc715ce82451e722ee0e45a67687e fix(agent): merge consecutive assistant messages before API replay (#29148, #49147) (#55603) d2d470e3217a42b22f56b60d1675c1e8917ea030 test(compression): tolerate safe contention rollback in concurrent-fork test (#55597) d6c53dcdcb49694b382000b53f194b99d97aa72d fix(gateway): stop per-turn agent-cache eviction from model + message_id signature churn e7ca53e6b8d97ef13f5ce000133828636b869d73 fix(moa): disabled presets no longer hijack a plain model switch (#55598) bff61f558f2a166de819ecc424c5ed5462d7240c feat(plugins): enable-time consent prompt for tool_override grant 12f5624a769303cd544895e1e949a96c102c615f fix(security): bind tool_override authorization to handler's defining plugin module 3101222312ab95b11d08eda9a6d7a7085ae22275 fix(security): enforce tool_override opt-in at registry sink to close direct-import bypass 179eb8c2a337e9f6cb2f1eaa878ee267dbaf9d7a fix(security): require operator opt-in for plugin tool_override to prevent silent built-in tool replacement ac380050eacbbc510aa335b8891625d26cff193e fix(credential-pool): distinguish OpenRouter upstream 429s from account 429s abca77615a592c8d589a7c63314ae3df46618a49 chore(release): map Jeffgithub0029 author email for #28558 salvage b7c4369ca05077ee7d0b1e3f79e5b26056723798 fix(telegram): chunk formatted messages with UTF-16 length accounting af5cea04ab77352209a0495b25e5c5c295a73395 fix(discord): split oversized final edits, truncate mid-stream previews (#27881) ea9f8bd1626e1c326c51a0060b1fb7b69ded0392 fix(security): sanitize LSP diagnostic fields to prevent indirect prompt injection d634fa079ea398fc4f58701c913c3d1c32d8cf4e fix(pool): sync anthropic entry on access_token change, not just refresh_token c510f4868006583884da99453f14b43b1eda2fd4 chore(release): add jasonQin6 to AUTHOR_MAP for PR #15093 salvage 6dd188d7861e3c18c262cad4ef8eb3b13dcd0b5f fix(gateway): add session staleness guard to stream consumer 2ae9e222f0ede04e5db608492b18ac5f3f570990 chore: AUTHOR_MAP entry for PR #27123 salvage (jimmyjohansson84) 018009bc382de86f864e3fa8af3982c2f0aa7bfb fix(kanban): unknown skill warns instead of crashing the worker c701c6dad72ae303e6eee23a230ac8ee10711a7d fix(security): redact Fireworks AI API keys in logs ea95fdd6d7cce6be576bc765f8e12d85e439bab4 chore(release): add nikshepsvn to AUTHOR_MAP for PR #27426 salvage d82a69b624b97948207182df38c9a25bbd21f3b8 fix(tools): prune acp_command from delegate_task schema when no ACP CLI is on PATH 2e0b591076eb4f0d3839123d95bbd71893fc7163 fix(tools): validate acp_command binary exists before forcing copilot-acp transport 6d6702ef50747cf6de376ed59e0b716fbc1d1e9b fix(whatsapp-bridge): clarify FIFO outbound-id tracker semantics 24aa02179bea7dff7c9b6d95c3076e5f3a9a7c3b test(whatsapp): repoint owner test import after adapter relocation db52ad0f07ae1b6d17721bd9ed6bb73665346cf1 fix(whatsapp): gate owner-typed forwards on customer chatId allowlist a61cf774ce925964d679f5ad04966251e37444ca feat(whatsapp): tag owner-typed inbound text with [owner reply] prefix 84f350efe06be9f0c2e9b05471acad5db91b0e7b feat(whatsapp): opt-in forwarding of owner-typed messages in bot mode 1366f376d6a9c6191f25e0183367d99bb089267f fix(moa): pin chat_completions on live switch to a MoA preset d76ca3a7f25c86a882eb41ec90db105fd8231898 fix(moa): propagate api_mode from slot runtime to call_llm da4f15cddccbccf60ca1ebb19ed0532328c63750 fix(cron): log and redact on secrets-redaction failure d3d768efb9f713f166e480e14c15e6444d241dab test(copilot): update stale get_copilot_api_token mock to tuple signature 3ecc58a8dafa2be18661dc29a52045c1880dd11e chore: map trevorgordon981 in AUTHOR_MAP for #50590 co-authorship 15e44527ab947a25e09e4fdb8ccbc8cf686eb26b fix(copilot): prefer endpoints.api for base URL, guard empty chat base URL fb07215844cdc6d08e1f266288c284b95014df2f fix(copilot): recognize enterprise subdomains in host checks fbd15e285c73ee8e7e07caba65a1f9c2aa41ccc4 fix(copilot): switch to VS Code client ID and derive enterprise base URL bf2dc18f8472a94700b378bb13054210c54d9d96 test+chore: real-path regression test for #15157 model_extra guard + AUTHOR_MAP 0df3c12699c0eab8d599841b2f802949a5b19fdb fix(agent): guard against non-dict model_extra in tool call normalization c7e0bdef9ad8d579f65f956c3f9603037cff9ef5 fix(agent): stop over-cap max_tokens 400s from death-looping into compression (#55570) 62b9fb662346b630e23d13ded577be84b87f74ce fix(acp): thread-safe interactive approval via contextvars f5eb4c307bfdbfa5f24c5bff59881295f17b17ac fix(gateway): stop Matrix upload fallback from leaking host path cb9d18c759417f0bf0ff94fb932a423c74d706d5 fix(gateway): stop media-send fallbacks from leaking host paths into chat fee3d4ed04f3849f7610c1324cf0613a25842733 test(gateway): update startup-restart-race fixtures for current main f4a54b6292a6230ab0fba386aa316030f68a49c4 fix(gateway): abort startup during restart c6eb7f9e7284c5268ceed0c3fc92e1f2a5d892c7 fix(memory/mem0): recall on the current question + stronger search guidance (#55535) b8ebe32866d06a47fd885abf0db4eaadaa4389fd fix(agent): flatten multi-part user_message in codex intermediate-ack detector cd9f5cc6718050819df17d4a3c07e199faf6e284 fix(delegate): route subagent progress lines through _safe_print for ACP stdio eeb4735078bc291ab6dcd4e2f5ba4df58c35ea2a test(web_server): assert ws-ping invariant, not frozen 20.0 literal db880186f2e381a1ec8e28090fec2b9fd5533b37 chore(release): add AUTHOR_MAP entries for #51841 and #54287 salvage 1a0c5768135c0565712140eba76e1e7d566bedf6 fix(tui_gateway): drop emit-only session.info from _LONG_HANDLERS 9d10dcd490e68eae94849496586242defbede058 fix(tui_gateway): route frontend-polled inline RPCs to pool under GIL pressure ebb81f10cb70c4c37a2d00ef58a8aea37e7971f2 fix(tui_gateway): prevent WS disconnect under GIL pressure 35a0803a3b64a0b43e49dbbc809c4986be3ae331 fix(delegation): budget subagent summaries against parent context headroom 3b2bb30c5d46017f2654d5836fadd99776e1aadc fix(security): harden heredoc approval, NFKC homograph fold, env-var filter c8376e0dc66f0685bad6b0cc7f161e7e06572e67 fix(auxiliary): stop SDK retries from multiplying compression stall (#54465) (#55544) e6f66bc0f05528de2d5284333d3d8abbdca1507d fix(security): cover Move and no-space headers in patch_tool sensitive path check 26f39f7b900185f4953cdaac5819ca831155fb08 fix(credentials): prefer ~/.hermes/.env over stale os.environ on key rotation (#55528) b6045170bb7bad85c9a361054bf69b4d7f0722f2 fix(discord): extend channel-name matching to slash-command auth; clamp flush deadline to disconnect budget cb9308f0a65ff2f0a5880c54f67203946d0dc317 fix(discord): channel name matching and flush pending sends on shutdown b03635daea1abc9ae1b6aa3caa460f462d903337 fix(approval): catch hermes gateway stop/restart behind a profile flag (#55515) e971dc1e9d2afb307d3cea3e576b8de9614baaf7 feat(journey): CLI + TUI learning timeline (/journey) 1d495cfbbf377845b479dd21521c1185c3c0c9b2 Merge pull request #55226 from NousResearch/bb/desktop-memory-graph 6d20ac4c853180eac30fb0875bc32c7baa164041 Merge pull request #55500 from NousResearch/bb/desktop-composer-draft aa07400e1a8f37e835714d8a68c1b72e634e3793 chore(desktop): keep draft persist effect deps clean 9998ff4cbebc9812aec66a7d0839665fa7fbfa36 fix(desktop): persist live composer draft before swap/reload eeb69c7df2535094f85c3ddb263d5ff9d8742662 Merge pull request #55547 from NousResearch/bb/54744-windows-bash-spawn 2f46fde3f51db2db1cb0854ce1bd2b5c07c16a0d fix(desktop): keep queued composer edit ref in sync e5253d852b24f87af91d77b66141cc5c0b9e6f69 fix(desktop): tree-kill Windows terminal descendants 94d70dee54c4f9c54d9681b0f49d629c08e275f1 perf(desktop): stop ChatBar re-rendering on cross-session status/queue churn 33d91029b26680a466cf057844df2fcb5fb87b15 perf+fix(desktop): coalesce composer paste/input flush; scope dock glow to thread 773a3703bfc1f8ff2f3aef40d7a565e7f4fe1404 refactor(desktop): extract composer submit engine into useComposerSubmit 4c4b790f110be2c34fdfdb72575efe2d1f8ba632 refactor(desktop): extract composer queue engine into useComposerQueue 9ee7333e5b36633993c3898a01a26f0b189b81bc refactor(desktop): extract composer draft engine into useComposerDraft bd53230739da3bacbf58211f79a56cebcbfb4e06 refactor(desktop): extract composer drag-and-drop into useComposerDrop cf05b38683ebe2035d41f9eb7c39c735092e8f68 refactor(desktop): extract composer voice engine into useComposerVoice 00694b935fb360bf5a93b1d3034a115ec09f08cd perf(desktop): composer typing no longer re-renders ChatBar (imperative draft sync) e0a78336c1e3d3ea2216510154430f6142f4464a refactor(desktop): extract composer sizing into useComposerMetrics 90c5433411dec15cd78a22707088605ad2bbb11a Merge pull request #55543 from NousResearch/bb/desktop-status-stack-icons f47459cdbdee7bc312024f46a6ab03120e3c0c71 fix(desktop): proper agent icon for subagents + give the queue an icon 67783ad4e7d55df0ed339c49073499159a102b37 Merge pull request #55542 from NousResearch/bb/desktop-preview-stack-visible 3f19df2a5b71a0d68cb46e299d108c793634e98c fix(mcp): late-refresh must see desktop/dashboard discovery thread owner (#55514) 57462341f4cac5b86558c179aa5a329272d9f950 fix(desktop): keep composer preview links visible when a bg task appears babbefb16438ef28e061690117a1dad08e71ff54 fix(desktop): scope memory graph cache by profile fa3ab2ffd0f18069b8ef10117d4e1e4e4c5a9bd8 fix: normalize tool_call_id whitespace in sanitizer 3e7ed0c53b59174c86cd7ff945c745a35e8c4e51 feat(desktop): memory-graph share dialog + core/zoom & light-mode polish f9b619dfae02bdc854cb5e8068beb7659a7f3b24 Merge pull request #55504 from NousResearch/bb/desktop-split-prompt-body 90f59ecdbb52fc5e0a97672f17d617e48b969716 Merge pull request #55501 from NousResearch/bb/desktop-split-message-stream 7337248a4c182d65b6c101acac1e21be5101c4cc refactor(desktop): extract submit pipeline into use-prompt-actions/submit 51a710e57e931c65a6e44eed694ca437af5ae06d refactor(desktop): extract gateway-event dispatcher into its own sub-hook 58d8e25e671ead6d3ae4f30d6fa2f193bab44059 fix(agent): make compression lock-lease refresher tolerate transient DB blips 7479f26b3ff804d2932aa83050d0952cf70def11 fix(agent): keep unbound compressors on the fail-open path (#54465) 6fd701acbe3c38632cd7a7b9c564b1f599008f01 fix(agent): keep cooldown state on the active session (#54465) cafe9d9261db96f322ae2fa553a36fd4b62f2b9f fix(agent): prevent stale lock leases after early compression exits (#54465) f2ace45286f555912934f4fb74204946816cde3c fix(agent): release refreshed compression locks on every exit path (#54465) 53ef95484107bb6601a076ba71ac3e81600e9f40 fix(agent): keep cooldown and lock refresh on one authority (#54465) f2ccb2859f20d6bcfc07fef2584b22b199373f37 fix(agent): persist compression backoff across resume (#54465) 5edfda5088ab0c77dec3c4e0a45dd22226199f39 Merge pull request #55497 from NousResearch/bb/desktop-split-session-actions 08c83d055509a8d61bef0b8648df39d136b3e60b refactor(desktop): extract slash dispatcher into use-prompt-actions/slash 643b0dc6784988bfd0c80e76f6047ca59c9d44c0 fix(cron): raise default pre-run script timeout from 120s to 1h (#55489) 086343854dbf723acfc529d2580c260cc3713d0b refactor(desktop): split use-message-stream into folder + utils ed47f2b4aa43c9b280bd84798d4a6cbf9ac889f4 refactor(desktop): split use-session-actions into folder + utils 3a83b6bc5dc8697166126cf20c9811956d44dcb8 fix(gateway): self-heal stale sessions.json routing at message time 6763d63240ceab05c199d2048911b1ceb5b69b49 Merge pull request #55493 from NousResearch/bb/desktop-hook-folders fa7bce0789d80fa99080a2be231fcc754fd2af3c refactor(desktop): colocate hook/component families into scoped folders c9269fbfb6896793553b684eb6b5f3a79250fda7 fix(web_extract): bound stored full-text size + give concrete read_file offset c1b9de73f566e6c8b21ab3991f5f572f5410a68a perf(context-refs): expand @-references concurrently a1b6e7eadcc4ed064bbb15f44390113bca857019 Merge pull request #55470 from NousResearch/bb/desktop-button-consistency 8f8487b54f80058ef8133f86682e78f9cd13171f Merge pull request #55468 from NousResearch/bb/desktop-icon-size-token 28ba01c603c79def78878739ac1ee800300e27b3 Merge pull request #55459 from NousResearch/bb/desktop-split-prompt-actions b69c2d2fcdfb676d4068faa37b3ccb852a596b2b Merge pull request #55456 from NousResearch/bb/desktop-split-controller 116acf3821aef1db18e02dc53e149c67f9cfcee4 Merge pull request #55455 from NousResearch/bb/desktop-split-composer 61211967e1844b60ec6ca6da5f102d092acf5547 Merge pull request #55453 from NousResearch/bb/desktop-split-sidebar 374d38f09de06029221c42543d1211f9c08210e7 Merge pull request #55451 from NousResearch/bb/desktop-split-thread ddf0d980b6d90721acf990512c5deecc6028b9c3 Merge pull request #55473 from NousResearch/bb/cmdk-drag-region bd1d354fc3c509b622853f5b6205fff1007c66dd tune(desktop): ignite memory-graph nodes in clusters, not 1-by-1 03311abe498da34ab4dbd2402935cf641fce1431 fix(desktop): make ⌘K / session-switcher HUDs ignore titlebar drag band b6e57e215bf08fdf2308881af48d4b97761319d2 refactor(desktop): share theme-repaint observer; memory-graph depth polish 57dd86f247637a080b9c2c42ae8240379f5b5c49 docs(desktop): tighten RowButton doc comment f3cd744f5c40ab70e5a10ffc7c993f049ca1c70c docs(desktop): tighten iconSize doc comment b29bb6ef9d002f78f1c801d4b390a93a6705aef1 refactor(desktop): assert git-ipc surface by invariant, drop channel snapshot c2fb651c5e0073ac749b90cfe44ab5ec4add884f refactor(desktop): formalize row-as-button primitive (RowButton) 5e51f9c689d15440fe6f0242c4a34d0278089788 refactor(desktop): add iconSize token and migrate ad-hoc icon sizes onto it c0b308e1fedd3c681adc0953276b6632f0ee3c03 fix(desktop): center memory-graph timeline stars, surface quiet buckets d6396e6a41d5e44b3dc4c9fc47e2380e6783f635 Merge pull request #55449 from NousResearch/bb/verify-on-stop-auto-default 4dbd869ab3c66f8b2bdf75bc4601e586253e8e50 feat(agent): restore surface-aware "auto" default for verify_on_stop aa3c1d6679cceef4976bbac6394a88dc74b5c5c0 Merge pull request #55457 from NousResearch/bb/fix-windows-subprocess-test-flake 025c8f0604d08751910d676e68728c20dacc2e9d refactor(desktop): extract git IPC handlers from main.cjs into git-ipc.cjs bde2dc1051ef92a18fecc86f9aebdfddb053634a refactor(desktop): extract use-prompt-actions standalone helpers into utils 7548910ecec412b84cb92e180f0e6017f176f0eb perf(desktop): cache memory-graph paint + billboard node sizing 0ea318a7d4de4d2368623c332f5f2c4eb538581a test: make windows no-window-flag assertions immune to update-check daemon 25c7900fb58239552c530fd6cf8be28e5efbcec4 refactor(desktop): thin desktop-controller by extracting session-list actions dd659c8d175858bab96012b52b4201e381cd19cc refactor(desktop): extract composer pure helpers into composer-utils 88e29e35bd327c51306edad22d700d79b4b97f40 refactor(desktop): split sidebar/index.tsx god file into focused modules 7ff6908a59536d2d788c8bc9aac64791829dbdeb refactor(desktop): split thread.tsx god file into focused modules a81c5922a2947c9c55ea58d44c012838e02440a0 Merge pull request #55413 from NousResearch/bb/pre-stop-hook 821d9f709f365453abde7ca71445bc0aad9bdaa1 feat(agent): add configurable coding_instructions a10113658b6033c5902bbe873bfe2e1f05815339 feat(agent): add pre_verify hook and verify-on-stop coding guidance dec44994a5be54d835060f593079f0c732567e80 feat(desktop): Memory Graph — playable radial timeline of memories + skills 96552c31e3e9a6f69ce015febac77456675b494c feat(learning): profile-scoped memory + learned-skill graph API 14c4a849b7b501ffa2eedcf15b92ab5347418aa0 fix(kanban): make goal_mode judge gate truly fail-open b3c1b3b3f340f747d2a4a5363501256d04c56ccb fix(kanban): address review feedback on goal_mode judge gate 0b33bc53962a395a43784febec5d810f3e4e1c3c fix(kanban): gate goal_mode task completion with auxiliary judge 972b1620906a1b80772c2f67492ad50b3c83f048 Merge pull request #55410 from NousResearch/bb/install-theme-dedupe 04639adace67c7765eb14a32c78ae4fb62da7fe6 feat(desktop): flag already-installed themes in the install pickers 05ac16778bda321bd4726c17bd7061b110255582 feat(gateway): per-platform typing_indicator toggle 463b1dfa9cbc2757e5bd535e4374d8eb018109b4 fix(container-boot): also autostart a gateway stranded in 'degraded' d3f2931b8cf9ca4aa9120551b82a61392c1d2fcd fix(container-boot): autostart a gateway stranded in 'draining' state d4c14011ebbc59d1479a53c207692933b79d0287 feat(claude-design): add surface-first conditioning + slop diagnostic (#55399) 5a3d7fb99d1f23d3156e17575cabc664fc7fe593 fix(xai): suppress false-positive windows-footgun on binary image read 9ce79cd642125eb0997d31310fe12cb0fddd6ba5 feat(xai): Imagine public-URL storage, chaining & video edit/extend 184c10cf97002c95b233830d62d6fb355a82708a fix(slack): warn when configured token is a user token, not a bot token 318910ce80f5e70515852fe1a5f3df6ff00a3f84 feat(desktop): Hermes Cloud mode card + agent picker in Gateway settings 33d044c3afc28a93dae6f94d0661e4dbdf5cd87e Merge pull request #55400 from NousResearch/bb/pet-roam-calmer 30cd39dc5609a91d5eeee85f78495ffdbecdd157 refactor(desktop): collapse stroll-direction coin to a single draw b7322f946db6ac22353714a136ae3d7950b38745 feat(desktop): calmer, more realistic pet roam + split roam modules 2704e6e39c84797788b116e302e4e5ae703002cd feat(desktop): cloud connection mode plumbing — widen mode, portal login, discovery, silent cascade 6aefc9d925957a5e0b8b4c4a75666e53d84ab4e0 feat(gateway): show per-category context breakdown in /usage (#55204) 53a75f147f641d10ac678092e8a67700d7edf2a7 feat(dashboard_auth): support confidential clients (client_secret) in self-hosted OIDC (#55344) 481caa66f23c75eede53867e99a68400012cf501 feat(display): friendly human-phrased tool labels for built-in tools (#55166) f9f03ee127329d5df945385cb0172943c457002a chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 5 updates 41c85fb9469bbde7c5446cc5386b2e2438936fb5 fix(agents.md): fix documentation on subprocess isolation in tests cca8b4ef4e3f8bac1708bd5951450b645d8c20a3 fix(ci): unify amd64/arm64 docker pipelines 66ba9e06d92542268c97c500d5312100c299d973 change(ci): remove lint PR comment 808ba82125e2ccaca9d0df1d5557a173e5242504 feat(ci): add CI timing report 4a150a07752fd025041b6817c3cba099bb2439eb fix(slack): humanize inbound user mentions + ground bot identity 3a55f66602898b53524a232e3dbadea3ed9b0cf8 refactor(relay): adopt scope_id wire key (guild_id → scope_id dual-read/write) (#55289) e32db0ba51ffa2f4ca70a9cf04793341220e9fa6 fix(slack): warn when configured token is a user token, not a bot token 7ba55aa793501d1bf257fb62b2423d42aa37d6aa feat(delegation): optional per-task model selection in delegate_task 5b4e73e996ecb6d37cbc6c7f2652cf0759c5cf4e feat(gateway): per-platform typing_indicator toggle f3d2dfbec670cd520bf23fe6ec1f4ce918d286bd fix(dashboard_auth): allow any http:// host in self-hosted OIDC redirect_uri (#55099) d2ce2c852d919b43a17f5966095d969ff8fa7407 test(gateway): assert interleaving safety of concurrent offloaded DB calls 67351625316bb091b16f879da7af7e40d99181f8 fix(gateway): offload the Telegram topic-recovery helper tree off the loop 0a997aabbc90ca65483ca2cb2347f658cfcd9211 fix(gateway): route aliased SessionDB calls through AsyncSessionDB 0896facce8139636be6de462fd286cf84b0069cb fix(gateway): route SessionDB calls through AsyncSessionDB ea26f2271073e8ee826a6637f03256f489c03162 feat(gateway): add AsyncSessionDB offload facade 89daacb454accaa9ee3cb9f29273e7e3aff99f96 test(gateway): cover AsyncSessionDB offload + raw-call guard (failing) f171842f0de73171031ce4f62a4fcfc7adc397d8 Merge pull request #55154 from NousResearch/bb/desktop-auto-speak-replies 290fa7fd2baaa842856000143bc5028dcedd4185 fix(gateway): skip confirmed-dead delivery targets (deleted groups, blocked bots) (#55115) 596b813c9b03ecdc46b8c6a75aa1cb42e79eb7d2 feat(desktop): add read-replies-aloud toggle and wire auto-speak fcdc05c89145f5e16e8d4641e5b83dd2e3014306 feat(desktop): add auto-speak watcher hook 572c7dbd93336f54d0989f9e8e6f94059f2d119a feat(desktop): add read-replies-aloud composer strings 09abbf8a63f8faada154850fd716b23a6dae9ee8 feat(desktop): mirror voice.auto_tts into an $autoSpeakReplies store bff91f978fd93158edcd0e5e3c1137b8d0f829b7 feat(desktop): type voice.auto_tts in desktop config d417ffb363d5051ee05cc1e70c28b541c4ff8ccb Merge pull request #55114 from NousResearch/bb/pet-roam a1e699ae55085416924df00b9105cc1764f1fa06 feat(desktop): roaming pet patrols the base of an open overlay 0e2a5a3206d3543294abd132a8dcf914a5257759 feat(desktop): ground the roaming pet — sprite-paced walk + feet on surface 75d4aa93251329c7bd7f2921b449faa2d0fc636b fix(web): confirm sidebar Update Hermes before running dbe92b9ed167bbf55897be1b9e00437468704a58 fix(web): confirm sidebar gateway restart and use DS checkboxes 1abf0c6cbf3c508e520384a4e3ae1c570a251b64 fix(web): polish dashboard sidebar chrome and model card menus 10374bb7a27bb86fded89c5ca7fbc4197796bb54 fix(web): theme terminal foreground and restore backdrop plugin slot 57d98ebed7d0f5272fa1311d0bd0616b8058dbaa fix(web): remove marketing backdrop stack for lighter dashboard shell b72c9e1b2c9f7c60520d6b411f61796d1a0931e1 feat(desktop): add pet roam opt-in toggle + i18n 4da744ef9b6182982684c6b46bd5f41569e907ee feat(desktop): let the pet perch on the status bar and profile rail 7d3c1d55f4e7f74539ffde1c8bde39701c2a3996 feat(desktop): wire roaming into the floating pet a8f1d9cc76b1bb2719260534d83aa26c1407731a feat(desktop): add surface-aware pet wander loop 964ec680cc9250b3389104e4d1e0cabe1dd1872c feat(desktop): pick directional run row from travel direction c6d6a1c30d033287f2cbbd9d7ecdd47146f1942a feat(desktop): add pet roam + motion/direction store signals b963d3238b53e20c77dee47b4b0290920aaf4f87 feat(gateway): suppress home-channel shutdown broadcast on flagged drains (#54824) ccc92c5213f3ff394c7a5a052427195d1bcbad25 Merge pull request #55086 from NousResearch/fix/gateway-statusbar-tooltip 7a6b3cb923f1fa99260b909e3729c35e6ffee323 fix(desktop): show Gateway statusbar tooltip via composed trigger Slots 929dd9c0d776186d1e8bf268cccfdb31e0398365 Merge pull request #55033 from NousResearch/bb/subagent-watch-readonly 7cf6758e336c67b1b90cb93928f609008a3a8e5e feat(desktop): read-only spectator transcript for subagent watch windows ee8cbfdc03eb9b7cdd486165486f2e3cad0d8645 feat(web_extract): truncate-and-store instead of LLM summarization (#54843) c6c1fd8b6b6828361bc117b532848537904ac562 docs: create dev venv outside the source tree (root-cause fix for #7779) (#54862) 3bbeb9e0080ca4aaf6fcee66170dbd75d8203111 Merge pull request #54907 from NousResearch/austin/feat/context-usage-popover bf952f570595c18153b21d27a7816130f96741dc test(gateway): assert interleaving safety of concurrent offloaded DB calls 71e13373de913cee77e44fe62efbcc5071694b0c fix(gateway): offload the Telegram topic-recovery helper tree off the loop 6ea0f72885f8f145932d2a87928fec27d534c56a fix(gateway): route aliased SessionDB calls through AsyncSessionDB b8cd48db9cbddd4d5fdac4db8dae8cb5604ed3c7 fix(gateway): route SessionDB calls through AsyncSessionDB 32a326585fa9b49639e06600ed19ebcbc5fc81d0 feat(gateway): add AsyncSessionDB offload facade b37d81e3029deb7b58459ea2f105243da78148aa test(gateway): cover AsyncSessionDB offload + raw-call guard (failing) fd324562d3ad43df7631428df4585cf9de8154f2 feat(desktop): add context usage breakdown popover 17b5acbdc9928f3d5552c43e42752ea92d291dc8 fix(web): confirm sidebar Update Hermes before running 2fbd2c48aeee094ef934f5f3f5d268a3c5c2e2dc fix(web): confirm sidebar gateway restart and use DS checkboxes 30f7816cd111261169b8b88016687832dbf65e89 fix(web): polish dashboard sidebar chrome and model card menus e996673beca328b8e6ea9d4c6d5a5cbae8983135 fix(web): theme terminal foreground and restore backdrop plugin slot f1345290edb87a5da7b28288dc39c46b0be79313 test(auxiliary): cover NVIDIA NIM max_tokens in _build_call_kwargs 88e6f9b98cc93cb3efbe86550186615a337dc246 fix(auxiliary): preserve max_tokens for NVIDIA NIM aux calls f53ba9bb5464c5dd821fc387e4479b0d5e0b8a0e fix(s6): dot-prefix gateway staging dir so svscan ignores it mid-build (#54834) dbad6d47d3419b8a02ae69494fcc1be9ba43bb7c fix(gateway): also neutralize untrusted Matrix room name in prompt 09666ceb76c0c3388c03c82c5d2dc2ecd2e57b60 fix(gateway): neutralize untrusted session metadata in prompts ea1372d2afd3ab60a76be8ec6ca984719498b15e fix(security): wire session-id sanitizer into artifact paths + API boundary 1debd5e8f90785dda03ba495297f55714153526d fix(security): add session-id filename sanitizer to prevent path traversal cdd8e0a2714b8469534d05496aad4e1290ac4293 test(gateway): exercise last_prompt_tokens in reset-activity tests 0fe9755016c10bf2cbed7c1d04ba294d9b828016 fix(gateway): use last_prompt_tokens for session-reset activity check 9e490138a009c9c9aa64ac90fd6804928a6646b8 fix(security): fail-closed feishu webhook rate limiter + whatsapp bridge path guard 576424cc1cecc6932e904b3697bde93c9c73ec76 fix(security): redact browser CDP endpoint logs 23c03ced75031e85c418f1660947c03e92f9e205 fix(session-db): enrich NULL session metadata via upsert instead of INSERT OR IGNORE 61f56d27db9ba4f70855dddf7f620caf1d71a10f refactor(dashboard-auth): drop redundant _interactive_providers helper f5ecbe1ec6995d88f383bed3e034311e286e29f8 feat(dashboard): auto-initiate portal SSO redirect on unauthenticated load 650c8046b189eaade09d5a467e1fc2c8dc8b9ca3 docs: add infographic for malformed tool-call heal 5574278b65986e11b578c5738cd9e08749a18fff fix(state): heal empty-name tool calls when loading a persisted session 5d27553e424699174c08d6d1f9c83333c47fe73a fix(agent): filter malformed tool calls before persistence and replay dc5ef20d89f0fc787a97ebd05bb8c41fbce10ab7 test(reasoning-floor): isolate stale-timeout floor tests from config-module reload races (#54775) 194bff06876396f441fd40c12379066f52661832 fix(gateway): confirm final delivery before suppressing send fa3dba4b30b2802c87c8733fcb359d906f60b4b2 docs(infographic): add list_profiles perf-fix infographic 10c9eafde24f917f4586319c82a7a8613ee8b70d chore(attribution): map mango001@126.com -> max-chen for salvaged #51194 1bb7b59c5de4eee89a9f47f93a48471ba4fd6605 fix: offload blocking profiles endpoints from asyncio event loop (#54523) d5eee133ebbe0a86d5750af4b60d65fb05273331 perf(profiles): fix list_profiles O(N*M) wrapper rescan (6.4s -> 0.4s) 2f5950a83a66d2b91918bb78e6d1b60f3f48b938 chore(release): add telos-oc to AUTHOR_MAP for PR #14353 salvage fa11b11cf5649dc7f014081c82e144b60fb14f91 fix: propagate key_env from custom_providers into ProviderDef 9f979151634d5bb3acded9649ee5153cae2bc650 fix(browser): route open-timeout base through _safe_command_timeout c79e6bceae829fbe01a3d68bd01b4bf413b93cc6 fix(browser_tool): resolve race in _get_command_timeout cache returning None (#14331) bf0d8fed8e349787dd3a09d37ff2192bca960d5f fix(config): v32 migration flips baked-in verify_on_stop=true to false (#54740) 75317d82d02bad372dcf2254f85309212b3fb294 fix(vision): narrow the fan-out cap to the CPU encode burst only eddfecd2cedebe7eda3efd2c356376722a0073f6 fix(vision): cap vision_analyze fan-out concurrency process-wide 115e78c37747abf49b4a51c63b14e35dee661008 test(camofox): accept headers= kwarg in persistence test mocks 41095fdb040b0dd4182389bafe7b21c8db05c680 fix(camofox): register CAMOFOX_API_KEY in OPTIONAL_ENV_VARS 08d6195bc48210f38cb27a0db63d2a96a356688b fix(camofox): auto-recover from stale tab 404 on navigate fe38d50833ed9f68967cf972b43fa4dac47db0e6 fix(tools): read browser.command_timeout in Camofox HTTP client babd9168babb0b24f6e2b341b6db4b37793fe76f fix(browser): send Authorization header in Camofox HTTP calls when CAMOFOX_API_KEY is set 270456308c13f00e6e0947f8f8961081fae47b76 fix(tools): send listItemId instead of sessionKey in Camofox tab creation 34e616e778d065acea1477ddc6933c30378def89 feat(slack): nudge stale installs to add mpim scopes; mark message.mpim required 4125cc3b7c1ce0fe86789e192de5dcf3dfbf1343 fix(slack): subscribe to message.mpim + mpim scopes so group DMs work 29f096827595708e3ffe9683ad30418d57edd702 test(windows): harden pid-scan no-window assertion against captured-call leakage (#54707) 392f508b4e5c6eaa9b7444b79394a7f1cdbc8432 feat(dashboard): auto-initiate portal SSO redirect on unauthenticated load 0434a9a5ec743aed90cd5ac9a1ba872b4f2202af chore: regenerate uv.lock for supermemory + mem0 extras 1289f12812a9c6a3f3e6fbdf39e39ed7e1b7bd50 fix(memory): lazy-install supermemory + mem0 SDKs like honcho/hindsight f8604928422ff3461d4004ae6f71fdfdea9923a2 test(desktop): match multiline spawn(ps, fullArgs) via regex like sibling sites aa2ae36c3fcb6ea9af76c603d262389d832a24dd fix(desktop): launch Windows backend as console python so child consoles are inherited, not flashed 20b03d9aeeb0622f5a7e1bcfae05989dcc16aa03 i18n: add Custom Keys strings to all locale files 1c75e7c9d81230b8e1743e2ab626525c2231631f feat(dashboard): list & add arbitrary custom .env keys on the Keys page 23f245eda542bfbb199702c65789b6bb1d754318 test(vision): cover Ollama /api/show vision capability routing (#54511) d7e573e54dc55a25e5f1a9a80fcca4b3b478f6e3 fix(vision): detect Ollama vision models via /api/show (#54511) b481348fbc2d1ac65ef86fe3bdee2af1e661acfb fix(agent): stream copilot ACP chat completions 0106082d1f6125d8e9dca8ab2450347830a846fe fix(agent): return OpenAI-shaped copilot ACP tool calls 032d70214008afe5bb24d96d50f1b0479fc102ac fix(agent): omit stream_options for native Gemini streaming 101d5f99ce68e1852f665996a59bf97d761ef053 fix(container-boot): autostart a gateway stranded in 'draining' state 25d35cce18cd51f903b8800dcda31950d6190a16 infographic: Windows CLH lock-timeout traceback suppression (#54436 salvage) 98a7cfb8f90ad1c62057a09024a78a3e7b7834f7 fix(logging): suppress Windows lock timeout tracebacks 74541beb9ce32fcb1b8d89d698120d4b59d34ca8 fix(security): cap WeCom callback body size before pre-auth XML parse (#54615) 0b733a8418cf042363bdb69a48cdd4cbeef3a996 test(gateway): pin auto-reset cached-agent eviction (#10710) b4300f2d967e6a3e763a43df1828548857d9b872 fix(gateway): evict cached agent on auto-reset to prevent stale context summary leak 61a4526ac7043ab35fccd8f55f0be91ad4ad73b0 fix(gateway): clear session-scoped model overrides on /resume 476875acb9f00b00f659dd6f71c843fb2f08aac2 Add dashboard backup upload and download 8fe800ee1a42bc44d95e98a96431a980247e0c23 fix(file-tools): sanitize host/relative cwd override before it reaches container sandbox (#54447) (#54616) 7eaf537cfff3d520b8f4df298719c9c130b0c5ea Merge commit '388268ecde085a22c15474fea1723db161a930da' into fix/windows-desktop-flashing e1f4098b9fc362d0ea83844b2fad4cb422a6fc14 docs(cron): document explicit per-channel delivery targets for all platforms (#54630) 02aa1dbb7d2f4bff3e8034c16da16e8a67ffb601 fix(desktop): launch Windows backend as console python so child consoles are inherited, not flashed c21cbe2fd73b7a437d9c76574f7d4c088059051b fix(vision): cap vision_analyze fan-out concurrency process-wide a83c9f73d33ed598e607b322d51cbe8621c133c1 fix(slack): subscribe to message.mpim + mpim scopes so group DMs work 388268ecde085a22c15474fea1723db161a930da Merge pull request #54568 from NousResearch/bb/shared-websocket-layer fb0644fbc2a56d7b76f0f2856cca989314a05e2a Merge pull request #54585 from NousResearch/bb/desktop-terminal-history 1af109c79cefea8fd47d0059363e48fbc79daa5d test(cli): drop pytest dep + use real sentinel handlers in serve test 313a8c68332e126e6b5b831877da3d8c2dd3f72f fix(skills): replace string prefix check with strict path containment d625ec317d20a5466dd41ee3b4a910f1ebae9940 chore: regenerate uv.lock for supermemory + mem0 extras 0943e2a2720fd2b7eb5aee19c3bad0d495e5450a fix(cron): don't report a false 'gateway not running' on external-provider instances (#54600) 151dadc741a4da6cba47a8a9de3fa63977b08f6d fix: ignore SIGPIPE to prevent gateway crash on broken TCP connections e20ff352b91623d51ae05ea586a1800aee852402 test(matrix): authorize inviter in DM-invite fixture for new invite-auth gate d836b2bac4447c099475a38c90b5f577a952d4ef fix(matrix,mattermost): invite auth check + API path traversal guard 9cf9d3a28fa859b5690aa43aa0fe9cd1de80e1ba chore(release): add AUTHOR_MAP entry for PR #53295 salvage 163562bf88ecaef07542e64b76ae4705766e5741 fix: normalize lmstudio base urls 43eaf79ae6451e10dacba3342d28230e6fef87de chore: remove committed PR infographics and gitignore the path (#54564) 14204b064632b240328aa15d85da47bf61c3ca86 test(agent): cover .hermes.md no-git-root cwd-only behavior 306b6615cf00a77e39fb27b69653a2a5d24ce5f8 fix(agent): limit .hermes.md parent walk to git repos only b14fb7b35f6be538597ef860d06ced54c2aedd79 fix(memory): lazy-install supermemory + mem0 SDKs like honcho/hindsight 1c0fa12edb1c33b8c72ff860b6a0276262394cd7 feat(desktop): persist & restore terminal tabs + scrollback across relaunch 9d9a50c2bc8675684138dd6f3f45861e950199ce test(cli): pin the `hermes serve` decoupling contract e684b808adf4c4865a10e77f057535b2fd785f64 fix(desktop): route old runtimes through `dashboard` when `serve` is absent dff491a2b993e9e9db43d1834ac5d46c2f87173e feat(cli): add headless `hermes serve` backend; desktop no longer launches `dashboard` 4488fe134b1de4359f3a4f1f8368576413e6e268 Merge pull request #54517 from NousResearch/bb/desktop-multiterminal f019a999d85c4fe6408858fbd7c022122ab4c373 docs: clarify desktop is self-contained, not dependent on the dashboard e9b95dfd19b5046ffd633e6ce2dfd87e504a372b fix(docker): include apps/shared in dashboard image build ae465e9fb8d556e270c165033216ad94df16209e Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/desktop-multiterminal 1a1e00f37e0f4558dc930b7b0147f01411e02e76 fix(desktop): stop injecting ctrl-l into terminal startup 83f09f52f9596252e1f8ace94dfa214c4e109e93 Merge pull request #54558 from NousResearch/bb/overlay-panels 216ace4bf3ce88d142057813970554fff91a8e6a style(shared): apply workspace formatter to websocket helpers 5a2906a11b4422c4e4f0a5d9955dc2a08ae3266e chore(desktop): keep the diff surgical f6ccf08ee6f53a9d02893ace22fb33f76ace92d9 refactor(web): centralize dashboard websocket URL calls 6776b2f9b57c01249c435c74798bc07eb539929b feat(desktop): live gateway popout + statusbar/command-center polish 5a4bdfda5062055ca8ab4bfb68a8d7bc99067e10 fix(shared): close websocket clients deterministically 6c52e4a318f6766d1e0dc7a4d87789f8614b501c fix(desktop): match agent terminal scrollback to user tabs dfb561a3aebf459da9f05718da04784af8e661f3 refactor(desktop+dashboard): extract shared WebSocket/JSON-RPC layer adacb16d624336f18380a0a40b4b704c699c3f10 fix(desktop): make agent terminal tabs fully readable dee41d0716efccc3d5ef9125d6aa0a55dcdb8ff9 feat(dashboard): catalogue all memory-provider API keys in OPTIONAL_ENV_VARS e117cfdff08b7e43b7d0b7f7e661be7b710e7a4f feat(desktop): live agent terminals + agent-driven tab close 9f02eea1d28440b54dc1956afc16cf3acc05ae42 style(desktop): prettier + eslint pass c8fd47be14921fed55e643092f9ab18c7953885d docs: add PR infographic for approval mode validation dda3268d096e0cf49e310f51602e26ee7b4a8576 fix(approvals): warn and default to manual on unknown approvals.mode 317b94871be6d90383078f07bf4975e2efc38217 chore(desktop): drop dead overlay primitives 594378560751600f3a25aff77526e8ed9971d711 Merge remote-tracking branch 'origin/main' into feat/telemetry-observability 991220747fb5ac3dbd0cafb236fdda518d0b247c feat(desktop): unify non-settings overlays under a shared Panel primitive 11183e833268f61183969f1b29179b11704da9ac fix(profiles): validate custom alias names to prevent path traversal 27ddd8fd8032bc39cb1b6da4fc42b7cb3cb34273 fix(gateway): sanitize agent error messages, validate webhook gh args ec148f5d31fd0de95a6ffe453b98dae1ddf6ac0d fix(agent): guard Anthropic interrupt, cap vision data-URL size 490f215a19291f34b81fba573594b05c52aeefac test: cover export-prefix stripping in .env parsers (PR #6659) 5c1ac6c70d76b6b8bdde9310c5d715fc44d424c9 fix(config): strip `export ` prefix in .env parsers across three modules f1cbe4308f54215cec248eba94444a6fb8f1caef fix(gateway): log error-notification failures instead of silently swallowing (#54472) 3483424aaa1047272f6a28bca59d16ccdde44e27 fix(security): redact bare-token credentials in URL userinfo (#6396) (#54475) 9860d93f2a8a36bd4d9c9fd554993795e7ba004e fix(terminal): require approval for host-bound Docker commands (#54483) 7cfa2fa13f998ebb5e7071b2edab45aeb4adebc8 fix(docker): gate resource limit flags on cgroup controller availability (#54516) 5d661a3ad785a5668b5bdd6b0081f099d76689ed fix(desktop): show the agent command before terminal output arrives 6ac9ba9fc4ad3c6ca0a450578cc78cd4dd243551 fix(desktop): seed agent terminal tabs from process snapshots 520212cc593dd8bc0472002877e31d7310bd295b feat(desktop): stream agent terminal output live instead of polling ad831dd4928e817bbb4b913561ec5ee09e0672b9 feat(desktop): mirror agent background terminals as read-only tabs 8255549624f51a6707bd55af647c366f104a0096 fix(ci): localize deny-reason keys across all locales + update interrupt-path assertions 6e12f8ce4a30c3a95b0f2bd64deaa5f0bf4a17d0 fix(desktop): force a repaint when a terminal is re-activated b02f453496a2f1afd963aeb30c44996b41bbe134 refactor(desktop): generalize focus check to isFocusWithin primitive 2d55ff8fcaf3d0f3ac80938437e99af7a9f067ab feat(desktop): ⌘W closes the focused terminal c1bb34d5e86deee11d92e26a3574e5f3781fbe9b fix(desktop): keep inactive terminals sized so switching doesn't garble 6875d6cd3e11770ac3029811d31002b515084584 feat(desktop): multi-terminal panel with side tab rail e88a0a5c2550e23e6d3b7ce38c337ff1a53f6814 feat(approvals): /deny relays denial reason to the agent 3a90771f9c15fcdca52f0a68e23cc5d3dc02c4b1 feat(prompt): steer model away from disabled-tool workarounds 10043c6d0cd942487f7ef94231e22d91e1734a20 Merge pull request #54503 from NousResearch/bb/fix-desktop-cross-wired-resume cd5fb760a5ee42181d21b1c66cb61033cb2a8d18 fix(desktop): restore cross-wired runtime-id guard on session resume 65d45a0013238921b35f17b0d9d287ecaf898445 Merge pull request #53386 from NousResearch/bb/elevenlabs-voices-401-spam f34cf7e3a40b44c908ebf47be458269b63dd4163 test(gmi): stub profile fetch_models in static-fallback test 27f03243a0536cc59340b1a020b8ffc331edafc6 fix(dashboard): stop ElevenLabs voice-list 401 log spam d0d2cf1c2f7e821e6d06a7a0e838ad66c6e17fd5 Merge pull request #54492 from NousResearch/bb/windows-hide-checkpoint-skills-git cb1bb1a48d76a7b1584b66f541e85d1a84b6bb06 refactor(windows): unify windowless spawn form across the touched sites ee22d853eb131ecdce3a8ba54a9a1c39ee5ca4a1 fix(windows): hide pdftoppm console flash on PDF attach 32087e4bc962744b1496da05c8d6e8b770068c12 fix(windows): hide console flash on checkpoint git + skills_hub gh probes 980622d0ec144581fe50340854c3716da8eb46c9 perf(startup): parse config + plugin manifests with libyaml CSafeLoader (#54486) d65468e7ff9e1e1939e156508fad17acf53a08b3 fix(security): SSRF guard yuanbao media download_url (#54470) 16ff1a3b93fe39eb6a4c5af80f2cc6a521f0dcd0 Merge pull request #54457 from NousResearch/bb/windows-console-launcher-repair c8b86963d0364229fa0bf185dc8568724fe046c2 docs: add PR infographic for anthropic stale base_url guard e7d4ade8cfe30c7af12048995baf5f2f0fd9e90e fix(anthropic): ignore stale non-Anthropic base_url across all resolution paths 95f2919f916e97dfbf86e9fb1f479f23fef84253 perf(startup): lazy-load gateway platform adapters (#54448) b0b7ff0d75e45826481b189b2802a1e00fc218c7 fix(provider): auto+base_url bypasses cloud API when custom endpoint configured (#3846) 86e64900b943b8f32bb2775e1229e91922129831 fix(gateway): preserve sessions across restarts (#54442) 4c2961c511c523c621b8847493f032ab65bf116a fix(curator): never archive cron-referenced skills + floor use=0 pruning (#54443) df8e2523faa36e0c138065e6648fa203a7b0bfff fix(windows): verify launchers after primary install 76bb8f46a0db2b9d7893dc0d54e2a87f79365fb5 test(cli): cover Windows console script repair (#52931) 95994bbc568a61297e10bbea0d0c96f3d2148b07 fix(windows): repair missing hermes.exe after pip install (#52931) 28097d9cd9d5c84738c61d7dffc62cd023973b4d Merge pull request #54385 from NousResearch/bb/project-folder-picker-remote e5d22ab80d979d38d8062e666af418ed847618a9 fix(daytona): quote single-upload mkdir parent path (#54440) f9b469d7dee6058c7a69b4154961b08567c4d419 test(web_git): assert default branch invariant, not hardcoded main c648ecdca526f8c421d8c8c00e1aa9b330bbcb5e fix(telegram): reject unauthorized users before event construction (#40863) 61210097a51dda26b2c6fb2777b3ac003c43d376 fix(browser): extend private-network guard to browser_get_images c7542358f2ba5b4b7ef3f49d9e13f9b2e92c98e7 fix(desktop): remote project picker UX and profile-scoped fs/git routing 9a0010fd469f0de6c7e2146f955ed9980d02b397 fix(windows): cover remaining console-flash spawn legs (#54417) b31b0b9d95d1dbaae0197b9f3f7d3f3d0d4efc28 docs: reconcile docs with code across last 3 releases (#54254) 19bae1b9e0d32f9ba05830e44ba8c1cdbdb246c8 test(desktop): assert new backend sessions carry workspace cwd 8d8c7111d96d8c9451573e942746f16fb9a555da refactor(desktop): keep remote fs routing inside the fs facade 453f134b3bc213f05db52b22c6a0eb18ef115339 refactor(desktop): centralize remote git REST routing 4e9439cc3b33d74ad511f320dc1c5c0a66423127 fix(desktop): route composer context picking through remote-aware fs 9b7122118716474a53f559df44b8baf0526ce2ce fix(desktop): write project IDEA.md through the remote-aware fs path e4cf3a2e9d10a0325e0c32b2f20a791435888e01 refactor(web_git): unify porcelain-v2 parsing into one walker fc86e35764f7b339d505092dbad3686cfa44c576 feat(desktop): make the git cockpit work over a remote gateway 304f0650c4071951cbdc067a47e87eb3c0d01fe3 style(desktop): tighten pickProjectFolder comment 4526fccdbe6bd804eb26aa131f82d6e319be101b fix(desktop): make project "Add folder" picker remote-gateway aware b699d27a4a8ca0d886d5c51c7d46861c571ebb9c Merge pull request #54357 from NousResearch/bb/browser-chromium-autoinstall 27868e5b55bd4c36fb1473e26b6b20b428e03361 Merge pull request #54353 from NousResearch/bb/browser-first-open-timeout 70292596efcf4947d9b4a0b43021dc7cfe0fb5f2 feat(browser): auto-install Chromium binary on local cold-start failure 1ab5c3cdda665f5132c890e92a6223612ef6b553 refactor(browser): drop redundant sandbox-hint substring check 7bb8aa3bd55d0d4b39bc9e026d780d92fe0b306a test(browser): cover open timeout diagnostics and failed navigate title a10727a555ad5e5c4155b3b74d19959c36c436db fix(browser): extend first-open timeout and surface daemon errors 23021be26e66e26e1b9893eda2dc943849ede03d Merge pull request #52656 from helix4u/fix-desktop-empty-resume-view 3e16176ba46f195263179386c708df9b353dcfda fix(tools): reconcile agent.disabled_toolsets when a toolset is enabled 020966574d6a6d9c396f0ed47300e3619ca69062 Merge pull request #53892 from NousResearch/bb/windows-popup-spawn-legs eeca59f489194a4ce288b31de12b46c20d05cd48 fix(windows): hide remaining backend console-flash legs missed on main 0c2e6c0049ca04ccc6fea1f264d52b48ffda33cd test: make active session cross-process race deterministic (#54248) 1ffa01f35fb8bc0bf8825117788092ff0e08421f test(windows): cover no-window backend subprocess flags cb982ad997c5e04c6b647c4cbb3d1b020ec383fb fix(windows): hide console-window flash on backend git/gh/wmic/bash subprocess spawns f25f235722cc57821395ec121b77c1b34541a765 chore: map salvaged PR #49845 author email for AUTHOR_MAP d05cc8f4d6b588800c6882a667dd5272e61da0a2 fix(mcp): skip preflight content-type probe for OAuth servers 9d919daf446a4d4379a0fd65c72d21aec379ffb2 fix(gateway): mark platform lock failure as retryable instead of permanently fatal 61622bb56a7a24c0fc39e8a5a46537dfd2b2d9b6 fix(tui): use role=user for model switch marker to avoid HTTP 400 on strict providers (#48338) 376d021feef9cb27e6f5a750d6a423221e49f6c8 fix(desktop): force app exit after update/uninstall handoff on macOS ca52dd8143b008e0dc02a381d89ae686043a971e feat(logging): opt-in HTTP/WS body capture to an isolated, share-excluded gui_bodies.log e54bedd8ea14317d674b843719a9f458bddbbd15 docs: add infographic for #42006 launchd bootout fix c4719aa51c213d2b51f7105c84fdab9b281ab39a fix(gateway): boot out stale launchd registration before restart bootstrap 52a853f5c37b752fe1256d1ffe358ab68329524d fix(test): pin monotonic clock in spinner-elapsed test to fix CI flake (#54203) 8e356eccea34214252955f5035ebef379518b760 docs(readme): trim provider list to a few names plus docs link (#54169) f22b9d3867d2f905177f1b14561df366655071a1 docs: add infographic for MCP WS discovery fix (#38945) 5c2c85c5452f227e6f3b79d90d2c50f7adaddf8f fix(tui): start MCP discovery for websocket sessions 091ce825fef4f387fe6e55323846ea3d6296a09a test(redact): fix file_read regression-guard for current-main YAML collapse de928bccde6cacaeef315cb128fcf7779c0c036e fix(redact): non-reusable sentinel for prefix secrets in file reads (#35519) 19cbbe304a3bce4871317b481198f2bc0c9efb17 docs: add infographic for clarify typed-replies fix d7f655f370e2bea177dfedf19f3b261d13c986e2 fix: accept typed clarify choice replies 9bb5a809b52aa519f7e8cefe48faedcad0f7eb2e fix(gateway): make zombie check defensive against partial psutil stubs acca526286db53b03c3a8d820171faebd6c8b987 fix(gateway): treat zombie PIDs as dead in _pid_exists to unblock --replace (closes #42126) 463225caf17e740c098028cc3f5b7b3d270b7ffa fix(gateway): bypass legacy-unit prompt in non-TTY systemd install 831d443b03d6a29aa70852e2636280cb4ad0edb0 fix(gateway): honor --start-now/--start-on-login flags and support non-TTY headless installs 5e7bca95d9852057b89bfd8bd163219bd2aec306 fix(tui): coalesce render frames while stdout backpressure is unresolved (#31486) (#54171) a06d0198cd23086d96db66df1335e2d06b3a0207 fix(dashboard): reap PTY bridge on child EOF, not only in writer finally (#54190) 7968c9031887a44701d2f960f01c24486c7edfdf test(install): track run_with_timeout extraction after #39219 refactor (#54185) 135f235165b76381299b2e82616f9d1d2f19c31f docs: fix incorrect web search instructions 546193aa6d0ab3aff44a9691723c3c0a63ffda99 fix(install): time-box desktop + node-deps installs so a stalled download self-heals (#39219) c1c179a2395a19c3a8e4fb5dae7ef527227da07a fix(security): redact secrets in background process + foreground env-dump output (#43025) (#54149) d5ba374c038a99db99e3036d938271e70a6930fd fix(telegram): detect wedged getUpdates consumer via pending_update_count 822b71cbf8d8f96f0ef1747a86b787e84f33a8ce docs: add infographic for #43083 secret-redaction fix bbe1bf4045427b2dca7d8e4acbe042969cd3ad6a fix(agent): stop redacting tool-call args in history; fix auth-header quote-eating 204a67f0c85b721f55bd11a924c5cd814c09cbe6 fix(kanban): retry write_txn on transient SQLITE_BUSY 90c1dc0493e3a7767ce370cb3177b856539e3b08 test(kanban): cover write_txn BUSY retry (currently failing) 9844243b180f286ddcfe29eac023ea3191460af6 fix(gateway): gate quick_commands through slash access policy 6d879d486b19716f8b09bd47bffb0b6e5b690431 fix(dashboard): close PTY WebSocket on child EOF to stop FD leak (#54028) (#54123) 7ef04ae7a7990451f1e994cd08a3062d407a0c99 fix(browser): close eval return-value SSRF bypass (sibling of #44731) 0ae6196087c845f84e79238511d04785d2a9ebd6 fix(browser): allow local sidecar sessions to bypass SSRF guard 48f5c42599edcbcf1f5a0c146dfe8d47f3d9e7b2 fix(browser): extend private-network guard to browser_vision 7a6fe9bbfaa8c4e01dbc5fbc187290d14a269c75 fix(browser): block snapshot from eval-navigated private pages 7c0a5def58fbec985ace8c887ca3484f7b8cf584 fix(memory/holographic): close DB connection on shutdown instead of leaking to GC (#54133) 00d8c2c91578c4f7496398142eadcb334441b056 fix(gateway): prune stale sessions.json entries on startup c38dfba3a737acf1a6e366e0686757cb236d7282 docs: add infographic for #53175 gateway cleanup off-loop fix ea5aaa7a22e0d5d036da0130a659d2e4126f7d41 fix(gateway): offload remaining inline agent cleanup off the event loop (#53175) aa50c1ba5d277c97f78f27f38f0075c09ce9298c fix(prompt): repair backend probe import (get_environment never existed) b508d4296e045c2754f075628ec80761b86f7126 test(ci): raise per-file timeout 140s → 300s to stop false timeouts (#54143) dcc6cd1b42bdc4073f2f56fec8b58fc1543c8200 docs: add infographic for #52378 Windows update-loop salvage fe89ce06943df27cff302bfbfe3bc859d66cc1c7 chore(release): map Cossackx in AUTHOR_MAP for #52528 salvage ba37c910e0e2d19b3329a7e74dca21def8d4c3b6 fix(desktop/windows): resolve real hermes over extensionless shim + prefer --update on recovery 0229246ab879b9968c9fcc384d8d5d0add939771 fix(desktop): probe venv runtime health before trusting bootstrap marker 7c9cdad9fd2c786ca931dc32915d436d0ea6c8d9 test(cli): cover Windows self-lock recovery guard + cmd-quote its hint b6f592dbdc4cf679c797343c526d4e776ac8cd7e fix(cli): detect self-lock in update recovery to break infinite retry loop on Windows 14baeefe1d0b80e67429ffb47934acc4cd399fd1 fix(matrix): record DM rooms in m.direct on invite to prevent group misclassification fde1c8570ffe1bcd1d352efffb4eeafdfd975f0c fix(tui_gateway): suppress WS peer-hangup teardown error flood (#50005) (#54126) 6eec0d4f08d763d50428cecc1363ef912456f7c2 docs: add infographic for #53107 gateway force-exit fix 9f0e64ceddb87fc16c287f0898a080b58988905f fix(gateway): force exit after graceful shutdown dddaea0c98f5c0d7b20cafe66d8e25bf47b18b19 chore(release): map yungchentang author for #53622 salvage 7e2ca7f68da63a29e1695b5e24901cc57e32f2ac fix(telegram): reset send pool after pool timeouts f3d8f20a598cecd1ac1ec17fe44e9959ae5ed23a Merge pull request #54116 from kshitijk4poor/fix/36658-gateway-drain-microtask 9e894fa7264f2262a2add559034a043fad9ca31c fix(kanban): retry write_txn on transient SQLITE_BUSY f646b82ff01ffa813f0493ddff9a6939e31f217a docs: add infographic for #38249 atomic env-snapshot fix 9f17f16c662d1a06131d0f358589a79df4a9f0a0 fix(environments): use $BASHPID for atomic snapshot temp + harden failure path 6a2958a5216b9d58e15ff6399256f2e99235e3c4 fix(environments): use atomic file replacement for snapshot writes c23f394eb863a24ec5ecfe823d43f1188ec89de2 fix: satisfy ruff encoding + windows-footgun lints for cgroup reaper 86ec979f66ab21cef42c1852443edd584ee98f21 chore(release): map PRATHAMESH75 author for #37550 salvage e551da6ddb39a712c93e6c48a16aa748e2c7bc95 fix(gateway): reap cgroup orphans via ExecStopPost to unblock restart d7a105242473905fe71320dd4fceb6a58cc157ae fix(env-passthrough): fail closed when provider blocklist import fails 58c36b17986cb2f0976780853bbb963af73be9b9 fix(api-server): widen error redaction to cron-endpoint + SSE sites 5e774de76e401b3d528ae76409197f030b81e1e7 fix(api-server): redact provider errors at HTTP boundary d2fda5925d1e152a906369928f94b20bb4b3af17 test(gateway): cover Discord/Slack compression status suppression (#39293) d2ea948bc0ce561d98baac19cd653a0d739394b7 fix(gateway): suppress compression status noise on Discord and other chats (#39293) 9f7d520cafdd7760c9bc563540e17f811ee6d431 docs: add infographic for #36664 WhatsApp LID session-path fix 3aaa98dd01a520641e7eb163ff3630976d834023 test(whatsapp): cover LID allowlist match on modern session layout 263ffec1b03114ec98671919943fb61de7ebf1bf fix(whatsapp): resolve LID aliases on modern platforms/ session layout d0f087e7f9aeb2aeb06c0c340413c0afc9e04d73 docs: add infographic for #36109 empty-400 diagnostics 093f567f0d73705c2bfc1178301817dbc32cf837 fix(agent,cli): surface empty-body API errors and fail oneshot exit code c0b4a3438ac66a4f0c25d4aa9f6f54f2f9f24816 fix(install): scope Playwright override to too-new apt releases + keep step interruptible a28fe788a6651bb09ad0cfff40d9e84e2f2edfe4 fix(install): retry Playwright install with platform override on unrecognized host (#35166) 64972b64038b97cf9af095dd5f107723a2ee6ab3 fix(config): canonicalize model.name/model.model to model.default (#34500) f64d15ccb7e9f8d50dd59e4ad5035c860b5062db fix(tui): defer buffered gateway events to stop dashboard chat #301 (#36658) cbfb0fdc04917218ba75940cd999b669a0a82137 test(kanban): cover write_txn BUSY retry (currently failing) 2ecb6f7fe60f6a240d632bbd51bcbb25ad22c161 fix(telegram): clear send_path_degraded on successful reconnect (#35205) (#54076) 674e16e7c68d817072ed1cf840a4ae2a3c22035d fix(redact): stop DB-connstr redaction from corrupting code output (#33801) (#54061) de6e9ac76014d73b80f75f1bd1887f3ee4fb701d docs(discord): document bot-to-bot comms as unsupported (#32791) (#54063) 4f16950e9a5b32b401dffb55c016976ea8d06d06 docs: add infographic for #32421 content-filter fallback fix 578e3989d4ebb46af71b8a10f445df0bc421ef6d fix(agent): route content-filter stream stalls to fallback chain (#32421) b8e2268628b25e0294da8fae411ca3f218d98860 fix(agent): add MiniMax 'new_sensitive' to content_policy_blocked patterns c9df4bc094fb27ddfc8b278380d9598dc534587b fix(gateway): default restart_drain_timeout to 0 to kill systemd crash loop (#54066) 0800f1c28b80bfc0788a693bc143cde593ab97b6 infographic: whatsapp send-queue serialization (#33360) cb9f855c2b36d5517edd73db31fcc690d8e5ef0d test(whatsapp-bridge): drop structural send-queue integration test c393a8e55f27214b5f1b0eb525abd31760d08de0 fix(whatsapp-bridge): serialize sendMessage to prevent cross-chat contamination (#33360) 1f72ad9be98b07ad342a3790a4c92786b34eedda refactor(cli): extract interrupt recovery to a testable helper f3aaba7f85560b592476058de214693cb10f3148 fix(cli): recover terminal state after interrupt to prevent raw control sequence freeze 2e1b48ed31dfc8afb5ddb259a8f461c63dae4fa0 chore: map kurlyk local email → skabartem for PR #32867 salvage def97bcd963161610e3584ad442e814c113e8ba6 fix: eliminate race condition in OpenAI client replacement 4a0fe4e54adc47c5fb987943f64e6a1729bf6b9b docs: add PR infographic for #32762 clarify-expiry fix aacc15b2c9e2f2ad20f903ddc81dacaae1864307 fix(clarify): raise default clarify_timeout to 3600s (#32762) 3f543229f28c6a0fb588a73f093b85a183d86595 fix(telegram): notify user when clarify button tap arrives after expiry 90d25adc9eb3ccfa2302d16912698326da04f4b3 fix(gateway): deliver profile-scoped cache media on symlinked HERMES_HOME (#54060) 2701ea2f0c24eecf7d3c28dc056c2cac0b6ca5a7 fix(agent): reopen fallback chain after primary recovery 7b9ff310b6df82957d7da3f3acef2a40d34a146a fix: salvage #33830 for current main — relocate allow_bots bridge to telegram plugin hook, fix stale adapter import in test fc70d023d82b93778a337f741da05335550e7bb7 fix(telegram): apply bot auth policy to Telegram sources 002357a83f29899b14a151b0cc872545d121610d fix(tui): repump stdin after readable handler errors 3a03d03bdc0bdacc00cdbb063a6ba815806f75db docs: add infographic for #30636 macOS state.db fix 52d774f0f962936091a855a699a044b955bc6b70 fix(state): F_FULLFSYNC barrier at WAL checkpoints on macOS (#30636) 9229d0db177577e1682aaff3d6d85b711819a1bf fix(moa): preserve Nous provider identity for references 7c38249c790cfa82d47c08866f9b539bf2d3d475 feat(moa): references see full tool state + fire on every user/tool response (#54016) fc7a01b6cb04038d8d89bff2c2a23a6bcd4d4343 test+harden: modernize salvaged Matrix path for current plugin layout a7fd62d8248611a78034f796aee83c08a5874980 fix(send_message): reuse live gateway adapter for Matrix media sends 1466eab4eeeeb0689a0183c77113e5fa4c5c0a1b test(docker): wait for cont-init to finish before privilege-drop shim tests (#54026) 2c9b017696ff708d425710d49a913c00d45cbc5c Merge pull request #54000 from NousResearch/fix/desktop-main-cjs-clobber-stage-simple-git 4f61d48aefa3db0d41357b91a52d0fb48194c37c test(cron): deterministically wait for ticker, fix wall-clock flake (#54010) 1fa44180b0b6f36b8bcab8c907bb0e23dc01be43 fix(moa): advisory references end on a user turn + get a reference-role system prompt (#54007) 2523917680191b4375ceb1457658fe924ab1c73e fix(tests): bare pytest flags pass through run_tests.sh without a '--' separator (#54008) 2d206a3a42429465f6bb99c9425e3f7316273782 fix(desktop): stop hermes desktop from clobbering tracked main.cjs (#52735) c918d42d88ac619186fa7651143b8517a6a267a4 feat(desktop): config-driven Electron launch flags + GPU policy 1b70a9184498cd03bb1e2274b3eac4b2635f7835 docs: third-party-product plugins ship standalone, not into core tree (#54001) 54ea059919d57a7a764e7ffaa8cfbf6b56f7e833 fix: fall back to no-sandbox for desktop launch on restricted Linux hosts 97640fd9adf532d6ce4ebc63ec817137ba685157 fix(desktop): reserve WCO width on plain Linux + author map 8194dbf6126f404a43acb93f2778854d3c1a620e fix(desktop): re-enable titleBarOverlay on plain Linux 9c7f9f95027004fd8c1a69d335c13c58f7610a2b infographic: partial-stream recovery fix (salvage #41498) 1fa46570fb71e7717e510baf4cc62e2411fbd20a test(agent,gateway): cover partial-stream recovery and restart helper salvage e860a40e14b1e936ab2e5ad646546380ad0a4e57 fix(agent,gateway): surface partial-stream recovery and bound detached restart e3c9924b8b358e4b7b0a600178426fd70e6f9481 fix(cli): correct stale `hermes auth login nous` hints to `hermes auth add nous` (#53929) 4626ceb747272b4580293240bc1ec4936fa22241 fix(gateway): only offer system-scope gateway install to root sessions (#53975) b304023fc62f8ce71ce8b24491e952a6be823e99 docs(infographic): model picker fixes (#49129 + #51488) c72d68715ff6f90bf40cc7b439eff0952d7da763 chore(release): map salvaged contributor emails for #49129 and #51488 f6deabca0d8010d485d4d3a8744d0ceb797eacb9 fix(gateway): clear stale base_url on model switches f54c52800a0b96d65e5df3e74e11c6cbc22f43e2 fix(models): scope live-first picker merge to opencode aggregators only f98ffbc24639bee714efcd983cf11c049285310f fix(models): live-first merge + update opencode-zen catalog + uncap aggregator picker 2e7e600eaaaceed0ca6289510ddade4102d47d25 chore(release): map HexLab98 author for PR #53863 salvage 04ff4d9b542cc115cafb92378e956475a06525c2 test(auxiliary): cover env-only proxy policy for auxiliary clients (#53702) 073847c0f206c93ee4471ce0a6fe01e12d14c7bd fix(auxiliary): use env-only proxy policy for OpenAI SDK clients (#53702) 3b23a984b5f9db93d9d9afa3dd9ce0413fa8b64d feat(kanban): stamp handoff freshness so workers don't read stale state as current (#53973) 131c9c542c0d8d8aed401e04d5e60002a0dcb584 test(tui-gateway): stop deferred-resume build thread leaking into next test e418605450e8dcea3c4cc9bb188e9a5d1802ddec test(24996): freeze monotonic clock to de-flake fallback cooldown timing 1ad8b4441308f851ca54bd21556000512d18b5e6 docs(infographic): skill sync external_dirs shadow fix db11849c9dc9b03a058c5473a64754832efaeb98 fix(skills): skip shadowing when external_dirs provides the skill a8c862900b9c24a1706cbcb17c2b9968c88f277c fix(tui): sanitize replay history on WebUI/TUI session resume (#29086) (#53939) f03823014b01b7b85a6777040e1bb02a68cf8877 fix(telegram): kill 409 polling conflict loop by disarming PTB retry synchronously (#53941) d43e0cf304a14c9a3c98ff0506a1f79cf4938e99 fix(agent): config-driven intent-ack continuation for all api_modes (#27881) (#53943) 56abbaeac3278ebac32fdd4644a370f384616a20 fix(curator): fail closed on unverified skill deletes during consolidation (#53935) 11b0be8d15fc18f6a6741317cbb3f197ac7df989 fix(gateway): avoid Matrix pending invite boot loops a1ac6baac45dbe2a23c6ffeb87d43ceda933c4fc fix(gateway): make bg-process reset TTL configurable + surface session-scoped processes 33d8b66d5bf591db618a24b80c83f3f2cac39200 fix: stale background processes no longer permanently block session reset 8c8967a50ba90977518dcf71df997f339138d1fe fix: defer hermes_subprocess_env import in browser_tool 9c6229ce249e4bbd86a22463be73ac2986db6324 fix(security): centralize credential-safe subprocess env (#29157) 88b3d8638e830c54b4acd7a7bc32689cf57ba67b test: de-flake SIGKILL-tree, compression-tip resume, and fallback-cooldown tests f0de4c6a47204091d20b50961a02ddc02f3d81bc fix(pool): re-select from credential pool on primary runtime restore 0b50fe9579745164d0ddf4ea90d693d9d67a2be5 docs(infographic): flaky fallback-cooldown timing fix 5f91da2d1cc9e881f54b169a1aad120145ab594b test(fallback): fix flaky cooldown-window timing assertion a590c5efdce9b89ff9b3b2acef515e17b34ec378 docs: add infographic for provider-precedence fix (#29285) 2af1678bfc6e62e1dd7ffedaa3c52b23bc23ed43 fix(auth): explicit provider intent beats stale OAuth active_provider (#29285) 2b73dd1ca645166be6d9a1cf47bde60c9990b1f8 fix(gateway): namespace --replace takeover marker by HERMES_HOME to stop cross-profile flap (#29092) 28ed8839592557641264f6fe398a03418f0d6736 docs: add PR infographic for config-defaults fix 45b2e4dd6b713a1dbc3252c65b717da715631488 fix(config): opt newer migrations out of default-stripping 98488c4be49eb4f8d967bc60fade5c86125a9fa4 fix(config): prevent save_config from materialising schema defaults 6dcc579bcb3a59f1ac302967d996b6af6a602004 test(streaming): repoint anthropic stream-cleanup test to close+rebuild path a0b9663c7cfed007acede4f1261212811aa623ef fix(streaming): rebuild Anthropic client on stream cleanup instead of OpenAI client 6f1a176b3309d0474e0ef329834b622603c60471 fix(gateway/discord): REST liveness probe to detect zombie clients (#26656) 457c8a0a7ced591d87792c74e6cab637c2cb40f3 fix(file-ops): keep worktree isolation when restoring preserved cwd (#26211) b2faeba182fbed7018ed0323f3cb668660b4768d fix(file-ops): make preserved cwd reachable at write-time resolution (#26211) adeba1d7a8a5510803443053416d30787993ccab fix(file-ops): preserve CWD across terminal environment re-creation (#26211) 926a1b915dd6a4a9b60e8de3928d0e7d62665499 fix(tools): suppress transient check_fn flakes so subagents keep file/terminal tools 505bc27d8d911465ae1e6e63e9329455f8213ecb fix(gateway): classify mixed attachments per-attachment + transcode uncommon image formats 0c372274cdb25094df9e2acc24059d1ece9c90a1 fix(agent): disable OpenAI SDK auto-retry that double-fires inside the rate-limit loop 1ab35ba25d4a65748182678376bbc8f19d51bfc8 fix(anthropic): stop SDK auto-retry double-firing and raise Retry-After cap to 600s 32732a8f8350f9c0d8522fe5473f16293b8b3427 fix(agent): cap same-entry credential refreshes so fallback can activate (#26080) fae920642aa0237459dd3c55b72adbacc88c21aa fix(agent): throttle cross-turn fallback-switch replay storm (#24996) (#53909) 1dde7e2f2a1ab5be17df5046afdbfcd042955493 fix(anthropic): adopt Claude Code's already-refreshed token before racing refresh 5a5396aecbada30a716fd8614365fe306266c740 fix(anthropic): reconcile keychain/file credentials when one is expired db16854f343c67548933ac2e0e1d4d586bdeaaa6 fix(telegram): surface failed media downloads to user and agent, not a silent empty turn (#53912) 6514be5a28c3d93f56a48feb0bd3196bafe5066b chore(release): add AUTHOR_MAP entry for linyubin (#50228 salvage) 4133cd9fbf5e51666525f98d9133c3230e5588eb docs(infographic): eager fallback on persistent transport failures c946e6709fa68b8a85f8e71709dd6642016b46a8 fix(agent): activate fallback on persistent transport failures (#22277) 851f75d4df0a1b5fb4d58c78087652c311add903 fix(discord): honor "*" wildcard in DISCORD_ALLOWED_USERS (#22334) 1207d81eedaf684d7bf783542ceb38e94373ecd7 fix(gateway): unify outbound chat redaction onto authoritative redactor (#23810) (#53907) c56b39c11e814ee571e391fc46384b0e7888a490 fix(auxiliary): fall back to OPENROUTER_API_KEY when credential pool exhausted 46e18804ad6abb726904862a020476adbc55a043 fix(auxiliary): fall back on 401 auth errors in auto mode (#21165) 1a570dae0049db2938d5a44859365f890337482b fix(image-routing): unblock message queue on OpenRouter 'no endpoints' image 404 (#53901) a94f657a505962cc046b29322750e03450c55645 fix(tui): route completion RPCs to the pool so they can't freeze the TUI (#53895) ccf526964a793371d4df97b4d1ae4f7d6fd63439 fix(gateway): bound adapter teardown awaits on the stop path (#14128) 6717cfc80519b1e0efc3830ae628827c77debc72 docs(gateway): warn against custom ExecStopPost kill drop-in (restart loop) (#53903) ea8facee81830be586655937c18f56bb4a379e2e chore(release): add konsisumer to AUTHOR_MAP for PR #19608 salvage 8b4c29f0f036c87400702d7b318fca505a7b0d4b fix(auth): preserve concurrently-added credentials on pool rewrite 163cb24d45d83e551d65da74678c191ceabecd5c feat(moa): render reference-model blocks in TUI and desktop, not just CLI (#53855) d3d621f7c38bb801d9d734cb2898bd4f9b134709 revert(windows): roll back terminal-popup PRs #53791 #53810 #53829 (#53853) 1d32e5d98c766d925ab2e4ebedc415d50cf97616 fix(gateway): relay _thinking bubbles when thinking_progress is on but tool_progress is off (#53849) 4c677698ff5c6d21be47f1d62c14a8c9de01bda9 fix(windows): stop persistent gateway console after update + close checker variable-argv blind spot 749edbf650a259279c32d0addb09c0546040c2f2 fix(windows): gateway-restart watcher leg must use windowless interpreter 2ecca1e7d3e7c387b4d350f99dc699e2f43f73c5 fix(windows): capture is not a no-window boundary; route flashing spawns through chokepoint (#53829) 3ac96d330892cf0e7d9ad0def1d23b9aa7d50c0f fix(moa): resolve auxiliary tasks to the aggregator, not the preset name (#53827) e7bb67332d758c7093e58efa5caa30fef96051b2 fix(moa): preserve Codex slot routing 66aeda35501d4998fddbc87fde92b3c25d1b4486 fix(moa): keep virtual provider on MoA client 5db1430af9ecd7ecc1e5eba93e7e1e965af59927 fix(windows): stop terminal-window popups from background spawns (#53810) ef17cd204d7583c31fe1ace9255077f8c736b47e fix(windows): stop subprocess console-window popups + add CI guard (#53791) 3b44a3c8bbe6fd7e8116b70178987952b918de3b feat(moa): show each reference model's output as a labelled block before the aggregator (#53793) dbbf102b8e1877924353b001a8724ef533c8f2af fix(terminal): strip VIRTUAL_ENV/CONDA_PREFIX from terminal subprocess env d470ed0c4c4cb59e83ceb025609b6c4f2d0a614f fix(cli): commit tool scrollback lines in verbose mode (non-streaming/MoA) (#53785) 227e6c0143037b03891899a8739545ce96412361 fix(moa): resolve context window from the aggregator, not the 256K default (#53780) 25ec01f79f4feb6ee610198311174fabc8ae6d7c fix(desktop): don't purge Electron cache / mirror-retry after a late build failure 1ef19bad905dbb9acc9325e74eb9512a356d53ec fix(model): show MoA preset picker on selection and label MoA in the banner 1b6ebb24c0789f2425a969f0ad6771c2ef482747 fix(agent): validate OpenRouter provider sort before request dispatch 27322612b42e7e45b2dc0fa3b31c87594e9bedbd fix(update): route loud build/installer output to update.log instead of the terminal (#53616) f53b184c48712bcbb98556a6314cd1f240fc104d fix(ci): pass secrets down to docker workflows 190e1ffac976ee5fc41c9f1845ba8fd886a827b1 fix(redact): mask passwords in lowercase/dotted config keys (#53590) 917f6bdb00b8b4d0f1c678702c639a5bc966a8eb fix(tools): let vision pick any provider+model, not just OpenRouter (#53606) 9c81c938d3cbce83f519534516a97482aebaec96 fix(approval): honour tirith_fail_open=false on Tirith ImportError (#20733) fe1c1c1121002166da38fc254a4fe977aa4da071 fix(session_search): demote cron below interactive sessions in discover ranking (#53597) cd592c105cbbc0bbf927b30ee9d061b1dd7b0b1b feat(send_message): native WhatsApp media delivery via Baileys bridge (#53598) 88c02469cc41b28a8c498d63ee40482288e7f057 fix(mcp): never permanently wedge the circuit breaker on a dead transport (#53599) dbc925b7550c2224631d6fb1a2fa0ec236d76beb Guard oversized Telegram video downloads 02b32e2d7cd155b756ba399de7d3f7b864f2de33 fix(moa): call reference + aggregator models through their provider's real route (#53580) 3fe16e3cd5e929f6983a2deece9cd58d0d77eef8 fix(fallback): attach credential pool after provider switch 635841d2108511408e744eb9894a11f3911a4fe8 fix(agent): reload credential pool on switch_model provider change (#52727) 2002bb49a72897f28a3d4aedd63d9c0f68bb4dae test(telegram): make config-bridge tests immune to ambient .env pollution (#53594) d4c2217e87400d73b65d015b83ff7db435b29a4e fix(gateway): offload /model switch off the event loop (#53603) caf4dcc7ad13260fb9b3be36ab7f242b1d327d9c fix(whatsapp): resolve phone↔LID aliases in adapter DM/group allowlist (#53588) 38e7bd8a08a9df450b7d8661778ecc47f25323c2 fix(agent): classify 429 'overloaded' bodies as overloaded, not rate_limit 16192103f4b6d23fa36aa9e6f509f951ba58517f fix(config): accept placeholder base_url in custom provider validation b34771fc06bab7afd3d8bf0dadd042b4c25994ca fix(cli): disable prompt_toolkit CPR queries to stop escape-sequence leak (#13870) e7c013494d705867eae87c193664add553cf928b fix(agent): preserve nested API error bodies 5ab4136631df6ec47662e92013aa1614c6c355a3 fix(webui): switch provider when Config-page model field changes (#53583) 7ee0b689739e80c75d7c32f42cf2a79a2207c0a0 fix(gateway,feishu): refuse executor resurrection during real shutdown b296915c82c9da02bd6edacf52490e68f85e1f16 fix(feishu): route blocking SDK calls through an adapter-owned executor 1011c07966aecd29baeeba60431cd70d0e77a38f fix(gateway): use owned executor for agent work 52a09d8faf6b3a44da5f3eff3e17f85a4f5ea90c fix(byterover): honor auto extract config f062cf076b77d2da29d9deba9d6a477d5f1919cc fix(agent): also treat provider=ollama as an Ollama GLM backend 266521b55fcacd3f2680382727d037eb56c47852 refactor(agent): trim docstring per review feedback 00a8252b7d33dc56fe33541b2bf04f197d38258a fix(agent): scope Ollama/GLM stop-to-length heuristic to Ollama only ab1f9b94c5055f859a3b0183f6bdd0ff4d93d65a fix(telegram): accept @username chat_id in delivery paths (#13206) f2ca3e3d84b7d8cedf847b42344c2e1d8700d465 fix(gateway): hold _run_restart on _restart_task + explicit cancel-loop skip 1ce5d6d974fef0e6089bcbd1f2320f6955ae3215 fix(gateway): exclude _run_restart from _background_tasks to prevent zombie on /restart 08e131f77cd956dca4cc52f4b12188e23b3b195f test(telegram): cover bot self-message ingestion guard (#11905) 6fb25f86ac4946b7f50238c68b545f77b57fd9f4 fix(telegram): filter out bot's own messages from inbound processing (#52363) 68a65ed7a151b800a68243912a1f38c696b859f8 fix(agent_init): correct misleading sub-64K context_length error message (#53569) d73078e7b036ae75999481fc8ffaa2b82b69cf87 fix(cron): make per-profile cron isolation intentional and tested (#4707) (#53570) 864d5521ad716614fa1c4cd4a6f1da0652e91351 test(curator): join straggler curator-review thread on fixture teardown 45ce35ed7228d5e62dbfc334aa793eb50ddbb060 fix(agent): classify message-only 'overloaded' as server overload 151ae1e9378667d37b2574502e0d331ce402abab test(api-server): cover SSE failure finish_reason for both failure modes b8b695e2cdef704756818c93e0e3633a786b5827 fix(api): surface agent crash in SSE chat completions stream f67c0b3e60ba91b92ca1d07826d873b4b8f36849 docs(hermes-agent skill): cover v0.13–v0.17 features, fix stale claims, tighten (#53566) d3db73210c28e96e04673bd38229d988805c907f chore(release): map blaryx@gmail.com → Blaryxoff for PR #32602 salvage 76af2456a2b9cd493cdb14d46f7db34d8c0b7f9d fix(dashboard): merge PUT /api/config with existing on-disk config ec769e49d23737a936d7950d1590b3a024b70bdf fix(gateway): WhatsApp/Signal hints affirm markdown instead of forbidding it (#53564) a5d1f68c74c0b7817baf7f1c47e5d8adfc6341c1 refactor(moa): share one virtual-provider row builder across pickers ed54469d0612bd88e25eed01974b9ff8e8948c1b fix(gateway): show MoA presets in model picker 789f8b7dc29ed252e12ba2267612f8f0dfdcd08d docs(webhook): clarify authenticated != trusted-content trust model (#53562) 4e0788783b10dc7adb2689ab6d8b01b0485ed4e6 refactor(gateway): extract MoA one-shot restore helper; restore #28686 comment; real-method tests 2f29e3cfc584d48eabafc8516cff66d4952cd2b8 fix(gateway): restore MoA one-shot model override on failed turns 17cb8299919e056c8bb564f4cd419495c752a5a6 test(moa): cover non-list/bare-dict reference_models normalization 8dd4e576d0f061df570e5f5101bd9bd3417914d4 fix(moa): tolerate non-list reference_models in hand-edited MoA preset config 60f58a2b9578828128dae99d78f98e9dff79dc10 feat(verify-on-stop): default OFF, one-time migration, skip doc-only edits (#53552) 29ee4bbff69ec9d55a279ecb3d81e58560567b1c refactor(dashboard): tighten cron-job form helpers c655cdf2c193850d5400cd8e6c6862b82be7dab1 feat(dashboard): expose cron job execution fields 50f685521734237faf0d902fa7d347492d9ea96a feat(moa): make /moa one-shot only; route preset switching through the model picker 3cd4693494331426e49bc5f98a35affe32c8b262 chore: add DiamondEyesFox to AUTHOR_MAP for PR #53351 salvage 8df231c9413f85f2d5e0650f8e362df61e7abc24 fix(agent): rebaseline in-place compression flushes 1b75b3fd90d32e9111607c6331ace49fdc47287a feat(memory): add Supermemory setup connection summary 882730026739c51e6ae5c7cbe47e9b64a920a065 fix(photon): correlate tapbacks to bot message context 4345b3e767c73405e143b2f03a1e4e7773c2b472 fix(photon): upgrade spectrum-ts sidecar to v8.0.0 5636c22828b0be1eadaf8968c7033efb27f705fa feat(photon): upgrade spectrum-ts sidecar to v7.0.0 d712a7fd735fbd2296e62b112397539f45fd467b fix(model-picker): surface the current custom/uncurated model in picker rows (#53457) ebee077f9f6425df16616faef777bca9007fe692 docs(telemetry): align observability docs with the trimmed schema 0ebdd48f9df262a44b764a533e679dc1658b7b5d refactor(telemetry): cut dead schema; tests assert what's actually written d474307cb8d80c7eecdcc493e2a112c93187a268 feat(telemetry): write tel_spans — reconstructable run -> calls trace fbf748b2824703f11a55bcf4b5ba7a5909c00865 fix(dashboard-auth): follow redirects on self-hosted OIDC discovery (#53399) 26ede9150c9726421c1b612877e2db7c3c2c1308 docs(telemetry): clarify reserved subagent-lineage hooks dd0e4ab81abccf7df5b11c6c16853d5e5de9db69 change(ci): slice files in matrix job 1a75387fa8eeecc31877f569364c1479635f9109 change(ci): log json decode error in durations 707ae6e6239b699c8c7a65aa00c8643b68186f12 change(tests): don't count with pytest collect bcc3eb3419d778a322d2ccb69f2c61885026a6e2 fix(ci): rip out some xdist legacy stuff... how did these ever work?? 2fa66950e8ba06ed8d587aad4bfc1766f06dee5b change(ci): upload-artifact from v4 -> v7 4b0a2040e72d7c5bf35288e388c4d21ef9a96ac1 change(ci): use run_tests in docker 18f7ad49ab25f8f27cc56f9bd80e3e4caeaa1455 change(ci): update all UV installs f0cb04921709b473b1e8f3a979b7fc384db37f11 change(ci): migrate docker smoketests to real tests 2bd17221b73190f87f1a4ae09c45515b9637bfb1 change(ci): pretty names 9a861cd0abb03d712976f019bf8b0579f1f0db5c change(tests): don't pass pytest args when counting tests 447f9e7c896801ea176ad94a3e9369619e9fa453 change(nix): simpler dev setup 8ae793d3deb4b0048bffedb2e9881db7c9e9b65c change(nix): ship fat hermes agent by default fb1dd1bf910c68f6199329d46dce8cce01a6535d change(ci): docker-publish.yml -> docker.yml 35dfe7b58f791c021d49514a13775ef9d4a6fc78 change(ci): docker runs again on PRs 4cf69f0da43c841475b9c6d209b1487a376961a4 refactor(ci): more test slices d4aec4e92f2c6973169743022f2226b57cd80284 refactor(ci): run tests thru run_tests.sh c918d07b50921da6be27a881c67669cf1337f2f1 refactor(ci): rewrite docker tests to check built container 638243726eb99497bf9bd9f9cdffca492abe190b refactor(ci): faster docker builds via --link and chmod removal 0a8d4da69ac38c20387db8eaa03d45d9a098969e WIPipw wipwip f6e815e3786c8064f55898f8bf120e3f6f5b2714 Merge pull request #53357 from helix4u/fix/desktop-titlebar-overlay 1bff85cf664e18579965d1a205e13b5b54679dc5 fix(desktop): keep titlebar overlay off session title dbe734beff0caf5e8ee2acbe4277db7f6cf84a21 fix(dashboard-auth): exclude non-interactive providers from interactive login surfaces (#53239) 7a38d64a8519786127c75c3c02940289b9d64840 Merge pull request #53335 from NousResearch/bb/desktop-custom-model-blank-selector a6ae179f43e1e5c6d8e372f6ec4b4c6b2f8c0b15 fix(desktop): show custom (non-curated) model in Settings model pickers 4dce5311895efd0bdac395a2f21e290c005e30b0 wip thin client 7475d125d287abf3e21c1711a0c23ef462a43a62 test(mcp): stub mcp_oauth in backgrounding test to deflake CI e55ddc3e33b28cf036371b8d81c73109521ac3f1 fix(mcp): suppress interactive OAuth stdin prompts during background discovery (#35927) 2d8c44ac87cec6cf9ebb93a85b488df6a8bc10ee fix(hermes-home): only honour legacy dir layout when it has content c377e954fbd806ba45faeb238c0d00f70ad9b2e9 test(gateway): isolate secret-redaction layer from provider-error rewrite 57864d07edf5d029a6b1f1b3714bbeea89f0a6d8 fix(gateway): suppress operational status/error noise on all chat gateways, not just Telegram (#39293) 244a6f2ceb7f58c16b3cb2186584c39524e37874 fix(desktop): broken "Open setup guide" button for plugin platforms 58919f68ab00edb913873467a0fb825132d8098b fix: also preserve provider selection on Esc-clear-filter path 386478211b1f1709f1b508b41b43bcaee7478b0c fix(tui): preserve filtered model provider selection b0f44d3fad96f449a3389e08610f146c099d19b8 fix(gateway): remove process-global HERMES_SESSION_KEY write that misroutes approval prompts across concurrent sessions cdb1dfbc494a7ce2f44c4ef5b5909fd15683de07 fix: use os.pathsep, add tests, update tips for multi-root support d15cc9bc83054361fba683a70e0b5c92edd21cc8 docs: update HERMES_WRITE_SAFE_ROOT docs with multi-path format fa8f1517da0add82f95fd24d35e1c7c30c160ba0 feat(file_safety): support multiple HERMES_WRITE_SAFE_ROOT dirs a67ddf59832b0bf96978c40a2bb52dda129b2ff1 fix: drop isinstance(str) guard so client.base_url fallback works with httpx.URL 2608f78b93ba4132f6a7721fbaa9d58cd7458d10 test(delegate): cover stale parent base_url inheritance for subagents 25b7348457fc3874f66555d141fd170ccef1e875 fix(delegate): inherit subagent endpoint from parent active client 6326d5c6f6e5f574d6e788939716506610a7b832 fix: remove duplicated table renderer from Telegram adapter 24a4df9cd11598ec41c0bbb1f85369ff06d234e5 refactor(telegram): import shared table-detection primitives from helpers.py cf7bf5bdc900078cc18a2055a6bcaf1abfb1e7a0 fix(discord): auto-convert markdown tables to bullet groups 70c834a740ed8a71895f57d7c164890b4ecb03cd refactor: extract shared GFM table→bullet helpers into helpers.py 9c9b28a2b32df48d7c007fb6573b1947fcf1daa6 Merge pull request #53296 from kshitijk4poor/chore/author-map-yashiels-45781 5eb108f06ca23a000a9e16a4ee572248e11addab chore: AUTHOR_MAP — yashiel@skyner.co.za → yashiels 391090083c3bbf382cea7097fdac3b5cd41eee3f fix(desktop): persist MoA preset add/delete/set-default immediately (#53290) 7e101e553b52e157e9a8a5c11faf81921776e06f fix(moa): block the moa virtual provider as a reference or aggregator slot (#53281) 515192c4b90c934c26389da37c47877e2cd274db fix(tools): use start_new_session instead of preexec_fn to prevent SIGSEGV in multi-threaded processes f0678b031e6723cf44f9fb520584120f50a33cff fix(moa): tolerate non-numeric values in hand-edited MoA preset config 9b2af36d5aea3118ac6cfb15a2802f92fe0b5eda docs(moa): document prompt-caching behavior for references and aggregator (#53218) 525e1e775d0eed7508202c836a90a70ae692fb70 fix(skills): background review fork respects pinned skills (#53226) f509f6e59860c45dea990c4d2716a010b895711c fix(dashboard): offload PTY spawn/close off the event loop (#53227) 0615a3963213542dd2645364ed03245eaa98730b fix(telemetry): aggregate requires local telemetry to be on 9737728872a3b95260b4ebbc7a14c0d7700c52ed test(telemetry): end-to-end plugin dispatch coverage 64dc6b91b0ddd0cb80051b586597545fe2c79dd5 fix(pet): detect terminals more broadly 217047de2d9aaeb9760dd11b8c5fa76c05679d27 fix(agent): silence verification-stop loop status line (#53223) 3c8d3ecfa0c90883cf408bcb62d6d701ae7d5efe fix(approval): extend gateway-lifecycle guard to launchctl and pidof-based kills 36ddca4b508d41e4e7b0457b0a1f516bebf408f0 fix(web): remove marketing backdrop stack for lighter dashboard shell ba7026c3769d9179fe4a5932368e2ff32c26e1a0 feat(docs): clarify termux/nix as t2 platforoms 772cf847b0cf0913edbf84a53bfc08fcfc1c6347 feat(docs): clarify platform support 699adc2ca55b6a5123c632b9f42e3ce25f31f0bf regen package-lock for integrity checks ed962104c82f5afeda35eda58155ef605fa4fa0f Merge pull request #52935 from NousResearch/bb/desktop-inline-rendering db6ced47128d6e0ffee7e5de9f054cc187940c94 feat(desktop): consent gate for inline embeds (per-embed / per-service) 2d3071f9d49a9e34a025eed4dae5954e951f9de9 docs(moa): clarify MoA presets are selectable on every surface (CLI, hermes model, Dashboard, Desktop, TUI) (#53211) 9dd56f0dfb040342b9fb1ec78ff255c5854b4063 docs(moa): add HermesBench results to Mixture of Agents page (#53206) 3d735fe15642f17dda825354aa383e334ac793f8 fix(skills-hub): surface per-tap providers (NVIDIA/OpenAI/...) in runtime search (#53191) d430684d7cce9f9b445e47fee9abbae796f1168b fix(gateway,windows): respawn gateway windowless after GUI update (#52239) bb6a4d2a57f3f239a2a6d74cb2dec9534a20e607 docs(nix): mark Nix/NixOS as no longer explicitly supported (#52975) c0568ca95f86b0878ebf6a36c69d8bc084e2fb46 fix(config): use read_raw_config() in migrations to prevent expanding defaults (#40821) 5cc4009deb66881052d366dfc9fe1839a5000e46 Merge pull request #52828 from helix4u/fix/desktop-backend-update-indicator a54be30b6ef151c92ca60857107012ef331cd844 fix(terminal): atomic env-snapshot replacement to prevent PATH corruption (#38249) a12485910f79a5fdaa7bc67a3d6ef4b956d19488 fix(redact): non-reusable sentinel for prefix secrets in file reads (#35519) 5038678647ee2e043779fdb4eabb11d73751a701 Merge pull request #53110 from NousResearch/salvage/42203-find-shell-prefer-usershell d9f1f1a1de42de2ff1f15e0cd1cdf8ff61234ec6 fix(terminal): prefer $SHELL over bash for background process spawning (#42203) 65be0061e06d172694785d65ae8c9d989becd64b fix(hermes): heal broken managed Node tree instead of PATH fallback 3c5bcd3eee8cf6540dbb5f529654565effa7cfd1 test(hermes): cover broken managed npm fallback in node resolution 9274f73e483ee0439016dcef3be9e6f836bb0ad5 fix(hermes): fall back when managed node/npm fails health probe 7b2c51152aa1518419b60a0adeb8edabab334a64 Merge pull request #52990 from NousResearch/salvage/52889-backup-projects-kanban 9ef49cd78f8031efaa24822c11e2c793a6f1853e fix(backup): include projects.db, kanban boards, and sibling stores in pre-update snapshot (#52889) 8ab7246c45383cfcda4944d3872efa56f515f87f fix(gateway): stamp drain marker with instantiation epoch so a durable-volume restart clears it (NS-570) e3db1ef92d1f741935b6b06c689e929bdcc1aff2 fix(macos): clearly distinguish launchd supervision from detached fallback in gateway status 1c832762a854f4845bc7d5668cba866620dec366 Merge pull request #52983 from kshitijk4poor/chore/author-map-dr1985 07cc567dfa208bc7b1adf59dd1f21243930af319 fix(security): add circuit breaker for tirith crashes to prevent agent hangs (#41400) ca82d0accc3689ef7ffc9041acbaaa9d3869ad9d Merge pull request #52993 from NousResearch/bb/desktop-clarify-redesign 54b50037e1e489da70fe5f964212b43e0c5bcf38 fix(desktop): treat a pending prompt as paused-on-you, not working 8559246bfb043df3ec0d6e883c9b76527e7abb17 feat(desktop): rebuild the clarify prompt to match the chat UI 1aa458a1e6ef641e0b04d4019ca3be2dedac8049 Merge pull request #52920 from NousResearch/salvage/38798-toolset-validation da0ed979facd5a87b9912edb3c45412a71a242f1 feat(desktop): zoomable primitive — open full, pan/zoom, copy 05ba5f3962e8445163ace49127a0f544b0d7a138 chore: add Dr1985 to AUTHOR_MAP for launchd salvage (#42567) 41ede84b93061687542dbdb7f9f6f2e51c39a2b1 fix(config): surface invalid platform_toolsets instead of silently dropping tools (#38798) e36d9862ece4af0edf2fe2e9c61797b828abb4f5 feat(desktop): render embeds, fences and alerts in assistant markdown 0c190083cd9a7a88d67229b746d7e7efc1bfb527 feat(desktop): lazy embed renderers + fenced diagrams/alerts 81ac562bf0e589d068fc999f6be2355456f3bab8 feat(desktop): inline embed detection + module primitives 063fe4f6ef4b9437c73853e0d8965e21b5f0d5ae fix(auxiliary): fallback on invalid provider responses 6ff7e7864918e67ed06959266773fd1344b7aa62 feat(egress): smoother UX — restart command, auto-restart on setup, .env key discovery eb7aae581681c2896b10504f627d4743ceee7bf3 chore(egress): drop committed infographic PNG from tree ae1bfa1806b4861104220bd5c9b7f8e161aafcc0 fix(egress): close GOOGLE_API_KEY coverage gap + config/mappings write TOCTOU ad978ed962e007d74fab666865bfc465b6bab67c feat(egress): iron-proxy credential-injection firewall for sandboxes fbfccbb3eee867477b64d2a79178949cc4c67ce7 fix(security): align cron invisible-unicode set with install-time scanner a0dc92450bb6e41f99832e91f043c27d7376594e Split dashboard PTY reconnect tests 41f81261485ae876c97dbb1c2017acd8babe4e03 Reconnect dashboard PTY chat after socket drops 6a319f570f6a73d02f0ac25a00e4e9fd80aa7118 Settle TUI resume scroll after hydration 619dc4a5610f152ba309dd157c7fc8868187c536 fix(whatsapp_cloud): resolve reply-to text so the agent sees reply context (#52957) 0880e8ad786bd5fd786f9103f4577e605f507499 test(batch): cover approval-guard enforcement for #35164 f3b79200ff9958a341f9decfc901e322ee29da41 fix(batch): set HERMES_CRON_SESSION to enforce approval guards 19b26244046de4a5056a9794f0fa13ec5d4e1a07 feat(gateway): external drain trigger + accept-gating (begin/cancel + control channel) 2e322466b14e904f8027e626696b92e28d13b364 feat(dashboard-auth): drain shared-bearer-secret provider plugin cb9cb6ba1cfb22d50cea95e8a2c940d029c47544 feat(dashboard-auth): generic non-interactive API-token capability 099df3cd89d5b87c7cc9b826e518356626ef124e fix(security): stop blocking AGENTS.md/SOUL.md that name an agent 'Praxis' (#52925) 4d0dd6bd524b9944f544d99de3a38149b248a1ad test(mcp): make invalid_client tests interactive under hermetic env 075f93ad78401dea015e76a7af057aad3f4fb5bb fix(mcp): auto-recover from invalid_client on stale OAuth client registration 6e4e5967f73483ad32568e0684c02390fae8bdad feat(relay): multi-platform-per-agent — list identity, provision-loop, N-hello, per-frame egress (Phase 1.5) (#52830) a2b49e60b6051be9e9ca86762d235b5de9ddce69 Merge pull request #52412 from GodsBoy/fix/verify-on-stop-messaging-surface-leak 7d568293f97a8640467303e786583efc19cecd20 Merge pull request #52891 from kshitijk4poor/salvage/52623-aux-host 3cf900eb67c0f97f4622b56acd668747a473b51a fix(install): discard managed lockfile churn before stashing cb7d1f68f8768a6d7736f77cc399d806c677f105 fix(relay): accept is_reconnect kwarg in RelayAdapter.connect (#52911) 0f81b0d458e6b862b4037f5aaedf9c425369abaf Merge pull request #52901 from NousResearch/bb/desktop-tui-lint-fixes 62fe9fd1011a4a5931a32a2b61324d5af6eafa67 style(desktop,tui): fix all lint/type/formatting issues 4e66bf1f801bfb29e1c61533d59ff0e9112873a2 fix(auxiliary): gate Anthropic base_url override on Anthropic-compatible host (#52608) 7aa32ec82f21b5ceb5fa02dcda13b93da80b63d2 Merge pull request #52888 from kshitijk4poor/chore/author-map-tranquil-flow 2b86e9dae4af2be7b3002d2b0b6a3d40d07de539 Merge pull request #52877 from NousResearch/bb/pet-scale-gesture bf60bbb6c59b954d84765809f266802cd44100f5 refactor(desktop): collapse overlay zoom-anchor math fe255ab28bb1e10022d578f304293452e38bafd9 chore: add Tranquil-Flow to AUTHOR_MAP for auxiliary base_url salvage (#52623) 7d1b72a15d34d553a132ee7c70fe65ceef5f2b02 feat(desktop): zoom the pet toward the cursor 6ba551e9427a3388a4dbb936e14d7f3cf15cddaf Merge pull request #52871 from NousResearch/bb/fix-tui-interrupt-queued dd980aaba1d17d6667aec95f4a1642baeda731ed feat(desktop): Alt+wheel to scale the pet, never cropped 594380d44a45e05ec4e84d151f3906d20dfc1b90 fix(tui): make stop interrupt queued desktop turns a28b939092e4eb99574b90162eef8c385410fe05 Merge pull request #52678 from kshitijk4poor/salvage/52502-fuzzy-boundary 27c486e3b1b6da00d5f5dbeabffe03b7ba3bbcfa feat(agent): apply per-reasoning-model stale-timeout floor in stream + non-stream detectors f4c656b0a0fe11619b215009248f7261de73a58b Merge pull request #52854 from NousResearch/bb/fix-interrupt-partial-reply 4d04c652f2a03886f013577e0f7b538c1d6c4c0b fix(curator): make external-skill write guard actually fire during curation 96bc524a717d1b39fbb2044973616518209d77a0 fix(curator): protect external skills from background curation eed9bbeb0a6a84a6db5008e9bf580c5a03528aee chore(release): add rebel0789 to AUTHOR_MAP for salvaged PR #47308 6c58878e7d9c33eb1eb21eed29bb827a552a87b4 fix(browser): force secret-pattern redaction on browser_type display 8ff426e53b9fa42fdaef8a0196d265fd59218718 fix: redact browser typed text surfaces 5add283ec8e7a33110a9051179208bd50bda427c Merge pull request #52833 from NousResearch/bb/wsl-desktop-fixes 8233598e64309f585953b26cc595855b78ca215c fix(interrupt): keep partial streamed reply when stopped mid-response 45f3d29c3630b67a27206467407fbdc7a455f410 fix(desktop): dedup profile in HMR adoptBoot 76074b214517109f4816ea6e83042ea65712b131 fix(desktop): transparent WCO titlebar chrome on Windows/WSLg 3b1344c18c3dc485d5d89f7a9b061d32e76e9bf9 fix(desktop): WSL titlebar layout and WSL2 GPU acceleration da5484b61ff75ac1727136ede9fbd3189935ae08 fix(desktop): WSL2 clipboard image paste + Linux titlebar overlay 40282359331b687790751067eb9a690392100c03 fix(desktop): keep gateway session alive across Vite HMR 5b5c79a8ef4317146b0db7cc2bbb7495c1748e63 feat(kanban): typed block reasons + unblock-loop breaker (#52848) 43b8ba41816b6790e3bae852eb32277dc4dc6915 fix(telegram): preserve Bot API update queue on watcher reconnect f44415e71a26bd51e59c951947722845e05cdfb3 fix(gateway): add init-time provider fallback to _make_agent 0b7128582fad94d9bb5e9b36de4f937162fab7f2 fix(state): detect and repair FTS write corruption that silently drops gateway history (#52798) 85e084d60d57b8e0fdbddaa73cb3b59950297c37 fix(email): reject spoofed From: header for authorization (GHSA-rxqh-5572-8m77) dedf5643d89b143fb573d51b9edd201db6479c3c fix(gateway): scale-to-zero never armed — arm-gate counted disabled placeholder platforms (#52831) 1c8594b634e4b485341ef471dd7b4dd16391c0aa fix(desktop): show remote backend updates without counts 1e5e61b4be6a4bb25c03334d4768080c3ea5ca3a refactor(telemetry): drop "plane" terminology a4091e49f10ddceaac1a902848aabfb1b9aae210 fix(auth): write rotated Codex/xAI pool grant through to global root (#48415) (#52760) 233ef98afe2f156dd916c8f4e7f98d16676de4ee fix(docker): skip symlinked stage2 chown targets (#52789) 1abfa66ba6fff6e3f6039b6e3976688e1bd209a3 chore(release): add DavidMetcalfe to AUTHOR_MAP for PR #52272 salvage 865a09a6102416c0bae87ae24472fe53c5b2686e fix(agent): detect thinking-timeout for reasoning models and surface actionable guidance instead of misleading file-write advice 811df74a102a2efb4465d775e218a590b1486034 fix(gateway): defer cross-process cache cleanup off the cache lock (#52197) (#52761) e29823f1e800c949c71725db20821eeb9e13899c chore(release): map agt-user noreply email for #48496 salvage ce802e932c645304badf0112e175e77f23b86a5b fix(telegram): heartbeat loop exits cleanly when bot has no get_me 8501caf51f6d0ff5782a0a00c85a319a449d781b fix(telegram): persistent heartbeat loop to detect CLOSE-WAIT polling sockets 56cf517ccd4c28cf0815a27403dee680dc36ca6e fix(cron): detect partial job loss in restore_cron_jobs_if_emptied (#52144) ea53752eff679c78dc45d83e11c27166e82ad4d8 refactor(telemetry): drop policy.resolve(); read config directly 6b639bc2b9ea418ac5233883522a44241789f5d7 Merge pull request #52772 from NousResearch/bb/editor 7aa6726c06933b32ee70b69d2d129f246a4a9282 Merge branch 'main' into feat/telemetry-observability 41f4dce828c5b02836fc9e27f2fd076c721ed1ad Merge pull request #52756 from NousResearch/bb/delegate-bg-resume-ux 985350dd858eef3d855b45327f187367355a0ffd feat(cli): note background delegate_task dispatch in _on_tool_complete 7f02f30b76517cf125ff3e7120b8b1283a3c19cf feat(tui): add width-budgeted "resumes when subagent finishes" status segment 563d347e4d420e233a2ed77274e949d93598057f feat(desktop): show a calm "will resume" notice for background delegate_task 6e096a850a2c82bdad4e4caa8e2d739ae34086f4 feat(desktop): add $backgroundResume store for parked delegate_task 09623b4527351b46c326c998b603d078ee87eb6c fix(desktop): make the tab modified dot amber with a separating ring c456029b4ed4761f4ea67b51183efab52fa9f680 Merge remote-tracking branch 'origin/main' into bb/editor 1f950e189ce7e68696298dc14ccbcf15a44eb213 feat(desktop): vertical resize for the bottom-row terminal pane ff813659880f2b3b7d3db3813c29382d83c2215a feat(desktop): in-app spot editor for the file preview pane b8fc8c908bb78db138458988042bfca61de5f4e4 fix(approval): fold Windows absolute home paths in dangerous-command detection fffbef0ec4a244339fe382cd4d524d47cbfe0b4e feat(mcp): adopt mcp__server__tool naming convention 7cd5eaa646f158536ba227c6d049cdf0f1b0a800 Merge pull request #52745 from NousResearch/desktop/bundle-main df514654ba5d7359fc3484ca2396892c054889fe desktop: bundle main.cjs for electron 55af6c447a76304014a84222790f76a56ae97666 Merge pull request #52206 from NousResearch/bb/desktop-tools-curation 6dfb8326f58b2845a8b17134be00160fd69c9ddd fix(state): exclude delegate/branch/tool children from resume walk + reconcile salvaged fixes 6d9ca0457464e4271512fedae2fcfd4bcd5fc448 fix(desktop): resume latest compression continuation 263f6b03eb4c8778a86268e881968bc3ccdd0bf8 chore: rename test to reflect new semantics of resolve_resume_session_id abd6b8520045da97426aa5c4e75ac9954942998f fix(state): resolve compression chain tip in resolve_resume_session_id 208f0d7c3bbb6c63cdf5e2d82d4d4b7cb324b00d fix(update): default pre-update backup to off (#52729) e4ff4948604d8da69f95ed1e555678d23de1ca18 fix(cron): add default retention to per-run job output (#52383) (#52646) ffa3d3c811fecb08f3a3782c5afff2cef1413782 Merge pull request #49037 from NousResearch/bb/projects-paradigm fd2a35b1691138b79b606e7961d3c78f7019722b fix: stop reporting cache-hit rate and cost across all UI surfaces (#52717) 19ca295a846a8a032a01ba5da3d74c827e2e26d4 fix(desktop): clarify branch convert actions 3e99ec0ff99d1ec81d47f1814ad31453291718b6 test(hermes_state): cover update_session_billing_route overwrite + prompt null c7e934a5b4c2fc6193f2dfcc0a4479ed8da10ad3 fix(hermes_state): persist billing provider/base_url after mid-session /model switch bf0513bca0dd5d200d8951114b911fc013a2f422 test(windows): align gateway restart CI coverage e7d2f0b93ca29b2cd95d6623fe8af7646173a75b fix(windows): suppress console flashes and harden gateway restarts 9f3aa1685c37f3c273e94295114c9d67b720dd88 fix(cli): register project command beside MoA 890e890281e4287d5e78754729ebf1551e1531fc chore(desktop): update package lock a391523bccc35af2bdee558734600a496da02420 i18n(desktop): add project and worktree strings b8d220f2684c8627b3fab33aa7bc10a129838353 feat(desktop): wire project settings and shell chrome 62af32efe7c09be2277f45f0fb12463886cc5c9a feat(desktop): keep active sessions aligned with cwd 68680db10d1744bcff4fd2fbc519cccc8447e0e3 feat(desktop): add Codex-style review pane 7a7f9a5b3d1af1bab4f7d50484b836c5dceb7a50 feat(desktop): add composer coding rail and worktree flow 488ae376dbef8e411f30e844e8b40ba55fc97e19 feat(desktop): render backend-authoritative projects sidebar 74352a1e61361daa87f7ec5dfe9eed41777d79cd feat(desktop): add project and coding stores 344415892f5d1de80fe4141e4ba3dfb76d167124 feat(desktop): add shared project UI primitives e2b801872992867c3e48630f22f939fcf0d807c9 feat(desktop): add git worktree and review IPC 86e748df13af643f54bc6c15044c358ce92e52c8 fix(agent): require code for coding posture cb3f8ec03d7e5fb9664ad81b36276c834da476de fix(tools): isolate per-session worktree cwd 4ffdedd369c1ee242fe79e43faa1230f46ed3a6d feat(tools): add project workspace tools 4e023f5bc990ac430d38a220c74162bbe92293f9 feat(gateway): build authoritative project tree e7811345c177de43743bdbab0ab39703d0fcc239 feat(kanban): link tasks to project worktrees 8a45ce2dd4005700bd52f82881ab6c7999a767e3 feat(projects): add per-profile project store 4cdd1a3230b8135e0513727ac1616ca357c2402c feat(sessions): record git workspace metadata c4ba4770eb6cbfbc0c915a41652afffb72445347 Merge pull request #52704 from NousResearch/bb/desktop-root-boundary-recover 43f9d245139ac75da2e7b31f1c2e3e7ec8b0bcc4 Merge pull request #52703 from NousResearch/bb/desktop-resume-cross-wired-cache 2e3efce66ebd0a144a0733333e1c0d31d9f65c5d fix(desktop): recover the root error boundary from transient render races f7bf740640e4edd72092994d35bc921e8b38a1a0 fix(desktop): reject cross-wired runtime-id cache on session resume c6575df92781a5b6859845b39ee59d7f07a8cf31 feat(moa): expose MoA presets as selectable virtual models (#46081) f284d85efa308fa2a4169defc455e20d6b51336a fix(cron): restore [SILENT] silence + suppress empty-turn explainer on Telegram 9335a24f4969521eaf1d96333bd6bb53b9fb0028 feat(skills): add optional AbletonMCP skill 2e1dc5c4b8f966b37d665bad0a3c0d4a33ae5dcc feat(skills): add optional Rive MCP skill 42bea9e298c5964195c2f1b4628125c5c4e80332 Merge pull request #52618 from NousResearch/salvage/14185-todo-coercion f23d077b5f04facf78e895eb41788fc6ca148951 fix(fuzzy-match): preserve boundary space after whitespace-normalized match d40b5735a4503b6acfa12e8cbc6a68da94f36e51 test(telegram): cover table auto-rich and topic routing 9d225fbf4eaf3cc8aa490e12ccf1145123793677 fix(telegram): auto-rich pipe tables and topic routing for sendRichMessage 92b5987ca22ed59ebc3c8b940c17a6f0322d4006 chore: add herbalizer404 + pyxl-dev to AUTHOR_MAP for auxiliary fallback salvage 0d777453fa3b97556d0f806ed94e56f66e8393a6 fix(auxiliary): fall back when a route can't run the model at all (400 capability mismatch) e4d026aa3bdd5dddaf0c708eece37b7617e75924 fix(auxiliary): screen fallback chain by context window for compression (#52392) b82c83d32088143e9a46df9a79dee1a5a8ff58b0 fix(auxiliary): honor fallback chain when compression provider auth is unavailable 751adfa6b94147ed7e2981f5db35f0686f8f7394 fix: include rate-limit in auxiliary capacity-error fallback gate ff8920299c10e5e58fc84326bf2c973b42ab4de1 fix(auxiliary): treat 403 subscription and session-usage-limit errors as payment errors for fallback ca714f6189f702c9e570cd2bc17a729485474578 Merge pull request #52653 from kshitijk4poor/salvage/33814-env-quote-hash 0654319644bd76e848c85cdb8822d551ca9b764d chore(release): map srojk34 legacy prefix-less noreply in AUTHOR_MAP (#50098) d9bd7ce827a3021911e182c272e70e913d802ef8 test(compression): pin rotation-fallback tests to in_place=False ahead of default flip 2107b860244e932b76d6c7c181807b9f46bae59f feat(compression): flip in_place default to True (#38763) [2/2] 510bf40705fbab44cd3e9dc55dc7bdc68c062838 fix(gateway): read compaction result flag not config flag in hygiene guard (#50098) 2a1e6155657213761520e6e081c09cb8e082d9bf fix: persist non-NULL system prompt on fresh turn setup (#45499) (#52616) d7021af30f449b5372a8b86c83f84bcefc6a4cef fix(learn): name distilled skills as author Hermes, not the host OS user (#52388) 4efec63a34eace86d6a5e299daeb5d3b4b5b159d fix(tools): let session_search match session titles 2c02583c2b19f72b3904481c9d219e325b35ef10 fix shape 525ee58b43f53b99a0858cfdb1fbf3991f08b8fe krea 5191ebba22d834faa52cd1f5f37acddd3d34ce96 fix(desktop): retry empty resumed transcripts 150afea94262db15231bd3ccf9e696c1f1f29b63 fix(config): quote env values containing hash 73c8d5a1e7ecdf04c3f6a3ad31e4276fc16f4b69 fix: use self._session_db directly + add regression test 1a38a8ff7d9f1b578e6f3af02039d88f32c3c102 fix(gateway): pass session_db to compress temp agents so persistence works edf35918be0c8814913763c8981a0c6275d54fca Merge pull request #52620 from NousResearch/bb/desktop-session-switch-perf e8561d61e6f29dac1a6520f3253516bae2313100 test(tui_gateway): pin synchronous-build resume tests to eager_build da73223f4aba9beee9c020a5fee02f243414a3d7 fix(desktop): show statusbar item tooltips on hover 1ca1f9f2c7a19e92da5e5f13f4880f409b99635b refactor(tui_gateway): DRY the deferred-session paths 3bf00e459af707635c890abcb1d748aec029a918 perf(desktop): make deferred resume the default, not an opt-in flag c4c590e4a14a064033c10067f0a72b3cd2a53b8b perf(desktop): make session switching fast under load 5de8a8fbe8f30222338719017e5d4cdbd4d729e3 Merge pull request #52375 from NousResearch/salvage/47237-dedupe-user-turns 6208d6b3be49fe320dbf2a40317e0665038dd60c fix(gateway): dedupe user turns on transient failure (#47237) 17acfde920377de202a6a03226d4ce1099354d33 fix(skills): verify skill writes persist to disk (#31657) 0be10607d937a8c0acf63839370fd64fb06a39de fix(tools): defensive type coercion in todo_tool for malformed LLM input (#14185) d682f320b35a13084371a541a835e1d988c982b8 Merge pull request #52147 from NousResearch/salvage/29184-mcp-osv-nonblocking c210e23a02b6dd848ff9243299c10373ed42d4c4 Merge pull request #52386 from NousResearch/salvage/31999-yaml-indent 6305ac0e4b5e8fd429108e65704db822e363f477 fix(mcp): run OSV malware preflight off the event loop with a bounded timeout (#29184) 988cd9445ee2adef3a043ad52e253104c477d084 chore: add kuangmi-bit to AUTHOR_MAP for salvaged P0 fixes 45da4b236361ba90f2552232dff1421eb0232db1 fix(egress): address maxpetrusenko P1/P2 review — fail-closed secrets, NODE_OPTIONS conflict, GPG verify, threat-model scope a697b4b86a7e19b2ff89d0f91a0bf4a7602c494c fix(egress): handle Docker v29.5.3 empty-string label in reuse parser 46adb04e5470edf58461f80f1f1ed1ff21381c3c fix(egress): close three P0 security gaps in iron-proxy integration 0aea0c36544479305c31813bd3db62b8a1c1374c fix(utils): unify YAML list indent across all config writers (#31999) a53fc78c02cff748331642b33208de67fd138ee6 Merge pull request #52594 from NousResearch/bb/queue-resubmit-on-busy 15ee2d6f04d4932cb57ed1b4f828e1f45b2a40a7 refactor: lightweight sudo count + drop chatty multi-sudo tip d93abd75d1a5e559f347725c617923fdac5123a7 test(terminal): cover sudo cache invalidation and multi-invocation piping 8278d82e17f76f576db22a14c9579f369f9933fc fix(terminal): improve sudo -S password delivery and cache invalidation 931a5e92cca1271fdc0c25713d0c2559380b6549 Merge pull request #52592 from NousResearch/bb/close-interrupt-tool-seq-sibling-paths 70319626a9221f85cfa119a3126fd3360d0fc9b2 fix(tui_gateway): queue mid-turn prompts instead of dropping them on a busy retry 2d286a6d00794d5a1bffdccb8a2fed7ffd0c0414 fix(agent): close tool-call sequence on all interrupt aborts, not just finalize_turn 88e01d92e6e2806617b175f053674edba8107b5a Merge pull request #52591 from NousResearch/bb/desktop-update-adhoc-sign 27a5c647f8bc4e05b7083f70ad3ae7043843190c refactor(billing): extract _usage_bar_lines — one source of truth for the CLI bars 9fa33ef75ad077ffc4dcbbbea252b9a6d1882522 test(billing): cull redundant TUI billing tests (parametrize, merge dupes) 1d9ed7f48a33cce6744498ed6e9cae53dce1387e fix(desktop): ad-hoc sign macOS self-update rebuilds 943389df8971b7fef09e94ef831651507c4c50bf fix(billing): revert dead 'billing' Slack-via-hermes entry — the alias was dropped 0fccd092d9b75c49bb97dcb429d519c9fcf7b989 test(billing): parametrize usage-model tests; drop dead is_low/is_free props 61b5d97f009862f1ce6b3d3ed8b02ed4731d7248 refactor(billing): remove dead /subscription tier-picker scaffolding (#18) f8c6da229c88e422b499f8dbadf2eb559f4b8e99 fix(billing): thread idempotency key through the TUI step-up replay (#2) a6a28ce3e2174c0be494f553ab5fd79b7039190f fix(ci): run CI on all PRs to anywhere 9e1ade182034a394c49481985e5c1ab6ccbc9d2b fix(billing): cross-surface bar direction, formatted cancel/downgrade dates, Slack alias gating 25d7497b06fbad2ef05b800e1baed2cda3ac500d fix(billing): code-review fixes — money-path + parity bugs 722299bc5f6c3511db598e6178950741445dcb19 refactor(billing): drop the /billing alias too — /topup is the only billing command 5ec5a25eca5b0f19d8d656561341073ef0f1bf70 refactor(billing): simplify-pass — share usage-payload helper, drop dead bar wire fields + redundant admin gate 90081ba91155515195bde600613f4ad866f98bee docs(billing): fix stale comment in _billing_overview — describe reactive no-card path 7dae104e40f6106ef778a9401a71981274cfcd53 refactor(billing): drop the /credits alias entirely 1cb65a5d8f42d3cb18598e90dcf3f3132bf06e88 fix(billing): reactive charge gating — drop card preflight, react to 403 (scope→reauth, no-card→portal) 6de489909968a38f8d12620231c6b4560288fb87 refactor(billing): apply safe simplify-pass fixes 13a435529d95b958bcd01b38dd609f26abb83435 fix(billing): card-on-file heads-up, no-card portal gate, /usage bar ordering, modal glyph beb2c5fb3b02d547a23b93aa3f6dbbab40b8eb12 refactor(billing): fold /credits into /topup 9eee09fede7d7f8bbb9c648fb63bf99418771201 feat(billing/dev): add HERMES_DEV_BILLING_FIXTURE for offline card/scope testing d6269da7fdfe3a80eee60a4675b9e6ef55a71559 fix(gateway): harden scale-to-zero dormancy guards (#52359) 6add84a6a16f5750a2f82fbc07177fd77700cac8 fix(discord): delete orphaned auto-thread seed message on fallback failure f168631be0ce00086f6d3c7bfd9570599bb6da6c fix(agent): gate verify-on-stop nudge off for messaging surfaces e62afaca6259278ef08d23cb178abf477597f986 fix(learn): teach /learn the full CONTRIBUTING.md skill standards (#52372) 60a2feeebffa681d373d6095f26a51508a4d6789 chore: add benbenlijie to AUTHOR_MAP for PR #47205 salvage 6f2b2a1f34d1dbeaf67a02e7212485f0f77ed116 fix: handle named custom providers and Z.AI overload retries 736e981abf31b835e8617563010776a1b69fdd4c fix(auth): honor NOUS_INFERENCE_BASE_URL env override for Nous OAuth sessions (#52270) 35de78c1fa3c60cf455194a2f2a1acb79cb1ea60 fix(billing): guard non-JSON 2xx responses in the billing HTTP client d6cf383d745f91462d46df96e71f57a72e7300ee refactor(setup): simplify Z.AI picker — drop dead fallback, fix tests d0df264213664bf3bf77119ddcbac178fb410423 test(setup): add ZAI endpoint picker tests, move base-URL tests to MiniMax f3372d3407dfa37f6ca525d03e1dcd7da4ef2742 feat(setup): wire Z.AI endpoint picker into _model_flow_api_key_provider d0f9c4bcc6ddfc5dcbc8abed2befd1210945329c feat(setup): add _select_zai_endpoint helper for Z.AI endpoint picker 818f03cdd88a90b760497a75e19ea96353f3e29b Merge pull request #52366 from NousResearch/bb/pet-gen-variant-remix 6b3ea2cea6889d24a67fbd973868c8cca2d8a615 refactor(pets): tighten remix comments and confirm handler 5196575d40caa367395c5535da1c99caecef072c feat(pets): remix a draft into a fresh round 4362c1a3afcc33274c4b3f537283b3b4311af8dd Merge pull request #52326 from NousResearch/bb/shared-tool-labels f3d6d9bbd33594c57bb213e9c924ec2bd24a3748 fix(ui): share compact tool previews across clients 3af22c0ed57710ce30a7905fcab384bd94e1f901 Merge pull request #52338 from NousResearch/bb/pets-gen-timeouts a5849917a8bee7bcffc46d263e1723658b657c4e test(pets): make slow pet generation suite opt-in 25c31cab624e6556af09f8fe693c535578c5e8e5 fix(pets): soften step-1 ETA copy to "several minutes" 7078d9d1e29ddc6e6e90572744b33d34c119477c fix(pets): raise generation timeouts for the slow quality-first model path a39b34dd98fefd4cfce31a2d310b864e20013af1 fix: remove dead f-string prefixes via ruff F541 (213 sites) a8e6a4f00b0d6403070a73df902989513d802523 Merge pull request #52321 from NousResearch/bb/desktop-cmd-label-summary 41f302fa73f5780e9be2f0fb7ebfcb3a8b77fef3 fix(desktop): compact tool row titles 7a65800fed6f7b3f87c264018b7456b250e150ac fix(cache): content-address prompt_cache_key so recurring cron jobs reuse the warm prefix (#52295) 72ae163250dbd40d39ccf8b412835711bafd9c13 fix(relay): authorize relay-delivered events by delivery, not source.platform (#52306) 0c442fa1d350855f54a09f1b7fe529c378f8655f Merge pull request #52303 from NousResearch/bb/pets-gen-qa e92b5c6af8bef10827a14a88986f2507af5e0255 feat(pets): quality-first OpenRouter model chain + stronger atlas gates + global pet-gen notifications 380d660cab4d258869a97e7d71324eebc9c7edaf Merge pull request #52297 from NousResearch/bb/ad-hoc-verify d473e5d07abd380f79c47b64a31df4e059004908 Merge pull request #52296 from NousResearch/bb/verify-stop-loop 1512bad0bc061fec754d35665b0d7757c1f8c884 Merge pull request #52286 from NousResearch/bb/verify-status da0320bf40935fd57cb93f5c3fcdaae37e33fa16 Merge pull request #52285 from NousResearch/bb/verify-ledger a5a2edd451bb2f8116482bf8f752bc8d952c6765 feat(agent): recognize focused ad-hoc verification scripts 2f1a47b90e60914b61d361f7c4147a11e7ebebbc feat(agent): require verification before finishing edits 7ef0f360d0cee8ffb512f372d1e2271afb6c5324 feat(gateway): expose coding verification status f0beb6f617c4a8798afe8589ea876e0ba0c41026 test(agent): cover verification evidence ledger fcbdf3c3568bc0563c0af5b444c6e5bd6842bf02 feat(agent): record coding verification evidence b177d4ee4891aeb3bf8a908f6e5def846a55c180 fix(cron): mirror continuable cron as a labelled user turn (alternation-safe) b693bee100bd163bd9e18e3c2c68179190bdc4ae feat(cron): thread-preferred continuable delivery (open a thread, mirror DM fallback) 98f3c192824a14e5af97e824a7cd9d81c88a693d feat(cron): pass origin user_id to delivery mirror (send_message parity) c06ceb3232f2df301077db891c4b416f3326efa8 refactor(cron): scope delivery mirror to the origin conversation 1b181724fae7799cf45dec3aca03ac44063175e7 feat(cron): optional mirror of cron delivery into target chat session 532b7ed408b204f0d6765061b6e52072b20e0d22 Merge pull request #52265 from NousResearch/bb/desktop-tool-verb-shimmer 281b333cc5f048cc37e7b2075bde9c353b9a0496 test(desktop): cover localized tool title shimmer f2c45e2c816d6e9e51416fa22436f29bcf97dc06 fix(desktop): limit pending tool shimmer to action verb cbe5c5689f9cb0e86903431c6337e0d87abf4b9b perf(desktop): bound tool-result rendering so big /learn runs don't freeze (#52273) 0c3f197cff81d441cbffab2e8597694be9730c97 fix(relay): re-attach DM author user_id on outbound for connector egress c15945655fcc4d2c210d6245128d986de89641c7 fix(terminal): sanitize host/relative cwd OVERRIDE before it reaches docker run -w (#50636) 411faf08bd678fe3e49b22afcef1e9fd2d7f5592 fix(soul): installers seed the real default persona, upgrade legacy empty templates (#52246) a4fa1481e281b1d35ccc3fc9d9f1a59d235525f4 fix(tui): route /learn through command.dispatch so the prompt fires (#52232) d1cac0e5ef835eef691f33ebdc470905a78cfb38 feat(gateway): scale-to-zero idle detection + dormant-quiesce (Phase 0) 96af4bec30a547d64fc035434a249db1e5c00b65 feat(relay): add go_dormant() transport mode for scale-to-zero (0.E0) 4aeaba69225151b36ab7c23803eefb99ae140f8f test(desktop): cover undefined/null attachment holes in ref helpers 7e2db0a140dbdbcf32035f9174c3e189317f8168 fix(desktop): stop refText crash on undefined composer attachment holes 17beb55e3c9c3574bce849a75430887dec910423 fix(telegram): gate rich draft previews separately de37448c9ef2478fba3905bfb0fdd9a9098157fc Port from cline/cline#11803: recursively normalize JSON-string tool args by schema 284be6cc247c46aa6e2bf2b1b271a5e7fafb5558 Merge pull request #52210 from helix4u/fix/desktop-update-progress-visibility 7157b213f56b74b29377bcd53f3724205bae6bbc Merge pull request #47959 from NousResearch/bb/pets-gen 153ad79524052f4a65dcc53e8097f1c9a13e6e11 Merge pull request #52201 from NousResearch/bb/desktop-shallow-update-count a05a9b0e07cdec601d4bb58572e1553e9365fb5c test(delegate): harden heartbeat in-tool stale timing assertion 2ea94c6c45814862e9ebacf80d8051b58da980f7 fix(pets): make inline generate cancel discard draft flow d635a6d5078b42026cb54ebf1e7bc3cc6f9f02c8 Merge pull request #52208 from NousResearch/bb/desktop-update-steps 42e14d10891c5d062038e47a5dc6752506da3bf0 Merge pull request #52205 from NousResearch/bb/desktop-restart-profile b649cdee4a31253e8d9b6ec0a2720dc2945a5d6c Merge pull request #52203 from NousResearch/bb/update-drain-announce 538c419d2e0349003613b12e5a330c512cedb629 fix(gateway): scope dashboard liveness fallback to the profile f1617a7ebb979925741b99343d4f39dfcb139750 fix(gateway): validate runtime status pid command line 592c462e3cf86d709e7eb51a94b10861c6e28a25 refine(pets): preserve user-requested tone in generation prompts 9a4600c5fb9bdd21e5d035181bfc7fbdb9340497 fix(desktop): stop the update overlay looking frozen while it works 00779800f650c8b875f0f9ab6f08fa33531e6494 fix(desktop): hide platform/internal toolsets from the Skills & Tools list 65b13e9dbc9330fe34cba2d44f915b05fe4b1f33 fix(desktop): route gateway restart / status / update to the active profile 463bf2be25baf88809817c869a3985e917af2dd5 fix(update): announce gateway drain waits so desktop updates don't look hung cb6edbf448e7878fd25bf6db20df4c18ed8755a7 fix(desktop): skip the rev-list count when it is discarded anyway a6485bddb855536e60baa7074573a820d3d1ee76 fix(desktop): don't report a bogus update count for a shallow checkout 1fe013ee16f19f6390f2efce39397447e7ec2f67 feat(pets): polish generate flow and reduce hatch CPU pressure d335164833ba7fd2e8770500861dc419152a381a fix(relay): authorize relay inbound via connector-enforced upstream authz a378b1e9802f8b8d86fe094f3912c8b3dae188f4 Merge pull request #52192 from NousResearch/bb/session-loop-guard 4127332f158468295240bb32b8adcc5110b85497 Merge pull request #52189 from NousResearch/bb/desktop-offline 70650e82a3a487a8e5aa0cd796b5265b9d22c0ec Merge pull request #52187 from NousResearch/bb/desktop-voice 9a948655520a8f926ca7927707fa29ea800c0763 Merge pull request #52183 from NousResearch/bb/desktop-agents-status 45d0f240b1b638aa4ba6c704f9ea8a6861cc8d36 feat(gateway): scale-to-zero idle detection + dormant-quiesce (Phase 0) 8f4bb3a5eeefcf31a163b500d2690d3c966cd4be feat(relay): add go_dormant() transport mode for scale-to-zero (0.E0) 93192059c96c5ba56c28c6c41255bc63af4c95fa fix(desktop): let the session watchdog heal a stuck "looping" turn 2a75c4a8cb4aaa1f08c0a4fda9a192e52e89cec2 fix(desktop): give the gateway reconnect loop an escape hatch 8d1706ae5cb2e0bcffd6496d45e3c7f10e4b0cc1 fix(desktop): wire Ctrl+B voice, declutter voice settings, stop endless TTS hang 41b9b7e719441ea6fb7c368abc9cf150eec9284d test(lazy-deps): make durable-target tests network-free cbd6ba1bdd916d8342f6c741cb290b62dd89dbc4 fix(docker): redirect lazy installs to a durable target so opt-in backends work in the immutable image (#51136) a268dfff0a055dad7d73d45ede53a5687159a65c fix(desktop): make Agents indicator match the Spawn-tree panel 404b06ac4fc307d868ea51ac656387641ef16b39 fix(gateway): honor server retry_after in _send_with_retry for Telegram flood control (#46762) cedbb4cfa275bd594e1f99cb5be554cd1fc1d668 Merge pull request #52140 from NousResearch/salvage/47707-tool-schema-validation 085096fd5959a7d1dea328b8e04b2ae606a3f116 Merge pull request #52135 from NousResearch/salvage/51826-tirith-mkdtemp-oerror 7d2c1f3f84d93997438da6c0e03ede024c60b36c Merge pull request #52134 from NousResearch/salvage/42449-deepcopy-ctx-engine 710cd48fb1d649925e159aa08d29993f828c40ee fix(agent): validate context/memory tool schemas before wrapping dbf0797335aed7d0c7af6d2bcb93e043a6cf7b69 fix(tools): catch mkdtemp OSError in tirith install to prevent unbounded retry and temp-dir leak (#51826) 8d1f6debfdb1ab58891c3d8f484f9e241a77ee11 fix(agent): deepcopy plugin context engine to prevent parent corruption on delegate_task (#42449) 77d2b50751f3e73010bb6e4ddacf9832ddcee25c Merge pull request #52118 from NousResearch/salvage/36776-ddgs-timeout 4d589b1e13aa94ec4330b3901b279c37e260c7b0 Merge pull request #52121 from NousResearch/salvage/43466-strip-cronjob-toolset 489b85ee1e2b6f8bd6c49dfafec691222d26dfb3 fix(ddgs): bound DuckDuckGo search with a wall-clock timeout (#36776) e25b56fc648728552b3b3145bafb2f4aa665c285 chore: AUTHOR_MAP entry for riyas22 (PR #43687 salvage) 1e4df599ece6987f93a57598026e9ce8d88568e5 fix(delegate): strip cronjob toolset from delegated children (#43466) 7a79a4447c2e1e443f30f43dd62593c414587a4c Merge pull request #52116 from NousResearch/fix/46994-session-load-bool-iterable 8f0a12ce09108553bb6dcf4b2820647387fb21ba Merge pull request #52114 from NousResearch/salvage/27405-preflight-fewbig 9c994377ed2bda9557b682ccab7fc78524c2a16f fix(gateway): skip non-dict entries in session loading (#46994) aacc6bb0a8117940b2f9279b07bf9124fb7cfe09 fix(agent): trigger preflight compression on few-but-huge sessions (#27405) ed1fdb5b61d2a5bbcdc880ff6feab63973b5dfe3 Merge pull request #52112 from NousResearch/revert/52053-minimum-context-floor e0272cfef28f8ef86904a5adf0e34b575b63b109 Revert "fix(compression): make minimum context floor configurable (#31600)" 59acaa972ff6c8f43988795f3c6b950d2efa9388 Merge pull request #52053 from NousResearch/salvage/31600-minimum-context-length-configurable 6800fd660840cf07210e79606aac7a5b42f00c97 Merge pull request #52091 from NousResearch/salvage/42874-memory-drift-guard-add cae1ee44a7afb462a9fe11863d30feffa0736966 fix(compression): make minimum context floor configurable (#31600) 25e2312230ca95f843ee31a93c65899a9fe01272 fix(memory): skip drift guard for add (append-only) action (#42874) b13e2fd6948a59eeb59fe618914147d97a2ee90a Merge pull request #52044 from NousResearch/fix/install-venv-kill-venv-processes b674f7ba28c40d8ee71583f5cb05ac4f2fea7033 feat(pets): offer backend setup when generation is unavailable 9214aa7ddea85a2a5d38572455607a87e94c60d1 Merge pull request #52090 from NousResearch/salvage/35994-reset-deadlock 0225480369f576ddac88152b857098309d60fb69 fix(gateway): offload agent cleanup off the event loop in /new reset (#35994) 743985bf1ec4c911cd5af7bec705a419d8cdd61b feat(pets): Pokédex generate UI — overlay, animated egg, hatch FX, manage aab49f6927cc7ff7aab40da8881727a18a8db4ac feat(pets): generation RPCs, non-blocking gallery + gateway plumbing 3faf768cdef055535298c669b6f46045c5572d58 feat(pets): OpenRouter + Nous Portal image backend 32f837add1f5a07245de232d16892438fcebf4bf feat(pets): prompt → atlas sprite-generation engine de281bcebc268cc087d0a71da208c0605be6839e Merge pull request #52084 from NousResearch/salvage/31884-silent-drop-after-stop 5b065e32edce033769297fa5de44c056e178eb38 Merge pull request #51051 from NousResearch/salvage/cron-provider-pin a130b62678493559fe3e4c2423cfbb63c40cb92c Merge pull request #52086 from NousResearch/bb/salvage-desktop-window-state 2de7549fe0fe06954dd7b72528ca37953d62ada1 feat(desktop): remember window size/position/maximized across launches (salvage #39154) b41d9b845d2901a15b5b46b35bbc5418c2593fa8 fix(gateway): surface retry hint instead of silently dropping turn after /stop (#31884) 35e9c63d89a306133dfdacf1c848f5f5549de2a4 Merge pull request #52008 from infinitycrew39/fix/desktop-nous-onboarding-stale-provider 6638199c53f64f995ac02253456f719960ec7673 fix(install): harden venv-resident process sweep on Windows 7e55b934ea251ca2496125fb89b337062c85a6ed fix(install): kill gateway running from venv before recreating it (Windows) d8fe1c0b4195a8743cd8121a05d9f147c4e60c6d test(desktop): cover scoped onboarding runtime readiness checks 6da615c77cf8b846348839ca7c801c0d0833f325 fix(desktop): scope onboarding runtime check to connected provider 9259d1e5dacbaae8f6692d9e910c190e64f234a9 chore(desktop): sync package-lock version to apps/desktop 0.17.0 c42d44cb2fc2e04dcaf04253d6f5bfa8b66a0264 revert(plugins): restore user dashboard plugin backend API auto-import (#43719) (#51950) 7fb2027d85b7f77c86da3264a73170de52d9a3ba Merge pull request #51881 from NousResearch/fix/29559-compression-abort-on-network-failure 70b9a72687d48a8cb2f49d34db2f6a125bd03336 feat(cli/topup): mirror overview reorder + in-flight reauth resume a15e7b7789467eba8b2f2049b8762b5ff9841828 feat(tui/topup): reorder overview + in-flight reauth with press-Enter resume cd0c6622730868dff56902e69e636aaaf001c24b feat(billing): embed dollar usage model into billing.state for /topup f477f892b3c1c4a81b761d8c6890dd4bdcfd016a Merge pull request #51043 from NousResearch/salvage/tui-config-destruction fce2af780f93780cba3320ab264aa2131eac0ea0 chore(release): add Elshayib to AUTHOR_MAP (PR #48351) 1a435a6d5dae8fbbae31d9f29a1f8ee9f86d2809 fix(model-switch): prevent custom-provider misattribution in model picker (#48305) b85c4605403648d0087ae788af38926ddbfb5e37 fix(tui): targeted save_config_value for model persistence (#48305) 2187fd884c0a3f10b74afcd28851378cf804dff4 Merge pull request #51027 from NousResearch/salvage/typed-model-routing 1a174dfb502ed3bdc0f0dc8d2f5a934f606054d7 fix(models): gate openai-codex/xai-oauth soft-accept to family-shaped slugs (#45006) ae20c3fb90599b3766b9231f7821dc60cfd69024 Merge pull request #51025 from NousResearch/salvage/cron-autoreset-override 6879d77d74846d304c740103b62948ce2873a115 fix(gateway): consume was_auto_reset so /model survives session auto-reset d68a1334582f919bf5f1189d2661ac0cde9546a6 Merge pull request #51890 from NousResearch/salvage/40695-handoff-watcher-async 7634488074bfc7c4ec6a2b71b644d2105afb1e67 Merge pull request #51889 from NousResearch/salvage/41289-model-cmd-async 4f521a5382faba059351fdbacff85d874cbc7652 Merge pull request #51898 from kshitijk4poor/salvage/openviking-recall-48927 ab9134bf16d26f4e1e4e81cf15e5c25a15f229ab feat(openviking): add full recall prefetch policy 721cf54fb16480daf489d441b15ef4993dbb160b fix(gateway): offload /model provider-listing off the event loop (#41289) f0c5d812b0dc5b1df8d1dc24f395c69ef1cb4338 fix(gateway): offload handoff watcher SessionDB polling off the event loop ac822e4d36361ceb46f245f47114a47c9da4f378 fix(compression): abort (preserve context) on transient network summary failure (#29559, #25585) a4a74ca9e9a0f7d7d8e731d927139ccba0a588ec fix(desktop): use notify() with stable id for fallback notification d398076c21175458003fed2d64c8339ed8861293 fix(desktop): show non-blocking notification on fallback runtime probe 7243111c57bb6fad870e2eee7eda4cfcada4d7af test(desktop): cover fallback timeout onboarding downgrade regression 66a0907c9566016b4d8f295c176e6917f67f0f04 fix(desktop): keep configured onboarding state on fallback runtime probes 14295741ec5f65e6761051a8424cf31b8bac9a62 feat(cli): mirror dollar usage bars on /usage + /subscription 46176e7cb1f1ceb7b87a16e2f9a8cc2fbc2358a5 feat(tui): dollar usage bars on /usage + /subscription, drop tier picker 1a15c4c34ca938f9f561e0ebcfe3d90c3b1d5a56 feat(billing): shared dollar usage model + two-bar view (drop "credits") 89540d592be88fe02fb7cf5bf564fc90c358ead6 test(cli): cover non-interactive prompt_yes_no fallback 33926eb31554e8c1917a828d9336f9eb344faa6a fix(cli): honor non-interactive context in prompt_yes_no 8446c1570683d99859f53b27002f21f4d19c1955 docs(chronos): pin hop-1 auth to the hosted-agent bootstrap token a83550b5abb2fa24b46bb57cd38a9d1cda184c05 feat(tui/topup): resumable 'Allow Remote Spending' step-up on the charge path a75aea8f8a274729c95e2df8fab7359c28ddf2cf refactor(subscription): remove dead step-up scaffolding from /subscription 37154fa36f1fb2208d4796ddd07bfa1e36a2c87f feat(billing): CF-4 Remote-Spending revoked-terminal UX (NAS PR #481) 1a082b780cea74afb9fdb1c2278a89f37690db17 feat(subscription): CLI /subscription handler, drop dunning, current:null no-plan cb8a19ae3a4ea57a72943b675a914faef99211b2 feat(cli): /subscription + /upgrade, /billing→/topup rename, /usage CTAs c93b9f9057e4d9db61ef3cabef59491bbfdbe5ec feat(relay): terminal 4401 (opt-out) → clean "Relay disabled" state 969807466cb8760e5f8c2f55b1e6d8faa752c26e fix(auth): write rotated Codex/xAI pool grant through to global root (#48415) 7a36623652f39f069a968560b3ce80850cbfa3f4 feat(discord): optional admin-only gate for exec-approval buttons 3c75e115712f2af2cabdfbbe3a7033ea486a697d fix(browser): validate agent-browser is runnable, not just present (#51740) a911bcda18cf83273d0aabd3e67adb2206436e60 docs: stop recommending pip install; curl installer is the only supported path (#51743) 98224ce8b658c02e36a190141d387d34d8a2f648 chore: add chazmaniandinkle to AUTHOR_MAP for PR #43888 salvage abc3662bf6076045e4d4dc1e14a74cb35d69b86e fix(gateway): detect launchd in /restart service-manager probe (#43475) 8723e27a6115e73bd15af070138bd4db2dce4b0b fix(telegram): heartbeat loop exits cleanly when bot has no get_me 467e1f9837fe01c2df86440aad389a57eab39612 chore(release): map agt-user noreply email for #48496 salvage 142f6f8d54483081a9547b97b7b0208a5897ee93 fix(telegram): persistent heartbeat loop to detect CLOSE-WAIT polling sockets 73a20a6ad62b678d69335ef3a352ccf9ab85167b fix(telegram): clip mid-stream overflow instead of splitting (#48648) 47fccc07352b8ab638c500134c45a562feea89e1 refactor(dashboard): remove the dead tools box from the chat sidebar (#51737) ba507871807214429e3eb31a00b8a0245677dee3 test(anthropic-oauth): cover login token-endpoint host + fallback 2ee6449fe51d8feec4942d1b05f876c6631db3db fix(anthropic): use platform.claude.com for OAuth token exchange be78fbd70e448a8594d86679cb8987a7fb84124a Revert "fix(profiles): clone auth.json so OAuth credentials carry to cloned profiles (#51719)" (#51732) 4aa793345ec9b19cdfe6856cdc9da84c53abe406 fix(matrix): use member_count as DM signal for named DM rooms 0ef86febe25fbddeb7309d0fb359c261aa86718f docs(sessions): clarify sessions.json is the gateway routing index, not the session list (#51726) 7ff48a6291f532474ad30ff2635ccb995451b2ec fix(discord): check pairing store for component button auth 0957d77187805f5c488d1fcbd8fa1c365ef695f6 test(agent): cover interrupt tool-tail alternation close (#48879) 81d2dc5d0f94268cda8306656d435562ae86a944 fix(agent): close tool-call sequence on interrupt to prevent role alternation violation (#48879) 53f8386587a5330d19974160b067c93979b56faf test(delegation): regression for bedrock Claude target_model api_mode routing 284d06cabfb5f19051c83320115fde74d9e344c1 fix(delegation): use target_model for bedrock api_mode routing (#49095) 3dfbc0ad1d9fd45daf9556c3b03aadece65679ef chore(release): map thestral123 author email for PR #42021 salvage d4be583d986f7bcca4f8414fd21ef9e34b18c948 fix(telegram): raise default command-menu cap to 60 so skills stay visible dbe14ce35d9cb087ae9fe3e3f166f6c475297e25 feat(gateway): configure Telegram command menu priority 281a439ad483e6f130c2305a5e932c652778cb3b fix(desktop): guard composer mutations when the composer core isn't bound (#51728) f504aecffe7fe8fdad9fb2baeae3839701929877 fix(profiles): clone auth.json so OAuth credentials carry to cloned profiles (#51719) 050bd01b7b536fa57ffad8c1f69286269adb7f68 fix(dashboard): serve uvicorn on SelectorEventLoop on Windows (#50641) (#51717) 901165b5a46c5d1cb97d2b748d03e83371ce81ca fix(cron): complete plugins.cron_providers rename in 2 missed test files 0d4cecb3527011d0ed4a90691476a01744bc0a0b fix(cron): avoid provider package shadowing core cron 31bced160742548738679c9fdce7f81ff7057211 fix(profiles): detect a separate-process gateway in profile status fa2f0bf3daf4b7a6e4445425cf3949c81a5f954f chore(release): add francescomucio to AUTHOR_MAP for salvaged PR #51357 366c2a37669fb4cc02c7fc1f34aee1cc518cb3e0 fix(gateway): propagate fatal-config exit code through start_gateway clean-exit path 776f68e1eece5bea2a14285faa39b69f0da4719a fix(gateway): exit 78 (EX_CONFIG) on fatal startup errors, s6 finish script stops restart loop d93d0aee83939f425c3aa4e49e0829479d4de15c fix(cron): anchor naive schedule timestamps to configured timezone (#51695) 78e122ae1ab4e19c5f2bf962c8633434c69af877 feat(cron): warn when gateway not running on cron create/list (#51696) c39b2b50eeb8c338e147739e6fe3a50e2be86192 fix(tui): stop a cwd package named utils/proxy/ui from crashing the gateway child (#51693) 3d56807fbda0d23cf12cd3ecfcd39f9e3e8b2b3f fix(gateway): actively reap no-systemd gateway orphan before restart 044996e403052a929426f4d9294dc5882686598e fix(gateway): track no-systemd restart runtimes d539cd9004a19fa281d7d79c911c7ea67cc0d78b fix(config): write config.yaml as UTF-8 to stop emoji/personality corruption (#51676) 8e7e104521345fd5fa64764adf47763d963372c5 fix(cron): tell the user TUI/CLI cron jobs are local-only at create time (#51683) ccfa079252ac577996fb13ae47f84e2598cd2823 feat(telemetry): local-first telemetry & observability a39283bf09aad36e27fd128faad1dda614b6d4de test(docker): assert boot migration keeps .env byte-identical across reboots 60d3b8cbce5adb1710bf14503c79a9f34fcc67f9 fix(docker): restore config backups after failed boot migration 7f1c278db817acfd315b15f1eac5a87fde4fe5bd fix(photon): intercept console.log so 'stream interrupted' bursts escalate b60260c61a6d10df8e13e81cb82a255bc283ff79 chore(release): add SidUParis to AUTHOR_MAP for salvaged PR #50071 0952acbf4de8b20517a88183fa649e8f793468ac fix(photon): label upstream CatchUpEvents failures 06cbc3bae98558cfbb40313cb5a59ec1ad7e1ae5 fix(photon): recover degraded upstream stream 34bd6a0db5e8819bd84609e87fa966615150c3da test(installer): lock Python-fallback propagation into the venv stage (#50769) 23683c3353b0178e7e52663b3a904951deb4c3c8 fix(installer): re-resolve Python fallback at venv stage on Windows (#50769) e78bf4b7d86abee99aa7ae97be43aca2d42dfa1a chore(subscription): drop unused format_money import a5902cd26781006c7b4d3ab6dbb17b15e193a6bb fix(subscription): drop manage-link gateway RPC, build URL locally 935f2bc48daa9c7fad73f80c95d4375da18a39c1 docs(relay): add §3.4 — obligations on a future scale-to-zero behaviour layer (#51633) 3831e78d37722f23ebe37b93821e35ab18062906 feat(tui/subscription): team-context screen — redirect to /topup for team orgs 2958145f11c72c9f5dfebdec4624ff099ece7efc feat(tui/subscription): render cancellation-scheduled note with headline precedence e4c46be204cf8df4a94b91bf8e844ebe6229e6b6 fix(tui/subscription): stop saying Stripe in deep-link copy + fix manage link kind type 4ea3096a855a03b2ccd8b00ef71555ab44f289d9 chore(release): map jinhyuk9714 to AUTHOR_MAP for attribution check 667a9f5139bac819ddd786be6f0f54feaf0a6a07 fix(update): reuse an existing PATH uv on Termux before pip 3e508363f73e5ff7cc4afc8249ec36cac2edce73 fix(update): avoid source-building uv on Termux 6e88f7b6f7b93340faf2af60f348879d19323f67 feat(relay): Phase 5 Unit C — wake primitive (gateway side) (#51595) 6ef679420e901415ddf5a15bc7b90e8df064a556 Merge pull request #46464 from NousResearch/bb/pets 6afeea2beaa7bf14a0e3de4757b8669e68b54795 harden(pets): host-pin asset downloads + sanitize slug paths 7739f5fc5b44730bb98e2bd7c63938697bbdc340 feat(gateway): structured start-blocked telemetry + crash-loop visibility on /api/status e495b33bf16f403cf4ffbfd52833848ca6dfe5e8 Merge remote-tracking branch 'origin/main' into bb/pets-merge 40fddc9e4c4592f7d2e064480e0615dbb67ac8bf feat(relay): Phase 5 §5.3 going-idle / buffered-flip primitive (gateway side) (#51572) 433db17c0a8d5581b4fb38289539fc1ee5cc7696 fix(windows): harden gateway scheduled task (#45610) 0ba1dfed7851b78c8dc379bcae64c83f743aff8d fix(gateway): refuse model switch on stale checkout to avoid env_float ImportError 807bdc17f62ba1bd2d9dbcb1be948cd110151bac fix(gateway): prevent double dispatch of Discord messages via thread-starter dedup 89538d47b87e2e7a32c219cd9004d171d3f39c18 Merge pull request #51553 from NousResearch/salvage/48300-stale-session-lock b56aafc2ef6befd96ecf00bf4788031cf4be169b Merge pull request #51554 from kshitijk4poor/chore/authormap-manusjs 5511fcf944652c7dea62af9e7cf0ceb1c201105d chore(release): map manusjs email to manus-use GitHub login 0c79992db565de298ca694cf2278a094ed601f1a fix(gateway): preserve _session_tasks on guard mismatch to enable stale lock healing (#48300) 292a456c0691db16497b259526d37548d6b81677 fix(agent): handle concurrent tool submit shutdown 74265c8e84c9bb93253c145bb18fd32b2b3946c7 Merge pull request #51541 from NousResearch/salvage/31599-telegram-closewait 9e924f79a87f883b247bdad492eab572e73a738c Merge pull request #51539 from NousResearch/salvage/49045-toolcall-persist e32ebc6aa26fff446bcc7e11a254d2d4c671f3b2 feat(skills): /learn — distill a reusable skill from anything you describe (#51506) 190b01c5531e37547ffdd96b2bc1094308a0756c fix(agent): persist tool calls before turn-end flush 4b7f3826c2ced4d1243b64b15785c6781f836639 fix(telegram): wire platform_httpx_limits into general-pool HTTPXRequest (#31599) aaa2e2cb882060b3c97d91452155c2363a5e2d30 Merge pull request #51509 from NousResearch/salvage/49041-compression-session-lineage e155ca20eae95a4fd85ac866bc89e2857e60ea17 Merge pull request #51507 from NousResearch/salvage/47134-mcp-killpg-guard 02050859f31604c56336077a2dfacc2e7c9990fb fix(tui): preserve live session identity across compression (#49041) 23c47371d23f7ff727c9430b5295ff8dd8622a13 fix(mcp): skip killpg when child shares gateway's process group (#47134) 64131bf975d084b51270fbfce51bfd3d14e8377b chore: add s010mn to AUTHOR_MAP for PR #29221 salvage 221cd60242ae9ad5bccb4aad6e91e2bc45eb3f6d feat: add reasoning_effort support to ollama-cloud provider 72bfc48e63a1a376caad1345da0034633f66fc31 feat(tui): track background subagents in the status bar (#51485) da80ac00422d6789bc2eae02fcbb9462679e2e56 feat(slack): add --no-assistant flag to manifest generation ed0e2ab3711e9a5761992936504dba1ede2df37f chore(providers): remove dead cloudcode-pa quota-fallback branches 70d28b62fbc9c47e2e3659ad1222ed2ecfe0e89c feat(cli): track background subagents in the status bar (#51441) 6cc07b6cd0344e63340aa003a5e90a5bdefe14c0 feat(discord): render reasoning as -# subtext via display.reasoning_style (#51168) f32be4439ca0a8372bea532f506c8cf93b72d33a test(install): assert no system-browser auto-detect + snap override repair 97888fed483c1e867666b6beb4eb03e409cc9481 fix(install): drop system-browser fallback + auto-repair stale snap override 0089bd820f19905452a85544a6b2093b7ffa0803 fix(ci): classify should default to no MCP 9fd2b2cb9fab9e5d7a49b4102ad028fa430ede1e fix(desktop): replace native title tooltips with styled Tip component a0471e24648ef29ef6a3c681eb5b9917ae910258 fix(ci): only run supplychain checks in pr 7bdef28b305476d3b37762bb5eb249f6dcfb4194 chore(actions)(deps): bump docker/setup-buildx-action c820eb6a5a94bf919867947391a42b08672df668 ci: remove unused windows installer job 05c896cf524991f95c34ce73d2cbe985b5e0558f ci: refactor paths & clones 56b4ef74a631bdca0bd5cc58bd43369fc227ea83 ci: make dependency installs resilient to transient flakes 2977e7454377bdb9cb101e4d387e1df7720af8a7 ci: build Docker on main + release only, never on PRs 45540cfb5ef1e30c71d46166a171d88101e8fcb7 ci: run only the lanes a PR affects (python/frontend/site) 3dec660a50243e6730ccfd7e044ef0cfd06465d4 pytest don't load plugins b4d88a9e33a56f6a853badf91ddbc275abbc36fc dedupe work, faster docker tests bb445b24ad307ed359d7cd2e8a193480b45e1041 wip comments f519c1e08348c215411d4c354a692b7a5e037555 refactor(ci): move tests for docker stuff into actual docker urntime tests, not dockefile assertions 351afd353d9925935e3c6fd0028b053a4b107d6b docs(computer-use): document Windows UIPI elevated-window limitation (#51121) e854528a85303625c00b4d79666d8f0a9219f598 feat(tui): add /subscription command + overlay wiring 66d22cac973c71e9a48227f99f81bb771756e107 feat(tui): build SubscriptionOverlay — overview + confirm + handoff 1cecb2fbb95956cf48f0f523d3280a59c7c411b8 feat(tui): add subscription overlay state types + store slot ac8a790b677016974ddb1c230548d5842bdac19e feat(gateway): add subscription.state + subscription.manage_link RPCs df4350c5ade00b02f7b89f7cc12d29ceaa247878 feat(tui): add subscription wire types 75e4bfd1831c7843dec296619bda977444d1841b feat(tui): add /subscription + /topup CTAs to /usage output aab4ba454fc500d96732b0cead58c0eedecf476b refactor(tui): extract overlay primitives to shared module 30a1254c366d75d81bbdd97a68bf7a953ca1d830 feat(tui): rename /billing slash command to /topup a53e48b4f9517b1ab64a4d214f5c6d5f4925e4cf fix(desktop): make the remote pill a far-left colored indicator (VS Code parity) 2ead3210eadbb1e8315ea2d0eec58c6a37b60b4a fix(desktop): carry remoteKind/remoteHost through the primary backend so the pill reads SSH a510e1132cb0f79e3fbf2fed58eada301b487250 fix(desktop): keep SSH ControlPath under sun_path on macOS e4cf51dbc0e60fde0470b0974854f3905aa18141 fix(desktop): pill deep-links to Gateway tab + tooltip shows profile 962249703650df7c1a6e8fccfc6f3c814ef31252 fix(desktop): parse user@host[:port] typed into the SSH host field bb898b80f9a8f17557737d32a2f106629c32258b fix(desktop): harden remote lifecycle — skip-build spawn + adoption liveness cc96ac617af512d4d30b093a70f30ab8302fbd18 fix(desktop): create control-socket dir before opening the SSH master 28d7472fb4aa41d89c62846ea40899b377970eed fix(desktop): scope global SSH per profile + stop terminal leaking to non-SSH remotes 86c685a86279a4833f6322e3c59eac27255c345a fix(desktop): make DesktopConnectionConfig contract total (tsc) 85c8848fa9f4d0cc2f87081e54b88cc15d508841 fix(desktop): lockfile records hermesHome + protocolVersion 97b44e5401ca80e34574c2ae21a9a46d3627050b fix(desktop): dispose SSH terminals on connection flip f0693a3232c761a48a33b31f815021bf2068ef98 fix(desktop): connectionCacheKey identity includes remote host (fs cache collision) 7c2103433037a6f910e3eddf208935d3274577d1 feat(desktop): interim ssh -tt remote terminal (SSH mode only; tracked for /api/terminal) 56cded1ae1f678a107d59132e97d52ba14566f3f feat(desktop): statusbar connection pill (SSH:/Remote: host) + i18n locale parity fce5aaae4b823b7aac851f042d8c4b0778fab7dd feat(desktop): SSH connection settings UI + onboarding entry (issue #36970) 7d1afaa769d82b0da95c658e327d527c5dd918e8 feat(desktop): connection-config ssh mode plumbing cc24de2caab4794e36acd2826a6bdb49d2cfcf09 feat(desktop): remote dashboard lifecycle over SSH f65468624b2e7dbae94808a39314c64228c83e0e feat(desktop): ssh-connection.cjs — OpenSSH ControlMaster manager + token redaction 5ecf3bf0e0726b8b33682bb5c3aad9679b7b5be4 fix(slack): report ext-matched audio mimetype for rerouted voice clips 21965841612db89bfd9866fcb8c380c0d202b9c0 fix(slack): transcribe in-app voice messages (audio/mp4) instead of failing 45bc4fb37fa8a62031c0bf7365a4e5342195a5c4 feat(relay): declare relevance policy to the connector + document the management plane (#51248) 211ba9c7d31d0f532521d885d720b1ace038ed3a feat(agent): one-shot LLM helper + llm.oneshot gateway RPC (#51261) af7b7f6322724f76dfef3b9a9aea834d9385c872 feat(agent): expose coding-context project facts as structured data + project.facts RPC (#51259) 291d5a2b4b2f39d5f34025ab20a36642356100b2 fix(slack): transcribe in-app voice messages (audio/mp4) instead of failing bb7ff7dc302cbcbe41cf6bc09424ffc9fb2d062f revert(cron): return cron job storage to per-profile (reverts #32117 + #50993) (#51116) 2a10b8384aa2ef0418063ca0829e491c5916fba4 Merge pull request #51103 from NousResearch/bb/desktop-tool-preview-cleanup 7daa6d83fcaa4822f5a6f878c5e78f0d94ff1d26 style(desktop): soften inline code and expanded tool chrome 48a8f8416937dc3168903a89d0e34f8416c24965 fix(desktop): toggle preview rail and open in browser d0af7fc954fe61c030a29be38d5c63f67f0bf7b2 feat(desktop): detect tool previews into composer status stack cb17a9efb2dffb35ab5f827f0766d17b94fab91f fix(desktop): stop auto-opening tool previews ba9e3a491bfaa04fbadbb165d3691aca2f80a9e8 feat(memory): Honcho OAuth connect — desktop and CLI flows + token refresh (#44335) c3ae275571cd64afc1be9e0e56a1bbaef99add30 feat(providers): GLM-5.2 native reasoning_effort controls 672ea1f8947d4fbf85db1f4a487c6739a4b78d78 Merge pull request #50994 from NousResearch/hermes/hermes-9fb04abd 833710d33e5b495c358bbdb27a969e3bd825528a Merge remote-tracking branch 'origin/main' into pr-50994 116331dd3ffeb728e1e960bbd25ce82c9af19269 Merge pull request #51094 from NousResearch/bb/desktop-thread-timeline 760fd9513e7d7350a672c76369ba632ca1ed1448 Merge pull request #51078 from NousResearch/bb/fix-vision-capture 6780cee6794c6d1d388f58bfea0ec54204711e3c Merge pull request #51072 from NousResearch/bb/desktop-computer-use 3fffecbdafec0bcb08a7335da4e15181bc6ff5d6 feat(desktop): add timeline rail for long chat threads 9bacd7d4bb44cb376c1126991fd31dba46fd9013 Merge pull request #51096 from NousResearch/bb/desktop-oversized-image-replay b90f1e4ac0373535de436c74e9af4c3657700d6f Merge pull request #51093 from NousResearch/bb/desktop-string-stack-overflow 88e136448d0820186d1f56b5093c40e71b3d71f5 fix(agent): shrink anthropic-native image history a6b670d4a251f98ca3bac91a867bb469f7ce4e93 fix(desktop): avoid stack overflow on embedded image replay 3c1058e2e983c45856c4417e1c47d69843e778ed fix(computer-use): set stdin=DEVNULL on cua-driver subprocess calls 2dfcead68367c93c256a966d8314ca36fb2d679f feat(computer-use): make the preflight cross-platform (win/linux) 807b69629532366530b386b24c4d575df3fb8f1e fix(computer-use): vision capture returns an image on cua-driver >=0.5.x 876964f5a8cfc0e7969de974aae6f9eb04aca468 fix(computer-use): vision capture returns an image on cua-driver >=0.5.x 0223ea5f590aec3697ebad6b7f533b5e5df2cc83 feat(computer-use): surface macOS permission preflight in the desktop 87c4a5ebb8a9f8122197a908288cc0abc7cef6b0 feat(background-review): aux-model selector for the self-improvement review (#49252) 660e36f097e8bc0c2dc2a9e22d203eb6a9d9361c fix(cron): scope job execution to its owning profile (#32091 follow-up) (#50993) 15880da8bbd5c9a48c3bc5f6955bea86fba54965 fix(file_tools): resolve tilde using profile home for file operations (#48552) c080b2dc3ee672251cce6de4d002632f4027f9f8 fix(gateway): redact credentials from TUI approval prompts (#48456) 0e69cd4b37aa3f218ada018d5f0456660e0b726b fix(memory): honor configured char limits in the no-agent on-disk store 3147cbb1363554a404e6941f1862981326348d1b fix(memory): apply /memory approve against a fresh store when no live agent 100e7be20ed88d8b78adb6664b41c8821052d592 fix(security): deny root-level credential stores in media delivery a4e61ddf043864b88a5a40df0e23efcf3c6334f5 fix(cron): fail closed when an unpinned job's provider drifts from creation snapshot (#44585) e9b86f352fc73db5ca3de6e3fb50ef57d774f8f9 fix(discord): delete obsolete slash commands before creating new ones 91c465f6e79accf9daf44c86daa5c6058d41546a test(discord): add regression test for 100-command sync limit ae7e857420bde96875c4889c8332ba08e9bf5e82 fix(cron): deliver max-iteration fallback reports 39727014246c3db2d6748ad2584191b622882ca3 fix(agent): complete final text on last turn 1059f68bcaacb7820ed0b637d42f8f82bc7c806f fix(gateway): preserve runtime provider model in agent handoff (#48061) 0f741cef285aec8014cbf5e00c5df950bc2a4d8a fix(tests): update cua install tests for cross-platform support 5f1d23cfb2c5bae3c76bd36981df0e932940cf06 fix(computer-use): delete broken pre-install asset probe; trust the upstream installer f721d2cda9f25fecd782525d8ea1312cfebec879 fix(image/video gen): make schema delivery instruction platform-neutral (#51031) 791c992b554fea2f66d8e9b2e7d56837b72ecb1a fix(model_switch): route typed configured models off openai-codex (#45006) 31628a0728642b41b86e77f834c4e4fba9dbd578 faster pippip 41c33c390ea52405559a16e7ce6d670219d922e8 faster docker builds 2a58fee1a1bcae25c4159c49db213c87ff0709de fix(api): allow dashboard updates for git checkouts in containers (#51005) 6681f28d5b14ac38e444d3578c9170fffa5363d9 fix(telegram): disable DM topic mode when last binding is pruned 11246dbe215fc39a42094d3a35cae86f348cf8fe tests: regression coverage for stale topic-binding prune (#31501) 142a5751a2b3ee2be8ac405942879efac81c228f gateway/telegram: prune stale DM topic binding on Thread-not-found (#31501) 4849a8e55583d5eb83c838c7c7be659c19201a3e hermes_state: add SessionDB.delete_telegram_topic_binding (#31501) 30e5d0092dacc35fb0a09d537077e93f495bb90a feat(computer-use): add whole-screen/desktop capture target 5250335863eea92b589066a4ba1a1a57acc3f7b7 fix(computer-use): route CuaDriver vision capture via get_window_state 2ba1cfeb2e28c77a3ae2323772e5a6bca43844cb feat(goals): completion contracts for /goal — evidence-based judging (#50501) ff08e60c63ada076aecc0c3243e2cfc9258db4f8 feat(skills): add cloudflare-temporary-deploy optional skill (#50849) 7dece1d933c14eb353e68060912d5bfbb1814cad Merge pull request #50977 from NousResearch/bb/composer-fixed-portal de7ad8b78eaeab96324b9800e28f12d8b92e83a7 fix(desktop): guarantee out-of-bounds composer is reclamped on load ea5fa505d9743d1f6e0036480a36eaebc60d79af fix(desktop): clamp floating composer to the thread area, not the whole window aff5ae692fb2e09a68344c841f5a6a461fb33f3f fix(desktop): move composer out of contain wrapper instead of portaling 79f270f5496267ca9713d40af277e8453e528d8f fix(desktop): portal floating composer to body so it can't be clipped off-screen c6dcf6a67f9f4e9ad51ad3c0e4bec9becd7c710f chore(release): add Minksgo to AUTHOR_MAP (PR #29809 co-author) e89b0191d688a79c0c230d0d273002c521706a8c fix(auth): explicit provider intent beats stale OAuth active_provider (#29285) 8e9280c7101046a69e310bc4b6330f62c6407032 fix(gateway): redact credentials from approval prompts before sending to clients (#48456) 5937b95192bc02a98a8a29d44caffd71f2b25694 Merge pull request #50773 from NousResearch/salvage/43719-dashboard-plugin-rce e2bea0abe6aae9dd1e9ff275c9240093c0d03245 refactor(security): centralize non-bundled plugin sources in one constant f1e6d39a74faf4224f0d365009f31d0589c8b8eb feat(computer_use): disable cua-driver telemetry by default, add opt-in (#50842) ed711e1c2c752f9e1863ae9e2e17e558b7b539b7 chore: add iaji to AUTHOR_MAP for salvaged Slack mention_patterns fix 441bd6d8dbe55edf0b3b0aac4068d80a5d4cc2f9 fix(slack): split csv mention pattern fallback 49662687646d424595126c8254334bcf0284656f fix(slack): honor documented `mention_patterns` wake words 26179463977419cd2c0258eb88fcebf33b665b20 fix(delegation): emit high-concurrency cost warning once per process (#50848) b1b20270c4e4dd9e179a9318543db061f49e5bd6 refactor(memory): move write-mirror gating behind MemoryManager interface 027cb649ef8018e6027edcead9423ad654888dd4 fix(memory): fail closed on unclear write results c7e0501e9b58dd1e52fa7944e2b55dc60582af7c fix(openviking): drain memory mirror workers on shutdown 70e7132e2ff7ab8c25880a5bbecf433c77a7d7af fix(openviking): gate memory writes and add viking_forget 38c56a1e860741e538a86d9500ac3296d4da1820 fix(computer_use): probe cua-driver-rs release tag, not monorepo releases/latest e3505c7f73a448401ab7ebc864b5c067504ceb74 fix(computer_use): reconcile Linux gate with stale "gated off" comments f2e37549c673ab3645e5784d066ee95193c119e2 feat(computer_use): cross-platform cua-driver (macOS/Windows/Linux) 17dfc6bec4a8b7fd840d479c33e9a7b2449f805d fix(desktop): set AppUserModelID on Windows so notifications fire (#50808) ff85af3fc7d38e663e08cdada10e26f3d99ab91e feat(goals): /goal wait — park the loop on a background process (#50503) d4fa2db1c5dfd961776c77a619767e9ef17abce9 fix(desktop): show all of a provider's models when searching the composer picker a6ce9b2fbbdfbe1fecf6c72d28d02a72adccf82f fix(picker): keep flat-namespace reseller first-party models in desktop picker ef6492b6484aff843aa86598c9ef68b9eecf3038 fix(gateway): cold-start installed Windows gateway after update when none was running (#50804) da498ed99b65f4fca2fddc7a9b1e5088ca34ce2e chore(release): map ScotterMonk for PR #50145 salvage e9cd8c5bf3ea44a5f1624fb6db3a6edcff1a0100 fix(delivery): drop env-var knob, flag all chunking adapters 86e4521cb1d924436a07a3cf48d0afc440e305dc fix(delivery): make cron output truncation configurable + adapter-aware eecb5b9dd19a4234ebf64c45e5440d85c60a6696 fix(update): don't count across shallow-clone boundary (bogus '12492 commits behind') (#50784) 2e779d11a03dbe37db8309a80750763b4b8d1b45 feat(mem0): v3 API, OSS mode, update/delete tools, telemetry & review fixes (#15624) 8845f3316c26732cb758d7f7300b9dbf83ef2728 fix(security): restrict dashboard plugin backend import to bundled plugins (#43719) a904ff17245a57f32cf5ffc4ea108b2fe0010539 Merge pull request #50781 from NousResearch/salvage/output-token-reservation-threshold 623b21bf24ea3f2f2c2d90de3ae872b8a0a000c4 fix(compress): reserve output tokens in the compaction threshold (#23767, #43547) 75a70d98f322378b978695f832813af9c05ced83 feat(relay): forward a stable instance id at self-provision (Phase 6 Unit α) (#50772) 065946d84f9ce31b7eb51380c9641c5038f291c4 Merge pull request #50762 from NousResearch/salvage/defer-preflight-after-compaction 1f28b1a9b975e61ea6016e192d047031b27e03bc fix(gateway): redact credentials from approval prompts before sending to clients (#48456) (#50767) b2c84a16267245dfb34b2c497113b425542ef446 fix(agent): defer preflight compaction until real usage after a compaction (#23767, #36718) b4cb33cd4265dc876812297390c4cfcb9779a8c5 chore(release): map basilalshukaili@gmail.com in AUTHOR_MAP 72f75f84568a8852fbc0aeb14328e82647b3cf70 fix(compressor): count tool_call envelope in tail-budget token estimate (#28053) 0e87c0a41b6d468c541a0932c6465e0f8b209c23 Merge pull request #50117 from NousResearch/salvage/f5-cron-mcp-per-job aa83213c530dc0a70fc525358c810b749888c7af Merge pull request #50740 from NousResearch/salvage/preflight-token-progress 21541ce6e99b8b15456d8cf96d733e5ecd98bd0c Merge pull request #50108 from NousResearch/salvage/f4m1-anthropic-pool 5342eccf12102c14a9739eaffd4fbe401d5b5403 Merge remote-tracking branch 'origin/main' into bb/pets 5bd3dae9e21611f50f94f21c1d03a1682b4bd3bc chore(release): add sherman-yang to AUTHOR_MAP 74a5905aea6f29374e624bbfd030357026d468cf fix(cron): layer enabled MCP servers onto per-job enabled_toolsets 04a1d9efd76db1c5860bd5b928da95e37babb8b7 feat(desktop): PR-style file diffs in chat (#50731) b9f302441fb3fc7927507ccd074a806d600b34d3 Merge pull request #50112 from NousResearch/salvage/f5-cron-storage-root 69de0360a175b029af2165b3729ba08efa0f5f42 fix(agent): align preflight token-progress floor to 5% (#23767, #39548) f509d65336ab888f8d3606a07c16db031ae2b717 Merge pull request #50109 from NousResearch/salvage/f5-disabled-bundle-core 2649f7360cfa95d381c00a328c7010299693a4f3 Merge pull request #50062 from NousResearch/salvage/cron-missed-grace-runonce 3545d29422a5fa78db5696a4fd38e3ea2491e38d refactor(auth): drop dead select() fallback in anthropic pool resolver b08ee8ad04098c58f8044dd3df93b6d3db45974e fix(agent): count tokens, not just rows, as preflight compression progress 61c266b0dc75562a97dc0a377a7dc141d0b0a5ac style(desktop): soften dark-mode syntax highlighting 33efff0d8c935a51310ae0e4632044363ccfe50e Merge pull request #50726 from NousResearch/salvage/compression-token-progress 64a507da44d273a16bc776185b54d0fd625e1460 feat(relay): handle passthrough_forward over the WS (Phase 5 §5.1, gateway half) (#50702) ac128af1cec30238f21376273ce4f96088a800bd feat(desktop): syntax-highlight inline diffs via Shiki c6fbd5a10494541ec3f29b77bc639e6ce3441c18 style(desktop): lead --dt-font-mono with bundled JetBrains Mono a61baa96157241c2e422fd85b3527bee14b41c62 feat(desktop): PR-style file diffs in chat ebd38e12807ded8514d20c6699d880598a903c9f test(agent): regression for token-only compression progress (#39550, #23767) 87b60ae49a9f9bb61fa57468e68344e4d4113a64 no-mistakes(review): guard token-delta status msg on actual compression in overflow handler 47b6b4cf857ba627070f2ae22cfa4c124c900ca1 fix #39550: detect token-only compression success ab22317d095018c17065c46bc51827591052aa02 Merge pull request #50214 from kshitijk4poor/salvage/desktop-rename-branched-50143 5ff11a689b561fdb1404aede3fafa543bbbb86bf feat(cli): /timestamps command + timestamps in /history (#50506) b9b4756ab4805437003b55127c369dc18ce22b3b fix dashboard chat session titles 5dae502b863f002c0816d7840728d1df26cd35ea Address email pairing review feedback 2455e1801b60b8c964446339a10a9bceb85986d3 Make email pairing opt-in 74f0dd62e87536e2d53ece79a71f9a1fa75f038c feat(cli): Ctrl+G submits the edited draft on save (TUI parity) (#50560) 4b09903de5b93a92853a6c3ec398b3b077949b0c fix Nous auth refresh for idle agents b5bd66eac9b18bb0e7c34f141c4631ff4eb1c72b fix(telegram): observed/replied group docs of any type are cached too 4314d451ca961cb50c3430197a3a2c7a8575fd0e fix(gateway): accept any inbound file type across all messaging platforms de6b3ae3774fb0bb48f288159e7bb326d8f48bc2 fix(terminal): bridge docker_extra_args to TERMINAL_DOCKER_EXTRA_ARGS in CLI + gateway (#50631) 6202fdfc354df566a8c0a1110ba292b3ed7ca297 fix(container): detect dashboard role under s6-overlay v3 (#49196) (#50600) e448b21414b9dece9b74c3281f04ba4f5c79a771 feat(dashboard): interactive auth setup on no-provider non-loopback bind (#50551) 9e96e709951824be8336c5a733bb0d98d6ab32da feat(cli): /prompt — compose your next prompt in $EDITOR (#50509) 95d53c3bcb066ab4180f1c6e2493727ef2ecdee6 feat(cli): /reasoning full — show complete thinking, not 10-line clamp (#50499) b0a25980f89fc42b495d7d6ec17bf879c9b5d5c3 fix(terminal): make hermes install dir reachable in subshell PATH (#50534) 4c1934dd8731fdd36e714f8caa422741e82cc391 docs: repoint remaining stale gateway/platforms adapter refs to plugins/platforms 0768ed3b33e43df7de05c59017c997bb5e2960f5 docs(agents): fix stale platform adapter path in token-lock note 7130d60861a9243301514bff611a9381830d59d8 feat(providers): remove google-gemini-cli + google-antigravity OAuth providers (#50492) 5bf23ff251ed54961f5560d2d2f95474dcc09386 fix(banner): don't advertise toolsets/skills the agent wasn't given (#50497) 8cfcbd327dfc65dbc073d0ba002dbff7a61f7713 fix(process): SIGKILL the whole tree on escalation, not just wait_procs survivors 8cbb34b2bf4a490d19338cddfcd91772f2e097d0 chore: map tkwong co-author email for #15008 SIGKILL-escalation credit 8cecaf0b29bf0f3d468271a7d8b495393c43af11 feat(process): escalate SIGTERM->SIGKILL on host-pid termination after grace 41fe086eb6f5a96da909d1127e40aef8829dbf18 style(security-audit): add explicit encoding to read_text calls (ruff PLW1514) f45ace9318be7f78dd9250afc67e806908767fa8 feat(security): startup security posture audit (warn-on-load) eb51c180e6484ec15809d04c25a8115e6e48dc3c fix(docker): replace dashboard --insecure with basic-auth provider 7726ce304086c6e7a764a1379fa3050358b216f9 fix(security): close hermes-0day MCP-persistence attack surface 9bf9a9f1f1d4840b77fbc02210d21516ad507362 fix(swe-runner): move logging.basicConfig out of Runner __init__ into main 0a7ae28ebc1a5e1c86cc43d78c215fb224b618a8 fix(compressor): remove logging.basicConfig from library class __init__ db827de80294b050c769ef1de7cb1fa8af48c441 feat(gateway): external drain trigger + accept-gating (begin/cancel + control channel) ef5b2b3197d562426a6ad1d385a45886023ab2db feat(dashboard-auth): drain shared-bearer-secret provider plugin ab7bda49878cbeea75eca9d194691a020e5bf281 feat(dashboard-auth): generic non-interactive API-token capability 2b3a4f0af80f2952760fdeedb9f26f4eac7faff3 fix(agent): strip stale reasoning_content when falling back to a strict provider (#50480) 73340d8be6504425b008a3d56daeeac979ae5fa6 chore: add buihongduc132 to AUTHOR_MAP for mem0 salvage 452a725ae19f2e3d7145b8bde3eb3a591e8402a6 fix(mem0): address PR review — restore docstrings, keep api_key required b6d2ac176e2704f011f20f2b4f74ad7db0a3738d feat(mem0): add self-hosted support via MEM0_HOST / host config 012f40c98c18b6723e355abbba7544b752836276 fix(status): cross-platform start-time fingerprint via psutil fallback 1cefc2a24e8364b9edcbb3866c161119d56a89d6 test(whatsapp): fix port-spares-client test race (listen before announce + retry connect) 0fb3b13b002d743d886a0a9a70de5a7d68ee0d7b chore: add valentt to AUTHOR_MAP for #43846 salvage 615a8e65160689496197b82822226eb47cff7872 fix(whatsapp): add missing re import + fix test import path after adapter relocation 069ab40c5f3f4be21f2a0b323344371e526c66df fix(whatsapp): only kill LISTENers when freeing the bridge port, never clients 77fdbbfe81d87fb04feee4339bea2f830be80b94 fix(whatsapp): validate bridge PID identity before killing stale pidfile entry e44772314915ecf3ada2674c3f8790e4a6fb8f57 fix(process-registry): re-validate PID identity before killing host processes 635a430dd427e11b0f6ca17cd1b4186a84b527d6 fix(agents): bound streaming error-response body reads fe9227ee2cbf06724e228f9941a2aca2244a8d78 docs(gemini): label google-gemini-cli as paid Code Assist only after consumer sunset 84e1d31e5442eeff0bfcf1c2ffab6acf7fe95f45 refactor(kanban): fold worker/orchestrator skills into injected guidance (#50473) d7e24cc534dee990ccf15bcd534e5177ea60aef0 Port from nearai/ironclaw#5029: graceful char-budget truncation for read_file e5e25836350a7041e58bb4ecfd55cba893630df4 fix(desktop): relaunch on Linux after in-app update instead of hanging (#45205) 1f6994d1ee54160a2bb68121bdccae1b37743910 chore(release): add AUTHOR_MAP entry for #45205 salvage (EtherAura) 1ec4fcf6140178015549838d597b100fdd5c9c13 Merge pull request #50466 from NousResearch/bb/composer-popout-bounds 13ce8119067ead38cde7ec262f265af6f1c1551f fix: show desktop approval fallback (#46548) 84fcbbf6a93cc7441a50b68abf97a80ff4a96ad1 fix(security): quote HERMES_TIMEZONE in remote code execution to prevent shell injection bef1d3e4ff6aaf8b6143ce66d7a5e6169a08a86f fix(desktop): filter undefined entries in AttachmentList to prevent refText crash on session switch (#49624) 16aeba17078d5470f21eedb504142554169e748c fix(desktop): clamp composer peel-off under cursor c768c4b71c72a6fd90ab6fd8811da5d69d966e83 fix(antigravity): move model flow to model_setup_flows + stop bare-alias hijack 37c37c9dc51118b75bbd3eec9b689e540683a13a fix(antigravity): register google-antigravity ProviderProfile + AUTHOR_MAP b7a912ea45f593c64f0c9517aaea5572f3da5458 fix(antigravity): bake in public OAuth client + default project fallback 8baa4e9976db8a12b0efcef9351adefc7f6cbb64 feat(cli): add native Antigravity OAuth provider 29176ffecfe89434cda5353a9a80194ec19c13e8 test(gateway): cover no eager platform install on startup sweep 242ec45f456ebfc0f5e4a67e49ccde3863e2167a fix(gateway): don't lazy-install SDKs for unconfigured platforms on startup 8fcb8136bb67d432b41833c08fe646ce2f09ea64 fix(security): harden smart approval guard against prompt injection c11ae8261b67e87dd38890663d3933dc630e1bc1 fix(codex): seed app-server sessions with configured cwd 7785655b4ece4deb7e8bbeeaa2a6a8342746d465 fix(desktop): keep the floating composer in-bounds so it can't be lost off-screen 745c4db235bdb09beb19564f66727dc1f43e4fe2 feat(desktop/windows): show update-in-progress feedback before the desktop exits (#50419) (#50448) 624580e8363f5dcd5903a01d483d6f006f5be9d9 fix(browser): verify daemon identity before orphan reaper kills a PID (#14073) 4d4ba0831ef2f5315c166c65eef3d0ffb6f29a5b refactor(session): simplify traversal guard to a helper + logger, harden non-leading separators aa2aac68b004fbef7ba7ea9c2abd4e1bcea670f8 fix(V-009): reject Windows drive-letter paths in session field validation 3a6a43cb818ab597ac3edf73a59a0b00a47a9a3a fix(V-009): reject path traversal in SessionEntry.from_dict and harden _ensure_loaded c8eb7cf843507dae78443bbd2ceabb2531fd082b fix: V-009 security vulnerability bb59075b25c0785b10c2b22c4e9e7a37e03a6e89 Merge pull request #50398 from helix4u/fix/windows-npm-path-fallback 6f0ecf37dad0bcb989ea6139def524e6f0304d55 fix(redact): mask all Authorization schemes and x-api-key style headers 87ab37338150183f3187e93afb49aab108f8a9cd test(url-safety): cover IPv6 scope-ID strip + fail-closed in URL guards ed966696eb335a91766d2819c15883dde02ef317 fix(security): handle IPv6 scope IDs in URL safety checks to prevent bypass b5b8a4cd56cb75a563d8b40d998676b695748e64 fix(gateway): respect adapter decline of fresh-final to prevent double delivery f79e0a7060d0303f4f248d2e03b101909748e781 fix(email): mark missing-config as non-retryable + reject blank env vars (#40715) e921c4f826a62563a2f6bf1db6f0be134b52466d chore(release): map devorun salvage author email b7f6cb9c8ba393149de816de619b3506b73c56a0 fix(email): resolve IMAP/SMTP host from config and validate before connecting 4cff0360eab3e39b99eed845ab36c07884aee804 test(approval): regression for interrupt-unblocks-approval; AUTHOR_MAP a9c8025984272391fd970e3bc16397b1f4e275f7 fix(approval): honor interrupt in blocking gateway approval wait (#8697) 824c9d3812be6603fd4106113d912cc146ac1802 fix(config): alias model.api_base -> model.base_url for custom providers (#50385) bb77a8b0d55be158ec8a93a5f892ff62d468ce52 fix(gateway): respawn unmapped Windows gateways after update (#50090) (#50373) 99f3072aa06ac9a858ea5f1a753a801c15d76d5e fix(model-switch): a failed in-place swap must be a no-op, not a dead session (#50375) ed3d12a762525a150202dfd3d4bf107b1097c3a9 fix(security): fail-closed when WebSocket peer is empty in loopback mode a4b1554c7349bc730edd2cd8a252489b843a70a1 fix(whatsapp): normalize bare phone targets to JIDs before bridge send f72690825e76fd205b3f475bdac75643e42bcf49 fix(desktop/windows): stop in-app update from cascading into a backend restart loop (#50381) 09a96ba0f6ee68d701bd7c4fc2b2518a83b37c62 fix(gateway): pause Telegram typing before stream finalize 6902eb3913e9390101237e80eb31f37220cafca6 fix(cli): make ZIP-update directory replace atomic so it can't delete ui-tui db097fb088326cd4c9132205f4dbfa9fbdc7f5d2 fix(cli): auto-restore a deleted ui-tui workspace from git before TUI launch 537ad9ea9a7857b22d9ff518236d089a864eee0f fix(cli): guard missing ui-tui workspace before TUI launch 5b45fb269a06e4cc8a366bc7701c5897dc51935f fix(security): sanitize kanban markdown html 7502d38bf9ce6eeb86a17a0906a4fadf439c39d4 fix(windows): prefer cmd npm shim on PATH fallback 8e4d2fd23fb27a665c73b36db3ccb8dbeab25440 docs(plugins): document acting from hooks via ctx.profile_name + dispatch_tool (#50352) b6f03ab8911c1338057ccd69198873a9650fd014 docs(ui-tui): add billing.step_up.verification event + perfPane.tsx to README d7737bfd972faad4db38aa0f1b1b0eedeb548075 docs(ui-tui): fix file paths, add billing command, update file map d164ed0326e3eae4b1939c5a4b83b05891888866 fix(kanban): make reclaim claim-lock-aware to stop task/run status desync (#50366) 87615f47b941cf945aae3c3d3adafe67a4956ea8 test(backup): add regression tests for restore_quick_snapshot path traversal ae4669990531bf5536b60d1e84cfca7b9643728b fix(security): validate snapshot_id and file paths in restore_quick_snapshot to prevent path traversal 1f4c5aed6dcbfa9d2bb532dc30b23d0513d37a74 fix(kanban): honor kanban.auto_decompose toggle live, without a gateway restart (#50358) 84ba83b09ad1f480dbf4186ec7812798853eeac9 fix(kanban): bound the cross-process init lock so connect() can't hang forever (#50353) 9630ec6c19e6b060ad16e5cc6ae00c4f3ecba776 fix(kanban): pin worker TERMINAL_CWD to the task workspace (#50348) b6d107240819c82b20a446b9837da237bc8b8c1c fix(cli): branch new worktrees from the fresh remote tip, not stale local HEAD (#50355) e217fd42e269de8c31e5e6205d32086eacb23f00 feat(kanban): add task lifecycle plugin hooks (claimed/completed/blocked) (#50349) 9d883ac90e3e0955b3fe5b7c6321dac6c14dd560 feat(plugins): add ctx.profile_name for session-agnostic profile access (#50346) 7d9f6a24f55eb8b466d8e986f115e54b8233d1cc chore(release): add AUTHOR_MAP entry for #48678 salvage 565b7c8d9d879c6423c55e9be84596936bc489ba fix(telegram): stop typing indicator lingering after final reply c0409a87ff05f68fe8b0398f103b2d026a06a4cf feat(gateway): typed send-error classification (SendResult.error_kind) (#50342) 6bbacc2238997718026c7868f4b76092fe602ed8 fix(desktop): make cold-start port-announcement deadline tolerant e580706d4dc62a5ba2e8a1978fd9a9d3f6324d34 test(web_server): add integration tests for desktop boot handshake fix 475e81dab4d8cd551df332fc4b56ed39ebfac2f7 fix(web_server): use run_in_executor for gateway pre-warm and drain-timeout 5e3e89cc05d32f8affa419e3915a5798d7ff9eee feat(hindsight): configurable embedded daemon health grace timeout (#50341) def3f6388f8a8a1c8e4e9ff415a4e6a9b8fdd626 fix(file): anchor device symlink guard to task cwd e267237671bfdce75845fc7423fb9ad23ec430a5 test(photon): cover overflow retry, typing cooldown, sidecar-crash detection 9578e52795e35f8373fb43e9b5457beb8f279f71 fix(photon): detect unexpected sidecar death and trigger reconnect 2a4542333ee107bbb5b9e434574347334f239258 fix(photon): classify Envoy overflow errors as retryable; add typing cooldown 7a131f7f4092d887523cd09171cd7c0a9b9bb4cc fix(api-server): stop silently promising async delivery on stateless HTTP path (#50319) 56255f83f761348e68ecad9c80b0874815ef392a fix(agent): stop delegate cascade from deleting the parent session e581740aa1e8228b026b644048766873681c0bb2 fix(kanban): single-writer dispatch lock to prevent orphan-dispatcher DB corruption (#50331) 587b5b9ac2232123e84b2c0272bf95fb0001c0c9 fix(backup): capture memory-provider state stored outside HERMES_HOME (#50325) 7a8c4fe238f9d984755c393e7e141a7e8f253097 chore(release): add AUTHOR_MAP entry for #48422 salvage 6183e8ce1b5ee79f2d808d0c17ea46fbbf128c37 fix(telegram): make Bot API 10.1 rich messages opt-in (default off) 3b56d3a29ad9a7fffe69718ada29f1974d93827e fix(security): redact secrets in kanban tool payloads before persistence d19aabbf2dc547cc622740d9e0e4e8163b251559 fix(gateway): persist in-flight transcript on restart/shutdown drain timeout (#50312) 93ea9b04aff2f1992b31b86a267303fecc227995 fix(gateway): cap inbound media download size to prevent memory exhaustion 16899ae144f63c27f3b5334bb815206ddb986c44 test(file): update guard assertions for unified display-text message 71274f264b0007bf697977c59fb074fadaaadffe fix(file): reject read_file line-numbered writeback a18bae65b936eb72d886b27aa1a033a824054eea fix(config): redact api_key in config show/set output (#50245) (#50313) e0498bd3051e29d21e442f2abfbd5eb3bf7ffabd fix(bedrock): price Claude prompt-cache tokens in /usage (#50307) 7bc6f1806284c98c1a2f4fd32fdb19a9dfc2af06 fix(hindsight): skip local_embedded daemon when running as root d0de4601d204d13c68f76fa2ed5fb99d841048fc fix(tui): /compress shows a before/after summary (#46686) 9e4fe32d36fc84dd86f4d326d9de4db1e82739c6 fix(session): opt the background-review fork out of session finalization b17180d950b4236bd5c4c148525472d95f1c5b12 fix(session): finalize owned SQLite session rows on AIAgent.close() 41e0c10f7e7d8d03de40c808568234df1a349c29 fix(agent): route repeated-compression warning through _emit_status (#36908) 3e354b61dbe7ae0870efcf0158bb0bb3c9538eeb fix(agent): preserve copilot routed headers b6a4638b6dd7dcdbf200b0b49645e8e1f73a54df fix(compressor): treat empty-content summary response as failure, not an empty summary (#50297) 296b290f8f3c4e890f90b300a1d11793fc9c3e94 chore(release): add AUTHOR_MAP entry for de1tydev (#10158) 41ba90f81459f169e05fc6f092853ea36963b7a2 fix(process): keep CLI drain dedup after poll goes read-only (#10156) 6f5f58e34b834331061fea2bb918596a4bedda3a fix: keep poll read-only for notify_on_complete watcher 9078b4bbdfa79f4e71f9478208211c078e68ce92 fix(file): harden read_file device alias blocking ea056b05598cab8330555defe095988c3a7928f9 fix(telegram): avoid rich messages for CJK text 65a477f12e3581fb1771019672385ce011a94929 feat(desktop): add Update now button to About panel (#50186) 2f4f23fbfb541246d08ecbadafe95facbae4ecc9 fix(codex): bridge app-server item/started events to Telegram tool-progress (#38835) 8a506ed3ac89dcc5936316f65e2034ae1302aa54 fix(auth): make load_pool() non-destructive for env-seeded credentials a9669323922f6e79482536f2c05846c354571528 fix(telegram): exempt tables from rich newline hard-breaks 31e59fe44d18498ae53f624a3d3d5dbbad2d165e fix(telegram): preserve newlines in rich slash-command output (#46070) 03563dabacc144713f9c0827d6045b7a88f13efc fix(gateway): raise session-hygiene hard message limit 400 → 5000 (#50194) ed81f0b633c7c2ee9526b63be34fe0e5b13ab701 fix(desktop): log session.title RPC failure before REST fallback 7f43378931f3f3ed619588ba50d08779c82ea1eb test(desktop): cover renameSessionPreferringRpc routing 0e47f68a479aa4de70f588b6bf40f3f5ac3470e0 fix(desktop): rename branched session via session.title RPC 3509be71242cbd788de2f08fb2b5c2728d4abcbd fix(compression): auto-compression triggers at minimum context length (#14690) c6a0929875a80eff77c5cb8ed298c9e0ac855c3a Merge pull request #50137 from NousResearch/fix/reset-calibration-on-model-switch ed8f7898b91b637454be66b619198395b4966a05 Merge pull request #50136 from NousResearch/fix/context-aware-tool-budget fb3d31ba8b772bbca130f829423df7e61afd7820 feat(desktop): add Update now button to About panel 6984026f12c894e1d6ef8d7e661cb24109d2dce2 fix(browser): enable SSRF guard when terminal runs in container c7e8854cb383176e04be8317e9198131e011d1d8 fix(tui): persist session messages on force-quit / signal shutdown e499d69e3eed4b7fc5b90edc5844ff9ddfa84f2e feat(api-server): configurable concurrent-run cap to prevent DoS (#50007) 99233faf780791af28a2ad709ea571ae2cf21c30 fix(cli): persist sessions before shutdown 9f67ba1b0182db31c0bcd08718f681a074373c16 fix(agent): guard finalize_turn cleanup chain so it never drops the response (#50009) 796f618f9987306722c4e27fdfb757291240386b fix(telegram): keep chunk markers outside code fences 1e0b3a2bcce62d2bba52c4ddb1fce0bbf822a2da fix(agent): reset stale token calibration on model switch (#23767) 1965d562197016e4e3109b483bd0a8761fada640 fix(agent): scale tool-output budget to the model context window (#23767) 5aec00f7a908b948a547c88675176dd5c02cc195 Merge pull request #50131 from kshitijk4poor/salvage/gateway-busy-readout-50103 4d7bb382b08d1d3b6a3e70869a6ffcc143efebde refactor(gateway): route all active_agents coercion through parse_active_agents; harden drain-timeout fallback b577f25100c64d438cc90c78376ebcbde937950f refactor(gateway): dedupe drain-timeout resolution + share active_agents parse 0ee75469d7c66e04983083740033f6d38feba113 feat(dashboard): surface gateway busy/drainable on /api/status 51a338a1b6ca267f7efc474621d0691488f7e620 feat(gateway): track active_agents in runtime status on turn boundaries 55ac5c026c60e0a5783424be2bc465d1c05b68be chore(release): add mohamedorigami-jpg to AUTHOR_MAP a5c09fd176627cce350ef1b30dcd8528f9e7c775 fix(cron): anchor cron storage at the default root home (not the active profile) 44d552ea5af345b438ee3f5f7a4be3957d4ff47e Merge pull request #50115 from NousResearch/salvage/model-switch-preflight-warning dd042fc4dfb10d03dbf0b4ec95bc239ec4a6d4cc fix(tools): preserve core tools when a platform bundle is disabled 1ca29723f0ea58ef73df68e8ab10e77cc4946635 fix(cli): log instead of swallow preflight-warning errors; consistent TUI warning field 04730f32e7e836fb3b227caed3fcbea7e2985083 fix(cli): warn when in-session model switch will preflight-compress 34631885124c0ae4df95890e021891ad31a91df3 fix(auth): honor anthropic credential pool oauth 7b9a0b315bf92e0654d76846d281bed6e52def1f test(mcp): cover 'unknown method' ping keepalive fallback (#50028) 472c0681594ccd137666fc2b87f4913d2e6cc5b0 fix(mcp): detect 'unknown method' phrasing in ping keepalive fallback 8ca38d31213ab69032ff1750d569073dc0a848ec Merge pull request #50100 from kshitijk4poor/salvage/model-visibility-cross-provider-47450 8b52b52b2aa02621e7be6cfcd9ceabcb513ca791 feat(dashboard): surface gateway busy/drainable on /api/status 4a10233e1626e930deff912e98d14352782975e4 feat(gateway): track active_agents in runtime status on turn boundaries 461fcc096479f548a1990fe26f329649fe40c371 test(desktop): harden model-visibility toggle + dedupe default expansion 8666fd7635bab1f66d82d180e5afffa89a57e8ba fix(desktop): preserve other providers' hide-all in model visibility dialog 6777a6bd67ccabd92455845736b17150a96c6a14 fix(cron): run missed-grace jobs once instead of deferring forever f57ff7aef1d3d447e159511f3a3e9ed8ae0c7298 Merge pull request #50034 from NousResearch/salvage/cron-tz-offset-repair f6a504d088db990f188ee442a5ce1b42df589497 Merge pull request #50025 from NousResearch/salvage/cron-run-immediate 3051a1634c23a8d9e13247c7ce2f82042fad3ffb Merge pull request #50023 from NousResearch/salvage/f3b-telegram-dmtopic f43c61643d3e95b1aaab024d1ede5e2b5cbab378 chore(release): add devsart95 to AUTHOR_MAP 4cc28aa3bbb83a974a3dc311909ce45a0726fb41 fix(cron): route Telegram DM-topic cron delivery through DeliveryRouter (#22773) f1f36b3bae2e1cfe96999e44689b41d3fd570f29 fix(cron): repair migrated cron timezone offsets to prevent double-fire 02a3288de330267f405c3e737e2b7901a2b37d1b Merge pull request #50018 from NousResearch/salvage/f3a-delivery-confirm 65d7c7fafdf1719fc71ea35466b5c42a6ab1bf15 fix(cron): execute job immediately on action='run' 9f4c0b27c9c483b517d965651309630c51e6e481 Merge pull request #50016 from NousResearch/salvage/cron-ticker-liveness d6cb69a7a90b22b1a3135413cbffeb332de77eb6 chore: add sweetcornna to AUTHOR_MAP 07424da76f60ce1efee5239e9d324a3069873494 fix(cron): keep ticker alive on BaseException + heartbeat-aware status d54890870ffd50a596b1ba0272bc05889e3e35c7 fix(cron): make live-adapter delivery confirmation reliable (#38922, #47056, #43014) 35752fc3a540b16623601e086560bcf64b6351d0 chore: add szzhoujiarui-sketch and rayjun to AUTHOR_MAP 73b92264ee08cc25dfee3b8854ce0c94f6534a5b fix(cron): resolve model.default + fail fast on missing model 14ef6312b5ccab71799620ef76ac0d4335b535ae fix(compression): decay protect_first_n so early turns don't fossilize (#11996) c6bf6bda90a2bba718f94dc8fc69dcaf7828819e fix(memory): recover from missing old_text on single-op replace/remove (#49997) d5f0e737d9078a5a7974537b3beb1dd0b9b94489 chore(release): add AUTHOR_MAP entry for #49544 salvage c1f11f8c69f9721a4b5227231a6ff23a91826f76 fix(telegram): index streamed rich finals via editMessageText too 29e5e127c6f1c35fcc67abf0281c50c237e2929f fix(telegram): recover reply text from native rich echo fcdefb4181db22da0796c1ac0969542ebac0263b chore(release): add AUTHOR_MAP entries for docs PR salvage cluster 2 2008a96b2054e3c9698d43a6fa6417de9742d1e9 docs: align contributor test checklist with wrapper 72e4cca00ecc2a1d9bdef95575bb2c779a87150c docs(config): correct MCP docs path in cli-config.yaml.example b1ab5a8ae1d93d863ce3418f7abdb4fc8fee2c1d docs(antigravity-cli): add delegation patterns + output/bounding caveats 9f507a0aa3b1987652e37a7d35355a724d1a1852 docs: remove file tools TBD placeholder 225dcf855c47d9a161d15bdb785a183bd924c1f1 docs(.env.example): add HF_BASE_URL placeholder 85f108ef039c601c283f9558cd28a97271339ce5 test(cron): document consent-first self-learning suggestions bc85f6150e4f92f49dc2de16caf74e79087ed670 docs: document per-event extra keys in shell-hook wire protocol c02648c5dddc334d29df97fe853d71af662cea0e fix(docs): align slash-command and docker docs 98ecd0beeba9f4f1b62df73b9c6e03dd4126f3d2 docs(mcp): fix stale ~0.75s discovery-wait reference in late-refresh docstring b337afdf6e2fdb586a40def480e9f02d594d0a78 docs(cli): fix broken terminal-backend guide link in setup wizard defeda8c559f47b9d29cb3a7b5d8e3c1984e1552 docs: sync documentation with current implementation 95d970a7521c8fe1244544b666bf05a0f43fadbd docs: sharpen software-development skills 74b5cc7ca49f3f710277f75c5fe6c91c0dc5f2e5 docs(spotify): document 6-month re-auth cycle and add client-level invalid_grant test 9bd5003d4fa455eea0e46f5e73af0cd731a417e5 fix(spotify): quarantine dead tokens on terminal refresh failure 242962e1f5a0d2a29db7683c01de907369eb2145 docs(providers): clarify vllm qwen reasoning output fe5c8d2316b81343e7d97c9532a2ccc6a1e24de0 fix(docs): document curl, xz-utils, and g++ as Linux prerequisites fa53e36438e0cbab92365f5a37a78433b2332a3b docs(hooks): document manual shell hook allowlisting f80088f035de303d6e8c1e59764d2008571ca01a docs: add missing Prerequisites/How to Run sections to SKILL.md template eec9c1d84ebdfd5117de0084c0b1c7bcc3ba4cb3 docs(agents): clarify background delegation durability 063155e23470bcb50b5a862ef61a61904130dfec docs(hooks): document subagent_start plugin hook df4015bbc176535e9bf58d5541186563365a2275 docs: session lifecycle documentation 2609bcccca305046ea90da1f44c20d0b607635c6 feat(i18n): add complete Spanish translation 38756f2d553ca8bade0f5bb4631f50f270eadd3a docs(docker): document gateway tool-loop hard stops cc30e0b659d47cc449b8e8df0129715973d445b6 docs(config): document auxiliary task fallback_chain 5eb158e3173dee2c07e1458dc972b7aa95083196 docs(hermes-agent skill): document project context files and their discovery rules 97563ab821273d9e94ed181ec56e8775703dc10f fix: warn on line-oriented newline search patterns eb9a0022844ec59f855a2ca5285c77996dc44ff0 docs: clarify search_files newline regex behavior 6403ed06b37e911a5e47fbdd37e137415ae54c65 docs(session-search): document source-first retrieval limits 1eb2959309d8aa2469fc0538da8ba280e7b35611 docs(.env.example): add missing ELEVENLABS_API_KEY placeholder 46cc0345ae8ac2972dc9052bea4a3154013ac00a docs(skills): add hermes-agent verification rule 8ac5e90ec2d572fcba9b68195e9c9dbbd42e1d09 fix(gateway): dedup image_generate media across the compression boundary 1f874dfe4467f1d74ac6dbcb585b075100f6c576 fix(compression): stop fallback summary triplicating the latest user ask 2f3177adf46d125cd5a2e6613b14ab72938deb9e fix(compression): protect the summary call from mid-flight interrupts 4b7f9a4d304833f9af14c93466b7312b1cd35ff1 test(matrix): make voice-detection tests hermetic against mention gating (#49946) 4c349e85f8e88acb5f970705a3fd16a469d76d25 fix(gateway): preserve transcript when hygiene auto-compress can't rotate 79f297834a9b08ad75d1f2babc55513ae2a7baed fix(gateway): widen cron namespace-collision fix to all migrated adapters 4c206b972d49cdfdb936ff5ae25198da98c70b97 fix(gateway): correct sys.path insertion in plugins to prevent cron namespace collision (#49410) e5e173eefd4f03479846d445905bc5429272e148 chore(release): add AUTHOR_MAP entries for docs PR salvage cluster 5d05415292d10a83d707cd5659cb0d809a704f94 Expand .gitignore example 094d9cba6c802389dda70c506b4ecea29a500026 Update docs to clarify requirement for gitignore a9602d27e7c7a4706b8efc8c20a3cc93be7117fc docs(skill): document context_length auto-detection resolution chain abfbd618bd682670304573bce9570f76887e0447 fix(docs): regenerate skill docs to fix stale cross-links, add tool-search to sidebar e1a717a6d81d5c5dad1347f7403cf8a547c6af21 docs: add Open Scaffold MCP workflow f6275a59e790477092e6c70b06ba4a5d1d882615 docs(contributing): add "search first" guidance to cut duplicate PRs 9e4348f28ac114c3f88d68e2df1fb915f1c2d3b9 docs(windows): document uv.exe AV false positive 2b08a4295a650d27fc354573ef2dde87dd211103 docs(README.zh-CN): update Windows install from 'not supported' to native PowerShell 31bdb60013c98d033dac3c0475be6e24773b5bf9 docs(skills): fix himalaya CLI arg order and download flag 4711936a3bb84d74bf77eb2340f7f61fc0d36331 fix(docs): remove non-existent conversation_entity setting from homeassistant troubleshooting 7ace96ba40ef9a3caf58cec846eb32b1cc1a281a fix(compression): preserve goal, platform, and session indexing across rotation b4b512c5079b3a811f7a1f0010cc843c492b0f82 test(gateway): assert queued outcome, not merge_pending_message_event call c11c510b42c6e686806fca9497b85dc73f6671bd fix(gateway): FIFO busy-mode text follow-ups instead of newline-merging them 170ef24c8f3b9b776e6112c964a8641fd7d3f428 fix(doctor): audit WhatsApp bridge at its resolved (HERMES_HOME) dir (#49890) 67523fae7c4dbf09dae64074b12550642539a656 test(web_server): make profile-wrapper alias test OS-aware 15cfc2836fd9152e8ddcbf161c40d24fbc528224 fix(kanban): anchor no-path worktree tasks on board default_workdir d79f67fda6557800d35b478d3e0197ab0be5913e fix(kanban): materialize and reuse linked worktrees for worktree tasks 37fa3c58b40e240974c0b3d1eb9e8f78d53892b1 docs(kanban-worker): document kanban_complete artifacts deliverable param (#49854) 2213ea9fa73ab06cf667c1bfb1e99c8de3541589 test(whatsapp): cover read-only bridge dir mirror; add author map 491579fa05eff16767dd25ca6c29e755b1141fd9 fix(whatsapp): resolve bridge dir with HERMES_HOME mirror in Docker 0a2b712965c629483ec31f8dc1a4a7ebe117aca2 test(chat-completions): cover timestamp strip + add AUTHOR_MAP entry 4467c22c8f097cce5b670e81852d69bfbb6aadea fix(chat-completions): strip timestamp from messages before sending to strict providers ac83365d9602d4a2d4dfd79f221432e599ef95f9 fix(install): expand 8.3 short %TEMP% so Windows Node/Electron stages don't abort e74033b39bc1b9640f8a21f9416631dab5312559 test(install): add ConvertTo-LongPath helper for 8.3 short paths 6fd839ac84d0c5032977271e8b2b57a2539dbd4f docs(pets): feature guide, petdex skill + catalog 86b990fe0fac40a54294fa0b5d02c8e055bc36ec feat(desktop): floating pet, pop-out overlay + Cmd+K picker 75b36a138f43f2201b276a3c5d59f2aae0383fef feat(pets): TUI pet pane, picker + gateway RPCs 83aa84ae3b00ba5f2923dad2194a491f6bab6888 feat(pets): CLI pet pane + /pet command e7dbfdaad7b1bb45cd9eb9c09a03c0213c65320d feat(pets): pet engine + display.pet config 5a53e0f0f487d3d383e2a7b2eae8f260e9bf1090 fix(compression): abort on auth failure instead of rotating into a degraded session f22dd8a75ac0f7c2f78a3174cdf89bc915ac30c5 fix(agent): fail over to fallback provider on persistent auth failure (401/403) ea8a8b4af8612b655a5bbfc74eba21e1e806758d feat(delegation): background fan-out — parallel subagents, one consolidated return (#49734) 680732c104a80504e95085b4272794792bb89721 fix(gateway): never interrupt a busy session with an internal completion event (#49738) 69716a2e6f7cb101ea52a350df6f9dce92cb89a5 docs(compression): fix stale 'discarded' wording on in_place config flag 854d75723f7711e9d6afb65184c8a50e1e18275f fix(compression): keep compaction-archived turns discoverable in session_search 4663456996388e1814dbccb5b535dbfd4d8c8d32 fix(compression): in-place compaction is non-destructive (soft-archive, not delete) 4f9485a95dc555aaa2ff32e9ca0969b663c7134e refactor(compression): tidy in-place compaction path (simplify pass) 1fbf48d4ad827253a5637b0444a00beb38e22b2f fix(compression): make in-place compaction durable + rotation-independent end-to-end 47fadc24d79c1ff21b23518c0e27aaa3146a421d feat(compression): in-place compaction option that keeps one session id (#38763) 37a4dd49820c1b409f17861a849725acfca6d1c3 fix(auth): heal poisoned Nous inference URL on refresh instead of retaining it 92d40c2553961243991376bf889d833e8326caf7 chore(release): add IamSanchoPanza to AUTHOR_MAP c884ff64eaab0b5002e9bb703a9d3075b8dd8387 fix(agent): keep system-prompt model identity in sync across provider failover 11c6f4c7bc0c08e8805097f49bec6cfb72040ff8 feat(setup): Blank Slate setup mode — minimal agent, opt in to everything (#36733) 838daca9f4cf1da1469a991541e706261f68a095 chore(desktop): format tooltip indentation + author map for #49697 404fe730b7a247da40b1707b9887fbb1fb58eb0d fix: add tooltips to right sidebar header buttons c32927948269daf15ddd75fd362f00b20bdbef65 test: retarget source-path refs to migrated plugin paths 5600105478ffde29d7566b45421b100eaa29c4ef refactor(gateway): migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled plugins 2ab09a6c50836d8cc407e4957c828161d0bbd81b Merge pull request #49680 from NousResearch/fix/signal-quote-cache-eviction 26d9a3c710c365c29b0543f504a1fe32f72b88b2 fix(signal): FIFO-evict the quote-detection timestamp cache 85ad7c9b0af67d4adfd2ea819535bf5ee9340b19 Merge pull request #49678 from NousResearch/salvage/signal-echo-ring e49272fe53ac13863318c3ea3f18ef885747aa15 chore(release): map w31rdm4ch1nZ contributor email to GitHub login 2f86283217c610be9a4051823ec6ca59cdf81aea test(signal): update echo-discard test for OrderedDict ring 332f88f6a661998a078abc6e9d1ced64e6f2d080 fix(signal): harden recently-sent echo ring with LRU + TTL b20c67150a50ca433e8daf28356e106d53a3f480 On main: hermes-update-autostash-20260620-121221 84440f66f60c6e59dfc574011013a1b5c6813071 index on main: b4170f3ac fix(cron): don't strict-scan script-injected output in no-skills jobs (#43223) 1bed946c6981b9d38b997b186109e11af030dc20 untracked files on main: b4170f3ac fix(cron): don't strict-scan script-injected output in no-skills jobs (#43223) b88d0007c9d0037a1ec3daa2477bd4f79eaf566b Merge pull request #49583 from NousResearch/salvage/signal-mention-typing 32a97a20af025a05621c4961c4bd7dbbe5af5299 fix(signal): strip self-mention in all groups, not just require_mention ef7e716930a2216eb971011443741c0dbd100aa5 chore(release): map rratmansky contributor email to GitHub login 40b6ac9ac73b68c9e8133df9bc31d70cc83e172e fix(signal): send explicit stop-typing RPC when cancelling indicator 96b10327b663629ea7ee1bbd1b5c7d11079efb83 fix(signal): strip bot self-mention from group messages before agent dispatch 65561e9de676494adb5520df819431a4f20bf925 Merge pull request #49563 from NousResearch/salvage/signal-quote-history 96db7c688350513f4f54b2cb54d06286e62b2dee fix(signal): preserve quoted reply context ff50a8861703c09c0805a0b7cdb199a6b6a3eb7c Merge pull request #49558 from NousResearch/salvage/env-var-guards-48735 834bbae895f64b9c7967e7d2b12afbfef4e1ec12 Merge pull request #49530 from NousResearch/salvage/signal-trio 467c879b2e594c7112cbfa5ce67771dcdcd02cb3 chore(release): map lkz-de contributor email to GitHub login a7dd98c8609c0d944e3c5dd0c5b9ee31dd99eb29 fix(env): guard remaining malformed int/float env var casts with utils helpers 7eb9678c54705c913b7c520cc31218e030519d00 test(desktop): cover link-title window audio muting ae8db1ab531bd3fe469a95253688341bd4b0d6f9 fix(desktop): mute hidden link-title window so historical links don't autoplay audio abafba0762fafe0136552da012711173ce87a5d1 refactor(signal): correct STT-fallback comment, type the markdown wrapper, make AAC test portable 06ca1e9980fed6009dc442a9468247fac32e5581 fix(utils): add env_float helper for safe float env var parsing da34fca2bb800417a12bbfced82d97246b065233 fix(signal): detect ADTS AAC voice notes and remux to MP4 905820b59f5a5cae79d8d7ba279da0657e6a4a10 fix(signal): share markdown formatting across send paths 15852722d47b2b50d6815b3831891663076b5865 feat(desktop): pop the composer out into a draggable floating window (#49488) eed78d6ebb51353c93224945f8130b9143da153c fix(desktop): composer popout polish — peel-off placement, panels, chip editing a6f08ff0c8bcb0d97fa333f1c018cba67f21b4a3 docs(delegate): clarify subagent model is config-level, not per-call f697c97e02f0b484d5efdad9ed702269cb1359ba fix(desktop): keep floating composer radius consistent with docked 236f0597e562c2db449e0b38ac15b3dfc20ceb89 feat(desktop): pop the composer out into a draggable floating window c253b073809f75fefa55dcd5bbe41b5faee8ca9c fix(model): clear stale endpoint credentials across switches 95a3affc2e4ea47235b3a54dba8b994a44dcce29 fix(model): keep Nous picker from restoring stale custom keys 1b7b4d138a67dd9a9aa92625cbfeaba4778e68d3 fix(desktop): handle slash exec dispatch payloads (#49358) 857d0244af8498046c9c796e0a82bbc2fef79368 fix(tui): handle dispatch payloads from slash exec (#49337) cf58f1a520b177b88dbf84391eca6bc21e35b6e8 feat(titles): support language-aware title generation (#45296) 8cf7df867e7d18e2a4acd8c91d0cb670ea3c9a20 fix(plugins): silence raft check_fn log spam for users without raft CLI 75ed07ace82a4bc05458ff827f4ce3750af7a323 fix(gateway): break the restart loop at the source on session resume 6504f51cd51a1cefd35b6b47c18ce65dfcd1eac0 chore: add @hakanpak to AUTHOR_MAP for PR #49282 salvage d45addc2f187a03e3c4c6891b28cb91c78a876bb fix(tools): never let a model whitelist strip the prompt / source images 8ebe37f6ad2de723ea87b3568a1ba6698f85eca4 feat(desktop): notify renderer when GPU acceleration is disabled due to remote display 64b21e50fb637a9445cc83ed12cf12a7109b8e34 fix(cli): publish agent ref to cli module so memory on_session_end fires on exit 013f9c875092fbc06f78cc8b77b2d8a9ee208284 fix(memory): log CLI shutdown hook failures c1a0b6a5f1dd6f043be65b46d4c8c11f66d51690 style: strip trailing whitespace in cron scheduler live-adapter block 3a6c171e9ee24faf5181288b32967dc6d0375d07 fix(gateway): log signal transport response and bubble cron live adapter errors 5649b8649a5d735b8edfc91ed3ca87cf8c428e69 Fix silent delivery failures in Signal live adapter (#49260) 8b63a697e09628df5dc1fc779c2e3cc834669ece chore(deps): bump pydantic-settings from 2.13.1 to 2.14.2 1e824166a9443f9ce8b78148283d2235073c6953 chore(deps): bump msgpack from 1.1.2 to 1.2.1 5f55f0ff85f099652dbb5952f5d67588aeac0a2b feat(teams): native send_video/send_voice/send_document attachments (#49308) 1e40b21b2e09b18d21d4ec2c3715397cc7e969b4 docs: clean up three stale comments from the #32848 audit (#45638) d799284b1554f7b390ed27808e0b9af5eb435fef feat(optional-skills/creative-ideation): expand to v2.1.0 method library (#42402) a7983d5ad768551508667e8c708e13def7ee28ab fix(dashboard): hide sidecar sessions from history (#49269) 1a0ef1311c8e65b50ccaad46754c97a089122d81 Merge pull request #49264 from kshitijk4poor/salvage-picker-persist-49176 2099c7b531ced8287f55ef150211e0e92131d060 test(gateway): make picker-persist tests hermetic and parametrized 10fea06c19df7f6e4639043dd9f175b64e0d198d test(gateway): cover inline-keyboard model-picker persistence 2fe78d1ae31c2ae18edf1b97b7d0a1c9e77e9187 fix(gateway): persist inline-keyboard model-picker selections by default 01f581d8d25610c5c22de07f33de8d4a5307e80b Merge pull request #49254 from kshitijk4poor/salvage-windows-managed-node-49239 d4e7dd609da643af19d55b8b3162bbb152d39d5b refactor(windows): tidy managed-node resolver helpers fcc169057d9083d436db7f89640b41fd668eca2f fix(windows): prefer managed npm for hermes update desktop-rebuild gate 7a7b56d49830682d9c7ec1dbbbe2ec9d99b8eff3 fix(windows): prefer managed node for whatsapp and desktop 38f1a923af6e77cad16a4a270c74f79847311c2b fix(gateway): rename the Telegram topic from /title, not only auto-titles 866f1d65c4aa7b8589f03b0810ef24464bf86965 chore(desktop): sync package.json version fallback to 0.17.0 (#49236) 2bd1977d8fad185c9b4be47884f7e87f1add0ce3 chore: release v0.17.0 (2026.6.19) 40722058e532ada70f865317ef3357392d21e5e9 fix(mcp): keep short-TTL HTTP sessions alive with configurable ping keepalive 4c5217b71767a209818e6d0371908c22cb024110 Merge pull request #49207 from kshitijk4poor/fix/cron-script-env-sanitize ba49fb51a585316946bf55ca8ba1734885651ea0 fix(discord): hydrate channel context when replying to a message (#49212) f06508836dd4e5c56ffc14912725c12c6d941291 docs(security): enumerate cron job scripts in §2.3 credential scoping 8dc0b18894e25522d180fe30971a83a58b14f199 refactor(cron): copy os.environ before sanitizing for subprocess 0341eac53dc973e277088f16715b284c53489531 docs(mcp): fix stale ~0.75s discovery-wait reference in late-refresh docstring 16642e2769e2b9ea6490756ef3491384cec9b58b fix(mcp): revert ACP rebuild to original; harden generation guard f3e967aae56a9b568c39677697b32e5091aa1652 fix(mcp): round-3 polish — generation capture adjacency + gateway contract note 88d523220fddcfb42bd4f29e9ace4ae30ebbf1d9 fix(mcp): address adversarial review round 2 (stale-publish race, parity holes) b6e2a54a94f58f9ebafa79f45d45b0ccb2b17043 fix(mcp): address adversarial review round 1 (cache parity, gates, races) 37134838747960e3b5d27a42e872899485fa7e1c fix(mcp): refresh agent tool snapshot between turns (cache-safe late-binding) 93d6e730288e4ffab8076a0539f25e37a71f238f fix(mcp): expose late-connecting MCP tools to the agent (TUI/CLI/gateway) 2d978bf44a7a8126198cd97b43fe8a8deac1af4a test(cron): make env-sanitize probe var deterministic 746c46d610a4b446c65c331d63a99dd22967cbb4 chore: add lgalabru to AUTHOR_MAP for PR #43112 salvage 239740a19e8419e9a7c0b46e2c1c9b2b6cc147a7 feat(tools): MCP elicitation handler with gateway-aware approval routing da7253215d69ceb18ce5756c1fcf25d1e8c473eb fix(cron): sanitize env for job script subprocesses 26e76a75e55e0f6e84e165626eaa0f732a42df53 feat(telegram): opt-in Online/Offline bot status indicator (#49134) 990273d90a772d7b7e9816cdc7435641cb9a0bf9 fix(agent): accept pixel-correct image downscale when bytes grow (#48013) ac00e736884340722b8cbe528edfc3ea1e094e43 feat(dashboard): add a reasoning-effort picker to the chat sidebar (#49141) 4a432255b51ffc5bad7888e493d73b22bc7dd710 fix(mcp): revert ACP rebuild to original; harden generation guard d3260e48c1748ddd81c1bdddd5540eed77a4387f fix(mcp): round-3 polish — generation capture adjacency + gateway contract note fb11967acc4828b9ab110c95d9e38a57a8c719f1 fix(mcp): address adversarial review round 2 (stale-publish race, parity holes) 68a084ac5b9a2326e76876faf9c83850efb8496b fix(mcp): address adversarial review round 1 (cache parity, gates, races) 8348b428a7e5670e04b97ef683277d21cfa237c3 fix(mcp): refresh agent tool snapshot between turns (cache-safe late-binding) 22561b465f35c7a8950056ea64d5a186113447a3 fix(mcp): keep short-TTL HTTP sessions alive with configurable ping keepalive 357fa7a50dce16ef696d81d55d385907a5c6e55e fix(mcp): expose late-connecting MCP tools to the agent (TUI/CLI/gateway) c06898098b865b5a8f48535c08ad9de5459211e4 fix(cli): clear viewport on width-change resize so the status bar can't duplicate (#49120) af0f6856d7c8e8d589b71f8518d240c3e53e7956 chore(deps): bump undici in /plugins/platforms/photon/sidecar b266ad748c088cf5ca2d6e54aead4528ea2fe88d chore(deps): npm audit fix — bump transitive undici to clear advisories (#49113) 0e8b76532e46f9f2e1f110149aef0b3065163de1 fix(desktop): rename "Restart messaging" → "Restart gateway", surface restarts in the statusbar, make logs selectable (#49094) 929dbf7778012fac6e579bd71bb1dbc55090db6e fix(desktop): make rendered logs selectable so they can be copied a1639921ac44841041a78c3c1892e99c7fd1dfbc fix(desktop): offer a Restart gateway action on messaging save/toggle toasts 553cf4f97757984965d4532a74cf17afdbd903b8 feat(desktop): restart the gateway from Cmd+K, with statusbar spinner feedback 6308d3416ab982cd286e078491e4b87f5a83f96c fix(desktop): rename "Restart messaging" -> "Restart gateway" 0d7abd555c37dcda2c7ee6de9a5d9c2752b5cff0 fix(dashboard): sort chat session switcher by most-recent activity (#49104) 1b04e4ede5199102f54393abec8e128ddd994645 fix(cli): status bar no longer stays hidden after resize during idle (#49105) 7d86178cf51aeb879923bc7d7aaf2d3bb7890d8e fix(raft): set stdin=DEVNULL on bridge subprocess 22ccb12c30271a759ca2f92d0d90b849ea2c965c chore(release): map skyzh@mail.build to xxchan for Raft salvage 9026a8c789744993c21d6811530941c72ef8bb4b feat(gateway): add Raft bundled platform plugin with activity hooks 2a5e9d994aeb40de2890eea8ecd4edb663a96986 Merge pull request #48275 from NousResearch/feat/cron-scheduler-provider-chronos 1630737c43f46554b25890a13e996b1daaa197a2 fix(agent): accept pixel-correct image downscale when bytes grow (#48013) 1928aa044373fdbef517e2e6c869a2e45f8c98aa fix(managed-scope): honor managed scope in config→env bridges too b0e47a98f9ed69cf4e292d0d213aff97499a36b5 fix(managed-scope): honor managed scope in all standalone config loaders 732293cf879b11f7f3817aebbf7b4a0f88de4184 fix(managed-scope): apply managed layer in cli.py's standalone config loader 9a24e41d0f6efa0705fd1b451376d5f42130ea93 docs: add managed scope admin guide + cross-link from configuration ddd519ea70d94232e297b287bb69798a43982c63 feat(managed-scope): surface managed scope in config show and doctor 4f9e15df97cf2f33841911112ec7a50643ba88ec feat(managed-scope): guard writes to managed config/env keys 81a663abeab659831b50fa1add8523ee3cdc12b7 feat(managed-scope): apply managed .env last with override b5ddd6e719da5458e9ac78698eaf7a60474d6959 feat(managed-scope): managed config layer wins over user config 9cbcc0c9c89ac4def80816899351f26a737a0a47 feat(managed-scope): add managed_scope module (resolver, loaders, key helpers) bf9a0481fa7039c15ed103ead7143b083e7addbb test(config): pin config/env load behavior before managed scope a58287afcb4e6e5bf96aab3874dca8efb28e087a Merge remote-tracking branch 'origin/main' into pr48275-rebase 35e7ca03d5347c202d9be8be15492f189bf46c93 fix(kanban): treat already-gone worker as terminated, not survived b9e521da23521ae36264285d697f740e0bf31685 fix(kanban): hold reclaim while the worker is still alive 13d4b5fe2f4540464bd2c813889716bb4d63f586 fix(hindsight): align client version to 0.6.1 across all sources 6c44471bfdb8a243200abe7aac44371727fda5ca fix(hindsight): lazy-install cloud client dependency db744e7d1e58b64fdb8dfdb62cdba228081f9eca feat(simplify-code): add risk-tiered application, Chesterton's Fence, slop + silent failure detection ba50e86563cac49a4db2f964607b1cad8eecb358 fix: open dispatcher lock file with explicit utf-8 encoding 226e9322e16d78466aa0e59ff6453712988fc2bc fix(kanban): cross-platform dispatcher lock + explicit release dfa561092a69b611e2ca84881ff0bb96f5360984 fix(kanban): machine-global singleton lock for the embedded dispatcher (#41448) a5e06078b2ecb6201ed5332c88ab9df553d04c97 fix(cron): compact cron failure messages + repair bare repo dirs after git gc 19582087444a21b616c26950c965215ae35a0acd chore(release): add Sahil-SS9 to AUTHOR_MAP for PRs #48466/#44919/#44909/#42209 d7bff949afcb43a94f281bc6023ec07db8fc0726 fix(cli): default cli_refresh_interval to 1.0 to keep status bar alive (#49087) 2dd285f9b32d1aa417ee2de417ba6e83dcbf248e docs(gateway): document multiplexing opt-in + contract changes 1e70df5fdd8fb472ede6233ceb3890337f4e346c feat(gateway): multiplex phase 4 — lifecycle guard + per-profile observability d5d02eabb034b13ba5fa145feb713523143a11ac feat(gateway): multiplex phase 3 — secondary-profile adapter registry + conflict detection f35abb122afb47efdf9ed1f0d46b7c06eab56df4 feat(gateway): multiplex phase 1 — HTTP-inbound /p// routing (webhook) f538470cf4afddb9ae6cc476c4f71b671f5a8420 feat(gateway): multiplex phase 2 — fail-closed profile credential isolation (Workstream A) d82f9fa7f7197b0a7e5246ca42802f96fbb7b734 feat(gateway): multiplex phase 0 — config flag, profile enumeration, profile-stamped session keys 9e1f6161365634e6942e16762f9221ddd148ed80 fix(clarify): docstring — put options in choices[] only, never enumerate in question text df2420f571b32466b376fc77de093e7ec178941e fix(gateway): keep non-Discord home-channel startup send byte-identical caaa916289f2ab9b02049d819523632e05588784 fix(gateway): don't let delayed Discord status messages partition history backfill b936f92b25b4dab55855aba76741a2e4f0d717e1 fix(desktop): render send/prefill directive notices (/goal, /undo) (#49073) e00b96540633e15a8972558033e96dade70804cc feat(tts): add xAI TTS speed and optimize_streaming_latency config knobs 8b7c89bff299fb2701414ec8f52f5a4066b57633 feat(dashboard): session switcher panel on the Chat tab (#49077) 06c7c2577f5afe98ae8284c8abc59a01c9831077 test(desktop): lock generic OAuth status fallthrough for catalog-only providers 1d59d2dcaee34a0896affa11985aa6e995895c06 feat(desktop): resolve OAuth status for catalog-only account providers d91b8d8368bb5cd3bd8d9e3079d93810c32e32d2 test(desktop): make keyVar a typed EnvVarInfo factory ee0de638d719515d679cbda561bf03ee9f298251 feat(desktop): add API-keys search; keep provider lists priority-sorted 8fe7b52ebf3bafe06d1854ac12011340d7f87099 test(desktop): lock GUI⊇`hermes model` provider parity; surface Bedrock 6cb04be779de1809c5f6095d9bc9e0b99344e51e feat(desktop): Keys tab groups by backend provider identity 60dfa0f31b98411e5be857f16400b36664e3d8bd feat(desktop): Accounts tab derives membership from unified provider catalog 3be1326f8d5e2eafb383e9b165ffbd53a265307f feat(desktop): /api/env derives provider key membership from unified catalog 054b8c82fd4c4ed41aaea6ee962fb0818df36ae5 feat: unified provider_catalog() — one source for CLI picker and desktop tabs cb3d9038a745574d19e1e7ae74b81e4cc9ccc169 Fix model picker and autorefresh on change 4128c69799932162f6ad2a930f23899db5f9070e chore: add carlos.dddo to AUTHOR_MAP 8ae6bd082322148820395073aa640a444a9c2c8d test(tts): cover xAI auto speech-tags auxiliary rewrite path 5a506da3d8d4ef27b91768b0599a7d2dcbbc1bb5 feat(tts): add auxiliary-model auto speech tags for xAI fad4b40d9d38573641c7f5de29fa4fc6f66e6d16 fix(model): persist /model switch by default across sessions 1cc915763b0cf9f774837f17acd2a4f20acd731b test(cli): cover cli_refresh_interval default; map salvaged author c1ffd4c3b4cfb8c3daa33594d908d5985825d48b fix(cli): make refresh_interval configurable, default to 0 (disabled) 01a6f11896673764a97fd51a5a36dfc73e8ab0b9 fix(debug): include gui.log (dashboard/TUI/pty/websocket) in hermes debug share ddca590cac5443f72b09039906f41aa259cef004 chore: add Cdddo to AUTHOR_MAP 160bb565b4ec05b89c57808f2b8d425b39591475 feat(tts): expose speaker_id on built-in Piper provider a7b4fbcbc179dd51913f065dc2fe44d862ac5464 fix(tui): guard /update against hosted dashboard mode 9a2f2756f7e6d1ca1b761ad330c6fd2c0b02d95e fix(desktop): allow selecting slash output and shell logs in thread (#49063) 92451151c6429e1d2774c5e7f43269ebcf8c64aa Revert "feat(skills): add html-artifact skill, fold in sketch + architecture-diagram + concept-diagrams (#48899)" 9cd7b8ca474bdfaa7317b7808fd0cc25faf3f492 Merge pull request #48950 from kshitijk4poor/salvage/dashboard-sessions-realtime 94a053abd63b5688a2a4c4c9669b3b59793a3f66 test(desktop): make keyVar a typed EnvVarInfo factory b922d7dfb24f4405148dbdef4f7deea173a53b49 chore(release): add salesondemandio to AUTHOR_MAP for PR #42664 715fa9ea1c8f1e1b49b698ec32a1ba822e5a7ce3 fix(gateway): harden gateway command-line matcher (review findings) b12c0cd9970ba7631d094f20c28f6189d4b065b9 test(windows): run pytest-timeout in thread mode on Windows fd92a3a5c9da0079cea0731bf3adf7bb288caa1e fix(gateway): Windows restart no longer causes a silent outage 144834b2f752262e2017ce5f4090b18c5922f795 test(gateway): real cached-agent max_iterations regression test ca92e9a362503bcb7013233f6b0b5c5e9c23c92b fix(gateway): refresh cached agent max_iterations from current config dcac719527c519f068d7cd6d5230aca64e657201 test(gateway): cover runtime max_turns refresh 460b1e50e515fd9b0b8f472f66f8773336862d88 fix(gateway): refresh max_turns before resolving runtime budget 2c3aebcadccef685c96b8106361abed904a43a26 fix(clarify): unwrap dict choices at the source so every surface gets clean text bce1e36b5769791b8e050a9f174982b2b6a6215a fix(discord): unwrap dict choices + soft-boundary truncate clarify buttons 30c6e4dea9abb5dd8b5fda52671672b360a1655c feat(desktop): add API-keys search; keep provider lists priority-sorted 069011dd0c8f714519d145f4fe46785cfc3fe00b test(desktop): cover runtime->stored notification id resolution f9ffe0bc3f619fc2100bd3e77622090e9c794603 fix(desktop): resume stored session id on notification click ce0ac9bb4d91d2308649f492a7444812091913cc Merge pull request #49000 from kshitijk4poor/salvage/session-title-lineage-48989 d0964c51507f647d04e9787970085d72a3050920 feat(dashboard): log HTTP access + WebSocket lifecycle to the gui surface 8c70346e33e34d204ecf9ef1c29e8d374182d56c refactor(sessions): express compression-ancestor check as one recursive CTE 65d050cf0e94a2c435db4c2f8d46a2952515193e test(sessions): cover title reclaim across a compression lineage 6ad0bc20f53d5fe240cc99ac0a105543aa895818 fix(sessions): let a compression continuation reclaim its base title 46f9d53468cc691d3a15dfe79decc65ce7b50d2d fix(agent): aggregate anthropic aux calls via stream f37bb21ff6a81b79432109c4f628e68d188d06f0 chore(dashboard): wire vitest into npm test script dc5cb0a440d2d5baa1b9e60cc4ea7316cb937250 fix(dashboard): refresh Sessions list in real time when new sessions are created 5e93075fd518be2f28c4ec9dd65393a297c66e4b Merge pull request #48982 from NousResearch/salvage/48965-tmux-fast-echo e52fffb607fe560604d5645f57d84d71d6c8b51e harden(tui): also disable fast-echo for tmux-flavored TERM (SSH-from-tmux) ab8f063814089c17b2a457e3f4041a89e45b042e fix(tui): disable fast-echo bypass inside tmux to prevent cursor drift 5378b941209d8f62a65455041658ce8ce8144cc9 Merge pull request #48966 from kshitijk4poor/chore/authmap-tt-a1i fd27c9087055fbb0504766d22495d2ec5c75405a chore: add tt-a1i to AUTHOR_MAP df4ca2c5ca589e21c590e4c1c082df031931f04b Merge pull request #48953 from kshitijk4poor/salvage/issue-48848 1699525638ed4feba3fd35f0be5c6d4d2d326a49 fix(tui): route pending-input commands via command.dispatch (#48848) db57a1a035b5caaa31cf64347f21d0f448ce9d0b Merge pull request #48941 from kshitijk4poor/salvage-48887-backup-exclude-dirs e738c083360649c0c9ac7b497660b4178c3f665c fix(backup): exclude regeneratable dependency and cache dirs 226ec2801a70f5ae859722252c71195af570941a Merge pull request #48367 from kshitijk4poor/salvage-47289 527a47f2fe7912f959c15bd9502406aad44e23db Merge pull request #48924 from kshitijk4poor/salvage-48894-structured-sync be2c2beb96e578542b24bdb275071044a853ebbd refactor(openviking): name tool_status constants and alias sets 2d4046c6de975eff194d6ebdfa4180e5ed86c422 refactor(openviking): reuse pre-scanned tool_input for pending tool calls 27a6e188c4b4bc66f52b321f055fe18aa866b545 refactor(openviking): derive recall-tool name set from canonical schemas 3ca0ef7e3f68c5a9684d4a7446e46c21b0731e3c fix(nix): hashless npm deps via importNpmLock (#48883) fcac0f94d4844f904a6eaa8a2b667299408b9f92 fix(openviking): guard empty tool_id in batch skip set; reuse env_var_enabled 9362ce2575e00f5a795285b74e79d54c02e1326c feat(skills): add html-artifact skill, fold in sketch + architecture-diagram + concept-diagrams (#48899) 5a856bdfa355bb45330a23ecb63abdf9b810e865 chore(release): add OpenViking contributor attribution 3f0e9849e7a2753931ef32c624cae33a7461e653 refactor(tui): reuse DASHBOARD_TUI_MODE for hosted /exit guard 15e3b64b7538bb0a38e4bfd91d9c8a4f8110ce8f fix(tui): keep hosted dashboard chat alive on exit d7cd0bc0863cda1a203f00422b1441ca2d9890ed fix(openviking): preserve structured sync attribution c7b7f92ec14a5c43deef844804f0bf6a7f2d992d fix(openviking): sync structured turns with tool parts 3485bc72251993ff7fb4d31bb03a64e836901415 Merge pull request #48880 from kshitijk4poor/salvage-48824-slack-allowed-users 1ab6f34791e28559911185b308d8bd1b0be5f393 refactor(dashboard): align Slack allowlist validation with gateway parse 83c034bd5bc855955a825ff4acd1ed11edab6c3d fix(dashboard): accept Slack allow-all wildcard in allowed-users validation d9190491a687d7f29fee5e09c2418d66025e9660 Add Slack setup hints and field validation f741e70791c1c69b501fdb98da80bec3e4d130c0 Add Slack allowed users setup field 6880ee30888c190724161607690a1919163b4d14 chore(deps): bump python-multipart from 0.0.27 to 0.0.31 6278bca0559798b8d814bad5f4b706f2ca9def7a Merge pull request #48259 from NousResearch/fix/ns501-multipart-upload-salvage 12dfcfdf73ed0543617ce0f4779aae8a9acb1e33 fix(tui): restart dashboard chat on idle exit hotkeys a64fc490fe61dfe865e9b189aa5f4c5f1598b285 fix(relay): make hosted gateways actually connect AND complete the inbound/outbound round-trip (#48828) 245b95b09470bb3887943122a7d0de5bf20da055 fix(terminal): block gateway lifecycle commands from inside the gateway process 5e6a0cff10521f15967ee6b665303bbe57655725 fix(managed-scope): honor managed scope in config→env bridges too 637aff46e7581a6e6e04be0f66195e54485f8edb Merge remote-tracking branch 'origin/main' into hermes/hermes-6fe26723 c02192ff6ace129fc9bcc2f8907eabd6eb3f0f1d feat(image-gen): add image-to-image / editing to image_generate (#48705) cfb55de5ea49ef60268bf5a6924e25c1701943ec Update Stripe Projects skill docs (#48673) e4452ffb8a4986343a7b256c3f7469a73fc9fc54 fix(agent): summarize structured provider error messages 620fd59b8e6f235ec2822897f2627bad7df6d071 feat(model-picker): add Refresh Models control to bust stale model cache (#48691) 5ecb2dafad080b573196ee59ee96d9fff97361a8 test(desktop): lock GUI⊇`hermes model` provider parity; surface Bedrock bef6f847fe928efd3c8bb3b38c856d8312efbe0d feat(desktop): Keys tab groups by backend provider identity fd042795092ed898249901abd508af30fe6dad25 feat(desktop): Accounts tab derives membership from unified provider catalog ec3583a16a926486d2bcc75f36ceaf9c06079080 feat(desktop): /api/env derives provider key membership from unified catalog 074f3d5a65a391453bbf4d20089169d4fa1efd46 feat: unified provider_catalog() — one source for CLI picker and desktop tabs 871a7afca4fab65571edc9f16103ace9d2ddeb75 fix(managed-scope): honor managed scope in all standalone config loaders 28d887ca18fdb52e352f5d9b61c9edf455e92a50 Merge pull request #48615 from NousResearch/fix/dashboard-ds-button-api c34840e22e086387e0a1e0d72a50a4c7988b4f81 fix(cron): serve /api/cron/fire on the dashboard app (hosted-agent surface) d06104a9ee163e6369d3870f092de875b2f2ab0c fix(dashboard): resolve chat TUI argv off event loop (#48561) ce2d3bed2aa0681c739dbe89787e383cc8c67d12 feat(gemini): extend x-goog-api-client to TTS path + cite Google requirement 8568988b0157dc744f0e0cfa46f7bd770d98aa89 chore: add JoaoMarcos44 to AUTHOR_MAP e48554a3e0d5bec74e619070c3fd3f03cac52716 feat(cli): lock hermes worktrees so concurrent processes can't clobber them 62c71ebd8f5a57857357c1325dd08d66ca14926f chore(release): map chanyoung.kim@nota.ai -> channkim for #47049 salvage 1d2e359678692204af91bb39677264cda8b9545d fix(cli): surface a visible warning when the session store is unavailable 9ae98e07a7ee7929f8ec3902c545c42d66f10268 fix(agent): rebuild base fts without trigram c10aa5dc9c69e8e2cc03178be4b189844df29965 fix(agent): address review feedback on trigram tokenizer fallback 0403f41f9cc4b3e51d9e58c889bbd669aeabdb48 fix(agent): handle missing trigram tokenizer without disabling FTS5 4437a5dadeca09ed7e2bff1329ae97feca86c8cf feat(gemini): add X-Goog-Api-Client headers for API telemetry 12d930266baad8e957171a8f2ec187a27727273b fix(managed-scope): apply managed layer in cli.py's standalone config loader 2c6e266e8829f9aaff1be4666afdbb05ca15fc6d fix(relay): trigger self-provision on relay-config + NAS token, not is_managed() (#48724) 36851fa576eb4079f0397010f418cafa15a4ab26 fix(docker): support WebUI installs from read-only sources (#48541) eba8cc564ea16a1dfbadf8530caf9aaf0db92ed1 fix(schema): preserve multi-type arrays as anyOf instead of dropping branches d2c53ff5583eca0e5f4009a3fcc28c5da8b17fce feat(relay): WS-only inbound on the gateway adapter (Phase 3) (#48294) e48d18c8e24354101e1fda4d4a072cdb41b89aeb feat(desktop): schema-driven memory-provider config surface 03d9a95a74b234c2d46e0b59cf6e12281f93fbf5 fix(desktop): show Hindsight memory provider (#37546) cbe44bf890796b4c0f0342fb3feedec0c3238dca Merge pull request #48657 from NousResearch/hermes-icons 769f307042d22be2c092249c2d8d78f85fea8e37 fix(npm): lock react-simple-icons to 13.11.1 f1ff8459dbc1135f77c1d113607b80a3f75c81b2 docs(prompt): document platform_hints config override 3ead2bdd0d92083dc11fc49f9260183c2a0d79cd feat(prompt): configurable per-platform system-prompt hint overrides 2944b3c394e3fe56cadbadd073a7fa54b24f3ba5 fix(desktop): make session delete idempotent and id-resolving (#48641) f8d8f045facce40351f8a34421764fe514c49c0b feat(kanban): auto-subscribe calling session on kanban_create 1ea2b279930b80068ac97c9e0c171e071738d141 Merge pull request #48633 from NousResearch/fix/resume-follows-compression-tip c23c370b8b9832a34b4d5d5c39fcdace08dd8f80 test: narrow db._conn before raw SQL so ty stops flagging None-union access 49596b70cb2d0d328d68645905febb074e494e77 fix(gateway): resume follows the compression tip so post-compression replies render 30420455403cee431f2fb5a9e665649aef0efccd fix(picker): keep max_models=0 distinct from unlimited; lock cap semantics 9705e7944ae46401ab9cb011ebd9fbcd5667b981 fix(picker): remove max_models=50 cap in interactive model pickers 4ed2f3399418f2a2fd1d060878bb4b2f17565a87 fix(thread): allow scrolling long user messages in chat history (#48619) 0879d5cc8f3a257e2607936ac1e4aebe7be37220 fix(gateway): preserve original transcript when /compress rotation is skipped 81ff916e575f8ccae4d1aacb0c6dc7bf537820a8 fix(agent): flush un-persisted messages before session rotation (#47202) 82b9c44cbd3e8de0512225d83727197c5e59ae1c fix(notify): restrict OSC to native-rendering terminals; hint osascript perms 73cd8622f9fcd5e368060d1a1678e08bd3d0a794 feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) d573e7c9e1639d7c98c02f3face6f599464f8758 fix(dashboard): use DS Button prefix/size API instead of inline icons b59b1cfb1295a654d4b825760cd51abe14505c20 feat(notify): terminal-native OSC notifications as primary path 437105c7172f0985418564aaf70e247a62a9429f fix(notify): prefer terminal-notifier on macOS for reliable banners c4aeb8a931223909da72b711b339d482211a246b fix(notify): scope sentinel per-session; dedupe consume; tidy eb20289f968df4c23f8a8aee5a5051e67134ded3 feat(cli): add local notify command 81eaedd0f5c471c7ee748990066135a684f3c962 Merge pull request #48533 from NousResearch/hermes/hermes-4061c6a8 51ee5b2c94d01a405041f0f2c1285d879cae7416 fix(desktop,tui): surface self-improvement review summary + honor memory_notifications 07e785d60ae1967ad1d7d901175368d1843d2e61 fix(prompt): dedupe parallel-tool-call steer; correct its rationale 0fa7d6f6609c515b6eaafda0594a1472d11d93b5 fix(desktop): never persist or restore a named custom provider as bare "custom" (#48547) 38c8a9c10fb3680beb6170a604cbec209fcb89a5 feat(memory): batch operations for single-turn memory updates (#48507) 2fa16ec2d2e9e98911ffe6036c1d11c1bc1f7e89 Merge pull request #48529 from kshitijk4poor/salvage-48372-eap fd12e59e6bc97daae914f71cbff11a197387b2dc fix(install): fail fast when uv venv genuinely fails under relaxed EAP c37fdec2d9170cf159011f5477e8cd0fb5c3718a feat(dashboard): surface full per-MCP catalog detail; fix pip-install doc (#48520) 4af16b5da24801858818ccf07a6bdb8027ba3387 Merge pull request #48206 from ehz0ah/fix/openviking-current-api-rebased 5ffbfed193ad13662b9e402f6667f111a7beae63 feat(mcp-catalog): add official Unreal Engine 5.8 MCP server 58ad6942d9bb7c3c6180bd30b51a3f8c4370c716 fix(tui): don't make Enter swallow trailing-space-only slash completions (#48425) 25c590ccd0c82440c27189eabb8a2e4bc2e56d48 fix(skills): refuse SKILLS_DIR root in rmtree guard, not just outside-tree f1254c8eafa453142abd04158e46d6e081e3c63a fix(skills): rmtree scope guard + default pre_update_backup to true (#48200) 41babc702ee27ed2e04a14f7cfdcec764664a9f9 chore(release): map iamlukethedev to AUTHOR_MAP 3c3ac19d9c43a67ded83a306a271250e7a0c87a2 fix(#37878): Address review feedback — fix trailing whitespace and add ANTHROPIC_API_KEY test 2e5c04aaf7678671c24a90101814235086b93ec3 fix(#37878): scrub operator environment before launching cua-driver MCP b39ec2fc37cd38637f4245fb6f5ea081f884b371 Merge pull request #48341 from xxxigm/fix/install-ps1-powershell-host-resolution e60b930447467dbd31bdf5c7d640c3d98717ae27 chore(deps): bump dompurify from 3.4.10 to 3.4.11 646cd1b43e89920bb283dc11f38463204bcac9db fix(nix): refresh npmDepsHash after the Electron 40.10.2 pin (#47792) (#48457) ef4b897a1843cd32c4f141f55db60f0f0602cc98 chore(release): map srojk34 author email 92e6d8c858f669badcb05e373d55065c7c56960a fix(desktop): dispose open PTY sessions in before-quit handler 2f7c4858a764ca32c66e0ef5d90b2d8b8f1792da fix(tui): refresh tool snapshot when MCP discovery lands after agent build (#48403) 8abdab24c9bdb3d00128e8f25fcb2b861e5ed953 fix(tui): MCP headline counts connected servers, not disabled ones (#48402) d0622cafabfbf0acfe8649e4f0390d20d0bc11d6 refactor(agent): reuse hoisted summary in content-policy branch f18f31ebf6dda993ade9f9de222fcf7fdfe8952e test(agent): cover non-retryable error HTML summarization b892ee2bcf1b65f3010c7229f4d61e574ada54ad fix(agent): summarize non-retryable API errors so raw HTML never leaks 67316fdc94bae09a2aee6318bc75cd3162decc25 fix(install): relax native stderr handling in install.ps1 (#48352) feff283e177f622e8a7b4087092c6f8c1a68e64c test(install): lock uv installer to a resolved PowerShell host a14bae6bcc00a6562861e245494cfdcab71737d4 fix(install): resolve PowerShell host instead of bare `powershell` for uv 2a5d51c16e940ea30344c894da04a13849a4d88d fix(openviking): adapt memory provider for current api 426f321e84062e00fd5e6e9271aef48263cafffb Merge pull request #48299 from NousResearch/chore/author-map-infinitycrew39 ca28c630c76525a65d1c2e69e441fac32c1f763d chore(release): map infinitycrew39 author email 9b2f7d2cb194871f327f8eb7b5347138d9e3eeeb Merge pull request #48292 from NousResearch/fix/langfuse-trace-scope-salvage 0787ea07c825e6aeffd463337e88e5964f86503a test(langfuse): pin exact surviving key in turn-isolation test f4fbaa6cda8b54f3da8e99da5e3ed44c7bd39d69 fix(langfuse): bound _TRACE_STATE growth from non-finalizing turns e1d10ec1ed29c37df922c06e5324c2b1a49806e8 refactor(langfuse): extract _scope_prefix from _trace_key 860cf5133a7961e71191de9cf0ac5ea130bfab61 Merge pull request #48293 from kshitijk4poor/chore/skills-diff-cleanup f6fac60e662ee14d95842a4eb21d6ce575417956 refactor(skills): dedupe file-listing, share user-modified predicate, trim diff contract b4356135f2aa7c7cd3ed371d7ae0cb9efbe845e4 test(langfuse): add end-to-end turn-isolation regression 40ed67ccfeac6a5dc2a7ae6f05a64a82471287de test(langfuse): cover turn/api trace-key scoping 0b54a33a3467b225b6e3eb65760c95a9f7cd52fa fix(langfuse): scope trace state by turn/request ids 737007e3356d7d16fbc9b7f8e70f1806b2f2d074 Merge pull request #48286 from kshitijk4poor/salvage/skills-list-modified-diff 67779160688529b676a22fca51edec3b06bd00b3 fix(skills): surface list-modified hint on both update paths + disambiguate diff 481f0417d837258e2ec22af656b36e87215d0c81 test(skills): cover list-modified + diff for bundled skills 085fc5d001adfd33b0f2a0813fddaeb876a98e00 feat(skills): find & diff user-modified bundled skills e1e53bff9d78fd16239c26713047195ebf8cfee6 Merge remote-tracking branch 'origin/main' into hermes/hermes-6fe26723 edcde6b26f7b54954474fd4da39f91991364baed Merge pull request #48265 from kshitijk4poor/chore/ov-atomic-json-write 5494c1e9b66087e5976039ee0cdb41a5986ce05a refactor(openviking): reuse atomic_json_write for ovcli config; drop dead constants 832d5967f85638b04d745084b5d0b53758a35a8f Merge pull request #48262 from kshitijk4poor/salvage-32445 eaa0984210c8efd2ff0a4c597b1df5683c09344b chore: drop committed PR-infographic assets from the repo (#48261) 6752da9a7735add1aff6ebc632c7e83fc4005a48 fix(dashboard): clean up upload temp file on client disconnect + pin python-multipart (NS-501) 1153b42b24a66dad03f0f0507f5a47c98f035c75 Merge upstream/main into OpenViking setup-UX (salvage #32445) c661634537a600a411c0371accf862e7bce5029f fix(dashboard): stream file uploads via multipart instead of base64 JSON (NS-501) (#47663) 28531b6186710e447586078011df029ac7867a44 Merge remote-tracking branch 'origin/main' into hermes/hermes-6fe26723 9c3c5da356c34c27fd4709eab88cb41e9591a719 fix(backup): hermes import never overwrites volatile gateway runtime state (NS-501) (#48243) 0ddd21c74ef255b8cf6f5793aa5409cebf4eb1a1 feat(relay): managed-boot self-provision client (Phase 3, gateway side) (#48242) b75757d4aa85e893d6e202c82a7c3392a57dee2e feat(cron): wire on_jobs_changed, cron.chronos config, docs + agent↔NAS contract 3fc7b624d860aca1004155cbe8a09a083bbef30a feat(cron,gateway): NAS-JWT fire verifier + /api/cron/fire webhook (Chronos) 4c8bbe6416966fccc8663be0c4049121d2af5f07 feat(cron): Chronos NAS-mediated managed-cron provider (scale-to-zero) 6723e85f707afb9804686e6b338c99292c63a940 Merge remote-tracking branch 'origin/main' into hermes/hermes-11bc708e b01eee0c77e182f1c6f9d101c5851fbe4b5efae3 feat(cron): store-level CAS claim for multi-machine at-most-once fire 6ff5fd373b6695b1ed7b7e0f63fde6a8430d16e6 feat(cron): additive CronScheduler hooks (on_jobs_changed/fire_due/reconcile) 58b19a4f6988f2fda2cddb5c620628afce750a36 refactor(cron): extract run_one_job shared firing helper from tick 649f360d741927935f93e46a30594dd9eba8a3d8 docs: add managed scope admin guide + cross-link from configuration bfb6e0bb33e61cef064ab5b41f91716bc02a474b docs(cron): document CronScheduler provider + cron.provider key 0c36f29050f83f90f48a1a8efd13def3d3e632c8 feat(managed-scope): surface managed scope in config show and doctor abbd8646eb511833500377799f5853d8d4eda5a2 feat(gateway,desktop): start cron via resolved CronScheduler provider 4440d77bf32d6267775be5eba2189e1ebde0b5b5 fix(update): scope install-method stamp to the code tree, not $HERMES_HOME (#48188) 130cc28903b69ac5060bfd0dfa3fee5e771aa8d2 feat(managed-scope): guard writes to managed config/env keys ae8fa11097e181ee61a2f5feba0c77f1d3d1d69d feat(cron): cron.provider config + plugins/cron discovery + resolver 05c7d14e770721559253101f5220f3db8af174bd feat(managed-scope): apply managed .env last with override 78be65cb1ef6eadd88a6282a3e90e8da481b943a feat(managed-scope): managed config layer wins over user config 2becd0440a91736cbbcb8686db03625d1b9ef35c feat(managed-scope): add managed_scope module (resolver, loaders, key helpers) 9415dacb19af83a2990f74b608fa1fe83badcf0b test(config): pin config/env load behavior before managed scope e6ff41ca9516cbca6470a56b1ab98939dbdb935a feat(cron): CronScheduler ABC + InProcessCronScheduler (provider #1) a657397769ab69b3bc72afca38161e04ee36aff7 test(cron): characterize in-process + desktop ticker contract before provider refactor 3769dff5dd209ff811b1898355fa545020ae28f5 fix(approval): honor glob command allowlist entries (#43051) c276b017adc4e74ae29236c39db86b7ba167afe4 feat(relay): connector⇄gateway channel auth + signed-HTTP inbound receiver + enroll CLI (#48147) fcf6cb3d7304c644c3f52031598d0441ce1ff270 fix(docker): supervised gateway uses --replace to take over stale holder (NS-505) (#47555) c5eb64b9f744b1c2c000b0842ddec0e6cefc0d69 fix(xai): scope native web_search to swap-only + reconcile composer ctx to 200k 6f89e17a33edbfffb93c2c0ab6b8dafc21e296b2 fix(xai): OAuth Responses native web_search, incomplete guard, grok-composer context 4b7a186003934590a1f77c2be5bf5caeae0c2ffe fix(desktop): retry the self-update rebuild once so the app relaunches (#48122) 020e59d3cf4a61e5ae25efa472eedc982820d7f2 fix(agent): dampen empty-name phantom tool-call loop (#47967) (#48109) bed05b5191f1ea5a59364deeacc0bd71270146af Port from cline/cline#11514: encourage parallel tool calls 86f2946fbe789ccd75aa1b34a7bd8a9d5bb8cde4 fix(dashboard): recover the Chat tab when the agent session ends (NS-504) (#47674) 9ba4615db2be22d307f4d29501cde6da7c9a3d83 fix(dump): show commit date instead of release date in hermes debug (#48104) c1f9eb0ec4b99b22346fbd5054991a976d2d39e7 fix(desktop): resolve electronDist dynamically + self-heal blocked installs (supersedes #48081/#48082) (#48091) acc8916ac7a1413b7e61d396d6478dac34ebf395 test(gateway): live ws-transport round-trip + config-driven registration 237fa7d29c62da1283c846fee43cabb9a9a7430c feat(gateway): register relay adapter from config; drop HERMES_GATEWAY_RELAY gate 6b03874d07775e23b1a6965962fdaf162a29d8af feat(gateway): production WebSocketRelayTransport + descriptor negotiation 6e20c1992ff99bf208502ef9227a478ac119d114 docs(gateway): rewrite contract §6 to the A2 trust-boundary model 3db9b3e61601262ef81a2613c223cb79f7c49635 feat(gateway): token-less follow_up outbound op (A2 capability action) c28a02b49d9c048c693d464ae5616be5a1888afb test(gateway): shed platform crypto from the relay path (A2 invariant) e74577ed0fe5c09b45e41ecb984aa18f871f4f6e test(gateway): Telegram relay round-trip (Phase 1 generalization proof) 5feec8b4cfcb40d3914bee4eb74adcd491afd4f3 test(gateway): enforce relay contract-doc ⟷ Python conformance c803661cec70de2fa16c94f7a4daed255a39cde5 fix(gateway): register relay connection checker c366466d7016aa6d02114d817ade5d8fd80a9b5d test(relay): assert connector stub never leaks into production paths ab1a42fcea4fa5ecba96083d46750242a7d16579 docs: relay<->connector cross-repo contract (v1, experimental) a3cdd8c39d502c6b26a7801bbf5553ead73126ec feat(relay): route mid-turn /stop over relay interrupt channel d0133fd8e4cab217743b89b23e09aaa57c1be375 feat(relay): register RelayAdapter through platform registry (flagged off by default) 259e78e1754f35d66a5274f4833e7050dcdd1590 feat(relay): transport protocol + test-only stub connector b0999c82f37759f13eef45714167abdaf5d2981a feat(relay): generic RelayAdapter advertising negotiated capabilities 3db49381d6b57e0ec652ba29b1aef262d4e33dcf feat(relay): derive descriptor from PlatformEntry 53d9b98305025f8ddf53fa2f36dd86be2cff8adb feat(relay): experimental CapabilityDescriptor schema e9a2ce6585fe533adcf5fe3bfc4804285191d6da test: lock gateway adapter capability surface (relay phase 0) 6092be413d59f5e535cc9b1fd9bccd001067f7a0 Harden hosted Docker install tree against self-modification (#47490) f8098c6b6fe5b764d1970c928884ff3fa1a04e2f fix(desktop): resolve electronDist to the actual electron install location (#48081) 016bce1a09ba0b705bcbd35395cb1a4a5935eb0c fix(desktop): recover stranded session windows when resume fails (#47655) fd674af47fa6f6599bc83f639cab166529796b3c fix(photon): preserve text in mixed iMessage attachments (salvage #46513) (#46818) 7fbb8c9df5e2e4b73d166102ea89954d9efc09e8 Merge pull request #48042 from kshitijk4poor/salvage-47662 ee41aa0c1a0a58fc693a585d7355359a75d2e557 feat(desktop): add dismiss control to chat error banners (#47985) 5a00bd151896cea3250f9d49a1feb8b46a3dec95 fix(desktop): persist /title set before the first message instead of queuing (#47987) 22b6942fc2fb00d44f4f7c77d85c2a7ce144845c feat(search_files): headroom compression evaluation report + lossless densification (#47866) 394cdf48ce2702de224dc95ae73f663076d043bd fix(logging): alias RotatingFileHandler to concurrent-log-handler (salvage #44921) (#46794) c835448908e78c51dd4e9c7ed93a24443e5fc055 fix(openviking): don't block the command thread on session switch; lock turn state 33b1d144590a211100f42aa911fd7f91ba031507 fix(desktop): pin Electron below the broken native extract-zip install (#47792) b07b7894ec55d284bb334454c1d27d101cc9e99d fix(desktop): keep streaming painting in unfocused secondary chat windows (#47919) 0c1e8d0ba902d1642d500b27a6dcfc218693339c Merge remote-tracking branch 'upstream/main' into salvage-47662 1e6c4ba74f6cd079eed12ee320c08dff1aaaf666 Merge pull request #47973 from kshitijk4poor/fix/ov-skill-scaffolding 4de4a4e2dae2f82e0c7fd0fc67ab027fd37d420c fix(tests): type-correct OpenViking skill-scaffolding test sentinels 49d7481dfb9622d40c19ef9f78294e2a6a8355e5 Merge pull request #47706 from NousResearch/fix/cli-login-deprecation-graceful aa6f77596b88d43d4c2759e259ce7bf610c211a8 chore: add AUTHOR_MAP entry for #47904 salvage eaddeaf2e6b91e5b6543f4db46b969d153c067d0 feat(xai): add grok-composer-2.5-fast to xAI OAuth model picker cc9f37e77cbfa7577626dfcc599347601e54f0b9 chore: map Rivuza to AUTHOR_MAP for #44249 salvage 3d21666b2f7fbeb739edfcc8a85b1f5a91f4d482 fix: preserve multimodal user content during persistence c2fa302e933aafc5f995696709a4179f54206c26 Merge pull request #47913 from xxxigm/fix/desktop-backend-skew-toast-nag c6c8abbadb802dc389d8488a8847f9aa93bf9350 refactor: remove agent-callable send_message tool (#47856) f10f7114f90112ae6f4306789db7d30df5ef4fcd Merge pull request #47664 from NousResearch/bb/desktop-markdown-spread-overflow 0138282f97c98f77571cab2aa78bda38abf9e5a0 perf(desktop): keep oversized messages from freezing the chat 992b9223893453b3b1527b2ba728996ec81e83f2 fix(curator): stop restore from matching unrelated skills by name prefix cbfa018aeff5620d893c9c7d3ea307c818183c1f fix(auth): retry Codex device-code login on 429 with clear rate-limit message (#47860) 06d907dc4e7c1db101ae6fe90cd4c0ff5dba9588 fix(dashboard): only run runtime-pid liveness fallback against local status dc86d48a3e2501cab5a1cc1f2fc59b0c843b693e fix(dashboard): use await-safe config-only scope for /api/status profile 674e8b098a752b53b30f7b6d5c1459de74d293b9 Fix dashboard gateway profile scoping f80381c456c5c6289651110f638b5d1aa22d51c0 feat(prompt): scale context-file cap to model window + point agent at truncated file (#47846) 49ef0241eb9cd2bad3f2ac425529b4fc777d98cf chore(release): map Adolanium author email for PR #44628 salvage f4100f439430c55530e1e398c90dd94ead292b0c fix(desktop): list markers and quote border follow RTL message direction fc1119ca66e321989a61564aa526b33cb6146d41 fix(curator): stop the rollback safety snapshot from pruning its target 7bbffceb9c35f74039ddc1eecd3fc301f35fee46 feat(curator): make skill consolidation opt-in (prune stays default-on) (#47840) e48803daec3a1dccae24e2af09e1b467593f4de3 fix(gateway): defer macOS launchd reload when run inside the gateway tree (#47842) 4d39a603d197a6ad2da483430446b96a1a9b0aea fix(codex): restore session_id/x-client-request-id HTTP headers for cache routing (#47335) 435c706e8e5a85915954c387e1ef13c01793f3e1 fix(desktop): stop a failed turn leaking into every other thread 7bc2916b40206375f498bc75f93adac1571fa512 refactor(anthropic): simplify OAuth relocation + add 4-breakpoint-cap test ab7b4edcc608787958460f00684c266735ecd029 fix(anthropic): relocate OAuth system prompt to first user message (plan billing) f9c8d95e43662d754eb296551695e0be554bc58e Merge pull request #47723 from NousResearch/salvage/oauth-mcp-prefix b70a4e7533dce506a41f847b3fc082d6b6fe4a9b fix(anthropic): also normalize MCP-server tool names to mcp__ on OAuth wire 3d378692958e8f6740753e3bd8bb28eb033b5464 fix(anthropic): use double-underscore mcp__ prefix for OAuth tool names a7ec3344488320eeb63fd1d0e669f6dfb44abcd3 fix(cli): deprecated `hermes login` fails gracefully for any provider 9901141d642006bc3d82ed632e82b9cd9ec1ddad Merge pull request #47701 from kshitijk4poor/salvage/cli-completer-keystroke-latency ca6542f602b01abba41f0a0ea5e1213e1acaa9f4 docs(cli): note URL exclusion in _extract_path_word docstring 99a20f8d9ab35118ddf6ced4a06905f848131b83 test(openviking): update plugin expectations fbaad3031abe74a14dc02569eb73d003f23120bb test(cli): URL tokens must not trigger filesystem path completion f48b3120375d81733ed15fd16e2a606f19081923 fix(cli): keep typing responsive by not blocking the keystroke loop 3ac6551ba3d3c35e67cd808a0b9363de1b13d29f fix(openviking): handle rewound session switches 5a5d19184a65c971cb10d108448a956dec8d216b docs(assets): add NS-506 session DB durability infographic 541d155e961ea6beb9347b082afcf7f7c64ca8b2 fix(state): harden session DB against torn writes on constrained hosts (NS-506) b82eca2bebd81706ab8d01fa96a9a43fe453c2ec fix(desktop): isolate message render crashes from the root boundary 547a014e7eae5bf5677d1e8dd96638a096fcd446 fix(desktop): avoid stack overflow rendering huge fenced blocks 00c045b43f309360724e6b35be5a6526831795f8 fix(openviking): harden session writes and switch commits f3b813c027295f746efd6540c2f3b23a756bad45 test(openviking): preserve content/write memory writes 91e9459e10062b3e68e58dc84ac379993ce51c2b fix(openviking): track writers per-session so commit waits for all eddbf291a415a1e4824da9fefd187caa26af0cbd fix(openviking): close remaining session-boundary races on switch a30b40c73ab6caf54336ff461c85fe797e4d2c74 fix(openviking): close session-boundary races on sync_turn and on_session_end 813a4e3838f671041a0822b4f9f94a1eb8e9f28b fix(openviking): implement on_session_switch hook (#28296) 5e01a5dbf1b7bc0144d9057be706da1ea9f065c3 fix(cli): detect containerd/CRI cgroup-v2 containers in is_container() (#47131) 1443be72f77de4353ae6285d755e6bc1fce5a1c7 docs(dashboard-auth): remove legacy session-token references 4ad165521171a34cbe232c615cc6a22ee3455e35 feat(dashboard): remove SPA dependency on deleted session token 85d9d270438b811f78342f067f4fe635fef41804 feat(dashboard-auth): delete legacy _SESSION_TOKEN server-side fe27949cf5dfa231c57b9795af2d9546c65a0d58 feat(mcp): raise default tool-call timeout 120s -> 300s 6cf12eef4e665cb584c3ef1826215cf299b19977 feat(desktop): drop legacy session token for the local spawned backend 25da2472acb686dd426b9aea83d57fcf457508e8 feat(dashboard-auth): loopback WS via Origin guard, drop legacy ?token= 52e51de69d5f70812972f533211e31b00622cad9 feat(dashboard-auth): drop loopback identity gate (bind+CSRF are the boundary) cde893cce6cd263ad572750a3754b3cd93d025e9 feat(dashboard-auth): add Sec-Fetch-Site CSRF guard on mutating /api routes 3ca9c72d845073aaa20edbb5af1c5b73199e477a test(dashboard-auth): Phase 0 baseline harness for legacy token teardown 36ae958473b8530ffb1a395c4944b8cdbcae82fe feat(gateway): gate message timestamps behind opt-in (default off) bd7fc8fdcd67ff892cc5bdbfd76747adc6abe1b1 feat(gateway): inject stable human-readable message timestamps b7f0c9cd52febc32f4d2fb6205f3291c9e7bcf98 fix(desktop): honor pre-session model pick + restore global reasoning/speed defaults (#47447) d1ecebcbfd8c7f2b942fd9cc425cea028e34111c fix(desktop): re-download Electron binary via mirror when pack fails (#47266) (#47276) db44af004c07851c45e3b9c0860d86b8ae652308 test(model-picker): cover two overlapping user-defined custom providers 1b962f001e7855a7cecf7e7db98ac08d71be0578 fix(models): pass model.base_url to fetch_models in /model picker 9137b86a5286e4ea420e9fb894bce34fee546b3d fix(skills): ignore support docs in skill discovery 7493de7fc31420c7814206140cdd6ed1ecceab48 test(model-switch): cover section-3 no-auth probe; map chimpera author 1039e90b5e2a2ab8b005a780ca12b9cdd52362db fix(model-switch): probe /v1/models for providers without api_key 8ed16a7a0c2270eca48ba0d9f9366b345ce4d2f3 test(telegram): rich-reply recovery via send-time index 3f80bcac56a140a565b65c93844540f2358f8fab chore(release): AUTHOR_MAP entry for x1erra (Sierra) 01ae9b853e73514e47590e0d5754bbb1a5b22678 fix(telegram): resolve replies to rich (sendRichMessage) messages db01910e3ae8c488b16274de8c78efbba79d23ad chore(release): map cyb0rgk1tty noreply email for AUTHOR_MAP b7fa62c53019a7e44599de4f6cdd30071ee7b7e4 fix(inventory): keep user-defined custom providers in model dedup f4ef70f6fc6232e49c1d7fbe9eab2eebe6f21108 docs(xai): update default model references to grok-build-0.1 bbc842d31ec8824a71f06a5a977519ab4eba8572 feat(xai): default to grok-build-0.1 28f92478e3399f2449a35a5f81451a6f02327980 test(hooks): cover session:compress event; drop dead import e76e7b50730067dee8f36bcac0c267f4fde886ed feat(hooks): session:compress event_callback for MemPalace sync 8fa562a39923b9120d7c38e847aa4b76306d7fe9 Merge pull request #47391 from kshitijk4poor/feat/add-glm-5.2 44e5848e7418a7f7909d59aea2066a55f1096378 feat(desktop): stream subagent activity into watch windows (#47060) 6ebc4499150b78a983054c01dcfa31f78a677314 fix(prompt): isolate truncation warnings per context f6a42b1acf23a476f84f4b6adf78c62580cc4ac1 feat(prompt): make context-file truncation limit configurable b2da39a0f3adc8f86ae16290cc93491704b62871 feat: add z-ai/glm-5.2 to OpenRouter and Nous model lists 17251e865b7acf40544c09adbd44ec66535350d5 Merge pull request #46857 from liuhao1024/fix/model-picker-merge-live-static 658ac1d866569fbf7b35cbf57a1352ef21f0f373 fix(models): keep curated-first ordering in live+curated merge; use pure-catalog helper in validation c2c55c44433914827d6194f247bf9a940d59b8ff fix(memory): strip skill scaffolding for all providers, not just openviking e3adbb5ae9d62e83e7a7edd7913a276eead12e26 fix(openviking): sanitize skill memory input e236bb87ebb764590bcbfa6b07656957c58a65d1 docs(skills): regenerate shop skill page after shop-app rename cf52370253addd027b7868d7ebad89d4836b60c3 chore(release): AUTHOR_MAP entry for Joe Rinaldi Johnson d7668aaff5b773b6ec884a7febce2d5d7f803f0c chore(skills/shop): tighten description to ≤60 chars, credit contributor 50943251400b9f341706e1966a1679c9afb1dc1e feat(skills): replace shop-app with CLI-based shop skill (v1.0.1) 166d2457b292e10d347331016b440ebbfa2fb66e fix(memory): avoid setup autostart for unhealthy OpenViking 315fdae5f8adba658cffc1400aaa1d4279e0a5e9 fix(memory): tighten OpenViking local autostart 2c2ca0443bbaad1f30752064d23716b927b783ea feat(memory): improve OpenViking setup UX 3c76dac4fdbf3d20417dde39890443c638f5d2c9 fix(memory): log OpenViking chmod failures 2b972472cee873032f48e51c26e85a0badf36caa fix(memory): validate OpenViking manual setup steps a893d77d8d0bb542b710ccc41425efc09569a73c fix(memory): separate setup option descriptions 94523764fca8b94c4c4f32abc514c0fd5cce1764 fix(memory): choose OpenViking key type before prompting 70f53f36cb1c2af69c834b931b1fd5680008dd5d feat(memory): add manual OpenViking setup path 7f76cf719557d699840593e5a8a3f6c2866cb1ba fix(memory): smooth setup transition after provider selection b0e25c9cb29517a4cd829a50182289f1e7c261ff fix(memory): restrict OpenViking setup file permissions 2dace37f6b55a6aca189cf0c2562a7c06ffc8356 feat(memory): improve OpenViking setup UX 5ed66f3be2b21eb1a254e29d0491ace0529fda09 opentui(v6): per-block ⧉ copy button under each message 3723bf5fe643dc8a2ce003f10a3574ff122bd70e opentui(v6): defer per-block copy button (carved to its own PR) c6e99ab375d51585ed0324961e72e1597365f3a2 Merge pull request #46959 from NousResearch/bb/composer-model-selector 80e4b8985ea971538462fe129e67ff510b3cec0a feat(desktop): tighten composer model picker interactions 7d938cc5c9c7beff22e7cb48886cba33753a5376 fix(desktop): keep live model switch metadata truthful cb6b4127e795e55bdd7ae4fe35a0ff3cd9f53736 refactor(desktop): make composer model picker sticky session state a348fc1cccc29841a83d451995a81868e991fa4c Merge remote-tracking branch 'origin/main' into feat/opentui-native-engine 677680034ae50dc9c271a665bd6fc26673ec1093 Revert "gateway: capture real provider-reported cost (openrouter usage accounting)" 222126db1d7dda3c7b1f83b80674d44c1969f97e Revert "gateway: compact /usage with current-session per-model costs" 418ceaf8c1420a3f596679efeb5f0dc384c24911 Revert "fix(tui): chrome cost from Nous portal headers only (F3)" c7e23690e01c6eaeca01e786055729e221f4a7dc Revert "cli: worktree lock + dirty-tree preservation — stop pruning uncommitted work" 4d8bfa103b3826031872e5b1c87be7ae6a807f49 Revert "fix(clarify): docstring — put options in choices[] only, never enumerate in question text" 774ecf93dc6d1668028b6a0abdd020bb99cd951c cli: worktree lock + dirty-tree preservation — stop pruning uncommitted work a68ac0c49af1e7a2c0098d4b592072f36199eb9c feat(desktop): allow /browser connect on a local gateway (#47245) 9fb1d973ff2eb6d26c8f6216dde7fc159a70669f fix(clarify): docstring — put options in choices[] only, never enumerate in question text a4181bddc9eef43a1161d385aef32656ae61e970 fix(tui): chrome cost from Nous portal headers only (F3) 6c1a83bc4b87c5c4ee6796c96ca8e12be0a026e2 gateway: compact /usage with current-session per-model costs 2f2eeb9a85745bd3c0ea7302d2dca559b6e20470 gateway: capture real provider-reported cost (openrouter usage accounting) 9d05f3721d69df570fde4c9378d5ed252f53ca88 refactor(tui): fetch tree-sitter grammars at runtime instead of vendoring 58362361dd9ed5b23d0359bedafe600356246f67 fix(delegation): stream subagent progress per-tool so live windows update mid-run 16fc7170911470f8bc01c4e87737dc309bef0deb fix(mattermost): harden delivery hygiene 925b0d1ab52da552e5da783e7c8543f86af127fc chore: add zimigit2020 to release AUTHOR_MAP e65d74bc6f9a6b0e3dc7586b217aa8b57372c125 fix(gateway): accept `metadata` kwarg in WhatsApp/email send_image 4858942c552733f72de5b2d0dfdfcc7a3a1dc248 fix(auxiliary): honor main fallback chain for auto tasks (#47235) 23cc0098793d0d5987287cfad3e020e5e0027549 Merge remote-tracking branch 'origin/main' into feat/opentui-native-engine 9f08fc925d20786142d9dc6c501f401e1a6a8a73 fix(learn): register learn in _BUILTIN_SUBCOMMANDS 34df600e65d2b9d26543228a596f71d9c41a1cdd feat(skills): /learn — distill a verified skill from directories of source material 4d470b3dbb881f31792e5f66b3f5d841bb6d469f fix(slack): route /debug via /hermes to restore Telegram-parity (#47248) 2483200963e43e7335e02f3f51440db089bcc1a3 test(tui): isolate session-create no-race test from shard-sibling leakage (#47230) 1ac76a9472778a755b022c2d861eec3b8ef8ad25 chore: add MrDiamondBallz to release AUTHOR_MAP 9a59ad73ddf18c487a85089308417c0bc97a9b9f fix(auth): preserve Codex pool-only rate-limit state 6373aba80fdc79c6f7468a6ed3880f08973f8448 feat(gateway): rename to tool_progress_grouping, add config/docs/tests fc956b9db6efeb889cad27a8b6552130aa51bc12 feat: add tool_progress_style config (accumulate vs separate) 98ae28657fd7f0a86f3255024b3f448c9d77937d feat(display): document and test memory_notifications setting 4cf9d80fba1eddd0a187e6f29d4531c8f2dc1610 feat(display): verbose skill change notifications with content previews 20b1f4f3fb865d0399685ff4e21b2855110b2148 feat(memory): configurable background memory update notifications a6364bfa08dbc73d978b4800f4a3d28257bcab4e fix(telegram): edit streamed previews in place as rich (Bot API 10.1) (#46890) 5b3fa26366320881d026c4ff824685a5677f9368 fix(photon): unify project identifiers and update documentation for Spectrum provisioning ee7b8a467297cb46487eeecd554090bd7d36a268 fix(models): validate_requested_model falls back to curated catalog when live API omits model 630b43892d7e795f7ebf84b0d9ea8f0428a3692b fix(models): merge live API results with curated static catalog in generic provider path dd0e3e0a052ae2b0804015516e9ba7a3cba979b9 fix(desktop): tighten thread content top padding a0ec4f52b948104cc91fb291153edb3a5bf6b52e feat(desktop): disconnect external (CLI-managed) providers 0e81d2fb71c11d731189fd36e6783c4437bdba16 feat(desktop): per-model effort/fast presets in the picker 989d5d0cb72a23d28cb919363887fe8a60a61b5c fix(desktop): declutter date-pinned model snapshots in the picker c92a95a130cc0e88b33f0336191c56d4c0fef8a9 feat(desktop): move model selector from statusbar to composer c6b0eb4de0e5010a752e312c0577a4d04d2a08a5 fix(desktop): open remote-gateway artifacts via authenticated download (#46895) 0441b7f19feb9f1fdd9aac2af8cf022f1b50b174 fix(desktop): route global remote profile REST calls (#47011) 7cd71de1f45b060b1404b2f0c5bf4cb4305dd716 Simplify dashboard update detection to containers b1d6a578832dadc9ef3ba1a591e5ea8bebd7d568 Detect containerized dashboard update management 0b6b29a30cb40dd53fd5f8d28fec6d4ee1ebd4ff Hide hosted dashboard update controls 55cb4103beba5822303c06b662635e1491ae72f5 Merge pull request #46951 from NousResearch/bb/new-session-window 67233d1c2ad5e6770eec6684fa32cba3ce7c0f60 fix(desktop): sync new sessions across windows 0f75e9904a8f9838a706a0cf84b01bc4576b368a feat(desktop): trim scratch window chrome 98c294126bafb2ba5660a2dc817c97e7dc8c95bf feat(desktop): open new sessions in compact windows 0a8f3e21b8085f24d1dafba6c34911d87b756cfb fix(delegation): forward background flag so delegate_task(background=true) runs async (#46968) 2dbc3bd93795f4307ec76661700aa902cc21c189 fix(skills): guard recursive skill delete against tree-escape (#46929) 9d2ec8d35a2aa815f036a8d5bfa4698278210b16 Merge pull request #46244 from skyc1e/fix/desktop-explorer-refresh 423d24780b25a558b1aabe80f9e426a462f1ca34 Merge pull request #46909 from NousResearch/bb/coalesce-interleaved-reasoning 37d717054ef6fc6bfd5097d6842f097a3419631b refactor(desktop): unify stream-part coalescing into one helper 1cb75b7971a7f686eb4e4f39402c45ccdd395588 fix(desktop): coalesce interleaved reasoning/content stream parts 5bfed0fe071ae102f3a8bb96f28ac5cb5f0bba04 feat(skills): add optional payments skills (Stripe Link, MPP, Projects) (#31343) 5a0e0d35b94fefae4ff6463c24f53e348f4679e6 fix(mattermost): preserve thread-local delivery hygiene d2b34e89b0eceedd987f87e462cfaf93903d49ec Merge pull request #44431 from erosika/feat/honcho-identity-tree 6dde7d46574f7bd40e915217d96074c461791c4f docs(memory-providers): cover gateway identity mapping for Honcho c7513df4f9e4af2d33a73a3a5256e2d4f346ee26 docs(honcho): clarify pinUserPeer pins only non-agent users ead2f787dac764d8f600c3656ba6fb1c119fdc9f chore(deps): bump tornado from 6.5.5 to 6.5.7 062c17d34f521ee8f8feb4ad0fcfc2b32a7f719b Merge pull request #46867 from NousResearch/hermes-always-run e0492aa2dca01e62280f8de0870af62f0d404d9e fix(ci): always run pull_request checks cffd6e3c8d0bf6a180ed19a919fab05f44def311 Merge pull request #46078 from xxxigm/fix/discord-slash-command-100-cap c66ecf0bc30f333eac25113b38eca6b5197e7518 feat(delegation): async background subagents via delegate_task(background=true) (#40946) 368fcf1ff03b3c6dd562bd590fe92805ecca7461 fix(desktop): read HERMES_HOME from the Windows registry when env is stale (#46772) 39f479cba8a6b46cb1472b1feba6c8235727a1bd Merge pull request #46085 from xxxigm/fix/bundled-node-global-npm-path ed20f5ed060529659687a707d5dbf2fdfd9d6669 fix(desktop): let explicit model switches escape broken config providers (#42241) (#46796) 2a08b8c86fc9b94518b9b50d0f6cc0e5834e958b test(dump): cover terminal backend override reporting b2a4766463a74ee1500ead5178d5e04731b54787 fix(dump): report effective terminal backend in `hermes debug` 60cc42e38bf6570766b4cc24a8ac673aebb783c7 fix(inventory): deduplicate models between user-defined and aggregator providers 9df1a1a8de8ea3a9826201936a6c762edcfcac33 fix(doctor): recognize nvidia as vendor-slug-accepting provider c33e0457d7e012866d635583641fc91b67342af2 Merge pull request #46836 from NousResearch/bb/salvage-macos-electron-pack f7c1cbe66ffa34b9ede451d096d54c1062fec666 docs: point desktop download links to site root (deprecate /desktop) (#46795) c23a2eec15617c209e0ad28d3b78f41afa74dcd1 chore: map salvaged contributor email for attribution (#38673) f3b32e9f52204ad654d4c43b364a8bfa4a32b520 fix(desktop): restore Electron binary before macOS pack rename (salvage #38673) 8f90ec4e080fc4ac5d970bc36b6eec7eeec74c39 chore(deps): bump protobufjs in /scripts/whatsapp-bridge 5f6be7f31bd7ef53f92d030b060325783f84f169 fix(teams): package Microsoft Teams SDK as an installable extra (salvage #43945) (#46764) 52d07f54155ddc68ed5e7206f7632cc69a20d8d6 feat(skills): add food-delivery skill for Uber Eats + Instacart 0bbf325a8f50cbc7cfc74886705e8a67bb521dad fix(dashboard): scope chat sidebar model card to selected profile (#46665) 430ab55d652726fcef0ddd515fb377da53feb2b3 chore(deps): bump ws from 8.20.0 to 8.21.0 in /scripts/whatsapp-bridge 0bbff1fc7e132c7464986483b50e7048e68255b3 fix(deps): declare websockets as core dep + relax dev setuptools pin (salvage #45486, #44693) (#46744) ae433634db562e644175d39537ef6b811a381f3f fix(desktop): move tsconfig to es2023 9eb0bcd60fc6d3fe28e0b1c5bbe188f94169f65c change(ci): rip out nix ci for now 45e2f4fdcd760b0072eecb32b7b9c00b62c17b98 nix: refresh npmDepsHash for the @assistant-ui/store pin 30377e108ca86861e832a2644879b30125debefd ci(desktop): build the renderer on PRs so vite breaks fail in CI f02484feba6d3bb35fa00be6e1d16de8e26e12ab test(deps): guard @assistant-ui cluster on one tap version eae3836eb661732b4f3be88231a21d7a2fd66702 fix(desktop): pin @assistant-ui/store so the cluster shares one tap 1a7794ebc43329a10eb3c83a6a4162e3e687f0ff fix(xiaomi): preserve Token Plan base URLs during auth recovery 3e7e9b24d40c6ff62e50936ba8b8184ad61da322 fix: harden salvaged session and browser improvements ead38107a2f2b6d6a71e92e978fe98a684bd3be8 feat(status): restore model and context in gateway status 5035fa9029a4391f694e3e3407d2e85cd4f36f23 feat(display): show delegate_task goals in tool progress notifications 5b2604df999c4c16149600fd022934221b25e25b fix(state): skip redundant trigram backfill before v11 FTS rebuild 2f2e3616b4064e79846833eadafc6e5b5140f799 fix(config): read browser inactivity timeout from config 06d94943d671ad85119761d8657a7daa07eaea0a fix(xiaomi): replay MiMo thinking on supported routes 2e80a38f62dbadc12ac038d5bf3558a7aaaedf06 fix(computer-use): fold duplicate PR polish into cua-driver salvage 6c5a5ad26318cf1e726521eff18dffd869e8e7ec chore(release): add AUTHOR_MAP entry for f-trycua ae4aa35c6ab8ccc59782827ff4675da7f0f9be2c fix(computer-use): restore subprocess import lost in upstream merge 1542511eb7a44fc08c7ee3eb989a5f1ee87812c1 feat(computer-use): use cua-driver's native check-update instead of a hardcoded version floor 649f4c8c1afc398996e38f22d8bce2da48b8e6d6 feat(computer-use): cross-platform cua-driver (Windows/Linux install, version warning, lazy mcp) d3c34e0126e1f0f1923913bc332c9d1c8310608f feat(computer_use): enable Windows via cua-driver-rs bee13817f06995cf690ee4e4aafed956be78ab69 test(desktop): cover $connection resync on profile switch fbabf438a17cc16a768e567eea832e39a9e0a40b fix(desktop): sync $connection on profile switch so remote profiles attach images as bytes 49e743985aaf54c1f8317fbd253a82a9ca41c8e1 fix: route minimax m3 reasoning controls through profile ba3883cd186848edc5756689b63197a94c517ca9 fix(minimax): enable reasoning extra_body for api.minimax.io be7c919bf9773bd2d6c0f2b090575fd8159a4a02 fix(process): label background completion causes (#46659) 1a4c2df19e0eab6fd5960d333c7fc0013b9c9aaf fix(vision): respect MiMo tool-result media limits b5fdfe6adaa3ea7628627228826a55b78b4dff69 fix(xiaomi): consolidate MiMo accounting and error recovery e81ac4b19228afee36f2d7373ecd998c459d5b5b test(computer_use): isolate backend env in check_fn test 8eb7aa59669b450dd2eba6d1e486577884a57089 fix(computer_use): polish Windows UIA salvage integration 733472952a0fbbee9ab7bdb8a0aa226f7b5e50d2 fix: complete cron jobs lock salvage e5b4cf7bea2876f761b269df5df34272300a9fae fix(cron): make jobs.json writes safe across processes b3428667d48fb68fa52f72963194aad5e9cb61e9 fix(computer_use): address Copilot review feedback bcb13396cd517d0537f249e119b012e6657b902a fix(computer_use): use single-batch SendInput for switch_desktop 660c43da4a8c6b7274df556a88dc0cbfd7b997b2 feat(computer_use): add switch_desktop with overlay-safe restart 17b35a7d95683cbdc2ec1fe34ba5fad143277ab5 fix(tools): release stuck input and prevent UIA index drift on Windows b062a5d4b96887b441c36e8f83f3bf40693d1a16 fix(tools): harden Windows computer_use for daily co-located use 9480721f1d54fdaaaa6971c9074a602e760e04db test(tools): cover overlay-client gating and vision downscale helper 63316ae271d011effe3533f822a99ad157060957 chore(deps): declare uiautomation for the Windows computer_use backend 52cf24e441de10780aecf92c8c142b4cc11836c0 fix(tools): downscale computer_use captures before aux-vision routing 42fc7d86d347a9e491ae07410d57f8857f919266 feat(tools): on-screen overlay for Windows computer_use 23d0d5fe3cff09da38e2fcc9bf5f879161c3eb0d feat(agent): platform-aware computer_use system-prompt guidance f76f382a65bd9daaa0999e1551298804a8052503 feat(tools): add Windows UIA backend for computer_use 29c6985590043fc672a6c9a7cdb9a8695388d1ac fix(nix): refresh npm deps hash 92a456f711ebbc7dba083094f7fc91f1dfd54904 fix(cli,deps): clear esbuild audit loop 975b9f0a5426858c3ae7f0d4e54701c08824bd09 docs: recommend standard installer for development (#46646) 0d82060c74fb04ddefeabf790d7808cac3c7aca5 fix: harden WhatsApp target alias salvage ea49a79633d93202d8e495648b2586ee5a1fbecc fix(messaging): route WhatsApp group JIDs to the target, not the home DM c17469cb19dab7bf0c2cc2efc494c190b30b3796 chore: map Veritas-7 release attribution febdddb41af5b65d04cf38742546b705255f9678 fix(auth): refresh xAI OAuth tokens earlier aab2e99bae63bfd7f780a6c08dce6ff82f8426c6 test: cover request debug dump redaction ad58dd51ac173172fb85223aec5f3aeba1abfaf8 redact secrets in API request debug dumps a688d2a1bd2941c39a7c9efd4d97fda399735266 test: assert disk cleanup prunes protected walks 40699c329265a34d7117a1cc0d9ac53098b28ee6 🐛 fix(disk-cleanup): avoid brittle sweep review issues c1a70a5439258b8534821d7d20cf96666e32da8d 🐛 fix(disk-cleanup): prune protected cleanup walks 2cddc9c8955498dda6c8f4e33e29f24502bcd691 fix(bedrock): check boto3 version >= 1.34.59 before using converse_stream f79b109f4f83435e51deff206edb1eec217358f6 chore: map 0xneobyte release author ec05d2bc3eb343968b9c2b1fc04b8195d48de40b fix(gateway): evict scoped lock when PID+start_time match but process is not a gateway a376ca00819e14f611ebc5e3ff2e207cd5563db0 feat(hindsight): make observation scopes configurable on retain 8844e091c14f4c63d72e3f32ed209e3cfe9de840 Merge pull request #46614 from kshitijk4poor/salvage/xai-oauth-profile-writethrough 1227007aed1dfcdd33a9cec5dc969a1313caa8aa chore: map capt-marbles contributor email for attribution 497352bc4e53f824900ae76219d1e5c315b1a15f fix(auth): write rotated xAI OAuth tokens back to global root (#43589) f1d6f0436224cbb7adfad23ed235d92cca26a62e fix(auth): resolve xAI OAuth credentials across profiles dcc32169552f6c04791531465c35879361fdba3b fix(mcp): fail fast for noninteractive oauth without tokens 1a80ae17725a809d1866c841a734f5dc498474e3 test(image_generate): replace unit tests with thin e2e 80d1400ce6f972692979faf0aaa2c5fe888b39f5 feat(image_generate): support image input for image-to-image / editing aca11c227eb7e8b2f53f6e130d6e922455a573c1 fix(docker): skip gateway reconciliation in dashboard container (autodetect) (#46293) 946d3eaf95a43024c619cd14bba0fb325e2ba8be Merge remote-tracking branch 'origin/main' into feat/opentui-native-engine bf45aa3a45b467a821cb01809ec32d9d17ef524b opentui(v6): WIP — todo panel + memoryMonitor + mouse/startup-prompt env 16e408f3f07b63a3023d8e638cd0e69188e1c2fb fix(clarify): docstring — put options in choices[] only, never enumerate in question text 4108fe6014907ed7fc0a88b2c2856ffca2f8ab5d tui(diag): Ink 1Hz memwatch collector — OpenTUI-compatible memory trace b0fb2b8b05b5073e07cef64b0d98c47b5ee3ad28 opentui(v6): skins/theming parity — live /skin switch, animated spinner, tool_emojis, status-bar colors 6cb88a08748ca43f61db227e9c81e6834c407710 Merge pull request #46552 from kshitijk4poor/salvage/file-tools-session-cwd 8fce54499fd8758a9b793b4b3c24b0dbfff14c3e refactor(tools): extract shared sentinel-free abs cwd validator b0c99c12ddc7b6f4afcce5f776347bdf40c6e91c docs(tools): document registered-cwd step in resolver docstrings ddf7c7af811394f6673cf43ae50bdbd016c72c6c refactor(tools): consolidate task-override lookup into one helper d6a8d9dcab92059ce493604dea5e979f4bb8de18 fix(tools): respect session cwd in file tools 95715dcb03003eab086eb0494083e6dc1c65f3b3 fix(s6): reserved default gateway must not follow sticky active_profile (#46483) 80f8ffc74c7b8994c9671408df15f10882726882 fix(dashboard): pin machine-dashboard reroute to the machine root, not $HOME/.hermes (#46487) c2b7669ad3dd02232d06cde36f6e56ef04dec970 fix(s6): clear stale log lock before startup (#46289) b7709672636f5d65f25790514e64aea65d8d9c3a fix(s6): persist profile gateway desired state (#46292) 61ee2dbfdb407af8a5a649683dc4966272a94b53 fix(s6): make profile gateway log parent writable (#46291) f7955137828e43d26bab926f0aacc5302d5fa357 fix(windows): kill hermes before recreating venv to release _bcrypt.pyd lock (#45120) 8fe334b056d4ab83e51a2abf2ca4d1ac8982770a fix(desktop): inset hover-reveal trigger past the adjacent scrollbar (#44159) 40d7c264f0471d8b7fce39ef12d49cb02eb18b0e fix(s6): register profile gateways without auto-starting (#46266) 4eb0ff639ba905a2175c85121f3ba78f670d127d Remove is_container check when restarting over dashboard (#46290) 47010a7df628740537bcb8de7033f82a1bd5f771 fix: support bare Telegram adapters in typing cooldown c86856809817e116ba058078bbcab86d3231010e fix: repair URL authority whitespace before web fetches 4e502adf9c80ffb35c81b1ffaedc1aa467a29c0f feat: add uninstall dry-run mode 7fdd44b6d1e5818442ae65f3f367453fecbabc31 feat: add Docker terminal network toggle 9bfcf1f6c58ecdf266bc2210e3f6c2babf26ae66 fix: default memory null target to memory store db87eb552a1f498603cf1c96587728dd8fc287f6 fix: cool down transient Telegram typing failures f3fe99863d134bd05316882dee0d469439110ca6 revert(web): remove keyless Parallel search fallback (#46350) a829e04d6201534a313d940347e9f153f3b29b4b fix: migrate cloned profile configs (#46345) 2a14e8957d7552631b4e33611a828e63f773449a fix(kimi): surface K2.7 Code in native picker (#46309) bff78a34dc44e36ae02ff2b1850a61c7115d70d0 feat(zai): add GLM-5.2 with verified 1M context window fb5649f2e897d4b3710073042a2aa3323758fa07 Merge remote-tracking branch 'origin/main' into fix/egress-review-fixes e433c410140230c32fd6ca1bbd315bdd8ba8ede7 fix(egress): harden Docker proxy UX and enforcement 4e6d05c6a51e4461af0d0d51e79e3c6afe3f7b9a perf(skills): share raw config cache in skill utils (#46149) a1f51feb72b4526df85fbd9cbdaf9b9627397cba fix(telegram): avoid rich final duplicate previews (#46206) 6c34088a17481aa6f2f18bae446104582ad1aca9 Merge pull request #46237 from kshitijk4poor/salvage/46095-cross-process-cache fc2b8b3d3192f35090b2f0572731973c3170f125 Merge pull request #46236 from kshitijk4poor/salvage/disabled-skills-union 3bc4a2ff78c0d91ccb390230cd510e5efbfa0e38 fix(gateway): re-baseline agent-cache message_count after each turn ce19fdb7ce27d94462a650ade8a2b94882590a38 fix(skills): apply global|platform disabled union to all resolution sites 7f245b003523e47d4d0fd696c1492f23175254c3 fix(gateway): invalidate agent cache on cross-process session writes (#45966) 7bbe7024c207a6dad982967780995ad18ac7e7be fix: filter platform-disabled skills from prompt (#46201) 431e3be47d965fc2d798a0f1bbc1c4e3ded5223f feat(openrouter): expose Fusion as a model slug 7433d5f0eb22ae95c2aa5bd4cffa55df382573af fix(gateway): scope early duplicate guard to pid file 14367930518eb67a31cb5f39f98e0da5a87d6f07 fix(gateway): block shell gateway run when a service supervises the profile ded9c9795761638ee0a13ba11d2afac25d0512b7 fix(telegram): make Bot API 10.1 rich messages opt-in (default off) 08d89e7aba14f30be400c6beb2f784971f2a587f fix(desktop): limit thinking shimmer to the disclosure label (#46197) 2c174bce2408f5d6810b0f16dbd55cb65cd1c6e3 fix(gateway): preserve new input on interrupted replay cleanup 5191c1c2cee195030385742656fc586a94ac5308 fix(gateway): stop replaying interrupted tool-call tails and auto-continue notes 0f3670ba7920152127a11da6a4be972cbc26dbae chore(release): map Diyoncrz18 author email 288f7026e332396ab74641b128ae7c23f7fd0a1d fix(messaging): correct Weixin personal account labeling efbe1635dd2ee544afb850a23e0939560e3e0418 fix(gateway): include replied-to media attachments (#46107) a27d7e68ccb2cff8d95ac68660a150dc565a413f fix(mcp): block suspicious stdio configs before probe (#46112) 13a1bd0f83c04fc4b2640e24ce2393e1a88dae1e perf(model-metadata): persist OpenRouter metadata cache (#46114) 0e22bf64396a230a16e919e09bc9c8f7f2317487 docs(gateway): document exact silence tokens (#46105) 4c367df56ffbb73f853a442414fba2cfc8ec4998 feat(moa): move mixture of agents to slash command mode 972a9885ee207e732bba1e0b7c1a65716df322c1 fix(mcp): block exfil-shaped stdio server configs (#46083) 9459057d7f570b8674d28a100490a106b348ff9c fix(telegram): guard rich details math crash (#46102) cf7d5932f8faefe013393fc372aa1664affab3c1 fix(email): make IPv4 SMTP fallback use supported sockets 04d4471d798f177c41f22f51ebdb1127d758825e fix(email): use SMTP_SSL for port 465 and fall back to IPv4 on timeout 1ddf7a10213e94d4018d654b7021fc2a3f690bc1 opentui(v6): bench fixture — HERMES_BENCH_TOOL_BODY_LINES knob for fat tool output 1db8f7ea8094d35ee9afdf81c6bd3b41d2fced1b fix(install): repair existing managed-Node global prefix on re-run 5105c3651a8f1b153a9ce7c1ac327f6933283be3 perf(api-server): normalize chat content linearly (#46079) 293c04fef6ba34ea18090ccb555c401c23454944 fix(gateway): suppress exact silence tokens without mutating history 98205da008601525a658a106edb3c26199beb2b7 test(install): cover bundled-Node npm global prefix redirect a4ee1f223d5f3c0cae13a98c7214daefc2836145 fix(install): make `npm install -g` packages reachable on PATH 10bad2faf1c9eec161da3c844359f4f914145f6c fix(gateway): serialize startup auto-resume before inbound (#46074) 2b4873f7fbfff5bdeafac96cadbe864f5fb8607f fix(agent): persist repaired-turn responses (#46071) 723c2331bd236fdb9bbc0d6e6f85a1b7704e4aa1 fix: make profile subprocess HOME policy explicit b00060ce545c54d9ead5a7b1ca66f9bfa35064d2 fix(agent): expose HERMES_REAL_HOME in subprocess envs for profile isolation 0428945b5b07f430e23b4fc28b2bff6887477463 fix(desktop): keep profile homes out of bootstrap (#46073) 8f4a718f957d5d8fdb6264552ef46bb1c2ce4047 test(discord): guard slash-command registration against the 100 cap 5e851bc6bc5161960548d7ee72899a199a971ad7 fix(discord): cap slash commands at Discord's 100-command limit afc86155094c75266b03eb4dd7344f3509bede52 perf(webhook): prune request caches incrementally (#46065) 89bdb1e546297b1332382611f5672fa5d770f2b0 fix: read dashboard spa assets as utf-8 7b9dc7cd0a489230a70f5876492b47e43686bca1 test(gateway): align web profile wrapper expectation d76a58bd154d41a27ffe57ec70e4a365154dc650 fix(gateway): resolve sudo profile system installs 1f5eef809377a85a356ef9eeb6133e78fb380ae3 test(tui): tolerate resume init kwargs in protocol tests 9f33d673e9e631661f0f913d6967fbe27e142900 fix(tui): persist resumed profile cwd updates to profile db d842155da1e878035d1c2e306b1278d2c7374e91 Keep resumed profile cwd scoped to profile DB 4936a49a0c9c226c90e1fcfe0cd2159aa33b0d8e fix(mcp): preserve loop during probes 85e6232a0716fd6df5f061d0e1eae55ff40d1e2c fix(providers): support anthropic proxy v1 endpoints 81e42335a1aca0b67c6cf50364f98a901ef5ef8a fix(file-safety): relax user-write deny policy (#45947) a70f7f3b7bf950c9cb2c3250347ff257c7523b1a opentui(v6): proactive idle GC, gated on the low-mem heap knob (W2) 6e3c393ef9c3222c9ad2b87890427f0b78a6b5d7 opentui(v6): configurable V8 heap (HERMES_TUI_HEAP_MB) + --expose-gc (W1) c7e5215b508f747a53a97487082c26ed97cd2aff opentui(v6): HERMES_TUI_TOOL_OUTPUTS flag — drop tool-body retention (W3) 25686feebfb258c4f91c51e601f032d01509e19d opentui(v6): bump @opentui 0.4.0 -> 0.4.1 + openConsoleOnError:false (W5) 526a1e24b51656e17b67ab3c856e0a616b33c9d0 Merge pull request #46029 from NousResearch/bb/summarize-gui 1eb13744b4ab73721e66ddf90d57e754d64e4846 fix(desktop): polish compaction indicator and preserve scrollback 49dd91d682a497e256f61a245caa222db34ea419 fix(desktop): show copied checkmark on session Copy ID (#46030) 715b691723c6bf937bf0cfb9d246eca72abc57b5 fix(desktop): show summarizing indicator during auto-compaction 8e3b320eb81e4591644a9d8041b0454b0a45bb14 opentui(v6): credits/usage notice chrome banner (Ink parity) f5823277dc224fb6a302729dae2838257106ab7c opentui(v6): clarify markdown + cold slash-highlight + @-mention race fix 9cbb91abd3a8667dc65c3677464e5d7847a49995 fix(desktop): clarify UX — loading, enter-to-send, radio align (#46014) c8ad2ca997a1f281a44c820e08fca4506a0f7a71 Merge pull request #46013 from kshitijk4poor/salvage/refusal-content-filter 10bd01972b03659db25ad9365170f179d05aebe2 refactor(agent): share the content_policy_blocked result builder + recovery hint 12c84d6c77a6ecb754b9025a8e9f1a5e8233fc65 fix(transports): only treat a refusal as terminal when it is the sole payload ab26541b9a1feaab728c86685ef89b06885f16de test(transports): lock in content_filter passthrough for OpenRouter bb46bf8ce430152e0b0554bbd6c5644fed80d8ad fix(agent): surface model refusals instead of retrying them as errors 4b5ba112adbfdfe588b015b288bc91f873ca602b fix: shrink images to reported provider dimension limit (#45979) cdf30a7ac6a6338959247795029ae3cff7e43824 Merge pull request #45866 from NousResearch/bb/desktop-notifications b0288ae9b6ea75cb6b9aa5b9c021f95f7c37216f feat(desktop): move completion-sound picker into Notifications settings 630a4ef03c8e50181026cad50232979da7627592 feat(desktop): native OS notifications with per-type toggles 33924c074c306360d32bbda712adddb0900f9cb2 docs(opentui): point bench references at the tui-bench repo b4ba3f5e3b3791f78e0861aa5a0c26a496ad6505 feat(desktop): add curated completion cue for agent turn completion (#42480) 8f278403d1214a4c482b9c79efb7d329ffd3eb8a perf(execute-code): stop waiting on idle RPC accept (#45948) 1b16c481708d1e8bbb16feebe0a2babb76c4d4b6 fix: guard OAuth account removal e986e3fc689ccad2de26c28b8a77902b29a56f8f fix: add provider account removal 12682d96b9c85f1373f1d61e953eb4a20feb661b feat(telegram): restore rich messages opt-out 8d5d36d793583fbdc679d880674268178ed9b81b fix(dispatch): forward session_id into registry.dispatch (#28479) 7aaae7acd0d6f80aba9fbe15324a1c907ec70c55 fix(ssl): align guard docs and escape hatch 73d1357747bc99c8164b48489d360ee1c8625c84 style(agent): keep run_agent import order stable af1995a838103cdc262657a0bac08ac3b2b8929e chore(release): map chromalinx noreply author dc90ca4e17404fb891073de958d23dbc872538f3 fix(ssl): run CA guard during agent initialization af5b52647265a42d81bbf5f5f2880e6ca5c9313b fix(ssl): validate CA bundle paths before provider calls b42c5bf6527ec076ef1e537d47cbdab99f0e90de test(ssl_guard): fix macOS fallback test that passed for the wrong reason a218a0f1569cea01e217aad47af49ac61c2a8607 fix(agent,gateway,doctor): add SSL CA cert bundle fail-fast guard 1106879147092fceaf15045f26b876fb54aaaa53 perf(process): wake waiters on background completion (#45831) 21c64f90aa4631b7e186e6f8f04e5358236bb5c9 feat(tui_gateway): emit notification.show on background-process completion (Option B) 6b76284c7769e0ca80012a5a4b7e22b1cea05b6b fix(desktop): surface off-screen approvals via the jump-to-bottom control (#45853) 4026f526d5a6160b0c444de4030096f7c959116f chore(release): map MaxFreedomPollard author email 9a2b976326340f0fec7eb9a88cfeb953ffdd1e56 test(skills): add regression tests for bundled-update backup recovery 3581131e7de1560633c921b4782ea87dcbac3a9e fix(skills): make bundled-update backup handling crash-safe and idempotent 2e48537cf13167c0f09ffe885ebfa9d337f8ae97 chore(release): map xxxigm author email af1477d8124ae26c80b30b016dfa2b132bc376c3 fix(codex): bound leaked tool-call scan to prefix window bf8effad023b275aca2ea4b674efc45f4ba7e88f fix(utils): copy fallback for atomic replace across devices (#43852) 817f39231145bbb24eb57b8b2835cb00c91e87ed feat(read): extract notebook and office documents (#37082) 2b67e96aec2aa2abd5e94b544cda8e564c75f9f5 fix(approval): gate in-place edits to sensitive user files abd69b811702281c5728638ec4fce7c0babeaedd fix(approval): detect absolute home shell rc writes da28d5d113956dcf803d5cff552a120740a96a59 fix(security): gate cp/mv/install into ~/.ssh, credential, and shell-rc files 1fa761f8ded58e652ff1ef8861cdfe9407f014be fix(search): keep partial results on search timeout (#36142) 069bfd6545f618a1c5d3c617908ea82ad4556e8e fix(agent): keep Codex reasoning replay on Codex path 1d584a301eb8c6feb43831ca5da82e8273590336 fix(agent): treat Codex reasoning items as thinking-only 57c2a55be43b9eb184527464de9691b7643095c7 fix(telegram): harden rich message fallback handling 0a865e5948cb836eba93620e365703ec38cf76e3 fix(desktop): bypass Chromium editing pipeline for large paste & select-delete (#45812) c8e5f34f24ac46c55ce29feddf7f77fe0f5f7013 fix(gemini): strip native self prefixes before generateContent (#36141) 7d11fa4e9ef8bfd45c5e60a2615d2af03fbb7305 fix(codex-responses): let final_answer complete top-level incomplete responses 7c0605bf224c27dda466a1e877161da319224da6 fix(telegram): preserve rich formatting on stream final 819def44c71e8b3ca163f79facdb4603a0cc6957 fix(agent): scope Nous tags to Nous auxiliary calls 08890d77e6b99be5c1453965cc58ada0fed0d34f fix(plugins): normalize browser-pasted GitHub repo URLs (#33539) 425e777f54b810b7d762b0a5bbe8372dcf782def fix(desktop): polish slash command completion (space/tab/click + typed args) (#45760) 7be22e37e1c36c04b5878ffa3176237fb1438490 Merge pull request #45753 from kshitijk4poor/salvage/gateway-auto-resume-duplicate-agent 28902dc8906b50077026e063080599f386a900b6 chore: map liuhao1024 contributor email for attribution 63097ee0d7ec3f05d69ae5a0b6b9d33004bce032 test(gateway): cover auto-resume full-path no-regression; clarify guard docstring 6e2fd955ca64e921361c201fb540b4561befede0 fix(gateway): claim session slot before auto-resume task to prevent duplicate agents 78c11d99e35b111dd6198d8bc6aa1f7f6f168232 fix(update): stop Windows gateways before mutating install 957a8ffa88cb09224a5cbc4bb7a5a5a8706de6be fix(bedrock): omit sampling params for restricted Claude models 8e853e3ff83957111e7b494f882fb0883998d3bc opentui(v6): fix /bg — it launches a background PROMPT, not the process panel 76eab10b145439d10936dff4ace332f04df1ecfc opentui(v6): simplify the background-activity work (dedup + dead-code removal) 5c5a1fec4bdcd407aa6e85967e6e214d46f45a03 opentui(v6): background-activity P4 — fold the agents tray line into a status-bar chip 7016fa4902049cccd16c239626b858d8c7865f45 opentui(v6): background-activity P3 — /bg process panel + ambient bg badge (no core) 74cb03423ec15293fa97d43f6e1cf3b2f467a703 opentui(v6): background-activity P2 — de-crowd the agents dashboard + typed trace 5988e21ed74d8b0effdadd71af61968243741649 opentui(v6): background-activity P1 — inline notification cards + OSC (no core change) 965226fd52a1f13bc30a4ed9ccbaaf46196c6e45 docs: spec for OpenTUI background-activity (agents inspection + background panel + notifications) 353a8c1c8f8820bf5935636807f2ffd9e91bfb1c opentui(v6): composer/transcript UX polish from dogfood feedback (glitch 2026-06-13) cc14b74718aaab8f3dc69c004b4dccf67077a1e1 docs(profile): update clone-from references 9b5f7b63c62a2ab3d4a66b599ad7e4925b588acb fix(profile): make clone-from a full source selector d146b851736e74096d51b2270e21bddf474381f5 chore(release): map WompaJango author 28bf8fb47d38140bc1e5ee09d2152b356ec7e5fe feat(dashboard): clone profiles from any source 3380563d946b26cb5ae630811f95d2833ba5254b fix(security): stop /api/status leaking host paths and PID on gated binds ad7436a5d9a6b7e3fbbe2eb038e43fe69741cb76 fix(gateway): preserve WeCom per-group sender allowlists fc463545804692c16f842aac58d681d96dd3fe6a fix(security): fail closed when an own-policy gateway adapter has no allowlist 1185dfd773f89775296cacfdde937086bfac5046 test: cover legacy Office document extensions f82cb4812086f705b4ddbd35c76b08b640aede2d fix(platform): add .xls, .doc, .ppt to SUPPORTED_DOCUMENT_TYPES 4fd9397ae39bf1481587564637428164860bcc4d fix(codex): drop extra_headers for chatgpt.com backend 45f9099e516192f6d16023f1f2944c13e94112be fix(matrix): preserve markdown table structure 8393e7abc59dc387a3a7753e96a41b03a9243016 refactor(cli): simplify safe-mode startup wiring e2d80b68856ed41ec08b2a34f6b4c75e53082a12 feat(security): deny writes to startup and global git config 5747d9a2d86e1b3f1249528cb066b639d4c6281c docs: mark opentui composer-ux batch SHIPPED (F1–F10, decisions D1/D2) e01b04de466d28ccba145868fc81ddd8296d8131 fix(tui): chrome cost from Nous portal headers only (F3) ef9232a2f7d17a339bcb88368060d8ee7d47a1d8 opentui(v6): paste-while-unfocused + clarify prompt rewrite (F4/F5/F6) 5268027e6b2936cb43ad9fe5c680f27d3d7da4bc opentui(v6): composer UX batch — slash trigger, @-mentions, !bash, right-pinned cwd 4373e802a1b90150b131b459c52e84ada2e70d06 fix(docs): reuse healthy skills index during Pages deploys (#45616) 6331a12ecdb1184e45b11a309b45c5fb033b5405 docs(handoff): concrete tmux-pane-screenshot usage + note skills are TUI-reachable b6598017c801fec746ad3404993a9dd76abd8156 docs(handoff): concrete tmux-pane-screenshot usage + note skills are TUI-reachable d206e1f51dfbb12e06d2cc67eb5c6223b53bfdc4 fix(dashboard): keep local file browser on home 16fb573baecc0881a5a5e21c74679e39990da0b8 fix(gateway): clear bloated compression binding on compression-exhaustion auto-reset 463eda62764cd0b1a18f64f3a270801a9de6161e docs: OpenTUI dev handoff — base operating manual for continuing memory+UX on the canonical branch 5af3a81490e8c3065e0498f6f422d6193a2d6d9c docs: OpenTUI dev handoff — base operating manual for continuing memory+UX on the canonical branch 6f43ff5572d31d7bc7a98cdc7da3ad94ccc21ce2 chore(release): map Gemini schema contributor eed61a12517b01fa9a3117ffacf80809a23d369f fix(gemini): add role field to systemInstruction 74c5158b102cb8af7f12a4fffcdc6dea95dbed89 fix(model): show bare custom endpoints in gateway picker (#45597) 6724daa2c2f1ca6693c6a47b589d61bc30f5d390 fix: keep CLI idle timer ticking (#45592) aa53a78d6703ebdb0a9e05bc4d8878c1720930dd fix(desktop): hand off Windows bootstrap recovery (#45594) 0333a99925d8971dc567743f9747edb5806b7217 fix: merge session-only model analytics rows (#45582) 5acd185f7ced2c629f5c36387f01c4ceb5fb4c9b fix(moonshot): handle union type arrays in tool schemas 39a35b784f1e64c06c5ddff5b7049ba63fd238f7 chore(release): map custom provider resume contributors 2667601c05cd3f61e9c323568baeaac541ff3b9c fix(tui): keep reasoning-only assistant turns visible on session resume 643dc8279306751048e573c53f3f5441d9f773f8 Fix custom provider identity loss in session persistence e256f4aae493cac7d591a7de9034ecc0e0fa307d fix(gateway): don't restore a bare billing provider as the resumed session's provider cb125c2b3fa66834e3709e229ca559d7ce180174 fix(kanban): pin assigned profile toolsets for workers (#45590) a59d5e37e8ab4343f86ba733b252472e2ee6551d feat(telegram): make rich messages always on (#45584) 4b646bc21e64eddeb5dfb3c48acf4388d8bdf1fd fix(auxiliary): preserve main provider base url (#45587) 62b4618e9a3edb9d1981c3a19e52d6bc9af70df5 fix(dashboard): scope sessions and analytics to selected profile (#45598) 2abcae9678f9a40eb2f7afac3c600f2c5fdeb39b fix(cli): preserve renderer state on resize a77e2083c5338b0519eec981e6851f852d700d36 bench: post-consolidation verification — mem2000 303MB, digest unchanged, 700 tests 2a28bbcc729266045479b14c8e4a973ef31592f3 Merge feat/opentui-native-engine into feat/opentui-memory-window c814d3d1dd8d2a79b98803e0291eaaac68f50927 test(installer): regression for unmerged-index update failure 573b964dc780a9aae91eaf7b5a64497cfdfd2828 fix(installer): clear an unmerged git index before stashing on update aa0798352a84d6e47b8a4a9c2ea26ef36552f718 fix(auth): self-heal missing Codex access tokens 311ff967ded9383abdb6085611aa9bd03676ce99 review: validate refresh_token, path-agnostic recovery log, map author email bd66e7e3fbbc8f18d29fd800762a0264e8a64bbd fix(auth): self-heal Codex refresh_token rotation by reimporting from ~/.codex 2681c5a12d8dbd8e27aa89949228fd2da04d6244 fix(photon): correct gateway start command (#45566) fa2aba90b4b0db33283fc09a862e3a4edff3206b docs(docker): explain per-profile gateway ports for multi-profile setups 5b857201b7a2a38db12b0b91d97ef35a3d00cc36 fix(profiles): correct misleading per-profile gateway port docstrings 1fb4a46ad48a91194f3eb1cfd60d63284ac6a461 fix(tui): preserve custom provider identity on resume 905ed413d1e8ee8875c8cef797e3501ab1ee9b34 fix(doctor): avoid unsafe npm audit fallback bea6c1c01fc27e99f44ab8f8898ae90a7e03ba4e test(doctor): assert audit-fix hint avoids crashing form and explains build-tool advisories a5e9b17ce3ad5b39a9896497fef0398b7a9a0d9d fix(doctor): stop recommending the npm-crashing audit fix, explain build-tool advisories 5d6c16e97237ca08778291a11695faff9b2e5963 test(desktop): cover the inline command expander on the approval bar 266b5a19f128799d2c604a965872608902836ceb feat(desktop): expand the full command inline from the approval bar 9f6224033cde9c699bcf7e35a1dc607da7a86177 fix(gateway): sync compression split on failed turns 202e318cb1173a3d2e9d256d251d2062b65e9062 fix(gateway): sync compression session splits before failures 2d474e39c7ee4829e3f72516d43902c2fa34687e fix(acp): preserve memory provider tools 2a5dc0ef3df433a36abed9ee544ea067d807c438 fix(slack): make video attachments available to agents (#45512) 197337cc47bd55613cfe0367fe30cece985b7f03 fix(gateway): suppress duplicate final stream sends (#45517) 8cf9d8689d56dc8ad742a6113b0f502ec464c835 fix(desktop): keep composer usable during reconnect (#45488) b62e57b2f46c87b6682f0418e448988514cfc70e Merge pull request #45445 from NousResearch/bb/desktop-stick-to-bottom bc060c7c1cc4d698a7c0b5391f15d9998103c96a fix(models): remove unavailable claude-fable-5 (#45492) 3803e5fc28ef36bf81f5b6921aa44aac986f12bc fix(agent): don't treat custom: pools as cross-provider mismatch (#45289) bdd3868b577aa7fbdf99528b0197c3acfe7e1abc fix(desktop): keep profile color picker open from the context menu (#45489) b6c7ebf028d8434270c9f446edb668c76485025e fix(tui): honor provider_routing config in the desktop/TUI backend (#44953) 7b7ab279f23c23e123142cb22424f144f749ba77 fix(tui): opentui launches when fnm default is older than 26.3; chrome bar reads the real cwd 3d1691c48b9bc1d24046000aabbb8a1c041d2a60 fix(tui): opentui launches when fnm default is older than 26.3; chrome bar reads the real cwd b2bc48cd5e48c54970a516ab92dff7494809153f Merge branch 'main' into bb/desktop-stick-to-bottom 9cd3d8a6acd64ac9d0a4d58e3cc90d35e11d8d52 Merge pull request #45466 from NousResearch/bb/fix-image-generation-placement b82d2e549fa501762cda4c59c36c1fe07204f615 fix(desktop): keep the diffusion placeholder circular at any aspect b15dc58064eb4d1b0967fbc116d8a5afc1ab2fdb fix(desktop): keep generated images in the tool slot, not inline acd4278c8ae2029e48fd0d6f0983bf4841ce070d fix(nix): use fetchNpmDeps hash from flake check be6713c536823c651455b8b4a0a2c13beb498912 fix(nix): refresh npm deps hash 77687156b4b80936ae8ad9f604a21ba93b4313d6 fix(desktop): tighten multiline user prompt spacing 45ceee8a3269d27b827926a03bb1c2211a688983 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/desktop-stick-to-bottom 0a7a81835b89227041d06e9486bc3e4b22feb7d9 Merge pull request #45255 from NousResearch/bb/desktop-stuck-tool-rows 76b93869d8edddab860e225b11ef9e04df33ba63 fix(desktop): rebuild thread autoscroll on use-stick-to-bottom a8562761243fa51dc0f5f7e982049bbc9ef0fed6 Merge pull request #45414 from NousResearch/bb/fix-desktop-queue-drain-strand 1e755ff5568a4afac0309261952a55752556c6e7 fix(desktop): keep recents sorted unless manually reordered (#45404) 7f302c91b240fcfff4395f738043a47e85c41c78 chore: uptick 18916376f1987fed087f899f9cc6047739e00f7d fix(desktop): never surface "session busy" — retry every submit past it f23a4b7bb3b8a4cf533b9d69697146ebe3ef91c9 fix(desktop): keep queued drains quiet on transient "session busy" bf090deed33ef24787797b74230252be00553774 fix(desktop): stop stranding queued prompts across backend bounces 7d183f64979ffd91d52175d03c695d1ecad752d1 fix(desktop): theme the image-gen placeholder instead of a white square (#45354) 492c40277457f8fee6ec9e9381617ae6c2bf97e4 perf(desktop): cut GUI streaming & interaction lag (#45343) d62e9b75922b4efeb5b9d0992fcce49b2c62ddbb build(nix): refresh npmDepsHash for the remend dependency 3cf7d43262d405ccf04e5960f413548cc8e1ee01 perf(desktop): faster session resume & warm AudioContext at idle edc36f3a4589f03da3c48b8a35d70aad16cba61e perf(desktop): incremental markdown rendering during streams 7c226cc57fe61735657d810916f4841de9031b74 perf(desktop): isolate streaming re-renders & cut layout thrash a86b7b314b6c381204ebdcdd7ed79917e6eb3f9b Merge pull request #45273 from NousResearch/bb/sidebar-workspace-dedup d14f6c95632bc7240b2b2724d43e7f130564a695 fix(desktop): stop streaming autoscroll bounce; move attachments below user bubble a1c6349c1f7c83d5b725033cebc8ca5491cad19c Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/sidebar-workspace-dedup 75d1e21446cb626c2559d913fc8ccbe199a242e2 Revert "feat(desktop): follow streaming output at bottom + jump-to-bottom but…" 78ce91750ec66cab722cb9c4cb897696854fc5c0 fix(desktop): crisp terminal text via opaque xterm canvas 1a3cd3d436a19215ec5785d27da24d9320d27bd8 refactor(desktop): collapse sidebar drag-reorder into one generic ReorderableList 9688c1a94f7df94043c1fe457e7cdc4b307d9969 chore: add Kimi K2.7 code catalog slug (#45283) 7e46533d9f3ae879b87e6561d61394d89ba9c231 test: compressed-summary metadata flag set in-process, stripped on wire 956af7f3c31118277d458a72529e61da6ddc422a fix(agent): add metadata flag to context compression summary messages (#38389) 1899c8f507c34338d3c66493cffd7d10ba705a8d fix(skills): run youtube transcript helper through uv dd12a5403de9500b185a4bc18804fb2a0665cce5 refactor(desktop): extract shared WorkspaceHeader for repo + worktree rows 8905ee6b8a28ecca714776a94f563ac6da912e3b fix(agent): rewind flush cursor exactly when repair compacts before the cursor 5d0408d9fe07e0182de562d8d7f795aac07f2798 fix(agent): clamp flush cursor after repair_message_sequence compaction (#44837) aec38855b5792e4a912d527b64df1a43cbf09c90 fix(agent): preserve recent turns during compression 0595af0ad19b9b825e0fa6668a19069563ff482a feat(desktop): move workspace/worktree drag handle into the leading icon e90672696ea7cc5ef26dec999a77ffa8c1c35ada feat(desktop): worktree-aware sidebar grouping + composer/sidebar UX fixes bbf020e709eca4571c488ebb7cc65b1202bf5dab feat(desktop): follow streaming output at bottom + jump-to-bottom button (#45263) 135fe90166e8dd54739c9756eea3074832db826c fix(profiles): backfill .env for pre-existing profiles on hermes update (#45247) 68536d4375f09eb87a4068b4c5f127573dcdafc9 test(compressor): regression coverage for assistant-tail anchor + compaction rollup (#29824) 2fef3e2df2ce35a4b4e1a452b821dc9ebca2d3aa fix(webui): split merge-into-tail compaction so reply renders as its own bubble (#29824) 691ff7c1887de4dac853ac79fee48d681e110de6 fix(compressor): keep last visible assistant reply out of compaction summary + label handoffs in WebUI (#29824) 7a318aae22a68f986dcd937bdcf9fc82de6c07d3 fix(profiles): exclude session history, backups, and snapshots from --clone-all (#45246) b16e22b8f27211a57cabcd82f9c1dfba87d815ff fix(desktop): persist tool-row dismissal across virtualization; keep caret hittable 95dd87f9e39a9230cf42fab412f6d16700caf46a chore(deps): bump tornado from 6.5.5 to 6.5.6 2e874ef87926b6b61bec77bb78d0fd8af80b97a4 fix(desktop): allow dismissing settled tool rows 0db5cb8e7541c3713c0e14e09e9fcc5d99193ca7 refactor(agent): hoist summary end marker to _SUMMARY_END_MARKER; strip it on rehydration 749b7219c46820d2f928efe37d28ed768669e5fa fix(compression): always append END OF CONTEXT SUMMARY marker to standalone summaries regardless of role a118b94a856ef80301cb26d16be6d08c0104e0db fix(dashboard): skill installs from the dashboard silently auto-cancel (#45150) bba9b519aae8bf5e734a13921534fb99050dd562 fix(delegation): remove the default subagent wall-clock timeout (#45149) 9b01c4d193cc5bbaa7893e278740b7c899ab7320 fix(update): never spawn an interactive polkit prompt when restarting a system-scope gateway (#45145) f6b0b09988e2af3cc00c2afcad5d574c39cba515 feat(web): make grounded citations + summary streaming toggleable via config.yaml fca84fe20b26942629f573445b59bbaa61f95bb9 test: regression guard for Nous 429 fallback re-entry; AUTHOR_MAP entry 2714fc8396e1be4164aeb08b010eaff6fbbdb856 fix(agent): re-enter retry loop on genuine Nous 429 so fallback guard runs 82d3d44020c5d4a9b17e5d3bb3793de9282cde28 ci: make some *ty* stuff errors f5f41a0921fdf8d63f582e8ca5eb88e32670001b feat: refactor doctor, unify pip install and project root dc467488a75d0cfecbaaf0ca151cdb69ed7d59ce test: assert typing-stop-before-callback as an invariant, not a call count c2326bc3be117885d75498de4df8b6e774f4b96e chore: add itsflownium to AUTHOR_MAP 331cb38e21affee3527dbe5a646ac6d5e25f2996 fix: stop Discord typing after replies 4312a9cc4e7770e189542759379995999525a73b test ci fa5e98facb7747b764d2b71a8304cd137a6431d4 fix(send): helpful error when --file gets a binary; document MEDIA: attachments (#45116) 652dd9c9f2480eec39d84e624170c76ea29e50ea fix: rich messages follow-ups — reply_parameters, send latch, opt-in default 05b9c84ca4b154011352a5c8ee463801621b81be Add Telegram Bot API 10.1 rich message support 01669f2f12122b5cbf6078d61325ab616a74d13b opentui(v6): /sessions groups this directory's sessions first + TUI persists its cwd 27a455d301c152940df2b300334e0fb4d810c7d7 opentui(v6): /sessions groups this directory's sessions first + TUI persists its cwd 6b4073648ece9a8ce3869928cf3427459c0da203 fix(tui): config.yaml wins over env model seed in per-turn sync bc3f4ed70fa5380e0102e5c0220604b4eb726c39 Skip redundant model switch 8c3c08c50be8b22341e5d55eb0bae75f375e21dc Update implementation to make it cleaner c61815232abe138414582cb84dbebd3ece9caafd Update model correctly when updating from dashboard 1e25358a8f222ffd1711ba8901ebaa32ac263bc7 refactor(desktop): use port 0 for ephemeral port discovery instead of PortPool reservation 8044bf0206c12dfba4dd2169a66d1dbf978c02b8 fix(ci): only save test durations when tests pass 7e24bfcb0b42eb6d289e130cb596eeead6d39ef4 change(tooling): update node to 26 everywhere, keep node version managed 4d68984ec7640c248544741873a0ea0cf4d3563d fix(tests): remove no-longer-needed forensics 6ff39c31add9113469274e4093b8f66bb2a264f1 fix(tests): guard against real 'hermes update' subprocess spawns in conftest c41a6534cf2240d69253ca748391c0d62d81c3b0 fix(tests): mock subprocess.Popen in all _handle_update_command tests 2f9d18711fb98aaee9871cde9f6193e17f43fed5 fix(ci): remove pytest-timeout, use per-file timeout only 46d758bb3e0709bef51b7e3416cfb25da95d2335 feat(desktop): window translucency slider in Appearance settings (#45086) 7d4e60e44ab94ee06df01a8d17f0b9ad096c1278 docs(website): redirect old automation-templates URL to automation-blueprints 79c3ed3cc91a53e910f403e7f026a1f4ef9c1f1c fix(desktop): new chat honours the active profile instead of rubberbanding to default (#45057) 7d5fe2c39f5d8aff7a7dddc799bdf649030541e3 opentui(v6): fleet memory self-sampling — HERMES_TUI_MEMLOG + memwatch-report aggregator d62979a6f34f64f2ed840f159aac66e24d7cad78 feat(desktop): composer status stack, live subagent windows, editable prompts (#44630) 853d32fb90a580ef75ce4fc6c30caf5ca59dfaa6 feat(web): Perplexity-style grounded citations + live summary streaming box 9c505217044cedc28f174f1b74174d00d9ea1c81 fix(desktop): complete backend PATH for Homebrew Codex d4a5919f2585f6c9ee28b5e790ce067b5f4d3c6e cli: worktree lock + dirty-tree preservation — stop pruning uncommitted work 88dbf95105644efb067500136c4a73277d3936d4 fix(dashboard): profile-scope Channels endpoints and seed per-profile .env (#44792) e20e0bd744596df9d97b318f77fb8182d4a591e3 feat(Yuanbao): support wechat forward msg (#43508) 0fd34e8c5a7a16eeb28e1eff46fd258d5e6f06c0 fix(teams): cache document/video/audio attachments and classify as DOCUMENT (#44778) 7ba5df0d52b9c62c66fd0fd62f085b77a7a48a71 feat(billing): /credits command — balance + portal top-up handoff (#44776) 4474873d2caae0fdfaf1e1e57fc490fade8dc143 feat(cli): persist resolved approval/clarify prompts in scrollback (#44702) 8e5b7592f8dee4c6f2ddfe418349843588288be3 refactor(agent): hoist MEDIA-directive regex to module level 286ecd26d8770639a15e3c448cc4405ab5da6362 fix(agent): strip MEDIA directives from compressor summarizer input (#14665) 8b2a3c9c51910a847493cf140a14920110de6363 chore: add kdunn926 to AUTHOR_MAP 74180ebf0b1c9b12eca3fbd064df9ffc8229cb15 fix(gateway): classify SimpleX non-image/non-audio files as DOCUMENT f03f161b39d61c1ec873f3b1dbce13402e428645 fix(gateway): classify email document attachments as DOCUMENT 1e29ab38c739b876228af38805f1435be42d54b8 fix(gateway): classify Signal video attachments + catch-all DOCUMENT fallback 8e821cd2f5166c326e2a8dfe90e71bbc1d93204d test(gateway): verify Signal inbound text attachment sets MessageType.DOCUMENT ffef9da9b7d46d61609b7986f8c314d27f133bdd test(gateway): verify Signal inbound PDF attachment sets MessageType.DOCUMENT 8207ae888dfae8739ec3d57ceab572221db6e8e1 fix(gateway): add Signal message type classification for documents 05470aa1b60236b66ae4bfa57dfb3b1aaa4f6a89 feat(messaging): expose action='unreact' in send_message + react dispatch tests b4e95a2efe50c7cb6ec2daab1ffc4065976d2704 fix(photon): add clarifying comments for Windows-safe os.kill usage 23305cfeabfa4a94e26c2324e01cd9513c83af3d fix(photon): normalize DM chat keys in last-inbound reaction tracker 156f4fba923eb38edd1a05c739a59835bcccf4fa feat(photon): add agent-facing emoji reaction support a23c0b378ca965feffc8f1287cf8be36f57f7f04 fix(photon): use per-call httpx client in _sidecar_call 9bfff6e16cf115eb3286a41753cd3016d76529f5 chore(photon): bump spectrum-ts to 3.1.0 a652131c421b314a9cb72eb3044922f0c6273d67 fix(photon): stop gateway restarts from orphaning the sidecar on its port 573c4e651154d582c24bd10a126bf1aef4698ec6 feat(photon): upgrade to spectrum-ts 3.0.0 (pinned) with markdown + reactions 0a963d8c9a07d16615545afb789d6aa8c0252995 feat(photon): add telemetry toggle via `hermes photon telemetry` c196269d8d724da18232c6fd8bf2b96827f6ee9d fix(credits): suppress usage gauge when top-up funds exist + add display.credits_notices toggle (#44716) 338b5275be9408902b9afe9c59108647200a1277 opentui(v6): syntax highlighting for 10 more languages (vendored tree-sitter grammars) 2402e7777c6831805ddd485e1023ff8c2c435d51 opentui(v6): syntax highlighting for 10 more languages (vendored tree-sitter grammars) 906bee9cf7917326bc41d2df559647ec14c4ee7d fix(nix): natively compile and correctly stage node-pty for desktop app 046f444ddc5b7fd1479e503e0c87f6690c0d5277 Merge pull request #44738 from kshitijk4poor/salvage/memory-sync-multimodal-content ef9456212538fe6ee2f2dbf354726fc2017a8e0f opentui(v6): terminal window title (OSC 0/2) + waiting-on-you notifications (OSC 9/99/777) 3616b813ece5942787b3b818bcd0178e09c01dac opentui(v6): fleet memory self-sampling — HERMES_TUI_MEMLOG + memwatch-report aggregator a14d44482eafcffd902ae7a2be731adfd3efb372 bench: post-merge gate verification results (gate/mem2000/scroll2000 @ f0ec24a) e9fe618fceb67e97a254d771e577e00e4785f70d opentui(v6): terminal window title (OSC 0/2) + waiting-on-you notifications (OSC 9/99/777) 15439bee4700dc378777846481afe9218cd0e624 refactor(memory): reuse _summarize_user_message_for_log instead of forking it 87893fe4cb7160c45553a6eb70fae2d2f3ed8370 fix(memory): flatten multimodal content before provider sync d810f2b2620bff54262e13c3e3239e771c11f342 Merge pull request #44676 from NousResearch/bb/fix-schema-ref-default b3f5e17bb9cac91a4c6bafe42f43480aeee3d238 fix(tui): wrap long approval commands in the Ink overlay 81cdbbddc84d5c0efd55254eafbfad7c516d0e36 🐛 fix(cli): wrap approval preview hints d6df38bb6b0a8c78dc6088427eeaeb668b05717b 🐛 fix(cli): wrap long approval commands in prompt c7bee8f961b84a1dc4baeab647ae195bb33a1bfe refactor(agent): drop unused tail_start param from _derive_auto_focus_topic 434c684bfa3276c82d1b023f46ff2a7ab13f1379 fix(agent): focus automatic compression on recent user turns db7714d5f17b1c9d009b8e8211a1e8a005295383 Merge pull request #44331 from NousResearch/hermes/hermes-6b48295e 343803b23cbc83423cffa0107d274af715754b19 fix(cli): use subprocess on Windows for dashboard profile re-exec (#44282) (#44446) a942bfd9ccf2e988b9564ea8aa383be95ea83731 fix(gateway): reset _last_flushed_db_idx when reusing cached agent (#44327) (#44518) a35b370284ec62b2851c26c23aed526a2c4d50a7 Merge pull request #44674 from kshitijk4poor/fix/slack-reactions-plugin-registry-bookkeeping b2d151abe2494cb049b7b2f479f55613b57259ba fix(tools): strip default from $ref nodes in tool schemas 44bd4780392610eff230792ca3029d82dbd3d377 fix(plugins): credit shared hook/middleware/tool names to every plugin 889a13696bf12995ac5288c613b825c78f6a4899 fix(plugins): clear _plugin_platform_names on force-rediscover 82d570165ee2cb622da46400dcf000369ca9d346 fix(slack): ack reaction lifecycle events c57417005099b66e94bf053cd309235bdefb2704 Merge pull request #44664 from kshitijk4poor/salvage/slack-plugin-action-handlers e4c168b1f4f3432864e3fe3319c79ae8daf7f690 chore: map bcsmith528 contributor email for attribution fc0774b7f2cf30f445a616cdbb357371005e3bbe Merge feat/opentui-native-engine (origin/main @ 24f74eb88 merged in) into feat/opentui-memory-window 08e8bedae82f98084deaa2fe15067e3e69d5fbd2 fix(gateway): keep plugin action wrapper signature to (ack, body, action) 62e937bf2b1ddc9880554a08462417ac85199bc3 feat(plugins): expose register_slack_action_handler API 3d7a64c383b91031ba3a197c6aad7e6870526034 Merge origin/main (follow-up delta) into feat/opentui-native-engine e1067dbbe5c2e833eda16f424bf30113995e0712 tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 8356b10afab8de1f88f919fe231079f87d64c479 tests: pin ink engine in _make_tui_argv npm-bootstrap tests (post-merge semantic fix) 24f74eb88853162899fe345dc34a9c5a20f66657 fix(desktop): make file-preview source + markdown selectable (#44648) 6e41ca956bbf03f7a7c07539bdb29d1c78f4c1f6 fix(desktop): bundle JetBrains Mono for the terminal pane (#44642) f0ec24ad50a9e230b11232c527bd83f9b83eecbb Merge origin/main (6db65e687) into feat/opentui-native-engine ed2cffd4509c0f03cdfb4a7c26176e119c9ba03e opentui(v6): diagnostics-gate review nits — completion-mechanism precision + client-only design note ab37440ce660e54507499288b4510cdc5e43de47 opentui(v6): diagnostics-gate review nits — completion-mechanism precision + client-only design note 50059ea403ad3aeedf40ad0d326709f1605190e9 opentui(v6): HERMES_TUI_DIAGNOSTICS master switch — gate /mem, /heapdump + window-stats default cf3002664b109b4d1993976b0585bf952f40db74 opentui(v6): HERMES_TUI_DIAGNOSTICS master switch — gate /mem, /heapdump + window-stats default 6db65e687c53c933ea8a3b8d59f261de8eb4f0ec Merge pull request #44627 from NousResearch/bb/desktop-tool-row-copy-affordance 09bcf5a9370e8bc60e1d0a784c360b9721fc0256 fix(desktop): move tool-row copy control into expanded body 22434f4d07199fe3562c4112c5efff2f06febd19 bench: rebased-branch verification — digest unchanged, mem2000 289MB fc8d5f203a56d5c63edee531a12bbb538a55891e opentui(v6): post-rebase fixups — dedup probe mouse, .demo lint ignore, cap tests to windowing-aware contract dc57ad98db14c1c39f2d9bf62bc533b5b385cc40 opentui(v6): post-rebase fixups — dedup probe mouse, .demo lint ignore, cap tests to windowing-aware contract c5806b9ad9904b3dc3de30d17d9f9851f254317c docs: upstream alignment playbook — forkless invariant, shim ledger, upgrade contract 44c896a5e250ea83ec346a392f985685bd2b8b5a docs: upstream alignment playbook — forkless invariant, shim ledger, upgrade contract b1456070293f574f845476122bb9442de8e190c2 docs: the OpenTUI memory story — ELI5 walkthrough of the 686MB→300MB campaign 6f5f7457feebd69d9fe6e9f76d5c64f8ee825cc7 docs: the OpenTUI memory story — ELI5 walkthrough of the 686MB→300MB campaign 4a3b7551627513c0d0d7f9d37917c8b2683fb6d2 opentui(v6): restore scrollback cap 1000 → 3000 under windowing (#27 payoff) dc3c7dc40588d0f6af5053eccddd9cc18411dd5e opentui(v6): restore scrollback cap 1000 → 3000 under windowing (#27 payoff) 16dbcbe85d9240ff7589c589b597dcf8b5befc33 opentui: Node 26 onboarding — scoped .node-version, engines floor, README setup guide 360388f627c4c0dbb514c1178f106ed43f848bda opentui: Node 26 onboarding — scoped .node-version, engines floor, README setup guide c04aaecb513fb9175c7d4888afc3f1e058b77832 opentui(v6): windowing S2 — pin selected rows instead of freezing on a lingering highlight 375899f89c6e075bfbc2380792a6c7cab989b70f opentui(v6): windowing S2 — pin selected rows instead of freezing on a lingering highlight eaa069e3229985a1f6301320c303df08d993dfd1 opentui(v6): transcript windowing S2 — append-time adjudication + windowed resume + edge measure fd956d3189215cbe49476c7408af51261a625ef9 bench: S2 controller verification — mem2000 307/373MB, scroll p99 6ms, digest unchanged 2d7616121b6d23cb62345971f1811588c095403e opentui(v6): transcript windowing S1 — exact-height spacers behind HERMES_TUI_WINDOWING fcbe525a63ccb7489ddd0af9e3e9192bd4007109 opentui(v6): transcript windowing S2 — append-time adjudication + windowed resume + edge measure f7381800f7a179d35ea064467e6fb96185a620af bench: windowing A/B knobs + S1 results — windowing −170MB, GC laziness −90MB at 2k msgs 411334b3d0a213263b28c1b4f082581346e44529 opentui(v6): transcript windowing S1 — exact-height spacers behind HERMES_TUI_WINDOWING af1780f2caccbc11c650244eaa242e58680fd66c feat: remove no-venv support 4d67ac6172dcc991facc3dcc0c46ad03dc357eae Merge pull request #44596 from NousResearch/bb/desktop-rtl-bidi 6c00077d3838c1996e361e577b0064214fc07027 feat(desktop): auto-detect RTL/bidi text direction in chat 9e484f052a99ca4ed312e8232b91a3c77a289cab Merge pull request #44559 from NousResearch/bb/persistent-terminal-env ab06ef8ed615a6d57ad01930794f9b40b467c489 fix(coding): teach agents terminal env state persists 74fbd7f01fb24a5d62591aa6ee75ae76d083d28c fix: update all error messages to recommend 'uv pip install' instead of raw pip afe53708ee7400919ae3e17a6dde9b02629e5c87 Merge pull request #44545 from NousResearch/hermes-worktree-code 5affecb443793994ba75772353dd8352ac9a2d6a fix(mcp): capability-gate tools/list so prompt-only MCP servers can connect (#44550) 96cc7ee1e3cf9471771e9c7333c4c046a90bb9fa fix(coding): don't provide worktree root in context 880107ab24c6b10123711bc3ba9b2cb3e1e02102 Merge pull request #44529 from NousResearch/bb/desktop-profile-fallout 4ddb03390a95d1b92349bbb9170d3f0659e56cb8 fix(desktop): collect + persist API key for custom OpenAI endpoints (#43896) c6007e5c1a5437c1b2c86429cdd47c548b1fddca Merge pull request #44534 from NousResearch/bb/approval-allow-permanent e2145a5c9cae337fad64ab6cf34fed730c00595b fix(ui-tui): stabilize embedded dashboard chat gateway (#44528) afa3e891197253a0a648df7e821c0fe0a23e7992 feat: add atomic venv recreation and doctor integration 55a18e68600d2fd39ac50e76ef98c7ef6d9e2153 chore(approval): tighten allow_permanent comments + DRY the no-always opt set b097d7b03352bcbddea53571ac65c048e4c16d45 refactor(desktop): use native fetch in dashboard-token cc726aad687af5847dbde3e39787ae866a0828b3 refactor(desktop): fold served-token adoption + foreign-backend refusal into one helper 0b2dd9f6c1194b1379150d8ef2a2228cd78bb907 savlage me 81436e143ebb1230dcdef398b46304d29ee26bfc fix(approval): carry allow_permanent to TUI + desktop approval prompts 9ff0ba082739a74c54fc9bb26062be168a167391 fix(desktop): prevent backend port-squat boot loop and pickPort self-collision c54288416897f267c73fe1dd63d0cf85ac9321f0 fix: update all manual recovery and diagnostic messages to recommend uv 5f298e5b2a95382948853b09a3c0f46b0df1c434 fix: update hermes doctor to reflect strict uv requirement 4deaa42ccbe16b70e94896bc02313a729749127b refactor: strictly enforce uv requirement, eliminate ALL raw pip fallbacks 4bdb2ba38c8458cb9c393a8bfd7b3a2a81832db8 fix: add PATH uv fallback to get_pip_cmd() for Termux compatibility 71bd99b8b08861342e6bc3dd6c0fb2772e9d879c refactor: unify all venv and pip installation logic into managed_uv.py 04c8fcd1dfc547b1f6dfe5a6de83795fa1c592c7 refactor: update google-workspace setup script to use get_pip_cmd() e77f1de940720346c9b108ef069d01beb8e43b7b refactor: exhaustively replace manual pip invocations with get_pip_cmd() c64972af77ed276611643a23a67db1ad32d734b5 refactor: replace manual pip invocations with centralized get_pip_cmd() 657bd1d32836bfec13494862ac27a7f8ce338828 refactor: centralize get_pip_cmd() in managed_uv and add doctor check 8e291759fcf7f11704bad264b131bf35a26590b5 fix(doctor): clarify that python 3.10 is the minimum supported version 02df5207a97befc2694a53eb805dcbfe14866d00 fix(doctor): note that git is required for update 23ce5c00adaa005a552d6cdd222fee45359b99fb docs/cli: apply deprecations and platform warnings from support tiers plan 8ee19f354d71125aec811975d8464eef829e0eef refactor: rip out ensurepip and standardize entirely on managed uv e3ed7722b5b193bd22e4e2ca346f7ae5c1de09e5 fix(desktop): refuse a foreign backend's session token after readiness 7a2d498b9dd2f1f16d80ac975c3e0800f82e385b fix(desktop): route profile session reads e96fe06e4968ebaf1c2df0a2a9c9fc9fc730b6cf fix(desktop): use served dashboard token for websocket auth 9102d4a588c84096f648a99d2a8fc10b154d118f fix(dashboard): show Windows 11 in host panel (#44511) d221e369b8f33912235f070402a7d295224298c1 fix(desktop): recover from transient assistant-ui index-lookup crash (#44493) 72290f0809ad5dec91a657cd4f4bcd4b999a692d fix(desktop): use served dashboard token for websocket auth b1fe2107d6e02207c8d7c315e4b51d50620ecb98 fix(desktop): keep named-profile desktop backends per-profile (#44510) 73969771a514cd5372f6d954b65ddfd804463ef7 fix(desktop): discover MCP tools for dashboard /api/ws backends (#44512) 2ee69d05795dc8317f801780c5f2ad5f523427ac fix(skills): let ClawHub index build walk past the 12s browse budget (#44500) 021ed6914162416522462b009de0bec1513c73a1 docs: finish Automation Blueprints terminology rebrand (#44470) 13022f3e2a786d18d94b025e6cc4dd26aea48cb1 wip 6c752ca3a5232baa666aa6099dedae1e26484b49 refactor(agent): tighten SUMMARY_PREFIX wording and fix stale doc references acb2954d82654f6e730497d19a5bdb0ff74e60a8 fix(agent): freeze carveout-era SUMMARY_PREFIX for renormalization 8f8cad7ec5a69a6d4ca9ebdde2213498c37ddc3d fix(agent): strengthen compression preamble against stale task execution (#41607) d5e2fbf244027620ff7aed2ba36fbe0eb5997cf7 fix(agent): frame compaction handoff sections as historical context f62abc9ac2a5c9c50ba4c7cc9871bef12a491219 docs: add pip deprecation and migration guides to installation and updating docs 967574f9d7a19d6f1ffb7ca36acdafe2f073a28e docs: restructure platform support to prioritize CONTRIBUTING.md 484f484c25bc89fbddc73f1d80410e99e6133fd5 fix(desktop): carve sidebar nav rows out of the titlebar drag region (#44453) 114e265737c737ef9ca45401d03f9026c4d955d3 fix(plugins): don't cache a failed discovery sweep as discovered 32a73010bb09d86b9adf6ca70f7c59a555ddb739 test(web): cover keyless default surviving a failed plugin sweep 93764b9303155d48723654c621a01e6e54d28a49 fix(web): guarantee the keyless web default registers even if discovery doesn't 3017095449245f51f51e1240e9ba198049984bf7 docs: add platform support tiers to AGENTS.md and create reference doc 89be1f52b28019c0c676d7985d2a05bde8a31224 plan c3464ecf453d02410c65a14812f409d186eceead fix(discord): recover from runtime gateway task exits (#44383) e080365a7a319388a6e64dc49ba3de0f6de3be69 fix(tui): new weird typeerror 5e5308d34d87f65ff60a984210492a188419a1af fix(node): fix @types/node version 08b1c44a5330cb690a26a5e1983ff7719ec4439c fix(discord): extend bot-task cancellation to connect()'s generic exception branch 020ef76cf16bdb964f45414826cf95e1c10e52f8 fix(discord): cancel _bot_task on connect() timeout to prevent zombie client 1544813bfe5658c3b8b9c5e5506ef3692b5fb567 chore(honcho): replace example Telegram UID with placeholder 2708c33c7570d5d3d53c19c80124b06d0d939c08 docs(honcho): anonymize example peer name to alice 9a3d1a0a0e5d1587eaf27b243710a3bdb2bd6555 fix(node): bump @types/node lockfile to 24.13.2 for npm ci 13650ab7f86f43d3ff107bb14c444794c56aab72 fix(gateway): audio attachment note no longer steers the agent into punting 23a7458acfbea42e6c8ddf88bdba5c06152fe42c docs(website): cover gateway identity mapping in Honcho feature page 4e9be3ee325de0bc3d33528e5ee82c8aeeed5fc9 test(gateway): cover document context note for PDF/DOCX vs text e7ae145ac42cb129f8a529b40bb1749535885bbe fix(gateway): guide the agent to read attached PDF/DOCX instead of punting ce99a81123fa0cc69451f5af551bbb8013a2cff4 fix(dashboard): suppress unicode-animations postinstall during npm ci 743c55efa34f4cc46cd15f61b99c35520258c6ab fix(desktop): stop file tree throwing "Cannot have two HTML5 backends" on remount (#43541) 93a2f680fd18f08f70eaf5c96944cdf4dc477143 fix(desktop): preserve explicit hide-all choice in model visibility dialog (#43496) 8505e9d6691db5c9336703e4ce3ed9aabe9ff8e0 fix(desktop): disable spellcheck on composer inputs (#44415) a4f179c5099a2d74eca0fa81d69ea2f9dad82829 fix(agent): steer GPT/Codex family to V4A for single-file edits too (#44411) cb29e8a82e7e5fe7e431b25d4d4b9aa8a34446ca refactor(cron): rebrand Cron Recipes -> Automation Blueprints 3c489fda8175fa317be3c9c8d51f90f23de3a50a fix(commands): unpin /reset from Slack priority aliases — registry hit the 50-cap e8b757845de948762eced5b4457259fbcb8205b3 fix(cron-recipes): pre-release hardening — honest cadences, strict slot names, surface-aware UX e976faac7adb90618a6f7b3b5d0d6461cbc0afd3 feat(cron-recipes): /cron-recipe seeds a conversational fill 1593ca54066cdec09e986cd3bd45ac876a369463 feat(cron): Cron Recipes — parameterized automation templates across every surface 9a09ea69fb9a176620c0028367e9fc0558c7f9b6 feat(cron): Suggested Cron Jobs — one surface for proposed automations bfd6d165a75e76b434097b29cd039e37ae98a812 platform support tiers 4d6a133a9f5b38f11c7f8454ef0d9566e5736722 fix(agent): gate skill-index demotion behind the opt-in focus mode (#44387) c7bfc938d54538d960a7e09c0db3c13139723951 fix(dashboard): Config page header shows the switched profile's config.yaml path (#44374) 9121834b31984c2125738c7243792cbd2dc79df6 fix(desktop): scope remote workspace defaults 56a0f48ba6d9fe9483a30e3ceb394e1d2c6f295b fix(desktop): tighten remote filesystem wiring 8878484f85192a0d443a4c856b8e9f424ac46d2c feat(desktop): wire remote filesystem browsing db79e90130fed4d129338831087eb65caaaf4f82 feat(desktop): add filesystem routing facade 51f47f9a9774c97fe1973f91ade0970f9700ee84 feat(desktop): add read-only remote filesystem API 3645ee221cc5316a644022a79a5074a82a51cc40 docs(agent): verify edit-format steering against current Codex CLI + Claude Code source 8d2e0127b3c7777cc82a3fa34b84083ddd5282e0 fix(agent): gate skill-index pruning behind focus mode; drop redundant context-files line; cite edit-format sources e71d746820bf262214e4e1887683d3f65d211cc1 fix(mcp): avoid false failed startup status 5508f4bc5411afddac764155c53ca6a87790e532 fix(cli): utf-8 decode for whatsapp-bridge npm install capture (sibling of #43790) b2043cf157975170675d988b21105acf4b913419 fix(tui): decode startup subprocess output as utf-8 dca11b66502bf13625621795b546a71a5adb68d5 fix(mcp): preserve stdio argv passthrough ee1a744ace44d6ebdda599d0b3a07d0781c1d4cd fix(agent): demote non-coding skill categories to names-only — never hide skills (#44342) 52c7976f40271dfc31d9dcfbae4e8e97b75e10f2 fix(whatsapp-cloud): review follow-ups for #43921 2ecb4e62bb400b8f2591408b9586fa49fdcdd3d6 Merge remote-tracking branch 'origin/main' into hermes/hermes-6b48295e 9c051f57c3b1e9962feef958710ee58fa8ca2444 fix(dashboard): Anthropic API Key entry checks ANTHROPIC_API_KEY, not Claude Code creds; hide deprecated tool-progress env vars (#44286) e24c935cf39db371a900ec0588324ca947219b16 fix(bedrock): fall back to non-streaming InvokeModel when IAM denies InvokeModelWithResponseStream (#44293) b1af653bf6bda75efdec10225f5adeced30d34bd fix(desktop): Harden local file tree paths (#43618) e372803554be5027be3da23090c4ddf36e255a67 fix(desktop): refresh session model metadata on switch (#43977) d0e017bac8faeb3f08680052319c0091cfd335b5 fix(gateway): gate oversized Telegram voice/audio before download (#44245) 76fa55240d610e5aaf0e15bf74055dd039620496 fix(gateway): use base pythonw for post-update Windows respawn a09343cc964ba462dce871d7ebd3f225314d3ca7 feat(dashboard): SKILL.md editor on Skills page + attach-skill selector in cron modals (#44231) f456f302dfdcf74cebe50036ea39425decae3481 fix(gateway): refuse to write service definitions with a temp-dir HERMES_HOME (#44267) 8972a151a44c1f792a63ece7fa678b4fc67beed3 feat(cli,tui): show time since last final agent response on the status bar (#44265) a2d7f538d49c7cc282c25ebcc803c8349cae9cff fix(delegate): stop subagent tool completion lines leaking into parent CLI display (#44223) 9c16ca8790ede000914e7d617358a3320b1b7799 fix(dashboard): normalize model assignments + confirm-modal for backup import (#44237) 4717989c1014af020b60de1eddeabd3dc5f03ef5 fix(matrix): isolate room context and restore reliable inbound dispatch (#18505) 73dd584995ac227754c3833df7d6fc5d3ab7cfa4 fix(mcp): propagate HERMES_HOME override onto the MCP event loop (#44220) 3edd09a46f721c19e47ab39aad08ce8d3e61ee20 fix(whatsapp): restart stale bridge processes instead of silently reusing them (#44205) 875aa8f162aa40f07b19b2ca229720da70193d41 feat(dashboard): unify multi-profile management — one machine dashboard, global profile switcher (#44007) fcf49f313e95d6a0b4a2733c9028d4280d0a2f68 opentui(v6): double-click word / triple-click line selection with held drag-extend 8afb7bc570b8a88d6f8207446e5be81d62180cdf opentui(v6): double-click word / triple-click line selection with held drag-extend 85503dcecac8f56ec06cd8cf7e45ac8af8234ac1 Merge pull request #44038 from NousResearch/hermes/hermes-fb4ee8ce 955fa40062874faed1108f831864d29724a6250c Merge pull request #44085 from kshitijk4poor/review/pr-43754-ssh-update 0d3e2cc539525a2a5ebd4cfc92942eb1ec523a98 fix(desktop): deduplicate sidebar rows by compression lineage in mergeSessionPage (#43487) c94e93a6480f3cfdabe0624aac46f06670ffae36 Merge pull request #44084 from kshitijk4poor/salvage/windows-winget-stale-reg 39f40ece70b8cb21e9137211c1dd48be2428e138 Merge pull request #44074 from kshitijk4poor/fix/archive-compressed-session-lineages-salvage 0edeee14c6ce02a58df436638d3ac47dbb4bcd2d test(desktop): cover official-SSH remote detection for passive updates b4fbf7b93c5decd894fa7222836384108301670d Merge pull request #44082 from kshitijk4poor/fix/backup-staging-and-nested-skill-dirs 9662b76d592025c1536a6d7e0cb9aa317c09cc4e fix(install/windows): merge PATH in Update-ProcessPathForPackages instead of overwriting 899acfe42ffd2632e0ba0ac6c3893ea0afebdc66 fix(install/windows): repair stale winget registration; refresh PATH after every package manager ed2b9e43c8164dc8684b93487e90c32cef3e75ce fix(backup): stage SQLite snapshots beside output zip in pre-update path too cedd9b6d475bad9e0917c3ceb861377ae2735959 fix(update): avoid SSH auth for passive official checks dd40600e0a40ea120d267256a938326ce8f7f561 fix(backup): stage SQLite snapshots alongside output zip and stop excluding nested hermes-agent skill dirs 5e81113d0982978a30eeace942bb3524e05b7a8d chore: map dschnurbusch contributor email for attribution 04b3f195380f5e3ba30dd8cede29215cff8d0042 fix(sessions): archive compressed conversation lineages b8e2c165799c1f9c98215c67db963d971a8b3fc6 Merge origin/main into salvage branch (resolve AUTHOR_MAP conflict) 4829f8d2c5f72496d5ccdf50c35ab6dee5274252 Merge pull request #44047 from kshitijk4poor/salvage/desktop-stop-stale-session cb2c13055ed9c3f467be61dbef1f3a7a5dcdc5f6 fix(gateway): scrub _HERMES_GATEWAY from POSIX detached restart watcher too 264ac72b676b634c0f63b26af53c90205121bffd fix(gateway,windows): preserve restart watcher env f38f7a387013a3191b0eab37ac47f96ee07ee7b3 fix(desktop): recover stale session before stop 2450fd7066dd90302e6c19ed53db6b60723bf72c chore: add mvanhorn to AUTHOR_MAP 0b5b7ddfd27e65d0fc5ff4fd4429f49be19c77b9 fix(cli): show quick commands in /help output fa7f24e8980367c2ca849eb99e1eb2331c7d3699 Enable webhooks from dashboard page 13f1efdd15ae583f69c5be986545c026b258607d fix(gateway): collapse repeated terminal headers in consecutive tool progress blocks (#43968) 4d22b8293374fd9eaeac75e1f607b20ddea3a1b3 Merge pull request #43959 from NousResearch/hermes/salvage-composer-drafts 419c8a98a9c72f6dcd94eb8d3261d9465b01da3d Merge remote-tracking branch 'origin/main' into hermes/salvage-composer-drafts 975edd414024185809777240cd85e856573f3b6f fix(cli): omit --workspace when subpackage has its own package-lock.json (#42973) (#43986) d7d281fa37e417895580a16163f591fc08c0464b feat(desktop): strict per-thread drafts on decoupled composer 6c76908fde0bc3305906db8902f79d2adea51736 bench: emulator-leg memory verification — tmux server flat ~5MB for both UIs 292192f7d7263ab429ce57dce754e34c83902de3 refactor(desktop): tidy composer draft persistence c710868fbca9bdf7adb155c68ecbdd74858ede9f refactor(desktop): decouple composer from session lifecycle entirely 9d59d6991b2f0e0b0f25d432a5713e3130da8f0b chore: retrigger PR sync 3e74f75e41ecd5a3b937d692ba7dcffbf77304f6 feat(agent): coding-context posture across CLI/TUI/desktop/ACP (#43316) 7776aeb064be2767ba1c743fc3316bea840551ee bench: render refresh + controller gate-replay results dea2d43b83be13ff3515c261efbafc3034e72f0f Merge remote-tracking branch 'origin/main' into hermes/hermes-4e3ec235 ad16ec9c53b1f420c76315e26edecfd3ee8df1e2 bench: report rewrite — plain-language verdicts up top, real-workload memory framing, chaos/pipeline/echo sections fdc0d1956636d0c90cb53192f8acebf2e5459ee1 fix(desktop): make draft persistence actually fire — new-chat sentinel, reload flush, session-switch clears de446a26a5a35a4d50f7a1b05298601694d01736 bench: chaos + pipeline + echo results — both UIs auto-heal gateway death; total-pipeline CPU is parity 7d8d000b1921cb1c14aa137a41bd96203992e2c0 revert(cron): remove per-job profile support (PR #28124) (#43956) af1e4bb9ab7f9f9f9ccee2ebe9ad1795882e92a2 bench: total-pipeline CPU (tmux leg) + frame pacing + input-echo latency 68ffedb6a967b78d59bf776061cbd3f20ab3c213 chore(release): map Spaceman-Spiffy for #35586 salvage efcbbde48c38acbf3489ec1f7fc91ce1a30822f4 refactor: keep anthropic_content_blocks in-memory only (no state.db column) 7a1eed8268a7cb9112c8e4a29c868009d7137315 fix(anthropic): redact replayed tool inputs and broaden thinking-replay 400 recovery 529bb1c3d516f7580af39d6095f0a7d97f7e9ad5 fix(anthropic): strip output-only SDK fields from replayed content blocks aaccaada282bdf42d8a38e5f49bfa2b6e27efd63 fix(anthropic): preserve interleaved thinking/tool_use block order on replay 22792d27917d68b0f00bb7d98de93436c0f49326 bench: chaos/stability cells — gateway death, hang, resize storm, PTY EOF 65ddc7c4a1dc32a1ad5e9e732618c5a0f3ef3bf4 fix(desktop): retain composer attachments per session scope + guard programmatic drafts ad9012097b422ffc968a53748e08c205715aa322 fix(dashboard): dedupe useNavigate import/declaration in ProfilesPage 914befa9aaae46f2709373bc3d7352e813a18c54 feat(dashboard): profile-scoped skills & toolsets management 3d14f01fd674ab2add062d3a302c30a6b457b791 fix(desktop): debounce per-keystroke draft persistence writes 18d61bd06e062049f524d6b1d3a51956db2cf1ea fix(desktop): persist composer drafts across reloads e419a360ae9ea11e2c93579727c1046d370501ad fix(desktop): debounce per-keystroke draft persistence writes acd7932c0fc5f98331f01af6073115e6cf3ccf9d docs: cross-link write-approval gate from skills, configuration, and slash-command docs (#43801) 0a5762c78d11f4d6626dbf99da5f62cc34cfe2c4 fix(web): genericize free-MCP client identity per telemetry policy e0e25717116c818d22f05a1875fe44960b189ad7 feat(web): Parallel-backed web search & extract — free Search MCP when keyless, v1 REST when keyed 526991b13e3d93b221bf7b6886b92ca271a4b200 fix(desktop): persist composer drafts across reloads cbe703cf486b979ef322ae10aa33f3d5d0a83579 bench: forensics.sh — merged gateway/TUI/OOM/sessions/worktree timeline for a time window 5c6438fd283690b9e45f4d8663102a8eb188bf9c bench: T1 real-workload memory cells — session-DB distribution + mem100/300/2000 94765e48ffb062b37c409f40fab055af79867e08 cli: worktree lock + dirty-tree preservation — stop pruning uncommitted work 448e6ee68f0d9818644e2f9c71d00766b425fa45 cli: worktree lock + dirty-tree preservation — stop pruning uncommitted work fe54960142d1e6edc9e43299c0e8889964f4e837 desktop: un-truncate the active slash/@ row so long descriptions stay readable (#43926) 805e08081f4e0d02e1457b77684a87a1a7b8d7f3 bench: document build/run parity audit (expose-gc inert; pinned-Node caveat) fe50861c2eeb945e0f92dbc79952715e4cc9e996 bench: live-attach kit — sample/profile a running TUI session (Ink or OpenTUI) 3ffbdfbcc0dce5b859411666677e0f86d583dda0 desktop: registry-driven slash commands + first-class /resume & /handoff (#42351) bfcc9f92b4587ccf8e9f0eeafee85a66b76afd34 Merge commit '6110aed9b' into feat/whatsapp-cloud-api 615ad97928f042d401b83142fd7d9daf50f48915 fix(streaming): stop socket read timeout from preempting stale-stream detector (#43570) 9dd9ef0ec99a87f078f7272b4323df5440b4b3f9 fix(web): profiles page modal (#43858) 4490c7cf8de4aef8abb61e5e4cb748bbd960e5c2 fix: in-memory transcript blocks empty-session prune e96ca1a0d35a8661ab5315c25c369073ae64022e feat(sessions): drop empty sessions on CLI exit and session rotation e3973050df2f0dd6625234b316cbcd48bb038f53 bench: post-fix otui results — crash eliminated 31916539af5cf09d913cb292e41cef3af2592f34 opentui(v6): degrade SyntaxStyle exhaustion, unmask the exit-7 crash, clamp the cap to the 65k native handle table a939c9a712fad3ae545c058bfe817ceb3eee0cef opentui(v6): degrade SyntaxStyle exhaustion, unmask the exit-7 crash, clamp the cap to the 65k native handle table d1383a6b1450c6c139720b1b01f8b99cc130453f fix(skills): widen HERMES_HOME-aware .env resolution to all sibling skills 0a593f132c41d35111b1b84f599b3a0316ebaaf8 fix(skills/github): resolve .env via HERMES_HOME, not hardcoded ~/.hermes 3b4c715e1c50cfa180934d37e8364b42b1bf158d fix(telegram): stripped-text fallbacks, re-finalize skip, and tail-only delete guard da818510ec753f1c7def777eeca51bb1e4d17d1e fix(gateway): finalize best-effort delivery when stream consumer is cancelled 590b3c0d7eae8693a99f9ae4eb1906ba7af8c5b4 fix(gateway): recover partial Telegram overflow streams e35d953a456b3e1e9b800814b6a32245e8adb029 bench: E1/E3 results + report render 88fcf0c8c02d4a5f7c465efffaf4122b8ded793a docs(memory): clarify that memory does not auto-compact when full f7a6d6a6a1bc57a1ffb085281957606df4b46cda test(cron): cover provider "custom" → providers.custom resolution acd4f34e65ae23289358fef3c428c8e02941ff33 fix(cron): resolve per-job provider "custom" to providers.custom instead of codex 1e7316ced2261576bc4054aa915d3642ebd2b133 fix(desktop): use sudo callback without interactive env 79d1b58afe6697867cd46e7d500cd19e48563c34 ui-tui: env-gated yoga-node sampler for bench instrumentation (dark by default) 197d49948026825e620f0e7db75724af067b896b ui-tui: env-gated yoga-node sampler for bench instrumentation (dark by default) 14ee1a52c0480d49b7a2c50257860f9c4186b2a2 bench: fake-gateway + PTY harness + matrix runner (methodology in docs/plans) 99feb036077a2d6dc99e12d1902d05d28e13eb0a docs(honcho): demote pinPeerName to deprecated alias; document gateway identity tree b091b4eaebe1c248a8fc783e036019a4666bafac opentui(v6): tier-A latex — unicode math with fence-aware preprocessing 50e34713b6c5533ca08d2d2381c8dbdcafdf214e opentui(v6): tier-A latex — unicode math with fence-aware preprocessing d7dfeed6dc4218f51176dcd31ca2f4b926d5e89a feat(honcho-setup): replace deployment-shape prompt with gateway-gated identity tree 7e01a96e53b83839b8ff92f7bca75c9a930390fd opentui(v6): status chrome v3 — one left-aligned labeled line; copy chip off the scrollbar edge e9af6a51104eeb8402e4213382e957e3edbe6dcd opentui(v6): status chrome v3 — one left-aligned labeled line; copy chip off the scrollbar edge bb5cb3283898fdfb7f6c98f13598aedb10fbb2d9 refactor(honcho): canonicalize identity-mapping on pinUserPeer, migrate legacy key a8f404b29fa9ffde4ba4763e2bc30a077f430fa0 fix(gateway): probe launchd domain instead of hardcoding user/ (#40831) 2d75833abeca369808b014d5ecc4a1c0360f6d86 chore(release): map ianculling for #36087 salvage 9f95f72b987fcad6c9b11b22d595691af9f9168c fix(agent): strip api_messages in thinking-signature recovery so the retry actually omits thinking blocks 86e10dd8741b68567ebcd4fdf10476c638e43434 fix(agent): route 'thinking blocks cannot be modified' 400 to recovery 31e0adc6817897feea499efe5f06e006ff1c5378 opentui(v6): code-token scopes in the shared syntax style (highlighting was parsing but painting monochrome) 4f66a7cf093c00e5385aca736d1e3a4b6ef43ea7 opentui(v6): code-token scopes in the shared syntax style (highlighting was parsing but painting monochrome) 8445995321993c64bbbe26fbce1c7812e27b9bd5 opentui(v6): composer — shift+enter newline (kitty), height cap + internal scroll, line navigation 5f997247d936111f7f8b6d9d3d47c44d49bb6874 opentui(v6): composer — shift+enter newline (kitty), height cap + internal scroll, line navigation abba43eb632343aa92020ed071cbf87f623d12e5 tests: pin envelope fragment-peel guards incl. the known tail-shape tradeoff ccc89a327df531139445950f1d67a7e3fbe7c8dc tests: pin envelope fragment-peel guards incl. the known tail-shape tradeoff 4a0991c1d2a688173b409159ef4f17d0fab68c89 opentui(v6): ink-budget follow-up — transparent root canvas; muted stops borrowing banner_dim 408789d9092c7e43efcc89aad70800f504d735c3 opentui(v6): ink-budget follow-up — transparent root canvas; muted stops borrowing banner_dim 364b93a4b985db211c02dfb62ca97172a236cc56 gateway: compact /usage with current-session per-model costs a089614451443bf2acf6674ed828b888a4ffef49 gateway: compact /usage with current-session per-model costs 85546bb9e2a2f82f13af8f4969803201ec27c3b8 gateway: capture real provider-reported cost (openrouter usage accounting) 7592b996a6ccf7c1ffbaa68763a5b58fef52a66c gateway: capture real provider-reported cost (openrouter usage accounting) ba3fe7027c0a1c19173a7cac9db04ad8ce901227 opentui(v6): responsive two-line chrome at wide widths 380f0b53dd2ef880b2133e04f45d198ec8ac22a4 opentui(v6): responsive two-line chrome at wide widths 5999cd284810e33ca548a37299185ff526295c2b opentui(v6): per-block copy affordance 62537a99bfa8c9319e7dbbd66864be8e944be2bf opentui(v6): per-block copy affordance 6110aed9be2f90c4982ca1022238573ed25d120b Suppress "Credit access paused" notice on free models (#43669) 639a9cb9a78dbb5ba2db24b104d7ba6f033478d5 opentui(v6): ink budget — earned gold, blue machinery, neutral muted (design pass) ee4fb837edd2b089b62983324a2fb6c537051eb7 opentui(v6): ink budget — earned gold, blue machinery, neutral muted (design pass) 6de3963e37698b0789bdec5a08761bd85ff4502f fix(desktop): keep model runtime state per session (#43702) a09fa9df422df65b2214bc941617b27f1df3d220 opentui(v6): resume picker — tabbed /sessions with peek preview (supersedes switcher) ddf4cca5c01a79d908a2bf9535043452c31cfa8d opentui(v6): resume picker — tabbed /sessions with peek preview (supersedes switcher) 4e69fdb3bea5d990a3d8565a8db5115b0397ec47 opentui(v6): per-tool content fixes — clarify/skill_view/read/search/exec + tree-sitter outputs 9122ffffc5cbbb6f471e042824852a739ba66167 opentui(v6): per-tool content fixes — clarify/skill_view/read/search/exec + tree-sitter outputs b3efafcc73d29769ec55d38f324666f99ad9e97c opentui(v6): dedupe model.options prefetch with /model open ebb58f750c9e939cc771a96df49807568d0a0978 opentui(v6): dedupe model.options prefetch with /model open 036e863e4a22207d1c7b05811c13aa84e9308482 opentui(v6): model picker provider tabs (nous-first chip strip) b957dc6f729623d0ef5660dea889a0209b68acb5 opentui(v6): model picker provider tabs (nous-first chip strip) 38368d17da491345be3d0d08be2009a9ec773ab7 fix(ci): only save test durations if all tests passed e3cdedbf0fc060281c16c8ffe3b1c7dbf36333f2 opentui(v6): kill expand/collapse scroll jitter (suspend stickyScroll across the toggle) 018c8fb17fa3df61fe9a141d603529d1d94a6b01 opentui(v6): kill expand/collapse scroll jitter (suspend stickyScroll across the toggle) 38eb9bb19a9049fdbe2e366bb4c216ceef78b62b opentui(v6): tool output uncapped by default (env restores a cap) 7e3936f47d0508dd41697a8e05faee012325dc47 opentui(v6): tool output uncapped by default (env restores a cap) 07ac185904c642a2051fbc4d9bbabee4754d70b2 fix(ci): exit-4 forensics for vanishing test files in run_tests_parallel.py (#43646) 3acf73161fe224a3dcdb985547966dc7fd9f78b6 Move folder creation into dialog dd60c49bb852db58a382d8c770180e62efeff139 Add dashboard file drop upload panel 6fe48219261a3c2bd937a0054310f5c7082dbe3a Add dashboard file browser paths 0bb58b65ecaec78d744dd31664f352f9da9dd1cb opentui(v6): fix popup-boot latency regression (model.options prefetch blocked the gateway dispatcher) 2f666d2e9bd81c70cb7ae219a7b5190bf65f5265 opentui(v6): fix popup-boot latency regression (model.options prefetch blocked the gateway dispatcher) fb30ff218d44048af68425e7678145fe53facb93 tests: align dropdown-hint + wrap expectations with arrows-everywhere menus c146a69b1d3be2594d5ec61ac036c768d7046d9b tests: align dropdown-hint + wrap expectations with arrows-everywhere menus e1edbb0e89b05d606db35043b17bd7017191f159 opentui(v6): arrows + enter navigate every completion menu (paths, args) 773690b1f75d4e65e0e9d9a2ccf96982c54dad71 opentui(v6): arrows + enter navigate every completion menu (paths, args) 72118b049fc41a5a6e0b83082b77c438aba5c9e7 tests(cli): align tui argv prebuild test with the node-probe launcher ddfff88a587c89d5454e187fe14f38a81ac3a1d5 tests(cli): align tui argv prebuild test with the node-probe launcher c007d0841921bea97316804b1ca666d9216be4e8 opentui(v6): port utility commands — compact, details, replay, heapdump, mem 443a1be50931cbba56bea06a9d02f6898160a2f2 opentui(v6): port utility commands — compact, details, replay, heapdump, mem 73b261b94f48e56b477004bd1e5a89ccbde05f0d opentui(v6): monotonic double-press clock + consume the viewer's closing Esc d96657e2dc9673a7b0b5d9d0ab0a132a751972f6 opentui(v6): monotonic double-press clock + consume the viewer's closing Esc f4bb617f62564518f14a388dbe3ed414a26e32e1 opentui(v6): tray-exit Esc never arms the prompt-history double-press 0e65d54b6df54b8b2f552585cd57702e4d02c740 opentui(v6): tray-exit Esc never arms the prompt-history double-press 4c630d3e7b9431bc77d6eddb3ccd6f367ce04c2f opentui(v6): Esc+Esc session prompt history — rollback/undo confirm 3ebcc3439e65ae74c58272319c52097a3c58e058 opentui(v6): Esc+Esc session prompt history — rollback/undo confirm d986bb0c6de6bcffda4981e83652284d481a90f4 feat(dashboard): full-featured profile builder (model + skills + MCPs) (#39084) 4f65d5509ffd6b8b938c2ac7d015ec41957a2384 chore: empty commit to mint fresh merge SHA (CI runner tree-corruption on shard 5) bc71c57ba903d46738354ef59d1d4277ac335a68 tui_gateway: session.list reports scan-cap truncation honestly f86bc5170a067a07f0f7ac41a717fa9f1491e4ec tui_gateway: session.list reports scan-cap truncation honestly ab5d42283550456e7c2411baee737ada62feb01e tui_gateway+cli: session.list filters + session.peek + bare --resume picker sentinel 529d8084bef2b69219bd7c89008fb79e8ae0dd37 tui_gateway+cli: session.list filters + session.peek + bare --resume picker sentinel 6956faa5a89d1448096ca0de9b965cf8f9f53b7a chore(deps): bump cbor2 from 5.8.0 to 5.9.0 db0e9dde44fb3ddbf73ff51554d2333ac32ddf74 chore(deps): bump pygments from 2.19.2 to 2.20.0 72ee55ed53c1fd6f87b94e4cfc36bcc389a325bf opentui(v6): picker v2.1 — provider search, availability toggle, native input, manual refresh daa4412378df324e7ddf24db2148e8ef7029e994 opentui(v6): picker v2.1 — provider search, availability toggle, native input, manual refresh 4cecb1a13a87da169a82279bfd1f1db19eb732da change(tooling): npm audit fix in website/ 90f4b3040dccc36963930ec9796ed1743c7742a8 change(tooling): remove react-compiler eslint, update concurrently 3bfbb3f2a0255acfd2cf8e18d702c0b291808047 change(tooling): typecheck in CI, update ts to 6 df4bdc9d5833248a392a184444674d9f78f42742 opentui(v6): skill highlighting + one-edit autocorrect (anti-jank) 7ad05a31292b06900d2775839e0f6b4272c9a2e2 opentui(v6): skill highlighting + one-edit autocorrect (anti-jank) eaad47a6f6826a9fde7450e2a92e0715fa97c6a9 opentui(v6): header chrome — dense status bar (Variant A) 4d1d1e8f5245531f8108f50041c9a35401ff996d opentui(v6): header chrome — dense status bar (Variant A) a23bbe334896cd1cea7fd1cc2724237bf314844e gui(refactor): unify keybinding ui & types 8c3060342f501e7a61d5bd3740ccb7b2ebd8493a opentui(v6): standardize fuzzy search on fuzzysort (adapter keeps our API) 0bceb219e67751b6b3d08dfa1526efd07c84e32d opentui(v6): standardize fuzzy search on fuzzysort (adapter keeps our API) c9c6cfc0eea2ef00673413beb9eaf50c5f263d2b opentui(v6): background-agents tray — down-arrow focus + enter to dashboard 579fb58e86bf74bc5476db8e9665662cc61a833f opentui(v6): background-agents tray — down-arrow focus + enter to dashboard 6438acec60470747ec5fc21db913748aca09188f opentui(v6): model picker v2 — fuzzy search + provider groups + instant open 91df32545864ab460409259822f41e39d5b1d110 opentui(v6): model picker v2 — fuzzy search + provider groups + instant open 76a8bba15ff3509b1f9122420e78375f143d5871 tui_gateway: blocking prompts wait for the human (drop _block timeouts) 43b096eedb89d74d64584b9767bcb5a906dbe8d9 tui_gateway: blocking prompts wait for the human (drop _block timeouts) ad220b9d93e407b5be8291e6e350f346e3681049 opentui(v6): slash menu — arrow navigation + enter accept 394f45a3d5e00cc4504f08e678d403ac8f30489c opentui(v6): slash menu — arrow navigation + enter accept ca791f40009088ebe6677a770a7d96a4ba0d5862 opentui(v6): trust gateway payload.error — drop client-side result sniffing 6a6693b182ea171f20536ab8028216a2c1f7d341 opentui(v6): trust gateway payload.error — drop client-side result sniffing 0dafcdd9e3643fdcce5e4e4bb41f7ed3e12a5de5 opentui(v6): tool-name emphasis, thought styling, HERMES_TUI_TOOL_OUTPUT_LINES 03b16c51a690a33085e77ddb22d75dec91fdf867 opentui(v6): tool-name emphasis, thought styling, HERMES_TUI_TOOL_OUTPUT_LINES 6e62489d9e31acebf3388e865e217884ad4a54d0 tui_gateway: surface tool failure as payload.error (result convention) ac84fe7ea11bffe0587d8b798d13748af7c7ca6d tui_gateway: surface tool failure as payload.error (result convention) 076aebc7e6aef1f33be785275fa20735759de2ab opentui(v6): tool lifecycle states — live elapsed tick + failed glyph afe5152314befcad786b7e76382503b0de2423fd opentui(v6): tool lifecycle states — live elapsed tick + failed glyph b6dc49200db5342e306150ba16330b963fab7a1f opentui(v6): suppress redundant JSON/diff-echo output under rendered diffs 5fd2b5bb7b07235575d2f2197f73a7872c596cd5 opentui(v6): suppress redundant JSON/diff-echo output under rendered diffs 0a5b0780f5f96eff39caef91ec853cfeba807bb7 opentui(v6): clamp negative draw coords at the node:ffi seam (diff crash fix) 0bde6a890f07b40a973eb653fcfc79065e0675aa opentui(v6): clamp negative draw coords at the node:ffi seam (diff crash fix) e2c2e41137d541e2b45fab562e972922f8af1385 fix(egress): v4 round — bridge bind on Linux, listener-role split, fallback gate, audit.log truth 42139c3cf08b19ddcd05c15106eff13bc1fa4da5 Merge remote-tracking branch 'origin/main' into feat/iron-proxy c4348480f3a80ef4446e4c8392f38ac99d1e7fbf opentui(v6): file tool renderer — relative path + full native diff e17e94c8def52d54c83a3b542b7683bbdc08c342 opentui(v6): file tool renderer — relative path + full native diff f76df0688c765f5cc1b38dfa41b8cc8ee4f59513 tui_gateway: send full unified diff (diff_unified) on file-edit tool.complete 99d163a8ae8f3af4f3c05c2eb3bdd0aa99c61800 tui_gateway: send full unified diff (diff_unified) on file-edit tool.complete 84cbf5c1f380c98812328ab7d82474d849ed89e5 opentui(v6): prefer gateway-redacted args_text over raw args in tool renderers b537a3ba50579e159382505a0496ec7452815a93 opentui(v6): prefer gateway-redacted args_text over raw args in tool renderers 0f92a3cf63d41a787c269831b5715ec8317b2a56 opentui(v6): bash tool renderer — command + full output e7e8c820fcc14d83f4effdbddf651084c6403d73 opentui(v6): bash tool renderer — command + full output bdcc2dd7f397cec9eaf8ccfa401632d04a7720b3 fix(desktop): scope remote workspace defaults 60cbc4c68b03dfd4f2a41b5e05ba4529b0ea3a61 opentui(v6): tool renderer registry + labeled-args default (no raw JSON) 8c26b1493167119715c1fbd51ddd3b430dd3220b opentui(v6): tool renderer registry + labeled-args default (no raw JSON) 19399a7e32bc15f2b492348d931440a64d4487dc test(gateway): live ws-transport round-trip + config-driven registration b075c1ec914fa09a0b45c5f0e950e63f17551520 feat(gateway): register relay adapter from config; drop HERMES_GATEWAY_RELAY gate f325dc71e5379d735d55a9b15714a895c55543c7 feat(gateway): production WebSocketRelayTransport + descriptor negotiation a72bb03757c0c925c686f9774eefc8dc5a77b329 fix(docker): optimize image size — .dockerignore, drop dev deps, split build layers (#38749) 47e77ae1664b7421d8f5023e6631426a5426b205 fix(curator): use shared atomic state writer 4c797d0e23c12ffdfd9d34ce032e5e335094b2e9 fix(desktop): hide Windows console children launched by GUI 189ffe7362c8a1381acb7c9e77d1970aa2566a43 test: port voice-reply suffix assertions, fix change-detector cap test, add AUTHOR_MAP entry 2c19208224deb304b513e2b80992d5739343cfe0 feat(tts): add Gemini audio tag rewrite 5718811de0960a4aa46f528b1c6a14f31ed60012 feat(tts): add Gemini persona prompt file af3c8b80b561aeb7fe3e434a29df13e4ddcf23b0 fix(tests): close pid-file read race in test_grandchild_reaped_via_pgroup (#43447) 70d5d7e39b566090944688623f5bbea89e21b967 fix(memory,skills): repair write-approval inline prompt, gateway staging, and gateway /skills review (#43452) a5c32cdf3055c1047bf08e1beb0334ad92672063 fix(update): self-heal a venv left half-built by an interrupted install (#42172) 15813336cce0749dbf9ee88da6569f1a85be3e4c fix(config): preserve original .env file mode in remove_env_value too (#43349) ce120f04734320846dba9c8ccfbc7050e6c306b4 docs(gateway): rewrite contract §6 to the A2 trust-boundary model 6dd4caf378cc4da87f090e847bb6b297433c771c feat(gateway): token-less follow_up outbound op (A2 capability action) d603371644598f585e682ac16c2a6c602669b91d test(gateway): shed platform crypto from the relay path (A2 invariant) 183d86b3e04ebdc65e1d0d8b050ae19bfcf880c6 fix(openrouter): route reasoning_effort to verbosity for adaptive Anthropic models (#43436) cd9a9cd8e5e12daed968360f70d28e749c6c1fa0 fix(gateway): Slack approval UX in threads — block-size overflow + typed-prefix instruction text (#43444) 5d8c44a39341e615ef074eeb54363fab30941a32 fix(docker): pre-install matrix deps in Docker image (#30399) (#42413) 2f19512341fe20028958cc26b253c2eb9abd37cd fix(cli): repair non-UTF-8 stdout/stderr on all platforms, not just Windows (#43439) f222bd26e7ad7f5804a894fc9f9a0738ea5d4053 Merge pull request #43430 from NousResearch/bb/desktop-tool-codicons-filled 38273676eab0185d068143c3deaa5a259d857f8b fix(desktop): carve sticky user bubbles out of the titlebar drag region c1308ebf3f0f5b6a13363836420b6d078d04da61 style(desktop): filled SVG glyphs for in-thread tool icons 4e40f7bb4d5324c388c5179c22b9a9ac5dce62df fix(desktop): tighten remote filesystem wiring 969aeb279c314c903f669dc192a6742f9d1023f5 feat(desktop): wire remote filesystem browsing 2ca1d7da1097660c030e5ca9ff46b8be9c831481 feat(desktop): add filesystem routing facade eb473710e1bbd363c7d3be81c083a9a4d16f3382 feat(desktop): add read-only remote filesystem API fa32af886fa89acec2584ea6ad2b9ca173b82e4b fix: dedupe concurrent gateway restarts + surface restart outcome in onboarding UI 984e69ff623b84249d126118d6a5298750c7103b Auto-restart gateway after Telegram QR onboarding e80754647c90c0320ddd89e36c4b8ac1e738b87b style(desktop): render in-thread tool codicons as filled glyphs 298bb93d397faffc64aa5cfd58cbd707561d292a feat(skills): show live per-source progress while browsing (#43398) eee1da45f07496fbaa028977195875df2709661f fix(skills): bound ClawHub catalog walk to requested page on cold start (#43395) 6a30cfca82409cbf20b915c832a9acfb46551fe5 fix(gateway): stop typing before post-delivery callbacks (#37556) 888bf9602586886ccd63080385e13a238534b931 chore(release): add tomekpanek to AUTHOR_MAP 383d44bc9a9e31658a5a76d0afc18e53507239bd fix(web): rank explicit credentials above managed-gateway probe 243cada157ffcc9208377f0c05d274536772289a fix(model): cover typed gateway /model path + async-safe pricing lookups af978ecb17ef00ee47227ec4c5c133cb20e12ca0 fix(model): require confirmation for expensive model selections 4eadef18a9cc606ffd83a682566e2aec8fed1de7 fix: guard role_authorized check against MagicMock test sources 099146fedd7ae4e2fe6ebdfed35ccdbb409867d5 chore: add AUTHOR_MAP entry for PR #33958 contributor e5580f43c258552b5951b2680a1ac044bab3e5df fix(discord): propagate role_authorized flag so DISCORD_ALLOWED_ROLES works end-to-end 69f4291892acc506ea30316259381021db81e41c feat(routing): scope smart model routing to Nous Portal 57177544ff2dfe7114bd09e0233c5e39d634099f feat(routing): add smart model routing (session + delegation) 5a4297a11a83c38ac24eec7df0e4e41d6b3dbb9f fix(model_metadata): prefer hardcoded 1M for MiniMax M3 over stale models.dev probe aea0b7397b2290ba9be848191eba43e7bcdcbce1 test(discord): cover voice timeout under voice-off mode 311900842e88e640dc9d82fd700e0911a0d5d171 fix(discord): don't auto-disconnect voice when reply mode is off 105625d650df6e0cc6b5336c15d5427364f504a4 fix(skills): honour overall_timeout and bound ClawHub catalog walk 2ce3ae3d16decaea907d44203f9ea2a6d4c7bae7 fix(error-classifier): don't misclassify unsupported-param 400s as context overflow 19c07c40379ba711e9db6a522bd0b7454d9d971f fix(params): send max_completion_tokens for newer OpenAI families on custom endpoints ab550086311a6151ef03053556626d0bb70a4b5a chore: add AUTHOR_MAP entry for OndrejDrapalik 1c055a4c58eace64643c4589d13be7e870947c5d fix(xai): accept Grok Build code during loopback wait + tiny screenshot guard 095f526b112ebc51c507e069d08abd025362bd3d refactor(memory,skills): replace tri-state write_mode with boolean write_approval (default off) (#43354) 9ca96973425a1491f74430a96ef7d4eb30960012 fix(gateway): return tuple from voice transcription on placeholder caption (#42090) 63a421d4c0e053f9b3241433941bcbca035ad222 fix(dashboard): _require_token endpoints all 401 behind the OAuth gate (#42578) 9e17934fc6ce141ccb51ce2c113200a498fbcc48 Merge remote-tracking branch 'origin/main' into extend-hook-registry-for-plugins e4a1b35a393f85cbd58828735adbdc337b4bd8f2 fix(config): preserve original .env file mode instead of unconditionally tightening to 0600 (#33699) ea7981eba7f15184b75596e95d2801e9692dbd2b fix(dashboard): point webhook-disabled hint at Channels page (#43324) f1b851967087ff5557af768c07f153b1c236cdd5 Merge pull request #43322 from kshitijk4poor/fix/langfuse-redact-base64-data-uri f8fd30942c44336e14795f8562cf7313bdea91df fix(cli): prevent duplicate one-shot finalize on interrupted cleanup (#43320) 747aff9896c800f905fa206bb3aca845be53087b Merge remote-tracking branch 'origin/main' into feat/desktop-worktree-sessions 1967c590edf066f1f41a92920bd21ac712b53cd3 chore: add AUTHOR_MAP entry for xiaoxinova 702f4df194ffd1ef018043c2722fb43c1456fc56 Repair cron ownership on container restart (#41976) 009201549676c880fd872554e0a4d1daec49285c Merge pull request #43323 from kshitijk4poor/fix/skill-view-frontmatter-name-lookup 9caa12f4ecd29d4376914c059306cecd405b548a fix(skills): resolve skill_view by frontmatter name when dir name differs 46427622894025dee21862a6a7e5ab5f92c313f3 fix(langfuse): redact base64 data URIs instead of truncating into invalid base64 bf7abc2f73acde8c128eedb74d1f563385f3ab84 Merge pull request #43292 from NousResearch/bb/vscode-marketplace-themes d03cdd63ebd88862ea6366e784df7d4dba95fd50 fix(cli): run one-shot query cleanup before lease release (#43036) 96af61b6ef93087e1ef9c3ee20b309b7c0fcfdad feat(memory,skills): approve/deny gate for memory + skill writes (#38199) 7803cbfbb96191d118dd5112ddfd54e84850e8a7 style(desktop): use the nous overlay surface (--stroke-nous + --shadow-nous) for the HUDs 45e1689c03b2cd1b22b32ff32d19abecd29a7857 fix(desktop): apply the shared HUD tokens to the marketplace submenu fdc90346eaa3931fb357543b9224515728cac914 chore(skills): move red-team skills (godmode, obliteratus) to optional-skills — Anthropic classifier (#43221) f082b4ec5c33f0a1f15ff9593c37c49717d43f71 fix(ci): make parallel runner's exit-4 retry robust for newly-added test files (#42994) 833410e02bc3c517b5648913ab38455e9bb85dbc feat(desktop): theme the terminal ANSI palette + restyle the Cmd-K / Ctrl-Tab HUDs 6b330522e1fb8950a6552e421d1fa9df4793b33f docs(agents): add Design Philosophy + Contribution Rubric to AGENTS.md (#42641) 1770263cccf76950b6df9be8ac987f99d924b372 fix(desktop): honor default project directory for new sessions (#43234) 33a5bfa3c43db58218a0a5aae110f83025482a4c Merge remote-tracking branch 'origin/main' into bb/vscode-marketplace-themes 8f73d0d945d576eaf47e47a378d1985e91642c29 feat(desktop): resizable VS Code-themed terminal pane + palette polish (#42521) 27a3211579707245c1158be3cec62fc677b4a2fc feat(desktop): install any VS Code theme from the Marketplace 5cf6e28a2f4ab02ec9d45f5eda97d9530e5e7bb6 fix(gateway): auto-start after container restart via planned-stop marker (#42675) (#43236) b4170f3ac2ec6a9391ab280970b7238b5446124a fix(cron): don't strict-scan script-injected output in no-skills jobs (#43223) 5ef5fa1973a49e2dd079f27ab7ba79840f9a86df fix(desktop): repaint the terminal on light/dark switch b0377ff5487df3dece77e3cf194cecf2b35fd85a refactor(desktop): resolve the terminal shell instead of hardcoding it 0e326025127913c9470c485f945194d401a8bc7c feat(desktop): show a persistent divider on the terminal pane b8e358780ce354d2feb0de30684453e8103a0314 feat(desktop): default the terminal to PowerShell on Windows b7775d863033bfecdef2c229aef3d357444d1e96 fix(gateway): auto-start after container restart via planned-stop marker f65f9b8be841ed7fa782c56ccfbec3358edfc168 fix(desktop): move the terminal toggle next to the version item 36383cccdc9b7ca644757dedc654146ff542c197 fix(desktop): relabel the terminal header button to what it does 26f2a053792c5d3e653efb069222aa3003488d0e change(tooling): typecheck in CI, update ts to 6 2fac595e7fb588c1263bdd71bd8a8b5b672c09be feat(desktop): add a terminal toggle to the statusbar 08e0bb03d36516534f6098c489e780c6a8899ff0 fix(desktop): honor default project directory for new sessions 7df3aa34b17819c790098c391a88ea0ab0827f4d fix(dashboard-auth): warn when public_url override is silently rejected (#43214) b96bd4808dab6d7216cf093eb9f8c95fef9977cf feat(desktop): open any chat in its own window (#43219) 5ef2b068662631bfca2a9f0d75eb674c0de7a6a3 fix(cron): don't strict-scan script-injected output in no-skills jobs 4995ec1974dd1fe7ce35c5037c2d38c43a377fa8 Merge remote-tracking branch 'origin/main' into bb/desktop-terminal-bottom-main c93d7d4fc428574f7b429a19b2f8bdf7129ec7ce chore(skills): remove red-team skills (godmode, obliteratus) from bundled catalog d33965396e5c8b80bc845b33fa4d8446f630f155 feat(tui): include session name in the terminal titlebar (#43188) 258d24039fe5edc7f90ff7580562f966c4702c22 fix(desktop): scope thinking disclosure pending state (#43197) ab5f1a1f1141310705450e374ac5c8de6925e348 feat(desktop): Mac-style session switcher (^Tab / ^⇧Tab / ^1-9) (#43111) 8bb65295532c7d353f081e3aaf63ed6f06ca1bd0 fix(desktop): sidebar sections never overlap — two-mode CSS scroll + collapse/cap groups (#43147) 29036155ceb9e29d07f7b49eb073e6ec23802bf8 fix(terminal): lazy-parse docker env config (#42733) 8b84d82227a3b637a26ba5f4f41bb08281e2ab84 fix(desktop): send on Enter from live editor text, not stale composer state (#39639) 93340fa3c1b8548c92d4c92e5e9dfd3a201d89e6 fix(tui_gateway): honor target profile's terminal.cwd on desktop profile switch (#40892) 59ea2f98e69134eb876040fe87c659cfd7a3a2e6 fix(desktop): always show the Manage-profiles overflow (#42871) aecdacb11b37615ce5b98c48b1fd91e9c1937c0f Merge pull request #43109 from NousResearch/fix/desktop-remote-attach-drops 7ffc216bc03decad952411b0b73b924908cc9c31 fix(agent): make a binary @file: reference actionable instead of a dead end 218452b05019e13812a25d1f7a17f798a4b0edf8 fix(state.db): recover from malformed sqlite_master so hidden sessions reappear (#43149) 29147afd637d3d19bca0cd1844c674054df5b286 fix(desktop): friendlier toast when a remote attachment exceeds the 16MB cap b021497bc84ef725b0e5abc8bdd8d3b790b8e929 fix(desktop): show a staging spinner in the edit composer while OS drops upload 891c9a682348bfabc0f4df476be909f6dab38942 fix(desktop): close eager-upload races flagged in review 72154ad879e2acebbbf46e27f77a3a4bde3f2ea2 perf(ci): cache uv + use uv sync in tests workflow 153060e206cdbae37d1cb7ba731eef9c8159bf09 fix(desktop): render optimistic image thumbnails from in-hand base64 4906dcfc256b70e8753881bf25fdb80e9312f73c fix(desktop): stage dropped files into the remote session workspace 57c67149956b8476e9516b2e1764fb4fb0222434 fix(models): keep curated Anthropic aliases in /model picker (#43103) a5d05cf30e8f5d79689ff8cee3ed806a6ca1c00e fix(nix); don't run .#fix-lockfiles 68a997fed4a1747f1e5d8973cc16859c10d849d5 add website links to readme for seo 49dd776d8bb2c0ab6cb80f07b2cdb87ffe150d75 Merge pull request #43041 from NousResearch/fix/fable-anthropic d7886da08c727efdaa8d4218517322c7815d5176 add Fable 5 to model list for Anthropic provider 02f878ec5ac665bd9d7be7ec7093cd017e1084f9 docs(windows): correct native data dir to %LOCALAPPDATA%\hermes (#42856) 8d71c3891970a55e6acf45fb04606586b56edc2f fix(desktop): rebind sessions after websocket reconnect (salvage of #41740) (#43004) 46fedef07fdae6942d4feee41ff5031530c26f90 fix(openrouter): never send reasoning field for adaptive Anthropic models (#43012) ba44de06da10e90f6fcb673c7ea78b2776a7c5f1 fix(install): self-heal a stuck Electron download (salvage of #42894) (#42998) 5750d058fae21dbfdd4a0fab8e26111f0a596f92 fix(tests): use cross-platform pytest-timeout method (#39881) 1febb08240000d9e82e719992c17706dd9854187 fix(anthropic): default new Claude models to the modern thinking contract (#42991) 39b76d90137a86bc953f340acaf8ac038545c612 fix(packaging): ship optional-mcps catalog in wheel and sdist (#39859) 7dfd894ea0c79ae25847b169b75b9e58f071be62 fix(ci): make parallel runner's exit-4 retry robust for newly-added test files 52f7e24a7496c4eb002fac064612b1678c584e39 feat(tui): interactive Plugins Hub overlay for enable/disable b8eede7bda42ab076f4df76db101931235b21e9c fix(cli): /plugins shows installed-but-not-enabled plugins 967c325da8a04e9722794e0d2b01dd79659d7127 fix(models): read OpenRouter live context_length before hardcoded catch-all (#42986) f6f573ebaa6351b5b3146b186696b5a179acafd1 feat(plugins): install from a subdirectory within a repo (#42963) ff9c110d5a2e17d21bb394a6dd5e34400c11960a feat(models): add anthropic/claude-fable-5 to openrouter + nous curated lists (#42979) 8053a1526cd71afb4780b2f93a27633f8d31efea docs(agents): add Design Philosophy + Contribution Rubric to AGENTS.md bab8356620c6b9f65b6fab912ebf2066b9878a72 feat(memory,skills): approve/deny gate for memory + skill writes c4811c382fd555d3f19b54c675a7fb346eb5c1f4 fix(desktop): pad app icon to Apple grid so dock size matches peers (#42946) ae11a636dc3f0d2f7f3767eb078bc033474a4a5b feat(tui): run on Node 26 (one runtime), finalize copy UX, rename to ui-opentui a38152cd913db3a5e04b13385f7870adda4b97e5 feat(tui): run on Node 26 (one runtime), finalize copy UX, rename to ui-opentui c6dc2fcd2153f8d382d7bfa5d9b9569c60e36be8 fix(desktop): release profile backends before delete (#42613) 3ff656b5b5562326e06ed307d189e2e11b052c46 chore(desktop): trim read_terminal comments f6416f50fced55260144a702e06ec5026c2dcffd fix(deps): bump urllib3 and PyJWT to clear CVEs (#40179) 7f9e535837b7f17876a38bd4bec5cb0e350c53d6 chore(deps): bump shell-quote and concurrently 92dfd70d6a71e9f6ba1613c659b26b1183677b27 fix(photon): production hardening for the gRPC-native iMessage channel (#42732) b5421f4ba606df706472ac1a4b36a84d9e1973c8 fix(deps): declare packaging as a core dependency so it ships everywhere (#40522) 88c48ee3d47dd08224e2c096574f8658f5740f2b feat(desktop): give the GUI agent a read_terminal tool 1e7435c87384eeceaf56fe85ef59b5ef9d0ed341 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/desktop-terminal-bottom-main 71472842f4b6a448092c6e529be4634958cae5a1 Merge remote-tracking branch 'origin/main' into bb/desktop-slash-commands d046169646b03d889bfadac3329970559b655a27 fix(desktop): local-only recents, per-platform sidebar sections, and Ctrl+N regressions (#42537) 25567919ea9cc2af805cb6ac71705b4397d7c0ac opentui(bench): scripts/demo.tsx — view the fixture in a real attachable TUI 7af4055ddc2b2ff8d84c2b0abaa51955c5799f50 opentui(bench): scripts/demo.tsx — view the fixture in a real attachable TUI dcd8ba2a0d6dfc3e831f1c0d62631b79e3e4a85f opentui(memory): cap default 1500→3000 + honest truncation notice de9f3effbbfb205f23754e1a8ab0a3f8deca471a opentui(memory): cap default 1500→3000 + honest truncation notice f205dc2a3b7455eee86d260b5124992736677d44 opentui(bench): realistic heavy-session fixture (fat tool-turns) + multi-cap matrix ac7ab6c0c08cead4b5629dce689d897296796cd7 opentui(bench): realistic heavy-session fixture (fat tool-turns) + multi-cap matrix 57775e9e161087dbe55e096c038f512233c03381 test(agent): cover char-based output-cap overflow parsing (#42741) 3a74b752174bc4f36039c128d0552b05e4146367 fix(agent): recover from char-based output-cap overflow (#42741) 24a934295f7f62f59bf112dfdba94390062bd601 test(yuanbao): add missing patch import to pipeline tests ffcd9d7ac73501ccceb332b23b33190a04305545 refactor(yuanbao): consolidate media resolution into dedicated pipeline middlewares be2f739e9a12aa6da627d74867ca0d91aed9e15b test(desktop): cover sleep/wake session recovery in use-prompt-actions 72f522d46464365f12cc632d145ad1a515ceb755 fix(desktop): recover session after sleep/wake gateway restart cb4cc08b0a3e6dbf14057902920757ece79eab2d fix(codex): record app-server token usage in session accounting c40d3172acf40d3479ee6d45a2d116772c9dd96c opentui(harden): slice the resume snapshot before mounting (no transient over-cap) 8580172d11c2f029850a56f57d17044103e4b8b8 opentui(harden): slice the resume snapshot before mounting (no transient over-cap) 85852b71d86d13b9ca7c22cf653ff6730b325e3c fix(nemo-relay): preserve downstream errors in adaptive execution (#42691) 8d99b5bc4f3fd5998d55b22ddb0e6dba38ae4c7f fix(gateway): cap terminal code-block preview in non-verbose mode (#42729) a38cc69bcc23a37ca957528701cba328f677e525 fix(terminal): complete sane PATH entries on POSIX (salvage of #35614) (#42653) 0d70a887498bd4b8000b2c699e78d030e9ab64b6 refactor(config): derive all terminal env bridges from one shared map 76f89d66deb856eb6a252944bc61b029f2977ca9 fix(test): track TERMINAL_CONFIG_ENV_MAP after env-sync consolidation (#42695) d011871d9ff88414a6c6c51b3fe3dfb496d35b6d test(tools): fix env-sync drift test after set_config_value refactor 52533bea09e4aceaabde93a973601370c5d184b4 opentui(bench): headless memory bench proving the cap bounds Yoga-node growth af98e6deef0095b6687f258f7e94795551b4e1a7 opentui(bench): headless memory bench proving the cap bounds Yoga-node growth 9eb36fd6970f7675ed120cfa64eb05787ca6ef59 docs: OpenTUI is the default engine on supported hosts; Ink is the fallback 52aa2f98f9c77cb06a52ed1a22fcfabf338d3819 docs: OpenTUI is the default engine on supported hosts; Ink is the fallback f8f4b3044abd372a10fa5bdec164ea7e9df89407 install: provision Bun + OpenTUI engine (best-effort, Ink fallback on failure) fb1fb1e5cae85ac4ee9ca9e2d064b8408733e607 install: provision Bun + OpenTUI engine (best-effort, Ink fallback on failure) 0dc257d61021d5650786603b19d7469c343e4f0d tui: default to the OpenTUI engine when the host can run it (Ink fallback) 87b33cb10c8fdb4f3faeb923c7a78b5152a40d14 tui: default to the OpenTUI engine when the host can run it (Ink fallback) 20865a2653915bdcf4d30c7fd641fec03a046564 opentui(ts): shared envFlag parser 51031ec65506fb94b043ad302e741a0aa7e797d3 opentui(ts): shared envFlag parser da07e67efd4722cddc9597d6ed0967af6facf991 opentui(ts): collapse prompt accessors into a generic narrow() edc6e67add355db4b6948dd36d5df559223d0790 opentui(ts): collapse prompt accessors into a generic narrow() b36001940a3fde61da07eb5805b0b35feb4bc37d opentui(ts): deferClose helper for overlay-close defers 2d3cf85d67d1165f24f2ed6d156ebff9129d2289 opentui(ts): deferClose helper for overlay-close defers f4d944c49c3d333101df88628c46c9b792678804 opentui(ts): enforce no-unsafe-* + require-await as errors (prod .ts), exempt JSX views + tests 8f112b06335305a3629322b55efb94abcb10b6ba opentui(ts): enforce no-unsafe-* + require-await as errors (prod .ts), exempt JSX views + tests e4652b99e2593d9d3f46f9b6c0b134fa77e72afa opentui(ts): decode SessionInfo + Catalog via Schema (drop the as-casts) 216790a8f88f1aecd07878454e41305f53569676 opentui(ts): decode SessionInfo + Catalog via Schema (drop the as-casts) 6a73b09d15cbafeaa955ca69accbfd26a0987461 opentui(ts): rotate the NDJSON log file (bounded disk use) 2a25c1c40b95c96139142530da7f0aea9c5f6624 opentui(ts): rotate the NDJSON log file (bounded disk use) af82979d431510638da901537c686000fbd6d5f3 opentui(ts): safe-stringify log payloads (circular/BigInt-proof) d0b14bc6efae69466ac4682bd2e2a824eec9f6a2 opentui(ts): safe-stringify log payloads (circular/BigInt-proof) 3d87abcf1caa4438bb48adf8011d9417c786a38c opentui(ts): enforce prettier in the gate c70620e4a00f3b982e8f8fe5687678febe322fe4 opentui(ts): enforce prettier in the gate 4cb9aa6664579ac14ef6d10cce670f5a28ad1299 opentui(ts): normalize formatting with prettier 2b1564199c643107c2d854691e7b6ecfbaba167e opentui(ts): normalize formatting with prettier bc79644f165674d1994edc28ab4b42b4b679dc04 opentui(ts): no-non-null-assertion + noUnusedLocals + noImplicitReturns fdc0e5fea52b2f3a61721d9ff43466e01859280d opentui(ts): no-non-null-assertion + noUnusedLocals + noImplicitReturns e36b2d1519f003d2393d6cccac9f003682aac634 opentui(ts): type-aware eslint (projectService + recommendedTypeChecked); defer cast-family to warn b3d2de87f9e7b30ef352a27c1ce6f1cd94c26363 opentui(ts): type-aware eslint (projectService + recommendedTypeChecked); defer cast-family to warn fe15a9bb00e9e569fe0945524bfd203191439abe tui(opentui): preflight node_modules before spawning the Bun engine cff7b365d2cdeeba3513e48fb900897bcf54bf44 tui(opentui): preflight node_modules before spawning the Bun engine af577a4c5a9f9203ef1935c6f423d19c5d29c626 opentui(harden): startup-readiness timeout + stderr-tail diagnostic 0240299fb07f31413ddec530869b24ea0bfae9fa opentui(harden): startup-readiness timeout + stderr-tail diagnostic 9e81be7228a20863f4d6e2de7aef014aadab56e4 opentui(harden): configurable RPC timeout 2f30c093782235c0079c685ae5888893d9d20e26 opentui(harden): configurable RPC timeout 28a2f95631d7ce5a37b8e9b38a8aa299eb448be3 opentui(harden): clear the recovering status once the gateway is ready again 90840708f12444f216801420a3b08632a5e7fdc3 opentui(harden): clear the recovering status once the gateway is ready again df9061743db56b0421be7e2ceb7421896f77adf4 test(hermes_cli): scope concurrent-gate fixture to Windows, fix race at source 07fcb3282c3b14eee735c4a1a2871a192b2f1ee7 opentui(harden): auto-heal — restart + resume on gateway crash 60f47eab37cfe95f6b9c85ada2df44a113233c91 opentui(harden): auto-heal — restart + resume on gateway crash 41a5bbf3e849623e16fa2e55315e7041191e7c48 opentui(harden): gateway recovery policy (count-cap + exp backoff) 04704c103e5ba9114be1acf1b93bc2ae0f1cc388 opentui(harden): gateway recovery policy (count-cap + exp backoff) 84b77f68e5e4a6711a44b763c35af23c59e35e04 opentui(harden): surface gateway exit/recovery + transport errors to the UI 6d2211d9d03cd343a5c05e6cdf0ff2862c53ee64 opentui(harden): surface gateway exit/recovery + transport errors to the UI f8adefdebf082047527a5fe628c0a4c6f3906a57 fix(tui): apply terminal backend config before launch c29402d7314173352f4b010afead5c843fcc3b71 opentui(harden): rolling message cap bounds the Yoga node high-water mark cdeef30c6273128b96c94b1b88166f6229c63392 opentui(harden): rolling message cap bounds the Yoga node high-water mark 76e9271dce73c3c935001ff799152ad2cc91441d opentui(copy): theme the selection highlight 3d3fc24d9ac8de12dba1a528b69905d6e3838231 opentui(copy): theme the selection highlight 60c5a82c8530b12cdba4ef5194c3d01de742ce92 opentui(copy): mask chrome/gutters so free-form copy is clean 2e31140728accd45716e880f65410795f9e27a76 opentui(copy): mask chrome/gutters so free-form copy is clean eb4821127c6d56894385df19de0eeea20d937a4f opentui(copy): copy-on-select (auto-copy on selection finish) f4a83c9298d56bb668642d2f5203eafbbde61370 opentui(copy): copy-on-select (auto-copy on selection finish) 028bd899592c307a459a6c13891e99307a4eae76 opentui(copy): /copy [n] copies the agent response 00cb21de3e5cea82a1b040e689f49057eb84bec4 opentui(copy): /copy [n] copies the agent response 0f53d67ee42b655ce04f82ef8885ae434ec90f1f opentui(copy): assistant-text extraction helpers 0437dd060c71badcfa188a3f2546e5be465691da opentui(copy): assistant-text extraction helpers dbbd1d4d050146c8e2d0cd01eaa8543993dd98f9 feat(desktop+gateway): remote-gateway file attachments via file.attach e687292eb4fdc08a3ea3354d6ca3015ada84fd95 feat(models): persist Nous recommended-models to disk; fall back on Portal failure (#42628) aa5489e8045e420eb0718c9af45a6265ca5562b4 opentui(harden): fix 3 triaged findings (timer leak, tool-match scope, complete-only) bc9447d23b85aab0bab015226cbad912978a841e opentui(harden): fix 3 triaged findings (timer leak, tool-match scope, complete-only) 2a86f039ea4208f207f0ec688399a2a8fe2c2de4 opentui(test): track the test harness (test/lib/) swallowed by global lib/ ignore 79dc862680f2e0ec169aad0916d8ec8eda1e1e72 opentui(test): track the test harness (test/lib/) swallowed by global lib/ ignore 79c6896153607eda902ce695fa06c159458e29ec opentui(keymap): adopt native @opentui/keymap for overlay close + confirm 01fa8dcc009d4f4071d25b32d69ed9091b388176 opentui(keymap): adopt native @opentui/keymap for overlay close + confirm db9a9d8e1868c8c12197e6af7bf6e038ea439e6c feat(debug): support /debug [nous|local] in the CLI/TUI slash command 46293f618c2fcc5c677f7388dc6ba628459c0f97 opentui(input): "Pasted text" placeholder for large pastes 3882cc6e61072501e3f770dfa82ce022124d69ea opentui(input): "Pasted text" placeholder for large pastes c4066091cacba42d5afdcceb0b5a87e515019e86 feat(models): add laguna-m.1 + nemotron-3-ultra to curated OpenRouter list (#42629) 080440bd9c24a0f96da258b1b04c7e3b76d1fe07 opentui(input): auto-expanding composer textbox 6b87243ecde2250760a1a4ecc207370f57644959 opentui(input): auto-expanding composer textbox 4f59b4c65700eb66e536a31d0d6da9b3d4deb1ea test(gateway): Telegram relay round-trip (Phase 1 generalization proof) 0d585df15d651300d00371b1a7b7b006ccc2eb9a test(gateway): enforce relay contract-doc ⟷ Python conformance 50ad191a8b05e8af0a8ee99021633a9d404192d6 test(hermes_cli): harden concurrent-gate fixture against partial-import race (#42626) 520b59db1696f37e4b4ff84e668ab2180d4883d2 fix(tui): use canonical get_fallback_chain for parity + map author 4b073d09064a9eec93bc3af18db012abe953d612 fix(tui): preserve fallback provider chain dbf2470d467b7b4665e96ad8dd1e8e01c189c405 feat(photon): Add voice message support to Photon adapter 9fb83eaa2f12d5b5123eaf5720cc2a196e29d511 fix(photon): bump spectrum-ts to ^1.18.0 and always install latest on setup 03376589049a1877cb9dd2f07fac8f49a7c6f222 fix(photon): migrate user API calls to Spectrum backend b58ff93459db5141155cb41b733f9555b78e10eb feat(photon): persist and display user phone numbers in status 2130ef68b3cf1f809f3dd39cc58f0bfbc7859aba fix(photon): Enable group flattening in Spectrum config 637cf94bed12b1832e356996a0c8085fb5857425 fix(photon): strip markdown and add send retry logic 9351cbafab3b62291537bd3a0336d84b4a41389c fix(gateway): auto-deliver image_generate output as native media (#42616) 18ead88273044cfd6c09a6555deca5561ca0eeeb test: update docker preflight assertion for stdin=DEVNULL kwarg dba6380ca619d60dabe7b580fbada3fb2e56321d test: guard OAuth setup-token stays interactive + marker exemption ba622d44e46136f4b95e8009f630cff64f45098c chore(release): add AUTHOR_MAP entry for m4dni5 2c1aaa9cba600d44940f090c907330e80c8d0a8b fix: keep interactive OAuth setup-token inheriting stdin 8bb60ff0391d0070ffcdaae85557721920b80406 test: add pytest guard for subprocess stdin= in TUI-context code bddab61bcb6d37b5128805f7dd07c1c083d10020 ci: add subprocess stdin= regression check for TUI-context code d1f23bb2d57d1185f92f8f57028eb573f72672fc fix: prevent TUI gateway stdin EOF crash across all TUI-context subprocess calls bd3c2534204b73349f37c2ee5c0ba2226a5e03e6 opentui(v5b): fix first-letter duplication on always-active refocus 49d90e68c6570b5f15a2db8a7d066358d324ab8a opentui(v5b): fix first-letter duplication on always-active refocus 54318c65b06fba764d7f8375f82d2818c01a3e67 feat(models): seed model-catalog disk cache from checkout on update (#42614) 82e13ed9497a06cd954de1eee553cdc4c1ed3709 opentui(v5b): frame the startup panel in a themed border box 2cd122c9c17d9b04ed5a7332ecdbaa19ea71c3c6 opentui(v5b): frame the startup panel in a themed border box fb04e85a14f2dd011f61391ba8ad287f7c8fe918 opentui(v5b/item1): Ink-parity startup banner panel 53438228eefc28bc296074955c9ab25eb4a96fa5 opentui(v5b/item1): Ink-parity startup banner panel c1927d2342a769ece93717ab9db97241a7e79598 fix(desktop): set tsconfig lib/target to ES2023 for findLast/findLastIndex 06762a0f5e7990272b130c341cf3ca50b764e1e0 opentui(v5b): visual hierarchy — color-code roles + clean turn spacing 503c1201ff69db2f9c4f2ea0b570a9184a35f69d opentui(v5b): visual hierarchy — color-code roles + clean turn spacing 92f35fab19470e9e76fdda7f6b5a6fc0f04ebc55 opentui(v5b/item5): track active session for the post-quit resume epilogue e44b43ad16a0172014901f2f77a8ab15f0dca0b3 opentui(v5b/item5): track active session for the post-quit resume epilogue cd11ed7a047737b51f9718b5abef5e8f221495a3 opentui(v5b/item4): hold viewport on tool/thinking expand (no scroll jump) cd09aa61eff14952eb3ec0ae337d8516941f7379 opentui(v5b/item4): hold viewport on tool/thinking expand (no scroll jump) 4407fee49f5b12409118733677709fe33cc76efb opentui(v5b/item2+3): fix streaming flicker + native markdown tables c507ca6b3b7af61fe54a0b6b17e884c2593c1d37 opentui(v5b/item2+3): fix streaming flicker + native markdown tables 7d8c31186de5be779bbe8329746a206ec1396e3c feat(tui): interactive Plugins Hub overlay for enable/disable 3705625b74710dcc6f1b57af9b5ddb660b5e0520 feat(gateway): render terminal commands as bare fenced code blocks in chat (#42576) ea0efea2bd102bf3a80c6f82273e8761ac254723 fix(cli): /plugins shows installed-but-not-enabled plugins 48d0c70f616876c3027d84fca05fbb625e6ffe7f opentui(v5/item4): coalesce resize via a shared debounced dimensions signal d90e1956703fc30f935c49789c66161a02b7db92 opentui(v5/item4): coalesce resize via a shared debounced dimensions signal ada43042f82a8ed52211a98d0b4144d68e5ea57c fix(gateway): register relay connection checker 0022e9534e1905befde374a795f2c9196ba1485d feat(desktop): make any agent aware it's in the Hermes desktop GUI 4061e635d398ada9e811074d50353a83baba3451 opentui(v5/item9): startup HERMES banner + collapsible tools/skills/MCP panel 793462a3950edd48b58c145ee51897a5e5cc51eb opentui(v5/item9): startup HERMES banner + collapsible tools/skills/MCP panel 3dcfbbfc4918e7a2138fa7107669d4f09c32bf0f chore(release): add underthestars-zhy to AUTHOR_MAP 3b983e77919ede18dc03f15846a3966e8925bcff fix(photon): add home channel env seed and simplify space resolution 0d25cae0411f56eda119ed6ccc4d730863b63bbe fix(photon): remove reply-to support and fix typing API e79e44af79bd6037559d031bb450a5333d01e8a5 fix(photon): use spectrum-ts reply builder for threaded messages fdf48c63c8feda9d490f8bb96c33201d80fbacc3 fix(photon): wrap text sends with spectrumText helper 06466568845da2b2e4e13460139c2a858ea0c05c fix(photon): support E.164 and DM GUID targets for home channel 92179352fb7621a04a3592082ac30873759d0cff feat(photon): auto-configure allowlist and cron channel on setup e9b26c7c8b2eaeea03b753d9125f6092de7d26ae style(photon): Colorize iMessage number box in setup output 84e4b4b9a54f4cab801ebb208a863378520ff0f6 fix(photon): use per-user assigned line for agent iMessage number 314af28e867297b294a68fffce5ce7bb46016ea3 feat(photon): download and inline inbound attachments b3aef57f213d3d8b36f71cc2c813b68bf26e9ce0 refactor(photon): use TYPE_CHECKING for httpx import and fix client ref 4e4d27875f3dfd43fa4f9456c302b5ffb8b1ad85 feat(photon): gRPC-native iMessage channel (no webhook) c3420d91adee4cdf7c305ddcba9cb5597d1683a3 chore: add jooray to AUTHOR_MAP for salvaged simplex PR #27978 0c2e81df0004c67f0dd72b4656049eef3ac70ca0 feat(simplex): groups, native attachments, text batching, auto-accept 706b359cf866a698db53ecf4363adc845db0bfe5 Merge remote-tracking branch 'origin/main' into feat/gateway-relay-adapter 741a4c23ca963c14fdb33fa72b941dcc504e1346 opentui(v5/item8): design polish — header chrome, status segments, ANSI strip 636bb6e92832bc7fa3c6b9b7d6fa6b9e3561c46a opentui(v5/item8): design polish — header chrome, status segments, ANSI strip a46462ec657734075cd807c515bde16ed2e878eb fix(cli): persist custom --portal-url to .env on dashboard register (#42435) b23184cad4fdba8f3d925c9974265c241336790e fix(api-server): bind request session context for tools c6e72a845443f4ba2bb5e060a0502d01e4c8bc65 opentui(v5/item7): render GFM markdown tables as aligned grids 0da48b0c7fd76fd6a49e461cb31cd9b3ed6eab86 opentui(v5/item7): render GFM markdown tables as aligned grids ffce3fc63de9600a049fa654f56215ce72cacfdc test(dashboard): cover the whole _require_token route class under the gate 180fe665cb0054b4949fa6838954d784e44c2b7d opentui(v5/item5): stabilize inter-part spacing (kill streaming jitter) 50023fd15105dce2f4a201c5f12e017a7c0ff6bd opentui(v5/item5): stabilize inter-part spacing (kill streaming jitter) 6a24249e7cdb92d6dcd8eb5cc8dd18b3beaaa4fd opentui(v5/item6): collapsible thinking traces 5352aec064c3d1274f9d046dee5e9b249f60bfcd opentui(v5/item6): collapsible thinking traces a10b9b9b543cc8b2cd39f2e956a5cfc1b4627aa7 fix(dashboard): let _require_token endpoints work behind the OAuth gate ee211d087ba8b98894a76b9be29ac14994f524ca opentui(v5/item1): resumed tools render like live (collapsible + output) 7b14c51e7b1acb199baac34ed0875c746b153686 opentui(v5/item1): resumed tools render like live (collapsible + output) aec752faa3e17cf1fb96862c6f43f1fff3bc9e28 opentui(v5/item2): surface tool-call args + de-pad output 8c1b62e72f98cce291c3de84d45c86cf872cc8d6 opentui(v5/item2): surface tool-call args + de-pad output 52ae9d9f022a69f377a1fa5f7c54a541bfca4302 feat(dashboard): make `hermes dashboard register` idempotent (#42455) 544a86b1e962da09fee4b5c84e07ef40b76ec10e fix(desktop): read live terminal selection for ⌘/Ctrl+L 8631d5d835c6d2ff9a2c8508758e8ff041bc432b refactor(desktop): drop the redundant Ctrl+` terminal-toggle fallback 4109fbb8ebe328112297bec165193e57455f5a56 feat(desktop): tell the in-pane agent it's embedded in the GUI c5c398846adf431873dd94ae2b19b9fdd105f878 fix(desktop): allow ⌥/Shift-drag selection over mouse-mode TUIs c9540570aeec5b8efa4e9b98dcdb01a65d2d7600 opentui(v5/item3): composer flush to bottom — drop root paddingBottom e1363140397e1cfcd4d10f15a0b2e276364796df opentui(v5/item3): composer flush to bottom — drop root paddingBottom 82543e7158c224d76f7bff9ea436c1f7f336a8ca fix(desktop): remove active/check states from the command palette 2973d3d7fc789db9f73865e952bd8115730a8597 fix(desktop): drop the active check on the command-palette terminal item b29c1042ccecb398df6d6ca65153350e467201d1 feat(desktop): show platform hotkey hints in the command palette bfa311fc2c6a98de2dae18eddd5716ed00ef1734 fix(desktop): make the terminal a resizable, themed side pane 1e5ff4a5778f3a888059e1f4b8019b6490859274 fix(hermes-ink): disable mouse tracking on raw-mode teardown to stop SGR leak (#42527) 6a8dda171cb8c0414c1d616837df491ae56381d3 Merge pull request #42515 from NousResearch/fix/desktop-debug-report-links 3563b66e0e89fd485b27247f4e5176888e3c5729 refactor(desktop): dock terminal under chat and simplify file rail 7521de42f4096322899f1cc28f05596b4a4fface refactor(desktop): dock terminal under chat and simplify file rail 086dd4c28bfbd6b08a60f1e7e819738f6fc1fce1 feat(debug): drop dead confirm step from --nous upload (stateless NAS) bb6474cc5167942a2bc6669c4e298acca01ddcd8 feat(debug): add --nous flag to upload diagnostics to Nous S3 cc60cbfeb5937e312a3c6e2546faa2bf0274a4e1 feat(plugins): install from a subdirectory within a repo e0f6a35ac659e2d83e20459ccf5804b882c5b169 fix(desktop): render debug-report paste URLs as real clickable links 02e56da0fcc54d4ec0156a0317257b97ab6dbee6 refactor(desktop): drop done1 byte sample from completion bank 5e3c5baf821c3479989b5c755bf2b87dbdf794a6 feat(desktop): add curated completion sound bank for turn completion b5f8996ccc2163ef06b4265d0882019fc24b0682 test(cli): exercise real _prompt_text_input for native-Windows confirm deadlock 714183530b05b2169a394724b8d6c97e68f017a9 test(cli): convert stale win32 stdin-fallback tests to the modal contract ab98818e5bf3d721d01f1b1899f60ceaeab2a2e9 fix(cli): use the confirm modal on native Windows instead of deadlocking input() d66bac5a1a0bbfffe0255a19cf4b7ce49f278672 test(cli): failing regression test for native-Windows confirm deadlock (#33961) 300371c3f24c84d3b02c3408c72ba7f5c282acfd chore: add AUTHOR_MAP entry for ruangraung (PR #42308 salvage) f4531feee8988ebad8d366cb2e0c044315271faa fix(telegram): improve MarkdownV2 edit fallback and fix _strip_mdv2 bold handling 6d2732e78602871408dcf72a1deebb3fc9912b56 fix(gateway): apply MarkdownV2 formatting on progress message edits aa424e51acbfd057a3ae81dce8d26e2d6ce7108c refactor(doctor): fold custom-provider vendor-slug check into one predicate 732ababa1a6fdb2a35dc2c9f8de37db699861ae7 fix(doctor): allow vendor slugs for named custom providers 421226e404a14f9a43df2ae3262d4bedc4ca82b3 fix(gateway): stop terminal progress from posting the full command to messaging chats 37561c214b66a8c8c8b7af28635678a87cb6f179 fix(photon): use allowlisted device client_id + validate token before save 4615e08d3da991b771b16ac7c6df609593ec1293 feat(photon): wire outbound media via spectrum-ts attachment() (#42397) 5e9d7a766107d1aaee3f347a587ca653abd96e0a fix(skills-hub): stop shipping a degenerate index when GitHub taps collapse (#42347) 639c1e3636af9c773f76e1bf857810680e870254 feat(sessions): add optional max session cap 1e3b3dfabbe090cdcc0dba648e4976dfad6e5090 Merge pull request #40560 from kamonspecial/fix/langfuse-usage-sanitized-response b0defbe6f18008e0d59773facb4387fddf3eaed2 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/desktop-slash-commands 09a6a2ddd71d93b973736853e534085f5f511a0a fix(desktop): stream the transcript while the window is backgrounded (#42399) d3992d1a2840546d4275d296605ebbd4d491a253 Merge pull request #42331 from mnajafian-nv/fix/nemo-relay-adaptive-config-shape 41506ecf0ebf1c5a79ccb301b1e2fa3360c05b26 fix(tests): restore missing __init__.py in tests/plugins/platforms 1db79bfe1e188134a53c32066bea5d35367e1f26 Merge branch 'main' into fix/nemo-relay-adaptive-config-shape d6c11a4575bc99ffdf2a75212398122fa4aff383 test(run_agent): fix racy ordering in test_concurrent_handles_tool_error (#42356) 335bd8ead4008de15a1728673773cb3c6f9f35de Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/desktop-slash-commands 3f1758d2e4e1164faebdddc60ca90b5b4cd61df6 Merge pull request #41551 from mnajafian-nv/fix/hermes-plugin-openinference-finalization cf496303794204f7c6616ea389e00db86903ebf7 Merge branch 'main' into fix/hermes-plugin-openinference-finalization 9fd3d5cf85a82aaef3ab759828f7777ee1e5b8aa Merge pull request #42380 from kshitijk4poor/chore/author-map-mnajafian a1cb84aca9cad23fe35c8a4af2f36e810464b1de chore(release): add mnajafian-nv to AUTHOR_MAP 175a708dcddaff8247d3a307eb4fe69f10c982a1 tui_gateway: fold session-db close into a context manager 754154a9c2faaff9e00932fa3c9e32b3ed936fb4 fix(tests): retry per-file pytest subprocess once on exit-4 when the file exists 1866518574ef55452178f88ef6153ee2a0cb4486 feat(photon): group-chat mention gating for full channel parity d7f42e368e04b8ed3cf58c40de2edffc00d08343 feat(photon): full channel parity — gateway setup, pairing, PII redaction, doc fixes 630318e958bc28d4f45e86e67e771095bda0033b refactor(photon): fold device login into setup, drop standalone login verb 8f89c4615f63fdc8ee1343185358a711f4384205 chore(photon): clean up ty type-checker warnings from lint-diff bot 083d8b2d60095be024f9b8b897ed3f5833123759 fix(photon): collapse credential summary to single-emit literal-blob 6a0cc9bf92b169d37f26f76d4c715f298b97a7dc fix(photon): suppress CodeQL clear-text-logging false-positives in auth.py 2ee7abf27133a6b59f0a93951600722c33debdaa fix(photon): emit credential summary via callback so no tainted value escapes auth.py 55fb422f6f0cc0a5b32ec2d9b8a03d1d4848d435 fix(photon): isolate ALL secret-touching prints behind auth.py helpers 91db0ab420fcae6db6a0acf3a98bf2729f325475 fix(photon): clear remaining CodeQL clear-text-{logging,storage} alerts 3a0f6ac3d4f355dcbcfa9f574fdd0cdcb8fb33ab fix(photon): satisfy Windows footgun + CodeQL checks 5b4e431e8c046cbef8648b15441ce436c56cf76d feat(gateway): add Photon Spectrum (iMessage) platform plugin 42e1196d29b318fc48a27c6424f80e6f6ac8b503 desktop: expand bare arg-commands to their options on pick 74043fe29fac30eb300d426c8eece5078191d2d9 Merge remote-tracking branch 'origin/main' into bb/desktop-slash-commands 6e7033bb4c790b5b2f2a1242c6fdb35275c68cb6 fix(desktop): don't drop the focused chat's own stream when unscoped (#42359) a6a62ad016361ca3ffd56920f6ea81c2e91ff274 cli: list real personalities in /personality completion 41596d4ba244594a120cbce1b4334e7c7753d365 desktop: keep backend meta on slash arg completions bfb2dbf810a8b283eaa8fb6d09f2cff83f3ec8dd desktop: fold repeated slash session/output boilerplate into one helper 8db251a3bd38a9dc680761f67fe1b20187557c21 desktop: registry-driven slash commands with first-class pickers e88116256c481a81662b849d919100e63e8ff299 fix(update): scope git fetch to target branch 2f510ca8e07b570ad3fdc491400432a96494aaf3 fix(deps): align anthropic extra pin with lazy pin + guard whole pin surface (#42335) fa8280ea372618c864b5fea791f470379383d702 stash nix faster c78b3e1d3ccc068149b976f53cb53bad9a94e361 fix(auth): add Codex OAuth accounts as distinct pool entries 761b744abbc621abad3fb177cd50dc1d5666bb68 fix(auth): preserve independent Codex pool entries on re-auth (#39236) c9094f5e5fcf579afe6870817c02d79821ec15fd fix(stream): don't report dropped mid-tool-call streams as output truncation (#42314) 89d380261d1b5ebd69c3b87504da2f89fb0666f5 fix(approval): resolve Hermes home at detection time, not import time b0efe1d64b3ab005e9c3096b7023eb5e076a3a61 fix(approval): gate resolved Hermes config paths 96fd9d4979f327028faa9b2cee0d8d31955b1e9e fix(desktop): stop running Hermes.exe locking win-unpacked before Windows pack (#42100) 021d1034d098188ac61ba3bde6bbc6d3b6f9c0ee fix(nemo-relay): align adaptive config with tool_parallelism mode abcf996b1f749a647a1b213653a80d1eee58f6d1 feat(windows): enable dashboard /chat tab via ConPTY (win_pty_bridge) + tests (#42251) c6d27addf73d8f7a51d4640f120085e5bcf8942e fix(deps): align aiohttp extras pins with lazy Slack pin (3.13.4) 5916248dc0fcede1430af44a5b7f39a507a0eba4 chore: add AUTHOR_MAP entry for rbrtbn (salvage #25939) 550b72dd877c230ee78615ab058ca1ff24caa2fb fix(cli): gate tool-rendering paths with tool_progress_mode, not quiet_mode 4129092fda8b53af00b9ca6d611602944ba0569a fix(cli): strip OSC 8 hyperlink sequences in ChatConsole output 8e4c447e5fbebb8893de20b8e21e6b3083e8970b fix(gateway): prevent duplicate user messages in state.db 6e3915fbc1d5df822780e27dbad3223c6c705658 opentui(v2): home hint (item 12) + verify /goal + expand feature matrix (item 8) 73d5c2871d43e42f9e4ccba225bf9eeb5199d837 opentui(v2): home hint (item 12) + verify /goal + expand feature matrix (item 8) c3d2d87a74ffebfd6b01fa5e473a3e4536d98f85 opentui(v2): clipboard copy/paste, image paste, glyph-free selection (items 1, 4) d46a8f4492ca05a2c958aeb90785493dc1e8e84b opentui(v2): clipboard copy/paste, image paste, glyph-free selection (items 1, 4) f423aebb80fc59276b4b27ec0e71191efe4f90bd opentui(v2): fix streaming caret alignment during model response (item 10) eaee382b47416b55189a37614478fd1bbfa70405 opentui(v2): fix streaming caret alignment during model response (item 10) 37b74f4df332e62a32d5a9a69af32e170f08d899 opentui(v2): live agent trace + /tools navigable overlay (items 9, 15) 59e9e6a26e16c306580fb63773d9395d77f93a3b opentui(v2): live agent trace + /tools navigable overlay (items 9, 15) 247604cdde14a56777d5c9aaca1761a676adde85 opentui(v2): collapsible tools + composer glyph, drop the blue tint (items 3, 7) a046cee754baaf06eca057e8cc0d29afbcfae466 opentui(v2): collapsible tools + composer glyph, drop the blue tint (items 3, 7) 2bb61a7d09ad54ddb00325bdd99dee77576d65bd opentui(v2): slash-arg autocomplete + file/@-mention completion (items 5, 13) 15ccaf9ab9f4032b2c58b7a7640ab38ab8a715df opentui(v2): slash-arg autocomplete + file/@-mention completion (items 5, 13) 1ecec7a9bc53477ad39c2587b430ca28d7e34942 opentui(v2): prompt history — Up/Down cycling, per-directory scope (item 6) c391add57932b714c091148421456d8e82db026a opentui(v2): prompt history — Up/Down cycling, per-directory scope (item 6) 325350d19211aba6c7f808742ceb40507706307a opentui(v2): always-active input — typing reclaims the composer (item 2) 1e55b3b294fa3104aa8a7796cc4c6c1ffccf4a64 opentui(v2): always-active input — typing reclaims the composer (item 2) 1be5bd92fa12a209492c964c66e57e55772cd4d0 opentui(v2): Ctrl-C stops the agent; second press (debounced) quits 76cf809066a7ef77d2607849ca97f21fad4a0961 opentui(v2): Ctrl-C stops the agent; second press (debounced) quits 9b1e0d6f70bb08b83434358f8eab7b74b4cd09a3 feat(desktop): assignable themes per profile (#42286) 93793b6af52b2c731b65c8cb2d22f892bc59f37c opentui(v2): status bar (status·model·effort·context·dir) above composer 915b9b5f6f78239d2ad17f2bcfc095102d68e4ec opentui(v2): status bar (status·model·effort·context·dir) above composer 395ed918915cf29a390f33115654267848a0be0e fix(desktop): keep a just-finished session visible after switching away (#42285) a38003be3d8ce87565915105b2d6261ba2cdb723 Merge pull request #42143 from kshitijk4poor/salvage/tui-slash-worker-leak-35626 365813a72b4e574df2548bc26780374ef3bdfd2c fix: resolve rebase conflict in _teardown_session worker cleanup ae94ed17288a8547aee6af1b73d1d3f5f126281d fix(tui-gateway): reap leaked slash_worker sessions on disconnect + active_list liveness (re-scoped onto current main) 9c9d9113a8ae8f85aaf1ebff74ddd1fdf0b5b9a8 fix(auth): auto-detect OpenRouter credential from the pool, not just env (#42263) 9b08c71850f629a115bbff38d559ce33840a04d5 feat(cron-recipes): /cron-recipe seeds a conversational fill 71575bd782d1c55af349bb9c19d8ef450f1f668d feat(cron): Cron Recipes — parameterized automation templates across every surface 532a53ac242ac8b46a790cea269262b1e0eb5351 feat(cron): Suggested Cron Jobs — one surface for proposed automations 26f6929eb435305c5d968ef7708d39aba52417e5 fix(opentui-v2): route thinking-faces to a transient status line (not the transcript) 1bf9dff1fb9f07ee296ac8813185d5d68957e730 fix(opentui-v2): route thinking-faces to a transient status line (not the transcript) de80d28f38487a571e60a7936938a262ef0e9b2a fix(desktop): require session ids for scoped gateway events (#42178) 808ef152e5d8747d45517b4f516f7b2da35fb1dd fix(opentui-v2): live UX — enable mouse + smooth streaming markdown (opencode parity) e14dfa86c611dc9d741a2ff6611652a748f14436 fix(opentui-v2): live UX — enable mouse + smooth streaming markdown (opencode parity) a77efada5f55436e6a17da45a30a3352ce24a780 refactor(cli): extract 18 model-flow wizard functions into model_setup_flows (god-file Phase 2) 55b83c3d99bab099f777feee57615dba10acdbb2 refactor(agent): extract run_conversation post-loop tail into finalize_turn (god-file Phase 1) a706a349b5d11f78dee0e795641622e2789f88c9 refactor(gateway): extract authorization cluster into GatewayAuthorizationMixin (god-file Phase 3) 094aa85c370ba07d49786ed25ca93fe8226960f4 refactor(cli): extract agent-construction cluster into CLIAgentSetupMixin (god-file Phase 4) cef00ae602a8aa1311d55edfad4e322c4ff99993 fix(tui): handle Windows PTY stdin and detached WS frames (#41953) 74744795af87ff795a07abc38fa3a2d4dbef7bb6 docs(tui): correct HERMES_TUI_GATEWAY_URL — dashboard-internal, not remote-attach (#42162) 399b8ee5f0136e4b4c3cc4affdbf3bbf90b461c1 fix(anthropic): strip Responses-only kwargs before Messages SDK call (#31673) (#42155) 47d5177a7d61af220869e9319f1ddd51433a92ab fix(plugins): thread-safe lazy-singleton helpers; fix honcho TOCTOU (#24759) (#42150) e7d7e0157f9638d686af525384f4f018210e458f feat(opentui-v2): Phase 8 — launcher cutover to the v4 Solid engine 055bc3e3a24f356aded8a347754ce37977752251 feat(opentui-v2): Phase 8 — launcher cutover to the v4 Solid engine edc416470418659ad2de2d8be5b7dc70f64f03b0 feat(opentui-v2): Phase 5e — agents dashboard (7th first-class surface; ALL done) c019a9d2d58d4eab6757bc99f60101520a141816 feat(opentui-v2): Phase 5e — agents dashboard (7th first-class surface; ALL done) 7412cd5c781c8797220a151f9878eab093c07ab3 feat(opentui-v2): Phase 5a — slash completions dropdown (last first-class overlay) 99b24f6747398a382e3adc8014e663b79865b5b4 feat(opentui-v2): Phase 5a — slash completions dropdown (last first-class overlay) 3f54152191eb4c9436647db6ad60408dbc24bac4 feat(opentui-v2): Phase 5c — model picker + skills hub (generic Picker overlay) d4d7c9b0ae763e748bf9ab91e9a6217c5b3293d2 feat(opentui-v2): Phase 5c — model picker + skills hub (generic Picker overlay) 3fe7709b86e2343a31aad76e50dd65b651f51243 feat(opentui-v2): Phase 5c — session switcher overlay (list → pick → resume) ba105943222929071278c1edc8c3736684a4358b feat(opentui-v2): Phase 5c — session switcher overlay (list → pick → resume) 74239b4942099fbcfc71fa68242a6499c97d2fec i18n(desktop): translate backend update apply status messages b000e05b117b0d51c5eed1bec9b671edec82a230 fix(desktop): don't claim the backend update succeeded when it never returns cd030f5f40297401a2ea37ae8ab2af1fe9792d15 fix(desktop): close the backend update overlay on success; error on no-return 81647458c7a7a9c3ae941af8b49fcf005d4ce5ff fix(desktop): recover the backend update overlay after the remote restarts 9b2a64fa6a272c2a43890e28bfb12f5386708638 fix(desktop): reflect env-override remote in gateway connection state 47518bc9135db35c6e3174e4c7447fed4a66a1bb fix(desktop): check backend updates when the connection becomes remote cfaa46fcae63e23bd6a9453c2453979628040a92 fix(desktop): pre-check backend updates in poller; client button first 56be1a63a33d7c7f0562c4c01b7c8b4463b4f984 fix(desktop): split client and backend into two distinct update buttons 9c264555b0183457523ad274ed92c88f40b4aafc fix(desktop): name the update target in the overlay; honest no-changelog copy 87ac7cac131bb47c1b920e9c8b6d57b73db1f37e fix(dashboard): log update changelog against origin/main, not @{upstream} 64da518db413d60ae65c3c799a0dd4f17816619e feat(desktop): remote update overlay sourced from backend ed1e2533b73d37b0456847f154249c557c328e54 feat(desktop): show client and backend versions in status bar when remote 22841470449a765a3dcc3cc226e44e1a0ac8b7c8 docs: document commits field on /api/hermes/update/check 9e360681f84a797bc0abce5a4ed1254303d79227 feat(dashboard): return recent commits from /api/hermes/update/check abce50e34d482e5660432451b84409b75693623a feat(opentui-v2): Phase 5a — pager overlay for long slash output 0d0e9203cff510901495b350653f39534a86dd0c feat(opentui-v2): Phase 5a — pager overlay for long slash output c704d384f4b7c3602b1ade0f0eee9d9e8f048e45 feat(opentui-v2): Phase 4b — session resume with tool/transcript hydration abdc21f39afa9ff44f999c7103694fc634e70b85 feat(opentui-v2): Phase 4b — session resume with tool/transcript hydration fd1e7c2bc356d773589320051853f8e058ca636e fix(tui): install the process.on('exit') terminal-mode backstop (#42165) 4f2bb7e52f9b04a639694680d5a9584d13ce2c9c feat(opentui-v2): Phase 4a — slash command system + local confirm dialog 87634e19fd108c7cf517943df36c054a9e26d8bd feat(opentui-v2): Phase 4a — slash command system + local confirm dialog 1bc376921f172e994fd13e2f5b00ebe94187aca9 feat(opentui-v2): Phase 3 — blocking prompts (clarify/approval/sudo/secret), no deadlock d01b57379626cf775db2b5bfb1d8c505c3045002 feat(opentui-v2): Phase 3 — blocking prompts (clarify/approval/sudo/secret), no deadlock 7230fcb7f2577823d55e66d51bbe70b42789c677 revert(nix): drop the cp patchPhase workaround from #41867 (#42151) 728612c29c9d96b375363cc689f987b6434833be fix(observability): recover after plugin-config clear failure 6cefb7c5b54a476007cfb1b6de7c3c3f9e90e10c feat(opentui-v2): Phase 2b-ii — native markdown for assistant text (Phase 2 done) a572a1eae4a6cd2ef0d86242f8449e01156b0da2 feat(opentui-v2): Phase 2b-ii — native markdown for assistant text (Phase 2 done) 8732d638b7715ad4ae22178db1fc1b9cd09e8e52 fix(update): self-heal a venv left half-built by an interrupted install 59fbc05031f8660ec5b1ae8a6584c61f630c2ab3 feat(opentui-v2): Phase 2b-i — ordered parts + inline tool render b72ac777834d872924dcf7181cd04391d4a6f5e0 feat(opentui-v2): Phase 2b-i — ordered parts + inline tool render 4219a91df5e85e1af5e4aa03956093200e015e0c fix(nix): make config.yaml group-writable under addToSystemPackages (#41940) 4b81ded58ba815803d1d38560e4349fb41ccddab feat(opentui-v2): Phase 2a — scrollbox transcript + textarea composer + header 53b37463c4d5901f597517fbd529d8d069d5e2cf feat(opentui-v2): Phase 2a — scrollbox transcript + textarea composer + header a3fca26c562023fdfb9d0efdcc608e946fdfca02 fix(tui): close slash_worker inside _finalize_session (defense-in-depth, #38095) (#42149) 927c902785eec3d1d2ae01b54046f127902ed48f feat(opentui-v2): Phase 1 — live tui_gateway transport + Solid store + theming cc2c881fd168cce55b264750822aedb0d553c43b feat(opentui-v2): Phase 1 — live tui_gateway transport + Solid store + theming 5e06c9ffef80fcfd88433b985baaf074674a3909 fix(agent): clear _session_messages in AIAgent.close() (#42123) cb13723f53fdb4269f6904740b942b28425c6615 fix(pty-bridge): mark os.killpg/getpgid windows-footgun-ok (POSIX-only module) 8cb1908e18840453b82d7677aac01844f94b8be5 chore: map paulb26 in AUTHOR_MAP for #24135 salvage 8b6a8f667d7b34794a9103dc1ea1a4099c54a63e feat(slash-worker): self-terminate on parent death via create_time watchdog b31c6c33b21d39dca2ed78faf682ff8e10d9483d fix(pty-bridge): terminate PTY process groups on teardown e9c1e757fed4c1c0c967d996ad0021b478a74666 fix(gateway): release evicted agent clients to stop RSS leak (#29298) (#41974) d3943fe37dc3f03f5d2176a7b0dfe529b5afe67d feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 12342a4bceed7277bbdee0f58e42a32b4b1027c5 feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 3d029a53ec327fd7a628cde900bf300ca9a0cc0f fix(gateway): close residual memory-leak sites under heavy scheduled workload 400e6e43cade2a5f5863c592f4d923d9468db565 test(gateway): de-flake concurrent-compression lock test with a barrier b99c6c4277416dc9429afe9bf38155087541ddb8 Merge #42076: nested category plugin discovery + alias-normalized enable/disable (#41066) 2b89afec79f67d4e0aeb50cb3cb16d9853d0150f fix(plugins): alias-normalize enable/disable for nested category plugins (follow-up to #41076) 30ad77daeb1711655d03627ee8e56d921a670b78 i18n(desktop): translate backend update apply status messages ae8c1fe2093e156fc7a5c9829fe447a37d845e5a Merge remote-tracking branch 'origin/main' into feat/desktop-remote-update-skew 5b1dd05994cf59ddf12ca1af077ec8def9ad0e7c fix(desktop): don't claim the backend update succeeded when it never returns c5715827aedada41cd502d9caf5cd91c3f2e2961 fix(desktop): close the backend update overlay on success; error on no-return bb430904dd0eef93e6242c74996745542f34e31d fix(desktop): recover the backend update overlay after the remote restarts 6e3622da02b5dc2b0d4fa50ee9ad3653555d895c chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 4 updates 2bd9c9b881f547838d2f59150101c1db2a15f0ce opentui(phase3): launcher integration — HERMES_TUI_ENGINE dual-engine ea0de824225bc34ce3c874944a663d803a607faa opentui(phase3): launcher integration — HERMES_TUI_ENGINE dual-engine c3055d61857751ad82a2bf9e4f5de5d26a8f2a16 Merge pull request #41984 from kshitijk4poor/salvage/6600-stale-streaming-worker f96eb857a531b356a5be212c51ddc879f305a6c5 chore: add kristianvast to AUTHOR_MAP d55304c39f204dd8b9e23f3bb681cc2f3472dc56 fix(gateway): transcribe voice messages during active agent runs c97f0a6c82cfeb4b9d23c281b2d2194617adf7c6 refactor(apify): move Actor tools into bundled plugin 58e921a819eb74626c3c4001e3a661938b535923 feat(apify): Actor execution tools — discover, start, collect 00c46b8ff93f9a2abacf9b17a4e93e6c3cb677f7 test(tui): cover heapdump opt-in gate + retention; add AUTHOR_MAP 8ae0d054f4d3bb5dd1f376365c5ebb0091b6f9e7 fix(tui): guard automatic heap dumps against disk fill dd0d1222a247c4e815f2dbee3b88736ca5440976 fix(agent): don't retry interrupt-induced transport errors (cascading-interrupt hang) aa6f2775fac7c460a73669f35d4d478fed393004 fix(memory): run end-of-turn sync off the turn thread (#41945) a5c12f5f593b0d5c11bf0adb15074cc50fbffaee fix(install): move broken checkout aside instead of deleting it 5d7abf91146149c7db6f4c3c44c4bb732237b627 test(install): cover commit-less checkout handling (#40998) fc0900d120df5329e58642fa4d5ed28918423f47 fix(install): re-clone interrupted (commit-less) checkout instead of failing 0904bc7ea21131573c818f3beb20b8589b646686 refactor(cli): extract 32 slash-command handlers into CLICommandsMixin (god-file Phase 4) 4eb89723903072d2af3ff11462a997fcd5de555b Merge pull request #33817 from sweetcornna/fix/28503-busy-input-fifo 039fbb41fc2dbdd1cffa12ede371e6775bc93d7d fix(desktop): show newly configured model providers (#41545) 15c99b437f5b30f6889440dc2498dcabe18db18a fix(cli): set PYTHON env for node-gyp native builds on NixOS (#40690) 7a5827c8b029bc43aa6f0cbf631bb458aa4d8990 test: repoint percentage-clamp source guard to gateway/slash_commands.py de5fe2fa7d6da868d18d5cd1cc846922fbb12a84 test(gateway): repoint slash-command mocks after mixin extraction 619bd782738adfa87544d0fda7a1114defe86e4c refactor(gateway): extract 42 slash-command handlers into GatewaySlashCommandsMixin (god-file Phase 3b) 02a4d66951984e7e4a656ac0d5162a7a6a1ee8ad fix(auxiliary): retry transient transport error once before fallback (#16587) 4107076128a6d64b3a22025b193a24e2b704c563 Merge pull request #41155 from kshitijk4poor/fix/cli-modal-direct-invalidate-41098 4d18717b6c798d4f6bab9e736c6ed10c5a8365f4 fix(gateway): drop --replace from systemd unit templates (#41892) d02a59b67997b9533eb786633604b1bec9c24bf9 fix(nix): cold npm builds + fix-lockfiles real-build verification + auto-fix workflow (#41867) e45b74583589424970c4af47366464178378e31f fix(file-tools): reject sentinel TERMINAL_CWD; anchor worktree edits before live cwd exists (#41861) e02f4c03c312adfbea316da57aa248104a26e678 fix(gateway): abort --replace when old PID survives SIGKILL 3714caa1b99070384e4527cdbe429cb13d3892ca fix(session): follow compression continuations for transcript reads 14e3bb1f27b5370141496f4755ea20cc63a9c4a6 docs(skills): tighten dynamic-workflow per donovan-yohan review 329c33dac3d1dafe81ffa83e7194f7ff1e734c61 fix(terminal): read cwd overrides under raw task_id after container collapse d759c13c0963ea29528558640caacb8ece656432 chore(salvage): lint fix + AUTHOR_MAP for desktop source-folders PR #40272 694adec6350fc6292751c64a6e31dfb76928c41e Smooth desktop sidebar drag sorting f0fcaa1e547acbd139f3c1142edde56ebd5f298e Preserve dragged order inside source folders 0f500fc41d009c3773629eb301d144fb40a856f6 Render grouped sessions when local list is empty 3fc67b7333d728fb942092c76b32de486f6fc3f3 Persist desktop sidebar drag order ede4f5a4a30b16cba4a5fe6ecc28f87faca37b83 Show messaging source folders in desktop sessions 9d6992ee8a7b4a8d9233484acd66cab56e50886d Show platform sources in desktop sessions 1c68f6f81f6ff5f94ceb1b6933f2524e59e5f9c8 refactor(gateway): extract kanban watcher loops into GatewayKanbanWatchersMixin (god-file Phase 3) 6459b3d9913f3dd2cc4e83857b5ebd7fd81908f3 fix(terminal): collapse CWD-only overrides to shared container 1a626470ca6ebc651e1cc45c6d09812bc54e0462 refactor(cli): promote 9 closure handlers to top-level + extract their parsers (god-file Phase 2 follow-up) 524453dab57e2201bda1c5338900453152b8ae98 refactor(agent): consolidate inner-retry-loop recovery flags into TurnRetryState (god-file Phase 1b) 4d926f248d6ea7750b3c0c2b0204f43c00d22d17 chore(release): add AUTHOR_MAP entry for rodboev 648706936dac72069859431448535142fbb34e1a test(gateway): add compression session_id rotation integration tests (#34089) 39c4ac3af1a5aef0715a427fd53b5fd60940e837 chore(release): add AUTHOR_MAP entry for JimStenstrom cb5c24e37d2328d982fff0527b289d981a46557c fix(agent): sync logging session context on compaction id rotation 8e223b36ed01fb3b5c9f99cfa1c7273a57cdbc47 fix(curator): protect load-bearing built-in skills from archival/consolidation (#41817) 777dc9da625c891ea4525eae8ed6c83936b07242 feat(acp): emit session provenance metadata for compression rotation (#41724) 240c5d4543d70c76138c3f949cdc365d99f2fb99 chore: map martin.alca@gmail.com -> draix in AUTHOR_MAP 132d6fe6d6af0d2218494e133b775f12f7bf9f53 fix(volcengine): strip XML attribute fragments from tool_use.name (#33007) 5869d594ab41e9e71fb208118b88682d8eaaeb3d test(relay): assert connector stub never leaks into production paths f5bd09af4b37c4d77c1900a6d66eea80d008e8a3 refactor(acp): share interrupt-sentinel prefix, simplify guard 9b631e4ae1e53def4c4f87049a5ff7501e9af373 fix(acp): suppress cancel interrupt sentinel 1b3491e8b5de12295947f045b895af5b65212931 docs: relay<->connector cross-repo contract (v1, experimental) 96e138ed24943d876b6f676ab086f4b9dd2bdeae feat(relay): route mid-turn /stop over relay interrupt channel 2789bf4e2591e4f8bc773f4f0ae3c4ac062b9631 fix(auxiliary): route Codex Responses path through shared converter (#5709) 568e1276124a08f11cafa84e69879c64ec01c563 refactor(cli): extract 25 more subcommand parsers into hermes_cli/subcommands/ 4da45e872738761a53d1f04079e4b49b1b2f63c9 refactor(cli): extract profile + gateway/proxy parsers into hermes_cli/subcommands/ b2e605324364b2b3b7db7bd8617417e6e3c05107 refactor(cli): extract hermes cron parser into hermes_cli/subcommands/ (god-file Phase 2) 75a12474ec61d184a5a51bcd2f0bc6a8676df90d feat(relay): register RelayAdapter through platform registry (flagged off by default) 54870847cb0f530105907b1a793531b8d0f03d78 refactor(agent): extract run_conversation prologue into agent/turn_context.py 6729118a4a8431edfde768ff1af831070b53b33b feat(relay): transport protocol + test-only stub connector 86c537d2091311e5223aad9025b64bf85fd8be82 fix(memory): instruct in-turn consolidation + retry on overflow (#41755) eaf1721b9f2fdc89a4dcdc83e71c8fde34fa0a3a feat(relay): generic RelayAdapter advertising negotiated capabilities 2a10da3a16f9d437813b2d3673646ad2ea1e8116 fix(gateway): keep /model + /reasoning overrides on topic recovery & compression splits b8469a81e3e3f0793615d9e4f71589652ae9bc9e fix(weixin): add rate-limit circuit breaker 2e6286278487d063121dde27a2a971b0df30932f fix(telegram): use get_running_loop in polling-conflict retry reschedule (#41716) b5f7a1f2990dbcdf26a501880c9ad05f2c6e8226 chore(release): add basilalshukaili to AUTHOR_MAP cca3b77a4b4217bb13288f0c4cac9710d82432c8 fix(compression): clear _previous_summary on session end (defense-in-depth) 8513a6aec784b927cfb8e13f75f10eeb6db893c4 fix(compression): guard against cross-session stale _previous_summary contamination 593fba5f5d892b8207ddf0ebf033a82693ec57bf feat(relay): derive descriptor from PlatformEntry ad8e57793d8cf480d8ebba4905aca26baa0e2e53 fix(hermes_time): implement reset_cache() referenced in docstrings (#41728) 2b09c95c33cf98f9e253e0224f6f21083b7a81be feat(relay): experimental CapabilityDescriptor schema 5408013369c06bd8fe7de3559764ee5bd85d6854 fix(gateway): isolate DM sessions on user_id when chat_id is absent (#41764) a77bc2c08dfa4d999463e959a94ab8e21a3ba9f6 fix(compression): disable compression on background-review fork to prevent cross-turn stale-parent fork (#41708) 812a2977bd3007401814db731c3bcad53d9e791c test: lock gateway adapter capability surface (relay phase 0) 48ae8029aae7ffd9f963e549bb0d03b2837e2be0 fix(delegate): resolve custom-endpoint subagent pools by endpoint identity (#41730) bddc5fd0873424bbefa7fdb48c53ee8834366892 fix(desktop): fail loudly instead of blank-paging when the renderer bundle is missing (#41729) 53a2ac8f2dba4b8fa647a8c5062b649d45b05464 fix(desktop): unpack dist/ from asar so dashboard static files are servable ace4b722dc2ba716b1beb9de5b681453b301457d feat(skills): add simplify-code skill — parallel 3-agent code review and cleanup (#41691) 0c67d4015fb68753fc1a175e6d624d86b3e15ae1 chore(release): map islam666 for as-is salvage batch 78e2101cd2a82671c1550f370381d3c70f9b1f93 fix: reap zombie subprocesses in web_server action status and meet_bot cleanup e53b74c39450d85d210ba06e69be5022278eb974 fix(dist): stop USER_OWNED_EXCLUDE from filtering nested directories 09a5548628f7f75a3a7463950f75f14c54ff01f1 fix(weixin): refresh typing ticket on expiry to prevent stuck indicator (#38085) 2e61de06388ac0cb184198e1bfddb3d0f41b638a fix(model_metadata): consult DEFAULT_CONTEXT_LENGTHS before 256K fallback on custom endpoints f1d3afb15116ecd987cea06877d88b4fc329cd4c fix(profiles): skip 'default' in named profiles scan to prevent duplicates 9513793ad7832ef0d2d6c7359eb27d57238b5934 fix(vision): proactive downgrade for providers rejecting list-type tool content (#41072) 41f07142876b4285b92325297ed735e9e64cad67 fix(vision): honor custom_providers per-model supports_vision (#41036) 18c085b1a4297c5024a192e389bc7202ef40e4a9 fix(gateway): normalize optional systemd directives in stale-check (#41119) b18490b89022a15954e85a2bda33d20e2b0cfe0f fix(compaction): prevent infinite loop when transcript fits in tail budget 38d1a414a118bbadefd397a0194ea0502d5769de chore: add islam666 to AUTHOR_MAP for salvaged PR #39624 09ec26c66a130051412e747d49a7ea96f2862b57 fix(ollama): set default_max_tokens for custom/Ollama provider ab0a6270c3839c62eacdddd6c98eb3d915627031 fix(slack): align thread_ts check with is_thread_reply invariant (Copilot #15464) 133e0271e2a5c4d014a84ab23f2fe0fd3d9a91c1 fix(slack): scope top-level channel messages by channel-only when reply_in_thread=false (#15421) b5a457c033035e8dcd203745e68be16b50c2390e fix(desktop): persist zoom level via renderer localStorage (#41747) d65b513f23d79d72f70bcd3b0ca9c8c229e9ce08 feat(desktop): hover-reveal collapsed sidebars as fixed overlays (#41670) 86e5efb0ae3acc1ae574e745a509803a53aba443 Preserve Telegram onboarding fallback errors ba29010902ea07a2d353ffaa06bafd9212db9757 Use httpx for Telegram onboarding worker calls f1e27d8138d573a8ce30c6358616147471764d43 fix(web_server): preserve action exit code after reaping zombie proc 866d54a41ca6af17f96ba8821d203b48a12e6ace fix(web_server): reap finished action subprocesses to prevent zombie accumulation e3b8b6d32c90115245f57f4e7b0c5301afb92e8f feat(hooks): expose thread_id and chat_type in agent:start/end context (#41672) 1a926a45a76e8d4e8b6801b574bfa59f68d59c91 cli: complete toolset names after /tools enable|disable fa42ac094dca23c6ae6d05e1487f3e0c7daa29ad feat(desktop): Shift+click the status-bar zap to toggle YOLO globally (#41666) 30c7913617a63773c15a11900d24ac362b7609c8 fix(api_server): report hermes version on /health and /health/detailed (#40620) d3b670e63e1622560d665ff432193e4f2daf063b docs(codex): document --sandbox danger-full-access for gateway bubblewrap failures (#40619) b97cd81c789927c0380ac0b8cd196f42c2781235 refactor(insights): drop dead pricing/duration wrappers, call usage_pricing directly (#40618) ad399b922918d88fdef1e00a5094c0d1137a7445 docs(update): document updates.* config keys (pre_update_backup, backup_keep, non_interactive_local_changes) (#40617) 2aa316ec9c0406d4e8a057f04297215353ba38d0 docs(windows): fix Get-Command PATH guidance to venv\Scripts\hermes.exe (#40613) b2968bbd70e1f6608b97d1c586d41eefa79f1ddc desktop: keep slash popover live while typing args 4ce9caed0415fba0f489ffe1645d97bd571cf376 fix(tui): type execFileNoThrow stdio/ChildProcess and make memoryMonitor critical test heap-independent (#40612) 6bdc4c02314acf76e5e4949d3d385afe555e48c9 test: skip curses tests on Windows where _curses is unavailable (#40611) 628780b4f32249709e8753b5de90f9a6711e11bc fix(desktop): pin empty PostCSS config so Vite stops walking up the home tree (#40609) c50fb560ef046797fbeea5e01e33c98c94cf9288 Merge pull request #40433 from xxxigm/fix/desktop-chat-autoscroll 69a293b419393c1c560ab9dab43b4d66e0e31230 hardening(todo): bound TodoStore item content length and count 9c5d1afbe956ab4dc75393e7db86d686318e49b2 chore: add giladbau to AUTHOR_MAP for salvaged PR #20182 ae82eed2b194a5708bfecbc153637e434fc15ddb fix(gateway): use OGG for Telegram auto TTS cb83149dc67bbf9f12979ca4e991b8a33e359f76 fix(yuanbao): bound ws.close() so an idle server can't stall shutdown ~5s (#40607) 2b119baac137b9348a0cf812b03c96ed8cee8296 docs: add Urdu translation of README (#40578) 09d66037f8f7bc5bd879ed8128273fb6780a009f fix(hindsight): send only new-turn delta on append retains instead of whole session (#40605) dde9c0d19d1609cb4d70dadc89c76659a1004e08 feat(gateway): render terminal tool calls as native bash code blocks on markdown platforms (#41215) e029b7597bdfa8d0445e6e59584386363e4c5a55 feat(desktop): stop the chat viewport from following streaming output (#41414) 1c7ae46f0eb1551acf9b4974d2e8daef453080db chore(release): map AlchemistChaos co-author email for #40135 salvage cadb74adad3cf7ba2e77258b9094e244d9de4a49 fix(desktop): recover chat after sleep/wake by revalidating a stale remote backend ecd4679d8cd23f3565f68a3e7af1e3f030018ced fix(observability): preserve direct fallback until plugin-config init succeeds cde41f31409aa3978dfafc1ad44760ed3ef62d4a desktop: surface /tools, /save, /personality and fix /help skill count 9d61076f88d9972cfed2fe6cf0ddd2c192fdf562 fix: flush plugin-config OpenInference when the final session closes c9863772368720a892faaa6e1f3402dbea72f4bf Merge pull request #41482 from kshitijk4poor/salvage/searxng-config-env-34306 7df81d0557ee48aa9fff90d2c4213d6420875e2c fix(web): make _has_env config-aware so SEARXNG_URL auto-detect honors Hermes config 2ee8c983c0fc187e667440d660f2c5afbb6a7b55 fix(web): honor Hermes config-aware SEARXNG_URL lookup 0c0fbf763bde5e7a5601da8e06b592fa16004669 Merge pull request #41430 from helix4u/fix-url-tools-unicode-normalization 8e71b5136be81741277b17550f53a6d6937e26a7 fix(cli): paint approval/clarify/sudo/secret modal prompts directly, not via the throttle (#41098) a91a2daaf5da67c0b06a58de525bfd1aff6b8808 Merge remote-tracking branch 'origin/main' into feat/desktop-remote-update-skew f3af489ec2f73eda1337ccb54214a21a43957874 install.sh: hint at root-owned npm cache when desktop npm install fails (#39688) 333f01bc7ffa95616805a62e1f6979d8cc69c026 fix(tools): percent-encode non-ascii URL components 1892e22acb8cece06ae68c792eace1f3c85834f2 fix(skills): browse shows full catalog, not first 5000 (#41413) 1a38066054752d601b71fc655a3ed6bf4228e2da refactor(gateway): migrate Slack adapter to bundled plugin 16786f3bb392885cf1b9d5910b7fdcdb5fd5a8a5 feat(desktop+gateway): remote media relay — attach images/PDFs and display gateway images over the network 20fd0bde5d1a0f1deba80572f1cc6227986ef330 feat(desktop): full tool-backend config (pickers + per-backend settings) in Settings (#41232) 0c48b7165d3dee533b8edaaa2ccbcd5a3c5bbd2e hardening(api-server): scan cron prompts on REST create/update for parity with the agent tool af08c43f3e82a313122d9fdb71c521cdfcd75a72 fix: skip MCP preflight content-type probe on reconnect when already ready (#40604) 76f01780f09b2af660223244e693fa500e0b717b fix(kanban): sweep deferred scratch parent on non-scratch child completion + tests 9405cd0812e578ed311aa8003fa03720dcd482ce fix: defer scratch workspace cleanup when task has active children (#33774) cb3e41e2fd8253456b4a2958567b539a9a8ca322 feat(onboarding): opt-in structured profile-build path on first contact (#41114) d87f293972038b0c97b3febdcd105afee7197615 feat(compression): temporal anchoring in compaction summaries (#41102) 9dbad1990b8bfd1499d2348ce9f1b27a10eac4e1 test(discord): align clarify/model-picker tests with fail-closed component auth (#41338) 9ec2a470f9ee2a24484bc57d542f87814b4036e1 test(discord): fix component-auth expectations after fail-closed change (#f6f363662) c2eae4795b7ce86b7b424ab128025548b4d6aff5 refactor(gateway): migrate Slack adapter to bundled plugin d2ac38cf6c7f86238a0323a0de51a6cb237804d2 fix(dingtalk): broaden optional-SDK import guards to catch non-ImportError (cryptography version skew) a51c7397b46dc41492b2bab424e6ce8a843dfef9 test(discord): fix 2 more clarify-button auth expectations after fail-closed change (#f6f363662) 1a101d66520cc3ca126dadbd668e3182acd97777 chore(release): map islam666 for salvaged PR #39244 3b4b9d324669f8f370343a685a56cb6315be9cd6 fix(cron): floor ticker sleep at 1s to prevent busy-spin + drop dead import 558ee10348161d11905d3c63c039bbafbc4d4b24 fix(cron): wake ticker immediately when jobs are created/updated externally 1cd5c13f9d6203492fbf8d428d85738f1733c3fb chore(release): map islam666 for salvaged PR #41166 7ae849db3610a23c32b07458e73a25ccbdf0372a fix(cli): also bypass throttle on approval success path + de-bloat test 56167629b0bcbdac50c246fe2d671201ea017a3a fix(cli): bypass _invalidate() throttle for approval panel render (#41098) e9a67a8fbf0cad26d93737fdda3a4ff98ed621e7 chore(release): map islam666 for salvaged PR #41076 0bffbe69b658dd964039f92fa630760466893bbc test(plugins): update list fixtures to 6-tuple (name,ver,desc,source,dir,key) c4dd29e8ee9896b01deb5e585a7841fb3ab3b8d3 fix(plugins): discover nested category plugins in 'plugins list' (issue #41066) 581bfc05494026bf2e469a7a06d423f54a4c738c chore(release): map islam666 for salvaged PR #39749 7bcdab1b619a122fc0e88a98857a325d6b09c9e3 test(update): cover _resolve_venv_dir resolution order c977436cbd86bd82bddf215122f56886219970c6 test(discord): fix model-picker auth expectation after fail-closed change (#f6f363662) d2f690bc0ef26d5f99039a23d16f31ce7018caec fix(update): copy os.environ fallback to avoid mutating process environment c7f85e334e18f76f452a24d23c40e87614d1d6a0 fix(update): resolve venv from active interpreter instead of hardcoded path 8758182ac033149d1f8612904bd97f2b6a6990e0 chore(release): map islam666 for salvaged PR #41151 a914c319b1e71717e4a36d0ae0b5a3aa085a92b7 fix(gateway): soften silent cwd-persist except + document task_id lookup key\n\nHardening on top of salvaged #41151: the bare except now logs at debug so a lookup-key regression is diagnosable, and a comment documents that _active_environments is keyed by terminal task_id. a6a2e16e3c48079369468265809ff7b20360221d fix(gateway): read live terminal env cwd instead of static ContextVar (#41128) f86a585e141f698f938574a1a06cb36373f3e77d fix(gateway): persist session cwd across gateway restarts (#41128) 68e918627cbf3cd78758d4d7cfac38f5644b93a4 chore(release): map islam666 for salvaged PR #41063 29907a8695a477689461e080e4b04fe0dabe6d7a chore(release): map islam666 for salvaged PR #41048 2a34f5e24146824cfb83c4ccf9e9333fee9b2206 fix(openrouter): include max_tokens for OpenRouter + fix credential pool fallback (#41035) b046b69593401ad3a07347c318cb63e1d48cfbe1 fix(verifier): store file-mutation footer separately from final_response (#40772) 3b586225bb727239c57aa9e87abf37a2cf821e04 chore(release): map islam666 for salvaged PR #38049 7facfa4f7909a4d849074fcc084ad3e493366223 chore(release): map islam666 for salvaged PR #38063 df5bcf2a6125241e06d2a1026b017e56c62a4ec1 chore(release): map islam666 for salvaged PR #38184 353d9a5e7d990c173542fedbdc9fd49d9dd01e55 fix: reap zombie subprocesses in web_server action status and meet_bot cleanup e3ed580a58550f77f00f337c9ed90c6a2ba0f78e fix(dist): stop USER_OWNED_EXCLUDE from filtering nested directories 2c06316b3f8bd993d6646f9cb9363704fcc14ca9 fix(weixin): refresh typing ticket on expiry to prevent stuck indicator (#38085) e8722c30b42564cb9c416af6235f6c1aa4e16fab chore(release): map islam666 for salvaged PR #39198 50667ed3f0d4c45f9a13562ba3b9ceef39ebc949 chore(release): map islam666 for salvaged PR #39608 4cb0cf7b84b33e245b8772e817c02cfe66b43603 chore(release): map islam666 for salvaged PR #39624 dc4b3ad284e30f5e955394f44238bce3978d7e52 fix(model_metadata): consult DEFAULT_CONTEXT_LENGTHS before 256K fallback on custom endpoints 77635144e2c114336c65c463085ba5c9cb74317f fix(profiles): skip 'default' in named profiles scan to prevent duplicates b51cb2c4a76e799f9b54faa8c55945814049954a chore(release): map islam666 for salvaged PR #41091 06f4cde161bbf6657775da62daa6a472bacda4fb chore(release): map islam666 for salvaged PR #41113 092ed24caae22fa56c023d3f1bdf07c21bbf5516 fix(ollama): set default_max_tokens=4096 for custom/Ollama provider 4cd2738aff3ba0951ba5d244254ca2e1c3b3cabf fix(vision): proactive downgrade for providers rejecting list-type tool content (#41072) 8c09e3c657f22c86945b4d29477f92243fa2e6af fix(vision): honor custom_providers per-model supports_vision (#41036) 6ea931025e9b57b8101031a5316581fc9e44f0bb chore(release): map islam666 for salvaged PR #41131 6509f9c3ac069417da539864394cba94dbf38304 fix(gateway): normalize optional systemd directives in stale-check (#41119) 3c13471cdd99baaf2701f92177a1810fd6ddc691 refactor(gateway): migrate email + sms adapters to bundled plugins c94a02fc3680fe2d7ee7ed46f83374262a80658f chore(release): map islam666 for salvaged PR #41024 1fd0729efb058483c9ee1396e36e07a4e1cfd66f fix(compaction): prevent infinite loop when transcript fits in tail budget 91da240eb82f62a90fd29d2edd5ade2fa9df9f66 fix: retarget _send_dingtalk/_send_matrix tests to plugin _standalone_send + restore dingtalk token redaction f2a7adba5410cc1799e56fa77b47f84fcd9a2936 refactor(gateway): migrate wecom + wecom_callback adapters to bundled plugin d532c67292e43db81508379752d809783f418d9e test: convert gateway COMPONENT_PREFIXES test to membership invariant 38c700e230e4e32ce74e7596055c730ff2ca0632 fix: plugin is_connected reads via gateway.get_env_value; matrix gets explicit is_connected; setup-flow test stubs 156176a44e57ef0cfbd49adea5eee4f544ab5583 fix: gateway log component + explicit-disable across migrated plugin platforms; test path/import updates 6e133c1d79ba1e06b625c2b325ce3d132c73d17b test+fix: telegram top-level require_mention env bridge + connected-checker invariant + webhook-secret source path a3e9410247ff42b1477943f2532e755cf6279f04 test: update send_message_tool matrix/whatsapp tests for registry standalone_sender_fn f080fedf13f057058dcce3a20d48a1fe4edcbf1c test+fix: rewrite migrated-platform test imports; fix connected-check discovery, telegram extra precedence, prompt_choice import 736ffb3bc15c56caeb27c554c7cc7f40a4232b45 refactor(gateway): migrate telegram adapter (+ telegram_network) to bundled plugin 552adbe0827c32df8ed9bb19e908c26eff43add7 refactor(gateway): migrate feishu adapter (+ satellites) to bundled plugin 036c76735458683c2a5fef80018ad22445fdd0b4 refactor(gateway): migrate matrix adapter to bundled plugin 984d78d57daa923a61f1dd298a1236c3e76bb621 refactor(gateway): migrate dingtalk + whatsapp adapters to bundled plugins a317e54935848fbb730a0961e039f2ebbba8cda1 chore(release): map Dusk1e and LaPhilosophie for approval fail-closed salvage (#33844, #33866, #30964) f6f363662e91ee1636a0eb67568dc26d2d7831b3 fix(discord): fail closed for component button auth when no allowlist set 3fa15b33dd910699f18a0529f448f97eb8f02042 fix(feishu): fail closed for update prompt card actions 410cb743bf6f3a7dd0b581f927bff719338a06fa fix(slack): re-check gateway auth on approval and slash-confirm buttons 2912d943705058cc55f7f5fc102c99dbb1efcc27 fix: guard int(os.getenv()) casts against malformed env vars (#40598) e2cc24e3311da5575f9e0df256e14e62ff39dab2 fix: respect Honcho env var fallback in doctor and honcho status fa8fd513ea9b085473eb95e7997039b6da13e701 chore(release): add synapsesx to AUTHOR_MAP for #40495 salvage f10a330aee7dd1d664389d15b35ccfd47bf0fe8d fix(research): keep tool_call/tool_response pairs intact when compressing trajectories 490c486ff65b766d9de0fe0e6f26e1778aaa8fb3 fix(simplex): accept display name in SIMPLEX_ALLOWED_USERS e4f8e1d25148707d03f77ef16251a4e1d4b1e28b feat(desktop+gateway): remote media relay — attach images/PDFs and display gateway images over the network 9d72680ca34a1182a758d551b1ef76f47adc7e57 fix(desktop): make the running-turn timer per-session (#41182) 1a4010edf5429a1cbd9bc4bafe0798a16d232d57 test(approval): regression for shell-escape denylist bypass (#36846, #36847) 621bf3a873b6b466b7fca6fbd6f4c7cf83a70fdd fix(security): strip shell escapes in denylist normalizer; fail-closed on missing approval module 1fb99b1f229a700f8ee1a3e90ff1d44f85e963d4 fix(stream+output-cap): guard empty streams and parse OpenRouter output-cap errors (#40589) 02aad08acf4633a45d0b50e4f270e9df4681d9a3 fix(desktop): bootstrap falls back to installed agent install.sh on GitHub 404 9e63109522cd0037670cf60d38714eab009efa46 feat(dashboard): change UI font from the theme picker, independent of theme (#41145) 136dae779ec80b33c2ad823f0e9ec2f42435fdf9 fix(cli): return bool (not None) when a destructive-slash confirmation is cancelled (#40583) 0507e4630dd7eb66465008eeb6045ec913f9c3ad fix(desktop): preserve configured base_url on same-provider model switch (#41121) 349a3f601c6c135736df35fe9e4cbb313fd1122d fix(desktop): stop bare-URL autolinker swallowing trailing emphasis asterisks (#41093) ed81cfe3def71601f7f575e6a2a6b8cd95db2be7 fix(cron): bound the desktop run-history query to one job (#41088) 5a3092b601060e04dccbb515961eaed977c62d7b fix(desktop): scope in-session /model switch per-session, stop process-env leak (#41120) 4b9862eb7f38695582be2b050fbe1f0ae54b8f9d chore: map bmoore210 author email for PR #40550 salvage b55ac45264e949927190849e13c9aac4e2069aa4 fix(desktop): scope session list to active profile + longer timeout 330ca4585ba101e2268288f5e949525b5ba00b43 fix: harden gateway startup and turn persistence c88c33081a4b4f72cf03e7e457730c5ffb377214 feat(skills): recipes — shareable plain-language automations over skills+cron 591e6fb8f4fdf1f2f217371cf9e70bc2d384b6f2 fix(computer_use): honor custom vision routing ffe665277ccff676d313b0f0f37d2cb9775a6930 fix(aux): honor model.default_headers on auxiliary client too (#40033) a216ff839b4ec6cea53d249610aa8210a6658963 fix(agent): honor model.default_headers for custom OpenAI-compatible providers (#40033) a27111ada7ade4579403aac444de7ba02632e60f feat(monitor): proactive urgency-classifying monitor (skill + aux task) f5c3fc319cde79aea3a904a7afe9c311e6fc79dc docs(i18n): port deep-audit corrections to zh-Hans mirror (#41104) 3c8f1dee8da1b19e312d9cdf0ec68e2c710d6e43 fix(compression): don't overwrite the -1 post-compression sentinel in preflight seed (#36718) 3763355f08568338873ef65df379ff701a9c0de9 chore(release): map singhsanidhya741@gmail.com to sanidhyasin (#41094) e18f14d928553d9c97dbacc120601b90ba9c070e test(kimi): align stale parity/profile tests with thinking-xor-effort contract (#41095) a5e5f28b466ad35b76e7d91b4129a96c6693a2b9 fix(desktop): reflect env-override remote in gateway connection state 0524c9b34eddd50d1806af7c3313c22343e5dcfc feat(compression): raise compaction trigger to 85% for gpt-5.5 on Codex OAuth (#40957) 2d099fed1e0331d0800d3cada4f5a89102fc8a8d docs: deep audit — registry drift, stale claims, 2-week PR coverage, dashboard screenshot (#40952) 3289d4adf24b6f5ebcf9d6a9532c7070e6e3b030 fix(transcription): handle ffmpeg TimeoutExpired in _prepare_local_audio 7223f22d653b65518e6e4e4805c293d2cd59fc59 fix: add timeout to subprocess.run() and proc.wait() calls ce4e74b35025c108a228700b53bd479eaafaa660 fix(kimi): send thinking xor reasoning_effort, never both 03392b67d6a66bf3f8e5226cf6b4ea04b9b95d2d fix(opencode-go): gate thinking when reasoning_effort set to avoid HTTP 400 fe0b3f233832c074aca5bb1dc86615190a9782ba fix(windows): retry watcher Popen without breakaway when parent job denies it, plus regression tests for the breakaway bit (#40956) 7c3b70312351a95481b8fd157dddbb85873245ba fix(desktop): check backend updates when the connection becomes remote bd3a7bf81b81682087a9823e6fb54a6a0afc7862 fix(desktop): pre-check backend updates in poller; client button first 57c6d0cc95dea905bef2851f663feac2cca03184 fix(desktop): split client and backend into two distinct update buttons c40c4136fc50379e7eade6974490cbe5b4171b3f fix(desktop): name the update target in the overlay; honest no-changelog copy c54f30b1fd6db6c6feeb7ef8f65334da65d1595b fix(dashboard): log update changelog against origin/main, not @{upstream} 8473d7a575719a7c739ac3fe5fce2992bf77e648 feat(desktop): remote update overlay sourced from backend 148fa87677ec49efca3136b4403d65ac8f051df3 feat(desktop): show client and backend versions in status bar when remote ecb4fc37628cc7c376aa0f4dadb6d0d856ce5056 docs: document commits field on /api/hermes/update/check 518d2768c16318691e4b3f5bdf6bc85dead03375 feat(dashboard): return recent commits from /api/hermes/update/check ccacfdbd6d92c6cd0aceb585ae9b49d9b57fcd22 fix(plugins): discover nested category plugins in 'plugins list' (issue #41066) 44c0c2d4ac05eb7ee0e32d9002bdcdbe8589f7f6 refactor(inventory): make force_fresh_nous_tier keyword-only + pin contract eb70ab894b6b30706a2198d8722abce93c76be45 fix(inventory): avoid fresh Nous tier checks in picker payloads 3cd8a83ae8e20a382ee9076795f287ed4703d2f3 fix(cron): prevent desktop timeout on large run history 846821d8c0b57808a24ef8f3de21e072c573db1d Merge pull request #40684 from NousResearch/bb/cron-sessions-sidebar 210f4e706a19cdc8a9e354084c66392febc7899b fix(desktop): resolve powershell.exe by absolute path in Electron bootstrap 5dee40fcc0a18c148429aa1fbb3959bd2113a3c9 test(bootstrap-installer): cover PowerShell path layout cross-platform 8720023e963b9e51ba6dcc69d3ecb86563e856dd fix(bootstrap-installer): resolve powershell.exe by absolute path on Windows d8754a7404b3dfc6799c473d7a36329cde3b2298 test(delegation): make async non-blocking tests environment-independent b26ae1d90e837136bb1ce81594abdc5e9c8458e2 feat(delegation): async background subagents via delegate_task(background=true) fe2942a5aab7ec76c546de1b1a930addcdb0b4b3 test(desktop): assert every theme typography carries an emoji font (#40364) bec07964beb8476488dc39f032478c0c0fa3d47a fix(desktop): add color-emoji font fallback so emoji render (#40364) b08662b782beed5160e43c6205e76d9f54aa731b fix(gateway): tolerate Unicode in stderr log handlers on Windows fc086da8bd831b5f712838152c14582ce7047534 fix(gateway,windows): reliability — JOB breakaway + status --deep probes + test-leak fix (#40909) 742732fc12055926e335a47711b99a1292377e06 fix(windows): respawn gateway after Desktop GUI update by breaking the watcher away from Electron's job object 40cea4d58d67a6106254c48b3ea053b8a2ec9336 fix(agent): import SimpleNamespace for hook payload sanitization bb53edc7732e2ea3374e482915e888824088ac47 fix(image_gen): use gpt-5.5 for Codex image host d17c953a574d05e109b3f4ea44f22b011a2a0980 docs(kanban): clarify orchestrator profile role in dashboard panel fda66c488b0e2907c312fba197b905008a686db6 docs(kanban): clarify decomposer profile roles fd4c8b404bd0a8bc9938a4f4c259830cbf8a4433 docs(signal): clarify tool progress support (#40774) 3eeca4613d618618093db416b564a2b9ef8dbe6a fix(qqbot): stop 100% CPU spin when WebSocket is closed but not None (#31193, #31771) (#40574) 5b55f4fe8e76b8c52d38b32e86162ca27f2b71cb chore(deps): regenerate uv.lock for Pillow core promotion b13ab0b9a8b2571b554b98b3499e2c580e61290b feat(deps): promote Pillow to a core dependency c3d750c1aebb5be6ecb78862655b6661ea3d7d27 fix(deps): force prompt=False on the two mid-session lazy-install tool paths d47f919ef10a25e65ee35cd791d80f5852cef9bb fix(cli): skip lazy-dep prompt when prompt_toolkit owns terminal (#40490) fe8920db18f2b65579eb170b654086e789669a04 fix(memory): reject memory tools that shadow core tool names (#40902) 887295ba547b60f31df3508069fd0d301104e45c fix(config): preserve custom-provider models maps and metadata through v11->v12 migration (#40573) 89929553b4b0839eb49fcaa890d008a515050932 fix(tui): only patch liveSessionCount when it changes to stop idle re-render flicker (#40572) f9ea4927f27f4e4369ec26ab13aad6ef4e181f88 test(tui): cover _terminal_task_cwd remote-backend branches 0e0d704f2da60d14a7e42483b700285e40400893 fix(tui): preserve remote cwd for ssh sessions 89040e0db3cc3a76980e9e7dc2f045a267f4ebb0 fix(secrets): fail early with clear error when bitwarden setup runs without TTY (#40571) 6701c611babb8aa12458a4517e17a55ef85a920b chore(release): map jiangkoumo author email for PR #40540 salvage b2b4d97bbb6533b051ea3dbedcd88973b46d35e6 docs: document update local-change handling 365437e4aaf3756d1d921dad6012eb93d4303465 fix(cua-driver): reconnect MCP stdio session once on ClosedResourceError after daemon restart (#40570) 97524344adbd0617207e83b0dd2c9155deb01c7c feat(desktop): run tool backend post-setup installs from the GUI (#40559) 8f7567c325139a4cc7034002d7cacedf6271797b fix(bitwarden): prevent zip-slip path traversal when extracting bws binary (#40569) 5a36f76a00cc448948856a5c1b52710aafec264e fix(skill_manager): allow SKILL.md in _validate_file_path without weakening traversal guard (#40568) c0424b06af53297394e1bbc0fca14acddc92362a fix(osv_check): honor npx --package/-p install target when parsing package arg (#40567) 56f833efa427ccb444c0f9ad1759af1012f2124d fix(skills): block path traversal via skill_view name argument (#40566) f4a73abbd01831888afc297cd80ff3d9fd32b008 chore(gateway): drop HOMEASSISTANT from /update allowlist (#40736) 5b43bf7d023cdc65c1dd79f06f6e0b04d274cae9 feat: uninstall the Chat GUI without removing the agent (CLI + desktop UI) (#40355) f2e8234307946443ca45a8295e363754ecff40fe test: update non-Termux workspace-scope fixtures for #38358 fix 7db7a9462dc4cc382b22f03a944bb4660c80890b fix: align test fixture arg order + add zakame to AUTHOR_MAP 675fb1024081c1b0e09bb178faf7446c40f90b2e fix(install): correct check_dir tautology and add --workspace web test 4bf52022e56e61d0ca434975c574bf7987c3a218 fix(tui): correct --skip-build hint and add TUI workspace install test 0416f852f2fcf966dae8a8f357c81b579462887a fix(tui): scope TUI launch install and fix stale hints/test 1c0437dfc5bbbf12b4e312a597137b13ebbe7154 fix(install): scope npm installs/audits to avoid pulling in apps/desktop 6ea6b9a44f979de19f5d92297e36e261c0490248 style(installer): match progress header to overlay & token-size failure buttons e2152ce72d0647405c0112751d15bd441aed6e50 style(desktop): drop the changelog divider in the update overlay 4b7b8a47a61a04053bb5c1be648685f7190f367f style(installer): bring the Tauri setup shim onto the design system 3328ce7691d0e3755311182df1b76e14244b5688 style(desktop): polish installer stage rows & loader 92b8a12d980c106d62ba4426e1c8f13b549a683c style(desktop): bring installer & update overlays onto the design system d165933c560caeb0d6dbf12cd71b1f987e198e1b docs(desktop): add DESIGN.md design-system guide + close two consistency gaps (#40823) 1238d08e0c9048c7aa7a869e5de43ee3ebcf4aee fix(desktop): cron overlay mutations sync the sidebar instantly 66adeef11a716cc8e14f5e354a4dfa8f6dd23c89 chore(desktop): drop dead cron i18n keys f993d76874e859dbd96ab75e64d2e0fa9e640a94 refactor(desktop): converge cron overlay onto profiles' split layout f491260365c4e4263757428d56b79855824c5587 Merge remote-tracking branch 'origin/main' into bb/cron-sessions-sidebar f033b7dbfbe81dc5b0dbafe3c7eef7d25b6718ae feat(desktop): unified overlay design system, BrandMark & onboarding redesign (#40708) b2bd31c724c193b31c0f18d045ea196357e34caf style(desktop): drop all borders from cron overlay de0469e02b1451d905f3d8cefd4eb5071874414c style(desktop): flatten cron overlay to match the overlay design pass c79e3fd0baf41c0adda616b73153eeaa8a4b8231 refactor(image_gen): delegate cache-path mapping to shared helper 7c4aa3e4da0161df0e6458a35df512a2e033717a fix(image_gen): expose backend-visible artifact paths ccaa5165a006d4748ffb404a9a5cfba8312a8b0e refactor(desktop): merge cron jobLabel/jobTitle into one shared helper a6d8ed484e3ee5ac24945b6184a24e3b1e38f6d8 fix(desktop): allow worktree node_modules in vite dev server 471a5fc5c93e938729c17108e9faf38690b6f58b feat(desktop): make cron jobs the first-class sidebar entity ef7e5168b52e4d3b38028fb960b48af88b149154 chore(gateway): drop plugin-migrated platforms from /update allowlist c37c6eaf296a1b39e41d67e9ca3eff72482495de refactor(gateway): migrate Home Assistant adapter to bundled plugin ad0f6db151bf00f3d5b7303a45a961f735fbdb3a feat(cron): title cron sessions from the job, not the [IMPORTANT] hint ebed881d46c4d39a7723a0bdbb70b53429f65e26 fix(cli): quarantine running hermes.exe during update dep-verification repair on Windows (#40409) d4a7bfd3aa92aca0fb90bb476369422d1011c6f1 Merge pull request #29724 from bbednarski9/bbednarski/nmf-41B-nemoflow-plugin 003110c107b0ba079100a32e0c06e3245cc2a155 fix(ci): map @TheGardenGallery email + drop unused pytest import 146e77684b717e4c136fdf6de835d26c7b28c87b fix(desktop): bound desktop.log via cascade rotation + reclaim oversized logs abbf050241317100ed6c106d7caf67874868e2af fix(desktop): cap desktop.log size to prevent unbounded growth 2820d87ea56b9418b8289b419ff6e0a05e47c9cb fix(cli): tolerate stale `dashboard --tui` from old desktop shells 3e2d758816b72a0151cfaad8933bb073a74871f7 feat(desktop): fire cron jobs from the dashboard backend c4c5548eb4800068ff3dd1ac8361d3b4ee23a06b fix(middleware): single-use next_call guard + deepcopy-safe request copies 628f9040df438182578381a4fc72e4044509d5bd feat(desktop): split cron sessions into their own sidebar section 7cf7300a070ad2975e2c46df321fa2de04738b88 Merge pull request #40679 from helix4u/docs/runtime-footer-supported-fields 8b23b2bc0130d3c74b5893b3f5cd21857c0a58d7 docs: align runtime footer field docs e3ae0359218e9acdf1b8d373f12412ab7ed9ba87 Merge pull request #40660 from NousResearch/bb/keybinds e9b8dd236c792a15583ff540319fcafdcae1832b fix(desktop): default-profile hotkey to two-key cmd+d mnemonic 06ecc5535c476aa9bce30e459339a092e90b7085 fix(desktop): rebind default-profile hotkey off macOS-reserved cmd+` 74c8f51e95e42f0524ab1f61a09d6e2300b151ed fix(desktop): match file-browser default width to sessions sidebar 182092c5fdd5aafb22f80b4bc55c337cc8ed1bcd feat(desktop): default swap-panes to cmd+backslash 021ea2a21b18f967aa28ec041e5294cd156b257b fix(desktop): only show keybind reset when changed from default 258984fcb9061e258014728f7ac856d5f118d387 feat(desktop): broaden hotkey coverage + fold in stray shortcuts 5e2b83a8ada840ea3528a363c1ed341c0b8620b4 feat(desktop): rebindable keyboard shortcuts panel d1771114eda9f4982f2dd204e617b752c2544f21 fix(search): sanitize ":" in FTS5 queries so colon searches don't silently return empty e8c837c921e04c573c0d313bf8539c283a9fba49 feat(desktop): surface every provider + models from `hermes model` in the GUI menus (#40563) 5abe45674dc7eaf72190d97785738ea2ea8b607b fix(middleware): preserve translated downstream failures 3606307339ee2003d59eb9fcf04b95ea80170b3a fix(gateway): use user launchd domain + Background session, detached fallback (macOS 26) 59c273ba3ae27fb7f4a882e4c56b82675fea9623 fix(gateway): fall back to detached launch when launchd rejects domain (macOS 26) 26666381927273340cba71f2a4d1c2946910c7a4 Merge pull request #40534 from NousResearch/bb/remove-composer-message-shadows fd234bad62107ca01e7189f19cc13521daf2e53b fix(install): detect TLS cert-trust failures during npm install on Windows (#40588) 54e7b74f7f476b7d0de31e5f3a97376647e68e64 fix(gateway): plain text while busy interrupts by default again (#40590) 5a3833d1d232747124bf49c9b037945fd3e9f6bc feat(desktop): render Mermaid code blocks in markdown file preview 9750888ba10f193ee5c3a19e943558a24741295b fix(desktop): treat non-zero tool exit with output as success, not error 2dd5e5a6867e7cf3d95ffd4aad358b25a1613cb0 test(desktop): regression-guard fetchJsonViaOauthSession headers (#40069) db99f31b0fe7e9ea1bbcb737e725ae6f031b48db test(cron): cover cron_list/status/tick/create CLI helpers a210de448c97551cdc6edfbf17d17026d38526ce fix(desktop): default HERMES_DESKTOP_CWD to cwd when --cwd omitted 25501581cd4c8b246e6cdf6a01ad037588d32315 feat(banner): size skills display to terminal width instead of fixed 8/47 623fcc12405a3ad6786eb9b4eb4d6cedeca87148 feat(plugins): surface entry-point plugins in hermes plugins list bfa35a93fb1cb64e0a724efc173136d9238e4e88 feat(config): add display.timestamp_format and honor it in CLI timestamps f9457e29a9c1cc259cc298f79dafeb1f5da5d52f feat(hooks): expose thread_id and chat_type in agent:start/end context 3a46262c7cb153da3b068688e34ce150b4ecfd3c Merge remote-tracking branch 'origin/main' into bb/remove-composer-message-shadows 9d31577590732af02ea8fa3cfda2fa0d7f25bbf5 Tighten conversation rhythm, flatten the tool list, and smooth streaming text 61936fab3dd2e316f3b2780048c2c655ad2741f4 fix(gateway/macos): preserve launchd plist runtime on auto-repair + verify job live after self-restart 1b2f2afb97864c2cda063ffb6570d038f45ca527 fix(lazy-deps): don't deadlock the lazy-install prompt under the TUI (#40490) 9f1c16a7fbb413d6e7d41802052fb225d6b4d8bf fix(langfuse): restore usage/cost when post_api_request sends a sanitized response 1c2189839d0bb57c8e0ac0aa44dd53fef73665b2 Refactor desktop settings i18n keys to camelCase c24abf5b32865f294d91a9cb8bd89c285f3d695f Add missing Chinese desktop i18n translations 112a0732c6a7a80f1acc38ede4b38abfbf0e59b0 Translate missing desktop i18n strings for ja and zh-hant fbd423b94d50e14de83196be040f63a591f570eb feat(desktop): localize desktop chrome 812dc6957e19ac2d220e94ed2b3e452afcc1c6aa Add searchable language picker b1b89f843e62d375e886f468532025561989d725 Refactor desktop i18n field copy into nested structures f18a9dbefc597f77741c370f203b3747193bef6d feat: Add desktop language switching for Japanese and Traditional Chinese 2bf0a6e76083f1e46a766ac75b75c42431e18528 feat(dashboard): full tool backend configuration in the GUI (#40418) e6de6dd559b482b9ac90dc9417c77c1f3f54b89e fix(dashboard): tighten skill detail dialog spacing (#40419) 6bbc5eefa0ac4582648e1e274fb96c72bf700bb1 Fix clarify icon alignment and spurious error-red on non-zero exit 40386f33ec76f394c1911cdf6a4e382d72d76713 Remove drop shadows from composer and user message bubbles 56236b16e383cc656bb8c88429902f4de83f1faf feat(dashboard): rehaul Skills hub browser — connected hubs, featured, preview + security scan (#40384) 5af899c7ca753a56a4daeb6fa6ff3cbb113234b8 feat(cli): display custom profile alias names in profile list/show (#40371) c79b6f23e69698be0dbff4365fc1de313c337156 fix(credits): let the "grant spent" notice yield on the next prompt (#40367) fcb1944b4f76cc74d5092c2b8605d972c095bd3c feat(credits): usage-aware credits — in-session notices, /usage view, dev readout (#40011) b91aade17683a551e6c8e633fe5407d07354b16e feat(desktop): warn when main-model switch leaves auxiliary tasks pinned to another provider (#40286) f8a241e105c07d148c2f733c4ae8096a688ded2b fix(delegate): flatten content blocks in live overlay tail + AUTHOR_MAP f83918c31d3900377da5766d011dff8699e66d39 fix(delegate): handle content-block tool results 16beab421f05375b9519155f4afe4b7ad8c1d682 fix(desktop): About panel shows live Hermes version, not stale package.json 2950c6fa2eda487cbf24c725754fa19a1ca16e54 preserve shallow clones and show correct update values for them 338c07433699569c24c32df4a2d1a8b9472400a8 fix(send-message): treat ntfy topic targets as explicit 50f9ad70fc841c4218b63c79cd29a2337b13d941 fix(dashboard): populate cron delivery dropdown from configured platforms (#40218) fb1c886bf942da3615764f7aba6e8bd12feffcbb feat(desktop): browse + upload to the gateway filesystem on remote backends 150687447bc9e01a028c3dedf9589406cc321a4f Merge pull request #40240 from NousResearch/bb/desktop-steer 5d4c93afe476df79e5d3ae837e3af196ab30248b refactor(desktop): hoist single draft.trim() in composer 7cceead27373ac7381190dea3ca966d8b6d79322 fix(desktop): render steer note as a codicon, not an emoji efa53fb3be518378fd89d0c1d991e0339682fb40 feat(desktop): reserve Cmd/Ctrl+Enter strictly for steer 0f45509daf725e01d063c73d90eadfac6315c4ee fix(agent): make mid-turn /steer trusted, not read as injection 40aef6af91e6913c98b29d238effaa32c0e0322d feat(desktop): steer the live run from the composer e375c33f7090c329e6a6a741e26fc9082b27d728 fix(tui): clean force-send of queued messages (#40235) ac177cea8736ee8fbaa316a01568a4a39e232a93 Merge pull request #40234 from NousResearch/bb/desktop-queue-arrow-edit-v2 ce500306347410e4041938afd5962d35c941bcb4 feat(desktop): integrate arrow history with the message queue f94363d1f0ded71c4b146725e1c1a1708e6482ad feat(desktop): arrow up/down to navigate previous user messages 0cbcc75935629f6b21a900b4246c4a6ef4eb406c fix(desktop): reliable composer message queue (#40221) 5225fddaef1a3027c312f49745ce5fb291eed33d feat(desktop): remote gateway self-restart after /update 0c0a70774424fddf502fc2f5dfc755d6c9430932 fix(desktop): repair macOS updater helper (#40217) 78122c52cf9c66f67e499ae80774b27adce3d86d test(slack): drop /q alias assertion now displaced by /version cap clamp 30340eae2f6e5cdf1bac1d25e15e843fe47e4324 Include git SHA in /version output via banner label helper. 9c1bb8d2c7294e49500611cfd23bc018ecc3769d Add /version slash command across CLI, gateway, TUI, and desktop. aa52cd3b574eb8fcb7dc66e8d9f3afaf1b7092a1 test(desktop): unmount between IME composition repro cases da9425bf9b081137281578b349dffbcde2f6f28b test(desktop): cover IME-composed send-button visibility (Chinese/Japanese/Korean) 8e629b9f386d12b726bccb32e9d7b48402ea73ea fix(desktop): flush committed IME text on compositionend so the send button appears a1cb18b268b569ba9f0c61c9b663ceb9e308c46d feat(desktop): self-update a remote backend from /update be2c64be027576d4238b91c5c334757a58052d21 fix(desktop): wire serializeJsonBody into OAuth request path b8234e75996ed9f2186e39655e66c0163f06dd34 fix(desktop): avoid restricted oauth request header 3c231eb3979ab9c57d5cd6d02f1d577a3b718b43 chore: release v0.16.0 (2026.6.5) (#40206) 3ed71c09abf33496c4e8cd7307a21ab69b8a0572 feat(desktop): wire /update to the native updater for local backends ea266f43e9db0abe2d34b9edba94af47cc98d6b1 fix(file-ops): make rg/grep search error guard reachable and preserve partial matches (#39858) 237807ad3ac2d275b89e4728b562edc1cb7105cf Include git SHA in /version output via banner label helper. d95c76aa3712d816191625873b3869905cd17b4a Add /version slash command across CLI, gateway, TUI, and desktop. 66a6b9c930019eeefe0bc089edcf47ff5ce9d0d8 Merge pull request #39482 from liuhao1024/fix/rich-markup-error-on-session-resume e6f7e217ce8e1959879c2f94a3238a216d748c12 Merge pull request #40093 from kshitijk4poor/feat/named-custom-discover-models-18726 b5d42daa533bbf5a9dc1c0d75a630dcd5dd0aa19 Merge pull request #40080 from kshitijk4poor/salvage/discover-models-section4-29810 7ae8aac3b9b2d5784cf3f2af1ddee0a7ae04b78a feat(model): honor discover_models in terminal hermes model named-custom flow 53bba7085455afce1d131e2ddfeb9d0be3689115 chore: add ohMyJason to AUTHOR_MAP 4b2d00f845ebf912aaf4282f7f43f4a708ce733d feat(model_switch): honor discover_models in custom_providers section 4 25dace111431157c9ed7ce39898750b4271ff1e4 docs(desktop): note remote backends update separately + profile-skew symptom 976f5e1b15a63691f3ea955e72b25bf4d49063b5 fix(desktop): bump backend contract to 2 so profile-routing skew is surfaced 6f6eb871d83415fe2980f3483cc41a435ba22196 fix(gateway): new chats honor their profile in global-remote mode (#39993) 1d9c3ebae0f2fd8bc737c41062c45c6cd2f9c554 feat(desktop): persist i18n language in config 4a1907bd10c3da9266d36ece6337afeb20365fbb feat(desktop): add i18n with Simplified Chinese (zh-Hans) support 02d6bf1c39dfefd5abb4983732f81e070ec30d99 fix(desktop+gateway): full multi-profile support over one global-remote dashboard (#39921) e837856ecdb5498d78242584ea9b16cafb43e712 chore(release): map ViewWay author email for AUTHOR_MAP 2dda393f9f44e5030ca36cf2c8ab8065a9ac982f test(gateway): regression tests for max_tokens propagation chain (#20741) 14275d7baa1a48844e58671f63ab49c4823c7cc0 fix(gateway): honor per-provider max_output_tokens in max_tokens chain 1c909e75e1a0ba6e5fde07da804066a1e42450e9 fix(cli,gateway): complete max_tokens propagation — CLI path + env var override cf786593cd83f8cffd76d9faed561f7d92e24454 fix(gateway): propagate max_tokens from config.yaml to AIAgent 9af54b2f8c0e968156e962935d153a2981e7b360 fix(desktop): make remote-profile sessions first-class (resume, read, rename/archive/delete) (#39894) 3045d54547f7151d5297fe2f2e0378713c7c27c2 fix(desktop): route remote-profile session mutations + fix unified-list pagination 83c13862f107577f70e547a46dca99cc68dcd500 fix(desktop): route remote-profile session reads to the owning remote backend ffe5558bd04db429245a4c3d6279b4b261d7525a docs(desktop): clarify macOS Gatekeeper first-open (no Apple Developer account needed) af8b917dabc07c34c3edaf32ade678bbb7843b4d fix(termux): scope frontend npm installs 9ca11b35d5d09561366bb039d1d89b647cd3a682 perf(/model): prewarm picker provider-models cache in background (#39847) ca1fb32c26190626e6f163ad03ac9d5f9fd69746 docs: remove --include-desktop install instructions (#39762) 7583aedacd53442d33d95acbed40c884ff90523d fix(completion): remove /model autocomplete from CLI/TUI (#39727) 14fee4f11265728c427b5afb1942179ba6aba7f7 fix(update/windows): retry handoff `hermes update` once on first-run crash (#39831) 98528c78c1434a093be44760b31d4a81b433cc3e fix(desktop/windows): stop racing our own backend during in-app update (#39828) d880b5be098893e7d766a9179da3501181c6fdb8 fix(update/windows): don't return _UvResult on Windows (subprocess argv crash) (#39820) ca8c78e588b700e865227de2d2cc5ba1d437f40c fix(desktop): heal stale runtime-id cache + model on profile switch (#39819) 1a3e608524a3dfae7aca9c058b1cbb1b08e19489 feat(desktop): per-profile remote gateway hosts (#39778) db204ae2035021bb5f1e76004c13296853a139b6 fix(update): make ensure_uv() survive the update boundary (no first-run crash) (#39780) 72eb42d9ecdf5c20032a405326995c8c1680aa1c feat(update): stash/restore by default + settable discard for non-interactive updates (reverts #38542, #39568) (#39645) 947e21b3d69f34d33559c20ed86d596fd83f0782 fix(gateway): log silent file-delivery drops (#39767) d41427504ef04700027627c906d4d63ba5d11e71 feat(delegation): uncap max_spawn_depth (floor 1, no ceiling) (#39772) 06268f11cc6c9d9c140cab9d669e9136acc8fbd0 feat(gateway): explain /voice usage when toggled bare (#39766) 350f4a64488222281d80543a6bddf58e592aade3 fix(update): use subprocess hand-off instead of os.execve (cross-platform) b9c480523dbac490952305aeab4b48036a461ce2 chore(deps): bump postcss from 8.5.8 to 8.5.15 in /website a6c60a2902b4060a1db04a0a0e4bcd4ac121b652 fix(update): re-exec into pulled code so update finishes in one run 3cd1bd971f25c98698bcea9f1e846b09f27d14f8 fix(cli): require Chromium for local browser readiness in setup/status surfaces ec46f5912e309330a68c49b273dc1346c1d018d0 fix(gemini): default native maxOutputTokens + strip OpenAI extra_body on Gemini endpoints (#39730) 6bf55a473ee9b7f32fe94d60acac33482db76899 Add CLI Telegram QR onboarding 8a9ded5b21b11355fe08425e2d1c7763acd17842 feat(discord): voice-channel mixer — ambient idle bed + verbal acks that overlap TTS (#39659) 3da44dbda7cc127bc803fe9212acd53b567c4683 fix(models): use deepseek-v4-flash as Nous silent default ef5e48f3fd79d68677c26c1f37438a620654f313 test(models): guard Nous silent default against expensive-flagship escalation 2a82519b0da9bf16976340fd7810832a4bdf79e4 fix(models): don't silently default Nous to the most expensive flagship 397d492b3e58ad6cc725fe6ca39294dd78c763f0 chore(release): map harjoth.khara@gmail.com → harjothkhara for #38550 salvage b459bac02c98ff08247861f37b53eb7bc20aee76 fix(cli): gitignore Desktop bootstrap marker so hermes update stops autostashing it d5684f0cdf4de305f3f40f50f260e58528295bf1 fix(cli): require explicit setup before treating env keys as configured 3278b423d5f094f9854795b3ee6f06e2beb0732e fix(dashboard): strip session token from subprocess env 9ab9c923da8a610b259631c77206bc65dac9988d docs(dashboard): clarify auth provider suitability + registration across dashboard/Docker/Desktop docs (#39633) b0d234f068952e7bc198759ae3ca2cda99bae491 fix(cron): don't crash on `cron list` when a job's repeat is null c8e80cd0bfdbbfa0b14296ef59a1c3d353917add fix(update): require managed marker before destructive clean ad69d3edc7359310233fa789b300bfcc5a5c3f7a fix(terminal): guard os.getcwd() against a deleted CWD b1e399de95894643c4d67105cd3bd84746c211b8 fix(update-check): stop reporting phantom "N commits behind" inside Docker (#39559) 439f53cab8e0e1048b1da0b1fc31aa7256888bc1 fix(desktop): gate OAuth remote connect on AT-or-RT, not access token alone 899ee8c23dfd029fdfd7b669ac3ac82fd8388f55 fix(gateway): tolerate non-UTF-8 status/pid files in gateway status reads 7309f3bef7d7dd5d8d6aa4a98d977de7608ae7d2 fix(line): map inbound message types to the correct MessageType 736dc0fd86bf9a8a49fa9373b252139b0ce4d20a fix(nix): use fetchNpmDeps hash for npmDepsHash, not prefetch-npm-deps 6b77fd2a0f430a4e3c681e7c127da474e15d0ef4 fix(nix): bump npmDepsHash for react-router 7.17.0 lockfile 46c16b928823baffcf68f70e088cc1118599ad7c fix(deps): bump react-router-dom to 7.17.0 (GHSA-8x6r-g9mw-2r78) 7f016f5f336093a684769f5d2413aa77e2510000 change(desktop): show up to 50 models in list per provider by default ab706a3346d0a7c242e6e2f88de4675de11bb98e Clear stale desktop onboarding errors (#38844) 4eca569bf42095f4ce3c39d228dee46365f38288 fix: temp for update 7c00ffd92c4135365f395224d359a760f8838cce fix(google-workspace): fall back to uv when venv has no pip (#39516) fb853a1783099d75edab49dba0dde6ead8c26340 fix(install): scrap rebuild venv 96cd37e212e819994c0e8f7135476986b14fa57c fix(dashboard): reap orphaned embedded-chat sessions to stop slash_worker leak bcb024ad48bc885b4bbd9ff3c170f2a7fc66c6f5 fix(desktop): fail remote test when OAuth ws-ticket mint fails 500cf537b7d0fc31345588b4498e99e86a0f46f8 fix(desktop): validate live WebSocket in remote gateway connection test 10c78bf625fff25441d1e01fc5fd7a757790fba8 test(desktop): add injectable gateway WebSocket probe + unit tests 9cc47b20cb3fcd06e1cee98410a1fa523067f951 feat(desktop): add 'choose provider later' skip to first-run onboarding (#39483) 5bcb63e400987e937e696b385e01285339b565c5 fix(tui): add thread-safety locks for _sessions and prompt dicts 2069e78b88bfce0a1c01dc64cda8060dedef96aa chore: add HeLLGURD to release AUTHOR_MAP for PR #39453 salvage 1bcfe9c58ac7d9b7aecb876dc583416fe31dc4c6 fix(cli): widen _run_cleanup MCP shutdown guard to BaseException e9529578d5a4efeab96f5566c4219d3c51d9ab28 fix(mcp): widen shutdown_mcp_servers exception guard to BaseException 25742372eb5664bc9626143a486823b27fb4bc5e fix(approval): check is_approved in execute_code guard (#39275) facd011b63180295d3a08c432af1cd0552999a36 chore(release): map youngstar-eth in AUTHOR_MAP for salvage PR #39134 338f0b22346202b6ab4312ec63c64cec92004b6a fix(desktop): recover from corrupt Electron cache in bootstrap install (Windows) ef1a933e290913a32380176250a17573db9c1f19 change: add setup stamp 1e5ae386ee0cd358d52de4dab4d4a13e9a14700a fix: bad const 89d26bc4302d8b0db32f56a4cf190497a72cfcef feat(desktop): new session in a git worktree from the sidebar 12a2d5f435dd5e65800fa243ea9d16a4368b5495 fix(desktop): clear busy flag when a send-to-all submit fails 221d6eb63ebb874cfdfac0b7d42ac5ec2ee68acb refactor(desktop): broadcast send-to-all through the session hook 391b59475258e6ea5d000076e71d1968b09dcb4d fix(cli): use Rich [dim] tag instead of ANSI escape in _restore_session_cwd 07a1b1597415a6cf855aaf5da332a05c7eb7df66 fix(desktop): serialize send-to-all spawns to dodge the port race 03c9bbfb544873506d3553abac526f10c73ca346 feat(desktop): "send to all" broadcast from the profile rail overflow ff5652d0f63cb09bc856bdd5a4c7b72f564cfdf7 Merge pull request #39330 from NousResearch/bb/desktop-profile-support 77fef769249a0307a28f880152cd3c10d96a83d8 fix(venv): .venv -> venv 7b4acadfe765604c6eb8a12b0ee1a5f3676af2a4 feat(desktop): per-profile "+" to start a session in the all-profiles view 4891f9ae78b099472a22f66d037ec1619f5358d5 feat(desktop): concurrent multi-profile gateway sockets 55879ebf1fba36336ffbb1778968b2d0070927e2 fix(update): detached head update support 89baf02919f324c4c4f5297914649a1842d439db Merge origin/main into bb/desktop-profile-support 692146939e476edccea8cdbbbbba3ca08f1ff912 fix(windows): Split hermes update into two-phase pull + post-pull with re-exec 1b01fa3acf1585c6d78c84374d089f20b4d5eeb7 feat(desktop): long-press a rail profile to pick its color 86371e6cd8d558fac9d73f63fb3726bc07bb8230 style(desktop): drop border + radius from the profile-swap overlay 80672754a875fe7ac0f231054918d47272097f9e fix(docs): update all install instructions everywhere dfe6fbb0b3fbfbbfe396e3248eab4ae4a54a89cb fix(ssh): narrow symlink fallback to WinError 1314 only 46abf040122803911d0e7126f72646321a9cf5ab fix(ssh): handle WinError 1314 symlink failure with shutil.copy2 fallback ea44011d152e6140b5732b72d0700c7ecc59c4d1 fix(desktop): prevent thinking block from closing mid-streaming 93b5df31890fe45d306eb0cb45b84c8f562dc2b1 fix(test): patch async_is_safe_url in web-provider SSRF mocks c60952ba9441a87f572d6bd095b4f98cde69d466 fix(web): run URL SSRF checks off the event loop in async paths 46b2afc56b79b9dac1d99e2f6324574a56df5f34 fix(state): use TRUNCATE WAL checkpoint to prevent unbounded WAL growth 76c7512dbfbe22d3279285d19ff64aa7f74ae7ea chore: add Kewe63 gmail to release AUTHOR_MAP 19db9cd0760e05dafcd1ae637db946cdd65322ce fix(acp): replace direct db._lock/_conn access with public update_session_meta() d33d23c8526c543ca38ca704f76171c3cec44c3f fix(vision): drop models.dev catalog fallback, keep explicit profile flag f736d2be86b8a76d2ced3d41ced8b172c24a1eeb fix(vision): detect vision-capable custom providers via ProviderProfile flag 4a4b9bd2dc86b1c360e31e4e104b226f6f1b0521 fix(test): add platform guard for grp import 99cee124dc446a087684a48c3eafea837c04f67a docs(install): warn that VPS browser consoles mangle special chars (#36279) (#38811) 36f1cd7deae3cb0cb31d3b21ce9613c2feb6d8e6 feat(installer): do shallow clones f764b0400ad7b979b1fe5711fc75a282350c7046 fix(desktop): deleting the active profile reliably falls back to default 63bc0d2262ce35313784c72767a9f238c8630cd0 chore: add Kewe63 gmail to release AUTHOR_MAP 0538c5ed19ffa2dccf389d48654c278db46d0128 chore: add dirtyren to AUTHOR_MAP for PR #38177 salvage 74e845c000de1f32cd325758407ea706f18b7c36 fix(slack): pass thread_ts in standalone send_message tool path 9dbd3c57d7008215b360c81d4364f5316af400bf feat(desktop): drag sessions into chat as @session links + spawn loader d159af08199c00ab8a9aaa5abfd187133bf7210e fix(acp): replace direct db._lock/_conn access with public update_session_meta() fe4e327bb5f544c319f012b5417fae187e673c73 chore: add Kewe63 to release AUTHOR_MAP c14c37d46b902b407292838274111d3c5c2fda30 fix(openviking): add missing /agent/{agent}/ segment to memory URI — fixes #36969 b20fcffa54d7c8b62ba6e85702bdf66888467d99 docs: make dashboard/gateway prerequisites explicit for remote-backend connection (#39128) 8a888441d777b1988f27ea7eb4f7c87253bf5e79 fix(docker): recover from out-of-band container removal in persistent mode (salvage #36631) (#39415) c54b93587313d4e4bcce6fcb6ca81dff6709ca4b fix(desktop): rename session via session.title RPC so /title works (#39410) fd87c61078eb338dd4360dc599122623b074f5bd feat(models): add qwen/qwen3.7-plus to nous + openrouter catalogs (#39409) 54cae7d1cb94b7686dbbd67d091fe67732527d50 switch model order 2c98dc0a961364d2449df94619fd682e24a5482f fix(desktop): offer remote sign-in on a gated-gateway boot failure (#39402) f96b2f592f773bc468eb416f7230ee44d1aef76d fix(desktop): trigger slash command preview only at the start of a message 27135e0e6a69316c8121a0e4509e29b631df313c fix(update): don't try any git commands on windows if .git is missing f774e9c6f50da967081f0fb06c24cfd0922178eb feat(windows installer): recover from partial clone with no origin 82c157b267e405ef81ace088d93bdc681b6eb05a fix(docker): clean up orphaned container when docker run fails (salvage #7440) (#39412) 4690bbc363e952d29baf31f838b7502c905f8812 fix(local): recognize unqualified hostnames as local endpoints (#9248) 0c513d315b05fea0e848545ae2f186cb45ba74d0 fix: respect disabled auto-compaction on context overflow 751b91446e2f3df02952c26a8c279b4ca34474fb fix(mcp): ensure server.shutdown() on probe iteration failure 454d6cbe5250964e1e98cf44ae7d06d71a895b33 fix(telegram): finalize sealed overflow chunk so split streamed replies render formatting e7a7872a874837ca36105ca3e90db464cf7c125a fix(tui_gateway): dedup re-queued process notifications flooding TUI 2f0c8e90e6138dc986c2e533941e6e20e54536f5 Add Telegram QR onboarding to dashboard 5300727a08eb74afd3649118142af8e25e08d05a revert: keep Google Chat OAuth secret + active_provider profile-scoped (#39398) 6ad015255d0f75ede2d9b35b2dd9d1cde0a73343 chore: enforce LF line endings for container entrypoints (#12181) eb43a5b5d8c9a27ff59f61b59d675901b3b1390b chore: improve .dockerignore with Python and common patterns (#6092) b434f8c3e081c618190dd1a14510335dc72ee98a fix(deps): promote markdown to a core dependency so rich delivery works out of the box (#32486) (#38649) 495c3733d8cedca83f741560623d5efd86f2ab03 fix(config): bridge docker_volumes and docker_forward_env in config set (#38611) 825629424d765da6a86b01ad9352ba2f98f51b61 fix(tui): persist timed-out/cancelled clarify prompts in transcript a40e20e1368d6626197f0316361d33b80aff2dd8 feat(desktop): profile rail rename/delete + context-switch polish cf9dc366dd0bb45151c0394e2231e9ef4da13fdc refactor(desktop): drop per-session icons, read-only cross-profile reads dfd6bcf1ff9ceae6fb893cadfc201bbd54cc0658 fix(desktop): restore accordion expand for credential settings rows (#39327) 48d8d80771e25b833055b0dc5327a5ef7ef74f77 feat(desktop): single-profile rail shows default icon + create 0c7def31aa864c8f7d6e4b01b824c8db628cb8b6 feat(desktop): show "+" in the rail for single-profile users 76b98f43ca0a5c8324182e76fab2617d31fdc6ef fix(desktop): gate ALL-profiles grouping on multiProfile fb18bde89740381dd99f8e897d4b7148b5714818 feat(desktop): fluid, haptic profile-rail reordering 9915665e4c519c53418cfd9d0219b85e8c5bfa4d fix(desktop): step profile-rail drags cell-by-cell, clamp to strip 3e4fa8ca9ca348d335b63eb766b86539a8590ee7 fix(desktop): lock profile-rail drag to the x-axis cfbc47d8937c2380a5b016772d745d7f5ab74f4b feat(desktop): open command palette with Cmd/Ctrl+P too e0121c59d3b33749bea292f52bcb62a8a811981b feat(desktop): drag-sort profiles in the rail d29caf382868f8f5fb5e0c09f632f70f27e6e64e fix(desktop): satisfy slash metadata typecheck 5df732a355c83dd331ce8f08151d56383f173e52 feat(desktop): quick-create profile from rail + pin rail on empty sidebar b94b3622b5faabadf36d8d51f5804c0a655553e7 feat(desktop): per-session profile switching + cross-profile sessions 1eeb7da2e6e5463018cb4be9aff1ec97bb09488a fix(desktop): slash commands bypass queue when busy and chip id suffix leak (#39289) acce1a2452f8b85343db1b057c1d98717c421522 feat(desktop): polish credentials settings and messaging env routing (#39217) a3fb48b2ceb382ade3ecbb99e2cfa475b4c8abcb fix(state): keep /branch sessions visible after parent reopen d1367355d514b5ce3af6056ca660ab28e9d632e4 chore(release): map jeffrobodie@gmail.com -> jeffrobodie-glitch for salvage 1f347ee543b650bd788b69af65830719703d74d9 fix(uv): move venv aside instead of gutting it in place on Windows rebuild ee7948ea6e3b7b6187d40702a76204927b6688e3 fix(deps): exclude dev tooling from all extra 8077e7d2fbbbfb9ae7c6130154c22586a5663630 fix(tui): narrow resume lock to avoid blocking session.close bd6d0987629ecf6d3602d739997564d18de5225f fix(tui): keep resumed live history current 98903d03139d4af4c5b612c92906e3429ad1c0f2 fix(tui): reuse live session on resume 30412a9771cc81861c58a94fdb64fc49036ef307 fix(cron): re-validate stale cron-output entries before deletion (#37721) 693f4c7e9ce583ed740daaa5aa8eb738390c643b fix(gateway): clear zombie agent slot when session_reset races in-flight run 2982122be7689bfdaf16254bf5adfcc4e1c64844 fix(gateway): deliver $HOME deliverables on root-run gateways 580d9240979cdb2cdfdba13216febbfb1157bca8 perf(desktop): make session-id search SQL-bounded, not O(n) 9ecc331be8477b782cf733931d438b09c87555d4 feat(desktop): search sessions by id 62f0cfd90274d42e19564a084902933d0ab6c776 fix(kanban-dashboard): use context-local board pin in specify/decompose endpoints 081694c111fad434ce80789a6937920e535e2d05 fix(kanban): isolate board override per concurrent call de370fd10ff74488b7aec3ff14a963335c7d37c1 fix(dashboard): prevent stale desc-save indicator when requests overlap c2d11cc95db7a916e18c34608906ef2696d68e52 fix(dashboard): surface model-write failure when creating a profile 6feb40e702829639c22aae2ae29d63e9ac5e8508 fix(desktop): wait for backend exit before reloading on connection-config apply fef04a197e24ba607cfd03f1c3d33858a4b2e5c9 fix(desktop): purge electron cache unconditionally, not via stdlib zipfile gate f583c6ebd5bd9a15cbb9c8a757882dd7afc8df19 fix(desktop): recover from corrupt cached Electron download on build 200fc3c794f8f72e693737d2516e4b2b5466e2c2 test(installer): factor node-bootstrap test layout into one helper e003c53b06d8a922ae17401f8696c8d9281509c8 chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 3858cf43075edc7a7d530ed18a4934eb79c81ce4 fix(cli): honor global-root active_provider fallback for named profiles b7169f9bbb55dfda714a6afeb8e26527e2780346 fix(gateway): keep pending /update completion notifications until the target platform reconnects a6a0a5b1b09b2b72262ba37a6cd2612d234b5c34 fix(desktop): detect linux arm64 binary fff0561441d26f8056af5e64bf44c0a54cad5ecc fix(gateway): anchor Google Chat OAuth client secret to default Hermes root 07f5382675425dbc9405dc226c2d15af65539a99 fix(gateway): don't treat dm_policy: pairing as open access on own-policy adapters db8029a86a78bfcd219f2cf2d009b7ceb737fb1b feat(dashboard): full-featured profile builder page 8c61a9448018d06f703283347517a2374a85f6d0 feat(profiles): extend create endpoint for full profile-builder (model + MCPs + skills) 4cca7f569d6bddadf79ad81c7fca71e9915f4f43 fix(tools): add raise_for_status for MiniMax t2a_v2 TTS path dd4ba4c2c4c00bdc211bdd716ace61825d724dc0 fix(vision): cap pixel dimensions proactively at embed time + declare Pillow 6bdbe30763ea9c9f58f4d85c5f0e608b5a85a7bc fix(vision): guard image pixel dimensions, not just bytes (#37677) f7dabd3019fa46d7234abeabd4e175784500e266 fix(api-server): guard json.loads against corrupted SQLite data in response cache 7314757876f0f4de65e52835eb1d124f1c99f1ca refactor(feishu): slim meeting-invite parser; add AUTHOR_MAP entry f3bbfda6d1909ef995693535cf37d11c58e1daa5 feat(gateway): handle Feishu meeting invitations 86c64cfb5bd5d1535c4f221132134af787157f2c fix(gateway): visually expire Discord interactive views on timeout 38d3c49aaf2e1751e414a312d7e7986df40994e3 refactor(skills): clean up bundled skill set + add environments: relevance gate (#39028) c136eb4de1eae6db5acf2cc35f7e1e9e4763aea3 fix(update): harden venv rebuild + verify core deps after install 28ca4460a1f830812a884bc4b043d081954334e9 fix(gateway): guard kanban dispatcher against malformed config and empty summaries cbfe1d21d14c69f914dfe1ee4392417f16eb2329 docs(guides): Run Nemotron 3 Ultra free in Hermes Agent (launch guide) (#38769) cd68b8f0e8f486a4a5ceaeda41d440ba3342d077 fix(auth): set active_provider after hermes auth add qwen-oauth d12c233378bd0401d42179eb758876f84a5e09d0 docs(wecom): stop implying live streaming and typing support (#38990) 71a9f44e8047235eed6f55e6c9627421f54e1f6a fix(gateway): retry startup auto-resume when a failed platform reconnects fa8e2f935b26aad339b1a963aac9df29d2b831c9 polish(minimax): address Copilot review comments on M3 default-aux fix b531b5d12a2040ee7b7bcf5d0773c21a8f315d39 fix(minimax): update AUTHOR_MAP entry + test_minimax_oauth_aux_model_registered 3d1d0a49fe9000f632f4739ac21e490bf367dcec fix(minimax): align default_aux_model with M3 frontier on minimax + minimax-cn 5f62ba8e4b7bd62b4ba8944351953a4204311df8 fix(auth): use _save_xai_oauth_tokens in auth_commands to set active_provider 643181b34620b1037246ae2e1deaded0f96a88c3 chore: add scubamount to AUTHOR_MAP for salvaged PR #37616 b6206020d383fc22f7daf285d7c92ed131c68917 fix(desktop): remove session search aux model 34a290352724a3722a67324d831779e2ab89047b fix(auth): set active_provider after hermes auth add google-gemini-cli 9fbfeb31b9c611c9f06f84ca95ea6b4fbad6c3e1 fix(cron): make sequential jobs non-blocking too + sweep MCP after jobs finish eb9cde734642cc2a8ecd142ba7c63d3964ca835b fix(cron): decouple job dispatch from completion in tick() c14e6b4edfe2360734eadee679ffb6117b698c36 chore(release): map ashishpatel26 author email for salvage c9b62061d43feb61a3a69caec99148623d988a5e fix(cli): launchd KeepAlive unconditional restart (#37388) 153fe28474ced74a72dc9ce59c04838b0658ec24 fix(vision): use MiniMax type="video" block (not input_video) + tests 0b46c4163aa7975f1a446012754a0bd467da16fb fix(vision): convert video_url blocks to Anthropic input_video format for MiniMax providers 9756dff5fd83912b0cdd389f7ee1bb0a4c50f16c fix(model_metadata): drop stale ≤256,000 cache entries for Grok-4.3 b04c6e95f60e0ab9bf926bbf566faa9ec523a43b fix(approval): catch perl/ruby -i as a separate flag token a6a4e6f9d756a1a35ae8125b4e6c3fafb6807165 fix(approval): gate perl/ruby -i in-place edits of Hermes config/env 5f199e610bc95231c3b33306ee6b59be799c31a3 chore(release): add AUTHOR_MAP entry for solaitken de60bf40c6ee4c889a9db35ea0d5d20fab962b35 fix(memory): register parent packages for user-installed provider imports 4ae3c988b51e9aef0433d4dbaee974c759b2cbcb fix(gateway): bridge shared-key loop to nested platform config blocks d3fab54933c3866d2c7cf5e51dc63e9e494c9f47 fix(cli): clear screen on exit so live chrome isn't stranded in scrollback (#38928) c0435f4fefcac371ef512b45cc4686a504c0b0db docs: remote desktop connect uses username/password, not --insecure + session token (#38926) df9fb8e5e68b26c0333a860309ae7ce7189c5a8c fix(tools): stop hermes tools reporting kanban as removed (#38918) 616c0a36b644116bbbfbdf4b8b740205f0a1d8ca fix(dashboard-auth): don't abort verify chain on one provider's ProviderError f57ce341dceced256d9387f5d0c1deba73c4430b feat(dashboard-auth): add generic self-hosted OIDC provider 4361159cbc7a570b7b5b8dd9e2f03f0e2a15b3a8 fix(installer): close review gaps in node-on-PATH FHS heal 85b03a0c9119fef73f4e59a8776127b4b1f72525 fix(installer): heal off-PATH node on update/migration + harden node discovery cae6b5486fec8e9b5f366ea3ed5254d53fbc341d feat(dashboard): always enable embedded chat; remove dashboard --tui flag bf82a7f1ccdcfd6ab551d0649a65cdc8de86aafb fix(cli): erase live chrome on exit so it isn't stranded above the session summary 2ff73853eec6d5cb38639c17958582e95ed48630 fix(installer): heal off-PATH node on update/migration + harden node discovery aeec88c77ffcb5c3c201f771d5079ebdb199ea88 fix(installer): symlink bundled node/npm into command bin dir for FHS root installs b1b0f4b66854ace86ad841aff399990fbb80638b fix(desktop): surface command approval even when its tool is in a collapsed group (#38829) 0175be3aa76cc63eb54a2872ff55d57d04770236 chore(desktop): silence Vite chunk-size warning for intentional single bundle (#38888) 928f1ac0e187a5d2ef4f397dbbc1f2edfc98201e fix(desktop): re-mint OAuth WS ticket on gateway reconnect (#38886) 4ed63170e43eb53601aa7b489c9d4704537e7184 fix(update): don't fail desktop rebuild / skills sync on mid-rebuild venv (#38885) bd12b3c2321b591d6c924ee9b62b52667a314dd0 feat(desktop): username/password login for remote gateways (#38851) fe709a4210d89e14879f4bd9b80e83338b0d09c7 fix(test): expect 4404 close code for disabled embedded chat (#38841) 385a508e43cb9106b5af48b0acf0a1ca9ce7cafa fix(desktop): don't fall back to a dead WS ticket on OAuth re-mint failure bf590c81d0bc800e2e0ef1fa4e4f168a45d1d5bf fix(desktop): hide gateway auth control until probe resolves the scheme 9d07927a23eea91b3ebc9e7b442f138433aabb6d desktop: OAuth-aware remote gateway connection 6495027f602e93a87fe9b611409933c13404671c fix(installer): symlink bundled node/npm into command bin dir for FHS root installs 9cbc37e25b64a018e0dc537f9b2fc470f9fc1e4a feat(desktop): dedicated Providers settings + polished Accounts/API-keys UX (#38551) b36a30db2036309093fb9bf2490085c7b6f6eced docs(dashboard-auth): document the username/password provider 3a25912c14de8a9d3e1f564e335f1aa0ce4c3415 test(dashboard-auth): cover password login route, provider, and plugin acb0e2bacb8b893a1cc2cc16bdeeca2432c373d9 feat(dashboard-auth): add BasicAuthProvider username/password plugin ed9e8ba097ec8075b11bb3f36538b798b90fa0a0 feat(dashboard-auth): add pluggable password (non-redirect) login fe74a1acda4cf7d1c350f56db8766829cc47b735 fix(dashboard_auth): allow any http:// host in redirect_uri fast-fail (#38827) 6717914e0a133e0f897d70f086809f1c4cd5838f fix(dashboard): explain WHY a chat WS connection was refused (#38743) c2ca3f01abc97f0f51d69317397e1534de1d6815 fix(dashboard): honor --portal-url / HERMES_DASHBOARD_PORTAL_URL override in register bb291b6bbccf814c5b6462277ce45a024e74139b feat(dashboard): `hermes dashboard register` for self-hosted OAuth client e23c7648d0574b7fe8e72de8653dfe136dd19b08 fix(dashboard-auth): don't abort verify chain on one provider's ProviderError d223f582c75b1fed7d9297a6d638321868d4d5bb feat(dashboard-auth): add generic self-hosted OIDC provider d459868776ea111ba8189bfbd1962a4ad3b9ddb0 docs(analysis): map IDE coding-agent harness techniques onto Hermes 0401176c7ace2f1a76474fa8d0f3899d24c10102 Merge pull request #38760 from helix4u/fix/prefill-config-compat 62871ea4b14f974da94224ed289d7170f502ce6a fix(dashboard): honor --portal-url / HERMES_DASHBOARD_PORTAL_URL override in register f31c950182c8370fac622cb778935603a18eb4e3 refactor(supermemory): session-level ingest + kebab aliases (salvaged from #32487) (#38756) b758357c984a1af59f2ac3fede620251d233ed2f feat(dashboard): `hermes dashboard register` for self-hosted OAuth client ffb53767bfff0ac471eb712ba1799f4ec5e95a36 fix(config): align prefill messages key handling 3c163cb0353c6dc5e0b5278998e721368ed71a68 feat(desktop): background needs-input indicator, clarify redesign, Cmd+K palette & UI consistency pass (#38631) 86643d84e99ee7680bd94a065373fbf9501e02a2 feat(desktop): Cmd+K jumps to sessions; drop API-key entries bc9e33d66b126b8166ade7bf74c43baee2e1a4be refactor(desktop): DRY/elegance pass over PR-touched files 38acced6873d63086d415625a9d04fb0240cd63e style(desktop): satisfy lint across PR-touched files 5bb7156949f4d307f9b810c5c2f606dd530a0668 feat(desktop): composer/intro polish + shared ErrorState 3a5e36cfa50afe7e08cde4a03b196f56e4329153 fix(desktop): composer wraps long text & expands at the real wrap point aecdc75bb001f0ceeebf68a80676e8e9aa984ba2 style(desktop): hide search when there's nothing to search 9e02b18828a28347b244bd0de66e63b7b30498f5 style(desktop): tighten error-boundary action gap fd68ae63315ae073b4e310d4f3a82c29331ddc22 style(desktop): drop active background on titlebar actions e026fd88cdbbce9857d184ad2b11c5309f4f9e62 style(desktop): migrate bespoke pills to shared Badge; tidy cron/titlebar fd88d527af37e9d76a611e1507c4dcc062b994bb style(desktop): shared Badge component; tidy profile metadata 88bdb6b074514ec674629006e5d58f2c4683b108 style(desktop): kill focus rings globally ded620b7114df6145838e99c3da99ae057cf4a9c style(desktop): fix profiles sidebar — header + add-icon, drop text-link 311e80809f50f220d014e74d3964c973131575e4 style(desktop): tidy root error-boundary actions ac9de2e80c01c9d44e4496f94bf7c1befd54d66c feat(desktop): global Cmd+K palette + UI consistency overhaul 40420a619b588049f138889add2417cb9dcb7b91 fix(desktop): attachments on Enter, IME composition, scroll, fetchJson resets (salvage #38502) (#38677) 2e628ae9718bd9ae2f1e23b7b6c22608cc905866 fix(docker): add libolm-dev so matrix lazy-install can build python-olm (#33685) 30c7b787d1067b4ae472201746cca4726b10571f fix(memory): fall back to pip when uv is unavailable (salvage #5954) (#38668) 03ba06ebfbf5e7b1eb8a194a8f94ed081dc890fc fix(docker): chown gateway install tree on UID remap (salvage #37928) (#38655) e68fc4def2baaa38e49b04c5646bee35167bc21d feat(desktop): titlebar toggle to flip sidebar sides e45dd2b0e72b5f73ccbea758599979493bd7b8ac refactor(web): unify main-slot model assignment base_url/context handling (#38593) e2ea648a08265164ef103005d533ed28ec58ceb8 test(docker): make tty-passthrough probe robust to container boot-log noise (#38665) 75e29f97ee3919e6269542a5b6d0b3306816b10e style(desktop): add Switch xs size; move appearance controls inline-right 947f305f84c56b30ff30739462cca2059ce79458 style(desktop): drop redundant On/Off label next to boolean config switches 41ede963041fb1650828a6d1c55ada7a66f7eef3 style(desktop): Color Mode + Tool Call Display as one-row segmented controls f15d2cb5e42468bc48dca9c88e62c4b201bb6224 style(desktop): primitive-level pointer cursor + borderless settings lists 2b762c53640f42fc0c10c6ede94adad62fd5d17e style(desktop): de-box appearance options into flat rows + bare theme swatches 75adf7d603b1b7eae7aee5c6610c0a789f7e0aa7 style(desktop): flatten appearance settings — drop card-in-card sections 0776d1b19cb37deb3727fb569b856785c67d0a90 style(desktop): unify Input/Textarea/SelectTrigger on shared controlVariants d6e2c940e9d1d760c2a8d29a8f5dc6896f80096c style(desktop): nudge button scale up + 2.5px radius on non-icon buttons fb0250ef63c88c3696cd0bda5372d021e2757888 feat(desktop): add boxless `text` button variant; use for aux-model actions 1e1ab31ad6c8683ada89c9340f108909ecf17438 style(desktop): 12px button text, drop sparkle decoration + redundant settings titles 8c0f15478de9dd12eb3171b162da17547c9f273f style(desktop): shrink button scale, flush overlay sidebar, variant-ize stray buttons 712bf4d8e4294fba44f1b5782033dad3160a74f8 style(desktop): padding-driven, square non-icon buttons 35a750eedd7b8b669dee3c9878ab157f1e4eb010 feat(desktop): persistent needs-input indicator + icon button consolidation 1ac64adaf9d9555de1bb2f327e756d15687e0618 fix(docker): don't require >0 TTY width in passthrough test 7402706c5ef970a563c64d1ec4f0f2dabce934fd fix(docker): accept Unraid uid mappings (#38098) 2059707fce0bfa6720af09cc0223429d6e6f87cd fix(gateway-windows): anchor detached/startup cwd at HERMES_HOME 40fbb0f3c6fe32b69e74615c6a6b160b377a2179 fix(constants): use windows native default hermes home e3313c50a7333b96c6a695f2e00b41f87ce4ad59 feat(dashboard): add Debug Share to the System page (#38600) 72f556dfc423205c1372c81a0ba550de11723386 Merge remote-tracking branch 'origin/main' into bb/desktop-background-clarify 58eb473baa817f8105d51b8651dd30b5d731682e fix(desktop): surface background-session clarify prompts instead of hanging f66a929a6b78b81bd31a634f05798431b0fb10aa fix(desktop): render approval/sudo/secret prompts so tools stop silently timing out (#38578) 04d620d91fe2812c5295609fb4f48acf5c1fb866 fix(docker): run config migrations during container boot (salvage #35508) (#36627) 92be989291bb57e20937d585d35dd602508c1a99 Merge pull request #38564 from NousResearch/bb/tui-sgr-mouse-fragment-leak 33ff71cdf6309e478836b412ebe1572612678f6d feat(dashboard): always enable embedded chat; remove dashboard --tui flag 343c54e35bfe8682dcf597aea1f0ea5278864156 fix(docker): reject unsupported --user start with clear guidance (#38579) b0a52d74ac44615c228284b43550e768580882ef fix(mcp): resolve ${ENV} in discovery probe so header auth works (#38571) 5a22cd427dd6a7e8139db45f2680012425f7f119 fix(desktop): configure local/custom endpoint without an API key or UI changes ca067157219b802c6c1f7a290e7788896009e17c feat(web): wire local/custom endpoints into model assignment d50741af906f80964f838d9235123690cdc3cc87 fix(onboarding): clarify Anthropic API vs OAuth provider entries and reorder (#38577) 725290db63a7d85efb206508d4afccf084c44c21 test(hermes-ink): fuzz the tokenizer flush valve against fragment leaks e7bc6189cf185f9c223a4428115147e483d9ff89 feat(cli): resume relaunches in the directory the session was started from (#38562) 6efc7eda57c31f1925bffc3d6acc4419e9a6b15b refactor(hermes-ink): delete now-dead SGR mouse fragment recovery de124800a2d660e50e60e399e3b06acfb4e498bf test(hermes-ink): drop input-event SGR guard test f3543235475a7edb7a44adc883d97cdebf818cfb fix(hermes-ink): reassemble split mouse sequences at the tokenizer; drop the regex sink 5446153c986a6c274b1cae2c07826c5d1322243b fix(docker): chown build trees on UID remap independently of $HERMES_HOME (#35027 regression) (#38556) 01c010e23378c318bd96e9ed2de068c698e74779 fix(hermes-ink): collapse SGR mouse fragment guards into one flush-aware rule 059647d1c9aa960fb96f31a243891939cfa9af4a Port from google-gemini/gemini-cli#21541: back up corrupted config.yaml f99665f99a83f6fc256ff3e8c6718741f73a60c7 feat(prompt): broaden Hermes self-knowledge pointer to docs + skill (#38538) a6e47314f98cccb09f302ad649d8bec30e4b4a2d fix(dashboard): sanction plugin WS/upload auth via SDK helpers (gated mode) 1c88360fedbeff44ac99f192ef5762c50351e4aa Merge pull request #38546 from NousResearch/bb/disable-provider-key-validation 475ecea3d75784d2c1d98279d63ae4e5fba5d497 fix(install): cap requires-python at <3.14 and pin UV_PYTHON to the venv (#38535) e8c3ac2f5c811ad0d4d2063239eeaf8a8ac7fda1 fix: strip extra_content from tool_calls for strict APIs (Fireworks, Mistral) ec69c767ff64f709c3ea1cf4ecff30667710de45 docs(desktop): point Chat section to remote-backend + dashboard doc (#38545) 2f523a46911e9929c4cfe0aad4ef7431c85547e5 fix(tui): cgroup-aware V8 heap cap so memory-limited containers stop dying silently (#38541) 8a19884bf3995a8d1144c828582de043abb4331c fix(update): stop stash/restore from clobbering desktop source on managed clones (#38542) 7ea37cd0823680a95b090737468516d9666dc05b fix(desktop): stop validating provider keys in launch setup 1927ff217e6b886bedf6428c3798795968916031 Merge pull request #38517 from NousResearch/bb/desktop-yolo-statusbar-toggle 63727f32bfdcd34b71faf2455db6b398ca98fb6a docs(dashboard): document connecting Hermes Desktop to a remote backend (#38534) 5c0a1fec0c14bb21a09512f485683e4f41fa0e62 fix(desktop): surface skill & quick-command slash commands in the palette (#38531) 44ef0150abc2e4d45d826e697ca3a51152d84a7d fix(dashboard): sanction plugin WS/upload auth via SDK helpers (gated mode) 96f0ddc6a946156c3f6d7151055329c0a99fec39 fix(docker): bake hindsight-client into the image (#38128) (#38530) 51a2c07016b2bf263d4a863cbe8de316f05132ab fix(skills): document xurl X Article ingestion e223503b0303b6e257f6e264bcb0815dde8528b0 fix(packaging): modernize project.license to PEP 639 SPDX string (#38353) 5288341fd714713ee471fce06b9a8222c2319d7f fix(desktop): remote-ready boot no longer latched by local helper exit 6fff744158a0dc46d19ff817c1f82b87b52790d9 Merge pull request #38465 from kshitijk4poor/portal-quick-setup-model 26a57467a8bcf7f5ea162484c14c5698ef5d3f60 fix(cli): harden `hermes portal` SystemExit handling + finish model-pick doc sweep cd188b814ec1e378df6828b0db023b2b5ff6d32b feat(cli): make `hermes portal` run the full quick-setup Nous flow (model picker) d4787d3e2e3e78a86421d2a1a72b66b1f43c3182 Merge pull request #38449 from kshitijk4poor/portal-login-alias 0caa23788f6016d3b3216b22fa0203a93152bb99 fix(desktop): prevent IME Enter from splitting messages and viewport resize from disarming scroll anchor (#38333) 9ba7e5b1b426fdc6e7cc4b919186db0ee900ba37 fix(setup): point Portal login-failure retry hints at `hermes portal` da4f407e51739a99365dfe00a30ae736a6cb67b1 feat(cli): make `hermes portal` the human-readable Portal onboarding alias 39fee4f3bc13a3b74a7ab1dfa306b3ddcbbd4e71 test(installer): cover the post-update relaunch/install target derivation d3b1e4300519e232385fab6d2cac1fffc49a5c99 fix(installer): never brick the install when a self-update swap fails c349eca823a35ab2397bb14c4f2463d092ad8767 fix(packaging): ship locales/ i18n catalogs in wheel, sdist, and Nix (#38383) b91c382035631a07ac12606b8e19cff908a3131d Merge pull request #38393 from NousResearch/bb/desktop-session-fixes 2e0c9083db8425d6e087ba0af6024406aa513d05 feat(middleware): add adaptive execution intercepts 1b89715e153f3daac8f697c95f386a1a4bf0947d fix(desktop): guard reconnect sockets and keep branch search precise 93228d52999623c8e0eea107eb6a1a12c74cf788 fix(desktop): persist pins, reconnect after sleep, dedupe session search b4b9a93848569dbd12f6cc58de9131f1fc7b1212 Merge pull request #38384 from NousResearch/bb/fix-installer-emit-log-logstream 1971b105269a0873b7fc89a68e9019e42274c637 fix(installer): pass LogStream to emit_log calls from #38296 84710995efabc7ec2e75c373e1baee75d779cbc3 Merge pull request #38312 from NousResearch/bb/installer-stderr-log-label 96326094470a1c63f349f24a94b0dcd3bd631e51 Merge pull request #38296 from NousResearch/bb/fix-dmg-update-relaunch 2d9ea0997f3491667ece2b71c8d3b30493841bcc Potential fix for pull request finding ee8aeea4ca3c04aa7f67f03824b86a716a93fed3 Potential fix for pull request finding a5ff28be93bdd7312856655d5fc9bb3e8426a0b8 fix(desktop): stop at-rest scroll jump-up during code-block highlight 3c73d1852e372d1fe03dc5931d2f95be059caa67 docs: remote desktop connect needs --tui on the backend (#38350) df848bd2da130033aa18d289b30fef8c52168e7b test(gateway): cover schtasks locale-safe decoding on Windows 973decc05048f1d6fe990d5d6457e80389d5f1c5 fix(gateway): decode schtasks output with locale encoding on Windows 96663056309655bec290aedece7a10555e4c74f4 fix(dashboard): clamp PTY resize dimensions for WSL2 winsize garbage (#38200) 810e5864db140a1ad09201726bd01b60a8a30fcc fix(installer): stop mislabeling stdout-style progress as stderr ecac659d7da3b95c9f518e5038ee29fd77bb040a Merge pull request #38306 from NousResearch/bb/desktop-clipboard-image-double-paste c711146ad4cd23b3137bf8a262be2e3f3c4a2162 fix(desktop): dedupe clipboard image paste a1cda2410b30c9bd67fa8085b35e3d1bcb87d13c fix(desktop): self-update rebuilds and relaunches cleanly on macOS e02a6038a420ea3278ad28c342d89546e43159d9 fix(tui): save TUI /save snapshots under Hermes home with system prompt (#38251) 12ea7fc7e3f12fdbee4813df42ee4edd5a43de15 Merge pull request #38255 from NousResearch/bb/installer-desktop-build-logging 7fb8a6b5c535ab592e2a25878e59c28dc1407b9c feat(dashboard): enrich profiles dashboard and de-dupe channel env vars (#37872) 1dca7c6207f0dc756c08d0002c41197c9b720a12 fix(install): require Node >=20.19/22.12 for the desktop build 214b7e070f9ebc456bd0d9f1d768d78b76c706de fix(install.ps1): handle dirty worktree on Windows update (#38239) 6ee046a72fde50dc064b02c86ffe67ff112546ec fix(doctor): detect + repair stale HERMES_MAX_ITERATIONS .env ghost shadowing config.yaml (#38222) de26b178548618364f1947ada93b2efefd8c39b8 test: stub has_hook in transform_tool_result hook tests 827f251426a00995a54daaf07f3d82fca6c40c74 perf(observability): gate tool-hook emit on has_hook; slim per-tool footprint 432325933a893b56a52bd98d9b27a8369d4604fe test: restore unrelated trailing newlines in cwd/tool-search tests 0d9b7132ffe8c70b593a87445b181742dc878827 feat(observability): observer-grade telemetry hooks + NeMo-Relay plugin a78c73f3aa6672fc3ee3e16f3e1ec0c7a961a950 Merge pull request #38224 from NousResearch/hermes/hermes-79601e59 4c544b633d9507ebf976c6b70090b08310e41f91 fix(kanban): don't permanently block tasks that hit a provider rate limit (#38223) 60b6352fe5bac6ce3cfbccc731f43bb9fec073f3 Merge pull request #38221 from NousResearch/hermes/hermes-45accc84 e76d8bf5aaa9cadfbb449de9ede2f66e57f7c1ba fix(tui): stop persisting full tool output in trail lines (silent OOM death) c5d199eada5e488c9853697d4b60083aab6ce5dc feat(dashboard): check-before-update flow on the System page (#38205) c930a49ce9b705debc9444ac56bcfb8d2fc9c3ad fix(desktop): honor upward wheel scroll in long threads 3aa24e2619363d4b88613838e7a138741af2edf7 fix(desktop): stop chat scroll backward-jump from content-growth interim scrolls (#37997) ba57ebec3319fc03bfcf6c67c57499d4cb1c0d31 fix(nix): bump npmDepsHash for refreshed lockfile b98b645f879a142eb4b088adc20c7cb643687ccc chore: regenerate lockfile + map vladkvlchk for salvaged #36978 f45d7dee7d259bf25b1a2e57d333b9733bb3d237 fix(desktop): add @testing-library/dom as explicit dev dependency 1b302a04746d46808cbe76bd46511744416460b3 feat(debug): include desktop.log in hermes debug share / /debug / hermes logs (#38203) 1d90b2398235f601fadf4a650a9f17a97d0e70bf fix(mcp): banner shows 'disabled' not 'failed' for enabled:false servers (#38204) fec5ca71d8cabb7e770cc6e4a96317a64b970180 fix: preserve telegram queue fifo during grace window ef65298103beb66a610bc33a813538bc132bd3ae docs: make the Desktop App remote-backend section self-contained (#38194) 50ba36dcab7b4b6ed6eea895c033c3555c0677d5 chore: add bbednarski9 to AUTHOR_MAP for #29722 salvage (#38189) 4d0f2bd241694e91d1172194f7a0f73d2d585ba6 fix(gateway): use FIFO queue for busy_input_mode pending messages 5fca754ee335f6b99ee59481a242e89f5abe8791 fix(desktop): pass live backend PID to in-app update so its own dashboard is spared 192020992dd0e1829e8c764087990d8cc02d2088 fix(cli): exclude desktop-managed backend from stale-dashboard kill d833b1eff7bd93e6b6e283041cb30c0aaf7a8821 docs: add remote-backend section to the Desktop App page (#38180) a1264e9967ed4cbf4b6a60809628c197053bdf42 fix(matrix): make bang-command resolution robust + fix dead skill-command branch 0022e94d749b9e5023c765dc63d6bbcc0e684c72 feat(matrix): support bang command aliases 6038bfb66ebd163b35295fc15eb929e5a33f5262 docs: explain remote-gateway session token for Hermes Desktop (#38144) 477c925bab2b8362a6e638291c774aa399825470 refactor(skills): rename shop-app skill to shop 047e7cf36f0f3bbb3eb300be3e67915e18f1fbbc fix(docs): remove remaining stale submodule references missed by #38089 (#38105) 43fd63b4b50c931889051f05783d9cb572bf6ae4 fix(windows): rip out unused submodule support in installer & docker & docs 1d5546435e922eea69f383170f97ff9f93fbc56b feat(skills/payments): fold in danhill-stripe review feedback 64202200a6043b685750e16107067971446f8818 chore: remove committed RELEASE_v*.md changelogs from repo root (#37855) f019a9c491b5f263d98c1966d54afff9914b15e8 Merge pull request #37975 from kshitijk4poor/fix/desktop-session-view-bleed 46ea0a184dd461fd09bd30acfe2bde35f27924d4 Merge pull request #37999 from kshitijk4poor/desktop-slash-nav-dom-regression-test 49f1b9e4b44f3affb33ac2d8810896d89fbbdf9f fix(desktop): stop Esc reopening the slash/@ menu; harden keyup guard c77c470d2762cd7f14169270742d859d9a69d1b4 test(desktop): real-DOM regression for slash/@ menu keyboard nav 05ed2bec40ca95bc675f8dfe0e2964c79c2af7df feat(cli): add desktop-only uninstall (hermes uninstall --desktop) e114b31edaec8588e085e6748582672356529170 test(dashboard): direct unit coverage for internal WS credential + docstring fix fd1ec8033ddac8f7e3a02b21db75f1b92ebc6ac6 fix(dashboard): authenticate server-spawned PTY child WS with a process-internal credential 28f1590b7acdb672ed690b981218fc5bb6310982 fix(desktop): stop background session messages bleeding into the active transcript ada04573a9669b92556788f2882feb3237753d03 Merge pull request #37948 from kshitijk4poor/fix/desktop-stop-button-interrupt a23728dfcc5093199b4f687898c7fd3547b42525 fix(desktop): make Stop button actually interrupt when a turn is queued 9b43ab8de5077dfab242ebc8b0ebe6162bccaa5f Merge pull request #37937 from kshitijk4poor/fix/desktop-slash-menu-keyup-nav 188e52db9180a244d09b5908e150c60f1cf50afa fix(desktop): keep slash/@ completion menu navigable and Esc-dismissable 5005b79bc31802690f8c06ab2a08d74e92a96af5 Merge pull request #37932 from NousResearch/bb/desktop-remote-flicker d0ea4caf7fc372c00985388136156c30c99973df fix(desktop): don't treat WSLg as a remote display 6a2909fe5a0793827b2ec615d67d81ba12224cf3 fix(desktop): disable GPU acceleration on remote displays to stop flicker 9272e4019aa43d9d28f6f9d3a4cf62e2278dbd00 fix(docker): point TUI launcher at prebuilt bundle via HERMES_TUI_DIR (#37923) feb50eee70553a81be22f800f5a2230ca882be3b Merge pull request #37908 from NousResearch/bb/desktop-concurrent-session-loss e0a999aa8a22ce24caa5f9748116daec32779ad7 fix(desktop): label in-flight new chats with the first message 13196da0d3b04d84b9c9d5e4580e5ea84e6dab7e fix(desktop): slash command keyboard selection snaps back + scroll into view 55a76ec6695d696e064e9ee7f56eb9ba1fa1c3b3 fix(desktop): keep in-flight new chats from vanishing on refresh d9f7e7ac815e747e8b55d51dcb3329f2f29a30ca fix(docker): seed gateway_state.json from HERMES_GATEWAY_BOOTSTRAP_STATE on first boot (#37896) e618cbee4418cce53a9de63d6fdc8a7b4885666d feat(desktop): custom zoom shortcuts at half default step e6d38e9376bf095f5bff8bccb3d8bce156c03c09 fix(dashboard): authenticate server-spawned PTY child WS with a process-internal credential 2f0ee664670bb308c44ef969628a998c7e13cb86 Merge pull request #37877 from NousResearch/bb/desktop-sticky-msg-clamp cbc1d901ba447c48a587c060fce8be39cf10cbcc chore: uptick 84eb5f1f891b15901cc68d93ea86abbb9bc88d65 fix(desktop): restore sticky human clamp transition at 0.75s e5472da584707c0f569851a71e8e3419ecbefd11 fix(desktop): drop sticky human clamp max-height transition 3ab783a7bb691d58eb9d0f68b1b00fae3967f840 chore: uptick 06aa140fa195e10bf2647a673eee585528b598bc fix(desktop): inset sticky human messages with --sticky-human-top dd28f2ac9c21e25e4dbcf6a908c39c1315a14b37 fix(dashboard): trust non-web WS origins on OAuth-gated binds after ticket auth (#37870) 9bdf01852ac1bfdcb65af2d75156b395750b2e08 feat(desktop): clamp sticky human messages to ~2 lines until hover/focus a92cbcac45d51fea0d241000df7d011da6064d24 Merge pull request #37866 from NousResearch/bb/desktop-scroll-anchor e67ab2e042d37d717d2761f4a7e430504cdf2fae fix(desktop): stop chat scroll jumping by disabling native scroll anchoring b6da66c5bec1a74a9844b6a283da62e6e5eadf13 Merge pull request #37786 from NousResearch/bb/tui-rightclick-and-boundaries dfba3f3e519717efc6405c6b9c35a90dc279efb1 fix(tui): clear selection on right-click copy + group transcript blocks b28dd3417dbf82f3df523dc180e59e0d154ca93a fix(setup): default browser/TTS picker to free local backend, not paid Nous (#37800) 918aef267b9e9c82eef098eeee38e69ebe071f77 Merge pull request #37782 from NousResearch/bb/configurable-default-interface 205ed71ba0e55d1b34083e9db52fee732aa7038e fix(deps): refresh lockfile to clear 6 npm audit findings (#37752) d6b0c23f8769b200084b2ef24fb58b6b54cf5339 feat(cli): configurable default interface (cli vs tui) 7d0246ab5715e9e18e156eb08912f4e24bd8d175 Merge pull request #37745 from xxxigm/fix/macos-mic-entitlement-inherit ae5b2de2fa3cc0a1b0ce9137f1c7994d343d232f fix: expand skill bundles in cron jobs 1e047677a57bf83ddcf9092f4f09fa625259c030 chore: add leonardsellem to AUTHOR_MAP for PR #37405 6ed9a2de8f73404ebdf976c99535ad47218b8106 fix(dashboard): allow desktop websocket origins on remote binds 54343bcade7cc1205cea0637cfffcf925f097c02 Merge pull request #37738 from NousResearch/bb/statusbar-model-menu b6945ce772b3013090dcef6b3fff3249667a824e fix(desktop): switch model on keyboard activation of picker rows 591c329f15d3655af64d91d000e416c8fec5bc90 Merge pull request #37739 from NousResearch/bb/desktop-macos-install-forward afec339e967f7ae499fc1ed9f05aa57393df784a docs(desktop): sync marker schema comment + default dock note arg d704df2d6e4701a1c5d68e9c7560e8a58c66e809 fix(desktop): roll back optimistic model switch on failure 39933f758b5b0ee50cdf345eaaf99cc485c9e3ee test(desktop): assert macOS device entitlements are inherited 21e172b94ae864e4d9950a517e58158cf3602fc7 fix(desktop): inherit microphone entitlement for macOS helpers 46e513ef518587bfb4ddc610cef7d64bd5337f8d fix(desktop): configure Linux Electron sandbox helper 1daecfa4b0cb5101f9fb1cd6b01a8d877155bab6 fix(desktop): write Dock tile as a file-reference URL 4a626ed1878dbd434c5a1f92f3e5598e1f90ef63 fix(tests): add _patch_managed_uv autouse fixture to uv-dependent test files 4df280d5119ab3c96588be1290514ba78faec61b refactor(uv): single managed-uv path, delete fts5 installer escalation a51a7b9b92b63b5f97afa0fc31c9cd349f04b5ec fix(node/nix): consolidate workspace lockfile + update all consumers 115671ae6b2c838cde7dce73a945a0af05a95a7e fix(desktop): address Copilot review on model picker 01eaba7061060cce05ae0b8ce47ed2e5029aaa12 polish(gateway): address Copilot review comments on fd-leak fix 7982560845df9ef4fd60e0e43e2030cdade8742c fix(release): add fearvox1015@gmail.com -> Fearvox to AUTHOR_MAP 4b06c98fe4f4686f89873933ac616cb6e76b298d fix(gateway): close ResponseStore + dispose unowned adapter on reconnect failure ab2472e6924269840a9918ecb0887d42d3c1a1f6 fix(aux): self-heal Nous-routed calls when a pinned model leaves the catalog (#37732) 746618217950f73a7fba335a53d78306352b0024 fix(desktop): adopt existing macOS install + auto-place app ea4fe1563119ba45db2f8303d63e23168881b1c4 feat(desktop): inline model picker in the status bar bb1c8b6f1a0d860deefdc07f7415bb0b3416ce7f test(honcho): de-flake prewarm smoke test's thread wait (#37614) 082025abcdaed29572d0f30cb434fc2267e3e0ab fix(gateway): route /background result media by type 30a7a941205b94edf791f5a2aedfbfdb6f213f01 Merge pull request #37697 from NousResearch/bb/grok-provider-desktop 123b945731f16b7c5bbf02f4a11cbd877d694ade Merge remote-tracking branch 'origin/main' into bb/grok-provider-desktop cbc82511eaca0a82ba68adbfd080811ee9af58ee fix(web-server): move event channel state from module globals to app.state (#37683) a13db76eaa65714a0625bb980f730910c2ca8e80 fix(desktop): signal loopback worker to stop on cancel 33807e2b1453faf619e607145886ce3812db6ed8 fix(desktop): use auth-store path as xAI OAuth source_label 6ee94d4399744808330a6c4f0d43ab4bfd1a275a chore(actions)(deps): bump marocchino/sticky-pull-request-comment a429a2a0bfa19617a87d196f90163b89eb898272 ci(nix): fold package+devShell builds into flake check d963ad56c19e19ef4ae70372d3748a1dd6379a43 fix(desktop): address second Copilot pass on xAI loopback flow 3be9fb73173e477d153d79fcd3e278bb093c350c fix(desktop): address Copilot review on xAI loopback flow 20617bc18aeb47d253f648fcf30aa9a7a222f06b fix: prefer managed uv in MCP stdio command resolver 06f367659859413122e97838b85bdd39b1e356d8 fix: address copilot review comments on PR #37660 63e824831c3c7bc69019c0022d8cc47a6c0303bc fix(desktop): order xAI Grok after MiniMax in the OAuth catalog dd5e97bd7fe0d6799ecbc39c821d6fcc7abc10bf feat(desktop): make xAI Grok a first-class OAuth provider in the launcher be97aeb7ba7e00612ff070adea9d1da2f92d1f83 fix(tests): add _patch_managed_uv autouse fixture to uv-dependent test files f4ce36cd472429e89e80976a76ae761a25f51fe8 fix(tools): resolve uv/uvx MCP commands under GUI-style PATHs (fixes #37589) 1a9da1ae82d824253118b5b87e776826c7c408d1 refactor(uv): single managed-uv path, delete fts5 installer escalation 267d9b2ad55835d9bff08592ed79e7b82efa6b05 refactor(uv): single managed-uv path, delete fts5 installer escalation c47b9d126f2f820f41059813a2c5b16ea4742bf8 Merge pull request #37597 from NousResearch/ethie/desktop-linux-install 41a12b00707e44467369fb1b819fded955ba71ba fix(installer): try session PATH before registry refresh in Resolve-UvCmd ac76bbe21f8a61445583d11e0bd2087fdb03f2e9 fix(desktop): triage batch of GUI quality-of-life fixes (#37536) 859fd752f44d43413812bdcb1a1d48e30c02f963 fix(installer): case-insensitive conda guard + local temp (review) 31c40c72c03cb11d5e596d015d61e7dd118cecee fix(desktop): stabilize project folder sessions (#37586) 1e7ccaa2b60e6a5840e53b04834475b8465e0aed fix(installer): prefer a trusted uv over a bare PATH uv in bootstrap 79bfddd37c1aba449d8e77ba56e3987a9448f1c7 fix(models): restore gemini-3-flash-preview to Gemini OAuth picker (#37606) c2050183a5e8a298e941fe8de6237a7e91e06cc4 feat(desktop): content-hash build stamp with --build-only and --force-build flags eebed21070aa3ab6c745f5d44c8d4848bc03773e fix(update): resolve a trusted uv instead of blindly trusting PATH 476d8d9ccbee1b36d8fb6f4fabc0081c3e996cd2 Pluginify provider/platform/terminal backends b34ee80741db2fdf188dcdc5c5caa78ee72642ff feat(installer): rename macOS installer to "Hermes" and make it a launcher (#37516) bb0619dbcea7a84fc3c33e027ba71a4033a08748 fix(auth): align Codex OAuth persistence paths (#37517) 3e6b68252f4d526e22f3e8b4394c5cf08623523d Merge pull request #37518 from NousResearch/bb/desktop-installer-running-instances 091ef7d3049cbf0be255fd1b269865f95b4f2848 Merge pull request #37484 from NousResearch/ethie/gui-docs 0c29cfd1a6147b360a8fde600609da3835587f2b Clarify desktop install retry guidance 6d14a24b798c6494eff0f0012ad093500ca59bd9 feat(dashboard): nous-blue theme, bulk sessions, schedule picker (#37383) c07a403039108d757d5da183df3d9c14beec0fb4 fix(desktop): codex OAuth onboarding now resolves on fresh install 7450bee8bc9aa541f23a6ace7d320749310a3e9c fix(docs): update desktop app docs 7c8d8f80ac72974bf278df3aa427c68b8dc739d7 Point desktop downloads to website 957056181ac22528eb986cb0e811d55a670b6035 Clarify desktop local build path a6b6afdff4cb3dc8b0a45d9ceabbb30942227cea Merge pull request #36864 from maxmilian/fix/tui-reset-terminal-input-modes-on-exit 23c0578bd75d9ef8e7a3ac8d90eda2db157978eb Merge pull request #37462 from NousResearch/bb/desktop-update-throttle 3eb6bd7f929211d85a54437e93f07a8683903184 docs: add Desktop App guide (#37457) f58db77cd0b0de57aad9d0fb9b7e766366210e56 Merge pull request #37379 from NousResearch/bb/desktop-session-list 8977bf282e1599f350f798dc5ba1fda183d80321 Potential fix for pull request finding 267e7fd39508508891d6dcd5a15e624fe370923d Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/desktop-session-list d183f75ee0627f28889052b337b59ea5156cf9ac chore: uptick 4239230957810d418357d5d7ef14f8d2182109b5 feat(desktop): cancellable first-launch install 927fa7a9806e064848b39f8c41fda0645b334971 Merge pull request #37330 from NousResearch/desktop/consolidate-models-into-settings afea650e16c544457efed023c1df05fadd86c500 fix(model-picker): OpenAI shows curated models; OpenRouter no longer phantom-shows (#37404) 195c4d2a9862ac6533408d708e35287c936b5328 feat(streaming): per-platform streaming defaults (Telegram on, Discord off) + dashboard toggles (#37303) 5b71f7dd724904cf0542fa258a07840e0bb5c028 feat(desktop): session search in the sidebar 135c65093a0a523058229049d6a52e3feb246055 feat(desktop): stable in-workspace ordering + No-workspace default de8bdf529d6478ae54d1677b5e59bffe639ca8e2 fix(desktop): keep pinned + recent sessions visible across compression c10ccaaf51a7146c7079e318cc20e4ab3f1a190d feat(dashboard-auth): rotate dashboard sessions via refresh token (#37247) 5e55b35cc8fb1e66117b19f494f828c609e527cd refactor(desktop): move model management from Command Center into Settings c6501c0f492c73313648df23417e9297cf91f868 Merge pull request #37310 from NousResearch/desktop/consolidate-skills-tools-pane a2b8e430e851bd7c77600fbafe3bc6cd5035e616 refactor(desktop): consolidate skills + tools management into one pane d78d77e46053e65cf8960760a1438a33553377ab feat(config): surface gateway streaming block in DEFAULT_CONFIG (#37285) 89db6c8534fb85f4faa0a37745d846a84aecaec6 Merge pull request #37283 from NousResearch/fix-toolset-provider-selection-display 787936d13300271a38afc230a263e19f6735eb8c feat(gateway): structured stream-event protocol + Telegram draft formatting parity (#37250) ba936039bea70eadefe1aacdccc0d1532e8479ca feat(skills): add dynamic-workflow orchestration skill 2c0d64839783c98301a6ebaead5adc51e05c0cad fix(cron): sanitize invisible unicode in vetted skill content instead of hard-blocking (#37245) 134643a2fa80b4db1c4aa08cfece561f77b18e88 fix(desktop): reflect active toolset provider in config panel 3c1d066a8a82b9f78cdf093a7103278c9a783de8 feat(dashboard): Channels page — set up every gateway messaging channel from the browser (#37211) 15cb4e22796f1061e82e22843552f260ad007f42 fix(docker): install python3-venv so ensurepip fallback works (closes #36813) (#36905) 0269eca7e110f4a05cf47c29c0f79029b20b31d7 test(minimax): assert M3 stale-cache guard contract, not a brittle 1M literal (#37220) 81dd43a8eb5cf6a746d314ba8e9a5cf3740d9071 fix(docker): preserve Docker -w workdir in main-wrapper (#35472) (#36259) 272c2f30aa60d6d98b2c97dde6ba42a9231d4f56 fix(kanban): kanban_create inherits the spawning worker's task workspace (#37182) bd8e2ec1a653cab93b30818c5e5f7a30204b6a91 feat(dashboard): complete admin panel — MCP catalog, enable/disable toggles, hook creation, system stats (#36736) d11efb9076bbc858b9a35eb3e11694c394797222 perf(gateway): lazy-load bundled platform adapters 40ae170647be8ab1e79632a178eba7d26d2db7c9 ci(docker): use registry-backed build cache for arm64 (#37129) 1495f0cc38159da2573c87306b554819c5f11afb fix(file-safety): extend sandbox-mirror guard to cover inner-container path (#32049) (#32407) a5aecf26fa21151359550e62c91c5f746ec189ed feat(kanban): gate notifier watcher on dispatch_in_gateway c35ede789facdde6c3291ced663ec34cb199d27e refactor(cli): normalize note and avoid blank lines in prepend helper a26a12ad07f78c5c7ea8a92ea6600640f7013e29 test(cli): cover _prepend_note_to_message str/list handling 043350dfd39f72112d109ea2818e73423b7f9cf4 fix(cli): prepend queued notes safely to multimodal messages 21f55af76902b95d9f5db89f1ef6ba0b2712649b fix(model-picker): stop routing OpenAI selection to OpenRouter (#37175) 72e82f88c00d92bddc0fa6d9bec5b600a3b4dce3 fix(kanban): decompose children inherit root workspace instead of forcing scratch (#37172) fa3b06b035aa57bc16750aa0146fac743988c0b5 refactor(telegram): generalize observed-media caching into a reusable primitive f768e75ecfd2a440d45cb813397469a805d5d148 fix(telegram): cache observed group media 34468ed0d45dcfff45bd7ec7edbb63a02ef2f07f fix: normalize terminalBackground default and drop unrelated lockfile churn fc995634ccb03cb8349bd9ce0721d637920c9846 feat(dashboard): add terminalBackground field to DashboardTheme f24b7ed9d95301c7f610241588dcf0589b900cd2 fix: make Honcho startup fail open 59510d7b44fe59417f26745c04ccc0c5b32d1746 feat(skills): fix browse cap, add source links + copy buttons + category cleanup (#37143) 0cd5867bbba69140ee5d4cb9f7e992734e7edde4 fix(whatsapp): honor dm_policy and group_policy open at the gateway d4b533de4edd2211125dfe3904959d1cd41c5642 fix: batch of small robustness/correctness fixes from @kyssta-exe 64f7f36713b429f139f0da6461dfbd73e58160a0 fix(mcp): make non-MCP HTTP endpoint fast-fail robust and non-retryable c914e4a37156fe0b6c3cd82fdb49669b491deaaa fix(mcp): fail fast on HTML content-type instead of waiting full connect_timeout fabca0bdd82b1f69ae44212605f020aecdd1d3b9 feat(tui): single /model command + unified Sessions overlay (#37112) d9d8b2c76230f85818542d917c7ee4a90322578a docs(dashboard): document enhanced Sessions, Skills hub, and Cron edit f7a3509b257325bd84f428ab205460b7692858f4 fix(gateway): honor WECOM_ALLOWED_USERS in env-only WeCom DM allowlist f485eeaad46d6539e90122b8597ba179f9a9757e test(dashboard): cover session stats/rename/export/prune + skills hub search 5aea3ce578d4abc885df8be1891b539b11528c2e feat(dashboard): complete existing tabs — sessions mgmt, skills hub browse, cron edit 7d51cd75165c1ebd7ce35289d45c48a8e87394a6 Merge pull request #37115 from NousResearch/bb/tui-statusbar-responsive ca2a20a837cece67afeef89a83fd9302095129e0 feat(dashboard): session stats/export/prune + skills hub search endpoints 13a2350c8d2d9c1777bbf372acbaaa70e4766ad8 fix(tui): pass indicatorStyle into FaceTicker so render matches reservation f600352e43de0e12b4b2fb9231290cd367edac84 Merge pull request #37123 from NousResearch/installer-optional-commit-pin 8104b202691b0449af5b1bcf0ee4ea06b5818d38 fix(xai): route video models by modality 1c63e842b131c935464e7b1ce7505fc8dc3511c7 docs(dashboard): document curator, portal, and diagnostics + refresh System screenshots 1755b06a1516f1b7aeffbe0a75865f361cd3846c feat(dashboard): curator + portal + diagnostics UI, tests e885b1022bd9c681628321468445c8aa13ba849e feat(dashboard): curator, portal status, and prompt-size/dump/migrate ops 446bed38e2481c827bed7e27bc9fdc41ca6636b3 docs(dashboard): document the comprehensive admin pass + fresh screenshots 0be557e49f2f7706a2a716f1a929cd3483c3123a test(dashboard): cover catalog, toggles, hook CRUD, system stats, webhook toggle 6991ed9380ab211cbefd79eebb18009e7902b8bf feat(dashboard): MCP catalog UI, enable/disable toggles, hook create, system stats 37199c176043c204dbc8eddbdeb4bcf00bddd77f feat(dashboard): MCP catalog + enable/disable, webhook toggle, hook create/delete, system stats eee32cdd5248d05a4512cc2f14d62f046b3cb8d0 fix(gateway): fall back to in-process heartbeat when s6 sleep is missing (#36208) (#37120) 899e8b9067e2d2020713465fc263409c2e217988 fix(tui): keep fmtCwdBranch default, cap cwd at the status-bar call site abe0e19c0a4d14681a99f6a4b82945b4461bfce4 refactor(bluebubbles): simplify mention-gating helpers d967e74427996dbb75848be9d11f71b0ca2d4149 chore: add contributor attribution mapping 05022066ea5e64bd139d16c6327d8c856f8e2963 feat(bluebubbles): support group mention gating e25b2a6e187e346c28f02ee981dc38e92a7faba1 fix(tui): address Copilot review on status-bar tail disclosure 9cb7d40d8dbe9ced87842b6c65c4b2671d7fdecb fix(tui): derive busy/duration reservation width from fmtDuration 85b65e29f09b7c4ff4676880b984fe7ffc9b7f1d feat(desktop): session hygiene, archive, media streaming + connecting overlay (#37099) ddc22866a3d6671f8c4298c9d30775225989bac2 chore(release): add whyhkzk to AUTHOR_MAP for PR #32407 (#37121) 1d9aacbd001c69eaff2ef287d9a47f91e3d6bf4d feat(installer): make commit pinning opt-in, default to branch-follow 2f171743b7ba3f898ab58589dc73a53da06bc19a fix(tui): pin status/model, whole-segment tail disclosure, smaller cwd 162c7856ca14078ac0b0b15dcd1e54b2e38b2645 fix(file-safety): add sandbox-mirror soft guard for writes to per-task .hermes mirrors (#32213) 1d7a1c00b4408d52b8f3ff1f9bc44a5d2492afbd fix(tui): make busy status-bar reservation /indicator-style aware e59b815c048110df1b2f51bd30b4ab18792b26b9 fix(tui): prioritize status/model over cwd in the status bar on narrow terminals 4f7fe9bcffd95b4ab993c5b286f5b84e65d498fd fix(dashboard): surface Docker update guidance instead of generic failure (#34347) (#37085) 3a8d643d373cc4d2793dff612b5fe58b5669e2f2 chore(release): map caojiguang@gmail.com in AUTHOR_MAP 765790a216d75440cce69c17abd2356327712863 test(weixin): regression suite for _api_post/_api_get timeout migration 566669013f3f9c0b52cb1392250b76d510d99dc7 fix(weixin): replace aiohttp ClientTimeout with asyncio.wait_for in _api_post/_api_get a1f76ba7e99629b2450bc72df4aff1d4da5cf41c fix(gateway): recover extract-stripped tool responses on all platforms (#29346) 8bf498c21dcccbb2b9c10e2da804f792b654543d fix(gateway): scope final-delivery flags to turn-final segment (#29346) ff7f01375be694da38362eaf57884d04dfb868c2 feat(read): extract .ipynb/.docx/.xlsx to text in read_file 92273e4f57af6f80384dae295bf2fa4b6362a0a4 docs: add 25 new community user stories to the collage (#37048) 0fdab53ef0ae9cc9cdfbd434e8fddb97fb23cdd7 feat(cli): ranked fuzzy search in the curses model picker 53f598e7a282511a31331eb79806424d1b9638d8 feat(cli): add fuzzy search helpers for curses pickers 7527e7aeac1743de948d41d963af52334ba57184 feat: fuzzy search for the model picker (WebUI + TUI) c45593ceae03290b5915799e33c735b2730b7251 docs: expand quickstart Skills section (#37047) 128da68823658d2cf1fabf213be83802c33d437a test(tools): characterize tool-surface TERMINAL_CWD contract (#29265) ac0cce5f3f191f88d180a0c8a0823e02d0392752 test(agent): pin whitespace-strip and OSError-propagation in runtime_cwd 75f478750cbaf1ab3d207a6d3dd2adcd01847d0e docs(test): correct None-semantics comment in test_runtime_cwd (discovery not skipped) eadfeef60e295d79e3c3657fba8c68f31f17dcd1 docs(agent): correct resolve_context_cwd comment (None → caller getcwd fallback, not skip) f90777a6b8d5b1166a1b4cd3e156054b2466e460 refactor(prompt): route context-file cwd through runtime_cwd resolver c79b80a8a53aacc3a2ffe66db7971295b84d3c78 test(prompt): place cwd regression tests in TestEnvironmentHints (drop redundant docker case) 16047655b5260acf40e2a9e932d0569f2520f389 fix(prompt): show configured working directory in system prompt (closes #24882, #24969, #27383, #29265) 2564760d7ae9ad62405b4e331f410422552c01e4 test(agent): pin context_cwd isdir-skip asymmetry and tilde expansion 4bc72960427a8d56631dcead9af6ddd920f86661 feat(agent): add runtime_cwd resolver (single source of truth for working dir) f1237aa95b3229ad225728412a9db2cb19a2a3d4 chore(release): map maxcz79 author email for AUTHOR_MAP 32032e1e2d9bf909f26862373c8e3dbbb6929460 fix(simplex): avoid reconnecting healthy idle websocket e946f49ab550325028694fd39b488d9d9eb4b099 fix(models): add gemini-3.5-flash to Gemini OAuth + API-key pickers (#37046) e961f2817722c8f12f52d58d9712d7c73cd5a011 feat(setup): Blank Slate fork — finish minimal, or walk through configs 1ffa22ee6b6aee20c82cd44c2593c8cfceca260f fix(minimax): drop stale ≤204,800 cache entries for MiniMax-M3 (#36726) b9646276fd5b045d3a9f0be4a72c2b55770e342e fix(utils): guard os.fchmod for Windows in atomic_json_write a5371b3e680e213441be104117c0aa2c008f5188 chore: add benfrank241 to AUTHOR_MAP (#36898) 038ed94a6c3718ee9d1492c4d46c6eca42e65e73 fix(cli): reset terminal input modes on TUI exit to stop focus/mouse leaks ef3a650f05d2e9ce14855af1d0184f3ee93455da chore(release): map Subway2023 for PR #14639 salvage 4e9d886d9d9391d096093071cd79ece7e543f3e0 fix(approval): pair terminal-side gate for ~/.hermes/config.yaml writes 8f2931e3ee518ddbb78789fc013fbc69aa868851 fix(file_tools): block agent writes to ~/.hermes/config.yaml to prevent silent approval bypass e56f0ae317edbd19ff68ad8bf77a5638b0fc9c6b feat(setup): Blank Slate setup mode — minimal agent, opt in to everything 762b681423eb582540feaa037626de1e15f16a6c feat(curator): add `hermes curator usage` — all-skills usage view 023149f665bc2dc87dc200a6d3ce6fb091a2076b fix(agent): stop reporting broken streams as output-length truncation (#36705) b571ec298d912d0b8f23fb71923663580486f1f9 feat(dashboard): full administration panel — MCP, pairing, webhooks, credentials, memory, gateway, ops (#36704) 2ed96372ade3e2f6797b68fb88bf0a53f52f2ee8 feat(skills): blank-slate skills — install --no-skills + opt-out/opt-in (#36228) 70e1571d890fc0552c398d6f443315b2f7a06ca4 feat(curator): prune built-in skills after inactivity + track usage for all skills (#36701) 0622a70eb48c375fb81242616a610b8a1d083ed5 feat(gateway): bring /undo [N] to messaging platforms (parity with CLI/TUI) (#36699) ba6ffd4ff11bf97b80f7920116f811ff06c67f10 fix(skills-guard): stop flagging benign skill content + honor skill ignore files (#36231) 9074a154c53f86a9e50c1c2924aa3cd3bd925637 feat: explain Quick Setup vs Full setup inline in the first-time setup menu (#36227) 92a567db2d7a5031df8211efbfdad864c2f51faf fix(ci): regen model catalog + stop gui tests consuming macos-fixup subprocess calls (#36687) e1951ce704d451cf75518879df684a4fbc24140b fix(memory): only forward rewound kwarg when set 3f7d1c801ddfba87a4d0805d34159c830e7a2b7c feat(undo): /undo [N] backs up N user turns with prefill + soft-delete 243e836dce958ff86014acf152e4047daafe9074 feat(tui): wire /rewind through command.dispatch + prefill payload (#21910) 31cfa08c66ea0ee02096cad7c31a074eaa105d9e feat(memory): add rewound kwarg to on_session_switch hook 3e59be0c412b3d9a58da077f6fff2ad6121d2b0f feat(state): add messages.active flag + rewind primitives (#21910) 6c73e8ffaa7b8df1e7b2f9d5792b4ee027e41637 fix(gateway): keep code blocks verbatim in cleaned text when media present ec6261ae2f9177e4f060aac5a293461a19d343b6 chore(release): add VinciZhu to AUTHOR_MAP for #16721 salvage 3ccf4fdc6debf47eab114a093b6cdc7c6dc5b6bc fix(gateway): skip MEDIA: tags inside code blocks and blockquotes 521d06975e10b751d9241fbd0e083e22459d244e fix(gateway): restrict auto-appended media to producer tools fb1b681b3ba8e30551ab1b2703eb5afacaa89478 fix(gateway): keep JSON-embedded MEDIA: text verbatim in cleaned output e8827ef704ac0ca239f7cca4cf170f9d1f08e58e fix(gateway): skip MEDIA: inside serialized JSON string values b3aaf2676b0a4a2230cfb44801e2df8ec64fb300 fix(docker): discover Playwright headless_shell browser (#35717) e3998d47147c5bc88090c9452042aebd43b6980c chore(attribution): map polnikale for PR #35717 (#36273) f106e58afa98d3331815a31161eb5cdcd6e411cd fix(docker): create s6 envdir before browser path export (#34601) c1a531d063efd6285fa17e22059276ae5202747d fix(dashboard): guard update endpoint in Docker with structured guidance (salvage #34831) (#36263) 359f2be12e6ce2da74c174886f3a7ed2be0847c8 feat(desktop): drop files anywhere in the chat area (#36262) e1eba6f8ccd272ff9c213afbd6c0397bf828be72 fix(dashboard-auth): drop /api/* paths from OAuth next= round trip (#36244) 7fbe9b79ab1d3a93689fd8baf09896c5aff233e4 fix(desktop): add missing PATCH /api/sessions/{id} so rename works (#36249) bdceedf784292040b38b8e09a5ee5bbdff7e2258 fix(docker): chown hermes-owned top-level state files on boot (#35098) (#36236) 0bc616ecf9f16f48b7a3ec87497614b90e83254e fix(desktop): darken light-mode code comment color for legibility (#36234) b14e15c48e5226d9fabd356a76e9b0f6d15f7816 fix(gateway): clean service restart notifications 380ce4789bfc986f76863f85e1b422d840d7e178 Remove prviliges drop when you never ran as root (#34837) 064875a5401686520dfcc9f36a90e3be1dfe3dee fix(docker): support s6 /init images in terminal sandbox (#34628) (#34635) a60bff282ef8bfe9b191966bff71b86d7e4b38c9 fix(docker): add /usr/bin/tini compatibility shim for legacy wrappers (#34192) (#34382) 740fb28d025c8ef8fc5e532a88d53b046ec4c181 fix(config): chown ensure_hermes_home dirs to HERMES_UID/GID in Docker (#34107) (#34268) e3b3d4d75ece3c8e8c0eb12bb012e21e148fd251 feat(models): add MiniMax-M3 to native minimax providers + 1M context (#36214) 27b0980cf305b3ba88a5a900a5d52d8709c2b7f3 ci(windows): upload raw Hermes-Setup.exe, drop dead NSIS upload step 79f7e7a1e9d83ecc75144ddfb1406c2037c9e476 fix(desktop): make locally-built macOS app relaunchable after in-place self-update (#36198) a8526a41596a9678e55c4ab75d29778a72bafd9a chore(models): bump minimax to minimax-m3 in openrouter + nous lists (#36191) a75a45414c86132160441499ad17d89c255f548e fix(tools): fall back to .hermes/.env when forwarded secret is empty (#35583) e2ee9177f091a4f9fc258ad8d3dc03b2f01d6f34 chore(attribution): map SiTaggart for PR #35583 (#36189) 9a82cd33d8debed1e395af141e50c12b0d8720b5 Merge pull request #36190 from NousResearch/ethie/sign-win 4e530f1a273da7cf03c82af803e9250c924c51ae add a github action to build& sign a windows installer 1031031dece9dbacce1d4168de8dffd2302a67c5 fix(docker): skip unnecessary boot chown when volume ownership already matches remapped UID (#35027) 758454d1e47e8c60faa89b2c3bd36f4301922cbd fix(docker): validate HERMES_UID/GID to prevent privilege escalation in stage2-hook (#35340) dcbf62e26aafcc34ed68f8249ff97e2943f5c858 fix(docker): seed s6 gateway state for legacy run cmd (#34829) e1c7a9aa7b91b0c153022a7c8b55f1b469cf5c3b feat(tools): surface the free tool pool in entitlement + setup (#36153) e289dbf1634e34637f47847c74c49a2bee02afd1 test(gemini): update stale passthrough assertion in test_gemini_provider c1f5ec0c3f794ae319cb782b0d0a50b7802706a9 Port from nearai/ironclaw#4211: search budget hits become soft truncation 0f37e051da2e31407f37e2691f210b6c34303a36 fix(gemini): strip self provider prefix before native generateContent fa4ebaa8b58be1e37ea623269ebf2c5d87437e7f fix(install): build desktop in 'desktop' stage on macOS/Linux instead of silently skipping (#36134) 77bb64813cb987ad80236219a20c6cb549b40049 fix(desktop): report desktop_contract in lazy session.create info (#36112) 3ef97a61b9f1fe7247df6be83fd6d4a49e531c1a fix(desktop): track main for self-update now that GUI merged (#36104) cd8aa389c9c2b56452bf4fb826c03a4f99a3625e Revert "fix(tui): clamp bogus terminal dimensions (WSL 131072x1) (#35657)" (#36096) 51c68d4ab1a9e3c62fb1048fccb84144c409f0e7 Add Hermes desktop app (#20059) cf328723d43d101a99fa27b9f358d0f336f4e17f docs: drop early-beta framing for native Windows support (#36093) c9a28dfb0834fa7ce4b7d5f904a4d735801468e0 feat(model-picker): description on group layer, plain labels on members 84d82453ae1fbb8115edf255b2bff21ed9f572b9 feat(model-picker): show short description on grouped provider rows 47d2d05892efe81302ce00998fb558fae1c7e401 chore(model-picker): refresh provider picker descriptions b2f90880093ff07278c0035924daff4e97cc954b style(tui): fix import order + padding lint in ANSI height tests 5c1a4eefd3013b0a4e5b00ef4000ff33ca31c8e7 fix(tui): guard clarify status update + make _clear_pending final 8b6207db70f35ecb1e88acc32f693f80f178844c fix(tui): guard success-path overlay clears by request id + tighten race test 05d444fdf42b05e4c4baa14194c202415af97108 perf(tui): bound ANSI strip to the wrap budget in height estimator 11479a8f31f5d6ffca3f32741b4edbd0f3c45913 test(tui): assert prompt.expire surfaces the timeout system line 0351215bf5b649c75c2044bcb4ba403f06b8b084 fix(tui): make prompt expiry atomic + reset status on dead-overlay dismissal eb3cf9750eb8395c158be5cb929604041d1b03b5 fix(gateway): resolve _get_dm_topic_info on adapter class, not instance 4259bab7d42d4161510742a14ddc7e4e698394fd fix(gateway): preserve Telegram DM topic routing metadata in synthetic notifications 59cc7c305d8afad4f29ad87255b4e20d43628613 Merge pull request #36023 from kshitijk4poor/fix/spawn-via-env-bg-wrapper 01dda3fa02df38060c23691a27faef97019b9ae6 Merge pull request #36010 from kshitijk4poor/fix/terminal-cwd-acp-aware 6f8975dcd86605b494d2b8cdd98eb77ec23bcf0a fix(tools): don't compound-rewrite spawn_via_env background wrappers 7a315bd702a8df0fe01d235a1d3ddc477fa8a8ea fix(tools): preserve live session cwd in terminal_tool, and keep ACP update_cwd authoritative ef57e05f6a34d68a67a2537c9a31168da484c1b9 fix(tui): don't add markdown paragraph-gap bonus to ANSI messages 31341d6b1d89f7d20f623991c4938f7f5cda7a98 fix(tui): address Copilot review on prompt.expire (race, sudo/secret, status) 9fcfb5d08fc3a8f7e144bfe12a5d3e04a99ddaad fix(tui): strip ANSI before estimating message height (resume desync) 17cf1a500f31c94e12b732952baae169893ad517 fix(tui): clear stale prompt overlay after server-side timeout 1044d9f25d63b48c51fe40af0a4cfeea3b6de516 fix(gateway): /stop can interrupt a sibling participant's run in a per-user thread (#35959) fe141a2826aef96e4a014de704d563aba303aff5 feat(skills): NVIDIA/skills trusted tap + skills.sh.json categorization (re-open, awaiting NVIDIA) (#34817) de4f40ed029ad80153302663077d8fb56b1dad6e feat(setup): thin out setup — Quick Setup via Nous Portal + Full Setup defaults (#35723) a726e8a81194a23c7ce3ba5773bff5bb08ba133f fix(tui): auto-recover session on unexpected gateway death (+ persist lifecycle breadcrumbs) (#35893) 04bb74c58eff5ac972e31bcf2fa2c7c7aaf5105b chore: map fesalfayed author email for release notes 64628ea89b1d5624f47b402edd54b13afd335123 fix(anthropic): demote dead thinking signature when orphan-strip mutates the latest turn 2b5268f716c2a69ad451de0baed57138191ebebb revert: drop cumulative-resend tool-arg heuristic from shared streaming path (#35718) (#35860) f2d4cf4f760fb1309466d2c52a4b32556fb407d7 fix(cli): clamp post-compression token sentinel in status bar (#35858) 1fc7bdc5e64e052bc61d3ddb9e6f96cf6c7461dc feat(tools): always show Nous Tool Gateway backends, login on select (#35792) 8f4c8e7c8297ffe0d11914e761cd0e738ab05b0d refactor(cli): extract shared curses menu event-loop driver 087be00733b9b1dc2a40f0c810a73748d8185050 fix(cli): migrate setup model/provider pickers off simple_term_menu to curses 4ccd141b15a4fe42992fd288cbd34ca60fb77bb3 Merge pull request #35776 from kshitijk4poor/fix/curses-arrow-key-decode 3463c97a362cc99f30174519f21ec15b98e835e9 fix(cli): decode raw arrow-key escape sequences in curses menus 0cd7d54b00106d8992803a918ce55d5c205550f3 feat(kanban): goal_mode cards run workers in a /goal loop (#35710) 32899279a744805350be891ccf3ae08289efc702 fix(gateway): detach pending_watchers batch + normalize LRU caches + align test fixtures + AUTHOR_MAP 0036c729238afd33b23210726cf6b21606fea047 fix(gateway): upgrade plugin/bundle error logging and fix O(n^2) watcher recovery eb9bfd39248b1a0f5a2f694c0e80110c630590b0 fix(T5): replace time.sleep(0.25) with asyncio.sleep in MCP auth reconnect poll 91a98d15190181814b68792a0431ae8bc034e462 fix: tool_output_limits re-reads config on every call (no caching) 3c21fed099727965fcb547bb9b263afe6b573cb0 fix(bluebubbles): cap _guid_cache with LRU eviction to prevent unbounded growth e8cacb57d531137dec3109617e807b30ff5187c9 fix(feishu): cap _message_text_cache with LRU eviction to prevent unbounded growth e1293bde4ed039a0b32c14b003708dc16a7b6df3 feat(models): refresh model catalog hourly instead of daily (#35756) ca03486b6a5a86e2be28d83d4cad61770619e7fb fix(streaming): stop duplicating tool-call args from cumulative-resend providers (#35718) 0ffbcbbe7d484757ada355afdbfae24910676ea7 fix(vision): cap embedded image size before it wedges a session (#35732) d4e7b2fc198383d536f5e59173f822e652eda049 fix(voice): allow /voice over SSH when a sound server is reachable (#35719) d276018378b861cff5d998e54bf1d9d415207ad0 docs(toolsets): clarify all/* wildcard does not enable kanban (#35729) bd72d333dce5153750ac42fbb374f942b6aecbbe fix(gateway,cron): reuse existing _HERMES_GATEWAY marker; tighten cron regex 5cd6c1717d22f52342dd0c9630b8f9f06048d6ba fix(gateway,cron): prevent agent restart loops via self-targeting gateway commands (#30719) 9b78f411c8be21ff90136cafefae65451c24804b fix(security): neutralize file paths in mutation-verifier footer (#35584) (#35684) dc4de143778ab2e156063513fe64d6b41a675860 fix(telegram): retry on httpx pool timeout instead of dropping the send (#35664) 978ea9051d5b137ac20a3e86e8a8d74856f46c7b fix(tui): stop X10 mouse motion/hover reports leaking into the prompt 02d1da49de5086946256cc157ff928dcffbe8ca1 Block Hermes root config in media delivery 50db2d9c12f2734b4ba8bbeb3c92a6e14e786a02 feat(models): add deepseek-v4-flash, trim variants, group curated lists by maker (#35659) fe62424ac481fb83a6f2df52b02635abbe624a64 test(redact): assert Discord mentions pass through unchanged c2cbe2c97df442aba8d1d5ffad70f5f376c30ea1 fix: remove Discord mention redaction from secret scrubber 9ed9af2f7d5c8db93da721b3c9efd00ed0e02cc0 fix(update): name new config options in migration prompt; skip prompt for pure version bumps (#35658) b1d34cf6e28f3aa161ca9788eb7ff0c76bf8b7f6 fix(tui): clamp bogus terminal dimensions (WSL 131072x1) (#35657) cd067ab91ee4ab0f0628f6d6b385e7b89d0cb9b9 fix(tui): swallow degraded mouse-burst noise so a stalled loop can't lock the composer (#35512) 355af2c20f495b97c22c9aeb4c227fb0ca010da7 fix(session): survive missing FTS5 runtimes ec67def5bf4e95d9dd1d3ab85c46179f3f97613f fix(install): refresh stale uv so installs actually get FTS5 Python (#35541) 4ec0adebe834c4a3a3838e83f47c7fadeb62380e fix(gateway): denylist config.yaml for media delivery (belt-and-suspenders) bdfba45247ed2b742d6f452353e6dbcdaaf8e9e6 fix(gateway): stop system tips from auto-uploading local files b1a25404b638bfbd79ce4d08b49afc0ee1361528 perf(read_file): make compact gutter the only format; drop HERMES_READ_GUTTER (#35532) 5921d667855880b0aa2083a50f001748aed52f3e fix(cli): stop OSC 11 bg probe from trapping users in a stray editor (#35441) 6a72af044c44c9a05137bc448bc65ecf0ace5a89 fix(managed-gateway): keep tool availability scans off the Nous token-refresh path 96643b4a52b118477b07c838e30eb8ae7372062c fix(file-tools): anchor relative-path resolution to absolute base; report resolved path (#35399) 0c6e133c0434ec856d4aea2b08f216f36c0e7dac perf(cli): stop eager MCP discovery from blocking agent-capable startup b47cb1bbf27926454854834c0ca381c39628ab9d feat(kanban): file attachments on tasks (#35395) 20d073fd0b1f21ae6baaff954961d56a7f64973a test: update extract_local_files Windows-path test for new matching behavior 1b955450e31734bd0398f4d80d995dcee6d1ab28 test: use raw docstring in test_run_tool_media_re to silence escape warning 51d165a8e71ca84112708af4a9add7a71e4ee424 fix(gateway): support Windows absolute paths in MEDIA tag regex and extract_local_files (#34632) 45465b0d5d8c7b2db7df6d9e466589cdef9136c0 fix(gateway): never auto-pause platforms on transient network/DNS failures (#35387) cddb7283d9d10bcea9df2bd8b39eb0b19be39f3d fix(gateway): config.yaml path for WhatsApp/Weixin text-batch delays b0ce47daac99f032a1e4ec2f0f9085e4cd5f585b feat: add text debounce batching for WhatsApp and WeChat platforms 234ac009376daba225525195afca96be8a82634c fix(dashboard): allow insecure WS peers on explicit non-loopback binds (#35386) 433bffff51ec1a731fabc29637a17d5f4fc9f422 fix(cli): surface oneshot agent exceptions to stderr with rc=1 9fbde54b5176b6a2fef198b6d870704a3fd994d6 fix(cli): fail closed on empty oneshot responses 92ad7cc62cf030820d1eee9ceabd40f9b4c2cd9e fix(browser): recover from CDP DOM-node serialization crash in browser_console (#35385) 42bbd221e8e38a0c8213cff9e2d16a640d0d8760 fix(compressor): strip stale handoff prefix on resume; reconcile #26290+#32787 (#35344) 56b8dccf252fcb60fa7b69c623071e096d2e2ce2 fix(compressor): treat unanswered user questions as Active Task, not 'None' 020601d41ea76492311c2ba41c65acc805060d8a fix(compression): drop conflicting 'resume Active Task' directive in summary prefix 182739fcda011a33065db01e31d0d6d2d70cd4c8 test(interrupt): assert no leaked tid instead of no-op block bede3cf12d1492043f4ca604fdb2158ffd6bc619 fix(tools): wrap _run_tool cleanup in finally to prevent interrupt state leak 2b16b756a78ef011afd6bcdeec977fd8bc974c17 fix(gateway): recover model on post-interrupt turn; gate fallback status (#35381) 10dec7c6dc3e1e051a2a3c8a6e60eac2532449b3 fix(kanban): respect mobile safe areas in task detail drawer (#35378) ea6eaabd8f6ee01fac73ea4c0398ee2f987a7e17 perf(read_file): compact line-number gutter — ~14% fewer tokens per read (#35368) 5f84c9144a2c1f1248e92f53eeb2ea8146ad0883 fix(file-tools): handle UTF-8 BOM in read_file / write_file / patch (#35278) 5a1aa9e68c9c1de80fed947f89102839c23926e2 fix(nous_account): add threading lock to prevent TOCTOU race on cache 1ab605724fcda7e91c4eb2657a5f82fc9686f151 fix(dashboard): align action response type 38a09465e5df74f03e0c9b3bdd81ab32ac2bb9fe fix: guard dashboard update in Docker 44f3e5186502167e68b6073b4f7bdfae7bfb4fbe fix(gateway): run adapter config hooks for nested-only platform blocks 6d2727ef1ce1c431e8c6119a8fd10867991c7004 fix(discord): bridge explicit allow_from configuration to env var mapping 0bfe19ba179e21849a8b74eee066d388b41d2e72 fix(gateway): merge nested gateway.platforms configuration block 61268ff7a9be93673361e433cbf2e775798a13ae feat(cli): add hermes prompt-size diagnostic (#35276) cbf851ae1d7251708eed16013f49e47e665d2c0f perf(tui): stop slow/dead MCP servers from freezing TUI startup bfc4a26032cbc3bab1c33c98d40a17fd7802342c fix(tools): point email home-channel error at EMAIL_HOME_ADDRESS d3724c0be68858e9a2816526c5b5e7f5f9f12ebc fix(tools): recognize email addresses as explicit targets in send_message 622e534379fa2f4bdf43e4e6f3d480a74b4106e5 test(auxiliary): e2e routing assertions for custom-provider aux resolution 40fcb96585395c6adb58d4d43156a6d0e68522cb fix(auxiliary): pass base_url/api_key/api_mode through set_runtime_main for custom providers 2475244ca01fa5eb82bb0e3107119ae6258f5d88 fix(update/windows): robustly exclude launcher-shim ancestors from concurrent check (#35257) 8bd00607dc53fabd96e95917b77c9a13d6ead6ba fix(google-workspace): handle Gmail header casing case-insensitively 6baf0016bebe060f055b5466c6ea604f628d1217 fix(run_agent): gate concurrent checkpoint preflight on block_result (fixes #34827) e1945ff697ab300a09a8ac8ad081397e17994116 test(state): cover update_session_model overwrite + getattr-guard text path 794519c6ad4918b5c7a5475f8ddd0052be9a54e5 fix(state): persist mid-session model switch to database c9e31a8e4b186e937d575cdad2520b56369e20cf chore(release): map tuancookiez-hub for #34865 salvage 296fcdfa52f464feeaa3d345e9d5c89a7727e161 fix(lsp): handle Windows .cmd shims in LSP process spawn 460771bf0f20ed8f931e17ce9c57a65eaa9d6ec0 fix(lsp): detect Windows wrapper binaries in installer probes 41decf2c4a6a0e18387bec52b57a2ab531535e99 test(mcp): import os and pytest in test_mcp_stability a29d64e50ce40bd78d63146f5c2653e60301d7c3 fix(mcp): reap stdio MCP grandchildren via process-group signal 4d7ea3fd36e0aa810088664143f1a40137b252bd chore(release): map inchargeautomation-lab author email 2334228ecaf972818b987bd3ce6a29042f6e18a8 fix(update): handle pipx installs + --system fallback in _cmd_update_pip bebd4f851631e65e0ca0eaa1266ad4bce8aad701 fix(cli): restrict uv-tool-install detection to running interpreter 1bdb29d938533e03bc3f6df0b448b4c72ce13c33 fix(cli): use `uv tool upgrade` when Hermes is a uv tool install (#29700) 39f6b6e9d225bf8e05b0f2ccbc733b8063eb8973 fix(file-tools): make write_file/patch atomic (temp-file + rename) (#35252) 6a08fd3c3f9046c3037f4924904cfc95df557fb7 test(skills): assert restore via synced[copied], not manifest re-read 8ae0802d59b26b5fdf104c902ca82e434132dd9a fix(skills): make _rmtree_writable handle read-only directories, not just files 83a7d0b6016495a5d67f341a5252642ab8128f14 fix(skills): fix transaction ordering in reset_bundled_skill and handle read-only files in rmtree 54b33d822dd656453e75de1720f394528ce2597b fix(skills): harden _rmtree_writable for read-only directories e72125d1d0933f34a0ff9f71544068417b480649 fix(skills): fix transaction ordering in reset_bundled_skill and handle read-only files in rmtree a57cc0008166109df85505e9b2996df67dbc210b fix(packaging): include mcp_serve in py-modules so hermes mcp serve works on pip installs 93e6a05efc615bed00e6f4d5737d5ada5f54b020 feat(model-picker): group multi-endpoint providers under one row (#35227) 14517ac1f5977f4d21e10153069eb52aac60311c fix(update): export launcher virtualenv to uv 8e5a6854c3bf081c46df2600775f14bbbde9cc2d fix(kanban): align recompute_ready guard with breaker's configured failure_limit 6ab71d3bb4cca36712b6895fd1bcc38fd3b9be4f fix(kanban): prevent infinite retry loop when worker exhausts iteration budget c70dca3a8856a6e6b5cc40f07deeac4703f22a5f fix(kanban): rebuild legacy TEXT-PK tables to INTEGER AUTOINCREMENT on open 16882cfded90b8c41ff18000c56a84d7f17628b7 refactor(tui): simplify base64 clipboard write to a stdin flag 64998fa93e2bd52ee191701ea50c0febcc8e3dc6 fix(tui): use base64 encoding for PowerShell clipboard writes to preserve UTF-8 b4cf114f68da5d1de6b53cdc4a208d270e0654d7 fix(vision): fail fast on non-retryable image download errors (#35221) e481b153330311381b94cd0630731d7b59010f6f Merge pull request #35216 from kshitijk4poor/fix/agents-nudge-single-delegate 9d2571c86a7dae2bb526ca22233fe5309c23d53d fix: surface /agents nudge while delegate_task is in-flight (TUI + CLI) bb79bcde6103c564dacb2d796fe8fe8b775f1b18 fix: detect pyproject.toml / __init__.py version drift in hermes doctor (#35142) e5765e61fa68b7fa6aebd01ef1a2a79c7af80f82 chore(release): map wei.chen.coder@gmail.com -> wenchengxucool 84ee80eb5d94838dd5b2c3c74a0fbe53dfb48c28 feat: set process title to 'hermes' in ps/top/htop 17103a1f118022a2836cedd89eb3d6a7af4f79ea chore: add SeaXen to AUTHOR_MAP for salvaged PR #33278 e8076c1ebe659c58284396d88f802537ffc2ccb8 fix(dashboard): allow chat websockets on insecure public bind 636ff636d7d819503035b87655d2c7247e84def7 fix(agent): strip schema-foreign keys from max-iterations summary request (#34436) c1b2d0917fff3ff68064757c229cef8d717aa4e0 fix(cli): don't treat any container as the Docker image for updates (#35139) 8738cb92c3a57c012eaf550b27824717df1af9bf Merge pull request #34704 from kshitijk4poor/feat/tui-agents-nudge 5a72e82fd8175597a82d4599ae35d20b1fb8fc89 feat(tui): nudge toward /agents dashboard when delegation starts 7b0915037c110ca10ff4da952bae2d0d786868ac test: remove low-value model-catalog mirror tests 0437137fff821854066088fbcd590d7af54c6857 security: pin patched Starlette (>=1.0.1) for CVE-2026-48710 BadHost (#35118) 827ce602dbed199f665f3975b61303aace2963ea fix(honcho): harden self-hosted setup paths aa32edcac5ee3c3359f2bf8ba2aa372f40787975 fix(setup): write config for image_gen and video_gen in apply_nous_managed_defaults (#35109) a7421dc7d2f0659a016092db6fc154526c8734b3 fix(session): point no-FTS5 warning at the supported install 4fa20f9a8bd9b2133cde56cf99516e38195ef4bd fix(install): ensure the uv-managed Python ships SQLite FTS5 97ecfa0fc487322aa7d0dc38be323eb34fd070ef fix(session): extend no-FTS5 degradation to the trigram CJK index 5ad2b4c6dab78e6e5522c8fc02bcbb89a555f47e fix(session): degrade gracefully when SQLite lacks FTS5 860cf28dabbaf93459a778a835edbc3663e381c5 docs: clarify compression threshold is derived from the main model's context window (#35099) da6646a23bdd09727b360da92ccea6471c5476a0 fix(merge): restore contracts caught by main-target CI fb0ab27649bac911bec4330d29cf4376d75a2552 fix(agent): register explainer config key + shorten footer prefix de6d6023d7486dcaa757037f2e3ba13985302aca test(run_agent): align test_dict_tool_call_args with explainer suffix 59b0ea98c8956a2fd1e875a673423d30175b7f9b fix(agent): explain abnormal turn endings instead of blank/partial reply 897f9533ed511345d0a729af507abdb2308cfbcb fix: keep CLI context display in sync with preflight token estimate (#35079) 9d4c81130a39f4a725b8301610d52c7cbff06fc6 fix(gateway): name what the /status token number actually is 2259c15e4d6f80d026d555c1c4b7019581283a82 fix(gateway): clarify status session usage label a460b905f6b75c00afb257be6066991d4f052067 fix(session): extend no-FTS5 degradation to the trigram CJK index 9914c8f3f737c1d8c151dd2f95fcd15a18526654 fix(session): degrade gracefully when SQLite lacks FTS5 11c3399b819de785241980e3c859b7f840c4c3f5 chore(deps): relax setuptools dev pin to >=61.0,<83 range 45bc65abbe4767b327cea3b44300a25e5e7d97aa fix(gateway): drop outbound silence-narration messages pre-send 9dbc3722aeb3fba31adfa181c4b05049d8c997bf test(compression): fix StopIteration in large-rough-growth preflight test e38b0b55d12cfa39a6ac71d553d224c0711856f2 fix(compression): avoid repeat preflight compaction from rough estimates 04de307d62277998ee8e52dfa4da59b539917721 fix(cli): repaint input area after inline /steer and /model submit (#34839) ca3428fe692efe482fc382957eb8b3343431e487 fix(merge): keep remaining gateway footgun suppressions inline bfa298555341d1e2bd40f9e55078a19cffeeec9e fix(merge): keep windows-footgun suppressions inline 8b1b9146c4ef60517ceb5c10025c8c4406a54c2b fix(desktop): stop completed-message layout shift while streaming 815f171f373547c3ce1b8b96c2acef019708870c fix(desktop): stop streaming caret from shifting layout on completion 5e7a7f6a381b79d7eb3fe2edb73435b1a3b5092a fix(desktop): resolve PortableGit for update checks + reserve titlebar tools space 8f29ad23c2d2ee81bfc186af0f59f4c100fa90be feat(desktop): live elapsed timer on install bootstrap steps b86043834f2167559d6527762475bf8fcd445853 Merge origin/main into bb/gui bcc83010006c7059ee4d0be63fe74afc74867625 Inspired by Claude Code: /compress here [N] — boundary-aware 'summarize up to here' (#35048) 54aa4db1de76a7c4bb02c8a7f7411727384b8fea fix(cli): remove Hermes-managed node/npm/npx symlinks on uninstall 2062a84000a666c449b9fb7768a4b4e4718e2c88 fix(auxiliary): stop capping output with max_tokens by default (#34530) (#34845) f9daa4a41d6394663fe4acb8888ebf723b91ca9b fix(deps): declare setuptools in dev extra for packaging tests (#34851) de8fed32fdbffcfad4268b879845b6baaba052a0 feat(desktop): lead onboarding with Nous Portal + fix fresh-install detection (#34970) 9ee6f7be360a7b83dcc6710e20bd2725e3fc96d1 chore(deps): sync uv.lock for setuptools dev dependency 52524c7aed54a3473d5608c5668c5b281e7714eb fix(packaging): add setuptools to dev extra so packaging test collects 689ef5e233980f5d5a32080e959f44c8991dd03a feat(cli): warn on unsupported pip installs + fix stale update-check cache (#34491) (#34846) cec9df17caf1834659f25c3d2a531e92b36fcb55 test(packaging): skip packaging-metadata tests when setuptools absent bb5082571671739afe336c1e7998ceeb55df3627 chore(release): map annguyenNous to AUTHOR_MAP 9f5afc7636246320dc3e8fd4f9d5aef50fbadcfb fix(mcp): widen isinstance check to BaseException for CancelledError 4fd8521e44e920fbf545b408ea8727423436cad4 test(tui-gateway): isolate completion_queue in poller requeue test edfdc776649cd50637d8aa3a35b584c4458416ef fix(cli): resume the selected chat when a bare number follows /resume 8f2631dc97edbcd3806eca3d09700c4cfcbbdfa7 fix(deps): declare setuptools in dev extra for packaging tests 3a2c03061ce912ff7421286c8197f844b63bbefb fix(stt,tts): restore mistralai — 2.4.8 is clean, ban lifted (#34841) 781604ce4c826ec06b69a0bde703ab935308893d fix(gateway): unify MEDIA: extraction extension set + close the unknown-ext black hole (#34517) (#34844) 0dc0c5ea6be051f33d287a02f274b913cbc7cb00 chore: add AUTHOR_MAP entry for sweetcornna 3845d86b9330d8952fc1e9534d438f62ad1d53e5 fix(cron): restore jobs.json emptied by config migration on update d473e7c9385e04c975b32d2d2cde3a02ba7d4f47 fix(cron): exclude jobs.json registry from disk-cleanup pattern 696037587f8a9acea9dafc11bf2a4e80905fd35f docs: phragg was here 91b174038c7e2bf6cde056da05f8f90673e8c87a fix(feishu): bound _chat_locks with LRU eviction (#34836) 8055d0f09246555d9a7d9b95295def612e500c70 test(ntfy): cover echo-tag filter; tag standalone send path 9405cdc8dd0347fee65b554e3aba0d2eab7a7b7f fix(ntfy): prevent echo loop by tagging outgoing messages 08c0b22417a80874032cae4a6d9e43d77d55f89a fix(gateway): scope tool-result MEDIA scan to current turn 38c4f8c3717518e81bc64765ab80f3192f6a113a test(gateway): update system-unit cwd assertion to HERMES_HOME anchor a1cb5fa2c7cd5239a4909261888453d97086986d fix(gateway): anchor service WorkingDirectory at HERMES_HOME, not the source checkout 45b00bb49aa3c27a8838cdaa8673133f0a89db82 fix(packaging): ship hermes_cli subpackages in wheel (#34811) 8836b3a113f8b8781a1935217f008fe67ae8e09f fix(cli): widen Windows .bat wrapper fix to custom-name alias path 6312dd8c3a3d2da2c5276c652ea4a21df29ddf47 fix(cli): create .bat wrapper on Windows instead of POSIX shell script 30a0d5bc9e0cb43e9230704c4c650b545e6a548a chore(release): map zapabob author email aa283d1e4f45731087653bbf7c057761c517cf28 fix(model): isolate custom provider picker credentials 2fc2280e63964ad96419f1d532a308eb034d42db fix(cli): clarify panel clips choices off-screen on short terminals (#34808) 27a2c4f36ff323e5edc300496d001e28a0c35678 fix(mcp): stop reporting false OAuth success when no token was obtained (#34807) 1cb850b674796a53d6b3b669967b04a07e89a237 fix(api_server): emit per-turn transcript on run.completed (#34703) (#34804) d0165b803164fe4eb4e20ae1d68ac892908cad73 Revert "feat(skills): integrate NVIDIA/skills as a trusted skills hub tap" 1f792a803c4e646198a1a9a896b1823051bc7818 Revert "feat(skills): categorize tap skills from skills.sh.json grouping sidecar" b6ed3913d241b456d16f6b2d5a5d75a60c80aa51 feat(skills): categorize tap skills from skills.sh.json grouping sidecar 4de8009ce424ff85d79e7cca63dd1aaede44a9fd feat(skills): integrate NVIDIA/skills as a trusted skills hub tap 1596bb287ea41a72b9807422115548a5247a0b58 fix(dashboard): chat tab works in gated (OAuth) mode (#34793) 90b3c54de97267015aa3b65d7330edd3f3c01f91 fix: drain thread no longer crashes on fd-less stdout streams (#34789) 5641ae646997e61a7c88a5f66491f301ed876fa9 chore(release): add AUTHOR_MAP entries for Bucket-1 docs salvage contributors 549a69a925a799001cab63a4244b8e486c8c2ab4 docs(curator): align 'agent-created' definition with actual provenance semantics 3f0d44af8ae380996057b620afeae258af830634 docs: replace invalid 'hermes config get ' with 'hermes config show' eff4626747ae8a32bbda192883121c6c62ca18fb fix(docs): add baseUrl prefix to SVG image paths in sessions and CLI pages 175885218e82f99fb3cb58335640b7d4f4b7c2f8 fix(docs): align fallback provider config examples 119390a2a1eeb47a9b59d29e4158cfd31ae63e1f docs(config): deprecate MESSAGING_CWD guidance 3625dbb8442c357b1995e9fa750498dd697ba38b docs(security): update redaction skill source aef04b2b537fbd37b465a4dccc45096af5e73229 docs(security): fix secret redaction default docs a2d3cff53feb060eec3115fe3fec1e5c81bca8c3 docs(cli): refine update gateway restart wording ee0a9bf7c702d6369d03a9d55b4c3e93f52b748a docs(cli): align hermes update flags b922e3ff93c457e6079aea8637ffdc7a15dc15b8 docs(prompt): align precedence docs with system prompt runtime 053969fd533a2aea9fe402cb441b531164003f6d Correct URL format for simplex-chat download 988cf1743be74e939241e9cbbb7695bda0fcc606 fix(docs): replace channel link with actual playlist URL in quickstart 03bdeaa87697dbfc12d3733aa904a2b3a85b4653 docs: fix BROWSERBASE_SESSION_TIMEOUT unit (ms → seconds) d86710528a0245e2638a801f46551dad35230d9b docs(google-workspace): fix dead gws CLI link to googleworkspace/cli 6891e05e78b67beac3ef4f2f5acbdbd24f4e9e7b docs: fix session recap image baseUrl 0673638560a43b1affce9ceecdc60c2758aae7c0 fix(docs): correct GitHub org links in memory-providers.md ae9dfa510e668552a804811d18017d1ad71ce157 docs: fix separate typo; hyphenate built-in trust wording bc29596b6ca2f92d01d57df6d1566f5133de13ae docs: document video gen on the Nous Tool Gateway 7379f175567bd0f1d833eec3a3599d0665b2a491 fix(gateway): only fire planned-stop watcher for self-targeting markers + fix Windows consume (#34749) 0563ab0652218d62e09905893f78ac603d92b6d1 fix(test): add fal_client.submit stub to surface matrix test e46e4bcf470a893f672353c5a53c787a1f3759e1 fix(video_gen): parse duration suffix in success_response 3183b2e28cd45d6bd77a9edd15b1e61a2dc5755f fix(video_gen): veo3.1 duration format and 4k resolution a4c18f65d45dbaa80a9f86241fd63ed4c55efce4 feat(video_gen): wire Nous subscription override into hermes tools UX b6294ea9f197325496a326c35316293095eb3768 test(video_gen): cover gateway decision matrix gaps and 4xx error path d04b3c193e130cc5b78fed8457bfa22e3b396d39 feat(video_gen): route FAL video gen through managed Nous gateway 5cd0673217d4f83832186a16bc9a449d23d1e58f ci: harden supply-chain gate jobs against changes-job failure 6bc309baf2063a9b04d463f21e3d20dc6fc3c043 ci: ensure required checks always report status 6928692cec3260b21e5574099c41034827c1c59e Merge pull request #33773 from dvir-pashut/fix/nix-full-drop-stale-vercel-group aacd556bf3ec2798b522fc4295cc1618d2a963db change(ci): build nix devShell in ci 999a5b5e0710f322678c5c76c230ea6af495797c change: add `build/` subdir to .gitignore 77a1650c78a4cb1813d8a81fa1da40a15b6a3ec5 chore: bump version to v0.15.2 (2026.5.29.2) 827f7f07825be57108cbea18325e8f5e9fb5d2f2 fix(packaging): ship bundled plugin.yaml manifests in wheel and sdist 75cd420b3ba1b83185020c6d4506d7cc53b12e2b docs(skills): move antigravity-cli to autonomous-ai-agents in catalog + sidebar 78d7fa1b5c0771eaebeea8c91c999482f5aef11c refactor(skills/antigravity-cli): move to autonomous-ai-agents (it's an AI agent CLI) 904c0b479b60649f9f92cd8a3988da625e8ca1d8 refactor(state): return FTS index count from vacuum() 38695254f851844bb16f75767aa5e47c6ea32da1 perf(state): merge FTS5 segments on VACUUM + add 'hermes sessions optimize' 2159d2a72964865d047b1b46f6347be1e2a74e9f docs(credential-pools): document immediate rotation on usage-limit 429 (#34580) 0dba60f73b392a9bd63b071aa769078cc5dee84c docs(skills): regen catalog + sidebar for optional antigravity-cli skill 632a7088a32a9dd79649469b62d792c5d0e2ab3a chore(skills/antigravity-cli): make optional, frame through Hermes tools, tighten frontmatter 1bba5f27ab0cfec9868b3f363a73809a3da4fc53 feat(skills): add antigravity-cli operator skill b1bde771223d97f7d80e7f80e783fd06ab994a31 docs(code-execution): document HERMES_* env narrowing + passthrough workaround d6f2bdabda4b4c91df2f6ea0fe1dab4ba1f75a3b docs(skills): regen catalog + sidebar for optional grok skill 99ddba94edee4c5a4a6a8ee2ca7c5c8b77582b4a chore(skills/grok): make optional + tighten SKILL.md to modern format 10cd4138cc66788f82908392a0c02c9ddb7cd723 feat(skills): add grok skill for xAI Grok Build CLI 5e7c2ffa9ff5c8280a8fd8e3cbf5605be409fcf3 chore(models): gemini-3.5-flash replaces gemini-3-flash-preview in OpenRouter + Nous lists (#34581) 1c53d39eaaf2fc57a7fb5039911e28d07ad71cb1 test: deflake process-registry kill + PTY resize tests 6a2e3c2d269f0fbef2a38beeb858f3abfe8f2d00 fix(gateway): guard adapter-trust check against bare GatewayRunner in tests fd09b2c55e55f7e16805b1b6abaf4a41bd1b8f96 fix(gateway): trust adapter-owned access policy over env default-deny (#34515) ddaf2f671226a97aea9d5cb32ae011186ce0f457 style: restore PEP8 blank-line separation after dead-code removal dc235e93cbfe1354cd2924c9da13791543ee3cc7 chore: remove dead code — 28 unused functions/classes across 16 files 0aa9f6acfa1861bf0c846a35d22abd40669431fc docs(nav): wire multi-profile-gateways guide into sidebar 0c0a905011a61aa869a750caebd1488e0e83a65a docs(gateway): add multi-profile gateways operations guide e4b9532c1827e3c51ca03e6e35512d2cade4d905 feat: embedder environment-hint hook for the system prompt (#34574) c0b17b3c0cb15fa92bd348162e6bc58d6d6336cd docs(weixin): clarify allowed users setup 2520c9ad68af3b1760f5646936fdc86d741b6f74 docs(skills): clarify Reminders alarm timing 62e81b2d9b30f2a4c882f57732b5e213b6250c42 docs(windows): add WSL desktop shortcut guide fe7e0a8c1d9913d9cc54e71ec0748f046e5b6bfc docs(feishu): add permission scopes, event subscription, and publish steps 6e179c44b16d0149f5fa014be29490aff15a6b20 fix(web): ensure plugin discovery before web_*_tool registry lookups 58e1b04665155ac4d312f075945620db11993df7 chore(release): map tillfalko to GitHub login for PR #29987 salvage c77a697fa4f3a5bc839bf569d6405489b0301c09 refactor(vision): consolidate native fast-path gate into one shared helper c3f28c651d59de1a2fdb9220cf0509b21cd25c9a docs(browser): update browser_vision tool description for native vision routing 2402ec5e7b251d115efdc24c231463f33b587902 test: extend test coverage to native image routing f8b8dffccf48b1abfad68bf4fb1521a37ff1a53d fix(browser): add native image support to browser_vision and respect supports_vision f05353397d036a1d072f7e0230e6850f1e453efd fix(vision): respect supports_vision in vision_analyze 784d8dd2c24ed00e43e4b1e18660d1fc30fd1216 fix(matrix): fail-closed approval reaction auth when MATRIX_ALLOWED_USERS is empty 109a49bb0373b346d7d2645298034d26defbcae3 fix(yuanbao): skip resource resolve on cache hits 3171845479f459ed95d052770b35b38254d4a71a fix(code-exec): make dropped HERMES_* env vars diagnosable in sandbox scrub 4bdae3477139129ac0e4774bc4d81c1cc5de0ae2 test(code-exec): regression suite for the approval-bypass cluster 655090b3d337f212dd9484ca22ee6881d1c8179f feat(gateway): warn at startup on manual approvals with no risk assessor 1083977261ec96a3234851c74f2dada0eec20518 fix(code-exec): restore approval context in execute_code RPC threads + guard entry 21aeefe5fd1cbed15f6e8c479d3b100b091eae57 fix(code-exec): propagate agent-turn context into tool worker threads a22c250001c2835aaa406480d0d378fcb5420237 refactor(auth): remove vestigial Nous min_key_ttl/inference_auth_mode params 95cf8f9842d7a368afe183dd5ae0ec138d36d172 refactor(auth): drop weak JWT-shape fallback in auxiliary _nous_api_key 4e4984a11a417c684658e781e5609aa86975f64f test(auth): update nous jwt-only expectations 7e958dafc2185678532137314596083b9f588c68 fix(auth): address Nous JWT fallback review 41ff6e59371faca2b4f0599c634dbba1475a659b refactor(auth): Disable Nous legacy session key fallback a87f0a82a52178b05ff7405e9af7137e20a70bbf test(tool-search): redact secrets from harness transcripts + console 18c9e8910685fefee2fb5f67e7fdd1cb37b67750 test: update _invoke_tool dispatch assertion for new toolset-scope kwargs 17097761207d65a385362696ff1698075e0b0c7a test(tool-search): add live A/B harness, drop checked-in transcripts 7427b9d5812f3bd4deb47340ab64ef86e605c27e fix(tool-search): scope bridge catalog + dispatch to the session's toolsets 369075dc95bb998fdf493ef0f97dfa2d19c43d82 feat(tools): progressive tool disclosure for MCP and plugin tools 73d73f1f0d38ac856bc114b16c659830acdc2f6e fix(codex): relax no-byte TTFB watchdog default from 12s to 120s 6bebab4761e853010ad32d48e9d3aacebd72ca46 fix(security): narrow Bedrock subprocess strip to inference bearer token only 95b5b72404cb9fea277fef572f0eaa0c1fec720b fix(security): block AWS SDK creds from subprocess env db2ce9e7d2af89b2df192c34e10a3b232c6a1fb7 fix(compression): fail open when lock subsystem is missing (version skew) (#34475) e28a668b40d3888fb69a624ef5fcb4dd59c9e5ff fix(gateway): diagnosable MEDIA rejections + canonical cache roots + null-path guard 2765b02021c1e6eb743e2ce2eb359fc66a5aa89e fix(packaging): ship bundled plugin.yaml manifests in wheel and sdist c01a2df0a322d958a37d013ff87bb5f1ac9d447f fix(auth): don't launch a text-mode browser inside the terminal for OAuth (#34479) f247686c4250a3b6929beeff9e67bed7217953f1 feat(yuanbao): cache resolved media resources by resourceId f32b66c758ef16d96bedcdce62ed6a397e741103 fix: improve plugins list usability c692000a57df41c953967f37eb34ed9b593f233c docs(xai-oauth): mirror bare-code paste note to the primary guide (#33917) 2410e1139547abcd5a6705d2a5f3297633f454ff docs(xai-oauth): note bare-code manual-paste from #33880 bde66ef37a3efff5149d6e59f83c987ae523eb57 docs(egress): align user + dev docs with iron-proxy v0.39 actual behavior 0384398c65644c48aa1ed3484ecc5a56075a4851 chore(release): map blackpilledsoftware-prog email to GitHub login 26b83a5f5f0acf32599f6449b685bec5a136e3d8 fix(cli): ignore terminal focus reports (salvage of #16780) c1485d52e3ec9fa9a5ce9fcee2adea93d78624b5 chore(release): add moikapy AUTHOR_MAP for PR #31527 salvage f6a2ba62611dd92c659df683060174d14425913a fix(auxiliary): detect xAI OAuth 403 bad-credentials as auth error bc736ff5437bf73c9a762bd06a771408dbce711c test(model-catalog): use exact URL equality in fallback tests f2d88c820c841e9b2192e0158747ae9190745a23 fix(model-catalog): fall through to raw.github when Vercel 403s; swap step-3.5-flash for step-3.7-flash on OpenRouter+Nous 8d5728165093ec4fda8faaaf4d99ab9dbc40ef2e chore: add AUTHOR_MAP entry for Interstellar-code 9d4fda9952019fa7026232b76296d9277720457a feat(kanban): add POST /runs/{run_id}/terminate endpoint 7d10105918bded04b6e475531240f5cfe2e2b704 test(kanban): update iteration-exhaustion tests for #29747 gap 2 592a4ffb6bf046a7d9d473a15ad9972e025718c1 fix(kanban): close three blocked/iteration-exhausted handling gaps (#29747) bc31ee5cf8d5635271505fd01303609b3336b8cf fix(kanban): bridge worker runtime activity to board heartbeat (#31752) 40217aa1946b26c5a08f466324b1bcd8f18bccc7 fix(kanban): tell workers not to use clarify; route to kanban_block instead (#32167) bebf1b7e01a6a084a3e46bb2d679dee65af83048 fix(desktop): branch-pin the CLI manual-update command card 3d8c285054448ecef0a5c887e5ac1b816e6fe6d2 update test 905ce58a1287735f64e0c99b39ab6257f1f605ab fix(egress): align proxy.yaml with iron-proxy v0.39 actual schema + propagate handler exit codes 86a389fee29796a079599d479229a68f5e845671 fix(credential-pool): STATUS_DEAD for terminal OAuth failures (#32849) (#34412) 477f31eaf98242f449647c82b492f16c9b1a8d36 fix(security): extend /proc read block to auxv and pagemap da4a74e63622c5f6e83a41f951a353aa241b9121 fix(security): extend /proc read block to smaps, smaps_rollup, numa_maps, mem ae6817f7f735735d8b6bf928c672002df0fca07a fix(kanban): add --reason flag to unblock for symmetry with block (#30897) cd65d1d2872da92e1a34cb148972932617ea2792 test(tool-search): add live end-to-end harness 4126da65ae80643618c067ea5aca023561af8c6d fix(security): add bws_cache.json to file_safety read guard 71ae98b792b72bfbf2b60f01f9edda6d97b75f56 chore(release): map seppe@fushia.be to GitHub login cf8862cfa316626ab4e673b9e04e0105a937f9bd fix: preserve Ctrl+J newlines in Ghostty 1386a7e4789c9b886395804e8475a4252217e4ac fix(xai-sanitize): deepcopy tools_for_api before in-place mutation (#27907) db96fc60d0d3dc3f9e95dc6541d8edcccb2f2171 fix(gateway): keep Telegram topic bindings aligned with compression children (#34409) 1653a04f70585a08cd10775a6c340ccb44ecf0fa fix(gui): pin /api/hermes/update to the current branch ec7736f8a7fc867405e33ca3356a8bfba423dff9 fix(docker): auto-join Docker socket group for docker-in-docker backend 48083211ef606f3305c09df576514ac99bc7f594 fix(docker): accept PUID/PGID as aliases for HERMES_UID/HERMES_GID (#25872) (#34401) 48db64c846a9d94960b2ae841dae02f053f8aee8 update test ce31ec09b98882b9ac366d8a6fcd9dc8c8194172 fix(desktop): show 'hermes update' guidance for CLI installs instead of dead-end error a0fc3df878e5d99125d3bbcbaeda6a4966e192c1 fix(browser): rewrite Camofox Docker loopback URLs (#25541) 006136c4ab3af45beba85ada16099819bef341fe update test f61fd59b62655f6ee41e372af58e6ef640b85454 docs(run_agent): clarify why F401 re-exports stay 00b8204cf4109ed6ae481ecdfc2dbf99c9a8303e fix: restore side-effect imports in test files (test_kanban_tools, test_command_guards) e371bf5d6826cb929587f1fb1d00a4618ea4a56c fix: re-export pruned names for tests that mock.patch or from-import them 66827f8947f08686b31b3952e768772423cefbcf chore: prune unused imports and duplicate import redefinitions a4d8f0f62a7e91650f542baf477779188f658917 feat(prompt): universal task-completion guidance + local Python toolchain probe (#34340) 75d2c081c9abd60333694b13f1d753c3a8361f61 fix(logging): recover gateway.log handler from external rotation (#34349) 25488de4ba469f4a21d5f2ca25ce2d33ecce0027 fix(installer): stamp Hermes icon onto Hermes.exe via rcedit (no winCodeSign) a30480bd2b15ffd942ae3a24f1f993f575c89af2 fix(compression): prevent session-id fork from concurrent compressions (#34351) aeebe1afa7777d0bca8627796cc75655c3ff87de test update 28bb7e0a8e8d9218d593eea6c8b5941d225814a6 fix(web): bridge Tailwind --font-sans to --theme-font-sans (#20406) 100536134cd9eb798f69fc9e928a604062990f8d refactor(gateway): generalize topic recovery via adapter hook 5407d25599e55ba5d4c5d12f9dca793cfb6220a6 Fix Telegram DM topic text batch keying 71d64880d961028d37b6af6a3b639f00b22f9ba9 fix(installer): pass --branch to hermes update in the --update flow 90f0f32eae0e94323377db0b4dd28a54292c6c2a docs(security): add network egress isolation guide for Docker deployments (#26385) 40fa0c1d19d5c24955e9b9c6b1f3c6c625d1f81a fix(docker): skip credential/skills/cache mounts when source is invalid (#24490) (#34331) be663d36a5664100a462f23f4d6f974568a15df6 test update 69b74c15a324fcac460b5a143e5662036dae6387 fix(kanban): CLI dispatch honors max_in_progress/max_spawn from config; swap missing 'avoid-ai-writing' skill for bundled humanizer (#33488, #29415) (#34337) 8cf6b3da9d157bfced382cf139a9613eff90c006 fix(opencode-go): cap mimo-v2.5-pro max_tokens at 131072 6381e704489428aab4b1615472ec90faf7bd86a9 feat(installer): drive in-app updates through the Tauri installer bfecfabd0f16b59cd532f82d7e6078e8e4d00116 Revert "feat(skills): integrate NVIDIA/skills as a trusted skills hub tap" 44df52005a1b59ae2c8439c4e68e7696851b7035 fix(tools): guard Path.home() against PermissionError in has_direct_modal_credentials (#33528) 9992e32db37a020d1830a29f01a39625ecd369df feat(skills): integrate NVIDIA/skills as a trusted skills hub tap 042c1d6bb0543c543ed1a81f009aab4569b0405d test: cover fallback dropped-turn handoff 6dc068ef044a6c73712369242a45005890d952b1 fix: broaden deterministic compression fallback coverage e785c0ad70c4b510888e64303bd3e6b946e2d33c fix: preserve context when summary generation fails c834624f7de8136b0010f0771ee7a89dc5e92942 fix(voice): honor PIPEWIRE_REMOTE in PortAudio fallback checks (#33473) 54bf798765d3d529978dd04e3bfc95d93d6504eb approval: add docker restart/stop/kill to DANGEROUS_PATTERNS (#33438) 593e4b435ea5bb5ff73ee8972977388911c062ec Add iputils-ping (ping) to Docker image (#32015) f24346c011a97a87054821e7fe5f2d579de4037c feat(hooks): cross-process delivery via built-in forwarder + dashboard ingest endpoint a618789dbabf396a00fb061a491f54e12f536a45 fix(dashboard-auth): share /api/* public allowlist between legacy and OAuth gates 3b6347af158e125b118068ac4af55b8d4ceb6247 feat(kanban): default_assignee fallback + per-profile concurrency cap (#27145, #21582) (#34244) 299b9dba672e7511e98687ce810f15b71465df6f feat(hooks): extend HookRegistry with programmatic registration, sync emit, and tui:* mirror 42612aa350a389b577acd57f5b7c071f8ef3eed3 docs(docker): refresh user-guide page for s6-overlay reality 3c6e70aef18f59f1d67b7e2be83ab51be7a35673 docs(docker): document new persist-across-processes contract and orphan reaper (#20561) 2f0f03c40d133d568e786d45275ad6a1bffdebd7 fix(docker): cleanup_vm() default honors persist mode (don't kill container on session close) 5c2170a7c62b9cfd18431de78b462116df57d199 fix(docker): persist-mode cleanup is no-op; add force_remove kwarg (#20561) d77d877665bab7a6035140d142d5670cc05ad15d fix(docker): startup orphan reaper for crashed-process containers ac8e238bc87ffd37c5c04d0f401d2aab697068b3 fix(docker): reuse containers across processes + fix cleanup leaks 8d129d013bae4293c9232a36ec4b8e4f184dbab0 fix(docker): tag containers with hermes-agent labels for identification 300140e006bd1e356db69772b5ba35914b9d4008 test(tui_gateway): stop reloading server module in fixture teardown (#34217) e71a2bd11b733f3be7cf99deafde0066c343d462 chore: release v0.15.1 (2026.5.29) (#34222) 769ee86cd2b346f6bffedd84ca9067fde2790eeb feat(kanban): attach images referenced in task bodies to worker vision (#34210) 1b1e30510a5d441f02a49c20db627142e9fa0a6d test(docker): repair dashboard tests broken by the insecure-opt-in fix f3acdd94fef7f61529fa0daf06d465f31daca06a Merge pull request #30698 from NousResearch/refactor/use-ds-primitives 78a54d2c00f57c3b51218ec053c088e3c1cb3ad8 fix(skills-page): source pills and category sidebar collapsed to All only (#34194) c0b3b73bf41f644cef9723b374a56a195a9d242b fix(codex): surface error code in Responses 'failed' status errors e7c99651fb608a2be1692a65c75bb9e68793baaf fix(mcp): resolve bare npx/npm/node against /usr/local/bin fb512536209fd6529c8c921ca466249b1a22d46b docker: opt in to dashboard --insecure via env var, never derive from bind host 1ab55e000b9ce7014301aae6515c302d13cff686 build: expose hermes_events in py-modules so plugins can import it ef009a987a52f7be0ea03499d4b3ff9d2a129bd6 docs(reference): document --no-supervise / HERMES_GATEWAY_NO_SUPERVISE from #33583 (#33751) 130396c6581f42f6d4c2e3c8baf89a7320330c68 ci(docker): avoid gha cache on arm64 PR builds 952ce45bf0a567819bc06c1fd6269d34ccc472d8 phase 5: cross-process bridge integration tests 4872bef3bd0a76a7cbcc932686a6ab677c930447 phase 4: cross-process bridges + dashboard ingestion 0244207b3650fa022a77546620b47f4d489a5836 phase 3: publishers — wire _emit() and HookRegistry.emit() to hermes_events 315293e9fb1ca513bc853d32c24bd4ab40a90df7 phase 2: bus unit tests (tests/test_hermes_events.py) 2316d2a2258fa53b2ad2f834d30c8a13127a2b54 phase 1: hermes_events.py — generic plugin event bus a5c1f925b59a5a3588033aa823936ae87f55072a fix(web): stop /api/auth/me 401 from triggering a reload loop 11d93096b39e2956deae7dbf5b2bdb67a2059521 Merge pull request #34097 from kshitijk4poor/salvage/memori-trace-messages d464d08a5f7c689704d9d348c9d5bae9f3baa5ba chore: add devwdave to AUTHOR_MAP 5a95fb2e14b6e77e23d56bca31927dfa63f7a2c4 feat: expose completed-turn message context to memory providers 0acb7f4583cdd9a628483e58e1f71092dc703e84 fix(nix): update hermes-web npmDepsHash for @nous-research/ui 0.18.2 a3cd974ee7cc20ce937e375a2513649f1bf99b12 chore(web): bump @nous-research/ui to 0.18.2 ea5a6c216b99319353bddc99b2a1a0c1b2241b6d ci(deploy): allow workflow_dispatch to also trigger Vercel deploy (#34081) 4df62d239e38bf8c212a595721c9c01e176f6c3a docs(hindsight): correct recall_types scope — tool path is also narrowed 490b3e76b1385c3f446c01750d9b17bf2c571971 feat(hindsight): default recall_types to observation only dc9783703b1d26b3c16f726d601c2e238f73ffc8 perf(state): merge FTS5 segments on VACUUM + add 'hermes sessions optimize' 321ce94e25a7ed3ef266371c115ac100297c4c3b test: update non-minimax overflow test to match new keep-context behavior c5e496e1c059d9a7f363182904665fd5af46997e chore: map yanghongda@jackyun.com -> yangguangjin in AUTHOR_MAP 7a3c38d0b724dac729b1a295c1612a26634279af fix: stop probe stepdown without provider context limit 5cbc3fbdcc13c3a5d6d0f565a1d1929d0e5e47ff fix(cli): /yolo in chat must enable session bypass, not just set env var f30db14ceda4f3a16afbed479c61ac52cdc94651 fix(kanban): SIGTERM on worker must terminate the process (#28181) 3a9bc9d88a847feb97f86e5cde6588503871e3b8 fix(model picker): unify /model and `hermes model` lists, add disk cache (#33867) 5f66c364708789584265a7a1208c426859563895 fix(redact): pass web URLs through unchanged (#34029) 7a8589e782427398f6acfa62d5078a17a9b20286 fix(gateway): default media-delivery validation to denylist-only, restore .md delivery (#34022) 7050c052e38b1ea6f8785e8f38b29127d6d7b283 fix(skills): pull full skills.sh catalog via sitemap (858 → 19,932) (#34025) 102eb4adc02184a56560a3b31194a114f53eeeea fix(nix): update hermes-web npmDepsHash for bumped @nous-research/ui b1d3ead7fbb97003a60a55ac8ddd8fd099484665 docs: tweak v0.15.0 release notes (#34037) c661fefa08610ba713244038a883b59d7c0e3a13 Merge remote-tracking branch 'origin/main' into refactor/use-ds-primitives b9e8b331cee93eeccae16bbd3a11514b62936b0f docs(release): strip Chat GUI mentions from v0.15.0 notes fe5c8ec4ad50221f1c11495110a59563044c3986 fix(dashboard): auto-reload SPA on stale-token 401 in loopback mode (#33861) 0c859a1c044c77d24bcc8832f5a27d8b4a50fab7 chore: release v0.15.0 (2026.5.28) (#34008) 1a747957352ca33cb2d113d3c7d552aafbf62b22 feat: add claude-opus-4.8 and claude-opus-4.8-fast (#34003) a4cfc8b7408c8b41ddc9b316106afb2cc0543370 feat(install.ps1): write .hermes-bootstrap-complete marker at end of install 060c4f64a83295bbed24daab50efc4d2280c7f8f fix(desktop): signAndEditExecutable=false to skip signtool path entirely 91bf5ee6b739b3fb7da3736a43d614df8c7a1829 fix(desktop): use no-op sign function instead of sign=null e8b9369a9d2df36139a5055cae3ed3c15691e03e feat(openrouter): pass session_id in extra_body for sticky routing 3387b8df580cc35b948a1d2a0932a706577419e6 fix(desktop): disable signtool via signtoolOptions.sign=null, drop dead winCodeSign pre-extract 3b29e65c1bb13eb0e7888a668057925e9b40770c fix(install.ps1): restore Initialize-ElectronBuilderCache (CSC env vars alone aren't enough) e2d69ce066cfa81f79b65ecc5753c0517dc50e44 fix(install.ps1): Stage-NodeDeps cross-process $HasNode + stream npm install output to bootstrap log 17edb1db2ba2bf3c0f29c2c3f22e33e4ad1ecf6e fix(installer): bump bootstrap-installer.log to capture stage transitions + every install.ps1 line d5fe4672771664574a4d25dadc0974c991a867b1 fix(install.ps1): tell electron-builder we're NOT signing instead of pre-extracting winCodeSign 0554ef1aa3a2e5818f292f76a676110239a5d34b fix(agent): fallback immediately on provider content-policy blocks (#33883) a82c88bac082c3942f830e7760111140baf35fc7 fix(xai-oauth): accept bare-code manual paste (state=None) (#26923) (#33880) c0d04694ea2af001ce885654403116153ae64a43 docs(email): clarify gateway vs Himalaya setup 67011cc0d76b7047320b2760e948b4e4488c24ca feat(agent): buffer retry/fallback status, surface only on terminal failure (#33816) e0572a6def17fa359e00691be76421eccb82b5ee fix(skills-hub): stop ellipsis-truncating the Identifier column (#33810) 5e1f793430ccab74808b9f7019e071ea3c638381 chore(web): remove web_crawl tool + provider crawl plumbing (#33824) b243afb68bf931ca17f9a7cd71034b02926f2821 fix(discord): skip backfill for auto-created threads and update test fakes 68ddd6b338b47209b41c7d3b613dff0536d9124e refactor(discord): inline backfill gate and document intent eafe11d4561181f008afd3598adcb3208fa09754 fix(gateway): backfill Discord thread context a1eaad2fc0bf30e6bf0abec1bcba508d12c37152 perf(skills-page): lazy-fetch the catalog instead of bundling 34MB into JS (#33809) 6f9182cb34fe2569d0006584bb3fd4cf5199bb4f fix(kanban): content-addressed corrupt-DB backup filename 432a691758083994a043a5698fa109f81648693d fix(update): stream + idle-kill `npm run build` so a stalled webui-build can't soft-brick the install (#33803) 78be458608cc39e3ca512f5888db1d51eb6d5b18 fix(patch): widen new_string \t/\r unescape to all match strategies (#33733) e9f3f2b34a59f418a151c210947d752f137d65aa fix(tools): unescape common sequences in new_string when escape_normalized matches 10ee4a729ba22c00718ca12d5192a52e56fb5a09 fix(gateway): drain on Windows `hermes gateway stop` so sessions survive restart (#33798) f8896dedc86d47404c49d7fb96f733dd7a866723 chore(release): map biser@bisko.be -> bisko in AUTHOR_MAP b5495db70117b45320066f4e2768e66382062fce fix(agent): re-pad reasoning_content on cross-provider fallback to require-side providers 9179396cb72a934d03b7f9917e3778dc6eeef99c fix(stream-consumer): only set _final_content_delivered when final response confirmed delivered a91b1c8b318ed56cda41d9043b237144facc0e96 fix(tirith): reject non-regular tar members during auto-install process 247b24b49fcec96ac8128dd90cad286e2f601110 chore(release): add AUTHOR_MAP entry for AdityaRajeshGadgil 031983bbf8bb05b535a20b7f69f456ed476df7b6 fix: limit pre-update state snapshots 8b6beaab5f8c825ad156ebcc0acd566e1673b7a2 docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) c7f7783e5ca56175049fe8fa2e42bdc86a464013 test(xai-proxy): regression coverage for #28932 429 handling 4ed482549f2652bb9ba0ee72380de5b4e632970b fix(xai-proxy): handle 429 rate-limit responses in proxy retry path aa3466063b8c5b5cd6b99d625469137d71d660c3 fix(android): reject unsafe tar members in psutil compatibility installer bb0ac5ced25b1ea5d329b57faa75cd67051e45ea chore(release): AUTHOR_MAP entry for vynxevainglory-ai 70abae8e3b4b674dea90ecfc020a4b882d8a1926 fix(kanban): show horizontal scrollbar instead of wrapping columns 538f0fa3394d3d29730616340560acb4c5becb87 fix(kanban): wrap columns into rows and fix vertical overflow 66265a0571347ce6c88f940d79869002b09af0ca fix(nix): drop stale "vercel" group from #full variant 9b5dae17a5c623af5f0331e10f7eb2a164b07f17 feat(context-engine): host contract for external context engines fb9f3a4ef9af8fc6ec24bf4ccce1b1db32520aaa fix(skills): pull full ClawHub catalog into the skills index (200 → 20k+) (#33748) 09a5cd808430b3fcb1ec232a3645d6c05038bb3e fix(auth): sync manual:device_code Codex pool entries on re-auth (#33744) 43abc51f661c9533dd50677100ee929057d22c4e fix(security): require source CIDR allowlisting for public msgraph webhook binds 986abb3cf7a99820cf6c8ba90a7064d46edf0d25 docs: drop stale Kimi/DeepSeek vision example (#33736) 87e5b2fae0daf5054110cc1f1dce912630831beb feat(mcp): support TLS client certificates (mTLS) for HTTP and SSE servers (#33721) 8595281f3ca9c77f957bc5e6dd3ea43874a2b3b9 fix: expose context engine tools with saved toolsets 1a9ef83147547dcd3ac1f59df32ed65d7e661ec4 fix(security): require API_SERVER_KEY before dispatching API server work 442a9203c012989824f9f1698abad92b2ec38034 Fix xAI OAuth timeout manual fallback 459d7694d348046d5598d1560ba276f47e5aef7f fix(agent): preload jiter native parser dc52b82d534ca1c8b57fbb000e023d6a40127964 test(auth): update entitlement CI expectations 1cf5e639b366d876f146c6358bb397247fcc6cff fix(auth): refresh Nous entitlement in tool menus 406901b27d5630a0cd7aa8273e83507455ad14f2 feat(auth) normalise the way in which we check whether a user has free/paid access to nous portal so we can expose behaviour and error messages accordingly. 0bf9b867cfb3a58d57b7b39cd696dd1ea5422783 fix(website): pin serialize-javascript and uuid via npm overrides c7e46f9f3dc9e11e596652701e3ba092f091f2e4 fix(install.ps1): pre-warm electron-builder winCodeSign cache + fix Stage-Desktop $HasNode false-skip 0a079f73212d43f6f5493a7f8d87f0deb82bdbfc fix(installer): pass -IncludeDesktop to manifest, surface launch errors, alias hermes desktop 53f21eb0ae6d033af91b6375bab4d12e8a1ae9a6 fix(config): preserve original .env file mode instead of unconditionally tightening to 0600 7b778db472b83ed8e6c5149c6442a99f155b7149 chore(release): map MoonRay305 contributor email for #32759 salvage 3ba896273851013c392d244c8a32a95177860a57 fix(kanban): add Windows init lock guard 90b6b3d18f0925da267dacee211418d2ecbd4d6f fix(kanban): harden sqlite connection concurrency 3ad46933d30b4580a9d18fb6877aa551ab7e24d8 docs(voice): use `uv pip install faster-whisper` in STT install hints (#29800) 8eedb50bce5d4f289112684e590a026300096935 feat(installer): Tauri bootstrap installer for first-time onboarding 80d782bc782d52d58350433ed3539da210464ce7 feat(install.ps1): add -IncludeDesktop switch + Stage-Desktop 4e702fe2d9c04168cdf7fff85dcc25a8a0fd361a test(ci): harden two flaky tests against CI noise (#33675) 875d930ac70589a337a3b30c2434da30a5be14d2 test(docker-update): stub subprocess.run in git-install regression guard b924b22a9d34408d9c030ea93049a22de0123e99 fix(docker): `hermes update` prints `docker pull` guidance instead of bogus git error 4a6f1863ac9043c84e255b91be9a7eedb8fd1c03 test: cover ci-unblocker production regressions 66489f38c7904aa9cf174fae4c52fc2f6fcebe99 fix(docker): bake build-time git SHA into the image ebe04c66cd940f38da974c5133de28dbd36823a1 fix(kanban): close kanban.db FD after every connect() in long-lived processes 12e817700cce307e5643f10f87ece01be18760ea fix(gateway): persist Nix wrapper env vars in generated systemd units 6d947e4d7826a9f470402de5d798e552224543e8 feat(image_gen/fal): add Krea 2 Medium + Large to FAL catalog (#33506) 10f13c3881a508643eb2797c045611a5861a4302 fix(web): allow mobile dashboard scrolling (#28051) (#28577) c9410b3462b2c14f981276385deae67398edd87c feat(web): add collapsible sidebar for the dashboard (#33421) c341a2d107182205d4092e66b0f428d6c35a6bcf fix(docker): align HOME for dashboard and s6 gateway services (#33481) 71b4a6b18e74cd18584135ae6626bda1f2dd8f49 fix(docker): install python-is-python3 so bare `python` resolves in containers aeb992d34374bf07f34811a3e8a11e623d1cc16b fix(docker): drop `docker exec` to hermes uid before invoking the CLI b34532319548708160f1ebccb525e9bb7436eb0b fix(docker): tee supervised gateway stdout to docker logs 19419a47d7f992113e8f2613d9a25041a37eb818 Merge origin/main into bb/gui 912e6e2274e171d33b698fb8287571c6358fe2d7 fix(tui): suppress mouse-residue leaks during Python launcher startup (#31213) a5d418bc5b0e0e6433d49f9cf54c7abad7309a22 Merge branch 'bb/gui' of github.com:NousResearch/hermes-agent into bb/gui 791f4e939dd7ac3eae2eed127b4fe3070b0858a0 fix(setup): drop shadowing inner importlib.util re-imports 7a15f0b1acbc1c2bfc0c408cf98f45887d330e8a fix(telegram): import Set for _dm_topic_chat_ids annotation 0927fb5584d8d56234b20310aa2ad55fa1fd5b33 feat(docker): auto-redirect `gateway run` to supervised mode inside s6 image a3df95e76d5fb3a4513aff70e38c8131bfc9797a fix(tui-gateway): restore _content_display_text helper lost in main merge cbf80ff71df6e13aeef2cc6e67b452e520d763a9 fix(tui_gateway): restore _content_display_text helper 02d26981d3d4ad50e142399b8476f59ad5953ff0 Merge origin/main into bb/gui 36c99af37af63c632cc617da74b244be906d48ad test(kanban): align two tests with recent kanban hardening c1435dc5fa80e87d0a7df7ede5453f9dcb130043 Port from cline/cline#10945 (concept): accept browser-pasted GitHub URLs in `hermes plugins install` 2d5dcfabc312d43f87a4f0f44c45f62cf24a09b2 test(kanban): update dispatcher tick counter for hoisted zombie reaper dc98314fbd4b8690fdeb07d6d73677c357f2a06d fix(kanban): skip redundant WAL pragma on already-WAL connections ffdc937c18106ac6872d68bb4b35b81fc7423a4a fix(kanban): hoist zombie reaper out of dispatch_once 99c19eb2feb61b2dea623dd93eff8107a2d17805 fix(kanban): add post-commit page_count invariant check to write_txn c002668ff0556f55ac4254f4bcf8d2408eb2cac0 fix(kanban): add grace period to detect_crashed_workers e83252dc46445270ccfa66b01e868a76c0b4857a fix(kanban): preserve original exception when write_txn rollback fails 5c49cd0ed060c7a515e48bff34aa1a4c7bab655c fix(state): never silently downgrade WAL to DELETE on transient EIO 6416dd5187d0e5e135698149c14ec66c7fc711ac fix(kanban): harden SQLite against torn-write corruption (secure_delete + cell_size_check + synchronous=FULL) 963d22cde6816eeed3d931211810969b175aa78b test(install): harden uv-python-path regression test against future drift 4efb40c3254b69974e7a53506d6cd59333efc5d6 fix(install): set world-readable uv python dirs for root FHS layout 0537e2600df1c78d5855ec7e873644fe2b2fcd80 fix(skills): atomic lock write + drop dead _validate_category_name ee80dfdea01f748eeebb8daf0e6b9bc0e9900266 fix: preserve skill packages during curator consolidation f040710d04c26ee7cd684bda763862c8e1be9188 fix: backfill official optional skill provenance a38e283395411517919b398a0d1076b72ca4a01e fix: preserve nested official skill install paths 53bdef57751a7658bbe4b962d6bb8d6c739ab97f test(cli): regression test for hermes update fork upstream sync (#26172) 6f2a2f157f7a565c07377370b6e3e12cba7cd2b2 fix: check upstream even when origin/main has no new commits e8955f222cecb6ed7ac3f0c541b9b5b02d22843f fix(codex): drop dead model slugs that HTTP 400 on ChatGPT Pro (#33424) 5deb384b53fc47c2b9821ba87dee89d778ee1cb7 chore(release): map donovan-yohan for #33263 salvage c94ad89818afd8981869161cd40998f4e7d72673 fix(kanban): retry corrupt-board dispatch after quarantine fc47b7285c4a2b5cd3ea4bb01ebbb9a7f04693e1 fix(codex): omit tools key from Codex Responses kwargs when no tools registered 8386f8445442b4a53a66d652fe18dae2f2090925 chore(release): map Brixyy for #33136 salvage dc9d677d59c40f8e943a036b3ea4d264fd53218a fix(agent): classify TypeError('NoneType ... not iterable') as retryable provider shape error 3476509f9781447e33104da172a8bd362af6a43c chore(release): map sanghyuk-seo-nexcube for #33383 salvage 283bb810e7211acc38171d3171bb6049ff6d4dba fix(agent): tolerate large codex stream prefill 486d632cc2d1d6e22bb50d22787e71cdcecfaeec fix(auxiliary): coerce None final.output to empty list in Codex aux adapter 9919caff4625b729f3ff53754ff7ecf7f683ca5a feat(image_gen): add Krea provider plugin (Krea 2 Medium + Large) (#33236) eccbbe4b1b91130cad382263b9004f0b0e9d37b5 chore(release): map adopted Honcho contributors c89393b7117c9f3528efa22827bf351cfbf6cf93 chore(honcho): trim peer-card fallback comment bcae3fcc4e0db772560ed64c59047503b1cb5629 fix(honcho): align user context peer perspective 1800a1c7963d98962416fa0d3999789e24f9d37a fix(honcho): align peer-card read and write paths 1a8e67076a0bef27262a11bbbaecf755f638aa19 fix(honcho): cover pinUserPeer + aiPeer edge cases in setup, clone, and gateway cache 939499beed4b7abc3776bb2211c47d43bf1044ed chore(honcho): trim PR-history narration from docs and tests 6feb2afd50cb7495cf614d4949412d457e46ce59 fix(honcho): plug pinPeerName transition gaps 58987cb8b12d5bd4afe7e9cca09c27d8dbbb11ab docs(honcho): document identity-mapping config + resolver ladder + deployment shapes 3cf5e8225d887b0044f2cd5af278e25f0eab8c85 refactor(honcho): accept pinUserPeer as backwards-compatible alias for pinPeerName 0bac8809919899d72a184a0c145bbbcb5700639a feat(honcho-setup): add deployment-shape step to identity-mapping wizard c03960decdd1aef668f7c8bb216dd8d5dd9c9db7 fix(honcho): include user_id in agent cache signature to prevent shared-thread peer contamination 00e683020443d628eb38e83a238359520e619319 fix(honcho): inherit identity-mapping config in cloned profile blocks 30b391ab366e065fa728390a7372268fcb8933d9 Avoid Honcho runtime peer collisions 382b1fc1b63002818608a720c8eaba5258f81b0a Cover Honcho runtime peer edge cases 2e3c6627ceacd8856db4803941094106112b695f Add Honcho runtime peer mapping 2e181602a17e559532fb71ff5979948ab162c199 fix(agent): isolate credential pool on provider fallback 414a5bc924ea94b96c46497b68ccfbc01faee406 fix(auth): fall back to global auth.json in _load_provider_state dd0d5d5a822876da813748af9d3961ec0bf6c0ab chore: add JohnC1009 to AUTHOR_MAP (#33351) 458a94e42568b332e8794ca8fbb8c8e1279160a3 fix(cli): keep destructive slash modal on Linux f0de3cd0a0dc516ffa1b755d3b5b93bf1f698522 fix(agent): roll back switch_model() state when client rebuild fails (#33228) 825948edab0ac295851974a7b483c310a27e19fa ci(docker): simplify tagging — push both :main and :latest on main push b4eea187d5650dee46de155c67f21d1b7b9150ef fix(xai-oauth): gate slash-enum strip on model name + add regression tests (#28490) a699de83ec6463b92e3cffbcb4bb2fff3a80e84b fix(xai-oauth): strip service_tier and add safety-net sanitization for slash enums 0325e18f3426b91d0213cc064cbe7355bf028690 fix(gateway): keep Telegram heartbeat + interim commentary on; edit heartbeat in place (#33187) 15fe7df17ab17df68e6f5573aa025da8d35c3474 ci(docker): simplify tagging — push both :main and :latest on main push 69dfcdcc15f71ba5ee243bc192365629b9b9b85c fix(auth): codex chat path falls back to credential_pool when singleton is empty 3e33e14335ef3f5fd07bc3dcfb2c74f045d49988 fix(docker): discover agent-browser Chromium binary at boot ea34925002707e6dbd13038f9eb5c3ad64a5e128 fix(discord): recover Windows voice opus decoding bb65bebed7db598394ff1a45a3a33cfe4d2fd989 Merge pull request #30504 from ilonagaja509-glitch/fix/30394-docker-anthropic-package 0b6ace649832e245cb132986e788fee5a12ec6d6 test(verbose): align with telegram tier-1 inbox default f1422ffd7727d5e67b8130c6c9cfccdc7d8b8e85 fix(gateway): classify Codex 429 quota as rate-limit, not missing credentials 2bbd53493d3b2a739822fd1ca8264ce05319f4aa fix(cli): sync credential_pool on Codex re-auth 4feb181eb45cff0df0baebf859c0217c4d6cb596 chore(release): map sir-ad + rdasilva1016-ui in AUTHOR_MAP 2f7ba51b809a291ee73dca1a3bd668f3e3080de7 refactor(gateway): drop try/except wrappers around resolve_display_setting 60f84c6c28bf88b15dbcd8186cd56b15769111c8 gateway: quiet Telegram operational chatter efa952531ba99cd4e1c6eb80e755ade60d04560a fix: ignore Telegram start pings 8807b1c727b4fd6bd8c21c89c9f3c4fea2c7916a fix(gateway): hide telegram compaction status noise 581b0215a54a47a49520613cf3e53d6f9485c2ca chore(release): map chaconne67 noreply for #31629 salvage 9c69204d8783a530db065136a39baca9817b7c40 fix(codex_responses_adapter): drop foreign-issuer reasoning on replay c819bc575bb555986c1f6620f14e08f833b000ee chore(release): map kpadilha noreply for #11038 salvage b1a46b30477527ecc3e174ebd4d49e011774dc55 fix(codex): drop transient rs_tmp reasoning replay state 187cf0f257c8938479a881ec1478871a3cf42df2 tools(terminal): nudge homebrewed CI pollers at the tool surface (#33142) a890389b69575916dfaf3980556f31f7f25c9871 feat(dashboard-auth): HERMES_DASHBOARD_PUBLIC_URL / dashboard.public_url override 0af37ff27220c7a59008a82945ec9cec90971526 style(dashboard-auth): redesign /login page to match Nous design system 61dcc33893ac2d5f6a30848aee3e3324b3e3bb4f feat(dashboard-auth): config.yaml as canonical surface for dashboard.oauth e2a92ce649f5e11e2a942aa0a944de02cb825d53 chore: gitignore .hermes/ working directory; drop tracked plan artifact b26d81d5369bb00c4fbf183875d3f552223a69fa feat(dashboard-auth): honour X-Forwarded-Prefix + __Host-/__Secure- cookies 034ad95fedc12fed180039d398508e22cc937d2f fix(dashboard-auth): propagate next= through login page + PKCE cookie c3104195b82eea53147c47fd861b93c4291ac6e3 fix(dashboard-auth): bypass loopback WS peer check in gated mode 866cc988b51af57e0745ed4e74641c14fc83d434 fix(dashboard-auth): use fixed-length sig suffix in stub token framing c598076b76bcef43ffc1e47b8162c5ce84ccffaf test(dashboard-auth): strip HERMES_DASHBOARD_OAUTH_* env vars in hermetic fixture a4984856319bea8464520236ad60be210d6749f0 feat(dashboard-auth-nous): surface token iss/aud in verification-failure error 42729775db5bf60bf83003baed326f833a635e11 fix(dashboard): trigger plugin discovery in cmd_dashboard before start_server b3dc5393042e829f19786ce9ddffa9b2b1130a1c feat(dashboard-auth): Nous plugin always-on; default portal URL; specific error messages af3d4a687fa998176bfadbb0cfb3cab210d97c9a fix(dashboard-auth): ChatPage cleanup closes WS via wsRef.current 7c9cdbc093aeab3f77d5758a09c7149a0b58ee27 docs(dashboard-auth): Phase 7 — OAuth Authentication section in web-dashboard.md 2fc4615fc4e172786fec7fc9c57599d88ef938ef feat(dashboard-auth): Phase 7 — SPA AuthWidget + /api/status auth fields 5e9308b5b8fa5b8df928bc4e51da1cede4d0a2c9 feat(dashboard-auth): Phase 6 — 401 re-auth envelope + next= propagation 8971e94831b3e18a644d9b8d980d7e12270116e1 feat(dashboard-auth): SPA WS auth — getWsTicket() + buildWsAuthParam() b2360ba44e131aae7e3b54ca38fde6d7035d3245 feat(dashboard-auth): _ws_auth_ok helper + ticket auth on all 4 WS endpoints b69fce9c866a96099abae0fbfde9c3ee3569f1f7 feat(dashboard-auth): single-use WS tickets + POST /api/auth/ws-ticket 848baeb0a814acea83111ebc4785662703197b3c feat(dashboard-auth): plugins/dashboard_auth/nous — contract-compliant Nous OAuth provider 53999b9e9520360b7b6f2326c2548eca9a2e5ba1 docs(dashboard-auth): plan v2 — incorporate Portal OAuth contract (PR #180) 53736b3922604104379b5fdf7ffbed626ca1d288 feat(dashboard-auth): fail-closed on no providers; proxy_headers when gated; suppress _SESSION_TOKEN injection 5b17eab67a51330220b67d0488ee71db63714da9 feat(dashboard-auth): auth gate middleware + /auth/* routes + /login HTML a30c4d8ebd4fa3881c793eae75ed63a4592d6717 feat(dashboard-auth): cookie helpers for session_at/session_rt/pkce 628a52fce2b7ecdae2784149e80ae379319ea49d test(dashboard-auth): stub auth provider for E2E gate testing 865cae4f6187a0540d70cd55f38fa317a70b8eef feat(dashboard-auth): json-lines audit log at $HERMES_HOME/logs/dashboard-auth.log c32b17f55761f6e495fdc2b43ac3f4ad54f7acc1 feat(plugins): add register_dashboard_auth_provider hook on PluginContext 1bbfed70c47ad01bd13bfb338f5d82aececa7a03 test(dashboard-auth): cover registry register/get/list/clear semantics 2dc6d03a3d969d4b742bf73b9bc4e7485f3277a3 feat(dashboard-auth): define DashboardAuthProvider ABC + Session dataclass 949ad95e4bd622b20449ee28731ec2e3737e8cad feat(dashboard): stash auth_required flag on app.state 8773bbf186ca0c6e679a3534407c3078b5e17dda feat(dashboard): add should_require_auth predicate for OAuth gate f2b479e7a2bac1cc72b01b977a3dbeac24a9f524 test(dashboard): pin current loopback auth behavior as regression harness 249534e472b9741fc8dede3fa81d400650e11118 plugins: add security-guidance — pattern-matched warnings on dangerous code writes (#33131) c752205635bfa0712a98afc05e538b77df6a1a5a chore(release): map superearn-fisher noreply for #33122 salvage 4920f8437f13aa54b6fb56118134d0bbec63b929 test(codex): cover null output stream terminal events f0fdb5e67d56f20772b418839ac487356d460cda feat(catalog): add qwen3.7-max to alibaba + alibaba-coding-plan model lists 96223265b9e98c5bd05cfa65b74b4b513f340bbc chore(api-server): mark skills_api capability True now that /v1/skills shipped 464b51d455fe2caab2691b3331e31d1adf94d733 Support media in session chat API f7527b0fdb54f01691547df03fc65a6d367f9fde feat: add API server session controls f0be32232d357ac81ee5145109849d78ac4d46d1 chore(release): map EvilHumphrey noreply for #33034 salvage 4243b6dc45e910e2f02c6ed814072fd96468a8a0 fix(codex): update silent-hang workaround hint 976979489a682fecce6d6eb977f83e31254f3c18 feat(nix): add #messaging and #full package variants (#33108) 25f43d38de86582f5bc2d5be6843f824eac21634 feat(api-server): add GET /v1/skills and /v1/toolsets (#33016) febc4cfec0a79b175a430304765473c97e10622f remove Vercel AI Gateway and Vercel Sandbox (#33067) cb38ce28cbd22278c30973eb4af5260c46543a7f refactor(codex): drop SDK responses.stream() helper; consume events directly (#33042) fb298a958c525fc80d1111f298afca8ce7a063a9 fix(docker): mkdir HERMES_HOME as root in stage2 before chown / privilege drop (#18488) c3bdb2af37f44cbf8b455c3992b9849a6eba3a6e ci(docker): add shellcheck shell=sh directive to main-wrapper.sh 27a29ee54e93e98fea5f542d5ab393d42b2ca196 feat(docker): upgrade Node to 22 LTS via multi-stage from node:22-bookworm-slim (#4977) 22eb4d13f73de232cd2d7d0841125148d7ad18f2 fix(docker): chown ui-tui and node_modules on UID remap so TUI esbuild works (#28851) 9eadb6805c21fe4af923ebdfc3059e60d668710e fix(docker): targeted chown to preserve host file ownership in HERMES_HOME (#19795) b6ca56f651505d6a8ec2489f1048da3d2c07d12e fix(codex-responses): gracefully recover from invalid_encrypted_content (salvage #10144) (#33035) 9d3e9316f4a42bf13401ef004fe17db1a99eb990 Merge pull request #29591 from NousResearch/jq/hermes-update-branch-flag 3d9a26afad46ea1c7c8aa38f35d9f2215e8dc731 Merge remote-tracking branch 'origin/main' into jq/hermes-update-branch-flag 1e5884e38f5031ae94e9fb781c4eb9e447db3cbb refactor(docker): drop build-essential from apt install (#27507) 81a4f280d24e2ab77e1a10196c0a601838716111 Merge pull request #22534 from wesleysimplicio/fix/voice-mode-docker-respect-pulse-pipewire 9feadc273433e6afdfcb68ac912ba5aff46b7114 chore(release): map ticketclosed-wontfix noreply to GitHub login 0a83247e9fa6fc0d94ebbd05626b666c520c3d43 feat: add TUI session orchestrator 2fc77c53f0e836f9c56161908ddd0be7a5466c73 feat(opencode-go): route qwen3.7-max via anthropic_messages 3c7f786ade371611318a5d8848944611df0af1de Merge pull request #31557 from yu-xin-c/codex/docs-xurl-docker-home-29108 7d94eee0a907632bb2654375d2ec8fb303690093 Merge pull request #32122 from yu-xin-c/codex/docs-docker-audio-bridge-32009 628aaea63a27e907507e404296333641e051e58b Merge pull request #32412 from jonpol01/fix/docker-env-propagation 840f79ed12e70182654df67659622644b87525c7 Merge pull request #31031 from Sunil123135/feat/windows-docker-desktop bba50977bc2df253b3777b5c54ea453b3a85a43a fix: parse Codex image generation SSE directly 16e86ce6a779b5ac0fdd6c161238d384426a17b8 chore(release): map wangpuv contributor email for #32933 (#33005) 1e267c4859a9b9d8756d6783f59f178f3289fdb6 Merge pull request #29025 from slowtokki0409/codex/ignore-local-runtime-files 2a8d2174173ab8d05d0b48a44580a8c0b2c8c19b chore(release): map carltonawong noreply to GitHub login 43a3f119fc68ae6b2d3e9fa20eacbbb1480d9e32 fix(agent): recover Codex streams with null output 1a1c4576de14687a38182d0e4c7b308116fd2db3 Merge branch 'NousResearch:main' into add-sprites-terminal-backend bb4703c761ea6687b6399aa2e61e0a08fabd3ca3 docs(auth): replace stale 'hermes login' references with 'hermes auth add' f05a47309ec8842387e88eab856df55c6910b57b fix(gateway): refresh cached agent tools on /reload-mcp 556bf7c5c1ee8adee1bf3540e23e7d033f532b97 test(cron): guard schedule-required description text on CRONJOB_SCHEMA 51013268cf9b0ccc1078c8534cafef48eab145e7 fix(cron): clarify schedule is required for create in tool schema ccd3d04fc5cc8df9fcbfec3a78968634a20c708c chore(models): swap qwen3.6-plus → qwen3.7-max in openrouter+nous lists (#32809) 8b69ec03af50de892ae0bca1f7e2384a8f6eb5a8 feat(mcp): Nous-approved MCP catalog with interactive picker (#30870) 2517917de34eeb6a40f5a17a2e59d9746803dfa5 fix(cli): restore fallback paste collapse + handle long single-line pastes (#32447) 31c8d5ff5faebaced4678efd4df996f6b01b337c chore(wecom): make defusedxml dep acquireable and tolerant of absence 5744b17579492f48d1436418509da084bd4e7fd7 harden: restrict markdown link schemes; parse untrusted XML with defusedxml f4953bc6488e54c8a706f947d541d592b2cf08ab fix(subdirectory_hints): prevent loading AGENTS.md outside workspace 9d10c45e3222af8244b158149c13180ca9ca9cec fix(telegram): tighten table row-group spacing and drop redundant first bullet 66851dc4137443ebd21322d92bab253b0b056fb8 chore: add krislidimo to AUTHOR_MAP for PR #29775 (#32434) d8703e27f5c3417bc05ddc792b6026b538a376f9 feat(skills-hub): health checks, freshness badge, and a watchdog cron (#32345) 29c71e972a7fe389ea33ef4778603c1c07436176 fix(docker): propagate container env through s6 to cont-init and main CMD e224d8d3d8a35acada6dddb721b7c6c817eda991 chore(actions)(deps): bump actions/deploy-pages from 4.0.5 to 5.0.0 ec108c625e17fbfd3321dee0143073c7c019db5e Merge origin/main into feat/iron-proxy cea87d9139044870752aafdcdf9ca253049ae175 fix(skills-hub): show every catalog source on /docs/skills (skills.sh, ClawHub, browse.sh, OpenAI, …) (#32336) c26af46811c1d32373700ecf80d181d3405f49e8 fix(skills): reject symlinks in skill bundles before install fe9744cbeef60f2d79399dd2999a3df3d10cd81a chore(release): map ffr31mr + TheOnlyMika in AUTHOR_MAP ccd899318e2290ea9830e7a6f40fabe51a4c2a41 fix(cron): split scanner into two tiers so skill prose stops false-positiving (#32339) e3236e99a40b84709d8bdd255136c1af8fb91aee fix(anthropic): API-key path skips OAuth autodiscovery + prunes stale entries 2c6bbaf3529fbd7dca4330d53b5c819f3d223ba5 fix(gateway): coerce scalar `model:` to dict before /model --global persist (#32272) de76f4dbcfac97a4ed3398fc908c4bd7ab8bde79 fix(secrets): only apply external secrets once per HERMES_HOME per process (#32271) 6bd0be30bee215ff5dab20dcebfb9481050bf96d feat(patch): indentation preservation, CRLF preservation, per-file failure escalation (#507) (#32273) c2aa235328223d931ca8d61b803d8c5a6b4e96eb fix(agent): log outer-loop exceptions at ERROR with traceback (#32264) 30928f945f50b7ecba466c0967ab8c620e83fe2e fix(dashboard): suffix-allowlist plugin assets + denylist subprocess-influencing env vars (#32277) 906b1da57f3942cfe333e2465887620c6913da6c docs(egress): comprehensive expansion — setup, config, troubleshooting, internals reference d270fe52b3befb76f97ee1aaa3a661c72e872d5a fix(pricing): correct host-match patterns + add tests (#15268) 579fa6a1f7035c78b9d4f2c1695e5849888cc56e feat(pricing): add provider routing for nous and xai 27df4b38822099e5cf96bab2acae76651c80e5f5 fix(telegram): exempt reply_to_mode=off DM topic sends from anchor-required guard 926da69b45d5c141b437fce267ab8c59918b2f0d test(telegram): switch transient-flake retry test to group chat 5b1c75d662a7fc848bd0c370e5b5061e0be73347 refactor: simplify Telegram DM topic refresh c394e7919d4e1ebd2da524a38e09dadb8aa42fa1 fix: refresh stale Telegram DM topic threads dcd504cea4d247d9e53a2036ac16dcc2b5c94b0e fix: auto-create Telegram DM topics for delivery 96c71d8c462142b843fbf73d765721aaa43de945 fix: require anchors for Telegram DM topic deliveries 6b7da117498d8d16f2d9992b0117ddbb6e3da154 test: isolate API server env in gateway tests 415be553945bbe67fe25795f9467c3b94108847e fix: route Telegram DM topic deliveries directly 0dee92df22bdc0cfbcad90ca954aa14916f018de feat(security): promptware defense — shared threat patterns + memory load-time scan + tool-result delimiters (#32269) b6ce7a451f72a185ceafc4a3d13a599ee00a62d5 chore(release): add ronhi for PR #29523 salvage bbc8f2f961f79f2c95c27f0c8ad4f9965daf89ee chore(models): drop retired grok-4-1-fast from metadata, tests, docs 263e008d6bebbf3c7f67eaff8c4d71429c9b361f feat(skills): add web-pentest optional skill (#32265) 386f245d9d25e9084cea61046f588447957de683 feat(skills): add optional openhands skill — closes #477 5671461c0c58050822284dc6ae32adaca09f6e24 feat(skills): add code-wiki skill — closes #486 (#32240) 5caeb65a08a836defba9573368637e1a19af55ee test(tts): regression coverage for #29417 double-[pause] fix 1d73d5faccec487b072ca17926fa9f7b157395ee fix(tts): prevent double [pause] in xAI auto speech tags for multi-paragraph text d99cb8f9fcda1e3e2d901acd6198d67b44e01841 Merge branch 'NousResearch:main' into add-sprites-terminal-backend 0fe0e499c0929a84e754d5464c07d7e641ba7aed chore(actions)(deps): bump actions/create-github-app-token b62af47da8f1de5cfdbae423caaff5b64c060c9a chore: drop stale line-number reference in PRIORITY path comment 737ee81167c66d88f166670751912b32ac1734ce test(gateway): regression tests for #30170 subagent interrupt protection 99d62f6ba1fe7d59542cc4350d90c46bada108b2 fix(gateway): protect in-flight subagents from busy-mode interrupts (#30170) 50aaf0c4ad84635b53400ca8c5b0837689164bb0 fix(tui): delineate assistant responses from details (#31087) 0ec0cafdd0ca842822a1ddbdd52f6018122949c0 Merge pull request #31084 from NousResearch/bb/tui-right-click-copy-selection 95cee443013c2850eca30494e93c47aeeb280d02 docs: add Docker audio bridge notes 4117fc3645b59c5c0f9d623e0991fc9bc864c0e2 fix(credential-pool): correct pool rotation when weekly usage limit is reached 8f19485f538565630a35d992b06324f308f80630 chore(release): map kylekahraman email to GitHub login ab42658dfc3965ce9ecf931451ee3dd5039d730c feat: configurable paste collapse thresholds (TUI + CLI) 973bb124a415be6dd9948d4a0c2c7690c30f2061 fix(credential-pool): rotate immediately when credential already exhausted 0a6a0ba527ef677e446b2571c266eada8ca77f99 test(skills): widen assertion in PR#6656 regression to accept new validator msg 3b9b9a7ad7b24cba3683b63db2e34a41668c5d29 fix(skills): guard uninstall lock paths 0d137f1039e01eb74c402231f665f8c023831d06 feat(errors): actionable guidance for Nous OAuth 401s (#32082) dbe5d8497200b766baab4ed1a2bbd4e2e02d3fbc fix(auxiliary): universal main-model fallback for aux tasks (#31845) 46c1ae8b2455352b0d3c1a6d7112d53342cc47e1 fix(tests): four pre-existing flakes from the security cluster merge (#32072) f5bb595d51a076feeef6a1bd826f6e0a6c3ed8a9 chore(release): map 8bit64k + hclsys in AUTHOR_MAP 85a0b3424ec09df393b7d6ad8bc436b3bf9a0e2d test(tui): regression test for /q alias resolving to queue (#31983) 064ac28cbd006b60faf47175dd7ad4ea2077c5fc fix(tui): remove 'q' alias from /quit, add to /queue 8191f663dd00d5f383ce411b925748ab238d7477 feat(mcp-oauth): accept 'skip' at paste prompt to bypass auth without disabling server (#32069) bdf369670575515e4d162e6bdd473efca912380c docs(mcp-oauth): document paste-back flow and SSH options for remote MCP OAuth (#32067) 1c3c364287e9493d885ce23eeff066afe26ee9f5 feat(cli): show live background terminal-process count in status bar (#32061) 2b16de0ec3d051c5a623fc3f5c9e78aac176066b chore(release): map adam91holt for PR #31984 salvage 8601c4d44ce4b7a263af05f6f0e7b0826041d92b fix(codex): add time-to-first-byte watchdog for stalled Codex streams a989a79c0ccbca192f7fca2a15202c3ede3e8ac5 fix(gateway): allow native delivery of freshly-produced agent files (#32060) 0ff7c09e2fe612db58a82013d5cbc04f21f0a481 feat(mcp-oauth): stdin paste-back fallback for headless OAuth flow (#32053) e9119e0eb85d6c55bbe7b1890b9784af080f714b chore(release): map dsr-restyn + WuKongAI-CMU + codeblackhole1024 for S04 cluster bd2756dd22f24349b21bfdca31a203d02c9a67be fix(update): reject symlink members in update ZIP 5f20322d239ea127c08851d0180ecfebf70c04dc fix(tts): reject '..' traversal in output_path ac5359a3f30a180bc3d5722fe26dac564f0fc5d5 fix(streaming): route mid-tool-call partial-stream-stub through length continuation (#31998) (#32012) 46d8b5dadf5a1b4757d36dbad28fdc2883557f12 fix(profile): reject symlinks in distributions (#25292) 0d55315c362cf63e30aa590b37b54b84c69429d6 fix(backup): skip symlinked files in zip archives (#25289) 79799c80f576f111b92cedfcfbdbecee950cdff8 test(approval): patch _YOLO_MODE_FROZEN directly in test_yolo_overrides_cron_deny 95848b1cbcf3549490cc413b701080d26d33e0f5 fix(transcription): reject symlinked audio inputs (#10082) ee59ef1946e97200f4b5570acec9271f86046ab4 fix: reject read_file symlinks to blocking devices (#10133) b7b8bec8001ffd4ab56f3227d93eada72aada243 fix(security): block /proc/*/environ, cmdline, maps from file read (#4609) 4909dd84c1be8e1b7b4bf80a2fd69473809543c4 chore(release): map 66773372+Tranquil-Flow@users.noreply.github.com to Tranquil-Flow (PR #27518) 1b12cd52411110ddcc621c4d8bee6cceec19d226 fix(cli): bracketed-paste timeout prevents permanent input freeze (#16263) 8697471419ec8fc26b094ae1d837cae16f81abc3 test(cli): cover KeyboardInterrupt guard around slash command dispatch 63d6b9e6375733df5665732462c60d59668d4030 fix(cli): catch KeyboardInterrupt during slash commands to prevent session exit ee7789e5479b454f75908d42845523e55c46b403 chore(release): map simo.kiihamaki@gmail.com to SimoKiihamaki (PR #30773) fae815adc21baba6d12024c94e4dc3a39ae4df5e fix(cli): prevent /reset and /new freeze on Windows by falling back to stdin prompt 10428c2817f3d6e895e5755d695a4876c715fdb2 Merge branch 'NousResearch:main' into add-sprites-terminal-backend b1adb950387413fd329ef9d4f0a79cc1e9873778 fix(codex): surface actionable hint when stale-call detector fires on known silent-reject pattern 4c646388972ba1805c07a6e6a0d69be14dd260d8 chore(release): map liuhao1024 for PR #20778 salvage ba3c450914d32a502b4a95f50202f60ec0f07234 fix(security): block read_file on project-local .env files 51c913caf7d57f94d5668f1e85f6d1995cfa3c1d chore(release): map dusterbloom for PR #25726 salvage 79fc92e9cb9ab57262a026ac14f29926fc53ad55 fix(security): tighten .env file permissions to 0600 at all creation sites 4cb3eb03c750c902919906733b79220588ca5f16 fix(approval): harden YOLO bypass, LLM parsing, auto-approve audit, pipe pattern (#23835) 3ab7e2aa9190c32abd8f854f9f6a88ad9a2c3d0e harden(env_passthrough): apply GHSA-rhgp-j443-p4rf filter to config.yaml path (#27794) 0219b0408a14641aa81a60df58836c7a2fb5eac6 perf(cli): cut hermes startup 63% — flip head-to-head vs codex (#31968) c0169496d0e60597bfba800f97593b988846007c chore(release): map jfuenmayor + Jiahui-Gu + YLChen-007 + AdamPlatin123 + waefrebeorn for S11 cluster salvage 5faea3f618fc54c4231fc62b02375226a6ccca96 fix(file_tools): reject '..' traversal in V4A patch headers 00bd24e27cfe8f9748caa6b3044f5d35eade9f7f fix(security): expand memory content scanning patterns to parity with skills guard (#9151) 7ebebfbb8d10937cbf2219b4cf5e121b71e67428 Harden Skills Guard multi-word prompt patterns (#26852) 0a2ee71cccbf98ef9bcc1f1cd093c08357ebcd89 fix(skill): guard pickle.loads in darwinian-evolver show_snapshot with explicit flag (#29276) 93660643a65b1b2b166527227e2c8ca77946e369 fix: harden skill trust source matching (#31229) 2d422720b53207208efacfdb2e32dc92048b6edd fix(codex): size and propagate timeouts for Responses-API requests; lower stale defaults 76135b329dea75cf9c079223fba3b67b88bf4d0b docs(i18n): translate all docs into Simplified Chinese (zh-Hans) (#31942) ffe11c14eca9bb02f5a8586883d2ffb22be2b929 test(cli): cover quiet-mode resume status lines routed to stderr 25295e7ac913c4643f2692264263db3791b5be8d fix(cli): redirect resume status lines to stderr in quiet mode (#11793) 11c40d6a427b8730035f33a0883841b398223cb0 test+polish(compression): pin anti-thrash gate and gateway session_id persistence 3914089d52fa32936b00e63d881a0a25ad462258 fix(compression): 3-line fix for infinite compression loop (#29335) 222a3a9c1934e1d10dba2be0ade2917cd5f80a65 test(cli): cover exit resume hint -p flag across profiles 2a2cef4ac7d4b2c9247369fe3f41b1ef6ffb6009 fix: include -p profile flag in exit resume hint d3ffbc640940d8ce78ba2f5b44f0bc761e99dd45 feat(stt): add stt.providers. command-provider registry 2cd952e1102638c8c0f7b03d2ce7021ae3706886 feat(stt): add register_transcription_provider() plugin hook 2e0ac31a7298dde286d5d79bd2455169b652b8b0 chore(release): map claw@openclaw.ai to wanwan2qq (PR #10215) 4fbdf0e893cb132a3f092da7cb029490ca1a384a test(cli,gateway): cover bracket-stripping and gateway session-ID lookup 1c7a783c42ee20bbe0b563227141cc5336ab871f fix(cli,gateway): strip outer brackets/quotes from /resume args + accept session IDs in gateway 920b350e57544285002c813b35747ebcc6659f9a test(auth): align copilot-remove test with borrowed-credential policy (#31416) 9c77a0c3ceabba5c7176e8be695fbc10d57637fb fix(plugins): widen masked secret prompt to plugin setup wizards ec4d6f1823b84ce8b87f45c78853b5b248140e2f fix(cli): show masked feedback for secret prompts 92ed1204531d9533c94f7a4377c76d874a92ef06 test(auth): stub gh_cli resolver in copilot suppress test d952b377aa3d52780d022d37a0d0d46a5b137d2b fix: add cron API provenance logging (#24889) 92d91365e7a0fa38ccaa58893314f5a715012ae0 chore(release): map zapabob for PR #29826 salvage 2c3ca475c055a493bc3c40c31c00e7ad2ce7f045 fix(cron): reject id mutation + validate output paths under OUTPUT_DIR 0c3e34e298fb44a565dc066d8fc58460720a0281 chore(release): map Schrotti77 for PR #25786 salvage 9863a07af67a180228a8c6595e0e7ab2c1c1fdb7 fix(cron): layer agent.disabled_toolsets onto cron baseline (#25752) a6b0414ea0ffc57a1850d4b2be637bac9d446da1 feat(providers): extend openai-api with live /v1/models fetch + gpt-5.5-pro aeb87508c6adc83347855b017d602c52730ca071 feat(providers): add OpenAI API provider option d7c5d5dee5503bbe1ebbce8fa65b3a8a5746cd19 fix: avoid persisting borrowed credential secrets (#31416) 2b768535c9ba2a8d3b2c23fae1ee3a2f827f7f49 test(acp): drop flaky runtime_calls[-1] tail-position assertion 3b839f4369d4a0acea265ec55ee5e870010a80f4 fix(context): align guidance with 64k minimum 1d5deac34670ce0ef5d28d4acdff30c0d440b9bf fix(website): cross-locale doc links + drop empty ko locale (#31895) b0135c741d2ed1ab413399759679682eaaac34e6 diag(xai-oauth): log loopback callback hits + wait-timeout outcome (#27385) (#31894) b288de8bf422c3bd771c452de1cbbe5718fc3be2 Merge pull request #31081 from NousResearch/bb/tui-skinny-status-rule 8523a9feaf0cadf3f0250bc0382cba3187183130 fix(dashboard): allow file:// origin on loopback WS + diagnostic logging e1338265c15d5a63656964a64f0c1536e7fe1c06 Merge origin/main into bb/gui (2026-05-24) 7e165e843d0c4829758f4aa7771560eba1e302dd Merge pull request #31760 from NousResearch/hermes/hermes-bf5898da 46f8948bad73e7cb98fa4e142de48a689d6308ed test+harden(cli): cover parent-chain walk in concurrent-instance detection 323cce7e94295a673dafafbdbee79a1010406bcc fix: exclude parent process chain from concurrent instance detection on Windows da8b2e95fd7e562a28d26a0eb0f90cdf3cf80950 ci(docker): run tests/docker/ in build-amd64 against the freshly-built image c3c7bfba004d3de3d7329f0f40e980df1677f16a fix(update): exclude parent hermes.exe shim from concurrent-instance check c524b8a4dc28ef5b6ebb7c87c277551ff275f959 test(docker): fix svstat 'want up' assertion in profile-gateway lifecycle test 7d54288d82f71b0961616ab312e7601490ae30cb test(dockerfile): recognize s6-overlay/init as a valid PID-1; harden against historical-comment masquerade 4f416fc40c1b25f648f35204d15265676daf1ded fix(docker): make s6 lifecycle work for the unprivileged hermes user 4c481860ce6762d8e0f79bf0af56d1beb638f41d ci(docker): run tests/docker/ in build-amd64 against the freshly-built image a3abeb5954d41805d8ea205068e2a3725e62ed22 Merge pull request #31775 from NousResearch/extending-docker-docs 6840ca2d1e20a1dc12d9b72e4be97d8c0796a1dc docs(docker): add 'Installing more tools in the container' section 7f6f00f6ec4058b292fa70f35e296bb57f796a76 test(dockerfile): accept s6-overlay /init as a known PID-1 init 5cbb132c1de7fb4c06fd539c347ca0d9ca5cb665 fix(ci): exclude tests/docker/ from regular test shards; pin read_text encoding 1150639fa9560ae2da1f93fdbe15e96028ae013c chore(ty): suppress unresolved-import inside tests/ to keep lint-diff PR comment useful 02c933aedc8500e5672aed12475a9ba0534bd77a test(docker): fix svstat 'want up' assertion in profile-gateway lifecycle test c41f908ad46043728d884f4b1929435636cf1bcb fix(docker): make s6 lifecycle work for the unprivileged hermes user af144cd60d2a69d47aa23090b5c51485cff46256 fix(model): include Premium+ in xAI OAuth label 4987fd2a596c2d1c0bafaa876ec55c4e32455f22 fix(model): disambiguate xAI OAuth picker label 031f9c9edc87e530e215220721e7a79fedd185e1 fix(image_gen): cache xAI ephemeral URL responses to disk (#26942) (#31759) a4092ab217c19032c10ffa3b8d60347eabde394d fix(profiles): short-circuit s6 hooks on host before importing service_manager af973e40711709deb2d102004321633a6acf4bc3 refactor(gateway): migrate Mattermost adapter to bundled plugin 6c49bdc4f49177b72ef13ae4e1c73a0bab80377d docs(plans): trim s6-overlay plan to a post-implementation reference cd5b2c4123039421e5ee400ca90024b26c57f6fc test(docker): poll for boot-log signal instead of fixed sleeps 04bdbce90624610e251c67cb708968dc94d9aec4 docs(docker): deprecation warning in entrypoint.sh shim d0b1ab48dc0c03adf40a7a83ff51f20b28770ad8 fix(container_boot): publish reconciled service dirs atomically 4443fb481dda2b460acce570a0fd16e6610f368b fix(container_boot): rotate container-boot.log when it exceeds 256 KiB 9914bfc5941699a065b30f16a726f7faac2e02a8 docker: drop sh -c wrappers from stage2-hook.sh d735b083e80146fd264e30f5ebdacde815a07874 fix(service_manager): rip out dead port parameter 143a189def3201bf8f79a7036b1e5e8c9aff87a8 docs(compose): update entrypoint comment for s6-overlay 1dfabe47b3b59b7def98efb72a4b5d62201ec3ff fix(docker): dashboard slot stays 'down' when HERMES_DASHBOARD unset b28b3f51d3e803bf12cdba17c2769f883636e555 fix(service_manager): friendly errors for missing slots and s6-svc failures b044c1ac29bf66e9de790102e425250063690bd0 fix(container_boot): always register gateway-default slot a1a53a5d6ecee42cacc24a3a0bae01bc30e96094 docs(docker): dashboard IS supervised — update note that contradicted the PR 6dedaa4846c7b808ea9ea053e500b32aa3ca6119 fix(gateway): route --all stop/restart through s6 under container fc26a5a1c8fa28707f6ae0c5bbd4a81f4481f48f fix(ci): drop --entrypoint override in hermes-smoke-test action d4e452b67b6cf78aff45415f80da3b12aa5ad5f5 fix(docker): SHA256-verify s6-overlay tarballs f7893df4d2ab7a552cd99ffbd803380b2003b222 fix(docker): support multi-arch s6-overlay install (amd64 + arm64) fc39296e1ffc6f41d44880e4923a4c5ddb4a26a9 fix(service_manager): s6 detection works for unprivileged hermes user 4b4c36cb61dd21be469195c0775f6fcd9611dbd2 feat(docker): remove gosu from bundled image; s6-setuidgid handles privilege drop a36221ed91745dcb3c25254fafc7df5720e49ad5 docs(s6): document container supervision; doctor + skill + user-guide updates 2afefc501c5a599f5b97c226659bbe15da27af3d feat(docker): per-profile s6 supervision + container-restart reconciliation 0abf661f713a08510e1a5a81e0329e0307fc5a5a feat(service_manager): add S6ServiceManager for runtime gateway supervision e0e9c895d3fb1658c174867b8b4d962e943c9673 feat(docker)!: replace tini with s6-overlay as PID 1 51914b051416984469383812574d0b6635b0b5ef feat(service_manager): add ServiceManager protocol + host wrappers b2168bf3494938b7f6025e9eb1ec4f6d9fc6735c ci(docker): add hadolint + shellcheck for container build inputs 440147ebea08bf7ad5fb12770218c9a63116fa0f test(docker): stabilize Phase 0 baseline harness a18f69eb55251482d5342edd4d751bbefb2c0a44 test(docker): apply 180s timeout to docker harness tests 6e6acdea2a128f700a4940d9998c31eac8126f5e test(docker): lock baseline behavior for Phase 0 harness 08302135b65f75c74462fd3dcd2dd2b70940454b test(docker): add conftest fixtures for docker harness d36461d806c9cb2d4c0a7917af1cb693f922eeae docs(plans): add s6-overlay supervision plan (v3) 00ec0b617cf6013d05a00cbdd5776528f7f900e8 feat(tts): add register_tts_provider() plugin hook (closes #30398) 782681f9043ed8ae5a7ec88da787660d0fb165f0 fix(google_chat): harden oauth credential persistence with atomic private writes (#24788) bf2f3b24698815b3804d3daa73cbafe1eff6f9f5 chore(release): map vgocoder for PR #24758 salvage dcc163ee28fabb57686307a10353d9ab51766d7a fix(security): redact credentials before persistence in session capture 243ebc7a619fed1e398474bc1cf58436895cca43 Protect dashboard OAuth credentials with the same file-safety guarantees as other auth paths 55987818b6efd7587bb750bbfd52cb80adef6722 chore(release): map kronexoi for PR #30553 salvage 4694524dee69ab67c294d284df8c351f396384f7 fix(security): restrict write access to Anthropic OAuth credential store be89c2e4fa4150b3216c01bc2442a24aa6871630 ci(supply-chain): anchor install-hook regex at repo root (#31744) 223a3971c0c9c52a84556c87ba100355d790612e fix(security): close TOCTOU window when saving Claude Code OAuth credentials (#21152) bba76f3dcd83418ae4063d9b5d7ddeb6da7b82d1 fix(file-safety): deny reads of Google OAuth tokens (#30972) fa957c06cf6b1dc86bc638e16dd8b4c3a2705637 fix(security): add missing credential paths to write denylist (#27217) ffc1bb6393e024f18aeab537628c4e01747c89fc test(dockerfile): recognize s6-overlay/init as a valid PID-1; harden against historical-comment masquerade 472be1247df12e6460dfaef97a7b7ed1fee82944 fix(service_manager): pass encoding to Path.read_text in _s6_running 59da190512b2c2d905100d907b6a2feeed1bba1b Merge branch 'main' into docker_s6 9c0807070388c4f612a827230f1314ebbf24e857 test(cli): update resume usage-hint assertion for numbered selection c043c86bd76990dfacb67c3b2a0253149e82f8fd i18n+tests: add list_item_numbered, list_footer_numbered, out_of_range for 15 locales 87580076fd4535a5a911580f89b93c4c58aba12b chore(release): map 490408354@qq.com to daizhonggeng (PR #9020) fef733d56bf34a12cea8d2c54fe53f473bd1c3cf feat: support numbered resume selection in cli and gateway 4f4e337c47865f74383a370302f91640b771ebfa fix(file-safety): write-deny pairing/ directory to prevent approved-list injection 6c44d537cc207628e13901ae8d3a65f2c437364f fix(cli): show full session titles in /resume list 8e684269815c6e20de7474b8ddc046a341a445fc fix(cli): add inline --yes/now skip for destructive slash commands (#30768) 99a7ecc335c79923e6d495c9fc1ff9bd8d7f0136 chore(release): map leeseoki0 for PR #31315 salvage ce529d60728eff8519422ce025aa9d9673d9108c fix(kanban): scratch tasks must not inherit board.default_workdir (#28818) 23115b5c0f7997d9079e01c8886cf85a7ca3d772 fix(kanban): restrict managed-scratch roots to workspaces/ dirs only 80ad1609c88a1add5b8a536521f825c9ed8b829b fix(kanban): refuse to rmtree workspace_path outside managed scratch root (#28818) 396ee69032deeb186f39cb2d67ff3c720dc5e657 fix(gateway): seed plugin extras before is_connected gate (#31703) 514f5020c7978cad3d8c50cd8ae17419481a1c6d fix(debug): redact BlueBubbles webhook secrets 13b85bc646b13aa7e6c78a4a584735133045f6ad feat(config): document resume-recap tuning keys in DEFAULT_CONFIG 5dc10ec3ba9818b680f2ff12efe318527709574f test(cli): reconcile resume-recap tests with skip-tool-only default and compression-chain helper 27c4ba98c36d77cb1149b0e5ece42ff5b7fc9360 chore(release): map zhangsamuel12@gmail.com to SamuelZ12 (PR #7480) cdf4876bfe1a53920c94d2c8839920c060ca5c71 fix(cli): skip tool-call-only entries in resume recap, expose limits as config options 961e34a1d3da4d19283ce116f2dc6015397d8f4d fix: show recap after in-session resume 16eed4f91b9d22db0ab17f7bbf03cadf88fd0a2e test(telegram): add brand-new-topic regression for #31086 bdc9b0eff50edd3a9eca3503cde98c9401d796bc fix(telegram): preserve new DM topic lanes eea9553a9c147670ec51dc0f7011330e6fed7b08 fix(anthropic): skip mcp_ prefix on outgoing tool schemas when already prefixed 2f91a8406cf6509dceb2c687b9fa4972c8cdc61e fix(agent): only strip mcp_ prefix for OAuth-injected tools (GH-25255) 476c897439e975340af1418f044617d9d36b6cde fix(telegram): gate send() on send-path health after reconnect storms (#31165) fa435336b71c7bd59ced537dda960034ceee79ec chore(deps): bump qs and express in /scripts/whatsapp-bridge 54e61f93318d579b145421c447437ec345021eb1 fix(matrix,gateway): Matrix E2EE installs full dep set; plugins respect is_connected 88834baf50748f4232e4f317ddbd2ddc391dffb0 chore: map soju06@users.noreply.github.com for PR #26054 salvage 6212e9ade8702c49b44dc22c2622e6fd9f534205 fix(error-classifier): treat 5xx request-validation errors as non-retryable 775a17284f00a0ab7014d0cea35a74f0c66cf3e5 fix(transport): strip Hermes-internal scaffolding keys before chat.completions 7ab167736249515dff59e0f36d04512907c134ef feat(security): on-demand supply-chain audit via OSV.dev (#31460) 8065e70274aa03397b9e69d8729c24b0de68020e fix(agent): abort on HTTP 402 after pool rotation and fallback fail (#31443) 605661389d9cbabf81862e25675ce9a7dad94aec skill: point hermes-agent at llms-full.txt bundle + capability inventory 7ed67ed5f7fd1a231d83bd64d4f5d9ec8edf119f refactor: lightweight hermes-agent skill as doc navigation index 5b52e26d18ca80cb47f335d2acab0c4319d0f5c0 fix(gateway): swallow transient Telegram TimedOut at loop level 3d66787a04d29beaec16a723e4c2c2bb4dda2cee fix(vision): route auxiliary.vision.provider=openai to api.openai.com, skip text-only main (#31452) d9ec90585cf7616b5972e44cf8d92bb569fc3feb test(dashboard): send loopback headers for WebSocket sidecar test 2e66eefbc3251067f83a13d0a32ca51524f4f9a2 fix(dashboard): validate WebSocket Host and Origin 1579a6f4a974831a16beb4c05b173da7986e888d docs: clarify xurl auth HOME in Docker 186bf25cb11077b8c158dbfc1f768e48bc28b0db test(guardrail): assert halt message reaches stream_delta_callback 38b8d0da85aa663e4dd511eea6e084a4d6cf3697 fix: emit guardrail halt message to client before closing stream 889903f0fa4ba125c56acf21030b5b99c99778db fix(tests): align CI tests with recent security hardening (#31470) d17e228a241402c396a6f20e373bd321bdc262bb Merge branch 'NousResearch:main' into add-sprites-terminal-backend 3bace071bfadf2d2bec2ee048471a31ec920e3e8 fix(state): restrict sensitive store file permissions f378f00bfb8d40eb2e4a610ea17a856aea0c7088 fix(feishu): validate verification token before reflecting url_verification challenge 5e6749fbf360c45ace951f22fb7630caf637aae4 chore(release): map m0n3r0 for PR #29629 salvage 15aa6884a28f1aeb498fdf9d2bc6c8b4d93cf0dd fix(webhook): use 403 not 500 for missing-secret rejection dbf73e90faba998c3f58600d98918ea7a70c796a fix: fail closed for webhook routes without secrets bbf02c322443b7e833d730bbfa1dbd5d246e71e2 fix(gateway): validate Svix webhook signatures (#30200) ee002e7fc5baca108d1926699060fde147e22678 fix(dashboard): require auth for plugin rescan (#27340) 5acaeba2bb0ed14f703f3bdd4cf185cc5d97303d fix(mcp): raise ImportError instead of NameError when stdio SDK missing (#31450) 6cafcf9c7741a8b9c43b959ad8567c1ed8b203f5 test(streaming): pin partial-stream-stub finish_reason + continuation contract 20b3703a42f238c6a3a717f6f9ec99301feca958 fix(conversation-loop): tailor length-continuation prompt for partial stream 9140be7c228dcff02dc12d52a499eb06d6721496 fix(streaming): emit finish_reason=length on text-only partial-stream stub 60d20a37c975aaaf2b90f30bda36622ca6af8a61 fix(acp): only deliver final_response after streaming when transformed 26088ca66972f364bfa457842cb529626c839169 chore: map kenyon1977@gmail.com for PR #29119 salvage b9f533af0ad056a8d8da4e511fc69a115ef27fa0 test(gateway): regression for plugin-transformed response after streaming 5cb21e3fb5231cf9e8857e7f0ea64144afe908d0 fix(gateway): edit streamed message instead of sending duplicate when response_transformed a4ceead796de7fd187850e24725cbd8359a8e0ec fix(gateway): propagate response_transformed flag through run_sync return dict 8edeebe6d74af9bfc33b61fcb357ee4571fe75e6 fix: propagate response_transformed flag — plugin hook output survives streaming suppression 7eb6c7f4890da1cf0d1b0eae6dacca723861e7b8 fix(acp): deliver final_response after streaming — transform_llm_output hook now visible 197f63f4547ffd3f927de647760582ac6d2bca48 fix(feishu): require webhook auth secret and honor config extras (#30746) bdb97b8573c4e9826339431d79068a88e41b2655 fix(feishu): enforce auth and chat binding for approval buttons (#30744) 485292ac7de57c3d1b8f9a409061ceb82a563805 fix(feishu): authorize interactive exec approval callbacks (#30739) be27bfed01f4eb2f0c840ad874948943e48a74b6 security: harden API server key placeholder handling (#30738) 2df2f9190bcefcef750193b4258c5900072b6aaa fix(docker): keep dashboard side-process loopback by default (#30740) 4ca77f10594eee5f455c0850f9597bc23b6c4727 Harden msgraph webhook auth requirements (#30169) 3e78e353d78fca217bbbd96a3d8f359ec8cb6402 fix(qqbot): authorize approval button interactions by session owner (#30737) e4a1220f83d9de36ce5be5ef43afae8166ae1d9e security: restrict default webhook toolset capabilities (#30745) c3caca65840b1ccaafc26c22b3e7a1b8c06da192 fix(gateway): remove discord role allowlist auth bypass (#30742) 1f897b0dc935fe40a46c9f2ac4b675a213a292c0 fix(gateway): stop enabling dingtalk allow-all during setup (#30743) 97325598642677898c10f7c127184b0501ed2727 fix(security): restrict dashboard websockets to loopback clients (#30741) fa4e87b25330ca215370280d9fac474a1c882a34 fix(egress): v3 round — GodsBoy/stephenschoettler/arshkumarsingh findings bc3f1f4f34aec277ef8faae4b956ef0c4c19ee50 feat(secrets/bitwarden): EU Cloud + self-hosted server URL support (#31378) c9b3eeabdc0b7624d38fd7a6de85b66f3183c39b fix(cli): decouple tool_progress=verbose from global DEBUG logging (#31379) 58481743749d9de2a62a21d158a741571c986c23 fix(wecom): guard flush task against cancel-delivery race to prevent message loss 1bed4e8eedd9a501bcf5377be8340c30df68ac1d fix(gateway): drop text snippet from debounce debug log (CodeQL) 51bb8c0a9ece94527b6afaffbdaf1ed99ae2edf2 chore: map pnascimento9596@gmail.com for PR #31235 salvage 7abd62719bcd565f5cc0a96683d78c336c5b20e8 gateway: debounce queued text follow-ups 7b930c7e52f82430a9b7d33bd5cb3c5661bbbe0c chore(skills/payments): drop router skill — skills shouldn't depend on other skills 21db25003418684795532ab7dcf970792803927a fix(wecom-callback): retry send with fresh token on errcode 40001/42001 d3c167b64472ee35e52d5201014e940c965579ef fix(profiles): cross-profile soft guard on file-write tools + system-prompt hint (#31290) 4468213623764d2fc58009823604b35f1e60408b feat(skills): add optional payments skills (Stripe Link, MPP, Projects) 4833acf046d7d80e0721847b2964e6825e5a6c4d fix(egress): silence CodeQL clear-text-logging on bws warning strings b207dc28b3d3c4992a5db8364097d02b2aa2abee feat(kanban): --ids bulk promote + AUTHOR_MAP entry for #29464 d46adad22fbe125cbbb70ed793905694d8158f52 feat(cli): kanban promote verb for manual todo->ready recovery 421ab8105248144d9e41506ad710e6e570b42a72 fix(cli): reuse canonical root model key normalization in load_cli_config 2442a0c281ef42ceea5ad3977dbeb87f7e9e32a9 fix(background-review): allow pinned skills to be improved a627981a652c4502425c9689432aef073a9784ec fix(tui): stop slash dropdown from chopping last char of /goal (#31311) 2666009ccc00f653a1db4ff249c9b1aabdb34f13 docs: dedicated Nous Portal integration page and setup guide (#31296) 2b10024ee8eff2074ccd853d6968569acd3110df test(display): cover failure-suffix rendering + update scrollback test ffde8b7b091de432c6e76dc3643403aa21f4d170 feat(cli): show todo progress as done/total fraction 094d732378059a341c7660ab97d1adbe782403fa fix(cli): surface tool failures with specific error messages 6a1aa420e7eb73f895ac6be29ded32abc1e4c3e8 Fix CLI verbose tool progress config fallback d97c3244739fb92b69e23a08cc309b12eb00fea8 fix(terminal): warn at call time when background=true runs silently (#31289) 39b8d1d313841acfe83ab9178ea57280ea766fdf fix(dingtalk): finalize open streaming cards before disconnect a7b622effc96093fef67b697115f05852a5d8b2f docs(providers): move Nous Portal first, Google Gemini OAuth last (#31287) 83f6a83b2482168aadadf5fc687ee82f42b52b82 fix(tui): handle images with codex app-server 128a6837b72277d5fb87af7b74823621efdc2e0b fix(egress): address PR review findings — P0/P1/P2/P3 + CI greens 7a74492134b27cff7643d2cfc8f1beeebfa6b2a0 chore(infographic): add iron-proxy-egress bento-grid bold-graphic 69ffb9cfd4f1029f4aaa4386cf6c7635d0d07ba0 feat(egress): iron-proxy credential-injection firewall for sandboxes 7ce6b504a269ac3f9aed5b406b7a18c432e2fdb5 fix(process_registry): use taskkill /T /F for tree-kill on Windows 22f3f5a75a660ba50ee7bec6a3d2b9eba6613e7e fix(browser): use process-tree termination for daemon cleanup 72ff3e909c73b625ee244ab5ea3d0608ee85dcf3 docs(providers): rewrite Nous Portal section as primary recommended path (#31230) e42fcc562596cf9d0f2708184fa3f990ce31047e fix(provider): make config.yaml model.provider the single source of truth (#31222) 7a4dc8e8d6100e0e135299106b5c7b023f4ea13f chore: map edison@mcclean.codes for PR #29817 salvage e752c9454e3a4aa136f6150307adc0c0c39404d4 feat(plugins): add register_auxiliary_task() to PluginContext API e8fa415a9e29ce7667d131335d2a614e5a41290b fix(cli): validate runtime token refresh capability in Qwen auth status 4254f7dd17e06e8cd976d93fe17ead0363b10c3b refactor(skills): slim AST diagnostic to single entry point 7255050c99ef0bd9ba54a00dbf760ed79baed75a feat(skills): add opt-in AST deep diagnostics 86871ee25aacac6da29a79105cebaeff76499d12 fix(cli): synchronize HERMES_SESSION_ID across environment and contextvar during session switches f63ef74eaf8ba7b67494f8d477c6e356052d40f7 fix(tui): refresh virtual transcript on viewport resize (#31077) dcbcdd6526dc2ebf290dbffabede77967b6eaf6f fix(compressor): propagate api_mode and fix root logger calls 8b2adead78c25142f98da7d7163e7fe5e24e09b2 fix(compressor): ABC compliance — total_tokens, api_mode, logger consistency 75643a615405def3e73201e5b07fc7860343a2f6 fix(env): strip null bytes from .env before python-dotenv loads 514a4eff36a02976580965b26088e2366734da35 docs(simplex): remove broken Docker install command (#26974) (#26975) 696a7143fbeea6668cbc637d19543f111188160d feat(tui): portable newline keys in the composer 87111c7bfe111443ff6032686229c3f393891a2c chore: map Glucksberg noreply email in AUTHOR_MAP 9451087aab30f5f28d3828ce867dd7e902d788a1 fix(telegram): preserve observed group slash commands 7de8cd4c5f67b5b17e64392fac5fdf1b3a986983 fix(tui): clear TTS env var on voice off, and add TTS indicator to status bar 2c34a7da87d7c785f0f694bc2aceb1fd09d2516d fix(cli): prevent temp directory leak on ZIP update failure 3b096d6f6dbe8253aed46a2bc6b1304aaa9097d4 ntfy: tighten robustness, dedupe auth/truncation, add docs 6a8e131a0ab42e23fb8ad5e1e27ce2382f1d6a3b refactor(ntfy): convert built-in adapter to platform plugin b10f17bf1e9321c586cb3afb0d80ef5bd4ae34d6 feat(ntfy): add ntfy platform adapter with atomic reconnect, identity fix, and 81 tests 511b8e2325c621a30bc9a75f00762d820282e72f fix(tui): re-check sticky inside resize debounce + document remount 35fdf111452933032d822ccab4d32166fc361a63 feat(tui): responsive banner tiers 0277194e3b31a72898962c528a5f75fde12cad72 fix(tui): preserve transcript tail across resizes c943fedf9d281fc1320f0ba5a1e3f082cbb13445 feat(tools): progressive tool disclosure for MCP and plugin tools 2a75bec6079be44212b91d0ec895e8c7e4e50161 fix(tui): recompute virtual tail after width resize 521c870a05a928a6dcb8abde64859c5bc2a5e538 docs(tui): clarify scrollbox subscription signals a4c27af6973974b88894020afc1fcb22072a9cc4 fix(tui): measure status cwd by display width d1ad919a440948d73ad74a3b18d963a0763bb08e test(tui): clarify virtual history resize snapshot 4d9791c551bdba614ef6f7f0096ae59e06d6823b fix(tui): reclaim status width when cwd is hidden cc61e3be49aa672d8d1ae75b8057a1b503251b7c test(tui): isolate viewport-height remount regression 11b0d9ed2f89124c1fdd8b2cb39eb4d88830f2f6 fix(tui): keep status rule one-line in skinny terminals 4fea02cc16981dedb7878ce42e94c821d56d332f fix(tui): refresh virtual transcript on viewport resize 874c2b1fe6ec185f9d1da17d31d2c7885d58c35c fix(tui): ignore late thinking deltas after completion (#31055) e6ca730a2219c602284f9807d65497f8c697ce5e fix(tui): log parent gateway lifecycle exits (#31051) 026f64f8e07d8b5588f7e67b1b7fc3f60c5d99bc fix(tui): commit composer input bursts immediately (#31053) ad11327db0b570e72347eddca60b1d80abf0687b feat(kanban): warn users that scratch workspaces are deleted on completion (#30949) 2c4f3ea1968d6c6cbd32b9175290a471edb849cc chore: remove vendor-specific references from app_tools cb12ee4b2db9ee4e97d8cd7d3e50c18eaa52dc00 fix: use 'is not None' checks for session/session_id, remove dead _EXECUTE_STRIP_KEYS a57781f8a9da36f51a8e95318708d28d2c0b3fad refactor: address code review findings for app_tools f8695ed6a7e64f9a62ed73fd559bf6887d69d079 feat(docker): add Windows Docker Desktop compatible compose file 6749e335a333b62666231f99856151e89fd5b8be fix: inject app_tools into saved platform_toolsets during migration 53814b39c38ffe72730364aadaebb48d16844ceb fix: strengthen app_tools behavioral prompt to preempt skill loading efd71e891493b450d5c0e6dcc59231c242848625 Revert "fix: use resolved_origin and Host header in app_tools gateway client" bc2ba1356e7c5c1bc5c088977096417039d0b1f5 fix: use resolved_origin and Host header in app_tools gateway client e0b3fa6eb34aa76dcb4fe995c28aea779cb02b82 feat: add PORTAL_APP_TOOLS to OPTIONAL_ENV_VARS for discoverability 929245ba6938729b11b6d50b24d3e5a69b6953fc fix: add app_tools to mock NousSubscriptionFeatures in existing tests cae7537359c0ba8fceedc0a6423a4d9f30972100 infographic: kanban.db corruption defense (#30858 + #30862) (#30952) c4b8f5efee8cdd3186e465d940bf0e8c98849346 fix(kanban): harden corrupt-db backup against CodeQL path-injection findings 4f835f7e43f9c6c1b90a50951b6ed94b653efa60 chore(release): map NickLarcombe author email for #30707 salvage 39fe4ecee3d0876ca16a4a031349140733264302 fix(kanban): refuse corrupt db auto-init 387b22ad44d86c64f883ec00b7540adc18b9d127 Merge branch 'NousResearch:main' into add-sprites-terminal-backend e97a4c8f379530b556eee9cffb608b2016d87708 docs(readme): add Nous Portal section between Getting Started and CLI/Messaging reference (#30941) 7245bc77eb3b92b311c622806821375709bbe4d2 fix(fallback): merge fallback_providers with legacy fallback_model configurations 7f1b2b4569532d63a7f50e172963da0d4f3082f7 fix(approval): pin 'silence is not consent' contract on timeout/deny (#24912) (#30879) 6855d177531f9abfbb00d0da1f2db6ff91bdb872 fix(memory): guard against external drift in MEMORY.md/USER.md (#26045) (#30877) cc93053b42ea98713cf46192ec340682a3728862 fix(xai-oauth): apply WKE disambiguator to recovery-path catch-all (#29344) b5ea6a5c80075737165f7a2b474886811a675310 test(xai-oauth): regression coverage for the bad-credentials disambiguator (#29344) 8b3cb930c9d06053b8fa9f07fd36c25e1796381d fix(xai-oauth): honor [WKE=unauthenticated:...] disambiguator in entitlement classifier (#29344) 64b3eb0dd70bdbace7d61db1c0050611800b9a64 docs: surface Nous Portal on pages where it solves a real problem the page describes (#30874) f3fb7899d0a4ddc1db72e97ba9f6f4b81c198e30 docs: surface 'hermes setup --portal' and 'hermes portal' across user-facing pages (#30869) 9acf949e3498e84e9f997cbe332b885d938918c1 feat(telegram): edit status messages in place instead of appending (#30864) 4b6d68bd645fee8be171b4c7ee1e2a3ea680b456 test(fast-command): stub _load_gateway_runtime_config too 872211b258d353fa9843c17905e586a1db6cb62e ci(nix): auth api.github.com fetches to avoid transitive 401s 61ac1187240cfaf38167d50b87b5c6b77de29504 fix(webhook): enforce INSECURE_NO_AUTH safety rail on dynamic route reloads b4cf5b65dd1cfa676f5d6077699dba06d38e606e feat(portal): one-shot setup, status CLI, and Nous-included markers (#30860) 6942b1836e95621eea7bf9dd54085e5849819ad4 fix(skills_guard): explain why --force is rejected on dangerous verdicts 789043b691ff1283a0d79fd7e1190a082ccfc04e fix(security): update tests for verdict and --force changes 0f8215f6333b5ac6f3961cada5903ab36b18756a fix(security): correct verdict logic and enforce --force limitation in skills_guard db489a315f21c139219b9e2d457a7b7b62fdec7c fix(tests): allowlist tmp_path for kanban_notify artifact delivery (#30852) 5b6f0b695b8182ebd8860ca9fb45bf8661be2ec3 test(tls-fd-recycle): pin shutdown-only + thread-aware close contract (#29507) 30c22f1158c001cf35ce4a2cb5d2dc188fe43066 fix(api-call): defer client.close() to owning worker thread on interrupt (#29507) e2a7d73a66a8aa75e78002fbde53b41b774f8f9b fix(force_close_tcp_sockets): shutdown only, do not release FD (#29507) 53cb6d32be17b6a873614a5d7cca821b6ae8319e fix(agent): use atomic_json_write for request debug dumps instead of bare write_text b183be95a28bd8a6447ec4ffa99d030186e37afc fix(gateway-windows): atomic write for .cmd and startup launcher scripts 60b0a0e00671f8bb809b57cf73fbf90a07803ec4 fix(qqbot): fix SILK magic byte detection slice length 0e7448d63abd6864fa7ed4c6b20030890abf813e fix(qqbot): use original attachment filename for cached files a54f5afc7086ffe14bc5a46d1e56e835c61092e4 fix(qqbot): handle op 7/9 and expand fatal close code set bbd77d165cd603759f183e620c1e626580e31135 fix(qqbot): add INTERACTION intent and expose video/file cached paths 66d81f9e14281f1f67f8f259a3a8cbae5c9d75df fix(gateway): don't swallow expansion errors in runtime config helper 2362cc4688364ca8d03924ab1f64e9bb2f5f0cb3 fix(gateway): enforce env variable template expansion on runtime config loaders d21ac579e99f5561de724f13500b930bb28848d7 fix(gateway): honor key_env in auth-failure fallback resolution 99671a86347769240ca6f4c17e059b7366bba64d test(kanban): allow tmp_path artifacts past media-delivery validator 5772e638c9babef4d365e9e9ebb68cb9ff554c7f chore: drop in-repo infographic/ directory; keep PR-body URLs only (#30854) b2e6fdd3bfacae3ad54efb463260a8ed3578f3f7 fix(agent): log warning when fallback model normalization fails instead of silently swallowing 70aaa774be92d8c9ffb6b9745f5c47bb69b8198c fix(opencode-go): emit Kimi reasoning_effort, match KimiProfile shape 3589960e03d0429f485f43ee9b6fbe0f33bdc9ac fix(provider): expose OpenCode Go reasoning controls 71291d83cd2d659c4e8314b3d5613f524f718769 test: keep tirith checks hermetic 52a368fa722f91337786739181eb653f779d4b86 fix(gateway): preserve WhatsApp pairing approvals across JID/LID alias flips 3127a41cb19f520dbeea93f21d29957fe0d11cde test(acp): pin parse_model_input in slash-command tests 6a2df9f451a2ef5f5059466eefb2ccf111c4885d docs(env): clarify HERMES_ENABLE_PROJECT_PLUGINS contract (#29156) 8bf99227f0b107a58a03d48a520d596b609e5f54 fix(plugins): block plugin-api path traversal + project RCE (#29156) da636e982b1c6536fc499ab2cebd5bd78677014a test(plugins): regression coverage for project-plugin RCE chain (#29156) 09f85f2cf79362a2f7963754b49a44cb3d234176 fix(plugins): apply truthy env semantics to project-plugin gate (#29156) 11e6dd3c606e102cf7f9070a561abdd9312182c6 chore(release): add AUTHOR_MAP entry for egilewski (PR #30432) (#30833) 41d2c758c39a20c1213b65253a3459c1f96759a3 Fix unsafe gateway media path delivery 4a91e36495e86e54dfa3ef52bad04b31b084525a fix(gateway): separate observed Telegram group context 0988ab83b7e8b282c3313daf42e55701d0f77bff docs(plans): trim s6-overlay plan to a post-implementation reference 3b69bdb74ef601af26e7e423febbf901b0e451ef test(docker): poll for boot-log signal instead of fixed sleeps e3050657aae56a3d84c8b056a0de5a62656c22a3 docs(docker): deprecation warning in entrypoint.sh shim 541b40532ad9a818a0d25b72a07d5a2af33c2b29 fix(container_boot): publish reconciled service dirs atomically 5b1fcdd16b69f0450df094bb9ba3e234b899bfc3 fix(container_boot): rotate container-boot.log when it exceeds 256 KiB f83b9b96d18faf888aa06274ade4cea7470480a0 docker: drop sh -c wrappers from stage2-hook.sh 8b6733ebe2358d7ba3f20071475c2a3a4e3961c1 fix(service_manager): rip out dead port parameter 7b16e4448a354bad147f016fa0029f16b0ce6537 docs(compose): update entrypoint comment for s6-overlay 9ba349b6e9490e2ca73f2358cd065ac8c7e5f31b fix(docker): dashboard slot stays 'down' when HERMES_DASHBOARD unset 1759c0f0905c235eb4aa1e0c7a5d515a32c91b47 fix(service_manager): friendly errors for missing slots and s6-svc failures 367c15b1dcc3b0f16a33bd2e612a9a01b16d4e2b fix(container_boot): always register gateway-default slot 04d1894f36671be58f36e8c5eb0679eb50611371 docs(docker): dashboard IS supervised — update note that contradicted the PR efd3569739b98e2e6b75e1e40b353f06aa5c69ae fix(gateway): route --all stop/restart through s6 under container 984e6cb5b8bbfc7f0b1c18a3ec3c599ad98614cb feat(whatsapp): add WhatsApp Business Cloud API adapter 8ae959adb63ec3a2fe38d3164a219ac9f28a1fa8 fix(ci): drop --entrypoint override in hermes-smoke-test action eb59d6f77405b5adaf5e0a1d12b5e466b3e7bfea fix(docker): SHA256-verify s6-overlay tarballs 928e52e5747721a9dd9a5677a7c423ab3987eda1 fix(docker): support multi-arch s6-overlay install (amd64 + arm64) 2f8ceeab9a3401fafa911a5c87a1e6a1195a6a67 fix(service_manager): s6 detection works for unprivileged hermes user 729a778af0b3f984b4934361cad3050f6afb79ba infographic: PR #17659 read-deny credentials salvage 97e975edd2cd666b09412cca5ee22d3e5ad431de fix(file-safety): widen read-deny to .env, mcp-tokens/, webhook secrets, root 567ea61298f79d52c7e5fd478df5de3c0dafdf37 fix(file-safety): block auth.json read via TERMINAL_CWD relative path 056e00a77e0f540b8e110f397c9b2068003f9488 fix(file-safety): block read_file on HERMES_HOME credential stores (#17656) 7f7245bf62cb81537bab33ea4d98f67184618848 infographic: PR #6656 skill hub safety audit salvage 3f78d8073cda258c1493fedc53d4eb0dcc996036 fix(skills): make content_hash filename-sensitive too (symmetric with bundle_content_hash) b82608a6f5734b0df235ef7ed54b88f140262618 fix(skills,pairing): path traversal guard in uninstall, lock list_pending, hash file paths 8cf977c8b135593ee21156da6e4afd6f30cf68f4 fix(plugins): widen _sanitize_plugin_name for category-namespaced names 487c398dcf5dd3a977476329f08115b88afb3bca refactor(web): dashboard typography & contrast pass dc4b0465b55811c4516f234b72358d9ec0f0a435 feat(ci): use 6-way slicing based on benchmark results e7cb5d4b68c362c78e5c25eb98b21fc05f06e1b5 fix: clean push triggers f89afdbd17f6e8bc2e25dd663fccf313edc47d37 fix(test): deflake two intermittent CI failures 510df6eaf47e7e8aed2b338e0bbcd0286be7601c test: 4-way slice benchmark (with cache save) b689624aeeef190c93a6c87f6b28ef07a44e8fc6 feat(ci): 4-way matrix slicing with LPT duration-balanced distribution c9e5a9bb087ca7704f65d4dfffaa71fff4eaee71 refactor(web): consume DS primitives, remove local component copies 3adb74269ab14186af416908ec670f33997b3d76 bump gui version to 0.0.2 3b6686b596962cdb0fd038a97a316a8524eaf21c Merge pull request #30165 from NousResearch/bb/gui-inline-build fa9f7882ef22ca8fe805615440d7b7a0eb098d2a Merge branch 'NousResearch:main' into add-sprites-terminal-backend fb677fb73f467ef3c005dab26df424cdb92b62c5 feat(dashboard): polish sessions, env, keys, and page chrome UX a84cec61cad90f97f8eb142ecaf6830dac796c52 fix(minimax-oauth): refresh short-lived access tokens per request (#30619) 2f320cb35a96330caa0f31e4d0cee4c610f5fa26 fix(ci): supply-chain-audit uses two-dot diff, causing false positives on stale-branch PRs 2233b8b2447299e6118e2f8b2dbce20867db960b infographic: PR #30609 Termux cold-start salvage (#30618) a3beee475b0ed94e76f395d5d8bac87e2bf7993c perf(termux): speed up bare cli prompt startup 6c3fd9714f7fb623ebdbb173c3169596f87f43d0 perf(termux): fast-path cli version startup 31cf43e993c0d4583567e2fccc2f13e3758fa5d7 chore(deps): bump qs and express in /website d11cbb103219b857a99645cb385a98d67242ad4e infographic: PR #30591 Discord adapter → bundled plugin salvage (#30614) 7849a3d73f2d3fcf905cac69eff726160f40956a fix(gateway,discord-plugin): _platform_status must respect is_connected=False, not silently fall back to check_fn cc8e5ec2afbfd10a3cff4e710210dd9ecae64a33 refactor(gateway): migrate Discord adapter to bundled plugin (full Teams parity) 4f988634f81d9234d072d90cd6027b0699a46cea infographic: PR #27612 Nous URL allowlist salvage e32d2ffc1db16cd3af71c15d9f15dc7dbfd50a76 fix(security): wire Nous URL allowlist into refresh / mint persistence sites d33c99bbb1680c7cb7670415928d17462197ee90 fix(security): validate Nous Portal inference_base_url against host allowlist 09afafb87e486eea62de0d7892a127808f121b0a fix(xai): resolve Grok Build context for OAuth 44f22460386f0f528ef0c07c04de4dd4cac9c41d fix: remove feature branch from push triggers — avoid double-running on PRs 64bccc186f6a9c19cb34cecc3fe55fc6020c022d fix: stable cache key (no SHA) — durations are about files, not commits 967bcb175a300b653cb0d5cf83f3d5826068a3e8 refactor(web): scope Mondwest body typography to dashboard content 8b0afa55b22ea6016b9396ddc0124be251e5e6a8 feat: parallel test slicing with LPT duration-balanced distribution f3058fbec7a9065723f090beff0a9e25c0ae529d test(image-shrink): accept clamp_dimensions kwarg in mock resize signature bd3bad232bf4b09086e9db266aa381d5a6d4609a refactor(vision): revert Pillow-missing warning to match codebase pattern a2546ed4fe8bafb5040547471ed64c9799e9d9db refactor(vision): simplify _is_anthropic_provider; drop manual probe script 967c15a397ceedf198782ad3833490a9d9298969 fix(nix): refresh web npmDepsHash after merge lockfile update 2f253a4f55d4c936b120534112e827bb205cb86a fix(vision): broaden Anthropic detection + wire clamp into browser/compression paths d1a1fa2970d9bd93793eaf2144208fd0b4a41e38 merge(main): resolve package conflicts keeping @nous-research/ui 0.16.0 b03166f5c5b96d7fa498d1909bb65aa20a5eda92 fix(web): address Copilot review on ToolCall labels and copy button b96a1a042f173c135d5f2fd0bd9d709b9c63a21f fix(docker): include anthropic, bedrock, azure-identity extras in image 73a3de5798bb1c40f05401579830f24778e4bfb8 fix: strengthen app_tools prompt, add to CONFIGURABLE_TOOLSETS 3a260761940d011114e07ac7b8f4f1e3cf85246a fix: rewrite *.localhost origins to 127.0.0.1 for Python DNS compatibility 04d3a2e2be3ef4e133bb596706f2a510f4705dff test: add unit tests for app_tools gateway handlers 70882abe9b8c763508d6b5305d26c971fb199813 feat: add app_tools to hermes status and subscription features 2771d404a382c219fd9e239a58df2493ab7c3203 feat: inject app tools behavioral guidance into system prompt 7150715e19bf805521517edbe861fdf53f7b5911 feat: register app_tools toolset 4eab358ff75094e4fd3e988488ec9cda274a80c8 feat: add app_tools gateway handlers and tool registration f96db81d3b9b9d4f1783f22dacdb7d43bbb97d02 feat: add portal.app_tools config key with migration fb81807ce5bc08c6b00c4bfbcd239895ec9bdd85 docs(terminal): add Sprites to features/tools.md and security.md 9ca839183a62aab14dcff006771667f5e4651104 fix(security): register Sprites in approval/blocklist/dispatch sets 62ddef962b60ead95d97b01a977a356f0d2873e2 feat(terminal): wire Sprites into status/doctor/config CLI surfaces b0f2009c8b0a48bb713a56bdf818f78706fc8b99 docs(readme): group Sprites with Daytona/Modal under serverless persistence 76ec577cc4713ea295cac86187f19db28b19d704 docs(readme): drop the Sprites link from the backends summary 4253a46d77dd04572e753ff816f6b3e85d19562f docs(readme): add Sprites to the terminal-backends summary 479911b08e204069285f915d38694cd49a1d1651 test(terminal): add Sprites unit + integration tests 5ebb6c0407baac8b1e50633c1295c0829fa56d38 fix(tools): bound sprites-py to <0.2 per supply-chain pinning policy 6f67d9e3bd8c61ac9d997968e0bec609bd578dd6 docs(terminal): document Sprites restricted tokens (prefix scoping) 59134fabc32df19f11fc355116df72cc5b42eeb8 docs(terminal): clarify Sprites intentionally skips sync_back 4df877e09ccb71691ea1137f9046ce624f51539c feat(terminal): drop SPRITES_BASE_URL override; endpoint is fixed 2f6a3495416349e860edd1aa835de62e7ae16417 docs(terminal): add Sprites OPTION 7 to cli-config.yaml.example 0190403900bc35ede0eeef91eef6ae7ccf55fee5 docs(terminal): drop "Firecracker" from Sprites language, prefer "cloud sandbox" be5ba8449b4777317c94898e62fdc7da4a2acc1c docs(terminal): align Sprites language with sprites.dev positioning 4954e364cf5f1a0845808d1bf001fa9fdb0cf6a3 docs(terminal): document Sprites backend; drop region + compute knobs d2e50534a9f788c96de2297a5dc03d67ce27c79d feat(terminal): add Sprites cloud sandbox backend 1e71b7180e5b4e84905b9a3086cf9cecca139562 infographic: PR #14157 control-plane write-deny salvage 42104218e0f8c6d7d6d40557e58e70696dc9c66f fix(file-safety): also write-deny /control-files in profile mode 1f5219fda5fc862c558c5dcd8cbb22453d2508ea fix(security): protect Hermes control-plane files from prompt injection 6f436a463ec2e00a9db951bd6a9407ab5c5a1156 infographic: PR #27784 anthropic adapter refactor salvage 9d6140883704a4e4bb0defe8e5da4d36e15e0806 refactor: extract 7 helpers from convert_messages_to_anthropic ec2ab5bfaf587afb36adda11f54849e4bb25af8d infographic: PR #8056 hash pairing codes salvage 82c203582358cba7410056af6220f293a59a7fc3 fix(pairing): handle legacy plaintext pending entries during upgrade 2e509422ef30a6feaeffb93d77068327fdbf9ae5 fix(security): hash gateway pairing codes instead of storing plaintext 3ac21251405d6ee77ac0e08ade31dfdb1da8388b refactor(image_gen): port FAL backend to plugins/image_gen/fal 7dea33303ac9c72ba21999bf90192422c04947b6 infographic: PR #30373 aux model picker parity salvage d246f9a2785c61916b61deed5af64586d390eb44 fix(aux-picker): drop stale session_search slot c1e93aa331b85c695e6530926f12c62709a77a9a fix: add missing aux model slots to model picker 8b49012a0a8d41fe0566d55e2b1e97b607a4e998 infographic: PR #8306 webhook HMAC bypass salvage 3fc715ddf5b38d38caa2c6933135eddc4a1b1277 test(webhook): regression cases for empty-secret HMAC bypass 9c90b3a59732a4abec952c3260ebf7ec031ff2fe fix(security): validate secret in _reload_dynamic_routes to prevent HMAC bypass 22b0d6dc1aa53bc37e2883feb736e62e536e13e2 test(tools): centralize disable_lazy_stt_install fixture in conftest 5dc232a6e26e93bc602ac7e409a93d44ef2ab38a test(tools): disarm lazy-install probe so _HAS_FASTER_WHISPER patches work c25f9d1d3665355940d3f1c9fd0097831e49746d feat(secrets): label detected credentials with their source (Bitwarden) (#30364) d617858896788aaddce77746e3bd890b3e75124c fix(openviking): target-aware mirror subdir, drop private-attr access, dedupe URI builder 2d587c56622ff66cb27825a65a4d3fbcd4ecf249 fix(openviking): store memories via content/write API instead of session messages caf0f30eab7aad9b5cea6ecf68253e863b83be57 chore(release): add sgtworkman to AUTHOR_MAP 70d53d8b75cdc957da009ea0a177b962530ebc93 fix: run computer use post-setup when enabling tool fbdca64f73476001b8909e542a4343e50f242e85 fix(computer-use): skip capture_after when action failed (ok=False) 07b7cf6fe431d6fd49e91d327dd610b8bb7fbca2 chore(release): add rodrigoeqnit to AUTHOR_MAP c52cd48e25c86e3e5cf3676dfa221a9a32f0bff8 fix(computer-use): add set_value to ComputerUseBackend ABC and _NoopBackend stub d3f62c6913c920b8e13dabb66f9eb3f8fed86645 fix(cli): clamp curses color 8 for 8-color terminals (Docker) c769be344ac939a38f0a7e46f45b1802eec5f329 fix(agent): recover from providers rejecting list-type tool content (#27344) (#30259) 372e9a18cd0e446a979e6fb06d40dc4d65d4070a fixup: log lazy-install errors at debug + AUTHOR_MAP for CipherFrame b5c6d9ac08a841b466bc39b9569ff1ceacd4ff97 fix: wire STT lazy-install into transcription_tools.py f6f25b9449dbf05e1aa59759e2c1faa0d46e681b fix(agent): fail fast on small Ollama runtime context e77f1ed5f7c294c762e5f29dd12f7d5a69fe5c08 fix(agent): widen toolset gate to context engine tools (#5544 sibling) 4c61fb6cf63682e27e8561a591abc9fef9986ba2 fix(agent): gate memory tool injection on enabled_toolsets (#5544) 1264fab15660b7341aee6123e332e58b91fe2bca fix(tui): surface verbose tool details (#30225) 82e45ab4283df9d5ae17b8f123aaa1b1954d0538 feat(desktop): launch packaged gui builds by default 4e2c66a098340e349b8e2adae73a4df704f86987 chore(release): add AUTHOR_MAP entry for Stark-X eb51fb6f501efc97ba026807f49517d326c4105f fix(ssh): keep bulk sync extraction scoped to .hermes 4a2fa77c15f6a645289bffd4ac4eecb08f047366 fix(cli): pre-check CUA release asset for Intel macOS before install 9896e43db5c3fe35e20bc256d92ea1a9311a442d fix(skills): load Linux-tagged skills on Termux (android sys.platform) d08c2a016ab369b68388429cd13d44a364c94585 fix(tui): termux-gate composer rendering tweaks for Ink TUI 0e2873a77d221649f613cca266612406e63e5870 fix(computer_use): build summary once before aux-vision routing branch 280dd4513a838791462088120d24a45aedcb1c74 fix(computer-use): address Copilot review on max_elements cap bb694bad426a296855748f852e697d36859928a9 fix(computer-use): cap AX `elements` array to prevent context blowup (#22865) 17264cc14712070bf126c60e163d99639944c107 feat(desktop): add hermes gui launcher 9e30ef224d497bd1be8f5cf19b7a8151757b9716 fix(tui): preserve scrollback when branching sessions (#30162) a6f7171a5ed47727c8d61a47c840ee5622c06819 feat(docker): remove gosu from bundled image; s6-setuidgid handles privilege drop 7d07dd60a8f192d7acf0859e20d5195de028bc40 docs(s6): document container supervision; doctor + skill + user-guide updates 57c6e296663c1bd065c9eb3bf576244db065b1f3 feat(docker): per-profile s6 supervision + container-restart reconciliation ad5fdab092ce92b7c5407121a5991bd009b04d0c feat(service_manager): add S6ServiceManager for runtime gateway supervision 4826ea7b413feaa05a27f85cb546ddbf2a099d21 feat(docker)!: replace tini with s6-overlay as PID 1 cf6133495c9275d1d87fbf94ba289d4ba64ba06c feat(service_manager): add ServiceManager protocol + host wrappers c6febe37658d34d1c5de4f44136f2dd71daa0e1b ci(docker): add hadolint + shellcheck for container build inputs a957ef08345d31d47d5860679a0ab9795270529b test(docker): stabilize Phase 0 baseline harness 60d8e07dedd50ad79e9bf95c0449f0846dbdc762 test(docker): apply 180s timeout to docker harness tests 244d62ded3d25ef497724b87aa884608ec407363 test(docker): lock baseline behavior for Phase 0 harness 705256aaa62c090ff889c4cf64452e34282522ac test(docker): add conftest fixtures for docker harness ef536880a30c512c1f2928ede5c48abf641b461f docs(plans): add s6-overlay supervision plan (v3) f6e6f00ff8e039c6c57a8c2a2921fdaf4c7ed37f perf(desktop): useDeferredValue for streaming markdown so parses don't block input a7cd254c29a039b0ded8638d216b8a510fa7e376 feat(tui): mouse_tracking DEC mode presets (salvage of #26681) (#30084) 7003df708c3d59bbcde940f666b4eadc5b3d787c perf(desktop): floor assistant-text flush gap to 33ms for predictable batching ea510a7c02d9e26ad39b2c18c41bc51ce3b10803 perf(desktop): memoize MarkdownText plugins to stop churning Streamdown 3143f79b8f8aa93b1185d007931c4dae02f79e26 perf(desktop): memo FadeText so it skips re-renders when text unchanged 4d58e48cdbe558ae7b0e693577732c4d8301b7be Merge pull request #29387 from NousResearch/fix/no-docker-tag 99f2a9503c5106ccae03d53a714ab6f6345cb353 chore(desktop): synthetic-stream perf harness + scripts bec2250d2c8349fc85201bcd1aa39bcaa766a555 test(computer_use): end-to-end regression for capture routing (#24015) e02a7e5e1c87271ee4f7182aaee2515dc722e189 fix(computer_use): route SOM/vision captures via auxiliary.vision (#24015) 5ce5fe31814393438d9fec260aab3695516b6564 test(computer_use): cover capture vision-routing helper 531efe7208f9c813bdd7c00ca09ec0425788769b fix(computer_use): add helper to decide capture vision routing 2a474bcf721f2bab1b53f2c1b8331ac0cf2b6b01 fix(termux): resolve packed-refs and worktree refs in skill-sync fingerprint 6dbbf20ff4d3f9b51be9327286f562d5349d33e4 perf(termux): speed up non-tui cli startup 5aa4727f34c279e5d628bb13cb3c4a0681d9c283 fix(computer-use): surface app=… filter no-match instead of silently using frontmost (#24170 bug 1) 5abf89ddd16dee1f7f1777143155f5043f7b7704 Revert "Revert "perf(desktop): use textContent for trigger precondition"" 563ad23853e750b69495307cc091d05fca6b1f5e Revert "Revert "perf(desktop): cut per-keystroke layout + listener churn in chat composer"" b7b378e3a43f94b9f4a1a34155707c6301c0fd87 Revert "perf(desktop): cut per-keystroke layout + listener churn in chat composer" 493dd5b660c2165db0fec702b4565a971d76bd53 Revert "perf(desktop): cut FadeText forced layouts during streaming" 0739588f4896902f7f0d4ded8b5eaeb92bfdf042 Revert "perf(desktop): use textContent for trigger precondition" a6a78ff08a31129a3a47fa55aca260d93af913a5 perf(desktop): use textContent for trigger precondition e5296949190a49b315cfbc62a718424146297d34 perf(desktop): rate-limit thread auto-pin during streaming a7e6a4fc0b8815e692fb0431c0fbc2fb8b3f4aed perf(desktop): fix "Enter jumps up" on long threads e18c233c1e37cc0cba79d85345dae6460e2bc37f docs(desktop): correct leak-typing numbers on a real session 4cc18877c69bbc2663fab79eebacdb7018f85c14 fix(computer_use): preserve app context for capture_after; fix element label parsing (#24170 bugs 2 & 5) 3fde8c153da14545b4a12a14383c6f0c927b8623 fix(skills): prune dependency/venv dirs from all skill scanners (#30042) 3462b097e2414f05102f36c2b1af016a5060aab1 fix(voice): chunk oversized CLI recordings a1b8631176c98df209867315a2b1240c9ca0a63e chore(desktop): drop diag scratch scripts no longer needed 552e9c7881acd8f84df5954191debc69fa87c9f9 feat(secrets): Bitwarden Secrets Manager integration with lazy bws install (#30035) 88e7d7537cdab87200405edf298e38cb37e0a950 perf(desktop): cut FadeText forced layouts during streaming 18cd1e5c728ddf93a854ac9818f527013a9f6daf fix(computer_use): correct type_text MCP tool name and implement drag action bff1b3261d18a2427ac6c345c99f8312728346dd perf(desktop): cut per-keystroke layout + listener churn in chat composer 80a0c829d78b6f7703ea8cdd48698f9f49dad136 test(vision): add wiring regression for provider-gated dimension clamp f4b32301cea4570a3df9982bbdf76a8da868a0a2 test(vision): add manual verification script for Anthropic pixel cap 0ce12a9241051621af4c3406a27bb793bb3154d7 fix(nix): auto-refresh npm lockfile hashes 56b79f12ac68244da801fdf4aa3e65837aba0386 fix(dashboard): remove country flags from language picker (#29997) 3d2f146460a6347095ce0f65b622fff31e6a3f68 fix(tui): also pass --expose-gc on the wheel-bundled launch path 2e3f5762984a9716a35b7185e02205cd6a429843 chore(release): map yichengqiao21 to YarrowQiao 2ea7cf287e8b8d9590cc5be901396aaa2704bc92 fix(tui): pass --expose-gc as node argv instead of NODE_OPTIONS b3309f3c0f4d417b8f0ec7d7313ee961694e0b76 fix(vision): gate pixel-dimension clamp on Anthropic provider bfdb528a761897e4ab61e10df32125a910a1f176 fix: fs icon color 085c33ed7085fc856d13eb4d73a36ab27a6f49ec Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui ba9964ff0d68002d9440f6b8a64276d7c34a77a4 fix(custom): pass custom provider extra body 2fdefca570973eff014d60aa0904aa39396524d4 Merge pull request #28269 from cresslank/chore/tui-remove-unused-babel-deps 48be2e0e4dbc4489f418e8d58794790c9c830390 test: use subprocesses for each test file (#29016) 2882899925f3556b341d3e17fd7c9cc6f161cd0e fix(vision): clamp image dimensions before inline base64 encode 87d9239009f3dae87effc7735131010b7f72a475 chore: trim verbose comments/docstrings, add AUTHOR_MAP entry c3a09f78352c70cf89f10ebc66a4faaf1a27e6d4 fix(background_review): propagate parent toolset config to keep tools[] cache-stable a7cbf3e232d7c90ad2bd96fcdbecf03f828a173e chore: trim verbose comments/docstrings, add AUTHOR_MAP entry 6c26727bb3fddb95099c3cde6cbc61c01d5de180 fix(gateway): extend observe+attribution to location and media handlers 434e99895640a5d2622c1c902fe07b30eae98e79 test(webhook): regression tests for empty-secret hot-reload skip (#8306) 578f8c15beb924b47f820681d693f01747386434 fix(security): validate secret in _reload_dynamic_routes to prevent HMAC bypass 5edb346c75fe3425a8c222474280368c620a06c0 security(file-safety): also write-deny /.env when running under a profile (#15981) f722ec723f7521b0a8f4f6f7b0a8887861f18ea6 chore: add nycomar to AUTHOR_MAP be0728cacc5e3c8edc7a2ca93908ceb136da101b fix: handle Discord typing indicator 429 gracefully 975e13091e9562011254fba1dbc3b4245589bb74 fix(cli): honour image-routing decision in quiet-mode -q --image path 32aea113f090e6718c9d13eea14f0eb52dbd52b6 fix(agent): consult supports_vision override in auto-mode routing 1c76689b2852dd95dc1b10ad534aeda8d6c8d657 fix(agent): resolve supports_vision override for named custom providers 24c7ce0fb86d14846c6e67ac96285e0662eb26e9 feat(agent): allow declaring supports_vision via user config d5b73937db88c8168782e6216ba4f28b679c66ca fix(cli): plug silent-divergence holes in --branch flag b4afc6546e0886c3e65662bc5fca07396c3d9991 fix(xai): restore encrypted reasoning replay across turns 127b56a61aa84c26f52feb8b672c89112f607a1a style: docstring + whitespace cleanup on secure_parent_dir 4ead464f97efe3eb8a5c775205b34d65b86fe85b fix(security): guard os.chmod(parent) against / and top-level dirs 3bbe98011541158db6dc146390d5c870456b2e57 chore: add Glucksberg to AUTHOR_MAP a9db0e2c742eaed9c910f58d6e8184f350f18cc3 Observe unmentioned Telegram group messages c6a992e3e3cb99d935da3d059093b5b1f839738c fix(security): derive _API_KEY from host as final credential fallback 9514ddbee273b9d9d72eeb60579384c0f40f5c8d fix(security): address review feedback from pmos69 59088228f69fe852edc8ac613641745c0bc23b51 fix(security): prevent API key leakage to non-authoritative custom endpoints 51689a420696b2bd4883281ce0ee2848b28e9a9a feat(cli): add --branch flag to `hermes update` 5672772dabc2dea50075fc10f99833f01dd156fb fix(gateway): reorder telegram menu priority — everyday commands first b9b6e034d57e3433df9a25fd7972b9e969cbd82d fix(gateway): prioritize Telegram command menu 1566d71726bd68affb1bfbeff1663a4ccb35f36f Merge pull request #29342 from NousResearch/fix/tui-linux-copy 08a3207fe157ffb9c5cd3607a0e5a54a78f39617 fix(background_review): propagate parent toolset config to keep tools[] cache-stable f7441f9c42254bdf1712e99bbe2cc15b0f825d16 fix(nix): add xclip and wl-copy c42edd80552712f797202656ba9c8bccc63c5ecc fix(tui): clipboard copy on linux/wayland 8ad34db55115e2334ad296e6502b9b75d6bf2a7c chore(tui): remove unused Babel build deps c6a380eb6c7ab28a91a76674030d5ef37ee438c6 fix(skills-hub): widen identifier-dedup to GitHubSource + fix test patch path 8f9232789118060dfed3752eea1e866827bc9b98 fix(skills-hub): fix dedup in browse_skills() programmatic API fc7e04e9eddb6e50204e2fee0f91847fa05d6821 fix(skills-hub): deduplicate search results by identifier, not name 3ce1cf2bb768f39026e059f5236522dea2a4afe3 Merge pull request #29484 from kshitijk4poor/kp/x-search-degraded-flag 1a7bb988fcd323ce042ab4b526f0a73bd169426b fix(gateway): harden kanban and provider cleanup races 2a352f96eea3175f7b73a083c3a391b2887da487 fix(x_search): surface degraded results + validate dates fa48c2501fafc661585d2e54f4cd06791b5741a5 Merge branch 'main' into bb/gui 31a0100104f86b6bf751bde40f77686ccc11e6ba feat(state.db): persist platform_message_id; restore yuanbao exact-id recall 0cc1a1d2d968c5964dfc427833faf05bc7d104c6 refactor(yuanbao): drop dead branch A1 message_id loop + pin missing fixture c634c07bcc6ec245daefbd879a85e9e72ef6d196 test(gateway): pin DEFAULT_DB_PATH in fixtures to prevent real state.db writes 33a3cf5322dc49cdcf45976dbf0175048e45c6f0 docs(sessions): state.db is canonical for gateway messages b4b118c20122082cf5b81da1760b1ebcb43708e4 refactor(gateway): drop _append_to_jsonl from mirror 351fdcc6e6d763bd5d405d90d467a6d52eabf1f5 refactor(gateway): stop writing JSONL in append_to_transcript / rewrite_transcript 971cfaa38c6dc048be508cb4707a5f25c6087dfa refactor(yuanbao): migrate recall to load_transcript() 024a8e3ee90d79df5b6e58d2b09976eec0e12a89 refactor(gateway): drop JSONL fallback in load_transcript 1d27be0ff3688ff6382ea0914401307f94214a25 test(gateway): pin SQLite-only load_transcript behaviour 4d2df86281551614056baba8300bea6d04d5396c docs(skills): clarify external dir mutations 57a61057f563e826a992ec98f96bdad176ada592 fix(deps): bump pydantic to 2.13.4 to avoid pydantic-core thread segfault (#29021) f741ef25cac5b8ef3ef8d0b9a6960feb1f8e4fb5 chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /website 419910ee210fffbeeb01419eee102a5227160b5a chore(deps): bump idna from 3.11 to 3.15 (#28883) fee88105f9f22ef74dd7f3620ac1b7654b8716b5 chore(deps): bump protobufjs in /scripts/whatsapp-bridge (#28889) 27506cc02d511761b319dfa440f15a6e96f6cd0e chore(deps): bump ws from 8.20.0 to 8.20.1 in /scripts/whatsapp-bridge (#28975) 88f5186d3573a1a96215206980b1ac2c9c637680 fix(tui): anchor splitReasoning unclosed-tag regex to start of input (#29426) b92db9213aed47edafcc5a6b73566e1dc2270598 chore(desktop): bump version to 0.0.1 eeb747de25b0e3909bfeda7f2bbd5fadc1e3c790 feat(sessions): opt-in per-session JSON snapshot writer 6fc1989a5dd713563274fd56965735c48d026291 chore(release): correct AUTHOR_MAP for jonny@nousresearch.com b6c6f650eebc05e7fbb14dfa1930df6d9d8731c7 test(session-log): pin no-session_json regression + drop trailing whitespace 6f1a5f8597043e358f7a9f56fbe671ba1b560eae refactor(session-log): delete dead _clean_session_content helper 9d793e8e58744d234846062a8ba9edf65c090a08 docs(session-log): state.db is canonical; ~/.hermes/sessions/ is legacy cebd48081885b3b49947510759b6c3478bf334ba refactor(session-log): drop branch/compress re-point of session_log_file c547392fd48c3699ddda814000e1bf777461e3a7 refactor(session-log): stop initializing session_log_file attribute ce2678518779e6b38b3ea9a2a392f888a9a7d3da refactor(session-log): delete _save_session_log and all callers 945fd9c2222c8de6073f385214a38a56a6b74ead chore(deps): refresh root lockfile for dashboard @nous-research/ui 0.14.0 c29b4f55d986bba18028da653ce0c2485383d348 perf(termux): speed up tui cold start 28781682ec4aeae3a497bc603f040dfdfd41c358 test(desktop): allow `node-pty` bare-require in packaged entrypoints 928280ca2ca5a8565bc83f99ff93c6eac5ed5e76 fix(desktop): probe steps 4 & 5 of resolveHermesBackend before trusting ef43938e2b9f640daa035c85d791db4b36c4d34c fix(ci): stop pushing per-commit SHA tags to Docker Hub ca192cfb773915c9d8113352b8646d3ce9329424 Add opt-in xAI TTS speech tag pauses 5af4b73f87bde8f4621e1dc0f0e8a07df0d60a07 fix(xai): align migrate retirement map with docs 12842d32ce5f69ba93dcf552b9ccd888582202e8 feat(cli): hermes migrate xai [--apply] [--no-backup] 9ff98daf712c938161fc172dca9662209a3fdb01 feat(xai): apply_migration — rewrite config.yaml in-place via ruamel round-trip a8a05c8ea73f08f4660664de0b16e2f729fb8850 feat(cli): warn about retired xAI models at chat startup b4ba42550c9260ae6e5114aeaebfa2c0c5a8e099 feat(doctor): surface xAI model retirement in hermes doctor 6f3a020e62bfbaa684e58e505342c332c3c3ccbb feat(xai): detect retired xAI models (May 15, 2026) edb2d910577bfdc64792e5d3bb28e842e7f9042e feat(web): migrate dashboard checkboxes to @nous-research/ui + DS polish (#28814) 42c42884113d8fe2567f66266fa486be9fcd040e fix(chat_completions): broaden tool_name strip docstring + AUTHOR_MAP 258965663c46d406a324356274f529586f7ce22c fix(chat_completions): strip tool_name from messages for strict providers a30950cd70501840f71e83647062216bdea0fb4e refactor(yuanbao): drop dead branch A1 message_id loop + pin missing fixture 36d2bbe87e4a387e4526b0a59c96191293571305 test(session-log): pin no-session_json regression + drop trailing whitespace 5ea4cec6cc1050480e8e50e5c3b8da203e037df1 test(gateway): pin DEFAULT_DB_PATH in fixtures to prevent real state.db writes 27ceb3850efa5bfe55ad7efa912429891d2d2c12 refactor(session-log): delete dead _clean_session_content helper f6de97fd8a46301f0ad82bedd04bed2f33367456 docs(sessions): state.db is canonical for gateway messages 13ffc5d39119fa6f48d2275667fe3e33d289d6a0 refactor(gateway): drop _append_to_jsonl from mirror b80b03d8b6324e48620e76cac6701c8b1155162e refactor(gateway): stop writing JSONL in append_to_transcript / rewrite_transcript 82daac5f1144e8073a668ec28a171aa257204c31 refactor(yuanbao): migrate recall to load_transcript() cfecc6a6aa27a5ebca99cd10aa7fb52c70c161de refactor(gateway): drop JSONL fallback in load_transcript 66685a6f8565ee596d51b2f89f741012d8f77e41 docs(session-log): state.db is canonical; ~/.hermes/sessions/ is legacy cb1b9516918b16462fa1f0075b5779d2b1e68179 refactor(session-log): drop branch/compress re-point of session_log_file 41d584d0d1b44a28ada9bfdd1490d310d69c97f7 refactor(session-log): stop initializing session_log_file attribute b8c60dc3d66e3f92fafb431b977f7cf8ac2c4c4e refactor(session-log): delete _save_session_log and all callers 68181bf35730450a6eae190637f62e4a551bc3ab test(gateway): pin SQLite-only load_transcript behaviour 5e743559e0157df42e0f640cd06d736e898370d0 fix(lint): skip per-file shell linter when LSP will handle the file (#29054) 85c583dc34ce726a5251655a8c9b17688dafd6bb Merge remote-tracking branch 'origin/main' into bb/gui 6a6766fb896043ab3757a30713f1248b6054e0a6 test(cli): cover Brave binary CDP launch detection 697d38a3f4bb1bfbea3d75e31ffb3fa1dd221798 feat: auto-launch Chromium-family browser for CDP 340d2b6de08a94fa7335b6be8dd973be000e259a docs(xai-oauth): note X Premium+ also unlocks Grok OAuth (#29055) 0c6eb96c8ff4089cb323192fbc7b3a4da933567f Merge pull request #28947 from NousResearch/dependabot/npm_and_yarn/ui-tui/ws-8.20.1 62713c8b8926c5280a0dfbfcf42cf2c07ec8a047 Merge pull request #29059 from NousResearch/jq/fix-windows-creationflags-collision c2a47821141bf485848080930045f28cf56b78af fix(nix): refresh npm lockfile hashes 6832b910c2474ee45e75bf7c610f3efa705fbead fix(tui): account for paddingLeft when mapping click col to source col 05f02640e1f763afb7afdae4efe6b450016a908f fix(windows): drop duplicate creationflags kwarg in LocalEnvironment._run_bash 43c7a1b2621bdf7bf024f296c5d00e990c85e9de docs(web-search): document xAI Web Search backend (#29052) 6bd43111d10f976977ee30bb74fbf277c79665d7 perf(terminal): adaptive subprocess poll cuts ~195ms off every tool call (#29006) a0c031299bcf12036f8ba199b914425f70698dfe feat(web): add xAI Web Search provider plugin 30dfbd9b09fcb60843ab539dc77d2bb96e3389bb fix(tui): cell-end-inclusive byte offset in copyPointAt for selection focus ec641d497a6b967c13d5224b1d7c200000f0f54c chore: ignore local Hermes runtime files e2fd462ebe7dfd13663270b6f3dff6360d2ad297 ci(tests): add pytest-timeout 60s hard cap to break suite-teardown deadlock (#28861) 6cb9917c73a6799173615ace5a8e529b9b89dce6 perf(compression): defer feasibility check to first compression attempt (#28957) 93734c26e5620de35863df6ae60c728bc770e0c2 fix(dingtalk): transcribe native voice notes 448a3f9ea22414da2065181ef881e50f18d11cf6 fix(discord): transcribe native voice notes d35f8932e80269a99fc385a27fbb43c09704d6ca test(kanban): cover sticky blocks for worker-initiated kanban_block (#28712) 34120a0ae20ae3fc23eeb304efd750e2d2c83c87 fix(kanban): worker-initiated block must not be auto-promoted (#28712) 6079d7dd9d46d9ad23061ed9a747f6516005a2f9 nix: package apps/desktop as .#desktop (#28964) 64a9a199bb9552203c89f70acf1ca0faf95b08df fix(xai-oauth): pin inference base_url to x.ai origin (#28952) c9d5ef28bfd9563b3b49ab56536bc9b4c9b0c91d 🐛 fix(cli): handle missing remote tracking refs 28ab420302c05a2e9075bbbcb04c525f4a721c77 🐛 fix(cli): handle no-remote worktree cleanup d9829ab45f5de455ae2d9250571e49e64aa375b1 fix(model): match custom provider by active base url 2b14438412d8a4dd0ff88f8b7062dfe39f5bb440 fix(agent-init): honour model.context_length override below 64K floor (#8430) 60bb98e0036d53992b5d8b87f93a32fdb3e31a42 fix(install.ps1): pin PortableGit instead of hitting rate-limited GitHub API (#28943) aa4e49275e908225a324ed25a28c879fd90f5722 chore(deps): bump ws from 8.20.0 to 8.20.1 in /ui-tui 544c31b50b8d51eaaff4e95439ca88bc5e5f548f perf(agent-loop): cut 47% of per-conversation function calls via 3 targeted hot-path optimizations (#28866) 784febe1cf43419bc882fcba4b0d39c3cb903933 perf(cli): defer openai._base_client import via sys.meta_path finder (#28864) 6a159be7ca936f075be2875516498abaed4810c4 fix(runtime): treat 'ollama'/'vllm'/'llamacpp' aliases like 'custom' for base_url trust (#27132) e13f242f0139cbdc14aff418f3bc5a7a5fd506d4 fix(cli): preserve setup config picker writes 3f552568c1efc5d190ccd2c521684dda8c3e39c7 docs(skills): document browse.sh source (#28939) 890b2ebd5b5f042e0ad16196a072a780bef20fda fix(browse-sh): fetch SKILL.md via /api/skills/{slug}+skillMdUrl 90be1be50111ebc518a9838532350d7b81624a28 fix: register browse-sh in per-source limits and --source choices 57145ca146a441aa8d67385e64e7452ba974b6c8 feat: add BrowseShSource adapter for browse.sh skills catalog 168affdb751141a177e73b114905ff93526e46f9 fix(web): keep Hermes Agent wordmark mixed case (normal-case) e4cda79b6f374af9762eed04439d6592b4099942 fix(web): drop Mondwest from Hermes Agent wordmark 330f2f9e23a200a0e5bfb862b333b25dda1bdc52 fix(web): restore Mondwest brand wordmark without Typography 08b9be94d38951d8b28eb8abffd181089f6f2f1a fix(web): add uppercase fallback on nav and page titles 104d1d5ee0e338e51edde7e21aa25b3b51ccfd1f fix(web): restore Mondwest brand wordmark tracking 9a85a87b726b9388909fa5c821582d42d5ff2bbd fix(web): apply text-display to page headers and brand nav 2b41f9d893691ca49936be30f6b80b7cbdacc71c Merge pull request #28914 from justincc/fix/fix-blank-tool-names-at-msg-construction 7f8b0dd1e06fb21a0d5b69dd6611c8df1c588b9d desktop+gateway: harden Slack socket recovery and Windows restart dedupe (#28873) a44c92582626b43c5fca8aa14cc8cf4c135d7501 fix(web): import DS fonts.css before globals.css 1b5fc1f07abeb1f63a0860e142ebd64c7513a065 merge(main): sync branch before fonts.css import 7c2ff742a43d666ffd0ef83a47f4a21966434719 fix(tui): termux-gate scrollback preservation, touch-friendly defaults a61420952e293f230c3a73832c27192db8a1a13f fix(agent): set tool_name on tool-result messages at construction time b69b3b2c5c98d4c4b708bdab3816934fa60e0119 fix(web): address Copilot review on footer and sheet title 8b6ab220a6836cc0e34876d01438a49589d25ec8 Merge branch 'main' into hermes/hermes-72b329fd 3b2bdec4bb3093ba7788aea7f79f35cd95abe726 docs(web): soften README typography rules per review 64faf1be8cc08a82dbdd817536be662058b0f8a6 ci: re-run checks after nix lockfile hash fix 9d0dc33c16633c71c43682d728a412235c08deea fix(nix): refresh npm lockfile hashes 88b7e1b61447558d77250ecc39454e06f01b7288 fix(web): refresh package-lock for @nous-research/ui 0.16.0 079fc8727d4eb52e8207df8cc8804db3a5feaf49 fix(tui): same-row fallback in copyPointAt for triple-click selections a19eb54727a82e79bd09932a550046a135a074e1 test(gateway-windows): make ctypes.windll monkeypatch tolerant on non-Windows d948de39e97821b245021250772dea3bdb6a7bce fix(gateway): harden Windows gateway install lifecycle 95683c02832995f3cff6ab54f49476291b28c5c2 fix(windows): hide local subprocess consoles f007ef8ab521e91576672e3fd2fc303193bb545f fix(windows): hide cron script subprocess consoles 2a7308b7c4c4e76648211d5953395bd8ecd0ad64 fix(update): quarantine hermes.exe vs concurrent Windows instance (#26670) (#26677) 465fe0f6cadd56f05afbb46f12c45714b2b099b8 feat(firecrawl): add integration tag for Hermes usage in browser and web providers 57af46fae232e78b6808a31c4ede6f5166fc57b1 Revert "feat(firecrawl): add integration tag for Hermes usage in browser and web providers" (#28862) ebe0b77122940487a26cb4cefddcd658470c879f fix(model-switch): mark bare custom provider as current 273ff5c4a47af4499bbe5e3b1139efd313995554 feat(firecrawl): add integration tag for Hermes usage in browser and web providers ae74b159062a318d6d7fa308631f562f7b7c6a35 chore: add erikengervall to AUTHOR_MAP (#28855) b0af1d0931330cf36d05c54feea033e762a4b063 Merge pull request #28829 from NousResearch/bb/tui-no-history-truncation b5fb8da7ea19cb19c48f17f58e25de669ce093ce refactor(web): dashboard typography & contrast pass 5a3317693c6ddd84834c4684eb6929ade20f0962 fix(discord): define view classes after lazy discord.py install 7552e0f3c0723f56c7ee8d5e2fe6c53c7a1f6ac3 fix(kanban): also hoist idx_events_run + drop redundant inner create 7c622b6c749387297b2c41cf37692d2688927a41 fix(kanban): migrate task session index after columns 4fd7b71bdae35505ae3769117e2777d38c59a0d7 chore(deps): bump brace-expansion from 1.1.12 to 1.1.14 in /website 792a5536cfae84101ea430c8d6c163d92ae9cd47 chore(deps): bump path-to-regexp from 0.1.12 to 3.3.0 in /website 39c41d0f23a35fdecc143e3cc5ffb2b4dbd3e25d chore(deps): bump mermaid from 11.13.0 to 11.15.0 in /website (#24011) a3ef21793e4c59c0f65bf0600935468476281057 chore(deps): bump ws in /ui-tui/packages/hermes-ink (#28183) ec244e5a9a93612bb89c74226abe4748d7123dfa chore(deps): bump webpack-dev-server from 5.2.3 to 5.2.4 in /website (#28104) 78798138dc11d2cef6d386ed50ca2e8f329049c2 Merge origin/main: resolve run_agent.py conflict ff0a70381e238e7799b2bcfd09e479c76b037270 fix(web): consume bundled design system assets (#26391) 6bc97c7abf163309326c1c116b23dd19440e8e5b perf(redact): substring pre-screens skip non-matching regex chains 81364cb1c37374f1d749f8a02a1237979f669c82 perf(run_agent): skip request-size estimation in quiet mode 6ce3b23bf45c28f61560e49ff076e858ac19f399 perf(run_agent): cache _needs_thinking_reasoning_pad result per (provider, model, base_url) 3b220cb76b6de649360ac6837ef478ed5b5f586c perf(config): add load_config_readonly() fast path for hot agent loop 070eeaae67ba8458a77ef7efe0cb1408d5a5bda3 chore(deps): bump @babel/plugin-transform-modules-systemjs in /website 43f8edbaa276477912ac6c0cdf17df0201022066 chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /website afb9ac84f671005db6ccb8fbe11085b3bcf3bd28 perf(cli): defer openai._base_client import via sys.meta_path finder a9c38c7c3e425d4350b9b5a8d4d4da5dea469716 chore(deps): bump python-dotenv from 1.2.1 to 1.2.2 dffcb6ffde718c79789f78ad46e88feb2db6cc68 chore(deps): bump python-multipart from 0.0.22 to 0.0.27 7f1d1248a2601df898196659aaa7072e3c4b5301 chore(deps): bump lodash-es and langium in /website c4bcc778c7bef67033a94dceb97463fc352aa4bd chore(deps): bump lodash from 4.17.23 to 4.18.1 in /website 0b75d24fd3ac28575fd7a83f2951284f322eb120 chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /website fc90f1b6af8d74372781866f213be0c079442c7a chore(deps): bump dompurify from 3.3.3 to 3.4.2 in /website f1254b1bc20a559e1cd1bbd2a7d0623fa634c07c fix(cli): exit prompt_toolkit cleanly on SIGTERM/SIGHUP instead of raising KeyboardInterrupt (#28688) 709e37e19e954774caa3af40a93764bd8b893d35 fix(dashboard): add scheduled kanban i18n strings (#28534) c4981167e6505321a061fc204678c8e0d1e22317 chore(actions)(deps): bump actions/checkout from 4.3.1 to 6.0.2 7bcdced6c1d87a342f5d29e28821d40832d25066 fix(kanban): respawn guard defers blocker_auth instead of auto-blocking (#28683) b10b7832081dc60c43fa99f215e35a2f8b47c062 chore(actions)(deps): bump actions/setup-python from 5.3.0 to 6.2.0 bbee1dd7c6bb1331ce1f4368845d57280dbdc219 chore(actions)(deps): bump docker/build-push-action from 6.19.2 to 7.1.0 269245740461bf8d9e9c344863bc7fb461b7f633 chore(actions)(deps): bump docker/login-action from 3.7.0 to 4.1.0 424f2cc6e5eb35bc75f017c2984015a2a1ebbf2c chore(actions)(deps): bump the actions-minor-patch group across 1 directory with 2 updates a3c753128dc2b52e4d355f19420fa102a5e47400 fix(telegram): address post-merge audit follow-ups (#28670, #28672, #28674, #28676, #28678) 88ee58f7d2e3d4750556d54154384645b2a2eb35 fix(kanban): stale reclaim must not tick failure counter (#28680) 7f253f55576ea0f58d547a4a79903a90f1cfffb8 fix(acp): use tempfile.gettempdir() in workspace auto-approve 58591d9e34163ef4a92cfa88b4c357d96332be78 feat: show names of user-modified skills in bundled skill sync summary aedb8ac83b8c6ecb89b9d370909fa46ff4733da2 feat(update): syntax-validate critical files post-pull, auto-rollback on failure (#28669) a0bd11d0227239674fe378ff8817f8f6129ef5a7 fix(tests): catch up 25 stale tests after recent merges (#28626) 12c39830f0f491cb97b7519eed1faa9fd2df3483 fix(doctor): attach codex CLI hint to OpenAI Codex auth warning for #27975 4039e2abb5760f4818e2df61c13b6950bebe4d9a chore(release): alias xxxigm noreply for upcoming #27986 salvage (#28594) 62573f44cfee8895eec2cb18e7c45b9bff97081a fix: guard yaml.safe_load, flock unlock, TOCTOU races, and atomic writes d759a67c0f7320a55e14154e15f525d36aaf1f06 fix: add recovery hints to loop guard warnings 87c6edc1d04f629042afbb1461de19a45fc8babb fix(skills): add timeout to Google OAuth urlopen calls b8a9cbd18cc2511b6c3ba89157c1c2d2aaa2ef76 fix: tolerate unreadable gateway JSONL transcripts 663ee148651a82e4bc4a576ef3e2396277f05815 fix(cron): allow emoji ZWJ sequences in prompts 425aba766bf8b509cd8a2021ce00635e5248bb8f fix(cli): ignore stale HERMES_TUI_RESUME env afffb8d9a56b850f98ba5d696de030c5c46b8030 fix(dashboard): use browser scrollback for chat wheel 0b89628e8676543a34362ebf1ec46c1068a50db4 test(file_ops): add regression tests for git baseline warning in write_file 6cac56f3142dfdc569a17b4f5639c7d5fbda515d fix(tui): preserve dunder identifiers in markdown 8c3b065124507665c7d0c27a91dc14df256d7c02 fix(cli): show active profile in TUI prompt 276e6cc52d4a8e0a6818bc3ba82a947013fb757c fix(matrix): implement thread_require_mention to prevent multi-agent reply loops e2a1a2bf13fedaf3012c6e5720e4b7dd8ce9d3a8 fix(gateway): pre-mark sessions as resume_pending before drain to prevent data loss (#27856) 4d44304e85862724cff3079aeb68dabb6401c5bc Revert "fix(telegram): enforce TELEGRAM_ALLOWED_USERS allowlist on inbound messages" bbd2b46537a52be5f321ac6bf6a37e4f22bc6eb8 Revert "feat(send_message): auto-detect @username mentions and create Telegram entities" 22120ef00ff3941c423179ab5f26d28a08ccf15e Revert "feat(telegram): support quick-command-only menus" 03f7bc056ffcaa263013c310d16e2ce406d4e281 Revert "feat(telegram): pin incoming user message for duration of agent turn" 7f40767393429a5ae08f0289b559053288f45b3e feat(signal): add require_mention filter for group chats 6dd0b357c4622347447946756fcb5407b15a60e6 chore(release): pre-stage AUTHOR_MAP for May 2026 LHF batch group 9 (#28571) eacce70a35aecc1b61005083bc4dc23f2d703de6 docs: comprehensive 2-week sweep of feature/PR coverage gaps (#28497) 1335ce996d000def7a93e33853606de693c06f7d fix(web): add scheduled column to i18n type definitions (#28549) 69b1d31a19fa7c8e375be92bc41cbb4e34f76190 chore(release): map @alber70g for PR #25280 salvage ad2531be082fd827acb64a9cee7bf752f68bd3b7 feat(telegram): skip-STT audio path + 2GB cap via local Bot API server 6265b3a1323280cbc4ec52cf0d3693d5c7385723 chore(release): map @indigokarasu for PR #26636 salvage a724c3b9cf5f01e28365322ae5ae3a9579567806 feat(telegram): pin incoming user message for duration of agent turn ce46e6bf0818874deb4019ed3dbc79067f59dcde chore(release): map @ai-hana-ai for PR #23928 salvage 6d66ad2acaac9ddbe76e98dca161b194cd1704b8 docs(telegram): document ignore_root_dm feature c931dad1d9f91b6bc340efcf1789d7fde8174287 feat(telegram): ignore_root_dm with system command lobby da48be1abfd132a08679657075c7e403e0c05695 chore(release): map @OCWC22 for PR #24581 salvage fbfe2948827b8bdd6e0c0f1aa71eb897938f9635 fix: ignore Telegram messages for other bots e90869e887c09ed3c1193ac0911fcf454c7bbfad Document Telegram multi-profile gateway commands ce4d8570215a7e601e13de5936853b64c355ef5d Route Telegram multi-bot mentions exclusively bb8e9ea83a67ac91b0e8970c9febca1f4422f935 chore(release): map oracle@jarviss-mbp.home for PR #24014 salvage 8a80eee02dcf700b58746851c309962e2fc987f7 Quiet noisy Telegram gateway errors f1cefad8c246b49e788e78030fdb31d3c8be3199 test+release: stub auth in channel_posts fixture; map @brndnsvr 84a9b8150297582aa35b2152e5c83803e4e91cf2 test: address telegram channel post review 704872a62f87c642a0c69fcb0f138d48896e0d59 fix(telegram): handle channel post updates 17b8121e299b8e99ec7ed2f5b9a0141f87e131af chore(release): map @stevehq26-bot for PR #28015 salvage b1acf80e17858e2e5ae7c0d412a3a573d7fcbca4 feat(telegram): support quick-command-only menus e80d3084e5ae263863b5ff841d38b5d479a0fc02 chore(release): map @khungate for PR #25829 salvage 1891bee9d3bd90f09c200108a3caa655459d68f8 fix(telegram): wire gt: callback dispatch for gmail-triage buttons 4f6fef1974b61e2a1dedf0def23eeb72b8a52030 chore(release): map @el-analista for PR #25368 salvage d81b888807a6e09e088a13423f2f30f1fdee440a fix(telegram): report cron topic fallback 16d8e44f7ae7b8d410ad0601ae99c112e046f1e2 fix(telegram): add DM topic typing fallback when message_thread_id rejected 15e89e1dcb4bb90818b09ce413a5399afca3ae8d chore(release): map @soynchux for PR #27806 salvage b38140eb8fc2cfbad388e5dd77ef2523bd198c4f fix(gateway): allow chat-scoped telegram auth without sender user_id 721d47f439f078a1062f182d167c30952634758e chore(release): map @jackjin1997 for PR #27239 salvage 95a0955e19f8d1e6af1045c874ab742a45a87d0e fix(gateway): restore Telegram DM topic thread_id after session split (#27166) 5734c3fb1003358242a0eea50fe7fad724947232 chore(release): map @B0Tch1 for PR #27634 salvage 9d789f3a5b737b8d44d02d98c651c29d0e252ff3 feat(telegram): add disable_topic_auto_rename gateway flag 3ec28f34ca26e97c73250006efd357aa2854091f fix(telegram): preserve topic metadata on overflow edits c66efcff32fd987f45096cfaa2149ce2af420828 chore(release): map @rak135 for PR #25960 salvage 417a653d9eed17dd91a5f03db29a5fb8cce8de38 fix(gateway): prevent Windows Telegram /restart leaving gateway stopped 1d378605ddfa0023c1c37e7045be0a2e44fe5257 test+release: stub auth in test_telegram_documents fixture; map @kiranvk-2011 77c4675a50db7abbfd191d4fba4746b4f3e1559e fix(telegram): route image documents (.png/.jpg/.webp/.gif) through vision pipeline a4fb0a3ac39fb5c3c747d4cd631e47a740fe8fde fix(cron): route Telegram cron deliveries to a dedicated topic via TELEGRAM_CRON_THREAD_ID 032d4cafc40087232c4a60503a057548be0e55bb chore(release): map @booker1207 for PR #25132 salvage 46ce3453c1dd92895b307145b1c6f7b700bdff08 fix(telegram): gate profile bots by allowed topics efc37409aa26e7b8038d1dbdc133b3064489ae7f test+release: fix test fixture for forum_commands; map @chromalinx 76821981783ffea7267384168f97c36a0c1aec73 fix(gateway): register Telegram commands for groups 38356cc98b087e52cb39860186a81a5dd3de530a chore(release): map @kunci115 for PR #27098 salvage 4abaec18b83d6eab6eb77ab6c6edc0416b6b44e1 test(send_message): add thread-not-found retry tests for Telegram topics 2bb04f68429d6688fe5c1258e13d80a75626fada test(send_message): add thread-not-found retry tests for Telegram forum topics df530b4a0cbf4a60c847ca370e08e538808c36ed fix(send_message): add thread-not-found retry for Telegram forum topic sends fc42bb918bd073fe092fc129b134f1e14ecc66e0 chore(release): map @karthikeyann for PR #26609 salvage ede47a54be046572346a0c9d6de7fc83d8d0ca22 fix(gateway): pin Telegram DM-topic routing to user's current topic 470edfa90192d20350c0696f155db68b2dde485c chore(release): map @aqilaziz for PR #26406 salvage ed9087fce77f02b90688ade94f1f6c0658db1ac5 fix(tts): keep native audio outside Telegram voice delivery e19f4c17306f0ca70591f273752a8b037180d40e chore(release): map @samahn0601 for PR #27887 salvage af381ef12cd12bd04bb156b81ef798e9b994984f fix(telegram): retry wrapped connect timeouts bf6a2870a777534a3a500e13c1ea3b99124494a7 chore(release): map @nftpoetrist for PR #25856 salvage 4b6d35bed2c3e607ba904569a2b6e89c9f03c51b fix(telegram): escape send_slash_confirm preview with format_message 35781bab90e734295ae22326e37cc28ecd6fee93 chore(release): map @Zyrixtrex for PR #26754 salvage f8eeb570cb380cbf0cddd4af64aa02e68a3e3be9 fix(gateway): avoid duplicate Telegram text after auto-TTS voice replies b46ef2ef7aa16939d3fdff83adbe32e81db0c009 chore(release): map @eliteworkstation94-ai for PR #28157 salvage 7b2bcba1679e2bf0c73612ce9583982d970162d3 fix: avoid Telegram group reply thread session splits d69f0c1a9928b7079d2eb96fe5f9d72844fc0871 fix(gateway): mark final voice reply as notify-worthy so Telegram delivers it audibly ba2572e54ccb3169ba3a6dff0809912810e57c60 fix(telegram): resume typing indicator after inline approval click (#27853) 9a444a9355a85b7b86b3953b21b758c89ea9055f test+release: align send_message mocks for MessageEntity import; map @fonhal cf814c96f613b38bd891ac941c32da653e81c7ad feat(send_message): auto-detect @username mentions and create Telegram entities 434d508d0a30d4b14decb80b0a7d4714c1da2993 fix(telegram): propagate extra base_url config e7a3e9934f9c14232de44352dfb915ae5ab41aa7 test+release: align stale sticky-IP test for #24511; map @falconexe 5c4b43ced7714ad92110d4c3c32f8d687343a072 fix(telegram): reset sticky fallback IP on connect failure, retry primary DNS 8439ddc1b1e054497ed36bfd405a883268c7e88f test(telegram): stub _is_callback_user_authorized in trigger-gating fixture 89d32052ed4711ab98df8b55489eb61b4a1948f8 fix(telegram): fail-closed auth fallback when TELEGRAM_ALLOWED_USERS is empty db50af910be6b4171ea9cf54f4cc38be27ac1da6 fix(telegram): enforce TELEGRAM_ALLOWED_USERS allowlist on inbound messages de4cb55bf3f2c27adbfdc0e3eccd272d0536f3f5 fix(telegram): route resumed DM topic sends directly 2994bf494d4a2ed89ffb858e39a9f090a2cea3f5 chore(release): map @fabiosiqueira for PR #27212 salvage fbabd560ff51311f20855b0a6be7372994cba5b6 fix(gateway): route background-process notifications into Telegram DM topics 17f3254edefaf693a5464024fe633dec7980841e fix(test+release): update conflict retry count for MAX=5; map @CryptoByz f260aa6dc0fd6ecafb36964c33a39276fdd8da0a fix(telegram): recover from post-update polling conflict without entering limbo 6be579f626f80441ae40a143f10fa351f52db05e fix(telegram): preserve can_edit after transient network errors in progress edits (#27828) 32435dfad873a0a6d150b7b73704363282e5639b chore(release): map @erhnysr for PR #25198 salvage 1b3c51bccc46a7ab147eee58dc20b8ab8c4770ab fix(gateway): keep tool-progress edits alive after Telegram flood control 256c4c1b4a08869f0fa51fa913253bcc4e8d6a42 fix(gateway): scope audio_file_paths outside media_urls guard f55c67ac1f632fa966bf02b88e15ec6d25051bc1 fix(gateway): roll over Telegram tool progress bubbles 362ef912eae2d5a18499c72d90b1cfad3b46b693 fix(kanban-dashboard): restore implementations dropped during salvages (#28481) b58b4188f6488f3ddfc38da0afa7340b30490ca2 chore(release): map @pepelax for PR #25419 salvage edce8a5fd42936114c6d1b6f90b34d8f8faed9e8 fix(send_message): route standalone Telegram sends through TELEGRAM_PROXY 785993bcae8f677c6dbcebfc66b76392db91d407 chore(release): map bartok9 noreply for PR #24879 salvage b93996c35e71518d4a68313f4dd7bef63e72b870 fix(gateway): route Telegram audio file attachments away from STT pipeline (#24870) 21a15b6711094dc3f5fe0791e5a276ea2f0820a4 fix(telegram): respect reply_to_mode for DM topic reply fallback 7fad501f0869d65d9d8c887c5d1664eaff73cfde fix(telegram): default streaming transport to edit c858484b458d9cd2361674f1549d657b335eab0e desktop: swap node-pty fork for upstream microsoft/node-pty 1.1.0 ab11d0998c6d6738708af2abef0342df9f36a789 chore(release): map @asdlem for PR #27852 salvage 6fb57bc9cf502125451530cd6c43f92a59652ea0 fix(telegram): render full clarify choice text in message body, use short button labels 19128108ac10d21e81cf967f161ba7b3b053153c fix(tests): catch up six stale tests after compression/aux/kanban changes (#28465) c4c45f11fa7dbebe99305fc36ba5e6357ae7d653 docs: add Korean Kanban documentation dfcf48b47623358cde4a2fea380695cb7c749564 feat(kanban): drag-to-delete trash zone + bulk delete for task cards e3823657d62b954d92541aba1abd05decf4dee0d feat(kanban): add scheduled status for delayed follow-ups b5c1fe78aa48ad338c7eb228816d27653df7a52a feat(skills): add skill bundles — alias / loads multiple skills (#28373) 1733cb3a13bb726c496412e5e404ec72c132d13d feat(kanban): configure worktree paths and branches 53cf82a1ea7ad78bfa235b1df242945fd8873a1f fix(kanban): remove orphan conflict markers from kanban.py (#28459) 1a883b421f6c22b9dc896f489ea138e650182b71 fix(kanban): remove orphan conflict markers from config.py (#28458) 1a5172742ee90a5bb15473f5e05e8d5e04de0391 feat(kanban): show dashboard cron jobs across profiles 264e85b3dddd27d7fd23926795095fa700e077de feat(kanban): add respawn guard to block repeat worker storms 341912c22407043650102cb4ed17ae672fc2b1e4 feat(kanban): filter tasks by workflow fields and runs by status/outcome e286e6875678711ee38353852ec201ea727e5284 feat(kanban): stale detection for running tasks in dispatcher f55d94a1e0454bc1f2855631d9a0869bc85375dc feat(kanban): wire dispatcher to dispatch review agents from review column 31fe22903931c0e0604267db0e6cb7aefc0a6ca8 feat(kanban): stamp originating ACP session_id on tasks 8e193cf05c18a2c4666e8bd8941d182e64ca93c0 feat(kanban): add optional board parameter to all MCP tools 3ee7a5546dfcfe2120223a6ea09a7e6f7d49e10a feat(cli): add kanban swarm topology helper 79f6654d163445a42764967198dfe82cbdaf18ae feat(kanban): surface per-task model_override in show + tool output 81584940fe06bff4d6ef9a658c4788c866537b1a docs: align kanban readiness docs and smoke tests d37574775b7dea419c5f8a2ee5379584c61a33d1 fix(gateway): quiet corrupt kanban dispatcher boards 78da7efa2038529b93d940f97bb4d9b2b8b08356 docs(codex_app_server): document multi-root Kanban writable_roots (#27941) e215558ba705dac6fa4d8521761e3d7841db1af0 test(kanban-dashboard): pin enriched 409 detail and inline error wiring (#26744) 9d9f3161ae9efcc0a4a235f37a6a62f13d86546b chore(release): map contributor email for attribution check 02efad704f5a462891ed6c18b305931bc16adfb8 feat(kanban): worker visibility endpoints (workers/active, runs/{id}, inspect) b65dfbb4530af5e4f1cdb41fcea4e42b53f19828 docs: add kanban codex lane skill a846e500b0948468fff9bc88edd87b8768c91d6f feat(kanban): add --sort option to 'hermes kanban list' 206f595f6639ff315c09dea6073ca6a3a7408e49 perf(prompt): cache kanban worker guidance at session init 365da2d2dfd92bd16f1993c8fefea05508282db8 fix: 4 small surgical bugs 3a7ed7be081011cd63db46f7c66a06e8f2ced203 fix(packaging): ship bundled skills in wheel 5fdcfd851f7e693fb72a9ea6a6ef25142e63259e feat(kanban): add max_in_progress config to cap concurrent running tasks d3345cc70d03793975bc2b9be29acc3aad608c8d test: isolate Kanban env pins in hermetic fixture a94ddd80732116dfb748799b130619ef15d53a77 fix(kanban): honor severity thresholds in diagnostics 9f008bcd5c795a685bde96db0d66758d456bd83a fix(kanban): release scratch workspace and tmux session on task completion fb9620889238d6aa9c6844c21a86c9b677c14bd0 feat(kanban): add initial-status for human-ops cards e8ce7b83fa206dbbe007af7f3e3f7c576d72aef8 fix(kanban): reject direct running transitions in dashboard bulk updates 666b66a0668cdd53b42fbaf2970f6d9d79e469f1 fix(oneshot): pass fallback_providers from profile config to AIAgent 713c231cf8d513d65a8f1dc5c23cd0090e2779f7 docs(kanban): document worker protocol auto-blocks fdb374e10f83b9e779ebb8f66e05d77e7ef34aed fix(packaging): ship dashboard plugin assets in wheel b9d38a56ddd4e2922efceae82cced446b80b4aaa fix(kanban): don't crash dispatched workers when kanban-worker skill is absent 0392cf53b5f09b947e2ce1b0b91e6a6f29358a0e fix(kanban): close sqlite connection on init failure to prevent fd leak 4341072563fdff7fa71b1c4842152e3932d52a6d docs(env): add HERMES_KANBAN_DISPATCH_IN_GATEWAY override (#21956) 5dcfb0b82e1fe3102002c9b7d60a1914fb129fda install.ps1: harden Install-SystemPackages against winget msstore failures 2dec7604e206f0397cb5c8804f542dee405aba62 fix(kanban-dashboard): make Orchestration mode checkbox label static 4da4133d34ea71d0b9b2fc86393df859c9c54aac fix: assign single-task kanban decompositions 6c4f11c64a9bdda505889099fd3a5b7d44f2ae38 fix: show scheduled kanban tasks in dashboard a5c2836b0796e44cc1ed738320faa1a5dba890a3 feat(kanban): allow trimmed task comments 5d079fee17cd945fdc40295588361255876889aa fix: harden Kanban worker Hermes command resolution 0b547aea03a28c6bbda97a061f835c16760dbf22 fix(kanban): make legacy task migration idempotent c30608cfbe72efd51b607b115665145417600883 fix(kanban): preserve worker tools with restricted toolsets f12382fcc4c92deeca0802332956f62735956986 docs(kanban-worker): document notification routing configuration fe5e0bf5a34912b9a1b9ebf3398ea586810bd8a3 feat(kanban): add board-level default workdir (#25430) 8bfb4569487af5441abae44f63f78937227a9473 fix(kanban): pass accept-hooks to worker chat subprocess 0f620138b0a1852fe464a2aad12824df621dd5c1 fix(kanban): make claim ttl configurable 86279160b03b6be9b0e0a59eaac6a9a9e36af2b5 fix(kanban): persist worker session metadata on completion 4f6101cc74a69147d0a58dfde6ae2446115ba3e5 Fix Kanban dashboard initial board selection d8ad431de8e4a14856c9b4ee5618609a0f90afb3 fix(kanban): task_age() tolerates ISO-8601 timestamps ca8126bd5338794e3b51c3e804d70a4932199484 fix(kanban): serialize DB initialization 917e51858dd0cd8f74846ec50399bd9c425ccc08 fix(kanban): demote ready children when a parent is reopened 9281599b6fb503f9ce12812050b175e3f94c3c8e fix(kanban): align board_exists with board discovery rules de9bcfc6a0500686dbf0cf907251d624e32bba4d fix(kanban): fingerprint crash errors to prevent fleet-wide retry exhaustion f042931852658ad6f4d71754cb7d2e2052885860 fix(kanban): reset failure counters on unblock_task 5db0d72c909ac909054e1c175f5b53cf595e6919 fix(kanban): use 'is not None' check for max_runtime_seconds in create_task 40c1decb3bde450ee4d1eb80248ac8f7db0d9879 fix(kanban): promote blocked tasks when parent dependencies complete bc961c13f397e0833b6aa3aea66b825ab56c3e26 fix(kanban): sync slash subcommands with live parser f149e1e567b0a06d307ca90ab4761833bd5c5f8e fix(cli): make kanban specify max_tokens configurable b7ea62e5d3b4eb31316cd7b6b679f1daace61e66 fix(kanban): promote dependents when a parent is archived 326c15d9552fe55d036038dd17258fc4c7367bfc fix(kanban): preserve notifier_profile for dashboard home subscriptions afae2dd9ecf373a0f5505f9f32003d1bcf2dba0e fix(kanban): keep board-management commands independent from board override 8a64e1580b969fdf975958645b7b562de2bdb9e7 fix(kanban): ignore stale HERMES_KANBAN_BOARD for removed boards 97ac94fe5642e8516e917e22688142645f6250db fix(kanban): seed bundled skills (e.g. kanban-worker) on kanban init 4519d2b476bf620607abe3dc827dd59da5d24d7b fix(web): add Cache-Control: no-store to plugin static file serving d62964cdfaa2de446372a920ac7a1d4e269beb42 fix(kanban): clear _INITIALIZED_PATHS in remove_board so recycled DBs re-init schema 028bbc5425fd170330a841f64ac312efd2b6e1b8 test(kanban-dashboard): cover _task_dict task_age fallback f01ee0b5752276a012fbee383b0257d772045c49 feat: per-task model override for kanban workers e0309f73785590e22e719774c574aa29760fdf4e docs: ignore box diagrams in ascii guard c91ad90bffd925b165bd41bd10ba74ead5586802 test(kanban): cover default board dashboard pin f76923bc27a5e461796ae6159f38c541fc1c60d5 docs(kanban): document inline create shortcuts e1d9afef36f2bc39a64e9e0aa259064bc037da26 docs(kanban): document max-retries task override 817e1d63409c029cc1f2b588ede79c180661c22a test+docs(oauth): pin manual-paste semantics and document browser-only path (#26923) cafbc9a734e3f71fc97c0cdedf3a3b59879e5f1f feat(cli): wire --manual-paste into ``hermes auth add`` and ``hermes model`` 5a5c265bcf6fcaf46366f4c4977d418e3c5295de fix(oauth): add manual-paste fallback for browser-only remote consoles 374785ee26132bf3d38d021070238b55da8506f1 docs(skill): align kanban dispatcher failure_limit text with current default 2064a3976cc8a7284852532cf228fd745ab3eb85 chore(release): map @yannsunn for PR #28064 xai proxy adapter salvage 1d6f3753dec9df571cdab8da816bfda964d9c87b feat(proxy): add xai upstream adapter for Grok via OAuth bde6313e34435e71d146ec13fb6fbdaad5228efe feat(kanban): archive --rm to hard-delete archived tasks 06161c6ed8d3b878e0076f0eba244de8f3208bc8 fix(mattermost): resolve thread root_id and route progress to threads 5d1f350784f8a232df36f9527741c6c2ab962035 fix(cli): preserve cron asterisks in strip mode 6143013f5bb7a1e2a761a59997a0bca07c05bfe1 fix: handle whitespace-only cron responses 34f34ba322b068edf242b6d9b1e0d1af01a41d1e test(xai-oauth): pin tier-denied 403 behavior + docs warning for #26847 3b6f57fa6691897212dd80ec4e4d7eb56befc7c0 fix(run-agent): treat any 403 on xai-oauth as entitlement to stop refresh-loop 60ef36879299c925d2e2b7cb9ddfe9b99ed87605 fix(xai-oauth): split 403 (tier/entitlement) from 400/401 in token endpoint ea49b38625b4c8ee9f8aedf6c7c3e9ec36acfe69 fix(gateway): tighten MEDIA extraction regex + silent skip on file-not-found 09b6dcc4f394b5c21b2de3b3fd7a41bc1c985df6 fix(send_message): resolve Slack user IDs to DM channel IDs 756900723a64cb3cbd17bb720773daca9ebabcb1 fix(agent): add qwen and deepseek to TOOL_USE_ENFORCEMENT_MODELS 4229facc010b622fd6f079bc540726b8f4585c85 docs(windows): avoid piping installer directly into iex 50158a60f941868a6fd57e5c9f86da886ab38e1e fix(tui): improve charizard completion menu contrast 25e0f4d465c376ff0510f32a4ae8ef6acfa53a22 fix: wrap _pool_may_recover_from_rate_limit call through run_agent namespace 2e09d2567c851787fbc8f42ead23cf9ff9f06f6a feat(kanban): add auto_promote_children config toggle 7a46c68857367e5eb4bc1dfe8838eea6d5c93c50 fix(gateway): bridge gateway_restart_notification from YAML platform sections 2b538c1f4ede4dab2991ebe17f8347e257c3f323 fix: guard json.loads() against invalid TTS and skill_view responses 5987b24314b3f40043ba150819ff698bce220db0 fix(gateway): exit code 75 on service restart so launchd relaunches c5cafd384785fbb8d75dbd303840148f5db8ddd6 fix(web): portal Change Model modal so it renders above the app sidebar af78449acdd4de4528e79e9abc11cb1ac5a87030 feat(bg-review): add bundled/pinned skill protection rules to review prompts (#27644) b3e714e8b78ad603efaf0d618d93c028fa760d7c fix(xai-oauth): quarantine dead tokens on terminal refresh failure 7321b3c2dbf0e36ea488a807c8a2804336ca559f fix(tui): keep x status citation fallbacks link-like 87ace43f1e74064a14357a3e8fc76b84e8e58a9e fix(aux): remove stale session_search model menu entry effdebb65e5195c09bff15a5daf74d022802ac7d chore(release): alias stale-ID salvage commit for @Grogger (#28334) 8bcb6082acf83db8e199f1065fa065340d82de0d fix(windows): handle redirected stdout in _cprint fallback e3293c007f284f6a5e6db6bd2885f733dc547246 fix: add pre_start() to _IncomingHandler for dingtalk SDK compatibility 7267c38695d18b1ab01c666a43281cda2bd494db chore(release): pre-stage AUTHOR_MAP for May 2026 LHF batch group 8 (#28328) 700f3b13e749dd4e8df91b76669ac20af4ec8e30 fix: recognize emoji and caret as natural response endings 6d495d9e7cf20f5e855f9646d58c31c7386e6473 fix(approval): surface pending-approval state with explicit marker visible to LLM 523254b34a1570ed57b2953e852f79504abebe7b fix(kanban): single-row horizontal scroll for board columns 5cbf86f1c820669fe2ab7c30f9eb315be6d888d8 fix(acp): resolve /tmp symlink before workspace auto-approve check on macOS 52b049b56064ec31601949146edb9e734c568ab3 fix: treat inline-shell timeout guard as timeout 4e9df52d600c81314dc3b027572706aae56be2ef fix: elevate plugin discovery failures from debug to warning a24184f295c7e49eff3702f62f56b3d859864e0c chore(release): alias stale-ID salvage commit for @LifeJiggy (#28317) 214b95392bb7f19c3a3886168d4936916de424ae fix(process-registry): detach stdin from background subprocesses to prevent keyboard freeze 5766504c609bf0d1c75945079e9e7257df2c8826 fix(gateway): align kanban artifact _IMAGE_EXTS with response dispatch 7923f844fadb1f2c0e0377f87f990aee6651a869 fix: include hermes_plugins in gateway.log component filter 95846eddd2a2453049a090c2e8f9a96c5f1f480b fix(auth): treat empty credential pool entries as unauthenticated 8dca28775ef03841744563e7b5bc15839ae3d807 fix(wecom): handle WSMsgType.CLOSING to prevent CPU spin e73e487d40f3a996966f7e2718427eb14c7bfe0b chore(release): pre-stage AUTHOR_MAP for May 2026 LHF batch group 7 3df699be50b45b3de8ce7fbe9f87fbf844a547bb chore(release): map Jack Yang contributor email da3bd34c0898844350592cc6ff7045dd5974d4e0 install.ps1: detect ARM64 Windows reliably for Node and Git stages 3d258097db558bdd93d61ce8d69da70f9a99707e chore(skills/baoyu-article-illustrator): tighten description, add platforms, regen docs a93de60b6819f7be5797862955e46ebd581320bf fix(skills): align article-illustrator with real Hermes tool capabilities 4bd297094af27dd111cf6d27aa4803e360b614e8 feat(skills): adapt baoyu-article-illustrator for Hermes 680189b5def4b9a7700c6ad5709833a58df02582 feat(skills): add baoyu-article-illustrator skill 49c829979832d6b7acd6985fe9d82e0500bc86c4 Merge pull request #28169 from NousResearch/jq/install-ps1-improvements 2ef501e1f5a9530435b7db5e334f00747b1e7b8f feat(cli): add /update slash command to CLI and TUI (#23854) 378bca1d2ff8ffee9158016295d8b44e2cc81d59 chore(release): add AUTHOR_MAP entry for falasi 43802ef3e37826af8fb67b98208051aea916a48a fix: add default base_url_override for ollama-cloud provider cf53f4c88fcb0b62cafc1a1e1a0fc11d452d4116 test(tui): add fence-selection regression tests for inner code lines a53e8ca73327da1b4788ef4b913c59155cfbc662 feat(install.ps1): strip BOM, add -Commit/-Tag pin params, harden git ops 6fa1701bd3d9dd41923adc30fe55ec3f02c693ce feat(web): mobile dashboard UX polish (#28127) 52e3bfc2f4440186763a7840c0be669a2659c6dd feat(acp): enrich permission request cards 2057977102da26cbf0fa9e699fa4432dbf017566 fix(acp): use refresh moment as updated_at on session info push 741a34945810a7cb5142804660f9e6108e2d49ec fix(acp): refresh session info after auto-title eda1c97a1ef8c7d8505f40be1839929e130ad4c4 fix(acp): also mark raised-exception tool results as failed 9cf1140caaefa6f275667ed1b11a61aabb6199dd fix(acp): treat polished tool error payloads as failed b38d2d133bbb76fb9d91f08c3b1a838f5ce0a5b9 fix(acp): mark failed tool completions 375c7f9cc379f940f3923ac967793675bdfd2b5c fix(acp): render structured JSON tool output 50e93f23f2b382ccc7c084b3260549464771aa4f 🐛 fix(memory): require newline after context tag 341c8d3030c91d042e24f2be3ddb7041db124a63 🐛 fix(memory): keep inline memory-context mentions visible 956dd4462598bbb91d642d639e2c6e03d043bdbc chore(release): add AUTHOR_MAP entry for dskwe 6143ce1546d083374671b2e772e8ae7c868e3af9 fix(url_safety): block IPv4-mapped IPv6 addresses to prevent SSRF bypass e3f391c1ac1e2efe19af54293e77a7ca3b77bbbe test(cron): cover profile + workdir combined scenario ef5fe8dfaf9bcbf6268a276dc4d6a80e07ee9e89 fix(cron): gracefully degrade when runtime profile is deleted 1d74d7f73aa7cae7933afbb2b35e86e22b8d318c fix(cron): use delta-based env restore instead of clear+update 1f9b2e4d0b9b47ab957a4e8b3ef01b59b493264c chore: add gianfrancopiana to AUTHOR_MAP 9c48d47aaf0e959a4eda939ac9b9087171c96f30 fix(cron): isolate profile job env 544406ef2322c54b8efcc0a1749ab4f5b8409988 fix: avoid process-wide cron profile home mutation bb9ecb2178603254126770f681533529acd75c93 feat: add cron job profile support 47bc8e080d3e2623a4a2e0eb8c41ccf89213a5bd chore(release): AUTHOR_MAP noreply entry for Slimydog21 aae1615977b9a4aeda6f4c16ee14ce5615f3dbf4 fix(xai-responses): strip enum values containing '/' from tool schemas d9331eeceef9e361925843d3f7788be24270f5ba fix(minimax-oauth): quarantine dead tokens on terminal refresh failure b570e0fdd0d64742fd96c928821ecc0cf5d91ef7 fix(codex-oauth): quarantine terminal refresh errors so dead tokens are not replayed across sessions 9aae59feab2a17acfeac67d6af8c0cf4f56b4fcb fix(compress): make abort-on-summary-failure opt-in via config flag (#28117) 5e40f83cb77b4c93973e93b56b8f2d97a1ba2aab fix(xai-oauth): quarantine terminal refresh errors so dead tokens are not replayed across sessions 226680500d6e4face29b6cd9e6313c0e7fed8b1f fix(auth): improve xAI OAuth SSH hint with visual header and auto-detected host bf6eeb3f938f34bb90af65d65c92335ab6129f59 fix(xai-oauth): show "not received" page when loopback callback has no code 1fabd6e100cd8244aa674f9fcae58787c0e11262 fix(error_classifier): classify xAI Grok entitlement SSE errors as auth bc77f79798095493d04ec41293b4a947660e101e chore(release): AUTHOR_MAP entries for Fewmanism + Slimydog21 0d63661702162bf36bcb695000280f9c1687d742 fix: latch xAI OAuth callback result eac198b6d5035dac78e6dc5b20fb2f6f85c3fd52 fix: make xAI OAuth callback server threaded 5613dfea938ab26bc759cebba7184931a1b18d94 fix(security): redact xAI (Grok) API keys in logs fae0fa4325f849ddef34bc6ae38ebfbe606547fa fix(tirith): suppress .app lookalike_tld false positives in warn verdicts 1634397ddb1353c9a48fd34f084d55dcbce4b61f fix(compress): abort instead of dropping messages when summary LLM fails (#28102) e74f291dc241755b6bab26f983c9be466e1b32f4 Merge branch 'main' into bb/gui 65e0c49b775a7d50780fe8cae616705fa139fbe3 chore(release): add AUTHOR_MAP entry for glennc 9df9816dabb63bd7039b358f40501ce3490a5753 feat(azure-foundry): add Microsoft Entra ID auth 4b30db1f854f2378d0c3ba1fad7ad8882fa32261 fix(install.ps1): strip UTF-8 BOM regression that broke 'irm | iex' 457fa913b839a5ed6478dcfade2155cca773208c chore(deps): regen uv.lock to match pinned versions in pyproject (#28094) 9cae9c016610a57091f0e4854a96659058dd784f fix(aux): log sanitizer failures instead of silently swallowing them 2fae8fba9c262b390a8d2c4c444165a8698e149a fix(aux): strip pattern/format keywords from tool schemas on xAI Responses path 502d03d5a3c071be7a8856d0ce9b5dc10894e0be fix(kanban): detect cycles in decompose_triage_task sibling-link pre-validation a86d2ad5574147f527c5cf998751ccb46af47745 fix(kanban-dashboard): wire onValueChange on OrchestrationPanel Selects (#27893) f0c6d591488aa6df3940b8e5791e1c872f4b2888 fix(anthropic): scope MiniMax beta-strip to MiniMax only 73407b1e303a13782812675869047dfab60ca650 fix(auth): send Bearer auth for Azure Foundry anthropic_messages endpoints 16abb74eab2d0bd34efc0e94a17846507a0c952c fix(kanban): use selectChangeHandler for workspace, parent, and bulk-reassign selects (#24547) 4414a99d8c3ec4c38c816ad7a33d5c0ee0d61962 fix(kanban): stop forcing dashboard text to all caps (#26413) 6a20ad6c0a6cf9b078da4dd3710fe6cbf37241d2 fix(dashboard): constrain theme picker dropdown height so themes are scrollable (#25213) (#25220) ac1536b19f5765e082650615e0a5748f731f8c58 fix(web): render object config values structurally (#10949) 609c485fc6d0a0c24a023cd1349ebd6ddbf60315 Merge pull request #27971 from NousResearch/austin/fix/goal-statusbar d9b6f75c0b0ffa3cdb3cbe63de3a8e1a5aa44e8f refactor(bootstrap): consolidate ACP browser bootstrap into install.{sh,ps1} (#27851) e3a254d65b1b83d9ee75d4591113fa65a7f3a13d feat(dep_ensure): complete Windows bootstrap — dep_ensure + install.ps1 + detection (#27845) 6f5ec929a187739b0b06d2935cac4dc7537ac22c feat(config): add install-method stamping + Docker detection (#27843) f2fdb9a178a0b646d0803ab0789914657dc8c361 feat(gateway): deliverable mode — ship artifacts as native uploads from any agent surface (#27813) dadc8aa25580ac1ecc65d6185dfc6bd0e1d6d279 fix(kanban): surface unusable triage auxiliary model (auto-decompose aware) (#27871) d9fef0c8ab308a6c4258eb1449b40a685925bd67 fix(kanban): align failure diagnostics with retry limit 6e60a8a09225d7395a3bd68246a39654251d7458 feat(kanban): make worker log retention configurable 8831eb5c70e2e99cda9983919100a335a9bd86b8 fix(kanban): align worker terminal timeout with task runtime 029239860426a3b12c3c7e0a7ac1a5634ff7b0ce fix(acp): use modes for edit auto-approval f70e0b85dd483d1c2b37e8bebe7a4241796726d9 feat(acp): add session-scoped edit auto-approval 49b28d1646286a1bae20afb93ee3532dfba35888 fix(acp): avoid duplicate edit approval diffs 9592e595a26b77754e9d538ad41272e88f1b9d30 feat(acp): require approval for editor file edits 060ec02858eb9e441da234476a2356708605fcc4 docs: add ACP Zed edit approval diffs plan 0fa46c613b364e435ea8a8ea6c3cb31c1a01ab50 fix(yuanbao): persist message_id on @bot user transcript writes 41f1eddee30a01a7b3dd2c2efad6f0e3dca681aa refactor(doctor): extract section banner + fail-and-issue helpers (#27830) 94c523f0c5c8f717c5294f9048d02dee2774b469 docs(session_search): update all docs for the single-shape rewrite (#27840) ff078738ea0108548fc9c147140942fbeab7c833 fix(skills): load symlinked skill slash commands e98bec95effc74dc980937ca1efa28948a9b1822 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui fd256b0a7066ca652b434ae09008af1ccdcbf538 feat(desktop): persistent terminal pane + fullscreen takeover bed626bdb24b0158d78b7121a28662e3dfbe615d Merge pull request #27822 from NousResearch/jq/desktop-thin-installer abf1af540193c30047ff3e7e759c330faf3a880f feat(session_search): single-shape tool with discovery, scroll, browse — no LLM (#27590) 02aaac8f733f175f2e2d3863c535a9584ed87bb7 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 705eaa054a10017f5ebc9f7903d683ceb941e19d feat(desktop): thin installer + first-launch install.ps1 bootstrap 4a3f13b47b3e51bc3cd0f20c7d6642d0d425bd00 perf(prompt-cache): date-only timestamp + loud gateway-DB roundtrip logging 9b91377bec1a4aafc66543f30406a6ddd5546cc4 feat(grok): apply OpenAI execution guidance to xAI Grok / xai-oauth models (#27797) 27b90d5d603db3af7f7a2f7800f01d7f8a2774a8 refactor(bootstrap): consolidate ACP browser bootstrap into install.{sh,ps1} 43e566f77eaf01293086eb7cb99a21e240d60634 docs(fallback): document layered auxiliary fallback ladder 766f263bd2453838bb34e98fbe048e09f9fefa25 test(auxiliary): cover layered fallback (chain → main agent → warn) 034110e7ac08e01b077e23f30530c0791d06baee chore(release): map zccyman noreply email for #26998 a57424683759617040dd82082d85128deb236de4 feat(auxiliary): add configurable fallback chains + main-agent safety net ec096cfbd8e0049aac360fd289a21a2759748410 test(auxiliary): adapt eviction tests to capacity-error fallback 24c209f1129a0f1f540c049a7b2e7ad7e032385b fix(auxiliary): detect quota exhaustion as payment error; allow capacity-error fallback for explicit providers 569bc94b59b687b5b6efa013f521756156f6e778 fix(auth) fix a few cases where refresh tokens were not rotated. 20bffa5b37ce121f6adc1c68b4759440a79473ec refactor(auth): mostly cleanups and style changes 0bac7dd05bd56fd615ef4b5c499a60a42a8b32b6 refactor(auth): collapse Nous inference fallback controls 89a3d038cfb289ce73b9d7aac9b0b7ca85a018f0 Switch to JWT token for inference against Nous, falling back to old opaque token on failure. c9055626232e1866fedcca8073d0c13ae62e7b90 fix(auth): stop replaying invalid Nous refresh tokens 4c46c35ed0d3864f1cec55d87ab6d0f838ec7a2e docs(messaging): clarify admin/user split and signal future gating (#27623) 1345dda0cf4559a72f2a427e103d1b78e4fc9677 feat(kanban): orchestrator-driven auto-decomposition on triage (#27572) 04b4f765cc9fe51a60e0d962e1d41e703453978b fix(mcp): use module-level time so test patches do not race background sleepers bdc2113b5cdd37cedc033547f0361acbc326fd34 fix(xai): wire schema sanitizer into post-refactor build_api_kwargs 2551f0813097e2251a19e9281c0f13de898c3798 fix(schema_sanitizer): strip pattern/format from Responses-format tools for xAI compatibility 532b209f01b8c70a8dbb75b580b4fc673488ec5d fix(run_agent): scope kimi tool-reasoning trigger to host, not model name substring af7b38d78e6f3c37fc7e4a7b3a867b7c8b7ec96d test(voice_cli): drop stale ≥1 requirement for force=True error _vprint calls 0b491c466a9493a1522bcdaaa3f7ead96dffe2d2 fix(model_switch): preserve explicit custom-provider model list when no api_key bfcab25dcdb07e639b72cdabe473cbb42edad241 test(tools_config): align post_setup parametrize with current browser provider catalog f27416dc80b2419b0a1dc7c3197077fe3e27e311 fix(cli): include send in _BUILTIN_SUBCOMMANDS for plugin discovery gating dfc6ea72c16ee971ac1d6f4b3118cd8cc1f47a7d test(gateway): include direct_messages_topic_id in telegram DM metadata assertions 06924e827cb8184a933899dbb365b1cb51c9eaa2 test(gateway): accept trust_env in fake aiohttp ClientSession lambdas e66a3e86efbc9e428bb5ace45501d6f6ac92d36e chore(acp): bump registry manifest to 0.14.0 matching pyproject 822e92edb313193494d397064f9d3a8572a74b63 fix(aux): default OpenRouter auxiliary to gemini-3-flash-preview e3f7ff1123fc8e0dc156807fb0935c89f613d6f4 test(xai-oauth): pin PKCE token-exchange wire format cb53c40e459f1913d086a3ba942746eb605ec6f5 fix(xai-oauth): echo code_challenge in token POST so PKCE exchange succeeds bc7c608d54367ff11a10e18b48e82999005c3ea7 fix(gateway): ignore inaccessible service path dirs 1a82b7a1ff00a389bd39f92f8203793492fd9e5f fix(tests): stabilize xai env and provider parity 73df329214a89eddbd45b0fa84ee99aefa8aea30 fix(doctor): flag missing credentials for active openrouter provider a2cc30544c8107a3d0610bc9b796e11d05a3f9a8 chore(release): map vaddisrinivas for #26394 salvage 7847a58b3a9735a4214d1ee081725f8c8e8d063d fix(docker): preload messaging gateway deps 4a7cd2e16dfacbbed4762f7625ab6eb6e0332447 fix(codex): allow kanban worker board writes ee7cd10281c8d6e2cdb9f2f0583c96c0ce2b1639 chore(release): map hehehe0803 email for #26212 salvage 280c63ce91629f9e16d0c2fa82acbbc79c51152b fix(mcp): prevent parallel-safe prefix collisions 874dad5cc1886ed79cddbc4d12c8cc62f8f3db5e test(delegation): add regression test for runtime missing 'provider' key 84667cbc21dc09c4e53793eb31d3b7f2c4fd9d0f fix(delegation): preserve configured_provider name when runtime returns 'custom' 08a66b2ae35a9b1ad53b07d0513c6df3bea53e01 Merge pull request #27489 from NousResearch/bb/tui-composer-cursor-drift-v2 3f01e9493c4105bc52a9366a833fb17bb155527d chore(release): AUTHOR_MAP entries for batch salvage group 6 contributors 74031e1e2aab77881c8e1eddb5f1766b47dfcfdc fix(dashboard): respect HERMES_BASE_PATH in WebSocket URLs (#25547) 714b3b2bd885c070d6404391b390fe349bf6cbf6 fix(web_server): pass proxy_headers=False to uvicorn.run so the dashboard's loopback gate sees the real connection peer 4afd479f51631ea39f8403df6b1e0467fc81c466 fix(gateway): use service restart path in Docker/Podman containers 55d6a1636bb1f38b01b708582c527b91cc9fe578 fix(agent): honor provider timeout config in streaming API calls 2f28b60a474c880367be612c682f52b8ca9dbb4d fix(send_message): preserve Slack and Matrix thread targets resolved from channel directory d5a0815c3dd9e4c9ca2fd37d0f51f5d1cc0b1e3e fix(transports): use monotonic deadlines in codex app-server turn loop 37286a5bcd4fe2b43ea365140e71abb0add05fbb chore(release): map QuenVix, Mind-Dragon, soynchux emails for Tier 4 salvage d0f551b44e98c36e61aba31c5b2b65a564d0c3f8 fix(doctor): show xAI OAuth login state in hermes doctor Auth Providers section 016893f5e47b32dba0c16a3c38279de0cb590243 feat(status): show xAI OAuth login state in hermes status e10bb9dffa5908f21f6a97d7e2c4466de76b61e5 fix(doctor): isolate per-provider OAuth imports to prevent fallback regression e89d78ff09cc0bcca4396cb50faa2e9da4301e48 fix(doctor): suppress stale XAI_API_KEY issue when xAI OAuth is healthy caac54796bbdd28131ee2c105fe7585ca245674c chore: revert unrelated package-lock + nix hash churn to keep PR diff minimal 711f46e4bdbf1ec07d949f0c6726a6e034ac4509 review(tui): update stale comment refs to renamed visualLines helper 220736f41726cbd2445c2904a97c1971b2612730 chore(nix): refresh ui-tui npmDeps hash after wrap-ansi direct-dep drop 8c78f533ddf988498eda025ed480f71062a82984 review(tui): route cursorLayout through @hermes/ink wrapAnsi shim (Bun runtime parity) 55f13be65de1cc7d9c494b45f7899d9119babd23 chore(nix): refresh ui-tui npmDeps hash for wrap-ansi dep addition 1c0e59e557d00476e1ac0a35ceeb611e17533761 review(tui): address Copilot feedback on cursorLayout wrap-ansi rewrite 3b4dd683263c5895bb6144564e4bea8881d79993 fix(tui): align composer cursorLayout with wrap-ansi to kill multiline cursor drift f36c89cd5798da0f313192555739975e57ffdef5 fix(plugins/browser): carry forward requests.RequestException wrapping c74ff2c8effce1615074820b03e0d13997c62bb5 fix(browser): self-review pass — dead-import, log levels, future-proofing 1bb6f03724590e5755619e97d0fe580d2cc92f9e fix(browser): ensure plugin discovery before registry lookup; parity harness fec0a0da985f42cab63141c9a6a09d2468144a00 test(plugins/browser): coverage for the 3-plugin migration 250caebeb18c2445f8f67db4eff1e08718273ff7 refactor(browser): delete tools/browser_providers/ directory; migrate tests 1b9c539c6e2eaf921b040b706494ce27d409e36c feat(tools): mirror image_gen plugin-injection in Browser Automation picker 40fde853fa6a84bf129a3f0958d15974887ccc78 refactor(browser): dispatch _get_cloud_provider through agent.browser_registry a15cdfb0509db31b094aa0ff034b2432c43bc6e1 feat(browser): browser-use + firecrawl plugins; drop single-eligible shortcut b8138ac4054935e117e2a5b2042fe9f01bb06e09 feat(browser): browserbase plugin (spike — first migration) c6e6909e5a18f4c1a83eb48f0297e47fd17feed6 feat(browser): add BrowserProvider ABC mirroring web_search_provider template 150b577da52318ae14cddd934aa815291b117e14 chore(release): AUTHOR_MAP entries for batch salvage group 5 contributors c02606a385bd03630b7c76b72bf82f686a51f907 chore(deps): lazy-install boto3/botocore for bedrock adapter 1856bd9cc88a3790d7ccc7566aacd79ea2d1cd1c fix(telegram): re-trigger typing indicator after sending messages c9298bba06e91350aac4af8bc450b4c4f4fb225c fix(doctor): SSH check ignores TERMINAL_SSH_USER, TERMINAL_SSH_PORT, TERMINAL_SSH_KEY dbeaaa47f2df6ce11906ab9cdf386e80b3a0a427 refactor(security): extract _block_message helper to unify block logic in _parse_response 63805965e7a907f6b5e3a687fc37bed2004e7634 fix(security): restore type safety and extract constant in shell hook block handler aeda146112c840372ae6f091c28d6379d8db6509 fix(security): honor shell hook blocks even when message/reason is absent 8e3cfdfb613ceb923ab9c07f8b88d4fa512b35b4 fix(webui): allow native text selection in chat via xterm.js bypass (#25720) 6622277f11ca1dee03e868b064fb1851e5598b77 fix ACP start events for polished tools 3c51da1cb709566cfd3f29b5d3405a7826e97ced fix(cli): sync _skill_commands after /reload-skills so Tab completion picks up new skills d9abbe7fa4c69333a226b7a2d366713b3f071187 fix(metadata): qwen3.6-plus has a 1M context window (#27008) 5a2a858b84c3e189c7d4ab7db94205c0a2ef480f test(restart_drain): assert i18n catalog resolved (#22266) d87b27cff86fe5dcf07cbdb073608674f8b92b3c fix(gateway): add codex runtime telegram alias 5fba236644a9c2aa18501fdef1484e5b6fecfb85 chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) ad00777f042d9c2ca23f1575ef1036a5b59d6195 fix(mcp-oauth): print SSH tunnel hint in _redirect_handler cc59880ab01c2ca737cc3bad99de7cde8fd32f22 chore(release): map EloquentBrush0x email for #26642 salvage a9ba636d535faa6aaf928f5c6c575209bb292f58 fix(tools): run post_setup in _reconfigure_provider() for env-var providers ad1aa1a037a0603b09593dfdce1efd8111936c8f feat(x_search): auto-enable toolset when xAI OAuth or XAI_API_KEY is configured (#27376) 519657aa98d4969ec9e23c70c074d1982ef3ccf1 fix(matrix): warn on clock-skew silent message drops (#12614) (#27330) 56ad30de1759484bf7d65b4dfdd1444658d1298e Merge pull request #27248 from NousResearch/hermes/hermes-27dc9cc2 563b4d9e51a46cc421e327b351cb7efe1ccb151b fix: strip image parts for non-vision models with provider profiles + getattr-safe _custom_providers 36ad8336f9fcf2fe03f43782281cc7a555cbc6ed fix(run_agent): guard memory provider init against empty/whitespace string 4ece521bcf37401686e73f1d08ebaa87caaae05a fix(run_agent): isolate background review fork from external memory plugins (#27190) b5bcffe1674fa9ab3ba7a754c07ab77bedde83a8 fix(fallback): forward custom_providers to fallback model context-length detection 4ab9a06a51268a2864cc66ee36ef34bf6f9ef6e8 fix(agent): reset _fallback_index at turn start even when no fallback activated aa05ffba530fde599b6515120578364cce682ac7 fix(xai): surface provider 'error' SSE frame in Codex fallback stream (#27184) 80fa92a491c67ae98c43ea723487db640d99857f fix(codex): rotate pool on usage limit 429 — port to extracted modules df22d29522ced894ab79ff66e4496c2c93be65c4 fix(copilot): GitHub Models 413 hint — port to extracted conversation_loop 3fbedd732e5179759d797927fd0f2cf4324682b2 feat: add supports_parallel_tool_calls for MCP servers (#26825) — port to tool_dispatch_helpers fe4c87eb28907c467f60335d75680a50e77b15c9 fix(agent): retry malformed anthropic stream parser errors — port to extracted modules f885be030cc2521a4dd20122c66f411f9c1377e5 fix(auxiliary): resolve xai oauth compression from pool — port to conversation_compression 6975a2d9ae20c5131c4fd3b3758dc9eade8cc6a0 fix(xai-oauth): entitlement-403 chain — final state (ce0e189d3 + 9818b9a1a + 6784c8079 + dffb602f3) 408aa4fbc4839b1f770849e4e28c700b6617d07e port(refactor): deepseek thinking-mode (068c24f8a + cd9470f41) — no net change 6362e71973c18b407651157f818e279122ce41f6 fix(xai-oauth): recover from prelude SSE errors, gate reasoning replay, surface entitlement 403s 27df249564b3ce6fa4d1db883df0329bfda01593 feat(nvidia): add NIM billing origin header — port to extracted modules b07524e53aed5e8629b98ce3bbf3a54a27d596f4 feat(xai-oauth): add xAI Grok OAuth (SuperGrok Subscription) provider — port to extracted modules 7d221aa1f288a96a11485845923266499f5a3abb fix(langfuse): complete observability fix — port to extracted conversation_loop a77ca9295e96af9f0da522b1bd3afe1965ef21ee perf(run_agent): accumulate length-continuation prefix via list+join 94b3131be7115709c516a79be7c3d01dd71761a8 fix(run_agent): detect kimi models via model name for reasoning pad 8f3bc17db9ebe1d9108ae69b14fcc3f06734554b feat(agent): Added gemma 4 to reasoning allowlist 152d42d1a7314a8f7912e661547341dafd62a5fb Merge origin/main into pr-27248 (resolving run_agent.py = ours) 7322816efa601737722c74147194f1f5ffd3ad07 chore(release): AUTHOR_MAP entries for batch salvage group 4 contributors 35b7befc67315da5d4ce6b6a3daa4d9ba2f57c1c fix(line): add trust_env=True to all _LineClient aiohttp sessions 52c89715a29198d838dac54e229aba9cf328e408 fix: respect user-configured vision model for OpenRouter 5631345b12aa5fa7ead11203624e646b42c8936f [agent] fix: harden api server response headers b389796ae3a33256ff1b4077acc1169831fb63e1 fix(auxiliary): resolve api_key_env alias in named custom provider path of resolve_provider_client 0afab4a32b3b371ac3b5ab17d745aab823444ae3 feat(gateway): extract auto-TTS markdown strip into prepare_tts_text() hook a3017508bf88e663c318495d191904020f77a0f5 fix(gateway): preserve underscores in plain-text identifiers 364a1dd290245093f76837c6074bb7d4fdc798c6 Local: doctor uses x-goog-api-key for Google generativelanguage endpoint fdd455bc58b8708eb2c7e3e5d83efca3ec49e4a4 fix(gateway): avoid zsh status variable in update wrapper c1ae18ee815eba605c1b021e1b0b2a9c765b2d71 fix(gateway): add trust_env=True to aiohttp sessions in SMS, Slack, Teams, Google Chat adapters 04bb30730a66ff17fe3dcb509d6fd572da3eb014 chore(release): AUTHOR_MAP entries for batch salvage group 3 contributors 8973b00ff3665a76b69ca17e57c8cd1a39b32d53 fix(scripts): fix UnicodeEncodeError in footgun checker on Windows a52f014a8cdefb72d81ca0e1d1208571dc3512d2 fix(tests): mock keychain in TestReadClaudeCodeCredentials to prevent credential leakage 7a7e78a360464b30ba9e9a20525681977b0f2095 fix(cron): prevent parallel job result loss on exception 6158964ff69c0c3ec0ee37fd5de5221b65ac7bcf feat: inject current time into goal judge prompt 6f50c26b2a0254275e8f79a30e8c950cece81ed5 fix(model-switch): probe /models for custom providers without api_key 8bf09455dc498581fe6dea21402ee2a9238a2212 fix(windows): suppress console window flash on subprocess spawns 5338250dab14b3e4f9dfb306446e8c55835adfad fix(gateway): add direct_messages_topic_id for synthetic Telegram DM events 75e5d0f6bd412ff4ae719a6ebd98bfd5a471f66c fix: strip image parts for non-vision models with provider profiles bde3c7982c30796f8709cb0041d34ab36a4d7a9c fix: preserve discover_models in _normalize_custom_provider_entry 046f0c01cb7fde22633c022ffa9bf6b0e1befc3d Merge branch 'main' into bb/gui 8d4766afcae676efba0269787ddad7c769ba6c24 fix(api_server): coerce stringified booleans in request payloads 47823790b00255b54c999b9559df2617f18b1df5 refactor(run_agent): review fixes — keyword-forward __init__, drop dead code, tighten guards fb138d91ca34c3e2e49ce67f3187da6feeedbbdd fix(install.ps1): Stage-Node honest reporting + reject empty -Stage 3925be2791038e29fc9d1fc10c3fd403a8d5bed7 fix(install.ps1): trim completion banner + strip em-dash in test c0b64f087750ea4a9fe11e32ad9cce21e9857e2d fix(install.ps1): address Copilot review on #27224 e5f19af2a5cfed9ec7f6ea1e1f770f8a8b342de3 feat(install.ps1): stage protocol + Windows clean-VM hardening pass ea2ee51f0b40eac51e279e3ac746f99c2b38e4c0 fix(teams): fall back to default port on invalid port config e90a52deafcca5c6b1fc06b0ef427348ec796077 chore(release): AUTHOR_MAP entries for batch salvage group 2 contributors 773a0faca0888df7b1ea310c554b70a18710813c fix(deepseek): set default_aux_model on profile so aux warning stops firing 9a9f8a6d9945c9bf3118c557f85ad1956de4f553 fix(run_agent): detect kimi models via model name for reasoning pad 5f72dd817ec2709f6fda323ef96dc55e21dd3d0d fix(install): use resolved python variable in setup_open_webui.sh 1a4e64ba06d071551ae8266ea809de0e412b45c8 fix(credential_pool): parse ISO-string last_status_at during from_dict rehydration (#25516) 508b022acb85b5b1395945e1b5f27e4706a81853 feat(gateway): add .ts/.py/.sh to SUPPORTED_DOCUMENT_TYPES 7d09bb19155275a18b3952a1f5f399d1dd87df24 fix(delegate): tool_trace false-positive error detection for short outputs 4279da4db62a8a3cba7004c6fb1e1e53ea2c6a29 fix(windows): make PowerShell installer parse in 5.1 7282ef1b9d4ba9b77057f53ca92cbb2ed674129b fix: add paste collapse logging to aid debugging 8d756a421071d0dfd507226c03430413b6de9491 fix(run_agent): guard memory provider init against empty/whitespace string 1eadb069c794ecf0626ff5c785191e604ad1f6bc fix(kanban): --severity filter uses >= comparison per documented behavior (#26379) 782d743730e3df193c5969bc9897350fa14429cb test(skills): add regression test for skill load failure returning None 4b17c2411ab2518fabe9d87872a03a47d3b8cfcc fix(skills): return None instead of truthy stub when skill load fails 60531889d56a9a9d2b3f0b9ee04aea4145ede392 fix: remove unused import and hoist module-level constant a81cfd0a0a6de1c3028b9c800ae917d9bd7e5162 chore(release): map 0xchainer and kronexoi emails for upcoming salvages 57feef320178ce79070dc7ac9a399d3cf587eca4 test(gateway): add smoke test for logger init (regression guard for #27154) 4e9cedcd4c6de05a0603a3969b6991fb0836761e fix(gateway): add missing logger definition to prevent NameError in _all_platforms 32c3f06a5bf0867d11d309503122f59d0dba75d9 docs(readme): remove hermes-eval and Hermes MemPalace from Community links (#27271) 9f182bd7b04f73e4508999017e20740272b036a8 Merge pull request #27251 from NousResearch/bb/skin-render-magenta-bleed a65f723e6847f8d326947011b0d6d345d240ce25 fix(review): address Copilot follow-up on sanitizer and file decode errors 7e1788db5d569f61d3aed32f74963208b03835ec fix(tui): harden ansi sanitizers for dangling CSI 9b2d58159c70b46214d0ef961168bbc826651663 fix(cli): satisfy ruff encoding requirement in send_cmd 290bf93104652bf6acaf50151f0ddac54cb69fde fix(tui): harden Terminal.app render behavior c058ac6677aab484f25c826724be150cfc476c61 Merge pull request #27227 from NousResearch/bb/gui-glass 94c3e0ab8ef253eab64c3632b0e9cc8a502f16b9 refactor(run_agent): extract 10 more helpers to agent/agent_runtime_helpers.py 973f27e95631aaecbda5e32e3fa9e5d7f6a2e1d3 fix(run_agent): isolate background review fork from external memory plugins (#27190) 96b7f3da45931f2f0e8ce6eb880da24d2c44ac7e chore(release): AUTHOR_MAP entries for batch salvage contributors 7244116b687f6e5ff5e869c99cdbb1b09c822799 feat(agent): Added gemma 4 to reasoning allowlist 21078ebcea6dd870835080fdc76a40284418c921 fix(fallback): forward custom_providers to fallback model context-length detection 903ac23bc879cbeb9d70b1941176a91cc736b643 docs(dashboard): clarify chat tab tui flag c741eacd0c1d81ec8db93bfe7e4cf8296d2f3d55 docs(spotify): document Home Assistant speaker routing 49bd95c43203a2264a7352acc47c35c34c8d5a65 docs(security): document YOLO mode visual indicators added in #26238 6f7292a555b425005fc80190f9480bad305c7ba4 docs(cron): document name-based job lookup from #26231 86f3776a7252126d1eed6651fe1fe6668b7ed85e docs(delegation): document api_mode wire-protocol override from #26824 31a805883b1a39826f5faf13190d37164d3ba2ad docs(delegation): show api_mode override in custom-endpoint example d5ce85c423af825bffb5333bfd433a805e29bdeb docs: add computer-use-linux community MCP df80bda77831abc8beec9dfdec0b9e39565b8b68 docs: add Hermes MemPalace to Community plugins section a1e3d7969e4b448bb56073872f00e013098206a4 docs: add hermes-eval to Community section 407a11b4190d7a6ebbc6429d0481545abd86aadc feat(discord): allow_any_attachment config to accept arbitrary file types 3bd71e69b85e9f2391c5527fac8ae3ab581d27a7 fix(desktop): restore non-overlapping PR scope d0ee6099629312a7d60c2b664a36ce320caf0c21 chore(desktop): drop installer scope from GUI PR 4ce99508d67c25c1f811b5db5ae9a137fdc41e92 Merge branch 'bb/gui' into bb/gui-glass 6e5bddc9c324ec04c5ced97a43117e5117e12b23 Merge branch 'main' into bb/gui 7415e280738a1d7f4083979e6e2bca967ed9433f chore: uptick 9f408989c40c2f1ca5830bd571eb5e1701cad0ce refactor(run_agent): extract __init__ (1,381 LOC) to agent/agent_init.py 6a854bc8edad688decdfc76d97278b5784646ad8 fix(desktop): trim sidebar terminal startup spacer 053025238434cfbf121873977b39888d7f27d1c1 refactor(run_agent): extract run_conversation to agent/conversation_loop.py c7e6a48bfb72c63b11e734018216619c64f07c5b feat: more ui qa 64ab17182a9052184b167b7a7100a2da7cb3134b feat(desktop): virtualize chat thread + sidebar via TanStack Virtual d35ee7bcdd652715864d0d0c262790293a2555c6 refactor(run_agent): move review prompts to agent/background_review.py c42fa94afc39c7caca15cdb7b951cc338a4587f0 refactor(run_agent): extract Codex runtime + assorted helpers to dedicated modules 8acd825afc52ca883b5c8c2cf6c85a5e5b8e2f5a feat(desktop): solarize the xterm palette in both light & dark 0430e71ec971d673a6d2a32fd54c1847683a16d2 refactor(run_agent): extract streaming API caller (893 LOC) to agent/chat_completion_helpers.py cc76ebcc163e809261630987a859d4093081ee20 feat(sidebar): right-click + drag-reorder sessions and workspaces 4b25619bc4770396faf206429ddc180ad02231a9 refactor(run_agent): extract chat-completion helpers to agent/chat_completion_helpers.py eb68d66ff9bb5e86c4a1ffaf27ebe84d2bfabe91 feat(desktop): theme xterm with active light/dark mode f9908af1a02f5ba00b869d689f4924a697dca771 fix(desktop): persist inline assistant errors across hydrate/resume 57f6762ca085839833b1eb9e2ca9e6cb69abcc4a refactor(run_agent): extract stream diagnostics to agent/stream_diag.py 79559214a650e8d6bab03337fecf307abff6a731 refactor(run_agent): extract tool execution to agent/tool_executor.py 2d2cd5e904abc11eb6c00e88e2b6d0c8b025a597 refactor(run_agent): extract system-prompt builder to agent/system_prompt.py 5311d9959e19477aac8aa7deca46c1ee0b8e7000 refactor(run_agent): extract context compression to agent/conversation_compression.py 1f6eb1738c206e95c3e0641c3d8000a4d0be841b refactor(run_agent): extract background memory/skill review to agent/background_review.py 5f309ae685d08a2d23eaa992a5bca1f70f52486a refactor(run_agent): extract OpenAI proxy, safe stdio, IterationBudget 59f1c0f0b668db8311b8ea15bdfc2d1fe373227d refactor(run_agent): extract tool-dispatch helpers to agent/tool_dispatch_helpers.py 885d1242a265e1a373311dbc1899c569dac56646 refactor(run_agent): extract message sanitization to agent/message_sanitization.py d67a438fecf23bff6edff1bc63c5ad2b56de60e9 feat: glass ui pass 3b39096904ae63a9e784b2403ad6ad27160bb2ef Port from Kilo-Org/kilocode#9434: strip historical media after compression (#27189) 5cbe0b1c4ffabf6aeca31827ba9a76ec35e4d4fb test(plugins): cover _discover_all_plugins recursion + cross-link loader 21be7025c584ea9b1d829e088b6049e259c6859a refactor(plugins): drop dead bundled-source guard in _discover_all_plugins 8ab8bc2f035ac4ed8b3b43ed2940ba3dc4589cc9 fix(plugins): remove unreachable hermes tools → Langfuse path 9b82586c6b6dd628af273b3c6875e0142f798089 fix(plugins): surface category-namespaced plugins in hermes plugins list 29b1bd0e20e5848e2be8de431a225174ab6a7fed feat(cli): add `hermes send` to pipe script output to any messaging platform (#27188) 33528b428d196443f788f43fec3139bd6e2c4997 fix(agent): reset _fallback_index at turn start even when no fallback activated 2b193907d668af0c45f108d885db53a7ce8b8919 fix(xai): surface provider 'error' SSE frame in Codex fallback stream (#27184) e21cb8d1457f603cda1dc8413efc400721d256e7 feat(status): append session recap to /status output (#27176) 226cee43d97997525e4e26a20075aec98e641418 feat(cli): show ▶ N indicator in status bar when /background tasks are running (#27175) 6f817e1447499cf51d8c966b3f3a600ba3412f85 fix(telegram): restore DM topic typing indicator e51d74ab917675a67e6a964d6c2c2ea2b150ac2c fix(codex): rotate pool on usage limit 429 dffb602f37b3c1b9c9fd7f0417aab3af56cffa38 fix(xai): drop stale X Premium+ hint from entitlement 403 surfacing (#27110) 2b53601a825e28d2545d6abba77c3061894d7aaa fix(desktop): refine prereq failure guidance bc4f63f7bd42a6a3f25296eb8777457fea6b9093 fix(desktop): keep runtime prereq messages precise 1caff7184ab3ea6927e0d903644683ffe4f48ecc fix(desktop): validate Node and Git prereqs precisely a7b8bd47d9386c5b81adef6cf90363fb2721f196 fix(desktop): clarify Python manual install timing fb05f5d4b58d4fb20c3a4a98c2c150de3f729f3c fix(mcp): validate remote URLs up-front with a clear error (#27105) 93e109a1d552b03c847b96077428048cceb012cd fix(moonshot): strip $ref siblings and collapse tuple items in tool schemas (#27104) dc3d0fe1489aebd5747fa620d9b2eec751a92a55 Port from cline/cline#10343: periodic gateway memory logging (#27102) fc03c95da13105807cb3b3f42a311e4916b456ce feat(cli): add /exit --delete flag to remove session on quit (#27101) ef0f4251cc3f245a3a0d0770a72f4bec53438050 fix(desktop): foreground Node installer elevation 8e2e6d715f3fd7f2ae454a4eeab8babfaff70b78 fix(desktop): clarify Git Bash installer state c844d15c3d27991a35bbc4ec56558d85122412c9 fix(update): stream npm install output so postinstall progress is visible (#18840) 05af78c53d553f6dd20012ce18eb0c2c02d346c9 fix(update): make Camofox lazy-installed instead of eager (#27055) a21ea284c4c20e0432089432e9315b7430719533 fix(desktop): avoid rerun language in manual prereqs 8a2b2b9f6f9c419fdef48f542bf4b1991c655810 docs(release): expand v0.14.0 highlights with newcomer-friendly context (#27053) 6c2406c5e131dbbcabb69319c73c02594f63caea fix(signal): read groupV2.id in envelope, fall back to legacy groupInfo (#27051) 35f25523c60d9b1174c9a5d901e34f2300d81986 docs(tools): add video_generate / video_gen toolset to user-facing tool docs (#27050) 657b4fcb55478d3cfd6a40eeddfced0adcf3faeb fix(desktop): reserve thread space above composer 9c93aa5518339de96eea90d1ff8eb919ccd0754a fix(desktop): clarify Windows prereq copy d86eb9a0247c599add0a49bb643a9754ec490923 fix(desktop): include Git in Windows prereq installer 683698742852ce0455f3a07b12c772c786d5a2ae docs(release): rewrite v0.14.0 highlights for excitement framing (#27035) 3009fcc63732403052bec273977c26e0dd236882 fix(desktop): avoid startup Git Bash warning 1cbe20826da88b663b8c1889966c2eebffe9d693 fix(desktop): align prereq copy with non-blocking install 127361e4a5bd734d7b99984bcd3f9b06ccfe3dbf style(desktop): tighten installer prereq wording 3e1d0fb0862e60306c806840e5d94a08398be33f fix(desktop): split installer prerequisites from runtime setup 062eed654d537653c5245384fd813710bbf8efd9 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 3034eee38ec516109566c00975be4d0276747c34 fix(acp): replay session history before responding to session/load (#12285 follow-up) (#26957) 797c84a5c5d6ab09fcfdeae5f47c4bf4957b0ed0 fix(tui): defensive clamp in pointToOffset for wrap-continuation rows f3a4af9cf2a626cb3e055766cb1cff60168d295d fix(acp): replay assistant reasoning as agent_thought_chunk on session/load (#12285) (#26943) 637ec1f23759976e2a261400b3a865627ba6a8ba fix(tui): correct findAdjacentRanges afterRangeId/beforeRangeId semantics f42f211a84760b647058a7feb0940ca05af77fea fix(tui): wrap-aware per-row source fragments for byte-exact copy across wrap boundaries a91a57fa5a13d516c38b07a141a9ce8a3daabeb0 chore: release v0.14.0 (2026.5.16) (#26862) 72f94f4a7c281f2ac2a944a20eb615f517f64fe8 test(security): regression guard for OAuth PKCE state/verifier separation 345821b4a1d612bc56cabb548b91b35a76bc3692 style: move secrets import alongside other function-level imports fcd9011f8d02d30d5f80db1749cbeb8f2d1b3fc3 fix(security): separate OAuth PKCE state from code_verifier 585d6b64305ab94773a129880450d2ee3d362bbc fix(gateway): merge rapid TEXT follow-ups during active sessions (#4469) (#26822) 374dc81c2359a6f61e8d1efc49de29d61d7b9a88 fix(copilot-acp): tighten deprecation detection + sharpen GitHub Models 413 hint b85b938b1fe74ecf16dc22e4448ecbab49660727 test: add tests for copilot ACP deprecation detection and Azure URL mapping 4ded3ede334a7d5f8baa20f730bc8c5d3cdc399e fix: detect gh-copilot deprecation and improve GitHub Models 413 errors (#10648) 7bb97b952f7edd51ce29ba9f3db4e255d6792c22 chore: add worlldz to AUTHOR_MAP for #26704 salvage d0a183cadd877fe21a92fdc9114509729444594e fix(doctor): suppress stale direct-key issues when oauth is healthy 2774b488928e5e8a12dd080eb95a7a42007017e2 fix(docker): heal pairing-dir ownership after `docker exec` writes (#10270) 5f91b1a48b06c8260dc539614abda27cf4e831cb feat(skills): add osint-investigation optional skill (closes #355) (#26729) d725407c5645c84607df552da5175e9a628b9bf9 security(deps): bump aiohttp, anthropic, cryptography to CVE-fixed versions (#26830) 6ba35ec336cfcf5e36f398750e630783f8715bac Inspired by Claude Code: tighten dangerous-command detection (#26829) 395e9dd9e298df682bbf77848636e9f61f713171 feat: add supports_parallel_tool_calls for MCP servers (#26825) c445f48b78ad9dfb142d2337b51f227bde66cc84 fix(delegation): honor api_mode + auto-detect anthropic_messages URLs (#26824) 74d0b392e7a87c869d9e13cf3eba5d809d8ff1fa feat(x_search): gated X (Twitter) search tool with OAuth-or-API-key auth (#26763) 627f8a5f1dab2847a5fb97fa79daa6d0bc96d8bd security: sanitize tool error strings before injecting into model context (#26823) 5e76cbe47d6c8044f940b2d9032597d718acf926 perf(tui): hoist mouse-leak alphabet to a charcode helper de7284e13126c637b10e5a83d6a0e28475fa65a7 fix(tui): require digit+separator in mouse-burst noise check ff1dc2561f229299cc68d52e7a08858541a0bcad fix(tui): swallow degraded SGR mouse bursts instead of leaking to prompt 70b663504fee1d58a6763e862df478cf101fe51e fix(tui): keep Ink displayCursor in sync with fast-echo writes so cursor stops drifting (#26717) 559c6ad94aee03ddbd28b9480b9dabac292213a2 feat(skills): add optional pinggy-tunnel skill afb97dbc539d1b6cc812d5af2bb8e9b3ebfc4719 docs: add Programmatic Integration overview (closes #360) 016c772e7fcf3acca54e7c87e7c5a22541adb5d0 feat(plugins): tool override flag for replacing built-in tools (closes #11049) (#26759) 9c304a7f569ebf17efe120d5b61a3a745c6dc532 fix(agent): retry malformed anthropic stream parser errors 53637fb17d92b03ca3708f6df104136028459439 chore(skills/darwinian-evolver): AUTHOR_MAP + docs regen c9b32a654cd1f3480920431bd4e32a035a61a29d feat(skill): darwinian-evolver optional skill e377833fa629909a6c1ced6216e42bef79da497e Merge pull request #26711 from NousResearch/austin/fix/dashboard-kanban 6d3ed6b20d78eaf62bd4cbcea37ea2963e3be887 Merge branch 'main' into bb/gui 16ff9464a5daae9b82bf2ce2c7de5ba8f80cfd40 Revert "fix(cli): tolerate unreadable dirs when building systemd PATH" 965610f922be5b2afb6fa412205077486734a433 fix(cli): tolerate unreadable dirs when building systemd PATH ca413c6164e7957d33841353feb9cdbf838dead7 fix(dashboard): align Ukrainian Kanban Ready column help c5dc9700ebc8b890e349c0cc3e978d133395909b fix(windows): silence tirith-unavailable banner + skip install/spawn attempts on unsupported platforms (#26718) a31191c3f57e2463ce4253cb1d95f93c52f3df14 fix(docs): unique sidebar keys for duplicate skill categories (#26726) 7333c035ce592c1930c85c36331963b980c37fb5 add logging to nsis installer 44b63fc6de3fe2b53eac3109b4a20db41c663195 fix(tui): allow transcript scroll + Esc during approval/clarify/confirm prompts (#26414) 97a32afdc490e3d40b291dac0e67f291502052a0 fix(auxiliary): resolve xai oauth compression from pool 63503ebb14069e8ba0bea91955e7ce4e01670a4e fix(dashboard): clarify Kanban Ready vs assignment 62905e0a6e728dbdd74738812ad3c9c6ccecff47 Merge branch 'main' into bb/gui c7db6a58000c89b18717eef80e4842f114761fe9 Merge pull request #26702 from NousResearch/remove-pip-docs 86a368d8322b3977bf89b9043818eebc6adf470b remove pip installation method from docs 55c9f32060bbe7eb48bee2b702c157408b468eb2 fix(tui): width-aware markdown table rendering with vertical fallback (#26195) 006937f7d062f7f1dd830aa16476ce962bd30445 fix(tui): handle timeout/error subagent statuses in /agents (#26687) 566d8f0d75049e5e4e4e3e3fde7f8c766ae235d6 fix(tui): keep DECSTBM scroll region off bottom row (#26683) 40ad610968705e1e158383ade0e0ec99547c726c Clean up gateway status conditionals and logging bootstrap mode detection. 6784c80794bfd3cc40aae7f7d9f1a59876de7799 fix(xai-oauth): lead entitlement-403 hint with X Premium+ gotcha (#26672) 9818b9a1acb915971d835d1faa85949e9f7a87a5 fix(xai-oauth): rewrite entitlement-403 hint to not accuse subscribers (#26666) ce0e189d3e7185d6c8c6af924a1df23e17c6f85c fix(xai-oauth): break entitlement-403 credential-refresh loop, bump grok-4.3 context to 1M (#26664) dc4cde278ba0523c01c2c29988e59a567a19ef22 feat(docs): show per-skill pages in the left sidebar (#26646) cd9470f41638bd515db096cd934c463205790110 fix(deepseek): wire thinking-mode via DeepSeekProfile, not legacy fallback 068c24f8a4203e86de32b0d84ccaf047e8cd6ef7 feat(deepseek): add thinking.type + reasoning_effort mapping for DeepSeek API 31ba2b0cbcac310f7aa2db3c8885e37f2e2e37fb fix(xai-oauth): recover from prelude SSE errors, gate reasoning replay, surface entitlement 403s (#26644) 4aec25bc4411edb4563292cadbd02c365c846286 fix(windows): stop spamming cwd-missing + tirith-spawn warnings on every terminal call 46e2ff57f7f51cc7fd22083f749680ccfcda815c fix(tui): byte-exact copy for inline-formatted markdown + thinking content 7fee1f61eb52d1706af04c9606ee1a2e7ef3afc3 fix(memory): eliminate TOCTOU race in Windows file lock creation 6068363311b861ad0bb411bfffe5958bf8b6d142 fix(delegate): guard heartbeat join against unstarted thread 2d7182f72c398496db60de5c18f8554d7ecc6d82 fix(delegate): move heartbeat thread start inside try block to prevent orphan 42070ecefb9e9da3adec6d536d130d9dc3b82560 feat(skills/notion): overhaul for Notion Developer Platform (May 2026) (#26612) 887ba1fb03d78f8922b32e7d17dfb1e0998d9315 ci: reject PRs with no common ancestor on main (#26611) 233d4170cf7b6421939d4ae2d7adc8f3466c347f docs(xai): link OAuth-over-SSH guide from xAI provider surfaces (#26610) a480d345e63b114e9de1e9ceed746b7b9e21f0cb docs: add hermes postinstall to installation + quickstart, fix update --check description 47c0efe1c08ba6f0a70d07b7f353e1ad71e69678 refactor: DRY cleanup from code review 164a77dec9b74955c17401e9cf79f5470960b015 docs: add pip install path to installation, quickstart, updating, and CLI reference 99b81cd54b99d4c66812b1d076e593f566432065 feat: add `hermes postinstall` command for pip users b1edf3dfc8948b5ff93f42d26395fa6f30393d9f chore: gitignore hermes_cli/scripts/ (bundled at wheel build time) c57709a3d68e7972bbc7180a1d6811f5f38546d1 feat: wire ensure_dependency into TUI and browser tool call sites e38a478c05e84f7fe563a1c9e980a0cebc8e4d02 chore(ci): pin actions/setup-node to SHA for supply-chain consistency 55a7c45d379f288fb6dc0eb4e484e82b73471b2c fix(update): handle --check for pip installs (missed code path) 96917fb74ae4b9857671f7addb957db0774e4c9f refactor: fix review findings — remove duplicate imports and deduplicate update command 259ae846c8ae1b84d4cbd2cb1d62c6eefd81957f feat: add ensure_dependency() wrapper + ship install.sh in wheel bea96e5cac3caf12885056fbc3a400cb5c008540 chore(config): expand ensure_hermes_home to create full directory scaffold 79afa50703d18f91fb7878a7b7a31b425ab40382 feat(update): support pip install --upgrade for PyPI installs 624ce11ee846b57b59ca2e031f34e25813137c4d feat(config): detect pip install method and recommend correct update command b2bf658442f413a9a1d24b011589e5e38544947e feat(tui): find bundled entry.js from wheel before falling back to npm build d69eab1efd96a4622e6b00fbb806d1cd049b3589 fix(gateway): build service PATH from existing dirs only, include ~/.hermes/node_modules c4bda3f27c033f33eef824efc3e689119bfbee72 fix(doctor): generate config from defaults when template file is missing cc07e30f45267c00fac97ea5569c606aca5a1ffb feat(install): add --ensure and --postinstall modes for targeted dep bootstrap 384ec9684e86081c4add84d671d2bbf7c8ee69d4 feat(banner): check PyPI for updates when not a git install 3215ef160938c71ff61bab279b30545c0cc14a14 ci(pypi): build web dashboard + TUI bundle before creating wheel 032fb842225dedf5e6649489f81631465f1aa809 docs(hermes_tools_mcp_server): align scope docstring with EXPOSED_TOOLS (#26603) af245abec9edc6100ab1adbed32598f3eadff7eb Default dashboard startup logging to GUI mode. a7d4ada79cdec56c93f592d318145bb9163f7529 Log detailed GUI websocket failure metadata. c30550c5523a793b64f35bbe0af92bfd5064a68d Improve desktop runtime UX by surfacing inference readiness in gateway status and hardening WSL link opening. 518f39557b6753a5dc766a05dd14dd5cf2b9edeb fix(gateway): keep running when platforms fail; add per-platform circuit breaker + /platform (#26600) 3b9368a0c47176b449ea0254cdac31ec4d5ae925 fix(auth): point SSH OAuth users at the tunnel they actually need (#26592) 9e67c8e8be5047a61519139ed38536e015207449 Merge pull request #26048 from stephenschoettler/fix/discord-e2e-history-mock 622c27e55c58a0d11739a21ae29dd6d072230cf0 fix(install.ps1): restore EAP=Continue around uv python install, skip Store stub (#26586) bd3a5873e11f084d74be876a505a406224a6ef3e fix(acp): replay native todo plans 4444d5fe4f65dcbca939a1f39ae58438205e7dad fix(acp): emit native plan updates for todo 6fc0fa6e50a2eb6307c1e5afbeff360708b734ef chore(release): add AUTHOR_MAP entry for kchantharuan@nvidia.com 13c3d4b4efa2f39d7bc3178cf3eca77167ff7699 feat(nvidia): add NIM billing origin header 4e89c53082b13b71d0c7f2f662cd65ea80d9f17c fix(async): close unscheduled coroutines in all threadsafe bridges (#26584) d0c20708cea5e467eda220240bd1b69355a3bfbb Add dedicated GUI log stream for dashboard debugging. 6640a9d3ab2d760f089ac8e6a080885374bb1169 Merge main into bb/gui. 931caf2b2d42d6e76b8c470e5d44ca20704c41dc fix(env-flags): widen truthy-only session env checks to sibling sites 734aa0f367a5ace259e4c35d7b002b634a3149ae fix(cronjob): require explicit truthy session env values 4ad5fa702f6c04a2032be876a8d4d0b37a88459d docs(xai-oauth): add xai-oauth to provider enumeration pages (#26542) aac6d97a143759731431ade9a098b4baa55fc53d chore(xai-oauth): trim CORS allowlist to xAI auth origins 7d7cdd48e06b9bbf0fd4e030f6745e8b033e1adc test(xai-oauth): use grok-4.3 instead of retiring grok-code-fast-1 1e4801b8d0c27c1d6f6f8ed14ace0d3045a0d695 docs(xai-oauth): correct logout command (was hermes auth remove) 7fdc16dd4a281dad84a245ab9eed3be2f4a94264 refactor(transports/codex): trim duplicated cache-key comments e13c1b806018427aaf5fbe4b0ff2c6ca6821d6db fix(xai-http): preserve ~/.hermes/.env fallback and XAI_STT_BASE_URL precedence 9eef53b9605410ddc4fe1dfa79214a137787141c chore(release): map Jaaneek@users.noreply.github.com to Jaaneek e4d7a5dffaa18676b8567469825c2082658d8557 fix(tools): video_gen picker reflects active xAI selection and runs xai_grok post_setup b62c9979732c732480491c63a4399034f668a44f feat(xai-oauth): add xAI Grok OAuth (SuperGrok Subscription) provider 1306f234f48ccb78542963a5d08783c072bf42f0 feat(tui): selection/copy via transcript-virtual coordinates ce0f4838b0e05bc7b5d731bf37dd7eff09e27ceb style(session_search): tighten verbose inline comments 2ecad49113e16ae1f1a209992ef253e9d1fa733f docs(session_search): document default_mode in cli-config.yaml.example 8245173d614a52ab29d6e26aa66e5a09b1a2cda2 refactor(session_search): DRY fallback default + cover dispatch-site invalid-mode path 9fb40e6a3d6338b6a6a616010de7a16672148924 fix(tui): restrict fast-echo bypass to ASCII so Vietnamese/CJK/IME input renders correctly (#26011) 327e577acf15d8697dc469090286c58eca1a080a fix(session_search): make 'fast' the no-config default (matches schema + PR body) b5996b645181b21f10c73932255022f81de5df6b Merge remote-tracking branch 'origin/main' into feat/session_search_modes ef10d2e7c9158e2de4aa18bd9f591c259923e407 refactor(session_search): tighten schema description to spec d5416284f11ccbc735c8357f0ab35ce5f683ccc3 fix(tui): autonomous background process completion notifications (#26071) (#26327) 349f054760d395e66d9b2e1a9b2f6d209c042519 docs: add hermes postinstall to installation + quickstart, fix update --check description 41a3cedfacf2738d76e1dc43b23b2106277caec9 refactor: DRY cleanup from code review a653d6c3d45697a69d02fa5d3b63bf1234673ed6 docs: add pip install path to installation, quickstart, updating, and CLI reference cef942674b78f78349579a2f05fcc3c4e7387f63 feat: add `hermes postinstall` command for pip users f7d5f7ee299a98af810979c411e617cdd5f625e9 chore: gitignore hermes_cli/scripts/ (bundled at wheel build time) c9a63d80eed0e413f232876ff3308e904ed6f9e4 feat: wire ensure_dependency into TUI and browser tool call sites 5b61bafebfec23a9381c003c332be29c78af762f chore(ci): pin actions/setup-node to SHA for supply-chain consistency 9913545f77566d3c9b159c8b620cb195899fd2c7 fix(update): handle --check for pip installs (missed code path) 57eaa63769a573b72e1ca0c0fb70589ab51147f7 refactor: fix review findings — remove duplicate imports and deduplicate update command 446e8f4c6546ffdd999f65f664db63c66de1c222 feat: add ensure_dependency() wrapper + ship install.sh in wheel ccc0bb8a329a003d7775cf39030436594c078f4e chore(config): expand ensure_hermes_home to create full directory scaffold ec8ecca9785ea7171a665928db31eed464dc2b53 feat(update): support pip install --upgrade for PyPI installs 29c98268f1b04857e22ba33a6fb5f463eec4ef3b feat(config): detect pip install method and recommend correct update command 5d98bb47def59917ecbfdb8d6f734e5da07dcaa7 feat(tui): find bundled entry.js from wheel before falling back to npm build 977b2dd2b490592fbd499f4e1c8ea59453d7c060 fix(gateway): build service PATH from existing dirs only, include ~/.hermes/node_modules a0824df42130a480ceef29a73e207bac01feb092 fix(doctor): generate config from defaults when template file is missing 4cd40dc5123cac04983cca764c23e6241280c06c feat(install): add --ensure and --postinstall modes for targeted dep bootstrap 220a8c0be8aa78517591b7b13f09da607b847445 feat(banner): check PyPI for updates when not a git install 940526dfa41dc1b9e787ac8eebf63d103a7b6ddc ci(pypi): build web dashboard + TUI bundle before creating wheel af1ea1f4eda7586cdf98b2eac4517d557f2f4bd7 feat(skills): add session-recall skill db84a78e618bf973ffc403ed2e1f8162f2591daa fix(langfuse): complete observability fix — trace I/O, tool outputs, placeholder credentials (closes #22342, #22763) (#26320) f199cd9f84d8e59f0e50ce8d99aa9ac8adcc571a chore(release): map brian@dralth.com to btorresgil for #22345 salvage (#26319) 77276070f5a1302908456734f2a5bdfe790260de fix(codex-runtime): de-dup [plugins.X] tables and stop leaking HERMES_HOME into config.toml 274217316e65bd7d4030b105548de30747526ec9 fix(codex-runtime): keep migrated root keys top-level 13c72fb486e6bfc047bfde93e54116ea7ef7adf4 fix(tools): wrap browser provider network calls with error handling 6af99423272ed67dd1f8d88bfdf762d4e5b77a2f fix(url-safety): allow only http and https schemes 837395685099b130a502db3ec25551475fe3c7cc fix(slack): guard split()[0] against whitespace-only command text 94bdc63ff5f5329e5f2ab0ea213c07e3a7643aff chore(release): add AUTHOR_MAP entry for nidhi-singh02 eacb398f755b6ee102e75c6d62aed5a9b253e29d fix(tools): add return_exceptions to asyncio.gather in web_tools 5301cc212bb72b634fcb4da7bf4380c43d4b3dca chore(release): add AUTHOR_MAP entry for nidhi-singh02 c4a21d783131b04da443be6b624e20bb3b5b87b7 fix(cli): log swallowed exception in runtime model auto-detection 59c7cc64f0265195fa15a400411f381dd20b8b4e chore(release): add AUTHOR_MAP entry for amethystani 55f3262e788bdd7dd6adcab1d515d476b6cb9321 fix(mcp): pre-compile env-var regex and unify interpolation 5360b542447daaf0ba8d0f7c3cf0be1751ca0008 fix(providers): set User-Agent on ProviderProfile.fetch_models 647cc0bb0db4328b941008b290dcb986cdd18c54 chore(release): add AUTHOR_MAP entries for InB4DevOps 4f8aaf10465566008499e65937f659a29f1ba6ab perf(run_agent): accumulate length-continuation prefix via list+join b6e07417c5242f7a3d6af1c8d8f0173248b4253f feat(cli): show YOLO mode warning in banner and status bar 47614dbfca86afd9e6cf29dbd8aa4effda0932c9 chore: wire simplex docs into sidebar + AUTHOR_MAP 09d9724a09197b1981c318f3c51c55bc52fdfe29 feat(gateway): add SimpleX Chat platform plugin 85782a4ed7f2329957c4af9a4243acb51c3cf921 feat(acp): hermes acp --setup-browser bootstraps browser tools for registry installs 9f57f2286d9fb52419c69ea64c3119f734b35ef1 chore(release): add AUTHOR_MAP entry for buntingszn 6682f91b80bab57c65435ae6b5cdc791334ed620 feat(cron): support name-based lookup for job operations 05d9f641c06043a538ba03e3ed008a97403fcc3b docs(cron): worked recipes for the wakeAgent pre-run gate (#26229) 9329e06696c968b7a960541d0ee0167df6742f21 feat(image-gen): actionable setup message when no FAL backend is reachable (#26222) 04b1fdaecfda15ff4c8f5c9f0041516efd01ba30 security(deps): add upper bounds to 5 loose deps + document supply chain policy (#24226) 681778a0b753bac894bd30b1d257bcb3eface63d fix(whatsapp): fail fast when Baileys sendMessage hangs 0161d4bb6ce3154e2cdd8ce54d43273cf457840f chore(release): add AUTHOR_MAP entry for CoinTheHat 814c60092b08df3e4f7ccfcc0bab4e1fbaa39414 fix: clean stale conversation mappings on response eviction/deletion 23ac522d3711ea0735f11f4d8f6131ac24554dd3 fix(gateway): isinstance-guard string-form 429 error body e0e7397c32fa06e4c93ce07bc276ea5c1dca7a84 fix(session): persist auto-reset state across gateway restarts e0e4856d466491ee8a31378c606e65ddfe061ab9 feat(skills-hub): add huggingface/skills as trusted default tap (#2549) 0086cdaf93b2a85abe787fc9b130e45c0b8b8388 refactor(yuanbao): improve quote media fallback — move to DispatchMiddleware, tighten conditions fc2754dbdff860cdeb8fe4ed5fe0464bb6295cbb fix(yuanbao): resolve quoted file/image via transcript lookup when quote desc lacks ybres 3df26b925cae7761763e43f03978600d175417c5 feat(yuanbao): prioritize quote media refs over history backfill in DispatchMiddleware 80efe664ce5d822b31ca6c76162c6e1f7500796a feat(yuanbao): add quote_media_refs extraction to QuoteContextMiddleware d57a4b3eb51e5c445923d33a5c3da9266e62790b feat(yuanbao): add _parse_resource_id and update _extract_text for ybres anchors 6bdad1f3b2e31d38673146da362ca5dd4ddbb456 ci: add PyPI publish workflow (salvaged from #25901) (#26148) f9ad7400e30517159712a77e6a4bc2f3a390b2db fix(goals): raise judge max_tokens 200 → 4096, make configurable 965ae7fa97e62e0f318eaf9a132f083e87cadf59 revert(cli): drop scrollback box width clamp (#25975), restore full-width borders (#26163) cbd1f8e4bea66af2b219304a7911020f32968177 test(cli): cover light-mode detection + SkinConfig.get_color remap f8745f59c2738025a02ca161307f4dcbfd0eb34a fix(cli): kill resize scrollback duplication + light-mode visibility bcca5ed34d31abfd469d139e14bd962c916ff64f fix(deps): pin brotlicffi so aiohttp can decode Discord's Brotli attachments c8c6ce17315c0f8512cec6f0bc8120141acdf830 feat(acp-registry): switch to uvx distribution, drop npm launcher b431ae73efd1f5f6fd708738ce2782bcc2b63e40 fix(cli): address Copilot review #1 (4 threads) 5af672c7530263544a9f5e2479f3853d83b3b798 chore: remove Atropos RL environments and tinker-atropos integration (#26106) 1d109f5be3514266ff30951c0bcdae2faba9abc4 feat(cli): light-mode color remap covers all skin reads (Rich Panel borders, etc) 97b407ceddef2d345397955ab6db3284a124094b fix(cli): prime light-mode detection at run() start, before pt grabs tty 61e63cbaa840b958cb3ee069af69a1088089933e feat(cli): light/dark terminal mode detection + automatic color remap 07d4a172cc2482d9c0e9fcb7bf2a1713e0eb4e44 fix(cli): use ANSI dim+italic for [thinking] text (light/dark mode) 8033b9cf0d64067fdbef98477b6806ffef8805b4 fix(skin): always use terminal default for typed input (light/dark mode) dabe4596177ed40065990c02a4c347070515dd79 fix(cli): default input/prompt color to terminal foreground (light mode visibility) 4a1303d7e4a13c74f307596c05ca5006c1b39bbc fix(cli): tighten _output_screen_diff patch to preserve ANSI styles ba3822a64317df1b5e42d4988da31edc8ee6a807 fix(cli): monkey-patch pt's _output_screen_diff to skip reserve-vertical-scroll d36413211449057c28aaaab52a2be5133bc59ef7 chore(release): bump ACP Registry assets in lockstep with pyproject 4c94396206965580e808ceb39ae1fe007511a898 feat: add ACP registry metadata for Zed e8b9f5ff9a19f399229856e9fd5d0823a1275927 fix(aux): surface Nous auth-unavailable warning in auxiliary client d3d5916089eeefe5f076b005901d1d5f9aa13eea chore(release): add AUTHOR_MAP entry for outdoorsea eabd8c1fd12d6e386d636e564444ef661ce99e81 fix(cli): fall back to SelectSelector when kqueue can't watch stdin eac40204c2e3fbe851d3710b41e3ea78985adbca fix(cli): erase only chrome rows on resize, preserve chat output fef97aee5918cdffb0eea0ef31bed6aa321a2720 fix(cli): DECSTBM scroll region + \x1b[J erase for clean resize e8a4c85e889b8990ef4cb5d70276b286d82afac7 test(run-agent): isolate Nous provider parity model ad7d3bc84c3bccf2f8f714941ca7375179adfe8f test(e2e): fix Discord mock exception surface 4695d2716f60da89152bdc9dfa7d96e54ea7c22e fix(browser): honor pre-set AGENT_BROWSER_ARGS and document the bypass 8ed2ef6f46e9642acfba57b4b8da893a574ecfd0 fix(browser): use correct env var for --no-sandbox bypass 1702a94c889911da28015449544640648e8c3db2 Merge pull request #25957 from stephenschoettler/fix/main-ci-unblocker-after-21012 55622b5525b0fc7de8971cac80a3066bafd27e68 chore(release): map phil.thomas@gametime.co -> explainanalyze e5bbeb9f1e174b5f200afceb170de26f58d698ae Merge pull request #25985 from NousResearch/austin/gui 74e47c081fa8f26cd13fe2529fd35884fb4ad8d4 chore(release): map phil.thomas@gametime.co -> explainanalyze d6c488f2dce96a1d1375c8e7e089b54a1e7ae6f4 fix(cli): wire /sessions slash command in the classic CLI 09d970160bb22748fc9ff3e0759d151e4ea3a907 fix(proxy): suppress false-positive windows-footgun on guarded add_signal_handler db82c453b9e53643d081b047035b2f134f938377 chore(release): map agorgianitisj@hotmail.com -> johnisag 38ea2a57a522860c19296531c5aa475236747d2d fix(web): handle non-UTF8 Windows console encodings in _build_web_ui 0854640537ea1a33b785b142d41e71c6e726cf2a fix(web): cross-platform sync-assets + surface build errors on failure 19071529f65f026f29646c221dcf61274e9a0213 fix(lsp): shift baseline diagnostics into post-edit coordinates (#25978) ed84637d11412db82c5756a7245d2ee5c1a1ada6 fix(web): make sync-assets script cross-platform fc21a40b79b43302648250e2f8ac572a4ea6560a feat: update cron modals 4abfb6bc24308653e13b24dd42ea210bf0c7dd64 feat(discord): default history backfill on, expand to per-user + threads e84fe483bc958ef2ce11463d10ee57bdc2ccc5fb feat(discord): channel history backfill for multi-user sessions ccb5aae0d2b70206556fb57b72f38157cbbdaaa0 feat(proxy): local OpenAI-compatible proxy for OAuth providers (#25969) 34fc94d1f401d712e67625a8774294ab6969ecb1 chore(release): map @luoyuctl in AUTHOR_MAP 4813aaf0ba5902ea185b1927d30a59647b4c769a fix(ui-tui): heal same-dimension alt-screen resize drift 2844c888f1bb890a154cd3c25725581ca9d3e62e fix(cli): clamp scrollback box widths + suppress status bar after resize (#25975) f491b07cb2cfe225304b6c5729539475496ed453 chore(release): map @LeonSGP43 commit email in AUTHOR_MAP ac64d0c2caa1c7d83c2e5022a1b7612f0148021a fix: preserve ansi output history on resize replay 62445356822cd449c4235dc8e2f543c88c106a4d fix(voice): remove per-tool-call beep in CLI voice mode (#25967) 7bf66a07bd0863915e019ec23fc1601628697efa chore(release): map @1000Delta in AUTHOR_MAP 06c6c1f0f2d9872b02f86c6cd8279354aaf4dd9f fix(cli): batch resize history replay fe83c4001bb77cdda5c0922805455e2ec9c9ffd5 fix(codex-app-server): attach redacted stderr tail to generic failures (#25929) a28add199d3d4bb29482723256f9e6c00f93d213 fix(agent): keep image tool results from poisoning text-only sessions bc42e62b171c622eab9dc9c2d9860e24feb1fe9f fix(gateway): prevent duplicate final send when only cosmetic edit failed b4b8509fe81acf36bc1d32b8f586dc5e09e46e72 fix(gateway): load streaming config from nested gateway.streaming key d44dafdb4e2ea8874fd309b0b3d0780ba966cada fix(telegram): set REQUIRES_EDIT_FINALIZE so final MarkdownV2 edit is not skipped 5ce0067c08a81181c5b550a5bc8fcb0262ece2df fix(ci): stabilize shared test state after 21012 cd64bed55ee816536cd0ad0cebf75568af3fca09 Merge pull request #21012 from stephenschoettler/fix/ci-pr-check-unblock 9ed751b96706ffd343ae26531cd0e2152a1c7036 fix(whatsapp): drop status broadcasts and channel newsletters before agent dispatch (#25845) b08f53a75893ec4dfa6c470e9f27bc039fce6f07 skill(comfyui): add template-integrity reference from @purzbeats (#25828) 78b842c995d70fccb7fd1113f85e766c1483e562 fix(install): support non-sudo service-user installs on apt distros (#25814) 26933c2f592bda25df735c555620a2a978cfefb6 fix(agent/gemini-cloudcode): seed delta defaults for reasoning-only stream chunks 72b5dd865865f2d2c9f5b492bcac9dcdaf045d34 fix(update): refresh lazy-installed backends on hermes update (#25766) 436a0a271e57400a11bd9e918e2eafdf9162146e test(toolsets): lock web search into default platform coverage 529ec85c77f4f7993c49bca99e647a3b31ee9872 chore(release): map oswaldb22 noreply email for AUTHOR_MAP 364ddd45e8dbfbcdf365794e7ca8e3a3e49de100 fix(terminal): prevent safety filter false positives on keywords inside quoted strings 3adde245b72cd19061d413993c4a56138a023295 fix(gateway): forward image attachments to background agent tasks a952ca3ff6af24f867737094d2d13ab2a3ba3bbe fix: restrict .env file permissions to 0600 f26098e22f17025b9d57b176898c7d60d5b5ce8b fix(gateway): enable text-intercept for multi-choice clarify fallback (#25567) 1247ff2dca0dbc68957ee4ad153aa34f165a184d fix: stop retrying initial MCP auth failures 1dd33988e26d8f16fb752b3c014a8509b2db569e docs: clarify media impact on session context c03acca508bd06c78761af2653ebef1a1448b307 fix: use AUTOINCREMENT id for message ordering instead of timestamp 8ae65d5c8cf13047a4c2723d5eb44a2391b3c932 fix: read approvals.timeout from config in CLI approval callback d8fdec16d5a2a50e5463351af073e4401b6ed0ed chore(release): add AUTHOR_MAP entries for second new-contributor batch 12f755c9eb56a7927065c305699fc983bc1d998a fix(codex-runtime): retire wedged sessions + post-tool watchdog + OAuth refresh classify (#25769) 63991bbd9751015f459dbb27e0440b14c1c77e3a fix(memory): skip OpenViking upload symlinks 26deeea830eb4a4aa39651fd7b2fbb523eb2a78d fix(telegram): restore model-switch success path + author map a6940405201e9642df24ceb7a799347ca002c9b2 fix(telegram): escape dynamic markdown in callback flows 524490a40937c2a74d7969842a31acaba8d11124 fix(install.ps1): pin uv sync to venv\, verify baseline imports on Windows (#25755) 17e0e9d174b22c55d02db42c8ada5a035b220a57 fix(cli): allow rotating broken OpenRouter / AI Gateway key in `hermes model` flow (#25750) 1dca6a6960f87b07a7d270893ac35211c97913c8 feat(discord): render clarify choices as buttons c75e1a03f9dacd96f5b822ef2102789c926059e7 fix(install): preserve pip entry point when re-running on symlinked install 29575b3712186815e64e81762e5d00df3aa163be docs(session_search): make user-configured default_mode binding on first call 71558e753de4ca115385bab77acc6de68e641f51 docs(session_search): make user-configured default_mode load-bearing in schema ff06fed1231f0536a144862c32a653ad3c1d7bf6 Merge pull request #24994 from NousResearch/austin/bb/gui 4f7e64c84516ffb783db61c41b099be03607c5e3 feat(session_search): add sort param for fast-mode temporal direction ddb8d8fa842283ef651a6e4514f8f561f736c72e docs: update NovitaAI provider positioning (#25532) 2cbf0631a5b8a76396dce3a7a83aa62fa6beba77 docs(session_search): teach the manual-archaeology anti-pattern 0f0e20ef81709a6dd590b25af380b116db67628c test(novita): cache pricing, add provider test coverage, AUTHOR_MAP entry 1551ce46a4b65e8388ea6fc3347e802a8705c390 docs: update NovitaAI description to "90+ models, pay-per-use" c76e8795744a00208c683b2c6319902416bce1a8 feat: add NovitaAI as LLM provider 55ba02befbb976d2383726f1a44591c8325613f9 fix(background-review): silence memory provider teardown output leak 7becb19ea00c13bdff6f78b71aa3ddfb0bdb5378 fix(auxiliary): forward custom_providers to compression model context-length detection 8199ec38034a675a20278261b76cf0fe42316a7d fix(gateway): keep QQBot reconnect loop alive f0e46c5e9e8d4f780561554684e33810fc4f2f8f fix: do not inherit api_mode when delegating across providers 71191b7e8e075037a814f77d37d4609e97f12029 fix(gateway): make Feishu ws connect override sync to preserve context manager 00ad3d3c9c862352334c4348534dce3fed77dd9b fix: show context compaction status bd33a48a5839f235f17ffa1cc2542852ce55067f feat(whatsapp): surface quoted reply metadata fd9c1504da51f204506d0b37ec592d5bed059504 fix: gateway PID detection fails on Windows (two issues) 057f5a31d1b2358c8a1781c102a1e4401770e239 fix(auxiliary): skip providers without credentials immediately b59ed9c6bc564e1158875dc795141405c4ed927d fix(discord): handle forwarded messages via message_snapshots efa97af7e25f0cbef92ed15bbcb47e4788c83058 fix(agent): add Xiaomi MiMo to reasoning_content echo-back providers 8de26e280ed8126194dbbccaf9969ae5979c0aed docs(lsp): replace "git worktree" with "git repository" in LSP docs 796c8a2d63831a5aed6b727bae6c189448cbada8 docs(user-guide): point tirith link to correct repo 2ff744ae2c4e9f54058c0b1ec42e0511586be574 chore(release): add AUTHOR_MAP entries for 25-PR new-contributor batch 16796acc84c6a92392be937737149d5266ef86a8 chore(release): add AUTHOR_MAP entry for mrshu 31b4721791aa163c80b5f78a7fb2f1fb3530d434 fix: simplify ACP approval bridging 35ce94a2f8ae37bd74b10bcc86c75a7ab2e205d1 fix(tests): correct skin engine test API call 5f234d4057ffb3ae7bc5e143960d2d2fd44f9c76 fix(cli): harden skin yaml parsing for invalid section types 8f19078c6ad72300676376f5824fcf50cd9b693b feat(goals): /subgoal — user-added criteria appended to active /goal (#25449) d110ce44933446eff800e6100fc54ccae821c4ad fix(clipboard): only read PNG signature bytes, not entire file 8db544b4d09cbbc3244def8dd78001507e4ddb04 fix(clipboard): reject non-png clipboard images when png normalization fails c872f07c47e2a751211d6ab97e816cefcd246ef0 fix(tests): exercise profile-mode HERMES_HOME for honcho fallback d18618f48f18c0af5c4bba889a087557ab53a6df fix(honcho): respect HOME-anchored default profile fallback 4ca5e724446a2294bbe69090884252eee326f2a7 fix(web): preserve top-level error envelope on unconfigured systems 657e6d87cc65e14680282b6e2fdc1a9bcf702493 fix(web): align _LEGACY_PREFERENCE with legacy 7-provider order + doc cleanup 21e3a863bbbdb241b1390d0642928d276385298f feat(web): firecrawl plugin natively supports crawl; delete legacy inline path e8cee87e8594747710bf600c5a4c0bee33b57bed test(plugins): tests/plugins/web/ — coverage for the 7-plugin migration 39b4ebfceaeeb56d1c197dd22028053e5c2c1190 refactor(web): delete legacy tools/web_providers/ directory + migrate ABC tests 24fe60faa2c471686803d97e33182ccec8e3ebe5 refactor(tools): drop hardcoded web picker rows + skiplist; plugins are sole source 748f3e016b252a7b2a927a32dce04c92d9980021 refactor(web): delete inline vendor helpers, re-export from plugins 5e54330e27d670dbf922c6d16498ca0c7d6ad08e fix(web): preserve firecrawl crawl + website-policy gate after migration b05253ceed5f9d139f4a7d8705f5c97fcf644a2c refactor(web): dispatch all three tools through web_search_registry 143184e9438c658c1080f45dbfc29e33044ed0d9 feat(web): firecrawl plugin — largest migration (search + async extract + dual auth) 31fcde876c3730c33a53541931ad073e705cdfef feat(web): tavily plugin — first three-capability plugin (search + extract + crawl) 48166461093982755afd60166b1b96e2c93c48ed feat(web): parallel plugin — first async-extract plugin ec8449e9c688b1e9cb8d47856e32f0a32a2d391b feat(web): exa plugin — first multi-capability migration (search + extract) e3f0a8889195d3936762b375c659bdbcc394236c feat(web): extend ABC with supports_crawl and async-extract semantics 0a7cbd33424732694cc6e7b886376ee221613e03 fix(plugins): filter resolution by is_available() in web + image_gen registries 6b219f5af6022ef09d0312a8ceccf3e1b11c3aa7 refactor(web): remove legacy in-tree provider modules 714630110b61b3537490869ed1bfa4ac0d086da2 feat(tools): mirror image_gen plugin-injection in Web Search picker 6bd16a645b49e4814f35a17f1c6e5bf854f8ecee refactor(web): dispatch brave-free/ddgs/searxng via web_search_registry 0d085d9454dd841cd4afac2306414205793ac7c8 feat(web): searxng plugin (search-only, third migration) 5c7d098bee5f22adca078d7d7632737549e1fb29 feat(web): ddgs plugin (second migration) d403cf018c8e6a887e5b867bf6de76cc4aadacd9 feat(web): brave_free plugin (first migration from tools/web_providers/) f29f02a73fd021bc8a9ee14f0aaf176e46ce1a5f feat(plugins): add ctx.register_web_search_provider() facade 007a630b16988981e786fd562a03a177607dd9b6 feat(web): add web search provider registry mirroring image_gen pattern 2cea98e143b4016b277fb3221728e3efbb4c0cc4 feat(web): add WebSearchProvider ABC mirroring image_gen template 563077a47ad32b9fadd7ed302827c7083e25a2e0 refactor(cli): route /model picker through shared inventory module efc32ab639ff36d40aabf2c2401f6452a74a4b60 refactor(inventory): extract shared ConfigContext + build_models_payload 4ceab16893e3d77b2388bf5d1db8d9cc26a1307e fix(compression): keep default protect_first_n at 3 + align ABC dee71a31e5b4f9732c0a2137f51f7a4cad1633a9 feat(compression): make protect_first_n configurable ffbc21100d0862f0b630e5921e159648d59e68b8 chore(release): map jake@nousresearch.com → simpolism d863773c81b4d1c958b2f28b76bcd8b0809d7eac feat(discord): add thread_require_mention for multi-bot threads d557544560b0492be67b320f06033e9362c2cf09 fix(discord): keep free-response channels inline 3633c8690b86d68edfe235fa56abb68dcb52ec29 refactor(plugins): add apply_yaml_config_fn registry hook d5775fe98870f4d7ba7cf322bd05283533079aa3 feat(codex-runtime): skip unavailable plugins during migration (#25437) f7ad2f1115eb370798abe1aca4802d96fe889795 feat(dashboard): hide token/cost analytics behind config flag (default off) (#25438) e90508103cac1d3b27f0455d29fbda17c49ead92 chore(release): map jake@nousresearch.com and simpolism@gmail.com to @simpolism 8c6b0c9ecdabd67cb22b34e5c294e3f0aba47bbc test(memory): cover cache-parity + runtime whitelist on background review fork 07349ce4df74a98678070255f46fcee0f1718ba0 fix(memory): pin session_start + session_id on background review fork 95d074cdb205e6e80de660dc547af8aff086259b chore(release): map WorldWriter for PR #17276 salvage 5fe0672260e65a6ff664f5905eb69a6fca674707 fix(memory): hit prefix cache in background review fork 3a30c605b3d7526d412eb4c90fd7778581370a34 feat(plugins): add thread-local tool whitelist to pre_tool_call gate d898e0eb7f2a0df757113fafbcc52d17a1a36fd9 fix(gateway): complete lazy-install rebind for slack/feishu/matrix + add ensure_and_bind helper (#25038) 52521c937a50d94493374c1c6d8fea1a39f96f5c fix(install): skip browser download when system chromium exists 7f08cb59417b19d70a7bc82e05f7bbedeb8a4f82 fix(tts): align MiniMax TTS defaults with current API and add GroupId support c875c0dc117f737d2f407ad9caea3052d13b5c6c fix(tts): update MiniMax default model to speech-02 and correct API endpoint 13a1ad486601f0c0af0e3acafbc1521c8189899f Merge origin/bb/gui into austin/bb/gui 6122a79aab45041d8b7c8d775f95be3ac6ce579f feat(slack): support !cmd as alternate prefix for slash commands in threads (#25355) 3f13d78088d1a9a35eb542f29b16d11d534066e7 perf(tools): cache get_nous_auth_status() and load_env() to fix slow `hermes tools` menus (#25341) 5dd4fb05c610afeeae5584fdce03f22db0d829be refactor(desktop): make /agents subagent-only, drop sidebar + dead sections b96bee7f5c0632a776507ed76736f0cc900acac7 refactor(desktop): subagent rows borrow chat tool patterns (fade-in, lucide glyphs, shimmer) 3c106c89a1759b767e6676b16d45daf4f7640862 test(ci): stabilize shared optional dependency baselines dd5a9502e389781275a1649716f6d3ca4ae98c51 fix(tools-config): write video_gen.provider on Reconfigure tool path (#25307) 4afbdf58b3013fb2638cb5ab6bd019b34a3b9be0 fix(desktop): drop noisy "returned N items / empty object" stub strings ef98e3f9e60b6e4066050bd8c6d13409f9fedf5d docs: close in-tree memory plugins to new PRs and codify skill standards (#25302) 66c70966cd2ae3c13bacf4d57522cf86f469b9d3 chore(skills/evm): tighten SKILL.md to modern format e3fc0814996d043fa9badce7da241ef02d5f905b feat(skills): merge blockchain/base into blockchain/evm; salvage PR #2010 aa1e2edd35a8e14fc02ad13b0fc4e8cecd10bbfc feat: add EVM multi-chain skill (8 chains, 14 commands) 091d8e10306613819c6cf3a64dda5b166c3048cd feat(codex-runtime): optional codex app-server runtime for OpenAI/Codex models (#24182) 9d42c2c2869e5be531b6302bdc8ea6c6269a9604 feat(video_gen): unified video_generate tool with pluggable provider backends (#25126) f08cc6bbeb8c7739cfe658323a28b2f4ff16635a fix(desktop): drop numbered step pill on subagent rows 6746404b0f82defefd579fa6c23fa6841417962a feat(desktop): Esc closes every OverlayView-based overlay 98d39fc2c4ad21620524d8c61b2e4e163fb7a4f3 refactor(desktop): subagent overlay reads like a live transcript, not a dashboard b833d85019463b101f52667390557f3fc86a25e5 chore(release): map mgongzai author for PR #25183 salvage cc64a04f61ff27ba7940884006a7632bf09e1ecb test(gateway): make queued follow-up regression generic 9a815b6c8ca7080ac01ba04d5f195c52542c7952 fix(gateway): preserve queued follow-up transcript history 08671d877108769e99ce649bd9ea93a861a0b19b tui: make URLs clickable + hover-highlight in any terminal (#25071) e2b2d48610263bfc695eaa250e9a71007f1b48cb fix(cli): preserve startup banner on terminal resize 59da8ec4ecd1e9527c30312cf150bbe7f5850973 fix(tools): refuse skill_view name collisions instead of guessing 256bedb632ece7b9142a20f4e830f5a5fe48ad5f fix(setup): drop post-setup chat handoff (#25067) 6f2d1c88b76fd85bda3460128fc21819a211ad1e feat(custom): prompt and persist explicit api_mode for custom providers 1979ef5802cd8798cb1a5096b66cbc50fd0ebc89 chore(release): map iuyup author for PR #6155 salvage d6c9711ba865a8675f14367ac6211d1ae14222bc fix(security): reduce unnecessary shell=True in subprocess calls 927e982b23a86ed01c97567b92896a7e525f0aa7 fix(desktop): move power-user views out of sidebar a9b8254e5fb11676feed048c05dba807a40357c7 chore(release): map anton.kuenzi@gmail.com -> ZeterMordio a43d7e67b4e7234b94320963ca1811fcc3a9b5d2 refactor(profiles): remove dead generate_bash_completion / generate_zsh_completion 6d30b4a7e32561483619145fb083bafe88aa4460 test(cli): strengthen zsh completion regression coverage 8c4bec61557a5a02d25956c316c33f7527cbf4b6 fix(cli): repair broken zsh completion generation 659af123c3f394e01b8e9c4f20e3d6b6385db238 docs(session_search): teach multi-anchor catch-up, bookend reading, lineage awareness 17e86dddc7f2a8aed28f148dfe1db418063e1192 feat(desktop): add MCP settings and live subagent tree f4c43f0886256d9fdab3593970e5ae5da9c8ab0d fix(session_search): skip empty-content rows in bookends 30ba7bcd5ae5371d0073ff35de4c707b23e835c5 fix(desktop): address PR review titlebar and usage races b54b2460712f480b31b2fb9483038a7d6f184e1d feat(session_search): guided returns session bookends and filters tool noise 1a00d730ebfbb3e04d15c7b59af63fcd252682f9 docs(session_search): reframe schema to route reflexive recall to fast→guided bda9a2255874a68894aa92bc2084c55da000ce97 fix(tui): suppress copy-source substitution during drag-to-scroll 76f40e6449ac8e4f0ceddb860ae0abdf8606a2ba fix(session_search): read default_mode from auxiliary.session_search 4fdfdf67499c33015ed56e6e5910d8bdc00aa901 Merge pull request #25045 from NousResearch/hermes/hermes-852727b9 6f2e616d9f4f14fdf02859e5e010a8ca93684570 fix(desktop): handle empty usage analytics totals e922110ac3d64f89a380ea1374d92ecc00be7a6d feat(tui): per-markdown-block copySource so partial selections round-trip 2bed2124a4280f71e233af84cfdc7d4ebb9e8d01 fix(session_search): let unset mode flow to config-resolved default 1149e75db20f4f3afe7b0ead23e115abcc4b9b11 ci(docker): split :latest (releases only) from :main (main HEAD) bf196bb47beb934953ce22b5eb3a3fdff38eb50b Merge remote-tracking branch 'origin/bb/gui' into austin/bb/gui 734090a9053d80be3d739a99fa3e77d226413f9e feat(tui): copy raw markdown source on selection, not rendered cells 5d90386baab5cc6355d7e73e30571466c9223a6d fix(gateway): add lazy_deps.ensure() to slack, matrix, dingtalk, feishu adapters (#25014) c3094b46e9a12a8fa19dd0fe4db4bae2f9ff5ef2 refactor: import FILE_MUTATING_TOOL_NAMES from shared module da0ddbf88af3c5aef75caca63eee2d5e01b89895 fix: classify landed file mutations with diagnostics 71c6dd0dcf97721656056e5d5b99f4a0b62b8846 fix(cli): add 'lsp' to _BUILTIN_SUBCOMMANDS so plugin discovery is skipped ca2c3d4ab4ab3e5334386db3a79fa7ed449bda48 feat(desktop): composer queue — queue many, edit/delete/cancel-edit, Cursor-style 6070941eb09daffaefb54dc4af03001e39a00cbb fix(title-bar): position sidebar toggle button 8709e1ebec892f1d0549a17b7ed9fc1ab480a760 feat(session_search): surface summary-mode aux LLM usage for cost attribution 9a0ebf017593dcd2379e7c568939ac884e3192a7 feat(desktop): Cron, Profiles, usage analytics, and titlebar fixes 54d817f882c079afa776bda398c63c01d21c0fbf feat(session_search): sharpen schema teaching on tool-priority + cold-guided refusal b6f2ff5136e5c818d4f12634d30da7cb15eedd4f Merge remote-tracking branch 'origin/main' into bb/gui 74fdfe6b50f41c5bc0961ae709b3e4a82eca2869 refactor(session_search): drop single-anchor params from schema; reframe as two starts + one follow-up 02a54e01ced45d6df200322b575e6cf711f143ca feat(session_search): user-configurable default_mode via config.yaml 942adf617910f50a39f41bd200d8083bf4cb2bed fix(docker): chown .venv to hermes so lazy_deps can install platform packages (#24841) 1e01b25e76a9258095930c7428c169835fd03059 feat(providers): rename Alibaba Cloud to Qwen Cloud, reorder picker (#24835) 486b692ddd801f8f665d3fff023149fb1cb6509e feat(nous): unified client=hermes-client-v tag on every Portal request (#24779) b06e9993021a8eebd891fc60d52372446315b2f0 fix(cache): kill long-lived prefix layout — system prompt is now byte-static within a session (#24778) 49de1adc49fd5f8f0966d7f0fafec5d8170089e0 fix(desktop): detect Python via registry/filesystem; pin to 3.11–3.13 708d2a0c333bbfa7ba5f85637229b9d1721cdc3c fix(desktop): polish LaTeX rendering — currency, code blocks, brackets 80374d4dd97368d00f55c551bdbfc0fab0f011a8 fix: approval DELETE pattern DOTALL flag allows newline bypass 8ac351407ef8c00b3ab8f0be3a944ba921052a39 fix(agent): clear stale config context_length on model switch a4289d74ac99694350497fb01b15aba63ce9ffde fix(test): use i18n t() for restart drain assertion 1a4e8f70415e073db257c4a31908c21e9921dd5b fix(gateway): make WhatsApp npm install timeout configurable 420762f867460bc603d7aab0f6e9684f63fad5a2 fix(tools): forward thread_id via metadata in _send_via_adapter live path e77fd75c442cc3ec6cfbc91964a6dfe2dc3f777d fix(wecom): update connection status after WebSocket reconnection 7c67097325f5fe4b4b703fed16ebafca7ca686dd fix(line): use build_source instead of nonexistent create_source afa5b81918617126a489f21874cb39b1af7a7e93 fix(prompt_builder): inject tool-use enforcement for GLM models e474130c487c5e4c3d58f309ec2fdb19474cc4dc fix(telegram): use thread fallback helper in slash-confirm result send 327b8cee9eaeb17724c7b5daa686e736f7d3b5e4 fix(install): use stash@{0} instead of git rev-parse refs/stash for autostash recovery Autostash creates refs/stash as a pointer to the latest stash commit, but git stash apply/drop expect the symbolic ref format like stash@{0}, not the raw commit SHA. Using the commit SHA causes: error: 'X is not a stash reference' dd1d4e9c5d8284ae5bc1250260493bada1e8d685 fix(gateway): add chat_id to hook_ctx for message source tracking 80c4b27437122a605ffc187123a4375b300280f6 docs(lsp): document follow-up fixes from #24630 (#24709) 557deece6f0f6081c7fb8bcf30e8abf952165170 fix(tui): use TERMINAL_CWD in _session_info for accurate status line path 081f9368bcf341dced07bc515ce26a3b25f2eaa2 fix(voice_mode): detect audio in WSL when sd.query_devices() returns empty list but PULSE_SERVER is set e71393237efd41af688569c3100baf3a89226b47 fix(signal): handle group messages from linked devices in syncMessage path 4c825554c185ddb8961e68a7b146c75636c7acfe fix(retry): use float() for Retry-After header to handle sub-second values 55321e45683bc112ef80f106d424668a5423c277 fix(retry): use float() for Retry-After header to handle sub-second values 2a18b6283b528817e87354b1c524501b570a7d62 fix(cache): drop ttl=1h on Portal Qwen — Alibaba upstream is 5m-only (#24702) 747caa74f072503192f676412c26e0f1365747bf Merge branch 'main' into bb/gui d8c4460fe35e9a471b8b115b73c39527e5492477 fix(cron): include whatsapp in _HOME_TARGET_ENV_VARS 6f92a21926f04f2235d5ecd06aa4ae38a327ccbc fix(web): add Bearer auth header for Tavily /crawl endpoint 0c233e70f84a7598f874d6a9b31898408717eabe fix(doctor): skip /models health check for providers that don't support it a54d4b0e46429eb2d13bd41145c74c5e863d1e49 fix(send_message): recognize XMPP JIDs as explicit targets 0bc5f7b235117ccf791aab83b92164c0041d34af fix(gateway): reduce systemd restart delay 8d553056c0017a230228b4f43a66a254f27b3ff3 fix(ci): bump e2e job timeout to 15 minutes 1beb578fdeff23fbfade93cebae4c921473fe4ec fix(ci): install ripgrep in e2e job a694a263309d1f2ae98fb938b76b013c2808cf35 docs(gateway): mention Weixin in gateway help and docstrings 29c9ff9ba5d63bc81d53935c3f84f066673a06b2 fix(lsp): typescript SDK install + tsc-missing skip + shellcheck warning (#24630) 6f285efb8058ee5bd1b91e4e0ba9187ec8b183e8 fix(telegram): clear in-progress reaction on cancelled processing (#24628) 413990c94537e9c9da973bb21a6afcd332400b91 chore(release): add AUTHOR_MAP entries for JamesX88 a33ec10874667469e037c5b0e4dbb1a9c2d3d794 fix(cli): @-file completion crash on Windows when paths aren't cp1252-decodable c7cfad5d96cb25a8e532362948da250719d021f6 chore(release): add AUTHOR_MAP entries for NorethSea 7a4ad5ccb472eed67b4287a4df9d2abb12a2255c fix(cli): use display-width for response box header label to support CJK b7bd0f77f3726a649502316ea3f1c71f24483b56 chore(release): add AUTHOR_MAP entries for laoli-no1 d33deb7cbea17fbf5377c1e3f46f1016358fe88d fix(tui): clear scrollback buffer on startup to prevent tmux scrollback leakage 2a3140a814ed5a55af49672ba355783c948f0179 fix(dashboard): rescan plugins when cached directory is removed 6ec89d885d6087881811bfd2f77552fe30125531 chore(release): add AUTHOR_MAP entries for aqilaziz 80375cbe2c2d1da3d98558018fe357cfb9b85faa fix(dashboard): display real config path on Config page 782e3f516464946a62c925fcf4affd43c5d7f512 chore(release): add AUTHOR_MAP entries for AllynSheep e3858772d0465d2c5c386cb788642276138b5253 fix(dashboard): skip browser-open on headless Linux to prevent process exit b3ca6362a8629fb904f1136aecc139adf7b6794e chore(release): add AUTHOR_MAP entry for hookinglau d68a0ec3839fbe82d04a76bbba0a3f835f72ee15 fix(auxiliary): pass cfg_base_url and cfg_api_key when resolving task provider 389c707e4285c864ac963c162c6875c600acd234 chore(release): add AUTHOR_MAP entry for ryptotalent 9b2488af2af975329fa08a3c5d9893651215b4e2 fix: include arg-taking commands in Telegram menu 29d7c244c5d55230e838c049afb13d307168679c feat(gateway): wire clarify tool with inline keyboard buttons on Telegram (#24199) 76bbb94be43cffb8449edae28f5ea1826661026b chore: AUTHOR_MAP entry for AhmetArif0 (PR #24600) f9559c39c4ee7cc7c40f79efb37a6530b2bf0e0e fix(gateway): consult lock record argv when cmdline unreadable in scoped-lock stale check 24e2151cd696e07d4edc490c75fd14c36da43fff chore(release): add AUTHOR_MAP entries for zccyman and Osraka 88ede807c4cab7c2235b4e205cb7ba3521ac1117 fix(pricing): add deepseek-v4-pro to official docs pricing table 83b93898c2673b29622b76e21e264f055ad7809d feat(lsp): semantic diagnostics from real language servers in write_file/patch (#24168) d89553c2d6e97e5ec40421613b02d25eca730d9b fix(daytona): migrate legacy-sandbox lookup to cursor-based list() (#24587) 38441a7d776f116347ee0752368a643817ba3a85 docs(camofox): expand externally-managed sessions section (#24584) f63d520496f647d652e232e60bc2de5d404cc46d chore(camofox): document new env vars + AUTHOR_MAP entry 62fd905340969deb5fd914c623e4d1ab99dba8b0 feat(browser): support externally managed Camofox sessions 3955aefced81b1adf3557b2a64ea30c62fc51f99 fix(install): use `--extra all` not `--all-extras`; drop lazy-covered extras from [all] (#24515) 4bb0a82a2b8dc4d4fd952d977a81ae2ccbc52fbc fix(gateway): enqueue SSE EOS sentinel on task completion 4fa5f7b765db86c4c4d87cbede6b6c21891acc74 chore(release): add AUTHOR_MAP entry for luarss 1189ed785504fd599b520561e0fb3dbc46a45f66 fix(docs): correct broken internal links to webhooks and mlops skill pages 71198b9e19d25daf5dbdecf6f99e90cc342f045d 📝 docs(kanban): clarify dependent task gating 954e854ccc47ab567fcf9adc1babf20f4540de02 chore(release): map kyanam.preetham@gmail.com → pkyanam 629c33c633a12e43e9a334fbd07a973b317c950e test(gateway): patch _pid_exists instead of os.kill for scoped-lock tests 653d30429039d1f5f048889e5397c1297c1fda38 fix(gateway): detect stale scoped locks via cmdline when start_time is absent on macOS 642768c5c70b428507acc7b31d17e1e53141067b Merge pull request #24161 from NousResearch/austin/fix/dashboard a34998ee2fc39ae7009abd1340082400ef21c08f fix(cli): parse positional insights days c23a87bc163b188abc7e40fbdccf07a9739231c3 union paid recs from nous portal with static list (#24509) d186186e1af74c3e4568e4775d55e0f24f5c2071 fix(install): surface uv install + uv.lock sync errors instead of silently hanging (#24504) 2863e9484a1841d0a17044383c9a32482c01b20e Use nous portal as model metadata authority (#24502) c594a2304734b708e7ebc68d4fe2eff1bb57abbc feat(agent): per-turn file-mutation verifier footer (#24498) 8a31985e4f71bd5a243e892495ba9c46430c0a34 fix(session_search): pair fast-mode session_id with match_message_id fc3fd6bb6b3cb4aa01d71bb52c0092ec4b5db1b8 fix(dashboard): UI polish — modals, layout, consistency, test fixes 2b47b40c10a52fd770c041b9d020f902224bb449 docs(lsp): add feature page — setup, CLI, supported languages, troubleshooting b1a609fba3abf394ec9efcbd9f6669643662f8e1 chore: remove plan from PR (working document, not shipped) 6d80aa80eb611ff632edd849b0c94207e651b2fe refactor(lsp): simplify __init__.py per /simplify review 22297b3050da7f990fe76a4d808ecd95e6fb1e22 feat(desktop): disable Backdrop noise overlay by default 1ae0eed0390a84b2340aa3c917190f9525e80fce fix(desktop): declare katex-memo deps directly + drop per-app lockfile 41c13ba71d678eb633dad84b5db2ceff72eaee0c feat(session_search): add multi-anchor support to mode=guided 36c5b188b5f46a10f64671001b7ef0a7149c36cc feat(session_search): widen fast/summary limit ceiling 5 -> 10 e0a1778028811d5a4e55d4fbd513c5bcbe49dd81 fix(lsp): address review findings — TOCTOU, None guard, JSON safety 40a9327248be480362abcfdef641a900315decc8 fix(lsp): wire CLI subcommands via setup_lsp_parser for plugin registration 23344a9a3c9080812b2d81567356e6f6f73fe07b feat(lsp): plugin-based LSP diagnostics with zero core changes 1e29fa88652430c445ab09e32e6bae7d2ddf5741 feat(session_search): add mode=guided for anchored drill-down e74a682b0ffeb07b16b44f5882c92f45f92eee7d feat(session_search): expose match_message_id in fast-mode results 2b606d20e28d40b64ef54e380f6d1b9fb7f4e7fd feat(hermes_state): add get_messages_around for anchored windows dd0923bb89ed2dd56f82cb63656a1323f6f42e6f docs: remove public advisory page (handle community comms separately) (#24253) c1eb2dcda7d729e7c5353ec7b5744f331aa752fe feat(security): supply-chain advisory checker + lazy-install framework + tiered install fallback (#24220) 99ad2d1372d3b5ff9134e9d8930fed6de4fc7b62 fix(deps): unbreak [all] install — drop mistralai while PyPI quarantined (#24205) 112cad59b44793afe316b60276dcc350fbfc2c6a perf(desktop): memoize KaTeX renders so math streams without re-rendering 407683b72db0017f74eb7bc3b84e052f6b2e19c7 fix(docs): repair Voice & TTS provider table 94d9db72ba5fdca8b34f7d7767e1750efd5dd952 add client marker tag on aux inference requests 58e2109f10b5ea5e29b6c4011187762f9358c4a8 fix(minimax): harden OAuth dashboard and runtime 71e864b6007a1d664939db3f1d0b7425ade18b00 feat(desktop): render LaTeX math via KaTeX after streaming completes 0e0e0623baec0d40b2d99a0cc9ce536488c460f2 ci: run GitHub Actions on Node 24 59c95954808787c8c3cb81d7c7c18add43debfb2 fix(auth): avoid echoing provider in status output b91d91e68de197d540b2e6a3ca269fd09f84aa7d fix(auth): avoid printing OAuth status details 32abe742fa81bee3acb42a274b2501afe1657c08 fix comment f0c2964f0b5a0e84e06d07ae6de7432ad792c23a remove comments 057fc7b073731934e56850f913dbc85aa5d6ac26 fix guard 528bba67340f6efaac8e99f13b6d52eda9f8a5e3 fix kimi 3d8be3e84d2aa26b0f07349b23a4645c69ad1056 feat(lint): observability for the LSP bridge with steady-state silence 7dd7703f64aa6e25787b460c9169c4755429ea44 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 8b6344dffd926e37fd7c12e122b998abc2086a63 fix(nix): build dashboard from package directory db9e74b1e0557d8ff71153ec3c21b54cd535541c fix(nix): fetch dashboard npm deps from package root 9a546d6b08a3ec72f702c7289244efe9a4909fb4 feat(lint): opt-in LSP-backed lint path in _check_lint 2e12a5178ae468c59ac53278d092b745761ce4ff test(ci): stabilize remaining full-suite expectations fda39d4850fc34a8913930accba5473cfd3ac10c fix(desktop): use package artifact naming in release workflow 7993e03c06145baece40427801161918b4a9130e fix(cache): route Nous Portal Qwen through Portal-Claude cache pathway (#24151) adb67ee48d6623b1c1c7f7ad0fdc81bf620d6628 fix(desktop): expand release artifact names safely cf22af0ce6b3938656d288f686c25466eab788d8 fix(tests): align full-suite expectations with current defaults a08ec216d432ec75bf13b7e5c0656f52824e9a39 fix(desktop): run release builder from app package d06c21f3d4bdfe66c36d3465810a90036068a57d fix(desktop): install TUI deps in release workflow 28abb72e7c79a04e36c17b04772de3e3e5a9a3f7 test(e2e): bypass slash confirm for reset assertions 08cbf4aa7f8b380c71dd6a712d289aaa37b63fb1 fix(ci): restore all-extra install for PR checks 820d25c5bfa22b134cbff753db04d0d0569f8ae1 fix(nix): refresh dashboard lockfile hash 3c23b15f815ece74bfadbe2bd38e38512f42d2ad fix(tui-clipboard): skip native safety net on OSC52-capable terminals (#20954) 4817327bc47732f7f795743428b0cc5870a2fd89 fix(minimax): harden OAuth dashboard and runtime 96968c9932398289aa8713d3ba17da1bcd45b407 fix(desktop): add 2u clearance below prereq checkboxes 939ab58b8d918de7d8d2c5ca8d0ea5888041a815 fix(desktop): suppress generic provider warning in onboarding 2252160dcfbe62ba42b2fe5cc7cc0116488c726a feat(desktop): add model-confirmation step to onboarding 32f0fde35c379081f044171564b8ecb2840123ad feat(desktop): add ripgrep to NSIS prereq page + polish layout 1270f50e8b1889782ed8c35cc5a2dae3f17395a5 Merge remote-tracking branch 'origin/main' into bb/gui d208f2c2c0b7b1c4eaa24fe42ab07ebc3bd58040 feat(desktop): reconcile live tool events, polish thread chrome, harden boot e85592591e8028cceecb0ea2b4992a1643b52f93 fix(nous): surface Portal-flagged free models in picker even when curated list is stale (#24082) ced1990c1cab2413e6778d0eb35f526b6b9c1359 feat(computer-use): refresh cua-driver on `hermes update` + add `install --upgrade` (#24063) 97a0e69df02b9425573711a6972a91d1deee994a chore(release): add AUTHOR_MAP entry for ahmedbadr3 05bad7b1e78adef8da4dcbe91ab95c3e810a96b0 fix(dashboard): MiniMax 'Login' button launched Claude OAuth (#22832) ea1d0462cf5ec3799fb0c4b8e39685302e53039b fix(cli): vertical fallback for markdown tables wider than terminal (#23948) 98aa6da414ac55fcb5038b195b04f36925a5da6a fix(tui): clipboard copy on linux/wayland + alt-screen stderr debug 825bd50e6be1bfbde38d8337c599952da32b9a92 Merge pull request #18036 from NousResearch/fix/bundle-size fdf73f0adfef50da391e82d042f69136d0925be4 Merge remote-tracking branch 'origin/main' into bb/gui 75b428c8521d7676991c93b9ecd66eb12c6469b6 feat(ui-tui): resolve markdown links to readable page titles (#24013) 3f013d289cc0b6b568aede11b98f17f18e2b2812 fix(process-registry): suppress windows-footgun false positive on guarded killpg c6ca11618a87c6b12e9a4025d339eb905a03ac8c refactor(tui): simplify TUI build logic, remove stale staleness checks d37ea688228ab2306f8814d29815c83b2c92877e fix(desktop): drop RegExp from dangling-fence close detection d760e6b7dbd7f9ceebaf61eb8cad480195167d2b feat(ui-tui): resolve links to readable page titles 09cdda64c9279c33853c7444a62dbe33a0835491 fix(desktop): inline prototype-pollution guard so CodeQL sees it 2ce691d8cafc615bd60f65d5e5345138c7e52599 fix(desktop): address CodeQL alerts on PR #20059 dc66a984309cc6254f020798c2c2f1f5ea400419 Merge remote-tracking branch 'origin/main' into bb/gui 4dd9732a94e757d5403fe3e1f3cc673559bbd7c2 feat(desktop): hoisted todo widget, JSON tool summaries, history grouping & timer fixes 3ac750ec07e8ddc3e1a5505f3fb4fb8ef4ca4698 refactor(session_search): default to summary mode, document fast as opt-in 9a63b5f16c06255d83ad62d77fa31fd52c4ced70 chore: add nicoechaniz to AUTHOR_MAP e2b713cced07076ccb751e28b30d235fede1fa59 fix(model-metadata): skip OpenRouter for known providers, add kimi/moonshot to PROVIDER_TO_MODELS_DEV 91eef6255e39e0be7b0730aabf6ad2ea49eefe77 fix: correct context-length resolution for kimi-k2.6 on Ollama Cloud and Kimi Coding 3197b4de6d5a83896fa138bdcc02e7d2fd4561ac Merge remote-tracking branch 'origin/main' into fix/bundle-size 4b3839a8ee34b221c05f0d3f131465780b8b529d fix(cli): seed bundled skills on dashboard + gateway entrypoints 50a9d6333f4c8ce6e3ac5990fbf7cd2e57bc4db2 Merge branch 'bb/gui' of github.com:NousResearch/hermes-agent into bb/gui 8d465a5732a87cf0fc3c0b9168d04cc141094582 feat: theme changes, composer tweaks, in app update ux, finesse 271883447e7b8a5b9bd95879aca71afadc87616f feat: expose HERMES_SESSION_ID to agent tools via ContextVar + env (#23847) ce0f529cde11f743a5cd2a8ee8a0d52088cb2065 chore: ruff auto-fix C401, C416, C408, PLR1722 (#23940) bb11da7db984a02ebbb56cd127dcd62f58d6c3c4 chore(deps): bump urllib3 from 2.6.3 to 2.7.0 7b76366552eb0e2fbdf156c261403202ac064737 feat(prompt-cache): cross-session 1h prefix cache for Claude on Anthropic / OpenRouter / Nous Portal (#23828) 2ec8d2b42ffecec2128f1004c0a8451378057d42 chore: ruff auto-fix PLR6201 — tuple → set in membership tests (#23937) 8c11710314af38ec59371ed540272392217a1c26 chore(release): add AUTHOR_MAP entry for wuli666 111b859e49fd7b2abe30c1426ebd74101bb59477 fix(auxiliary): evict async wrappers on poisoned client (follow-up to #23482) 1d007167541ef5405fde620fdcce6dfcd79c0628 fix(cli,tui): align CJK / wide-char markdown tables (#23863) 657874460f8e2cff18e9940df1a987513278c43e chore: ruff auto-fixes — collapsible-else-if, if-stmt-min-max, dict.fromkeys (#23926) 8e2eb4b511967a0ad776c0c667f6914072e1b7ec fix(/model): surface Nous Portal models from remote catalog manifest (#23912) cc9e788c14188bb9691237472d1c8c5bcf929eeb fix(cli): defensive _slash_confirm_state access + AUTHOR_MAP 054f56857842a25b8ef5f627c7c951de28eee52a fix: use TUI modal for slash confirmations e155f2aca9dc9135141d37d3aade060a9a02e470 rebuild model catalog 283381b1ce9dd8d69aaba88639d50d1f825c2121 fix(dashboard): validate dist exists when --skip-build is set 7085f4e238508b94c9bf034c3d9bc268a49d8228 fix(dashboard): fallback to stale dist, retry build, add --skip-build flag 98cd88663245244314d0d35fdebe3107a41dddbd feat(daimon): multi-user Discord support bot with tiered access control aa2d3e2ee1cdb8cfc81bea392aba9927435c30bb chore: AUTHOR_MAP entry for JabberELF (PR #20238 salvage) 7d628eaa3d8398dc921794d3ff080b2160336b5e feat(session_search): add fast/summary dual-mode with zero-LLM fast path 88a2ce4ae52f18a946b538db7559adfce1cc2591 chore: AUTHOR_MAP entry for VinceZcrikl noreply (#23647) a479ec01ed73ed43d8649f88781e433aedd980a0 fix: make web UI build output decoding robust on Windows c8c8c53a0c9dbeb2d39c3e7c30a75f151423a525 feat(desktop): NSIS prereq detection page + auto-install via winget 7026af4e23030a1c01a388ac60575bbf3b011187 fix(agent): catch ChatGPT-account Codex data-URL rejection so images are stripped instead of cascading to compression (#23602) bff052d61fa30b433b93331c57535af5b0123c37 feat(desktop): theme polish, prose chat typography, composer chrome 3e7145e0bbcded852a5324ceb549fe5ca94ac924 revert: roll back /goal checklist + /subgoal feature stack (#23813) 1d4a4997b1dd5baa27f19a2397557e1b082d75f2 chore: AUTHOR_MAP entries for sudo-hardening salvage contributors 976d8e27ad4f2ba59ba5fc14a0c1e811267712d5 fix(approval): catch sudo with stdin/askpass/shell privilege flags 9520a1ccdfd4d735b9450fe8624c44ff7f54d5fd fix(terminal): block sudo -S password guessing when SUDO_PASSWORD is not set 494824fb110cab494071c792632640d49a485943 chore: remove unused sentinel in test_send_message_tool 571248348725b840acf0bcde43ffbecbba56fe2d fix: guard resolve_profile_env against missing profile dirs 7087702210027444c6f2017bccf5a094f4a4c335 chore: add salvage contributors to AUTHOR_MAP a1854ac07c08c903ee1d4124746d8c08d911614a fix(kanban): treat archived parent tasks as terminal for dependency resolution 27cfe725431346e8cbac141a8b91bedba0121f4a fix(kanban): use localized column label in select-all aria label 379e7dd014275ca066dc7ee3d7f0a1dfd61c2bdd test(send_message): cover _check_send_message gating paths 8ac998cb0caba8dbc382ecf6af1b17c5ecad6ad0 fix(send_message): allow kanban workers to call send_message 5af315c4cc833e20d7306053cbee295b3f0639af fix(kanban): inject HERMES_HOME into worker subprocess env 641e40c4bd8eb3f7db995cf3181ad9e81483f13f fix(kanban): restore HERMES_KANBAN_BOARD after scoped slash override 2b3bf17dfa7f75c05174198f80457e6f483d2131 fix(kanban): call kanban_block on iteration-budget exhaustion to prevent protocol violation f6d4f3c37daddc88040dd44d68399400ac12df29 fix(kanban): route gateway create auto-subscribe to explicit board 64145a1996554e4e81b694e9737421f34f44e212 fix(nix): replace chown -R with targeted find in container entrypoint (#23633) 5606258855f7937659527ffffca9d9d7ef6fadc5 feat(nix): add extraDependencyGroups for sealed venv extras (#21817) d992fd9aaf9fdb3a3f6f4ab449581da77da81e72 feat(deps): add hindsight-client as optional dependency (#21818) ebf2ea584ab2ca37cd70b80b4d8c3bc23604cf47 feat(terminal,cli): docker_extra_args + display.timestamps 228b7d27bdb9b8461b9650137dd3aa2b739879eb fix(auxiliary): cache 402'd providers as unhealthy with TTL to stop per-call retry storms (#23597) ace1c4ea8ccefd8019e7a6a8378f6197c47636fc fix(discord): typing indicator task not cleaned up after API error 0458d99f22d56dccde0c173254a348c85a79ad7e chore(release): AUTHOR_MAP entry for Mibayy clawhub email 95260407002819d98962c6f4859eae22bd2caa52 chore(skills/stocks): tighten SKILL.md to modern format 2ea957fc41f47fb6db177cb077e18722b17ef0d0 chore(skills/stocks): relocate to optional-skills/finance/stocks/ 896a7ce261f8fc6dc427550becb5d661f1040457 feat: add stocks & finance skill (Yahoo Finance, no API key) bf2cc8b31c73f69d6c8fce97aa00607077bb8a67 Merge pull request #20317 from NousResearch/meta/security-policy 228a4d11ae258635cfecc1c322c1712191b6db3c fix(config): warn loudly on YAML parse failure instead of silent default fallback (#23585) 3af3c4eb8c65c42bdba1a7d9b11266ded5fa6d9f fix(misc): three small defensive fixes from PR #1974 482d49cf9065b800451bfedc221f22ac609378ef chore: AUTHOR_MAP entry for wilsen0 edb4a2bda5f8092dae45992bd18876156abc3729 test(telegram): cover env-clamped helper + adaptive text-batch tiers ac95b8cdbec1748d1255cee8bb39aa5f92254864 perf(gateway): tune Telegram cadence + adaptive fast-path for short replies e3b88a8fe2be0e0493a1b4dfc30ae55a8e7ffa56 rename(skills): api-testing -> rest-graphql-debug (#23589) 5f767879e6ef2e5c141c43c7e3252913415d2fd6 chore(release): AUTHOR_MAP entry for Hugo-SEQUIER 1f899393dcddf630ac890637d5950afab242f90d chore(skills/hyperliquid): tighten SKILL.md to modern format f2e8ed2405362a6f13098293bb056acbdabedb5a Add unit tests for hyperliquid skill functionality 28b4fe6007692c5df74a4c3ac3cf90ea2b28cce1 test: stabilize quick-command redaction test against xdist ordering f6736ced8123e4e17bc0bde89b208c0baedbf0c4 fix(security): sanitize env and redact output in quick commands + remove write-only _pending_messages 4c57a5b318378144a239f275f58f5e1b648aba7f feat(skills): add api-testing optional skill (#1800) 6c1af45b783df4f89e45a50b76583e393a970b33 chore: AUTHOR_MAP entry for kjames2001 (James Huang) 82352e54c46acc9f332fd5e111440e3706269022 test(telegram): regression coverage for edit overflow split-and-deliver bf1f40996f195d7387ea0bdffd511637bab9e833 fix(telegram): split-and-deliver oversized edits instead of silent truncation 3b122cc1ac3ae91e690ec8b29e54af10e52fdb18 feat(kanban): stranded_in_ready diagnostic for unclaimed tasks (#23578) bf5b8a7d61782dd9c60eafd9c7838da22b90127d chore(release): map @eloklam tailnet email b8bf2f817d7cdde1980d0940fa0b4bc90fdfddcb fix(kanban): merge dashboard batch QOL with i18n + collapse + assignee-casing b60462a205ebec610f36f8576ef015462cbe333a test(kanban): remove stale t.summary assertion from search test 3df7e30244c0311d63d4ef45128cb0692e185b5b kanban dashboard: fix shift-click range selection, column select-all toggle, and bulk action optimistic UI 69053832e3011f3177da74d821706a48e2854366 kanban dashboard: remove redundant t.summary from search haystack a88f201cd4042a6f71fdedb98d1431e34991a257 kanban dashboard: multi-card drag visual feedback 98c499b235e406b9fdd72bcbe775f946546d0dc8 kanban dashboard: fix batch QOL oracle blockers 0ea234e0932fbfa4935995db3e4a5312649f3e11 feat(kanban): dashboard batch QOL upgrade 518d37f6af49eb8a412fdbb3223f6846e518845f feat(kanban): add reclaim_first support to bulk reassign endpoint 61fb5a48b73b327cfd53625957078f3eddafde8e refactor(desktop): align install layout with install.ps1 / install.sh a63a2b7c78562cd4eaf33f5f7db81ae0b3938552 fix(goals): force judge to use tool calls instead of JSON-text replies (#23547) 4a080b1d5aa7528a679880c93147bc7fffdd267a fix(goals): forward standing /goal state on auto-compression session rotation (#23530) 68d081f5701bc44ac9de4d82eb33d4f860ba2c4c fix(kanban): keep '--created-by' default as 'user' ba5640fa11ce2071ccf26ddf402b47b6d42fa070 fix(gateway): route kanban notifications to creator profile 9e005d6779433255722cbb40e0f982abf1610c6b chore: AUTHOR_MAP entry for NivOO5 7f90141c6344e82d64e25f9f3cdbcdcb90ecbed9 test(telegram): native-draft transport coverage + docs 4ed293b38e8af06110c224de7923e908fef3bbf1 feat(telegram): native draft streaming via sendMessageDraft (Bot API 9.5+) 80bb5f29475521d617ae6dae355ae218a96add60 fix(achievements): use canonical X-Hermes-Session-Token header da2ed478b5058d8650f7d2733e1f79e88bbdc448 fix(achievements): inject Authorization header in plugin API calls 771b8c4a368eb8e1841bd71701ca1519afd9c683 test(conftest): plug every gateway-kill leak path (#23486) e5bce320db1a10f7f78f3d0811f1f040fb1e00ef fix(auxiliary): evict cached client on timeout/connection error (#23482) ae83a54be450872f20832391df948dde739b4d2c docs(kanban): worker lane contract page + review-required convention 666b751536cd750b1216469f9841dbb0f7e6f3f5 chore: AUTHOR_MAP entry for rahimsais 737314fe914cea60e6df8dc50fbb5c917f0b66d3 fix(telegram): normalize dm threads and retry control sends 404640a2b752f502825dc8b26212204fa890d495 feat(goals): /goal checklist + /subgoal user controls (#23456) c0bbdec850274f8402ded08afe24988098807a22 chore: AUTHOR_MAP entry for Freeman-Consulting 121bbe0385198856659a6b335eb3f98eadc7b3ed test(stream-consumer): add UTF-16 overflow regression tests for #11170 c0da5d09a67b97094b6db9b2dfd20657b043a273 fix: use UTF-16 length for Telegram stream consumer message splitting c5f1f863acd49c92d9fbe92550115d51dd5181d0 fix(cli): drive _prompt_text_input directly when off main thread (#23454) 62cfe79e9368ecb0fe3c329179984b7d76f35edb fix(tools): clarify kanban_complete phantom-card retry guidance 2f00559d9e7358fd5eb5605707db5aefdfbe86d9 fix(telegram): pass source.thread_id explicitly on auto-reset notice (carve-out of #7404) a2920b17623e2903bd9481721f60c2bf26c6f97a fix(tui): right-click copies selection, only pastes when no selection 59d3f24f1076a09971d3f882d57ddb0abb9100e1 chore: AUTHOR_MAP entry for konsisumer noreply (#23071) 88588b6159953407420d3778c4a5e87fecd0a30f fix(kanban): extend stale claim instead of killing live worker 3974a137c6164819282e880fb30ca9e30f7e9ccd docs(user-stories): add 116 stories from the Hermes Discord archive (#23436) d6e1fadbf59085214e3f97e231d3c7f0d1643941 fix(xai): omit reasoning.effort for grok models that reject it (#23435) cc2a0c674ad805db2cbc620d0d53e4e5040d5d58 chore: AUTHOR_MAP entry for hrygo (黄飞虹) f9e0d60a9989d11626405b71b66aa261da8ea216 test(thread-routing): handle both lark-SDK-present and absent paths e164a9c1ed781ab5e6e597ec74e9a933b81b7acd fix(stream-consumer): preserve thread routing on overflow first-send path ff14666cdc02ebad18a15de57ded4e9ec7d9f563 fix(gateway): stream consumer first message drops thread context 6636fecd473b13a99f69fc2f742d7b2ce788c324 fix(gateway): only mark final response sent when split-overflow chunks actually land (#23420) b38b1001055b0f4cc8d9d01679ebb059054418cc chore: AUTHOR_MAP entry for jelrod27 (#21398) 787e3c368cbf184ec40c959fa1910f92e777a845 test(kanban): cover redeliver-on-cycle + flip stale unsub-on-abnormal-event tests a96dd5487274cbb678847b333d463d2075a6cc6a fix: deduplicate kanban notifications for blocked/gave_up states 04e18160ab0c29ce8281a9fa7d868e24dd6f2882 chore: AUTHOR_MAP entry for HuangYuChuh ec1fad3449c871898d71200acabf9dd161e1d5b4 fix(gateway): align fallback delete with sibling style + add regression tests 4eb8479ebdce46712d00694a82faf2aa1675497b fix(gateway): delete partial message after fallback send on flood control cdb6e5e52a7169dffba149e18a4fb249f8d197a8 test(conftest): block tests from killing the live hermes-gateway (#23397) 6062c24fd1c2b32523fd1d34f343bc9d970e17e9 ci: skip lint comment on fork PRs 9c68d12079539cffa475ed4171e45da6866243d0 test(kanban): cover send-exception rewind + drop noisy success log to debug 861ce7c0b6743064a65864b0ea9e9bb725e98a8e fix: dedupe kanban notifier delivery claims 373c4d6647fd9a60cff3fe59ea499e8c184979b3 docs(sessions): document /handoff cross-platform session transfer (#23400) 4d9dcbc47ae40ad1ddc2f02221fe7283c65106b6 fix(windows): unbreak install + update on Windows (#23394) 00ce5f04d9cfad2e30d5e08e7a6bf135f6e53030 feat(session): make /handoff actually transfer the session live 878611a79dfaa5435f2d904b3fb20539dea6c5a7 feat(session): add /handoff command for cross-platform session transfer 6e5c49bdc40d745c77f59daa610c1d1ae5b0e00c refactor(kanban-orchestrator): drop hardcoded specialist roster, add Step-0 profile discovery a282434301fbc193ecfea046953f93d8edced92c feat(gateway): per-platform admin/user split for slash commands (salvage of #4443) (#23373) 594209389d9bd4ca2ec1acf61c4b239facf330e2 fix(xai): drop models being retired May 15, 2026 from pickers (#23291) d62808c37383ea44777229ee99a2c4cfe28d2783 chore: AUTHOR_MAP entry for guglielmofonda (#21505) 3fbbf588531fabe2dc3d006142de4f8f4f26bd4b docs(kanban): document max_spawn as live concurrency cap (not per-tick budget) 845be254ec4b14b9c71f7505eb393d85c665882e fix(kanban): cap dispatch by running workers cede612987839d55aa8d5a65b87d36649d626724 feat(gateway): shutdown forensics — non-blocking diag, per-phase timing, stale-unit warning (#23285) 1f5983c4c8cf9227266fcbff88ca1c91bbb4d344 feat(kanban): aggregate all toolset-name typos in skills before raising 673418dfa1d2e4c8dd5baa3198d4f85fc34b6cf0 fix(kanban): reject toolset names in task skills a91e5a87594b4ba0ad5e215d741ddab4b8e5cec7 feat(kanban-dashboard): native
collapse + skip empty metadata 0e0ddaac8fa07494ef797b2f6293c0701fcff62e fix(kanban-dashboard): tone down completed-run metadata panel (#19548) d4b26df8974bca7114fa4fbff83e4600c31230f9 perf(browser): route browser_console eval through supervisor's persistent CDP WS (180x faster) (#23226) 08c5b35a73d2e4a91782e4032116343ede626620 test(kanban-dashboard): pin assignee-casing static-asset regressions + AUTHOR_MAP b308dd7d750c09cfddafbaf1f5a21f90213a0c90 fix(kanban): preserve assignee casing in dashboard 40a4bfa719e13f3e683ef6b1d4665b63ed14da6c test(kanban): cover task_age safe-int guards + AUTHOR_MAP entry 061a18300837351751b3c6028597d25ef5fe6665 fix(kanban): guard task_age against corrupt created_at values like '%s' c39168453d019e758faab7fbe67cd939f8b56d0b feat(i18n): localize all gateway commands + web dashboard, add 8 new locales (16 total) (#22914) 62b1c74cbc62cde1204fecc3c2682d312b995876 fix(kanban): correct dispatcher spawn module name + PATH-first lookup d3db6724dd2efb5fe3c456cb43e133dc6ca95d17 fix(kanban): use sys.executable -m hermes for dispatcher spawn 5aa755e4e63cf84c048f85e0ac016138f36491d0 feat(plugins): run any LLM call from inside a plugin via ctx.llm (#23194) ae4b09ce10737cff2a556727ed835d272e8a9b04 test(security): broaden plugin API auth coverage + correct stale docstring ec9329ec419ab9cc3e72abd2ff4e282d280da4c3 fix(security): require dashboard auth for plugin API routes 7312f7f849e892cbe6534e5e6cc32ae5b6d7a474 feat(curator): hint at `hermes curator pin` in the rename block (#23212) 50f9fee988b67c14a208ee75630ade6277f3d01f feat(gateway): add LINE Messaging API platform plugin (#23197) 9cdcf31caef202555446c0e0b68e652bddcc211a docs(web-search): explain auxiliary-model summarization for web_extract (#23211) 3d4297a59a8607ed24850524d229f5f42520d087 docs(user-stories): add 4 entries from @emmagine79 thread (#23204) ce374bc1baf3138d59a7761686d91b042015db59 chore: AUTHOR_MAP entry for kallidean (#20568) 2704e7b67efa6b25d294578319df54f18e76768f fix(kanban): restrict board routing tools to orchestrators 50d281495eb0ca348b8f196f772b6dd9c5248fed fix(kanban): parse triage flag explicitly 26bf45f8c55ebf7fb79a988fd2de2d534fe6a96a fix(kanban): parse include_archived explicitly 236cbe16b62cf71949d923d0a0cfd9fc9eec71d7 feat(kanban): add orchestrator board tools cb7f1d7e0e954b03f9ae6742ad837e5928457c55 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 44cdf555a83c1d8d605d095442e11efd58089533 fix(codex-spark): defensive 128k entry in DEFAULT_CONTEXT_LENGTHS + clarify validation test docstring 826e7171e97a97215785a517491705f7c695e4f2 test(codex-spark): add live-API regression and make picker test deterministic 9ee9a4297de7998bf64b42dc396c226098e52b27 docs(codex-spark): document ChatGPT Pro entitlement gating 6b5e0119b3e40bf5afdf941919503e1c49b047f7 chore: add codex-spark salvage contributors to AUTHOR_MAP 945764439018b5532cfa8cf63dea95d1921ab37a fix: surface Codex CLI-only models c6dc295a352434e73a81e4864bb2a371b34c1419 fix(model-metadata): set codex-spark fallback context to 128k 2a6f3deb500485dc3eed6013d9d470281fdc8233 fix(model-metadata): restore gpt-5.3-codex-spark fallback context dcc8de83a95b0bf1b89cea95f3d2b4ca42c1bb1f feat(codex): add gpt-5.3-codex-spark model e5af1dd6337b3db4eaf16b330f403e08f057a16d fix(review): tell background reviewer not to capture transient env failures as skills (#23004) 126cbffb8ad5a9f0fb9bd99a1569d36c40a570fe feat(stream-retry): add upstream + timing diagnostics to drop log (#23005) 5a70d9b6be11352ead61a2adb9d26b9ff325a22b chore: AUTHOR_MAP entry for tymrtn (#21794) d1fc748defb9fceaa4abb3b5b6fb4c07931e2e68 fix(kanban): /kanban slash command emits argparse garbage instead of help 3d2bfc502e4693e064e06114e5052683a3fb16d7 chore(models): refresh OpenRouter + Nous fallback lists (#23001) 767736ff1e43250786feffc366c6b86aeeec3370 fix(desktop): keep composer contenteditable mounted across stacked toggle e2ce89a8aa920cfb655c0d9c8e121079f49860d4 chore: AUTHOR_MAP entry for li0near gmail (#21378) 6f2d60559e970ba935761b20c2f3c32395e1d017 fix(kanban): drop redundant init_db() in gateway watchers (#21378) 68e44642c8d126e058ed0bf2fa3c888fe98d7cc5 fix(stream-retry): collapse two-line drop status, name provider, and let agent.log capture diagnostics (#22993) eaab34e57eab8e206049291afa35baf7b89a2348 interpret compactPreview for non-string vlaues as JSON or an empty string 4d14a1479aa1fc1d3b114d53e3eb4eacf0910c08 hide application menu on non-mac systems 3800972dd05eabed8d75bfc4c0f5d532d85dafe2 feat(vision): vision_analyze returns pixels to vision-capable models, not aux text (#22955) e62250453b4a4b8232722caa4853fe900b6a9a9e docs(user-stories): add 18 verified social entries (99 → 117) (#22920) 998676dd0ccfe551f70f0409345514c953d9bff8 chore(test): comment of test case rewrite to english a4036654f1625275f903d61e5369347dc0c2150f fix(kanban): remove blocked kind from unsub dd49d50389891134c9f6723bc1351cd41480603f test(kanban): assert re-block notification is delivered after unblock cycle 8954537f956b752b4e20f398f7b5d55193c8cc35 fix(kanban): request default board explicitly (#21819) eb3db231dc6daf417e2f5a188af7ec547e561606 chore: AUTHOR_MAP entry for eloklam (#22898) d04a0b81ee7cb9631b383b11b1e8fa20ac643557 docs(skills): clarify kanban fan-out decomposition edc015886b167c5464f090b9e45b80d82f387214 pin electron version 08ec602770c4451f0e095ad3a288934dae6f98a6 fix(tool-result-storage): persist via stdin to bypass 128 KB exec-arg cap (#22913) ded194eb6aca6c7999589168b19d139d1b785316 chore(skills): move heavy training skills + outlines to optional-skills (#22912) 4375b82cd9b6173a58456db600aa1f4ead21af6f feat(curator): show rename map in user-visible summary (#22910) b67ea7ff474831743b14edefb6c9113cb12216e7 perf(cli): skip welcome banner on `chat -q` single-query mode (#22904) 5971a4e0925f88fc6afa4f6ebef743d852d46810 feat(docs): richer info panels on the Skills Hub for built-in + optional skills (#22905) da086a0154f48bb3ca8914006866af31958e26b2 chore: add ming1523 to AUTHOR_MAP 85383c6363096d052e73b54ed2646673f8676dfe fix(cli): preserve config comments on setting writes de5461872011df92b159cb13395c1f1035a27ab1 chore: add v1b3coder to AUTHOR_MAP 4fdaf0b4d889f8bb9442f82eefa873d90477f2de fix: use credential_pool for custom endpoint model listing probes f93b8c28e310fc42c4b1e7e8b19e141907545511 chore: add DanielLSM to AUTHOR_MAP 1fb9f7c68c2d58951f8ce9ede9533b137e70ba92 fix(gateway): pass max_total_size_mb and max_file_size_mb to CheckpointManager 4ca7c2104da006aa0eac8cd8199aad7b5c12851f test(gateway): stub /proc unavailability in find_gateway_pids fallback test 6bf7ac318558819ea81f528829d564baafda9c79 fix(gateway): detect gateway process via /proc in Docker without procps 2ffef1567584618d821ee8eabcf05979580c7c52 fix(test_gateway): stop run_gateway() tests from rewriting the dev's installed systemd unit (#22900) 4f8d8ad912452069e708fd1edac91f5f12a82147 fix(error_classifier): classify generic-typed timeout messages as transient (carve-out of #22664) 6ddc48b058a3f16ac62cb2c9adbbdc715a9ffa28 fix(fallback): resolve api_key_env in fallback chain entries (carve-out of #22665) 246c676c2b02200901d1e762223efa9876b50c0f fix(gateway): degrade gracefully when all platform adapters are missing 116a1446a474f38aa57944f5aa8c6eb4283a7953 fix(terminal): bridge docker_env config to TERMINAL_DOCKER_ENV 53ec32819cc6a2dceee6538b4c3b665bbee67fcb fix(process_registry): kill orphaned Popen on post-spawn setup failure c179bdab3c5f10e83c581d52c231cc58f4905007 fix(install): also patch psutil on Termux fresh-install path 6d5d467d39a584609512e9213101a7a9a1318a7c fix(update): use termux-all uv fallback path on Termux 3863d6d344c766c03698957134aa856e17c33d49 fix(update): prebuild psutil on Termux Android via Linux path shim 2245879af0dcc48f93fa8d516b8748d65ac67c75 fix(checkpoint): guard _touch_project against non-dict project metadata 058c50816c70c5f9a1253a87776d50e8df4c5dcf fix(session): route OR-combined short CJK tokens to LIKE fallback (#20494) 35f773c459a3602f253311328809363463f181d5 fix(context_compressor): treat streaming premature-close as transient error 0c5c4d1b8d6ce6bfd1cc12796607669e5ca755e8 fix(skills-hub): cover remaining SSRF fetch paths after #10029 af9df46525411f6578e5e2fc904a48f87fcf7843 chore: add kidonng to AUTHOR_MAP 1321bcf5feb0c9660c0ea7fd652c79c43eec8d65 fix(gateway): finalize final stream edit on done c1cc3d4ea65bf11dc493f9d81695bab0003b1aa9 perf(image_gen): defer fal_client import to first generation request (#22859) fef1a41248a9a584f7b945d0a46d57de46d15358 docs: round 2 audit — messaging, developer-guide, guides, integrations (#22858) 0bcc327cab9dc9b60d80e6e0e5239149d7a83207 docs(openrouter): document auxiliary..extra_body for OR routing and Pareto (#22844) 70bfd429e55577f06c1b0e04955e19877161cd7b fix(gateway): preserve reasoning_content, codex_message_items, finish_reason on transcript replay (#22839) c7f0aab9497bafa07695388e916a8466e90e6efa feat(openrouter): wire Pareto Code router with min_coding_score knob (#22838) b349ae1e4c644a48a72e4a01664c97f7b388dbd5 fix(acp): honor task cwd for foreground terminal commands 550f6e2efc338e274993747dd66d5a6bed00f6f9 perf(teams): defer httpx import to first webhook call (#22831) 840ebe063eeac3c16e42cb248f7269382ec510a7 fix: make session search initialize session db 9c26297c8013b8b4a31e186ae4cbd3ed4410f354 fix(gateway): preserve Ctrl+C for Windows foreground runs bfc84bdc6f85c14715e06d5fa83192ea3e7c7f79 chore: add Ninso112 to AUTHOR_MAP 883e11f0a09a6683e35bb75758b686322e8634b0 fix(openrouter): add x-grok-conv-id header for Grok models to improve prompt cache hit rates (carve-out of #22708) 5e2eba87e6b7bb7c5d11ebcfb40371e2adcc076c chore: add mbac to AUTHOR_MAP 1508dcb9c2169889ccc8db217387d45896e6afb5 fix(gateway): adopt unit's HERMES_HOME for --system CLI ops 448c11f16d79897a77c1d507d79e8ee897192aae fix(telegram): default notifications to 'important' (silence intermediate) b4d3092f698fd85884848dcee48d712ad87aa1e1 chore: add CalmProton to AUTHOR_MAP 236f3b052171754884064a641da349f0455fe8bd feat(gateway): add Telegram notification mode to suppress intermediate push notifications ca139932171148290d53c7586e3eb659a7afa92c fix(delegate): add explicit do-not-use guidance to acp_command/acp_args schema (carve-out of #22680) 1c9ffb177c378bba24ef208ba8f551722961c655 fix(model-metadata): align hy3-preview static fallback + delete change-detector test (#22805) fe61d95b44382d4b06e4a4cc42af55e1e62c0dbe fix(completion): use valid zsh _arguments exclusion-group syntax 6e848f60eff7ddc8f48fb25411d052bdb3d1448a fix(doctor): normalize provider name and aliases before dedicated-skip check 1dd0790654a842cb2677b357fafc9d0790716ab1 fix(doctor): skip pluggable provider profiles when a dedicated check exists (#22346) 78698381af7ed7efa7e0c8e634af01dab4334511 fix(kanban): make _migrate_add_optional_columns idempotent on concurrent open 68854cdcdb3d287558392104be0c04c37dcbcabc fix(agent): extract thinking from content-list blocks for DeepSeek V4 Pro 98e94beb1b24f6e8a28ee2f82740a586ff62c3f0 fix(deps): declare youtube-transcript-api in pyproject.toml [youtube] extra a671d8a27a375c9563f4f4524952adeba3359327 fix(email): use real hermes version in IMAP ID command 3fd4ccbd8b6eb7197386900a6a6908a778047018 fix(email): send IMAP ID extension to support 163/NetEase mailbox 48bf0ea2496f4108d6ecbda5346b45425dcb239f fix(browser_tool): fall through to autodetect on config read failure 3170c8d4484e8fcc12d8a18acdb4f246071b4249 fix(browser_tool): do not cache transient None cloud provider resolution 5a0021146b97195ee29211917b18748cc6eb20d2 chore: add Qwinty to AUTHOR_MAP 17d89148505f3b2d3252652d552133847e546472 fix(auxiliary): rotate pooled auth after quota failures 775c0e22cf5a0963aceab3fda2f45cbfc3fa1d25 perf(models_dev): cache-first lookup, skip network when disk cache is fresh (#22808) cd712b176a9be62b0d1e70a865c1226bd1b0e6a3 feat(transports/codex): pass reasoning.effort to xAI Responses API 252d68fd4500d086b6092d6f4306ecf56b70c761 docs: deep audit — fix stale config keys, missing commands, and registry drift (#22784) ea2d66ddc0ca57d6d11a609699177fd598ed4988 perf(gateway): defer QQAdapter and YuanbaoAdapter imports via PEP 562 (#22790) 8849d18d79c2487b38c4eecc4eb39642aae62707 fix(agent): skip post-tool empty nudge when reasoning_content is populated dcff23a25f30db6fc589ae2194df39b1a9bc606b test(xai-image): regression-guard literal '1k'/'2k' resolution payload 5b32c9fc66ba36113ecd8792990e1484db79cbfe chore: add A-kamal to AUTHOR_MAP for PR #18678 13b474c56e7fb4e7a636417ce3160d5c7fda50c6 fix: send correct resolution param to xAI image generation API e612c3d6f00624868ce3f73bb6beaacfea36337f perf(doctor): parallelize API connectivity checks and disable IMDS (#22766) 8f711f79a473f1b32f469b47edc27e63f52aab43 fix(tools): install cua-driver when Computer Use is enabled via 'hermes tools' (#22765) 6e5489c9f3ecb93c0b907d5647bcc6a569b8f77e fix(memory): tighten MEMORY_GUIDANCE against ephemeral PR/issue/SHA notes (#22781) e7c0d6ee5371dab9eb8b54af60ea88f8455353b8 fix(fallback): skip chain entries matching current provider/model/base_url (#22780) 70bc52e40896afe3a35a2115f8e1fc8af86cc363 fix(cli): make Ctrl+Enter insert newline on WSL/SSH/Windows Terminal (#22777) 2124ad72a27d72dfdca0189f3e0e7b6213cb72ea fix(api-server): emit length/error finish_reason for truncation/failure (#22775) 86f69e8c2a4cf446db69454e0dfe13898e871c8c fix(agent): hydrate memory-nudge counters from conversation_history (#22774) ade5981429e6a44431529117c31be9bd8af77e09 fix(kanban): sanitize comment author rendering in build_worker_context (#22769) f00dc6d7a3a1d1a1cc5e98507d2efb201990f517 fix(tests): harden run_tests.sh — uv-aware bootstrap + scrub HERMES_CRON_SESSION (#22767) e90aa7f2802ea1a688df7189b490843f829c6caf fix(agent): notify context engine on commit_memory_session (#22764) dae94fa6526dec0c7660276a4d875cebc6e344f6 fix: follow-up for salvaged PR #22263 55f518e5216a576b95ef9a5e8851e4dcf99e2b27 feat(gateway): add Telegram guest mention mode 30dd5547ada8f316b6a558d4aa4c5e025f5b9ee6 fix(voice_mode): generalize container phrasing and use $XDG_RUNTIME_DIR 369cee018d46560e7076e209f311756aa5ec1f70 chore: add wali-reheman to AUTHOR_MAP b959cfa056b68b9bc4cd47dc80de99b457f10454 fix: move pytest.importorskip below pytest import in skip-guarded tests 4e8b8573ca67c277ead4e30045ba9ce4c614ade6 tests: add Windows skip guards for UNIX-only stdlib imports b6ff96c057485d14adc8c9499bd9ca712eaa859a fix(cron): allow quoted URL in github auth-header allowlist 691778a08be2f5090304183db8ef3882c6fb8b9a fix(cron): keep auth-header exfiltration blocked 783d11717a044a1aaaea0b6504b09c420e393b1b fix(cron): avoid github skill false positives in scanner 9aefa74a9f572e123095287e64f559238272f807 feat(mcp): add codex preset for built-in MCP server discovery 684fd14db079c67f1a3884d7d8801fe2b3b55c1d fix(dingtalk): align override signatures with base + guard Optional[error] in tests c705c7ac9be59f78ada843f38e4a9bacb8cc3519 fix(dingtalk): clarify webhook media behavior a33c63b9f8803ff0d9fb7f93896baf0d5bf0d2da fix(profiles): honour active_profile when HERMES_HOME points to hermes root 854c2ce30922200aedb96e0f609697433efd2ec6 fix(telegram): honor message.quote for partial-quote reply context 78b8155ecbf4aee2cae1fb1797895d2a9d6fe256 chore: add xieNniu to AUTHOR_MAP c8ede8aa1bdb0e79879f718db2d7745ac8108b2b fix(plugins): resolve Git binary for installs under minimal PATH 124fbb0af063fc7e098cc4c01da12768bcd6a856 fix(gateway): refresh runtime argv metadata 7d276bfbee601f670989ff54c7bd90172af90250 fix(cli): expand composite toolset when mixed with configurables in platform_toolsets 1f4200debf8c34af10cc2c5a1acde31917f970a7 feat(delegate): show user's actual concurrency / spawn-depth limits in tool description (#22694) 000ddb8a9305b084cea5fe012a1f997b861d6b07 chore: add SiliconID to AUTHOR_MAP cda20eec0c022956b3a857e6bc9c5ae21a689fb9 fix(kanban): gate claim + unblock on parent completion 79694018f89e9c6c75cad11172855ca1de345c47 feat(plugins): HERMES_PLUGINS_DEBUG=1 surfaces plugin discovery logs (#22684) 8f83046f6c4af82a36610c75502351aeb00606a7 perf(google_chat): defer heavy google-cloud imports to first adapter use (#22681) 0d9800743cff07c49ba74b5d4d00b26b1af29e04 chore: add wesleysimplicio to AUTHOR_MAP 0c22434f033ab0a8ec8c4e9ede319ecb85e4c206 fix(kanban): call recompute_ready after unlink_tasks removes a dependency b9c001116e2bc6e2b112d9338ab6ce10040896a0 feat: confirm prompt for destructive slash commands (#4069) (#22687) a52c204dcf3ed82db2af60a63c3f3ac7ee9de422 feat(session): add /handoff command for cross-platform session transfer 0cafe7d50d330e0235d0d98507fc75d82a8a12af Merge pull request #22510 from novax635/fix/gateway-slash-confirm-boundary-cleanup f1f42a7b9ffa83749f725cfdf76b121779859914 Merge pull request #22610 from uzunkuyruk/fix/telegram-table-row-label-duplicate-bullet 7ac4a96b95c0e7db5f1a0dd7a847479ac7feb69e feat(mcp): add codex preset for built-in MCP server discovery 965d2fec98c208d837218ccf93710b2c7dfb1b9f feat(provider): add codex-cli external-process provider 8fdaf4d3d6a877d362b8dd8deec00a9d2caaba17 fix(telegram): exclude row-label column from bullet items in table rendering 9222f1c491e148d1ee450f2e0f26141b86cca344 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui bde487c91137436aced5819e2aea2d354a1815a6 fix(voice): honor PULSE_SERVER/PIPEWIRE_REMOTE inside Docker (#21203) f6d45e5df49c85c87a3f2ec44f9e92e233019622 chore: add nik1t7n to AUTHOR_MAP 1ac8deb3caa3d40a373a10a073188e246574f059 feat(gateway): stream Telegram edits safely 8b6501786c9cc22fb63e2aa8c28f231aea07dc91 fix(gateway): clear slash-confirm state during session boundary cleanup cca2869d78388e049ff1116e420b7209643a9c15 fix(banner): resolve update-check repo from running code, not profile-scoped path f7e514d4adab5b82d1cb58f4aab24ea455a7d0e1 fix(profiles): exclude infrastructure artifacts when cloning with --clone-all 93e25ceb1326770b369b8c4151cd3b9c3cdc0688 feat(plugins): add standalone_sender_fn for out-of-process cron delivery 3801825efd40465ec97e9b1f285cd0e009722dc8 fix(tests): pin UTF-8 encoding when reading source files on Windows 5d2a75ddf26cc89f304262fbb8519ddaa2f002de chore(release): add KvnGz to AUTHOR_MAP (#22458) 4a1840e6835058b6d7fc2457dc652d9cd8d61ce4 fix(async): replace get_event_loop() with get_running_loop() in async contexts b7d8e280e85e27cb356ac25759124f4e25bf4ad1 chore(release): add Zhekinmaksim to AUTHOR_MAP (#22449) 7e578f02c88fa1f00c0a3498580e832f2e61115c feat(feishu): add native update prompt cards e3ebaa19bac666773a01bc4f37ef81a7966d9dc4 test(kanban): cover kanban_comment author hardening + cross-task policy 9bbad3cc10cc12b0ad3f76ee323b4e8e6d241cb9 fix(security): drop caller-controlled author override in kanban_comment e3cd4e401ddced3581ab860a8697fcc452e17805 chore(release): add heathley email to AUTHOR_MAP for PR #21911 salvage (#22446) 8578f898cbe6f9c0f6f7c6fab1cb6fffef453f54 test(google-chat): cover relay-declared sender_type honoring c38640004059dd6c4e61fba78e5b1d2842e91841 fix(security): honor relay-declared sender_type in Google Chat adapter to prevent BOT filter bypass 0f1d41a88cdddc953faac373505f184c8ee23293 fix(transports): use PEP 604 annotation for ToolCall.extra_content 2c8c48fbc789e5b1b8f477c3f33b509a0099cf08 fix(webui): clarify MEDIA absolute-path hint aad5490e749319d2f8fbcce3a92ee7aaa3d2aacc fix(webui): add platform hint for MEDIA rendering 7330183d087f65c57db424fb03adf55d72661c32 fix(model_tools): log warnings for failed JSON-array coercion 326ca754ad780d1ba22b51970210a9631a3d7196 fix(delegate): accept JSON string batch tasks 4632be123df5c3f31831ec43dc6ba10c502064f6 chore(release): add uzunkuyruk to AUTHOR_MAP (#22434) 2a7047c2ed420083d8ff5ff0cb19d075e101a32f fix(sqlite): fall back to journal_mode=DELETE on NFS/SMB/FUSE (#22043) ae005ec588b70cfe7c928faa1c189734968cb7fe fix(send_message): map Telegram General topic id to None for forum groups (#22423) 8fb3e2d63afbac1cdf10a192592cb411cb9cef7c fix: always send tenant headers in OpenViking _headers() when account/user are set c7e8add12016bcc5591cb161af8c49b66e87a479 fix(context): handle JSON decode errors in compression — salvage of #22248 (#22416) aef297a45eab2afabd0084e62a5e7666eee68981 fix(telegram): skip send_chat_action for DM topic reply-fallback lanes b3239572f0e85187aed153cd2e2ef24e4f6abede fix(telegram): preserve DM topic routing via reply fallback 28b5bd7e93816e1533c41dd38f2e29d7f1baeb52 chore(release): add leehack to AUTHOR_MAP for PR #22053 salvage (#22409) 96dc2726232fc02c836b29968550d7dc5af03e36 fix(cron): use getJobState helper in handlePauseResume e572737274c96081660600f7af16369158a67769 Fix cron dashboard rendering for partial jobs e407376c50922ad5b1ba079bd2f90a6160fada14 fix(cron): normalize partial job records f2afa68a4a28dd2aca3f8f827aca93325abc8898 chore(release): add oferlaor to AUTHOR_MAP for PR #22356 salvage dbafa083b5f5b201b03a18c1d319fa9faf96a7d8 fix(cron): avoid delivery origin as sender identity cc0bd10420f35042047f5036ac431fb606b39b25 Merge branch 'main' into bb/gui a7e7921dbc0a593027f40b571861f50a71221aec fix(tui): trim markdown wrap spaces (#22062) 78b0008f4451c4b3047107926e466dcfc257ae3e fix(gateway): also catch restart TimeoutExpired; friendly message dccf1fb6e0eacca33a3c46f44bccde35f9fa2880 fix(gateway): cap adapter disconnect during stop 609e8fcf39e13a0766e3287bed8ddc3a1c61aced feat(agent): per-turn file-mutation verifier footer f403988fbbeaaff8394d2a1126dc4930c2c91606 perf(honcho): cap shutdown-path waits at ~6s when backend is slow 524cbabd89811ce388bf51e997c6f6d3fd3ce4e2 chore(release): add dandacompany to AUTHOR_MAP for salvaged PR #20503 24d3216175cdcac5e1f8e4747db1892f7e3cee0a fix(slack): enable writable app home DMs in manifest 8e4f3ba4da5337e1ad674a876ac4fb8490f0b79c test(patch-tool): collapse 9 schema-shape tests into 2 invariants 3adcc6441916c40f0c5135e65194ff9642c99f29 fix(patch-tool): advertise per-mode required params in schema descriptions e4dc1494742157d3e5dc0c3e161745c8d4067498 fix(patch-tool): advertise per-mode required params in schema descriptions 7c174e65f749dd166c71eda497b05bffe271cec2 fix: harden termux update path with uv bootstrap and env guard 6f7b698a08bce285a8104d05b298d706e360fc14 fix: keep tui /quit behavior aligned with cli exit flow 0ec052ca24476379b0004af800d049abde17323d perf(cli): cut ~19s from 'hermes' cold start (skills cache + lazy Feishu + no Nous HTTP) (#22138) d606df81263dcd4a791f438031f08f3b5bd639e3 docs(cli): call out Ctrl+Enter for Windows Terminal users f5b635f6ab6d81499d8940f7ab650b6e11956272 feat(cli): recognise Shift+Enter as a newline key cacb98473222b8cd18b3a5937cc2b9e8d2f522ab fix(google-chat): repair setup prompt imports d10d19ebb7b468da0cf59e774b591a036f4f5a07 Merge pull request #22080 from NousResearch/fix/faster-docker d971b26bfd8305285cac1f47c84cceef67624701 fix(update): bypass systemd RestartSec after graceful drain (#22101) 5089596685826ef2f63214f2fd184da88cc4cdb7 perf(cli): skip eager plugin discovery on known built-in subcommands (#22120) 7a4d5c123a29e60dec647977572116bad2036a13 docs(windows): label native Windows support as early beta (#22115) 93679ef27d74d7d8430b603acb9d0bdc3b1e7607 ci: run docker build on PRs + smoke test arm64 758c40135f0f0929ba2ed0a432c8801debe6f056 ci: add blocking uv.lock check 0a51863f5bb8c8f0393062515c7491fed5650377 fix(ci): update uv.lock afc186fa4eed44e0d5e4c5a5f1d2b3b8ac8f0f13 docker: split python dep install into cached layer above COPY . . bf80508d65665b91aba43919c9d11efaba5a1e2e ci: split docker-publish into per-arch native runners a54cae60d4ac72640f203193e810eec46d4a9859 fix(setup): offer gateway service install on Windows (#22099) 66320de52e9d77c5afc9767a350447011c8577f1 test: remove 50 stale/broken tests to unblock CI (#22098) 26bac67ef90d99646b491f5df4ef3856abb072ad fix(entry-points): guard hermes_bootstrap import so partial updates don't brick hermes (#22091) 3299be6bdb0a604b3730481004d2e0e33d0e83c7 docs(windows): add native Windows guide + install one-liner on landing page (#22089) 81f5faf1e041587fe38d584491f522f021496e12 fix(entry-points): guard hermes_bootstrap import so partial updates don't brick hermes d3120aeab064c7d8275cd85d39c567313a93f6b2 ci(lint): add blocking ruff-check + windows-footguns jobs to lint.yml f5ee780124904be1992771cb7c9f7a9263d833e7 test: migrate stale os.kill monkeypatches to gateway.status._pid_exists 291a158441c2a94cbc33bff6506262ff001050a6 fix(skills): move platforms key out of folded description: > scalars 59fbcd5ccb4d080f9a00d8a862f6998aa04a1ed7 fix(install.ps1): strip UTF-8 BOM that broke [scriptblock]::Create 35fce7699ef61eb11963a498c5489b4e7c7a508b feat(windows uninstall): clean up User env, PATH, Scheduled Task, and portable tooling 0548facc506ff6d19044be28a10879c188b55087 fix(windows): gateway status dedup + install.ps1 platform-SDK bootstrap cc38282b04d997468db782caa3443387fd454359 feat(cross-platform): psutil for PID/process management + Windows footgun checker 324567c93662d726e05650c83b06078dce599e37 fix(windows): os.kill(pid, 0) is NOT a no-op on Windows — route through new _pid_exists helper 9c263fbf8a622566f0831b8b727ded31b67c64af feat(windows): gateway as a Scheduled Task + Startup-folder fallback 52e497ce7f3f6910764679fcaeef6d53ebd7e46c fix(windows installer): UTF-8 BOM, tiered extras, skip tinker-atropos by default 0ba1e12abc5aef96429413d7532341a69e37d8d8 fix(windows): browser tool + spurious SIGINT from subprocess spawning 62b4ebb7db4e18fd3628ada0a1a30609ed6a109e auth: use get_default_hermes_root() for shared nous_auth.json path 98db898c0bd4df0b09a5830b6a18a069c771e67c feat(skills): declare platforms frontmatter for all 79 undeclared built-in skills db22efbe88bd822331a3220b9020e6d4800c37d1 feat(optional-skills): declare platforms frontmatter for all 63 undeclared skills b18b17f9c9de0f43975a8987821f37be954603a2 feat(skills): gate 7 Linux/macOS-only skills from Windows via platforms frontmatter 03566e5124d106656f4152c1b084c233d9c07f3f fix(windows): auto-install Playwright Chromium + surface it in doctor b63f9645f08af894f2685521ffe4ee55df79d620 docs: add Windows-Specific Quirks section to hermes-agent skill + keystroke diagnostic d1838041e52499094b501056172cc7322233a7bc feat: Ctrl+Enter inserts newline on Windows Terminal 40e7a71c350121a94a67d44e9f1e09239d6196d1 feat: enrich system-prompt environment hints with host + terminal-backend info 3be853a9b848ad24827cb5d64b66d87f2797b05c lint: enable PLW1514 as a blocking ruff rule cbce5e93fcb9a923ab71f45d2a0f0f172dd54967 codebase: add encoding='utf-8' to all bare open() calls (PLW1514) d94fb47717eb6e2c343e1615fdabf436f19b350a hermes_bootstrap: Windows-only UTF-8 stdio shim for all entry points 107de0321d0e8b9e23a60ec7439fdc50f45d2137 execute_code: set PYTHONIOENCODING=utf-8 + PYTHONUTF8=1 in child env e614e87954638a164c3e6e552408971e231a10f1 tests: skip POSIX-venv-layout tests on Windows da184439db42a6ac6816d31bb0c2fedd18d93c23 execute_code: write sandbox files as UTF-8 on Windows 3b9cd5820898796ead8f7d5913efc42071d2e94a tests: lock in POSIX-equivalence guard for execute_code env scrubber 5c859e57165df24aabb0c9b3a01a5b5b6b5276e7 execute_code: pass through Windows OS-essential env vars a2efad6bea303a3a04a477dc662c711ec761f782 fix(windows): prefer npm.cmd over npm.ps1, skip .py argv0 in relaunch 21efeb51bb01bc4a24bb3afb9c621b9baaccabf7 fix(windows): enable execute_code — stale AF_UNIX gate was blocking the tool 8f91d7bfa9d8427ca40a392c5fa1ce3dd2fe9231 fix(windows): %1 install error, patch CRLF false-negative, SOUL.md BOM d52e54170ab2d1d7be609fdccfcc820557b8defb fix(install.ps1): step out of $InstallDir before touching it + harden repo probe c469a05ce58b0f269b9750dc6e9a857abcff7ccf fix(install.ps1): validate existing repo via git itself + clean up broken stubs fc918867b2bcc311ba8992b73b519d7c49626f3e fix(windows): quote cache paths in bash + augment PATH so rg/bash resolve on first launch 3601e20f47c886d9174aae4129f310f90a00a682 fix(windows): use PortableGit (not MinGit), fix relaunch os.execvp crash, surface npm errors e93bfc6c93bfa6f9edd02629a03f717fc29ce013 feat(windows): close remaining POSIX-only landmines — TUI crash, kanban waitpid, AF_UNIX sandbox, /bin/bash, npm .cmd shims, cwd tracking, detach flags b53bd12fe4c2b5518049c61692090fe26a786d30 fix(windows-editor): default EDITOR=notepad so /edit and Ctrl+X Ctrl+E work b7fe7ed7bd1740b01315c4bd15b254aa738124e5 feat(windows-install): bundle portable MinGit instead of relying on winget 9de893e3b078e7ef51437af1ce6743d96a103c6d feat(windows): close native-Windows install gaps — crash-free startup, UTF-8 stdio, tzdata dep, docs 67b8a1076ab157fecd09f32887028394be58c757 ci: retrigger checks after #22083 landed the profiles.py PLW1514 fix on main ea2cc4f9023c02a2cc130814fdfacc51098efbcf fix(profiles): pass encoding=utf-8 to distribution.yaml open (#22083) e318b593f1c3391d2965878e5b1ca256d415faf7 ci(lint): add blocking ruff-check + windows-footguns jobs to lint.yml 37f509d2bb4b20c689ff41db9e16d0c35d86fa3f test: migrate stale os.kill monkeypatches to gateway.status._pid_exists dc25ab7de2809513c5a429cda00a6369fd29169a fix(skills): move platforms key out of folded description: > scalars a6168c2a0aea39262655a56f57ffe31a650800e6 fix(install.ps1): strip UTF-8 BOM that broke [scriptblock]::Create 7412878acafdcd59b94a596879678e4cf45cd748 feat(windows uninstall): clean up User env, PATH, Scheduled Task, and portable tooling b2bdf274f722cb005c8065ba3bafe6cbd3a98a79 fix(windows): gateway status dedup + install.ps1 platform-SDK bootstrap fae9166cf431345c2dea8f8d423659225ff85b2e Potential fix for pull request finding 'CodeQL / Clear-text logging of sensitive information' f790c612075709911c97a79bc21b4492047fd745 feat(gui): first-class Messaging page + gateway menu redesign 3dfb3570012ef1beead545d127f78b2776c23198 feat(cross-platform): psutil for PID/process management + Windows footgun checker 242da9db965ca5618995c5ff92659171f7aae629 docs(teams-pipeline): cron renewal recipe, sidebar wiring, skill rewrite 729a659a3c8a949dc9c3b6a2ffe1ae3a49f33bd7 fix(teams-pipeline): add skill asset and fix async test env b79ef8827fdcbe46064ea0ea5fd9b7dc2b1cba54 docs(teams): split meetings setup from operator runbook 1cbe399149d11139e1769f0862bd2c67e5422513 fix(windows): os.kill(pid, 0) is NOT a no-op on Windows — route through new _pid_exists helper 9ec0f7cbff5411b86b7e27d9ce1ccdf93d2d555e Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 1997b3baf81440f5afd4b7963a23663e85557d18 feat(tui): support attaching to an existing gateway (#21978) ac178b78c44fc0debed2f5c227f62acaeabbe050 feat(windows): gateway as a Scheduled Task + Startup-folder fallback 87fca8342a2227c305712883e68e2c97f620ffaa fix(windows installer): UTF-8 BOM, tiered extras, skip tinker-atropos by default acc0a81624686f90300828cf71cf00a9cec0b645 fix(windows): browser tool + spurious SIGINT from subprocess spawning 9680827078c4d73cbbadf3f97674aaa4f9839a7c docs(teams): meeting summary delivery section + env var reference 5e8dfc9f6dad585b23502e8cd142e6e45d3f024c fix(teams-pipeline): fill in missing delivery URL in adapter-reuse test d36ccc29c968343f4aecd07a29853d2bede72ecd refactor(teams): remove redundant delivery-mode branch 397f750bb402f1807c0e7c732ff7637b1f2d52e8 feat(teams): add pipeline outbound delivery via existing adapter a99547740dab830c8b121574e4ef50db8fc500f8 fix(teams-pipeline): drop-scheduler fallback + test wiring for enablement gate 07bbd933370882e8977e69f2d19b6f26a66ed271 feat(teams-pipeline): add plugin runtime and operator cli ea86714cc0e0b3461a8f69b778116d8bbd3dc61c docs(profiles): full user guide for profile distributions (#22017) a735b72131304f26d455b628de2dc713766c4cc0 docs(computer-use): add to sidebar nav under Media and Web d0aad4b021b445fbb605dfcfeaa3c533b88bee74 fix(computer-use): harden image-rejection fallback + AUTHOR_MAP 2937f9bef60c7a2d5b1531833ffdebfc0af006e2 fix(computer-use): unwrap _multimodal tool results to content list for non-Anthropic providers e31f3b3c56e33ba96213de4312367b4f61a745ed feat(computer-use): background focus-safe backend — set_value, structured windows, MIME detection 850413f1203f02c42ac6b9fd21ff86a2402a974e feat(computer-use): cua-driver backend, universal any-model schema 94fbfb2019972e08a06759c72db067763cc89889 Merge pull request #21995 from NousResearch/feature/desktop-remote-gateway-settings 290acdb59c7efad48db5c2ca7918b7b411536c6b fix(auth): address PR review comments for Google Workspace OAuth 474d1e812bf3fe1a1f75b2ab06f477c631bf62c3 docs(msgraph): webhook listener setup page + env var reference b8d7e0e6d386eceb081cab8123db26474b1a6b9d fix(msgraph_webhook): harden auth surface + IP allowlisting + response hygiene 26a59e4f6c6494f46db1c73278412109f320a6df fix(msgraph): normalize webhook dedupe and resource matching 2a215de9afa30266299ff3dc529d2d5d40937a57 fix(msgraph): bound webhook receipt dedupe cache 46a6f3902462d7f813741eab56b0abf13c4a777b feat(msgraph): add webhook listener platform d3d1772837a7b0552940b55455ae734c72e0a8f1 Add desktop remote gateway settings c34884ea202b850391e16bdbd205fe318b257d71 auth: use get_default_hermes_root() for shared nous_auth.json path 0961854b8814580d3143dfbbdd2694c4e2ac9b02 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui f209a358592fe9613fc11e779d80b3b4d4da4f45 feat(profile): shareable profile distributions via git (#20831) b9d541ecb83bbaba8d8177362f82298fd03a4072 feat(auth): add integrated Google Workspace OAuth provider a02ea9d8ffc9e67f18de5486734dfd5ebc67784f feat(gui): route embedded TUI through dashboard gateway (#21979) db84eea6a0bae001ee441905e53a81e416422290 feat(gui): route embedded TUI through dashboard gateway 6b0c21b277d6417bb089bf405756b085f1619485 feat(tui): support attaching to an existing gateway cf648a9b7e4f3a346451d543648ce76922971e1a docs(msgraph): add Azure app registration walkthrough + env var reference 45d860d424ffbfd143c66ce0ce266c321cd89006 fix(msgraph): stream download_to_file body instead of buffering b878f89f669cefbea3d24ba49b39aaf22c640469 test(msgraph): cover concurrent token cache reuse a152c706b7bbde3efc921e86f302c75fdaef99a2 feat(msgraph): add auth and client foundation ea8e608821b18f1cfa2f45c65542f7bc6c2f7b96 feat(skills): watchers skill — poll RSS / HTTP JSON / GitHub via cron no-agent (#21881) b9bac87d5aa20a2fcc114b2a1fd1180bdc1c800b feat(skills): declare platforms frontmatter for all 79 undeclared built-in skills 31224b9b5cda383d6a074aeeb1047132e0ec6094 feat(optional-skills): declare platforms frontmatter for all 63 undeclared skills 3e823d5b3e3ce13bcc06b6233de291325c6dd926 feat(skills): gate 7 Linux/macOS-only skills from Windows via platforms frontmatter aefd1a37f426c013de6b6327b2c7f6decd347beb fix(windows): auto-install Playwright Chromium + surface it in doctor 839cdd1b054a75ff1b581199a83488c8e0f2f788 fix(approval): cron jobs must not be treated as gateway context 526c0e018a2087303cf31b25b949a64a029d0718 feat(api-server): expose run approval events e43d2fe5205ef3a2027924f14380a6af08bda35e feat(google-workspace): Drive write ops + Docs/Sheets create/append (#21895) ec3f7d1a89ebe1b75d2f8c68cc02edfab6eda071 docs: add Windows-Specific Quirks section to hermes-agent skill + keystroke diagnostic 674fad14832006bfd742c5e3183f34c24018e43a fix(goals): Ctrl+C during /goal loop auto-pauses the goal (#21888) 5643c297901312d817713a8cc870a28a439e3114 feat(docker): bootstrap auth.json from env on first boot f4e621f7d834fe8dc879dd4f4fbf3e14d3d986cf fix(cron): clean up job output dir in remove_job 1cebb3bad8a1516f1f7bb825a4011959c382511c feat: Ctrl+Enter inserts newline on Windows Terminal a3131862bd00f5a23c9f60dadfffa8be26d1d3c1 Merge pull request #19830 from NousResearch/austin/fix/pluralization a8f462bc9a26e3bc7bef6f30174de6c678b02125 docs: add backup and transfer guide for moving installs between machines 42f9234da34e59e456240cb3ddb8bad1995427a4 feat(tui): segment turns with rule above non-first user msgs; trim ticker dead space (#21846) 26f5af52a8bbc96cbefaa62ccf8295a688894dde feat: enrich system-prompt environment hints with host + terminal-backend info 7190e20e0b84c581fe182b5038ade7483482e69e fix: include terminal backend in quick setup wizard (#21842) 5e4f2301f8e380cd3fe1b68ca4237d141a81868f fix(desktop): hide pinned/recents sections until first session 281f764e2afaad0df52892dc33a063893bf695b4 refactor(desktop): drop dead boot overlay b3e7133da10e54ef455286aeea9483b462b9deec fix(desktop): top-align empty sessions placeholder 2d0aa1b7cbca750a27e38c4cb7d81532afae6324 fix(desktop): mount onboarding from frame 1 to kill the FOUT 83c23e88617c97ab5d3663ee8895eeda258a1eb9 fix(google-workspace): cleanup for --check-live salvage 617ac0535b191998b96979a48c7df2268670087c fix: correct docstring syntax error in check_auth_live 5fa493a2ca6a5899acc40026283d3f47303f5937 fix(google-workspace): detect disabled_client in --check and add --check-live 80775d758562821c4bd5ad6e2f26afa3d5223d5d test(auth): assert Nous refresh rotation payload b32461f6e864dddcd9c7e0a8976b4e4ca50616db fix(auth): send Nous refresh token via header 486b14b423e85120691e445df7bfc57f093459a0 feat(cron): routing intent — deliver=all fans out to every connected channel (#21495) 81928f03ab5841362e526df011e3eb74159aea8b refactor(gmi): move User-Agent to profile.default_headers 5d1bdf11b61d559b6d1d2b6e7626fa7d71a6f860 Add AUTHOR_MAP entry for Isaac Huang 7338e5d9ba94c1d90a644d0588ac003d1aaee350 fix(model-switch): prevent stale Ollama credentials after provider switch (#21703) ec1714e71f90691e1cf412796e9a4b4ba0d934f4 fix(install.ps1): handle uv stderr output with ErrorActionPreference=Stop 11d04d9d5efef4e835c6b36f089e1b535251c3ce refactor(desktop): tighten onboarding store + overlay da6b745fff39ddd6387a4ead1dd20a69f6045015 fix(desktop): drop onboarding tabs for an inline link, group device-code waiting state 726a1a97a78658f9ee7a96a712547fd1cca0e988 fix(desktop): external CLI providers + center mode tabs 37d1c57f8a0b3f0a82f2a06a5b884f6059ae2aac refactor(desktop): split onboarding overlay into store + view 85f30e07a5441b8b90c1d0291dd26492a34d24cc fix(desktop): polish onboarding provider list c5413c17ad79f81ee9a8a1aa540577c5495cd7b5 feat(desktop): OAuth-first onboarding using existing dashboard provider API 7d652fc4663dcfa4326d152343bd6c6e46917e34 fix(desktop): use strict runtime check to drive onboarding e31b74073beacb4204ff97c7a907aa88504eb44d fix(desktop): route gateway provider errors to onboarding c730a9976d139fdd6abf46a1b9f2fe3605bb3449 fix(desktop): surface provider onboarding from session warnings 0b5bb9f0b5e1024f2ab0781aa869a87fb572f447 fix(windows): bootstrap utf-8 mode at entrypoints 8d95e006b87a2c78f1793962e5bb9a3a5328dff9 fix(desktop): gate prompts on provider setup e0c03defd5ebbd7057d4e0e0d6ba771afa439861 lint: enable PLW1514 as a blocking ruff rule 89d5ee4b104533a10e0a8ce0da22b5a5b4d74784 feat(desktop): add startup and onboarding flow 9c914c01c8f0bb861a169f3a42f8cff690c8fa4c codebase: add encoding='utf-8' to all bare open() calls (PLW1514) 60982724545bd13aea50ff7ea7b6e535fb38552d hermes_bootstrap: Windows-only UTF-8 stdio shim for all entry points 31e3bdee9905e3f714c65aab5219c2a1755241f0 fix(windows): harden native CLI and TUI bootstrap bf43f6cfdd0a094acd49ff386a62016c4ec4a5f6 execute_code: set PYTHONIOENCODING=utf-8 + PYTHONUTF8=1 in child env f5ec30dfe6ef234a4917befb57f4904a2257d63c tests: skip POSIX-venv-layout tests on Windows 8798bea31fc8af2f8c94e2a9861d27702a513872 execute_code: write sandbox files as UTF-8 on Windows 668e4b8d7ec1158b37a3f5d630901e98236cca6b tests: lock in POSIX-equivalence guard for execute_code env scrubber fab984c7f8a1240332729f509b3a0daca50bb0a6 execute_code: pass through Windows OS-essential env vars f0d2516a30ab4de4f5d04fc146af195ae2ac25b1 fix(windows): prefer npm.cmd over npm.ps1, skip .py argv0 in relaunch fc9d18b03feb6ad7b32a7b8e75cc37621d762093 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 2e403bd0a416c9c5ae41d15deb59e3c74272d1a7 fix(windows): enable execute_code — stale AF_UNIX gate was blocking the tool 2c7b479d16b05bee7db163d37537621644e25b75 fix(windows): %1 install error, patch CRLF false-negative, SOUL.md BOM 225b57f31430e19545fd63d265b46ce765fb6701 fix(install.ps1): step out of $InstallDir before touching it + harden repo probe 4d7e72e14dd45d04988ff76271bf9de2dedb9e6e fix(install.ps1): validate existing repo via git itself + clean up broken stubs faa13e49f81480771ceeb55991bb0c27edf1a5fb docs(web): fix SearXNG env configuration 787d964ea173b0f523f445396add0f125cc23e12 fix(windows): quote cache paths in bash + augment PATH so rg/bash resolve on first launch 1bdacb697c6a5857a31287feb6eb55a23d3418d1 chore(release): add BennetYrWang to AUTHOR_MAP 34f7297359bb5bf38d0ad8c48574ea42f35111ca Serialize Hermes config access cf9b2df57a8089bd86f30f64a2df771858cf82ca fix(windows): use PortableGit (not MinGit), fix relaunch os.execvp crash, surface npm errors 307c85e5c1b0dd0ca0d94ec362976254cbd949b4 fix(goals): auto-pause when judge model returns unparseable output 03ddff889719c7be164c3d329f9903fdd55aea31 fix(gateway): defer goal status notices until after response delivery eeb723fff24679ca21ce7a5576aa9a54373a65bc feat(windows): close remaining POSIX-only landmines — TUI crash, kanban waitpid, AF_UNIX sandbox, /bin/bash, npm .cmd shims, cwd tracking, detach flags 1da89528e7f67a20d02fccfcd8b34a6b3fe8456f fix(windows-editor): default EDITOR=notepad so /edit and Ctrl+X Ctrl+E work 5486ad2f2ac57f3bde272ec94434d6e1c6727c8f feat(windows-install): bundle portable MinGit instead of relying on winget fda234a2101d02f3ffff8aee468972e22e17d03b feat(windows): close native-Windows install gaps — crash-free startup, UTF-8 stdio, tzdata dep, docs 7d66d30d774e87b49cbe48af20c9904c9befb97e feat(kanban): add tooltips and docs link across dashboard (#21541) 901eccc88eeeab2b9b2b1667dc25d02d3ae3db1b Merge origin/main and resolve conflict in nix/tui.nix 7f92e5506ec1a5f2a961d3d31fea1cc1485fd2d0 Merge pull request #20942 from NousResearch/austin/fix/personality b0393af38c3af06f7468073d5fc0470626f31dce Merge pull request #20805 from NousResearch/austin-feat-sessions-skills-menu 7f369bfe55255bffeb1629e0f66750c4da5a57cc chore(release): add hllqkb to AUTHOR_MAP for PR #21288 salvage c80fa728bd847885e175a3f4e2b8490cd0bb90fc fix(installer): set UV_NO_CONFIG=1 to avoid permission denied under sudo -u 292f4683667eb0bdf529db8f82bf26b526a47da5 fix(mcp): unwrap platforms key in channels_list d87c7b99e2a4c86b06368e5c3abf973a0f40f753 fix(analytics): prevent silent token loss and add Claude 4.5–4.7 pricing (#21455) d948b0c00d1491566123d7b50de4f381cec64b5c feat(trust): rule-based permission engine with allow/deny/ask rules d3acfeda03b1a7d21a08fdaf6bac2927d7e07bd3 feat(watchers): interval-polling watcher engine with watermark dedup cff821e2dc03e55e5b036d266ea38a8d39a2b938 docs: register triage_specifier in the aux-models enumerations (#21494) 2214ab1073162fd3784c4ca98c518fc4b29690ab chore: fix AUTHOR_MAP for johnsonblake1@gmail.com → voteblake 9076a2e74ef0a3d862312e205e03a693ba6dbad6 fix(agent): keep Nous GPT-5 fallback on chat completions 24d48ffb8294d6f13f0a6660dfff376d886d0466 feat(kanban): add `specify` — auxiliary LLM fleshes out triage tasks (#21435) 732a6c45fa66ba38f93a5469724a4b0ee4a5d697 feat: add termux doctor fallback guidance for blocked extras dc5ef1ac8ed9927bdf8e64749faa6b064f5c789e fix: add termux-all install profile and safe fallbacks da18fd084a0b7ac47883ad9b6f50ad511bf4d251 fix: strengthen termux install network prerequisites 54c0b10d14b394406494ad6d99b6888182bbf8c5 fix(update): add heartbeat during dependency install 04193cf71c2c208b747870f845c7c2539d50455f feat(web): add Brave Search (free tier) and DDGS search providers cdc0a47dd58321ef6fdc434908980a7a326b1813 test(hermes_constants): cover parse_reasoning_effort() 7e2af0c2e8727b3b01b974cb9bf8f0886ee00aac feat(acp): pass image file attachments through as image_url parts 733e297b8a5c7ab277db331672c206134587ffa7 fix(acp): inline file attachment resources 498bfc7bc12a937621b4215312049b1000726df3 chore: release v0.13.0 (2026.5.7) (#21406) 2564132a1f6c4cc5c452b74d07364ee086f985e3 fix(telegram): preserve thread_id=1 for forum General typing indicator (#21390) 812ce0b9878d1dc9ac1f7c419a620deeb57117f3 fix(run_agent): break permanent empty-response loop from orphan tool-tail (#21385) 1d2029b2b7cd2cf21a15ad54df05c68268b48998 fix(update): reset-failed before every fallback restart so the gateway can't get stranded (#21371) f93a5c03be8348d56c9d4fa1cb67c972f131dc6e fix(ui-tui): use lipgloss-style space-fill backdrop instead of ░ chars 61b502853fc2b39fd1b22a49f7a8e55e06d5b0fb feat(ui-tui): decorated character-fill backdrop for Overlay 5385b7573db811592b63085c431fd4eeb84c51b2 feat(ui-tui): hot-key 'd' in /grid-test overlays a dialog on top bc7b84f575d27ccb537eebbc539efef640e246ef feat(ui-tui): viewport overlay primitive with zones + faked backdrop 04918345ea31b1106d2ee6d4f42822f4f57616ee fix(cron): initialize MCP servers before constructing the cron AIAgent (#21354) 4de3ef38b1f0d2f8ae0e86f83455d7ff61795b2e feat(qqbot): wire native tool-approval UX via inline keyboards a1fe5f473d4d381a4452dcaf4dd2bbc77c19de0b fix(cron): scan assembled prompt including skill content (#3968) (#21350) bbff2f634575c4b14c968b2f4f171f2bfcfe5d4e chore(release): map maciekczech noreply email 162ad3dd1624e64472a2961440c688e80b96409d fix(kanban): filter dashboard board by selected tenant f4de3810efa640c1d2dfe9c190dd182cef37e95d test(kanban): cover dashboard select filter wiring 74c9c0eec903749443e4aa9ad1427d1859acae2c fix(mcp): gate utility stubs on server-advertised capabilities (#21347) 898b6d7d55bd1c340ebe7fe3cf91f86bc43d1a81 fix(webhook): widen INSECURE_NO_AUTH loopback check + tests + docs fb4f95356945e2ddaf0fe9e04541455ff92f1e3f fix: block INSECURE_NO_AUTH on non-localhost webhook bindings 5c08b851dfcc23508c8e435510d910f09ba8da31 docs(platforms): document env_enablement_fn + cron_deliver_env_var hooks (#21331) 5b121c6e358a4eb83ee3cb1ec2cfd1b8cae3c7b7 feat(qqbot): process attachments in quoted (reply) messages de584cd1dd4ed82a335a9dcd367406316c9923e0 feat(qqbot): add inline-keyboard approvals and update prompts 9feaeb632bd6d787ac3b1f555f0d057e9be0b448 feat(qqbot): add chunked upload with structured error types ac51c4c1ad09a98c8c25d0b05009b3f387fd183d feat(kanban): per-task max_retries override (#20263 follow-up, supersedes #20972) (#21330) ff0985323509b587063cfc3aaecf0625490d9a5f docs(readme): prefer .venv to match AGENTS.md and scripts/run_tests.sh (#21334) 145e8ec2372bbfe70783d10bee10e76fa29744df fix(pairing): enforce lockout on approve_code, not just generate_code (#10195) (#21325) 1baab8771ac89eefc663bc7776442460f2fda997 chore(release): add qWaitCrypto to AUTHOR_MAP for PR #21055 salvage 62c2f5d8d2a6a21adfdea2d8d1f28fd8f04b5dd7 fix(mcp): coerce numeric tool args defensively 43cf72a458881a6373ffd866f299ca4c339dcec2 chore(release): map donramon77 to AUTHOR_MAP for PR #18425 salvage be87a96296175a68ecbe221723673a7d4c4add45 refactor(plugins/platforms): migrate IRC + Teams to new env_enablement + cron_deliver hooks 44cd79e798e4aed6ee316f02e595b33cde7687a0 feat(plugins/google_chat): Google Chat platform adapter as a bundled plugin af9336d575ef680b49cf56f9ef6031968e6f5ce1 feat(gateway): generic plugin hooks for env enablement + cron delivery c8e3e3918509d4c43432ec2cf19ef6a1cfe9cd9c fix(mcp): surface image tool results as MEDIA tags instead of dropping them (#21328) dd2dc2bddf43d72e24e61fd306206c696298df47 fix(mcp): forward OAuth auth and bump sse_read_timeout on SSE transport (#21323) 4ee6c3349ab599d253e8be6dd9dd8f687a971d23 chore(release): map tuancanhnguyen706@gmail.com → xxxigm d5fcc8392212f7e67d7aa43d233f1157823f32ba fix(tests): avoid asyncio DeprecationWarning in event loop fixture on 3.12+ 12a0f5901cd0fc798adba374af0aefdaa0c7c34f fix(dashboard): finish resumeId -> resumeParam rename in ChatPage (#21317) e0a2b087681e98233e619ebbd073a9ee3d592295 fix(mcp): re-raise CancelledError explicitly in MCPServerTask.run (#21318) 5a3e5b23d251829629736641284bce2d5be7132a fix(memory): remove dead allOf schema block at the source 3924cb408bb1e133b22a2c9e848135c9e9c027ce fix: strip Codex-hostile top-level schema combinators 69d025e4a744c8e5968e9aab0c1a8679299840a5 feat(gateway): add allowed_{chats,channels,rooms} whitelist to Telegram, Mattermost, Matrix, DingTalk f5c9bb582c7c07d067fc74160e059a1fff458d40 chore(release): add CashWilliams to AUTHOR_MAP cd3ef685c4f472d3c43cd27db11aba1189a2e897 feat(slack): add allowed_channels whitelist config 6a4ecc0a9fdb857cd6ef93cf0ebce77250a2a290 fix(whatsapp): reject strangers by default, never respond in self-chat (#8389) (#21291) 76d2dcdc8e10e61599d070cdd0eae6cb6394852c fix(kanban): make code/pre styling theme-immune across all themes (#21086) (#21247) fc88eec926a90c11a8949a3d7e0b852cfdfb0c3a fix(compressor): soften summary prompt for content filters e795b7e3ab1df4dd1998f1eb4f77732396b4a69a fix(delegate): expand composite toolsets before intersection in delegate_task a78e622dfe5504dd7d08c5243f60ed00f6a1f08f fix(agent): honor configured model max tokens 52e277782127ef53ab7c3f08d5d0b199598b3f52 feat(dashboard): support serving under URL prefix via X-Forwarded-Prefix 6769060ae2e06d4e59dc361078ae82ffc320905e chore: AUTHOR_MAP entry for @glesperance ec9d0e26d4ed4e3fdbb4c7a27b6e542139d6d918 fix(tui): render structured content on resume 30c9990175b7cf3ec67149c78e0899b232fe4a74 chore: correct AUTHOR_MAP for oluwadareab12 (was mismapped to bennytimz) edbbc96b558f0d9da16150d8b48b4ac4f1a7e486 fix(cli): replace get_event_loop() with get_running_loop() to silence RuntimeWarning in process_loop thread (#19285) 2c1921241ca2bdcd2fe48b02f3a93f226cf41ad2 feat(models): add paid tencent/hy3-preview route on OpenRouter (#21077) f9b4b8af3410e13ba002129e25c3f212568ee031 fix(mcp): include exception type in error messages when str(exc) is empty f481395d4c39246a68c434a7d90f505168481584 chore(release): add subtract0 to AUTHOR_MAP for PR #19935 salvage a1f85ef2b987a79868193b741f647eb4d3fd9182 fix(mcp): retry stale pipe transport failures 8ad117a3d6233609d2d67b9f77d43bc39d41accb fix(models): add alibaba-coding-plan to _PROVIDER_MODELS curated list 33563df0273e69cde50d77f0e6301b8388744e85 chore: AUTHOR_MAP entry for @paul-tian 4d4807585ab879c9812deac026188510ad5ede44 fix(gateway): honor configured goal turn budget 0efc547962df99a15f9cacff65f513f70520e7f2 fix(gateway): consolidate runtime-status writes + rate-limit failure logs 5d9061148fda8963a01a269022b5f93ee1609051 fix(gateway): log platform status write failures instead of silently swallowing 755b74fc2d279069eb6fe489b77f4136fd33918f chore: AUTHOR_MAP entry for @LucianoSP f7b71aa0daf4acd56dba7e9c6aee1aa8cfe477a1 fix: use configured model for gateway auth fallback 8aa30407c264ba553408625964176cd08d7914ec chore(release): add masonjames to AUTHOR_MAP for PR #10439 salvage 80548f9a4fd1f33edd67c9ae415176a6b3666afc fix(mcp): report configured timeout in MCP call errors 25187ca05cda20bb6476cf89914f93f3952a1bdc chore: AUTHOR_MAP entry for @hedirman a9ebee5f02b5148ceb9fb540eea58954d04e160d Fix WhatsApp long message splitting 4d32f40306aa632b4dff6f5368c93016e5cd1831 fix(gateway): include exception detail in bootstrap warning output 926402dd13abdc0a52ed69bd38adced2b44995d4 fix(gateway): surface bootstrap failures to stderr instead of silently swallowing 5909526a06f2b894d4d769ab7cb8afce7221b0a4 fix(security): support SRI integrity verification for dashboard plugin scripts 46d1fc16ab98b41ad6b4c9100753ee44b5d54d35 chore(release): add AJV20 to AUTHOR_MAP for PR #10287 salvage 9575bce6ca95c0fe088e04f1abfaf4009a1d3e12 fix(mcp): clear stale thread interrupt before MCP discovery b7a97cd44f203b40ff5b7f84bf37bad3b3919d73 chore: AUTHOR_MAP entry for wabrent 98ca0694d6fd7f13adb3a0bc536fe44f0f24272a fix(gateway): log agent task failures instead of silently losing usage data fcd619cae4e92b4e558c1788b78b93099a4fe16e chore: AUTHOR_MAP entry for @kowenhaoai a9c7bdaea6543c2addb45cfafbe14b587245c34b feat(image-gen): honor image_gen.model from config.yaml in plugin dispatch b739fcdfcec2af8e5dba17f8abd48ab6ff54104e fix(security): require explicit allowlist or TEAMS_ALLOW_ALL_USERS opt-in for Teams approval buttons cfe019c7827534bd11c6b2f819155a4d9d764c00 chore: AUTHOR_MAP entry for @acc001k 5533ad76449557ddd610aca7b200172cc5ef6798 fix(auxiliary): enforce Codex Responses stream timeout fd13b7d2b9104ecfe8d098ec0ebeca64bd4243d7 chore: AUTHOR_MAP entry for @agilejava 6ea4a6a740ae66183490059c214b775847a82009 fix(vision): Z.AI vision model compatibility — endpoint routing and max_tokens handling fa582749e16523d46998043c1bfca9ed3d81a4f6 fix(kanban): restore Enter=submit, Shift+Enter=newline in inline-create textarea b93c9f6393810657fbc12847cc98c99c938ad99e feat(kanban): convert inline-create title input to multiline textarea 498c01406fce45c0f64b3474bbbc210bc3dafed7 fix(docker): chown runtime node_modules trees to hermes user (#18800) 2f2f654486f95e74d9a6d63670e01df324bcf590 fix: add dashboard to CLI help epilogue and Docker CI smoke test 4876959a1957bb3a2340499072089ddb5a73b0bb fix(auth): shorten credential 401 cooldown f648c2e3aaf6b83220302670c1529a6bef3a63d4 fix: use max_completion_tokens for GitHub Copilot d12be46df8753931c21946fc0b0caccb83ff2209 fix(skills): lock usage telemetry updates c2d6b385f19d812ca9e98d4746234fcb94beb11f fix(windows): terminal drain and cwd path conversion for native Windows 7244a1f0d3c17631661fbf103440a3790ab0bab9 fix(weixin): wrap long copy-unfriendly lines a494a614d03e9fbfba51827f040a59faf2f5a62b fix(tui): avoid main-screen scrollback reset loops 31f22890eaf15fe6fb027a8335335e98ad7e8242 fix(matrix): defer reaction cleanup redactions 8cef1491314589041a7896a86eb8a05bbeeb43dc chore: AUTHOR_MAP entry for @stevenchouai 9442a8fa22e58edeeb0dbff9dcea9a6727b84b18 fix(update): migrate config in non-interactive updates 84287b0de8dd5d2566d8dccffb6ed3f1fdfb5ec0 fix(docker): refuse root gateway runs in official image afbcca0f064b6730b8d5073c89751e1f1e319dd7 chore: AUTHOR_MAP entry for @shashwatgokhe 5cf703245bbce4b8cb34fbfb42571bfa50c4c00e fix(image-routing): sniff magic bytes for image MIME, ignore misleading suffix 5ead126709a7b22113f3949d4095391169c3f62c fix(doctor): retry DashScope China endpoint 14f38822fa56a740899afa1d0b1f2df8c90cb422 fix(models): prefer image modalities for vision routing 6e46f99e7e8e4d5c843cd33afcb6547c2f54b54b fix(tui): surface backend error as visible text when final_response is empty (#21245) 8dcdc3cbc299d09d868556d3ed526b518c9e292c fix(auth): keep Spotify logout from resetting model config 2021c186551c406be1158ec394cd6f7f3f0f9be0 fix(agent): drop terminal empty-response sentinels e73508979f23d220eae5c378d714b150b8748580 fix(agent): avoid persisting empty-response recovery scaffolding 80717a157f9cc7d747b0a3229346ec4f26d0c393 fix(discord): route DM role-auth opt-in through config.yaml (not env var) 5c045b8f6ca5d6ca682ea9a7e56bad68fe0d6143 fix(discord): extend role-scope fix to slash surface + fixture update ef1e565570a056081cf91576ab4ac7f3a72d3b58 fix(discord): scope DISCORD_ALLOWED_ROLES to originating guild (CVSS 8.1) 8308d1833935c372b4d79f181baf8165ddcefd91 fix(gateway): preserve max turns after env reload 2c14d3b9b01591f4ccd13cdc3f34c327d3e51cd2 fix(tui): refresh scroll height at cached bottom 5b24c0fa853752ef1d21c3ab8e207a7345113f87 fix: require memory schema fields by action ae1f058b3c56b8aa43254382b7e4059cc4b07f63 feat(curator): add `hermes curator list-archived` command (#21236) 47bf5d7ecbc1fd3cc8eec58b1c4ee5d45b405d75 test+docs: cover transform_llm_output hook + release author map c3be6ec184e0f17a184eaff1018051b47a89eeb7 feat: add transform_llm_output plugin hook 6e250a55de501f3f5660ab6ce56939e50926f9b9 fix(openviking): add Bearer auth header and omit empty/legacy tenant headers (#21232) b12a5a72b0fc2d860dd522dd6dac3395b801ec71 Follow latest child session on dashboard resume e9685a5cf774685a992ea3ecd6f8f8f34674b4ff fix: avoid unsupported anthropic context beta by default b9f1ac8c10224988bbacdec20715d52e426f1da8 fix(kanban): make dashboard board pin authoritative over server current file (#21230) 647f95b4224c1f5ef566d378172171a25063b4f5 docs(contributing): align tool discovery and test runner with AGENTS.md 0d3593e514e05430f4ea8c167c3ca4ce484ac04a fix: WhatsApp bridge process leak and disable config asymmetry 0214858ef5fb0f5577c2ff26ff8f7e3178103837 fix(browser): enforce cloud-metadata SSRF floor in hybrid routing (#16234) (#21228) 12289c2630548b35575e289ba215a4541dd8ec72 feat: add SSE transport support for MCP client c4a7992317bd6d6840785af838d96a1e89642a53 fix(mcp-oauth): persist OAuth server metadata across process restarts (#21226) 3c439ec6812d766bf94b61188e234fb640caa889 feat(gateway): add `hermes gateway list` to show all profiles' gateway status 61d9e3366d65f4dc628d9a96f10adf773df98e49 fix(model_tools): log plugin hook exceptions instead of silently swallowing them fe4748ede88da3143c08657233c6242125fe5fcf test(kanban): regression for CancelledError swallow in stream_events a5f116fc3f27d4b801c282771691243f4e5cb98c chore(release): map SandroHub013 email 36ad97337a4ac1ef85bd292509e0b717ca74e7b2 fix(kanban): treat dashboard event-stream cancellation as normal shutdown 43a66457186c2297bbe1eb65d38a7fcbd8244656 docs: clarify API server tool execution locality d8d57fb2f6e7aedfa87d05c2cb9114e4c7945583 fix(install): remove uv exclude-newer cutoff 6b3a9b4bfab255263f75bd9768bd56a882dc5a35 docs(curator): update CLI docs for synchronous-by-default manual run 6b9f7140bbfd1c464ec991bb4afbc723cf418f92 fix(curator): make manual runs synchronous bda7b240b412d3e00f4287a11dac0d2ff6a4552d chore(release): map altriatree@gmail.com -> @TruaShamu 3a82172dd5804e765dbfbfcdabc0b81119165506 feat(tui): surface compression count in Ink status bar f5a232af840081d97018e129f71e8b9b6ffb24c3 refactor: replace 'cmp' text with 🗜️ emoji in status bar 103e11926f2211f5662dac3cba0e458a00db3310 feat(cli): show context compression count in status bar e38ea38079b8683fba48a245c19ff5a2a8f50d39 fix(credential_pool): resolve key mix-up when custom providers share base_url 3c8154e62c7da632c4662b5bd78653e7fc45dcae chore: AUTHOR_MAP entry for @GinWU05 6d9b30632df3cdd68353d467d47e7e1079bf1985 fix(cli): honor positive tool preview length eef23354a5ba80977eb15c62fc95786782627cf9 chore: AUTHOR_MAP entry for @nouseman666 7cbef2bd4286678dc0d292f86c0e2145ce0ca2af fix(dashboard): route browser wheel into inner TUI scrolling 8aceef539fa58ed286614a883f2e616775bf8e84 fix(dashboard): let embedded chat use a single scroll system a0758cd1e9dc9e263d3b79067cf2d4955f7d2894 fix(dashboard): stabilize embedded chat resume and scrollback fdb9e0f6a65e77f795d32cd782520622a150301d fix(kanban): auto-block workers that exit without completing (#20894) (#21214) 699c770e5c0649ef3546da0ec2554a9898a8553a docs(readme): drop misleading RL install-extras claim, defer to CONTRIBUTING aa9a2091f649d53de74a6bc366294ad898ec8ce1 chore(release): add AUTHOR_MAP entries for ggnnggez and ehz0ah 2b6345cee302cfd6f2def3d9ac4db411d8f74934 fix(memory): harden OpenViking local path uploads 187951ec6b88c982151776c76adbacc53f6e93ae test(memory): harden OpenViking local upload coverage 7137cccbd134bf2b349af6e23f9af63f18550eaf fix(memory): support OpenViking local resource uploads abe5a3c93750883e0d01031304061c1579003426 fix(model_switch): live model discovery for custom_providers in /model picker 4e27e4e05a8700c090c9fcca5cf320e9a9343700 chore: AUTHOR_MAP entry for @leon7609 e82f3b0c41aba31a72103cc18229383981e72d0b test: update send_message_tool mocks for force_document kwarg d34f03c32a28b786f2a385d9c29342bb42814210 feat(gateway): support [[as_document]] directive for skill media routing 8d363f8d54bad14ab8f4f6ffcfaea11501904e4e fix(bedrock): preserve reasoningContent across converse normalization f0dd5b9c10e28319f6f04a4e83887fe68ec7827a chore: add discodirector email to AUTHOR_MAP 4f364c4e99d46a0c50d3ea1d5ad179f54348f9f7 fix(mcp): give 'mcp add --command' a distinct argparse dest 333598cb0e2e7e908450ad8ee02553d9319d2494 fix(gateway): cap cached session sources with LRU eviction 176b93575af35b24ae79f5aaa1aa499ac2320280 fix(gateway): preserve thread routing from cached live session sources 5bf12eb44aec044bf359862e77d4750f1e4e12db fix: exclude hidden and archive dirs from _find_skill rglob 69692039e916aa152989e7732d4268b4c6641e20 fix(delegate): correct ACP docs — Claude Code CLI has no --acp flag 042eb930e212da477bf1bb03fbd9d5d1f1e82ef4 fix(security): close TOCTOU window in hermes_cli/auth.py credential writers (#21194) 991df4ef81407a7046413a0d3701233f063fb847 chore: AUTHOR_MAP entry for @likejudy 8b32a9d0f1705a126d838e2ecac173de7960b87a feat: add Discord message deletion action fb1ce793e6ad4751c4fa5b53bab217bc04a9d28b feat(security): enable secret redaction by default (#17691, #20785) (#21193) d856f4535d336ccac8de78f56e17720514bb4582 chore: AUTHOR_MAP entry for chenlinfeng@ruije / @noOne-list ecaafe5f22599c9eead0df4975349a242e8fe746 test(weixin): update timeout assertion for asyncio.wait_for migration 3a0d52d57992249cdc06e6469a94d9dead13bea3 fix(weixin): replace all aiohttp ClientTimeout with asyncio.wait_for() 2e00bcaaab091679072ae765fe9f316196e43fab fix(oauth,gateway): monotonic deadlines for polling/timeout loops 6e8f1e09a995782581e6e8015b40f592d0392ed2 fix(gateway): use monotonic deadlines in QR onboarding flows 73d637176240f1e390d8b2d6550aae05971391a2 chore: add AUTHOR_MAP entries for thelumiereguy and counterposition 8a96fa48c10d7c06db07b70d53b2b489e9add2a3 fix(gateway): avoid duplicated responses history 429e78589b63247969f7ca88311a1291285a2a46 refactor(auth): dedupe file-lock helper; document Nous lock order a84e56d4c662770798584a79d34260fb86c6600d fix(auth): sync shared Nous refresh tokens 38b1c7dce558f7ad1077b89e1efd3217bf8d6c69 refactor(gateway): simplify auto-resume + extend to crash recovery 961a3535fa375c630562f3e16f8051959d34fb20 fix(gateway): preserve resume marker on interrupted restart fad684b1f35baa20b2b01556e50bec24ce6ffccd feat(gateway): auto-resume interrupted sessions after restart 233bfd3621f160d7c3f511bb72d29a30c37c93d2 chore(release): map mwnickerson noreply email 411cfa26e31daf198355f5007229483fc92a6eb6 fix: auto-block repeated kanban retries 595e906698c164d1b0e88148e8e1c38bc45902f8 chore(release): map sonic-netizen noreply email b49a3f84749926066511fa32571b6201026e7c0d fix(kanban): reap completed worker children in dispatch_once 06f24351c57666e5a15de8ed7b8743b694b5a809 fix(kanban): stop reclaimed workers before retry 63bd690a50118d2834570e5c9a0e962b1cf614fc chore(release): map stephen0110 noreply email 40b51c93a2d9bce63d656ccb3751e624711e6e3c fix(kanban): heartbeat tool extends claim TTL, not just last_heartbeat_at bf843adf05b84f42930a5d1e76e2bc4c20a84645 feat(gateway): opt-in cleanup of temporary progress bubbles (#21186) 7c0766e06ad87fee014499e42f28c9393e7665e4 fix(gateway): translate inbound document host paths to container paths for Docker backend d4de7d41792c84ec09f55848914613ff1289edcd test(skills): cover additional rescan paths in skill_commands cache (#14536) fce58cbe2e02728377935e5e329f34b61474c1de feat(optional-skills): port Anthropic financial-services skills as optional finance bundle (#21180) 11b9b146f111e45c9349c622c7a65ea3e7629518 fix(image-routing): expose attached image paths in native multimodal text part 1f27ca638fd7d9ee5e8725d610ded481cc7f8af6 test(update): teach restart-mocks about the post-update survivor sweep aa5690342b8016b1bcd4c330a48db0a44f5045ce chore(release): add Gutslabs to AUTHOR_MAP for PR #21148 salvage 7d36e8346bbecec59085e7a37a6bf08d8eb45ad4 fix(security): close TOCTOU window when saving MCP OAuth credentials a5c9c83b7861c4ca5529e8a327b93e0d50fcc667 fix(web): force light color-scheme on docs iframe 595bcc89fc8c0e0891193180df27939c2d1ccd2d test(update): patch isatty on real streams to fix xdist-flaky --yes tests 033e533d0545800e154399749595cf9b2442418d test(docker): align Dockerfile contract tests with simplified TUI flow e7eb07cec7ea43bc8a7f37a6d50141c9e21392c8 chore: AUTHOR_MAP entry for mrcoferland bd0c54d171efb8a31644df570b3b6a95826e8731 fix: route Telegram image documents through photo handling 51f9953e69d303c3d278e41295b1a5c786bf8d87 feat(profiles): --no-skills flag for empty profile creation (#20986) 2af14bd401af8246131a4251c2945bff41c6bb4a fix: self-review findings — logging, create_task, get_running_loop, benchmark path aef97da6d483330d2ca89a52c8af451929381296 perf: reuse supervisor's persistent WS for coordinate clicks (23x speedup) 451c55bd9c01b2800cb76ddaf5c57e964956300b perf: session ID caching + skip mousePressed ack (browser-harness/Playwright patterns) 0bfab1d361880ef3c2f2164f19c2f011f1d44902 perf: batch CDP click into single WS connection (2.4x speedup) ff8c6f2d64cddbe0dca1006910f1209e6f44bf04 feat: add compositor-level coordinate click to browser_click 49c3c2e0d37c96dc593a807a5e81fdf4f0aa3d85 docs(kanban): fix worker skill setup instructions too (#20960) 45cbf93899a9f9f1e96c8b85d9192b452e6459d4 docs(kanban): fix orchestrator skill setup instructions (#20958) 5a3cadf6ebcb749f1ad69e73cecb5aad9af0400e fix(discord): narrow rate-limit catch and move sync state under gateway/ d797755a1c17566b0aef4d77548a4b460142d26a fix(gateway): wait for systemd restart readiness f3d958f482d476d45a19dea7efc03f423da760df feat(ui-tui): make widget grid composable + drop into TUI surfaces eb1896ef209f4d5712b4b1e06896804b19a2a897 Port from cline/cline#10578: enable cache_control for OpenRouter Qwen/DeepSeek 07e0bb8aae98691ac61bd94ccebf0643c99ec44a feat(desktop): polish composer pill toward reference look 65c762b2e83ea39f5cda56a6abf737c3c864b188 fix(tui): preserve session when switching personality 3cdbf334d5074aff0de857c0f94f278f06745e6b fix(gateway): don't dead-end setup wizard when only system-scope unit is installed 04cf4788ccc05003785992682e3cb25205e509cc fix(tui): restore voice push-to-talk parity (#20897) 5ccab51fa851d258da69ab12912657ec14bf3bc8 fix(tui): steady transcript scrollbar (#20917) 53a024994affaadea182b32e43ddec919191a3d2 Merge pull request #20890 from NousResearch/fix/docker-push 2b4062f964473b0314b734595786a15db010460a fix(ci): upload artifacts for lint-reports 1dba69095d1fc3d5a78673ca030090fee688ead6 fix(ci): diff typecheck fixes against PR branch-off point c96eb06dc43d79f2e62bd8b535507d8ee77d8a4b fix: TerminalMenu returntype is int when multiselect is false f6cfff4ac6f205b1cbca0fe52f4fe5d548a322a9 fix: bad import of DEFAULT_GATEWAY_RESTART_DRAIN_TIMEOUT f1a8e99942e6150d5785bdd734c4d9ff63dfa7f7 fix(tui): honor skin highlight colors (#20895) da6019820a916ff7b6b89fa0fba2cccf700554d6 fix(tui): refresh virtual offsets after row resize (#20898) 5044e1cbf135af1a999935c6d141e137d60d5d1b fix(cli): submit LF enter in thin PTYs (#20896) d8b85bfd1c9dd207acdf0b23d181343ab396d974 chore: add guillaumemeyer to AUTHOR_MAP 7df6115199278f415bd3d3dacf439e467341245c feat(gateway): also gate pre-restart "Gateway restarting" notification b71f80e6ce2af7a75e319170340dec9d64461576 feat(gateway): per-platform gateway_restart_notification flag 33bf5f6292f49f109f11fb9c035afae6dcd356e3 fix(auth): fall back to global-root auth.json for providers missing in profile d514dd40552c6747eb465a539d5991376125c709 docs(tool-gateway): rewrite as pitch-first marketing page (#20827) f4031df05dd457ad6ae17aff6a89848384447013 ci(docker): don't cancel overlapping builds, guard :latest 81d4316b4a6f99049b92ba0c10303c48687df745 Merge origin/main into bb/gui — resolve server + docs navbar conflicts 946ef0ea19c9b898037f5e6178d8961ab260f079 fix(tui): bound virtual history offset searches a345f7b6e56b8f497608089ddf2a7c80997c90c9 Merge pull request #19908 from NousResearch/typecheck a2ff193050b8054b52f3bffd4139333a60058be7 chore: follow-up cleanup for Kanban migration fix b1d420e75f42560738ed69d230a62feb1f7c7594 fix(kanban): avoid fragile failure-column renames 28299afc21a37784d93b90924317f004ea2298af chore: follow-up cleanup for Feishu topic thread fix 441ef75d157d6308a9f14d42a7b0ec8566866ef8 fix(feishu): keep topic replies in threads 48c241840aa21a9b727a7efde4e4e371416d9ad3 docs: add Web Search + Extract feature page with SearXNG setup guide 94016dd1aa7eac05765bdebf8de0838d76402dc0 docs+skill: add searxng-search optional skill and documentation 5c906d70266c1bbce88fd227ea98a3f7646551fe feat(web): add SearXNG as a native search-only backend cd2cbc73b7c56f0c19f41a6bb21808239078653c refactor(web): per-capability backend selection for search/extract split 6388aafbd6cbfd22c26036291d884d4055b5f6bc feat(dashboard): add 'default-large' built-in theme with 18px base size (#20820) a24789d738b1074786f58952e299818b41da596e fix(opencode-go): keep users on opencode-go instead of hijacking to native providers (#20802) 09a491464c5fa10da01d33cd810e3ec2cc4241be feat(tui): add /sessions slash command for browsing and resuming previous sessions 773cf48c50b468f25c9a46495218b43edac137f9 docs(plugins): close the gaps \u2014 image-gen-provider-plugin guide + publishing a skill tap (#20800) ad7aad251c60cfe36bb2247603a34a958b9cdbc4 feat(skills/linear): add Documents support + Python helper script (#20752) 9627ee70e57a22bf9410f1f6f6aa2d2c386c4de8 feat(ci): add typecheck (warnings only in CI) 63c51d89628a6a8658591fd1dc2c2099c7d9c9d5 change: enable ruff/ty b62a82e0c3fbcdf219824c1512de180bae8a125c docs: pluggable surfaces coverage — model-provider guide, full plugin map, opt-in fix (#20749) 90a7adcb2e90a7ac744d51a86cdde65f7733cdad docs(wsl2): expand Windows (WSL2) guide — filesystem, networking, services, pitfalls (#20748) 3ce1233ae49a164162fa561ea5574f807cc7a286 chore(release): map cleo@edaphic.xyz → curiouscleo 906881c38bdd4494420bd557cb17986e347b29ee fix(cli): catch OSError in _resolve_attachment_path to prevent ENAMETOOLONG dropping long slash commands a0fedfbb1b7eab8db6c8aaa187f8c35cbf12f3e2 feat(checkpoints): v2 single-store rewrite with real pruning + disk guardrails (#20709) ceb467b6a9b78fbd50597c1a744b745ebe379e8b docs(plugins): cover every pluggable surface in both the overview and how-to a7129479664f206f97c308e387d34edc3c4c2701 fix(telegram): expose kanban blocked notifier helper 8d7ba19f7158d23cb5635c2ac1444ebc42f0faf9 fix(kanban): filter dashboard board by selected tenant 485a1d06b3a9e400079f02dcb65051d2f92ae52a test(kanban): cover dashboard select filter wiring 6f8dd5844ff5103f87838cf1686bfc5e77cfdd88 fix(kanban): preflight missing Codex profile auth e66e1d0417d2fcbdbee7fb32f428c5c03eee2f9e chore(release): map maciekczech@users.noreply -> maciekczech 8026e5f54cc17e798614fd35c0eaf6f0d61799d6 docs(plugins): expand pluggable interfaces table with MCP / event hooks / shell hooks / skill taps b045e7a2ba2ef6a1449b459e03a8a701eb9c46f0 feat(skills): add shop-app personal shopping assistant (optional) (#20702) a401f8172b764b3c15cef2f3e1a1f93c74bdcf27 docs(plugins): correct TTS/STT pluggability \u2014 they ARE plugins (command-providers) c7f5ed44749b29d31fbd4c445e547f37b28510c8 docs(plugins): add 'pluggable interfaces at a glance' maps to plugins.md + build-a-hermes-plugin 76074d9ee6e4d0d2688ae154acda15dbf0a3e287 fix(cli): recover classic CLI output after resize 17687911b7c57a2357123c05ab3265d820b5e6d6 fix(kanban): reset code element background inside board b1e0ef82f6a7631b14ab94583a89ab6c51f989d2 chore(release): map liuguangyong@hellobike -> liuguangyong93 c01a050eac8865454e2a23cb08aaf33d9e5c3d3e fix(kanban): reset code element background inside board 244cd59c7357ef01cf5e441faa9dcab20ef6241b chore(release): map liuguangyong@hellobike -> liuguangyong93 d69d65ad005fe9078c03b04d4b1e73601e51f826 docs(providers): add model-provider-plugin authoring guide + fix stale refs a0556b861f2667a49ded048c9cfac88defff8c5f fix(tui): restore gap before duration when verb segment is hidden ca5febfed1429ad0e2b1565cfac48b079f5ff94d fix(tui): stabilize FaceTicker elapsed width to prevent composer drift e45df2e81ec818d2fb6767c0ba4eb29ed573a799 fix(ui): reduce status-line jitter while scrolling a869a523eec4d73221f26b31e97e2d1d8546916a chore: AUTHOR_MAP entry for adybag14-cyber 043a118d4128e51480eb228d5085ad0366150c8a fix: harden install.sh against inherited Python env leakage e70e49016fe25bdd0db3b0086e0e0403daeaa834 fix(cli): guard logger.debug in signal handler (#13710 regression) (#20673) a6f5f9c484ae63950d600f6c005b055499db62e5 fix(update): drop pip --quiet so slow installs don't look hung (#20679) 466f3a11de47b50a65230cfb019265603a5adb01 fix(gateway): preserve model picker current context 629d8b843d8d8507925fd35344f57de776cb1490 fix(browser): tighten Lightpanda fallback edge cases 68162eb18fca0d8dc8dbf4dc1572fe14daf253d9 fix(tui): collapse long system messages in transcript with expand toggle d78c34928fe9fd56c4506861a87b4134be20b448 feat(tui): collapsible sections in startup banner (skills, system prompt, MCP) 3ebdd26449dc3d4f5c92e1af96b880d2ddc067d4 fix(browser): surface Lightpanda Chrome fallback warnings 395dbcc873c85b8873f4e36ff91b87c739bed242 feat(browser): add Lightpanda engine support with automatic Chrome fallback aa88dcc57b1717cbcfb80e4eca580a3a77056702 fix: salvage batch — compaction guidance, memory authority, cache eviction after compression 0d1cbc2dda28337c4049337b5a90beff766fe6be changes from feedback f27fcb6a82b8487174ca941c15e7a5887371eede feat(models): add x-ai/grok-4.3 to OpenRouter + Nous Portal curated lists (#20497) 477e4a2fe6d0cb82fdb689f2302e58b4e9e1d566 feat(models): add deepseek/deepseek-v4-pro to OpenRouter + Nous Portal curated lists (#20495) e598e18529c02116da5716728d48697f2c82a129 docs: document custom model aliases for /model command (#20475) 39f451f5ada6546a12fefd97397faca189d0169c fix: add Turkish locale references in config, tests, and docs 985133852a22863c3995424c657fd8cf4ac2938f feat(i18n): add Turkish (tr) locale fab3ad977792b268b066b370de08f29a935e4737 chore(release): AUTHOR_MAP entries for suncokret12 and mioimotoai-lgtm a49670c21b3deb8384fd2069142be2040aa71187 fix(kanban): wire dependency selects 3f972974133659a366f5d63b01423a4709c507b3 feat(kanban): surface task_runs.summary on dashboard cards + ``kanban show`` d2c6eceed98d2f276240553269f630c952e022c9 fix(kanban): prevent child task dispatch when parent is not done 8a1a42d0985631e267361921aac6020e9ccb0323 test(kanban): backdate task_runs.started_at alongside tasks.started_at b28ab4fc3fab1725be11c86c44ec0b09c32557e2 fix(kanban): measure max runtime from current run 6d302b340e99e85e417f1bcc7d7aa498066ab2b4 fix(kanban): accept created_cards linked as child of completing task eda326df160acf94c9aff362c86504391265b4ed fix(doctor): report Kanban worker tools as runtime-gated f0b95cc93dda1ee42cf587d1b0b6de7dd707f05d test(arcee): cover Trinity Large Thinking temperature + compression overrides 2d4eaed1117caccd98f34a9f48684995a6e313df arcee temperature + compression 735349c6798864f0a250ccf410f17b9ef860473c chore: AUTHOR_MAP entry for olisikh c4b287ba539de06f79b867319568a4aa8c02a5ac feat(i18n): add Ukrainian locale b6c53ef0beb4643fe809420704b2055628a89dc0 feat(hooks): spill oversized hook-injected context to disk 0d41e94ca99ca873148081e597fabf5d339f267b feat(i18n): add French (fr) locale support ee8edd41697d8d99b2828d76c0378cc37341c1dd chore: AUTHOR_MAP entry for bogerman1 3188e63b05a1902baecfcd7c30da3301d74b8737 fix(api_server): SSE token batching + error handling for Open WebUI performance 3082fa0829e0df4ce682358481fb59275b31a46e feat(hindsight): probe API for update_mode='append' support, dedupe across processes 1efed67056b890ba130e568925ad5bf069a623ff chore(release): AUTHOR_MAP entries for momowind and misery-hl 56b4795115e309b8d65bc68729fc591e90e6ffaa guard kanban worker lifecycle by run id f0d278412f8c14e94a11678be424f6a6ddb79fa2 feat(gateway): respect kanban.max_spawn config to limit concurrent tasks 0b9cbc8b23fc922b0317d788806f5a8270370f56 test(kanban): cover metadata handoff round-trip 50ab0a85a7472017a26abd7794103ddffed3d450 chore: AUTHOR_MAP entry for formulahendry 0d945d1541eece83efa3f19bf9fc3550e55a32e6 docs: update VS Code setup instructions for ACP Client integration f97d022149043ac92db49fce9f4900cd16b1c764 chore: AUTHOR_MAP entry for zhanggttry 05cdcac36240df5ef1348f7f527cc3e1a341282d docs: add Chinese (zh-CN) README translation 74e4f5f97aca5471cfa0b595aa94e1a10e5f3b4e docs(i18n): add zh-Hans Tool Gateway, image gen, and Windows WSL guide a321874ab45a452b6d52b01ff00eaf0bbafcc2cc chore: AUTHOR_MAP entry for liu-collab a11234dd68107228f7f4c9f2b8c3eea3de7aa31a docs(browser): document WSL-to-Windows Chrome MCP bridge a860a1098fe7196c449be7a28420fcbff784c60e chore: AUTHOR_MAP entry for acesjohnny 1c42d8ff5307849b3c450a5536f641739e220227 docs: add Open WebUI bootstrap script 92a08c633f1085143d24a4e834e24aeb4751acac chore: AUTHOR_MAP entry for binhnt92 9a0a4c5831256551394c3ca99c3913653ea53691 docs(guides): add guide for running Hermes locally with Ollama 1fc8733a698664441d923408f66eaa307d44dd9a fix(kanban): unify failure counter across spawn/timeout/crash outcomes (#20410) 587ef55f2c551430f21195a14b7d8d4c89c9babd chore: AUTHOR_MAP entry for xsfX20 144ba71a33344a9a936da48f612fe39e548d67ef docs(faq): use messaging extra for gateway deps 391e3fff56766a73e7105c278b42400b47a63d3a chore: AUTHOR_MAP entry for Hypnus-Yuan 39560c948dee11244b6df7b11050537f3eabbfd7 docs(voice): add Doubao speech integration examples (TTS + STT) ca8e68822d997ad6dbc7984a1ff30cdd17c8b9fb docs(codex): clarify OAuth auth prerequisite f13b349b9a8a901072fb26b970b96c2771cbf721 docs: clarify Telegram group chat troubleshooting bb2b129549976a461664e3f96691fe20cfa671e3 chore: AUTHOR_MAP entry for Fearvox 5bd75c73ed635ace31897c24b82e297d5901c5a9 docs(kanban): document handoff evidence metadata 79902a02782cf04b2c38d9b72533ca2c0e32f468 chore: AUTHOR_MAP entry for counterposition 15be493055eb89d97d1faff9ff890996da0e2737 docs(skills): modernize Obsidian file workflows 5f8e59b0f1f0d1ebc1b5ea021fe3da3371f31fef docs(discord): fix Server Members Intent + SSRC-mapping drift; add /voice join slash Choice 1b1037171b98e0ef060c129665a57a1da2a516e7 chore: AUTHOR_MAP entry for CES4751 de0ac21fffe60f733c63bbe5e46578c73332b121 docs(docker): document API_SERVER_* env vars for exposing the OpenAI-compatible endpoint 398efdb0fa81dbe3e7fc1b6281f26850da4b8552 docs(docker): add section on connecting to local inference servers (vLLM, Ollama) 80c579a9dddec525c04f618e1d6c6bd3b7343490 docs(skills): explain restoring bundled skills 3beef5782530507a8663696300c76f62e5cc2451 docs: refresh stale platform/LOC/test counts; clarify gateway vs plugin platforms dff5dc34ce0a265b4735276a07ec6058c1a10c11 Merge origin/main into bb/widget-grid-slots 7cc00087e771d283447b14898a37bb5f1c5329ce chore: AUTHOR_MAP entry for deep-name 0df80f439155a2ae150bb63bd43437a538929366 docs: align terminal-backend count and naming across docs and code 8fa5a037524739289937b7189f95036d53b952f1 chore: AUTHOR_MAP entry for jethac b1476c76f68db7bbf19e183388da99f8f4b24adc docs(gemini): add Google Gemini guide 794f48766c7e984236ec993e26b0da1c2586448b fix(tui): close slash parity gaps with CLI (#20339) acca3ec3af7ebe99f520bd8f3d1e84f6447b57ac docs(providers): Together/Groq/Perplexity cookbook via custom_providers af312ccc97152ae73a2f764879e8d946804b79ce docs: fix Camofox Docker setup instructions 7b05ccddc79654dbe7126a38ecf8994c317c3a6d docs(bedrock): fix IAM permissions, add quickstart entry, add fallback provider, fix deployment section 84ec27616a36b975e771e5c8b66d7b7a0eec3211 docs(cli): expand hermes import reference — add description, warning, and examples 9022804d78e88253d138d448e9107a3884b2b96c feat(providers): make all 33 providers pluggable under plugins/model-providers/ 20a4f79ed11da67318756d7a98141c0ebf56183f feat: provider modules — ProviderProfile ABC, 33 providers, fetch_models, transport single-path 579c73384cc3f95c590e9c10a68876cc11b2cbce feat(providers): make all 33 providers pluggable under plugins/model-providers/ 2b500ed68a02bec5925b75776a3779bfa8f58383 chore: AUTHOR_MAP entry for asimons81 e4723f671a594f515becbf5d42ae703e79244510 docs(cron): add context_from chaining section b6e4e40df4e5ab219ef20d9c070eb59760410150 docs(guide): add Dispatch tools from slash commands section 91f339b98193d884af50299afc90ad28f9f35884 docs(plugins): document ctx.dispatch_tool() in plugin capabilities table 72c33dfe955f45b8b78a22d1d98b3e1b702cff8d docs(agent): remove stale BuiltinMemoryProvider references from memory module docstrings f67063ba81f9d7de2e42003dd086633d28448ae8 feat(kanban): generic diagnostics engine for task distress signals (#20332) ec7f2f249edb484c3a081ef2451bf40fc4e45abc docs(cli): add skills reset subcommand to CLI reference 00d25595c1c7656ba8055b375fba278e9bef7f8f perf(ui-tui): narrow overlay subscriptions to focused selectors ee502e5640ab482e0531617e867f0ce8419817e0 docs(cli): add --deliver-only flag to hermes webhook subscribe 0dc677f0718b54ec3669206b6741ce97269e061b docs(skill/hermes-agent): sync slash commands + add durable-systems section 4532182bda5642b96938516a034f59b6111ab60b refactor(ui-tui): defer overlay selector perf split c28c2a2380751feda59de6838a652730fbff304f docs(tts): document per-provider max_text_length caps d5357f816d669084b9b7dc2da906100d2034212f refactor(telegram): make typing thread-id resolver symmetric with send 41545f7ec59dfe9b05f58374113635eeae0d1bfc fix(telegram): keep DM topic typing scoped 0664bf961a3a4e1e9e7b9b4f0235a37bcb7c7646 docs: fix broken nix-setup anchor for container-aware CLI 58f93fb7d38b167a9c41271d3707ee99f6f44de1 docs: remove dead papers.md link from saelens references 2d5f20684a9e4574120a4e632b711d4037301da8 docs: remove dead reference links in flash-attention skill c85a25faaa561a0d6708cc32c374b28774a3f71f chore: AUTHOR_MAP entry for Beandon13 27a8ba42ed73d6c8af98ace165c853dbbedad97c docs(prompt): clarify supported customization surfaces ce9888b52abb942c0bfbe4afdc58cb6b4e82b8c2 docs(config): fix fallback provider config paths a6289927d39eb21df03a70f3d91e7eb80c54de7c docs(web_tools): correct web_extract summarizer timeout comment dbbd5512d5fc69c93b136eedb2be41a00c45b4d6 feat(ui-tui): add responsive overlay widget grid 3b750715a39ed8a96fe90dc4f7a5b7b2ff9b794e fix: resolve lazy session creation regressions (#18370 fallout) (#20363) 0397be5939079d0a0f6df491637825e7f1583f2f feat(tui): remove /provider alias for /model (#20358) c9987f1e229a572317c25150fc4c2dd0494bb15a refactor(desktop): tighten right-rail tab close API dda389452343ed7b4f8f1535ed119a2b3847f606 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui ddf83e95b0c8347e8c77db62ebc11b95bd0c98c9 Merge branch 'bb/gui' of github.com:NousResearch/hermes-agent into bb/gui 5269012c5170425f776edc1a006cc7ffbbc64c25 feat: file tabs 5ec0667fb3c7be05f692ffbc0b10222f0700d064 ci(desktop): automate desktop releases 87b113c2e3d89643f877c8273517c2a48a22253d chore: AUTHOR_MAP entry for Tkander1715 60235dba5e8d1a2a518131a53de63bba37f41830 feat(cli): add list_picker_providers for credential-filtered picker abce1a5d087e7cf6655aaf71e32647f01f9d8753 feat: provider modules — ProviderProfile ABC, 33 providers, fetch_models, transport single-path cc2c82097522a6f6a0ddd286ee4da3eeffb818ae chore: AUTHOR_MAP entry for Aslaaen e8e91473774b9ceaced12920207c3c72700c9e8b fix(acp): preserve assistant reasoning metadata in session persistence dbe9b15fa19db0c7d860f425484a522f346880e7 chore: AUTHOR_MAP entry for zeejaytan f8ba265340e1cb218f1e2e8f3820d2746af4ee5d fix(aux): trigger fallback on 429 rate-limit errors in auxiliary client 8c0f254c06ae33c9b1d6a5b20056010948f2489a chore: AUTHOR_MAP entry for LeonSGP43 244bacd0dc4adcf263bb7c6d677452e9fa51c0b0 fix(skills): support category-qualified local skill names 4553e32bc482f68ee91308ba643c99e2e28dcdb3 chore: AUTHOR_MAP entry for Es1la a877c3f6d9aefdd7338f2189b83d5bc290e17929 fix(feishu): tolerate malformed dedup timestamps 77a102b7de20467260006919c93fe2c6daaefbd0 chore: AUTHOR_MAP entry for jkausel-ai 526742199bef2ab184c92b87d4f78edb75aeeaa6 Prefer fallback for Gemini CloudCode rate limits 12135b4c8aa5c8ee996c5647aee700c6bd9b08f1 chore: AUTHOR_MAP entry for wysie 0120d8f31e96d36c02965d421f0386de00d41b0b fix: merge plugin tools into builtin toolsets d9f0875591e884af52a026ea4395ef3945fedace chore: AUTHOR_MAP entry for hharry11 247c9d468c5ba0ccaf2e01fbc39c6eede7bda392 fix(gateway): ensure deterministic thread eviction in helpers 935cf2fcca1b90dd1e3d3f762ec9b318035c5b86 chore: AUTHOR_MAP entry for JTroyerOvermatch 6430d67569f553a2a45241d98cee5794944565a7 fix(openrouter): use canonical X-Title attribution header 269be4ec8427264f2368f016f5d57a41408e4eac chore: AUTHOR_MAP entry for Bongulielmi d8097d587f7e6cf6815ff3410e3a21bea87ebd6e refactor(env): use shared Hermes dotenv loader c62d8c9b745e69810ed46eb97fea8fe4051181e4 chore: AUTHOR_MAP entry for Bartok9 dad62c4c474164b19cfd7b5e96746a2cdde50931 fix(whatsapp): auto-convert mp3/wav to ogg/opus in send-media for native voice bubbles 45949e944a78f46f1fb2bff54d43a4fbfbc8a7da chore: AUTHOR_MAP entry for Junass1 e4e0090b54dcdf996137dfb3ecbbc29f4f8a6dcb test(acp): regression for #13675 — save_session preserves existing messages on encode failure 5795b3be4e2aa5a840ce810925e3e88e3370f4f0 fix(acp): use SessionDB.replace_messages for atomic history rewrite e805380b82bd50d5e8e573cb2d24da50ac826f70 Discover plugin commands during CLI dispatch ecc909de38f2fa8b014060711cb252c096d3f1fb fix(session): serialize JSONL transcript appends under existing lock db84c1535d63e4ea42fb8d0d612cebbaf72d4066 fix(ssh): add scp availability check to preflight validation 8e18d10318f9fb69f0b748db11e37de44b71da85 fix(feishu): force text mode for markdown tables b014a3d31514c6d21a4fa608d539a64ac79a92b0 test(cron): update _isolate_tick_lock fixture for _get_lock_paths 969bfff4491d34b199a212defd7f1a4142a26118 fix: merge _get_hermes_home() dynamic resolution and feishu receive_id_type detection 401aadb5b8926c1ce9cdc9a57b5700dacd835732 docs(security): rewrite policy around OS-level isolation as the boundary de9238d37e778da3654595a49cc7ae5b8a10fa60 feat(kanban): hallucination gate + recovery UX for worker-created-card claims (#20232) 7de3c86c5a793485d7b686ac80448336ae996689 feat(i18n): add display.language for static message translation (zh/ja/de/es) (#20231) b7bd177105986a0af5ec13c427e0e3837f8d05c8 docs(AGENTS.md): add curator/cron/delegation/toolsets, fix plugin tree (#20226) 7530ce04e09d438923409b8eab738dd3dcbb3110 chore: AUTHOR_MAP entry for MaHaoHao-ch 02147cc850069294d215d72b55c2a2cc2390eff4 fix(cli): sanitize bracketed paste markers during setup 8ebb81fd769abadbd954808059216411b73cd2b1 chore: AUTHOR_MAP entry for rxdxxxx c46bc9294991929a3dc8f6c28111c3e7780406a2 fix(run_agent): use aux provider for compression context length lookup fb311952d7708ac04f7534dedd22737782e411ef chore: AUTHOR_MAP entry for Krionex 285c208cf7b5bd67d055a952cd7e748b32ecaf73 fix(gateway): also tolerate malformed env vars in custom human-delay mode 3b16c590e03f8208989ea2eab588c6d84b75eca7 fix(gateway): ignore malformed custom delay env vars in natural mode 349d0da07ec93d5929295a2fc180aa4d3d030f53 chore: AUTHOR_MAP entry for novax635 4e6f51167dd12d2812bfccbf6226618dacfff3fd fix(cli): fall back on invalid HERMES_MAX_ITERATIONS 37b5731694c5acaf90cdb0d514b0a6c4170cb7b0 chore: AUTHOR_MAP entry for npmisantosh f6677748a0376a386bb339a7ac4a7264d2b5675c fix(claw): handle missing dir in _scan_workspace_state f844e516d8ca49581d7e61dd03e98c9daa204943 chore: AUTHOR_MAP entry for agentlinker 19eebf6e0de733ffa2f28133801f79e07fbdec4e fix(openrouter): treat xiaomi models as reasoning-capable 96514de472d0019c10e5fa5928738094cb7d6a74 fix(auxiliary): avoid locking into custom path when api_key is empty c7fc5af1228812434d45e7a8417a7567442f15a4 chore: AUTHOR_MAP entry for tangyuanjc 80b386a472fdb37113e137360da3cc60e796d782 fix(feishu): refresh bot identity during hydration 314361733f16e11ed6f42a2da772c68d1236b071 test(api_server): _run_agent result now carries session_id for #16938 7f735b4db2967849d935ef4b03bd6933107e48ff fix: return effective session_id after context compression (#16938) 34c6f93496244c4e4e0f7898f938b64d10a40537 fix: resolve model.aliases from config.yaml in /model alias resolution c1a2710a322592e6bdceb3c874050eeb09b4fbf8 test(aux): cover effort: 0 fallback in Codex reasoning translation 9e893d16d1f4bdb3c1623a547450f8b8bdcc5bee fix(aux): default Codex reasoning effort to medium when extra_body.reasoning.effort is falsy 44cf33449d4f78f9a13eb37c7d99d2c4b021f696 fix(mcp): add periodic keepalive to _wait_for_lifecycle_event 005b2f4c5dfdced4acb4c80ff0b3520f9c2da1c7 chore: AUTHOR_MAP entry for beardthelion f15b0fbb4f1738055cf6f16f9b349dbca69b879a fix: add PLATFORM_HINTS entry for api_server platform b10e38e392ba5b1ee0f98fd513d3f120f7277565 fix(skills): pin protects against deletion only, not edits (#20220) fe8560fc1249b4a7e448b5c3b80a7d213df9d78f feat(api-server): X-Hermes-Session-Key header for long-term memory scoping (#20199) 436672de0efd8bcc50c6043a16223c102d30d71b feat(curator): add archive and prune subcommands (#20200) 4f76166cf0189419bc0dc6b75054f16c496f066c chore: AUTHOR_MAP entry for qxxaa 0a7cc85eab299667777489a31995eb324d8b7818 fix(honcho): pass user_message as search_query in get_prefetch_context 046c2931831967ff604e5a92fe72f0deab500dc0 chore: AUTHOR_MAP entry for chengoak 8f4c0bf0882c3c7258a65e3adade12d5b08068ea fix(wecom): pad base64 AES key before decode 83a07f4759849b3485f81e8afb4d2fafe547112a chore: AUTHOR_MAP entry for happy5318 9e0ef2a1bcc068dfbc3b2624daafe66fa3cfea17 test: pin per-turn reasoning extraction semantics efe1cb00c88234ab4c81055a8aac07689a315508 fix: prevent stale reasoning from being reused across turns 4577f392f9e64416efa241f534357e0da9ab8c05 chore: AUTHOR_MAP entry for ashermorse 6b76ea4707e75cba4d8a1fd6094c89d778fae412 fix(gateway): load reply_to_mode from config.yaml for Discord and Telegram 354502ee483f4bd3a0b1b8ef650482762b2444e0 fix(kanban): preserve dashboard completion summaries cca8587d355cce26a8f161a2a3b26dbfcac2108b docs(quickstart): link Onchain AI Garage Hermes tutorials playlist (#20192) 4d0f59fa5ae0d007bca1125d69f197c042cb84db test(skill_usage): add mark_agent_created to regression test 68c1a08ad114e6d1cfdcecd09880b5b594230b77 fix(curator): protect hub skills by frontmatter name 5168226d60f66dac01dabe151104cb8e958c99c0 feat(file_tools): post-write delta lint on write_file + patch, add JSON/YAML/TOML/Python in-process linters (#20191) b93643c8fe8236f83c8c941435557b84bbe85468 chore: AUTHOR_MAP entry for wmagev 2eef395e1cafd32ebfcf91fb6e5c6ecbd4c1e7df fix(compaction): mark end of context summary in role=user fallback c725d7d648a031dbcedf0d55a2f5a221ecce44e1 chore: AUTHOR_MAP entry for TheEpTic 660ce7c54b9c397b2b1d23d9904159b645f04d30 fix(ui-tui): prevent React effect cleanup from killing python TUI gateway subprocess 1a03e3b1c667600c4bb509e8afb01620b0999bec fix(kanban): detect darwin zombie workers f6b68f0f5079eeb10ce00253b29236015f96d9bb fix(gateway): keep DoH-confirmed Telegram IPs that match system DNS (#14520) aacf36e94309df06bd9221e5b9027e8b3c3f0b0b fix(cli): persist manual compress handoff fe8dc26bc99e1e9d84a029846f45623fe289e4a5 chore: AUTHOR_MAP entry for revaraver noreply 4a3e3e20e5b2ed2fd0c2e727f8204efea4de8a5a fix(compression): preserve iterative summary continuity f8a6db68ca7aaafbbc4c952ac96c483d2b5399ca test(kanban): isolate HERMES_KANBAN_BOARD writes in pin-env tests b22b3f506a34cf848d68bb2ab17b68b0bc8ec152 fix(cli): pin HERMES_KANBAN_BOARD at chat boot to stop subprocess board drift d472d697cd086d29ee5c696e197e4189628de93b chore(release): map stevekelly622@gmail.com → @steezkelly 8c82d0664dd288b5900502c34dd28dbbdcc450eb fix(kanban): ignore stale current board pointers 2a285d5ec228e5df782957ed1b29d1df44e2a3ae fix(agent): stateful streaming scrubber for reasoning-block leaks (#17924) (#20184) 28f4d6db63f450828ffe419964719d35bbeedc58 fix(tool-schemas): reactive strip of pattern/format on llama.cpp grammar 400s 542e06c789f1704ebd3253027b03b6b07a7a8c07 fix: include default profile in kanban assignees 14b06cb090cab9bf8d73c8bf81e5aeb3af12bc96 chore: add MacroAnarchy, wmagev to AUTHOR_MAP fc4aa66ee4cda20f711416586cf3401a7cb498b7 feat(tips): add 100 new CLI startup tips (#20168) f25d3ec9176bc15d9be59ab32dbd4537606d0254 fix(kanban): suppress dispatcher stuck-warn when ready queue holds only non-spawnable assignees ca5595fe7b707f7285147623ea2473fb7460b7e7 fix(kanban): dispatcher skips ready tasks whose assignee is not a real profile 359e08d384156f35d8a4bb811968f7efa47f0e5f fix(compaction): mark end of context summary in role=user fallback 0a9d84dd0704004ebe60e86817299ed9e6b27519 fix: preserve memory authority across context compaction 243681a8e7dce58a4812ee9ba776454fe5a91eb8 fix: evict cached agent after compression so system prompt refreshes 2e5acc5e771f111abf5335323c35b8a84343b021 fix(gateway): correct compression guidance command 91ce8fc000deaa4b4bbf1edb5b3d9f6dd1668f09 fix(setup): offer Keep/Replace/Clear when API key already exists 8ad5e98f8d433e6e302355c77e22931f7a047eea fix(gateway): preserve pending update prompts across restarts 278535575086a9613a4459cd800abf940479f911 chore(release): map bjianhang@gmail.com → @bjianhang c3112adac551f5afe4166c68a1165d60f33af74f fix(tui): improve clipboard copy fallbacks f2332d4f132c8239872368a640c372145a56b964 revert(gateway): remove stale-code self-check and auto-restart 13a7cbcd6404c6e8ef501f98a0b315da4223228c fix(nix): refresh stale tui npmDepsHash + fix cache-blind detection (#20144) 3aabae20ebb99252ae227694664f1ee794defb80 feat(desktop): support connecting to a remote Hermes backend 2964f25534afd76a87d8f9b3550c1a7a59f8e63e fix(dashboard): resolve @nous-research/ui path under npm workspaces b352e8ed1738f1c90333f83a40395b3b1782d15e Merge origin/main into bb/gui 301c6984912e658226d384adf16cd364dd9261f2 fix(desktop): address security scan findings 023730314b08658219591a008b8ceafa691aa579 docs: add desktop and dashboard run instructions 601e5f1d57cfd4ceefee50a6df05a860a1a602e8 fix(teams): log reply() fallback for diagnostics 2333b7a7ec682c999d9bfa9dd96ce8c293c86330 fix(tests): patch TypingActivityInput after mock on Python <3.12 3f023450ddab8af48814fd715d3f0ee4318026ee fix(teams): fall back to flat send when threading returns 400 69aeba0df782b3383480ffbf0733d725a714c0a1 feat(teams): implement threading via app.reply() 10f89d7b724bb9f6ae8e97dafbed6b8dba01856e docs(teams): add Teams to messaging/index.md 93869b48ab520ad8df386e2057013c5f78bb8d7a docs: add Microsoft Teams to platform lists across docs ef94aa201fba8c1c95a1c8ee9a4d1ee66ca40dd1 docs(teams): add Teams to sidebar c77a6e3faaf3d400f639213ba3af02a3891ad05a chore(security): add OSV-Scanner CI + Dependabot for github-actions only (#20037) 1d938832a7dfd2cd661d50017ff839d599a820db test(kanban): patch dashboard websocket token stub f7918c934927bccb7b1c5780d813100076b64998 test(teams): mock ClientOptions in adapter tests fcce49db3fa9ac119cac9b8771821063f9b48739 feat: better composer etc a1bed18194ff1ee8de1bf3e81007ddba06b61042 docs: clarify that the Docker terminal backend is a single persistent container (#20003) 42db075e1094dc403de701be912af332163e7818 feat: file preview and folder tree etc d12f59aa5377635f7f4ad680cc349bf3e770a5d8 Merge pull request #19866 from NousResearch/fix/clarify-placeholder-credential c558f9a1d81aee5b07ef1f229c09c15165f03faf Port from Kilo-Org/kilocode#9434: strip historical media after compression b816fd4e26d6c7260814f53d5ba7c7eb065548c7 fix(tui): complete absolute paths as paths b6322901664c0af138035d6f753feedeb1d2e8b7 fix(gateway): handle planned service stops 20428f5e600cddb414ab1ec6152aabb0497d14e1 fix(tui): respect voice.record_key config (supersedes #19028, #19339) (#19835) 109c3e468c8ffaf5733683aa1f02afb925104be4 fix(terminal): guard background process spawn against deleted cwd (#19933) 9fa3a093f29e142c4a5d97a62bc96d03175854fa fix(local): test root as ancestor candidate; use real pipe for fake stdout 9644b8ae67a84e4b77f3f79f20fa87ddc44f8559 fix(local): recover when persistent_shell cwd is deleted (#17558) 6ebc3014795f0b0e271533c0b9f64b76cc1e1910 fix(terminal): recover from deleted cwd instead of crashing all sessions b8fb9270c4672e81e710c242e96ad1eaf60d18e0 refactor(cli): drop dead c-S-c key binding (follow-up to #19895) (#19919) 56a78e74b26a10bd87578e019f9ef84e76a90b5d feat(kanban-dashboard): sharper home-channel toggle contrast, drop → running action (#19916) 429b8eceb4e053f8783440396c18e30d41509712 fix(cli): guard c-S-c key binding with try/except to prevent startup crash (#19895) 74127e0c487419266f7724b8a4b06a121c7858e3 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 64a63d0d2be8ee3963d818ef0c528124d0be87ef chore: uptick e493b1c482caf8c50ba8b1b85c2af2904bb74ab7 docs(skill): add hyperframes inspect command to cli.md + SKILL.md 20859cc408980fe852e2ee96dcdfbd3fd11a8e4f docs(skill): sync hyperframes skill with upstream changes 50aabb9eb2a8d5b2c4f84a447d8f22529844c192 feat(skill): add hyperframes optional creative skill 12307a66e0b0e8ee652ffcf96ac180870f3d3de3 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui 5f334e86fd62bf4824999eb5eed5f082be28e9b6 feat: better tool parsing ui 8fabef9d358cdaa97408f4f00e0dc6e3511ae97d fix(docs): register cron-script-only guide in sidebar (#19893) 81cd67829191beba42eb54589375670122e1b57b fix(google-workspace): restore required_credential_files in SKILL.md (#16452) 60b143e9dfca5f90e2ecb09391a7f1832ee592e1 fix(tui_gateway): guard sys.path against local package shadowing (#15989) 645a2f482de6cefcf8694a5f2f896889804d3096 fix(cli): fix shortcut config conflict in hermes_cli a919269eb5c533cef80a2852e82a68472f5ad15d fix(skills/email/himalaya): document v1.2.0 folder.aliases syntax 9cda237bb16fe5cfd1185cf381a8db4ce396cf77 docs(cron): lead with agent-driven setup for no-agent mode (#19871) eadf34633e038c595dcf615845b992a45443e380 fix(models): strip :cloud/-cloud suffix from models.dev Ollama Cloud IDs c050ee6573248057b26dc8e2852fa58d051132eb fix(file_ops): resolve search_files path/line collision for hyphenated numeric filenames fbc477df7181e459fc6b300eeaaf54b479a635dc fix(run_agent): acquire lock in IterationBudget.used property 64ad7dec0d02256a0ef8330d98ebe5949b517e5e fix(file-ops): allow file search in hidden roots 9e2628ee7c723ec8daa5e906016bdd38bfeb6d42 test(discord): annotate make_attachment content_type as Optional[str] 1c7f47a58c523b1e97f6d563314002bdef67c362 fix(cron): add concurrency regression test for parallel job state writes 68754719165265e3dc152f10cabf9f46a4b45122 fix(tts): update MiniMax API endpoint to v1/text_to_speech 75bce317a30b33dc7d0610120ad2ea3c970c4ddd fix(cron): expand \${VAR} refs in config.yaml during job execution (#15890) fd9c32c0f285bb09f926e50980b71da809b3f1ed fix(email): drop non-allowlisted senders before dispatch to prevent mail loops 20edca75e9929e05435defca4e873d2366ef2fe2 fix(update): sync bundled skills to all profiles, including active (#16176) 103f51ad34ee7817d3cd1cbf01144a66573333bb fix(doctor): check gh auth status when GITHUB_TOKEN absent 8ab9f61dcf787b6cbf4c2ac258621c5f4c2b18d7 fix(gateway): preserve WSL interop PATH in systemd units d90f73bcec3daad4fc72b9f3471392acabdd5747 fix(gateway): use git HEAD SHA, not file mtimes, for stale-code check (#19740) a21f364ad7dc7a76849f09ba2aff93d0cb36eff7 chore(release): AUTHOR_MAP entries for Tier 1g salvage batch 1c7c7c3c5f483cccd8b671410297cd33f1120a87 feat(kanban-dashboard): per-platform home-channel notification toggles (#19864) 2bc82bb504a7a384624176cbbe1c63c2007ed48e clarify placeholder telegram credential in tests 3db6b9cc871c6f1c588cccba1ff2bd09601c1b77 feat(cron): add no_agent mode for script-only cron jobs (watchdog pattern) (#19709) d1d0ed401603da0259a34fd504b6b2e4b12ced9c feat: better icons and overlay panes d35efb9898843e22d3d203a7fd6822dddb09d342 feat(telegram): /topic off + help + auth gate + screenshot debounce 1381c89e56fd3e6abbd0233b5a361069ae1862c1 fix(telegram): polish topic mode — CASCADE, General-topic handling, rename guard, debounce 1a9542cf75fbdf21036a84718a2965d59c8ec09c docs(telegram): document /topic multi-session DM mode a7683d04a9646f8946c4469c31643d7b2670b815 fix(telegram): harden DM topic binding — persist through switch_session, rebind on /new 25065283b3444d729df3d1ed13e0f811de2f1cb8 fix: improve telegram topic mode setup d6615d8ec7d5c5a3d7b63e3c2c4bfddbd6fddd4b feat: add Telegram DM topic-mode sessions ca8f2c7907e4642f200995e2ded4e1190e21a0b2 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui b162f9ef9a923dc5765ae1c24c0a32f0a1f5be5e fix(nix): refresh hermes-tui npmDepsHash for ui-tui lockfile 0ce1b9fe20a53459b37b7ab27dcb88336dbea781 fix(tui): preserve prompt separator width (#19340) 27c5fa5381efc28a582941c8078814ac7fc3d7ea chore: uptick d9c090fe369aa9975ed6bf093b0ef1cb96b06053 Merge pull request #19338 from asheriif/fix/tui-plugin-slash-exec-live 05bec0ac79ad525997d569f17e47dcd39c401ed3 fix: pluralization 54e78cadb2e6d16a4f82185b2dc81c9dc176a813 test: add regression test for Teams interactive_setup import fix 38adfebe78fb210921ece43c62c46cd966279c5b fix(teams): import prompt/print helpers from cli_output, not config cfd86dcdb806611bdd0fb4112f05e7e2af87cefc chore: add bobashopcashier noreply email to AUTHOR_MAP d89e7a3cd42eb7cb30ee06e73cf2b4abbaee3248 fix(anthropic): restrict fast mode to Opus 4.6 (Anthropic API contract) a7417f8a4a413196dac350e357dec43b8f8eb3e0 fix(compressor): skip non-string tool content in summarization pass to prevent AttributeError eeb05cf556433c529935f71aa5ed6b234d1507c8 docs: default custom tool creation to plugins 74c1b946e00c89b3b7ff315033d579ccb653de2d fix(browser): inject --no-sandbox for root and AppArmor userns restrictions ce22301dc650219140e4d7d267a8d07c015f53d5 test(sms): use clear=True in test_missing_phone_number_is_non_retryable 83080772f28793ac388d9218c394019ff8554ad0 fix(delegation): honor provider override for subagents 7a8ee8b29d86dcb7019677504f5c63587dc70b3b fix(gateway): deduplicate Weixin messages by content fingerprint 0b5fd40a01f6d48549a2d9130e0cb1443be1900c fix(delegate): correct _spawn_child → _build_child_agent in comments 42d72b59223dca923f8bbc4c723c54837b282fc8 fix(status): add missing popular provider API keys to hermes status display 5d6431c11454bf9d5ef4973505dc7a35cb153c58 fix(doctor): resolve merge conflicts, add kimi-coding-cn test 0e9416036aa4fe3a600a48aefe4212fa77191190 test: add unit tests for heartbeat stale threshold increase 0cc63043e085dc6c12bc80007b6e6e3fafb7b3cf fix(delegation): increase heartbeat stale thresholds 6b4ccb9b148573f0c9a675b9ed24528824b0d87f fix(session-search): report source from resolved parent, not FTS5 child session (#15909) b46b0c98885c78c171d8bd52aee5dd28e082acec fix(backup): floor pre-update backup_keep to 1 so the new backup survives ef8c213e880858dc18af1141d14e9f409b19b1d4 fix(model-switch): soft-accept unlisted openai-codex models 52882dade6f96bf88f37535925dbaeed8616cbe7 fix(agent): include name field on every role:tool message for Gemini compatibility (#16478) 0443484115fb6f3a664defd3969ec6206786d625 fix(qqbot): honor proxy env vars for websocket 6cf7a9e330cadabd2a0b7ae21f25dc400fc3aa63 fix(vision): preserve explicit provider auth with custom base_url b7bbc62503d54cd95de413df7cda2e802fec0206 fix(compressor): _prune_old_tool_results boundary direction d29f90e89d0263d390a71b359e1afa4f5a91e1e9 fix(error_classifier): avoid large-context false overflow heuristics 026a5e47df53ed84c2b6d3573d605fe7a93b8611 fix(cli): preserve Windows hidden-dir paths in markdown 3fb35520c6f50626050f3cce16199984f1623004 revert: auto-subscribe gateway chat on tool-driven kanban_create (#19718) (#19721) 25b7b0f8e6a359ba05e1e16fd2f74293daba6ea4 chore(release): AUTHOR_MAP entries for Tier 1f salvage batch ff3d2773e2a3aab49f282b9b075b2e0d07b18560 feat(kanban): auto-subscribe gateway chat on tool-driven kanban_create (#19718) fdf9343c51467c12c5bc8f89b488340f6d14b7dc fix(tools): wrap bare scalars in single-element list for array-typed args 6f864f8f942b3532bea8e10584024a509bd248b4 fix(redact): add code_file param to skip false-positive ENV/JSON patterns a175f395776a83e54ac838ade06ad3b837051249 feat(nous): persist Nous OAuth across profiles via shared token store (#19712) 69fc6d9c1e82ec87ec08765f10e92e8d08029851 fix(telegram): fall back to document on any send_photo failure, not just dim errors d3b22b76d8b63f81c4f70a1d1aae748b883484ab fix(kanban): enforce worker task-ownership on destructive tool calls (#19713) 1bd5ac7f2f839cd047366749ebbbf901220c7afe fix(self-improvement-loop): bump background-review budget to 16 and suppress status leaks (#19710) a79b0ec46157efc91537e634a3dcc44a76f6dc7e fix: keep Feishu topic replies from falling back to new threads (local patch) 3ccf723bf999d02698e44a30e1d6a9a90d7713f7 fix(gateway): read context_length from custom_providers in session info header 8c8f95bc8e4e5d8fb7f06be8154afc3488fab787 fix(gateway): show friendly error when service is not installed c5789f4309f3bfc54c73623b25849ac7f12a1d80 feat(achievements): share card render on unlocked badges (#19657) 297eaa3533f6c98a45db4cb5c63fa07c008fd67e fix(api_server): emit run.failed when run_conversation returns failed=True b2b479b40ece1d0eec8eaf20382bed15d9c25a6d docs(kanban): backfill multi-board refs in reference docs (#19704) a8b689f0c2541ce71afbe9052ddc5d50c1abd71d test(kanban): regression for status=running rejection at dashboard PATCH 6b3efcee49afed5fde590c56766634e8cbdf921f fix(kanban): reject direct status transition to 'running' via dashboard API 652f8e6f3ebea9551a5761668d5eeba215245abb fix(test): correct _coerce_number inf/nan test assertions edf9c75621e6b50c912b77b86b13543008f47f80 fix(env): pass -- to cd for hyphen-prefixed workdirs ae40fca95523b2daf7d8c3245dd27ea28059a5cb fix(profiles): keep validate_profile_name strict; callers normalize first a31477dabb9b02c85283070d0069c78b76d860bb fix(profiles): normalize profile IDs for Kanban assignees and lookups 60c4bc96fd81b51277663a8283fa5eea2be8ab51 fix(security): restore .env/auth.json/state.db with 0600 perms da8654bb4134634f924d275bc0bc562521887cca fix(dashboard): show custom theme palette swatches 239ea1bdeabb4bc5b56571b3f5b0aa63956b982e fix(image-gen): preserve xAI API error status 75b4a3467032f3382cc860a73a06a706ed580b12 fix(cli): check updates against upstream/main for fork users 5ec6baa40060ed677d6a3808fcb4eecc12545827 feat(kanban): multi-project boards — one install, many kanbans (#19653) 135b4c8b351cda70da89868b9bc1a78bbbb8cf33 fix(mcp): decouple AnyUrl import from mcp dependency 0d563621fbaf6e4d4ccbd0d29e829124b7c85170 fix(test): skip bedrock adapter tests when botocore is not installed d1d2d433877ac80728adf4ba7d69fdcd36949d77 fix(test): add skip marker for transcription tests requiring faster_whisper 844d4a32cecf09ccebbe1147849a648c6182eab8 chore(release): AUTHOR_MAP entries for Tier 1e salvage batch 110387d1494af3fc01dc8431c91a0b4a8dcc847e docs(open-webui): fill gaps in quick setup — verify curls, ollama flag, restart note (#19654) af6f9bc2a12682b06fb3632acf5a9cbf01e74a85 fix: refresh systemd unit on gateway boot (not just start/restart) (#19684) 33f554d83cc6a600ec87fe70449b66d40d0b7852 feat(kanban-dashboard): workspace kind + path inputs in inline create form (#19679) a219a0a4df2aeacd5ff7dcdbaf75e0bb6e6ef876 fix(anthropic): strip top-level oneOf/allOf/anyOf from tool input_schema 412f2389f14a625074fc0ae5a1bda6f97a1c6d8f fix(google_oauth): close TOCTOU window when saving credentials e50809b771de3bf057fa494f02f78fb613d8a926 fix(file-tools): cap read_file result size to prevent context window overflow 5b6d4134765ecfd284a63f3f12d3d3eecc0beaaf fix(cli,gateway): surface title errors from /new f720751d796aa0b4658a5bce49995bff2b7a9954 feat(cli,gateway): /new accepts optional session name argument 055fde40e0470ead938678702135a066008f960b fix(doctor): check global agent-browser when local install not found e69d11d30c9d24de3d7a39551679471c40daa6be fix(browser): allow CDP override to pass requirement checks 46072425fe286407b552ae25dd9e808bcff948ea fix(model-picker): exclude providers with empty credential pool entries c8ecb56f27b034187ce8dd24156497997d247c76 fix(cli): reject invalid argv values from -p/--profile before resolving e3461e0b2ac7aaef91dc0ab4103e0e52341056f1 fix(cli): remove dead 'q' check from quit command resolution cba86b7303fa8f9470dd68daa0c6126c6d8760b8 fix(cronjob): treat bare 'custom' provider as unspecified in override 6b88f46c54ac6e43a8a1ba40b7f5175cc7be5f7f fix(compressor): trigger fallback on timeout errors alongside model-not-found a45bd28598cc4bf24be3025de6fd8814f210945d fix(wecom): set SUPPORTS_MESSAGE_EDITING=False to prevent broken streaming d2ea959fe9a86c0d3d90d552e35b191c67fcc8db fix(doctor): skip /models health check for MiniMax CN (returns 404) d17eff29d5fe6a09e0a0cef49df999d4a70eb073 fix(delegate): guard _load_config() against delegation: null in config.yaml 2d3d1d97361371f519bb369b6618edb67f7aa87e fix(tui): use --outdir instead of --outfile in hermes-ink build script 145a38a875c0d352c4e14e91ce9992b330240476 fix(agent): preserve dots in model names for Xiaomi MiMo provider 089694438204524fb300162b08b2ed0f901235a2 fix(cronjob): advertise 'custom:' provider format in tool schema 9c64d09610509560aee01e7c9e6efd03a3ff9e8a fix(status): show NVIDIA NIM api key status 64b39d835edc158140323b0b2dd7007488341a90 chore(release): AUTHOR_MAP entries for Tier 1d salvage batch 20a06c586f4f8eacb7a48aa25f9494aa33dfa9f1 fix(dashboard): render null instead of flashing spinner during plugin load 06a6d6967a0489293c479ea843330fc19ea82a89 fix(dashboard): defer unknown-route redirect while dashboard plugins load 986ec04048b31759de6bda86ab3360e57606f8ed docs: document /kanban slash command (#19584) 06280047099cad93aadbe528a4aa465a76a90135 docs(model-catalog): rename x-ai/grok-4.20-beta to x-ai/grok-4.20 (#19640) c659a168992c97f0b15af2eb7e4add03c21f7a3b fix(cli): detect quoted relative paths in _detect_file_drop 08b8465ca9b68de4e5fde406f0e8ca94bab7ced6 fix(email): add required Date header to send_message_tool._send_email 51dc98d314000d7b326b341bb2b95f23ac6814d4 fix(agent): detect Qwen3/Ollama inline thinking after tool calls 0df7e61d2cc1c1a723f576e701a03f16c0e9edf2 fix(cli): omit empty api_mode when probing custom models 52c539d53a2b4d457ccc5963a09c880cae49812f fix(agent): disable SDK retries on per-request OpenAI clients 3c070f9f9d00a74462980862590b9703fdc002ca fix(curator): only mark agent-created for background-review sediment (#19621) bff484a51b8f12e8e4663b3a880709f2e8cfc1c1 fix(kanban-dashboard): widen drawer, bump body fonts, fix code-block contrast (#19638) 2a52e285685750c5f60d785c072fc394a84136a0 fix(setup): skip AUXILIARY_VISION_MODEL write when input is blank 7d36533aeb0fe4fd5680d3285ffbeb50f8908035 fix(pty): default TERM for resize probes 99faac212ed7e19276bb3766984457ad9c7c4fd3 fix(tui): prevent trailing space in picker-command completions 6da970f15d78d81dfc6287e54788acc2f869b64c fix(tui): close AIAgent on session teardown to prevent FD leak 4e2b20b7053b4712362a107f16f56443472bedf2 fix(cli): sync use_gateway in _reconfigure_provider for tts, browser, and web ba8337464da1f59888645356d3fe3250f343caaa fix(gemini): extract usageMetadata from streaming chunks for token tracking f6aa1965d79b2285bb5097979085562876f9a0c7 fix(telegram): fallback to document when photo dimensions exceed limits 9e17ddcead58070ba9949d9240ecf051e597305b feat(cli): add `hermes send` to pipe script output to any messaging platform ad4542bf6dd380c4d73ce7b0666f5e1bda1dd330 fix(gateway): allow free_response_channels to override DISCORD_IGNORE_NO_MENTION 54cd633366cf51810e2efc31e228a5774556b3c3 fix(cron): skip AI call when script produces no output e2248045f56430acbc5bb2759938f4fd5300cb0b fix(cron): drop stale env-var override of persisted provider d7663c78083aff9df70349f36c587ebfc2c3aa59 fix(docker): exclude compose/profile runtime state from build context f236cbfec36302905beeea5bcfae8e6f26578e95 fix(tui): declare nanostores dependency dc63ad0ad2ec73014fb99f6c840a4ddea802b806 fix(anthropic): cap max_tokens at 65536 for Qwen models via DashScope 83bbe9b458cc19dc7d12c5dbf4e8e68ff37659b2 fix(delegation): pass target_model to resolve_runtime_provider in _resolve_delegation_credentials e2211b2683d0dacbdb39af9bc5a2b712a742597d fix(compressor): reset _summary_failure_cooldown_until in on_session_reset() 3e1559b91057fad4b80f03bcede39ae0afcb4b7e chore(release): AUTHOR_MAP entries for Tier 1c salvage batch baf834cc0fb52688908c458fcfab5a1821992b8c chore(release): map cine.dreamer.one@gmail.com to @LeonSGP43 abcaf0522905ff849cc8241037f42fb669bcb664 fix(skills): keep manual skills out of curator 21c7c9f0ca5f3c2fc5e1c64d4165879c004338a4 fix(tui): harden plugin slash exec errors cac4f2c0e6800628445f230195c150b5f225e945 test(kanban): update worker-prompt header assertion to match #19427 deb59eab727c757d7ea9a239616582b25b531525 fix: allow kanban tools for orchestrator profiles with kanban toolset 9faaa292b460ad8d8f46e79f907b972edeca9e50 fix(delegate): inherit parent fallback_chain in _build_child_agent cb33c73418520bf38d83995c6e914ff42277eb10 fix(run_agent): gate iteration-limit provider routing to OpenRouter 8a364df2c829a4619893195a5dde1f9f64dbe2db fix: inherit reasoning config in API server runs aede94e7573fc47cf4837f1812fe4d75a142eac3 fix: back up config.yaml before hermes setup modifies it 2c7d7a9b2f75593e7949a8ed64883e6425df9684 fix(security): bind Meet node server to localhost and restrict token file to owner read cdde0c841190613564e86815d0ba84c4d3e654c5 fix(feishu): enable MEDIA attachment delivery in send_message tool 45fd45103d6cb3d8a1910aad6ec9de7e3d55e4fb fix: _chromium_installed() now checks AGENT_BROWSER_EXECUTABLE_PATH and system Chrome c653f5dc3f4d5602eef3bd56780fdd378fd9acca Clarify session_search auxiliary model docs 8bdec8088204a321b15dabe7c0df731ad3a66ae1 fix(agent): surface preflight compression status d8be50d772f45619e1baac988c2e2b5313fb1a74 fix(web): add missing icons for config page category sidebar 06031229e8d5efc312be4751909a1270dd444610 fix(tests): tolerate ps ancestor-walk in find_gateway_pids fallback test (#19590) 9c93fc5775c872d9a10b5b56c3b9fcc59946f742 fix(tui): call process.exit(0) after Ink exit to trigger terminal cleanup 74c997d9851581f169b35e33a633255f40bcbc6b fix(gateway): move quick-command dispatch before built-in handlers c8575925589dac37dcfbe7e92ac87d07c3e9c3f1 fix(cli): allow custom:* provider slugs in model validation e8cdcf532882edb575f3dca4b0e53adf5c416b69 fix: exclude ancestor PIDs from gateway process scan (#13242) 8a4fe80f8df35fdd70ecf81284cbcd6940f2157c fix(signal): skip reactions for unauthorized senders e89376d66ff2f72caf069cdddd65c161bb4f7540 fix(setup): add missing SLACK_HOME_CHANNEL prompt to _setup_slack() 81ce945450ac46480980a613b886c6e61e34149d fix(gateway): show other profiles in `gateway status` to prevent confusion df88375f0d8f29f75327cdbaa11670085b5711ca fix: treat ctrl-c as curses cancel ccb5d87076b598c14691b55fb6f25168ca72cc3c test: cover max-iterations summary message sanitization a1cb811cb8cfca1d3ae902bae87a9cd7c696a0ad fix(cli): avoid voice TTS restart race 314fe9f82791b0e0cbbe32f98bf068f1f84e4cdb chore(release): add AUTHOR_MAP entries for upcoming salvage batch 645b99aadd11e858e7b01aafc79c26030133a55c test(cron): cover null next_run_at recovery and non-dict origin tolerance 78b635ee3c1d489c8dfe7e01119b774edd80e50b fix(cron): recover null next_run_at jobs and tolerate non-dict origin 91ea3ae4b2e5214390f0865329648f9cffbbc8bc test(skills): add bytes-vs-str equivalence and on-disk hash parity tests 3072e5543ba01c23358772db5fe1a2e770ee108a skills-hub: hash binary skill bundle files correctly c90f25dd1f86f3fb015a4c8c63645a61db5ac8b5 chore(release): map daixin1204@gmail.com to @SimbaKingjoe 744079ffe604371774f454ce46779ce0fcd43f0f fix(curator): prevent false-positive consolidation from substring matching c0300575c19f23aa8ed0ad067bb4faa20aa1b722 fix(kanban): use get_default_hermes_root() in list_profiles_on_disk 1964b0565b96b15ac8435d522de5844aec2261a6 test(kanban): add failing test for list_profiles_on_disk with custom HERMES_HOME 8163d371922768c32f43eb6036d7d36e56775605 fix(skill): reference built-in video_analyze/vision_analyze tools in kanban-video-orchestrator (#19562) a11aed1accc735ae0d7af80d626b33870d4b696c fix(cli): local backend CLI always uses launch directory, stops .env sync of TERMINAL_CWD (#19334) 0a23537829b73052cdb76602719bf45eb9efb0b5 fix(kanban): discover profiles under HERMES_HOME, not hardcoded ~/.hermes 434d70d8bc234fb4151833c104201759a61ab833 Merge pull request #19540 from NousResearch/single_container_for_all 5671059f62ab28fa118b15fa148d5ae9a4200574 feat(docker): launch dashboard as side-process via HERMES_DASHBOARD=1 Adds an optional dashboard side-process to the container entrypoint, toggled by `HERMES_DASHBOARD=1` (also accepts `true` / `yes`). When set, the entrypoint backgrounds `hermes dashboard` before `exec`-ing the main command so the user's chosen foreground process (gateway, chat, `sleep infinity`, …) remains PID-of-interest for the container runtime. docker run -d \ -v ~/.hermes:/opt/data \ -p 8642:8642 -p 9119:9119 \ -e HERMES_DASHBOARD=1 \ nousresearch/hermes-agent gateway run Defaults chosen for the container case: - Host: 0.0.0.0 (reachable through published port; can override to 127.0.0.1 via HERMES_DASHBOARD_HOST for sidecar/reverse-proxy setups) - Port: 9119 (matches `hermes dashboard`) - Auto-adds `--insecure` when binding to non-localhost, matching the dashboard's own safety gate for exposing API keys - HERMES_DASHBOARD_TUI is read by `hermes dashboard` directly — no entrypoint plumbing needed Dashboard output is prefixed with `[dashboard]` via `stdbuf`+`sed -u` so it's easy to separate from gateway logs in `docker logs`. No supervision: if the dashboard crashes it stays down until the container restarts (documented in the `:::note` panel). Other changes bundled in: - Deprecate GATEWAY_HEALTH_URL / GATEWAY_HEALTH_TIMEOUT env vars in hermes_cli/web_server.py with a DEPRECATED block comment and a `.. deprecated::` note on _probe_gateway_health. The feature still works for this release; it'll be removed alongside the move to a first-class dashboard config key. - Rewrite the "Running the dashboard" doc section around the new single-container pattern. Drops the previously-documented dashboard-as-its-own-container setup — that pattern relied on the deprecated env vars for cross-container gateway-liveness detection, and without them the dashboard would permanently report the gateway as "not running". - Collapse the two-service Compose example (gateway + dashboard container) into a single service with HERMES_DASHBOARD=1. Removes the now-unnecessary bridge network and `depends_on`. - Drop the ":::warning" caveat about "Running a dashboard container alongside the gateway is safe" — that case no longer exists. 95f395027f72c69f06bddcecb08da53cfd10c440 Merge pull request #19520 from NousResearch/fix_docker_tui 2f2998bb1b0d6a1b1c2c14b66b72982595b91506 fix(tui): tolerate npm's peer-flag drop in lockfile comparison `_tui_need_npm_install()` compares the canonical `package-lock.json` against the hidden `node_modules/.package-lock.json` to decide whether `npm install` needs to re-run. npm 9 drops the `"peer": true` field from the hidden lock on dev-deps that are *also* declared as peers (the canonical lock preserves the dual annotation). That made the check flag 16 packages (`@babel/core`, `@types/node`, `@types/react`, `@typescript-eslint/*`, `react`, `vite`, `tsx`, `typescript`, …) as mismatched on every launch, triggering a runtime `npm install`. Inside the Docker image, that runtime install then fails with EACCES because `/opt/hermes/ui-tui/node_modules/` is root-owned from build time, so `docker run … hermes-agent --tui` prints: Installing TUI dependencies… npm install failed. …and exits 1, with no preview. The empty preview is a second bug: the launcher captured only stderr, but npm 9 writes EACCES to stdout, which was DEVNULL'd. Fixes: - Add `"peer"` to `_NPM_LOCK_RUNTIME_KEYS` so the comparison ignores the non-deterministic field, alongside the existing `"ideallyInert"`. - Capture stdout as well as stderr in the install subprocess so future failures surface a useful preview instead of a bare "failed." line. Regression tests: - `test_no_install_when_only_peer_annotation_differs` — the exact scenario - `test_install_when_version_differs_even_with_peer_drop` — guards against the peer-drop tolerance masking a real version skew On-host impact: the same false-positive was firing on every `hermes --tui` invocation from a normal checkout, silently running a no-op `npm install` each time (it converged because the host's `node_modules/` is writable). Startup time on the TUI should drop noticeably. 363cc936746c3f2964427b635f80f57df528da54 fix(cron): bump skill usage when cron jobs load skills 808fee151d42b77a763ea4a8ec711d7b501cece6 fix(auxiliary): propagate explicit_api_key to _try_anthropic() 74636f9c4aa3e9dbeaff64dc3b540aef9482c375 fix(gateway): clear queued reload-skills notes on new/resume/branch 222767e5e81696fc2b184d4a806a07e05ce969d7 fix: sanitize Telegram help command mentions 6fda92aa7f044ce684f6ac11e3f8871a1a70decc fix(gateway): bridge top-level require_mention to Telegram config 1bd975c0ba87c644d560ca7bd62cc47274a8a919 fix(gateway): suppress duplicate voice transcripts b58db237e4e1943daeab34fcc38a25e034bafb30 fix(kanban): drop worker identity claim from KANBAN_GUIDANCE (#19427) 6713274a4297ab1cf601d93655b458ab3e66d083 fix(file): strip leaked terminal fences from reads 2d7543c61f1334bdcfa741776a357c274830de8b fix(windows): enforce UTF-8 stdout/stderr to prevent UnicodeEncodeError crash 2ababfe6edf815248daa1d123bd6568e04cfd7f4 chore(release): map 0xKingBack noreply email 3c420245395e3e5e074949c4bfdfb25d3156cb98 fix(curator): pass auxiliary curator api_key/base_url into runtime resolution 3792b77bd11dcccab3b0994bd31086969fb9f5fb fix(send_message): support QQBot C2C and group chats 86e64c1d3bc0324452202cf8e26703dbef7839b3 fix(gateway): hide required-arg commands from Telegram menu 408dd8aa28cb959f1a1e869929651c181de63e1e fix(compressor): skip non-string tool content in dedup pass to prevent AttributeError 5bd937533c9cef3646d1e464f9a9a3aabec7b774 fix(vision): guard user_prompt type in video_analyze_tool before debug_call_data construction 6c4aca7adca44e67e45f85b143a46ed3d88a7328 fix(vision): guard user_prompt type before debug_call_data construction a5cae1649675947d04034010f1fa22d15b2c6c4c fix(api_server): fall back to default port on malformed API_SERVER_PORT 65bebb9b802616122c30fd8fea6c4c47514b45e4 fix(cli): follow 307 redirects in MiniMax OAuth httpx clients dfdd7b6e6fc3ec3b637d200d95e36adc7c6a49bb fix(codex-transport): preserve request override headers for xai responses 4a2f822137bf69728bd594613002671c93d2a64d fix(mcp): reconnect on terminated sessions 2658494e815b4644cb2ed47dc6cb6623b6ecf112 fix(kanban): add per-path env overrides + dispatcher env injection f5bd77b3e16d86e3cbd75a9d6bd719f28dd8dbb9 fix(kanban): anchor board, workspaces, and worker logs at the shared Hermes root 7e780f4832ed8c34a23dd292b522df3e9705bd0a fix(tui): run plugin slash commands live 167b5648ea609aafa85f56c5714f7abda5091ed6 Revert "fix(cli): CLI/TUI on local backend always uses launch directory, ignores terminal.cwd (#19242)" (#19329) ec9645234dff197ae9e6b281286e47bd150677fe test(skills): add bytes-vs-str equivalence and on-disk hash parity tests 5f58a9957a0cdcf5197daeeb8f3861bf4cfce66f skills-hub: hash binary skill bundle files correctly 9eaddfafa30018b1d4eb3e5e72bbe2d242f8e50e fix(cli): CLI/TUI on local backend always uses launch directory, ignores terminal.cwd (#19242) b8ae8cc801df3bb440d86b826795fcbceffa9372 fix(debug): redact log content at upload time in hermes debug share c9a3f36f5656f1a3d543e5b6be1fd05b98783c53 feat: add video_analyze tool for native video understanding (#19301) 9ca5ea137524e6d33d037b695d33467c1c012f65 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui fa92720d2ce866f3ef715e1ada4a8db70e849010 chore: uptick 0dd8e3f8d876ce3d8d0c2e507b11be65eda180c1 rename: video-orchestrator → kanban-video-orchestrator 511add724987eeb03c10a69ae17d0b0e93765d1f feat(skill): add video-orchestrator optional creative skill e97a9993b91934252c6ae4167a4401dfc709d3ce Merge pull request #19307 from NousResearch/bb/fix-terminal-resize-jumble 279b656adc3c64db7529fa85bbd744f1aa28cfbe fix(tui): clear Apple Terminal resize artifacts e527240b2700cc44f467a00e538f55c99d98eb23 fix(tools): write_file handler now rejects missing 'content'/'path' args instead of silently writing zero-byte files (#19096) 6b4fb9f8789717e5dad8d920cbd6cd02e53c5175 fix(cron): treat non-dict origin as missing instead of crashing tick 69dd0f7cf1f4df03e8b8e80aecc906dbd2b22d12 fix(approval): extend sensitive write target to cover shell RC and credential files 3c59566cc5129d85281f518bc446c06fab6ab767 chore(release): map leprincep35700 email for PR #18440 salvage b59bb4e351c4cdca97e906accb4bbe9193c381b6 fix(gateway): preserve home-channel thread targets across restart notifications d87fd9f03958995ce8234ec359a13fceabbf9ebf fix(goals): make /goal work in TUI and fix gateway verdict delivery (#19209) 55647a581349d245b903621ab1ccbd55c4a7ede2 fix(whatsapp): pin protobufjs >=7.5.5 via npm overrides to clear 3 critical vulns (#19204) 6f2dab248a6cc8591af46e5deb2dc939c2b43146 fix: update tests for resume_pending semantics + add AUTHOR_MAP entries 1148c462417369640fc0a821d1879d0c9426ed30 fix(gateway): correct ws scheme conversion for https urls 7a22c639dc840aecd317312d7c267596d9ac6adb chore: add shellybotmoyer to AUTHOR_MAP 934103476f3199f6c7ed081641bb4e48478b821a fix(gateway): send /new response before cancel_session_processing to avoid race (#18912) bf3239472ff17c1fbe8dbb7580812e5a810877ec chore: add millerc79 to AUTHOR_MAP f1e0292517c15be09f9f1fb6a61046993b562586 fix(gateway): resume sessions after crash/restart instead of blanket suspend 0a97ce6bff49163b74b1d76418c4b1b3f2455b76 chore: add nftpoetrist to AUTHOR_MAP 6c1322b9972ce61419df7df6ad7ae5a261fef9d2 fix(slack): close previous handler in connect() to prevent zombie Socket Mode connections c14bf441a313cf02b82f2964c1b46e5e252a12ba chore: add 0xyg3n noreply email to AUTHOR_MAP 19ba9e43b621cbcc1488cd9f9c38050154386e37 fix(gateway/discord): require allowlist auth on slash commands 5d5b8912bece744b08b5d6428f2ad12ff6969f87 test: add tests for cmd_key preservation through name clamping c4c0e5abc2b579ce1a4cca4d5ff808550f754662 fix: After _clamp_command_names truncates skill names to fit the 32-cha… 739b30bc021fc2d8202b4fea8aed91c389f7fc33 fix: follow-up fixes for TinyFish browser provider salvage f41ebf7785729277e71cec755a936f371e749931 feat(tools): add TinyFish cloud browser provider 457c7b76cd69089142f7ee02bf26ed5fef9d8741 feat(openrouter): add response caching support (#19132) 9b5b88b5e028f8c799053aae624be40e616b5d8d chore: add MottledShadow to AUTHOR_MAP a22465e07ab4b71019f711e7a6463f6590c50742 fix(weixin): send_weixin_direct cross-loop session check 05fa5a101c56c81a70d8b90576ff2c86743ee54e fix(acp): compact Zed tool replay rendering e3e3a43ac99d9c72cf264bed770100ddf973c0ec Schedule ACP history replay and fence file output 67843295d6ef27b20fc6680b61d7fa1c76c1c274 fix(acp): keep web extract rendering compact f34691fd18b4cfa55b1e2c0febc9bde24a5c1b0b fix(acp): keep read-file starts compact 2791ba8ad53ff0be37358bf234544106ea5c0439 fix(acp): polish common tool rendering 5203680ef70c0188085479e1aa919ea2a30fc82d fix(acp): polish Zed context and tool rendering be8257be8e66faf3560fb8b0e46e846f787b4cce fix(acp): route Zed thoughts to reasoning callbacks 9987f3d82486b04151dee2d27d640b3ae01b7b16 fix(acp): compact Zed tool replay rendering 19854c7cd2f00e3d591e72ccbe2e456ad10c4886 Schedule ACP history replay and fence file output eb612f55748d8f0888f09f055abd86afef925150 fix(acp): keep web extract rendering compact b294d1d0229ff6026838a04c4cb59c3b13e4827f fix(acp): keep read-file starts compact 72c8037a24b58b7b1a38a99903cc0bf8a3d7595c fix(acp): polish common tool rendering ef9a08a872d1ed87eb4c91cf8ad8e8f4ef5a6e2b fix(acp): polish Zed context and tool rendering e26f9b207041c03d1aa9a982d29dbfda66df3a82 fix(acp): route Zed thoughts to reasoning callbacks 4f37669170bb7886b94acbbf3630bf70650f7295 fix(tools): reconfigure enabled unconfigured toolsets d409a4409c8f11ccf029eff33a2eb9860f92e761 fix(model): avoid bedrock credential probe in provider picker fd97a7cba4ba5788f4e8a4601bfd42ed8b16edee chore: uptick 6dcf5bcbc0db83e3f1f79e231066c948ed057f20 feat: better pane management and toolbar api a66303eaefe65c2ce15111c7bbf83aabd924272d feat: move dashboard to apps/ so we can share ws proto 5d3be898a8671eb9fb99cf18f43165502f54e7f4 docs(tts): mention xAI custom voice support (#18776) 5e4473df9613363f14eb8ac5068d16806affc746 chore: uptick af981227937f54ccd621673f1e86ee196134a005 fix(auxiliary): propagate explicit_api_key to _try_openrouter() 73bcd83dba7ed3d621d982d87fc02923964121ac chore(release): map beibi9966 email for AUTHOR_MAP 762eb79f1e1985a54758d40f3d3caa2f119bd4da fix(gateway): tighten httpx keepalive and close whatsapp typing-response leak (#18451) 38dd057e91dcc47e82478ebc31c66d67b2d96ace fix(feishu): finalize remote document downloads inside httpx.AsyncClient context (#18502) e444d8f29cead99781cbd4306160b81887b3f4e5 fix(gateway): config.yaml wins over .env for agent/display/timezone settings (#18764) 13f344c5ce2fe57b55b18b767b5945dd596971c0 fix(agent): try fallback providers at init when primary credential pool is exhausted (#17929) 1dce90893016a822480599d02505664c294f255c fix(gateway): shutdown + restart hygiene (drain timeout, false-fatal, success log) (#18761) 50f9f389ec1df2618ec1d61a24f7358a52fbe0f8 chore(release): map ambition0802 email for AUTHOR_MAP 7696ddc59eba81624014d7bfc063f8ad7fe61598 fix(cli): robust paste file expansion and process_loop error handling (#17666) 5eac6084bc781377cc1432165ebb489ccf5d6fbf fix(discord): warn on 32-char clamp collisions in the /skill collector (#18759) e363ced3c3959392268fd1ea8b85334b889aa298 test(discord): regression coverage for zombie-websocket guard in connect() 292d2fb42fe304e4d6e6184f39e1f60e5aa771f8 fix(discord): close old client before reconnect to prevent zombie websockets (#18187) 0a6865b328ee6057eb59ee4a150c4886aa72d48c test(credential_pool): regression coverage for .env vs os.environ precedence 9c626ef8ea8bc190f9a339991c8de26ce4528bb5 chore(release): map franksong2702 email for AUTHOR_MAP 2ef1ad280beee581e0f023901d0d040efec380ac fix: prefer ~/.hermes/.env over os.environ when seeding credential pool 10297fa23c982a563844a1014f16bec77e1b6598 fix(discord): `/reload-skills` now refreshes the `/skill` autocomplete live (#18754) 6ec74aec0705df82475d402e761afc6a50c29ad1 fix(gateway): match disabled/optional skills by frontmatter slug, not dir name (#18753) 8825e9044c2657b726f589f4287cf827f77ff44e fix(discord): complete #18741 for /skill autocomplete and drop legacy 25x25 caps (#18745) 2470434d60991a46e0fd4733e4a69722acb97ebe fix(telegram): probe polling liveness after reconnect to detect wedged Updater 9bf260472bca9f8097bf442f5c5e6dd1984dd4c3 fix(tools): deduplicate tool names at API boundary for Vertex/Azure/Bedrock 699b3679bcaf000165902f246b6f5a6b99133efd fix(constants): warn once when get_hermes_home() falls back under an active profile (#18746) 98c98821ff1e3195dec55fde081fd59efdc5726b chore(release): map CoreyNoDream email for AUTHOR_MAP c5e3a6fb5bb33477d639219de14922caedda98ef fix(cli): decode .env as UTF-8 to avoid GBK crash on Windows e2cea6eeba36e8d6b96c0ed08bc4514b5c07c464 fix(gateway): include external_dirs skills in Telegram/Discord slash commands (#18741) c73594fe4196b5ee331d25f86774e66ad0f67a69 fix(skills): rescan skill_commands cache when platform scope changes (#18739) 97acd66b4c58c7945f573a6efd6059e781eb4f8f fix(curator): authoritative absorbed_into on delete + restore cron skill links on rollback (#18671) (#18731) 215bf4b96c1d4bf0bbaf4b5a8681691d9d2bda21 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/gui db884f464683fca16b5e953df102f5cf6097ba4c chore: uptick f98b5d00a49b01fb833deecace78656035bc6f6d fix: gateway systemd unit now retries indefinitely with backoff (#18639) 420f68e4e263cca2bbb346edf11afd10a48260e8 feat: add install readme et al 585d6778da28f4a63205d95a296358e2cce23ed6 fix: allow WebSocket connections from non-loopback IPs in --insecure mode (#18633) 935970898fd35eb9ac48482bb02604269988f87a chore: uptick 322cc94c9816b69132f7669217a8c121be1ecddb chore: uptick cd381d6ba5648c4b5b45fd96d6c456edea3116ff chore: uptick e00297782d02a5b60aead2df1c94c6186315bf46 chore: uptick d5d7b5c6dc727628b3123eb44b711554eeb55098 feat: lots of speech stuff 4a3eac5fe140daa844aa964a729981617ac2e35a feat: add /recap slash command — summarize recent session activity 9f3d393a4d03473a84801c512000d3c03f05bf19 feat(desktop): polish chat voice and loading states f903ceece034eb8f27b03d241c1f14eafca6c5ea chore: add contributors to AUTHOR_MAP for Slack batch salvage d05a87e68662043ac7d66dad942e428a81cd648f fix(gateway): clear slack assistant thread status a147164d3c4ceb7e2900e240e90d0f1db7910bf8 fix(slack): preserve per-user slash-command session isolation 5cdc39e29a032091c4989045b0843715737680c3 fix(gateway): preserve case-sensitive chat IDs in DeliveryTarget.parse 2b3923ff138f5bd68e576b722ee298a8ce07dfe7 fix(gateway): coerce scalar free_response_channels to str before split a717199bbf31a0900a99b06153d3ba5803cd9012 fix(slack): exclude reserved Slack commands from native slash manifest 8fcc160f6b979f9567e76f189e226c18cabc6308 fix(gateway/slack): review fixes — scope ephemeral to commands, user isolation f34d298495b05c12ab012fb95b6bd108bf7043b3 chore: add probepark to AUTHOR_MAP 0ab2d752ffdae211b0f4fd06c8f62cf7eec191a7 feat(gateway): private notice delivery and Slack format_message fixes 7cda0e522443c6e7790793b93b085508fc530fc8 fix(gateway/slack): ephemeral ack and routing for slash commands 6c624f197cc615779fc3a379812f5424ddfa3eb8 feat(desktop): wire gateway support 7b61f86529cfa414e192bac4dbee9ff7a5adb411 feat(desktop): add structured desktop chat app 0b76d23d1acffd14bbc5061cd4f913cf7a0e1a8a makes the Persistent Goals docs accessible in the docs nav (and llms.txt) (#18481) f99676e315408db3742e00ca9808a31592704399 fix(gateway): auto-restart when source files change out from under us (#17648) (#18409) 77c0bc6b13c8c3f849111c41f2e9233a13b3dcb2 fix(curator): defer first run and add --dry-run preview (#18373) (#18389) 52ea424ec1774473297df16d9d707dc5eb897ad8 fix: lazy session creation — defer DB row until first message c5b4c481656634ff919b214a037b830077d3bbd1 fix: lazy session creation — defer DB row until first message (#18370) 20132435c07cd1cee9f896ba9cd504698c09589c Merge pull request #18117 from NousResearch/austin/fix/model-selector 5ad030d19d71523bb4c901991bc0fac47cdd1ebf Merge pull request #18095 from NousResearch/austin/feat/plugins-page 05c63259b5a7073aaee2af26e3815a39017b7b89 Merge pull request #18358 from NousResearch/fix/kanban-buton a01c1f7305bda8ebc5cbcde22f2a80a0300a2ca1 fix: kanban button 75e1339d4cdb32652e560eccc3930cc9264ac67b fix(telegram): send seed message after creating DM topics (#18334) 0159f25fd024c76a5a1f66fdbca39a828e4e2a61 Merge pull request #18281 from NousResearch/bb/fix-tui-docker-ink-v2 b7ad3f478f9bc24768f88e4339fc3e6e23d0292b fix(yuanbao): enforce owner identity check on group slash commands a2a32688ca8ad13727e38df85f3f2820f5a31902 docs(website): add User Stories and Use Cases collage page (#18282) a49f4c617da3ddcb37a2f438b083b960090ad42a fix: prevent tui rebuilding assets dfe512c58db60910676d6b9c6725f72bb8f39590 fix(paths): route achievements plugin + profile-tui through HERMES_HOME c6eebfc25a5779668ae2fefe27f5d85a82055ab3 docs: publish llms.txt and llms-full.txt for agent-friendly ingestion (#18276) cf2b2d31ce77ba87c114c53966d7f7cc629cad9e docs: add Persistent Goals (/goal) feature page (#18275) 2af8b8ff3712c71620f32b1fa57e92289e6ca202 fix(moonshot): also strip nullable/enum after anyOf collapse 9cb5baeacfc7c026c6f228aebfc89959a5d2acc5 chore(release): map hendrixfreire for moonshot salvage 9ca72a69a730e442ad6f14e5f2f51c8f2011dcb7 fix(moonshot): fill missing type before enum cleanup to handle anyOf branches without explicit type 77dd6d54699f39ca7999196690f2db8e73d4db01 chore(release): add mikeyobrien to AUTHOR_MAP 1be3b74cfb456a2271f16068b08f72b83b37308d fix(gateway): honor MATRIX_HOME_ROOM in onboarding 265bd59c1d9f8dea658f243b257d4fae3685af53 feat: /goal — persistent cross-turn goals (Ralph loop) (#18262) 7c6c5619a7b85ef7ed873632e25a4a4745563866 docs(sidebar): collapse exploding skills tree to a single Skills node (#18259) 50c046331dc722fa875fd290ce29b9cc5130fc08 feat(update): add --yes/-y flag to skip interactive prompts (#18261) 4caad285a602b75c1da1c7d553864278d7aa723d feat(gateway): auto-delete slash-command system notices after TTL (#18266) e2eb561e8e1a069392b494811ea45be6779493cd fix(curator): rewrite cron job skill refs after consolidation (#18253) bfb704684ec64675650bc39fa0f731604b12aba2 fix(deepseek): use non-empty reasoning_content placeholder for V4 Pro thinking mode f0dc919f92c5327cf8033e06c039126f1288e89c fix(compression): include system prompt + tool schemas in token estimates (#18265) 41fa1f1b5cf560c22a7e9adb06eb463d7122f9e0 fix(acp): run /steer as a regular prompt on idle sessions (#18258) fc78e708ed0c684c20987b23657208c76d45fc5a fix(update): don't crash hermes update if skill config scan fails (#18257) ec1443b9f106bf0c4e83669d9abea8ecf934fb3d fix(acp): normalize Windows cwd for WSL tool execution 78886365c2a04f3367028190b71c5b4a96433279 fix(acp): replay interrupted prompts for steer e27b0b76517c903541af20d0bd606fa7b3c83005 feat(acp): add steer and queue slash commands 8fa44b17247efa8cae6b0f155e036e1bdf4d7da8 fix(guardrails): preserve display _detect_tool_failure semantics 0704589ceb1365c1b7aefff382923ed28380714e fix(agent): make tool loop guardrails warning-first 58b89965c8c4489db817be737eb4e458df0a8e06 fix(agent): add tool-call loop guardrails c23c7c994bf8b77c513b7c3fb4a68774970e47ac fix(tui): address remaining review feedback — ordering and digit shortcuts 8d7500d80d1e20f963d531bb459c36c6922b2ad3 fix(gateway): snapshot callback generation after agent binds it, not before 27ec74c68a16d411f1184dfae45d139dda33d6d5 fix: coerce show_reasoning and guard_agent_created config bools bb706c3f38600cefdd651583220b8da1f980e3e3 fix(gateway): coerce tool_progress_command as a real boolean a94841eaa0a89bde990fe76743f1aa7ddb6866bb fix(state): include finish_reason in conversation replay 7ba1a2b3df0cc6ebb5de37ded726ca3281a04a14 fix(gateway): preserve assistant metadata when branching sessions 55366510e55a9a15cbba3d7e59667d215d4b9a26 fix(auth): make provider config writes atomic 787b5c5f934a72df349dc2522f942d26db58f18f chore(release): map Mind-Dragon and JustinUssuri emails for AUTHOR_MAP ab6c629ccc31ed2dea0b6a2955750b75416d0058 fix(terminal): skip sudo prompt when local NOPASSWD sudo works ccfe6a47c3fd68064a286b648d118bf73d9730d7 fix(gateway): coerce StreamingConfig booleans and malformed numerics safely 24130b7e53abcd434c7d0ce06de93b27b57047f8 fix(approval): harden YOLO mode env parsing against quoted-bool strings 158eb32686cdaebae6737d6874060b14b2d6eda4 fix(gateway): preserve document type when merging queued events adaee2c72c3ec85129b6b1cac8c7c6e791dd94e5 test(skill_utils): add regression tests for non-dict metadata in extract_skill_conditions e21898ea987e2b671a57346df06307d409f7bad1 test(discord_tool): add regression test for per-token capability cache fa7b0b0a67886f6d50e55d06370434e4f84ebb00 fix(discord_tool): key capability cache by token instead of single global 82b5786721d2ea4741899e59ddb2358ad200b805 test(browser_supervisor): cover cache-hit healthcheck on dead thread/loop 73a6b80317652a63faad3d8f0917e38e82cf8175 fix(browser_supervisor): verify thread and loop health before returning cached supervisor ec4cb16a29ec882df0ff931cda287ae97d61601c fix(honcho): guard _peers_cache and _sessions_cache reads under _cache_lock bea2562fc4b3b0e32e23a91b91809682cf6553e0 fix(honcho): replace raw int() config parsing with safe helper b94cb8e2c4ebf2a8c7688cf676c3cf9899584adb feat(feishu): operator-configurable bot admission and mention policy fa9fd26acba4d6f3907ec798974b1431b115557c fix(gateway): re-inject topic-bound skill after /new or /reset 7abc9ce4dfc389fb2363f80a38c8a12f3017a269 fix(gateway): read /status token totals from SessionDB (#17158) a17808146848023b411771257208e66b8b7d7a0b fix(gateway): use _session_key_for_source for native image buffer write bdb7edd89e09f5789fbb759dc1207a00eef7162b fix(gateway): isolate pending native image paths by session 5ed27c0f743c42d1f086f5e972f04c78eb930e00 fix(tui_gateway): guard env var parsing against invalid values at import 319141a0d19158ff10ac1d6e0e9fcb26b97395d5 fix(session_search): truncate TOOL rows with None tool_name 531ac204081f8a925f547df0f3415bcbd7321817 fix(state): JSON-encode multimodal message content for sqlite cc340c4a4d8a5c624b764443957cfc84fcd83664 fix(tui): always call input.detect_drop for reliable image attachment 19136dfc07666e40e4ff39d49ef802c42b249c1d chore: map jatingodnani email in AUTHOR_MAP 9a757434967f3834d3925fec057ec6d4e7d7411c fix(gateway): apply agent.disabled_toolsets in gateway message loop e3624e00db6ddee7b1bf4009fc19453b5317f2f2 fix: enforce strictly subtractive toolset filtration 8e58265b60322c549dc61c64a82e06b6ada98541 chore(release): map allard.quek@singtel.com → AllardQuek (#18196) ebe60abc4f22c8d8f9360da76249cc55499210f4 fix(dashboard): separate theme identity from layout scale 33d24095c4a375e2a6fc6f68b353a61f21a9e1bb fix(dashboard): normalize typography and layout across built-in themes 01cc701e54efecd18ded1a0c083e640d56111426 docs + nit: busy_ack_enabled follow-ups 2b512cbca417f84c68f6bc5cfea3ac2905120c47 feat(gateway): add busy_ack_enabled config option to suppress ack messages 25cbe3e1d6cb8526e1d865a8b5d96d4d7e632933 fix(gateway): preserve thread routing for /update progress and prompts f48ba47d1ed5a4f3c864f66c486f26c0314ab666 chore(release): map allard.quek@singtel.com → AllardQuek 226fd79c8e0ad0c7548a93ec2f8db91f1a9e0239 feat(dashboard): add interactive column sorting to analytics tables 0ddc8aba6826c316060ff72f571f14bbba7058a8 fix(fallback): let custom_providers shadow built-in aliases 38875d00a736359af948bf5052379ffc37008a36 fix(gateway): ensure platform configs honor home_channel env overrides 5089c55e0b0768dfdf716b3d150f23fab13967e5 refactor(state): compute last_active ordering at SQL level via recursive CTE 142b4bf3ce1b490e0c15f9c3c3d1a9a26e6f8de6 fix(session_search): order recent mode by last activity instead of start time c8e506c383f4e834fc1a568bab67db26b70f04ce fix(tui): address code review feedback on model picker f4c761c6a095e70418876029527d2ca1a5caadf3 feat(tui): add inline provider disconnect via 'd' keybind in /model picker 26f7f68507576138d2e62e54013e7323763e89b2 feat(tui): show all providers in /model picker with inline API key setup 36fa8a4d28cfb682932bca7f9b23d5882e692c36 fix(tui): show absolute position numbers in model picker 443950e82736aa02c7ff61dda75426dbbbbdb161 fix(tui): pass user_providers as dict to match CLI model-switch pipeline 96691268dffa40df7110bcab6bdf63ada260a06d fix(gateway): drain manual profile gateways via SIGUSR1 before respawn 77fe7ab6b20d0d8ec0aeadff6d0d69074db2fdbe feat(gateway): restart manual profile gateways after update 84324d06b8888998e6158b840f72bfe96110718c chore(release): add quocanh261997 to AUTHOR_MAP 8b7b074df9506d512b80ab6855f9773041314e0e test(context_compressor): regression test for PR #17025 tail-protection off-by-one b194617d00981d8ea850f100ed262698090963da fix(context_compressor): off-by-one in tail protection for short conversations 2997ef944696b3f9ebbe5bc545735ba473bddbf3 fix(api-server): use session-scoped task IDs for tool isolation a83d579d5b5e3b971f85c2f27b81b9c1efe3d037 fix(telegram): enforce gateway auth for inline approval callbacks 9ae1fa9e39057517ef4cb70511e3e294f39e1a2f fix(delegate): honor runtime default model during provider resolution b29b709a71273cccbd9752035acb8104dc5d7cc5 fix(agent): sanitize Codex tool-call history summaries f43b1266772df10699ba5f50d3b06f0d6ac4310a fix(gateway): atomic writes for sibling recovery/dedup state files 1ef9e88549fbcbc3f409e912355ced92942e4188 fix(gateway): write restart markers atomically and fix Windows lock collisions 447a2bba3ac9e9fbc3c80a7bab083b18da085705 fix(plugins): bound async plugin command await with 30s timeout ca9a61ae3828a7db53a02e84c1d0b67b744c7739 fix(plugins): await async handlers in CLI and TUI dispatch 79cffa9232a1bb67a6184fc7f6b5139bec5d9d8c auth: coerce tls insecure flag safely instead of using Python truthiness 2bf73fbe2c2a3b85315345b89090062ab3f83622 fix(cli): coerce tls insecure flag safely in auth state 7cbe943d2dc1cd559320f33ff786b431c879ef06 feat(skills): add here.now as an optional skill 21cc9c8d329f44ae61a3b2845d1fc2c484d852cc Update here.now skill bundle f7dfd4ae36649513f6cdcfd8266e4e8f45c1f9f6 feat(skills): add built-in here.now skill 2110a3a0c435f142f010769d4ecd4455be5dab6b fix(tui): return JSON-RPC errors for invalid request shapes 5f3f45678400d877f13351fe359b771b9bb7f787 fix(approval): wake blocked gateway approvals on session cleanup f4ba97ad9ad45c6fd2a4b876301d00f023424304 fix(status): add NVIDIA_API_KEY to hermes status API keys display 75483b6db1a1009ddb3776ccc46b1005dceeb672 fix(curator): preserve last_report_path in state aab5bcc6aca7547f9b6176674b72399d8b89727a test(model_switch): cover private user_providers override 5ad8281885d8596ed41c1e136e0f354b14bdeb4a fix(model_switch): correct user_providers override for private models 1e5a23fa647e57f8899699778ea807303eaa68ab docs(teams): use teams app get --install-link for Step 6 67f1198ba93a274a3c4501bc7b9f3d9b2324a2a6 docs(teams): fix CLI install tag and Step 6 install flow d5e72ae17fd2081d5dd30ef4673b6d4075d00777 docs(teams): fix CLI install tag and Step 6 install flow a5d60f42ee74e3be77f814ec97f8ab2b8e441708 docs(teams): fix CLI install tag and Step 6 install flow 09aba917661ff5da5ced53a234447c3a9108120a docs(teams): note that tunnel port 3978 is the default, not fixed f59693c075647faa99e33011e86b00e738be707f fix(teams): pipe TEAMS_PORT through docker-compose properly c997830e1e5a2a03f941b271bdcd8081da034fc7 docs(teams): fix port references and add TEAMS_ALLOW_ALL_USERS 4a6fac36d8fcfae90ce9a3b228685984f92c3cb1 docs(teams): fix group chat behavior — @mention required 624057fce6e676df008e55f35f1219ad3b367474 feat(teams): set User-Agent to Hermes via 2.0.0 client option 97d6f25008d6091c490057a74f24aafa14c086a4 test(toolsets): include kanban in expected post-#17805 toolset assertions f61695ee73fce5427a213258799844a48a66bc9c fix(signal): skip contentless envelopes (profile key updates, empty messages) e2e6b6ff1a56d13264ddcac31c5548e895e8e486 chore(models): move Vercel AI Gateway to bottom of provider picker (#18112) c73b799de70d6f655533e2aaf61a22332982f09f feat(dashboard): add hide/show toggle for dashboard plugins in sidebar a52363231faacec860f19fd411ea1377202cd7ea refactor(plugins): move rescan button to page header, remove redundant title 9550d0fd46d11db3fda2aef7b5de3576819f1843 fix(plugins): show 'Plugins' in page header instead of 'Web UI' 7dc85495e05d9a955aef74f1aa5da18ea4b1cf52 style(plugins): make page full width 6549b0f2b7feb6c0123a8eb9b550d6bac338f7f0 fix(security): address CodeQL path-traversal and info-exposure findings e2a490560610ff5edd343913ccce06d0ba383d10 feat(dashboard): add Plugins page with enable/disable, auth status, install/remove 9a85c99d58b7db426401465b2197f44795b7a293 fix(mcp): validate remote URLs up-front with a clear error 29c850058fc3ec2669e90e4cf6694818c2602d3e fix(moonshot): strip $ref siblings and collapse tuple items in tool schemas e5dad4ac57ad11d39fe18b1ac895c0e0ae5b6494 fix(agent): propagate ContextVars to concurrent tool worker threads (#18123) 180a7036bc41b0689a95bd4cce595978b73162f4 feat(skills): add Shopify optional skill (Admin + Storefront GraphQL) (#18116) 8fed9696189241dcd74f20b85367997ca844c745 Merge pull request #18113 from NousResearch/bb/tui-sgr-mouse-fragments ded011c5a5b4974c6c05ff2d6a9e63ed3e75655c fix(tui): tighten SGR fragment matching 71b685aee0e7f2f7c7dbdbd3e9b91ece66a701a4 fix(tui): recover fragmented SGR mouse reports 9d645d98c445c94826eb0d88ba5fe8ab62faf483 fix(tui): update README 242659f5af3121ef9bb397c2559f67fdfbce13a4 fix(tui): don't hardcode /home/bb 42df7ec597e0ddd96edc7c0cb0e1c805a7cfcf6b fix(tui): update comments 42e166c7ea2e00e86c0e77f6a6536140b3707827 refactor(docker): drop manual @hermes/ink build, rely on esbuild bundle bbbce9265188ecc865b71728a592769213fa4d1f feat(tui): render self-improvement review summaries in the transcript 80a676658ccfeff524e47c30ae32323524e8409d fix(cli): surface self-improvement review summaries from bg thread c868425467502f4ffa9757e731477cf91262fa3f feat(kanban): durable multi-profile collaboration board (#17805) 59c1a13f4542f5d4e8437d419d653d7af0a49eef Merge pull request #15680 from NousResearch/fix/nix-package-lock 1d8068d71d7ca02b0a4c4170fb0dd65eb6ee549c feat(models): add openrouter/owl-alpha (free) to curated OpenRouter list (#18071) 279504d5b887ad57a7da4c3ca8d7d534d7ca47fe fix(nix): refresh npm lockfile hashes 9ac4a2e53e59232944fd90d9f4adad27b17c2685 fix: let fixing nix pkgs command work without an initial build 42627b4eafbe632fb663238b7f595f1cdb67acd4 refactor(tui): bundle with esbuild, drop runtime node_modules 6bc5d722710c2cba22112dddbe359f341940cdff Merge pull request #16419 from vincez-hms-coder/feat/dashboard-profiles-hms-coder b737af82261bbe87b3f4885f66c0cc6b98c98a49 Merge pull request #18047 from stephenschoettler/fix/acp-persist-user-message-test-mocks 73bf3ab1b22314ed9dfecbb59242c03742fe72af chore: release v0.12.0 (2026.4.30) (#18057) 76edc40ab06ed7ce2c1b86addcd07a683f674225 fix(agent): extend thinking-mode reasoning_content pad to Kimi/Moonshot b9b9ee3e6c04df01a8c13b634318fe7d60e2602a fix(deepseek): preserve v4 reasoning_content on replay 8fbc9d7d789e4e66b078b8163706994ba038a912 Merge pull request #18043 from NousResearch/feat/help-ui 699a9c11a99f20964e4021f4ccccd198f3397a50 test(acp): accept prompt persistence kwargs in mocks d60a9917d3420e8f1169e30f46ab3dba1cf87568 feat(curator): show most-used and least-used skills in `hermes curator status` (#18033) 7c07422202211f864209ffcd2dcbf38df209e9ed feat(tui): add a mini help menu when u write ? in the input field d049d88dd7f53643749b0ce91bc65e8f78dd0f87 fix(docker): run bundled TUI without npm install f4b76fa272823c18f183d5f6ae812ccbc221ab50 fix: use skill activity in curator status 564a649e6ae77c47907708dfa4f70ce27dd0f876 fix(curator): scan nested archive subdirs in restore_skill 7913d6a90f8c2dd4c21eeda1830e8d3915c13997 chore(author-map): add y0shua1ee and 0xDevNinja for curator PRs (#18031) 8b290a5908fbac354180d0069cf12645343bc9d5 feat(curator): split archived into consolidated vs pruned with model + heuristic classification (#17941) cdf9793d6d6b97aa99e1b2f27629e52d89eac41d fix(acp): advertise and forward image prompts 29bcd2f6e98e36e67ce5277b2d32e9e1773110b7 Merge pull request #18029 from NousResearch/bb/tui-max-iterations-salvage b9d9fa7df81be93e84980d093b6b22d46607216c fix(tui): respect max turns config d499d1727134584fc3d5b9c75f42183c336353c3 Merge pull request #17969 from stephenschoettler/fix/current-main-test-regressions 2d3c041338e47c77c8f6a6d1895cced7bd52d1fc change(nix): dedupe nix lockfile checking scripts in ci (#18000) e7d84348d321d5afa6e9d24d19ed1409757784e3 test(auxiliary): guard raw-URL plumbing for Anthropic-compat endpoints 4e296dcdda9dcc7b722961dc0a312684bc029d2f fix(auxiliary): pass raw base_url to _maybe_wrap_anthropic for correct transport detection (#17467) d954d6fbcf0341741f0b1b42907b16f4b7e5dbdf Merge pull request #18024 from NousResearch/bb/mouse-mode-fast-path e30de51ee9e22a92547583675ea1be8335f01dcf fix(cli): tighten terminal leak fast path 285e9efb3f2251f09cfbc9acb335c3d943d5a7b2 Merge pull request #17701 from NousResearch/bb/mouse-mode-self-heal cad7944b929174afd99d0ad6134e7bdef2218645 fix(tui): reset extended keyboard modes 407dfbb0219867706972fb2ad2be1554351a5fa2 fix(ci): stabilize current main test regressions 9a145406031aab0054868d27e64314e165a15806 fix(nix): replace magic-nix-cache with Cachix (#17928) ae8930afa52c75c7e16891281427e531edca64e4 fix(skills): also bump_use on skill_view tool invocation 4178ab3c07652fe383551615333669cc73c713fa fix(skills): wire bump_use() into skill invocation and preload paths (#17782) 4c792865b44d73aaf763aaa2b79d7179ed531ee8 test(gateway): pin cleanup invariants for #17758 in-band drain hand-off a845177ebea77c5a8b8b44d24bfb33618622405b fix(skills): also exclude .archive in skills_tool + add author map entry eda1d516dc7b05b658d4ab9f317b6170c3de5b05 fix(skills): exclude .archive from skill index walk e8e5985ce6ad35c5a418feb4e2237024997e29b6 fix(curator): seed defaults on update, create logs/curator dir, defer fire import (#17927) d1d0ef6dbda9ef97bd63cca9f335d3b908e2d5c2 fix(gateway): persist user message on transient agent failures (#7100) 87f5e1a25a21df7fcf1fbb5febeab63a2424701a test(ssh): update tar pipe assertion for --no-overwrite-dir b50bc13ef99ddd7535c011d6e473bc8579a20f3a fix(config): preserve YAML lists in hermes config set (#17876) 3fc4c63d387f9982e3515061772a2350ee514a38 test(model_switch): update regression to reflect bare-custom guard 61fec7689d2174c49c60eafe44b326030783629e chore(release): map Andy283 gitee email in AUTHOR_MAP 201f7caed8432a1afaf5bc485259d696aa16e7a5 fix: prevent bare 'custom' slug in model.provider (#17478) e0fa2cf97259ff8f29da5b3e016bcae987517c8b fix(tools): isolate get_tool_definitions quiet_mode cache + dedup LCM injection (#17335) 70ae678af1bdff8eab18e9d69366e2e3b926c892 chore(release): map rob@atlas.lan to @rmoen 0dd373ec43976f0b6fff2108120b8d31cbf9774f fix(context): honor model.context_length for Ollama num_ctx and all display paths fbb3775770c97ea591fb254a946b61827bdc16c5 fix(gateway): enforce auth check in busy-session path to prevent unauthorized injection (#17775) cc5b9fb581bd8364292bc59e3aab5bc0ca692506 fix(transport): omit thinking_config for Gemma on the gemini provider (#17426) 3de8e2168359bc4929f46e8aac3b034bd0b1c5cd feat(gateway): native send_multiple_images for Telegram, Discord, Slack, Mattermost, Email 04ea895ffb4f8e7b4f2bb3d7959db07679bd09f9 feat(gateway/signal): add support for multiple images sending ca7f46beb5db6275160d0fd9b95c622cf96ac0ce Merge upstream/main and address Copilot review feedback 411f586c6710d8fc4f7f7b4cb55aab0f4b68bc70 refactor(gateway): extract _float_env helper for env-var float casts ca87c822ede2574e0f8b32ca66e0f886d7f0a770 fix(gateway): guard yaml.safe_load and float() env var casts against crash 5af8fa5c8cb71d16985be119ba0d1abce1e5a174 chore(release): map Heltman email to username for AUTHOR_MAP 19f9be1dffaf803bbb5bcb0d86afc20475f037e3 fix(tools): serialize concurrent hermes_tools RPC calls from execute_code 3858f9419e228872ee72a11b9fd2f3d513b361d2 fix: handle gateway Ctrl+C shutdown cleanly 01d7c87eccfec0f294cb491b888968e7af518f4a chore(release): map zicochaos to GitHub login 362996e269bd67922fc0ca6fbc4a1f022f4f8fb6 fix(runtime_provider): _get_named_custom_provider must honour transport field on v12+ providers dict f54935738c6885cfaa7062aefcdb6541e2ada105 fix(cron): surface agent run_conversation failure flags as job failure f44f1f96151c71b97811f238a404861504fd5870 fix(gateway): preserve session guard across in-band drain handoff 663ba9a58fc60b3fa3e224248bc05af1d1f09635 fix(gateway): drain pending messages via fresh task, not recursion (#17758) cb130bf7765f9f941fb301aa8724244384f178db fix(ssh): prevent tar from overwriting remote home dir permissions 8d302e37a8966a20c472c6ef202524685b864021 feat(tts): add Piper as a native local TTS provider (closes #8508) (#17885) 64d9755a79b041e69a029c7305c8a272a3942185 add-to-release-contributor-map 2662bfb7560d6e50cbdee4e86970c5f9f77d14cd fix(tests): make test_update_stale_dashboard immune to hermes_cli.main reload (#17881) 0da968e521f3870cabfba3c2d9fceb1aec9b1e69 fix(curator): unify under auxiliary.curator (hermes model, dashboard) (#17868) 658947480a01dc59a2aa7a6a06a6434d7214edff fix(acp): drop dead message_id kwarg from replay chunks d2536a72bf27b3ca01d1b48957e58cb0202b6dfb fix(acp): replay session history on load 5d253e65b799c8cf4b76e344900efe722f979c2e fix(openviking): pre-check fs/stat to route file URIs before hitting directory-only endpoints 10e43edc096f164ad64c16a5030405eaad8cb4a5 fix(openviking): fallback summary reads to content/read for file URIs bff8ab031130413e693c397db5185149c5447cea test(openviking): add helper regression coverage 97a851bf970dd8bbe20563d5281147a4829a695b fix(openviking): normalize summary pseudo-URIs to prevent v0.3.3 500s 52be0f23367ae1f051ac0154b9564e0fcb7cc9a5 merge 25caaa4a709f71026b1f419ec61adcaf0f41f914 feat(tips): add cost-saving tips from April 30 tip-of-the-day (#17841) 0ad4f55aa8d753d0a75377386e4def0b3bf42e3d feat(dashboard): add --stop and --status flags (#17840) 2facea7f71569b4596665959c358d6a3705e9be2 feat(tts): add command-type provider registry under tts.providers. (#17843) 5b85a7d35160ac8f2600fae58e3ab9ad022f0d7e fix(update): kill stale dashboard processes instead of warning (#17832) fd0796947f675fd3f1a48f65433e135d8bf2ae79 fix: stabilize CI — TS widen, sys.modules restore, WS subscriber race (#17836) aa7bf329bc06a02f05aa09d1f217433162856534 feat(gateway): centralize audio routing + FLAC support + Telegram doc fallback (#17833) 26787ce63815a5e3b36a093ca9909c4a7ba3f15f test(gateway): isolate plugin adapter imports and guard the anti-pattern e23bb18dac3483af126076fd39b26263564e480d fix(teams): rewrite interactive_setup to use teams CLI flow 45780edbbf0259a55a2e16b24c1cfae58628c9f5 feat(teams): keep card body visible after approval button click 39b0bc377ccda020d6c6279e31a24342ee3a3a7a fix(teams): override send_image_file for local image attachments ca5bebef00d342648c17ce8e614942e916b33891 fix(teams): send images as attachments instead of markdown links a696bceafaa24c68e2598eab65a7eb043af3ed8e fix(tools_config): handle plugin platforms in platform_tool_universe b3137d758c9e310c47b0a6a966a5d9f10861082a feat(teams): add Microsoft Teams platform adapter as a plugin 21e695fcb6e379018687db7445a578aba981f67d fix: clean up defensive shims and finish CI stabilization from #17660 (#17801) 3c27efbb914ae43f0f8f3c6299dc7079b91bea6b feat(dashboard): configure main + auxiliary models from Models page (#17802) 718e4e2e7ec86db5492deb124bf33c858a9fa251 fix(plugins): register dynamically-loaded modules in sys.modules before exec 62a5d7207d15a0372ae980ccbdb5477314a12558 feat(plugins): bundle hermes-achievements + scan full session history (#17754) ce0c3ae493903f06f26d9690cd8591f6735781f3 fix(aux): remove hardcoded Codex fallback model, drop Codex from auto chain (#17765) f73364b1c4acffa3242d1c8272cba4f3f9a3b62e fix(ci): stabilize main test suite regressions (#17660) e7beaaf184c73a9e9efbfe09c7d919c704880eb6 Merge pull request #17694 from NousResearch/fix/docker-add-curl b06a06e6087a73f2d31d824e549b35dcc2c333d6 fix(docker): restore trailing newline on Dockerfile 828d3a320bbcd810969f13131573169f363049da fix(anthropic): reactive recovery for OAuth 1M-context beta rejection (#17752) 4d363499dba913c5044debdae9d6a1f7ea1f6335 feat(plugins): bundled platform plugins auto-load by default 71c8ca17dc890a3e04006146110eb1f595100f74 chore(salvage): strip duplicated/merge-corrupted blocks from PR #17664 868bc1c2425edca1615c9edd78daf86a46c8bb11 feat(irc): add interactive setup 6e42daf7dd30d5a045f3f08a39f55b1da36447ef fix(nix): bundle plugins/ and expose it via HERMES_BUNDLED_PLUGINS 1f1608067ca139efcf09ea114ee05a1b6742c1b4 feat(gateway): unify setup flows, load platforms dynamically from registry 52d9e5782537cbdd0e52ddf13694e090d850bf9b feat: dynamic toolset generation for plugin platforms e464cde58fffe776366bc1ae0498e081df3bac32 feat: final platform plugin parity — webhook delivery, platform hints, docs 457128d4e81ca2b93eede8131a985d0ab03d0eac fix: wire PII redaction + token empty warnings for plugin platforms 2e20f6ae2d69716d3a11fa43a77c0eafbcd50f45 feat: complete plugin platform parity — all 12 integration points 8f144fe36b2ab4ea353d9ce2d1b69552f2726312 feat: pluggable platform adapter registry + IRC reference implementation 4d7fc0f37cedeecb02a8bda05d2b6eb6987b7bbc feat(gateway,cli): confirm /reload-mcp to warn about prompt cache invalidation 7fae87bc00da576f32b83dc4776b4c43fc54a330 fix(gateway): refresh cached agents after MCP tool changes a7fb79efb219d9d473bede1371ce53e830bad42e fix(agent): spawn OpenRouter pre-warm thread only once per process 502debed91948b38f745d54b41ad5d2b9d617a7f chore: map vlad19@gmail.com -> dandaka for CI author check ffa65291d1ca13c99dc6041f756feb8a1364d324 fix(cron): clear auto-delivery thread context between jobs 16233711d93dc147ccd729b81ffebc6470a1ebe7 chore(release): map memosr commit email for release notes d69a0b2c292f16d51b70cedbce9426e9cb16cc09 fix(security): apply ACL checks to QQBot guild messages and guild DMs to prevent allowlist bypass 763aadd6bf7345f9946187aa71090cd03c06118f fix(telegram): preserve pre-#17686 chat-ID-in-_USERS configs + doc split 1f712173b2e66512a8059fea145a6e571274e4f3 fix(telegram): support group user allowlist dd2d1ba5e61c887f5eb1049750a0fb7520e41da2 refactor(reload-skills): queue note for next turn, drop cache invalidation + agent tool 7966560fb50fbd433ba981657d5bcbe5d1fce24b feat(skills): /reload-skills slash command + skills_reload agent tool 113239f6e35d48bb28e490d8189ca0384721bf0c fix(dashboard/models): filter empty-string model rows + simplify vendor split e6b05eaf6398aed80c3a4022b7bfebd66f195426 feat: add Models dashboard tab with rich per-model analytics 289cc476315bc1876229825b7cebb6ec5a8b1d87 docs: resync reference, user-guide, developer-guide, and messaging pages against code (#17738) 51b44b6e3fa15b4b5e7a31deb488529c3275f151 fix(skills/comfyui): correct hallucinated node names and registry slugs a7780fe05f43b6d32bb2d8665c610516ccdb2037 fix(skills/comfyui): bug fixes, cloud parity, expanded coverage, examples, tests 7d48a16f142e21bbdb349e963477803aab19a190 remove relaunch_chat 3c673468b46c7d574b3bbbcc1bd7118a4d329142 refactor(cli): derive relaunch flag table from argparse introspection 95f2802f842d7fa4cb3c477729dec82bab94d0b9 feat(cli): preserve --tui and other flags across internal relaunches 22ff6ca32b60d345e2fd3cef210288aab4cc45ad docs: two-week gap sweep — platforms, CLI, config, TUI, hooks, providers (#17727) 8dcab19d02ae76b2793f94c5ccac4f41bc12c4e1 fix(gateway): fail closed when session.delete can't enumerate active sessions 49fcad8cf8caaa7ceacb92381f701fbc810fb35c fix(tui): require double-tap `d` to confirm session delete 24b5279f43f33db955a33af5d17d3338eb550316 feat(tui): delete sessions from /resume picker with `d` 0ba451d004a2c3227728f1b94a5e1670daf76449 fix(vision): use HERMES_HOME-based cache dir instead of cwd (#17719) 4cc6da84a155b3c1d4dd81ec6d24285c8d5b7b5e fix(tui): normalize legacy Terminal.app colors (#17695) 87e259a678328f9b07d5b1852afa91c404476268 fix(cli): tighten mouse leak sanitizer 31f70d1f2a9d1ae41ac5c93e1fba734171442973 fix(ci): recover 38 failing tests on main (#17642) d05497f8126dc2fae8fdc3e49997f4e3ea3a01f0 fix(tui): reset terminal modes on startup and exit 98a428fd61b9eb00a5d2766d5a1b7ec3a71ae87e fix(cli): recover from leaked mouse tracking escapes 8cce85b8191ca24afd07cd996dcecf7fe2625c88 Merge pull request #17669 from NousResearch/bb/tui-scroll-precision-mod fc0f358f370c4d2a92b8ba87de7c61f7be7cb4f5 fix(tui): add modifier-held precision wheel scrolling 7a4da315a2bc646fe1498194f8bd1611744ed144 fix(docker): add curl to apt dependencies b978fd8b269d9711e0f023ffc4b92b57a1c75baf feat(tui): preserve modifiers on mouse wheel events 9fc9c15b4a2d42bfcdf07d7e279043e25cba6810 fix(banner): show correct update status on nix-built hermes (#17550) fc7f55f4905863f816ae9e6d220e9e82707c1652 fix(tui): responsive /compress with live progress + CLI-parity feedback (#17661) 6366fb9c8be49780a20e1f7751b09c0662d87969 Port from cline/cline#10343: periodic gateway memory logging 9845650fd69c66cce8a01f6e0b33376f4815b224 feat(cli): add /exit --delete flag to remove session on quit 98f5be13fadbc6236362f3578923885222fcc59c fix(tui): word-wrap composer input (#17651) 5e6e8b6af341fe153ad5ed8d8022c36472d37973 fix(tui): honor launch toolsets (#17623) d9bf09372863919a19279b28838515d4fac17c43 Merge pull request #17638 from NousResearch/bb/tui-details-persist faa467ccaf88ebf8d8cfadaf062fc9bafd6c537c fix(tui): share detail section constants f45434d3c69d54efd77518132662c665876584ab Merge pull request #17626 from NousResearch/bb/tui-prompt-gap 2a9a5fffa51c22c1391ab62ae15226be3f6a0b6e Merge pull request #17625 from NousResearch/bb/tui-reasoning-hide c2cb6d107131ab2bacab698e8e9530ce60110fde fix(tui): persist global details mode sections b52b63396c33bd692f428ac3e6f982300b56c383 chore: map hejuntt1014 in AUTHOR_MAP 528e7dc1761df5869300ac712b8821c650e2ad3b fix(cli): exclude profiles/ from profile create --clone-all 4899bd99c0b72d926deb51b0be25b19384b5d0f0 feat(skills): move comfyui from optional to built-in (#17631) 8652d47eaa6d676302951360904b9670fb5e0eeb fix(tui): remove unused prompt import 7d96a5ab6ea10bd67c440cae632d97ec31e61780 fix(tui): refine reasoning visibility updates d3b143c49c95cc4711127c0989e3d7d6e21c679c fix(tui): swallow empty copy shortcuts d3ab2b2e1343be254aab26509a3d653f9d11c33c fix(tui): share composer prompt gap metric f7abcb4f018839177fb2c8e96353a5cf5d0ccffb fix(tui): ignore hidden reasoning stream segments 94953affa66367dacb92036b9a97a2bfb2a52b4a fix(tui): copy mouse selections automatically 10fcd620d274ebcc073efbdb1d15a5efe175d522 fix(tui): render explicit prompt gap d8afafd22b081523b3a46930d664289670e8b401 fix(tui): hide reasoning panels immediately 456955c2e4e49e4b48f4b1505f0a45fe7802a83f Merge pull request #17259 from NousResearch/bb/pretext-skill 9be3ab1a5b8ab4990b284c0a0e46ed9ae6d9fc64 fix(plugins): stop firing pre_tool_call hook twice per tool execution (#17611) ffe1d660a0e4b851ced40c9c87d20cff747242a3 docs(comfyui): ask local vs cloud FIRST before hardware check (#17612) 9d7ece362df23001b7bd475c67235b3544cbea5f feat(comfyui): add hardware check + auto-gate local install on verdict 528a13b37ac7c9b44e501deb934fa5ef5c7591ac Potential fix for pull request finding 'CodeQL / Incomplete URL substring sanitization' 9835f57e9c8a6e6551dd28c1d501a21ce0fdbcf5 Potential fix for pull request finding 'CodeQL / Incomplete URL substring sanitization' d7d1503595b33f9ab0b3045a957e9628e7c9d98f docs(comfyui): add comprehensive onboarding — all install paths, doc links, cloud setup b81638d749c6de82f82398b3367e3493ddb79131 feat(comfyui): rewrite skill — official CLI + REST API, no third-party dependency dac60fb903032c5d238a4254857e24ee4dd4c99e docs(comfyui): add system detection + hardware-aware recommendations to onboarding b3873181a468be8fb828c082fb1b68c55b9d89ce Potential fix for pull request finding 'CodeQL / Incomplete URL substring sanitization' 68041b34f5d3d7b20bc65cbc11cc75a2b7d8d0d2 Potential fix for pull request finding 'CodeQL / Incomplete URL substring sanitization' bd6e0cc63c5119d2da5a18bc2fbe7dc84fd1a129 docs(comfyui): add comprehensive onboarding — all install paths, doc links, cloud setup 165d76689146e55fdd388b09517c7842e2182309 skills: refine pretext creative demo guidance cb0e2e2f36b50268cb669f405ed377e3fc8e2bd2 Potential fix for pull request finding 5b78e07da76470d08c11202a297e55192fff4842 feat(comfyui): rewrite skill — official CLI + REST API, no third-party dependency 258449c468166f404ae28f97f6e4157ff72d0893 chore(release): add Nanako0129 to AUTHOR_MAP 2e991770fc99cfd425631603cb808f8a8a6ccfc3 fix(gemini): pass base_url into chat transport c5a5e586d7acde0937066b0fec8f2dc97626659d fix(gemini): nest OpenAI-compat thinking config under google 5a61c116e1453bfd579d75617ef59962a5f7866d fix(nix): auto-refresh npm lockfile hashes 69d4800db77d001ca5b1500ac68a6c76e612c533 chore: add txbxxx to AUTHOR_MAP 9ee540a5e29f1a7b03e80e15f12b10acacbd0a4b fix(install): promote croniter to a core dependency 0e577fb1be84284492626065905efff5f91148b5 docs(curator): document that pinning also blocks skill_manage writes (#17578) c61b2e0af73929d109797335296c58bc18e60adb feat(skills): refuse skill_manage writes on pinned skills (#17562) b01656d1166e23ba612f7f75f9d383e4db8bd06c docs: exclude per-skill pages from search, add curator feature page (#17563) 430302c197f76f1b21674135eb5e69f807de91ac Merge pull request #17175 from NousResearch/fix/markdown 40a98fb0fa3037cf3a8ae234f4e80c864d5c546a feat(minimax-oauth): full integration with peer OAuth providers eafa63728756c10e912ba73f49a77b3fb6faa65f docs: document MiniMax OAuth login flow f3aa989b1bb79376f6820f4f38e3480888c6abdd test(cli): cover minimax-oauth resolution, refresh, menu wiring 0b2f1bb27b52174b29b39b505f4155fdcec92068 feat(agent): wire MiniMax-M2.7 for minimax-oauth provider 9eb16025bd91cd018b6d370f10b9b8ef5b7812a5 feat(cli): add minimax-oauth provider with PKCE browser flow b2820cd207efa2bc30811fb672292ec9a133d461 chore: add beenherebefore to AUTHOR_MAP e0c0167428033737eb03b8765ccea6bd0d057435 fix(cron): use last_run_at as croniter base for cron jobs 6d8423761b247124c8aac956cdde81b8479e0d06 chore: add yeyitech to AUTHOR_MAP ec27f0a3fa1ec7555980a5ff06333cb403526665 fix(cron): fall back gracefully when HERMES_CRON_TIMEOUT is invalid 9f361cdca6d80c18b1e5ddf07a638116dcb96914 fix(cron): action='run' executes inline when no gateway ticker is running 8c8fc6c1ecc76d297cc808bc70ffd98ab1ea1c4e fix(skills): let skill_manage patch/edit/delete skills in external_dirs in place (#17512) e120cd5941714dd19aac4e840866574b97c9bd9b fix(model_switch): dedup /model picker rows when custom provider endpoint matches a built-in (#16970) (#17511) fa3338c1717ffae6e9a052ca03098441b655cab4 test(anthropic): regression guard for DeepSeek /anthropic thinking replay fd5479a4fcedc768dd7924d2deece337db7562f0 fix: preserve DeepSeek thinking blocks on Anthropic replay (#16748) fd7188a7c6591d747fde971452162d1a42237592 chore(release): map liuhao03@bilibili.com to @liuhao1024 60c6b07128744ebbd8ad8c2f24f40081811bef43 fix(cron): keep SOUL.md identity when workdir is unset 0a5ee01e487a5a4e0e3637ecce6c2a41546c9457 fix(hindsight): route flush-on-switch through writer queue, not raw thread c38dac742b22c55581d4105a9727e55ba620a984 fix(hindsight): flush buffered turns and drop stale prefetch on session switch 1bedc836b5f4d15715c4f59f036cb0b649939b97 docs(onboarding): lead OpenClaw residue banner with migrate, warn that cleanup breaks OpenClaw (#17507) e0a03f3f4029d003671868544d117bf40b3f462b fix(api-server): collapse tool start/lifecycle into a single SSE event 84d1673e2fa829755fcffa0b09c6cb323c11a2f7 feat: provider modules — ProviderProfile ABC, 30 providers, fetch_models, transport single-path 13c238327eebfff862d9ed60593751e419989785 fix: address self-review findings for Vercel Sandbox salvage 5a1d4f68045bb46eb3fad28b001519e36c397444 feat: add Vercel Sandbox backend 810d98e892d551659d5b68adddda38902c0fc40e feat(api_server): expose run status for external UIs (#17085) 83c288da01ebe48a64016d744abef166ef98d1fb fix(anthropic): broaden Kimi thinking-suppression to custom endpoints (#17455) 398945e7b1a6f7c26afef6ad8ef280aa88b8335e fix(cron): accept list-form deliver values so deliver=['telegram'] works (#17456) 7141cda967c489d1fec0e17740222db0e6ac6331 fix: narrow Anthropic adapter dot-mangling to Claude models only 0565497dcc2f566fc40249b2db65184bc6466628 fix(hindsight): drain retain queue cleanly on shutdown 5662ac2afc4973c9557bb45ca45697e7f7b6890c chore(release): map Kailigithub email to GitHub login cf83982da0fd33a7030e88b65c298167d9abdbc9 fix(gateway): handle wmic encoding errors on Windows non-English locales 835f9adec04c44d50a44f0fa6a34e5dee81ac4ee fix(update,test): clarify wmic comment; switch tests to monkeypatch sys.platform b85fff9495ad95a829c0fb8b76ea773cd98d10fc fix(update): protect dashboard wmic scan against UnicodeDecodeError on Windows non-UTF-8 locales (#17049) f3173252790ec2dd4c2763a2cb846e82cb0038b3 docs(weixin): clarify iLink bot identity limits and warn on group policy (#17433) 9e63062b6ce1527e4a64ac6ba9a14c4dc73d0a3d fix(stt): resolve API keys from ~/.hermes/.env via get_env_value (#17140) 33967b4e525d20484501039f57bbe33971210fb8 fix(tts): tolerate missing hermes_cli.config in tts_tool import 40d25e125bdab90c724ff5e52f0acd1e3babcb61 fix(tts): resolve API keys from ~/.hermes/.env via get_env_value (#17140) ff687c019e20794efd4c6c2587b4317ef37eef6e fix(aux): skip kimi-coding in vision auto-detect (closes #17076) (#17451) aea72c09362b51baf70088208de81e91ab53ea48 skills: adapt spike/sketch + 2 references from gsd-build/get-shit-done (MIT) (#17421) fe6c86623fabf023040d0bc3b0f1a98561abcbb8 fix: close file descriptor in LocalEnvironment._update_cwd 258755a24fa37225edd39890f9411ba4d8752353 test(weixin): cover _is_stale_session_ret helper (#17228) e9b96fd050fbdaf6eb21ec45cbe5f18dd17d7970 fix: recognize ret=-2 as stale-session signal in Weixin adapter b0435cc1648bf6a89e81206db0512e897af0ad4e fix(model_tools): cancel coroutine on timeout so worker thread exits + log full traceback 46437966cc65f5ea86000d017f2fdb6a6bcc0167 chore(release): map tmimmanuel email to GitHub login 3606414ec7f27875ac7d35d19a6bf6fb81d33d32 fix(gateway): isolate platform connect failures with per-platform timeout 20b759cd024353d4aac657552da95c3ca2f82d96 fix(process): reconcile session.exited against real child exit in poll/wait (#17430) 13683c0842f08f6f5e05cec5ccf97c29a37f77f9 feat(memory): notify providers on mid-process session_id rotation (#17409) d244596dbaf106d5a99254e066421e453364610c chore: add rylena to AUTHOR_MAP for PR #17363 37d107e03dc8ce226902429a08d4d644141ac7e2 [verified] fix(gateway): accept user systemd private socket during preflight df0e97a168297232cc4231b4e3b6a993147aa0b8 fix(minimax): enable Anthropic prompt caching for MiniMax's own models (#17425) 860ff445f6704cfea0fde0e617506e778c76e5b0 fix(usage_pricing): add MiniMax-M2.7 pricing for minimax and minimax-cn providers ecaf8008bb6f83df6d7094e0dec77d62a7bb8531 feat(yuanbao): wire native text + media delivery into send_message 53f875d063ad8d13d25589777db7e6478ded6e84 perf(tools): cache built-in tool module list in tools/_manifest.py 4a62ba9ccd3d91167c4d03be4d01de4de1c6aa72 fix(signal): correct SPOILER docstring + AUTHOR_MAP for exiao 23f5fc6765462f595b6dff21ee04c1f3739a53e6 feat(gateway/signal): native formatting, reply quotes, and reactions ed170f433395e5d374c6e769e04605ae9ee7b11a docs(anthropic): correct OAuth scope to Max plan + extra usage credits only (#17404) be57af7188ddccad7bde6f4360c33b8905f35634 docs(anthropic): clarify OAuth uses Claude Pro/Max subscription usage (#17399) 059980727a4719d6e48bb7d7e12a24da1e556026 refactor(config): migrate remaining 33 cfg_get call sites (#17311) 21676e80cc1cfd5948213c3de42f83baa5bba90d Revert "fix(anthropic): remove Claude Code fingerprinting from OAuth Messages API path (#16957)" (#17397) 4d810d959157e350a85011d9f2e137e3d4696055 style(comfyui): format SKILL.md — table alignment, YAML tags, onboarding hint fff37dd79e546bdb8776e1438e002443501a2813 feat(skills): add comfyui skill — CLI-driven image/video/audio generation 58a6171bfb0ba2ca10b1b08854511736cd77a623 Merge pull request #17305 from NousResearch/feat/docker-run-as-host-user bc0d8a941ed9e41ca90f46d353c9db0b421b3c85 feat(curator): per-run reports — run.json + REPORT.md under logs/curator/ (#17307) 2d137074a3231c4d749cb87692b5ad60f6d6457c refactor(config): add cfg_get() helper; migrate 20 nested-get call sites (#17304) 5531c0df8217c8865b523d85448f3fda1d7478bf feat(docker): run container as host user to avoid root-owned bind mounts 4c0cc77e94f41b44b515fe177ff6140f80b68b18 fix(dashboard): keep ui imports browser-safe after rebase 5e68503d2f90aa2822494c910809eae1c3895238 Merge pull request #17190 from NousResearch/bb/tui-cold-start-profiling 22cc7492ffd01eb6f867b2395d60778d25e8e41d Potential fix for pull request finding c2fd0fa684fa89041f212dee57ac013e32f22c95 fix(tui): preserve memory monitor in-flight guard 9b62c98170c481c8a45fe828ef01c65964c0cf01 chore(dashboard): restore package lock metadata 469e4df3c2579dcf24fbf2acc7d802a54970b460 fix(profiles): preserve skills on dashboard profile creation ae11a310582ac936cbbffc516891cc2bd9fdd458 feat(profiles): add profile setup command endpoint and wrapper creation 3e200b64fbac161e1e90c1bd6ea5329194ba9f50 fix(profiles): update terminal command for copying based on profile name 1745cfc6d73b69506118526760eb67456e1ef422 fix(dashboard): avoid node-only ui imports in browser 58c07867e3b11297fb97cab1e14e3260f338195c fix(dashboard): keep profiles list resilient 4523965de9eb9a55ba7a67315adc3188c31eaec4 feat(dashboard): add profiles management page fa9383d27ba4357d75eb21f603220f8fa9b58106 feat(curator): umbrella-first prompt, inherit parent config, unbounded iterations 019d4c1c3f0d9ac6e8223994c1b8ed5092900508 feat(curator): hook into the gateway's cron-ticker thread a12f7aa8bb1397cbf275aa1be9eb12e62451454e fix(curator): default cycle is every 7 days, not 24 hours 0d31864e3bc8e41ed9b7e3029266681a1816b0c2 fix(curator): defense-in-depth gates against bundled/hub skills c8b7e7268a99b2a951eceac073588b3417907099 refactor(curator): point review prompt at existing tools bc79e227e6eff5ea4f47ad6c731d675e6f3b1d21 feat(curator): background skill maintenance (issue #7816) 88602376d41fafead365cb47e9cb6afb8576664d fix: resolve external_dirs relative to HERMES_HOME instead of cwd (#9949) ded12f0968610195999a00326593c8160860dc22 chore(release): map LyleLengyel@gmail.com -> mcndjxlefnd 80e474f11ffa3939ff0372ffba1e778f8fd898ea fix(gateway,terminal): expand shell tilde in terminal.cwd before subprocess d341af22c0ae91d05bd0116e7bd6d37f4fb855d6 fix(tui): preserve busy and init error signaling 88e07c42b44c6dcf62a56fbc891bd22ee3fab253 fix(cli): prevent .env sanitizer from splitting GLM_API_KEY by LM_API_KEY suffix cc5efb6fc16fc620dd2f4f47d0fd244da06f3739 fix(tui): keep non-agent session RPCs lazy 97a2474b39c551a9459ee81d3ffe1e0e9e1922b5 review(copilot): point reload.env docstring at hermes_cli.config.reload_env 6b4ef00a2c18502bf50a5ce540fb6620bbe904a4 review(copilot): keep /reload cli_only since gateway has no handler 4858e26eaa1fff37bc5580a510569f935b2b45b6 feat(tui): port classic CLI /reload (.env hot-reload) to TUI dcd7b717f8efd75b9c69a11038149c1d865806fe fix(gateway): linearize tool-progress bubbles with content messages (#17280) ac855bba0ed282ed6a1a94b8471689b2b6bf9fe4 fix(cli): respect terminal.cwd config in local terminal backend f95c34f41510b494d0fceeb97a844675a2635423 fix(browser): address Copilot round-4 on /browser connect 679a27498d6be6047df096551ebc5691bbfebb89 fix(browser): address Copilot round-3 on /browser connect d1ee4915f3102364350b8e4b026b20045780b654 fix(browser): address Copilot review on /browser connect 26816d1f770057aea29a289b47294ee2b7913eb1 refactor(tui): tighten /browser connect plumbing e750829015b0bcb0762921c33cb06b26884d880e fix(tui): stream /browser connect progress as gateway events 7d39a45749ba8cd16765e0aa8ff9ebf4bf92cd90 fix(tui): show /browser connect progress like CLI 69ff114ee2ceffda9ea25dc40d6f43476bd9c843 fix(browser): avoid bogus Chrome launch fallback f10a3df63254588af736de829d9cc61b6d3ef4ef fix(tui): align /browser connect local CDP handling 88a9efdb1ac6d0ac5665fa087ebd7271073387fd fix(tui): tighten cold-start edge cases after review 72a3af63d4f14dcb986290a0b9d0ec53abbbd68c fix(tui): keep prompt submit off the RPC pool a2819e182047ed5d78d21038b83f63b1ec297438 fix(tui): address lazy startup review races 0a6ecea676523d808d1f0657a8f1a80debba14f1 fix(tui): hydrate lazy startup panel and use animated loaders b66cbb7b4ca8dd8d3242f14caf5fd52807069dc8 perf(tui): defer agent construction until first prompt 1d4218be564d5e8359426082c098ca3c132be498 feat(review): active-update bias, loaded-skill-first, support-file variants (#17213) c4db1ce08cc56bdf2a4f32caf9a49bc6da5cad86 skills: add pretext creative-demos skill 8c892c1453aa2955f196835be44eb1560c15fee1 refactor(redact): canonical mask_secret helper; fix status.py DIM drift (#17207) 9e398e1809dd30c26ed899e362af6bb04c948894 perf(tui): avoid importing classic CLI during tool discovery 6e9691ff12605cee570b7543138b9cec2950dba6 Merge pull request #17237 from NousResearch/bb/tui-paste-watchdog 10ad7006b67c0e5339fa8355807c30db72f36496 fix(tui): use paste timeout when rearming paste watchdog f542d17b0040cf28e388a3e935d36e14de9801a0 style(tui): apply npm run fix d7ae8dfd0adb8dfbcdba97f8e15a62d6223280ae style(tui): remove steer queued emoji ce2cc7302e896b1f4657c91ff6b13783cce594f1 fix(tui): stabilize sticky prompt tracking afb20a1d67d2f64876e488d36be14b3a6f2c8eec fix(tui): recover from stuck paste mode e4120d1e6d77919f4078cf13da135bebbd021492 Merge remote-tracking branch 'origin/main' into fix/markdown cd7150a195f328c38050b4a0de5ed6491d7792ed perf(approval): precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS (#17206) 3379f88ea4b357526861b5f06c4707244621030d docs: clarify wrapForFrac and streaming math-fence rationale 60e75674e7f19c0a50cd3edfb256fc72c8ac1072 feat(kanban): dispatcher runs in the gateway by default; retire standalone daemon adef1f33abfbb91030f00a92fdde758981c1f710 chore(release): map scott@scotttrinh.com -> scotttrinh (#17203) fe295f9836569ef703a38f7c8332508737330303 docs(hooks): tutorial — build a BOOT.md startup checklist (#17202) fd943461cac026ab6e31d9531b1d57c8bad9962f fix(doctor): accept catalog provider aliases cb039ac000ed2c1ff00e18a2d9fc40a62673b531 fix: account for latex 9f004b6d9428d5929500dd49cd6f568f8257467c perf(tools): memoize get_tool_definitions + TTL-cache check_fn results (#17098) 0399d4b97668c020c8c583eda190b90fc9fca4e8 perf(tui): shave ~190ms off `hermes --tui` cold start 188eaa57c4a46f3c491e33445d3c035c248798a9 fix(tui): honor documented mouse_tracking config key (#17188) 6b09df39be8395380e81054d0eaa92862f80a12e fix(tui): restore macOS copy behavior and theme polish (#17131) a9efa46b6978e30f0da3f56ad58066ebdcf07e7d Merge pull request #17174 from NousResearch/bb/nix-web-hash-refresh b2f936fd37dbb16989de6d5684ba7886d4c222f6 fix(nix): treat transient magic-cache throttling as skip in fix-lockfiles ec11aa64eee9736675f640692da2ed56c72171a7 fix(nix): refresh web/ npm-deps hash to unblock main builds 7d81d763667b6733e06658ff9d7e522167f76a74 feat(tui): pluggable busy-indicator styles (#13610) (#17150) c3d39feb3ab8f0b2e891f1fd6f3bc0476a9845d8 feat(latex): latex in tui 258efb2575c7b2839c947e76b400f541efa87259 feat(tui): expand light-terminal auto-detection (HERMES_TUI_THEME, background hex) (#17113) 059652d11aba899665ad0720ce2a20d7d68c9726 review(copilot): point reload.env docstring at hermes_cli.config.reload_env fac81a30df3d7ce0cef8279fbf8d0e5c9a7316dc review(copilot): keep /reload cli_only since gateway has no handler faafa6d375f80a69dfa8717eef4ec520ff685c7d feat(tui): port classic CLI /reload (.env hot-reload) to TUI 1e326c686df8a7304d5018f846246b3126dc5cfd fix(tui-gateway): harden stdio transport against half-closed pipes + SIGTERM races (#17118) af6b1a3343728bd8d7ab767db1366a57ad0f8e4f fix(tui): honor display.busy_input_mode in TUI v2 (#17110) 8d591fe3c74f795eebf0322e87a7ba0f03b4b332 fix(tui): prefer raw text over Rich-rendered ANSI in TUI message display (#17111) 15ef11a8b86d073266e99ef2d9393d8fb0dab976 fix(tui): make /browser connect actually take effect on the live agent (#17120) f45b844670e6a329698b6064e8134ba35e3e1c99 fix(tui): improve learning ledger scanability 2476beac3a545e429c144041a8a237ac57bd856f feat(tui): split learning ledger into category panels 8a0498d41e5d6d9a3a41c9829d5330e98a1afa8c fix(tui): reserve overlay panel footers 5f749667e2cbd6d9f9543ca1a7fa3ee4acbb44da fix(tui): cap overlay grid height ee2cc327cb627ad63780cf45e050c049e33de352 refactor(tui): use shared overlay grid e004e1e5e450e68c0cb0c36e3c549cf4de7a7973 fix(tui): simplify learning ledger panes 2fe2d943b16ffe8d61ecdba74e6c66148c6d7c12 fix(tui): let learned overlay use full shell width 9a4bc5508a59bf53245358954378c3558f1f3843 fix(tui): render learning ledger as grid panes 5f50f3df0d6ae8a5584be8deef2d79f49abdcffd fix(tui): prevent learning ledger detail overlap 4821b50cfececb9baaa84cfb689acafb874d2d56 fix(tui): stabilize floating overlay widths 5bf688a30b7129c31ca619ecd26cfad48267db02 fix(skins): make prompt symbols replace chevrons d3cb027e174aa1a137b4034dcf793d57b81b96c0 fix(tui): stabilize skin prompt width b0c84756bab351dfe824658afacf0dcc7546f019 fix(tui): keep memory tool previews one-line bb5c3c10742a807c9ce548f841ea8a9e55d0447f refactor(tui): migrate components to semantic theme tokens 185e8ee9423886695b04cdce33ac2ac738a7380e refactor(tui): use semantic theme text colors 024cccb9bc3141d663ee3bf5511c6360eb8bae38 fix(tui): dim learning note color 15115808b147245f45b2eaa30fd54083b1b19f14 fix(tui): render learning notes as standalone rows c8a9e1234f02b52c69c9a98d5acc465226ecbe5a fix(tui): include learning notes in turn completion 14af4ce6656393c146eb5fed9f20a2a48603260b fix(tui): place learning notes after responses 9ee36e073279317c2a1a92608fdb22e6862d54b2 feat(tui): surface live learning events 8e6f560fd3841f816899bf7b930583d9887a5bc0 refactor(tui): make learning ledger master-detail 281b5ca546e62e8dd0cae167b1e0f622a1b80335 refactor(tui): widen learning ledger layout f2a08f7581f33d44279d3d3a44af5dfd53390c17 refactor(tui): focus learning ledger on recent growth 61dc679815dfa2abedf2828534e1b75782c843b0 feat(tui): add learning ledger overlay 87d3fa6f1c73ccb60b91e9e2c405d5212244bce9 feat(tui): opt-in auto-resume of the most recent session (#17130) 75d9811393137d7e01344e9da2d0375c7fd4eb29 Merge pull request #17114 from NousResearch/bb/tui-table-separator e42065b1f796554c7acf7e8cbc34b4ec245f0a3c fix(tui): drop stale stream events after ctrl-c interrupt (#16706) a830f25f716190168dd7db6819c0b48848049002 fix(tui): surface gateway stderr tail in start_timeout activity (#17112) 50edbe6f46aec03237b9225935250fb1d072243a review(copilot): say solid rule, not dashed 4689ace7cb1602ca611aab4d64a7842d3f72c135 review(copilot): clarify table-rule rationale (UTF-16 code units, not graphemes) 9eabc24e245f253ccb073128e6344d09cb806580 fix(tui): visually distinguish markdown table rows from prose (#15534) 4d0acda13475574909cd66fa43540f8e51725b49 review(copilot): keep separator space when verb hits pad limit + reword comment ec896944722e6f0c2bbc8f77c5a599ad2f78418a fix(tui): stabilize status bar ticker width (#13610) 0d957a8d48e5f9ada343c8fe41717b7b93b0f318 fix(tui): surface mouse slash command (#17126) 5f215b13cef654a07f482294a137e6a68d0caef8 fix(docker): materialize bundled TUI Ink package (#16690) 124da277679fd4d5f501d4c04582ec5466c942c7 fix(tui): handle empty bracketed paste fallback (#15594) 5d2f9b5d7d6f013f431df8c8f8c09dbcacf91120 fix: follow-up for salvaged PR #17061 433d38da09ffbc15565a8d9e6fb7f7930565f7a8 chore(docs): update provider docs a0105a7f814410cff954676c24fa5ec7e4a799d3 chore(agent): drop drift from rebasing 01ad0aacaf4f5f8a23c72ed14e36d642b930853d fix(tui): show correct context length fa2bee1215a893ccf28c15015b75f4bbdaa6f82f fix(tui): update test for target model 214ca943ac743f09f8a7300c426b6106aeedcdad feat(agent): add lmstudio integration 7d4648461a4f294dc7abe710f8bb8ec50ad79a5b Merge pull request #17007 from NousResearch/austin/fix/more-design-system faa15772b71d00230e074ec501cba4f4f587fe0f chore: add contributor emails to AUTHOR_MAP 74c209534c97f4cf7961af0d6ee02fffd07cbcf8 fix(copilot-acp): disable streaming path for CopilotACPClient 18f585f09158b6caa948046e1d76e416d6be1d46 ci(nix): auto-fix stale npm hashes on push to main (#16285) 4bf0e75ae95fe33b47391a73bcf9bf5c128dd75b fix(nix): make extraPackages actually work via per-user profile (#17047) a3c27b5cd12585b6d9245f07ae5c6ee2d6dbf8ee docs: clarify quick commands config shape 47d4b6e31a2654f8a6bffaa6364d155eae0c65a7 feat: add spinner, lowercase version 854206e59e1a3fa6e5184c982746401a76157656 fix(plugins): register dynamically-loaded modules in sys.modules before exec a1921c43cc09e290d14df9129496bde385ceb4e4 fix(tui): prefer exact slash command matches (#15813) 912590a1438d79118fcabb242d6592f3cd999622 fix: button sizes 1285172aca80cc6084c046d956c7937b1d7cc233 fix(components): refactor to use design system b53a091b97f249881fc59d53ce9b326a1a870dfc remove: BOOT.md built-in hook (#17093) b5128a751b2f5b29c3285d98abdda3d45780870f perf(startup): lazy-import OpenAI, Anthropic, Firecrawl, account_usage (#17046) 663602f6b0ded612c89e62734889abbfd1f396fe Merge branch 'austin/fix/more-design-system' of github.com:NousResearch/hermes-agent into austin/fix/more-design-system e1027134cda1b27beeafd210707572f7d0b5ac45 chore: remove comments f62272b203a5d7a00148007b108bd728d71c8e00 fix(nix): refresh npm lockfile hashes 0348a69c51ec4b43ec2d402e526048b7c226d848 fix: migrate select to design system 753a07149125e0e34493c79b0a0e14ab44eb6974 fix: badges e5601d1e850966afac2179cd6e397b5db2d3145a fix: update design language dd83173621afb34bc323a4ab5be75985979696b9 feat(kanban): per-task force-loaded skills c65c1ddf21616abdd310f0b826ef24fbf136c6a1 feat(kanban): dispatcher auto-loads kanban-worker skill on every spawn df51ad797332a547aa9589ee3cb11353f204f8db perf(config): mtime-cache load_config() and read_raw_config() (#17041) 42be5e49b05f30c7a6508c50443a1671120c8afc fix(browser): detect missing Chromium and fail fast with actionable error (#17039) 4e4f55a83e24e868803539fa31c42ab7d472c190 fix(nix): wire extraPackages into per-user profile for terminal visibility e0f5d39837d11b5f5a6d357c7f9d333bde4d55fa fix(discord): widen slash-sync timeout to 600s under rate-limit pressure (#16713) (#17029) 5ed1eb0d0fe0e21579623ba68afa2e53a6b611c8 docs(config): surface telegram.reactions in DEFAULT_CONFIG (#17028) be41ccd0af44758ff6f63782467012e68ccad5c4 fix(nix): deprecate extraPackages — does not reach terminal/skills (#17030) e4b69bf149290eaf423e658cf285fb024262b2d4 fix(gateway): guard against None request_overrides in _build_api_kwargs 1d8b9e645865f650605b0d7026433d94194590f0 fix(auxiliary): auto-detect Anthropic Messages transport for all aux clients (#17027) e123f4ecf0773a256b217262244c9042de8aefc4 feat(gateway): opt-in runtime-metadata footer on final replies (#17026) 6085d7a93e24004bdd0e14fa1591914b4059b57a chore: remove unused imports and dead locals (ruff F401, F841) (#17010) 3d8be2c617e07db0150471353ee85fd6dec32fd4 fix(install): widen /dev/tty open-probe to sibling gates (#16746) 89e8c87354524d4b9a4bc60cf150aa50c5679684 test(install): regex-based gate assertions per copilot review on #16750 20c9340c34454e1bd5ca9268fa6ac8251c980ed7 fix(install): probe /dev/tty by opening it, not bare existence (#16746) b2339c87e41d1b5de3bb50a03199bec40ad7a635 chore(release): map dejie.guo@gmail.com -> JayGwod 8cced3378418e50a808ea8bd276cd9265322f944 fix(model): prefer live models for user providers 69b8fa65d4af58ed8fe1811ca6b8d895852ec606 docs(delegate_task): clarify that it is synchronous and not durable (#17022) 5f84eac451ddaac3035e6820b2999ca9c6fe177c feat(gateway): bust cached agent on compression/context_length config edits (#17008) b5905f0d4afda5222371f434aa2a63ac6e140758 chore: add Mirac1eSky to AUTHOR_MAP d6137453ac221da5ec0402a858582a165f6177e2 fix(gateway): drain stale httpx polling connections on Telegram reconnect a9369fc19392ab2e1888f2d0f0d3f3cf6769c8b1 chore: more components e116957a63706bea112bb44aa77dbb42aae17dfe fix: replace all buttons for design system buttons 391f1ca1f420511e552282eb90b7b2e40988a983 feat(aux): translate extra_body.reasoning into Codex Responses API (#17004) 72dea9f4f7f01a1045ac917adf1facd62f113160 feat(gateway): make hygiene hard message limit configurable (#17000) 06164a7b28cda2d651e34855b3c6718f1c6960e1 fix(codex): resync pool entry from auth.json after reauth (#17001) 529eb29b6a673bb2a67cbe2cd22e5f1dbaf75399 fix(gemini): clamp Flash thinkingLevel to documented low/medium/high set dbbe2d19732caf941666ed3988f03b3ea45a7a67 fix(gemini): bridge reasoning_config into thinking_config for chat-completions routes 315a11a76fc9f95efc756b7ebb73c5d135a806e0 chore(prompt): tell telegram models to prefer bullets over tables a3b9343f0819ec68224f4902b0af90d3f8020c98 feat(telegram): render markdown tables as row groups d8c5573ffe5de2b27cf9e14a41bcdbd9d3785500 fix(profiles): migrate Honcho host on rename 1970bcf5a5ac289a1e7325f832f129fc0adf64de feat(kanban): system-prompt guidance block + reshape skills to reference-only c69310c625f212179fe1820e8ca9b59433c064ad fix(weixin): raise descriptive error when rate-limit retries exhaust d3a9c69e9b0fd9beec382bf84228b9e631078378 chore(release): map leihaibo1992 author for #16757 salvage a54106bbc83208650fe5bf8efaece844e77c2341 fix(weixin): split long messages (>2000 chars) into chunks to prevent truncation 1a4289b6b74bf5e680eca5e66b891909e44849fb chore(release): map revar@users.noreply.github.com -> revaraver 052b3449e595e35c21308b24a1f32754b33526b5 test(cli): regression test for manual /compress system_message fb112d6a73a57115540e1919a36450b04df0c77b fix(cli): pass None as system_message in manual compress to prevent duplication 7444e49d4e5888d5d89f1ef01761fec838d10419 fix(gateway): use transcript timestamp for auto-continue freshness 93feffbcfaf7bac2f795181a5d7c658e33538a34 fix(gateway): avoid stale interrupted turn auto-continue b61d9b297a2538ad7821e9e5fac7bbbc3b5aa103 refactor: consolidate symlink-safe atomic replace into shared helper 3ab97a32d16611dab295f6a6583398bb6615ce4e fix: preserve symlinks during atomic file writes (#16743) 1369dae22653cdacf2e91cd721aac8a541c033a1 test(openclaw-migration): cover alias reverse-lookup for real OpenClaw schema 7996c14795ef139e8d731e2a368dfe747eb01809 fix: resolve model aliases during claw migrate (#16745) 4aa0a7c195376aa90e9948e71bc24748c805da17 fix(error-classifier): add insufficient balance to billing patterns 7428abd54e6392467da3a690b10b28e1c44d32b3 chore(release): map mtf201013@gmail.com -> ma-pony 0f473d643da9d5a220be2e76a24ea303cb07481a refactor(schema): consolidate nullable-union stripping in schema_sanitizer aa948832886a1bebaea0a54ec807447948aec352 fix(mcp): preserve nullable schema coercion 1350d12b0b5acb0ad9b9b273d85ed08b9b2b1e84 fix: keep mcp dynamic refresh tasks tracked 02ae1522223cf933644fa0346b3016e0d33d882c fix(mcp): normalize nullable tool schemas 832ecde4b08430fa81e7a82bf07cbb0aa77e175a feat(kanban): structured tool surface for worker + orchestrator agents 9cd02b16984a3836c2c5266baf7488d6e222e198 chore(release): map r.filgueiras@apheris.com -> rfilgueiras 37551ee53e63e548c4584f128c9c1adfa1f526cc test(bedrock): add model picker and region routing tests a23f18cc3e27c84977e9b409be652b3ce5dc64db fix(bedrock): add live model discovery and region resolution for non-US regions 023f5c74b1bb9251e242c192fefab2cf91cb4427 fix(anthropic): remove Claude Code fingerprinting from OAuth Messages API path (#16957) 2b728e12748e3a30273acdbef36ecad15a04f2b9 fix(agent): drop thinking-only assistant turns before provider call (#16959) 5316ce95de3ecf39ce5c97aed64e11c026c5478d chore(release): map simonweng@tencent.com -> Contentment003111 a6a6cf047d99ce27463960ffafbe3812612551dd feat(providers): add tencent-tokenhub provider support 91391a6811543731c82b9572e45aaf676aaf4bda fix(computer-use): harden image-rejection fallback + AUTHOR_MAP d7d636f1adabf9b957ac0b47904bf0972db396be fix(computer-use): unwrap _multimodal tool results to content list for non-Anthropic providers 388f5ee22442fcff2951f5f17d168a4af056507a feat(computer-use): background focus-safe backend — set_value, structured windows, MIME detection 8156f64b49fdd710bb7827722315651cc56e6ea5 feat(computer-use): cua-driver backend, universal any-model schema bd10acd747c12e2a793d2743e04462bf82d481b5 fix(providers): honor key_env/api_key_env on Azure Anthropic + accept alias in normalizer (#16935) 4148e85b3ab306b3f53cee2fa71cc62634005665 docs(web): document web_search limit parameter and query operators 4462b349b2edffb7d850089570691c0d3cb39f3d ✨ feat(web): expose search result limit 4e5ebf07ea57e5adb688bebcbe4b04d8d6e70285 fix(matrix): stop tagging the user on every reply (#16932) 447d800b81ec9c5f22d8d9c1a15ec97c7a639f5d docs: add observability/langfuse to built-in-plugins + env-vars reference (#16929) e63364b8df1d24e59ea519d99c1661f363d7b2ef revert: computer-use cua-driver (PR #16919) (#16927) cf0852f92edea069fef4919de90dc6ba58fc5aaa feat(claw-migrate): harden OpenClaw import with plan-first apply, redaction, and pre-migration backup (#16911) a83f669bcf2b0f33909ec5a969692a8ee6737149 fix(models): auto-derive xAI model list from models.dev cache (#16699) 6c783052949d212a723b433dc5aeffdf52fa08cc fix(models): update stale xAI model list (#16699) 1b9b5d29577ab758116698ec25ff27e40c3d3b18 chore(release): map ThomassJonax author email 2f9243c333509e3abadb401837a9781cdbb79e1a fix(session): make SQLite transcript rewrites transactional 22ddac4b1451182cff5d6c9b6258b792baa7e9ed fix(auxiliary): widen URL rewrite + main_runtime to sibling custom branches f3371c39a4e95c672ae80e60d882cc6d0aedbd18 fix(auxiliary): custom provider URL rewrite + main_runtime model for title gen 20b49b71cd0189b220e0eb43f40167fe8e0449e6 chore(release): map steve.westerhouse@origami-analytics.com to westers 1791324604172f9bc809be39998f0f7a354cf78e test(cli): regression coverage for user-provider routing fix (#16767) 632ddf2a0a05c57324d4a67f42332cd6ba94128c fix(cli): honor user-defined providers via chat --provider and -m afb95882985199339b236011694284b5701f620d fix(computer-use): harden image-rejection fallback + AUTHOR_MAP b4a8031b2e88ae2654f7c9d918e6049689e7321f fix(computer-use): unwrap _multimodal tool results to content list for non-Anthropic providers 413ee1a286912e32bae32b863f3febc553ee40d3 feat(computer-use): background focus-safe backend — set_value, structured windows, MIME detection dad10a78d000b78a69b4035e231aa71d0dc35074 feat(computer-use): cua-driver backend, universal any-model schema 42cc905c1369164c53f7cc7525242f549dc25e32 feat(plugins): add bundled observability/langfuse plugin 4d3e3ff8a21e6cfe396ce1c2055204bcbfb851c0 fix(gateway): coerce plaintext "restart gateway" DMs to /restart c9d8b916d10024ecc5d36c9b5954a79a1b26e469 chore(release): map @beesrsj2500 contributor emails to GitHub login a8f9c56cb430ceed64ae93cabebba03d893632f1 fix(config): accept fallback_model list (chain) in validator + save 0edcc57d9a7aa1f0f2b8db522383d8cd2f7f9aff fix(acp): wire HERMES_SESSION_KEY per session so sudo cache scope activates de03a332f7b5dc9570e23926c31ce9f840888410 fix(security): isolate interactive sudo password cache per session efb7d27609c1023ec07789d9e0d777a4974ae2c8 chore(release): map yes999zc@163.com to yes999zc 8d76d69d482c71fdf19762fa6b8239a891c54b8e fix(state): repair FTS5 delete trigger and add v11 migration for tool-call indexing cfcad80ee1ca73f3286e76370638f15320ff0f80 fix(state): index tool_calls and tool_name in FTS5 for session_search 7d884f81c481908131ca03d5e16d9b05921acad0 chore(release): add crayfish-ai to AUTHOR_MAP abefd89059a20cb668da4ca0026fb27150bd4ab7 fix(search): quote underscored terms in FTS5 query sanitization 0169c518207ac7ab10d5545ad684984a9ce7f113 fix(config): add request_timeout_seconds and stale_timeout_seconds to provider _KNOWN_KEYS db305bba8ba30f56e2157a8b4e10e8de354e2275 chore(dashboard): address copilot review nits on #16861 d293e0051ef3002a2a9136ccd55a9e524a6fe704 fix(dashboard): persist chat tab state across tab switches 185ecc71f197ac6869df802bac44d7e1f4e86603 docs: document agent.disabled_toolsets config + AUTHOR_MAP 40bd6d47093a7635980187d737e4769895cfad8e fix: honor agent.disabled_toolsets in gateway sessions be184aa5fa1a3a178ee800a9fe205b770c72adff fix(kanban): close the two v2-flagged issues in v1 d63abbc3290b8052078e63ae5899819280fcb07a fix(agent): persist streamed reasoning_content on assistant turns (#16844) (#16892) 66a05e44d6cff306dbf6fa522b6d31259ad12c07 fix(copilot): require successful exchange when walking credential_pool catalog tokens fdfe40a48b207070c70239a2cc4ffa7ae9d832f0 fix(copilot): fall back to credential_pool OAuth access_token for /model picker (#16708) dd789a4fdfca73665b60f32b35f50ef9a217b7ed fix(mcp): move discovery out of model_tools import side effect (#16856) (#16899) c8ef786926538995541c5a3b0005db2a15cc652e chore(release): AUTHOR_MAP entry for @ztexydt-cqh 1d5e25f35367af7ff15856bca232ba44bd0bc84f fix(gateway): persist /sethome home channel to .env across all platforms 9e4d79b17fcf1e1e75b3d9f840d6581123be42da fix(tui): `/model` writes HERMES_TUI_PROVIDER unconditionally (#16857) (#16897) 9048fd020fbf509bab1dbf6718959e53acb76244 fix(cli): tighten stale-dashboard match to explicit patterns 66b1142384e562affb0a19fb107c3d252703a07c fix(cli): warn about stale dashboard processes after hermes update 6b6fc28e85636bc4d12b07fe589a4bd544142a3a fix(delegate): clear acp_command when override_provider is set 54e24f7758767f60000605afe1167efd926c49d7 test(runtime_provider): lock in model-derivation precedence over stale api_mode b52ceccfa8ccc36f17314b0368a36b782d6999e8 fix(opencode): re-derive api_mode per target model on /model switch 755f050c6782fdc41774b01f660a03a1c4d6954c chore(release): map qiyin-code email to GitHub login 07a818804eda8efafca38c0bbda794c0edb2f2ac feat(alibaba): add qwen3.6-plus to supported models 63b7b6d5bd418626beeab69aa398106183f6f7e5 test(kanban): atypical-scenario stress suite + clock-skew elapsed clamp fix 474c725b49b8a6d343e3527ffe7e0fb3bb3c5dbf fix(yuanbao) messaging platform entrance 8269f9056c3a05f3b5df32c139d84aa0e0cac547 feat(fast): broaden /fast whitelist to all OpenAI + Anthropic models (#16883) 6ce796b49524bf0afff90cb15f4cd0d96fa90f4d fix(cron): preserve Telegram topic targets cff29fa7fdeb92a7e52530479a5fbf3cb3ec4689 chore(migration): reuse existing load_openclaw_config() helper 2dfd73a497dd10c8e53d82698b4c9e43cd857957 fix(migration): resolve workspace files from agents.defaults.workspace ddd2542ba590dd16e72dbf7c12741d6984a89d4b fix(dashboard): persist chat tab state across tab switches d8c2c77be6f44baf675c5ecd2533c81482348a1e feat(plugins): add optional-plugins/ discovery + langfuse_tracing as first official optional plugin 123f8d0fedc435c0f93f89f6986daa4407640cae feat(kanban): battle-test suite + 2 real bugs it found 8081425a1c095d01db858ea1a574d17c93703f48 feat(security): make secret redaction off by default (#16794) ec8243fe2a836e43e24b71286a627f40342ffbd6 chore(release): map matrix-parity-batch contributor emails to GitHub logins 3d67364b8fb5c6aa48c48e4efbfa602595775b47 test(matrix): set user_id in approval-reaction test to bypass defensive self-drop 38a6bada922982e34ebf61e68a1823060b40e4cf feat(matrix): reaction-based exec approval + mention_user_id 6c70ac8eefa8c22b511f3da12446448209a35add matrix: e2e test for cross-signing auto-bootstrap d497387cec31f4329a25db6abb1e5b934f2c5567 matrix: auto-bootstrap cross-signing on first startup 32d4048c6bc5cb43d908362fdd1f5644d42e45e6 fix: MatrixAdapter respects proxy configuration 1eab5960f0842c587a05d18fc75f7c8a717540f9 feat(matrix): add dm_auto_thread config for DM auto-threading 74a4832b74f1238b5e7e7a913f21077a960506c2 fix(matrix): normalize image-only filenames fbbcfa24c5c7b09adaee0dc88b2d232a01282c42 fix(matrix): preserve exception tracebacks on E2EE and auth failures f223346eb7f9ffa77285811b92a02f5f2db22408 fix(matrix): add sync timeout, callback diagnostics, and mention-drop logging 57f8cf00e9c32896141a2a9cb36effdc2157906e fix(matrix): reconcile pending invites from sync state 6649e7e7465c932d66979de554f775d186acb018 test(matrix): adapt outbound-mention notice test to current _send_simple_message API 32b78578e0061934f175289a49aaa91306b72963 fix(matrix): strip only explicit @mentions in _strip_mention 6769a0aece9a37e9816b14e81c5593fbd06048e3 fix(matrix): add outbound mention payloads d7528d43ace151ee0e945ef8c21c070ee4e9b1b1 fix(web): scope dashboard config Reset button to the current tab (#16813) a7cdd4133ca8cf1c89b95f4c45fccfb94a263be6 fix(bedrock): send context-1m-2025-08-07 beta so Opus 4.6/4.7 get 1M context (#16793) a24c6e191fc502b4a89afb8255c15a3f36470495 fix(kanban): address @erosika's pre-merge review (issue #16102) 461ef887058c5c3ac415fbd7f3245c62da5a570d fix(state): declarative column reconciliation for stuck-at-old-v7 DBs 7206eed31954ef2233ea3c0e6c681b7bff06d822 docs(kanban): add step-by-step tutorial with 10 dashboard screenshots 12d745bd7ecb5dde36c99f9ea64c3641aad4d2f5 feat(skills): port humanizer — strip AI-isms from text (#16787) 30307a980220d2e8da05be38e06b19445bda536b feat(plugins): add pre_approval_request / post_approval_response hooks (#16776) 6ea5699e3fc35971ef6ed65587033d072e3ee410 fix(compression): notify users when configured aux model fails even if main-model fallback recovers (#16775) 1619c0e50393256aa0682dd4dad59b268372a3cd fix(kanban): third pass — auto-init on first use, show --json carries runs[] c3e3a9c1846a55aaf8cf480318d03b033494756e feat(skills): add Tier A references — external-data, panel-ui, replicator, dat-scripting, 3d-scene 02df43831625ed689453bfd1336721b8d56325d9 feat(skills): expand touchdesigner-mcp with animation, MIDI/OSC, particles, projection refs 94b26f3ec9d1e5773cfddd74494b65d98444cfce fix(compression): retry summary on main model for unknown errors before giving up (#16774) e27c819de3b77ca84f394e0549153aaa10e9d813 fix(kanban): deep-scan pass 2 — synthetic runs, event.run_id plumbing, invariant recovery, live drawer refresh f2fcc087f70719134ce7be3464d2fab8d53f3539 test(gateway): cover /compress summary-failure warning path e7f2204a07d5d472516a5d47a5187164757cc298 fix(compression): reset _last_summary_error at start of compress() 5c56805a7475eafa5ba5cc991e41c3a31d39c840 fix(compression): align fallback placeholder wording with gateway warning c61bc3f72c384295670b38a2314a0722e8f11bdd fix(compression): pass thread_id metadata + add gateway test for warning delivery dfdc4276e8b031d1bcb25118da9a65594fd0469a fix(compression): notify gateway users when summary generation fails f40b20d13ce6e2604d70cec187c143a0e8100dfc fix(gateway): keep typing indicator alive across slow send_typing calls (#16763) 853ed609a1a4ac056e810d7d3172c71517762420 feat(skills): bundle touchdesigner-mcp by default 49fb75463f90fb50c7d3d518d2489136a47bacb0 fix(gateway): keep env-token Slack enabled dad42014aeb11bf7e655868f00d1c295875dddc1 Port from Kilo-Org/kilocode#9448: roll up subagent costs into parent session total e0e67a99bbb679e3154c15a1a06663fdd0df2526 fix(tui): address copilot follow-up review on PR #16732 (#16740) e7091bb3261fe0d2eb67a6090cf9e7aa6c7c9462 fix(tui): mouse + keyboard text selection in the composer (#16732) bebc10528f10a996037d39d60ac8244c0ab9e2b4 Merge pull request #16728 from NousResearch/docs/docker-multi-profile-section 273be934993db4625edfd55fa432b6472795ee06 docs(docker): restore accidentally-redacted placeholder strings adc2856ffbb61444bb1f9eb9de92528f2336cd33 docs(docker): add "Multi-profile support" section 46b4cf8d21fc396d2c3cbd9a4d9ad5e4b082dd0f Merge pull request #16707 from NousResearch/bb/tui-queue-delete 718088c382b09014322782e9e0fad641922efa8a fix(tui): copilot review on #16707 — naming, label consistency, esc priority 32b068560dd8ae309f34ba6c750f687003ea442b fix(tui): stop ctrl+x from leaking a literal 'x' into the composer ea1012f59fd86c69bb8be3992942513d1e7d23a3 feat(tui): delete queued message while editing with ctrl-x / cancel with esc 18e6cd993861ac8e1c109a36d1e9f60d403987e0 fix: include cache tokens in dashboard analytics input totals 4a9ac5c3559626ed64b65b109e5f46118580c7ba fix(memory): drop scrub from interim commentary + final response 49e3a1d8ee7f236a9a89c743e36b2ddcb65777fd style: trim verbose comment blocks added by previous commit e553f6f3e4c61adc529615caea07f2a50a81f555 fix(memory): narrow scrub surface to known wrapper boundaries 05435a35edb525044e929f1c91ace14cd2f75756 chore(release): map honcho-consolidation contributor emails 894e0b935bb8d6c2c9391e6b0499f31fb25028fd feat(honcho): explain why when honcho_profile returns an empty card 5883df5574de51e394b3d06856f426b5ab515d55 fix(honcho): keep legacy schemeless baseUrl configs working cd276eef7805e5a4795fa08a55fd5efa259b26e0 compat(honcho): accept metadata kwarg on on_memory_write ABC bump 02ab255a0d52697caee5dc5e92ba5ffbff94c4be style(honcho): hoist hashlib import; validate baseUrl scheme before 'local' sentinel 3b2edb347d37202e0d3440bbf361d9170012dfc6 fix(gateway): scrub memory-context leaks from vision auto-analysis output 5ce5b17a42d76fb62feb5fb044d50c87e5906ef4 fix(honcho): buffer partial memory-context spans across stream deltas 5d349ea857d43b33fdb94bb8ab1d74c9979bf195 fix(honcho): hold RLock across new_session's get_or_create to close race 82205276c1ae173cd66fba959158221bf8fb2a03 fix(plugins/memory/honcho): default Honcho SDK HTTP timeout to 30s 36d6b643f6dd6ece5b6a1eada243ae4cb7d26551 fix(honcho): CLI credential guard rejects self-hosted baseUrl configs 5d36871d923ce02bc22af487dae566ce1ea5e7f7 Fix Honcho HOME-aware global config fallback f1ba4014e1a9c2e3a5f15934c243fa69e92110cc fix: harden memory-context leak boundaries 39713ba2ae888966b30b1483460629ff31900a0f fix: strip leaked memory context from commentary dad021745000b717ccef99e31d88b426eecf61ba fix(honcho): thread-safe session cache via RLock cd1c4812abe8731dc485f15da14412c1f9e6f60e fix(honcho): truncate resolve_session_name output to Honcho's 100-char limit (#13868) 326c9daa695b6459285781b1f02e84914db581b9 fix(honcho): require strict True for pin_peer_name to survive MagicMock configs (#15162) d03c6fcc45cfadfe78cbed432490231f477e4afe fix(honcho): pinPeerName opt-in keeps memory unified across platforms (#14984) ef41d3bd450712759768537ffe709c93ead7700b feat(nix): declarative plugin installation for NixOS module (#15953) 1fa76607c01f3212b0ab973013dea8a5bb95c7d5 feat: trigram FTS5 index for CJK search, replace LIKE fallback (#16651) e80504b0887c0af1f10bf269faae244805801b48 Merge pull request #16656 from NousResearch/bb/tui-parity-mutating-commands ed4f7f0ba3660e2bd7f4495891c148238149a656 test(tui): skip slash parity matrix when Python registry is unavailable 56724147ef2ce7df13d6b6a98bbd3fe0eb9ad211 fix(providers/gmi): post-salvage review fixes c53fcb01731587480a08b7e3ca28e04a0652f223 feat(providers): add GMI Cloud as a first-class API-key provider (#11955) 8a33ed613615edb64c1a6244de256f089f690eec fix(tui): address rollback guard and parity registry review 41f70e6fc4c832061f30e8d3a10892c22b26469d Merge pull request #16664 from NousResearch/bb/fix-tui-forceredraw-export adbd173ddd510e86f1c3354cad73c25b36ca5a86 fix(tui): expose forceRedraw in Ink type shim 4f59510dd47429ef5ca40ff6deb8a63fbe67b9cd fix(tui): tighten fast-mode support validation 4a08f1015a6e13f429ff801d70ffff5ae091094f fix(tui): reject fast mode for unsupported live models 8bd5d0667ad94efea0149ee92311a0e572318bd0 Merge origin/main into bb/tui-parity-mutating-commands 6d24880604457cc277d9aaf5e67fd34c696daedd Merge pull request #16657 from NousResearch/bb/tui-keybinding-model-parity b8556eb15ebb663de0d2a9be944b74de7140768d fix(tui): address fast-mode live sync review feedback b3e7a412e24e8a2ee97c28b511440808e161628c fix(tui): wire Ctrl+L to Ink forceRedraw path da6f8449a5a69e236372ca20d31297c37d56caf2 test(tui): tighten redraw hotkey review follow-ups a13449a40acad95fc733c1d198896791944e99a3 fix(tui): address Copilot review feedback on mutating command parity 17029a64e88c2119c111a834e4f96caab6eb041f chore(ui-tui): apply npm run fix formatting pass 487da4b72b2e2a4f100553e6498eecc810bf2053 chore(ui-tui): apply npm run fix formatting pass 4909b94f9955f5e66b48eae38b85598472d5623f fix(tui): align Ctrl+L and /model with classic CLI semantics a4cb3ef66ca1927a5dc6c941d582bb88d844c1a9 fix(tui): make mutating slash paths native and lifecycle-safe d5a89283b7d51120295ef06fa04ffb4b68fcd560 Merge pull request #16625 from NousResearch/bb/fix-tui-title-session-sync 633f74504f852d3aafba096fb9e7c698b8fe1c42 fix(ci): resolve follow-up title edge case and flaky checks 27936ee02dfcfb91006ea839cf7dabd913055e1e fix(tui-gateway): keep queued user titles from being dropped 3aa86717b60c82065fc1cb8623dc2f7a3762d48c fix(tui-gateway): harden pending-title retry and user errors 492c4c6573b43c9d887d0161ca43809526661834 fix(tui-gateway): address follow-up Copilot title threads 3824b0323793053d484176777bce8456b658fc4e fix(tui-gateway): harden session title RPC edge cases 42b917c92ce8a1e306bdbcaf04029e8f80ceba83 chore: uptick 7ccfb97feeac4e58d1404edc73fc0d211b43490d test(cli): assert active-session file lifecycle in launch_tui 7a6128cc4fad93de2542ccf9e82dbda592d47bab fix(tui): harden active-session temp file handling 4b281409123490a2f10685c0fd8214258bcc4bd9 fix(cli): tighten MRU lookup and session DB cleanup 653b5ec128ba17139e6248acd27d51901d3231f9 fix(tui): report actual session on exit 164e33aa46c6bc29563ed43c8e53965478ff8146 fix(cli): resolve -c by true MRU session cdfbd89ea53970e9406b3dfa9f302b032d9a6705 fix(tui): keep /title session names in sync 730347e38f9a772b1ea63ee1595ce483799a0885 feat(skills): expand touchdesigner-mcp with GLSL, post-FX, audio, geometry references (#13664) 1c78f6627ac8995f8bc196c1e7824d0f11fb32bf docs(kanban): document audit-pass invariants — bulk-close guard, reclaimed-on-status-change, completed event carries summary 628ca99d9b2cdeb33f8bcbf31e77f281b4f283a3 fix(compression): show main + aux model and provider in feasibility warning (#16619) 460a8ce5d96dec47ec13f35ec12e79996a94d4f6 chore(release): map hermes-agent-dhabibi bot -> dhabibi aa53fb661ac24f09507c4ec86839468a651e72f0 fix(copilot): mark native image requests as vision 8402ba150e2d19c6efbe7ad8c98a3fe276a0daa3 fix(copilot): send vision header for Copilot vision requests 512c6100581a22ae1d6b1301bbfa02b771bca27a Merge pull request #16605 from NousResearch/bb/fix-tui-docker-ink-build b479205396f0405d9644a090044550c16c6faf32 fix(docker): tighten TUI build contract 60f2415a4a07d58c037a040dd91c260ee9bd6f0d Merge pull request #16600 from NousResearch/austin/fix/model-provider 082acc75b0753823cde153da7d5ac5cd1446f7e2 fix(review): address copilot review 4424a0e0f772f7945e4ebedb35540bcc34747567 fix(docker): prebuild TUI assets in image 98d75dea5a86aec599b1e081f8bbe9170bd3f964 perf(tui): lazily seed virtual history heights (#16523) 8ef2ae65023f3a074f7a1de95e4b01e69fc4fe25 fix(kanban): audit pass — close orphaned runs on archive / dashboard direct-status / drag-drop 9b55365f6f0191ac21eee371f8197454ca6f69fb fix(gateway,cron): close ephemeral agents + reap stale aux clients (salvage #13979) (#16598) a0b62e0c5a580a08e65b798543a4bcde0fb8118c fix(models): consolidate provider and model into /model command 0146cb2bd267cb88f590aeb9492a6ba5b29211ed feat(kanban): runs as first-class (v1); structured handoffs; forward-compat for v2 workflows ac0325c257143338159c9a7073c90ac62c8a1119 diagnostic(cli): log slow bracketed-paste handler (>500ms) for #16263 (#16575) 817633bc5d02c137cba1e1affc06cd151a683ec0 feat(backup): exclude SQLite WAL/SHM/journal sidecars (#16576) 9692ce2072dd391d25787431cf5e4ac64c58b04e chore(release): map andrewho.sf@gmail.com -> andrewhosf 008860a23f0fe6cffb0c7ae169f347588017469c fix(approval): close remaining prompt_toolkit deadlock vectors (#15216) 0046d170dcd92e776d6aaf329df31d59c6c60426 fix(agent): propagate approval callbacks to concurrent tool worker threads 8ad29a938ad06c31c9de05e825670d3ab7fa91dc fix(agent): restrict background review agent to memory and skills toolsets a59a98b1802c160664adeb299b57f5cd78657631 fix(cli): pass session messages to shutdown_memory_provider (#15165 sibling) 500774e30e628ed5c3c32c1eb6cab88a50c16f37 fix(gateway): pass session messages to shutdown_memory_provider (#15165) c4ad2c33f4410ea9b6d27d4fb97b57f5c427b9b7 chore(release): map christian@scheid.tech -> scheidti 75b460bc9433c3d165e3ad13639e876aba182208 fix(email): add required Date header to outbound mail a9033c92201d33cb39d9669fcd2140931ae2886a feat(backup): exclude checkpoints/ from backups (#16572) ea3c5a14c3914026d782c11cec0fdd87b2e5a24f feat(update): make pre-update backup opt-in (off by default) (#16566) da7d09c3b64fe1f782a41b8dc3c4c9235be7c483 feat(kanban): max-runtime timeouts, worker heartbeats, assignees picker, event vocab cleanup ec671c41546eaf63630a441f67e264acc6ff77c6 feat(image-input): native multimodal routing based on model vision capability (#16506) df3c9593f8822762b5b4bbe30b582b62578d04d1 feat(plugins): google_meet \u2014 join, transcribe, speak, follow up (#16364) 8ed599dc0546aeedaa0c54d1b4a3077d2d88e161 feat(update): auto-backup HERMES_HOME before hermes update (#16539) 920ebd83036f7cebd0e6f4c2f2296f18a4a24a2c feat(prompt): point agent at hermes-agent skill + docs site for Hermes questions (#16535) bb00b783fbf8d6cde1756b7d598e6667c2e0683c fix(cli): eliminate ghost status-bar + DSR input leaks from terminal drift 5e92b67807c3fa31a84ded6af44fa06805000f93 fix: stop idle CLI redraws ee1a07f9e99f4046e35f66998d876b1747f32c97 fix(agent): block cross-provider reasoning leak to DeepSeek/Kimi (#15748) (#16500) 65f648ee84ff97a90fd43d85e521a7100c6a999d fix(website): auto-wrap ASCII-art code blocks in generated skill pages (#16497) 64a497bfa92487f7a4142095370ed85b096fd63c fix(hindsight): preserve setup config on blank input 90a3e73daf18448ee5239b1e19d92ded0dbc77ae fix(debug): sweep expired paste.rs uploads on a real timer (#16431) 2e6699b31911778caba411a38a3497b42d66a6f7 fix: strip leaked declare-x env dump from terminal output on macOS (#15459) 21f503c23c4abd825317ec57993aee1275ba72c5 feat(update): snapshot pairing data before git pull (#16383) a32d07529cf554d3d849a49f9924b2574107ada4 fix(file-tools): escalate to BLOCKED on repeated read_file dedup stubs (#16382) a52ed706085f2e8f2c0d19d69aa727224eade716 fix(terminal): suppress declare -x stdout leak when sourcing snapshot on macOS 3ff3dfb5ac97c7a746d2c54a9b8eefb9f6279a75 fix(telegram): accept /cmd@botname from bot menu in groups 8258f4dcb7c7398d4d597d453def6aec0fb22c41 fix(model): avoid persisting key_env-resolved secrets to providers entry (#16372) 9f1b1977bca3db59e7e269eb9701c0da73dbe2bf docs(skills): salvage dropped trigger content into skill bodies e3921e7ca4a6a98c00841eb72d9bcc9b9ac99185 docs(skills): compress 74 built-in skill descriptions to <=60 chars 7d586ddb426fe2424960b972ff27e93e42a53aed docs(skills): trim design skill descriptions to <=60 chars + inline cross-ref a131c134bc6ce8d92c475ecdeec85547db38ee80 chore(release): map BadTechBandit in AUTHOR_MAP 55be532369e957db372574fa86e30edca090fd53 docs(skills): clarify when to use claude-design vs popular-web-designs vs design-md 8c5d3a99d67f3036716ea3b03b74bf37369c489e feat(skills): add claude-design HTML artifact skill af3d5150c1a62d2acf3138897d5ea13644369ce7 fix(matrix): close 'hall of mirrors' pairing + echo loop (#15763) (#16374) 4a2ee6c162cf6dbf745a260359c60912328a3d97 fix(title-gen): surface auxiliary failures via _emit_auxiliary_failure bda2dbc29edc3f807bbc003227a428ec2a5245b2 fix(compressor): apply bare-string guard to protect-tail boundary scan 943465235ee8e33f903e34b964ec6bfe5b7cffbf fix(compressor): guard against bare-string items in multimodal content list cfc8befe65b929e7e4d3d071c778894fcfba4e7f fix(compressor): use text char sum for multimodal token estimation in _find_tail_cut_by_tokens 3e68809fe0c502532782ddeabd9b3b5c2ac92714 chore(release): map romanornr noreply email a0fe73bada33e573cf164660a07caaeac5c1e3d6 fix(cli): strip leaked bracketed-paste wrappers 7c63c246137df0468a2c0207c693063caf95412b fix(cron): don't silently disable recurring cron jobs when croniter is missing (#16368) c5781d50c70487ede1297553dff909b4a8388493 fix(azure-foundry): auto-route gpt-5.x / codex / o-series to Responses API (#16361) b9393296fcc801869f6957a45aa88c5bcc23e12c Fix TUI input field ANSI leaks and text selection issues 235bfb192b91cbb496f5f635d3fffaa9174abd1d docs(skills): document URL install across features, reference, guide, and hermes-agent skill (#16355) b4bc87bfab57473808cac3a3fbdd49213cafc701 Merge origin/main into bb/p2-mru-resume-order cbf66fcfcd4f44b77eab0a52189bbe528cc28daa fix(feishu): send WebSocket CLOSE frame on disconnect (#10202) efd217be548c48edc955dc4f83ac12051194c731 chore: uptick e63929d4f3ff3f4ef89e7263c13c628beb2c1aa1 Merge pull request #15926 from NousResearch/bb/tui-long-session-perf 859e09b7ced2332de353d4f35636abb98e92b87a chore(release): map xiahu889889@proton.me to xiahu88988 898ccfd667065937ad86331528a424a8d5e7aa88 fix(skills): honor scope query from Google OAuth redirect URL 7c10c3be98f01b9c0a962316c1b3b63145f86cff test(cli): assert active-session file lifecycle in launch_tui 6c87371815f8c23e7d1d4595f7a90d884b6a4d54 fix(openclaw-migration): case-preserving brand rewrite + one-time ~/.openclaw residue banner (#16327) 517f30b0435c7f30d3204941888c83766033cd72 improve(agent): guidance for plain-text URLs, subagent language/verification, hermes-config routing (#16325) 9c416e20abf31632d768682deac35e49f4214a10 feat(skills): install skills from a direct HTTP(S) URL (#16323) d308ae27e178501607a79c2d63f46821591d6838 fix(nix): refresh tui npm deps hash c3a2d70656f17893098d40064a716ba7628c3661 fix(tui): harden active-session temp file handling 8f3e9f80cc68fbc2112bc33455f87dc610dadd11 fix(cli): tighten MRU lookup and session DB cleanup b288934dffcc3f38938931e2947e9e49c8602b34 fix(discord_tool): coerce limit parameter to int before min() call e19854d8937611536f905d01892ffacbfdd9cc2c fix(shell_hooks): parse hooks_auto_accept as strict bool/string, not bool() (#16322) 6993e566badca33a9380855845dbd2bbf6bd5de0 fix(whatsapp_identity): pin identifier regex to ASCII, clarify it's defense-in-depth 91512b821074cd481864565322b1fec74f30434c fix(whatsapp_identity): guard against path traversal and silent mapping errors 366351b94deabd1a6c13e5d5e1dc967ccebc02ca refactor(timeouts): drop redundant ImportError in except clause 16e243e067e5b2c37d7df70774ceb5e12bb0197b fix(timeouts): guard load_config() call against runtime exceptions 690a0e35e106f826b1fcd8caff0c223cb801454a fix(tui): report actual session on exit 3e1664923df8f5244ed36426f02364ad9637cffd Revert "fix(tui): report actual session on exit" c23463fce97db276dff71389f77af44a0fde6625 chore(tui): keep MRU resume split out of perf PR 2528684b3ad3cf36235122902f21012f4b1ba393 fix(cli): resolve -c by true MRU session de790eaceb65337458dacdd414ac57168c0f6332 test(tui): align viewport snapshot key test with quantization d81b1cd86ccf0c7e64d6550227f988e6591f172d chore: uptick 7945fcef2100dce0e61b46c3ad913dbdcc93fd52 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/tui-long-session-perf ffa33e53f6b2943624cd95365ba1a0f8bc8362c5 chore(tui): remove dead branch cleanup code 5dbd97bdfb165c3bc9a8cbdd74dcc50f7cbf1c94 fix(tests): update copilot_acp subprocess.Popen patch paths to acp_adapter.copilot_client df018121a4c7a862a1f1bb81b9124ab02546532f feat: add provider modules + wire transport single-path 635948d0e02ac7cd71ba9c3c0dffcbbdf8fcf2a7 chore(tui): tighten todo-fix comments, drop dead archive call c2ca02fcff89a3fadae20e13cc85ba3fc70b68b8 fix(tui): stabilize live todo panel count and anchor position b51c528613e36d08160fde2510ec54c470633390 fix(tui): address virtual row and perf log review notes 625c31fcea41295a1ac6f006067b619c28d15144 fix(tui): run built TUI with production React by default dda12775f219a20278df2e8c757995222060a309 fix(tui): address Copilot review follow-ups 2e4b65b9f54fa16be73e56baab162f4ca46be0ae chore(tui): clean remaining Ink perf scaffolding cb51baeceb84fe6b64db94f553ea7c82a5d54dfd chore(release): map Tosko4 in AUTHOR_MAP e85b75251620df4ac630644f61aa6928cc494197 fix: signal compression boundary to context engine 7da2f07641458a710695c404ea1ca1fb585fa48d Merge remote-tracking branch 'origin/main' into bb/tui-long-session-perf 478444c262b9a9600e2ba1a063ecf1852d7481f4 feat(checkpoints): auto-prune orphan and stale shadow repos at startup (#16303) ced8f44cd2241b67cdef43fdfe92578a9ab7ce5d fix(file-tools): broaden dedup-status write guard to cover small wrappers 977d5f56c9ffef6922efb83da76342165d9d3767 fix(file-tools): keep read dedup status out of file content a32b325d068947ae82116b0e3506c33c51998147 fix(tools): invalidate read_file dedup cache on write_file and patch 419535f07f4046c60b05b15e3ed9bba30c9527e8 Update maps_client.py e504a599fef591f69bf0669111626944c6fbd254 Update maps_client.py dbe5015566e1c17fb97ee81d55b804450543423e fix(session-search): exclude current lineage root deterministically in recent mode ebad6d3f1e3a8e8a7a16bf2592a4aa77131c03e2 chore(release): map yoimexex@gmail.com -> Yoimex 87610ce3808df360fe4cee8488d32363a2a152ac fix(tools): coerce quoted use_gateway in image_gen UI detection f66ebe64e86b813e1954da462322a794e71b89eb fix(cli): coerce use_gateway config flags in tool routing 36b13709f528c1dc92cefa9d2bbeeeba5cbde6a5 chore(release): map johnncenae in AUTHOR_MAP 77d4766602ef68c15de9721ab3b8014e87007a6b fix(gateway): clear pending model note on auto-reset paths too 00c6480a05e314b6bdf2dc2788ff4b8e4fe39edd fix(gateway): clear stale pending model note on session reset 88a85d30c1cf7c8731564bf5bd0ace243214c551 fix(logging): attach gateway log after cli init cebf95854bf5ee577930a7566a1dc07968821d72 Fix MessageDeduplicator max_size enforcement 34eb1aaa9a80baf1524d8b87ea78a07702d4aa90 fix(update): use npm ci to stop rewriting package-lock on every update (#16295) ab6879634e397bd9d0ba7da4bf93390f6921efa5 yuanbao platform (#16298) 5eb6cd82b206674388d7d029917307c8af826cd5 fix(sessions): /save lands under $HERMES_HOME, widen browse+TUI picker, force-refresh ollama-cloud on setup (#16296) 7e3c8a31f0f39ea910ebc8b4d91947a3d129c52a feat(skills/airtable): tailor skill to Hermes idioms + expand cookbook 0bef0b9416783ecc221b5ac9346049a604e1e83d chore: docs + attribution for airtable skill 55e9329ee6f6066bc6a89349d43379c46921cc58 feat(config): register bundled-skill API keys in OPTIONAL_ENV_VARS 0d4247d9bf0d4cbb32ff872825e57757bbee9717 fix(skills/airtable): use .env credential pattern matching notion/linear c997183f535289e24ce43e4f24c656b39ceae63f feat(skills): add bundled Airtable productivity skill f01e4402a97fde5e0b3f2dea1812fcdbed509dbb chore(release): map georgeglessner in AUTHOR_MAP 5b5a53a155857e63ec7f7eeb373049ad224fc92f fix(cli): check hermes_cli/web_dist/ not web/dist/ for build staleness 90c84c6dba01633c424dd9b8deaa94d0c3caa4e3 fix(gateway): unblock update subprocess on recognized-command bypass bdaf56a94d5bb651c07746143ae844f4b4960ae5 fix(gateway): bypass slash commands during pending update prompts b1c49d5e73b85ee1713e5041c336364af46b3677 chore(tui): /clean recent perf work — KISS/DRY pass bdc1adf711dcee01c1c5c46bca7805541857ab11 chore(release): map haru398801, badgerbees, xnbi in AUTHOR_MAP 55f212a7a2bf11abcc42f2d8abbb0bd1efd86c22 fix(slack): honor NO_PROXY for Slack transport 7eaad06a87f5997074627956091b2e23fbbe1185 fix(gateway): default Slack tool_progress to off a01e767b249b311cd50f891ca923bbf250e4b4c4 fix(gateway): respect config.yaml slack.enabled when SLACK_BOT_TOKEN env var is set fd474d0f00d270d8c11f0ae68e7f75d2953b638e fix(gateway): avoid cross-user mirror writes in per-user group sessions cd2aee36ca75feced321820bd0db45dacf378f47 test(sessions): wire sessions_dir through auto-prune + file-cleanup regression tests 3b60abb6bb7eb6ae50f8c51927f5cfac1deddde7 fix(sessions): delete on-disk transcript files during prune and delete (#3015) 0ba6471dd1914662e8ce81aeefc9bb1594d03c8d fix: recover hindsight embedded daemon after idle shutdown 7317d69f19148584782df1a35ff2290cca1a19fe fix(security): treat quoted false as false in browser SSRF guards 2a0fc97c76b92faf6740e50b89b2f83c2e2c0e0b chore(release): map mewwts in AUTHOR_MAP 8fb861ea6ed799a50904ee13b275150097ecd47f feat(gateway/slack): support channel_skill_bindings 635253b9185f1d65dae7df17421daf0dfbc0f576 feat(busy): add 'steer' as a third display.busy_input_mode option (#16279) 87477756fd4030db853758a572b6840bbfb58aa9 chore(release): map Ito-69 in AUTHOR_MAP 930494d6874992ccca04141517837998da1122a2 fix(cron): reap orphaned MCP stdio subprocesses after each tick 5db6db891c5ebaa9e40e015946b946d4df1f12fe chore(release): map ghostmfr in AUTHOR_MAP e818ec520aa258214333ed0e11057ef8bc840038 fix(slack): harden attachment handling 527ac351b476faec88c3b3f71a04ae335d1e7d91 fix(tui): address Copilot review comments b115ea62da2c8bb5c1dc627bbc2d6e426bbc9dda feat(tui): anchor LiveTodoPanel to latest user message row 25767513f2f290547372ec0c1b051c0ce62fe51b perf(tui): unified Ink cache eviction on memory pressure + session reset c370e2e1e503d0009843cd517c66945baf096e01 perf(tui): cache stringWidth/wrapText/sliceAnsi + skip-slice when line fits clip b16f9d438ba18cb433a94a47dd99a05abc808d0a feat(telegram): send fresh finals for stale preview streams (port openclaw#72038) (#16261) 61b65eeb0c93710e07e3e510a935196c93cff72f fix(signal): read groupV2.id in envelope, fall back to legacy groupInfo 85e9a23efbd0b884c770056a9fec13ee14ea313f feat(tui): HERMES_TUI_FPS=1 shows live fps counter 4395c2b0073fe4bab4509fcd5967f1709a73e930 feat(tui): port claude-code's wheel accel state machine 0cd98499bb1e14833bb36b0e784abdc97b29a8b8 Promote debugging-hermes-tui-commands to in-repo skill 4cdb6962ca3f5555229628d10232bd05012e6681 Add hermes-agent-skill-authoring skill 9a46feb9bd43daad5910aa204d3eb93135259099 experiment(tui): HERMES_TUI_INLINE flag to skip AlternateScreen 8d2b08342cbb5c4d8a339726c70229d4ca49a0bf Add node-inspect-debugger and python-debugpy skills 82f842277e8b6b9a87d3fc9572f9054fb31d8339 perf(tui): profile harness gains --loop, --save, --compare f823535db21585b0b604f9f48c41baaadcdaa12a perf(tui): instrument stdout drain — rule out terminal parse bottleneck d3dedf10aaefb14fc2f3f03c109bf4f87c43a1cf revert(tui): drop DeferredMd, profiling showed it was neutral 7ca16eea56a5f9f79a91ef1eeff3ce763693c745 perf(tui): scroll one row at a time per wheel event, half-viewport per pageUp 4a9070c9ac24ea8a205825bd8533b5c7b022904e perf(tui): defer Md upgrade for fresh-mounted assistant rows 7242361a6937c7caa34ffbeb55a12276800568da fix(tui): wrap streaming markdown split in column Box cd7a200e6c05d3295027cd231165e2a8b892956b perf(tui): instrument scroll fast-path decline reasons 71eee2664022d97a0d509f25c867b30ad1f4e904 perf(tui): full-pipeline instrumentation + profiling harness 69ff2010509fd81f01af533ca47ab4881ea9eeee feat(tui): anchor todo panel above streaming output 2259eac49e5ee78b4549fd225317a18958f35891 feat(tui): collapse completed todo panel on turn end cb7cfba6ded3b071be74d3218d96741f12c7e56b fix(cli): surface last_active in search_sessions so -c works debae25f1c4b7e7e47600a249c662fb880b26522 perf(tui): incremental markdown during streaming bde89c169bdcc7d34839a8706b142929782c615f fix(cli): -c picks the most recently used session b36007b24679214746787f450b192f47f13c0c16 feat(tui): allow collapsing archived todo panels c78b528125c597ae41d624b4fc87125fc0d29d9c feat(tui): archive todos at turn end with incomplete hint 319c1c1691847d2df20e79cdd708b56b6f92a54c fix(tui): inline todo in transcript, group across thinking 4943ea2a7c4220251b52099fae7a9b01813b272a fix(tui): merge tools into contextual shelves 4d3e3a738dabddf1dda336efd796f4710640e153 chore(tui): sort imports a5319fb7afb2decd3f1f510fc4cac3601d1d3b42 test(tui): cover live todo completion flow f5552f92e2b935a2f404cb7cee3179927ab143fd fix(tui): stabilize live todo progress 1566f1eeccfffd3b72ac70777d70014bd050084a fix(tui): report actual session on exit a30db69dd576f874b0e821fc3af4d3d421134057 chore(tui): clean live progress lint f6846205cce3d5ad54952dc70cd3f77c09cc165d fix(tui): isolate turn state from app render 6a3873942fef72c871c5f3eae38126e24853db14 fix(tui): format thinking paragraphs 64de685d3ff4320d1284b91a100770ab4dd4c233 test(tui): remove stale turn freeze experiment cee4036e8b434e8821bb0d19b574eab8b67c29c0 fix(tui): merge tool shelves in transcript cf8439263ae4d85102176f1bc170624faec6ebed fix(tui): keep todo pinned outside transcript 3271ffbd80f43d149d4939d0897ba80a971bcd53 fix(tui): pin todo panel above live output a7831b63dbc493c1f506e6c09e420d79cf554c08 fix(tui): stabilize live progress rendering d4dde6b5f26a4b96db66a170a70e0d29413cc8a8 fix(tui): restore resumed transcript lineage 755a2804247d7cb21991c421af471ecbdb72124d chore(release): map Wang-tianhao in AUTHOR_MAP 6087e04043c491c0b66dda1b287cc72d3a5492c7 fix(slack): extract rich_text quotes/lists and link unfurl previews af8d43dbbb7b9ccf302580e6819696f0daf34abf feat(kanban): core hardening — daemon, circuit breaker, crash detect, logs, notify, bulk, stats 4921b269450b9c1648057559224d465fb1c58d62 fix(cron): keep homeassistant toolset enabled when HASS_TOKEN is set (#16208) 1d24cb0e6e430c6b506c27e0a9dda929bb9e4477 fix(tui): bound live render memory pressure 822b507a729c78fea9cdaacb1f71416e57ab9ebd chore(release): map maxims-oss in AUTHOR_MAP 18beb69b4996591cfae3233131e8dc37018f3423 fix(memory): close embedded Hindsight async client cleanly bf05b8f4a2ddeeb1c3f656d02f4d17f5f221d01c fix(gateway): clean up cached agents on shutdown (#11205) 778fd1898ecf300d52674a1b8b91e6d731a0c898 fix(slack): surface attachment access diagnostics 45bfcb9e71b4071567d2dfe0c844a881de43242a test: update bare-agent helper for live-runtime attrs added by #16099 aa7b5acfcd4794d55aedb5c6be5e9138187a5be8 pass attribution check 36e352afa73ba13a488405cc1d51d90092ae4103 preserve the original comment 2d86e97a7e2c6f4af4595072a53ae13a56d44464 fix(run_agent): shut down background review memory providers 27fc6c1086519ac0337b9671a4c0d6585ce2f59c feat(kanban): bulk ops, drawer edit, dep editor, markdown, touch, config edadeaf495c7094a7a9f4934d7df7b1e3fd2259e chore(release): map Satoshi-agi and kunlabs in AUTHOR_MAP f9885130b42d3b34e0289f91cafed736f67dae97 fix(slack): download files in Slack Connect channels f414df3a56dc605a8fcfb4c86b0e407584e84ee3 fix(slack): include team_id in thread-context cache key c0d25df31132f5b8e1932424ac06510c8da662c5 fix(slack): preserve thread-parent context when cron/bot posted the parent 10e36188da379c1ceb6e703f2603579e7564c15a fix(cli): wire approvals in background tasks 6a3102f9d4695a4e8f8ed0d774352968413ab9e2 chore(release): map hhuang91 in AUTHOR_MAP 75d3eaa0e4b9c602933b2ad269f0ea0f593b5d2d fix(slack): exclude U/W user IDs from explicit target regex 802c7acb813b9845cd2b6aefeaf193e7176908f3 fix(Slack): resolve Slack channels by raw ID and enumerate joined channels 541cd732e822cebe51ccd8ca5f64b4a4332c8809 chore(models): drop deepseek from OpenRouter and Nous Portal curated picker lists (#16197) 45806629c517c1ce61f860cdf8a482144979ff5b feat(kanban): Triage column, progress rollup, WS auth, lanes, polish 4d119bb62acddf75669d3a5c79e3cc5b40d93a05 test: blank platform-gating env vars in hermetic fixture 878c196738eceeea0908fd0f03bafd49639cd359 chore(release): map hhhonzik in AUTHOR_MAP 50dd67c6808fb0c86297298adbf207db9a03a626 fix(slack): skip _mentioned_threads registration when strict_mention is on aea4a90f0ea3e889f6af52a7463c4ea4203faf42 feat(slack): add opt-in slack.strict_mention gate for channel threads 897dc3a2bb3028cc21b6d227b1845f4990e42e07 fix(install+update): add /usr/local/bin PATH guard for RHEL root non-login shells (#16191) 350ee1bf2332e52dee464f156d586dd9ff35851a refactor(tui): render progress in ordered stream timeline 4093201c47b854a1d45a778ec435659ec34a90e1 feat(kanban): dashboard plugin — Linear/Fusion-style board UI 3d21f97422cd51153bd0c073f189ae07aa1830b1 fix(tui): keep live tool state before stream segments 4b5a88d714ee519ca95aad2fcca442c16293fcc2 fix(slack): honor reply_in_thread=false for top-level channel messages b1be86ef96706cada99b1fa04673d301b98d5325 fix(gateway): bridge slack.reply_in_thread config 7b5b524fc71e210ebe778c22234518ea3ef40588 refactor(tui): clean thinking and viewport helpers a30ffbe1d4498505a5bebda2960ec16053a9c7fb fix(tui): show queued prompts when drained c9f7b703ddb1971acb573bfe6a8890584e9442be fix(tui): filter thinking status noise 9f610aa8f3c74ec446a7250c001e1e34441b9149 docs(kanban): add GUI/Dashboard plugin section a8bfe72d359d4e049984dd26a27185ce1e63e64c fix(tui): address latest review feedback ae7687cdc5e678188e20bfab1757a0292ac6a955 chore(release): map zhiyanliu in AUTHOR_MAP c730f6cc0b1c093f3fb129a5aff33a8f3ea1c3b7 test(gateway): cover Slack vs non-Slack home-channel onboarding hint d993a3f450aab9c845867adb59f550d6ed07afcd fix(gateway): use /hermes sethome in onboarding hint on Slack 1dfcc2ffc33444c6cfbf90c973be673d426cac94 fix(gateway): /queue is now a true FIFO — each invocation gets its own turn (#16175) 5b2c59559a00dff919701be4211db8d288deb20a feat(terminal): collapse subagent task_ids to shared container (#16177) 2be5e181a987d7e07cba55c5d8b0e1a17597c0e7 fix(tui): keep thinking color theme-neutral 015f6c825df2e877af5d9811b1ff016d188ab551 fix(tui): support modified enter for multiline input bb59d3bac24888912c34e046573e1e2ccf492ecb fix(tui): preserve completed thinking panel 4a21920b5ec558e992a36306e08c262430e3bc9d fix(tui): address copilot review nits cc16d0ef77bb31c003f7abd498d69285c8dd3632 Merge remote-tracking branch 'origin/main' into bb/tui-long-session-perf 087e74d4d79505e37669159a9557f9d3dc7b664a feat(slack): register every gateway command as a native slash (Discord/Telegram parity) (#16164) a8fcd1c742f459a6d8ed506786f48e406d481b1e fix(tui): apply details mode live 9be83728a67c794daa20c553919f4869675a2edc docs(docker-backend): clarify container is shared across sessions, not per-session (#16158) 93977675135acb9370167392542241e9650a69e8 chore(skills): remove empty feeds category (#16153) 9662e3218a7fdb33efc3bdfe79247c6c5097ef86 fix(tui): call maybe_auto_title for TUI sessions (#15949) (#16151) 0824ba6a9db8c5e92d4fe2e7ee5bc086844b336e fix(/branch): redirect session_log_file and expose branch sessions in list (#14854) (#16150) 42c076d349e7a737355b37035ca415a79c719c4b feat(browser): auto-spawn local Chromium for LAN/localhost URLs in cloud mode (#16136) 0e2a53eab2ac7a937b2ce2a089b07c18f8e30bcf feat(skills): show enabled/disabled status in 'skills list' (#16129) 6814646b364aa37c27734faf37339770d1889123 fix(tui): avoid duplicating flushed stream text eaa7e2db670ba0879bc040c22c39d5abb39b897c feat(cli,tui): surface /queue, /bg, /steer in agent-running placeholder (#16118) 4e356098d21a29a4f86c8c55c0caef9b90d10307 fixup! fix(gateway): preserve inactivity clock on interrupt-recursive cached-agent turns (#15654) de24315978cc69fd0932e141bedef6b8f28e4b88 fix(gateway): preserve inactivity clock on interrupt-recursive cached-agent turns (#15654) 20cb706e034e551a6df8f6f3ff798888ee5793e7 chore: extend [SYSTEM:→[IMPORTANT: rename + AUTHOR_MAP d7a346824626cb3d89578d1c56e5bc79bc2c93ff fix(prompts): replace [SYSTEM: with [IMPORTANT: to avoid Azure content filter f2d655529a7d9228d8eff30447d88442d9054032 fix(auth): hoist get_env_value import + strengthen .env fallback tests 27f4dba5ceef6e93597d8767d3f745bd9ecbdd52 test: add unit tests for credential pool env fallback 8443998dc3bf89e453152389bec79351d2cae710 fix(auth): resolve API keys from ~/.hermes/.env and credential_pool e1c5e741ada31d973c438ed71754f9cd496f1273 feat(kanban): durable multi-profile collaboration board (#16081) e3901d5b257d5ac3f58420c3fb55aaa536fc56ac fix(run_agent): background review fork inherits parent's live runtime (#16099) 06f81752ed40d5f0e780bee01fbba8947ce5007a Revert "feat(kanban): durable multi-profile collaboration board (#16081)" (#16098) 9ef1ae138ab349004c9cceec19b32b7bce59d544 fix(docker): don't chown config.yaml after gosu drop (#15865) (#16096) c5196f1fc2f44c28ed58bf5318d5597d6890f3fe chore(release): map focusflow.app.help@gmail.com to yes999zc 63bf7a29b6a3eb03d37b749decbd6a5d9a70543b fix(run_agent): prevent reasoning_content regression in DeepSeek/Kimi tool-call replay 15937a6b4654a331ce5fd5b1052baad82f9319fd feat(kanban): durable multi-profile collaboration board (#16081) 13ca9ee665bb3dda2b728d7082d8e68d5ab51b1d Merge remote-tracking branch 'origin/main' into hermes/curator-infra 83b22637af3cbd4b7bfbe5905884276a4dfce2c2 feat(curator): hook into the gateway's cron-ticker thread 454d883e6977419854cf26138b93b118871d36d7 refactor: drop persist_session plumbing + fix broken btw mid-turn bypass (#16075) 70f56e7605c36885622c0741537e8a9ee5edd68f fix(gateway): let /btw dispatch mid-turn instead of being rejected 7fa70b6c87224543430e4a99c7126f50e4d1190f refactor: /btw is now an alias for /background (#16053) 0be51452fad89fbb116c8083a5ce020f73229a22 fix(curator): default cycle is every 7 days, not 24 hours 9a7026049088ef6545053313d71856703ff933f6 Revert "feat(onboarding): port first-touch hints to the TUI (#16054)" (#16062) ffd2621039259ee8419549fedc8739bf1a350436 feat(onboarding): port first-touch hints to the TUI (#16054) 1e37ddc9293cc7b912b1ef85765f4fc93dba7ced feat(cli): add 'hermes fallback' command to manage fallback providers (#16052) 76df76477fef60b3dc3765a56dd2b0075bd688b2 fix(curator): defense-in-depth gates against bundled/hub skills f40ccece11600ae2ab431cff804d22b5411ff1fb refactor(curator): point review prompt at existing tools 9dd59cb6375ff26f8ceeb2dee491a0e139240b6d feat(curator): background skill maintenance (issue #7816) 83c1c201f61c607259f5a5f7af32ddbc9c1cc2cc feat(onboarding): contextual first-touch hints for /busy and /verbose (#16046) 4bda9dcade8bf1080a6c70841fe862f8c7229c00 fix(gateway): honor voice.auto_tts config in auto-TTS gate (#16007) (#16039) 67dcace412342ff11dff635c3f5002ed205ebabb docs(config): show options in comments for display settings (#16038) 35c57cc46b88710a98c4d43107b87b4ab828e3eb fix(gateway): suppress tool-progress bubbles after interrupt (#16034) e8441c4c0fd993c6876dc40ad25f0e2d2e0b63f7 fix(clipboard): report native/tmux success, keep Ctrl+Shift+C on dashboard 2511207cb088e24d0325d5814d9a1b197a7c8ad8 chore: revert docs 0f3a6f0fb3a1e7c6322af960614cc055f8d32a0c fix(clipboard): dashboard Ctrl+C direct copy; TUI honest feedback; HERMES_TUI_FORCE_OSC52 a5624203831705454a3c8e2f72b3931f5b9ec74e fix(tui): robust clipboard handling with debug logging and headless detection 855366909f659e7f11635dc5bfbd279a1d4ef83e feat(models): remote model catalog manifest for OpenRouter + Nous Portal (#16033) d09ab8ff13329da1715d20e3fb17d47f499fbc18 fix(mcp-oauth): preserve server_url path for protected-resource validation (#16031) 438db0c7b062d5ceeadec5d9de009324ee822467 fix(cli): /model picker honors provider-specific context caps (#16030) 2ccdadcca6296d3a4128830865067c52f5ea2d5d fix(deepseek): bump V4 family context window to 1M tokens 76042f586787d7a2af8adb70cca4d2d53bd56bb8 feat(review): class-first skill review prompt (#16026) 192e7eb21f5e2c4b8ef7b332e4423ea69a979754 fix(nous): don't trip cross-session rate breaker on upstream-capacity 429s (#15898) d91e24547c416ff22f2dd44f779a726ef8a11873 fix(tui): attach inline diffs to tool timeline 05dc2eec364529469efec137157ce3f9312b8634 fix(tui): tighten timeline detail spacing 2e6c3c7d23711e8f0bfc0002ae793d0e2b6d65e1 fix(tui): address follow-up review nits a0aebad673ff016e7c8e173e60df88b63b12ccc7 fix(tui): anchor details to stream timeline 7143d22a83a92c3dc3bc32fa49ba3af4af3ecb76 fix(tui): keep queued sends in queue UI 5ac4088856f18d19e9d3d658b6774b5027bc2ea9 fix(tui): keep live progress visible while scrolling e16e196c7e0530186f3883104681f36ed3dabc3b fix(tui): keep selection drag responsive 7d68ea9501c5c3a7c98c795bf90d2076c9d0e90b fix(tui): stream legacy thinking deltas visibly bc1731044260735c2e10c8f3feb3b33c6c0ec8f0 fix(tui): smooth selection drag behavior 8f0fa0836f3f6ceadd2d756ad31254336da75b19 fix(tui): preserve composer width on narrow panes bbd950efcf203e53d267d2030d7d853e8fee2b86 fix(tui): keep stream cadence responsive while typing 381121025edf77886eb89203417a248b9978476a fix(tui): address review feedback 355e0ae960ec031123e8eee8fdecf2b20a506d4d fix(tui): keep streaming progress stable during interaction 1c964ed43ff6839f3c7d068cd4a45f4bed0d4cb7 fix(tui): rely on native cursor for input cd7c5e5606bb583eb9c2ebc4bcb23dd78be043e3 perf(tui): defer local input render during echo ee7ef33b02f0163b63d0fe8600163b2be740e08a fix(tui): queue busy submissions gracefully 5cd41d2b3b1d5b464865a948951d4327a6a42b70 perf(tui): widen native input echo 9bb3bc422dcfc38358dd0d406e44e9f2cceb0d68 perf(tui): optimistically echo simple input 19d75d1797510072ee19e9db12926781ee98ccd9 perf(tui): coalesce composer echo updates 458ce792d24e98baa65b5c03821fded93ba813de fix(tui): persist model switches by default 14fcff60c93d8c2564f6c859a4a76beaf1da6515 style(tui): apply formatter db4e4acca0f79d9ebf8230193bb5fd5ec47706c7 perf(tui): stabilize long-session scrolling 75b7bad6be5661dd4331bb8884d4586b3fd21ce8 feat(tui): implement optimized transcript pane with virtualization 6022d95732741cb581e08e23ec66d517a1477bd4 feat(tui): optimize rendering for large message history 2614d46f066162866f51915ef2bfb04eb64e6fdf feat(tui): add performance optimization components 2c5fb45d08958814994cb46c01db04c7dc572009 feat(tui): add performance analysis and optimization proposals 036dd14425d5012e6beefc78cd80942dd68b858e feat(tui): add model picker and approval/clarify prompt workflows 1e499a71367cecb49f6b21f1ddfde6f57893b70a feat(tui): add interactive prompts workflow to showroom e58308c68043e4ad4df7763a27bdb7767974df44 feat(tui): restore xterm.js via importmap, add frame fade animations 6147a867cd3dcec710c99e8811cd8756a75ae642 perf(tui): drop xterm.js from showroom, use lightweight ANSI parser 7603126c86672f5b9a971417ce06c94ed7da79d3 chore(tui): run formatter on showroom files 59b56d445c34e1d4bf797f5345b802c7b5986c72 feat(hooks): add duration_ms to post_tool_call + transform_tool_result (#15429) eb28145f368232fedb21f899eb35c18511b2ddea feat(approval): hardline blocklist for unrecoverable commands (#15878) a55de5bcd0177bf9515661ddefd5c274a371d61c feat(setup): auto-reconfigure on existing installs (#15879) 3eadf100478f64ccd91c38b6e01c3cdedb044f00 chore(tui): strip showroom chrome and beef up slash demo 72ca0809c4530e5db7947be119b2cb52896a9aef feat(tui): showroom now renders real ui-tui frames via xterm.js 70c43d5da1016c9127f3b4b2a3f7f638d28856ab feat(tui): showroom MVP with picker, speeds, sample workflows cec0af02adff0253d110f806e0f153b258b4d2e7 Merge pull request #15870 from NousResearch/bb/fix-skills-search 91a7a0acbeaf70b9ed03ca6d513f73235bcdcb89 fix(tui): restore skills search RPC 7d79dbc5addaf4e46f47daa026bc143aef9052ee feat(tui): add scripted showroom demos 7c50ed707c424f88f0233374e554e36b80f0a548 docs(azure-foundry): add provider guide, env vars, release AUTHOR_MAP 731e1ef8cb69837c6419272bd0d3f05a9179a476 feat(azure-foundry): auto-detect transport, models, context length ac571142841cd3337a59f0b5e5881c4a40f3bf2e fix(agent): support Azure OpenAI gpt-5.x on chat/completions endpoint 24b4b24d79462eb9007ba9864e240038913b0222 fix: preserve URL query params for Azure OpenAI and custom endpoints c15064fa372c68d7daa976c56eb48aac14a1bc16 fix: pass api-version as default_query param, not in base_url — SDK was producing malformed URLs like /anthropic?api-version=.../v1/messages 7bfa9442dea1ece6a6fe8f9564bb384adbf8a508 fix: skip OAuth token refresh for Azure Anthropic endpoints — prevents ~/.claude/.credentials.json from overwriting Azure key mid-session d8e4c7214e1a482abe506732af2ab3fd31a1c4f0 fix: Azure Anthropic short-circuit in resolve_runtime_provider — bypass custom runtime when provider=anthropic + azure.com URL 6ef3a47ce5c02c63563f29da7fa663a7092a02a8 fix: use Azure API key directly for Azure endpoints, bypass OAuth token priority chain 3a7653dd1f0c7499646d3867822f6a588e49b68c feat: Add Azure Foundry provider with OpenAI/Anthropic API mode selection 125de02056eab84362fc91f57bd7041a19860b22 fix(context): honor custom_providers context_length on /model switch + bump probe tier to 256K (#15844) 4c591c28193ddb1f10d329dc0ce998e13c1e8638 chore(release): map fqsy1416@gmail.com to EKKOLearnAI 01535a4732a1d9c95ebd3a2473cce690c02ebac2 fix(api_server): cap stop-run wait at 5s so interrupt can't hang handler 0a15dbdc435cdb2983449110f52d30153afcdc49 feat(api_server): add POST /v1/runs/{run_id}/stop endpoint ce0513dd2e8290ed1788817ddd0c95de12e8c761 chore(release): map Feranmi10 personal email dc5e02ea7feff3ada999a6e9feed1e49463e4369 feat(cli): implement hermes update --check flag (fixes #10318) ff851ba7b92bfabbfd668f0dd465f4649605b74b Merge pull request #15821 from NousResearch/fix/tui-ctrl-g-editor 14dd8e9a727d8f2c2d010a3c2409c5670facac18 fix(tui): address Copilot review on editor handoff 1d80e92c7efaf53d887b6aca7e34fb6913ccf87e test(discord): add guild to fake e2e messages edce7522a51e010b37161e6cf68d3fdd704cfc74 chore(release): add AUTHOR_MAP entry for voidborne-d personal email 45e1228a8a5aab89c1f79030a60bb3169831aa86 fix(cli): suppress OSError EIO on interrupt shutdown 83129e72de7baf202437f31e7158c8c794cdbdb3 refactor(tui): tighten editor handoff helpers 4d170134efefa7f05cc4f88c5cdaef39050d97f2 chore(release): map nerijusn76@gmail.com to Nerijusas (#15833) 81e01f6ee98124c0cf31f46d5de799623117519b fix(agent): preserve Codex message items for replay 7fd8dc0bfbe827d2963d33f8146593470329cbae fix: preserve prompt_toolkit editor picker and mirror it in TUI d056b610b797be02762e71dac7524c4e3c63ba16 fix: avoid prompt_toolkit complex tempfile bug and prefer nvim first 2536a36f6fabd2fbea5bb4fab05dad5628f0ab04 fix(tui): route /save through session.save JSON-RPC 1b8ca9254f38b9950bbfeaf9902bd8055e12d068 fix(tui): save live transcript from slash command db7c5735f070eb297f728bd51916008746464a33 fix: prefer vim over nano for $EDITOR fallback (CLI + TUI) 8bbeaea6c74da799fa10ca7934835d9b8f9c170b fix(config): broaden api-key ref lookup to templated base_url 1fdc31b214d854fd7a48dd262a7f56903c58cffe fix(config): preserve custom provider api key refs 5fac6c3440519210c3a4015c0d7b904b35939473 fix(cli): write editor draft to prompt.md so syntax highlighting works 2c56dce0edec7352defdb6717b0249423ca453b3 fix(model): preserve custom endpoint credentials and accept cloud models not in /v1/models 01cf2c65cc729ea8e07b72193903617469997ed3 chore(release): map iris@growthpillars.co to irispillars (#15825) b2d3308f985f9a81c5bf9fbd60148947595445fb fix(doctor): accept bare custom provider 25ba6a4a74756a34578ffef0ef993a1cd0b0f251 fix(gateway): make reasoning session-scoped by default 4c797bfae9732e3dfc8d2d067428f8aad0d607a8 fix(cli): accept Alt+G as Ctrl+G fallback in VSCode/Cursor terminals c58956a9a282afcbe88210272710165b13ccf853 fix(tui): accept Alt+G as Ctrl+G fallback in VSCode/Cursor terminals 3944b22506609493c3e103f9243fe6b8d6340efe fix(tui): suspend Ink properly when opening $EDITOR via Ctrl+G 648da6a8d1c13fd259ea46575c47b8f4e2210a17 feat(gui): make desktop setup flow real and testable 489bed6f96a56353b7420be02145e0a35d10db05 Merge pull request #15478 from yes999zc/fix-deepseek-reasoning-all-assistant-messages ad0ac894783a3e30a617bb252b167926899123e1 fix: DeepSeek/Kimi thinking mode requires reasoning_content on ALL assistant messages dc4d92f131ee177452f476a7951a3ab52c30242d docs: embed tutorial videos on webhooks + auxiliary models pages (#15809) 47420a84b9dce2a09e6a71600954c11e148c3242 docs(obliteratus): link YouTube video guide in SKILL.md (#15808) f93d4624bf570239662989f79937b9a7a330c53b Merge pull request #15749 from Zjianru/fix/copy-reasoning-content-ordering-and-cross-provider-isolation 5ae608152ec420d249b44542051ac27989fd33b0 fix: remove has_reasoning guard — inject empty reasoning_content for DeepSeek/Kimi tool_calls unconditionally 88b65cc82a5f7930dcb45592459cc1245bebf94a Update run_agent.py edc78e258c394be5804ea3c7a844fd965aaf121a Merge pull request #15766 from NousResearch/bb/tui-ssh-copy 31d7f1951a558fd98e9ca2184d3b5e45aff2cfd9 fix(tui): clamp copied selection bounds b1c18e5a41b8cb5f5b6cd1e5894f76e1c9833d8b refactor(tui): format screen imports bd66e55a024517d2f6027984896ca62dcc83d7e4 fix(tui): track rendered spaces for selection copy 1735ced93b15f37409109d529a001e25ded40ca6 fix(tui): preserve code block indentation in selection bba16943f650641b71827483ccc0f6cb341bfc84 fix(tui): preserve rendered indentation in selections 132620ba3d23eac2ab7960601e35e29e3f2dbcbf refactor(tui): simplify remote copy hotkey hints 876bb600443c0f115d5ea3a5ad8d77f78f3b9388 fix(tui): trim whitespace-only selection chrome a68793b6c4a9fff115ce2712f317034ddf50f1c7 refactor(tui): share remote shell detection bcc5362432de766e221e5712721b6e0088f32edc fix(tui): honor client copy shortcut over ssh 283c8fd6e29b63e8a8834399f87c1ebc6a3bab8d Merge pull request #15755 from NousResearch/bb/tui-model-flag 919274b60ef0652039e04a80c561a90c62d3ff28 fix(tui): align overlay q shortcut casing 6e83d90eb4904677d530480d41b642362f514026 refactor(tui): tighten overlay helpers c6fdf48b79ebd336015a24bc52fdd2c1c69a5df5 fix(tui): sync inference model after switches a046483e86016a78feddf9801fdb93f85c53837a fix(tui): share overlay close controls fdcbd2257b2dc6962066aedf61db738b51c69d68 fix(tui): resolve startup model aliases statically 48bdd2445e8e794a91141fe4f583a0486f65dc4a fix(tui): apply ui-tui fix pass and restore type-check 5e52011de363992247cae6ecff3cb125616b0406 fix(tui): bind provider as model alias e48a497d166bfc32743d503fd00136c9140af5fe fix(tui): share static model detection 2dfcc8087a8e9e8a653be102c69dd85ae78ddccf fix(tui): avoid network lookup during startup 4db58d45d4e06fc819b8ff6729548bd9d7d02a8a fix(tui): address startup provider review 57b43fdd4bf9496d4dc3e8e70df382c61f8e18e8 fix(tui): preserve provider precedence on startup e9c47c70422dc0a3367e325c6974b09d2c5bf9cc fix(tui): honor launch model overrides ee0728c6c4e48892aad001a9f4b38eb962a90f3d Merge pull request #15351 from helix4u/fix/tui-rebuild-missing-ink-bundle 9daa0620a6bdfc3413b7520a7f5194931e8d97da fix(agent): ordering fix in _copy_reasoning_content_for_api — cross-provider reasoning isolation d603bce4cbe139e1d62a53b3dc155b1e5649e062 fix(tui): rebuild when Ink bundle is missing 648b89911f1c9f16feabed1f2551aa7ee4fddfd0 fix: use output_text for assistant message content in Codex Responses API (#15690) 7c17accb29bcff13923a8dbb76a4661ba17fe5ad fix: /stop now immediately aborts streaming retry loop 5006b2204b329ab017c05c0822c50c13453237f2 fix(update): honor RestartSec when polling for gateway respawn (#15707) a9fa73a620db7b2645864ee434a1dbe18d2e5de3 feat(oneshot): add --model / --provider / HERMES_INFERENCE_MODEL (#15704) 7c8c031f60da25801f35512072c5c89c652118f3 feat: add `hermes -z ` one-shot mode (#15702) ea01bdcebe1fd2e297923626de74dbe529c47bf4 refactor(memory): remove flush_memories entirely (#15696) 25d9fc8094c2cf398b6dc3afc2ba1dc7d286aeb2 fix(flush_memories): always deduct headroom + resolve flush aux model + trim defence d635e2df3fd7b0f30c55f055f787b256d2737678 fix(compression): pass provider to context length resolver in feasibility check cf2fabc40fb699aeaa7384aaf2d04a07194a33ec docs(dashboard): document page-scoped plugin slots (#15662) af22421e87a741f65d28648fc8289c7c07fab145 feat(dashboard): page-scoped plugin slots for built-in pages (#15658) 97d54f0e4df5710350ace7025ef977d439590551 fix(terminal): three-layer defense against watch_patterns notification spam (#15642) 1e6285c53db6f96fbb57f1ecb38def158a04fb01 feat: compression eval harness for agent/context_compressor.py 6e561ffa6d47af7ba112fce6768301bdc0491b73 fix(update): poll is-active instead of one-shot sleep(3) after gateway restart (#15639) ac05daa1890279ad5e6b50ea9944f6f337fc88d3 fix(tools): dedupe bundled plugin toolsets with built-in entries (#15634) 3c1c65e7543620bd1620b02957c20dd193ea8e35 fix(auxiliary): generalize unsupported-parameter detector and harden max_tokens retry (#15633) f92006ce1cda1a40249fa4d5dd9c663f70a9de8d fix(compression): reserve system+tools headroom when aux binds threshold (#15631) 2579245ae25fc36d966f026bcef6ba194957e022 fix: /stop now immediately aborts streaming retry loop b35d692f45d5f8c4d2ba567a64daa38ebba96a1a chore(release): map ash@users.noreply.github.com to ash facea845594a5c1dd9472843a49cfb0d5d83ec60 fix(auxiliary): retry without temperature when any provider rejects it f67a61dc93c8f184923d744aea12fee60d4fc655 fix(flush_memories): strip temperature from codex_responses fallback (#15620) 6ed37e0f42dc226d3b2afe4bc3deaa0d7f4206a5 feat(tools): make discord/discord_admin opt-in, Discord-only 591deeb9280e37d6fde9a2b1c0fcfb970319c777 feat(session): inject Discord IDs block when discord tool is loaded 5ae07e7b5cca5a0020b03506219a6a04bd4c45d6 fix(session): gate stale "no Discord APIs" note on DISCORD_BOT_TOKEN 47b02e961cb79f8bef3fdee63028e35e5462ccd9 feat(discord): populate guild_id, parent_chat_id, message_id on SessionSource 0702231dd884f2505af5515564a97b133a169ad1 feat(session): add guild_id/parent_chat_id/message_id to SessionSource db09477b774c7742d137ad8f451bc11895f54ba7 feat(feishu): wire feishu doc/drive tools into hermes-feishu composite 81987f0350b68ab5cf8a1c6d1129a523fe32dcf4 feat(discord): split discord_server into discord + discord_admin tools 9830905dabd57c05270e3e980dae8ddb3587f4c4 fix(tools): recover non-configurable toolsets from composite resolution 0d548d1db94aaad1904d6bbb777a56003750053a fix(cron): wire context_from through the update action eb922228119df0dbac171c96831ac20e5124a7d5 fix(cron): silent skip when context_from job has no output yet e4a91ccb7621576d329dc9bd085cb5c5848cde51 test(cron): add PermissionError coverage for context_from 5ac53659234eb26bb3e794f010227dc6605ae9f2 feat(cron): add context_from field for cron job output chaining f433197f23f9e0307ae44d23cf1964ed2dd94cc2 feat(installer): FHS layout for root installs on Linux (#15608) df485628ce02a0972f778088ad5b87f3e8d1411f chore(release): map Readon's git email to GitHub login 9fde22d2333986758c85a8ea1524d3fdb3a3f418 fix the reset of model change by /model. 9d7b64b5dd394a60df7d38824256e2f213eac5c6 fix(tools): normalize numeric entries and clear stale no_mcp in _save_platform_tools 5401a0080d97cfa61e20749f02ba6b54dbb181bd fix: recalculate token budgets on model switch in ContextCompressor 0d3d2a26316baae7763b29e44dfb33cd914a6fe3 fix(model): preserve custom endpoint credentials and accept cloud models not in /v1/models e5647d7863d306c8f479e1da011ebe4a4848d56d docs: consolidate dashboard themes and plugins into Extending the Dashboard (#15530) 023b1bff11c2a01a435f1956a0e2ac1773a065f3 fix(delegate): resolve subagent approval prompts without deadlocking parent TUI (#15491) 9aed1b2fe75d01bf71bd754a863da14fc153b9d7 fix: restore accidentally deleted websocket close code assertion 2246c81d0d7fc540f6c96b73c3bb4815938d1bae chore: add poruru-code to AUTHOR_MAP 5eaceb82afe96dac463f9ac6e7deb5862b8b6410 fix(setup): skip AUXILIARY_VISION_MODEL write when input is blank f87dbdf0a8e4f6b28487aacae88017d30577650b fix(web): reject empty values in PUT /api/env 8877688b341070e58bc467567756e6e71106eb25 fix(hindsight): preserve custom timeout on reconfig 9d42aca29a098e2af9e7720a57c952793cd06563 fix(hindsight): preserve existing LLM key on blank local_embedded setup 6407b3d5b38db336971b63421d921d0d91326ee9 Merge pull request #15488 from kevin-ho/fix/tui-mouse-toggle 0a59994030681cfd3fb53662d1482d41dd45153d fix(cli-config): keep delegation overrides commented in example 0ed37c0ca4bfde29e9aa09ba97ac8a2c8af93888 docs(delegate): document max_concurrent_children and max_spawn_depth + cost warning 1c8ce33d51088ada132f15c6fdf34a6b7247ba5d fix(tui): proactive mouse disable on ConPTY + /mouse toggle command 2182de55bb7734b804abd3403570ec45428feece fix(matrix): drop needless DeviceID import + mock put_device_id in tests 3cf13747b794655806fe7ac3487bf876e431fcd0 fix(matrix): bind PgCryptoStore device_id so fresh E2EE installs work d755601d2679948cb432223ece1775a1f3c556d3 feat(session): inject Discord IDs block when discord tool is loaded 4a5502c5f4637abcc2f794055be45a70337e5de1 fix(session): gate stale "no Discord APIs" note on DISCORD_BOT_TOKEN 0de250d087b0413627837928df8417af9863c658 feat(discord): populate guild_id, parent_chat_id, message_id on SessionSource c9ebf0c93722a083f4b3c3a86fd641633b1240d0 feat(session): add guild_id/parent_chat_id/message_id to SessionSource 0d2aa2b6b45f8a6c6c41e36183cb5921f92e7672 feat(feishu): wire feishu doc/drive tools into hermes-feishu composite 4bbf08a818a4f52d63a752fdda25f263fb1aa343 feat(discord): split discord_server into discord + discord_admin tools b8692b1ba1aa4e25837b5bc7fada1d7f7ff437c9 fix(tools): recover non-configurable toolsets from composite resolution 97a4018dfcdd7daffae944388aed21cf40c84004 fix(tools): normalize numeric entries and clear stale no_mcp in _save_platform_tools 3e61703b08f475c9982cf4099d049eeac232a7a1 fix(nix): use --rebuild in fix-lockfiles to bypass cached FOD store paths (#15444) 05d8f11085fec55106a0d2e0ed2051baeb4b108c fix(/model): show provider-enforced context length, not raw models.dev (#15438) 7efd91d4b465c26b151b3f5991727ec23e56b875 feat(session): inject Discord IDs block when discord tool is loaded 0aa1269e568993c4b5b06787b8a693b9626dfa64 fix(session): gate stale "no Discord APIs" note on DISCORD_BOT_TOKEN 3c29834354b80affdc97a826a683211765bb33cf feat(discord): populate guild_id, parent_chat_id, message_id on SessionSource 0eb85906b08dff9d1df5a12906a8b9128aa57493 feat(session): add guild_id/parent_chat_id/message_id to SessionSource ff9b0528a206927b9c3da09144c2af8bade39215 fix(tools): normalize numeric entries and clear stale no_mcp in _save_platform_tools 8feaa7cd1b0635da9c46d723137124c52609231c feat(feishu): wire feishu doc/drive tools into hermes-feishu composite 57a2b97ae863662ad98e47d17e97c26973b53da6 feat(discord): split discord_server into discord + discord_admin tools bd9afb027a3e1a9409f6173a9c11dd5e679832ba fix(tools): recover non-configurable toolsets from composite resolution 13038dc747aacc211fcc2a5cf2e7fafc1b3719b8 fix(skills): ship google-workspace deps as [google] extra; make setup.py 3.9-parseable 629e108ee24e023856320a22b780e451097a1e46 chore(release): map jerome.benoit@sap.com to jerome-benoit c34d3f480778e9c223f6cccb5cdd713c4e7cce29 fix(skills): factor HERMES_HOME resolution into shared _hermes_home helper 3812fd81740416b3c7e5696e194e42d8cc2d9dd7 chore(release): add amanning3390 to AUTHOR_MAP 2d9cc444144ca09009150346de69eb9533f421c5 rename: shop -> shopify (commerce/shopify) f14264c4383527e3168b3a910e2f89697bd0e253 chore(release): map simbamax99@gmail.com to @simbam99 19a3e2ce8ee5aa9cf69307a5ac38e9f12f20e9a5 fix(gateway): follow compression continuations during /resume 91eefcd1a3f634651aedd30cc183abb13e9d348b docs: document MiniMax OAuth login flow 3c6a9dab35c699098014fdb621912bf4a719ea13 test(cli): cover minimax-oauth resolution, refresh, menu wiring 3442f482858acaf9597afda37033b9591e8b7f97 feat(agent): wire MiniMax-M2.7 for minimax-oauth provider 8d3ef574eaa09f9fcc896b24097fad3eb090b3c9 feat(cli): add minimax-oauth provider with PKCE browser flow d58b305adfdb5697c0ff268696040b0505d40892 refactor(deepseek-reasoning): consolidate detection into helpers + regression tests e93cc934c7d0f9d779cf1f631ea1cd81d482e652 chore(release): map chenzeshi@live.com -> chen1749144759 in AUTHOR_MAP 93a2d6b307674fc9975538cd7a2f903068211c95 fix: add DeepSeek reasoning_content echo for tool-call messages 826ddc605076ba372b5c389a9e20e79aecba591e feat(skills): add shop.app shopping skill (commerce/shop) 4fade39c90084efd9cadd3ad7d8c37f42a16810a chore(release): map benjaminsehl noreply email in AUTHOR_MAP f731c2c2bd8c11550750d3eeaeda0b8dbc0b2784 fix(gateway/bluebubbles): align iMessage delivery with non-editable UX 00c3d848d8a21b1865f6d9115d696cf2eae48ef7 fix(memory): skip external-provider sync on interrupted turns (#15218) fd10463069d8e4d218696510709f16e26359492d fix(env): safely quote ~/ subpaths in wrapped cd commands c599a41b84b48566c8510c603ec1cd974f6ee9de fix(auth): preserve corrupt auth.json and warn instead of silently resetting c7d62b3fe30747798a25dc759ee242e36a8faa22 chore(release): map ebukau84@gmail.com -> UgwujaGeorge in AUTHOR_MAP 36d68bcb82ea4868afc0e6f8eeb803c213bfedcc fix(api-server): persist incomplete snapshot on asyncio.CancelledError too a29bad2a3c3e2a277ec33a24d952d780eaa71350 fix(api-server): persist response snapshot on client disconnect when store=True 7957da7a1d5a2e39bb04597a48a05ade613238a8 fix(web_server): hold _oauth_sessions_lock during PKCE session state writes fd3864d8bd512ffa21a671d99969a6e54dd91a02 feat(cli): wrap /compress in _busy_command to block input during compression 8ea389a7f815c0e37ea382c55a38cf5e4e640ca5 fix(gateway/config): coerce quoted boolean values in config parsing 3e6c1085659544f33eacee0ff938faed09d8e442 fix(gateway): honor queue mode in runner PRIORITY interrupt path e3a1a9c24dcedb621a4e15ac267c785282f2a119 chore(release): map julia@alexland.us -> alexg0bot in AUTHOR_MAP (#15384) e3697e20a68e206b8dca713cca4091e1078c961f chore(release): map iRonin personal email to GitHub login ed91b79b7ecad032b5a167c1b6f5404db5a7e38a fix(cli): keep Ctrl+D no-op when only attachments pending 08d5c9c5399222011777fc8681c2e3757b9226de fix: Ctrl+D deletes char under cursor, only exits on empty input (bash/zsh behaviour) 1dcf79a8647e730d77c7875b362ec5d93129a08f feat: add slash command for busy input mode 2de8a7a22921ad93cc68505fb3576dead0753e99 fix(skills): drop raw_content to avoid doubling skill payload ead66f0c92329770bc57c9058da0a4d465859ac8 fix(skills): apply inline shell in skill_view 0bcbc9e316644dfda332e1d57b46e5078a9f85cf docs(faq): Update docs on backups 2d444fc84d2f656554417f877bcf3d91166d405a fix(run_agent): handle unescaped control chars in tool_call arguments (#15356) bb53d79d261c30edac64f8ee9e19fdf6068114d9 chore(release): map q19dcp@gmail.com -> aj-nt in AUTHOR_MAP 17fc84c256234f54b3492be4687cf94b7ce2125b fix: repair malformed tool call args in streaming assembly before flagging as truncated b7c1d77e55b7818001beb32c080a7e74f4529e0a fix(dashboard): remove unimplemented 'block' busy_input_mode option 7a192b124e220dc4b5d2cd1600aab9e348f7ced4 fix(run_agent): repair corrupted tool_call arguments before sending to provider 0738b80833c12eb6127caa97279a5db83e0f7b54 fix(tui): rebuild when ink bundle is missing 4093ee9c62571d79c834a3bd72a8a32d8221a65b fix(codex): detect leaked tool-call text in assistant content (#15347) 6a957a74bc03c5269dd34b235d96beb1f27ad02b fix(memory): add write origin metadata 14b27bb68c22b76cddde44c5487bff9dd2b0f988 chore(release): map @tochukwuada in AUTHOR_MAP ef9355455b4141e694a03768a90ebc6ad4691e90 test: regression coverage for checkpoint dedup and inf/nan coercion dbdefa43c866011ec82ea6e8a38ae97431210199 fix: eliminate duplicate checkpoint entries and JSON-unsafe coercion db9d6375fb187be5972fb10b35e31a81bf28a612 feat(models): add openai/gpt-5.5 and gpt-5.5-pro to OpenRouter + Nous Portal (#15343) 8a2506af43760a9dbecb384fc2b1fd7f5937ad0c fix(aux): surface auxiliary failures in UI e7590f92a2d7a45ee17e3300950bf98edd98c530 fix(telegram): honor no_proxy for explicit proxy setup a5129c72ef152a77c690b1c396c56d6b7c3ff235 Merge pull request #15337 from NousResearch/bb/tui-kawaii-default-off 53fc10fc9a8bef54fdbb8ebd704b4389ecdd47f3 fix(tui): keep default personality neutral 93ddff53e339b859e88d1d1be97624212722b7f1 Merge pull request #15321 from NousResearch/bb/tui-inline-diff-tooltrail-order de596aca1c34b9c0f4b8b91660c46afb63469434 fix(tui): render tool trail before anchored inline diffs 6f1eed3968318dc1d6ca3fb3ded2de6fc8e50308 Merge pull request #15274 from NousResearch/bb/tui-null-config-guard e3940f980799c85b0d37d0dd5c444de33f221717 fix(tui): guard personality overlay when personalities is null bfa60234c8bb855aec7ae986eef3767ddadcf3a6 feat(tui): warn on bare null sections in config.yaml fd9b692d330f3b3d7e6a1bdcb50a11ca01e2eb13 fix(tui): tolerate null top-level sections in config.yaml c61547c06780aaf145bf869b3d26356da3599f57 Merge pull request #14890 from NousResearch/bb/tui-web-chat-unified 7f0f67d5f7bb931f6ab63ecff9e8fe744b027a8c Merge pull request #15266 from NousResearch/bb/fix-tui-section-toggle f5e2a77a80c8fdfdee5c61764d666e111612c999 fix(tui): chevrons re-toggle even when section default is expanded 850fac14e35f224b6754c3e178df1ed59476fdc9 chore: address copilot comments 5500b5180034693dfb77a0553079cd25b3d8dd98 chore: fix lint 63975aa75b8193b59771bd3b909dbdf2a175a238 fix: mobile chat in new layout 62c14d5513469e27474fc9535fcdd4afa016646f refactor(gateway): extract WhatsApp identity helpers into shared module 10deb1b87d43d299e9ae25ed19371f754c89ea7b fix(gateway): canonicalize WhatsApp identity in session keys f49afd3122eaa689b9366035a54d5e77d1dc941b feat(web): add /api/pty WebSocket bridge to embed TUI in dashboard 1143f234e30e2789f89b68da3bf3f23d2a29478e Merge pull request #14899 from NousResearch/feat/dashboard-layout c4627f4933166cea81a2d2e48ae3206a06cbd549 chore(release): map Group G contributors in AUTHOR_MAP 7c3e5706d8968a6741b68c93574238c19368a345 fix(bedrock): Bedrock-aware _rebuild_anthropic_client helper on interrupt a9ccb03ccc74ed0027910741285516b55fe21daf fix(bedrock): evict cached boto3 client on stale-connection errors 7dc6eb9fbf6bae050db113f9a1cc1f9fdb83b534 fix(agent): handle aws_sdk auth type in resolve_provider_client b290297d66a562e9ceb79c11b3002c6831614a23 fix(bedrock): resolve context length via static table before custom-endpoint probe f2fba4f9a19726f8cf3ba11d4b630bdf462e38ce fix(anthropic): auto-detect Bedrock model IDs in normalize_model_name (#12295) fcc05284fc7f8d46c143b3e940ade505f782eb6e fix(delegate): tool-activity-aware heartbeat stale detection (#13041) (#15183) 1840c6a57d346ec402bfa7c0ffc758fa22236972 feat(spotify): wire setup wizard into 'hermes tools' + document cron usage (#15180) 591aa159aa84b484105b0543d52c002e6cac50b1 feat: allow Telegram chat allowlists for groups and forums (#15027) d3e56b9f3931deaa1885361149eefc04ae462237 chore: refac c6b734e24de2f052ec93f51adf69fea18294a9d9 chore(release): map Group B contributors in AUTHOR_MAP 54146ae07c44884ab8c42f5f7306a8e2adc544e3 fix(aux): refresh cached auth after 401 be6b83562dd5b98b9f11277106049b4112e2866c fix(aux): force anthropic oauth refresh after 401 e1106772d9c9ff45081fbca737df1eae8fa98f61 fix: re-auth on stale OAuth token; read Claude Code credentials from macOS Keychain 5383615db5483ca6d915ad4d5a8d7bc290b492b1 fix: recognize Claude Code OAuth tokens (cc- prefix) in _is_oauth_token 56086e3fd7a1f4079103bc0146cb79a6ae5b91bc fix(auth): write Anthropic OAuth token files atomically to prevent corruption 8d12fb1e6bcf0144836cffb12b40edee9449eb64 refactor(spotify): convert to built-in bundled plugin under plugins/spotify (#15174) e5d41f05d47ed2e8b80a61625f2c48ae58b45b86 feat(spotify): consolidate tools (9→7), add spotify skill, surface in hermes setup (#15154) 0fdbfad2b0142214cb00f421ed294184e9c62680 feat: embed docs 9d1b277e1d8aa915de491bd73610fdca7d105f44 chore(release): map Group H contributors in AUTHOR_MAP 4a51ab61eb42a6b26268f38647f52fa032ea0d6a fix(cli): non-zero /model counts for native OpenAI and direct API rows 7f26cea390664c0cd39da27447f40556ee8664ac fix(models): strip models/ prefix in Gemini validator (#12532) 2303dd8686b8a2f317f9763bb3e0756fe7c036f3 fix(models): use Anthropic-native headers for model validation 647900e81383e4cecc61988b60bac9d210b48bec fix(cli): support model validation for anthropic_messages and cloudflare-protected endpoints 25465fd8d7f0ca15acea1c0fda3c54de9305bc46 test(gateway): on_session_finalize fires on idle-expiry + AUTHOR_MAP 260ae621346882156a5ba6cfcd4641b52a621566 Invoke session finalize hooks on expiry flush 9be17bb84f3dc5c88462dd74dcac8b8fb2fca509 docs(spotify): expand feature page with tool reference, Free/Premium matrix, troubleshooting (#15135) fe9d9a26d8d4be30d195603df979cacd7f91b73f chore(release): map Group F contributors in AUTHOR_MAP ee83a710f011434cbfef24232f2a502d08e74309 fix(gateway,cron): activate fallback_model when primary provider auth fails f7f7588893ef2f1bae7531c37394f1dbbe38ef1f fix(agent): only set rate-limit cooldown when leaving primary; add tests a9fd8d7c88a4a91ac41637b9b56dcfeb369dbab5 fix(agent): default missing fallback chain on switch 46451528a50ad1adff2591650e9f0ccda561cd26 fix(agent): pass config_context_length in fallback activation path 4e27e498f1b438b2a380cd4be83dc37761fd1412 fix(agent): exclude ssl.SSLError from is_local_validation_error to prevent non-retryable abort ba44a3d256848391af2370c3c66788fe0a48e2de fix(gemini): fail fast on missing API key + surface it in hermes dump (#15133) a1caec1088a2eb0d9dea55cc52d2e173d8395b5b fix(agent): repair CamelCase + _tool suffix tool-call emissions (#15124) 05394f2f28af3cc5d1874d0c17bc50301bea6f91 feat(spotify): interactive setup wizard + docs page (#15130) 0d324113107be0b7bcc8ccacdacd6e40a12d0913 chore(release): map Group D contributors in AUTHOR_MAP e87a2100f6a7389cc78c0da4033f61e3ff57f0fb fix(mcp): auto-reconnect + retry once when the transport session expires (#13383) 8c2732a9f9dd3e67d782093cb545ac25b32dc0cb fix(security): strip MCP auth on cross-origin redirect 15050fd965d5c9c1c21b557870a46def2068e365 fix(mcp_oauth): raise RuntimeError instead of asserting OAuth port is set 5fa2f4258a0eba46d202d4a32cf87b959820d46f fix: serialize Pydantic AnyUrl fields when persisting MCP OAuth state 4ac731c8417a27b19f11d8cea1b89ac1aa46416c fix(model-normalize): pass DeepSeek V-series IDs through instead of folding to deepseek-chat 4f5669a569e9adcff73834974871ba294c6ab394 feat: add docs link acd78a457e4b6c0c09b8feccc41b76b61d006460 fix(docker): reap orphaned subprocesses via tini as PID 1 (#15116) 4ff7950f7f6b21418b51873ebaef83f658d7f963 chore(spotify): gate toolset off by default, add to hermes tools UI 7e9dd9ca456ec9abf0cec67a3ecb7618fb71b984 Add native Spotify tools with PKCE auth 3392d1e422d3bdc535b20c48621e03adb375e753 chore(release): map Group E contributors in AUTHOR_MAP 785d168d50e1b2e4496ff000c67494774883db85 fix(credential_pool): add Nous OAuth cross-process auth-store sync cd221080ec83ef7c8aafba57d762cccfe7733611 fix: validate nous auth status against runtime credentials 1fc77f995ba892b675f7120cf29fcd2d90add31c fix(agent): fall back on rate limit when pool has no rotation room 1af44a13c05185f86cee87f88f40e336e6c725f1 fix(model_picker): detect mapped-provider auth-store credentials fff7ee31ae9d7cec2f096467c624f65c5e74c6a1 fix: clarify auth retry guidance 6fcaf5ebc26714f261f0762b02e362b1a3fc20bf fix: rotate credential pool on 403 (Forbidden) responses 461899894ea87a099d52329c5cecbf071e03388c fix: increment request_count in least_used pool strategy b3aed6cfd82466fcc30de9d3f65c9300b72ce79d chore(release): map l0hde and difujia in AUTHOR_MAP 76329196c14071c5753b7fb018655ea9a3feef2f fix(copilot): wire live /models max_prompt_tokens into context-window resolver d7ad07d6fe9986f811ef21d7c8700fbb93477929 fix(copilot): exchange raw GitHub token for Copilot API JWT 2cab8129d12e2ff0e234d71643aaf8697d02062f feat(copilot): add 401 auth recovery with automatic token refresh and client rebuild 7d2f93a97f3a842d1089bf9064daf4ca88ba0037 fix: set HOME for Copilot ACP subprocesses 78450c4bd60043384a5b1ce182db7adc8acec02c fix(nous-oauth): preserve obtained_at in pool + actionable message on RT reuse (#15111) 852c7f3be34bdaddfb42d27f7c516c1301d0a55f feat(cron): per-job workdir for project-aware cron runs (#15110) 0e235947b95d48decd1f378fdb111aff62155894 fix(redact): honor security.redact_secrets from config.yaml (#15109) c2b3db48f5b44c2a93cf8eed369d8891de37ab57 fix(agent): retry on json.JSONDecodeError instead of treating it as a local validation error (#15107) 1eb29e6452bb5e8f03fbc58c15c20f094fd5b0a1 fix(opencode): derive api_mode from target model, not stale config default (#15106) 7634c1386fb3cf4f941bc7703340739212065ccf feat(delegate): diagnostic dump when a subagent times out with 0 API calls (#15105) 3cb43df2cd9657aeb81a77f640feb5f5e6a8adfb chore(release): add georgex8001 to AUTHOR_MAP 1dca2e0a2854cfc912b7657049bf8aa5bc564301 fix(runtime): resolve bare custom provider to loopback or CUSTOM_BASE_URL 2f39dbe471b59047b7974bb9d83180ef3fd041da chore(release): map j3ffffff and A-FdL-Prog in AUTHOR_MAP 271f0e6eb0d884ab7001a27a93d7b45869ae44d0 fix(model): let Codex setup reuse or reauthenticate 813dbd9b40bc9a00bd364cabe139ba8e8ac6f312 fix(codex): route auth failures to fallback provider chain f76df30e088fc3cc82fcee97e925e77e0064120d fix(auth): parse OpenAI nested error shape in Codex token refresh 227afcd80f73482a7f1cc28ae38e44b4ff64bd49 chore(release): map jiechengwu@pony.ai to Jason2031 06b60b76cd76b3c2f5fa1279aa7ea3991798fbc0 fix(docker): safer docker-compose defaults for UID and dashboard bind 14c9f7272c0d35832e795e257c80a7f1e9a82bc6 fix(docker): fix HERMES_UID permission handling and add docker-compose.yml ccc8fccf771703c670d7684049d79c3fb4061ea0 fix(cli): validate user-defined providers consistently 3aa1a41e88e9a855cb307d36f7acf85448f272ac feat(gemini): block free-tier keys at setup + surface guidance on 429 (#15100) 346601ca8dbed0a941a67357f0d86f572e1c67ca fix(context): invalidate stale Codex OAuth cache entries >= 400k (#15078) 18f3fc8a6fcd19009565ba40cc3dfbb84ddba349 fix(tests): resolve 17 persistent CI test failures (#15084) 1f9c36862202c35f6595e7b7fa03b66eafe42182 fix(gemini): drop integer/number/boolean enums from tool schemas (#15082) edff2fbe7efd7d1798b6f6116d2e4b55b3ce69f9 feat(hindsight): optional bank_id_template for per-agent / per-user banks f9c6c5ab8472a5251a045c9e15e0fb33fe43e4ca fix(hindsight): scope document_id per process to avoid resume overwrite (#6602) 3a86f70969002b0e28d12774d072dbc3ea229e67 test(hindsight): update materialize-profile-env test for HINDSIGHT_TIMEOUT f1ba2f0c0b063e6fa59da96f63f599c78e4e81ee fix(hindsight): use configured timeout in _run_sync for all async operations 403c82b6b65bc3354bbd06fa52d56d8b2a577cbc feat(hindsight): add configurable HINDSIGHT_TIMEOUT env var 93a74f74bf9341a2a3d88c9e1067ded12f102bc4 fix(hindsight): preserve shared event loop across provider shutdowns b4c030025f91bb7cf5442acab8409884d97d9a07 chore(release): map Nicecsh in AUTHOR_MAP 42d6ab508240b410029913eb75ae8eccc006387f test(gateway): unify discord mock via shared conftest; drop duplicated mock in model_picker test fe34741f32d9d96d9fb78a305e4b4cfd393f59b2 fix(model): repair Discord Copilot /model flow 2e2de124af81b574b762aac5cb03f3479d79eeac fix(aux): normalize GitHub Copilot provider slugs df55660e3c3c17f6123d86938848da78e05d500f fix(hindsight): disable broken local runtime on unsupported CPUs 7897f65a94d2c085896adc187f06f28d69ce7748 fix(normalize): lowercase Xiaomi model IDs for case-insensitive config (#15066) 3e994e38f76309f48758f56ab59566c2fcfbfb64 [verified] fix: materialize hindsight profile env during setup 127048e6430f833a2f05da3072daa275feb74c6b fix(hindsight): accept snake_case api_key config d6b65bbc47cf3620329016fea36382a4cbdffdd6 fix(hindsight): preserve non-ASCII text in retained conversation turns a5c7422f23150095dcc37a27c5590aa058225244 fix(hindsight): always write HINDSIGHT_LLM_API_KEY to .env, even when empty 3c0a7286071d274ff061fd4eac267010b57d4e60 chore(release): map hindsight PR contributors in AUTHOR_MAP (#15070) 339123481e6588e93604c8b0a1c59a35dd39e62f chore(release): map ericnicolaides (wildcat.local commit email) in AUTHOR_MAP 9e6f34a76e24b14b970c214d6d9801b04b73799f docs: document prompt_caching.cache_ttl in cli-config example 7626f3702e3d39ed8c588f40dd46aa6aaa017326 feat: read prompt caching cache_ttl from config 9de555f3e3692e729af174393fd3e436cbe193f5 chore(release): add 0xharryriddle to AUTHOR_MAP ac25e6c99a686964ac268b35235830e1e5519d88 feat(auth-codex): add config-provider fallback detection for logout in hermes-agent/hermes_cli/auth.py b2e124d082975e23e06122ed8441cc1ee0e13390 refactor(commands): drop /provider, /plan handler, and clean up slash registry (#15047) b29287258af966900fb56df6d5aaaf71a9546011 fix(aux-client): honor api_mode: anthropic_messages for named custom providers (#15059) bc15f526fbbd3381a26a5166a3671e75483492f1 fix(agent): exclude prior-history tool messages from background review summary ba3284f34a9a2880643d05b75ccf4945e2e52502 chore(release): map salvage-batch contributors in AUTHOR_MAP f24956ba1217628a39bffe2abcf7c3e1ce0d150d fix(resume): redirect --resume to the descendant that actually holds the messages 166b960fe4744ea169e961aecbccffc6e262a488 test(proxy): regression tests for NO_PROXY bypass on keepalive client cbc39a867263f654f8d1a9c2be2e325622c2968f fix(proxy): honor no_proxy for local custom endpoints dfc5563641f0ef1a03a9ac97598ea20ded85b873 fix(acp): include MCP toolsets in ACP sessions 8a1e247c6c984098da4c8455b3bf1f872125ad4c fix(discord): honor wildcard '*' in ignored_channels and free_response_channels 8598746e86aff5bc7bd8932c45af1f0ec40cfa18 fix(discord): honor wildcard '*' in DISCORD_ALLOWED_CHANNELS f58a16f5206fde88f3cb9a082e2c52c20dfdf495 fix(auth): apply verify= to Codex OAuth /models probe (#15049) 621fd348dce6eec42dd7fd67780a521ea4a7967c chore(release): add ReginaldasR to AUTHOR_MAP 3e10f339fd897f498d130a930acc955e6ad25eec fix(providers): send user agent to routermint endpoints 5fdba79eb4f5ed572a918687702cbd25cf71e78e chore(release): add keiravoss94 AUTHOR_MAP entry 2ba9b29f3784cbd281b9be78f671f69d3f4a078a docs(plugins): correct pre_gateway_dispatch doc text and add hooks.md section 1ef1e4c66989bf409de31bdbe94a0f18f98ac31c feat(plugins): add pre_gateway_dispatch hook 8aa37a0cf914f48ad5b112ca29849d529dc095f2 fix(auth): honor SSL CA env vars across httpx + requests callsites b0cb81a08984a9711d309c0eb24b8f80258bf234 fix(auth): route alibaba_coding* aliases through resolve_provider 727d1088c4e28d0906719e5a7291caba1ba40119 fix(providers): register alibaba-coding-plan as a first-class provider a9a4416c7ca1e2cb9df7c2155d1c34b17c83d272 fix(compress): don't reach into ContextCompressor privates from /compress (#15039) 4350668ae49c903640179ebdaa99f59687ff951c fix(transcription): fall back to CPU when CUDA runtime libs are missing 34c3e67109dd7d9adeb2c48c6ee617dc042c3704 fix: sanitize tool schemas for llama.cpp backends; restore MCP in TUI (#15032) 5dda4cab41a0fcb1c7382e3874e26d3ff8356705 Merge pull request #14968 from NousResearch/bb/tui-section-visibility 6604e94c75ac4b4967e17c5456411267c7ecdb89 fix(tui): gate messageLine on content-bearing sections, not all sections 67bfd4b8283c2f5f7e9fbfe7681459f39990c5ee feat(tui): stream thinking + tools expanded by default 70925363b66790661a4e381ca7fa01111df60dbf fix(tui): per-section overrides escape global details_mode: hidden 005cc29e98da5b824c08aa1ff463a5b42a5e2d50 refactor(tui): /clean pass on per-section visibility plumbing 728767e910c0d10d9ed25f38469c89cfd2d935f6 feat(tui): hide the activity panel by default 78481ac1246573e00e1b2a51c59853ba8a24f530 feat(tui): per-section visibility for the details accordion 6051fba9dc326ceddbe81147a14b10102f4256a3 feat(banner): hyperlink startup banner title to latest GitHub release (#14945) 2acc8783d12e873f4d639ce97fb8a75a4eb9c969 fix(errors): classify OpenRouter privacy-guardrail 404s distinctly (#14943) acdcb167fb1cb9ba36cf6e36e98c2ff83ba11d70 fix(tui): harden terminal dimming and multiplexer copy (#14906) 51f4c9827f4251ab8e1117a12e42011fb0c6ab74 fix(context): resolve real Codex OAuth context windows (272k, not 1M) (#14935) 2e78a2b6b23c3c2284f9c32899a052008fb0f0b2 feat(models): add deepseek-v4-pro and deepseek-v4-flash (#14934) 71db091868e03fb8d14f66adf37b7e9a06389daf [verified] feat(nous): drive model picker from Portal recommended-models endpoint 5a1c5994125eef8135965756d551ddaa5c7ee1a0 feat(browser): CDP supervisor — dialog detection + response + cross-origin iframe eval (#14540) 0f6eabb89073e3215daffb0bc1c4d95401be7b3b docs(website): dedicated page per bundled + optional skill (#14929) 809868e628de1ac518e6403065c4c9d4ded113bf feat: refac eb93f88e1d42cae0c552a978e1344cb68bc5ea79 chore(release): add MattMaximo to AUTHOR_MAP for PR #10450 salvage 3ccda2aa059f8b50d58688ca5836dfe9c716d941 fix(mcp): seed protocol header before HTTP initialize e5d2815b4167dd873e1fdf6deb7e4be87455abdd feat: add sidebar 983bbe2d40f7b23b263c35d98e7454fcdd474cf1 feat(skills): add design-md skill for Google's DESIGN.md spec (#14876) 379b2273d95566e8a69eadabceabc6ee08521b49 fix(mcp): route stdio subprocess stderr to log file, not user TTY (#14901) 7db2703b332bbe8afe2c89b1fed2dd8c03cbd9af Merge pull request #14895 from NousResearch/tui-resume 2f230b5ad988e4bcd83b7fef0c0cd250519d7121 feat: add fast-path setup for nous account bdc9b07c9de7faffc47c3191dc13c56a5710b1fd change: always run setup on no-config run 7c59e1a87114de5ec6d7c53253a992e4159998e5 fix(tui): keep FloatingOverlays visible when input is blocked b49bd7b93d1c2b8126dc87f9181487dcb23df7e1 Fix ACP module path documentation from acp_adapter to hermes_agent.acp 25ba6783b8eeca3936e10e31c5b5ac9e46a06b09 feat(tui-gateway): WebSocket transport + /chat web UI, wire-compatible with Ink 6fdbf2f2d76cf37393e657bf37ceda3d84589200 Merge pull request #14820 from NousResearch/bb/tui-at-fuzzy-match 0a679cb7ad5261601b760c260f56af51154df1e5 fix(tui): restore voice/panic handlers + scope fuzzy paths to cwd 41b4d6916732f5b81c922c6064b408fab3e7c050 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/tui-at-fuzzy-match 3f343cf7cf3bacf2f0487ecc193a574083a7d2b0 Merge pull request #14822 from NousResearch/bb/tui-inline-diff-segment-anchor 4ae5b58cb10d98cac50c16e93419533253ada8f9 fix(tui): restore voice handlers + address copilot review 2258a181f01eb1616abfe8e8b20afe623d1a63ff fix(tui): give inline_diff segments blank-line breathing room f2b1b3f1a3ff28ebc39b46cdc02e5febe872281b feat(config): make tool output truncation limits configurable 11b2942f1654a2366ccf77b3d4a5bd2f048b746a fix(tui): anchor inline_diff to the segment where the edit happened b08cbc7a79a8b66cfca8f900bd9d54d5801da43d fix(tui): @ fuzzy-matches filenames across the repo c95c6bdb7c5f507a9a18399d9d2523fa483cf157 Merge pull request #14818 from NousResearch/ink-perf bd929ea514d92d68b6597cee9c6665dcd8a9b93e perf(ink): cache text measurements across yoga flex re-passes b07791db0508f92625dfc9e75f20c331cc7bb528 feat(computer-use): cua-driver backend, universal any-model schema 6a20e187ddfebeb97f87e968a6281e19113cea23 test,chore: cover stringified array/object coercion + AUTHOR_MAP entry 9ff21437a03a28cfa33394bb330a4a41768f8c1c fix(mcp): coerce stringified arrays/objects in tool args 44a0cbe5253fda236eb7383e4e07fca7f7e99691 fix(tui): voice mode starts OFF each launch (CLI parity) 2af0848f3c61449b73b9ad68c98cf0386695c1fa fix(tui): ignore SIGPIPE so stderr back-pressure can't kill the gateway 7baf370d3dde0f66938962a2516e728e3cdabc6f chore(tui): capture signal-triggered gateway exits in crash log eeda18a9b75027408bccd1ac7308ac8a1c469d7c chore(tui): record gateway exit reason in crash log 3a9598337f772bade75432595b88556744e2f1a0 chore(tui): dump gateway crash traces to ~/.hermes/logs/tui_gateway_crash.log 98418afd5d81a4e01813b819f3001dc360579d6c fix(tui): break TTS→STT feedback loop + colorize REC badge 42ff7857712b0dec93e2aab6a033d77857f3f6bb fix(tui): voice TTS speak-back + transcript-key bug + auto-submit 04c489b5873dae86caa4c99757e004c767e1303f feat(tui): match CLI's voice slash + VAD-continuous recording model 0bb460b07011a6753bec6a8ebf824e8940b9bc00 fix(tui): add missing hermes_cli.voice wrapper for gateway RPC 3504bd401b8d95abb47e7ea705b373553dcc2a9b fix(tui): route Ctrl+B to voice toggle, not composer input 50d97edbe15e3a4fd72ddbe00a3afb85e9bbafc9 feat(delegation): bump default child_timeout_seconds to 600s (#14809) e26c4f0e343536d0b39f7fda076d6bc11e210863 fix(kimi,mcp): Moonshot schema sanitizer + MCP schema robustness (#14805) 24f139e16a6fa800d3cdf96f95fe3b586c36da18 fix(mcp): rewrite definitions refs to in input schemas ef5eaf8d8757a5e75fa571042abc287430192f53 feat(cron): honor `hermes tools` config for the cron platform (#14798) bf196a3fc0fd1f79353369e8732051db275c6276 chore: release v0.11.0 (2026.4.23) (#14791) f593c367bec49157efc1c5fe4ccb4c85866588e6 feat(dashboard): reskin extension points for themes and plugins (#14776) 470389e6a30ab77c92a26c911f96d754209c8589 chore(release): map say8hi author for #6130 salvage 18d5ba86764b219fbfdad02e337b12e794953b8f test(cron): add tests for enabled_toolsets in create_job and run_job 8b79acb8de64009da7f4f6d16d674b8873d80700 feat(cron): expose enabled_toolsets in cronjob tool and create_job() 0086fd894d1c4d313f87b134afb1750978f238fa feat(cron): support enabled_toolsets per job to reduce token overhead 5e67b384377b7a76a55395d1553d74c94d76ba2f chore(release): map devorun author + convert MoA defaults test to invariant 1df35a93b20b92c65e9cb312c3e12d93cb9c2251 Fix (mixture_of_agents): replace deprecated Gemini model and forward max_tokens to OpenRouter (#6621) 9599271180cb301cabd15920c4d380e2b4c47c58 fix(xai-image): drop unreachable editing code path a5e4a86ebe124be1441f4552b11bbc746f6e0cd6 feat(xai): add xAI image generation provider (grok-imagine-image) d42b6a2eddc766c72ede28322d15006b3a078988 docs(agents): refresh AGENTS.md — fix stale facts, expand plugins/skills sections (#14763) d001814e3f20c545fd2866f7458f45ac5014308c chore(release): map rohithsaimidigudla@gmail.com -> whitehatjr1001 9d147f7fdefb598fe49f0bf09053c53940c6793d fix(gateway): enhance message handling during agent tasks with queue mode support 692ae6dd073b4e9fd92f3ef7bc935cef496e8fc8 docs(readme): fix stale RL submodule instructions, skills table row, test runner (#14758) b61ac8964b8889840a4841cf617e1a8b4de7763c fix(gateway/discord): read permission attrs from AppCommand, canonicalize contexts a1ff6b45eaf7f4876315e8f8da61b2ec26b49674 fix(gateway/discord): add safe startup slash sync policy 4a0c02b7dcb0b513512e3104ac0f07b0b2f2e312 fix(file_tools): resolve bookkeeping paths against live terminal cwd 83859b4da081139a9f458de33a69a9644088fa81 chore(release): map jefferson@heimdallstrategy.com -> Mind-Dragon 67c8f837fc8b93bc17bf9b1d674138ceab348d6e fix(mcp): per-process PID isolation prevents cross-session crash on restart c7d023937c53a5df688cb486fd2c7b68fd879f92 Update CONTRIBUTING.md 78d1e252faae2aecd9e65e4c52c5ca01e38a0abd fix(web_server): guard GATEWAY_HEALTH_TIMEOUT against invalid env values d0821b0573151fe795622972492a458cd1b55a3d fix(gateway): only clear locks belonging to the replaced process a0d8dd7ba30c193390c71360e94991f61f4c4ef3 chore(release): map eumael.mkt@gmail.com -> maelrx e020f46beccad23f80796d5f7d3a3dc7d4bbdb6f fix(agent): preserve MiniMax context length on delta-only overflow a884f6d5d8cc3e461b611788a7daa027fe0a24ef fix(skills): follow symlinked category dirs consistently b848ce2c79bfff4c0d470113085cf1ec45aa8877 test: cover absolute paths in project env/config approval regex 1dfcda4e3c195a03e51a3c69a88f18ebf525eeca fix(approval): guard env and config overwrites 1cc0bdd5f306effd91ec23f0c8d7044acf22473c fix(dashboard): avoid auth header collision with reverse proxies 07046096d96bcf4db61fa0c12f79504f92f2a21c fix(agent): clarify exhausted OpenRouter auxiliary credentials 97b9b3d6a6848579c5c93cd4b5d8d26f6dde34b8 fix(gateway): drain-aware hermes update + faster still-working pings (#14736) 165b2e481afa1cd7385c5c9f9ebf33eb4a524131 feat(agent): make API retry count configurable via agent.api_max_retries (#14730) 327b57da91e5699564dd423bbb112ea95671b6e5 fix(gateway): kill tool subprocesses before adapter disconnect on drain timeout (#14728) 64e61656862b24776d5d7f5b87699097a16b9ec3 fix(delegate): remove model-facing max_iterations override; config is authoritative (#14732) b5333abc3025b59312788b29093ec6bb88052895 fix(auth): refuse to touch real auth.json during pytest; delete sandbox-escaping test (#14729) 255ba5bf26a10911925c5cd01d14b0cd9adb639c feat(dashboard): expand themes to fonts, layout, density (#14725) 8f5fee3e3e4e86124acd1677fbd151e93ee46a9b feat(codex): add gpt-5.5 and wire live model discovery into picker (#14720) b6ca3c28dc434d1d0dca3bd2a029f394014eefbc Merge pull request #14640 from NousResearch/bb/fix-tui-glyph-ghosting 882278520ba9de4e1219a0575313a19e5e8b67de chore: uptick 9bf6e1cd6eeecf83ddd4fe97b7c756d6bf2f34cb refactor(ui-tui): clean touched resize and sticky prompt paths 9a885fba31e5ae8a8a24b7f5dcf8ea19dedddf5c fix(ui-tui): hide stale sticky prompt when newer prompt is visible aa47812edfb9cd945822a2a69a260467e8136926 fix(ui-tui): clear sticky prompt when follow snaps to bottom c8ff70fe03f5c0fb5726392bed9586544b1d8b15 perf(ui-tui): freeze offscreen live tail during scroll f5af6520d0bfac5b17c9ce460a5a06bf3249972c fix: add extra_content property to ToolCall for Gemini thought_signature (#14488) 1e445b2547c5f83a4632358f44ba4e51497eb050 fix(ui-tui): heal post-resize alt-screen drift f28f07e98eda5533abbaebbe9b0640f465bb581a test(ui-tui): drop dead terminalReally from drift repro 7c4dd7d660f3ea3872c7a9fea873ecb388738e5e refactor(ui-tui): collapse xterm.js resize settle dance e91be4d7dcc26d1155520bc17cb3f61616ad87e1 fix: resolve_alias prefers highest version + merges static catalog 60d1edc38a0e1773193a4c7738781ffa1b724bbc fix(ui-tui): keep bottom statusbar in composer layout 3e01de0b092c7b14842c5165d09146b45c140066 fix(ui-tui): preserve composer after resize-burst healing f7e86577bc258985ddf9cc328f7e7343585ff382 fix(ui-tui): heal xterm.js resize-burst render drift 2e7546006697c87ded650573dbbad52d505b63f4 test(ui-tui): add log-update diff contract tests 82a0ed1afb3fb3840a0bdca94a22fa8b005ac49a feat: add Xiaomi MiMo v2.5-pro and v2.5 model support (#14635) 071bdb5a3f099be5a7c824906315d483ee5b003d Revert "fix(ui-tui): force full xterm.js alt-screen repaints" bc9518f660c75244b45d47f0a7a87f6cd067be62 fix(ui-tui): force full xterm.js alt-screen repaints 420c4d02e2b586a3ca5b5b8c3a0823cd3e3a40cf refactor(acp): rewrite imports and update infra for hermes_agent.acp 193f3b8339d93ae3f992fae5ddbfeb799568668d refactor(acp): git mv acp_adapter/ → hermes_agent/acp/ ce089169d578b96c82641f17186ba63c288b22d8 feat(skills-guard): gate agent-created scanner on config.skills.guard_agent_created (default off) e3c008414075d82308f3ffb532bbf1f3bc9d1954 fix(skills-guard): allow agent-created dangerous verdicts without confirmation 5651a73331a86713f846e3a709aa08ec84422cbc fix(gateway): guard-match the finally-block _active_sessions delete 81d925f2a550fe76bdd178b8b958781552142d62 chore(release): map dyxushuai and etcircle in AUTHOR_MAP ec02d905c9ff6df9a6dee528ce3d6d11bea13590 test(gateway): regressions for issue #11016 split-brain session locks b7bdf32d4eb413e8cc4f593cdea57e5fc442dd3d fix(gateway): guard session slot ownership after stop/reset d72985b7ce4bba023a4cec4cf1eae8ebb835c3f0 fix(gateway): serialize reset command handoff and heal stale session locks 5a26938aa502ae172a6e6d90ab60ac3fe89c1ad3 fix(terminal): auto-source ~/.profile and ~/.bash_profile so n/nvm PATH survives (#14534) 415043315f2a7e66f2cc5f3f03f043237019b445 refactor: remove config TypedDicts and fix ImportError propagation in clipboard 98eb32f39a2cd26e64da584a4c58b6fef86d6654 Clean up TODO comment in auxiliary_client.py 2df306e6cd6c9414644eac9e8ff5622a63f05ea2 Add helpful ImportError messages for optional dependencies 79a5f03f92bc07f4c58bc26a8a97c9f7762e1b0b refactor(types): simplify pass on P1 batch 527ca7d238d955c43aab59fd411a5123d69842e8 fix(types): batch P1 ty hotfixes + run_agent.py annotation pass b11e53e34f3fa168a2179846c416f0b9929e7728 fix: resolve `not-subscriptable` ty diagnostics across codebase 1e7a598bac4534fc19e696863b732f05a06cb329 fix: declare undeclared soft deps in extras and remove silent import guards 3eddabf53b3991a27451e8cc1400f11b7ddfdb7f fix: resolve all `call-non-callable` ty diagnostics across codebase 971542d254bc3933762109aac6619bf6012ea2f0 refactor: move standalone scripts to scripts/ directory 4a95029e6caf9b11643489143504eec395e93b65 fix: resolve all `invalid-return-type` ty diagnostics across codebase 432614591adec84030f036f47687cf12e1c4dba0 Add TYPE_CHECKING imports to fix `unresolved-reference` type bugs d45c738a52eb9388207924f518396431a4f3b921 fix(gateway): preflight user D-Bus before systemctl --user start (#14531) d50be05b1cca468b80b771ca8e48cc49c232a4d8 chore(release): map j0sephz in AUTHOR_MAP 24e8a6e701ea620f493e5573823188d3858368d0 feat(skills_sync): surface collision with reset-hint 3a97fb3d477299637a6cb6253cad705b38388733 fix(skills_sync): don't poison manifest on new-skill collision 91d6ea07c86b5539021b7620dac6e46ce205ffe4 chore(dev): add ruff linter to dev deps and configure in pyproject.toml (#14527) fdcb3e9a4b56a06a1cef4c60226426724e53f40e chore(dev): add ty type checker to dev deps and configure in pyproject.toml (#14525) 627abbb1eaf5fbe212a7b4a1750f44604cb1000a chore(release): map davidvv in AUTHOR_MAP 39fcf1d12712f5526ebddc9f9ebb075795af73ba fix(model_switch): group custom_providers by endpoint in /model picker (#9210) 6172f95944d5f57f2412939fa78b0005e5882753 chore(release): map GuyCui in AUTHOR_MAP b24d239ce1773e86319a8e459954307807698c54 Update permissions for config.yaml cd9cd1b159f870b544e93b3a5eb78589792d14b9 chore(release): map MikeFac in AUTHOR_MAP 78e213710ca484362216070f1d75c16f074ab374 fix: guard against None tirith path in security scanner 4f4fd21149497e21fefcf978f658423679c9abd9 chore(release): map vivganes in AUTHOR_MAP 7ca2f70055d9fb200fe454daad0ec96dc14adcd4 fix(docs): Add links to Atropos and wandb in user guide dab36d9511cef5eef12849a57661e8f64e2e16dc chore(release): map phpoh in AUTHOR_MAP 4c02e4597ec971ca2bd5b985e694fa7e5f26fd08 fix(status): catch OSError in os.kill(pid, 0) for Windows compatibility 51c1d2de16bc55cba7653c9d344f6bcede4e4f5a fix(profiles): stage profile imports to prevent directory clobbering 08cb345e242e5bd20a762f698bfee6cbcc784878 chore(release): map Lind3ey in AUTHOR_MAP 9dba75bc3862dcf9732029af35a616e0ab034b0d fix(feishu): issue where streaming edits in Feishu show extra leading newlines 8f50f2834a0d8fb2650e0054752a9b33ef919ed1 chore(release): add Wysie to AUTHOR_MAP be99feff1f42ffe47bd215753fa9c9c40bc5e4a9 fix(image-gen): force-refresh plugin providers in long-lived sessions 987962f4531ff879bc4fb16aa0b72537e50aaf78 chore(restructure): add .git-blame-ignore-revs for restructure commits 911f57ad979dcd0e33804c738cc39301b998cbc0 chore(release): map TaroballzChen in AUTHOR_MAP 5d0947434864811d46af0cce09cdf5e842f51e5d fix(tools): enforce ACP transport overrides in delegate_task child agents 33773ed5c6dab0f2dd86b8897dc35b28e433bb46 chore(release): map DrStrangerUJN in AUTHOR_MAP a5b0c7e2ec07112c442ca4e3cb6b3903a62b04e7 fix(config): preserve list-format models in custom_providers normalize c80cc8557ed09509f930ab3df104f3c7f913c573 chore(release): map RyanLee-Dev in AUTHOR_MAP 1df0c812c43ad2d6e50815fd50a26879fbb80128 feat(skills): add MiniMax-AI/cli as default skill tap b5ec6e8df79f2a3e456b06a3987feb4eec7c3809 chore(release): map sharziki in AUTHOR_MAP d7452af257b94287d98825c9a23eaaf2eea3da66 fix(pairing): handle null user_name in pairing list display 48923e5a3d8f521084bc11a2ed9e528ea3feee06 chore(release): map azhengbot in AUTHOR_MAP f77da7de42a1d98fe8f3092e826352e6b4029786 Rename _api_call_with_interrupt to _interruptible_api_call 36adcebe6ca8f5d8511be617c49d384a5d3205fb Rename API call function to _interruptible_api_call 43de1ca8c2874f9a2f589794861fc47d165b90f5 refactor: remove _nr_to_assistant_message shim + fix flush_memories guard f4612785a48557f3a6752fd0f75b44ade395a2c2 refactor: collapse normalize_anthropic_response to return NormalizedResponse directly 738d0900fddd865c80379af742f4a79c3fa39125 refactor: migrate auxiliary_client Anthropic path to use transport 1c532278ae701f9f6184e8643df8e1bbf94a4fd6 chore(release): map lvnilesh in AUTHOR_MAP 22afa066f838da5fcf1f1a0087524dd4fb99f7c5 fix(cron): guard against non-dict result from run_conversation 5e76c650bbae787cbc920646b3822294f02bb8f5 chore(release): map yzx9 in AUTHOR_MAP 15efb410d035faf117d584570ca0566b476b01cd fix(nix): make working directory writable e8cba18f77c2ab284e7a1d3c5414c9b155693c81 chore(release): map wenhao7 in AUTHOR_MAP 48dc8ef1d158b29b0ff5ec04d708b2a0d92a3b72 docs(cron): clarify default model/provider setup for scheduled jobs 156b3583206d20cf6ca4b3017151d7e9a1a041f3 docs(cron): explain runtime resolution for null model/provider fa47cbd456718d9cad7a7e0114d94c0337ccb398 chore(release): map minorgod in AUTHOR_MAP 92e4bbc201e651dc1b43f16637ff75728b646330 Update Docker guide with terminal command 85cc12e2bd55a6f9d1328fc21162a4d012a68e30 chore(release): map roytian1217 in AUTHOR_MAP 8b1ff55f5382052a5d98246659136e632af13697 fix(wecom): strip @mention prefix in group chats for slash command recognition 77f99c4ff445f7df1634f8e01e0a6d65d46959bc chore(release): map zhouxiaoya12 in AUTHOR_MAP 3d90292eda55d24098b1d3e73b191896d492e01e fix: normalize provider in list_provider_models to support aliases d8cc85dcdccf86f7cf07fe012b00646282a12b90 review(stt-xai): address cetej's nits 18b29b124a0b562c331506aaf49e6c67d2d90f12 test(stt): add unit tests for xAI Grok STT provider a6ffa994cd433c13377546a98a527c993572a41c feat(stt): add xAI Grok STT provider bace220d29e400bc14a5c6066a699260a0ec4c6f fix(image-gen): persist plugin provider on reconfigure 25072fe6900d16bf00930881cef9b08c76fd47e8 fix(restructure): fix stale references missed by import rewrite d1ce3586463d72923749a2ac788ef8ca0f90358b feat(agent): add PLATFORM_HINTS for matrix, mattermost, and feishu (#14428) ff99611e16166fd2fee1034815d8adc6b855432c refactor(restructure): update Nix files for hermes_agent package 76aebd73c38e08a3491a24ab35ea623200269abe refactor(restructure): update infrastructure for hermes_agent package a1e667b9f2a458b9795aec7daca31ddc89c5f327 fix(restructure): fix test regressions from import rewrite 88b6eb9ad1be4c778c589218c7c759c4e0d31c7e chore(release): map Nan93 in AUTHOR_MAP 2f48c58b85b81ef45e3e25bb1279494e67fa6021 fix: normalize iOS unicode dashes in slash command args e25c319fa39edf3122a2c808f9a585fdb079800f chore(release): map hsy5571616 in AUTHOR_MAP 9357db2844d2b70262d1ad8bae985cb2d210035c docs: fix fallback behavior description — it is per-turn, not per-session 400b5235b8a77a31a25c676b72327cc180b144fd chore(release): map isaachuangGMICLOUD in AUTHOR_MAP 73533fc7284ef1cc51c672d300472a247fb49654 docs: add GMI Cloud to compatible providers list 74520392f20980d8631193670312993dedf4fc8a chore(release): map WadydX in AUTHOR_MAP dcb8c5c67a451e2e0995bd04e5a083c48e80c282 docs(contributing): align Node requirement in repo + docs site 2c53a3344d164b21dea74d37bb0aab8a1932208d docs(contributing): align Node prerequisite with package engines 7f1c1aa4d9d7c3b7b08ec2b9ec5832a9c08a8776 chore(release): map mikewaters in AUTHOR_MAP ed5f16323f65fac497117166b85c30bd83f6177d Update Git requirement to include git-lfs extension d6d9f1062954dccd8f32405932ada23159190b1f Update Git requirement to include git-lfs extension fa8f0c6fae3c86ec83dba0827f023dddcbfa5589 chore(release): map xinpengdr in AUTHOR_MAP 5eefdd9c0234b39e246a782aeb4c968f5b51b6d5 fix: skip non-API-key auth providers in env-var credential detection 268a4aa1c1ad05867efc84f69d941c37b36c0ef8 chore(release): map fatinghenji in AUTHOR_MAP 99af222ecf56c0eed0d3eb82903a6bf33b6ff7d5 fix(tirith): detect Android/Termux as Linux ABI-compatible f347315e0752f8deea0987e28c70ac135a4bb574 chore(release): map lmoncany in AUTHOR_MAP b80b400141ebcc64b889d91f29826a88eef2f50a fix(mcp): respect ssl_verify config for StreamableHTTP servers bf039a92682f654424163137a5381126456f7915 chore(release): map fengtianyu88 in AUTHOR_MAP ec7e92082d15074339c8e7449eebf7b8ede3bd4d fix(qqbot): add backoff upper-bound check for QQCloseError reconnect path a4877faf96d1024c3056bcc3673066f256749a5e chore(release): map Llugaes in AUTHOR_MAP 85caa5d447edecab62f6a16b07c6869987a426fe fix(docker): exclude runtime data/ from build context eda5ae5a5e25f855e672fd3592f3194c5d911894 feat(image_gen): add openai-codex plugin (gpt-image-2 via Codex OAuth) (#14317) 4b16341975a1217588054f567d0f76dc5a3cc481 refactor(restructure): rewrite all imports for hermes_agent package 563ed0e61fd5bcfa8d523927af1e39e9e572aec7 chore(release): map fuleinist in AUTHOR_MAP e371af1df2778ce3efedc97ac25e1fe9e030d342 Add config option to disable Discord slash commands ee54e20c29acdd278a4ced2fe49ba126934fccbd chore(release): map zhang9w0v5 in AUTHOR_MAP 82fbd4771a02b330bda658bd501f8fac92f52b57 Update .gitignore 30ad507a0f18097d28de9690a94d783535703f81 chore(release): map christopherwoodall in AUTHOR_MAP dce2b0dfa85a69f55fa2c0724ce29cbb4e5474ad Add exclude-newer option for UV tool in pyproject.toml f9487ee8310c7f2c7e98ef777d7404ee0e9a2971 chore(release): map 10ishq in AUTHOR_MAP e038677ef69d1c948716b5812114b55202b41258 docs: add Exa web search backend setup guide and details effcbc8a6b73110cbea6596caac6b2a258ebb959 chore(release): map huangke19 in AUTHOR_MAP 6209e85e7d10492d668f9fa50467e8c94a23cfac feat: support document/archive extensions in MEDIA: tag extraction a2a8092e90a5d4ccf9d6d3c91b906cce07befabe feat(cli): add --ignore-user-config and --ignore-rules flags 65ca3ba93b3fa7fd2b15af5b62d54020061f3672 refactor(restructure): git mv all source files into hermes_agent/ package 8bff8bf2c0fedbd03cd436429e7b6a165df236fd chore(restructure): add move map for hermes_agent package restructure 520b8d90020f0c952213be6fb65ec95da80d2105 chore(release): map A-afflatus in AUTHOR_MAP 9c5c8268c6e58d1610db70c1b6f5cb60e8e4e173 fix(skills): remove invalid llm-wiki related skill 463fbf14181474addf81c545a84a936e4f24664f chore(release): map iborazzi in AUTHOR_MAP f41031af3a68bbb3672af2393484f99f4ecba29f fix: increase max_tokens for GLM 5.1 reasoning headroom 1cd2b280fdbdb1a1c579795c1a6d2fadf663e410 Merge remote-tracking branch 'origin/main' into feat/dashboard-chat c78a188ddd13878a68ff9a88df05b4474d1f6450 refactor: invalidate transport cache when api_mode auto-upgrades to codex_responses d30ee2e545509a19ce67090c9ecf47d28a027bb2 refactor: unify transport dispatch + collapse normalize shims 36730b90c4af0fcf51c6a0713b65d259050c5ca6 fix(gateway): also clear session-scoped approval state on /new 050aabe2d408150cf2ec5b4a8af1c2699cb4d4ad fix(gateway): reset approval and yolo state on session boundary 64c38cc4d02ce32f56c5328a8d18a8b49d209b1c chore(release): map shushuzn in AUTHOR_MAP fa2dbd1bb56ea708690de8557ced95891d5af89f fix: use utf-8 encoding when reading .env file in load_env() 6ad2fab8cfaaa33b85d3cbef410cf6416255612c chore(release): map Dev-Mriganka in AUTHOR_MAP a14fb3ab1ac4edb395d44eb35461d4f499498f72 fix(cli): guard fallback_model list format in save_config_value 2c26a8084854be2d2704583c2b43231e1ba699da chore(release): map projectadmin-dev in AUTHOR_MAP d67d12b5df3d17d8c97db6165f95e2be337ebb49 Update whatsapp-bridge package-lock.json 86510477f330e535611a1982cd8f308cb89e4429 chore(release): map NIDNASSER-Abdelmajid in AUTHOR_MAP ce4214ec94d86f6a677fb666cd7ef989adc8efea Normalize claw workspace paths for Windows 50387d718e6347065ab8cc297030b618097d537c chore(release): map haimu0x in AUTHOR_MAP aa75d0a90b1bc42c900c4f699d235ba96dcce737 fix(web): remove duplicate skill count in dashboard badge (#12372) 159061836e1a067a8f44e7323b0bc7023278403a chore(release): map @akhater's Azure VM commit email in AUTHOR_MAP d70f0f1dc03fd5bd204c705093cfbc41d7f8f98b fix(docker): allow entrypoint to pass-through non-hermes commands a3014a4481c8b14fd9e81ffaaad51819c8356243 fix(docker): add SETUID/SETGID caps so gosu drop in entrypoint succeeds c345ec9a6384420805c862cbbf8363ed72b27a91 fix(display): strip standalone tool-call XML tags from visible text 64b61cc24b55d18747ec62e7fcff27572ad990ff Merge pull request #11887 from liftaris/fix/tui-provider-resolution e47537e99d3d4e0097428fda14099f336f0b7b5d Merge pull request #14135 from helix4u/fix/tui-state-db-optional 9bd15184256f49b4ea7c21091666567b5419def5 fix(feishu): correct identity model docs and prefer tenant-scoped user_id c9c6182839972959315c416026104f42ab49aac9 fix(anthropic): guard max_tokens against non-positive values 8152de2a844f19ebd1b1b711e78586378dabbcf0 chore(release): map sicnuyudidi in AUTHOR_MAP c03858733d7f13f5d7b1de0c235ca106632f4131 fix: pass correct arguments in summary model fallback retry 08089738d888f5c56ee3e6e38d40b487976e40d9 chore(release): map li0near in AUTHOR_MAP 82cce3d26ca15cef812c7ab5275200022e19e682 fix: add base_url_env_var to Anthropic ProviderConfig e5114298f00d3ee57a9a8fe27c6af00978575796 chore(release): map WuTianyi123 in AUTHOR_MAP 4c1362884dcb560fd20230881f39f9b1f824a088 fix(local): respect configured cwd in init_session() 9ea2d96d7355194c95a95508351b5177c3978145 chore(release): map ms-alan in AUTHOR_MAP 8db5517b4cc7947f8c4b5f103aa646e05f0ef2be fix: add /opt/data/.local/bin to PATH in Docker image (Closes #13739) 54db9336678167f93f16c4028b364f91a88f3ea2 chore(release): map longsizhuo in AUTHOR_MAP 846b9758d8792683fc2c566269e9531018b4c512 Remove Discussions link from README 142202910e966da5995f37c7baf0b8f3ac1f0b31 chore(release): map ycbai in AUTHOR_MAP db86ed199082d168546179d1c9200467039927bb fix(terminal): forward docker_forward_env and docker_env to container_config The container_config builder in terminal_tool.py was missing docker_forward_env and docker_env keys, causing config.yaml's docker_forward_env setting to be silently ignored. Environment variables listed in docker_forward_env were never injected into Docker containers. This fix adds both keys to the container_config dict so they are properly passed to _create_environment(). 7d8b2eee638f28fd9a9819b894f5036932167831 fix(delegate): default inherit_mcp_toolsets=true, drop version bump 3e96c87f371efbc053665abf546a6093cc636f24 fix(delegate): make MCP toolset inheritance configurable 98e1396b1569745ae2ba42ca37e3bfb0923e79f1 chore(release): map yudaiyan in AUTHOR_MAP 96b0f3700117275d15a760d385e43ab4c0c627d9 fix: separate browser_cdp into its own toolset d74eaef5f984755c29e35421e88982ff95003bc5 fix(error_classifier): retry mid-stream SSL/TLS alert errors as transport b2593c8d4ec3a3799b761097da8a457fee74843e chore(release): map brianclemens in AUTHOR_MAP 4009f2edd9bde7792fc68e132f54c181738079cf feat(docker): add docker-cli to Docker image c0100dde35535509c017681fd885614659e0c69b chore(release): map Somme4096 in AUTHOR_MAP 5fbb69989da05a9c45f3562161f7bad43f1981b5 fix(docker): add openssh-client for SSH terminal backend 6f629a04622dfccccf1ef1bb4dbeb4c16e5fe95b chore(release): map xandersbell in AUTHOR_MAP 02aba4a728e26b4756d2932bafd890d663f6328a fix(skills): follow symlinks in iter_skill_index_files b9463e32c6e240636f7dda68aec8d74cc479b0c8 fix(usage): read top-level Anthropic cache fields from OAI-compatible proxies 75221db96796cd48b014375ae0c2e9f30d8e77e6 chore(release): map vrinek in AUTHOR_MAP 435d86ce36b6ca243fab16c2987a00bbe9795e3f fix: use builtin cd in command wrapper to bypass shell aliases 3e95963bde2ab6c403f4a56b73984ee730c2eabe chore(release): map niyoh120 in AUTHOR_MAP 3445530dbf18d43c322686d9556d2b6d49683b2d feat(web): support TAVILY_BASE_URL env var for custom proxy endpoints ea83cd91e4072ace34cc0b92c0b4263b1f30ab0c chore(release): map wujhsu in AUTHOR_MAP 276ef49c96107e3e3d42c304967a32c3343f7e4f fix(provider): recognize open.bigmodel.cn as Zhipu/ZAI provider 0dace06db7c3b8a7041a2e9152233a265b9266df chore(release): map Tianworld in AUTHOR_MAP 953f8fa943e3f670112fd884793a7a5fb0aadff3 fix(scripts): read gateway_voice_mode.json as UTF-8 0187de1f67cfb722a97e1fc2899b450474f84486 chore(release): map hxp-plus in AUTHOR_MAP c0df4a0a7f0b1a4880162c9dcf975d353dcbf8ff fix(email): accept **kwargs in send_document to handle metadata param 9eb543cafe4d19e041a49eb1b67d5fd5990c8ff4 feat(/model): merge models.dev entries for lesser-loved providers (#14221) ea0e4c267d87bd9c0f48f27270759fb70778fff8 chore(release): map jaffarkeikei in AUTHOR_MAP c47d4eda13be11704e4474ce28427407e91b0c1b fix(tools): restrict RPC socket permissions to owner-only 80108104cf9256a39ad08962fe172decefb50711 chore(release): map anna-oake in AUTHOR_MAP e826cc42ef079985ccdab533015b9b2415d73c92 fix(nix): use stdenv.hostPlatform.system instead of system e710bb1f7f99ae463b4eabe00d565c4c82158526 chore(release): map cgarwood82 in AUTHOR_MAP 27621ef83690372ba56effee2476a7dc732b1e38 feat: add ctx_size to context length keys for Lemonade server support 12f9f10f0f6a7a76a9a3bf322cddd4eee546b5dd chore(release): map houko in AUTHOR_MAP e67eb7ff4b792356241418d1da4423ed7326c3db fix(gateway): add hermes-gateway script pattern to PID detection dad53205ea4d9f2ad3853d70f3aaa5da3225a4c3 chore(release): map simon-gtcl in AUTHOR_MAP 10063e730c9b4174f806ba34da3226f5ccdde978 [verified] docs: fix broken env var example in contributing guide b40b6ec720df05786b865579d3a094efe9e481a2 fix(error_classifier): retry mid-stream SSL/TLS alert errors as transport a369987443013afb29581ed272900a1f01451345 fix(usage): read top-level Anthropic cache fields from OAI-compatible proxies 402d048eb6c65d4e486d5b1b3900ed20f6d065fa fix(gateway): also unlink stale PID + lock files on cleanup b52123eb158be916cb85415511c9bfd0b9d6d6ed fix(gateway): recover stale pid and planned restart state 284e084bcc06decc5c1eab0855731cdf7169c38f perf(browser): upgrade agent-browser 0.13 -> 0.26, wire daemon idle timeout 3c54ceb3cafe6f9ce830155346409d716eee2266 chore(release): add AUTHOR_MAP entry for Feranmi10 66d2d7090e76c9fec04481aac40e8b36ec1fa64c fix(model_metadata): add gemma-4 and gemma4 context length entries 51ca5759946666aeeced20b0f731f3fac630b39b feat(gateway): expose plugin slash commands natively on all platforms + decision-capable command hook acd1f17b88270eb4c92982e950e8c5800d95b48a Clean up TODO comment in auxiliary_client.py 850973295e8e9ef89b06be8ce8683aaa3cded95a Add helpful ImportError messages for optional dependencies c96a548bde1b347797a77cee5b41fd2daa570eb4 feat(models): add xiaomi/mimo-v2.5-pro and mimo-v2.5 to openrouter + nous (#14184) a1d57292af6de2c78168f5ecfd5af2c804de936b Merge pull request #14145 from NousResearch/bb/tui-polish 83efea661f83519921556fc9945388118f04a154 fix(tui): address copilot round 3 on #14145 1e8254e599620055c26fa974c2ee7b85630bd2cb fix(agent): guard context compressor against structured message content 2e5ddf9d2e8c5cb13780d534892ed7116623c2f3 chore(release): add AUTHOR_MAP entry for ismell0992-afk 6513138f26841ab89d132e67959eef4e8b5fb8b5 fix(agent): recognize Tailscale CGNAT (100.64.0.0/10) as local for Ollama timeouts 44a16c5d9d54f2537ad3cc75421ff98f0ea8836d guard terminal_tool import-time env parsing e86acad8f1a55603079715aafd6fc533c8846324 feat(feishu): preserve @mention context on inbound messages 4ac1c959b250605ccd92db60e4706e051eb4a557 fix(agent): resolve fallback provider key_env secrets 76c454914a7c341bcff4b92da9b7d048d4e3b9ae fix(core): ensure non-blocking executor shutdown on async timeout d6ed35d047642663bd3535f3b9fc0bd417c89475 feat(security): add global toggle to allow private/internal URL resolution ea9ddecc72d1f2996abd957f226cb63af29138f2 fix(tui): route Ctrl+K and Ctrl+W through macOS readline fallback 4107538da8304066892e11dbb26388ca65c679f6 style(debug): add missing blank line between LogSnapshot and helpers 103c71ac36c6ebbf929ecf52daaef02350296c09 refactor(tui): /clean pass on tui-polish — data tables, tighter title 8410ac05a9cccee981aebf649233064df528e752 fix(tui): tab title shows cwd + waiting-for-input marker b49a1b71a738c3521396462283790cfd36d5534b fix(agent): accept empty content with stop_reason=end_turn as valid anthropic response e0d698cfb351780ee62e16abfe52a0d6a87cd707 fix(tui): yolo toggle only reports on/off for strict '0'/'1' values ea67e49574b0b3c4252cd5ae8472e78c7f2d1d80 fix(streaming): silent retry when stream dies mid tool-call (#14151) b641639e425bfd26dbe3edbd113d8749384cbf40 fix(debug): distinguish empty-log from missing-log in report placeholder 3ef6992edf2b7f09a2b91976b5e5647e1ca77a47 fix(tui): drop main-screen banner flash, widen alt-screen clear on entry 6fb98f343a7b315ddba4589a8942ba5b5a9c5ab1 fix(tui): address copilot review on #14103 48f2ac33528ee68561ecc685a649c15cb0adc148 refactor(tui): /clean pass on blitz closeout — trim comments, flatten logic 1e8cfa909219a19ba491be2e388166e7ae904fdd fix(tui): idle good-vibes heart no longer blanks the input's last cell 88993a468f307614a8eff721c5635061896d7084 fix(tui): input wrap width mismatch — last letter no longer flickers a7cc903bf58bef1de6e70f9aa19ec5c4c89567fa fix(tui): breathing room above the composer cluster, status tight to input 408fc893e93c29e90069f5c455a6abd5c5c9594e fix(tui): tighten composer — status sits directly above input, overlays anchor to input ea32364c965534642077653f3a82720ce48d90c6 fix(tui): /statusbar top = inline above input, not row 0 of the screen d55a17bd824ce3ce309eb7cecdad9406cdf5b107 refactor(tui): statusbar as 4-mode position (on|off|bottom|top) 7027ce42efd2849c62146daf813ab04911ee14bd fix(tui): blitz closeout — input wrap parity, shift-tab yolo, bottom statusline 88564ad8bc7518f2c67bbbc63b758adcac5f8dca fix(skins): don't inherit status_bar_* into light-mode skins 81a504a4a0f3c99ff9411a0a549f4adf9af93312 fix: align status bar skin tests with upstream main c3232171882235bd3cdd0125b1b1ee9748bfe501 fix: make CLI status bar skin-aware be43bee11af0760f395b6139c9031d8656749a67 final changes from successful run 5dead0f2a08be2fed152e45141fcc7882f06261f fix(tui): degrade gracefully when state.db init fails de849c410da9dc39bde6b81709cef89a04d64f38 refactor(debug): remove dead _read_log_tail/_read_full_log wrappers 8dc936f10ecfd4d7c0200522e48374f885c7e024 chore: add taosiyuan163 to AUTHOR_MAP, add truncation boundary tests 61d0a99c11cda30f7a3f58c41693f82bcf1435cf fix(debug): sweep expired pending pastes on slash debug paths 921133cfa56a2e289a1cf09e87b382a6ea0885f8 fix(debug): preserve full line at truncation boundary and cap memory fc3862bdd637ef53e82628c9d931d9cbff853fc6 fix(debug): snapshot logs once for debug share ec374c05994e0f91b1820ae80d7d2b7ed02004d5 Merge branch 'main' into fix/tui-provider-resolution ccd4116635fd5031fbb9ce53ad0db904e1bf0fef fix(state): replace version-gated migrations with declarative column reconciliation 81fe89aca2cbde70bf6a80070c3cbca8a4f2df35 perf(browser): upgrade agent-browser 0.13 -> 0.26, wire daemon idle timeout bc5da42b2c31136c55c55f9ef84bd156d8c90da2 Merge pull request #14045 from NousResearch/bb/subagent-observability 762e1073a8c27ce48bb7afe3a78b748b4621b0e6 feat(security): add global toggle to allow private/internal URL resolution 8aaefec231576b1fde5f4a202e194f09bafd261b fix: follow-up for salvaged PR #8952 5b0741e986c9f28d3cb9c16d0c6953fcf1857e87 refactor(tui): consolidate agents overlay — share duration/root helpers via lib 9e1f606f7f9298ace79c4a39948f8f67102770aa fix: scroll in agents detail view ccde71a6ab9df65777cdddfad060f27971e2dc04 feat(providers): add Volcengine and BytePlus support 7eae504d158b5cdbc519684d6c5ce64f1fbdb079 fix(tui): address Copilot round-2 on #14045 eda400d8a58c8d6261dd752010cc0e0e90663f44 chore: uptick 82197a87dcacfef6e17ac423b39f40a3fc124367 style(tui): breathing room around status glyphs in agents overlay dee51c1607640e7a9496fbfd4985b5807b10b77f fix(tui): address Copilot review on #14045 5e8262da26a63872bfeca808a54fcdc9baff2751 chore: add rnijhara to AUTHOR_MAP 1f216ecbb4797035362891e584039fc386ec247f feat(gateway/slack): add SLACK_REACTIONS env toggle for reaction lifecycle 70a33708e7c9d870af5bd7bac1b7e99064bdd84b fix(gateway/slack): align reaction lifecycle with Discord/Telegram pattern f06adcc1ae0cdfe9a72fabd25f63852b0c3dc626 chore(tui): drop unreachable return + prettier pass 06ebe34b40059653dba9fc5eef3d37eca7d41229 fix(tui): repair useInput handler in agents overlay 7785654ad5cc3d9e2fec3cdf2ccb0fe88c4280a9 feat(tui): subagent spawn observability overlay 04e039f687b84aba07919f55b8597d263dd58435 fix: Kimi /coding thinking block survival + empty reasoning_content + block ordering 97a536057ddfca495e5a3c44569cc9e67dccb856 chore(release): add hiddenpuppy to AUTHOR_MAP 2efb0eea211ae214019dac64be5b81002b942483 fix(anthropic_adapter): preserve reasoning_content on assistant tool-call messages for Kimi /coding 77e04a29d5742e50add9c0d84a396e1eee3c4356 fix(error_classifier): don't classify generic 404 as model_not_found (#14013) 40619b393fd997cde206557dcf6599d113ca2cf9 tools: normalize file tool pagination bounds 3e652f75b27baef94dbf9dc13ec16c49271f37a4 fix(plugins+nous): auto-coerce memory plugins; actionable Nous 401 diagnostic (#14005) 5fb143169b4ef3a3ad9b74d2d7c871ab7e5e27ca feat(dashboard): track real API call count per session be11a75eaec4ec0ad28f0ed815a4dccbb7d4e51a chore(release): map hharry11 email to GitHub handle 83cb9a03ee59fc4336a465dac9a79e736bb6c803 fix(cli): ensure project .env is sanitized before loading cf55c738e79bf1a9ae809d11bcab695e83f4e248 refactor(qqbot): migrate qr onboard flow to sync + consolidate into onboard.py ba7e8b0df9ee6f5a8285108f82867a08bb787426 chore(release): map Abner email to Abnertheforeman b66644f0ecced3b89fb5788dcd39bf13b5336ec2 feat(hindsight): richer session-scoped retain metadata b8663813b667f32c4b4f30c3ee6caa0c9ebe4078 feat(state): auto-prune old sessions + VACUUM state.db at startup (#13861) b43524ecabc387703276b9f810b07bb3ee5fa1a5 fix(wecom): visible poll progress + clearer no-bot-info failure + docstring note 3f60a907e1d34eab64bda9c67d073c4523e651e0 docs(wecom): document QR scan-to-create setup flow 8bcd77a9c2e8ca22e02db1025739fa3b88f54bdf feat(wecom): add QR scan flow and interactive setup wizard for bot credentials d166716c65ea0949026bdbd6d747c8aa59901721 feat(optional-skills): add page-agent skill under new web-development category (#13976) a7d78d3bfd811d2713c837bf29ca8031ba538409 fix: preserve reasoning_content on Kimi replay 30ec12970b10d8efd55f509fb7da33d5d8614b74 fix(packaging): include agent.* sub-packages in pyproject.toml c6b1ef4e5881f42d6c5168e111bf915716f09c51 feat: add Step Plan provider support (salvage #6005) 44596731c82c090fc6eda7244b697d58f69c65b6 refactor: unify transport dispatch + collapse normalize shims 847ffca7158e8663c0d88e855895fdd0a47ffae9 Merge remote-tracking branch 'origin/main' into sid/types-and-lints d4178e09776c4ff5711e8afc88d3089b1665c1d1 feat(gateway): add require_mention_channels for per-channel mention overrides ff9752410a8dba62f1b246aeed9142893c75b4ba feat(plugins): pluggable image_gen backends + OpenAI provider (#13799) d1acf177737bc8ded22a973acfdddf56dbd5680a feat(models): add minimax/minimax-m2.5:free to OpenRouter catalog (#13836) 410f33a728bbe97b4853e6f411c8a1d835d7de9c fix(kimi): don't send Anthropic thinking to api.kimi.com/coding (#13826) 7b79e0f4c9f05e335830b321ea6b8a3ea171f7af chore(models): drop 3 models from nous portal recommended list (#13822) 57411fca240e4172b9f79414ad065a996c5da4e6 feat: add BedrockTransport + wire all Bedrock transport paths 572e27c93f348e93b3abb0d813e0efe9ebcad36f fix(tui): demote gateway log-noise from Activity to info tone 76ad697dcb277bc468e2249e1a11eb6686406c4d fix(tui): don't force-open Activity on every error 83d86ce3442d688282c182ac282610c067e65056 feat: add ChatCompletionsTransport + wire all default paths 29693f9d8e51cffb8077f2db5a52e31031219480 feat(aux): use Portal /api/nous/recommended-models for auxiliary models c22f4a76deb6087774b4911a959e058f921f31e9 remove Nous Portal free-model allowlist dd8ab40556cc25e7e70e730ff3eaca803cc93550 fix(delegation): add hard timeout and stale detection for subagent execution (#13770) 338b98161ad08fde4423ace88e542625fc834633 feat(aux): use Portal /api/nous/recommended-models for auxiliary models c832ebd67cac031cc4176af24c3f7a7d66ae04e7 feat: add ResponsesApiTransport + wire all Codex transport paths 09dd5eb6a5a7e8ff37380f8220a24a216cec2842 chore(release): map xiaoqiang243 personal email in AUTHOR_MAP b2ba351380001ba5766764700dfd570dbd843a2c fix(kimi): reconcile sk-kimi- routing with Anthropic SDK URL semantics 6caf8bd994b53a3cd5f0390fbad41b9abfef276f fix: Enhance Kimi Coding API mode detection and User-Agent 2a026eb76279f84cc48f00c44002d4b95da950eb fix: Update Kimi Coding API endpoint and User-Agent 46d680125e3d29af439491ed9a0b03b8e4559653 fix(kimi-coding): set anthropic_messages api_mode for /coding endpoint bad5471409a53bbc0d764176b62b7acf321c43ef fix(kimi-coding): add KIMI_CODING_API_KEY fallback + api_mode detection for /coding endpoint fd403854b9c88e52bcd08ed1585b70826608c9b3 fix: auto-detect anthropic_messages mode for Kimi /coding/v1 endpoints de181dfd22faeef0ae5402eff5ab8488f02b0ebf fix: add User-Agent claude-code/0.1.0 for Kimi /coding endpoint 84449d9afee5bede1058a49a28fb0d4b80fbbc5f fix(prompt): tell CLI agents not to emit MEDIA:/path tags (#13766) 0a1e85dd0d5e79cc2759acf8e7cd1d7f2779135f fix(skills/baoyu-comic): absolute curl paths + clarify-timeout handling (#13775) 1dfbfcfe742dd640b64b60b8f81696e6b1387c38 Merge pull request #13729 from NousResearch/bb/tui-diff-inline-sequence 0e887608520a42e1b752d597b1ef0d6bf0e112f9 remove Nous Portal free-model allowlist 964b44410700f6802661d5b0dec25192ac227cf5 fix(website): run skill extraction automatically on npm run build/start (#13747) bf73ced4f524028572859d90bc05e2bf40ad0717 docs: document delegation width + depth knobs (#13745) 83a7a005aa867a1a379664965e3adb796d977c54 fix(skills): clarify baoyu-comic character sheet role fe025425cbcc3d38048b28f2e4fa476187473bfd fix(skills): address baoyu-comic PR review a8beba82d00121ade75cacadb6344aa161704670 refactor(skills): adapt baoyu-comic for Hermes be7dcf362858d828a2f0f76ac5a89203b541d7b9 feat(skills): add baoyu-comic skill 8f167e8791ab852e26d3e9980e348284666444cd fix(tts): use per-provider input-character caps instead of global 4000 (#13743) a8eb13e828b03508fdd59251c9c95143484fb374 fix(tui): dedupe inline diffs, strip CLI review-diff header e684afa1519c1ef3956861217a0c0b42fe4c84f7 fix(tui): keep review-diff tool rows terse 569faf54dec950157c66facb183c7fee8e84ddf6 feat(cli): add --ignore-user-config and --ignore-rules flags 9654c9fb100b02bd3595fccf8b7f8c52eb3d167e fix(tui): dedupe inline_diff when assistant already echoes it 31b3b09ea42b6dcc388c671b65f24959ba5e1966 fix(tui): render inline diffs inside assistant completion 1e5daa4ece9606ee37ff389ed9a27cf66d788201 Merge pull request #13728 from NousResearch/bb/tui-history-local 90fca3c7e06ad20e5b2f1d6e6f589833b6be0277 Merge pull request #13724 from NousResearch/bb/tui-resume-all-sources e2feccf7c6c08f6d7b8d0b4a751bed98aff2075d Merge pull request #13726 from NousResearch/bb/tui-multiline-up-arrow 35cc66df62e35daddcbb9d3f15f5938d35b11ae8 fix(tui): arrow history fallback when no line exists bd046220b3c11af96c681331f72b24315279e2da fix(tui): narrow /resume sources to human adapters bddf0cd61e84707022cde0377ae28d8c1b8ab22d fix(tui): keep inline diffs below tool rows and strip ANSI 95fd023eeb8c9051732c3daacf174a7311d6acb4 fix(tui): only cycle history at input boundaries on arrows 9c9d9b7ddf703f2d8174aeab58d653ac25506af8 feat(delegate): cross-agent file state coordination for concurrent subagents (#13718) dff1c8fcf195d10dd5d642ca216f3df56159cf50 fix(tui): tool inline_diff renders inline with the active turn 723a9cfb1e82c9d4fc69893c002ec483eb780cfb fix(tui): /history shows the TUI's own transcript, scrollable d30f6ac44eda33c964b1edf9b53c0eb7288b3c41 fix(tui): up-arrow inside a multi-line buffer moves cursor, not history 0dfb7b8a0dcbb309015e15efcb090acc76e17573 fix(tui): /resume picker shows telegram/discord/etc sessions 35a4b093d86b9ba108b84103c5ed4a996aa3299c Merge pull request #13719 from NousResearch/bb/tui-markdown-cleanup 5504ee8de8a2ad4fc444ee4d4a9ed7f95bff578a Merge pull request #13715 from NousResearch/bb/tui-markdown-tilde-subscript b97b4c4981e85a82ecb8a17a175c5a1c45675061 refactor(tui): clean markdown.tsx per KISS/DRY 43eb1153e9c280beaa26081490a8dc9103c250a0 fix(tui): don't swallow Kimi/Qwen ~! ~? kaomoji as subscript spans c275423d0d82e23382156e7e2df403b2826bec67 feat(tui): add /mouse [on|off|toggle] runtime slash command 9fa49206dc52ccaf43d572ca07c36e6551fd6c96 feat(llm-wiki): port provenance markers, source hashing, and quality signals from llm-wiki-compiler (#13700) 52cbceea448a05d151434d2063bd79f92e5fdbb9 fix(vision): restore tier-aware Nous vision model selection (#13703) 7ba9c22cdec922895f185eabe8585b198b3740f1 fix(vision): route Nous main-provider vision through tier-aware backend 5b60ef8058b8eace131e305dab66d722a3cfd00a Merge pull request #13594 from NousResearch/bb/tui-readline-parity-linux dfad86d1ed49db15a9ada22b296713332c7302d7 Merge pull request #13596 from NousResearch/bb/tui-ctrl-c-preserve-segments e6e993552aa1bd1bf9b9cd988f784ece7ed92bb1 Merge pull request #13622 from NousResearch/bb/tui-model-switch-sticks 3e198f37c933c738b7b29a635143bc67edd548bc Merge pull request #13641 from NousResearch/bb/tui-at-folder-filter ef589b1a23253777b4973257e9c628a83efffca3 test(approval): regression guards for thread-local callback contract 52a79d99d2b443b04145322402155fd5b172394b fix(security): TUI approval overlay accepts blind keystrokes, CLI thread-local callback invisible to agent 204f435b48e57f4b4390f5469ffe2f1e801889e8 chore(release): add Ifkellx to AUTHOR_MAP for PR #12687 0301787653a50e1422999de136a31fc1ddd61000 fix(vision): resolve Nous vision model correctly in auto-detect path 3e1a3372ab40dbda0e4fee24d9c3882ecdb49031 docs(delegate): clarify that the parent agent, not the user, populates goal/context (#13698) 392b2bb17b659a4a797b392856d98e19a79a6920 fix(auxiliary): refresh Nous runtime credentials after aux 401s 48ecb98f8a7521fc07b6204f3148fe149f2cca6d feat(delegate): orchestrator role and configurable spawn depth (default flat) e7f8a5fea3e4052c7475c59af2c1aeb4a2a3d694 Merge pull request #13591 from NousResearch/bb/tui-pager-scroll eacf313858368fbd2bc235d5b197dc7f2c0f0bde Merge pull request #13253 from NousResearch/bb/tui-emoji-vs16-injection 136519a2c97e96763b9bd83c32dce2872870647d fix(tui): inject VS16 so text-default emoji render as color glyphs 12c7f279d6d49bf97173c991be5d38f36b2ee3d9 Merge pull request #13661 from NousResearch/bb/tui-skills-manage-async c0db4d529df19362776b4f7106dc36344d59b533 Merge pull request #13590 from NousResearch/bb/tui-enter-applies-path-completion c641d14b6bc4174cab66e3f996c4a8135896529c Merge pull request #13595 from NousResearch/bb/tui-tools-unknown-subcommand 26394d9e97d863c9da5429c640f49ec65e1d626d Merge pull request #13592 from NousResearch/bb/tui-picker-polish 2aa983e2f270a5231a008ab8b02e64f61f27939b feat(gateway): recognize .pdf in MEDIA: tag extraction (#13683) 7c3c7e50c5a76a18bc52a0c51af5b674fbfacd7c test(delegate): make default_toolsets regression test robust to user config baaf49e9fd2cc8236ddcb9de06e412be3a815512 docs(delegate): remove default_toolsets from example config and docs 631e8793f4bfff80ce9ed45dfac1bd5870c92559 refactor(delegate): drop dead default_toolsets from CLI default config 5ffae9228b383b8888432cdfa1fc5514227ba75e feat(image-gen): add GPT Image 2 to FAL catalog (#13677) e889332c99b164126062916a00e07f3973d3f388 fix(gateway): always inject reply-to pointer, not just when quoted text is absent (#13676) 7ff7155cbd78b5fa07c4f1f37b25c03d5b602d05 fix(skills/llama-cpp): concise description, restore python bindings, fix curl d6cf2cc058251f60ce31039d486184ab2ac83b86 improve llama.cpp skill be5a2ee5d3492dd0b96c2009f07f8eb6658b932d feat(skills): expand touchdesigner-mcp with GLSL, post-FX, audio, geometry references 48f82448735ea33a4eff74f290298db885000324 fix(tui): route skills.manage through the long-handler thread pool dd5ead1007b188a806c5dd1ab8d5e313e9bfe65a fix(tui): preserve prior segment output on Ctrl+C interrupt 887dfc4067d14d3514ac39c2a2ac72b30dd71f88 fix(tui): pager supports scrolling (up/down/page/top/bottom) 34f24daa8d8aa51a1edb0402bbe8e3a5e10de5fb fix(tui): stabilize slash-completion dropdown height 4ada76b6ede68afb982540adec2c451f640c16e0 fix(tui): truncate long picker rows so the height stays stable 9d9db1e910eb1208aa345286e3d2d19cc0160ee2 fix(tui): @folder: only yields directories, @file: only yields files f0b763c74feed699b2f75f4f237eb64fb8dfdd45 fix(model-switch): drop stale provider from fallback chain and env after /model fc6a27098e4bfcbcb6943159f0a89ede577fbd08 fix(tui): raise picker selection contrast with inverse + bold c3b8c8e42cb120be4ce972f984b74c3dccfec18b fix(tui): stabilize model picker viewport height 83c1d4ec2703e140219285d325486ac556acb1f8 fix(tui): delegate unknown /tools subcommand to slash.exec d86c886b3143ebef02b3b8df3b7626d035f05d7b fix(tui): readline parity on Linux — Ctrl+A = home, Alt+B/F word nav 4b0686f63d1d50b1b603af05235f0c21be63ad77 fix(tui): apply path/@ completion on Enter ce98e1ef1122194f35e94cdf5901e1f1ed5e5f6d Merge pull request #13652 from IAvecilla/fix-underscore-display 54c2261214d2e8f2946fe12620152a0487901fb2 Rename test variables 943602b68a095e28346ae83727deadda3ba5220b Merge pull request #13646 from NousResearch/fix/nix ce0ecce6cf527532d25d54a60ef99c22ff05b2f9 update package.locks aa61831a14ee25cc88131b9fb11a03048d45b419 fix(cli): keep snake_case underscores intact in strip markdown mode b2111a2b4542d30d36bc033d6b075dc4733421f0 Merge pull request #13526 from NousResearch/feat/dashboard-action-buttons 67bc441099e554cf07e3a772c93939778c1d7804 refactor(types): simplify pass on P1 batch c9e8d82ef42970b31d683b9c3e8319b2d54d8b08 fix(tui): address code review findings bc9927dc506b78e8a8d0d4d84324b3bcc9b8353c fix(tui): address PR review feedback 9556fef5a1c144d6110297a0a39ff64084822715 fix(tui): improve macOS paste and shortcut parity a9ed7cb3b429e1495830cf3c27a5c18b93bfb7b9 Merge remote-tracking branch 'origin/main' into sid/types-and-lints 15ac253b117ac9300ae7c73365dc86318b5828d2 fix(types): batch P1 ty hotfixes + run_agent.py annotation pass d8d4ef4e208893832d89961aed9312b9abda8a30 chore: layout 432772dbdf63eae379b76b3811c51284c36bb817 fix(cache): surface cache-hit telemetry for all providers, not just Anthropic-wire (#13543) 5e0eed470fe8c4d8a4e6bd1f66365acf2a1f3e5d fix(cache): enable prompt caching for Qwen on OpenCode/OpenCode-Go/Alibaba (#13528) 244ae6db15f3fc0b18038d3de73473bdd16dd43b fix(web_server,whatsapp-bridge): validate Host header against bound interface (#13530) 16accd44bdc5151aee8cac57e74fd3da15da3092 fix(telegram): require TELEGRAM_WEBHOOK_SECRET in webhook mode (#13527) 62348cffbed633e21dc4c75bc9de0d5536161697 fix(acp): wire approval callback + make it thread-local (#13525) ba4357d13b1f1ae29ebc202ffc557d32e99a04ce fix(env_passthrough): reject Hermes provider credentials from skill passthrough (#13523) 7fc1e91811b7f5ceab0bdc85e01ca4f77a8555a5 security(runtime_provider): close OLLAMA_API_KEY substring-leak sweep miss (#13522) fc21c14206c021a5ca0b10d5bceef49729fce0f7 feat: add buttons to update hermes and restart gateway 4cc5065f63f7adf20705396fbd685660d63fd565 fix(acp): follow-up — named-const page size, alias kwarg, tests c1fb7b6d27fe9aa9a4e8df8a9698009faba30cc2 fix: support pagination and cwd filtering in list_sessions ea06104a3c3c33d831ee43665bd0ef7f4cbc4fd6 fix(permissions): handle None response from ACP request_permission 027751606ad5aac752e36a50b7f0ec5171bd53a6 chore(release): add UNLINEARITY to AUTHOR_MAP 155b6198674e39dfcac4495b559b622bd8d2b6e2 fix(agent): normalize socks:// env proxies for httpx/anthropic bd342f30a234f5f0087923e7176e31d5d1f365c1 chore: remove stale requirements.txt in favor of pyproject.toml (#13515) 267b2faa15bfc6dfd7336ba492a07b8d364c413b test(cron): exercise _deliver_result and _send_media_via_adapter directly for timeout-cancel 18e7fd83644f90ef144895b01bf8b22f714c448d fix(cron): cancel orphan coroutine on delivery timeout before standalone fallback 3cc4d7374f2ca92112fabb20a12b4716f729b6cd chore: register VTRiot in AUTHOR_MAP 5c540190552d04ad690b165e75a48a51a8d46880 fix(skills): respect HERMES_SESSION_PLATFORM in _is_skill_disabled 793199ab0b61de769aa18c0598258975998e4864 chore(release): add mengjian-github to AUTHOR_MAP 063bc3c1e2e76c7d46bad6f9ef3f6244bd50efc4 fix(kimi): send max_tokens, reasoning_effort, and thinking for Kimi/Moonshot 3f72b2fe1574fea279198f5e8f234ec386e945f3 fix(/model): accept provider switches when /models is unreachable 484d151e99c1bec71c5ffeb3f08dc7df0c6d9dc2 fix(mcp): reset circuit breaker on successful OAuth reconnect 8cc3cebca282fb6770482ee9fcb3b1c95cf192cb fix(mcp): add half-open state to circuit breaker 724377c42981e0e2a1a27f2f26bdcf7e861bb64a test(mcp): add failing tests for circuit-breaker recovery fb6d37495b701aa2c8bf1ecf57d15e1f7e80082b fix: resolve `not-subscriptable` ty diagnostics across codebase 72e7c0ce3406db4832c91e5c8958175217dd8323 fix: declare undeclared soft deps in extras and remove silent import guards f56c373a279e4a61c761d7a2f17e6e6547594e32 feat: add BedrockTransport + wire all Bedrock transport paths c6974043eff246274a8079466a3a4d22ab13ee6c refactor(acp): validate method_id against advertised provider in authenticate() (#13468) 7570414e59267a273345d5c6dfaea76d1fd0cad5 feat: add ChatCompletionsTransport + wire all default paths f8d23657950f12c6425e81415ba8c89ffa6d24dd fix: resolve all `call-non-callable` ty diagnostics across codebase 603a68b91846a9413c833496d89805d8e580e1de fix(acp): isolate per-session approval callback via ContextVar d1cfe53d857dcfc94dffd9adbb38d7020c26747d docs(xurl skill): document UsernameNotFound workaround (xurl v1.1.0) (#13458) 554db8e6cf80fd6654d5089d2cbb392ced3fc209 chore(release): add pinion05 to AUTHOR_MAP c1fe6339b7f3e5c362af6803d0695b8eb60dfaff test(telegram): update /cmd@botname assertion for entity-only detection b0939d92109e6de0c42d3f7916de720e9d3c1b66 fix: slash commands now respect require_mention in Telegram groups ca2b6a529efda21788556438ca88d9dca9b14249 refactor: move standalone scripts to scripts/ directory 224e6d46d98e3abd8beaec04e6bdbfcc97721ce9 fix: resolve all `invalid-return-type` ty diagnostics across codebase 2e722ee29ae2acebe2051b35303eb4a29f7cfcfc fix(fal): extend whitespace-only FAL_KEY handling to all call sites 77061ac99541b4e31ac7a93ff3bf7764402bc82c Normalize FAL_KEY env handling (ignore whitespace-only values) 5e6427a42c75477cc01782328b8c47dad3240667 fix(patch): gate 'did you mean?' to no-match + extend to v4a/skill_manage 15abf4ed8fe311bfca6faf25e7548f2000f13471 feat(patch): add 'did you mean?' feedback when patch fails to match 4fea1769d2968a3c9ab2557c9839db0b85e2aba3 feat(opencode-go): add Kimi K2.6 and Qwen3.5/3.6 Plus to curated catalog (#13429) bcc5d7b67dd69b3708b43246f600745801ce6905 feat(/usage): append account limits section in CLI and gateway 8a11b0a204c20705725696818e2298a6182ff891 feat(account-usage): add per-provider account limits module 2c69b3eca8187013223677985c013e714e5c1d70 fix(auth): unify credential source removal — every source sticks (#13427) e0dc0a88d3218980bdcc888c2741a27ab332eff7 chore: attribution + catalog rows for adversarial-ux-test e50e7f11bc80f72f9a4eaac217343d75f8ede677 feat(skills): add adversarial-ux-test optional skill 65c2a6b27f6e3bf4441ed063fd96611eacf0aa88 chore(release): add francip to AUTHOR_MAP d1ed6f4fb44c08e130f043ee3d1d12e7a3b8073e feat(cli): add numbered keyboard shortcuts to approval and clarify prompts b341b19fff3518e7ea48ba3ac8bedaf7fe07fb54 fix(auth): hermes auth remove sticks for shell-exported env vars (#13418) 26abac5afd431685e55db1d7b2e12ecc4f3eb064 test(conftest): reset module-level state + unset platform allowlists (#13400) 71668559bed7cfea1d37b06031c1d79220c41a27 test(copilot-acp): patch HERMES_HOME alongside HOME in hub-block test 9a655ff57b2f329d5b769b7e43b63dd118535e3c chore(release): map fr@tecompanytea.com → ifrederico 9b36636363ddddc2ef8244449f9321dcc3224420 fix(security): apply file safety to copilot acp fs 517f5e263953ab92c6076cd888ea755af106d6d4 chore(release): map abdi.moya@gmail.com -> AxDSan for release notes 2d7ff9c5bd4c41079cd8d1dcd07c0d4c486e2fea feat(tts): complete KittenTTS integration (tools/setup/docs/tests) 1830ebfc521ce3b793af1689decc0b8a9259e078 feat: Add KittenTTS provider for local TTS synthesis 731f4fbae677dfd1e6bce49c53c456ae38f709b5 feat: add transport ABC + AnthropicTransport wired to all paths 04f9ffb792da7e2234727b69e6171a1e90da47bc fix(gateway): preserve sender attribution in shared group sessions c5a814b23337319a0e77c69b94b3f4d784fb3cc2 feat(maps): add guest_house, camp_site, and dual-key bakery lookup (#13398) c312e8ecf537778ab5796a9fe1869b668efefc69 fix(update): keep get_hermes_home late-bound in _install_hangup_protection 28b3f49aaaa69e8cf6225e9d4d35042a4890f777 refactor: remove remaining redundant local imports (comprehensive sweep) 1010e5fa3cf4299486441872ec49d0baa5c5afbc refactor: remove redundant local imports already available at module level d3dde0b459c54f9b265a4b4c31a9002a071f33fe Add TYPE_CHECKING imports to fix `unresolved-reference` type bugs ce9c91c8f77db1860bdf57142c5c4469702fb7fe fix(gateway): close --replace race completely by claiming PID before adapter startup 56b99e823950cebeef0da6f23bbe9db6e02f3655 fix(gateway): force-unlink stale PID file after --replace takeover cbe29db774ac933f0c2fe07d500ad5f73316b7f9 fix(gateway): prevent --replace race condition causing multiple instances 328223576b4dc29cbbb48a2037a82d0b37e8ac47 feat(skills+terminal): make bundled skill scripts runnable out of the box (#13384) b48ea41d27b755b7bd69f74cd6938a5a3d389112 feat(voice): add cli beep toggle 3f4c5ac71e3b6bc7390f00ddfbe603e52e9786b1 refactor: remove remaining redundant local imports (comprehensive sweep) 9c0fc0b4e82d83b30123f8df9beccc43ebac4dc6 fix(whatsapp): remove shadowing shutil import in cmd_whatsapp (#13364) 2c2e32cc4519973c77b63016316b065c0f656704 docs: document the dashboard Chat tab a0701b1d5a598dd1d3b94038a7bcbb2a3ab559fc fix(tui): replace OSC 52 jargon in /copy confirmation 3d21aee811fad37ac8595aced7e2ba4dc4b345fe feat(web): add Chat tab with xterm.js terminal + Sessions resume button 08c378356d57ba77c1fd88d8cb99e81cca2c4425 refactor: remove redundant local imports already available at module level 29b337bca70fc9efb082a5a852ea2cd5381af1a9 feat(web): add /api/pty WebSocket bridge to embed TUI in dashboard 62cbeb63678e75f0975e936ad2a88c7913468176 test: stop testing mutable data — convert change-detectors to invariants (#13363) 7ab5eebd0365b2cd69daa489f34a05847da65b2a feat: add transport types + migrate Anthropic normalize path feddb86dbdaaa567d2e31457ea48884359ea4472 fix(cli): dispatch /steer inline while agent is running (#13354) b6b5acfc8e51c9da1537d7896d881eddf7022067 fix(whatsapp): remove 120s timeout on bridge npm install (#13339) b4edf9e6be50edb1d348b24791c9131a6fc041c6 refactor(ai-gateway): single source of truth for model catalog (#13304) 70d7f79bef44721ac1f53ef85fdcfc060c7a3c49 refactor(steer): simplify injection marker to 'User guidance:' prefix (#13340) dbb7e00e7eb51bc614f6cd1bb6b53716af9072b5 fix: sweep remaining provider-URL substring checks across codebase cecf84daf75ab5a3841204e0a96b54a4a696d0b1 fix: extend hostname-match provider detection across remaining call sites 5356797f1b427fecbdeebfbff0a8f797374dbbfc fix: restrict provider URL detection to exact hostname matches fdd0ecaf1314f0e318d2c0d715260a0c89ea6307 fix(env_loader): warn when non-ASCII stripped from credential env vars (#13300) 5125a7828364a5466ba52fa0c0a1f7eca701cb58 chore(release): map yukipukikedy@gmail.com to Yukipukii1 3f10c27cc044dadcff108830ea7d86d9be2ce233 fix(gateway/api_server): deduplicate concurrent idempotent requests f81c0394d06785a006d65d0a903b01d5b455e55d fix: correct AI_GATEWAY_MODELS slugs to match Vercel's catalog e1b29c474e8a6029198325e9631b5cf1be37ebd6 chore: register contributor in AUTHOR_MAP for release-note attribution 29f57ec95486aadb91ee12e56a1ad18723fef568 feat: use Vercel's deep-link for ai-gateway API key creation prompt 5bb2d11b079b1a1fb1a3d480536cf3ae8ed2a3d6 feat: auto-promote free Moonshot models to top of ai-gateway picker ac26a460f9eef073eb2dc3c07fdb92e6e0f7354d feat: promote ai-gateway in provider picker ordering 7004374404f80aa07d8fbff950d12dd28f495cb7 feat: curated picker with live pricing for ai-gateway provider b1175387989de289ac39b7bcf33f916ba642b35e feat: attribution default_headers for ai-gateway provider 3988c3c245f3b4dc6e9ba2e6b613847f11b7217f feat: shell hooks — wire shell scripts as Hermes hook callbacks 34c5c2538e4c6a143335d834abff5a94530b412c chore: map Es1la contributor email for AUTHOR_MAP (#13294) 5031aa37a2755c17b022d6c4a3eeafd0c234b50f chore(release): map mavrickdeveloper email for attribution 1fdf9a730cf3ab2cdd03fd64b5b469491042b9cd fix(tools): keep default-off toolsets disabled e00d9630c59a930427db2566a0b623851ff947be fix: thread api_key through ollama num_ctx probe + author map cde72838218b6ec0ac0d6d2008bd019b58a8298d fix: forward auth when probing local model metadata 3821921ef7a556a9c56863603d1d98d5e01cdde8 fix(whatsapp): kill bridge process tree on Windows disconnect 735996d2adc289f635cee76dd3dcb0b3abe4657c fix(tools/delegate): propagate resolved ACP runtime settings to child agents fc8e4ebf8e18593d56096cb317a46037781937f5 Merge pull request #13231 from NousResearch/bb/tui-node-oom-hardening e1ce7c6b1fe29f687ad4c3a34eea2234e8f09c69 fix(tui): address PR #13231 review comments e92d9eb5efa33c9deded5e8a706a1973423b5266 feat(models): hide OpenRouter models that don't advertise tool support 82b927777c3161c541adaa6060a88a48b04f6404 refactor(tui): /clean pass on memory + resize helpers 0078f743e692a56c3fc78ca46508b4bca336ff6b perf(tui): debounce resize RPC + column-aware useVirtualHistory 0785aec4443cc4d2baeac207b14c17f97bcf4707 fix(tui): harden against Node V8 OOM + GatewayClient memory leaks 3368814a3dfe6f61709ae11fa16615969391785c fix(security): redact secrets from context compaction input and output 999dc438996f1a0f25d7d50461c35d441b95593b fix(steer): drain pending steer before each API call, not just after tool execution (#13205) f859e8d88a04f827b33cc91745e9afdf3a77230a Merge pull request #13204 from NousResearch/bb/tui-markdown-intraword-underscore 97c2da2112f7f46527dbc48ef8325df962dbf759 fix(tui): render MEDIA: as a clickable file chip, drop audio directive b17eb9490752a700cf34cc105275e3482fc4db01 fix(tui): don't italicize intraword underscores in markdown 36e8435d3ebcd891738779bd95d34ce9dc9a56d7 fix: follow-up for salvaged PRs #6293, #7387, #9091, #13131 353dc8d3ec57e79f7d249aa0f4e2833cbfdf6653 fix: remove duplicate timezone import in e2e conftest 238313068ac7bf89076fd87f99fa6b33350d92d0 Update env vars for openclaw migration e640ea736c2cadfffd52323a22e5bb17c4e46d83 tests(e2e): test command stripping behavior in Discord 2008e997dcdbdf3ff9df6957d85233dd1a0d3126 fix(discord): handle properly /slash commands in channels 9de4a38ce06eff052d09772b2a975ef029bc042d fix(tui): make "/tools list" show real colors instead of "?[32m" etc. gibberish 11369a78f90378460fda85f5a3f8c8d5b92ec343 fix(telegram): handle parentheses in URLs during MarkdownV2 link conversion ac4e8cb43a6a0122467708fec3d2d013b1e33532 Merge pull request #13183 from NousResearch/fix/nix 1d2615b6022ab68921fb78d5ea0e2bcd9c5b786c dedupe nix cache 5395df1b6c2394d122e95cbd2694f4aec13c34f1 normalize newlines :3 39a80eace7dbe22ae48662292618266a1d6d7739 Merge pull request #13180 from NousResearch/fix/tui-activity-autoexpand-on-error 93b47d962a47852f560d0c77b1ff990e49f0fa9f fix(tui): auto-expand Activity on error 4a424f1fbb8b216681daed3d7036e9e2686c96a4 feat(send_message): add media delivery support for Signal 4dd6d6eeb47fe5c4b9408cb5c558c23b95825aa6 nix: run CI on all lockfile changes 761c113427c084ca6cb3e394adb6f469c0d61118 nix: automatic lockfile fixing to keep main building with nix (#13136) cc1afef4f3f90e643ba99985c11fd4bc4e6d54c0 feat: add moonshotai/Kimi-K2.6 to HuggingFace provider models (#13169) 5a2118a70b04f51e85f956aafd6be036c0b2084e test: add _resolve_path tests + AUTHOR_MAP entry for aniruddhaadak80 4c40ec96e65accfddd39541d8ec54248467fe9c2 fix(file_tools): resolve relative paths against TERMINAL_CWD for worktree isolation b65f6ca7fe0ab59055702a7ad5cd7d8eb94582f6 fix(telegram): actionable error for DM topics when Topics mode not enabled (#13162) 3cba81ebed0d86fedd56913ab341f2d93d539f49 fix(kimi): omit temperature entirely for Kimi/Moonshot models (#13157) c1977146ce763e0a5d01df9e4f2adeb09f1dd466 fix(model_switch): register custom: slug in seen_slugs for Section 3 providers 89070b8f9f93d5c33f02746817362b033c15e89d fix(tools): reap orphaned cloud browser daemons with hermes session prefix 6d58ec75eee9918c23d468813dd5f50f2c0c2f11 feat: add kimi-k2.6 to kimi-coding, kimi-coding-cn, and moonshot providers (#13152) f01e65196a861e0325f91cdbe10309d2cac537d7 chore: add MassiveMassimo to AUTHOR_MAP 7972ff2a2cd2b56358ae7596d9ad4218b80b9984 feat(whatsapp): add dm_policy and group_policy parity with WeCom/Weixin/QQ adapters ff56bebdf3fe32bbc889e404bb357db2289836d5 refactor: extract codex_responses logic into dedicated adapter c86915024e23be0572990b4ce6809f2f8af1c677 fix(cron): run due jobs in parallel to prevent serial tick starvation (#13021) d587d62ebab935a86dd6b103552726f77e719a28 feat: replace kimi-k2.5 with kimi-k2.6 on OpenRouter and Nous Portal (#13148) ed201cce9cd98fe83433e38ea93fbf13bb069862 fix(kimi): drop client-side temperature overrides for Kimi/Moonshot models f7587dd445deda6ee51fee8d5c210a1fcd33d672 chore: uptick 688c9f5b7c3cb19aebb6843973ac57ed570ebc4a Revert "nix: automatic lockfile fixing to keep main building with nix" 6f079933cbdd4eef8d22b538755875b914b04973 nix: automatic lockfile fixing to keep main building with nix ab37132e59c72cda4627e3994b085041a9689325 Merge pull request #13105 from NousResearch/bb/tui-elapsed-lastmsg-8541 f1f438e7f9ad09977b47528c32a740250f5ddbb8 refactor(tui): drop done-in sys line; FaceTicker counter only 2de1aad0286de37042bffd0edff3e33066920570 refactor(tui): turn elapsed lives in FaceTicker; emit done-in sys line 093aec5a4c66997ddf053bebc8d7720bf673facc Merge pull request #13064 from NousResearch/fix/right-click-paste bf5e2e49c20446a1743626b32d24955ea9ad8672 Merge pull request #13103 from NousResearch/bb/tui-light-mode-11300 52f8d5831f4afba0fe27a88995dc360d8533d72a chore: kill comments 9910681b859fecf85f37a76d02ae6e88dd148ccc refactor(tui): move last-msg elapsed from status bar to prompt right-edge 1e7de177e80e05d56800aa49aac21c20e18a2293 feat(tui): show time-since-last-user-message alongside session total (#8541) 6a06973b0d0f64a1c44719330d611d79d3d0c6a7 fix(tui): route update-behind banner through theme + auto-detect light terminals (#11300) da032998b4141fd99c1c8fc3d9be5b36a7d77e77 feat: add transport types + migrate Anthropic normalize path b7e71fb727dc91979ba47f6a1e6b17a86f4841ea fix(tui): fix Linux Ctrl+C regression, remove double clipboard write e388910fe66c8fad36a20d41e63feccb4dd63ec0 fix(tui): make mac copy use pbcopy 1d0b94a1b9f02efff5d6f1074c46c2d76680b667 fix(tui): reserve control on macOS 88396698ea465c83e9851c3ea317a277b3531a69 fix(tui): enable clipboard hotkeys in mac input fields c3af012a3546bccf226db76021bac3f692d66132 fix(tui): restore clipboard hotkeys in clarify mode 8c9fdedaf52a50379e3fea35f0935e10b85c76e7 fix(tui): use command shortcuts on macOS 3030a9fcf9e6bac133bc59d8334928d0ed0c0935 fix: enable right click to paste dcd763c284086afd5ddee4fdcd86daaf534916ab Merge pull request #10125 from arihantsethia/feat/dashboard-skill-analytics 720e1c65b217e6ce716386418719b39ebf230d67 Merge branch 'main' into feat/dashboard-skill-analytics 3273f301b7963717f97b5efc8184b6a904b89e70 fix(stt): map cloud-only model names to valid local size for faster-whisper (#2544) 0613f10defe507242f17f89d81bbb2d15deb2df9 fix(gateway): use persisted session origin for shutdown notifications 9725b452a1d012e90377754e7cf759e11e064fb5 fix: extract _repair_tool_call_arguments helper, add tests, bound loop 9eeaaa4f1b68e0fe1c8d2013287f2972f31c1dc8 fix(agent): repair malformed tool_call arguments before API send 570f8bab8fd9db2f48bed2990cc820351bc10f21 fix(compression): exclude completion tokens from compression trigger (#12026) 42c30985c75cdc8f6c964f0d4a68f085f9278b54 fix: enable plugins in config.yaml for lazy-discovery tests a5e368ebfb3a318e483a0e52382368a7369bb797 fix: publish plugin slash commands in Telegram menu 34ae13e6edcb1809e3a83ba46a7f4aae416fc2cb chore: add jplew to AUTHOR_MAP 9fdfb09aed504f81390b62cb16540bb8290b75e2 fix(telegram): cache inbound videos and accept mp4 uploads aebf32229bfec3d16097fd4d84e37f6690f0da93 fix(session_search): restore same-session context when message ids are interleaved 00192d51f1213625b8b89a78d7e03efbaf1d78b6 fix(install): quote PYTHON_PATH and UV_CMD for paths with spaces on macOS (#10009) ed76185c15eed56c2f7103bb91e1a6b9cc1d35ac feat(whatsapp): implement send_voice for audio message delivery 23b81ab243d386b62eecddf27d46cf7cee6f6cc6 fix(cli): send User-Agent in /v1/models probe to pass Cloudflare 1010 6cdab703200365986b76cb1923725e20828bc38d fix(batch_runner): mark discarded no-reasoning prompts as completed (#9950) 7242afaa5f60b50871e6e182360bfba537ae5fe9 chore: defer WhatsApp bridge install to first use (#12992) 2cdae233e2a869656b194baa9be0bc6eef6d988f fix(config): validate providers config entries — reject non-URL base, accept camelCase aliases (#9332) bc2559c44d18dfb6f1a775b32dee6a867265bb0f fix: remove codex spark model support 70111eea247bc05616e30ddff5258fb9fd98b1b5 feat(plugins): make all plugins opt-in by default a25c8c6a56f89e7de615f8620de864b631b8da40 docs(plugins): rename disk-guardian to disk-cleanup + bundled-plugins docs 1386e277e510ba8593a0de1a9599c4f04206bea5 feat(plugins): convert disk-guardian skill into a bundled plugin 32e6baea31f96b064ce0d847534c507d006858b6 Update disk_guardian.py aeecf06deed00e6963d927f7d70c4d8d63b5af12 Update SKILL.md 068b22488799a4e892ef3466667e2628748934a2 feat(skills): add disk-guardian — autonomous cleanup of Hermes temp files and disk optimization 9a57aa2b1ff853405707048f296228a8c72d0095 fix(docs): unbreak docs-site-checks — ascii-guard diagram + MDX `<1%` (#12984) e04a55f37f8414a78da0a3c8bfa4fccd3a5e365e fix(xurl skill): fix default app pitfall in setup, add agent detection and troubleshooting (#12985) f683132c1d544e8d6fb09c0d961e0fb73be28c0a feat(api-server): inline image inputs on /v1/chat/completions and /v1/responses (#12969) 3218d58fc5987a05e1c3c8bd7c9cf5aed3f0cd30 chore(release): add Swift42 to AUTHOR_MAP b68bc0ad33eaa9ef8b7b2f1b86e07693e2f6204c Update SKILL.md d41ca86f741fd4921c9d084b3e56b16be319e0ac Update duckduckgo.sh b277962dcc21968a8967769a899f45495742bfb7 refactor: extract codex_responses logic into dedicated adapter 04068c5891ada4052088ed1febabd9384c87c649 feat(plugins): add transform_tool_result hook for generic tool-result rewriting (#12972) 9f22977fc0d2d6de5ff4d0a1a8e4d4ae3a00ea52 chore(release): add haileymarshall to AUTHOR_MAP 6b408e131c48d90d44b5f1a33c9da26b70cdc7a1 fix(gateway): pass session_key (not session_id) to active-process check during prune eba7c869bb713f5e40ae5f3ad5e314fcbef3ace3 fix(steer): drain /steer between individual tool calls, not at batch end (#12959) 22efc81cd7f660bb3192ccb91aef91dfb22ca38d fix(sessions): surface compression tips in session lists and resume lookups (#12960) 0cff992f0ab0fefc8b9e835ce245f06bf52391cd chore(release): add alexzhu0 to AUTHOR_MAP 64a1368210f0bf876894977474aae5195184e806 fix(tools): keep SSH ControlMaster socket path under macOS 104-byte limit 649ef5c8f1b9df1f0afd17f42c3149f86259f266 chore(release): add sjz-ks to AUTHOR_MAP 2081b71c427ee6481cd15fcab0962dc0cbd9bfc1 feat(tools): add terminal output transform hook 9d7aac7ed25ba1a4ac4a7dfad649f32f29a492af test(gateway): lock in /yolo /verbose bypass and /fast /reasoning catch-all afd08b76c5571c8dcd16a1b86af743a87f13688a fix(gateway): run /yolo and /verbose mid-agent instead of rejecting them be472138f3d3d2075c1ec54e7a9f1d70c2c81ccb fix(send_message): accept E.164 phone numbers for signal/sms/whatsapp (#12936) 8f4db7bbd576312a542b5b65f39ddd5737209ba1 chore(release): map withapurpose37@gmail.com -> StefanIsMe 654d61ab6f76798a724ed37801e0c3b50ac9f469 feat(status-bar): per-prompt elapsed stopwatch a2b5627e6d06e9b493742daf0b448682b85eb915 feat(cli): add editor workflow for drafts 09ced16eccb98309a8ffd8a912c2ee285a965707 fix(cli): apply markdown stripping to background-task and /btw response panels 177e6eb3da2adb05e0e0b54d6192be36d8e1cdff feat(cli): strip markdown formatting from final replies 22655ed1e6583671c70f1d88b67777f5e9dc947c feat(cli): improve multiline previews 261458630663bfd87eaa8d0cf36d232977213ab3 chore(release): add lumenradley to AUTHOR_MAP 93f9db59b22e2c2cb0f94f8fb0d30a350acc343b fix(doctor): update config validation for current auth.py API 954dd8a4e08af7bd6d4060739cf827a8da1d2793 fix(doctor): catch OpenRouter 402/429 and validate model/provider config c470a325f7136a9ef68209c03ce1d707e46e1ddf chore(release): add Linux2010 and elmatadorgh to AUTHOR_MAP 1ec4a34dcde82d38080ddb2b4f439c9244e47937 test(error_classifier): broaden non-string message type coverage b869bf206cf0285730729efb37529a3c5b8d9330 fix(error_classifier): handle dict-typed message fields without crashing acca428c81509e0369a453601960a1c882925c79 chore: add haileymarshall to AUTHOR_MAP 49282b6e04ba2b62d7cccfd4e4e0ebd63a17c7a3 fix(gemini): assign unique stream indices to parallel tool calls d990fa52edcd58dca42fd4715dc47ca959d7212d docs(feishu): tighten processing reactions section 520edd34992595c3eb316d00c0d4f93eec8f8b7c feat(feishu): show processing state via reactions on user messages 60236862eee0eb80155618b8e4197bb15bfe03c1 fix(agent): fall back when rg is blocked for @folder references 8a6aa5882e5f7f7bb1619e450c1d1f729175a241 fix(cli): sync session_id after compression and preserve original end_reason (#12920) f23123e7b486d837c5a6b71ab1e7bccdce7fad20 fix(gateway): prevent scoped lock and resource leaks on connection failure a5063ff105dd154b8d250f09f23611a1416ca9e0 docs(providers): drop stale 'TODO: Phase 4' from get_provider docstring (#12902) 2d59afd3da04812583ecbbf3be83539678a947c4 fix(docker): pass docker_mount_cwd_to_workspace and docker_forward_env to container_config in file_tools 4c50b4689ebbb9bdc150920dd53007995ac88219 fix(gateway): make Telegram DM topic config writes atomic 4f24db4258d686015f445096458eeaf3c4bc4bf8 fix(compression): enforce 64k floor on aux model + auto-correct threshold (#12898) 03e3c22e8612fae60396cab528fb4cfcba3d009f fix(config): add stale timeout settings 440764e01316d6207398154ac98afa18e2407c23 chore(release): add salt-555 to AUTHOR_MAP 12c8cefbce3cb2e5b12b72b501cda7b481b61dfc fix(backup): handle files with pre-1980 timestamps afba54364e83372a95e3d2dbd6f5e2c711c51943 docs(config): document session_search auxiliary controls 6ab78401c9c8069fb1fc4241f144b6098dae282a fix(aux): add session_search extra_body and concurrency controls 904f20d62291217f5cd51415f3943789aaaff3af fix(tui): stop empty idle dequeue from triggering ready-state OOM edf1aecacd095508b45e16ca38ae7ddde44cf9ad chore(release): add cresslank to AUTHOR_MAP e96758291bf71eda38a7d473cd8204a370539997 fix(signal): normalize direct recipients to UUIDs fd5df5fe8e7c6d9b70a707ea14f95ffc40fdcff6 fix(camofox): honor auxiliary vision temperature\n\n- forward auxiliary.vision.temperature in camofox screenshot analysis\n- add regression tests for configured and default behavior 9d88bdaf1157d7d1e3001afc456e844e1a6c864e fix(browser): honor auxiliary.vision.temperature for screenshot analysis\n\n- mirror the vision tool's config bridge in browser_vision - add regression tests for configured and default temperature forwarding 098d554aaccd1b0705574e828e281e604921aa9a test: cover vision config temperature wiring\n\n- add regression tests for auxiliary.vision.temperature and timeout\n- add bugkill3r to AUTHOR_MAP for the salvaged commit 088bf9057fc879a49dd0d9fc1e2a0047a8f2aa09 fix: vision tool respects auxiliary.vision.temperature from config (#4661) e485bc60cd9de56077a0bd219e1a4c5a95d3c956 test(kimi): cover api.moonshot.cn direct-call regressions\n\n- add run_agent coverage for the Moonshot China endpoint\n- add sync/async trajectory compressor coverage for api.moonshot.cn 9b60ffc47fa1ae675a497260a1905540fff771fc fix: include api.moonshot.cn in public API temperature override (#12745) 8155ebd7c4fdd523fe42bc4f434814250fe42296 fix(gemini): sanitize tool schemas for Google providers a33e890644d78e76ad0e0509e558cec4117324d3 fix(acp): silence 'Background task failed' noise on liveness-probe requests (#12855) e330112aa8dcbe15a0b84cb18c59a7f3d2a547a1 refactor(telegram): use entity-only mention detection 1e18e0503fbf87635d527f28c2ce3efc863dabf9 fix(telegram): use word-boundary matching for bot mention detection (#12545) 5157f5427f19488b31c6fdebbacd15d798ce7f63 chore(release): add jackjin1997 qq email to AUTHOR_MAP 6c0c62595278866bd1094a4cd55c809b084bbfc6 fix(gateway): accept finalize kwarg in all platform edit_message overrides fc5fda5e381cb46b1956a47514cccec329441770 fix(display): render in memory previews instead of empty quotes (#12852) 6a228d52f707ab414d810407a5a57adb734e4488 fix(webhook): validate HMAC signature before rate limiting (#12544) 35e7bf6b005ad9f1e833271fb336c6699f4f1211 fix(models): validate MiniMax models against static catalog (#12611, #12460, #12399, #12547) a4ba0754ed7d9bc583b60309fbc4ba8509411e85 test: drop platform-dependent _resolve_verify test file b53f74a4899f5e09caa32d074c63d579d72b39d7 fix(auth): use ssl.SSLContext for CA bundle instead of deprecated string path (#12706) 65a31ee0d54484b9b65e2bf1ea3fd182ccadb6ab fix(anthropic): complete third-party Anthropic-compatible provider support (#12846) 491cf25eefef70b4aef83b1dadbb0942984590d7 test(voice): update existing voice_mode tests for platform-prefixed keys 52a972e9273c32a3912fa4a9b6df2ff2be532767 fix(gateway): namespace voice mode state by platform to prevent cross-platform collision (#12542) be3bec55bef2219682bfc56bef67851b834c0847 chore(release): add draix to AUTHOR_MAP 1ee3b79f1d8f8ea458c5b3c7d9fc325a96d69fc7 fix(gateway): include QQBOT in allowlist-aware unauthorized DM map 7282652655319a6ed86cf22e3ccfdfc9f195d696 fix(gateway): silence pairing codes when a user allowlist is configured (#9337) ca3a0bbc54c0d895ddc78a107deb52f9ea041b09 fix(model-picker): dedup overlapping providers: dict and custom_providers: list entries 519faa6e766ecc31b8aaceea1bd74fa807e72132 Merge pull request #12821 from NousResearch/fix_broken_docker_test 48cb8d20b25885a0899aa3dab110d43ce36cfaf4 Fix for broken docker build 09195be9796cfde0fd71583697c31f4dadcf4a64 docs: repoint tui.md skin reference to features/skins.md bdfb0604adb206d192553064f3b69291133030e6 chore(docs): remove stale documentation files 1cf1016e72fd8ca231f2c1c2230a0b53271d3f7b fix(run_agent): preserve dotted Bedrock inference-profile model IDs (#11976) 323e827f4aaedfa22236a7fd8e15e0db98223017 test: remove 8 flaky tests that fail under parallel xdist scheduling (#12784) b2f8e231ddc2baf0f3c919e375e126f7e4889a67 fix(test): test get_update_result timeout behavior, not result-value identity ad4680cf74d4252bf2b67a6b5fdbd0edd24a5427 fix(ci): stub resolve_runtime_provider in cron wake-gate tests + shield update-check timeout test from thread race c9b833feb3536a12bc84cbf7f945119fcb76296c fix(ci): unblock test suite + cut ~2s of dead Z.AI probes from every AIAgent 88185e7147ce7620d06192c32834f29a7e057907 fix(gemini): list Gemini 3 preview models in google-gemini-cli/gemini pickers (#12776) 5d01fc4e6f20ebedc5e5e4862de66a8709c3adeb chore(attribution): add taeng02@icloud.com → taeng0204 50d6799389a36671751954cb0008a2a3cfd0b322 fix: propagate kimi base-url temperature overrides 6f79b8f01daff60dd75450b8139fb4d03e83eaf2 fix(kimi): route temperature override by base_url — kimi-k2.5 needs 1.0 on api.moonshot.ai 0d353ca6a89c8c29ccee4e88bdaa9d580fcfd5eb fix(tui): bound retained state against idle OOM 424e9f36b0fff2f34a0037f1df22996cc5a659aa refactor: remove smart_model_routing feature (#12732) 5f0a91f31aeb3db9ca0a3cca2fdc045974333d6c Merge pull request #12594 from NousResearch/fix/design-system-dashboard b8d00c6f944115f530a896df3f3ff0f952d9f40c feat(security): URL query param + userinfo + form body redaction ef1a7b690dc71444cb7f7896c369bfd8637b008a fix(display): strip standalone tool-call XML tags from visible text b0e398ef7ca9181adaea2d47bf6e1449f713d02f fix(anthropic): guard max_tokens against non-positive values 72d53e14aef8590deb7c4001449b61fc8be6b385 fix(compaction): redact credential-like values from summary pipeline 73d0b083510367adec42746e90c41ace16c0afb2 docs(discord): document that free-response channels skip auto-threading (#12728) d40a828a8bb508de2e8cf6db88b4ad1d775f554a feat(pixel-art): add hardware palettes and video animation (#12725) abfc1847b7bc6f90e23fb5ab9703d518185eb288 fix(terminal): rewrite `A && B &` to `A && { B & }` to prevent subshell leak af53039dbc47561293fc7d35f367f6451ae672e0 chore(release): add etherman-os and mark-ramsell to AUTHOR_MAP d50a9b20d27eb8842c9f93f721ed728157b954b2 terminal: steer long-lived server commands to background mode a3a49324052c262c44954b229b781e9703ae5845 fix(mcp-oauth): bidirectional auth_flow bridge + absolute expires_at (salvage #12025) (#12717) a47f5d3ea2e31ffa133596ad3397af2b44324e0a ci: bump test-job timeout from 10m to 20m (#12718) 19db7fa3d1ffd4a895c7c9b7ae7831f81f5ac87c ci(security): narrow supply-chain-audit to high-signal patterns only 2f67ef92eba183026c459d4e8be2f23e885d68e1 ci: add path filters to Docker and test workflows, remove supply chain audit c1949e844b68adfb38a7367b2299e9f5a5cc922f fix: imports ddd28329ff54ec2e6eb3911f531deff299d6b7bd fix(tui): /model picker surfaces curated list, matching classic CLI (#12671) 823b6d08ed1a1834731a441a8e85a9583f02e77c fix: imports cf292d258aba3428241f0f602c6eea09804d784b fix(workspace): address code review findings on parser layer 11618e99280a22c50c64a630e7c94ce76835c3b0 feat(workspace): add [parsing] extra with markitdown deps 91b2c197620611f1517cc4d1e0d5dbe5e8873fc4 fix(tests): stabilize parser tests under xdist parallelism d431a200c0d172a38bb5f2973e373da7bc04cb5b feat(workspace): wire parser into discovery and DefaultIndexer c938e2817fa5a0cdb8ba89999dd76d8e3544a4cb feat(workspace): CompositeParser and build_parser() factory e9ab7c7f6855475aaef9e6e218477a5acd62b6c2 feat(workspace): PandocParser backend 5008f123ae29ea0616a018a211dd67cb8435ee56 feat(workspace): FileParser ABC and MarkitdownParser ec0fa5a2be1e95b5ac7c5b84298b0b60f8800c7b feat(workspace): add PARSEABLE_SUFFIXES and ParsingConfig fe80e118b70f38f5492b0e9d5e8e02676d5bf5b0 feat(workspace_tools): sharpen workspace_search description 01462d5918ee577ab8057b761934903c68c9d21c style(workspace-guidance): drop redundant set() + narrow None in tests b201b1f38fb3eb682aca144c0f94fc84d4bcca84 feat(run_agent): inject workspace guidance into system prompt 3c850b8ffcd260cb20eaa5b3a3a9fcef6b054f60 feat(prompt_builder): add build_workspace_guidance assembler f7aa8b15459a5e687968fccc88535188ff1ac452 ci: add path filters to Docker and test workflows, remove supply chain audit e5492dc00257db368840b0eb4cb9ea9f8150372f chore(docs): remove stale documentation files 4d6e51ad1db960800d2f2351a861101632c856d6 feat(gateway): wire /workspace slash command through messaging platforms d393104bad62700d8e33de003502b3f74854151a fix(gemini): tighten native routing and streaming replay 3dea497b2068ff67cbc7250e3a2b5d6e48bc254f feat(providers): route gemini through the native AI Studio API aa5bd0923214681829b4d1b62598a58b66bfd1a2 fix(tests): unstick CI — sweep stale tests from recent merges (#12670) 62116ff3c94309f9edaa1e006cd6e780f66c6a25 feat(semtools): wire list_files, delete, and richer status fba9e024740c3ecd803f07c652741f2d40061092 fix(gemini): honor explicit aux endpoints and harden SSE parsing 15f623fd94022cfc8dafd05042d380ca59399999 Merge remote-tracking branch 'origin/main' into sid/workspace-salvage d2c2e344691a64ce6ddeb140d50b8c422e71010a fix(patch): catch silent persistence failures and escape-drift in tool-call transport (#12669) 263c357d06da5b56be71d344d9590f3395af8187 feat(workspace): add CLI commands, agent tools, and slash commands 60fd4b7d16c4b7c517ce16ce5dda500760dfdac1 fix: use grid/cell components 7aa1d37598b0b9179a308d318a50239b5ef3007a fix(gemini): tighten native routing and streaming replay db60c982765c5be5838de45c35851bcb1d27bc83 docs(memory): steer agents to save declarative facts, not instructions (#12665) cca3278079326bf043092990292a08b60dc30358 fix(codex): pin correct Cloudflare headers and extend to auxiliary client 4d0846b64053ea0050e11e77246d76089072abcf Fix Cloudflare 403s for openai-codex provider on server IPs 91eea7544ffe41cfa820641042e68749f2268aa2 refactor(creative): promote pixel-art from optional to built-in skills 13febe60ca26bc73650688bd3eeb627a7ffedd8e chore(release): add dodo-reach to AUTHOR_MAP bbc8499e8c9d7a26c1add596c30c3d20245fcb9f refactor(creative): consolidate pixel-art skills into single preset-based skill 06845b6a03087a61e2931bfbcdc199e0f23ec87b feat(creative): add pixel-art-arcade and pixel-art-snes skills cad3f8a37f27d7950fa1f5f4ebf5ee4a99ae7f11 docs(site): disable highlightSearchTermsOnTargetPage to keep URLs clean (#12661) ef73367fc52108d54488b1c4ed4d2d378703c7d0 feat: add Discord server introspection and management tool (#4753) d48d6fadff6a2135110925a807a9d076c7ae958c test(run_agent): pin proxy-env forwarding through keepalive transport 023208b17a5f6fb96881176c83621b1a16af177e fix(agent): respect HTTP_PROXY/HTTPS_PROXY when using custom httpx transport eb247e6c0aba6f5cede865ad4fc7df864b830757 chore: add bingo906 numeric qq email to AUTHOR_MAP 014248567b23643cf23c1e98aa779836ed429fdb fix(feishu): hydrate bot open_id for manual-setup users 2d54e17b82486eff4c389eb542d68330b808d2c2 fix(feishu): allow bot-originated mentions from other bots cc6d295503fb9dca369c3301fa4770974d414718 feat(providers): route gemini through the native AI Studio API f336ae3d7de8056352383105d6d23bd554ce8b10 fix(environments): use incremental UTF-8 decoder in select-based drain 0a02fbd842bd951225369068014f37238c5cddc3 fix(environments): prevent terminal hang when commands background children (#8340) 611657487f5e925f2079a2e74ad6f06fd8dc4739 docs(providers): call out Bedrock as not covered by request_timeout_seconds c11ab6f64df6754c68421e3c99568d1259ea63aa feat(providers): enforce request_timeout_seconds on OpenAI-wire primary calls f1fe29d1c368f7930430a6a6c2c262764e3ae486 feat(providers): extend request_timeout_seconds to all client paths 3143d3233077c3ff798216c8df15bcd914a7bda9 feat(providers): add per-provider and per-model request_timeout_seconds config fd119a1c4a9ac6af3f29ae1ae0f3a3fb0dfdccbb fix(agent): refresh skills prompt cache when disabled skills change 7e3b3565740b4bc2fe62d267f5bb3e894b68bdc5 refactor(discord): slim down the race-polish fix (#12644) 5a23f3291a2a028f807c4f606f4a01eb81ff32c1 fix(model_switch): section 3 base_url/model/dedup follow-up bca03eab2080dd42ab52a2427d1c26fa6983edbd fix(model_switch): enumerate dict-format models in /model picker 13294c2d1831011269d63c2bed76a5e8f95fb250 feat(compression): summaries now respect the conversation's language 7bd1a3a4b1515ce0992e7099fa70ce33e1dd9ec5 test(compression): cover real init feasibility override 045b28733e09ba4c349f77675eafafab5bbeff60 fix(compression): resolve missing config attribute in feasibility check 6af04474a393753328734aa622e3edfa62d3c0fb Merge pull request #12560 from NousResearch/bb/tui-gateway-rpc-pool 923539a46b801a1ba993fae13f3a02eb91d51c7b fix: add nous-research/ui package c20577b6c0de02e82d21a4a55490fdbab7aca892 fix(zai): autodetect endpoint during setup flow d32e8d2ace98a24ce22d014ddf8da44812aee37a fix(tui): drain message queue on every busy → false transition 393175e60ce119f654d15dad489a8e282a532d24 chore(tui-gateway): inline _run_and_emit — one-off wrapper, belongs inside dispatch 596280a40bc2807641a42625d172d97af30a841c chore(tui): /clean pass — inline one-off locals, tighten ConfirmPrompt ab6eaaff2610ec236edbbe4d7729c103b816e573 chore(tui-gateway): inline one-off RPC_POOL_WORKERS, compact _LONG_HANDLERS a6fe5d08727c9bb2486709ba3357137fbb49a321 fix(tui-gateway): dispatch slow RPC handlers on a thread pool (#12546) c74030a11d531fe88a3c07d63c3113a7c2943ad7 refactor(process): extend preexec_fn→start_new_session swap to remaining Popen sites 94a199040422c5bb91523bf844ce10194d854aff Update local.py #8340 a521005fe5e5885b23c878a5c5fdc2e1b361a4da fix(discord): close two low-severity adapter races (#12558) c567adb58abbaa0fd1f775ec27d1754efacca83c fix(tui): session.create build thread must clean up if session.close races (#12555) 37524a574ec94adcd40e65d4cbb847e84153aa92 docs: add PR review guides, rework quickstart, slim down installation 4b8272f549c446d06395f6aec19a141b817b9810 feat(browser): add browser_dialog for native JS dialog handling d5fc8a5e00dfd396cd188f605ff2abc76fce3c2e fix(tui): reject /model and agent-mutating slash passthroughs while running (#12548) a3b76ae36d37124638b3e547b608b266f230c679 chore(attribution): add AUTHOR_MAP entry for Mibayy ea0bd81b84e460368c35432472ef6e8cbdf6c541 feat(skills): consolidate find-nearby into maps as a single location skill de491fdf0e4a35a91b447f8f077af4961a59b7b3 chore: remove unit tests from maps skill 7fa01fafa557f4cba59eb95a61a7343559bc2b44 feat: add maps skill (OpenStreetMap + Overpass + OSRM, no API key) 206a449b2991bd9e2b943483ae785a96ec5ce6a2 feat(webhook): direct delivery mode for zero-LLM push notifications (#12473) 66ee081dc181fc731994f50bb99b0a52a2761310 skills: move 7 niche mlops/mcp skills to optional (#12474) 957ca79e8ed2fd1377553d70b9a79232f84b122e fix(feishu): drop dead helper and cover repeated fenced blocks a9debf10ffd61e9e502a25b203987335671a805d fix(feishu): harden fenced post row splitting cc59d133dc52197a0388f2f3b33911fc15c6c74e fix(feishu): split fenced code blocks in post payload 4f0e49dc7bd059fada5c6110b7bb14a6fb3b5037 chore: add sgaofen to AUTHOR_MAP 4b6ff0eb7fa287695fa147e7c7622dae4ca5dd51 fix: tighten gateway interrupt salvage follow-ups 8466268ca58fe1422cadcb6b134b18bc0860a597 fix(gateway): keep typing loop overrides backward-compatible 150382e8b79018f0967724ee10403409fdec0060 fix(gateway): stop typing loops on session interrupt b05d30418d1acce913a1b9a768a3330cf63d8341 docs: clarify profiles vs workspaces ff63e2e005ebbbfade9542437713b699624ed254 fix: tighten telegram docker-media salvage follow-ups 588333908c52b9eb372fdd2a411062f14d797094 fix(telegram): warn on docker-only media paths b668c09ab2e4a4edeceea04da9521329669b9391 fix(gateway): strip cursor from frozen message on empty fallback continuation (#7183) 62ce6a38ae8de84b7af5772672009f11ada1ef0e fix(gateway): cancel_background_tasks must drain late-arrivals (#12471) 1d1e1277e496f3b8d2742e4c8ce83b47dde5fa23 fix(gateway): flush undelivered tail before segment reset to preserve streamed text (#8124) e0171314030fa5fad2e7e7e96c116c98a0178e33 feat(cron): add wakeAgent gate — scripts can skip the agent entirely c94d26c69bf57539f8a53936854b1a8925d70262 fix(cli): sanitize interactive command output 175cf7e6bb4e629a5f121c8e6f3a56a5903105b7 fix: tighten quiet-mode salvage follow-ups cd59af17cc095da08b223a9378c4a1621f7c0393 fix(agent): silence quiet_mode in python library use 361675018f436a95c0353a2755d7cfdd3b0ac44a fix(setup): stop hardcoding max-iterations copy 3ade655999afe1f88e00fd3219bc141988e8c0d3 fix(whatsapp): log allowlist drops in bridge 7c10761dd2a2c4e79485f0817011eef6e52dae59 fix(discord): shield text-batch flush from follow-up cancel (#12444) dca439fe9213f86c83fdd43f70bf6e1750902b54 fix(tui): scope session.interrupt pending-prompt release to the calling session (#12441) ce410521b3d21d71f28e0dd041df872ffbd8344f feat(browser): add browser_cdp raw DevTools Protocol passthrough (#12369) d66414a844b780467b33ea9c861cf07c098ab73b docs(custom-providers): use key_env in examples eba720fc81d6366c58735de953d59a7af7b6c1d0 fix: token accounting fallback + reasoning-aware compression 7b1a11b97179222c3fc9a721d614eae2d5f4c9f3 fix(memory): keep Honcho provider opt-in 0a8d48809f15157431f373e0add4f1a1be76af4b chore: add LeonSGP43 numeric noreply email to AUTHOR_MAP 21d5ef2f1742b4a8bd5fb69c07eda79cefdc57ab feat(honcho): wizard cadence default 2, surface reasoning level, backwards-compat fallback 5b6792f04d973f996fcb981ae570e674472c3d4d fix(honcho): scope gateway sessions by runtime user id ba7da73ca931bcdaf64de294c8c9551e0b3615b1 test(honcho): drop two first-turn tests subsumed by prewarm + smoke coverage c630dfcdac4a64a3d55aa8724c7ca3bdd7e64b85 feat(honcho): dialectic liveness — stale-thread watchdog, stale-result discard, empty-streak backoff 098efde848a1253033fedf04e8184ef843115e11 docs(honcho): wizard cadence default 2, prewarm/depth + observation + multi-peer 5f9907c11616f30a03356900b8831b1fc98e7d31 chore(honcho): drop docs from PR scope, scrub commentary 78586ce036baab8c294e55a1ef0a279c47a447ed fix(honcho): dialectic lifecycle — defaults, retry, prewarm consumption bf5d7462ba33028b34cbbf500ca268b8684a0e9c fix(tui): reject history-mutating commands while session is running (#12416) 9ed6eb0cca9377cd8f080fe0b721c189fe6b8cdf fix(tui): resolve runtime provider in _make_agent (#11884) 3a6351454b92c0d4b9f54e6eef43e3ff187ad828 fix(gateway): close pending-drain and late-arrival races in base adapter (#12371) 762f7e97965ab9b19d6672724e90660921196569 feat: configurable approval mode for cron jobs (approvals.cron_mode) b02833f32d4b22d989c668a0d6cb2f1cf3b57f75 fix(codex): Hermes owns its own Codex auth; stop touching ~/.codex/auth.json (#12360) bd01ec7885f9cc05ef44d8e3e71ce043617b0dda fix(cli): strip all reasoning tag variants from /resume recap ec48ec5530871edda11e068d0f03c16985f43455 fix(agent): strip blocks from stored assistant content 9489d1577db1b05e869b9d842ccdec3197f1954b fix(agent): strip unterminated blocks from visible content 79c5a381c59c948a7334988657b5bf19c4765a32 feat(uninstall): offer to remove named profiles when uninstalling from default 3fe0d503b626965bffa0c3665b1257acef3c165c fix(uninstall): properly stop and destroy gateway on hermes uninstall 1e5f0439d9cd037d383cf8cc786e38611d3b9bd7 docs: update Anthropic console URLs to platform.claude.com 2a2e5c0fed1e341c3250825ad7b5bee4190d1a71 fix: force relogin on 401/403 Codex token refresh failures beabbd87efcb84928b7e6387ebcfba15fbcec96a fix(gateway): close adapter resources when connect() fails or raises (#12339) 632a807a3e528169bd39baf8fc3aa1d641580e96 fix(gateway): slash commands never interrupt a running agent (#12334) 41560192c4e4e8d5a51141b39907f01cd977524f chore(attribution): add AUTHOR_MAP entry for nish3451 aa5f89d3eaadcd05420aab5adf709221abf018a9 test: add coverage for from_user=None DM fallback 1a9a2d7fe81b32fddd6ec5c1eaf167caded3f528 fix(gateway/telegram): fall back to chat.id when from_user is None in DMs 139a6da67c4c13fed41cadbd53b82c0e2ad57083 fix(skills): touchdesigner-mcp setup.sh — correct pgrep match + suppress stray yaml output 6b31e20894b6e1b9b369b970d91df0ffb6ce83ac chore(skills): touchdesigner-mcp follow-ups 11ee87e6057fe2916127bd6595f40398c4cdaa1b chore(attribution): add AUTHOR_MAP entry for kshitijk4poor@gmail.com 6d2fe1d6249122a3198447118d412eb20726515d feat: rename touchdesigner -> touchdesigner-mcp, move to optional-skills/ 6f27390fae352cc4e2aa5f41f1cbd35139656fb5 feat: rewrite TouchDesigner skill for twozero MCP (v2.0.0) 7a5371b20d2e8226a3ec61f0320b4cb57d68e88f feat: add TouchDesigner integration skill c49a58a6d0f81d7e77db20c259ea7115a36d49da fix(gateway): mark only still-running sessions resume_pending on drain timeout (#12332) cb4addacab4679914878ceaab3be7bd1011ffb7a fix(gateway): auto-resume sessions after drain-timeout restart (#11852) (#12301) ad99e323713266196f7129158478da402a02ebdc Merge pull request #12312 from NousResearch/bb/tui-ux-pack df5ca5065f9204e4fb8d67b8103980d849e5fcd9 feat(tui): replace /clear double-press gate with a proper confirm overlay 75377feb0729c8996a25448ddc3ddc0ecfb22cb0 fix(tui): make /clear confirm window humane (3s → 30s, reset on other slash) 20eab355e753a61c3e7e0f648a50be0cd3d22431 feat(tui): add LIGHT_THEME preset for white/light terminal backgrounds 3366714ba4fb34a2fb933a96180236df488ab01f feat(tui): double-press confirm on /clear and /new 52124384de5367585d9644826ccf2da6b3b7c63d fix(tui): stable React keys in /model picker rows db59c190c136e0d889465e4144aa4b51e5d91806 Merge pull request #12305 from NousResearch/bb/tui-status-git-branch c0edcf2d536523c4e11d7b0b9b41a22f0bad1d0e Merge pull request #12306 from NousResearch/bb/tui-model-picker-dedupe-names 4aa52590d8f5551c89a9eea3aab06eca497086db fix(tui): disambiguate /model picker rows when provider display names collide ff2aa7ccd776f8e787644515e7864ed40b0599b3 feat(tui): append git branch to cwd label in status bar 0175ff7516515f62f2aab42e34c23e920838371d feat(skills): replace xitter with xurl — the official X API CLI (#12303) 6a3a6a0fb6cdfff5f78a2e0847371a05db94cc56 Merge pull request #12263 from NousResearch/bb/tui-audit-followup 4e8f60fd110e54db771af507931fd32e855bd880 fix(cli): use display width for wrapped spinner height fb06bc67debf74ba53de7ebc90e2d6755ae0e973 fix(tui): Ctrl+C with input selection actually preserves input (lift handler to app level) bfac5d039d949d670e8149065bba160636df31f6 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/tui-audit-followup 17e95a26b72b1ea296cdda41587b7f38d27fe72d fix(tui): render /skills browse as a formatted Panel instead of raw JSON 7e9a09857426f7acc66546188dd37802dd0a9920 chore: uptick 450ded98dbbe37de125ef387288aff1a19111ab5 chore(tui): prettier whitespace on files touched in this branch 93b4080b7805430455ac7bdbebc5699b825f91f8 Merge branch 'main' of github.com:NousResearch/hermes-agent into bb/tui-audit-followup ca32a2a60bd8655c001b96394e68309ba53b4550 fix(gemini): restore bearer auth on openai route a7dd6a34499cb8fa91579b8943d251a8c2d42021 fix(gemini): hide stale and low-TPM Google models 2eab7ee15f9f0283ae1a6c466b0400caa44defbb fix(gemini): hide low-TPM Gemma models from exposed lists f7af90e2daf2e2a11262ff3152bb3f08ff13ca37 fix: wire _ephemeral_max_output_tokens into chat_completions and add NVIDIA NIM default 0f778f776877cd452cf7475f06a6044cf07ebfe8 fix: prevent tool name duplication in streaming accumulator (MiniMax/NVIDIA NIM) 4caf6c23dd8233effe9d39e65fb7160553f917c4 fix(tui): strip tags from assistant content and route to reasoning panel 37cba82bfcf84a64be145fcc7ee9d69a8867dc5d fix(tui): Ctrl+C on in-input selection copies to clipboard instead of clearing 0bebf5b948b1a64030da56d7ad0f9ec9cb875981 chore(attribution): add AUTHOR_MAP entry for Honghua Yang (honghua) 3128d9fcd24ff06b1cb9e7bb7f300d7be4054d05 fix(context_compressor): keep tool-call arguments JSON valid when shrinking 5c8b291607e23eb11d5df70f560490bdd0b3dd6e fix(tui): wrap markdown links in Link so Ghostty/iTerm/kitty get real OSC 8 hyperlinks a7f4d756b7048e4ece779ad44737ef060716b1b1 fix(tui): cap approval prompt command preview at 10 lines b73ebfee302a59a5892b0e521fd7eb8b6ae1d7ba chore(attribution): add AUTHOR_MAP entry for Jim Liu (JimLiu) ade7958f1f53f5afe4c1fbd6042b1888bed5a0ee docs: add PORT_NOTES.md for baoyu-infographic 65c0a30a776d2d20161658d7cfa8fe8ac78627ed feat(skills): add baoyu-infographic skill — 21 layouts × 21 styles aa241773406c6238fb5362e434ecaf080dc5271f fix: prevent tool name duplication in streaming accumulator (MiniMax/NVIDIA NIM) a828daa7f8eb8f2969c2c46a7796845bab900d04 perf(docker): layer-cache npm/Playwright and skip redundant web rebuild (#12225) b0bde98b0fb17c0015481e2f38b655f0a07558fa fix(docker): build web/ dashboard assets in image (#12180) c14b3b58806e7abd01d9ee01e4ff218c01590cd0 fix(kimi): force fixed temperature on kimi-k2.* models (k2.5, thinking, turbo) (#12144) 656c375855f7ec331c43d4c796881b02ed2a5218 fix(tui): review follow-up — /retry, /plan, ANSI truncation, caching abc95338c210a587c2b718d62a02dbf9c87076d1 fix(tui): slash.exec _pending_input commands, tool ANSI, terminal title 2da558ec36ea7c8743f0e686488af57da8be1634 fix(tui): clickable hyperlinks and skill slash command dispatch b0efdf37d783e4e5345bc3687557a48b4504c1d3 fix(nix): upgrade Python 3.11 → 3.12, add cross-platform eval check (#12208) 8a0c774e9efd771c317e6f158a080ea19267182b Add web dashboard build to Nix flake (#12194) 50c81989182bc1ec5a573544301107b9d4564f74 fix(nix): build web dashboard frontend in Nix package f8becbfbeab87b35424bf4c636a3b192a2072e5d feat(tui): per-language syntax highlighting in markdown code fences 5e148ca3d03f70d13b2f97d45f57d8664c2f7d55 fix(tui): route /skills subcommands through skills.manage instead of curses slash.exec 949b8f5521a6fc98d472f58aa9be3dedaa90e1d3 feat(tui): register /skills slash command to open Skills Hub ef284e021ac73fcdac9a8392a10bb42f2018b74f feat(tui): add two-step SkillsHub overlay component 6fbfae8f42297a71e170de6103af459bd0a81f27 feat(tui): add skillsHub overlay state wiring 382132302917348e060063b7516c0cd616b07df6 feat(tui): render per-MCP-server status block in SessionPanel b82ec6419d8fe49bf0bef46b45d78276157b9838 test(tui-gateway): cover mcp_servers field in _session_info output 202b78ec684aee2a0bc5964bc2a58d2d20f8fbfc feat(tui-gateway): include per-MCP-server status in session.info payload fd6ffc777fea792f368dd3e3e86a66e438adafd3 feat(tui): honor display.* flags in turn renderer, status bar, and event handler 200c17433c0ce24a9332b857e64b6db3041a1f59 feat(tui): read display.streaming / show_reasoning / show_cost / inline_diffs from config 586b2f208913e2d63f08e426ac0c2ac6b3bc3823 feat(tui): persist large pastes to ~/.hermes/pastes/ via paste.collapse a397b0fd4d5c95b6aef4eecbb13eabad3d7e659b test(tui-gateway): assert quick_commands appear in commands.catalog output 5152e1ad8646235e4b745cf3d1337417b13f5ef5 feat(tui-gateway): surface config.quick_commands in commands.catalog 4e1ea79edc8fa6d1e4958e9df19fcca042efa566 feat(tui): accept raw Ctrl+V as clipboard image paste fallback f0638f35964ee28cff608a05614524065488c0b7 fix(tui): split /model picker from /provider wizard to resolve registry collision 6fb69229caba4bd5699228e520de4956b3458187 fix(nix): fix build failures, TUI Node.js crash, and upgrade container to Node 22 (#12159) 0f05b1841381b93098a0ee4596c8354127f9548a feat(skills): add comfyui-mcp optional skill for generative image/video workflows 2edebedc9eeb48093dda2a58ce3715b34d23bc15 feat(steer): /steer injects a mid-run note after the next tool call (#12116) f9667331e559caf8476fa4775b8add4c0c23d933 docs(browser): improve /browser connect setup guidance (#12123) 9527707f805a35377169616fa41dd7711e42a9dc fix(signal): back off sendTyping spam for unreachable recipients (#12118) cf012a05d895b4f2c19f75b27f799d222421be82 docs(terminal): warn against stacking watch_patterns + notify_on_complete on end-of-run markers (#12113) d9672ba6282d0aadc3fb70c8c0ce823101d88174 chore(workspace): remove semtools plugin tests 344e4871029103d2441115a605da4b7416a10340 feat(workspace): add semtools plugin for semantic search 4921bad61f99dc1f8888ca9a58469488b6d6177d style(workspace): remove __future__ annotations, fix ty diagnostics 9f8ca1888f3b09c79838481f91803e9ee915134f test(workspace): add plugin architecture integration tests 4fb0c7d08d475fefbbab7db5d3ef869c3b721174 refactor(workspace): remove indexer.py and search.py, use DefaultIndexer everywhere d934eba7ad4fc9d6ce55f5b4a9e281be73f31c59 feat(workspace): add plugin discovery for workspace indexers 09c50ebb402f4ac669a5c2f1de5d38f25bc29a5a refactor(workspace): wire CLI through get_indexer() factory 577e27373d6ac346d5a9845207c5616fcf09d970 feat(workspace): add DefaultIndexer class b40075e85da0f3205e0a07ef40d997698eceb482 refactor(workspace): migrate config to Pydantic models 742cb556bbc884a8050cedcb672d9319c56c349f feat(workspace): add BaseIndexer ABC c4cc0f3bd0cb57a71684ec64fc50d018d3b7354d fix(streaming): route minimax/* on OpenRouter away from broken direct endpoint 3b69b2fd615c4679c647946d597ef6c84763f370 test(session-search): regression coverage for CJK LIKE fallback 8826d9c19796da80bd4d5cc6a3e61a6f45a09775 fix: FTS5 LIKE fallback for CJK (Chinese/Japanese/Korean) queries a2c9f5d0a79d7d7fb4ff7bffc44cc9dd1c8f2259 docs(execute_code): document project/strict execution modes (#12073) 8322b42c6cd0f6ae9bc6721e8b0d8cbff4a856f2 fix(streaming): surface dropped tool-call on mid-stream stall (#12072) 5d99a78fe19411c8da8429ff70ec24e746900159 lint fixes et. al 285bb2b9150b93445e5eded9bc897a4001b66e55 feat(execute_code): add project/strict execution modes, default to project (#11971) 54e0eb24c0c9700fd0139242aab740c51711bacb docs: correctness audit — fix wrong values, add missing coverage (#11972) cc06beaf13df532b6b6b07ab2f1b383587aae83e [verified] fix(mcp-oauth): seed token_expiry_time + pre-flight AS discovery on cold-load 73bccc94c7af3a07b4002c2a14a4b54f844bd561 skills: consolidate mlops redundancies (gguf+llama-cpp, grpo+trl, guidance→optional) (#11965) 598cba62adb3b722d0bb49512efcead336148b98 test: update stale tests to match current code (#11963) 5ff65dbf68a4f6b0a25cbb3ee618210f7700d322 docs(execute_code): clarify that scripts run in their own temp dir, not session CWD (#11956) c20e236b7156ad9d882567e36bae7ce3d0d95927 chore: map AviArora02-commits author email in release AUTHOR_MAP 994faacce894cba8f97c1ff06f65da89f56520f5 fix: suppress Authorization: Bearer for Gemini provider to prevent HTTP 400 (#7893) 8a59f8a9edcf6a23cffda3377cced2761732e7bc fix(update): survive mid-update terminal disconnect (#11960) 1c352f6b1d377088b5a3d4310030587a9960a09d docs(browser): expand Camofox persistence guide with troubleshooting (#11957) 3eeab4bc065f5eaa304820086f6126be0488a226 [verified] fix(mcp-oauth): bridge httpx auth_flow bidirectional generator 11a89cc032b20f75e5273f98e9a02dcaf06ce573 docs: backfill coverage for recently-merged features (#11942) 45acd9beb571d0cba4ea38662b0daaac642ea3fb fix(gateway): ignore redelivered /restart after PTB offset ACK fails (#11940) c5c0bb9a732c11b786e1595af98d5faa06048899 fix: point optional-dep install hints at the venv's python (#11938) 161a3d5d6165f073a09bda6fd4e23a2c5c1eb213 fix(workspace): quote self-referential forward refs 20f2258f3481e708fc954034ee36e2c72bce1782 fix(interrupt): propagate to concurrent-tool workers + opt-in debug trace (#11907) 607be54a24b87b49dfd103cf05c6e452ddfe476f fix(discord): forum channel media + polish e5333e793c622a236c2639a351e115979587632a feat(discord): support forum channels 148459716ccf2f72b9d24a38966771649f26d012 fix(kimi): cover remaining fixed-temperature bypasses 7460975174f92c3d1fb72c233328995edd5d2bdd style(workspace): appease ruff (E402 import order, F821 forward ref) 07f1a364ed00a2d89407e172bac4fcc98a4bd231 refactor(workspace): narrow code/plain pipeline results to Document ec18a783d8c54e42b349916e41ae24346f4b4798 refactor(workspace): tighten types + dedupe after /simplify pass 9ed83932a84d61fbcdaf8499193c958e3c9bada9 fix(workspace): close post-migration gaps surfaced by verification 53e4a2f2c62a6a89666c897c8936c6e0d005f0c1 feat(update): warn about legacy hermes.service units during hermes update (#11918) 07db20c72d46b3e1d89f20651876764984ae43e3 fix(gateway): detect legacy hermes.service + mark --replace SIGTERM as planned (#11909) 38436eb4e3b7a2f7c0b1fc90460b416d2be618d0 chore(release): add pedh to AUTHOR_MAP 86fd0f846d64168bcc2df9446764c6a27bdbeac0 docs(dingtalk): document AI Cards, emoji reactions, and display settings 4459913f40960d0af4c65d3e58f3e3587c04dfb5 feat(dingtalk): AI Cards streaming, emoji reactions, and media handling d7ef562a050d16f42c0aed952c2ffea2fda5c092 fix(file-ops): follow terminal env's live cwd in _exec instead of init-time cached cwd (#11912) 47010e07578a5553a7ef94902572c574e43ba2ce fix(gateway): allow systemd-backed distrobox services 213e39463bada797fa46ed554f957c61bdbf94ec chore(release): add akhater to AUTHOR_MAP 2297c5f5cecf6e7cb4f8e49337f1089e3ecd96e5 fix(auth): restore --label for hermes auth add nous --type oauth c7fece1f9dc45b8e2535eeba26be66e816c0cc8b fix: normalise Nous device-code pool source to avoid duplicates c096a6935ffb77a15a7d6aa863fc8b87c974c246 fix(auth): mirror Nous OAuth credentials to providers.nous on CLI login a155b4a15987c964901483f37c585ac2a004d105 feat(auxiliary): default 'auto' routing to main model for all users (#11900) 669905e854a80f03ca3e9ef0376cfb9a8094b3de refactor(workspace): drop dead helpers + clean up stale test docstrings 77c10079c8f73c6432729206d0d326edf8b72cc0 refactor(workspace): migrate indexer to chonkie.Pipeline ebcb8cb92521b3827cc94472632a1d9326ff49d5 test(workspace): add xfail'd regression tests for Pipeline-based indexer b449a0e0492aac9227bfaf62b932602419d2a400 fix(feishu-comment): use get_hermes_home(); drop dead asyncio wrapper; AUTHOR_MAP 85cdb04bd468ede5aa894fb535bf038b97ee77f8 feat: add Feishu document comment intelligent reply with 3-tier access control 9b14b76eb3dcf3a428866acb3f96874a7bb6373e fix(wecom): bound req_id cache, revert undocumented is_group change, add tests 2992802b35dcf73754315cf7449621dbfaa57c56 fix(wecom): resolve WebSocket zombie sessions and group chat 600039 errors #11554 04a0c3cb957b92a05c81020401e880e9123e5972 fix(config): preserve env refs when save_config rewrites config (#11892) 8444f66890bdb7179ac58bd9cf041f471b639910 feat(hermes model): add Configure auxiliary models UI to `hermes model` (#11891) bb85404b16c987b6100600b52c3c1a7f76c27661 chore: add Sara Reynolds to AUTHOR_MAP 8ab1aa2efcb9b73c9ef1e4e5c4fe70768c61e147 fix(gateway): fix discrepancies in gateway status 511ed4dacc0a50317e2338fe3f451291137d508c fix(gateway): bypass active-session guard for gateway-handled slash commands d465fc58698306d958cd779e2a5d32baa1e3788d fix(skills): use frontmatter name in skills index instead of directory name 016ae5c334cf07fd53b6518085ee0b4ebd6da6e7 fix(kimi): force 0.6 on main chat path 304fb921bffa49997e64e5d3ef63ccaca4a20734 fix: two process leaks (agent-browser daemons, paste.rs sleepers) (#11843) a9055f91a43810219ea39d618da42716d76e12d2 Inspired by Claude Code: tighten dangerous-command detection 64b354719f5e7d242b0405b9014fd60bd8ac0cd4 Support browser CDP URL from config e9b8ece103f548a96a41af2764e963f808860e0d Merge pull request #4692 from NousResearch/feat/ink-refactor 3f43aec15d452d5b64d0ef71fdc71f8f1765fdc1 fix(tools): bound _read_tracker sub-containers + prune _completion_consumed (#11839) aa583cb14e4f07ad0ad5798961f036193305f78f Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 0a8318780179ec4ff2438fe3171bebeba25d56c7 refactor(kimi): use _fixed_temperature_for_model helper in flush_memories 2b60478fc2f9b0cd8a41efbe237da1465d26a43c fix(kimi): force kimi-for-coding temperature to 0.6 c6fd2619f792ed563434356891f318f9d6e1ee4f fix(gemini-cli): surface MODEL_CAPACITY_EXHAUSTED cleanly + drop retired gemma-4-26b (#11833) d2206c69cc628752c6cdbaa53f8f178c331c6f30 fix(qqbot): add back-compat for env var rename; drop qrcode core dep 103beea7a693611cd375b944df1752e723956646 fix(qqbot): fix test failures after package refactor 287d3e12c71e5579da03f81bb77a0d5eaec4cfba chore: add author map 6fd58e1e4a6a5fa5f227673b5f586899c5cf7d73 refactor(qqbot): replace log tags with self._log_tag 235e6ecc0ed3d533419bb494bd05481a931f71e7 refactor(qqbot): replace hardcoded log tags with self._log_tag and adjust STT log levels 1648e41c17b237a9dcccef8fecd91a40e4795aad refactor(qqbot): change qrcode style c4cdf3b861d8e08f948cbf0366b36b92ce556aae refactor(qqbot): change setup method selection prompt_choice style 02f5e3dc27d6183810aad150089cad004c9d11f0 refactor(qqbot): use _log_tag with app_id in all logger calls for multi-instance disambiguation b7d330211ad2d1166dd96100755ac16bb300e71f fix(qqbot): simplify home channel prompt wording a5f4d652d3457d28284979465fb5ef3be6179d65 feat(qqbot): prompt to add scanned user to allow list and home channel during setup 635850191519016c78c74297a7053df29bdf543d refactor(qqbot): split qqbot.py into package & add QR scan-to-configure onboard flow 31e7276474976cd752d73de7701229eefd1b37ad fix(gateway): consolidate per-session cleanup; close SessionDB on shutdown (#11800) 036dacf6592dac36a57a3d26187039fb3b1a37a0 feat(telegram): auto-wrap markdown tables in code blocks (#11794) 3207b9bda0d7a0aef00a5c6712b8d2f0a82d801d test: speed up slow tests (backoff + subprocess + IMDS network) (#11797) 026c9c9533d43fe3f386285cf5fac222bfc06672 refactor(workspace): simplify PR — lint, rename IndexError, remove dead code 066d285527daad577d85b7c8e20ec158e7782438 fix(workspace): harden indexing and CLI edge cases 9f4208645a541948a312af4b2a0c09f9ca722c90 chore(workspace): remove committed planning docs eb07c056464b397eedd312e1ba2dd919035ddd40 fix(gateway): prune stale SessionStore entries to bound memory + disk (#11789) f362083c645374dd86465aec13f030aa52899607 fix(providers): complete NVIDIA NIM parity with other providers 3b569ff57638a9ec151a0a0941690a08c8314620 feat(providers): add native NVIDIA NIM provider bd09e42eac5d602fa41c4d7285a4567a03f074ab Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor cc3aa7667599596695583ceed294db726db5c894 build(deps): add qrcode to dingtalk + feishu extras (parity with messaging) (#11627) 2ff1ef6ae6b5776258c4667fa93176b35d7a8b39 fix(surrogates): sanitize reasoning/reasoning_content/reasoning_details fields (#11628) 1229d8855c75e2a83cad703487d72b368e1281b0 fix: remove misleading model.max_tokens suggestion from thinking-exhausted error (#11626) d49126b98728049bc7e4523841d9d6642a55e685 fix(release): map HenkDz contributor email cb883f9e97e6acb9ab8a2202282eee6b77074e29 fix(acp): improve zed integration 6cae0744f09186309bd4baae18aeab9bc91e0935 test: mock retry backoff and compression sleeps in slow tests d5b9db8b4ac2bea15cd200eac254549b8482479d Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 6a37802476e21244184f36e39fed80d6fddf9317 chore: uptick d0e1388ca928f984877a2a576b67cf0bdf362096 fix(tests): make AIAgent constructor calls self-contained (#11755) 78a74bb09764deb12f4847eed9305a75d0f36659 feat: promote kimi-k2.5 to first position in all model suggestion lists (#11745) 3db1a7e451ed189bf625c7e84978b39282059a3e Harden workspace indexing and document verification bedbeebbc8adf35940ce8b50c45306b5e42fbd28 feat(tui): interleave tool rows into live assistant turns f53250b5e1c5f43af01b580d37352b5eabae6e0e fix(tui): tighten /resume render, follow-up to 42721dbe 00591e38015f8c58db624454f16ef35b99df25b7 chore: fmt be768db6276b1dc2cd6313bb6f266e9437d751ba fix: long history session thingy 42721dbe1c686c88d7eb52eef6d01f53eab13836 fix(tui): big-session /resume now renders without first keystroke 8f553a55b2a5e6b4e7e09c56b8860402430493a5 chore(tui): fix eslint/prettier nits from npm run fix a82097e7a211e8a3a15e492be47db604ebc3ad4e feat(tui): /model and /setup slash commands with in-place CLI handoff 0dd5055d596d7d2300e0f5c14a7e96926b6082e0 fix(tui): first-run setup preflight + actionable no-provider panel 5b386ced7117c32ace47322925a9123aef68ba6b fix(tui): approval flow + input ergonomics + selection perf 0219da9626d8a3339ce6f442c5d57f85efb4a654 chore: uptick 6c56d60d829b09f5d83fa2a7c591ca791a382855 fix(tests): also add api_key where missing (AIAgent needs BOTH for direct path) 5d179b9777f7cfb07791ba6c066d44c4e71b37b0 fix(tests): pass base_url to 31 more AIAgent() calls across run_agent tests c2559b80fa82380d89ce46f3a90afd84c070d9ef fix(tests): pass base_url explicitly in AIAgent constructor calls 50f23ea522b261646169aa7d66f44ae79f013c14 ci: split Tests workflow into 4 parallel shards via pytest-split 1f37ef2fd168e81e7776261e05d93fbd01bbc61e Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 6ea7386a6f010320c8744cee6a1ac7835bc37ffc chore: map memosr, anthhub, shenuu, xiayh0107 emails to AUTHOR_MAP 8dcd08d8bb87530a46043cf6b3a02be1015e241c Fix Weixin media uploads and refresh lockfile 3a0ec1d935dcae0296f371f1a441770e3da8a36a fix(weixin): macOS SSL cert, QR data, and refresh rendering e105b7ac93adaa4c2a1c8124fcd73808742a5620 fix(weixin): retry send without context_token on iLink session expiry 4b1567f425e95482a593396d11b7738e1e32e80e fix(packaging): include qrcode in messaging extra cedc95c100eb25e45097449ee2f3b62e0095d213 fix(security): validate WeChat media URLs against CDN allowlist to prevent SSRF c7334b4a50923b79837cb3cc06814bf606285676 chore(release): map @Hypn0sis and @OwenYWT to AUTHOR_MAP 3f3d8a7b2478a157f6232a632af57f66da25cda9 fix(discord): strip mention syntax from auto-thread names 32a694ad5f630fbe8a2f33a7f696ad238d515fa6 fix(discord): fall back when auto-thread creation fails f5dc4e905d89b14392b68dc7660b9a0d3b07587b fix(discord): skip auto-threading reply messages 93fe4b357d83db1882eeceec5e39743031fcd63c fix(discord): free-response channels skip auto-threading 8d7b7feb0d432f3429702922e9a996a4c9e530b3 fix(gateway): bound _agent_cache with LRU cap + idle TTL eviction (#11565) fc04f830622dab7feff5b17bb3e36cf0cc7fb76e chore(release): map jvcl author email for release notes fe0e7edd2794c2090955bdccc22d7187522ae9c5 fix(cli): clear input buffer after /model picker selection 86f02d8d7148c5fee192e71de40a4b7e98f40e47 refactor(cli): align model picker viewport with PR #11260 vocabulary 5fbe16635b8ff91ec9c620458ff0f35973af9969 fix(cli): scroll the /model picker viewport so long catalogs aren't clipped fdf42d62a0bafaba30aff48e230e0d47f2642346 chore: map briandevans and LLQWQ emails to AUTHOR_MAP f64241ed9068a38a2604e7066e56e188ee2f8979 feat(cron+tests): extend origin fallback to email/dingtalk/qqbot + fix Weixin test mocks b46db048c32bd0e5aa78f7f3a02f0edff1a9c5f0 fix(cron): align home target env lookup f696b4745a827a24f37ca3a6db36e668bd5d2a67 fix(cron): restore origin fallback for feishu home channels 5ca52bae5b3faaf124f5d81d1b7562f5628edfbf fix(gateway/weixin): split poll/send sessions, reuse live adapter for cron & send_message c60b6dc317134b15c77c91daabb6fd6fe973aa4e test(dingtalk): cover get_connected_platforms + null platform_toolsets 47a0dd10248ac5f04e769972e2a7f30558ac6e4c fix(dingtalk): fire-and-forget message processing & session_webhook fallback 91e7aff2191677baa75f2a95f654df0a2f78ec77 gateway cant add DingTalk platform d40484935136ce03b32582c10f866364b74d444d test: make test env hermetic; enforce CI parity via scripts/run_tests.sh (#11577) ee95822e070ba887c7f1ce68de6bd7b75cced542 chore(release): map jz.pentest@gmail.com to @0xyg3n e5b880264bc5487282ea83983abbb62507c21959 fix(discord): harden DISCORD_ALLOWED_ROLES and cover gateway layer 541a3e27d774befcb03a2e193eb4f02f4db9c1be feat(discord): add DISCORD_ALLOWED_ROLES env var for role-based access control 0741f22463fe439ccaf7f4d233ec09933c0b7973 chore(release): map gnanasekaran.sekareee@gmail.com to @gnanam1990 7d888ab49ca7385b8f04d344f57a7ba21a4da0a7 test(discord): regression guard for DISCORD_ALLOW_BOTS auth bypass 0f4403346db4a8407af3d3ef12104e997da0a4e6 fix(discord): DISCORD_ALLOW_BOTS=mentions/all now works without DISCORD_ALLOWED_USERS d7fb435e0ec41070564981532ab04cc0e5a3c42d fix(discord): flat /skill command with autocomplete — fits 8KB limit trivially (#11580) 13f2d997b0a17f48f2ff8fb16445f29d1245e326 test(dingtalk): cover QR device-flow auth + OpenClaw branding disclosure 9deeee7bb72209573827fab6486f5ba0e80b00fa feat(dingtalk): add QR code auth support and fix 3 critical bugs 08930a65ea1d6c28cfc3371f9d8b638936d4cb90 chore: map Patrick Wang, Hedgeho9, Berny Linville emails to AUTHOR_MAP 6ee65b4d61b6f1166e20eed0bb786aca08ad1f8d fix(weixin): preserve native markdown rendering 498fc6780ebc21805bcd26f6de842d0aa722f66d fix(weixin): extract and deliver MEDIA: attachments in normal send() path 4ed6e4c1a575828110d2174361ae1eb9b510d75e refactor(weixin): drop pilk dependency from voice fallback 649f38390c2fa5f1f690f4ed2676fb754ddc65a8 fix: force Weixin voice fallback to file attachments 678b69ec1b31673704af7390a28009e9c930c56e fix(weixin): use Tencent SILK encoding for voice replies 53da34a4fc2e408d3545b607b3c0b298a6d21e84 fix(discord): route attachment downloads through authenticated bot session (#11568) 24342813fe2196335ac8e510e8f59f716197d0e8 fix(qqbot): correct Authorization header format in send_message REST path (#11569) ca03e803488edffd60191cb1ed1ab2decef07aaa chore: map LehaoLin email to AUTHOR_MAP for release script 504e7eb9e5688b4ab04e1e9a78a044c3ff00ead1 fix(gateway): wait for reconnection before dropping WebSocket sends b594b30de46ec9b1fe48ed93e5654e07b002915a fix(release): map dieutx email in author map 995177d542d2f46d967f02365d25a4575cf5e3f8 fix(gateway): honor QQ_GROUP_ALLOWED_USERS in runner auth 590c9964e1634e987fa774cd128ad13122dee15b Fix QQ voice attachment SSRF validation a97b08e30c82abab505425e326b62334c4e3b4d2 fix: allow trusted QQ CDN benchmark IP resolution aca81ac7bbc5b13a3801286d301e961a3333b6bd test(dingtalk): cover require_mention + allowed_users gating 9039273ff089b46eccea2e67d0653ea73bd4d186 feat(platforms): add require_mention + allowed_users gating to DingTalk b0b9ef0c862e9d82df7a0633bbf94d92e018079c ci: split Tests workflow into 4 parallel shards via pytest-split 29d5d36b146994e5fbe8dfb15dd46f3e36983399 fix(copilot): normalize vendor-prefixed and dash-notation model IDs (#6879) (#11561) eabe14af1c289b464de3d6634d5e5e10e02052e7 test(discord): update reply_mode fixture for new to_reference() wrapping ef37aa7cce5a5613035ec002f275b792c7e52038 test(discord): add regression guard for non-reference send errors a448e7a04d22babb9a9c6c9bfc67ee6306cde2c7 fix(discord): drop invalid reply references 0231f8882b2494c3678071941c3184a9d211f900 chore(release): add Asunfly to AUTHOR_MAP for #10070 salvage 7c932c5aa445666eeeec0ba923e0da0938353c5b fix(dingtalk): close websocket on disconnect f268215019acf8c8b31c1d945767428c2bb80ca2 fix(auth): codex auth remove no longer silently undone by auto-import (#11485) 8b312248dc4e7c102bfffb3894af3e9654e7f174 chore: map RucchiZ email to AUTHOR_MAP for release script 82969615bb54097d18d04963c3b4b83cabc649ff test(weixin): add regression test for send_image_file parameter name 902d6b97d61e07fbfc7c290d65aa958f280c8bc6 fix(weixin): correct send_image_file parameter name to match base class 5d929caa59f4f5162b4e5db02f29c13281eec940 chore(release): map michel.belleau@malaiwah.com to @malaiwah efa6c9f715c33805d607269af93bccbcc8f9d756 fix(discord): default allowed_mentions to block @everyone and role pings 130b021d74ca4ff6382563ac3077df8bffb7b31c feat: add SearXNG as a native web search backend 2367c6ffd53b16daa0ffa1b338f3f9ee5587d4d5 test: remove 169 change-detector tests across 21 files (#11472) e33cb65a98292496229f6cdf089da11711c4a80f fix(insights): hide cache read/write and cost metrics from display (#11477) 3f74dafaee3da9dbc1071c6f73c977c93a8425cc fix(nous): respect 'Skip (keep current)' after OAuth login (#11476) 3438d274f6cefc4728bd2b3b00e7c6e75c11da68 fix(dingtalk): repair _extract_text for dingtalk-stream >= 0.20 SDK shape c3d2895b18c601492ef53eb4568ea18061c8ff36 fix(dingtalk): support dingtalk-stream 0.24+ and oapi webhooks e5cde568b7c29a1e50b7d89079ef73e5ce940304 feat(skills): add 'hermes skills reset' to un-stick bundled skills (#11468) a55a133387ab475dfa5e431d969d47aeed78b863 fix(tests): attach caplog to specific logger in 3 order-dependent tests (#11453) 816e3e3774e1162e73220fd5fb2796524757bb5d test(feishu): cover new SDK event handler registrations 94168b7f60fe9bdb34f92dfbef5b1687b54ddfaa fix: register missing Feishu event handlers for P2P chat entered and message recalled 220fa7db90652c286e25ed38a99a1d04dd170c0d feat(image_gen): upgrade Recraft V3 → V4 Pro, Nano Banana → Pro (#11406) 70768665a42167b81deb2d6915a8169b53337c09 fix(mcp): consolidate OAuth handling, pick up external token refreshes (#11383) 436a7359cdd96aa961e83732a3d554fbc36289d0 feat: add claude-opus-4.7 to Nous Portal curated model list (#11398) 24fa05576366564479e0b0e7ee37d34a28506cc3 fix(ci): resolve 4 pre-existing main failures (docs lint + 3 stale tests) (#11373) fdefd98aa3d22c6b1c8a6cde53614b1c90462912 docs(skills): make descriptions self-contained, not cross-dependent 7d535969ff5ae041766b1dd5ce414f07326ee4cc docs(skills): make architecture-diagram vs concept-diagrams routing explicit 19c589a20bac40cb5fb7a7da3f1346c68c5e399f refactor(concept-diagrams): rename + tighten v1k22's skill for merge 9a4766fc18a060f0a5307f22f6855190869ea6ef feat: add architecture-visualization-svg-diagrams skill to creative category 7af9bf3a5455e3b6a6dad00bf047785ce3be9b43 fix(feishu): queue inbound events when adapter loop not ready (#5499) (#11372) 5435287dec84a4745f24fa51fd50f45665ca15c9 chore: uptick 41d3d7afb79eecd50114fdd7d9ab4e52f7d4bcb5 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 39231f29c6bf39608a013d06510b1d8ff2bd8ff1 refactor(tui): /clean pass across ui-tui — 49 files, −217 LOC 01906e99dd225b7946c770479fcd9cc2949e7104 feat(image_gen): multi-model FAL support with picker in hermes tools (#11265) 0061dca950c5f7f1739ece5d6850f611b75468cb fix(installer): make prompt_yes_no bash 3.2 compatible 5be8e95604106b4576e887b5ee21a1dc90ca1726 fix(installer): use line-based tty confirmation prompts 8c478983ed0ec5609212950d5044398dd4d27a5a fix: enable TCP keepalives to detect dead provider connections (#10324) (#11277) ab33ce1c860d7e290d5c3af522c7db55e11541a3 fix(opencode): strip /v1 from base_url on mid-session /model switch to Anthropic-routed models (#11286) 7fd508979e5100b91e3443db2bb0ff0ae87856a8 fix: harden sync_back — PID-suffix temp path, size cap, lifecycle guards d64446e315834bfa7cb7a0000ddf45db6e47205c feat(file-sync): sync remote changes back to host on teardown c730ab8ad70613db2421e6300d1075c1019930ff chore: fmt c74017f405fb4dacb6e09e35906d0f5ca40ba6c7 fix(tui): sticky prompt correctness + scrollbar re-render thrash 40f2368875a8174416bb1dc6438bcf7910f32ee3 fix(tui): ungate reasoning events so the Thinking panel shows live tokens 228a23198b682ae0f0ea740281957ece22352e35 Add workspace FTS indexing and search 319aabbb805332a8fb96ea4258b099a5b28c50db refactor(tui): wrap progress panel + streaming body in StreamingAssistant 26f3a05c9c56fa24c21fc8b65e5332188578ed84 fix(tui): don't clobber busy on the progress panel during streaming 15096903c75d5259d18a226872742e39214517c1 fix(tui): keep the newline above the streaming assistant text 26859e3fcbdb031512385718bc420a5e9bfee403 fix(tui): keep the Thinking expander visible for the whole turn aedc767c664027b4ef17d1a5d0841fe585630ba0 feat(tui): put the kawaii face+verb ticker in the status bar, not the thinking panel 23212d6b40120e1e644860821f4598ffe3c8c265 docs: kill "PT" shorthand — say "classic (prompt_toolkit) CLI" 7ffefc2d6c29ed7f3619fc8f35b6ed3cf1524a45 docs(tui): rename "Ink TUI" to just "TUI" throughout user-facing surfaces 2812bfe5b9d799a107b019e0245ef5b1299e9041 docs(tui): add Ink TUI user guide + cross-link from CLI docs ca30803d890d640e7f671db94ee3e0c41d689347 chore(tui): strip noise comments c2e4d6a0e58dd5f0ad80565388327db8e9999fd8 feat(sessions): add --sanitize flag to sessions export 7f1204840d439011600b203e86158c2e46cb5337 test(tui): fix stale mocks + xdist flakes in TUI test suite dd2ec6bfa0b61322a47f4e4a7715a9c70f6807d8 chore: uptick 764536b684b081eead7f4394911b4399a66e7f9c chore(release): map mbelleau@Michels-MacBook-Pro.local to @malaiwah c1c9ab534cccc707ec6cd85b98c3553e14f3b98c fix(discord): strip RTP padding before DAVE/Opus decode (#11267) 6ba4bb6b8e39d9c3f0078d0a21528ecd0d834fbd fix(models): add glm-5.1 to opencode-go catalogs 3524ccfcc4e05579dbda8285f991efa82d7dda31 feat(gemini): add Google Gemini CLI OAuth provider via Cloud Code Assist (free + paid tiers) (#11270) 79156ab19cc529c86f074e5b216dc8b46c43ae27 dashboard: show GATEWAY_HEALTH_URL instead of PID for remote gateways 5d7d574779875f360c20241ea3720cecb190fee1 fix(gateway): let /queue bypass active-session guard 5797728ca6d1ce32bdba64970405426775745eec test: regression guards for the keepalive/transport bug class (#10933) (#11266) 00ba8b25a98a091cccbb15c9e928e0cb7cb82a5e fix(web): show current language's flag in switcher, not target (#11262) 59a5ff9cb2fad7a150ecaf8a10c4565ac8823fb6 fix(cli): stop approval panel from clipping approve/deny off-screen (#11260) 3746c60439c343ce961757df23f3f04e3102f859 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 58d2b66c922690bb0a749356bb390a7cdbbe045e dashboard: show GATEWAY_HEALTH_URL instead of PID for remote gateways 727f0eaf74c07f6d88a3208443bd76b096438950 refactor(tui): clean up touched files — DRY, KISS, functional edefec4e683214e7359073fcf4e0a2d1de5a0890 fix(checkpoints): isolate shadow git repo from user's global config (#11261) d38b73fa57b19b11efaeaf6256c05cc2d4f7387f fix(matrix): E2EE and migration bugfixes (#10860) 1e5ee33f681efd6c12ae65b9514e68cc46daf269 feat(gemini): add Google Gemini (OAuth) inference provider 387aa9afc9cd4a65fb0cdb05fecdbae2200b6e59 fix(approval): heartbeat activity during gateway approval wait (#11245) f6179c5d5f3f0eba1b3e83e25cc19c8fbb6fa24d fix: bump debug share paste TTL from 1 hour to 6 hours (#11240) fce6c3cdf66c3c25fecde950ee48e700cb832132 feat(tts): add Google Gemini TTS provider (#11229) 275256cdb42cf050b68e6e2a349887a38e3006d4 feat(tui): uniform selection background instead of SGR inverse 9503896aa2923a510b24c9eca919b94813a7889d perf(tui): paint banner to stdout in ~2ms, before Ink loads 04e36851b7f8554562bea071310ec675c5da571c feat(tui): honest status 'starting agent…' until session.info arrives a8e0a1148fe5197f83620a23dbc44f4279f8dce2 perf(tui): async session.create — sid live in ~250ms instead of ~1350ms 842a122964259e23ebc9272c60ab4bc33ddbc8d0 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 80855f964e4d626857ee1ded783c247ffa50427e fix: stop hermes update from nagging about llm-wiki's wiki.path (#11222) 2d693c865cf87ba02c1f10e48512b6e705a2a8af perf(tui): spawn python gateway before loading @hermes/ink 6c34bf3d006892e36396d883dbb5487fbea4acb7 fix(gateway): fix matrix read receipts f3920fec0b184bdf511a7adf7a2b844e494d3f8a feat(tui): queue pre-session input, auto-flush when session lands c6ed61430a56a6d6c860afd7574ffc34479d9629 perf(tui): paint banner on first frame, don't wait on session.create 1dd6b5d5fb94cac59e93388f9aeee6bc365b8f42 chore: release v0.10.0 (2026.4.16) (#11209) cb2a737bc8458019a625238574e34236c1de2bde Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 18840bcff89ae688bdd7bf90da011c83396a85bc chore: uptick dead2dfd4f40dff4b14bef9af95bfca107c29553 docs: add portal subscription links to tool-gateway page (#11208) 3d8be06bce0c3e5ea9c64d5e8b8e7bfa874ed4c6 remove tool gateway from core features in docs 10edd288c3ef2bac3c11d70b3bf204e87ea9e698 docs: add Nous Tool Gateway documentation f188ac74f077a91b80bdc20b933511f72f58f66f feat: ungate Tool Gateway — subscription-based access with per-tool opt-in 0478266831b36a8b4f0a27a067054ae9eaf22baf refactor(tui): stop shadowing python — slash fallback inherits worker output 25c7b1baa7bbb72113552c40cc16b34d0e9f30f0 fix: handle httpx.Timeout object in CopilotACPClient (#11058) 63d06dd93d6c19f22598d8ffc855788e1fe04714 fix(agent): downgrade xhigh→max on Anthropic pre-4.7 adaptive models 37913d9109a441db3ed884c668df7002102a1dbe chore: add Opus 4.7 PR contributors to AUTHOR_MAP 0517ac3e9325a0548c3f5878185a926921be9311 fix(agent): complete Claude Opus 4.7 API migration beccd1bc0441a89fa2f9df92ff287b4b63703947 Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor 68ecdb6e26a3f95aea6924f4d0d20763f41e3807 refactor(tui): store-driven turn state + slash registry + module split 1ccd0637864ddede3603007c7a3c68c8d16e67ce fix(cli): route /yolo toggle through TUI-safe renderer a99516afcfdb67acc946565d46cded1b4ac8d40d docs(nix): clarify SOUL.md location 59d3939173f49093b72460cb02909f2cc0c04c06 docs(update): remove unsupported --check command fe3e68f5728b04b5b66cfaf62558c36e5852b40d fix(honcho): strip whitespace from conclusion and delete_id inputs 4377d7da0d1475f390096ed6efb0650eb6f734a3 fix(honcho): improve conclude descriptions and add exactly-one validation 7e3845ac508eec504f0e0f56185751d3d131698a chore: add bare noreply email for kshitijk4poor to AUTHOR_MAP (#11120) fc0623f0aff75b2db449dda51542c8a10ae642ae update nix 9c71f3a6ea789aa0211b61a6c35b35a7a1066258 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor c4b9750bc1d335ac2d13cead1f8926ab5663e79b feat: lazy bootstrap node b945f9e0d59e8fe61e017fb3313edb3ef2c0ae61 fix: follow-up for Gemini TTS salvage a2716875591255e0068bf92ee8b602e9fade2470 remove tool gateway from core features in docs 2b3995a45bcb8311ec9442d24df5667e43ac2a3b docs: add Nous Tool Gateway documentation acff9d36db69c8d1fbfeabad2b1041cb722664c5 chore: add zhonghui5207 to AUTHOR_MAP 0671201c05d900d9ad2c177cad8eb1915dc70270 feat(tts): add Gemini TTS provider 15910c387f1de7fa38a4aac984ed33df175c4cb3 feat: ungate Tool Gateway — subscription-based access with per-tool opt-in f19ca50cd9f605387f3dc5a0fc1ef601c0c37a1f fix(context_compressor): always keep last user message in tail to prevent active-task loss f5ac025714aac956b47feae07fbc75ec399b0fb7 fix(gateway): guard pending_event.channel_prompt against None in recursive _run_agent 896e7b03e8b745a5380fda5bc2e9377e0cc95e9c fix(run_agent): prevent _create_openai_client from mutating caller kwargs 31a72bdbf24ded9fe0eb854d8d389c94ae2e642e fix: escape command content in Telegram exec approval prompt 8c1276c0bf3b41503ae34386ed6d1f3c79eb8a60 fix: pass resolved args to resolve_vision_provider_client() 0a9229c8c68a95fe93d8498ede7ab9e5d37e7455 chore: add salvage PR contributors to AUTHOR_MAP (#11076) 5de67fa0ced35ff5a6f0abf37daf8dd3f6588a1e Merge pull request #11061 from NousResearch/feat/vercel-deployment 5b4773fc20e844e784d1b710adaa0cfcc5e14d87 fix: wire up Ollama Cloud dynamic model discovery in /model TUI picker 45fc0bd83af2cf8ac624f72f8ddf167c63b94a63 fix: UnboundLocalError on 'entry' in parallel subagent polling loop (#11050) f938fe460c228ac74c528a834f2051a41cf3dd89 chore: add iacker to AUTHOR_MAP e9b3b8e820b1bbd37362a5bd38fc5dbd374fb37a fix(cron): treat empty agent response as error in last_status (fixes #8585) 77bdad5b02eca395a17118738103399c558f7017 fix(tests): resolve 12 CI failures + 10 errors across 6 root causes (#11040) 3c42064efcd031971224e6aaea19fcdce9a97cfb fix: enforce config.yaml as sole CWD source + deprecate .env CWD vars + add hermes memory reset (#11029) fe12042e50c5a9187463d3646172b6212e122b7d fix: remove context pressure warnings entirely (#11039) a6142a8e087bcdb1e098657f4128b10b827059fd fix: follow-up for salvaged PR #10854 3e3ec35a5e0235184bb5c11e3404dd3d51458af0 fix: surface execute_code timeout to user instead of silently dropping (#10807) 73befa505d510dc96dc445337a12d81b496407fb fix(cli): handle null/non-dict display config in skin initialization 465193b7eb2630546419a9804c7a16624fc4375c fix(gateway): close temporary agents after one-off tasks 39b1336d1fa033530262379f79be2a73a28c277f fix: ctx usage display f81dba0da27c952eb3a306d6c0ed96258a6cb112 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor dc7d47a6b86ca27dd2474d0548dc0bf3274d81fa chore: add GenKoKo to AUTHOR_MAP f9714161f06ffcecc453c9194beecd55dc4980d1 fix: stop leaking '(No response generated)' placeholder to users and cron targets 85752791ed7ca15eb0afff6e178e72b20c3e7186 fix: resolve UnboundLocalError in post-tool empty response nudge path 9f231dae564d3193b7e16a1c75e7c702b2508d33 fix: quiet mode (-Q) outputs only raw response text (#11024) 4b1cf777700786e766788cd77beaa4435e6b36e5 chore: add davetist to AUTHOR_MAP fa830a49e09c3e5580c7506f318f6e8a45d7822a test: add cancellation handler delivery confirmation tests 3b5572ded3f43556d69d037396db0ee4a2b8c215 fix(stream-consumer): only confirm final delivery on successful best-effort send 35bbc6851b67d3bfa154f076a72f787daca9fd06 fix(gateway): honor previewed replies in queued follow-ups d67e602cc81b8cac2b3e12f67305c7d97ecf69e8 fix: only suppress gateway replies after confirmed final stream delivery 512c328815176f4be4a7659ad30b67bf63f1bcf0 fix(copilot): eliminate redundant catalog fetch in api_mode resolution (#11008) 92a78ffeee623e13b7db7131eb9911d2f5a93ee7 chore(gateway): replace deprecated asyncio.get_event_loop() with get_running_loop() (#11005) 0de6340a730eee9b65666aa2eb26f2db4dc2591e fix(docs): show sidebar on docs homepage bd7e272c1fd61d570f64845625827c5a99d69c14 fix(slack): per-thread sessions for DMs by default daef0519e95aee8f7123c8e4eb401e731c14e8c1 fix(google-workspace): normalize authorized user token writes f726b9b843408c3d9df593551192dffbaad4ae0e fix(browser): runtime fallback to local Chromium when cloud provider fails e0532be8ae47fb45c33fb9c0b85f5ffad47eaead fix(docs): add dashboard-plugins to sidebar navigation 50d438d1253c8a0e64c2978772d403ada254c3b0 fix(honcho): drop anyOf schema — breaks Fireworks and other providers 131d261a7499f5b6f5e754cca639ce30587918c0 docs: add dashboard themes and plugins documentation 01214a7f73eef4223a70e9a6359cbaa818608f52 feat: dashboard plugin system — extend the web UI with custom tabs 23a42635f06e35af8425a58b07486aa6b8ae365b docs: remove nonexistent CAMOFOX_PROFILE_DIR env var references (#10976) e07dbde582e6c80f80eb0d3040add8331832a87b Revert "fix: enable TCP keepalives to detect dead provider connections (#10324)" e66b3733512b692f4c024296d3e3017739a661ae fix: word-wrap spinner, interruptable agent join, and delegate_task interrupt (#10940) f05590796e55e377bc045003083334154d32ee22 fix(telegram): increase cold-boot retry budget and cap backoff c928ebb1b1a1c22cb4fba0069d645697ebd591d5 retry transient telegram send failures 333cb8251b4202e8cdcf3a296ff3850a5591fc94 fix: improve interrupt responsiveness during concurrent tool execution and follow-up turns (#10935) 3f6c4346acb5d2ddb398df068e085d7a1cab8465 feat: dashboard theme system with live switching 9a9b8cd1e4dff30e28eb7945a157883fb4f91fec fix: keep rapid telegram follow-ups from getting cut off 12b109b6640a573abf685d3c881cab2a9fc5c3aa fix: enable TCP keepalives to detect dead provider connections (#10324) (#10933) f2f9d0c81905758e316249b49629ed3ca716c220 fix: stop /model from silently rerouting direct providers to OpenRouter (#10300) (#10780) e4cd62d07df101fa9748b650435d52f0c36f52eb fix(tests): resolve remaining CI failures — commit_memory_session, already_sent, timezone leak, session env (#10785) 0c1217d01ec3a8420391e14ea859f97c95ee624d feat(xai): upgrade to Responses API, add TTS provider 330ed12fb115efe350711260d5b8707769580929 chore: add nosleepcassette to AUTHOR_MAP 3c859e35dce3df797593a10581983cc86086cb55 fix: skin spinner faces and verbs not applied at runtime 5c397876b9e1a91348d19fd0a94d14ed7d8857bf fix(cli): hint about /v1 suffix when configuring local model endpoints 8798b069d374b6a58b6c77e4a2f3c14871175768 fix(agent): sanitize surrogate characters from API responses and before API calls 3522a7aa135487882f7dea921b0b7456caf75154 feat(ollama): pass think=false to custom providers when reasoning_effort is none 8011aa31babb95cbb814b522abd9a5ccbbfb6b31 fix(agent): continue ollama glm truncation replies 1b61ec470b1b0b8a318a57fd7a9f5925143652e8 feat: add Ollama Cloud as built-in provider 8021a735c283b1b9a062ba6e64dae0090214482b fix(gateway): preserve notify context in executor threads 4093982f19578008a5aefd8f4c1dac971ec9286d fix: recompute Copilot api_mode after model switch 721e0b96cd59e90b0951e098c401ef2935c57527 add length eviction if no compression 8e06db56fd6677d02d70d6e6db476a99aff7e6d5 chore: uptick 00c65280c44d31f47a5597a8e89e706102f10e32 feat(xai): add video generation, image editing, and X search tools 0cf7d570e2be48e125d101c6a41aca837bb0b91c fix(telegram): restore typing indicator and thread routing for forum General topic 3ff18ffe1408b37baa1d604dadecd20fe455c55e fix: add circuit breaker to MCP tool handler to prevent retry burn loops (#10447) (#10776) 36b54afbc4dfc4609943744cdcea25a012006dda feat(plugins): add dispatch_tool() to PluginContext (#10763) 9b7bd4ca61685ae6c2b9205014977c68643fd9e1 docs: add missing pages to sidebar navigation (#10758) 8a246910bf0fc10ff2922f633715707a596af320 fix: reject startup when no provider configured instead of silent OpenRouter fallback (#10766) c5acc6edb612d0e953d19831b5a22526baeeb8ab feat(telegram): add dedicated TELEGRAM_PROXY env var and config.yaml proxy_url support ff5bf0d6c8634cd91d0d06c44e0e3a7254072f5a fix(tests): resolve CI test failures — pool auto-seeding, stale assertions, mock isolation cb31732c4f3a2326e385194184b2215744bf6801 chore: uptick 9f759d177125404f8123bcd9b54fc072eb1225b1 fix: match the url as prev cedaefce9ed9a54c29c36df6783f454532358e1a Merge pull request #10704 from NousResearch/revert-10686-feat/vercel-deployment 4683b97d92a40ad8d46181ebf28775325c5043c0 Revert "feat: add vercel deployment, remove old landing page (#10686)" 51d5c7648852cdc2674d3b00b43ee0300cca62c3 feat: add vercel deployment, remove old landing page (#10686) 139b9ae1e3e093400439ee0dd2c220510ebb7991 feat: add vercel deployment, remove old landing page fb903b8f08c8c9df2b4d8e0175d50eb888de62f8 docs: document register_command() for plugin slash commands (#10671) 498b995c1360dc52f91f9c5b0305131c3636745c feat: implement register_command() on plugin context (#10626) df714add9d797361d0d8fae975fef25f5e52ca60 fix: preserve file permissions on atomic writes (Docker/NAS fix) (#10618) cc6e8941dbd7d9887f2aa7d2e23281d946f83309 feat(honcho): context injection overhaul, 5-tool surface, cost safety, session isolation (#10619) c1647dadba6c64f4907c3f451ed85c0bfb8a695a fix(tests): resolve 53 CI test failures across 8 root causes 00ff9a26cd174328c70bb7f1bdae0cb0881941d9 Fix Telegram link preview suppression for bot sends 192ef00bb2eca43ffe4707e9f1ca466aa2988afc docs(config): document telegram link preview setting 5221ff9ed139b1a468b8f5066942e75e24908c14 fix(telegram): tolerate bare adapters in link preview helper aea3499e5659d7e82ff3f80dd516612f6f57bfb5 feat(telegram): add config option to disable link previews 06d6903d3cf16010e89914334aabcceab263d260 fix(telegram): escape Markdown special chars in send_exec_approval 4936b1914429d6283141f6e4f5872dfff86e49cd fix(cron): guard telegram import in _send_to_platform against ImportError 63548e4fe1c15f69a14fa0432e8355b7d7385f27 fix: validate Telegram bot token format during gateway setup (#9843) 92a23479c06fca902a51d697c60bf17d1159fbe1 fix(model-switch): normalize Unicode dashes from Telegram/iOS input c6398fcaab596ee41404cb09e27dc098d09803b9 fix(prompt): list all supported Telegram markdown formatting e7c61baaa15644345a852d40513d49ef24216c75 fix: include telegram dependency in termux bundle 5d3a81408d8196d87780d397f8973637c3d09431 docs: document Telegram ignored threads 21cd3a3fc055af8b06cea9fc444bde4061a16a77 fix(profile): use existing get_active_profile_name() for /profile command 77435c4f13858ebfe3f71c9cc902f20d4647fe1e fix(gateway): use profile-aware Hermes paths in runtime hints 5ef0fe1665611ebe81235ddec3e5e74a9fc1993e docs: fix stale hermes login references in hermes-agent skill (#10603) c850a40e4e1226b381aa9d76e71efd97807e7d8d fix: gate Matrix adapter path on media_files presence 276ed5c399d247022e5b033808daade2c8969ae1 fix(send_message): deliver Matrix media via adapter 55c80986010880af92660645477585abfcbb4241 docs: update openai-codex setup reference (#10471) b750c720cdd3a0c04d5c5fe4829ddb0ba577d85a fix: three CLI quality-of-life fixes (#10468, #10230, #10526, #9545) (#10599) a6ad8ace29ebd425b4aa76b0744ae34667ffd883 chore: add handsdiff to AUTHOR_MAP 933fbd8feac5716da39a879feae7ba2560f70bf5 fix: prevent agent hang when backgrounding processes via terminal tool 33ff29dfae3f8941d5dca717f9aa36db0f9ba505 fix(gateway): defer background review notifications until after main reply 44941f0ed15b221490860768f9548f0bba63ccf1 fix: activate WeCom callback message deduplication (#10305) (#10588) 4fdcae6c91cd85cc7361d76bb44bf7bc5a9f92c0 fix: use absolute skill_dir for external skills (#10313) (#10587) 8a5e9b214b719b2278c7af0c6261a72f68db54af feat: automatic Telegram bot creation via Managed Bots (Bot API 9.6) 63d045b51af985f9a0d6840b02917128b5869d33 fix: pass HERMES_HOME to execute_code subprocess (#6644) 097702c8a734926669d6de52680bceed40348924 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor e402906d48e91d50631aba11aa029d08f6ea9556 fix: five HERMES_HOME profile-isolation leaks (#10570) c483b4cecaa9d80688184f169564563169dc774a fix: use POSIX ps -A instead of BSD -ax for Docker compat (#9723) (#10569) 43f4de02162d626604457f10557b64a2f48ae8cc feat: add strategic re-evaluation guidance to system prompt 9d9b424390c429d92f6bb7261d498d3417132952 fix: Nous Portal rate limit guard — prevent retry amplification (#10568) 0d05bd34f831c7c0e2635a5001344d413e039c50 feat: extend channel_prompts to Telegram, Slack, and Mattermost 620c296b1de23ff574ce3ebb01163657dafe27b5 fix: discord mock setup and AUTHOR_MAP for channel_prompts tests 90a6336145cc48bcff945b159b7a9719dc933ef1 fix: remove redundant key normalization and defensive getattr in channel_prompts 2fbdc2c8faa263360961c8c05473be80e300555e feat(discord): add channel_prompts config 2918328009ca6ce556fdc3d7fcf8c0cc9a0a3972 fix: show correct env var name in provider API key error (#9506) (#10563) 0cb8c51fa582e382a5365cbc4bd9a3f7eb2fe280 feat: native AWS Bedrock provider via Converse API 21afc9502aa3c78fb88496d0dc7c68598729b6fa fix: respect explicit api_mode for custom GPT-5 endpoints (#10473) (#10548) f4724803b42d4394270821572016751b5082fb08 fix(runtime): surface malformed proxy env and base URL before client init ee9c0a3ed07d442b72f7330f91d834da201640a4 fix(security): add JWT token and Discord mention redaction (#10547) 72aebfbb2465c8fcbe689ef37013658ee89273e4 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor c9f78d110ad2f29b931fb9622fa14509809f6441 feat: good vibes indi 1d4b9c1a7400d54d2178a327981ca65d25f7cb73 fix(gateway): don't treat group session user_id as thread_id in shutdown notifications (#10546) de3f8bc6cef8eb0cd0a0b41e6750a110f7ac87f5 fix terminal workdir validation for Windows paths eb3d928da6a8b3dd5823b159e4d9cff250779d21 chore: add counterposition to AUTHOR_MAP f1df83179f77776bb56dbda30e144e7728beb552 fix(doctor): skip health check for OpenCode Go (no shared /models endpoint) ddaadfb9f0770fa2bff2d73785b4957fbb5619d2 chore: add helix4u to AUTHOR_MAP 96cc556055f5c6ab382197f86d675f59557a3a7e fix(copilot): preserve base URL and gpt-5-mini routing 3b4ecf8ee70fcaca38a75f897a8f6c5ef725aafe fix: remove 'q' alias from /quit so /queue's 'q' alias works (#10467) (#10538) 93b6f4522479a7c92ef8dc6a75d71c8c83b7e7f1 fix: always retry on ASCII codec UnicodeEncodeError — don't gate on per-component sanitization 902f1e6ede20dd618d64aa6dccced966675f8316 chore: add MestreY0d4-Uninter to AUTHOR_MAP and .mailmap efd1ddc6e1632871aa7771af8f2df5bed2cd2ed0 fix: sanitize api_messages and extra string fields during ASCII-codec recovery (#6843) d4eba82a377a72c6b08212c49720c4905e04226f fix(streaming): don't suppress final response when commentary message is sent 23f1fa22af4cf94b6d6cb5bafa1326e1b58c9557 fix(kimi): include kimi-coding-cn in Kimi base URL resolution (#10534) 096260ce7852910470d6cc142e87174893db17d1 fix(telegram): authorize update prompt callbacks 18396af31ede5ce9127c966281eb748d89192156 fix: handle cross-device shutil.move failure in tirith auto-install (#10127) (#10524) baa0de76493520805f65c78d3feaaba34b4c812b Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 57e4b61155285cb672f9e179fe668bb0f0f6f703 feat: change to $ when in ! mode 1b12f9b1d6cee2d9c645b05180c617db0140f217 docs: add terminal bypass test to Out of Scope section 407d27bd82ba6d27541d34a0f7b684d3f07f164b feat: add SECURITY.md b3b88a279b970c20d83ad8003a1e96e6a5fb0f76 fix: prevent stale os.environ leak after clear_session_vars (#10304) (#10527) e36c804bc2a6163117c82d05dbecf5fed67f8f2c fix: prevent already_sent from swallowing empty responses after tool calls (#10531) a9197f9bb18caa9a74162e63bdc18113b444261b fix(memory): discover user-installed memory providers from $HERMES_HOME/plugins/ (#10529) 22d22cd75c656bf90f2a179e7df73d06654ed57f fix: auto-register all gateway commands as Discord slash commands (#10528) c4674cbe211006e912b76533163eac8735801ea9 fix: parse string schedules in cron update_job() (#10129) (#10521) 305a702e09db54ee850038ea5037cce4ed510e3a fix: /browser connect CDP override now takes priority over Camofox (#10523) 824c33729da36d1dbebb0920a1980ec6d86a9344 fix(session_search): coerce limit to int to prevent TypeError with non-int values (#10522) 91980e35183017998e30e23a9d9abadc02274d17 fix: deduplicate memory provider tools to prevent 400 on strict providers (#10511) 861efe274bbe9e5e8c3929db0da07943fae0d2be fix: add ensure_ascii=False to all MCP json.dumps calls (#10234) (#10512) 19142810edfd2d3dbe947692732b868d57b9a18e fix: /debug privacy — auto-delete pastes after 1 hour, add privacy notices (#10510) 2edbf155608ae7ea70b3d8fc90ac01b94d311fbc fix: enforce TTL in MessageDeduplicator + use yaml for gateway --config (#10306, #10216) (#10509) af4bf505b3754b01a0388907f259826970431ebc fix: add on_memory_write bridge to sequential tool execution path (#10174) (#10507) 46f7b38bb8c0547a638fa9851d8111a19ba1d88b fix: add on_memory_write bridge to sequential tool execution path (#10174) 93f6f66872dc2eecc664c1e37d6231268497f388 fix(interrupt): preserve pre-start terminal interrupts a418ddbd8b9e7d3d158ac2dcb7ca281d1c9f602f fix: add activity heartbeats to prevent false gateway inactivity timeouts (#10501) 0d25e1c146092b36f26205f65e93c25e5147a646 fix: prevent premature loop exit when weak models return empty after substantive tool calls (#10472) 6391b46779e4457103a841714104207a4b8e6ac9 fix: bound auxiliary client cache to prevent fd exhaustion in long-running gateways (#10200) (#10470) 53a024a9417c8e1104d55c8dc9625c9b66117c4f Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor cb7b740e32885db5ec471e8ea0966ade106bfc22 feat: add subagent details 4b4b4d47bcbf30a7ca62ab31aa1802a603773a8a feat: just more cleaning d1d425e9d0e0e37bc0855fe5a4142bac86a73b0d chore: add ZaynJarvis bytedance email to AUTHOR_MAP 7cb06e3bb3b4954277f993fa388f81e55f428202 refactor(memory): drop on_session_reset — commit-only is enough 8275fa597a702116a6a2cf1a9fa194d8874020ad refactor(memory): promote on_session_reset to base provider hook 7856d304f20303617453016ed9e818c729f6ee97 fix(openviking): commit session on /new and context compression f3ec4b3a16088d92beb3cccb1532a5007fe95959 Fix OpenViking integration issues: explicit session creation, better error logging 5082a9f66ca7c2bbefc11f845e7b9fa628ac4cf5 fix: wire agent/account/user params through _VikingClient 0c30385be2460a3417511ae657c22d3bf95596d1 chore: update doc 8b167af66bba0919e00ed20d55c208653e22815d feat: add ov agent header 990030c26ed6c6bb1ae63784fc03adededf7b1cf feat: add contrib map d2f85383e874db37e0a3f924ff35e03434099aaf fix: change default OPENVIKING_ACCOUNT from root to default 2dc5f9d2d387e345d1ac6e05766bcc99e3a115e0 fix: light mode link/primary colors unreadable on white background (#10457) f61cc464f0a150313959d66dc9c87f27f18e0b8b fix: include thread_id in _parse_session_key and fix stale parts reference 2276b721410d81241bbf6053277f8d376c9b8633 fix: follow-up improvements for watch notification routing (#9537) dee592a0b1c4ce7ae65a5bea3e996dc42a817308 fix(gateway): route synthetic background events by session da448d4fce50b8ea1f07f93e475a3e59a2b6c867 test(cron): add regression test for credential_files ContextVar propagation (#10462) aa398ad6553031da2e80d08779904725fe48b992 fix(cron): preserve skill env passthrough in worker thread 46cef4b7fa099b5d1c44ace9bb7567656884cd5a Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor e47abf5c6900c44f14665a5a5ec2f897f51c0236 fix: follow-up improvements for watch notification routing (#9537) f871ec5a699403630c7ae38e6fee56d0788ffd10 fix(gateway): route synthetic background events by session 422f2866e60daa617688043fd9758c6380711d43 docs: restore sidebar entries removed by PR #9931 9931d1d814a432768ec897d05fba0b24ee1c6991 chore: cleanup cc15b55bb937206e552056e1cbda28cb8d64276a chore: uptick 371166fe2630682fafd6067349a48c2e1952a397 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 33c615504d7256c015f0db34fcb59210d3dce773 feat: add inline token count etc and fix venv 722331a57de9e18f134c896d733870b4a493dc84 fix: replace hardcoded ~/.hermes with display_hermes_home() in agent-facing text (#10285) 41e2d61b3fccc7bd9c3c060d66d80ee21c2dcb8c feat(discord): add native send_animation for inline GIF playback 4da598b48ab5be2fee8d24c9d3f9cf9abb095b91 docs: clarify hermes model vs /model — two commands, two purposes (#10276) 33ae403890718a341a780e4a19001b1fb5bcdf76 fix(gateway): fix matrix lingering typing indicator 47e6ea84bb362f951e5d603ec7672731c0539c4e fix: file handle bug, warning text, and tests for Discord media send 4bcb2f2d2632011008b11d40fe2aca32c94585e0 feat(send_message): add native media attachment support for Discord 34d2a332ef82dea66503fa5ad2c45d799a31d0c0 fix(models): use curated list for Nous in provider_model_ids() 1c4d3216d3855848a632847306c96f4c3090b259 fix(cron): include job_id in delivery and guide models on removal workflow (#10242) dedc4600dd31770612af213167f7b4808fafa3d8 fix(skills): handle missing fields in Google Workspace token file gracefully instead of crashing with KeyError 8bc9b5a0b4c6ae8ceb33b8a8d4c8d813a280eb6e fix(skills): use `is None` check for coordinates in find-nearby to avoid dropping valid 0.0 values 2546b7acea9b294429396e9196374127acd71024 fix(gateway): suppress duplicate replies on interrupt and streaming flood control 7b2700c9afca19f3653a0af98d5ee35dd39bc9c6 fix(browser): use 127.0.0.1 instead of localhost for CDP default (#10231) a4e1842f1217983f05fd40f544f79b8a785324b4 fix: strip reasoning item IDs from Responses API input when store=False (#10217) 53cca7e50b43dbbd58651dce3277dd34237fff73 saving d441527af91caf86e21213ec6e886bd6ff0e6aef first-version e69526be799edcfa02c25bf8966af2d8cce65ee3 fix(send_message): URL-encode Matrix room IDs and add Matrix to schema examples (#10151) 180b14442f88003cabb11f7183e2bb57e81f5f1e test: add _parse_target_ref Matrix coverage for salvaged PR #6144 03446e06bbfe60bff074d1bbb5336bdd6849ddc3 fix(send_message): accept Matrix room IDs and user MXIDs as explicit targets df7be3d8aef682e1cd03e028548fbad7a2d132a2 fix(cli): /model picker shows curated models instead of full catalog (#10146) 42aeb4ecacb956e5dfcc6a70b1356276a8e53afb fix(dashboard): include cache tokens in totals, track real API call count 857b543543ab5faeef5ba851c3878fe289493ad4 feat: add skill analytics to the dashboard da8bab77fb762bc554f45da3cc2eb3a823983d4b fix(cli): restore messaging toolset for gateway platforms 9932366f3cac1b85eb1dd8a70ca32fffdc973512 feat(doctor): add Command Installation check for hermes bin symlink 029938fbed2e74ea818cd65df454219c91370c60 fix(cli): defensive subparser routing for argparse bpo-9338 (#10113) cc7102cb774d35663c7fd522dc50751d09b1a5f1 docs: add PORT_NOTES.md for baoyu-infographic 772cfb6c4ec7770759b4e0c8552b934fe9ff897d fix: stale agent timeout, uv venv detection, empty response after tools, compression model fallback (#9051, #8620, #9400) (#10093) 5d5d21556e129ecab93b38bfe0a5b776249cf5f0 fix: sync client.api_key during UnicodeEncodeError ASCII recovery (#10090) 9855190f23a2354b1c796b83bd58582946485c7d feat(compressor): smart collapse, dedup, anti-thrashing, template upgrade, hardening 50c35dcabe9f6f909630a44cf007ae39d2ddbaf3 fix: stale agent timeout, uv venv detection, empty response after tools (#9051, #8620, #9400) 93fe4ead83bb72586118a91c34076ca615ae3368 fix: warn on invalid context_length format in config.yaml (#10067) a8b7db35b2173f9adef77fd46a0e06a080b2149a fix: interrupt agent immediately when user messages during active run (#10068) 561cea0d4a445952d6553286150e066a9a64d393 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 8548893d14724b8f1e1e74ca9315a86fc3ee8c08 feat: entry-level Podman support — find_docker() + rootless entrypoint (#10066) c5688e7c8ba4f46a0cbfad0b0be3a5ac5616350b fix(gateway): break compression-exhaustion infinite loop and auto-reset session (#9893) ba24f058ed34f5d6531246a87904601225c302b1 docs: fix stale docstring reference to _discover_tools in mcp_tool.py ef04de3e9851c1349e1a295eb3056557ab9e49e6 docs: update tool-adding instructions for auto-discovery fc6cb5b970f006dba448941ce5b3888fc36662fb fix: tighten AST check to module-level only 4b2a1a4337a0409d13146596a219b480e216471a fix(tools): auto-discover built-in tool modules 2871ef18078ba2464d9afebeaf3e7ad67e4d4a5f docs: note session continuity for previous_response_id chains (#10060) 5cbb45d93e8e70a91c517c8b89f7b817a02e5842 fix: preserve session_id across previous_response_id chains in /v1/responses (#10059) ca0ae56ccbb5a1308beece973b2c93c50075318e fix: add 402 billing error hint to gateway error handler (#5220) (#10057) 23b87c8ca82299ccdbcde30c6b53bbae84da93de chore: add zons-zhaozhy to AUTHOR_MAP 92385679b64ef0f34aca2ec1b1031c4e639622bb fix: reset retry counters after compression and stop poisoning conversation history 0c9715f2ff0632bb7c52ef408d8cc35aacbe011c fix: 24h cooldown for 401/403 auth failures + user notification f71d6841ed822cd0248aed0b1dde869eb7038e21 fix(api-server): reuse session_id across /v1/responses chain 82f364ffd1d7f85cb4faa0fbfd2095ada0a78f84 feat: add --all flag to gateway start and restart commands (#10043) 31d06206630669a27ca0cc4f0261a414d3e8af1e chore: add simon-marcus to AUTHOR_MAP cf1d71882304c5c37f9194c389ac2159c23a1c4a fix: keep batch-path function_call_output.output as string per OpenAI spec 302554b1588370dde48ecd78b9b64e2f6fd8c1fe fix(api-server): format responses tool outputs for open webui d6c09ab94a54a7aafd6bfbeebac4b9d965152d17 feat(api-server): stream /v1/responses SSE tool events 496bfb3c59ab06caf71df1197e8a2dc67ff2e2a3 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 99d859ce4ab116f7f6dc5dca57a08dda4aa7bd1a feat: refactor by splitting up app and doing proper state da528a8207d6badafa00bf413b365c9bc1ce1acc fix: detect and strip non-ASCII characters from API keys (#6843) 677f1227c37db376ed12136e286772e5cc65605a fix: remove @staticmethod from _context_completions — crashes on @ mention 4cbf54fb332a85550f43118acc89277516c66ac7 chore: uptick 77cd5bf5653a913b94fec77e3a2ec2aff591263f Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 4610551d742e3adb8c01bf48ca15e2188b396061 fix: update stale comment referencing removed _sync_mcp_toolsets 498cb7a0fc2643ccff6be942759cab935aa805d4 chore(release): map greer guthrie attribution c10fea8d264e3289c4c8f5c0b35468aca849b123 fix(mcp): make server aliases explicit cda64a59612f2cc6b862a112f4f276ebcd29df75 fix(mcp): resolve toolsets from live registry 2a98098035ca70459570e99b6b26e1a3ca6fbd27 fix: hermes gateway restart waits for service to come back up (#8260) 64e7226068a97c2329af84be702747704a41634e feat: add supports_parallel_tool_calls for MCP servers 6c8930643704c1590d528ca18520d18defe7f4aa fix: break stuck session resume loops after repeated restarts (#7536) bad9fe245276e50f50cce3a636deff9ce26ab4dc add generic gateway startup readiness checks 847d7cbea582cf6d15f6c280bdf28990b1369df5 fix: improve CLI text padding, word-wrap for responses and verbose tool output (#9920) a9c78d0eb0efbb775cea8397d0e24407ad8a83ff feat(setup): add recommendation badges to tool provider selection (#9929) e7475b15829faa47bf99dd1ebc8d7370e81ddf6a feat: auto-continue interrupted agent work after gateway restart (#4493) ac1f8fcccdb303d9a71494e709db65420e0b2bff docs(termux): note browser tool PATH auto-discovery 56c34ac4f73d145cef6eb3847855573a13e56588 fix(browser): add termux PATH fallbacks 3ca7417c2a6fe7fd2c0a64e8324a1fb7fd89bf55 chore: add areu01or00 to AUTHOR_MAP cfa24532d3a5bf3e199fcac3316a1479cdfe418b fix(discord): register native /restart slash command b24e5ee4b0414bc775b2f64883de71c7105e74f7 feat(google-workspace): add --from flag for custom sender display name (#9931) 3b50821555970c79d3c89ea5c33c7da26a3e774e feat(xai): add xAI/Grok to provider prefix stripping 10494b42a1b012bbfa2e18c0d665af90a57531c0 feat(discord): register skills under /skill command group with category subcommands (#9909) 039023f49747599199c8aee26a7a73b3640f9b6a diag: log all hermes processes on unexpected gateway shutdown (#9905) bf54f1fb2f3eca2f352096ee2f498abb968a06d1 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 6448e1da23e938e5ef5672defc688777fbe5ef11 feat(zai): add GLM-5V-Turbo support for coding plan (#9907) 3bc661ea292d4a574f8d76ec01d01cb89131f8cf fix: model et al selection on enter 1e5e1e822bc7bbf2a9bdefe12384745dc8730c23 fix: ESC cancels secret/sudo prompts, clearer skip messaging (#9902) 55ce76b37285ea2e86f3c4529f0c688143e6b02e feat: add architecture-diagram skill (Cocoon AI port) (#9906) 045bcb324100224ccd611b15941422a0a9dab19e feat(skills): add baoyu-infographic skill — 21 layouts × 21 styles 1525624904159e7c2d6ac3feef951e27ad0d23bb fix: block agent from self-destructing gateway via terminal (#6666) 353b5bacbda4317e527a66c9144cb2052695072f test: add tests for /health/detailed endpoint and gateway health probe 139a5e37a47972730f9d716ef9d96f42b32a21c3 docs(docker): add dashboard section, expose API port, update Compose example 673acf22aeb708122a17af6cac4f0c65c4d25f2c fix: override stale 'stopped' state when health probe confirms gateway alive 6ed682f111717925f57621eb41d8c0c935f9c2e2 fix: normalise GATEWAY_HEALTH_URL to base URL before probing 45595f4805d1674f9b29a79544f1dbac9c0665a1 feat(dashboard): add HTTP health probe for cross-container gateway detection 397386cae2e2e4903aa48030c5c5c0a1c4d9126a fix: gateway auto-recovers from unexpected SIGTERM via systemd (#5646) 5ad28a2dbe27e5e820b08e0d2dbddb09cd52d889 merge: resolve conflict with main (i18n refactor) d5949d0d160d8e1621a70f7edc021d135552be98 docs(docker): add dashboard section, expose API port, update Compose example 88d590ce5ed30e450f632b28c750a255ff649522 fix: override stale 'stopped' state when health probe confirms gateway alive eed891f1bb9c2da620b617cf64f63a2ee49f6aff security: supply chain hardening — CI pinning, dep pinning, and code fixes (#9801) 9bbf7659e98928d551fb1b7a61020d4c694953ae chore: add Roy-oss1 to AUTHOR_MAP 1aa76620d464f5ec105e01a67d0e336b5612feaf fix(feishu): keep approval clicks synchronized with callback card state fa8c448f7dbd3f18639b65f51d21114069ca0537 fix: notify active sessions on gateway shutdown + update health check aaa2f78b1824154ca16c4e0a1d4457d31f927f53 Merge branch 'main' into compaction-secrets-preservation 52c11d172a49c520e04512d4008bb8c931429755 feat: add scrollbar and fix selection on scroll 95d11dfd8e6e86e97657598450efe065f33e9cdd docs: automation templates gallery + comparison post (#9821) a37a095980e51e26731ce85b565839154feaa127 fix: detect qwen-oauth provider via CLI tokens in /model picker 0bd3f521ae253e751aa643811c40ae9a8bae783d fix: detect copilot provider via gh auth token in /model picker 3e0bccc54c7ccc2ee27c16ab439de56aa66bc246 fix: update existing webhook tests to use _webhook_register_url 326cbbe40ea05bdef1871ac60c57f10abf5bdf41 fix(gateway/bluebubbles): embed password in registered webhook URL for inbound auth 8b523568492a68ea0c8af1108ff4bb9be7c28e45 fix(gateway/bluebubbles): fall back to data.chats[0].guid when chatGuid missing 064f8d74de083255086e4739583d48b9b1be19aa fix(gateway/bluebubbles): remove invalid "message" from webhook event registration 99bcc2de5bf433d799ea7af782c72ac9bdfd6595 fix(security): harden dashboard API against unauthenticated access (#9800) b583210c974b7143cccb8e32a3e50992393b5a66 fix(gateway): fix regression causing display.streaming to override root streaming key 9804aa7443cc1c1e4a427cde34834f7a7ab9e36a fix: scrolling while selecting 8bb5973950073aa0696d885223b41674c41d0440 docs: add proxy mode documentation 90c98345c94c3098011521db3aa3374c71607436 feat: gateway proxy mode — forward messages to remote API server 1ace9b4dc4b472e812cb276868eace6423e40fed fix: memory_setup.py - write non-secret env vars, check all fields in status e964cfc403bf66fe5b9b4f3153019401d736f9a2 fix(gateway): trigger memory provider shutdown on /new and /reset 9bdfcd1b937bf72d047d7bea0531c370190356ca feat: sort tool search results by score and add corresponding unit test b86717129189c413efbe250c2a2fbf648c3165b1 fix: preserve profile name completion in dynamic shell completion c95b1c5096b40c5bb04afad3da20a0442cd76225 fix(install): add fish shell support in install.sh a686dbdd26f7cc2e181ef27f45555006c8ef5add feat(cli): add dynamic shell completion for bash, zsh, and fish b21b3bfd68b02998cdccdc97b801abab5d8fa8d7 feat(plugins): namespaced skill registration for plugin skill bundles 4b47856f90b6143c3d3e142d453ad082f566f730 fix: load credentials from HERMES_HOME .env in trajectory_compressor 8a002d4efcdb39c405f3e6417cf5f95e075b0803 chore: add ChimingLiu to AUTHOR_MAP 8ea9ceb44c570a29b23b60dc83953ccacc090f4d fix: guard reply_to_text against DeletedReferencedMessage 7636baf49c7e8cba192625788b523293e5c859a8 feat(discord): extract reply text from message references 0e7dd30acc02b4d21ab2debb7eb008a7b853d063 fix(browser): fix Camofox JS eval endpoint, userId, and package rename (#9774) 5f36b42b2ed3b14a1620f4d0c6918c121698e821 fix: nest msvcrt import inside fcntl except block 420d27098f4c3670157022b130e66ddd6aba49cd fix(tools): keep memory tool available when fcntl is unavailable 449c17e9a920e553b17a6ed0f18fd3eff4f976fa fix(gateway): support Telegram MarkdownV2 expandable blockquotes 70611879deaa5d0fea46a58c05b17c2f62a12f97 fix(cli): fix doctor checks for Kimi China credentials 7aed09e1ba7ca1e34ddbcf7d5fb7bf1b3787880c fix: ctrlc dd2b0b47758eb672e798196f3101995a5dd07948 chore: uptick ea2d5754aba9bd868c5a91ebb81df49f3a84c1b6 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 9a3a2925edad7c8784e36672f896c0eb316b7a86 feat: scroll aware sticky prompt 206259d1118bace16a53a40f06dc5466c94ff737 Merge pull request #9701 from NousResearch/fix/dashboard-routing-v2 4ffaac542bedbcdb2d4bf8f45830d428ad49ef32 fix(web): i18n fixes for sidebar and dropdown labels e88aa8a58c03fea8e1f90dec8836a7daff08d7bc feat(web): re-apply dashboard UI improvements on top of i18n ef32968408d584f7a39eb983aa7fc24346b9d781 Merge branch 'main' into compaction-secrets-preservation 16f9d0208429a16db983634dd11f62852faf329a Merge pull request #9475 from NousResearch/docs/fix-docker-version-command 7ad47ace51ef28ad613e5f7152a9d0401061636e fix: resolve remaining 4 CI test failures (#9543) b4fcec64129d721d08ac650a5f3c8e3a2968f2de fix: prevent streaming cursor from appearing as standalone messages (#9538) 2558d28a9bd90b95019a7c289db89bd0dd9f2d8e fix: resolve CI test failures — add missing functions, fix stale tests (#9483) 2cfd2dafc68e6c56e509af8bbc1e45a1718ebef1 feat(gateway): add ignored_threads config for Telegram 1acf81fdf5e3e820805b6635a39c9befa6c8318c docs: add QQBot to all 14 docs pages (full platform parity) 8d545da3ffdfff7ba18c20442e893356fcb3ea86 fix: add platform lock, send retry, message splitting, REST one-shot, shared strip_markdown 4654f75627aeb50600786e7ce20f8431cf02ffa8 fix: QQBot missing integration points, timestamp parsing, test fix 884cd920d406ffcda9678cb87f5b034187baca50 feat(gateway): unify QQBot branding, add PLATFORM_HINTS, fix streaming, restore missing setup functions 87bfc28e701e01128966c148db784c2ddc9b2373 feat: add QQ Bot platform adapter (Official API v2) eb44abd6b1b0124a28fb3e582f641c32668b5c5c feat: improve file search UX — fuzzy @ completions, mtime sorting, better suggestions (#9467) c7e2fe655a60ac8101b2536f09181b24fa7b4beb fix: make tool registry reads thread-safe 6dc8f8e9c031ff0a6f66e9fe713f9cce1cf9bf0d feat(skin): add warm-lightmode skin from PR #4811 bc93641c4fac3a099f86698b3bca6afa8d194059 feat(skins): add built-in daylight skin 9ffc26bc8fa7eacd27bb0851ea438f9f6d68c350 docs: update docker version check command 30c089a7e95499a3e6c385c36c5e95703c4d2637 fix: normalise GATEWAY_HEALTH_URL to base URL before probing a2ea237db22580f6442dda07964f2bbb94b2fe0d feat: add internationalization (i18n) to web dashboard — English + Chinese (#9453) 19199cd38d826ad146ee9e4a0cdfed78e347ff10 fix: clamp 'minimal' reasoning effort to 'low' on Responses API (#9429) 38ad158b6bd3ac4c2e68745f4f03916ece3b2305 fix: auto-correct close model name matches in /model validation (#9424) 35424f8fc1330f8202828a1bf5194fb54b5f3105 chore: add bennytimz to AUTHOR_MAP a91b9bb855e02b6b4fd662ef4bce1f87dee92e18 feat(skills): add drug-discovery optional skill — ChEMBL, PubChem, OpenFDA, ADMET analysis d6314318721cc8f3eba6e1a6138ccc03355764bc feat: prompt for display name when adding custom providers (#9420) cdd44817f27e6ac330a1b6b3582f0969dfa689c3 fix(anthropic): send fast mode speed via extra_body 110892ff69cea1da7da9598a13ae40f67f68d1b1 docs: move Xiaomi MiMo up in README provider list d988343570f84589683d3792d16ffae87ec887fa fixup some compression stuff 28c39fda3da4ee2445b6d1f57d9d3abbc2f4efff feat(dashboard): add HTTP health probe for cross-container gateway detection 3de2b98503c14de1a9b23f3afafc778096c7802e fix(streaming): filter blocks from gateway stream consumer 43dee2e1cfb3b9fc87a2d560eeae72e336fd3af8 update for rl overrides e08590888a213885043fe530946744d23351614a fix: honor interrupts during MCP tool waits 69d619cf89b1a5ce556e2e36839a6d1a6129ddc8 docs: add Hugging Face and Xiaomi MiMo to README provider list (#9406) f0b353bade7ab7a9ff43bb715b72f36f0473ffb1 feat(skills): add fitness-nutrition skill to optional-skills 62fb6b2cd82463cb00fba9ef051e917a1affe017 fix: guard zero context length display + add 19 tests for model info 8fd3093f4917a032e6c996f6f88189b304f9bb6a feat(web): add context window support to dashboard config eabc0a2f665232f0af3cb7573091771c9daa97a9 feat(plugins): let pre_tool_call hooks block tool execution ea74f61d983ebdfd6a863c45761d1b38081f1d08 Merge pull request #9370 from NousResearch/fix/dashboard-routing 943c01536f51c2051d2b8ac5881b1270279382b2 feat: add openrouter/elephant-alpha to curated model lists (#9378) dd86deef137a39aed934175bf80c9189ad88a94f feat(ci): add contributor attribution check on PRs (#9376) 5719c1f391c27823fc16a5eee16dd4cae44f9a04 fix: add 75 contributor email→username mappings + .mailmap (#9358) bc3844c90721f9667c5ff547869e7f4b77cf839e feat: react-router, sidebar layout, sticky header, dropdown component, remove emojis, rounded corners c189d5e98bf1f0be625fcb9e3e92485ab6141aec fix: pasting 7354a2dc26fdb2062515a5b802eb03443924c286 feat(skills): add fitness-nutrition skill to optional-skills 5621fc449a7c00f11168328c87e024a0203792c3 chore: rename AI Gateway → Vercel AI Gateway, move Xiaomi to #5 (#9326) 6bbac046a7b0aef7a118bac96e9c2c985155a6a1 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor bbc7316007fb24151e2e9eff610a77552070bf84 feat: add cur cwd 35dbb1da3fa526fb6e89e8886329f304e5e6b284 chore: uptick 0cc7f79016cab874da869587db09f52f7330ce2d fix(streaming): prevent duplicate Telegram replies when stream task is cancelled (#9319) d15efc9c1be088de7b97bfdb658858788cb2b410 fix: correct GPT-5 family context lengths in fallback defaults (#9309) 6d6b3b03ac022ddab59255c3ff92f389a28f2f27 feat: add clicky handles 1b573b7b21a86b6e9dc74a6be73c2938a489b054 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 8369bc9db2ceedea8040d692be31a09cc562799b Add hermes debug share instructions to all issue templates f6626fccee0c426a56a4cfa2c3dc647dda70301f refactor: remove provider tier system — flat picker in hermes model (#9303) f324222b79bb8db6cf3199c196db8795376a0f20 fix: add vLLM/local server error patterns + MCP initial connection retry (#9281) 0a4cf5b3e16e88a474dbe47711f6e8b1e0c6b0f4 feat(providers): add Arcee AI as direct API provider 78fa75845182431e8b867bd80d36e88e092e6971 feat(web): make Web UI responsive for mobile ac80bd61adedce5ed3537e9eef33d644e5003cb2 test: add regression tests for custom_providers multi-model dedup and grouping ec9bf9e378b7f78b7187ce2412ad880d20aa6e95 feat(model-picker): group custom_providers by name into a single row per provider 01f71007d096d5275311edbee2c797b0e1cc06f6 fix(config): include model field in custom_providers dedup key 7e4dd6ea02c101f79286bbaeb3eadaaa6c94b236 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 32cea0c08d049f5c9a5ec82771bac1610920fdfd fix: dashboard shows Nous Portal as 'not connected' despite active auth (#9261) 8d023e43edc998a1ea344d0a5b293b9365d191b6 refactor: remove dead code — 1,784 lines across 77 files (#9180) a66fc1365dc524a40c242fa4bc441d3203f7c22f fix: add files:read to SLACK_BOT_TOKEN description in config.py 448b8bfb7c95a2cd77c3eea0a289c0305b76f677 docs: add slack files:read scope def8b959b814d158c80e66d70f501adc3b6e9384 fix: add contributor audit script + fix missed contributors (#9264) f94f53cc221f4237bbf30c69582fbea9cb51c001 fix(matrix): disable streaming cursor decoration on Matrix 0ffb6f2dae4f387d89c6d26f2efafc7109859a77 fix(matrix): skip cursor-only stream placeholder messages aeb53131f3e09a7006d890cc4f78d5e729dbcc55 fix(ui-tui): harden TUI error handling, model validation, command UX parity, and gateway lifecycle b27eaaa4db79f548dad1258165c8ee3d2436f8a5 fix: improve ACP type check and restore comment accuracy 8680f61f8b199206d8a63cf15853c5bf6475d39a fix(copilot-acp): keep acp runtime off responses path 063244bb16ca070374c1f90358c18fb089445141 test: add coverage for plugin context engine init (#9071) c763ed58015168d47e4b9c773429cddb5c280c85 fix(agent): resolve context_length for plugin context engines 204e9190c41ff89d452f46fbe8292d3384873f4b fix: consolidate provider lists into single CANONICAL_PROVIDERS source of truth (#9237) 952a885fbfa2b7c4f12791bfeead6d25bb361036 fix(gateway): /stop no longer resets the session (#9224) d5fd74cac209b22ac731305948b4f5e52b5b47f0 fix(ci): don't fail supply chain scan when PR comment can't be posted on fork PRs (#6681) a6f07a6c377443e886a417a55363f8611ebd534c docs: fix hermes web → hermes dashboard in web-dashboard.md (#9207) a27b3c87259f9a3b85c3a459961455a6b35fbae3 add git to the container installed packages (fixes #8439) 783c6b6ed6d05755051e0beda26cfd5a49377901 chore: uptick 4a260b51fedc4dd244f242eea3ed00f5cd78404d fix: deep markdown parsing ebe3270430f6f8babedd7559d77f8fad52b3fc11 fix: fake models 77b97b810a5692656faad1e6d84138ad0a558145 chore: update how txt pasting ux feels 9db94e8521f2b372e2191a0c697b963fb6df2c9d Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor cac1b1b724cd21246e66d0947e188001efaa7ffb fix(ui-tui): surface RPC errors and guard invalid gateway responses 56524bb1d999d8a39b3a0cfb0ebeabe7f6540461 fix: nix local dev with tui fcae077d65916e1586d7c3e66557acdac5a84d2f redact secrets from summarizer output and add test coverage f7d57c010805b63a4be279cd63653a76a96312a6 fix: pass terminal_lifetime through to Modal sandbox timeout 1af2e18d408a9dcc2c61d6fc1eef5c6667f8e254 chore: release v0.9.0 (v2026.4.13) (#9182) dacb629028b791560dcc5295ec9ef6cfb03f9794 rollback uv.lock changes 0e60a9dc25ae32241339286a85ab69f949e3f24b fix: add kimi-coding-cn to remaining provider touchpoints 2b3aa362423b17630995601f332268774f8bb6fb feat(providers): add kimi-coding-cn provider for mainland China users ef180880aad336ec6c664f4a2c685ff299315694 fix: guard anthropic_adapter import + use canonical authorize URL 247929b0dd875e8e9b624de67e93cda0203f069a feat: dashboard OAuth provider management 1f804d171a520d086e7e6cbcf46c6e454a58c4fa redact secrets from serialized content before going into summarizer LLM 2773b18b56a73650136b14d739c407895d36dd8a fix(run_agent): refresh activity during streaming responses 0642b6cc53d371308110c8eaeec7b1b7298c02ee fix: clean newline paste thingy ba50fa30352cbd74dbb6c13263c94e1a6bb4511c docs: fix 30+ inaccuracies across documentation (#9023) 4ca6668daf2c4083cb1ecee0725543922cddd880 docs: comprehensive update for recent merged PRs (#9019) c449cd1af58c00225df29364a2c67c203d8b4582 fix(config): restore custom providers after v11→v12 migration 0dd26c9495e312a5f64b58d6d41d92e93610a22d fix(tests): fix 78 CI test failures and remove dead test (#9036) 5f4561b652917623333bbbba7368edb850d7404a feat: deep-research skill eec1db36f7cfbef0856d31f1f69a93df9b88b742 chore: preserve commands 713a614ea8e1f45e5c57fe1ea83a66fc98e54972 chore: uptick a27167fb30a57b2afe890ce1dd3984ba72a3b3dd chore: fmt a2c0597ae4f960d8595c331e562a7e30da2f187b feat: show thinking indicator while inferencing b909a9efef7df5d49e00e5145deb3e4db79fef9a fix: extend ASCII-locale UnicodeEncodeError recovery to full request payload 28a9c43f815dcc0e7994b97508023cc86a135bee fix: resolve key_env to actual API key value instead of env var name 76eecf3819ac62474301da8027cdac93278b073f fix(model): Support providers: dict for custom endpoints in /model 311dac197145e19e07df68feba2cd55d896a3cd1 fix(file_tools): block /private/etc writes on macOS symlink bypass 587eeb56b9f7d436a98cbf9425133a1984ce8ac9 chore: remove duplicate dead _try_gh_cli_token / _gh_cli_candidates from auth.py 2a9e50c104651a6b0bd849b6e08600cff42a9432 fix(copilot): resolve GHE token poisoning when GITHUB_TOKEN is set 14a5e56f6f0fff5dba9487cf25da61cbaa41a5d3 refactor: consolidate gateway session metadata into state.db 8ec1608642973fec9fcd90e962b11f9c18414247 fix(agent): propagate api_mode to vision provider resolution 92dc9f67de1380c26798e3a9c0022a0de264bfc8 fix: harden inline keyboard callback + edge cases + tests e3ffe5b75f0098f521b4674b930c4c21880be095 fix: remove legacy compression.summary_* config and env var fallbacks (#8992) c1809e85e7465239280ab8de7489fff29760bcd2 fix(gateway): handle stale lock files in acquire_scoped_lock 23f668d66e8638f4aec891e39efd87ff026ba867 fix: extract Gemma 4 reasoning in _extract_reasoning() (#8991) d8a521092bd1139ef9b465ac27bf29f64765c10f fix(weixin): rename send_document parameter to match base class a5bd56eae3abb8f0a316d1aba500ca3671997a54 fix: eliminate provider hang dead zones in retry/timeout architecture (#8985) acdff020b79bccb8f13c7a92ea1b9ee39d43f767 test: add multi-word query tests for truncation match strategy a5bc698b9a771e28921a5f10cbcad1f18a4e02b9 fix(session_search): improve truncation to center on actual query matches dbed40f39bd7f3ab3e8f8c47f6fbde34a85078a5 fix: reopen resumed gateway sessions in sqlite 3304e57aeb1b71faf27605dae66be1d7442a5ddd feat(telegram): support inline keyboards on assistant replies d945cf6b1a66333d33dd1ea0e9e7db9ae9614b51 fix(docker): add .venv to .dockerignore 3a64348772f7ab4b10088631b4c7ce0f836ee4d5 fix(discord): voice session continuity and signal handler thread safety 381810ad500728f8fea01a143e14c5952c6c98f9 feat: fix SQLite safety in hermes backup + add --quick snapshots + /snapshot command (#8971) 82901695ff41ec0deb1c8a94163acdeb4834d5bb feat(wecom): add platform hint for native media sending 3365abdddf7dbe7d2fc06bd8106b63a336288ffa fix: use correct 'completed' state in status badge map, clean up blank lines 70f490a12a040f4c47fbbd1cfd56d2e084159343 fix(web): CronPage crash when rendering schedule object 8dfee98d0627046e60d52f4f8256134a81442fad fix: clean up description escaping, add string-data tests bca22f3090203653bf4e24a53491cc56c40a0ed0 fix(homeassistant): #8912 resolve XML tool calling loop by casting nested object to JSON string 11e2e04667c34f3a9e019a127c3189e23bbfe072 fix(telegram): pass proxy URL explicitly to HTTPXRequest when proxy env vars are set 860489600a2e0862c73df5361ae8a86a622dfe05 fix(cli): sanitize surrogate characters in handle_paste 0998a570077c1c12efc74d5c3f6fb1ef70b4f850 refactor: remove 5 dead utility functions from utils.py (#8975) cea34dc7ef61b16b9d65ccc788b78dac914bc9b0 fix: follow-up for salvaged PR #8939 e469f3f3dbf2ec005ad0a98420fca24616a596ec fix: sanitize .env before loading to prevent token duplication (#8908) e77f135ed8683eabf99586bd477480cd3b2ba082 fix(cli): narrow Nous Hermes non-agentic warning to actual hermes-3/-4 models 3e99964789d0bab77431ac6ce5b492751c191969 fix(agent): prefer Ollama Modelfile num_ctx over GGUF training max 39b83f34438470d93484bd0c412f75a539b64b00 fix: remove sandbox language from tool descriptions 67fece1176d59481f00308ce801d17a474923006 feat(cli): show notification when iteration budget is reached 934318ba3a4a2ac3e883edaf53886eb3fd61f96b fix: budget-exhausted conversations now get a summary instead of empty response 7e9ea9ba05c42df1021a067f823f95f58d31eb12 fix(feishu): correct identity model docs and prefer tenant-scoped user_id b6f882a0ed0132685f2927cc9365cb563ac7a345 fix(web): CronPage crash when rendering schedule object 3804556cd9b6f1e07cf9bf69caee465f6753c9e7 fix: restore clarify toolset row removed in cherry-pick 8e0ae66520256e341d4d6f63307e3472d5e8eda1 fix(skills): correct TTS/STT providers, add missing platforms/commands in hermes-agent skill 397eae5d93dc549350e1bc9eb1368b3b7510df5d fix: recover partial streamed content on connection failure 35b11f48a56fd4b27ee295c39e1325df0bc77041 docs: add web dashboard documentation (#8864) 73ed09e145826c3521dc770ffefeb33b3efa1a9f fix(gateway): keep venv python symlink unresolved when remapping paths 964ef681cf1f0d43f764daadd2e578796980932f fix(gateway): improve /restart response with fallback instructions 276d20e62c99defaf9ec0d4ee5291ba43039c489 fix(gateway): /restart uses service restart under systemd instead of detached subprocess e2a9b5369f60ca9f7e15052481cf160d4b19e66b feat: web UI dashboard for managing Hermes Agent (#8756) c052cf0eea054920619c3690123310abb6443a86 fix(security): validate domain/service params in ha_call_service to prevent path traversal 8a64f3e3681924f1059edf9a01d95d565f9a001d feat(gateway): notify /restart requester when gateway comes back online b22663ea6981c5e75f83cd8771ba48f40328bc35 docs: restore Orchestra Research attribution in research-paper-writing skill (#8800) 83ca0844f7b185bde3db77971982b29975f9e56f fix: preserve dots in model names for OpenCode Zen and ZAI providers (#8794) a0cd2c5338cc091f3df12182eac31a31afe3d102 fix(gateway): verbose tool progress no longer truncates args when tool_preview_length is 0 (#8735) 3636f64540a3d80c8425f195f46e53e940956cba fix: resolve npm audit vulnerabilities in browser tools and whatsapp bridge (#8745) 15b1a3aa69da339124f6fbbfd08c2cc27c00bc2e fix: improve WhatsApp UX — chunking, formatting, streaming (#8723) 5fae356a85109cd09dd6ab7921746a173b0a5dc4 fix: show full last assistant response when resuming a session (#8724) 9e992df8aea952c2cf42ee0c76822a4ab14bc3aa fix(telegram): use UTF-16 code units for message length splitting (#8725) 3cd6cbee5ff9306a0e92a6610d7a3fcabb408f8e feat: add /debug slash command for all platforms 0fd33a98cd57554cfad794ac116545f20effab6e feat: ctrl t for diff thinking rendering types f724079d3b54283aa7223137203b23fed8cd89ba fix(gateway): reject known-weak placeholder credentials at startup c7d8d109ff7d74f089905f4c9d0c8826b0a876e4 fix(matrix): trust m.mentions.user_ids as authoritative mention signal 88a12af58c0323d484718f75822deb8e4c5586be feat: add `hermes debug share` — upload debug report to pastebin (#8681) bcad679799bda90dfbe99db04a9f5cf7891b2036 fix(api_server): normalize array-based content parts in chat completions e8385f6f89151d9ea49e42479939d8287e027a36 docs: add HermesClaw to community ecosystem ea2829ab433acf29c9d598a1e74cee2c0675920a fix(weixin,wecom,matrix): respect system proxy via aiohttp trust_env bc4e2744c3f117426e572f1f49ea5fb141a69708 test: add tests for compression config_context_length passthrough 4a9c35655985e0881a74a494d54d136212271329 fix(compression): pass configured context_length to feasibility check 45735e71a273cfb335adfe4350750789ad4458dc fix(telegram): use UTF-16 code units for message length splitting 62919b1ef714bd1206cae419ab87a0f133601895 feat: add session artifact disk cleanup f98e2146821059592318fe1751fdabdf752f7516 fix(gateway): reject known-weak placeholder credentials at startup 65214ceeac2003710506e4e0b93ec952e8f49121 fix(matrix): trust m.mentions.user_ids as authoritative mention signal 0d0d27d45e4d6eeeb30d23f1011efff17b92e37e test(tts): add speed config tests for Edge, OpenAI, and MiniMax 8ec0656f534c01885817b503def623683fd94453 feat(tts): add speed support for Edge TTS and OpenAI TTS 651419b0147722f67f9b1e3697346db2f01bb4fd fix: make mimo-v2-pro the default model for Nous portal users a266238e1e5ab438e2b1358503541a3d420285c4 fix(weixin): streaming cursor, media uploads, markdown links, blank messages (#8665) c83674dd772ed84c65d6934682995eae6ed9dbe7 fix: unify OpenClaw detection, add isatty guard, fix print_warning import 76f7411fca3a45b7173e4995933431ba2007979b fix(claw): warn and prompt if OpenClaw is still running before archival (fixes #8502) 9fb36738a75b80882dc3aba55f609f101573e299 fix(claw): address Copilot review on Windows detection and non-interactive prompt 5af9614f6d3df91ca9f2a6e45b2d43f6e6adde67 fix(claw): warn if OpenClaw is running before migration 76019320fbbcde46abdbf06f053b3b75b39f4546 feat(skills): centralized skills index — eliminate GitHub API calls for search/install 7e0e5ea03b36d68ba59838d6507e6c4f6a67e251 fix(skills): cache GitHub repo trees to avoid rate-limit exhaustion on install 4c6ebd077e0b0e34d565fb58f9da0cc4423e2f96 chore: sync uv.lock with matrix extra deps (aiosqlite, asyncpg) (#8661) 5e1197a42e84ecd620afaeb7d52c3438260c3129 fix(gateway): harden Docker/container gateway pathway 18ab5c99d1f67c392b7dd14e6800ba38f16bfa43 fix(backup): correct marker filenames in _validate_backup_zip ddb0871769144475be11d8540d5b81ffdb73ab50 feat(tui): hierarchical tool progress with grouped parent/child rows and transient line pruning d6785dc4d40cdd37d2ea1e28d5f012572b3cf17e fix: empty response recovery for reasoning models (mimo, qwen, GLM) (#8609) e03bef684eb912cf968ba2178bf7afcab926a19a chore: fmt 4b026d6761ede4541ca312dd8a1e341859d7510a fix: little box typey thing 8efd3db1b4fdb9468cf5c29ff9cef31b22e18642 fix: force builds ef51bb00911266996a03da6c4237d8e08ff5f9ee fix: tool drafting stuff 3bf0f39337c0a8bf6468a9af5ff32a010f386625 wrap preformatted ansi in component c71b09be77591365a73ae1ebec641df8bfc3adad Move container detection to hermes_constants 2f2eeffb962578dd7d47ae5c139107cd7220dfaf Add container detection utility to hermes_constants a4593f8b21bee5dbaa61f018aa4f1751e115ede3 feat: make gateway 'still working' notification interval configurable (#8572) 1179918746a7df85399f4727a3aa44b5c307b9a9 fix: salvage follow-ups for Feishu QR onboarding (#7706) d7785f4d5bfe2863848893a3265e4da4270362ce feat(feishu): add scan-to-create onboarding for Feishu / Lark a9ebb331bcbf4f76be8aae9ae828467188753aa8 fix: contextual error diagnostics for invalid API responses (#8565) 400fe9b2a19f611d417a5fd85cebca3959cd298b fix: add stripping to auxiliary_client + tests 326d5febe58a551f7f9f3d46a07dd787a1255f8d fix: also strip tags during streaming in cli.py a372c14fc50b0bbaf1fea2f5d3c729adf74e6d59 fix: strip tags from Gemma 4 responses in _strip_think_blocks f295b17d929b5d156d4d7c1cfb00b814b10078a0 fix: make agent_thread daemon to prevent orphan CLI processes on tab close (#8557) 06290f6a2ff6f0c6e16c30ebca2cb6c61c304b43 fix: handle broken stdin in prompt_toolkit startup (#6393) (#8560) 06a17c57ae3b04d019260b28a9d858542ae0713e fix: improve profile creation UX — seed SOUL.md + credential warning (#8553) e89b9d97320b3dfca3acda8eeb4f7d1f6655113d fix(gateway): handle Linux setups without systemctl 690d62a6d1b29735ba46976b74fb6b3aab9ece68 Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor 2aea75e91e459d8925faec008b33d1859fa36a44 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 4eecaf06e48834e105cbd989ae0bae5a2a618c1d fix: prevent duplicate update prompt spam in gateway watcher (#8343) 7a67b1350674df2d63a74d871cac98af36f59920 fix: title_generator no longer logs as 'compression' task 45e60904c62943c67179215e2c37e01dc2a0e6c3 fix: fall back to provider's default model when model config is empty (#8303) 17c72f176d6e821b6de48cc0c4baf776617dae3d fix: make skill loading instructions more aggressive in system prompt (#8286) b6b6b02f0f47e8ee81650466060e9e78c61193bd fix: prevent unwanted session auto-reset after graceful gateway restarts (#8299) 56e3ee2440278d0df216b9dbcdf7b7dc597db932 fix: write update exit code before gateway restart (cgroup kill race) (#8288) b32133036295ade639fea3e6d322d91bbe9ec06c feat: add WSL environment hint to system prompt (#8285) dd5b1063d06c66b99bef83ab767ebd7749427a4f fix: register MATRIX_RECOVERY_KEY env var + document migration path b9af4955b9bf764ebbb38758bd3ab3a07b16a885 fix(matrix): restore verify_with_recovery_key after device key rotation b0d65c333ab2273c6f8148a4130d781003e51699 Merge pull request #8279 from NousResearch/chore/simplify-docker-tags 00adbd0de0f41e24a718d7a623184ec2f55a4190 chore: simplify Docker image tags 95fa78eb6c9ca364034356e54d1b050b9eee83fe fix: write refreshed Codex tokens back to ~/.codex/auth.json (#8277) 6d05e3d56f49a67ec9084bdd1a74befd8723e5f2 fix(gateway): evict cached agent on /model switch + add diagnostic logging (#8276) 4aa534eae5560a66cc2062c408680197ba01c0cc fix(gateway): peek at pending message during interrupt instead of consuming it ae6820a45a60416b75c06dcaf7fdfe3d96e6aaed fix(setup): validate base URL input in hermes model flow (#8264) a1220977d35dea8e6f28cbe051dc1601cfd831ef fix: make skill loading instructions more aggressive in system prompt (#8209) 078dba015d95cafa53ce79d02e8da1d56b20cb12 fix: three provider-related bugs (#8161, #8181, #8147) (#8243) b1f13a8c5f47933c94c065753ceff23507b61e56 fix(agent): route compression aux through live session runtime 0d814cd1152e70ac2675efe2215ab1a8b5a11cfc refactor: update github-code-review skill to use MCP tools c52f6348b6c850dd18a6cf4fa5823bc1fac7f980 fix: list all available toolsets in delegate_task schema description (#8231) 316247267422301ff54c2ec33d0fb8de01e26018 feat(tips): add 69 deeper hidden-gem tips (279 total) (#8237) 8b9d22a74b9c8f527731124f40c4da35ecf989b8 revert: keep debian:13.4 full image instead of slim fee0e0d35e093d2062c2deee3e321a9a44ebe017 fix(docker): run as non-root user, use virtualenv (salvage #5811) 81ac62c0e95dd4de80daabc691fe2889b990055d fix(weixin): split chatty short replies into separate bubbles, keep structured content together f53a5a7fe1fa17514130b18e13ba220c64d9f609 fix: suppress duplicate completion notifications when agent already consumed output via wait/poll/log (#8228) fdf55e0fe9cce9067c59ec1c3b2309475b1f21c2 feat(cli): show random tip on new session start (#8225) 36f57dbc51daccbc8fb32d31de7b2d2bb356d12a fix(migration): don't auto-archive OpenClaw source directory 187122719867a7cb28388b8941bdb27ce8d97ce7 feat: rebrand OpenClaw references to Hermes during migration eb2a49f95a51c445a66dfdd55d476a236182a5a3 fix: openai-codex and anthropic not appearing in /model picker for external credentials (#8224) 73f970fa4d7e24fc92e5da4e0b989ccb9ea0537a fix: make gateway interrupt detection resilient to monitor task failures 8cf7e80fc523ecffa644b28139d32df32516208b feat(gateway): auto-reload MCP connections on config change 4cadfef8e3edc05091a05f5c94435c55d75824db fix(cli): restore stacked tool progress scrollback in TUI (#8201) 8e00b3a69e8c2910aae0c1f9ea3bf2619ab01699 fix(cron): steer model away from explicit deliver targets that lose topic context (#8187) 1ca9b197500128cb3c6d5e87697085d66e0d39a2 feat: add network.force_ipv4 config to fix IPv6 timeout issues (#8196) 1cec910b6a064d4e4821930be5cfaaf6145a2afd fix: improve context compaction to prevent model answering stale questions (#8107) 8a48c58bd3feefc9fa38a128195f3c01ec0141cf fix(gateway): add missing RedactingFormatter import d1c7fa1907ae94e6a6cecd025b8ac7660f98729d feat: dynamic toolset generation for plugin platforms 2a304e5de4dae56c9dfa6ae0ac3246ce3861c8a0 feat: final platform plugin parity — webhook delivery, platform hints, docs a0a02c1bc06fa7ed96382286e2e419de978f22e6 feat: /compress — guided compression with focus topic (#8017) e7fc6450fc88b75c7bcda15071fdf69d5e8a14a9 Merge remote-tracking branch 'origin/main' into hermes/hermes-1f7bfa9e cfbfc4c3f16e96c02122c07d4b3c1ef3a8c32728 fix(discord): decouple readiness from slash sync fa7cd44b9269243846472487eb91c6538c9c5c0a feat: add hermes backup and hermes import commands (#7997) 5552e1ffe13bc46c63764c6384f7efca1efb1ff8 Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor 90890f8f04a00097c8f5b2a859af176a6320ec89 feat: personality selector 50d86b3c71f274ed6ff489cdb68a7393377f3d1c fix(matrix): replace pickle crypto store with SQLite, fix E2EE decryption (#7981) 6aba50f5baad9d5d20fae11bac2e8fda30d9f982 fix(file-sync): rollback _pushed_hashes on sync failure a562550af36f357a79c000e0511e412f9b9bfd2c fix(file-sync): resolve 4 bugbot findings in sync-back 37c478cf2f42cf49f5792db435f0fc8fed55e8fc feat(file-sync): sync remote changes back to host on teardown b075d0806490c32daf075f5db87caaf3f3e555e1 fix(modal,ssh): check upload exit code, fix communicate() on closed fd 27eeea0555a0a15b19cea615f46d1f8b88b9dbc1 perf(ssh,modal): bulk file sync via tar pipe and tar/base64 archive (#8014) fd73937ec80573634c97c2d17c6a8d470143553d feat: component-separated logging with session context and filtering (#7991) 8e0df1d5323a1bfe55a1c1c9f2086034ddb3e97d launch tui later to allow setup et al 9000d3163a4fd022fd22ba138e0f884d8e24f459 fix(modal): pipe stdin to avoid ARG_MAX, clean up review findings 04d4f41e77cee377dc305d5734aed27890bced59 perf(ssh,modal): bulk file sync via tar pipe and tar/base64 archive 723b5bec85fd49f84cd00fb344f6c953abcb61a4 feat: per-platform display verbosity configuration (#8006) 14ccd32cee91c825aa4d204f60fd0021de182b34 refactor(terminal): remove check_interval parameter (#8001) 06f862fa1b4080d708b74d65eb4399f9fda6629e feat(cli): add native /model picker modal for provider → model selection 39cd57083a25ff5820fca50df5d0dc2682ba72fb refactor: remove budget warning injection system (dead code) d99e2a29d66135675cf4a237b0131fbdf0927118 feat: standardize message whitespace and JSON formatting cab814af15cf71e202762f52ca9402ed69efe7b0 feat(nix): container-aware CLI — auto-route into managed container (#7543) 29721fcc589650f5f29b185d42ffb5bab90b2705 nix fixes 5c2ecdec49c24331e839e22926fd8fd164f5964b fix: use ceiling division for token estimation, deduplicate inline formula a1d2a0c0fd6c02bb8b2a3158b574bb7215d41540 feat: self update npm deps on hermes update 6d272ba477baac0d3bb26153ca02cc5788358653 fix(tools): enforce ID uniqueness in TODO store during replace operations 97b0cd51ee764f2e9faa6d5fee343c40300292e9 feat(gateway): surface natural mid-turn assistant messages in chat platforms 96289b582eae9f8af3c7d85381f872b098dbfc54 fix(tools): enforce ID uniqueness in TODO store during replace operations 6ee0005e8c1ba479e4ec376dc0aa73f432a21146 docs: expand tool-use enforcement documentation (#7984) c8aff74632a37d32e673e923d1f8513d802c5185 fix: prevent agent from stopping mid-task — compression floor, budget overhaul, activity tracking 8fb6bc69b109eae0b6f7710a3ca7cb0846fb4457 docs: expand tool-use enforcement documentation ce6fb1c2b55f7809a5186d196bb3aebeca29f5c3 fix: prevent agent from stopping mid-task — compression floor, budget overhaul, activity tracking a23379282fa22e88064b6453b86cc446d0b820b7 feat(gateway): surface natural mid-turn assistant messages in chat platforms 08f35076c9b92dc676de0fd5fa1567bc6ae44f70 fix: always log outer loop exception traceback at DEBUG level 289d2745afd2dc9ae881d0b873371bfb0eb7b228 docs: add platform adapter developer guide + WeCom Callback docs (#7969) fc417ed04983ca86ce4ce08287e24aa52bde7788 fix(cli): add ChatConsole.status for /skills search 4982f0c3720094c2814f8e2737433049dd869b49 docs: add platform adapter developer guide + WeCom Callback docs 32519066dc3124cb56a8e8a9e0602230f2560a6b fix(gateway): add HERMES_SESSION_KEY to session_context contextvars 195547609a8ca6c84212091f598a933e44b968e0 fix: wire PII redaction + token empty warnings for plugin platforms 689c51509067512ab396880ca1d1b1afa5391f8f feat: add --env and --preset support to hermes mcp add eeb1815ec2687d78be18d40aa39af717e1936f95 fix(cli): add ChatConsole.status for /skills search 758c4ad1efb0dea2e6d91dd0dc9656a59f80a6fd fix: remove dead hasattr checks for retry counters initialized in reset block b231a2d53d3ccfd0be49c8571294ddf121a50f2c feat: add --env and --preset support to hermes mcp add 000a881fcf61ea631c2fd12747f554847814a395 fix: reset compression_attempts and primary_recovery_attempted on fallback activation 5f0caf54d61d526d4183920b41c6be55f0b2b5cf feat(gateway): add WeCom callback-mode adapter for self-built apps ec553fdb4965102f26649fe5325236314f24eb15 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 24a498eb9027983aa93afb3e3b671e3d897f9311 feat: better markdown 5bb8cd132fd9f4ce99c88b12e53e8865cd1119fe feat: complete plugin platform parity — all 12 integration points 90352b2adf30dadbf64e8fb74bc94b149f679581 fix: normalize checkpoint manager home-relative paths ee39e88b037a8e85d949fead9abbd827d630bf90 fix(claw): warn if gateway is running before migrating bot tokens b53f6819937533acf749fa961063687ca813b0f1 fix(cron): pass skip_context_files=True to AIAgent in run_job (#7958) 74d4944010c6923a947bd8cb0a960e0f1524c8dd fix: normalize checkpoint manager home-relative paths a7881884c744b5b72bd853f71b2d0ca503b63db4 fix(cron): pass skip_context_files=True to AIAgent in run_job 8fd714a7922506fe8e2dfc3b3bf50f68a7f9123c fix(claw): warn if gateway is running before migrating bot tokens 8c3935ebe82e91fadb561ad89e403beb66578bf0 fix: is_local_endpoint misses Docker/Podman DNS names (#7950) 1e5056ec30f4ef03789499311be774d1a41dc3c1 feat(gateway): add all missing platforms to interactive setup wizard (#7949) d82580b25b8136a1cac6e8ea0179db5dce477d78 fix: add all_profiles param + narrow exception handling b80e3181681214b7197d50d54b6ef4336f1c0816 fix: scope gateway status to the active profile 72b345e068eebc9c0c482542b18af79384825261 fix(gateway): preserve queued voice events for STT 8160d7a03d9c203a6c9c67a72480fa0e246b83b3 test: add dedup coverage for reasoning item ID deduplication dfe7386a58a7fed3e1d4f2567e13213044ff8168 fix: deduplicate reasoning items in Responses API input 4eef50022ef0812e199f029841eafd15c118189c fix: add all_profiles param + narrow exception handling 90cf07468486508ab69fb2e80d2cbd67679497cf fix: is_local_endpoint misses Docker/Podman DNS names 20d96215e71c8cb7d0fa0e0e22dbc6aedd338bf9 feat(gateway): add all missing platforms to interactive setup wizard 1c19184fbf010aa53ee6a81ef9127599ef68c53e fix: scope gateway status to the active profile ef73babea1c3460e75ccb469c88ab54314ea4565 fix(gateway): use source.thread_id instead of undefined event in queued response dd6b5ffa748ace56f59dc47879d7b1a129bea4ba fix(gateway): preserve queued voice events for STT f2893fe51a59e545ad05f459fb235296872c4561 fix(tools): neutralize shell injection in _write_to_sandbox via path quoting (#7940) 436649f51c1a89e9f4e69a973f7fa458260733d4 fix(tools): neutralize shell injection in _write_to_sandbox via path quoting 255f59de1891011cc6c270dba7dbe4bc1bfdfee4 fix(tools): prevent command argument injection and path traversal in checkpoint manager 5f26d608601d9d4634db71c3838d76905c24ae2f fix(tools): prevent command argument injection and path traversal in checkpoint manager e1f4de4dd3046f743c98b0d3789b9e8cdac65e7b feat: pluggable platform adapter registry + IRC reference implementation 0f1a53382e68b1b0a33c0f9b43b99ab77afbdc1a fix(gateway): use source.thread_id instead of undefined event in queued response 4bede272cf4879cd2922126d68342cef7069fecc fix: propagate model through credential pool path + add tests 0e6354df5077c7e020671e80c3c9f6e585f7e8b3 fix(custom-providers): propagate model field from config to runtime so API receives the correct model name 85552aa25913e05932467f3f883571ef0917e2b0 fix: propagate model through credential pool path + add tests b0892375cd260a8d3e40af15002a4d498a7d19c1 fix: mock aiohttp server in startup guard tests to avoid port binding 0a922bf218c4801abab14b9c9683903e91cd2e7c add new test covering edge case where both insecure_no_sig and _webhook_url are set d0538457036aeac1fa57d503aa634ea5c57e63a6 remove unused import and fix misleading log 0970f1de5048db71249de3e78798871ec509b1c9 update docks with changes made 8ce6aaac235f654d1ecd5f2559d3d6075eb2b78d change Twilio signature verification from opt-in to opt-out ad1e8804a60e4548dc125bb2bb64a9c178aba3f0 handle port variants in Twilio signatures c22bffc92e4b7ddd44b1c76ccbbac0809db00646 add basic twilio signature checking and tests 71cf0643c44845757d88384b556c6d2a19633aca fix: mock aiohttp server in startup guard tests to avoid port binding cc4b1f0007925f48233c96f9656975e6dfa00c11 fix(whatsapp): pin Baileys to fix/abprops-abt-fetch for bad-request fix dfc820345d4e49d16fd70cdea2b22d1736229ad9 fix: scope tool interrupt signal per-thread to prevent cross-session leaks (#7930) 75380de4301a74f96e74ee8f68a572b97b42d908 fix: reap orphaned browser sessions on startup (#7931) 885123d44bd72330dc0afe044b81836a25ebdfaf fix(weixin): add per-chunk retry with backoff for text delivery 4c4606c88b156ed2f344c1ba2b2cba8f3fcc070e fix(custom-providers): propagate model field from config to runtime so API receives the correct model name 04c1c5d53f555b9798d180802a288f0566f9acd7 refactor: extract shared helpers to deduplicate repeated code patterns (#7917) 07c66dc3b132e0936393ad8df476782c819bb26e add new test covering edge case where both insecure_no_sig and _webhook_url are set ca0af1a21626f5f306035e90b99831399e72be7e remove unused import and fix misleading log 88869948b132e5b394b1b8bd7e48bf41db6d9cc5 update docks with changes made b75b9d62f466fbff69eb4969ed0f77c73891967a change Twilio signature verification from opt-in to opt-out 9c4b8c4741f24496a208903e86264d09ba6371bc handle port variants in Twilio signatures 121f807a41c6e2100032be3e6d7fccad80a83132 add basic twilio signature checking and tests 2555cb76b4c4ec22b403109d8d9256c516377988 fix: scope tool interrupt signal per-thread to prevent cross-session leaks cf53e2676b64e94e1f027e426f70f8a6cecc0949 fix(wecom): handle appmsg attachments (PDF/Word/Excel) from WeCom AI Bot f4f4078ad9dc76b96048ff23c9d9ee4265d06198 fix(gateway/weixin): ensure atomic persistence for critical session state 59e630a64d5b6ca94f2caa310ca531f18fa5939d fix: update thinking-exhaustion test for think-tag gating 2d328d5c7095baf05fcd078e0f6ff53279fe71db fix(gateway): break stuck session resume loops on restart (#7536) 151654851c860efb0eb65e705f96fb2856324d95 fix(agent): prevent false thinking-exhaustion for non-reasoning models 591041200211f8b2268468dedb3d1a3e3947708c fix: detect truncated tool_calls when finish_reason is not length 39da23a1291f45ee7170fbe24068b9a4ea5054d8 fix(api-server): keep chat-completions SSE alive cac6178104f9dc9c3327454fc0af022f19752dd4 fix(gateway): propagate user identity through process watcher pipeline 9ccb490cf3917ce5f9578b28e8099948f8467a38 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 5f90322e35b82e01aae9be0764b96c3af4ab0c66 test: update tests for shared helper migrations 32302c37dd41a1a43bdfaf3b55a4700b821fdcae feat: fix types and add type checking plus lazybundle on launch andddd dev flag 5e5e65f6d5b11e4df95c29d47fde198a0405cae1 fix nix build 5825f2c7e09a5afbaf3cba5fe05cd7161fd38dfc add new test covering edge case where both insecure_no_sig and _webhook_url are set 1e0b4006ca255987cf0f6da3de3671f4b013eb21 remove unused import and fix misleading log 23c7606251c51ced109a1122778c9b14d985800b fix(claw): warn if gateway is running before migrating bot tokens 58cea987740c2e460d25baca79470c9e33bf79ca fix: update thinking-exhaustion test for think-tag gating 2ad18a4bb47b258cae0d3a32c68c3b412f119e51 refactor: migrate to shared utility helpers 3bcf8640ccf4847d4b6824882f5b81a72d648382 refactor: migrate CLI modules to shared helpers dbb47adc0fc9cbc853dfb9a30d72a051e8cce526 refactor: migrate gateway adapters to shared helpers 40f5b70c6c58b2468a1ad0ba99230b0b75fdcc7c update docks with changes made 95e662ff6f795d96ade888a257ec4d6ce9e0d2fd fix(gateway): propagate user identity through process watcher pipeline acbf1794f26bec2d6127a9ca14d977f8b57a46d4 Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor e2ea8934d46a5162ff1dbadbbfe541559e67e734 feat: ensure feature parity once again f73252905eb31190495b0d14b63fef9d5e5a67e0 refactor: add shared helper modules for code deduplication dafe443beba74384871e2c79d5b17db8bc51880e feat: warn at session start when compression model context is too small (#7894) 765af0bd98cca6e45ce30cac5f63e79af2e90b32 feat: warn at session start when compression model context is too small 7e7f78f86c20e57bdf80f77a0f731640fb0c18d7 Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor da9f96bf51aad33804ee37c671fff975c96c06db fix(weixin): keep multi-line messages in single bubble by default (#7903) 46db738eb4991b709da63d9ad7bde76162380123 fix(gateway): break stuck session resume loops on restart (#7536) c9045bcbfb4221a0bc570e4d6b9d6d460f8e9209 fix(agent): prevent false thinking-exhaustion for non-reasoning models 9abd8b27a57babebfa2dfafbc347237f6679a40a fix: detect truncated tool_calls when finish_reason is not length 5be216292229b92ea223a15c7828443ab47bcc6b fix(api-server): keep chat-completions SSE alive 3ec8809b78a2ce5d9383ea06ffcf193bf2007f0e fix(vision): preserve aspect ratio during auto-resize f751a0bd18ed7a4c5874cc7f807c48779a2c4bb1 fix(vision): preserve aspect ratio during auto-resize e339d3bb87444a75d1ca922fa646a767d542189c change Twilio signature verification from opt-in to opt-out 4e3e87b677293615eee63911bba51103ceba2d96 feat(migration): preview-then-confirm UX + docs updates 26bbb422b1c0f5b81d121bb6e874964575241066 fix(migration): update OpenClaw migration for schema drift 9a22d5a85e01d8dcf3697fcb1e9230dbeebd3d0b feat(migration): preview-then-confirm UX + docs updates 5fb6a4418bdfc7d4af83389892360c6919d48a6c feat: panels 976bad5bde88eee60d0243169963a70f961252d4 refactor(auxiliary): config.yaml takes priority over env vars for aux task settings (#7889) e245885f3efe164f8a0a3fe507178dfa3a45b29b refactor(auxiliary): config.yaml takes priority over env vars for aux task settings d4bb44d4b90f6d4acc5c247d3f21d211cf73d35c docs: add Xiaomi MiMo to all provider docs + fix MiMo-V2-Flash ctx len 6693e2a4979faf190f44836cad13007da422eb5d feat(xiaomi): add Xiaomi MiMo as first-class provider ee81a53cb6b65af11d6774cb5f157c99c38bc621 handle port variants in Twilio signatures bf6af95ff5d977c57197e70641cc425eb21eb92e Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 3fd5cf6e3c3db4e275114c2e08a2d2897dda2ea4 feat: fix img pasting in new ink plus newline after tools c2291cb3036513a3484fb8f3e3acadc5baf8debd fix(migration): update OpenClaw migration for schema drift 55fac8a38682e79cb2b4cc06e88a3faa2a016d8f docs: add warning about summary model context length requirement (#7879) 7fe1dc4e1dab478ce4e721a42567047f662652ef docs: add warning about summary model context length requirement 50bb4fe010e9bb811cd5383763a7aeacca1a3a34 fix(vision): auto-resize oversized images, increase default timeout, fix vision capability detection 06e1d9cdd438100206232ba5433743fd1f8da3e4 fix: resolve three high-impact community bugs (#5819, #6893, #3388) (#7881) 5eae976c4039a6ff8d42c85e113ba4cc182a9015 add basic twilio signature checking and tests c92b93a118c4e5539e3f4f24a7c45473b4d209a6 fix(vision): auto-resize oversized images, increase default timeout, fix vision capability detection 6101be6db40e9e9d1aa77a92293934db5987ee66 fix: resolve three high-impact community bugs (#5819, #6893, #3388) 69f3aaa1d696bfe9fe8fd0633b3d265c60601f75 fix(matrix): pass required args to MemoryCryptoStore for mautrix ≥0.21 (#7848) a2445840c761c7b7734236f962bea66446c9317b fix(claw): warn about unresolvable SecretRefs, skills reload, and WhatsApp re-pairing c0ee372f5728378b268b770655fc686733b6144f fix(claw): read API keys from openclaw.json "env" sub-object c94936839c87b2e9c7367e38d3b14aef8db7cae9 fix: unify openai-codex model list — derive from codex_models.py (#7844) 8df68d850163b8c51de08441f338ec4b2ea9a2c3 fix(claw): find source files in workspace-main/ when workspace/ is empty 818ddae02d2c4193d53239ba1c07e44de70f1e11 fix(claw): handle OpenClaw schema drift in provider types, thinking values, and Matrix token d7607292d9bcb6c3eea171a001b0e59326166f89 fix(streaming): adaptive backoff + cursor strip to prevent message truncation (#7683) de7253dcdf98cf1daba3feab340e0ee871af2308 fix: use consistent fallback for pickle_key derivation b7e4760a8f417ef284d9f177ea50063a00cdc022 fix(claw): handle OpenClaw TTS provider rename from "edge" to "microsoft" fb993454c60a05121c1d8cb6fb45c22d546eec53 fix(claw): extract channel tokens from both flat and accounts.default paths b1c54fbf21f6f4aff72b875a4a6f0cd7b59751c5 fix: unify openai-codex model list — derive from codex_models.py 050f496816960ae7def8b6fd6a589ecb372b7958 fix(matrix): pass required args to MemoryCryptoStore for mautrix ≥0.21 b04248f4d5389def602097ab512fc928ea06add1 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 7803d21bcc399f9e33fd779605222e044871e59a Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor 8760faf991ec13231ab790bdf3d5ab1d86850770 feat: fork ink and make it work nicely ad85285915310c2804c341fdb5ad965220ebd941 fix(streaming): adaptive backoff + cursor strip to prevent message truncation af9caec44fdab7a1b883dede16fe1ce8c2d60fb9 fix(qwen): correct context lengths for qwen3-coder models and send max_tokens to portal f2f9a641fa8fd79296ba01725006c0688b9b35bb fix(qwen): correct context lengths for qwen3-coder models and send max_tokens to portal f459214010790494c3bb5192ded3008974aba181 feat: background process monitoring — watch_patterns for real-time output alerts bf2b74cef02745e81da2a26cfe84501e0bc30c34 refactor: merge watch_queue into completion_queue 346b947fc56af6773420029359c738ee29c939d6 feat: add watch_patterns to background processes for output monitoring a2f9f04c065bae90696286b6e6fe2650be49a9eb fix: honor session-scoped gateway model overrides 671d5068e7868357c3122e888ce675c7b81ec6e0 fix: add gpt-5.4 and gpt-5.4-mini to openai-codex curated model list (#7670) 082e3c11ae06722ae68175560f24c8fbb1f531df fix: add gpt-5.4 and gpt-5.4-mini to openai-codex curated model list 1a40073a3ab23602dd1c865c0454721e266b4445 fix: enable Matrix Reactions in platform comparison table 3dd76d2718560adb48b0f9b5b3c60609b830b165 docs: fix ASCII diagram width mismatch in architecture.md 50ad66aee6e035f579d2ee12eed6b0b4c05b882c test(tools): add unit tests for budget_config module 80d82c2f5c3b4fdefd223d53ffbb35a3a60c68d4 test(tools): add unit tests for tool_backend_helpers module b49a9bff7a639bdc3465cb304dd26f5f203bcdac fix: enable Matrix Reactions in platform comparison table 3ca0467040910d00df9f4771c84bc67009c80901 docs: fix ASCII diagram width mismatch in architecture.md 627a6d1435096a5fc09c04268500b33787e5c11b test(tools): add unit tests for budget_config module a915d66c729e4793392412d88cc8c1b539141d9d test(tools): add unit tests for tool_backend_helpers module 7241e6134be823b1a722267b0be8b0fc0b96a7f1 fix: remove stale test (missing pop_pending), add headers to FakeResponse ae9a713a0a904f880137c093ae2ad8e2ed163538 test(approval): clear leaked bypass state eb8071bbc10c4bb07df7075199d9f7c2f2199fba test(gateway): isolate blocking approval env 086d92a0e0a5ea2c8854589895eaab5fd587ac44 test(tools): isolate approval and audio gateway env 4e56eacdce3b7a743ed5cc03e6fe288db1ba6f27 fix(vision): reject oversized images before API call, handle file:// URIs, improve 400 errors 1909877e6edc4d946e63333b704bdae0549ad48c fix: cap image download size at 50 MB, validate tool call parser fields 307697688ebbf94904a4a3d570166fb5ec6da2a6 fix: prevent zombie processes, redact cron stderr, skip symlinks in skill enumeration 4d1f1dccf9e35ea9c44971dafe450bd605d04874 fix: normalize numeric MCP server names to str (fixes #6901) 640441b865d552ba3d504f37769a4a47579985f4 feat(tools): add Voxtral TTS provider (Mistral AI) 5a55d54ee22ccc10e4ca9ca4e843b91ec5f0d8cd fix(gateway): don't suppress error messages when streaming already_sent (#7652) 2318feca40b2b5baf386cfb6aec21e246487d3ff fix(gateway): don't suppress error messages when streaming already_sent 424b62aa163d68aa83e9e116a2781c7842fff19a fix: update async fallback test mock to 5-tuple for api_mode c89719ad9c82892cc624a60fc9ab5f77d40de824 fix: warn and clear stale OPENAI_BASE_URL on provider switch (#5161) d3c5d65563e04eb61417f24cdd6bdbb80d5046e6 fix(auxiliary): validate response shape in call_llm/async_call_llm (#7264) 4f5e8b22a723bd7e85d9162fe93b42f18f780dec fix: drop incompatible model slugs on auxiliary client cache hit eeb8b4b00f8e6f549de6423075a31c145822d6da fix(auxiliary): harden fallback behavior for non-OpenRouter users ffbd80f5fc8cce0eb6dbd95dc21253cc113c4a66 fix(auxiliary): honor api_mode in auxiliary client (#6800) e1fc0ad5361093854867e8c1d3c01be962dbc44b fix: remove stale test (missing pop_pending), add headers to FakeResponse 7767dc3c093653cd41f4068cbeeacfbae35bd61c feat(tools): add Voxtral TTS provider (Mistral AI) 177e42e90a7e55aa8ca61589981d1902d4fa97f5 test(approval): clear leaked bypass state 224fc4c29fcc06ff249a9dfa43d6bdd526628e2a test(gateway): isolate blocking approval env f9a94c65e61481043e1b83ac0b62c6ad488dfba1 test(tools): isolate approval and audio gateway env e36917867a27c35be94dc6e286826d2b4b0fdd77 fix(vision): reject oversized images before API call, handle file:// URIs, improve 400 errors 4aa97af895f05d1042a09a66dc76651d590519f5 fix: cap image download size at 50 MB, validate tool call parser fields ae9c1f22c1f5d1b3cf4d22cf82d60d03c79abe65 fix: prevent zombie processes, redact cron stderr, skip symlinks in skill enumeration 2a9e115210c0fc774ff594289811fc58e0b124a4 fix: normalize numeric MCP server names to str (fixes #6901) 58b62e3e435b9c0bd656c91eac4c4c26a41c2c16 feat(skin): make all CLI colors skin-aware 704488b2074399d1f49ef60e324aa28ca98f0b4f fix(setup): relaunch chat in a fresh process 8f676ea90cd30d6f1efe8295e7472a823bbd283e fix: update async fallback test mock to 5-tuple for api_mode 74a07738f19014249a95052a80d6b1531626b7ae fix: warn and clear stale OPENAI_BASE_URL on provider switch (#5161) ad8c8731b30815742e328272fab0dc8d03e02884 fix(auxiliary): validate response shape in call_llm/async_call_llm (#7264) 484b1fc17b265345e05687db15ca91f7020ed81d fix: drop incompatible model slugs on auxiliary client cache hit 65d1fbd668bc9036e0282b9f935c79c2496165e7 fix(auxiliary): harden fallback behavior for non-OpenRouter users 2dc980c6769c3a01c4b5058dd3bbf79a2a685b9f fix(auxiliary): honor api_mode in auxiliary client (#6800) 3065e69dc5f4f2a6aec44cc93ed969ad9878e35f fix(docker): install procps in Docker image (#7032) b87e0f59ccbf14a4f045b3878519b972738607c8 fix(skills): read name from SKILL.md frontmatter in skills_sync 9d118b2994e6109e971689ab417fc8d65fcd83f2 feat: web UI dashboard for managing Hermes Agent d442f25a2f41cd55281ca09c967bce9a93203e5c fix: align MiniMax provider with official API docs d9f53dba4cb6c8b5d3d8fe92978202366b4b6bf2 feat(honcho): add opt-in initOnSessionStart for tools mode and respect explicit peerName (#6995) 5b16f317028ea3f7efb5fec1d254efb907b5a1f1 feat(plugins): pass sender_id to pre_llm_call hook caf371da18ee1295891ec56e9d0c103e7a9e7e34 fix: MiniMax/Alibaba incorrectly detected as Anthropic OAuth, causing mcp_ tool prefix (#7509) 20c365c0d58c11a1f68410b6e36bf313f2304a83 fix: MiniMax/Alibaba incorrectly detected as Anthropic OAuth, causing mcp_ tool prefix cab6447d5831c583257b2e7233cf51930fa32399 fix(tui): render tool trail consistently between live and resume e902e55b26aab4658debab070fc1048b22517158 Merge pull request #7555 from SHL0MS/feat/creative-ideation-skill 801a26c01490e2001528abab212c127c3a125b15 feat(skills): add creative ideation — constraint-driven project generation 57e8d44af8d7e6db6eb26dec6f8c0c1d27746d4b fix(tui): preserve tool metadata in resumed session history 939d2b37d172238604a91d20cd45b797fe53169f Merge pull request #6882 from SHL0MS/feat/creative-divergence-strategies 96051955755a83f22afed5e3501d447462fbe9c8 fix: restore agent.close() cleanup and correct /restart category ecfae9815296ea0391fe68c9c3b84538e5ff6174 fix(gateway): address restart review feedback a55c044ca810645aa26fb272feea2bd1f415754c fix(gateway): self-request service restarts when invoked in-process c4ccb320cd234269476adc9e041e39db66789f13 fix(gateway): tolerate partial runner construction 31637312899714dc47d7934939fa1555b15d3311 fix(gateway): drain in-flight work before restart 241032455cb88f712963c329feaddabb645a529e fix: don't evict cached agent on failed runs — prevents MCP restart loop (#7539) 1ffd92cc9405b2cb1138ef61f8eed93948593a8f fix(gateway): make manual compression feedback truthful d6c2ad7e416a3a2b14088f262b598dfe4c6794fd fix(gateway): make compress responses truthful fc06a0147eec4f0e86eda557adde71549ae685e9 fix(tools): remove dead code in _is_likely_binary and harden _check_lint against brace paths c1af61428953a4b97d986bc36108df18603a324b fix: wrap copilot Responses-API models in CodexAuxiliaryClient for auxiliary tasks 718e8ad6fa6f4c344b04d56263b196d07b77ea0a feat(delegation): add configurable reasoning_effort for subagents 98305119c1bd3328bd36ea1e64ac9294b35600d7 fix(gateway): make manual compression feedback truthful be9198f1e16a46df3385c78364a73492972be389 fix: guard mautrix imports for gateway-safe fallback + fix test isolation be06db71d78f83b1ad6813374a3f9e57cd296039 fix(matrix): ignore m.notice messages to prevent bot-to-bot loops 5d3332dbba55676a03ff8692a82241802cfb11a7 fix(matrix): close leaked sessions on connect failure + HMAC-sign pickle store bc8b93812c0a3025262f4309424dc81323b33572 refactor(matrix): simplify adapter after code review 1f3f1200423ab03aef582e7d3d2716b064f8290b fix(matrix): persist E2EE crypto store and fix decrypted event dedup d5be23aed7de6174a7961fe1fd31a43d8f23b213 docs(matrix): update all references from matrix-nio to mautrix 417e28f9415be5d2e813ee7ae33baf92068f84c4 test(matrix): update all test mocks for mautrix-python API 8053d48c8df8d931d6ec21bb563d7dfa6434b3c5 refactor(matrix): rewrite adapter from matrix-nio to mautrix-python 1850747172c5fa99ce0e4cfb31cf39525a15160f refactor(matrix): swap matrix-nio for mautrix-python dependency a8fd7257b1738f89eadbe7015a613da64a2e02b1 feat(gateway): WSL-aware gateway with smart systemd detection (#7510) 020dd832ceea132b1e80fe9cb420bad74f75ef1a fix(gateway): make compress responses truthful 0c3319cd15adac3bcefa021dde25b86011748d70 fix(tools): remove dead code in _is_likely_binary and harden _check_lint against brace paths a43269e3b1f3eb605faee17fe82926cbf0a91523 fix: wrap copilot Responses-API models in CodexAuxiliaryClient for auxiliary tasks 9e2f0be093a75fdc7ee6d47ac558e0c3e40d0723 feat(delegation): add configurable reasoning_effort for subagents 626651aab01640e50bdc8430220afd6d34403a59 fix: don't evict cached agent on failed runs — prevents MCP restart loop 830040f937e59829c3c9f17802bfa62edf29c46f fix: remove unused BulkUploadFn import from daytona.py 97bb64dbbff85ea045b083ce8c25777a47b96970 test(file_sync): add tests for bulk_upload_fn callback 223a0623ee16fb1a49504378bc88a0cfb7b78769 fix(daytona): use logger.warning instead of warnings.warn for disk cap ac30abd89e45f72010f0076980eb0343cf0d2efb fix(config): bridge container resource settings to env vars bff64858f971849a04f44dba3463e9c5df59e8b4 perf(daytona): bulk upload files in single HTTP call df4203c73c0c0e6f308bc5e987cc34e653ca130c Revert "fix: circuit breaker stops CPU-burning restart loops on persistent errors" 57ae6cc77125af49791df6663acf8f48551bdf32 fix: remove unused BulkUploadFn import from daytona.py cc14d4f62ad070e7fd1723085508420e6d64c676 test(file_sync): add tests for bulk_upload_fn callback ad3e238e647c52295211bfcc5e04ae53b9a94794 fix(daytona): use logger.warning instead of warnings.warn for disk cap 460c3a6588291efe0680777dac6c5b545b044f68 fix(config): bridge container resource settings to env vars 8435fa69400d21579e586c5e836fd6cc51750e70 perf(daytona): bulk upload files in single HTTP call d848ea7109d62a2fc4ba6da36fc4f0366b5ded94 fix: circuit breaker stops CPU-burning restart loops on persistent errors 0c06668ee7fbc74cf62ace3007eadb1bd289199f fix: guard mautrix imports for gateway-safe fallback + fix test isolation 68f5d358a044bf339e2cb73f18624d9adc6f57e6 fix(matrix): ignore m.notice messages to prevent bot-to-bot loops 0286f9de227b948e33b5577b9a85e0d5ed6b2859 fix(matrix): close leaked sessions on connect failure + HMAC-sign pickle store 76a4b1c33e8b78f09be9c9b1e974521c839f9d58 refactor(matrix): simplify adapter after code review 60d15a81e324454ae1b596de5679435560906d8f fix(matrix): persist E2EE crypto store and fix decrypted event dedup 732785af5a540eb0181735cc292b98d0badf785d docs(matrix): update all references from matrix-nio to mautrix 4b382902a7c288218896a4461bca650d9cb59882 test(matrix): update all test mocks for mautrix-python API c1fa1d74e8874406df8d888f09851aa4b76153c9 refactor(matrix): rewrite adapter from matrix-nio to mautrix-python bb1a711f667a731a41c15d42b016ea660fb9b516 refactor(matrix): swap matrix-nio for mautrix-python dependency ac31b7cc09620bc89bb33070ddbd52ec4a863e99 fix(matrix): remove redundant _track_thread + add sender/grace checks to encrypted handler 79198eb3a0a77a86b18ad9ce853cafb145b5b6b2 docs: context engine plugin system + unified hermes plugins UI 436dfd5ab5a1922f80673e54ac23abb87bf3975a fix: no auto-activation + unified hermes plugins UI with provider categories 3fe69381768945055583e529dfebfa84c227d62c fix: robust context engine interface — config selection, plugin discovery, ABC completeness 5d8dd622bc717e73450ec3c996ab60567975817d feat: wire context engine tools, session lifecycle, and tool dispatch 92382fb00ebaacd446cd16902db403f10d8194fe feat: wire context engine plugin slot into agent and plugin system fe7e6c156cf3628ef63fff6acfe4448ffb24faf3 feat: add ContextEngine ABC, refactor ContextCompressor to inherit from it 842e669a1344a0801807d7951e820f471034b0c3 fix: activate fallback provider on repeated empty responses + user-visible status (#7505) 9f47b1e9dd80cb75d2e9b8b81d677304eb86b302 fix(matrix): ignore m.notice messages to prevent bot-to-bot loops 153451ad72c44eafddb8e15e530fc5c2a37f831c fix(matrix): close leaked sessions on connect failure + HMAC-sign pickle store ac082e552dfdcddb8451d9544526d080cce3c3ec refactor(matrix): simplify adapter after code review f8e72caf7b60048f262ab964b6f862aee9fabc11 docs: context engine plugin system + unified hermes plugins UI afd59e52b6fdb2e674501f4ba5e9c0aa4ba36532 fix(matrix): persist E2EE crypto store and fix decrypted event dedup c4c3a57a3a4b59bb0e5b19cb1abf346cc400f1bf fix: restore agent.close() cleanup and correct /restart category 992422910cc743fea9371480a1bce47230c6f25f fix(api): send tool progress as custom SSE event to prevent model corruption (#6972) 4ec45370d552cc5bed149200046e20197f239397 fix(api): send tool progress as custom SSE event to prevent model corruption (#6972) eb3f021e2a8e16f55cf7a735996268d2fce8eb2c fix(gateway): address restart review feedback b4cb803954236d78c1e5469dd6a5df8057dcdbd7 fix(gateway): self-request service restarts when invoked in-process b5928530d3638bfd649298f3aca2c07f7db2c936 fix(gateway): tolerate partial runner construction ef120b5422ba696e8d3392abc9af03acd91b5395 fix(gateway): drain in-flight work before restart 7ed4250144e5525d10ed0a0bce7a851e87e537c3 docs(matrix): update all references from matrix-nio to mautrix 7311c64557b5e9b151aa4ce31838f735ee162f0c test(matrix): update all test mocks for mautrix-python API f80ea6bb3038583067e5157a0942da6fedc1768b refactor(matrix): rewrite adapter from matrix-nio to mautrix-python 3f255e8f691602fe78b579ded08e95d182171a89 refactor(matrix): swap matrix-nio for mautrix-python dependency 611b89c2a70e9040da2972c1ba47dc7c7eaf8486 feat(nix): container-aware CLI — auto-route hermes chat into managed container c724aa853da0662d5930d995e03658e38921f5e3 fix: remove unused BulkUploadFn import from daytona.py 2f39c7a429ecf775a60dbfbac54a47e075f48e64 fix: no auto-activation + unified hermes plugins UI with provider categories 9a0c44f908b171648341d35087cb86487c9ad331 fix(nix): gate matrix extra to Linux in [all] profile (#7461) fec7b2225f6ed1087826495a2056a3cfd64b2968 fix: robust context engine interface — config selection, plugin discovery, ABC completeness 28eeea73ec22e64405c9c6438dfd43b492c985f0 feat: wire context engine tools, session lifecycle, and tool dispatch 271d2ad374344bc5c8c4d6606bb47ca258dd8796 feat: wire context engine plugin slot into agent and plugin system 1aaeca55e65ddfa478d602fe159849194a90b841 feat: add ContextEngine ABC, refactor ContextCompressor to inherit from it baddb6f7174cce578c403dc356f6f76c1f4c8bea fix(gateway): derive channel directory platforms from enum instead of hardcoded list (#7450) 08b97660c5543181d5998a559f55306ceb825b67 feat: /context command + /compress focus — inspired by Claude Code e8034e2f6adfc8644875447db23e1609ec10c518 fix(gateway): replace os.environ session state with contextvars for concurrency safety dab5ec8245542943f895006363a71b4dbcba421a test(e2e): add Slack to parametrized e2e platform tests 79565630b0de765b72deea6ef2711e71fda2a018 refactor(e2e): unify Telegram and Discord e2e tests into parametrized platform fixtures 7033dbf5d640035529512914c94e662aa756b18d test(e2e): add Discord e2e integration tests 9555a0cf3149065bf88f97b3147281f661597afb fix(gateway): look up expired agents in _agent_cache, add global kill_all f00dd3169f207ae213728a46907820abe14fdf38 fix(gateway): guard _agent_cache_lock access in reset handler 8414f418565ccd5f5ebdfdf53924d802b03da8c2 test: add zombie process cleanup tests 672cc80915ce6621e978e0b47c8a752ef62370f5 fix(delegate): close child agent after delegation completes fbe28352e49ed9cf34ab8c2b0d14ea48c993fd51 fix(gateway): call agent.close() on session end to prevent zombies 5b42aecfa765754cd41a710289d8417fb3f0ddc5 feat(agent): add AIAgent.close() for subprocess cleanup 989b950fbcbf2d5e9b47cef4aa5c5b4eca6b40f5 fix(security): enforce API_SERVER_KEY for non-loopback binding 2a6cbf52d0c0dbad0cb1b7e0250d9064789ba67a fix(cron): prevent silent data loss by raising exceptions on unrecoverable jobs.json read failures (#6797) c5ab76052892552202612b50259fb962d4a819cc fix(cron): missing field init, unnecessary save, and shutdown cleanup 6df07359953f41f66b2fecc5ada776188a5facc2 fix(gateway): replace os.environ session state with contextvars for concurrency safety a4fc38c5b1ce11c8a955eba27402ef7a41c5cb3f test: remove dead TestResolveForcedProvider tests (function doesn't exist on main) 0e939af7c204188a841fa0ef07b32587933c0ca2 fix(patch): harden V4A patch parser and fuzzy match — 9 correctness bugs 475cbce775b8a051053ab94b27ed714bab150683 fix(aux): honor api_mode for custom auxiliary endpoints c1f832a61025626f46de6ab9f4ee0120fd33772e fix(tools): guard against ValueError on int() env var and header parsing 6f63ba9c8f7654da87d0194c72dadd05dbd9e34d fix(mcp): fall back when SIGKILL is unavailable 615f82fbc5002376f920ef7f04c42deb45727dda fix(gateway): derive channel directory platforms from enum instead of hardcoded list de56cb068908f8e0e5a3f1fb1a53b28661db8121 test(e2e): add Slack to parametrized e2e platform tests c9413a81c8f598acec936d4e15befed9df514fdb refactor(e2e): unify Telegram and Discord e2e tests into parametrized platform fixtures 9bc4cc3710908e2b6f5cf7b8cb4ba49e5a7354d0 test(e2e): add Discord e2e integration tests 3e889ea8adef500fcf8af09638125fb62e2c5092 fix(gateway): look up expired agents in _agent_cache, add global kill_all 9d68a4250a3b4a61cfc8e92e34b8908a78ada6cb fix(gateway): guard _agent_cache_lock access in reset handler 97bd0dd21dcb46e9d99ed12d490c7b4e73d81f35 test: add zombie process cleanup tests 1c6e7bf560099f06a0959889ac4127bad72e4fc8 fix(delegate): close child agent after delegation completes 8af452740f7186e824fd11cb79012a89d3e8ff77 fix(gateway): call agent.close() on session end to prevent zombies e8d7dc016c45d58ef5325bce8d478a55aa45eaaa feat(agent): add AIAgent.close() for subprocess cleanup da1d8c189bcf46be07c6140acbbddf11c6f5785d fix(security): enforce API_SERVER_KEY for non-loopback binding 4eb31a2da4adc5a3249fa7f6f7272f90235f1a33 test(file_sync): add tests for bulk_upload_fn callback c97806990f5f25d658ae9d6db2bbfdfdda20fa2a fix(daytona): use logger.warning instead of warnings.warn for disk cap 61999a6622dd29f82052459f3bb8bb3a98a552cf fix(config): bridge container resource settings to env vars b0a66c6ad65701de93d2ad75061a562cc50f4d18 perf(daytona): bulk upload files in single HTTP call 3e24ba1656e8ba377e76124b42d5aa764566c064 feat(matrix): add MATRIX_DM_MENTION_THREADS env var d8cd7974d86cdfaf1f2bc4684cb233470491b0c8 fix(feishu): register group chat member event handlers 6c078c7e4dc935b0a96f67691686147172e74a42 feat(matrix): add MATRIX_DM_MENTION_THREADS env var 101f74dcb3bc9479238096707e055a4b960fd46a fix(feishu): register group chat member event handlers e8f16f743229c86f0dcf952798dc5fa797beab60 fix(docker): add missing skins/plans/workspace dirs to entrypoint e1167c5c079e3979d40d65b885b760507341d55c fix(deps): add socks extra to httpx for SOCKS proxy support 8254b820ec8cbc930aef25897df24e266d8bf1a2 fix(docker): --init for zombie reaping + sleep infinity for idle-based lifetime 2b0912ab18992327259c3ae6bea803e358361aa4 fix(install): handle Playwright deps correctly on non-apt systems ea81aa2eec8c8a8cfef4109b7de087e0d2224811 fix: guard api_kwargs in except handler to prevent UnboundLocalError (#7376) c45d18265cdb3de00599cf80548dd34187fc750f fix tests 1c6d144a10311d41dfaa603c0528f90ed7f7773c Merge branch 'main' into api-server-enforce-key 496e378b10272714deb91dad250324cea0568f0a fix: resolve overlay provider slug mismatch in /model picker (#7373) 03f23f10e1efb7467f4a7d29370ba3dc47a25da7 feat: multi-agent Discord filtering — skip messages addressed to other bots 2b4abf8d9c0f224010cc6140e1e77ee5da392e32 move is_network_accessible helper to base.py be53f82674effebba7df0a9c987be8bf6784f24b fix: guard api_kwargs in except handler to prevent UnboundLocalError 116d79508cea36ae2670b7494d65e4fce7c3b280 fix: resolve overlay provider slug mismatch in /model picker 8bcb8b8e8754486272f0a36fd56db5ade307caaa feat(providers): add native xAI provider 1a6fd37f1b2bd6444dcd7f00a357c2fc5a841b73 feat(providers): add native xAI provider f07b35acbae4660945f50c0677ad8da7a94f9970 fix: use raw docstring to suppress invalid escape sequence warning ce72aa216dfca3cbe510e3080b1064d1f52eeed0 fix: use raw docstring to suppress invalid escape sequence warning 363d5d57bee773e47ac4eb0c4899c15decd2eb5d test: update schema assertion after maxItems removal 7ccdb7436451dfb913391e3b0ae1b112418c9a61 fix(delegate): make max_concurrent_children configurable + error on excess 6c115440fde09215745f60b3f9729f044c7d4a5d fix(delegate): sync self.base_url with client_kwargs after credential resolution 4fb42d01937bd95ec03153d2074d3b388f3b4288 fix: per-profile subprocess HOME isolation (#4426) (#7357) 6b70739a792f5637b4d17359f3f87ddcc738ce63 fix(gateway): look up expired agents in _agent_cache, add global kill_all f83e86d826e1ed95870d139895118c52a82af05e feat(cli): restore live per-tool elapsed timer in TUI spinner (#7359) e8bf94925bee49c6a970fe7e3256bc4df6d28547 feat(cli): restore live per-tool elapsed timer in TUI spinner 0bea603510494629bdbd7c2c3397158fb33e5b91 fix: handle NoneType request_overrides in fast_mode check (#7350) d59c6f6b830661d6019aadbd3bdccefdd9e2e9f2 fix: per-profile subprocess HOME isolation (#4426) 360b21ce956bcaaf9477133a26db8a85777b4823 fix(gateway): reject file paths in get_command() + file-drop tests (#7356) 37a1c757164c1ce8475f3559d3eaf85d64c3cf84 fix(browser): hardening — dead code, caching, scroll perf, security, thread safety 29e11d8ea36a0e7cd860a42d35de465cc59bf243 fix(gateway): reject file paths in get_command() + add file-drop tests c6e1add6f11840c050c27e27208224dd1d913452 fix(agent): preserve quoted @file references with spaces 2c99b4e79b4e60b6fee27d153810319f79509420 fix(unicode): sanitize surrogate metadata and allow two-pass retry 71036a7a759aae7795d6853f84a9aa61d2f4fc4b fix: handle UnicodeEncodeError with ASCII codec (#6843) 1060ee488d2942415d8d147c7a5461f15f7a311c fix(browser): hardening — dead code, caching, scroll perf, security, thread safety 44dc3f7e316097a4b9d2f27db716813ec6a9d73d fix(gateway): guard _agent_cache_lock access in reset handler 7e28b7b5d518ddcbe37bbd861725a394b763f8c3 fix: parallelize skills browse/search to prevent hanging (#7301) a093eb47f75dd26ad0f771a378ff978714d3d988 fix: propagate child activity to parent during delegate_task (#7295) f72faf191c80d3f0a5b21272d2dcdb982ddd7260 fix: fall back to default certs when CA bundle path doesn't exist (#7352) 2d71ac92feb9d0feb03cc20a7712d4f2e6ae0577 fix: fall back to default certs when CA bundle path doesn't exist 5b1c5040260b798bc68d1a98fcab11fdeaf641b2 test: add zombie process cleanup tests 7f04364d24b5b2635954187256d4c0c42d8d978c fix(delegate): close child agent after delegation completes 54ff20e27b5a5ab8011d0e1f06cd06083318ccc1 fix(gateway): call agent.close() on session end to prevent zombies a8c17b383d8c58b45c39202df341e38557f3205c feat(agent): add AIAgent.close() for subprocess cleanup 582164010e3c5f7f6fdbfe8bb84471837d23bbe7 fix: parallelize skills browse/search to prevent hanging c121a3cfdb54b501279dc8298d9e27fc60ba925f fix: propagate child activity to parent during delegate_task f8dbe0ffd14039d98d148e3c7d53211f262023a0 Merge branch 'main' into api-server-enforce-key 7e60b092746b8890fa24b92315a08fc1eb0d5f2f fix: add _session_model_overrides to test runner fixture 970192f1838d1fa04c7fe43d28b02727be1728b0 feat(gateway): add fast mode support to gateway chats 5b8beb0ead2f4890c2907945c0db7bb1e0cdca27 fix(gateway): handle provider command without config 7cec784b64f525333d5d1ba71d650a578a4516a9 fix: complete Weixin platform parity audit — 16 missing integration points be4f049f46e44f79f5bf716fe30274b7f9a138b0 fix: salvage follow-ups for Weixin adapter (#6747) 5b63bf7f9a2ac1cadbff7373a12a368a85361585 feat(gateway): add native Weixin/WeChat support via iLink Bot API 7484893c4ee24fe41ac568d46db02de1182e1e6c fix: add _session_model_overrides to test runner fixture fab5eb6c158703ac2add1c5dac484a0d6e335937 fix(bluebubbles): remove invalid 'message' event from webhook registration 0b649e4bb51b0b90ca8cbc28605e8c3f555d03ef feat(gateway): add fast mode support to gateway chats 4a65c9cd08cc3ea27ea4e221a5aca71161428c90 fix: profile paths broken in Docker — profiles go to /root/.hermes instead of mounted volume (#7170) e563186e99eddc9726410f7787cf471421bb0663 fix(gateway): handle provider command without config 916fbf362cc37412942f7498f99d9fdf51a0c4ec fix(model): tighten direct-provider fallback normalization b730c2955af4d7a44a3e02a0ea1180aa8f37c4f4 fix(model): normalize direct provider ids in auxiliary routing fd5cc6e1b471e05ea964a9a4c730c11219c3f73c fix(model): normalize native provider-prefixed model ids 1662b7f82a2a810c536445968aa8811fd3cb6458 fix(test): correct mock target for fetch_api_models in custom provider tests e3b395e17d9fdc7fe3148e4c424dfc904aefef2c test: add regression tests for custom provider model switching 0cdf5232aee048e8be38b268f176048eeace6972 fix: always show model selection menu for custom providers 49bba1096e54063377f06ff2553e3382fa140121 fix: opencode-go missing from /model list and improve HERMES_OVERLAYS credential check fd3e855d589f09afa2e7180293ce7d0d28f77d39 fix: pass config_context_length to switch_model context compressor 5fc5ced9725a13227c5aa426739342fa1f8400ff fix: add Alibaba/DashScope rate-limit pattern to error classifier 7afdfa38917af3e3fce748131b86780358c3949b fix: profile paths broken in Docker — profiles go to /root/.hermes instead of mounted volume 0e315a6f02e92bb22a1b566bbe42fab9ee94010c fix(telegram): use valid reaction emojis for processing completion (#7175) addcffacc23829f6f8f3bc8d12a5908babe55e8e fix(telegram): use valid reaction emojis for processing completion 6d2fa038377e5fd7cfe2e70648bbaae2383e8963 fix: UTF-8 config encoding, pairing hint, credential_pool key, header normalization (#7174) 61540c1ab5cc6ae6de23e55205c2a3eae99ceee4 fix: four small CLI/config fixes — UTF-8 encoding, pairing hint, credential_pool key, header normalization f3ae1d765d757b94b9e625c53ee0b4d48f56c280 fix: flush stdin after curses/terminal menus to prevent escape sequence leakage (#7167) f4796ac4374ae8c3eea00fd4a9852096c078db59 fix: complete Weixin platform parity audit — 16 missing integration points f7d00294b373f31d3da9b205fb7ca0fae030ffdc fix: flush stdin after curses/terminal menus to prevent escape sequence leakage 9d52d3c70e2e0c8598ba8f2cc582190458c369a1 fix: salvage follow-ups for Weixin adapter (#6747) 8773cfb783d12b38ce8a199f68ea030ed4714247 feat(gateway): add native Weixin/WeChat support via iLink Bot API 49da1ff1b130501ffd87b14f0fa1d98a6ea56665 test(discord): add tests for channel_skill_bindings resolution 76a1e6e0fe5066c64e879e8bf4645cb8ca02768b feat(discord): add channel_skill_bindings for auto-loading skills per channel 21bb2547c60481161874de76ed0d18dc1361b105 fix(matrix): log redact failures and add missing reaction test cases 58413c411f08d7b2794c911e5dcaa8829d965e86 test: update Matrix reaction tests for new _send_reaction return type cc12ab8290158dd5ce4940e333789a032625c52d fix(matrix): remove eyes reaction on processing complete 74e883ca3777a60f417e7332a79ad362888e3fb0 fix(cli): make /status show gateway-style session status e376a9b2c9575e34fa6ac132f499b354b7bd8ebb feat(telegram): support custom base_url for credential proxy 26299270323ba08ddb2e4e1cbad948f7b4f44722 fix(feishu): wrap image bytes in BytesIO before uploading to lark SDK aedf6c7964fc040fdf04022d72263ff10a7d2b10 security(approval): close 4 pattern gaps found by source-grounded audit 5a1cce53e4b255d9fd2c9b667f33e448f18419d5 fix(auxiliary): skip anthropic in fallback chain when not explicitly configured 419b719c2b2f1f807efb85486ea499ae2a9a3f5f fix(auth): make 'auth remove' for claude_code prevent re-seeding f3fb3eded48379af383aaff2b2de052e7ebbeaa3 fix(auth): gate Claude Code credential seeding behind explicit provider config d7164603dae7983cc7b1e427a97b537ccef4818b feat(auth): add is_provider_explicitly_configured() helper e683c9db90cd08ecbc4d6c622b7923730e0d4069 fix(security): enforce path boundary checks in skill manager operations 5bcdf549626a640db1b0f645208c20aa45fb06a4 security(approval): close 4 pattern gaps found by source-grounded audit 8e5f06ceac85f1f63c43d49f29f493e3d9d92582 fix(auxiliary): skip anthropic in fallback chain when not explicitly configured f1db9997354e62b0163f46708646d2325be1638a fix(auth): make 'auth remove' for claude_code prevent re-seeding 2fafcf42e8ea62987bfa47e592a0ad3b18cfca6e fix(auth): gate Claude Code credential seeding behind explicit provider config 0475e5e9f2531a77909bf61fdc98353c56877e05 feat(auth): add is_provider_explicitly_configured() helper ee3db462cf14f28e1f8ba9336346aece6f67b35c fix(security): enforce path boundary checks in skill manager operations 7663c98c1ebdeabd54cc6d787e90a5f2bbb16a17 fix: make safe_url_for_log public, add SSRF redirect guards to base.py cache helpers 714809634f1c610ed64c7054bb5d128660277613 fix(security): prevent SSRF redirect bypass in Slack adapter e9edb6a2f220f9bee517986a21783135fb141b21 fix: make safe_url_for_log public, add SSRF redirect guards to base.py cache helpers 50d53fd21436eefe89385c240d85495b2875a18f fix(security): prevent SSRF redirect bypass in Slack adapter f4c70860357323ffbb25fb9038f4098dddb046e0 fix(api-server): share one Docker container across all API conversations (#7127) cb79018977850289c23d8f81aca9ed2b57d67022 fix(tui): improve session picker readability 90f0aa174dddc3b9cf63401fe3638b81c468e437 fix(tui): support /resume to bypass session picker 61c1fd08ccaa37e1205c3c357adcf742c782e96c fix(api-server): share one Docker container across all API conversations cd99fa2428700b5641fdd7c894b33a064f716ff8 fix: align MiniMax provider with official API docs 0b143f2ea3ddef4e0bf725bdd931541f8af27882 fix(gateway): validate Slack image downloads before caching 73a4c7ad4aaa033b06bb91e06d7725eccc56e172 fix(gateway): validate Slack image downloads before caching c8e4dcf412e65b58334ebf9a024e4e7444162828 fix: prevent duplicate completion notifications on process kill (#7124) 00dd5cc491ed63a37ff9489ae70e991a59d9030e fix(gateway): implement platform-aware PID termination 9bb8cb8d835979efc295c416d8dee01c9bf16087 fix(tests): repair three pre-existing gateway test failures 5dea7e1ebcebaa8aa148997803c97d773fb7d84b fix(gateway): prevent duplicate messages on no-message-id platforms b1e2b5ea74720f9b7d7e1970f0a27dc2a043a41a fix(telegram): harden HTTPX request pools during reconnect 96f9b9148953f30d90bffea50924e241ec16d3c9 fix(gateway): replace assertions with proper error handling in Telegram and Feishu bb3a4fc68e026ee78a430ba749ab206dfa241460 test(gateway): add /background to active-session bypass tests 429da6cbcedb891b25f92dc6a34c01e86a36c79e fix(gateway): route /background through active-session bypass 4f2f09affa2f4103233946f8a970f210b7a2ba8b fix(gateway): avoid false failure reactions on restart cancellation 266265baadb667537cd639b5c0a0b94331df31f9 fix: prevent duplicate completion notifications on process kill af7d8093548e3d744abfa63b75f264c27ceb878c fix: correct inaccuracies and add sidebar entry for cron troubleshooting guide fbfa7c27d5f3c3ceae351586ad6c55de66089249 docs: add cron troubleshooting guide d38a03bf683dd5772a73f8faf929392d90b5ed21 fix: correct inaccuracies and add sidebar entry for cron troubleshooting guide df1671d36bdb1f55069619fb0e65121d362927b5 fix(gateway): implement platform-aware PID termination 43906fb89d29a77ab319b4c7f5a92184afe1e529 fix(tests): repair three pre-existing gateway test failures ef7b00d13221ff980129432eac4caaf0faf31961 fix(gateway): prevent duplicate messages on no-message-id platforms d48cd893f2a049e5249c24d51f34f9f90fccae57 fix(telegram): harden HTTPX request pools during reconnect 595802e14bd4346024407224d72daa4565b2407b fix(gateway): replace assertions with proper error handling in Telegram and Feishu 628d9bb72903fba95c0f4d69877be9440297ec10 test(gateway): add /background to active-session bypass tests 10b070b4bd9c957789f5aeb488286785f65d466c fix(gateway): route /background through active-session bypass c20d06878df69f1089c3b4b48c7fb0804231f119 fix(gateway): avoid false failure reactions on restart cancellation 1bcc87a1535cd4c17dc2bfe45fd198863404e892 fix(acp): declare session load and resume capabilities in initialize response (#6985) 437feabb74d9b57e69402ac13ff690be5be372ce fix(gateway): launchd_stop uses bootout so KeepAlive doesn't respawn (#7119) 957485876bdac59736039cd9c5345b730fbbadfc fix: update 6 test files broken by dead code removal c6c769772f1ed68ea6cb19c765fc57b45bb18bc6 fix: clean up stale test references to removed attributes f63cc3c0c7c2dcde25e2282d7c3f3256fc74dcdc chore: remove spec-dead-code.md from tracked files cff9b7ffab1a3f1d239c3293f0fbc10e024941dc fix: restore 6 tests that tested live code but used deleted helpers 96c060018aecf42bd9c28467cd8ed2fb642b50ed fix: remove 115 verified dead code symbols across 46 production files 07025b2984ce16ac3cef26ae157aae1430bf5565 docs: add cron troubleshooting guide 04baab54228ef380eb4acf6831b68a4190748118 fix(mcp): combine content and structuredContent when both present (#7118) 742d28795c2c46173e17b024c051d87f17eccc32 fix(gateway): launchd_stop uses bootout so KeepAlive doesn't respawn eb8fc0e07cb29921bac8be7f1e09614ce568e0ec fix(mcp): combine content and structuredContent when both present 9a0dfb5a6d4f783348bbcab63d272081e7b2ef20 fix(gateway): scope /yolo to the active session 68528068ecb045ec2b70226b8a5d59bae8cb6c3d fix(streaming): update stale-stream timer during Anthropic native streaming (#7117) 249f5ba4c4f392b21509be95624451e37853d182 fix(streaming): update stale-stream timer during Anthropic native streaming 8dd738c2e61d5e95edc1cb7208e8d25786db66a7 fix(gateway): remap all paths in system service unit to target user's home 0f597dd12796dc69c76f38af447c0e61e72b8fe9 fix: STT provider-model mismatch — whisper-1 fed to faster-whisper (#7113) 5a8b5f149d62206d074ed36639fe172578aaa7c6 fix(run-agent): rotate credential pool on billing-classified 400s 5c912ae929036e29c728626d2f21b0fdb52a9761 fix: STT provider-model mismatch — whisper-1 fed to faster-whisper 67e086dc4eace538adbd92033fdab78a146514a8 fix(run-agent): rotate credential pool on billing-classified 400s f4f8b9579e84d00313c1b9222031cf9243c3d7ab fix: improve bluebubbles webhook registration resilience c6ff5e5d30893d812a0c0717baf7ea67d97dea87 fix(bluebubbles): auto-register webhook with BlueBubbles server on connect 9aedab00f4a4d990aab2091b9645669902b0d18b fix(run_agent): recover primary client on openai transport errors 19292eb8bfad25efd945b63b6151b31b8264eceb feat(cron): support Discord thread_id in deliver targets 526fbcf66eb17b367f16e08c7c96720b3b976329 fix(run_agent): recover primary client on openai transport errors e57057b9ef7b619db4bb5198401cb0808c8806da fix: improve bluebubbles webhook registration resilience 7e197e998db4e7ad61646c0aba922c0250897a09 feat(cron): support Discord thread_id in deliver targets 6d5f607e48036dc35039b040c7cef81e95038c3c fix: add all platforms to webhook cross-platform delivery 52bd3bd2004c7f7eec4f93605b3f5a33183cdf5a mattermost added as deliver to webhook gateway fabf7206b836acaef69d7291d36f42292b365954 fix(bluebubbles): auto-register webhook with BlueBubbles server on connect 95fee1f32fc1c9682470d4554215e7340314813a fix(gateway): scope /yolo to the active session 11d59ad3625bb8a8ef36dad425b46f2fc2f1a353 fix: add all platforms to webhook cross-platform delivery 62adbfccc30ee613f8c0e34f27a341cd12d2e627 mattermost added as deliver to webhook gateway 568be710034bac9e0c2f66710d949f5039e1684d fix: extract custom_provider_slug() helper, harden gateway test a2f46e466591cb8f4a97be59f8bd9a13bfbda2e9 fix: include custom_providers in /model command listings and resolution 7d426e6536910c5fedb7cd4a9a9010527b264de1 test: update session ID tests to require auth (follow-up to #6930) 30ae68dd3368bdc8c5b6c12eeadbab92bf6196a0 fix: apply hidden_div regex newline bypass fix to skills_guard.py 9afe1784bd61420e47e8ce6150d7c0d817b974ba fix: hidden_div regex bypass with newlines, credential config silent failure, webhook route error severity 94f5979cc2dcd0a2decffa044c84aff524572022 fix(approval,mcp): log silent exception handlers, narrow OAuth catches, close server on error 738f0bac1373b90e9aebeea942b61569d0bc8b30 fix: align auth-by-message classification with status-code path, decode URLs before secret check 37bb4f807b5e88a5ec9d84ad22611dc470fefb83 fix(dingtalk,api): validate session webhook URL origin, cap webhook cache, reject header injection b57769718936b0c32ac593af8e1f0274905a25c7 fix(model_metadata): add xAI Grok context length fallbacks afc547c8d3e52122ea1af9856aa80c59ed81d69f fix(model_metadata): add xAI Grok context length fallbacks 5b22e61cfa91e67990147eea8251a90251dc476c feat(discord): add allowed_channels whitelist config b39ea46488d56d5e19eecfffe16536dba9d27b15 fix(gateway): remove DM thread session seeding to prevent cross-thread contamination (#7084) aad40f6d0c8900a4cf12c414b2a1fcd722b26293 fix(tests): update mocks for file sync changes 41c233cb9982990037097eafa71334e077fa3247 test: add reproducible perf benchmark for file sync overhead 1f1f2975289a9e4979be91c6c441552bb2b5c948 feat(environments): unified file sync with change tracking and deletion a844513608ff7555ea2ecaad6afb0e438dc2af3d fix: extract custom_provider_slug() helper, harden gateway test 1495647636956868daf831eb6d3480b91e943106 fix(config): allow HERMES_HOME_MODE env var to override _secure_dir() permissions (#6993) 4e78963fe86a5f2758bf754a7979dc31aaf1a3db fix(acp): remove dead nested usage dict path f92298fe955fe2ddbea27f4c504ce310ec46545b fix(acp): populate usage from top-level result fields d6f0d32418cfed28bd2345755db24121e630bf5e fix(acp): remove dead nested usage dict path eaa21a82754be70890c1f74a4c53147dbbfefe92 fix(copilot): add missing Copilot-Integration-Id header 16c19e595bcc10ebdccd67ddf24e12c45084f216 fix(acp): populate usage from top-level result fields a420235b66bd3fb547656345df81b5f76ea64548 fix: reject foreground timeout above cap instead of clamping 6c3565df57780e3bf085e24aaf62512618d54186 fix(terminal): cap foreground timeout to prevent session deadlocks 8b38ca861a5f1750f056c408c667174ea04d998f fix(gateway): remove DM thread session seeding to prevent cross-thread contamination 51d826f889428b11f3f88da0a4ce2c9fda98da5c fix(gateway): apply /model session overrides so switch persists across messages a04854800f77cffc3c4ef39fcfccddb896c4a185 fix(security): require auth for session continuation and warn on missing API key 940237c6fd83de3848e429c78094d9682c691805 fix(cli): prevent stale image attachment on text paste and voice input 569f658871505ed1dd444ad36b57d98a9e7d1d9c fix(copilot): add missing Copilot-Integration-Id header 95ee453bc06c2c8ef940443a13ea58e54ca7c1b6 docs: add cron script timeout and provider recovery documentation 38cce22e2c81e1615b43f30815edfec5c2d75c0e fix: harden cron script timeout and provider recovery 7368854398dd4dc375c49e5f1df982a9c1833224 Refresh OpenRouter model catalog 38ccd9eb95dd89f19f77e0c5cdce416b8c90a494 Harden setup provider flows 8ba94f41c2a19b4355993d710d4daf1b5c9c850b fix: reject foreground timeout above cap instead of clamping ca2d28d45cc47b22463c4e8e7887376ed1a82459 fix(terminal): cap foreground timeout to prevent session deadlocks 7d91228c2a321a2e6d36ae1574dfdde08dbd8bdb fix(tests): update mocks for file sync changes 6eba27955680579cdaae9689cce12ed77eb043c7 test: add reproducible perf benchmark for file sync overhead 517ea7ed453a9301f0d100c2141cab172cfbbf1a feat(environments): unified file sync with change tracking and deletion 9f3097033b41516ed100fb57c26659cfc758f127 docs: add cron script timeout and provider recovery documentation 9a2181d796fc53bcb8a2d15ed1cafd7842f6cc28 fix(gateway): apply /model session overrides so switch persists across messages 4540fb949ed18ba966ba4fe1bd143e1323b51d50 fix(cli): prevent stale image attachment on text paste and voice input dafd2cb4f03aa68a24bf51f4fa433c9cad1e6eb9 fix: harden cron script timeout and provider recovery 3f054e92d80f980520e4f86af3f12209b7a30829 Refresh OpenRouter model catalog da4ee6d193a643a301ff61f8eaf68d22dc9559c4 fix: include custom_providers in /model command listings and resolution a2fbb1eea32cd73b2bac062a814526bf6db8152c Harden setup provider flows 45034b746f8fea56e99bb5325c4bba3b31a5bbf1 fix: set retryable=False for message-based auth errors in _classify_by_message() (#7027) a7588830d4a2422bc67c6c77f980939886a4ca31 fix(cli): add missing os and platform imports in uninstall.py (#7034) 9431f82afffc01efce774ebe23b832eb5981d612 fix: update Kimi Coding User-Agent to KimiCLI/1.30.0 5628412d987c5dc10753289d21fef29c28914285 fix: update Kimi Coding User-Agent to KimiCLI/1.30.0 304f1463a9aae82ec4fce47d4da9dabfd0598d70 fix(tui): show CLI sessions in resume picker 6da952bc5000f9204e37ec4227f62d84f62428ec fix(gateway): /usage now shows rate limits, cost, and token details between turns (#7038) 8779a268a70a2540b003fae93f45caf764fbecda feat: add Anthropic Fast Mode support to /fast command (#7037) 294c377c0c57aabbe545b62d4bfd7980c583dc18 fix(tui): use PROJECT_ROOT instead of cwd for HERMES_ROOT fallback 74ef0a96744aa0e7372d6befb36f640cfe94d31f fix(gateway): /usage now shows rate limits, cost, and token details between turns eed4df622484925fcb49296716293f75afb7eb60 feat: add Anthropic Fast Mode support to /fast command 0848a79476e5fe52354287a93ef48f262908127c fix(update): always reset on stash conflict — never leave conflict markers (#7010) 96b4432d2b20fc7a91358d5e7ef4c48bf9f444fe fix(update): always reset on stash conflict — never leave conflict markers 871313ae2dc55c2d6e2490fd97902bdf9ec2b70c fix: clear conversation_history after mid-loop compression to prevent empty sessions (#7001) bf754b461150aa365241f7f3b05e31dc304585d3 fix: clear conversation_history after mid-loop compression to prevent empty sessions 13d7ff3420adcda4784f03a0fa0f69713cfaec13 fix(gateway): bypass text batching when delay is 0 (#6996) 4d2f59dbba81aeb2a194d696b10e3324f1afab71 fix(gateway): bypass text batching when delay is 0 d5023d36d8178080df165292d41c50f05f7142da docs: document streaming timeout auto-detection for local LLMs (#6990) 5064075efc8c61a4f35d01d53ec4a95c8cd71916 docs: document streaming timeout auto-detection for local LLMs 0602ff8f58ebeb4c5ea5feebc91fd4443d259210 fix(docker): use uv for dependency resolution to fix resolution-too-deep error 8104f400f848c6208f52cc782495390384eea6b6 test: disable text batching in existing adapter tests 1ed00496f21f30f09f4f4c6a1c65f912ca70d459 test: add text batching tests for Discord, Matrix, WeCom, Telegram, Feishu f92a0b8596c2e990f3b29e30a09360c69af46198 fix(feishu): add adaptive batch delay for split long messages 1723e8e9983f66bad844692f26e43fb0f61a92c6 fix(wecom): add text batching to merge split long messages 07148cac9aaf4e8a6a0e4db6f75bf803130d7339 fix(matrix): add text batching to merge split long messages 0fc0c1c83b37e8d06966312e6ec2de9f040f819f fix(discord): add text batching to merge split long messages 50757179497fff2368f84f436a99f26f0cfaa0ce fix(telegram): adaptive batch delay for split long messages 1802bd5e3860f5aa17ceb1c2145ff2594035323f test: disable text batching in existing adapter tests 660379637ab5e75b92f985949e460266254a697a one more nix fix 0b3b1af1f56e08b6091c38d4c422203d9a930f28 test: add text batching tests for Discord, Matrix, WeCom, Telegram, Feishu b9fd4d898d5cdaea0173f51bdd2d9ee5c92da13b fix(feishu): add adaptive batch delay for split long messages e15db23111576cb09d98e6da273d0f9b30d91298 fix(wecom): add text batching to merge split long messages 740e87138f548f7878ada245e96767f69e3105d6 fix(matrix): add text batching to merge split long messages 2cac7520d648b284692bb171112abeb3ad3e691a fix(discord): add text batching to merge split long messages f783986f5aeaa133bbcfb0439ed99ab45511d94a fix: increase stream read timeout default to 120s, auto-raise for local LLMs (#6967) afcecc734c2000bdb2d7ef2a0c2689f7f78c3a1a fix(telegram): adaptive batch delay for split long messages bda9aa17cbc64988a632f10c695f25bdff1cf348 fix(streaming): prevent in prose from suppressing response output f9475136182ce6308eabc4cd5e417879c8db0b8d fix(docker): use uv for dependency resolution to fix resolution-too-deep error 0a668f2cb842798c108b17e767761729d7c91495 fix(streaming): prevent in prose from suppressing response output 8394b5ddd24bda824170db9a36640f4c235d3550 feat: expand /fast to all OpenAI Priority Processing models (#6960) 7d001a2da2a164942b25750df262d169d87d0b2b feat: expand /fast to all OpenAI Priority Processing models 12eb70800531813a95494b25995788d7aed716fa fix(streaming): prevent in prose from suppressing response output d416a69288fc2108a514f4f0650113f1a640a957 feat: add Codex fast mode toggle (/fast command) bc80848e4937dbc81293638210c9a5601294c9ff update lockfile 4caa63580335ed1d52f34d9cd71342df0cb638b0 fix: add auth.json write-back for Codex retry and valid-token early-return paths a64d8a83e17e7a16deb3f9013f896f9dd28a2e63 fix: proactive Codex CLI sync before refresh + retry on failure dfde4058cf44c1cfd55c7c2bc1e89b648a2ea4d7 fix: sync refreshed OAuth tokens from pool back to auth.json providers 13b3ea64845e664395eae1882ead1d31d92e97ca fix: skip stale Nous pool entry when agent_key is expired 658cd2dd4ccb47c318897d90d7ddc535395f683d nix: add tui lockfile update script 8c1ba639c6c2dcc39730c0c5b7846b95a32ad09f Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor 17a9c47178e41f1e269c3e79273b5dd6170faab3 feat: support shift enter for ghostty etc e1df13cf2015c732d0c1b47a6f9f1426929d9848 fix: menus 941608cdded0fd38cea75c7b92fe13e357e0b472 feat(skills): add creative divergence strategies for experimental output 752b31b97c2bbb454952237835710ae9edb11054 feat: add Codex fast mode toggle (/fast command) 2783b5eff4261f18ee95a3c628af87a9c466ccd7 fix: add auth.json write-back for Codex retry and valid-token early-return paths cb0cbd03cb9ff6ee0311abc867a87888652c4406 fix: proactive Codex CLI sync before refresh + retry on failure ed94a5149d71920fad05803be2d950ba7c0e2b37 fix: sync refreshed OAuth tokens from pool back to auth.json providers 0541482bcbb675c49fa3d409770e746344e6ff0c fix: skip stale Nous pool entry when agent_key is expired b87d00288d68b7e63df86eb0f11134e8f1304ec9 fix: add actionable hint for OpenRouter 'no tool endpoints' error 08e2a1a51e5e201351245bb5c983a87f923dac2b fix(anthropic): omit tool-streaming beta on MiniMax endpoints 69f0df0402771dd4ee0082b063d56007ce155fa8 fix: sync refreshed OAuth tokens from pool back to auth.json providers 4fe78d5b88868e9ad15a68a656933d196f96236a chore: fix bad merge apparently? aa5b697a9d5e51f07d944107aa3b7bef1c0785ef Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 42e7755d4cf683af3abade518718f989a5dd568b Merge branch 'main' into api-server-enforce-key 68954b7c03ed6a93a7d80b8671580008d23f80c2 add helper function to check if host is network accessible and add tests for that function 34a6997f1dfe5a3377d2a6ecf165e9f82d9aaaa5 fix(anthropic): omit tool-streaming beta on MiniMax endpoints aca479c1ae5ed9ab5a70f755b31fdbd238ed61a5 Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor b85ff282bcd850b242b024c96f7de0cd1ea99b4c feat(ui-tui): slash command history/display, CoT fade, live skin switch, fix double reasoning 9634e20e15b9cb2710504f37e12dd8d966e7e933 feat: API server model name derived from profile name (#6857) 9f4eea0774cd31203bad1c0f07db6bc59e607dca docs: multi-user setup with profiles for API server + Open WebUI c58c49a1667d49b07bc237af731b9ce729bc168f fix: add Alibaba/DashScope rate-limit pattern to error classifier 2d0d05a33727269f4dae5100f9b1fc1535992795 fix(agent): detect truncated streaming tool calls before execution 0476c154a908b6866a6b16b0fa748a5fe6b52cf3 feat: API server model name derived from profile name f8053235176de7c17fb6e3d086be175e4af99095 chore: merge main 4406b4b100c98526338413c2579d46eee0584cac fix: add delete support 17ecdce93690c1a946ec02b99fce9a88816413e3 feat: add slash commands to the history so it doesnt get lost 7e813a30e05ba98d1ce54e46ad0385628e2bc885 fix: sexier cots 3b554bf839106f3f437e8a61aec46fac210560e2 fix: test for suppress_status_output should capture stdout, not mock _vprint 69a0092c383e36857edc77aa8d4e411d3fcb7827 fix: deduplicate _is_termux() into hermes_constants.is_termux() c3141429b799cf79b847b34df59c596307ef7847 fix(termux): tighten voice setup and mobile chat UX 769ec1ee1a42b8e99fc39e30acc4caebef4ab5a1 fix(termux): deepen browser, voice, and tui support 3237733ca598db2442aaaf985762aeec6ebbfda2 fix(termux): harden execute_code and mobile browser/audio UX 54d5138a54a2d9a40e34bb9111d39f21b3ec8a95 fix(termux): harden env-backed background jobs 6dcb3c477426100309e23b785757352757d2654d fix(termux): compact narrow-screen tui chrome 096b3f9f12abf6d7e31d5d622b55a46092d8bed7 fix(termux): add local image chat route a3aed1bd26040479aae970f22d683f373572bc92 fix(termux): keep quiet chat output parseable 4970705ed383118bae290fa56745468272735138 fix(termux): silence quiet chat tool previews 21944259184ffa1f2a299ba22a0dbaa4b1ed3bb1 fix(termux): make setup-hermes use android path 387849597227b99d4f0446ae063c702c6e1d3e4f fix(termux): disable gateway service flows on android 4e40e93b98184cbe145a20ac2f2698fa4621271c fix(termux): improve status and install UX 122925a6f22d6a9939ed334a0a882551d399a59f fix(termux): honor temp dirs for local temp artifacts e79cc8898517cf4b06b0490b828e79a1ee1ede59 feat: add tested Termux install path and EOF-aware gh auth e053433c844133340c367032e2461b92dd14b2ad fix(error_classifier): disambiguate usage-limit patterns in _classify_by_message eca2d355f6b7941dec43ff140b6ea983e95dea74 fix: skip stale Nous pool entry when agent_key is expired 1cd57fa3a6f7c6258b1455bd3b9c612595947b14 fix: _is_expiring() returns False for None/missing timestamps ddb0490af214f64f77106853b0b150af9fbb8db8 fix: add hermes_pkce sync/retry parity with claude_code for Anthropic OAuth 6e24b9947e6f3cf2b11a8b7e2a849a9b23442dae feat(ui-tui): render tool calls inline in message flow instead of activity lane f90afa03cc75bf313939be1750369587a778650f fix: proactive Codex CLI sync before refresh + retry on failure a4e414c83214a19282e3477632a35ff3e2161fcd fix: clean up stale test references to removed attributes 19e95307aac717befdcd129a8eeb30f5be4e88b6 chore: remove spec-dead-code.md from tracked files d079fe507b6c5c03088d1b0beb43f212b0b46868 fix: restore 6 tests that tested live code but used deleted helpers f2968ef609c390ac837288395c496d300b4d8665 merge: resolve conflict in browser_camofox.py (keep dead code removal) 99fd3b518d94f5e878834da95230e11f396eb0b9 feat: add /copy and /agents 1789c2699afb00f84e70b15a4dbbb6092a357ad1 feat(nix): shared-state permission model for interactive CLI users (#6796) d2fc6ece59d14b11b62ed5ba4094d689dfdc44cb fix: test for suppress_status_output should capture stdout, not mock _vprint af4ac8ce4599ec2b4c88492785bbfc6a696708a2 fix: remove 115 verified dead code symbols across 46 production files aed9b90ae31a5c3ef608d5369614f4ac84ce45d5 fix(stream_consumer): handle overflow when no message exists yet 6b437f7934e568b587f57c4731a6e93668f27343 fix: /browser connect auto-launch uses dedicated profile dir (#6821) 1a4674e9e8f5b5d7c2a1cc287f420e556de2d0c6 fix: /browser connect auto-launch uses dedicated profile dir f91fffbe3360d019cf8e6af38e4820cda8e90bc6 Revert "fix: /browser connect auto-launch uses dedicated profile dir" 49d8c9557f143bcde2695f5dfb666532e7100fea fix: cleanup_all_camofox_sessions respects managed persistence (#6820) 2dfb218063863c140e3d33c83decf87483ac0f08 fix: cleanup_all_camofox_sessions respects managed persistence 36aa68a66a806731552a877aa9f7198fc13637b2 fix: deduplicate _is_termux() into hermes_constants.is_termux() c3854e0f852eaa8b326dfb406f06ac990d048f69 fix: /browser connect auto-launch uses dedicated profile dir 76e1512275e5e7ce4ee853ff45299f4ead4d3118 fix(termux): tighten voice setup and mobile chat UX 6510a9fa25c6bc3fcfafc27e67f9d41cdf627142 fix(termux): deepen browser, voice, and tui support 90a37f979da5873cfbc82648d222f389d7269e76 fix(termux): harden execute_code and mobile browser/audio UX de379074583c835443a033de0b5d93f160054b3d fix(termux): harden env-backed background jobs 8c415039a23cc54332bef6d41ec9990c4a717f67 fix(termux): compact narrow-screen tui chrome b6436c4b0964d4e3f0b5d0fcc69bd13ad1ace2e3 fix(termux): add local image chat route 21c6f46ce5c952a4059c71f940edfffbcdef7dd1 fix(termux): keep quiet chat output parseable 18bad989c7ef2215324751a8fb237673cc35cbf0 fix(termux): silence quiet chat tool previews efc1f6ce34ed7f0e6a7c272f1c52c4913bbb9a59 fix(termux): make setup-hermes use android path dd8c0ee380d21f4c3b0567702f5c8489cdb88040 fix(termux): disable gateway service flows on android 195879c99fea75b69bc3e6b416ed72fe07a336e0 fix(termux): improve status and install UX 56f73f34436019ad4967705857d3b5f8f5f85674 fix(termux): honor temp dirs for local temp artifacts bdcbe125cf2a23cf09d9f7ef6d7b0a8287918fa7 feat: add tested Termux install path and EOF-aware gh auth 97308707e91a34310531661cec89a23b11b14f2c fix: insert static fallback when compression summary fails e9168f917e49829ab1e327bfbd7b868933e63077 fix: handle HTTP errors gracefully in gws_bridge token refresh c8bbd29aaed55ab14dd49dfea9ae320c4b4403ed fix: update tests for gws migration 73eb59db8dfa33c21453828d021f96b1135175a3 fix: follow-up fixes for google-workspace gws migration 127b4caf0d96f03b74be1379778bfa74f1c6e820 feat(skills): migrate google-workspace to gws CLI backend c5511bbc5abb19ec380e72ec7ffa2d9ef92ce2f3 fix: leading ./ thingy 6a1c67bc5b6d8766ed1e31ae812cf7bfc8e348c8 fix: handle HTTP errors gracefully in gws_bridge token refresh 1780ad24b1279e63027a42c5cdb75f2ea7324fea fix: normalize remaining reasoning effort orderings and add missing 'minimal' 775a46ce7522ee231e3d94c22f56360ba81c0d4c fix: normalize reasoning effort ordering in UI 6f8e4262757e8127cefd582040e75917dffeefa8 fix: add SOCKS proxy support, DISCORD_PROXY env var, and send_message proxy coverage 88dbbfe98282af31e337e5dad081a9a3f1885a88 feat(gateway): unified proxy support for Discord and Telegram with macOS auto-detection 34c52f2460ba31c1796ce76a380c73c75120c2e9 fix: add SOCKS proxy support, DISCORD_PROXY env var, and send_message proxy coverage 76b683af89765528d6e61af59ec6d8fdec0cc2ba feat(gateway): unified proxy support for Discord and Telegram with macOS auto-detection 88845b99d2e01be8bf3d02e8bb638ef8b2550fb2 fix(slack): add rate-limit retry and TTL cache to thread context fetching 18d8e91a5a0bd5237cfb7ca39eb0dda803198432 fix(slack): treat group DMs (mpim) like DMs + smart reaction guard 1773e3d647915deb4e225d19693ef88ddc7fb752 feat(slack): add allow_bots config for bot-to-bot communication 7f7b02b7640f9f7756bad297922ccc15145f729e fix(slack): comprehensive mrkdwn formatting — 6 bug fixes + 52 tests 7d499c75db948a76b3c54eca1781a6e0ff1c5735 feat(slack): add require_mention and free_response_channels config support 997e219c14968ff7a63e78b2373d878773461997 fix(security): enforce user authorization on approval button clicks ab7b40722451c85424ab7c4ac009bff5bd9808a5 fix: atomic Slack approval guard, safe JSON deserialization fallbacks a239b664e679535246222692b7fd27e53850c188 refactor: simplify managed file handler and merge activation loops 33c3f0a2035229e47201725757e42bcaf5a04b22 Fix managed log file mode on initial open d12f8a157cb87b71fdbd1877747c5d1daf3bd37e fix(slack): add rate-limit retry and TTL cache to thread context fetching 8d914eba26428953692178bbd30c523d7df08bdb fix(slack): treat group DMs (mpim) like DMs + smart reaction guard c142d1884baad02aba72a13d36e66cedc354f177 feat(slack): add allow_bots config for bot-to-bot communication 7f560a72b0a0f55a627f3c39f504b4237f151ac0 fix(slack): comprehensive mrkdwn formatting — 6 bug fixes + 52 tests 55960330fc35f7e8852abe1245a1e9331d93b6fb fix: update tests for gws migration 68a6ca03dc2cd1676a42bd463417fb4c9da1335b feat(slack): add require_mention and free_response_channels config support a9d0666ec239210fa4607a979d0023b677a683b5 fix: normalize remaining reasoning effort orderings and add missing 'minimal' f82092948f62f82543ae0dc2c5d370886bfa5766 fix(security): enforce user authorization on approval button clicks 09eef2ca21a12a2750c767b5f42765bc81486706 fix: normalize reasoning effort ordering in UI c0f350c119f4554ee1c9d721320684402bc9b896 fix: atomic Slack approval guard, safe JSON deserialization fallbacks c6974fd10851a6c8dd9aba1df5fd700d673c3861 fix: allow custom endpoint users to use main model for auxiliary tasks 95220facdfaa8c26b62f6b6d6d9637b3d96fa7e6 Merge branch 'main' into api-server-enforce-key c6dba918b3b9ee605114be13e6a579c0b638c900 fix(tests): fix several failing/flaky tests on main (#6777) b7d4ea15507a6fb72df81fb78f402c2362dea435 feat: better hyperlink formatting f28390d3c877b34487d152cb9087e51b58656a52 feat(nix): shared-state permission model for interactive CLI users 9e6029bc73b3c345a709811b7b6ac66c57859943 fix: follow-up fixes for google-workspace gws migration d5bdf6a4acb5d56157455c526b4d20a0b5b8eccf feat(skills): migrate google-workspace to gws CLI backend 74241328f0bac5f9f8e6c7a21193616ebb776397 direnv: watch lockfiles/nix files; gitignore .nix-stamps df5874c119a4b39f45c65fb3b43a337abffddbfd nix: add bundled TUI build-time verification check 21afb3fa3caa8748fc70bb44fe1ecdcbb5e42090 nix: delegate devShell setup to package passthru hooks 31b2c12f0f541eceaca927e32865140dacfd19d1 nix: bundle TUI in main package with passthru hooks 405c1b4e842f2c1635dfef5717880d9cf3f886ba nix: add TUI derivation with buildNpmPackage 5ff96551d508fed1efd67be5f6b3285b1259759a cli: support bundled TUI at HERMES_TUI_DIR (for nix) 2b4272ef5b45fd7eef5710d4fd97b6ab740f1eb4 ui-tui: update package-lock.json 670dcea8f44a8884f67301244a6cec516b3025c7 ui-tui: add tsc build pipeline 17f13013ebabed4483fe308a2d5e818e2c5f5319 chore: fmt 3eade90b399b99e2e76ff7b4bc16e4ccbe2f116c fix: OpenClaw migration now shows dry-run preview before executing (#6769) 00e1d42b9e23554e0f8d05960f9fa1cfebbe0a6d feat: image pasting 6e8a6203cdfdafbcb6f2b914461283ce73db2b4f fix: OpenClaw migration now shows dry-run preview before executing 34d06a980244fb5bd88345765708cd7e36e3f118 fix(compaction): don't halve context_length on output-cap-too-large errors 2772d990853faf5ddf6fc07e4f28f8ff7b692794 fix: remove /prompt slash command — footgun via prefix expansion (#6752) ee16416c7b23b670d8e4172b6346b077adc83d2d fix(cli): prefer auth.py env vars over models.dev in provider detection (#6755) 3007174a61cbad9145794f24c9d7f9251fdf1d39 fix: prevent 400 format errors from triggering compression loop on Codex Responses API (#6751) 2f0a83dd126d66dacc6ccbc88a98a964e443586b fix(cli): update TUI status bar model name on provider fallback 110cdd573a4e106614d7ab5b69d8e8e06459afb9 fix(auxiliary_client): inject KimiCLI User-Agent for custom endpoint sync clients 4d1b98807016ba7d5c573c00477626863083f48d fix(credential_pool): use _resolve_kimi_base_url when seeding kimi-coding pool 019c11d07e082acf401cfc7f008757df0cd98a05 fix(fallback): preserve provider-specific headers when activating fallback e46cdf2171c90c30d1ddb3b34d6fa8844956449b fix(cli): prefer auth.py env vars over models.dev in provider detection 7c30e61d718d90647108126eb88ee715722380e6 fix: remove /prompt slash command — footgun via prefix expansion c44ed125a41bcbb9ce7035fe7b985881b2025cee fix: prevent 400 format errors from triggering compression loop on Codex Responses API 5ea9bf70de095c9177bd2aa5db9cbfeeaff0a173 update code comments and documentation fce23e8024cfac3343ca0c433bfdd3a7dea1de0e fix(docker): #6197 enable unbuffered stdout for live logs 29fd94beb86f44e6d7544dd8b6b70bea0d95f606 fix(cli): update TUI status bar model name on provider fallback 42b3303f2652a7bc819651abd04d2567a911b664 fix(auxiliary_client): inject KimiCLI User-Agent for custom endpoint sync clients 9050c43856fa7f116c0ccf317691a66fd22331d9 fix(credential_pool): use _resolve_kimi_base_url when seeding kimi-coding pool 21d5ac910683602e125801a609d54ba4639bca5f fix(fallback): preserve provider-specific headers when activating fallback e44bec8e4cb7c6cc843eca264181512d3b50d4ba fix(docker): #6197 enable unbuffered stdout for live logs 1ec1f6a68aa17075b72029bcf4dbf79b26501823 fix: model fallback — stale model on Nous login + connection error fallback (#6554) b2ea9b41763c85630e5c15d601dd74f093610c4a Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 67e4d43ea164d8adbb2eff5d61ea115442e385ff enforce api key when interface is not loopback 0d7c19a42f35a5e8370109b6ffc8b8009f5e8837 fix(ui-tui): ref-based input buffer, gateway listener stability, usage display, and 6 correctness bugs 637ad443bfc8f24884fa54db104ef80321eafe7c nix: add tirith to runtime deps (#6721) a8b85bb8878b18f718b90787409d9c15fda61c10 fix(nix): make setupSecrets activation script optional (#6227) (#6261) d9753720f366287d52be14386e8f1eabbbe89fe3 fix(nix): switch nixpkgs input from nixos-24.11 to nixos-unstable (#5520) dbc11abcb6d26b4270d1d81477569d9cc53b66a0 fix(ci): pin floating GitHub Actions tags and ascii-guard to explicit versions (#3982) 02848d1a7861aabe47653ba804dca082dffbc934 fix: model fallback — stale model on Nous login + connection error fallback 268ee6bdce013c74c9a8dfbb13fd850423189322 fix: add turn-exit diagnostic logging to agent loop (#6549) 173289b64fbe16ab322d0f0331cb0a3ad27cd5f3 docs: add hermes dump and hermes logs to CLI commands reference (#6552) 5a1e4697f893b97e6de6fc4f4e839d6a8fd3629b docs: add hermes dump and hermes logs to CLI commands reference 1a3ae6ac6e2a0df226e472c87daf6c0cebe75beb feat: structured API error classification for smart failover (#6514) 78e6b06518148309a598cdb3267f9036a7315b62 feat: add 'hermes dump' command for copy-pasteable setup summary (#6550) b650957b405b5160b7d4b55758d240e344203d3b docs(bluebubbles): fix pairing instructions to use existing approve flow (#6548) ad06bfccf0c22bfb2a114e40af7edc5b3a850e38 fix: remove dead LLM_MODEL env var — add migration to clear stale .env entries (#6543) c75fa88d6010538306c91961ad672d85d39cfeec fix: add turn-exit diagnostic logging to agent loop 79f8518292a7bf620f7627b54e186eec502c965a docs(bluebubbles): fix pairing instructions to use existing approve flow cab334087407f0c909c8bb34362685df2b976b7b feat: structured API error classification for smart failover 4ef70c25bf7db6c1f950e31a37707720bd9080ad fix: remove dead LLM_MODEL env var — add migration to clear stale .env entries 8dfc96dbbb26625badd5607ed880d37bbaf9c672 feat: capture provider rate limit headers and show in /usage (#6541) 6994ea32dd1f290ab73bb56b3d871c98233d4a90 feat: capture provider rate limit headers and show in /usage 3c8ec7037c6aa59d04faf9c2ef5a1fee02c6fb26 fix(agent): catch PermissionError in subdirectory hint discovery 9bcba026a6857a0f8fb60e9e721863e9a5f3333f fix(agent): catch PermissionError in subdirectory hint discovery 161c2c4da4339d1cc6fda62e433dc7d39508ee78 fix(skills): archive OpenClaw cron store without config 227cc8a95ce70859f4feef7eaeff8aac58281212 fix(skills): archive OpenClaw cron store without config e22416dd9b47cf69cf339ec00a6a515b18d8ce5f fix: handle empty sudo password and false prompts a94099908aeb0d9bb948d72f738bcd7c2b83d57b fix(state): orphan children instead of cascade-deleting in prune/delete (#6513) 7a9521188e28ffb5c3048ed85d4f583ac3dce618 fix(state): orphan children instead of cascade-deleting in prune/delete aecc273b4645df1788d44cd698d5caf8c88feec3 fix: handle empty sudo password and false prompts 851857e413a6acf591cf4f00ad58abc48fe6316a fix(models): correct probed_url selection logic b408379e9d44bae4fb366d19183840dd52c39a16 fix: reduce credential exhaustion TTL from 24 hours to 1 hour (#6504) d6430d07210ef824792d04199ad37624133f43cb fix: reduce credential exhaustion TTL from 24 hours to 1 hour fe2bf02b571fc564f7eaaba422409af10a50d736 fix(models): correct probed_url selection logic e1b0b135cbb71142e68e9a8b3c27b2b5188634ec fix(discord): accept .log attachments and raise document size limit 1eabbe905e86bfadcdfbc417044decb9bc4f93c8 fix: retry 3 times when model returns truly empty response (#6488) b962801f6ae9451725f56d7bcfd53ae8b491313b fix(bluebubbles): add setup wizard integration and OPTIONAL_ENV_VARS (#6494) b6d2ba640eb398810e09ed5c6658a3f27e360417 fix(bluebubbles): add setup wizard integration and OPTIONAL_ENV_VARS e63727ca4af2fe060d3e27bba0354cbea6ed5bdf fix: retry 3 times when model returns truly empty response 5cf4fac2aae0fb73ebe8760cd099924e8b4b996d fix: restore codex fallback auth-store lookup 894e8c8a8f505c863e4a1c2365feb6607e22072e fix: resolve opencode.ai context window to 1M and clean up display formatting 18140199c3a1cbb658a2eeadf692ffb8b5d1626f fix(ci): build and push multi-arch Docker image (amd64 + arm64) (#6124) 9f027de475ba145832393dacd57b41219f18e078 fix: resolve opencode.ai context window to 1M and clean up display formatting 7120d6cdd6a6e3d0559185caabaef203dceca622 fix(bluebubbles): add missing integration points and documentation (#6460) 529003b8d51a33b895dd4962a92c8e1a1444a0e6 fix(bluebubbles): add missing integration points and documentation d40264d53b5fe88313367d8554a75efdc07a8d9f test: add coverage for token-budget tail protection c506126123508bb097dd5bc3d35dbc335e729e3e fix(tests): update context_compressor tests for min_tail=3 d12f8db0b8c2c1df9b2239b00d5a37b026e85ec7 fix(compaction): token-budget primary tail protection 25757d631b493381c22efe45984655b06ae97651 feat(hindsight): feature parity, setup wizard, and config improvements d97f6cec7fa85038654b8b58529aed6307a104be feat(gateway): add BlueBubbles iMessage platform adapter (#6437) 241bd4fc7e48cfeb4417a41145bcf796e2df7a6a fix: add size cap to assistant thread metadata cache 30a0fcaec8ff142813cc6826aa3da953c645e7ee fix(slack): handle assistant thread lifecycle events 2faa9c4c75c845bf232ffb01db2c076046930753 test: add coverage for token-budget tail protection 9f8312178f790e655e896786cec529b80f1c708b fix(tests): update context_compressor tests for min_tail=3 c97b36230ee7d8592f725755b65e637a76773f24 fix(compaction): token-budget primary tail protection 5449c01d263556beb93bff6b525ad67f80a528ba fix: clean env vars in pairing regression test 1d8d4f28ae05198e995433c2c0f30ed324093494 fix(gateway): prevent background process notifications from triggering false pairing requests b59c6543f857ccfc22b863a049fc7e2021228ff3 fix: clean env vars in pairing regression test 8755b9dfc045f4d1e404fb1443a783fd50b30038 fix: resizing etc 5debb231fe3dd115a80c1392b33e861e953439e5 fix: add size cap to assistant thread metadata cache 01bc22892f694471abb7120bcaa4746b28e8242a fix(gateway): prevent background process notifications from triggering false pairing requests 9ceacc4e652e7e88a00cd8a619ab18fa9be6229d fix(slack): handle assistant thread lifecycle events 54bd25ff4a067c16f04af2b3807de339edda5b48 fix(tui): -c resume, ctrl z, pasting updates, exit summary, session fix b66550ed08bdbf6847a67618bb0d5fee0371fb6b fix(tui): stabilize multiline input, persist tool traces, and port CLI-style context status bar e94008c404f8d8af76c972d295f61797820106fd fix(terminal): guard invalid command values 338fe76e63a07a87e02c47fd990a774b20638772 fix(terminal): guard invalid command values e7d3e9d767b473b9fbcf7b85884aa90758a514f9 fix(terminal): persistent sandbox envs survive between turns 54db7cbbe1fe74a361485b95d2370b8b679bbd0a fix(agent): tiered context pressure warnings + gateway dedup (#6411) a6c7951ce7cbbd7749a048ccff8983945bcf9b84 fix(terminal): persistent sandbox envs survive between turns ffeaf6ffae91289c9a75869f1b03a54cc54729e1 feat(discord): inherit forum channel topic in thread sessions 989d4ea43d8fd59f022db00303b2eae14f10ab3a fix: set compression_count on mock to avoid TypeError in test 8567031433b1d4b091d7500a3b5d06dec1e89fc8 fix: improve context compression quality — named constants, tool tracking, degradation warning c49bbbe8c2b2db76939d764b855797b629623f35 chore: fmt af4abd2f2253bee78905493f565f4a3f99e1aec0 fix: correct unbound exception variable and remaining-time math in warning 092061711e0091cc5f7e4608781f91bffb69f000 fix(gateway): add staged inactivity warning before timeout escalation 980fadfea9dbe7906a70e3f1fe376559de476728 fix(models): preserve OpenRouter variant tags (:free, :extended, :fast) during model switch (#6383) cd15c04016cd2e3aa4ba7230dd8b9173412fc2b5 fix(models): preserve OpenRouter variant tags (:free, :extended, :fast) during model switch ae4a884e8dfc5cccf7303f1270d3d913791ae960 fix(agent): disable stale stream timeout for local providers (#6368) 6e3f7f3610e0cedd52f339e80c9fedd4d2c7880b docs: add tool_progress_overrides to configuration reference (#6364) e8112e38243c7207ba94d08c4e0ca0df4486dc4c docs: add tool_progress_overrides to configuration reference 42e366f27bd37ee72a006029f920c082f32d0018 fix(agent): respect config timeout for flush_memories instead of hardcoded 30s d77783d198ec2eb487f95b4f7fb74ab11d6c9365 fix: use hermes agent system prompt and nudges 4af69097f24a7423fdfc7c2dc6940024078718c8 add top_p + user nudges for incorrect format 59471b79e59b1ea088056335d20de54342a19515 update trajectory writing 0e459f2b7bb19bb31f755c44d4112323650dc039 Update default.yaml 3befb9389ff5df14d289e86af4ca941aec00cbf2 wip: run tb2 and fix modal instantiation 31dad6ee3a91553c9a9f58af4c842d97e5880281 fix(tests): update mocks for file sync changes 3baafea380ec18a6179fe3e82d742557d66389e4 fix(tools): skip camofox auto-cleanup when managed persistence is enabled (#6233) 10843ed93fbee0c26b91ab9ab9e29401543c811e test: add reproducible perf benchmark for file sync overhead bda15bf78333775f0f391f4a09422a94b0ed0fcf feat(environments): unified file sync with change tracking and deletion e26393ffc21cdd315b59355687400e561753bcd0 fix: Signal duplicate replies with streaming + per-platform tool_progress (#6348) 9d8f9765c1cf236117c3862e893c2bf5ba12b347 feat: add tests and update mds e19252afc46ff000180005bb82a1897460b0c4b6 fix: update tests for unified spawn-per-call execution model d684d7ee7e07c7690e299c9863e659147bd9d17f feat(environments): unified spawn-per-call execution layer f75e03db0685a2ca5769d52c9c72c16338bdd7ce fix: update tests for unified spawn-per-call execution model f226e6be107c676bfe6cb4877b166c07e2e993ef Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 7d26feb9a3327204447af9dc0045c44ca942c1e9 feat(discord): add DISCORD_REPLY_TO_MODE setting (#6333) f467af93f106164c6b41b16dd3a49da25d7136fa feat(environments): unified spawn-per-call execution layer e6aed7debf65d8dba109e62645edcb48c7be32e1 feat(discord): add DISCORD_REPLY_TO_MODE setting 875a72e4c86aa3b522fcb97b194042e4264dd076 fix: normalize httpx.URL base_url + strip thinking signatures for third-party endpoints 20a5e589c66ad4e0f456d807b67cd7b14c8e220f docs: clarify that provider "main" is for auxiliary tasks only (#6291) 7156f8d866a1f064b96fcf2c7f05fa64ed74d238 fix: CI test failures — metadata key, cli console, docker env, vision order (#6294) 8de91ce9d22fd979f6ab61a4e5ff9da5e1c69647 fix(nix): make addToSystemPackages fully functional for interactive CLI (#6317) 934de35b5c76ad5a3361ec506a8c790d29b1eda6 fix(nix): preserve group-readable permissions in managed mode 5c36071043dfd80bf0b7f8b96cb93fbcec4bcad4 fix(nix): export HERMES_HOME system-wide when addToSystemPackages is true 8385f54e9842fae583cabf2f22e0c6184ef41066 fix(nix): preserve voice deps on aarch64-darwin via nixpkgs (#5079) adab577812036a4df4e5522bb7e4dcfed8f8d7e2 fix: CI test failures — metadata key, cli console, docker env, vision order cd74bd7e8ad3c7cb7e559217201e8343937c2875 strip unrelated file_tools.py changes from PR 71968530892a31a9bde551bd4655b417c67ea174 docs: clarify that provider "main" is for auxiliary tasks only d9bbb5136911ade2d36635ca2ee987cb1475e614 chore: remove spec.md from PR 738069276d8152b4a9ccd3018a6eb698c20ae587 fix: normalize httpx.URL base_url + strip thinking signatures for third-party endpoints 7dc21784517e675df71ba0d55e6ec5089b2c61bd merge: resolve conflicts from main — prefer main's max_result_size_chars values 105caa001bfd8d2c856c776220bd1ed98e98c6f6 chore: regenerate uv.lock against current main d46db0a1b45b3f56e4fbb1f788f70d68482d1533 fix(tools): use correct import path for mistralai SDK 5f4b93c20f41f302e57800868f6a324928db5e69 feat(tools): add Voxtral Transcribe STT provider (Mistral AI) 5d2fc6d928d4d027473a4bf7e0548d505558fbbe fix: cleanup Qwen OAuth provider gaps 3377017eb4a0741d8887dd28d3bc35808b04d077 feat(qwen): add Qwen OAuth provider with portal request support a1213d06bdffe9a631f0f94663a08de125a41498 fix(hindsight): correct config key mismatch and add base URL support (#6282) 1631895d5a05d3489ec82be72d8f599b1d217065 docs(telegram): add proxy support section 4f467700d44d133c24ea1c6cc9819d8bfcb89c97 fix(doctor): only check the active memory provider, not all providers unconditionally (#6285) 84194db6417c6ac3af30049cf1b6ce9a11457e02 fix(doctor): only check the active memory provider, not all providers unconditionally 92eb1a70f76fd45976c5a878dcd03156329076d4 chore: regenerate uv.lock against current main a936bf9d83d6545e2cea4874ea5d9aa26d69f78a fix(tools): use correct import path for mistralai SDK 63601b914300d21d09b6846037dead795d878a40 feat(tools): add Voxtral Transcribe STT provider (Mistral AI) 5a8265cb7835cc57cc0f9bdf2a467ce1b5643487 fix(hindsight): correct config key mismatch and add base URL support 840efe485d7406a0fd93d75f934c8ed18d5bfd0a fix: cleanup Qwen OAuth provider gaps 1a43ea0ee7977c9e8e6bf9408faffee7682be04e feat(qwen): add Qwen OAuth provider with portal request support 0964ceae703fa8b0d01a48b18fe5267236ce6c25 feat(environments): unified spawn-per-call execution layer a435c7274a0dfe98941bfb666f53d10bb40e9c17 chore: uptick b59712348948b21ff48084c39aba6ffd142253a3 feat: better bg tasks af0f4a52fe2a4a806df33a2c36c1bbebe65134e4 feat: cute spinners c0271f73f6d7472f84059fda8f7f71337eaa6bfc feat: add WorldSim — OSINT-powered personality simulation skill 80f028fb2fde46a7239a8ae6da3005ad811166b2 fix(tools): skip camofox auto-cleanup when managed persistence is enabled b50d81f212120d38184af5c51f61d55bc21e2db7 fix: diff colours a9fa054df9f740f48267dd667ae7cc072403db3d chore: uptick 31cb23890a136ffd2d9525e7803f9b935218813b Merge branch 'feat/ink-refactor' of github.com:NousResearch/hermes-agent into feat/ink-refactor a3cfb1de8671c794c512eb8f7d111959d13cab80 feat: auto install tui deps ff6a86cb529a372198b4b80d5e022e32a4a3f2cc docs: update v0.8.0 highlights — notify_on_complete, MiMo v2 Pro, reorder 86960cdbb0148145890e2ee90b4e157fa899f6e1 chore: release v0.8.0 (2026.4.8) (#6135) 6c4c76bca8d6153fc8d2607dd9075a72e0993577 chore: release v0.8.0 (2026.4.8) 8b0afa0e5708c359503c15e903e063063d87d628 fix: aggressive worktree and branch cleanup to prevent accumulation (#6134) ab21fbfd89f4f168afcc024c3cf329140671ea98 fix: add gateway coverage for session boundary hooks, move test to tests/cli/ bdc72ec355a77594d2849a97c290f10aab016db0 feat(cli): add on_session_finalize and on_session_reset plugin hooks 20edcbbf732294ed8ae6857f3cbcbb2e17df1e59 fix: add gateway coverage for session boundary hooks, move test to tests/cli/ 825bd8cff59dfb0f943b6d43b2596eefdf66a25d feat(cli): add on_session_finalize and on_session_reset plugin hooks d0d57bcde15088715615e8280ebb42e9a0528f04 fix: robust context engine interface — config selection, plugin discovery, ABC completeness 8ef3939e1263391f57358148516532a15bc668f7 fix(ci): build and push multi-arch Docker image (amd64 + arm64) c8a5e36be8f59eba491d9b319a5842fc389a528b feat(prompting): self-optimized GPT/Codex tool-use guidance via automated behavioral benchmarking (#6120) 51751cdaf4e604f16d8782870aa9c14bac8edf56 feat: wire context engine tools, session lifecycle, and tool dispatch e7209789b9804e8390238703e2da2d7604379ee6 feat: wire context engine plugin slot into agent and plugin system ff95ec1c5499384946dfb8019dca43bbe884915a feat: add ContextEngine ABC, refactor ContextCompressor to inherit from it 6292959c1f43a8869d4fdccec3edbef8416c4a60 feat(prompting): self-optimized GPT/Codex tool-use guidance via automated behavioral benchmarking 1368caf66f6a012947a386f29522b176e8a32dd1 fix(anthropic): smart thinking block signature management (#6112) 85cf6e4066c7e94d1bd39f6266c2302f82cce3a0 fix(anthropic): smart thinking block signature management 30ea423ce8f064a4dab42d93b5adc26a9c2240b1 fix: unify reasoning_effort to config.yaml only, remove HERMES_REASONING_EFFORT env var adb5f186ff4261cf26ac1f96556b8c50b0139070 fix: unify reasoning_effort to config.yaml only, remove HERMES_REASONING_EFFORT env var 19b0ddce408b33e3dcf6ce8e5628f028119ca65b fix(process): correct detached crash recovery state 383db3592580a276dd55d3db1f8a879a5b686848 fix: improve streaming fallback after edit failures 55ac05692055295b6044ba0f9e468246d7f32b1d fix(hindsight): add missing get_hermes_home import b07eaa0bc201adaa940d10ca987970ab9f9e1354 fix: improve streaming fallback after edit failures ed562a35945acd8c235ee2f0493eab5119205857 fix(process): correct detached crash recovery state 085c1c6875c4459b93ac23db1bc80f412640b68c fix(browser): preserve agent-browser paths with spaces 95493e228ebaefb6901b80b5eaf6e1593eaf4455 fix(hindsight): add missing get_hermes_home import a18e5b95ad1f93102a5e29a72524a81e4a12b189 docs: add Hermes Mod visual skin editor section to skins page (#6095) 8589ac0f64a6c81674163b92f44a30b6c31cfa94 docs: add Hermes Mod visual skin editor section to skins page 3696c74bfbd8ba1761fb6a5f192003a50e8b5623 fix: preserve existing thresholds, remove pre-read byte guard bbcff8dcd05ef16c13e3ed03e021205f4274998b fix(tools): address PR review — remove _extract_raw_output, BudgetConfig everywhere, read_file hardening 77c5bc9da9af185ba844ca079868fe8178247600 feat(budget): make tool result persistence thresholds configurable 65e24c942e89f81f672d22c9dc3cf11514ea0b89 wip: tool result fixes -- persistence 22d1bda1856d64a7af8c9da61d9e17a96f4fd204 fix(minimax): correct context lengths, model catalog, thinking guard, aux model, and config base_url 3d658ed253cf75da9681f89dfb5ac4179c1896ba fix: preserve existing thresholds, remove pre-read byte guard ba5906b2b2c9bb74046a703f938e455ecfab2df9 fix(minimax): correct context lengths, model catalog, thinking guard, aux model, and config base_url fe6ca8b20cceac8645b77d808daa749462b6fc8a fix(tools): address PR review — remove _extract_raw_output, BudgetConfig everywhere, read_file hardening 97fb69b015953a45dd6c028560d28a4f38b4815b feat(budget): make tool result persistence thresholds configurable 7747dcbf53333fd6cd8829ff8bfd4c661673f2ab wip: tool result fixes -- persistence ab271ebe102b0602d5ccbcd5ea0371843e081388 fix(vision): simplify vision auto-detection to openrouter → nous → active provider e1a9d1212cb40be00925dc6044f5056301b7e037 fix(vision): simplify vision auto-detection to openrouter → nous → active provider e1befe5077b219967a1f075bc7bacca529861bd6 feat(agent): add jittered retry backoff c905e45f63e3a405ee098ef39da06f396430e43c fix(tools): address PR review — remove _extract_raw_output, BudgetConfig everywhere, read_file hardening ee606e656b3974baee9d07e61677e7d5a2b9b2e4 feat(agent): add jittered retry backoff fff237e11198a8918086bc4a2f53300a0a48dfcf feat(cron): track delivery failures in job status (#6042) 7da4e1c4799b1ff0c12e75d99c492fc4d8cb69d1 feat(cron): track delivery failures in job status 598c25d43edfc85ccc17c81fa8c1d2165097123e feat(feishu): add interactive card approval buttons (#6043) c70b0bba6ec2f36542a01589562697bfa431bebb feat(feishu): add interactive card approval buttons 24b8fb59ede31c08ef26d83d30a291f353a3b714 feat(budget): make tool result persistence thresholds configurable 5c03f2e7cc4e24567b104f9a665b5845dfc454d4 fix: provider/model resolution — salvage 4 PRs + MiniMax aux URL fix (#5983) 46733bf5066bfa6f4842a3fce4f0018f6deedde6 fix: provider/model resolution — salvage 4 PRs + MiniMax aux URL fix 1a6b1867668ad794d8619117c8c8a8b011bf963a wip: tool result fixes -- persistence 8d7a98d2ff3f78077e8efad5d8264c9488a7d4ba feat: use mimo-v2-pro for non-vision auxiliary tasks on Nous free tier (#6018) 371efafc46eb0339582b3c69879f0884d73dbd5a feat: personality f290da81c522b8e0a0420e12245a241f53d9309c feat: use mimo-v2-pro for non-vision auxiliary tasks on Nous free tier ebd2d83ef2dff210ebba3f9f6f6e7175251cffe3 feat: add skin logo support af077b2c0df62a13a72433bab234bd7a8610feb5 fix: history up arrow 2d884ff12deb622e25d764bc2ccab2b834199bf0 chore: uptick b397c91d4ad840a4211d455f1a4b182259f3bb75 chore: uptick 9c2c9e3a3ec639c5cfaa405c9a2c3e4f075fcc3b chore: fmt c3eeb03e26ec9ff41b95a8928939e3603b6451bb chore: clean exit d9d0ac06b9201b164955d35ba3eeaba2c2a692be chore: readme update 29f2610e4b547d21fd951eb7c6f1b2cd3e58b23d tui updates for rendering pipeline 7fe6782a25f4aeb6b792162c946cba825813beef feat(tools): add "no_mcp" sentinel to exclude MCP servers per platform b9a5e6e247ac3292fcefcc3fa1e75b0c031f8dfb fix: use camelCase structuredContent attr, prefer structured over text 363c5bc3c3daa04e24d6a31bc111ec18c6d9b1fa test(mcp): add structured_content preservation tests 2ad769487492ba53e6c986df5b8e387761a83926 fix(mcp): preserve structured_content in tool call results f2840711a1f4e8f942944226833cf99df6669081 feat(tools): add "no_mcp" sentinel to exclude MCP servers per platform 9041128e2cd843327e2428fe54f78cc3cbb620c7 fix: use camelCase structuredContent attr, prefer structured over text d77733dd4d42da52f111b39735868cdd2feb8546 test(mcp): add structured_content preservation tests 5e1d45f74c9ea337a14927991c75d96d9cf637e0 fix(mcp): preserve structured_content in tool call results cbf1f15cfedfca3fd5130b5532fb9b7f8421946b fix(auxiliary): resolve named custom providers and 'main' alias in auxiliary routing (#5978) 9692b3c28ad3f89e1b8b34e7c05b4a4f1a731b52 fix: CLI/UX batch — ChatConsole errors, curses scroll, skin-aware banner, git state banner (#5974) f3c59321aff81ec5f03ba9e5d8a2a393553ea2eb fix: add _profile_arg tests + move STT language to config.yaml 6e02fa73c21914f553d99c9dd05a345a0fcdf67f fix(discord): discard empty placeholder on voice transcription + force STT language 25080986a03efcbae11d4ea60117d32fc9450c5f fix(gateway): discard empty placeholder when voice transcription succeeds c3158d38b28f3b59baef3768f19d09f55375fafd fix(gateway): include --profile in launchd/systemd argv for named profiles 50d1518df63a331f6191b7cd03c7a9751a2946c9 fix(tests): update tool_progress_callback test calls to new 4-arg signature 1d5a69a445619310b7fb6f1d34359ba8eacfc4fd fix(api_server): preserve conversation history when /v1/runs input is a message array 786038443e06660c468352f35585a402f83c6d15 feat(api): accept conversation_history in request body 7ec838507a7e2e1d7002c04180d9f4b302a6a4b8 fix(api_server): update tool_progress_callback signature for Open WebUI streaming efbe8d674a6d7814891eb027f38f24403c77b925 docs: add Discord channel controls and Telegram reactions documentation a6547f399f8d7edaef385f9d878a3fdb9175f4fd test: add tests for Discord channel controls and Telegram reactions 52b3a3ca3aec41e2bf53ead7a48867f63b4073bb fix: default Telegram reactions to off, remove dead _remove_reaction 74b0072f8f9864fe2c0735d90ea3853b7927314e feat(telegram): add message reactions on processing start/complete f6d4b6a3198b35e2ee340c617b2f3193a9ab727b feat(discord): add ignored_channels and no_thread_channels config 8c5c598a5805c81b41d75f920d320b5f7e313f7a fix(tests): update tool_progress_callback test calls to new 4-arg signature 3a48bedf1db529c360bd13ec9eeb127b2ba3c89a docs: add Discord channel controls and Telegram reactions documentation 66d475eabe042fedd694cee77a5c3e9c612a26f3 fix(api_server): preserve conversation history when /v1/runs input is a message array 0c96b54ef8e943b051d75250bdff165b976a8115 feat(api): accept conversation_history in request body dfc11d486d95eeb0eac10ad219ba01707245cc7a feat(cli): skin-aware compact banner + git state in startup banner 77d432a54556ae7ea56a1706a70d6c1f6db89680 fix(api_server): update tool_progress_callback signature for Open WebUI streaming e17199564a1d07dce21a7942d3717ca2a9924490 fix(model-picker): add scrolling viewport to curses provider menu 7fb1d7208b462e1424fb21a154ce998b6fc07d3f fix(cli): route error messages through ChatConsole inside patch_stdout 7d9f1bd4846bc5070cb11fedd2b4bdd3050f2db7 test: add tests for Discord channel controls and Telegram reactions 83864111ca061d23ad390af3587d02025aeb69fe fix: default Telegram reactions to off, remove dead _remove_reaction e64c2044ab9ae6b4bea44e3c7c054ff67edb5f2c feat(telegram): add message reactions on processing start/complete 77910266e409b39d8dc22ee9b3be941e36b8377d feat(discord): add ignored_channels and no_thread_channels config 37bf19a29d4d80609bc91b016f3f9c544b5c98f3 fix(codex): align validation with normalization for empty stream output 7a266698264211efc7e0dae72c43524ab881c1ed fix(codex): align validation with normalization for empty stream output 469cd16fe01edbde4070a5ed549a8e2a839f9157 fix(security): consolidated security hardening — SSRF, timing attack, tar traversal, credential leakage (#5944) b1a66d55b47df176503e566aa9a3e454d647e07a refactor: migrate 10 config.yaml inline loaders to read_raw_config() 0d41fb082770b23afde6d1049382de2192c9cd01 fix(gateway): show full session id and title in /status 4aef0558054f332212f40c6cebe5147c6488e311 fix(gateway/webhook): don't pop delivery_info on send f3006ebef9759d6d1002310e40d3b79a8293f074 refactor(tests): re-architect tests + fix CI failures (#5946) fcf64d5283018c4078defd09c85ff03fb1056750 fix(tests): accept unavailable_models kwarg in _prompt_model_selection mock 8bbafdf3a6808e9012c4fd5f899431fc07616c1b fix(tests): fix update_check and telegram xdist failures 04ee0ec0bcaa53c7478c70049ba70e470a47cbea fix(tests): replace patch.dict with monkeypatch to prevent env var leaks under xdist b7903bca41903a0e6759b4f41b79cd568b793bfc fix: add missing tool_error imports after registry refactor 20e94662cc5297b2633196d252e2bbb9b8dddf75 Update tests.yml 6ed3f9ca80a4c6d0a69461e4561e17b780966143 refactor: re-architect tests to mirror the codebase f7868b82df91af3f269b9d75731826b0bdf782ab fix(security): consolidated security hardening — SSRF, timing attack, tar traversal, credential leakage 99ff375f7a313daed08c13a6981fac353e78733c fix(gateway): respect tool_preview_length in all/new progress modes (#5937) 125e5ef0899d4c60ec84ac720192ba05007ea7e1 fix: extend caption substring fix to all platforms 4a630c20718ed43195b53aaa2e92a0b1794e80f3 fix(telegram): replace substring caption check with exact line-by-line match 7b18eeee9b8e8ea27a3df92346c71175f54681db feat(supermemory): add multi-container, search_mode, identity template, and env var override (#5933) 678a87c47753a98ab2320def830c7ae24cda4c0e refactor: add tool_error/tool_result helpers + read_raw_config, migrate 129 callsites 857496b343ee935dc345fc87b9e5d58a3a07bf25 chore(ux): add billing link when Nous credits exhausted ab8f9c089ea08071e3f5b6d1a96856ac78cf3db9 feat: thinking-only prefill continuation for structured reasoning responses (#5931) 589d14c11e8afe81c7b7dec07f52c53662a17ffb feat: thinking-only prefill continuation for structured reasoning responses 6e2f6a25a1d439b6ca0883c4d1c4ed2def1b3359 refactor: deduplicate PowerShell script constants between Windows and WSL paths f4528c885b31ab14b66bf1403da81fd893289ff4 feat(clipboard): add native Windows image paste support c040b0e4ae1d2b241898402bfeb95cc1c8cc8af5 test: add unit tests for media helper — video, document, multi-file, failure isolation 0f3895ba294f3d55b8407a28409576dfd66132ae fix(cron): deliver MEDIA files as native platform attachments 7224469bb1287c9b8b3a5d107d816f206159fdf6 test: add unit tests for media helper — video, document, multi-file, failure isolation e1b8c7f658da06ec6b0a52c130690b5f9643d0bc fix(cron): deliver MEDIA files as native platform attachments 1096a8fec26c044c433f72e29f26655a55d90ac3 refactor: deduplicate PowerShell script constants between Windows and WSL paths 24161d6f4cfaf43a393cbcb12004116f7ead1710 feat(clipboard): add native Windows image paste support ca0459d109b9d23ce2b3c4c4cb6e8547a7eada3c refactor: remove 24 confirmed dead functions — 432 lines of unused code 69c753c19b43b02d3511e6045657c9a0e80cb674 fix: thread gateway user_id to memory plugins for per-user scoping (#5895) e49c8bbbbb1f06dbe34f71c9400f77639d16a781 feat(slack): thread engagement — auto-respond in bot-started and mentioned threads (#5897) 4a3f028239542b107bc7c01a45db84c1a32b038a feat(slack): thread engagement — auto-respond in bot-started and mentioned threads c52e59319695b7cdc0be82805d46d21daf67730f fix: thread gateway user_id to memory plugins for per-user scoping ab0c1e58f1a54d47a8863e1f8b249916ed9d062e fix: pause typing indicator during approval waits (#5893) 1a2a03ca69ff342438343fd484716dcb48bfa835 feat(gateway): approval buttons for Slack & Telegram + Slack thread context (#5890) 856d5bd69f465a016ab239e0f4cb372aeb821cef fix: pause typing indicator during approval waits 187e90e4254c461e72d211564a44678f9626ffac refactor: replace inline HERMES_HOME re-implementations with get_hermes_home() d0ffb111c25d7be2287f824b8426a99f019aa58d refactor: codebase-wide lint cleanup — unused imports, dead code, and inefficient patterns (#5821) afe6c63c525dec0c58448c71ea05eaf0eafadf6e docs: comprehensive docs audit — cover 13 features from last week's PRs (#5815) c58e16757ad05e6b75289b34745608e26d61a9f7 docs: fix 40+ discrepancies between documentation and codebase (#5818) aa7473cabd62e144647dd7d483b79d0a33d9f672 feat: replace z-ai/glm-5 with z-ai/glm-5.1 in OpenRouter and Nous model lists 483a81cc48384306c92f3b96e5d4378c028408a5 feat: replace z-ai/glm-5 with z-ai/glm-5.1 in OpenRouter and Nous model lists caded0a5e75f51fce4e0a18a28a483649d21569c fix: repair 57 failing CI tests across 14 files (#5823) f18a2aa6344a50a03f10c76a923828d259306e83 Merge pull request #5880 from NousResearch/salvage/5752-nous-free-tier-gating 47ddc2bde56a84d1e0edefaa5912ccf9b9b5466e fix(nous): add 3-minute TTL cache to free-tier detection d7911754d2360f0a34142f98cef8756d86f7c585 feat(nous): free-tier model gating, pricing display, and vision fallback 29065cb9b50d049922b9477782c1a05d2d186fb0 feat(nous): free-tier model gating, pricing display, and vision fallback 902a02e3d5c3454acf18642a1327b39c9c11ece7 Merge pull request #5791 from leotrs/manim-ce-reference-improvements b2f477a30b3c05d0f383c543af98496ae8a96070 feat: switch managed browser provider from Browserbase to Browser Use (#5750) f16808fac11e02cc8b5d3b1be5078196cb892cfb Merge remote-tracking branch 'origin/main' into switch-managed-browser-to-browser-use 4d65666527b79e65bc9efe94b205677a07b33777 fix(browser-use): port missing improvements from PR #5605 9d431b23e2b844fe8d2149d771ed684115d01d6f fix(nous_subscription): browserbase explicit provider is direct-only 8b861b77c1f854a2b7914be1afa52facebfb046f refactor: remove browser_close tool — auto-cleanup handles it (#5792) 565c14befec80cc561ef30b5910f36735f745dcf fix: remove mixture_of_agents from core toolsets — opt-in only via hermes tools 04ae0fde7bbe5969746298c533ee10886d07ffc3 refactor: slim cronjob tool schema — consolidate model/provider, drop unused params 2e96c904ba46bf6663ffe38695301f13187b0bc7 feat: auto-return compact snapshot from browser_navigate cafdfd36549538713b0a91aaef42877c2be2845a fix: sync bundled skills to default profile when updating from a named profile (#5795) 92987400680e1c4d635f8ea8d99b1c49efb1387f fix: sync bundled skills to default profile when updating from a named profile 02a1707922c752aec4197e373a0c379ea60f5e11 fix: repeat browser_scroll 5x per call for meaningful page movement e120d2afacf90f3fec243c814da27216cba1943b feat: notify_on_complete for background processes (#5779) 3c7cbc0ce64125e4c76328353d70221f67a58826 refactor: remove browser_close tool — auto-cleanup handles it e8f6854cabeb2d71e22b9a2b28dcdfd20dc1b787 docs: expand Manim CE reference docs with additional API coverage a4d2e905d3bb888fd0cb7efe5b4e89d158756fb2 docs: update terminal tool descriptions for notify_on_complete 04aa3ac44fc8cc7333d4b12c43db8c78818cb458 fix(browser-use): use X-Browser-Use-API-Key header for managed mode 062f77e2436e14fc1210eaf989792378db31155e feat: notify_on_complete for background processes 1c425f219ecde160daddeec82283c735f1df9aeb fix(cli): defer response content until reasoning block completes (#5773) 3718a8de7c1869862c6f6790d3af2bc46dd541fc Merge branch 'main' into switch-managed-browser-to-browser-use d9e7e42d0b692b91168b4d69cb5a87e6460f3100 fix(approval): load permanent command allowlist on startup (#5076) 302240d3a63b646742f8d466b621d85ecf3d474e Merge pull request #5745 from NousResearch/fix/portal-env-var-ignored-during-login 187250d89b256fb19471fa854f378920a7e7e15c fix(approval): load permanent command allowlist on startup eb7c4084451722f05a1508173b5275800c4860c9 fix(gateway): /stop and /new bypass Level 1 active-session guard (#5765) 7c41d82511ff93fcd2012cf3bf140d87b257d183 fix(cli): defer response content until reasoning block completes f0b8326064767633ae2c030fb0af99ed24565d60 test: regression tests for command bypass of active-session guard 32f22057542c2cda19baa41bcd7b68dea3b582fb fix(gateway): /stop and /new bypass Level 1 active-session guard 1e36185b70f5f115aaf595dae9cfbd75f0d22045 fix(auth): kimi-coding pool base_url seeding + PKCE endpoint fallback 9e844160f9b6e6485abe4294cb1962d7ef7813e3 fix(credential_pool): auto-detect Z.AI endpoint via probe and cache f609bf277db4d174e16d9f872f5aae25461bc0a6 feat: update blogwatcher skill to JulienTant's fork (#5759) bb403a1f464acbc3489c096b8770a60cfc607a6d feat: update blogwatcher skill to JulienTant's fork 7c33338a7a08a26c4eb13937b5d7be800790b11d fix: upgrade Browser Use provider to v3 API 3e3a1e7624deca39879a6638118c563f1997c3a7 chore: remove redundant Browser Use hint from system prompt 3bc2fe802e81a337728b48ed8d39b5c5cbc453db feat(telegram): paginated model picker with Next/Prev navigation 6fb7ea1e3956037c084ad5f3f65fdec97f7e9f55 feat: switch managed browser provider from Browserbase to Browser Use 2b79569a07aae2b0fb7a04e7a054278b51c3ac26 fix(discord): remove default selection from model picker provider dropdown 8e64f795a1d1427be93059adfd81a32de78284b7 fix: stale OAuth credentials block OpenRouter users on auto-detect (#5746) c706568993ab51d18a15acc5cb2dc8ec2b54abfc fix(delegate): pass workspace path hints to child agents f2c11ff30cd5601a4017cae64cbbeac0a481f5c9 fix(delegate): share credential pools with subagents + per-task leasing 8dee82ea1e1783b95b380f074386c7a9c5cf376c fix: stream consumer creates new message after tool boundaries (#5739) 5a2cf280a3d652b10cfc15c4944dbc167df3ed5e feat: interactive model picker for Telegram and Discord (#5742) 7fd7ec0059e65ece78385fadac04a3ff7c34452e fix: stale OAuth credentials block OpenRouter users on auto-detect bff47eee486858ec00744b08962c8854cc3dd030 fix: HERMES_PORTAL_BASE_URL env var ignored during Nous login bd722859073a95185f7477c93f905c91fa366d23 feat: interactive model picker for Telegram and Discord c7768137fa058f8462a24e804c2e4b694ba9c5fb docs: add Supermemory to memory providers docs, env vars, CLI reference 88bba31b7d652b9bc9a5f85fd9d24326611b8f1e fix: use get_hermes_home() for profile-scoped storage, fix README ac80d595cd6604fa2ab7bc0a18e880cbc0bce22d chore(memory): remove supermemory PR scaffolding 4fc7f3eaa59a50000bd839e2c2271e84f48843f1 fix(memory): clean up supermemory provider threads dc333388ec01afe55a47c5a4fdae377cfd000278 docs(memory): add Supermemory PR draft and cleanup 76f19775c3c1531591267e33d77d3dcdc7941719 feat(memory): add Supermemory memory provider 534d83959345ab87ca5d5e6d1807087c7c6431c9 fix: stream consumer creates new message after tool boundaries 972482e28e36d81ed84026538c9a882d5fc218c5 docs: guides section overhaul — fix existing + add 3 new tutorials (#5735) 8daa1c17025bd763723d8bdeb273fb69cb592875 docs: add Supermemory to memory providers docs, env vars, CLI reference a2f4252b425e82d0dff5b760c54b18e8df238a29 fix: use get_hermes_home() for profile-scoped storage, fix README aff68db9ebdebe33893de1cd9f4804a9924ac90c docs: add 3 new guides — cron automation, skills, delegation 888dc1e68079e50ca8ee148a29623decb85c99b3 fix: harden auxiliary codex adapter — dict-shaped items + tool call guard (#5734) 9efc6042498ac5b39e7be7aaf62216d3d339cd35 fix: harden auxiliary codex adapter — dict-shaped items + tool call guard 748ddd4c3a640f38dbcb3368e5cd48fc831c4a5c docs: fix guides section — sidebar ordering, broken links, position conflicts 4ec615b0c245d5dc4011cac6490ada5916efcdd9 feat(gateway): Enable Slack thread replies without explicit @mentions 9b6e5f6a04996a936d08ad0b3f3ccfd6cc3e9384 fix(gateway): Apply markdown-to-mrkdwn conversion in edit_message 43cf68055b688fcfe3b4d7c8689b3abf57de588a docs: fix signal-cli install instructions 9ce8d59470b63556714d97ccfabc674f2c36b645 docs: add local LLM on Mac guide (llama.cpp + MLX) bccd7d098c81730714aa004ed8ff8684463cee6a docs: add post-update validation guidance a23fcae943ca0c022dd626acefb1a84184aba20b docs: add 'setup' command to docker run example 21b48b2ff552b42d8df11272b8c7436bcf6e0b7f fix: backfill empty codex output in auxiliary client (#5730) 2021442c8a5cc982cf787e829de064c00ccc8a3d fix: cover remaining codex empty-output gaps in fallback + normalizer (#5724) 818d0359e4b4ee9a7b643315efa9b4d5a1d49aac chore(memory): remove supermemory PR scaffolding a83911143863c286baa205ce69ba31bb254296f3 fix(memory): clean up supermemory provider threads eba886478a135a66fd901cbc0521743a8d74ee4e docs(memory): add Supermemory PR draft and cleanup 336bca4fa8be8764055472b36a4ad6cc9c561045 feat(memory): add Supermemory memory provider add160fd1b6a0d05ff12f14c87bce31f9631fd52 chore: remove dead _save_oversized_tool_result after merge 51cf4e0bbcb1d41ba03221e0b375319c0aa671b8 fix: address PR review — alias expansion + L3 budget enforcement 72bd14e09df18ddb344c12469ef918cd63819264 perf(environments): reduce per-command overhead in _before_execute hooks 2fe8fd87200190d017b0044a5f7136c204aed2cb docs: replace L2/L3 jargon labels with descriptive comments ab35753c5253d33aa80e3ce108de33d706040708 refactor(managed_modal): replace sentinel-key dicts with _ExecStartResult dataclass 51bd4aecff53e669333d16353bd4b9a90b34cc8f fix: update stale _ModalProcessHandle/_DaytonaProcessHandle references in docstrings bead55bbcb939187a9f69b8fea98134355cd9e2e refactor(environments): extract _ThreadedProcessHandle base class 5c491734f83985db36798d6bf8c957a8cd0894ea chore: reset uv.lock to main to fix nix build 454edc7771e8e6d90a44f1401cf004231c404f6c perf(ssh): add mtime-based caching to file sync 49d1390b4043f3d6ecde89f8151bc95e1bcccf92 fix(environments): move CWD tracking from remote file to in-band stdout 7046d9b8349e640a63426a9ffab17377309a120d feat(agent_loop): add L2+L3 tool result persistence to eval path acbbdc05d4cb60805253e106a89b4cb617820df9 feat(run_agent): replace 100K truncation with persist-to-disk (L2+L3) 9cbfa1309b37bb0c8b7a9f0a8fe981c35a8e4004 feat(tools): add per-tool result size thresholds and search_files output cap 3dfce74099861eb2d4c13299ae28b855847f12cd feat(tools): add tool result persistence module + registry support 431262f9a5871870ea6cdc2558f8a5c71b55fa2a test(daytona): update unit tests for unified execution model ec43496d5a47e6f9fdbecad1c8dc10dffe4237e5 refactor(environments): delete persistent_shell.py + dead code — Phase 8 ef8a985ee309a87df442d9c90ae792f4d2ec7492 refactor(environments): migrate Modal + Daytona to unified model — Phase 5+6 0482133559c9fbf79747eef4db971ab443a69253 refactor(terminal_tool): remove persistent shell params from factory 637bbbee7ea4d9eefc65f4b8238e936e45e3fec6 refactor(environments): migrate Docker + SSH to unified model — Phase 2+4 cd814392ae95551a2db352c6f37e957b936dbb06 refactor(environments): migrate SingularityEnvironment to unified model — Phase 3 fe2e1c16c66b5a2cd389c94ab8331a9712b7307b refactor(environments): unify execution layer — Phase 0+1 (base + local) 0e336b0e717027cbb81fcb5816246b7aec2d4a47 fix: backfill codex stream output from output_item.done events (#5689) e5aaa38ca7295ca02309c926e3b6896ecd17e138 fix: sync openai-codex pool entry from ~/.codex/auth.json on exhaustion (#5610) dc4c07ed9d1653919bd8f6201662326de062196a fix: codex OAuth credential pool disconnect + expired token import (#5681) 8cf013ecd9c00c0113171ceb2dedb0aeec9010d3 fix: replace stale 'hermes login' refs with 'hermes auth' + fix credential removal re-seeding (#5670) a65ee52c0f3bbfec23b917bff5b733139ed00c5a fix: replace stale 'hermes login' refs with 'hermes auth' + fix credential removal re-seeding adb418fb5390d77b4516a7413cbc53b09717f1d5 fix: cross-platform browser test path separators 57abc9931509dd0da9e7faee6855d20b8cb18830 feat(gateway): add per-group access control for Feishu 18727ca9aae48c5a4caeb1ab113bd7413ad81c53 refactor(gateway): simplify Feishu websocket config helpers 157d6184e3ac51463401725d92216a9a68040a49 fix(gateway): make Feishu websocket overrides effective at runtime ea31d9077c1109f94fde5b97cd92e7920f5a3d18 feat(gateway): add Feishu websocket ping timing overrides 7d0bf151213a09d65f6bbece5f741955c2f6519d feat(gateway): add configurable Feishu websocket reconnect timing 7cf4bd06bfad5a51ea1e381fd8994defcb7632a0 fix(gateway): fix Feishu reconnect message drops and shutdown hang abd24d381bcb0f1dc5a91b76d10c51998c8cbbd6 Implement comprehensive browser path discovery for Windows 8a29b4903619c7a6dcb79995dbc1909d095dbe27 fix(cli): handle CJK wide chars in TUI input height 05f9267938b9701e16eb5c4ae1d8b4a2c62a12cc fix(matrix): hard-fail E2EE when python-olm missing + stable MATRIX_DEVICE_ID dcb97f7465f0572edabec79c449250475f99d17b chore: readme 40527ff5e35db7fc6f501d8aa5997caa4a382a79 fix(auth): actionable error message when Codex refresh token is reused 190471fdc0d07d79dec23daa14c50d6c71eb1da2 docs: use HERMES_HOME in google-workspace skill examples 83df001d01e0de7fa84640ccd87c6b38777d8730 fix: allow google-workspace skill scripts to run directly 1c0183ec71b10c3fcf2bf502aeb6ed11f9fa630b fix(gateway): sanitize media URLs in base platform logs b26e85bf9d6266c3691f152ed677085b3eeaf04c Fix compaction summary retries for temperature-restricted models e9b5864b3f059d111b031f3506db739d81122315 fix: multiple platform adaptors concurrency c1818b7e9ee2cf03d2ea7ddfa7a74d658ce98faa fix(tools): redact query secrets in send_message errors f3ae2491a3f9b315d0dd5bdffe58aae6783ae529 fix: detect correct message type from file mime instead of blanket DOCUMENT 3282b7066c7c49e8be4d8679d0148aef6baf5483 fix(mattermost): set message type to DOCUMENT when post has file attachments 0f9aa570695df978d8256b93a462c1c443e4769f fix: silent memory flush failure on /new and /resume commands 86308b6de49f64b2468904a422ea34edcb10bf41 chore: better command support ea16949422768d759941272f630c0e25e40f9689 fix(cron): suppress delivery when [SILENT] appears anywhere in response 3b4dfc8e226cb7d703cd669073a1af1101ceca27 fix(tools): portable base64 encoding for image reading on macOS 77610961be12c369d6b33a4948149b703b46e773 Lower Telegram fallback activation log to info e131f13662d46b266dec1d666d5ac3ad59953725 fix(doctor): use recall_mode instead of memory_mode on HonchoClientConfig e7698521e7ff98b8344c3c683b7cd3235d9cf07a fix(openviking): add atexit safety net for session commit 08b628649ecb8bc64e0398a4b489129369931dfb fix(openviking): add atexit safety net for session commit f071b1832a446f09137fea625045bb4be3a0d781 docs: document rich requires_env format and install-time prompting 2d349bbf7a06256089d8755e5c70be1ec23090dd chore: fmt 4f03b9a419bcba023bcdb2fd5e9ef9ee57f46f9a feat(webhook): add {__raw__} template token and thread_id passthrough for forum topics 16807b94c97a2f5fbd664108b880e1fe5e37e215 feat(webhook): add {__raw__} template token and thread_id passthrough for forum topics 39878aff00bd147408f132642c14d5b990b6747b chore: uptick 631d1598646d021a600cae56e5b3366b28d813c4 fix: use display_hermes_home() for profile-aware paths in plugin env prompts afd670a36f5a776f1a596fbcde9d8158e1060880 feat: small refactors 9201370c7ef54d6a3c1a582e5632567c02dd687c feat(plugins): prompt for required env vars during hermes plugins install 539629923c05e98fee06258a3341af94f2dcccba docs(llm-wiki): add Obsidian Headless setup for servers (#5660) 9c92347b9e2d8102ea4120c9d134bf4a7cc03770 docs(llm-wiki): add Obsidian Headless setup for servers e2b3b1c5e4bd8212976f5c9ed90b6d6df3d74d00 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor e651e04100049264fd4f4f013020715feef44542 fix(nix): read version, regen uv.lock, fix packages.nix to add hermes_logging (#5651) 9e2ec177d980d27e5cf79665663fc8f04acc65dd fix secret regen w/ sops 545809d09b27a5d3cb67cfa707275a19d094462d Tau2 bench changes 54efedf31215eb1b0838ee57eba5301c8881e578 - read version from pyproject for nix - regen uv.lock - add hermes_logging to packages.nix 7b129636f0926e70873af0e74c422894a19882ee feat(tools): add Firecrawl cloud browser provider (#5628) 150f70f821af33556821c34d17dfc8caca4cb8cb feat(skills): add skill config interface + llm-wiki skill (#5635) 6f4b704af3d7ec00480c5dacff9208da33df3c18 fix: recognize Firecrawl in subscription browser detection 29b5ec25556f622187f5dc35db79ca1f145f1a04 fix: clear session-scoped model after session reset 9afb9a6cb23199688993df52040ddffed3f0ec98 fix: clear session-scoped model overrides during session reset 2c814d7b5d76b91e5884a56341d6d6a248480648 fix: /model --global writes model.name instead of model.default ad567c9a8fca3a6a4d65f0a036e1803efe0d1c84 fix: subagent toolset inheritance when parent enabled_toolsets is None ff655de4813a4a52862f3e2a3e6158c5ecf22a40 fix: model alias fallback uses authenticated providers instead of hardcoded openrouter/nous 96f85b03cda934f519358278ab566542903e1a13 fix: handle launchctl kickstart exit code 113 in launchd_start() 1a2f109d8e9fe8e0f97a38a5f3477926c515766f Ensure atomic writes for gateway channel directory cache to prevent truncation af9a9f773ce78c0083e896ed7582915430718bbe fix(security): sanitize workdir parameter in terminal tool backends 1b2272c2b8fd5176aeadc9eecf46ef14de5aa3f6 fix(security): sanitize workdir parameter in terminal tool backends 921b09458e583566fcc73a5f5a821b106587242e refactor: simplify FirecrawlProvider.emergency_cleanup b33ca2fa96b23fac0b1a0571198bf3fc6ae11c64 feat(tools): add Firecrawl cloud browser provider 537a2b8bb81348987d455aae5d9afadcb9ecde76 docs: add WSL2 networking guide for local model servers (#5616) 81d44670523b2b1469b6eccf5fe3544f920fc909 feat: add workspace foundation and RAG retrieval system 669761a2198d414f65672fef68fef596b1895c73 docs: add WSL2 networking guide for local model servers 261e2ee8621af0dcae489ad801a3d49f4029eb09 fix: restore Path import in env_passthrough.py (removed by #5526) 878b1d3d33490ae53e4e30f92de78de2315044f9 fix(cron): harden scheduler against path traversal and env leaks 7d0953d6ff3903134bc45e1c5f24ef9e8d62ecdb security(gateway): isolate env/credential registries using ContextVars da02a4e283e4fc7aca249d19d0652925cbe5177b fix: auxiliary client payment fallback — retry with next provider on 402 (#5599) 88f6988c092864cfdc3e77b9b2f9ef0e07f96078 implement _validate_workdir as a second layer of defense before wworkdir parameter is used e07fc29d29617f9f2a5574e7261f53e6f215b23b apply shlex.quote() on workdir parameters of docker, singularity and ssh backends 8ffd44a6f9306d4103426bff53e43c39096a9b8d feat(discord): register skills as native slash commands via shared gateway logic (#5603) ced6101448203882b8929d8dd8ab24203440e8a3 feat(discord): register skills as native slash commands via shared gateway logic 92c19924a93fd83098fe34e58a3cfc2a488e1e49 feat: add xAI prompt caching via x-grok-conv-id header 78825373581a4ca2d53c0dfd222d721e9577ba5d feat(browser): migrate managed browser integration to Browser-Use 0afa3a87d4260bd5831d6670dd887100761f6ac1 Merge pull request #5600 from SHL0MS/feat/p5js-skill 541e4c1fd30f34cdd8f471cbd7311ae8f76b88f2 fix: auxiliary client payment fallback — retry with next provider on 402 dcf43355caa192b7d1454d93ff3ca3231e8fa750 feat: add xAI prompt caching via x-grok-conv-id header 3d08a2fa1bf344da866d43cdfb8271290eec29c2 fix: extract MEDIA: tags from cron delivery before sending (#5598) 5e88eb2ba0bd9c6087d7d741e20e7bfebf705ceb fix(signal): implement send_image_file, send_voice, and send_video for MEDIA: tag delivery 3eadb3dd89cb601db56d43c0d9e25bd2f9ddf22a fix(signal): implement send_image_file, send_voice, and send_video for MEDIA: tag delivery 17e2a27c51f778cb730933a3475c207414eaebf5 feat(skills): add p5js creative coding skill 214e60c951ad807362ace9e30352dd14ff20f019 fix: sanitize Telegram command names to strip invalid characters ea96b52547f147dd59953a1c3d763818870b4e8a fix: extract MEDIA: tags from cron delivery before sending f77be22c6506b54c73bd1cc1e624a95edb2d17eb Fix #5211: Preserve dots in OpenCode Go model names 225d7be1402467441c40f63b3b443674dfe62c69 Fix #5211: Preserve dots in OpenCode Go model names 0c45ae64a5f8d9dd2901c59d138b16bbb9f103e2 fix: sanitize Telegram command names to strip invalid characters 582dbbbbf7c4cc241dbb7bcbdd7cd80e6751a798 feat: add grok to TOOL_USE_ENFORCEMENT_MODELS for direct xAI usage (#5595) 0bac07ded392178da0b24950447d1b28e5cc8c00 Merge pull request #5588 from SHL0MS/feat/manim-skill-deep-expansion a912cd4568805d01909748aa423699da14e43ec6 docs(manim-video): add 5 new reference files — design thinking, updaters, paper explainer, decorations, production quality cc7136b1ac8efd26704b9de4139deaa98893dcfa fix: update Gemini model catalog + wire models.dev as live model source 6dfab3550100d6357e75cb0ac67c608356b3a832 feat(providers): add Google AI Studio (Gemini) as a first-class provider e8bf301e6f2d1a42f29c73dd5780ed9b3471583e fix: update Gemini model catalog + wire models.dev as live model source 45075677041fd08183446085aadbc4b2bccee5b5 feat(providers): add Google AI Studio (Gemini) as a first-class provider 85973e0082fae1c74bc1f2e59b91b9c78e4a6482 fix(nous): don't use OAuth access_token as inference API key eceb89b82454eaad70f602cb74ae3c351b576f41 Merge pull request #4664 from NousResearch/fix/various-qa 79aeaa97e6d3b5065e10231e1733d656ab40f7a7 fix: re-order providers,Quick Install, subscription polling 6f1cb46df9825e693e33069626444b9a1bd0d344 fix: register /queue, /background, /btw as native Discord slash commands (#5477) 8aaba131c0b06b3cbb0da4dd6006cd95973f6d52 fix: register /queue, /background, /btw as native Discord slash commands 574759077067414f0253d3fdc45bace1aa099459 fix: follow-up improvements for salvaged PR #5456 ea8ec27023db9e00bfb1076fe1adeb95f72a26c1 fix(retaindb): make project optional, default to 'default' project 6df4860271e9221d13d044aee83522b7d4b3db64 fix(retaindb): fix API routes, add write queue, dialectic, agent model, file tools 6c12999b8c2a87713a42e9effca1ca7cbd9669c3 fix: bridge tool-calls in copilot-acp adapter ec6daae0e1554838de0168304d13c635527f6ca6 fix: follow-up improvements for salvaged PR #5456 c229f18ea501b29cf04cda71de6d43c483f86c3f fix: bridge tool-calls in copilot-acp adapter b3e406635fbd9f131006a832f660eabf0864fb6c fix(retaindb): make project optional, default to 'default' project 31764e175cf893733cbca58d8d7488c6d5106071 fix(retaindb): fix API routes, add write queue, dialectic, agent model, file tools d3d5b895f65e03d7bde9acdc145c836a35db5ee2 refactor: simplify _get_service_pids — dedupe systemd scopes, fix self-import, harden launchd parsing a2a9ad743148b5a9b26b113f4b62a9684c7caa94 fix: hermes update kills freshly-restarted gateway service 9c96f669a1510edd5f41230d8548298a19a671e8 feat: centralized logging, instrumentation, hermes logs CLI, gateway noise fix (#5430) 2f9cac09127cb54b6e318d000d0746de2f8b6e26 merge: resolve conflict with origin/main (keep both logging + config warnings) f66b88f879faba22a3da63a26a69dc8901a357cd refactor: simplify _get_service_pids — dedupe systemd scopes, fix self-import, harden launchd parsing 7268f1b4eb7686ed7d1e07ec4be222b815024fdc fix: hermes update kills freshly-restarted gateway service 6de08d82beb0f53e205094dca778d3372dbfed09 fix+feat: phase 4 — fix session expiry bug + gateway log noise reduction 89db3aeb2caa19424fcc1d842be82f045d2d1a90 fix(cron): add delivery guidance to cron prompt — stop send_message thrashing (#5444) 358b25b9192ba37a9880e9e4637336c6c20c13ee fix(cron): add delivery guidance to cron prompt — stop send_message thrashing cccc9d688b26a8f96d84375ad5be888ecbaded91 feat: phase 3 — `hermes logs` CLI command d6ef7fdf9229cd42a2586307840b6cd9ccf2bdad fix(cron): replace wall-clock timeout with inactivity-based timeout (#5440) e52f1446716fa2bf353123e3350e330de65d8931 feat: phase 2 — instrument API calls, tools, sessions, and credential pool dc9c3cac875d3de04eb164a04ceacb51c977593b chore: remove redundant local import of normalize_usage 38bcaa1e86dfd0c03c0aba1735823297af25dffe chore: remove langfuse doc, smoketest script, and installed-plugin test f530ef1835f4aaecd34b79362f1e63e42f5f661b feat(plugins): pre_api_request/post_api_request with narrow payloads 9e820dda379162fdfa6a85ae9e3fefa5e7373346 Add request-scoped plugin lifecycle hooks dce5f51c7c4369a02f8ea93186ce1a2db5867cf8 feat: config structure validation — detect malformed YAML at startup (#5426) c507ee21808cf5b8f5b7506cd4bfe547dbe80dbe feat: centralized logging to ~/.hermes/logs/ 70e962c84abc2411dd561d38d6289a8f1e29e872 chore: remove redundant local import of normalize_usage 8ae34bbb22dc53498bdc0c8b796288a053605c8c feat: config structure validation — detect malformed YAML at startup 8bf539acd9a2c76aac56473ce1cef804106a03f4 chore: remove langfuse doc, smoketest script, and installed-plugin test 23a1b86124c05e5ade5f3ca1387df184af0e9c45 feat(plugins): pre_api_request/post_api_request with narrow payloads 0afd252a65fb58df278eec8d67ac91cf2684d212 Add request-scoped plugin lifecycle hooks 9ca954a274171c648397fd9e747301edc5b66b03 fix: mem0 API v2 compat, prefetch context fencing, secret redaction (#5423) 786970925e82a75b248bf7a8eb98484d70a0eebf fix(cli): add missing subprocess.run() timeouts in gateway CLI (#5424) 57c8e5143c932b8b67470b44332584b8c09fa282 fix(cli): add missing subprocess.run() timeouts in gateway CLI ab086a320bd3395218481c9b8454677524b93e2d chore: remove qwen-3.6 free from nous portal model list a0de7ae649ec92d22a53b5507fd0f4064998d64f fix: mem0 API v2 compat, prefetch context fencing, secret redaction aa56df090f7b7eeca62531834996b74cdb554005 fix: allow env var overrides for Nous portal/inference URLs (#5419) 033e9711408d13cb6c62c322d8c261d64e20ac90 Merge pull request #5421 from NousResearch/fix/research-paper-writing-gaps 95a044a2e08d604f5613185381655808f1d27524 feat(research-paper-writing): fill coverage gaps and integrate patterns from AI-Scientist, GPT-Researcher 38d844601139a18822cdaf3d7497b6e29fc9ebe0 feat: implement MCP OAuth 2.1 PKCE client support (#5420) 0496007ca5a558248b22821b6d29ed9eac413bf3 fix: allow env var overrides for Nous portal/inference URLs 3962bc84b797cc63a8a8baf57f111f1c84f2f0f7 show cache pricing as well (if supported) 0365f6202cff76776fd81dff0e134a4ddab81b7c feat: show model pricing for OpenRouter and Nous Portal providers 6418ac5a54aa68d54cd46065fc5e6b7e1502b4af show cache pricing as well (if supported) 99b6d002e509e1f460c340ca8d566048f701598f feat: show model pricing for OpenRouter and Nous Portal providers 0efe7dace75137691aaf7153ea5033a7be87229c feat: add GPT/Codex execution discipline guidance for tool persistence (#5414) e8a3b9b5f246fffdbd586250aaad7924aca89095 feat: add GPT/Codex execution discipline guidance for tool persistence 4e196a5428c11a7fd03174567ba7476a31775a64 Merge pull request #5411 from SHL0MS/fix/manim-monospace-fonts b26e7fd43a5f879e17f7be0d994f6a5bb7dca3ac fix(manim-video): recommend monospace fonts — proportional fonts have broken kerning in Pango 084cd1f840b35e93d7622ead4af00521b7b5421f Merge pull request #5408 from SHL0MS/feat/manim-skill-improvements 447ec076a4fa539b05ac9d6fa0c610c67b12462d docs(manim-video): expand references with comprehensive Manim CE and 3b1b patterns 9c4d6b51c7da5e6004596cf60377725bd8c09b28 fix nous portal url env var override order 89c812d1d2839e7fd4b3901c63331b488644e471 feat: shared thread sessions by default — multi-user thread support (#5391) 43d468cea89e5694619d180d649ea1d67b20b447 docs: comprehensive documentation audit — fix stale info, expand thin pages, add depth (#5393) f5953ea3cc83e183a38f413b60814baeb8bb3059 docs: comprehensive documentation audit — fix stale info, expand thin pages, add depth 2f9bd64cc203fcef993df1817da784ec1b860ae6 feat: shared thread sessions by default — multi-user thread support 8320dfe9004b3386dcb576ee9e2f1881bde4085e show cache pricing as well (if supported) fec58ad99e1ad1cdae3f3c8a3f65bb26a16041c9 fix(gateway): replace wall-clock agent timeout with inactivity-based timeout (#5389) 8972eb05fdf852b15007c2b8687ae72b7527b31d docs: add comprehensive Discord configuration reference (#5386) 21e9f47f106992357a733d4aca8a002a5329cdf9 docs: add comprehensive Discord configuration reference fc15f56fc451825873a3ded239f861eac21164cb feat: warn users when loading non-agentic Hermes LLM models (#5378) e9ddfee4fd8964a34493e896c44286f7209bc3d0 fix(plugins): reject plugin names that resolve to the plugins root 73b5a3fe6cdb1d204ea198d720694271e85dd4d5 feat: warn users when loading non-agentic Hermes LLM models 2563493466004435ddb931e9dbf42706bb2e5552 fix: improve timeout debug logging and user-facing diagnostics (#5370) 6ff9092e889103b0dea246e765154cb20c7fd142 fix(plugins): reject plugin names that resolve to the plugins root 4c7d5ec778b776b74a32657ff3be35d73522bfad tui: add tui arg f116c59071773ae62d34f4fb8e8c7261079eafcf tui: inherit Python-side rendering via gateway bridge 0f556a17f5d588c527a1a68debb9bed0dd2213a9 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 1572956fdc4a579f734d2aa32181d5b4b2ab8161 Merge pull request #4930 from SHL0MS/feat/manim-video-skill-v2 9d885b266c8433ea4f641b362edd7ddd2abdb2ea feat(skills): add manim-video skill for mathematical and technical animations 232d028e79ef4f1a805d372e8c5dbf1dd851f8ab fix: improve timeout debug logging and user-facing diagnostics 7409715947a76ecba6edf3b0ea3cde4512d80892 fix: link subagent sessions to parent and hide from session list efa03fc07df73e94c0b2fc894c34a3fd60d04820 docs: update honcho CLI reference + document plugin CLI registration (#5308) f9596c6a6f6c21544843f329f9e22a3d047c82d9 docs: update honcho CLI reference + document plugin CLI registration 4494fba1404360fe50a59fa2b549411d3ccf9d41 feat: OSV malware check for MCP extension packages (#5305) 7a3b80b02565e489d388cb791aaf0310d6ac4364 feat: OSV malware check for MCP extension packages f0b325b9f91d7bab0f912308d5a8c3301b288503 fix: link subagent sessions to parent and hide from session list b63fb03f3f633a821eb691172e37bdb5b9549428 feat(browser): add JS evaluation via browser_console expression parameter (#5303) 8d5226753f10c78749d13ff9d226885741f2180b fix: add missing ButtonStyle.grey to discord mock for test compatibility 66d0fa177894ba8d5619924fd1e0e1e009a60bfa fix: avoid unnecessary Discord members intent on startup 23d3f38a5e66f4635f5e3b2c3cf897e1f91f8744 feat(browser): add JS evaluation via browser_console expression parameter 583d9f959791dfb870a40a48a07327de39f7e316 fix(honcho): migration guard for observation mode default change 0f813c422cdca8331308ca5b6f161c9ee14fd8b8 fix(plugins): only register CLI commands for the active memory provider b074b0b13a4faddcaa116536f2b98646b148aa40 test: add plugin CLI registration tests dd8a42bf7d46f468927af67b26829bedfe6a5161 feat(plugins): plugin CLI registration system — decouple plugin commands from core c02c3dc723aea2b62d5a8052e7b4e7d81c367a67 fix(honcho): plugin drift overhaul -- observation config, chunking, setup wizard, docs, dead code cleanup 12724e629529df096261ff264d85d7aea0f4cc10 feat: progressive subdirectory hint discovery (#5291) 2fb2978f448e39c7fcad8b65f682d379ba93dba3 fix(honcho): migration guard for observation mode default change 567bc7994849f69627d86c543e3cf6f1d0fc3272 fix: clean up cron platform allowlist — add homeassistant, fix import, improve placement 71a4582bf807c48aba7d33998c3a14426bd599cc fix(security): hoist platform allowlist to module scope as frozenset 1ebc9324173d6f6b5db717ac4f36cbf2a8f5ece6 fix(security): validate cron deliver platform name to prevent env var enumeration ef3bd3b276cd72b444db573e4147961b9041d0ec security(approval): fix privilege escalation in gateway once-approval logic c6793d6fc3d27dd7b7dbd7d50ffe46b7bba354f9 fix(gateway): wrap cron helpers with staticmethod to prevent self-binding 3820e6263a2d2f0e65519a319116391a74bf92f1 fix(gateway): wrap cron helpers with staticmethod to prevent self-binding 3c4a85a5bde9c2c9db6fed75de6df888900445ae fix(plugins): only register CLI commands for the active memory provider 385c8592ff435b8bbb0bd02f778907de92269350 test: add plugin CLI registration tests 824c691ec256facae4f49ad1949807c651cc7bd3 feat(plugins): plugin CLI registration system — decouple plugin commands from core cc2b56b26a9f61c451c022b865f2a87d18c505ec feat(api): structured run events via /v1/runs SSE endpoint e167ad8f6195b8a7364489c68b9e1a2009c85e50 feat(delegate): add acp_command/acp_args override to delegate_task c71b1d197f446e264a94f962fd55f285c9dc231f fix(acp): advertise slash commands via ACP protocol fcdd5447e2eef1004488731c3c195cbb93fdd004 fix: keep ACP stdout protocol-clean 914a7db44825fd9692dca073150f09a4964eaf9d fix(acp): rename AuthMethod to AuthMethodAgent for agent-client-protocol 0.9.0 81088b9786d3bb8ffc8dfc3397db77e99b5b3486 fix(honcho): plugin drift overhaul -- observation config, chunking, setup wizard, docs, dead code cleanup 6ee90a7cf6ad650775be1b9c080f982fda69e378 fix: hermes auth remove now clears env-seeded credentials permanently (#5285) 0c95e91059c16fc53866f67ac0ecb91acab09562 fix: follow-up fixes for salvaged PRs 6a6ae9a5c36a63b564b45b33201e7c61c6982fea fix(gateway): correct misleading log text for unknown /commands e8053e8b937ac594eca73e229773bc0e18a8eb45 fix(gateway): surface unknown /commands instead of leaking them to the LLM 4a75aec4335f40c8e3051f6490063b6951482164 fix(gateway): resolve Telegram's underscored /commands to skill/plugin keys afccbf253c3668ed266c4cbab57ad15d409b1904 fix: resolve listed messaging targets consistently 1d2e34c7ebd4b77b5bbefd0f045119eabf6446c9 Prevent Telegram polling handoffs and flood-control send failures 74ff62f5ac803029b498dfb22b7322a9d3267a4b fix(gateway): use kickstart -k for atomic launchd restart aab74b582cbe58d25607f943e3390f3ced5e2886 fix(gateway): replace deprecated launchctl start/stop with kickstart/kill abf1be564b28bf7656d40667dbebbd8256bbf8a7 fix(deps): include telegram webhook extra in messaging installs (#4915) 6df0f07ff3e98e5b7ad670c9009d250fc76325dd fix: /status command bypasses active-session guard during agent run (#5046) 4df2fca2f03eb7561268a7ae415d9bc295d7d0e6 fix(gateway): cap memory flush retries at 3 to prevent infinite loop 507b63f86b1464eb8558b05eb3bb7ae04204321f fix(api-server): pass fallback_model to AIAgent (#4954) 7f853ba7b6ea36e4f434326a4768b567aae402e4 fix: use logger.exception to preserve traceback in logs and drop unused import 5ff514ec795888344b1ac88ec33418f369cf0da9 fix(security): remove full traceback from cron error output to prevent info leakage b1898911ff3cb1b6f803788dd7f49ce2cdf71a02 fix: hermes auth remove now clears env-seeded credentials permanently daa4a5acdd20c3139f51023f46b80fff894891a5 feat: add docs links to setup wizard sections (#5283) 23c20bd6fbd3b28cc22ce34bba31b117fd336f9b fix: follow-up fixes for salvaged PRs 54cb311f40172fac5501038e4b5a986d16a6af66 fix: suppress false 'Unknown toolsets' warning for MCP server names (#5279) 40406e48722053e3b4b189663d85ed25c0482b97 feat: add docs links to setup wizard sections 736c6175b9f15492c17f84c9b467fb277091ec8b fix: suppress false 'Unknown toolsets' warning for MCP server names 0282221f5d16f7cc07c402ad6f625c398c6be96e fix(gateway): correct misleading log text for unknown /commands 4d0b2f2cf98f8c7011149fea51db23d1b7aafe18 fix(gateway): surface unknown /commands instead of leaking them to the LLM dd599b2bb0671d51ce9984a636b1990c3bf04388 fix(gateway): resolve Telegram's underscored /commands to skill/plugin keys a8a858c92fbad36b257b7efdd1f4545646693ba9 fix: resolve listed messaging targets consistently 8df35ea248e69308969b770f7c3de096911476fe Prevent Telegram polling handoffs and flood-control send failures 5052d18e18582f849992d91e2da31c82bdbfbb9a fix(gateway): use kickstart -k for atomic launchd restart 5ff1d320f053531557e5592bd2308bb56806d742 fix(gateway): replace deprecated launchctl start/stop with kickstart/kill 94894bdae89b1ae10a7a5c2dfb66a81caefa9aa9 fix(deps): include telegram webhook extra in messaging installs (#4915) 065f8def4371ced13f9d6ade232b586f2bed9e15 fix: /status command bypasses active-session guard during agent run (#5046) d9be78ab5c176971adad94f10e975d1ef3d5413b fix(gateway): cap memory flush retries at 3 to prevent infinite loop 03489187774c41e6ad6b3534584e648d0b4e35ff fix(api-server): pass fallback_model to AIAgent (#4954) 0a85547aa9e39643e573e47ecf29c0430cf06219 fix: use logger.exception to preserve traceback in logs and drop unused import 7a2c32872d5e0b1dc37271f647bc837afe80f2a4 fix(security): remove full traceback from cron error output to prevent info leakage a0a1b86c2edc68c3559000597d6711b25b233ecb fix: accept reasoning-only responses without retries — set content to "(empty)" (#5278) 534511bebbb13475b9f3dfb638444b5104b316a4 feat(matrix): Tier 1 enhancement — reactions, read receipts, rich formatting, room management 866afbca8208d0183ebc85c8c20354b2dce369b7 feat(matrix): Tier 1 enhancement — reactions, read receipts, rich formatting, room management 20b4060dbfac0b3942d240a313b36df216ea4a6c fix: web_extract fast-fail on scrape timeout + summarizer resilience c100ad874c34bc0fe8357bee1b6f890d95da166c fix(matrix): E2EE cron delivery via live adapter + HTML formatting + origin fallback 36e046e843c7474c25b222b823409e62b2884ca8 fix(gateway): MIME type fallback for Matrix document uploads bec02f3731f47d9ec741f2bc5de4cea913c21643 fix(matrix): handle encrypted media events and cache decrypted attachments b65e67545a49e163f7f3df55ebf18850d2ba3db5 fix(gateway): stop Matrix/Mattermost reconnect on permanent auth failures 9d7c288d8699ed7a953a6a1445d9617b995c1935 fix(matrix): add filesize to nio.upload() for Synapse compatibility 914f7461dc1b0ff3a3b30df4a879e3f81a2cb4c9 fix: add missing shutil import for Matrix E2EE setup 70f798043b65b003345803f95ffaa958d43465ac fix: Ollama Cloud auth, /model switch persistence, and alias tab completion 7b09ac3671d43d9712db7fc640da7dcda44c8969 fix: Ollama Cloud auth, /model switch persistence, and alias tab completion 35d280d0bdc157adfb858141e9eda915efa034eb feat: coerce tool call arguments to match JSON Schema types (#5265) e899d6a05d59ab6edf74ed4558b5a9eb4e7beed0 fix: increase default HERMES_AGENT_TIMEOUT from 10min to 30min 51ed7dc2f399295b6692be78aab0fe975a263cc8 feat: save oversized tool results to file instead of destructive truncation (#5210) d932980c1a7d9b83b7dac7552824192d73fdd635 Add gitnexus-explorer optional skill (#5208) 4976a8b0668f43734e0187428610ddcf2d6c864b feat: /model command — models.dev primary database + --provider flag (#5181) 335d0e91659ed63b25b7c58bf69400fac8df237b chore: remove diagram file from repo fdd8d0515ecfa83eac0bd73e593f1fdd2bddaeb2 fix: /model listing uses curated model lists, not full models.dev catalog 7b6018920635bfdb7648ae70e044b6c62629e55d feat: /model shows authenticated providers with top models 7f21b7f1ea79888d91f8b1d12a576a13e9a5bf60 feat: auto-migrate custom_providers list to providers dict (v11→v12) 1cc264a76e7d0d5bb0cc00bab9376bb7aad05812 feat: models.dev as primary database + --provider flag + full metadata afcbab5323d102ea824d9fd49488ff6eebb35102 feat: /model command — full provider+model system overhaul c5c7dba1369030552bbf759effe4d45516cd2254 feat: models.dev as primary database + --provider flag + full metadata cb63b5f381a95709ff2c7e36acc187b699a042f2 feat(skills): add popular-web-designs skill with 54 website design systems (#5194) 916aa64be2bd3c5670103b6bc7e8c57b716450af feat(skills): add popular-web-designs skill with 54 website design systems 0c54da8aafd9e63f625beb2f749169838c50890e feat(gateway): live-stream /update output + interactive prompt buttons (#5180) fb6766a59588ce96156d038249115d710e3c73b8 fix: block /update on non-messaging platforms (API, webhooks, ACP) 441ec4880291bf9d1a341080003f67d7f2b7ff44 style: use module-level re import instead of local import re as _re 4437354198dcd282841da7ca60f9cdf3553965cc Preserve numeric credential labels in auth removal 65952ac00c66b2724402a5528185f24ac94ca982 Honor provider reset windows in pooled credential failover edc9a4f41466b396bbdcf68a1de9f82fd2b01bcb style: use module-level re import instead of local import re as _re ae5fa0f13b840f40ca0969dd605237f339ac94f2 feat: interactive buttons for update prompts (Telegram + Discord) b3afda3c033c98e3b58984cd374af5f91d95805d Preserve numeric credential labels in auth removal 466731dde4577352f29d8b12da9edb8404c5de9d Honor provider reset windows in pooled credential failover ed4a605696b54522cb8c88f7c89a8544c32165fd docs: update docstring to mention Fireworks strict validation 8545343cba26870601e38b0996214e63beef286c test: add strict API validation tests for Fireworks compatibility 9be2b180641d29f59130c972efe28364e4d4ce66 test: add test for _should_sanitize_tool_calls() d90035835bb23ce8978bdb7e7ff39e5a59c72e03 refactor: use _should_sanitize_tool_calls in run_conversation() 234c01f69057f1ca4a221320873b1ff180b88689 refactor: use _should_sanitize_tool_calls in _handle_max_iterations() 7f6e509199f97e2216831d961910b49b6f50863e refactor: use _should_sanitize_tool_calls in flush_memories() 560c6ae1433f42b0919cc7f9caf7e1b5d5b66c6d feat: add _should_sanitize_tool_calls() method 5b003ca4a00403f02590e362fd7ba7062adfaa3d test(redact): add regression tests for lowercase variable redaction (#4367) (#5185) e0bacad9634213ac31e4f1e65613f2a03be6acca feat: /model command — full provider+model system overhaul 585be639f0671152aae4e9ee7a40b6508a01cf29 test(redact): add regression tests for lowercase variable redaction (#4367) 3d698ba4e115ebb1db2b7b8a71ba565ac54d4a90 feat(gateway): live-stream /update output + forward interactive prompts 0fd3de2674bd08fa82f0357381348004927c6f94 docs(skill): claude-code v2.2 — add cheat sheet commands, env vars, rules, advanced features (#5158) bcc860fc560fe3ac92b50ed1740aa5ab1c3600e2 docs(skill): claude-code v2.2 — add cheat sheet commands, env vars, rules, advanced features 85cefc7a5aaf05eba97984bafca6d7959179d9f5 fix(telegram): prevent duplicate message delivery on send timeout (#5153) c8220e69a11e16db050f450eeebdad9bc521eac9 fix: strip MEDIA: directives from streamed gateway messages (#5152) ff544526cd37e19e1512752fdc660eacb8a454d2 docs(skill): comprehensive claude-code skill rewrite v2.0 (#5155) ca4920730c1089e715fb70f53f9dcb2d74a9bb6d fix(telegram): prevent duplicate message delivery on send timeout 567cd2e6d990a7bfe2149f3c3e4c0d2de1d70087 fix: strip MEDIA: directives from streamed gateway messages 931624feda96be2c2a8bdd0ea48c6c5d2f3db87b fix(security): guard cron script against path traversal and redact output 25b97f234c396fda2b3dcbf9919b95505681b4b9 fix(security): guard cron script against path traversal and redact output aa475aef315f51a61f2887f24e9befd0657304cc feat: add exit code context for common CLI tools in terminal results (#5144) 5619a838b38129915fda06f2933c5564c330becf feat: add exit code context for common CLI tools in terminal results 5879b3ef82c01e865601618403c8524ec74ce108 fix: move pre_llm_call plugin context to user message, preserve prompt cache (#5146) 96e96a79ad10ab52f6fc80fca9f123707e808f76 fix: --yolo and other flags silently dropped when placed before 'chat' subcommand (#5145) f5f068cf448f85f4feae8116dd00963dedbd6497 fix: move pre_llm_call plugin context to user message, preserve prompt cache f86815b7f61ccc4c8c5260142ccf7b877ac2b5ca fix: --yolo and other flags silently dropped when placed before 'chat' subcommand 55bbf8caba44cb6fd87a756b699448d3549d6ff3 fix: include approval metadata in terminal tool results (#5141) cc66b666e5995ea0fb2d819bd3766bf32394e812 fix: inject plugin context after cache markers to preserve Anthropic prompt cache prefix stability ee9246076352c6f13dad37bf88e9fd7543097798 Merge branch 'main' of github.com:NousResearch/hermes-agent into feat/ink-refactor 2556cfdab12ce7aac4c6c182b628a654ffd1509e fix(gateway): match Discord mention-stripping behavior in Matrix adapter d86be331615187b5e68963333a0afe10ebc15a8d feat(gateway): add MATRIX_REQUIRE_MENTION and MATRIX_AUTO_THREAD support 637a214820f0d097c9584443f3412e7f051aa2dd fix: token ID extraction bugs in run_agent.py 569e9f96702dfc505501f95d2f0c29a349029267 feat: execute_code runs on remote terminal backends (#5088) 44b2e885a63d57f8e2dba52209766eee0a0c36c7 fix(gateway): match Discord mention-stripping behavior in Matrix adapter ac91ee183073bffa58adc5c3bbb5d103f5bb75f4 feat(gateway): add MATRIX_REQUIRE_MENTION and MATRIX_AUTO_THREAD support 505e3c0b78bf12460bc7f941edfa038247ca1a67 feat(skills): add llm-wiki skill for persistent markdown knowledge bases ec86553ef3f0307e8f2886f56a2d5127b6f80eaa fix: use echo piping instead of stdin_data for base64 writes 28e1e210eecc7e68ea92bbb41953234d70e2b2a6 fix(hindsight): overhaul hindsight memory plugin and memory setup wizard 93aa01c71c696b121001cc2d1812126f488c485c fix: use main provider model for auxiliary tasks on non-aggregator providers (#5091) 2a344d4f58687ddd51d202635ed42a8bdcdad157 fix: use main provider model for auxiliary tasks on non-aggregator providers 7c9883a7ee0f67e79e622ed65e36d75be3f7cead fix: use _get_env_config() instead of raw TERMINAL_ENV env var ac942000da884159f0e734a12faed088abcc2688 feat: execute_code runs on remote terminal backends (Docker/SSH/Modal/Daytona/Singularity) f168a4f1bff3fd5d702c8ee580a3e78e44f71f9f add prompt_tokens/ generation logprobs to run_agent 2893e9df71f7430920d7c59c3e61a8c255d9de5d feat: add image pasting capability 5d0f55cac400fa6a785b8871a9e60c7ea9f276f9 feat(cron): add script field for pre-run data collection (#5082) e09e48567ed076deba54da966f1d02036fe7d23b fix(openviking): correct API endpoint paths and response parsing af4efe741cc39d1da30aee019af0c9c3f1e27df5 feat(cron): add script field for pre-run data collection 2aa3f199cbe08946c6c76bd86a2f7fb165a45fc4 fix(doctor): sync provider checks, add config migration, WAL and mem0 diagnostics (#5077) e0d6bc4c9c9185366cad06d419b7483642b41c87 fix(openviking): correct API endpoint paths and response parsing f6abafb257a422e07bd97bbb4b0e6e53b4b1d7f2 fix(doctor): sync provider checks, add config migration, WAL and mem0 diagnostics 6367e1c4c0ab742c59e74bcd93679eea5d21a471 fix: remove stale test skips, fix regex backtracking, file search bug, and test flakiness e45e4107f611b572e7c7ce627be7de595df06f10 fix: recover from partial stream delivery instead of duplicating 77a2aad7715b2673f082d0198878ba5ec65993ab docs: fix stale references across 8 doc pages 43d3efd5c8874a53da97228243ccf205e1577657 feat: add docker_env config for explicit container environment variables (#4738) 78ec8b017f5e485400b45767cc5a60316d48f78e style: add debug log for write-back failure in retry path a70ee1b898fb66fbe75757ba28d8070b28c65f8a fix: sync OAuth tokens between credential pool and credentials file f7dc7bdb10664b5acd96f0b86abd2604d6940092 style: add debug log for write-back failure in retry path af0697ae0c00588ae8992f45402f40ffd74aa5f9 fix: sync OAuth tokens between credential pool and credentials file 0137296564e784db43c24e89f7440c4f6b12d378 fix: remove stale test skips, fix regex backtracking, file search bug, and test flakiness b93fa234dfd3a8350fe0bbfc1556dbf58fc3a93a fix: clear ghost status-bar lines on terminal resize (#4960) f5c212f69baaa081f3f00eeed940f1db84e7f7ce feat: add MiniMax TTS provider support (speech-2.8) d2eb93de644e0a88bfe21742a69d049a39266b00 feat: add MiniMax TTS provider support (speech-2.8) 831067c5d3d94390fd9af6b718bf4c7c28dead6b perf: fix O(n²) catastrophic backtracking in redact regex + reorder file read guard 1c0c5d957f39a0f381b6e830db49a61e211b02f3 fix(gateway): support infinite timeout + periodic notifications + actionable error (#4959) 34308e4de931451d4aad66a85757bf901a73d7c1 docs: improve youtube-content skill structure and workflow ad4feeaf0d617010bb18d7efa1dbfcfce6a812b6 feat: wire skills.external_dirs into all remaining discovery paths 5a98ce59735ec4b06204157e39b01634236ee9fb fix: use clean user message for all memory provider operations (#4940) 585a3b40adb1d9ee6e06aa14161f24341446d799 fix: use 'is not None and != ""' instead of truthiness for mem0.json merge 5e3303b3d820919304deec2898e0e30d70e8ae27 fix(mem0): merge env vars with mem0.json instead of either/or e0153ba7f5cf3a3ad5d09294bba8b63bd4574018 fix: use clean user message for all memory provider operations 14e87325df5b16797f065852dd0dd8d4bc9988c2 fix(openviking): send tenant-scoping headers on every request (#4825) f1c0847145a6faffe2bbb632f938672af062e3a1 fix(gateway): restore short preview truncation for all/new tool progress modes (#4935) 8af6a08695ce868f55a7b0020c101f5aa4a05efe fix: don't treat bare file paths as slash commands fb68c2234001badc565511ea17755b4e451a427d fix(gateway): bypass active-session guard for /approve and /deny commands (#4926) c29186ab59be750c89f774838694d9cb975acf92 feat: /model command for mid-chat model switching 287ac15efd5018a44686ad0506aacaab29c7f61d fix(gateway): write update-pending state atomically to prevent corruption cee761ee4a2ff2791be13eb01716d2344fbb3a15 fix: prevent duplicate messages — gateway dedup + partial stream guard (#4878) 36aace34aa6d391d06c57815ac9388c69933c007 fix(opencode-go): strip trailing /v1 from base URL for Anthropic models (#4918) d4bf517b19d901958b8fd18fca3177101b8018b0 test+docs: add group_topics tests and documentation 1cae9ac6285265ab128f62cb4eb18d9feb7d8911 feat(telegram): add group_topics skill binding for supergroup forum topics 5a5d90c85a023e62bb85e6aaca099290a376072e chore: formatting etc 56a69e519b1fdb8b2b73aec00a4045f951e91ef4 chore: uptick fab4d8d470f72bc3de48f93ec3e89e7131eb1e57 chore: uptick fb654c15d86627da51b236f538c75345948fc1ed fix: add type hints to session key helpers, extend context-local key to terminal_tool 3bfb39a25f034d855d7073360fe7dec58fb3da88 fix(gateway): isolate approval session key per turn 53599211992e0fe0462770c84f33217fede49ba3 refactor: simplify scope validation helpers in google workspace scripts 37e2ef6c3f31f16a61af4b166e954267ca8a8da1 fix: protect profile-scoped google workspace oauth tokens ff8ec0d9cfc9bb4b4eb90c219a22aabb5e05489a feat: add /branch (/fork) command for session branching 6442255f83f18610ca8122889be70c02cc946890 clean up agent_loop.py: remove debug print and dead comments 44371a9bbb7f4a9ca7f043c08d2cb92769e10fe6 add nemo gym support a3ff98b34cbd897ae260f6064819c6ac4818090f feat: show model pricing for OpenRouter and Nous Portal providers 92dcdbff664a78e7761afcc2e65215826e894a1b fix: clarify interrupt re-queue label, document busy_input_mode behaviour 3f2180037c40f27bf93eafae0421adb2512a516e fix: also filter session_meta in /session switch restore path 6bf5946bbe5dc94a32a9d6d96fcd943957fe2321 fix: filter transcript-only roles from chat-completions payload (#4715) d90178e21b94681d9f8ce862b75253474f4f41a3 fix(gateway): add message deduplication to Discord and Slack adapters (#4777) bef895b3719db5ce7b5236361a4ab8c20de2e525 fix(memory): preserve holographic prompt and trust score rendering 84a875ca0293ac5a5fe1aed102b6acf7949d6b84 fix: scope gateway stop/restart to current profile, --all for global kill 52ddd6bc640a17c35850e9ebb77efadf587882a0 refactor(skills): consolidate code verification skills into one (#4854) 7def061feeb472e433a21a350f21e87c3e8f41c6 feat: add arcee-ai/trinity-large-thinking to recommended models de5aacddd2a4710c518ca0fcf707784816d20b12 fix: normalise \r\n and \r line endings in pasted text b1756084a3c0ceae76da9ebc721cf31bbed0a1c3 feat: add .zip document support and auto-mount cache dirs into remote backends (#4846) 8a384628a5b7628995e4c209fdd33e983f5a0f6e fix(memory): profile-scoped memory isolation and clone support (#4845) 4979d77a4a908650df15a181d00a921680d5110a fix: complete browser_tool profile isolation — replace remaining 3 hardcoded HERMES_HOME instances a09fa690f066d12a392674fbd626f64effc32c8e fix: resolve critical stability issues in core, web, and browser tools 6d357bb18574115a3859402cb547d76db589e116 fix: regenerate uv.lock to sync with pyproject.toml v0.7.0 (#4842) 83f556692e456392b0c5dedeabe8818633b6821e fix: regenerate uv.lock to sync with pyproject.toml v0.7.0 121899499237f4cb03903ed62d3efb551e1b0673 chore: uptick b3319b12522643fddb11b8e44fd5f48c0a409d36 fix(memory): Fix ByteRover plugin - run brv query synchronously before LLM call abf1e98f6253f6984479fe03d1098173a9b065a7 chore: release v0.7.0 (2026.4.3) (#4812) e492420df4570bd620f43b74129a25223c1d120f fix: route memory provider tools in sequential execution path (#4803) 67e3620c5cd83f8a1e31a42f8f017cea03e47d38 fix: persist API server sessions to shared SessionDB (state.db) (#4802) 94d993e83fa073ee1ee9ceb0672d6a77cd099480 fix: route memory provider tools in sequential execution path 8e5f2ba7df8fab92eb0d894a0fce6dc965995aa6 fix: persist API server sessions to shared SessionDB (state.db) aecbf7fa4a435b8e6da736983e7701839d30a40e fix(discord): register /approve and /deny slash commands, wire up button-based approval UI (#4800) 9e21dff0da25cdb4575fbeeeda5e9e55d72a4ffa fix(discord): register /approve and /deny slash commands, wire up button-based approval UI 5db630aae4364ca142c675c8c8e8cfb4354c9804 fix: respect per-platform disabled skills in Telegram menu and gateway dispatch (#4799) 248455e185a39697b928674be559f38210503129 fix: respect per-platform disabled skills in Telegram menu and gateway dispatch b6f9b70afdbf05e7f99063bb11676ec3aa7e34c8 fix(gateway): route /approve and /deny through running-agent guard (#4798) 44b44eec37c506b77f117f8997847e453954fdd1 fix(gateway): route /approve and /deny through running-agent guard 93334b2b92a23549cfb155c1ac0d2e71da1968c9 docs: add community FAQ entries — multi-model workflows, WhatsApp binding, verbose control, skills config, thread sessions, migration, install troubleshooting (#4797) 9f0ee9245e5cac063e548c9856c064c48d478646 docs: add community FAQ entries — multi-model workflows, WhatsApp binding, verbose control, skills config, thread sessions, migration, install troubleshooting d50e5be500ba8e272ee8ea870ecb169f208a9c0e fix: handle None mcp_servers in _get_platform_tools() cc54818d2671f2e19c31305ef3f7cbc8d0d3294e fix(mcp): stability fix pack — reload timeout, shutdown cleanup, event loop handler, OAuth non-blocking (#4757) f374ae4c619c365bc9c56a463ad32ff1ace2d4c3 fix: prevent compression death spiral from API disconnects (#2153) (#4750) 0546e935b457722fc875339db87c5069fb7c9b05 fix: prevent compression death spiral from API disconnects (#2153) 8fd9fafc84937be61e493385d1caf37269030a14 fix: handle Anthropic Sonnet long-context tier 429 by reducing to 200k (#4747) 26d60836244a6485d0b5c9237a8a08f46a0de83a fix: correct qwen3.6-plus model slug 470c3ea51a9f50bc8d69b6cef8844c7dc739a1a6 fix: handle Anthropic long-context tier 429 by reducing to 200k 8e0a3c6083ae751b305aacb13fae48e029b2afcf fix: handle Mistral Magistral structured content blocks 388241f7986844cd2437c4baca926f0ebd4b50a0 docs(acp): fix zed config 67ae7a79df0feaae6bbe395a6005b2e7218d7259 fix: use get_hermes_home(), consolidate git_cmd, update tests 6b0022bb7b3366ed531ab437ea4c5b2acebb0ca5 Add fork detection and upstream sync to hermes update 271172831503628a391bd869ec9850b720500744 fix: use get_hermes_home(), consolidate git_cmd, update tests d6e9b48b5e9baa449527779dad66794431718bf9 docs(acp): fix zed config f37221d6ff87b264c02fc92c62f6d4cce15a38ca Add fork detection and upstream sync to hermes update 0109547fa22a2f48df00f6a02466a18357cc5ba0 fix(update): handle conflicted git index during hermes update (#4735) c66c68872782261ba43ee17aa67e83555bbe803e fix: remove redundant restart message from update launchd path 988ecc74207995dc8a39413f9101f190704d27b2 fix(update): avoid launchd restart race on macOS 7165eff901c52dc53e9917bb6ef254be2bfb2038 fix(whatsapp): add free_response_chats, mention stripping, and interactive message unwrapping 714e4941b83d6752a34db0b017a09b94a7a1db5a fix(whatsapp): enforce require_mention in group chats 23addf48d39323cf4e0680eb897f19fc3867eeab fix: allow running gateway service as root for LXC/container environments (#4732) 2506d0eddeb6871c64c23bcc432547745bb7d645 feat: add docker_env config for explicit container environment variables a456b50a3f4d095c635efa244ae62b099ce8e95d fix(cli): surface recent sessions inside /history and /resume 4d9930534590d5b7a84dd48ed50bcd15106f8fa4 fix(cli): surface recent sessions inside /history and /resume a93307956437f85a3914f91387b83c2373acc9cb fix: move class-level attribute after docstring, clarify throttle comment 0ed28ab80cec759fd15ca4a3d251d4fd02ad5bdd refactor: simplify and harden PR fixes after review 28380e7aed0408e500e5697640014dd174018eb2 fix(gateway): STT config resolution, stream consumer flood control fallback 970042deab633f3f10242d7624568f6c4061e294 fix(gateway): prevent stuck sessions with agent timeout and staleness eviction 9bb83d1298ae4ce63117a4a287ee8a4f41d208e1 fix(gateway): downgrade empty/None response log from WARNING to DEBUG 69f85a4dce41e5ba53b2b5ea7f6fcb09d65263b7 fix(gateway): race condition, photo media loss, and flood control in Telegram 47a8171b231af6b72540a9d5576a3711a8004f12 fix(cli): surface recent sessions inside /history and /resume 4080f6352b52e41439b5180f6d1801ec9c309ffa fix(whatsapp): add free_response_chats, mention stripping, and interactive message unwrapping 9e26b8f024814a9caf1cfc46aac247f5215a3367 fix(whatsapp): enforce require_mention in group chats f4bf57ff7a196076a4c9bf4f8d9ddd19d9084d43 chore: uptick 3659e1f0c2fa2ca0d2c98b3a6efe8431e88f9419 test(acp): add E2E tests for MCP registration and tool-result reporting 21c2d324710e68d1ab51c79ffe6801b8a8955c1a fix(gateway): normalize step_callback prev_tools for backward compat f66b3fe76b740fd25529555b6d50d619e114749d fix(acp): include tool results in step_callback for ACP tool_call_update events 9aa82d480740258af56bb83cc0779b168979793a fix(acp): use raw server name as registry key, only sanitize for tool name prefixes 9b2fb1cc2e95a6e60b95ed519ab8fecedc1498cb feat(acp): register client-provided MCP servers as agent tools e9d74c817bbb87704d825805a9d1356b2d86bd28 test(acp): add E2E tests for MCP registration and tool-result reporting 29c98e8f8367caa611164427c8e34b2d84760f6d feat(honcho): add configurable observation mode (unified/directional) 9e0fc62650ba68d8c06bec03bfc9728dd04b441c feat(honcho): restore full integration parity in memory provider plugin bbba9ed4f20a9df605ab5c9e6fa63cb8004c1129 feat: split apart main.tsx 2818dd8611f5d2ae4722f02c9b0c0af3f8f9793e feat: add prettier etc for ui-tui 2ea5345a7b8a2cd1f47e784e9e977094cb2b8579 feat: new tui based on ink e52ddb63187b6dd79a53ea9dec108c36d2a1591f feat: language-aware context compression summaries e644f6b069f7902e37b5491463e1e00c43bfd49e fix(gateway): normalize step_callback prev_tools for backward compat 924bc67eee35cc2fbb24d7cbc5649c820beb4406 feat(memory): pluggable memory provider interface with profile isolation, review fixes, and honcho CLI restoration (#4623) 8858d0e121d6587a957aefb5c05a0a005ae1ed46 fix(tests): add module cleanup fixture to test_cli_provider_resolution e0b2bdb089dd86adc74298f22b649d684785a616 fix: webhook platform support — skip home channel prompt, disable tool progress (salvage #4363) (#4660) 3d6b3e6c94bade11a2fd671ccb56e4d8b5eabaae fix: webhook platform support — skip home channel prompt, disable tool progress (salvage #4363) 6d68fbf756efea22c4958211abd20f6ac90777a9 Merge pull request #4654 from SHL0MS/skill/research-paper-writing b86647c295b696195feb894a2e410a0ccf582fd7 Replace ml-paper-writing with research-paper-writing: full research pipeline skill 798a7b99e48188a5a031122468c9dc2e0c477640 docs: add Configuration Options section to Slack docs (#4644) c8c643967d51ffb2be5115da28539951e28af5b8 docs: consolidate reply_in_thread into Configuration Options section 29cb057e345f1b71cbf992381eb79696f0a69dc3 Merge remote-tracking branch 'origin/main' into hermes/hermes-7cbc527e d2b08406a44566b73b12cef598657c0ffc87f06b fix(agent): classify think-only empty responses before retrying 05048760c9ae61bdfc2baed63ea523e8db94475e docs: add Configuration Options section to Slack docs 241cbeeccd25177e21a3b31f7ed2579d82f682b1 docs: add reply_in_thread config to Slack docs b9a968c1deb280a195ede47cc65b986bc1dc351c feat(slack): add reply_in_thread config option 60fcae3c098cc6c23f5bd058b6e3dca8e7689171 fix(honcho): port profile isolation fixes from PR #4632 2cad88fb9d8f6cda46a337b7ab126f8c7d3d461e docs: add reply_in_thread config to Slack docs edc8c0632f7e5a77f57e7b1dbe69fd7b157f8625 feat(slack): add reply_in_thread config option d89cc7fec12c2b19e87dad527f34d2eb100f8bd0 feat(prompt): add Google model operational guidance for Gemini and Gemma (#4641) 0e9329aae47a2e45f04a8ec6bf1f5918d20b08bc feat(prompt): add Google model operational guidance for Gemini and Gemma 005e0ec4f81563a9b7f94cbb4c77f190caf3de55 fix(memory): wire on_delegation, skip_memory for cron/flush, fix ByteRover return type a76eb5ca205195f70e09c3b7647a8deb4211bec2 fix(memory): address review feedback — P0 lifecycle, ABC contract, honcho CLI restore 318666879951ec74299274ee4038540ae8b985f0 feat: per-turn primary runtime restoration and transport recovery (#4624) 918d593544ae3617a70176ed749a81900a62c883 chore: gitignore generated skills.json b8dd059c406450513f940441794e9b80ed541a73 feat(website): add skills browse and search page to docs (#4500) 20441cf2c8ac90902479075a2d4fbc657d010461 fix(insights): persist token usage for non-CLI sessions 585855d2ca1182ebd6e658fc37bd8115f84c723e fix: preserve Anthropic thinking block signatures across tool-use turns 8e8c31eadfbdb02b1e796e987615c22e8dfd3a3a fix(insights): persist token usage for non-CLI sessions 168badc6b51d2645649cfcb002c5cdac53b90722 fix: preserve Anthropic thinking block signatures across tool-use turns 9e236df3f8458053265cc4e62b7bac9d3a6df4b8 feat: per-turn primary runtime restoration and transport recovery 840f5595710d50a6fcc5a417039fb07600a2098b fix: update stale mock path for resolve_active_host after honcho plugin migration cdc9231986367b22a810b47127b55ad5e686801a feat(memory): pluggable memory provider interface with profile isolation (salvage #4154) 28a073edc63ac569c056830e3905831a92ddbf1c fix: repair OpenCode model routing and selection (#4508) f4f64c413f830416657bd5fc85773283f928e1dc fix(cli): ensure zero exit code on successful quiet mode queries (#4601) 8dc5b11e95303b8869d1fc4fe76c9de915efe536 fix(honcho): remove redundant local HOST import in _all_profile_host_configs 37d73d94bb06afa49d9a8d3e37d635605e670b29 fix: patch _local_config_path in tests for write isolation a0eae33248b6a9650924639a234d075a7062f201 fix(honcho): address PR review findings c146631e3bf0f5af15ebd2aa12ef242e86edd314 feat(honcho): sync command + auto-sync on hermes update 89eab74c677ca3817ec3244ccaabdf67f8affdb9 feat(honcho): --target-profile flag + peer card display in status 5f6bf2a4738d2f156bc32365cb05065bbd53f3c9 fix(honcho): share workspace across profiles by default f27da5fe8ebd8e6ab2ab49fdebb5a0bc3c971990 fix(honcho): remove linkedHosts from peers table 0e90df121602730c88290bbab4cb6dd9688dc1e8 feat(honcho): eager peer creation + enable/disable per profile 37458e72a2223cc67593db71fc794fd0ebadc055 feat(honcho): auto-clone config to new profiles on creation d1189f2be90582934de28c4bf10d9792b91fbf11 feat(honcho): add cross-profile observability for Honcho integration 18c156af8e23f69a05446ee4835cb8582d11e5cf feat(honcho): scope host and peer resolution to active Hermes profile c32efc2885fdc5adc2f5591e1e7bfa81bd56b0b0 Initial taubench implementation 661a1b0ba2f7b4932f4e30298819521cfa5262d0 fix: exclude matrix from [all] extras — python-olm is upstream-broken (#4615) acea9ee20bf3c5dd2db2f392fa7233e625ac8cf6 fix(tests): fix 11 real test failures + major cascade poisoner (#4570) 8e3803f3ce29e78495def8e6d9787070d9b1f959 feat: Computer Use Tool — macOS desktop control via Anthropic native API 624ad582a51f8540f2452b2d65fa1ded5422087e fix: make gateway approval block agent thread like CLI does (#4557) 4b2b478d3f2b64f812d998c5f844db8a4fcfc98b fix: make gateway approval block agent thread like CLI does 64584a931f8767cb0bdc2f38c50df5f8b399a54d cleanup: use _generate_session_key for parent key, fix trailing whitespace 8cb3596939708c578a6124efa5e9bc1d311ab1e2 fix(gateway): seed DM thread sessions with parent transcript to preserve context 14bc2d47a37980217edeb3a9cc5ebde108928ae0 cleanup: use _generate_session_key for parent key, fix trailing whitespace 37eabcfb7c5afa4740b4e264221c6c49aac4ea4c fix(gateway): seed DM thread sessions with parent transcript to preserve context e94b4b2b4016d77d2c76fce496a2c825e74e306c fix: preserve allowed_users during setup reconfigure and quiet unconfigured provider warnings 835defe07411c9d73db6d050f0ffc6f28ed4eb1a fix: invalidate update cache for all profiles, not just current e4db72ef391a3c9bea790f761c464c04f72d09f8 fix: merge dotted+hyphenated FTS5 quoting into single pass 9825cd7b1e94c62358a4addc5706d75b17a8acc7 fix(state): quote dotted terms in FTS5 queries c4e626b1fa9661232399845bfe24ef8944cfb401 refactor: extract _detect_file_drop() + add 28 tests 18418868986a7e45422ad62dff0a8fe66358bfbe fix(cli): detect dragged file paths instead of treating them as slash commands f4bc6aa856d928c469971d7e49b2ac695845635a fix: scope extras retry to [all] group only c91f4ef4ed75794e24a14f0512e893f042b3928a fix(update): preserve optional extras during fallback install 5101f853babc5820c8cbf7f5984273d207e0e518 Merge pull request #3287 from NousResearch/rewbs/tool-use-charge-to-subscription a0f5fc25702105624f60bdb8b8d1edd420e06626 fix(tools): add debug logging for token refresh and tighten domain check 647f99d4dd8c98da1b3ff01ba64cb71f5423fab6 fix: resolve post-merge issues in auxiliary_client and model flow 9ebe435ca19eb724fb69acf6f4157d8d8770cdd9 feat: supersede stale browser snapshots to reclaim context tokens a2e56d044bc8e7521dd503dcb0d40e01cda4d6fa Merge branch 'main' into rewbs/tool-use-charge-to-subscription 11efa75bb9ea201da3e9be61ef99e7f231196f07 fix: repair OpenCode model routing and selection bd9e0b605f629c547499a598517eb5ff1284b89b test(e2e): remove section separator comments 99e6f442045d9d27e8b216ea0da0208d85cbb177 test(e2e): remove unused imports and duplicate fixtures 1f1297f56c25e5c0d12ef47702461ebeefdf9687 ci: merge e2e into tests workflow as separate job 04e60cfacd81c9ac240bb20b29779e026e7323bd test(e2e): add authorization, session lifecycle, and resilience tests ecd9bf2ca01061dcfeaa4c081b68283f01209bd0 test(e2e): revert intentional failure after CI verification b209dc0f43d5c312a7373dec6779c720ade8bd6e test(e2e): add intentional failure to verify CI detection 67e1170b01b4c4c19d44c1ba1953a31d736e1dec ci: add e2e test workflow bff34b1df97d130f28a70d8104699e7f502796d1 test(e2e): add telegram slash command e2e tests ba48cfe84ac6e4ef93253583ef2f3039a3b8346c test(e2e): add telegram gateway e2e test infrastructure de9bba8d7cba8dc84c0957f71a5d013636a7c82d fix: remove hardcoded OpenRouter/opus defaults 3628ccc8c435e2d2cc697d9f0fafcca1f20e9db5 feat: use 'developer' role for GPT-5 and Codex models (#4498) 9c4df211ad12b6e29028311873f82298e1a241d9 feat: use 'developer' role for GPT-5 and Codex models c100a486de7477aeac0e46643eca943ed14e46bb fix(acp): include tool results in step_callback for ACP tool_call_update events 62479afd889ca25759add05989ae2afe3123e8c8 fix(acp): use raw server name as registry key, only sanitize for tool name prefixes c59ab8b0daa3a89267948d62ab709a992e99799c fix: profile model.model promoted to model.default when default not set 77796d3184dc7b6ca1cccf69a0262cc1352a2852 feat(acp): register client-provided MCP servers as agent tools 16d9f58445e7960715585ea96d07908a1c7b5bdc fix(gateway): persist memory flush state to prevent redundant re-flushes on restart (#4481) 31fd50d8082288e430caa6ce6fedeb59be44013d fix(gateway): persist memory flush state to prevent redundant re-flushes on restart a39891b33c18fe2e6a546dff0a94ed82599c651d fix: pool entry missing base_url for openrouter, clean error messages 0af50de22279c40164b404044dec750874ab4796 fix: force-close TCP sockets on client cleanup, detect and recover dead connections 1515e8c8f21d14ff610ad3b0fa8100b8ed48eaa4 fix: rewrite test mock secrets and add redaction fixture 127a4e512bd468597d6af954f262d899d1b0d822 security: redact secrets from auxiliary and vision LLM responses 712aa4432527473db4896b6cb08e8d22d74ad037 security: block secret exfiltration via browser URLs and auxiliary LLM calls f9a319c898515b03cba25d5747e6345884211436 fix: rewrite test mock secrets and add redaction fixture 7e9100901819ee44c16b4ddcb79a6bcb7909f591 fix: lazy-init SessionDB on adapter instance instead of per-request bf19623a53ca3ece52ad8b0f6d23cc2142dcddff feat(api-server): support X-Hermes-Session-Id header for session continuity 24962f733e206050b84515505a07162773dac904 security: redact secrets from auxiliary and vision LLM responses 030a1373d34d72707f15313e99ec76d710099681 security: block secret exfiltration via browser URLs and auxiliary LLM calls 3ff9e0101deb241ec90de987f82c1f92006f9472 fix(skill_utils): add type check for metadata field in extract_skill_conditions 558971f44db8f53a81aba674b230af3ccfb0604d fix: lazy-init SessionDB on adapter instance instead of per-request b2675168511d4d2a587f6ab6c68e9ec221f70ad2 fix: also exclude .env from default profile exports d435acc2c0dfb44f7f4e66a4aafa0ca41d3fa438 fix(security): exclude auth.json and .env from profile exports 7a3ccea42ea38f9200297e588c325b0d4bf27856 feat(api-server): support X-Hermes-Session-Id header for session continuity bacc86d0310767ee7216340c901dcaa42dea1889 fix: use RedactingFormatter on stderr handler, update types and test mock 5bd01b838cf1b04f620862d7eaa1a822289aa470 fix(gateway): wire -v/-q flags to stderr logging a42794cfb03548d9c09071710e1ce668ef66d576 fix: also exclude .env from default profile exports 258afa6cd1bdf611b40960f837fda47b43a856be fix: use RedactingFormatter on stderr handler, update types and test mock 765f717f9135f10f53ac6355dea71b06248988b3 fix(gateway): wire -v/-q flags to stderr logging 86941fec1d92aef0ba25a4671836e1f6527f1437 fix(skill_utils): add type check for metadata field in extract_skill_conditions 3400098481233ec6c8281019d7e6a312d8a5df27 fix: update fetch_transcript.py for youtube-transcript-api v1.x 77dff9cb0f5b64002944276143069b958801b9df fix(security): exclude auth.json and .env from profile exports e905768ffd7fcc6f5e2336167b0e5b876a9df573 fix(gateway): remap HERMES_HOME to target user in system service unit e0abf2416df56e5e67a7aa00770e23bbf40a8bef fix: restore _config_version to 11 (reverted by stale-branch merge in #4419) (#4440) 331d2e1e5f9eae4d481d97aa0f745601903b4244 fix: restore _config_version to 11 (reverted by stale-branch merge in #4419) f6ada27d1cf2348356670d785bf0e151d609400a feat(skills): size limits for agent writes + fuzzy matching for patch (#4414) 70744add158f4067a62f57e99bc16a87ced94037 feat(browser): add persistent Camofox sessions and VNC URL discovery (salvage #4400) (#4419) 85e96a46388d2b7dc7ef79ee0f733d01b266a202 fix(skills): move unified hermes-agent skill into autonomous-ai-agents category (#4435) 60e3d476ddf14af45ed9c2aa1daf30e520851429 fix(skills): move unified hermes-agent skill into autonomous-ai-agents category c9dc6c474990b36c9997f348fca7c4e9ec597690 fix(insights): show cache tokens in overview so total adds up (#4428) b54c0a17abbca6ebd32298f07f516e32af61190b fix(insights): show cache tokens in overview so total adds up 74645123bbfcede0b87d33aedf3d5ca364169c0b feat(skills): add fuzzy matching to skill patch 3cf96f349c961c68ff6bf6f4ad884e62e10286c8 feat(skills): add content size limits for agent-created skills 935137f0d93c8bbe0aa8a8169d1049df0fc75543 feat: add inline diff previews for write actions 6ef0e30aba94384b85ec84f24e2b38d02741e866 feat(browser): add persistent Camofox sessions and VNC URL discovery (salvage #4400) 484ea291d724ef541b95e5b5d8e0ac2c941e17e6 feat: add inline diff previews for write actions 68fc4aec21659f5396012b1d83230f3b3c3ac7f3 fix: comprehensive default profile export exclusions and import guard f04977f45a6612ba227caca318a6064e6b585b5a fix(cli): support exporting the default root profile (#4366) 996250d17806aec207030f62b383416925ae788e fix(cli): pin entire TUI to bottom of terminal on startup (#4412) afa75a618552d4d0d8536a69a51c2fb24b94a6e0 fix(client): handle is_closed as method in OpenAI SDK 9a581bba505518890d0ef3f6d4b84119854aabbb fix(gateway): resume agent after /approve executes blocked command 439b2f3fffb4c6cc2d1bf64d6151e00cde8961f1 fix: comprehensive default profile export exclusions and import guard 7e7c3f0c2518f7a1afbe0c3f415021f1ff8abff0 fix(client): handle is_closed as method in OpenAI SDK 8327f7cc611a874d7a009275766ac0335bc66403 fix(docs): use compound selector instead of media query 7baee0b023394d38360c4518f2ce70bc71aee8c3 fix(docs): restrict backdrop-filter to desktop to fix mobile sidebar a0996e2eacd5d45b0d7be28b2a3394da9dc4af14 fix(cli): support exporting the default root profile (#4366) efa327a99806c6857660ea511721ab9cf3226cef fix: add missing provider attrs to cli_obj test fixture 9b99ea176e52c5daf319d1fe4e81689b29834807 fix(cli): initialize ctx_len before compact banner path a7f7e870705eb4eba8c47805094afdab102ee36d fix: preserve credential_pool through smart routing and defer eager fallback on 429 (#4361) ef2ae3e48fe08a59f377f03b402826763b1d26ab fix(file_tools): refresh staleness timestamp after writes (#4390) e0a5ab2821731338e427d2cc2940f834ad6e462d feat(skills): add content size limits for agent-created skills 911ad42d6e8af1c4b5ac8dd60b3961591edb3f5d fix: preserve credential_pool through smart routing and defer eager fallback on 429 eae55c8fc84d4dd6a98a828d69119294b123c919 fix(file_tools): refresh staleness timestamp after writes 83dec2b3ec0f6d0ddc5750f9a9e811a6a355a49f fix: skip empty/whitespace text in Telegram send to prevent 400 errors 30c256f95a38fbae67807dface2f9b69bad66a02 fix: skip empty/whitespace text in Telegram send to prevent 400 errors f4d44c777b0661b4e254be4d1081fe56be893b31 feat(discord): only create threads and reactions for authorized users 7d60316c99fcf80d10ece3f9af63af850e20396b feat(discord): only create threads and reactions for authorized users 0a6d366327432f9ac3c3463839af7238a2d3fe9a fix(security): redact secrets from execute_code sandbox output 3604665e44817e735beeab6e9261a785059420bf feat: add qwen/qwen3.6-plus-preview:free to OpenRouter and Nous model lists (#4376) b4d4fee6fe44f766a01415a1378e9f5d215ff909 pwncollege: slot pool for process mode + include_challenges filter c36aa5fe984b526d85b642cc115ab69ba72d0067 Merge pull request #4034 from bcross/docker-optimization f8cb54ba0421ceac8518c6df90b7043fd15f00c5 fix(cli): anchor input prompt near bottom of terminal after responses (#4359) f2ec3e0538db8519858beeb4c4ced6fc98d0ebb4 fix(cli): anchor input prompt near bottom of terminal after responses b118f607b2a0be299c4d45d62bc87764ccfb3d6f feat(skills): unify hermes-agent and hermes-agent-setup into single skill (#4332) f04986029c55bb570f78a1051ea18f8d1619e2dd feat(file_tools): detect stale files on write and patch (#4345) f5cc597afced7c3ad661ee576f41ebf5e2eb3d19 fix: add CAMOFOX_PORT=9377 to Docker commands for camofox-browser (#4340) 1b62ad9de71bd769e7a28276979188c05d936e64 fix: root-level provider in config.yaml no longer overrides model.provider e3f8347be30a068b91662818a70d0c3c42513b96 feat(file_tools): harden read_file with size guard, dedup, and device blocking (#4315) d3f1987a051c8592ded99e5654dfd58c394835e8 fix(security): add .config/gh to read protection for @file references (#4327) 6f228fa0fdb50cdf3302f57f356878e60fe0c1dd fix(security): add .config/gh to read protection for @file references 655eea2db88e3da31bb7655ffefe291b7abcc24b fix(security): protect .docker, .azure, and .config/gh from read and write c94a5fa1b2cbf6074e6feb56622020647987abe5 fix(cli): use atomic write in save_config_value to prevent config loss on interrupt 7f78deebe76447ea218a2363063bddc77edbf274 fix: apply same path traversal checks to config-based credential files a97641b9f2b90399c81a1242fc7845808611d021 fix(security): reject path traversal in credential file registration 0f2ea2062bc0041b6c954e1ec8b4be0fbd45734e fix(profiles): validate tar archive member paths on import 08171c1c316722b5a38ea3aef38351441613bd26 fix: allow voice mode in WSL when PulseAudio bridge is configured 7f670a06cff300ab0cec44c2dade9fe29fcd7a49 feat: add --max-turns CLI flag to hermes chat cac9d20c4f7c9fc1d5176f347595ba124a6c7e1b test: add codex transport drop regression e75964d46dad9e95bd4333027a96e8a7bb61f8fb fix: harden codex responses transport handling 161acb0086274e30c806e6abfbcbe0d3a8740873 fix: credential pool 401 recovery rotates to next credential after failed refresh (#4300) 478067989f8fab6e1e88fad6de8241c7a4d0d9b7 feat: add --max-turns CLI flag to hermes chat 143b74ec00b41a7b7e949b9cb4f2b303b27e5fa6 fix: first-run guard stuck in loop when provider configured via config.yaml (#4298) 57625329a218775b70b51237d8dbe5f632c864c2 docs+feat: comprehensive local LLM provider guides and context length warning (#4294) 0240baa357522654026e4aa04c716d209f79b704 fix: strip orphaned think/reasoning tags from user-facing responses c1606aed69f3685a6cc5d866f2d2c80fadcedbef fix(cli): allow empty strings and falsy values in config set 49d7210fede960796d4d0d80f5a88bfb8d45e3de fix(gateway): parse thread_id from delivery target format 84a541b619238427d038e92746102c87a6ac5c36 feat: support * wildcard in platform allowlists and improve WhatsApp docs cca0996a28aa57a892bb5e9fe3657eb825345b48 fix(browser): skip SSRF check for local backends (Camofox, headless Chromium) (#4292) fad3f338d1a9e68f923f35566beaa45548796041 fix: patch _REDACT_ENABLED in test fixture for module-level snapshot 6dcc3330b3313dd27dd21a2f233e48fee0e8fee5 fix(security): add missing GitHub OAuth token patterns and snapshot redact flag a1f9961f51671382f346742f0814b5b1e42a10f4 feat: add disable_secret_redaction config for RL environments 289df5dd1cd37617d1d6b4ba2f25d7170eb3a25c Merge branch 'NousResearch:main' into docker-optimization 344239c2dbfe6c03c9020a4faa9552c8769be20a feat: auto-detect models from server probe in custom endpoint setup (#4218) 1c2ecff145c53bc3f10e26e55c5cd436b93cf4f7 feat: auto-detect models from server probe in custom endpoint setup 79b2694b9a02806592ea5cf6aeaa272a2e9d4028 fix: _allow_private_urls name collision + stale OPENAI_BASE_URL test (#4217) d8ad6fcbc4136c495673eb7f41eaa52f555cca06 fix: _allow_private_urls name collision + stale OPENAI_BASE_URL test 8d59881a6246207baf0c5625c5a216b95b7994a5 feat(auth): same-provider credential pools with rotation, custom endpoint support, and interactive CLI (#2647) e8c0f262024df0419edb0a55743cfa23258d6e90 refactor: simplify credential pool code — extract helpers, collapse extras, dedup patterns 8b4e0c7ae014b5fd5e645aa079a0598d11d75f47 chore: remove excalidraw diagram from repo (external link only) 2ae50bddddfaab3f4599f5b8ec12a969bbc20e6b fix(telegram): enforce 32-char limit on command names with collision avoidance (#4211) 2b22c575cfdaf288af6c894b38a49e36fee37c46 docs: update architecture + gateway-internals for memory provider system 71ba4cf39d8fbfa1b675a0e02916c79354396b70 docs: add comprehensive credential pool documentation 7aabf5d4cf1107800901023a59d7a8635fae9cde refactor: move honcho_integration/ into the honcho plugin 09c065b94b70ee5dec435a6619a646a689cd6185 fix(tests): update setup wizard pool tests for unified select_provider_and_model flow 3f1908abf8e6706b988c8ddec22f7636134f06b7 chore: delete dead honcho_integration/cli.py and its tests 50302ed70a5a6fc1caca15fc0795458572a11b97 fix(tools): make browser SSRF check configurable via browser.allow_private_urls (#4198) 596bbc9ec33808b6ec3b079fdf4c122343937b29 docs: add Excalidraw diagram of full credential pool flow 7ec943a88326a3693e13c2ff0399c9298d591a79 feat(auth): support custom endpoint credential pools keyed by provider name 192bc222d3c402a70fc5c0c62451b8ff04b320b4 chore: remove dead code from old plugin memory registration path 086ec5590d6fe2917f5d7b410246524974799438 fix: gate Claude Code credentials behind explicit Hermes config in wizard trigger (#4210) b77e0c2f63b04b7f46394660b8e8ad442db339cf fix(memory): correct pip-to-import name mapping for dep checks c53a296df1935639780ed1a34d54009c3a4e071d feat: add MiniMax M2.7 to hermes model picker and opencode-go (#4208) 67cd15800dc2492f0d53460032d8f7bd4b30926d feat: add MiniMax M2.7 to hermes model picker and opencode-go 15f3229f13fb2eae43d91aec8206b628041c2961 fix(tests): update runtime_provider tests for config.yaml source of truth (#4165) ae698c3195930d7552ad17d885f6268204deb429 feat(auth): add interactive mode for bare 'hermes auth' command 7be2fa5492a2e9e210f9cdc3c530a1ded247c89e feat(auth): add thread safety, least_used strategy, and request counting b34f893906ddea8ce1e802d6d0bf093e814682b9 fix(tests): prevent pool auto-seeding from host env in credential pool tests b60a43dd7e753993e11e6b1faac949fe20ac4e16 feat(auth): add same-provider credential pools and rotation UX 479b02eb22d30cd7d5618e1f60405bc9428d0ec0 fix: include plugins/ in pyproject.toml package list 5978adeaef90f65e3fb811f54b0747995b7c344b fix: remove remaining Honcho crash risks from cli.py and gateway 1bca6f393002da217a3e64a437a4fc5aac16dc9d fix: save API key to model config for custom endpoints (#4182) 496d8a9a99e9d6057670ca1fc2668a08d19bd4e6 fix: save API key to model config for custom endpoints (#4182) a994cf5e5ab31f48b48a11b8529440a682d54f7a docs: update adding-providers guide for unified setup flow ff78ad4c811cdd7a74cf077d569e6571e91caa6a feat: add discord.reactions config option to disable message reactions (#4199) 3741ee08d2ab1ceabd8cc7d68694f20be5816161 pwncollege: auto-generate and register SSH key when not configured 491e79bca9b02f48df72dcddc3f7cf7115fabdec refactor: unify setup wizard provider selection with hermes model 693edaee2ceb12b4d3bab5b8ecc13a50ca57a18c feat: add discord.reactions config option to disable message reactions 9cd3050a086dfc012768a37efe720254abd78258 pwncollege: concurrent process mode for full-dojo trajectory collection 0201f8c8c0990cbb6e0c0eff42b6968a93da0c6c feat(memory): auto-install pip dependencies during hermes memory setup f49eebf24452d238d1029dbf8f5dc7773320bfdb fix(memory): only auto-migrate Honcho when enabled + credentialed d92ea74bacd7df2d49bb227b74ceefb000b24736 fix(memory): auto-migrate Honcho users to memory provider plugin 4670f66a339bb466a1b47deea5b97fa6640fa966 pwncollege: early stop callback, SSH key SDK, shell robustness 7a34aebbd117b950a9d56d8e2e3959f198263d0a docs: add memory providers user guide + developer guide 5d278aa31d0657e40c732a129e63d8dd5384ff3f feat(memory): standardize plugin config + add per-plugin documentation 076a299f55b58e51169870c10ac9dd417ec254f3 fix: dojo_id filter uses startswith for hash-suffixed IDs + update smoke config 55107a196ed5ab423fe240d0f97eceae0f88fefd refactor(memory): restructure plugins, add CLI, clean gateway, migration notice 89d8127772b7e0710159a876e741ae7bfe502a46 fix: setup wizard overwrites custom endpoint config (#4172) 52673c9cad8451148f44fc9df1ac7648f2e9af24 refactor(memory): remove legacy Honcho integration from core dc583687ab30c44602e58335b0ca5b313dfd10e5 feat(memory): wire MemoryManager into run_agent.py f890a94c1288b3324beb491aa9ed66276cad09aa refactor: make config.yaml the single source of truth for endpoint URLs (#4165) 0b9f2ff1e8d50c5cfbbb52aa48bc523e5b15ffbf feat(memory): extract Honcho as a MemoryProvider plugin 4d7e3c715703900e3bb47449e47fd175fa8adf9f fix(tests): provide model name in Codex 401 refresh tests for CI (#4166) f21258ff303d5e1505e1530866fd2fd0c99b702d fix(tests): provide model name in Codex 401 refresh tests for CI 7bc943fff6783647b5e16450cd54a31106b4b3db fix(memory): thread remaining sync_turns, fix holographic, add config key 1bd206ea5d03b1c9af19b39a3fde007f2429a06b feat: add /btw command for ephemeral side questions (#4161) f83cab44188c4ce167118d9158d130f2c4faef34 refactor: make config.yaml the single source of truth for endpoint URLs e2c2fe047ea1523b0242bce776b362e58ab9eedb feat: add /btw command for ephemeral side questions bfaeb0fc9ac693c38e77f69b8377cff224c0a211 feat(memory): add ByteRover memory provider plugin f8e1ee10aa4f521fbcfd9193100620e8d4a63359 Fix profile list model display (#4160) 8d04a82043f8da08fba29edb7d032e824d7483c9 Fix profile list model display c1ef9b225005dbcd589bc4f819160820a00b4393 fix(cli): ensure on_session_end hook fires on interrupted exits (#4159) 3a68ec31724b94e47c95375337b6177c67fe8b9c feat: add Fireworks context length detection support (#4158) d30ea65c9bc65b8845f19c05e85e66ad10d3d7ec fix: URL-based auth for third-party Anthropic endpoints + CI test fixes (#4148) aa6631dbd53c2db81757b0599b8ba4e6dd2ed7d8 fix(cli): ensure on_session_end hook fires on interrupted exits 0533d796472a055b4d7a3235b1760b6d5a8cb6da feat: add Fireworks context length detection support fb4b87f4af7783759e600d84b0b1fb2dff966ffb chore: add claude-sonnet-4.6 to OpenRouter and Nous model lists (#4157) 5b0243e6ad8002a6e8e129b5e2295cd01849b9d7 docs: deep quality pass — expand 10 thin pages, fix specific issues (#4134) 2496807e4c163fe14bf25d618f3c0321ecd8ff2f chore: add claude-sonnet-4.6 to OpenRouter and Nous model lists 54b876a5c9120ab2e48ab425d9f97145e09899ff fix: add actionable guidance to context-exceeded error messages (#4155) 11880205d7590a1f619f1a4e1f547de31d993cb5 fix: add actionable guidance to context-exceeded error messages 83e5249be65b2ba4afdaf19ef5f7a3b1cb4f2d0c fix(gateway): use setsid instead of systemd-run --user for /update (salvage #4024) (#4104) fb2af3bd1d10a13c9498372023dd67bdbe86b48d docs: document tool progress streaming in API server and Open WebUI (#4138) cc63b2d1cd817b1c67e08d2afdaedcecd04a6859 fix(gateway): remove user-facing compression warnings (#4139) ba93a142b4ed7eb85b8df9a234271c94edd69de0 fix(gateway): remove user-facing compression warnings 9824deecbbf4af6171f33bb67f9596f7955ebc78 fix(memory): enforce single external memory provider limit 45396aaa9272104313f33df2d0c99c6fc81edb44 fix(alibaba): use standard DashScope international endpoint (#4133) 04367e2fac18dcb5f0beb3ce1320c397ea02d321 fix(cron): stop truncating job IDs in list view (#4132) 0018ae40f9698a6bd053fbf44fe475039c1a9543 docs: deep quality pass — expand 10 thin pages, fix specific issues cdb64a869aa99f4713edbe02bbfbc6de1d1f2d9b fix(security): reject private and loopback IPs in Telegram DoH fallback (#4129) 1e59d4813c620f1f53f4380bceba8cdb0c29e1e1 feat(api_server): stream tool progress to Open WebUI (#4092) f776191650c9867c8d8cd370d19b5c4d0a100185 fix: persist compressed context to gateway session after mid-run compression dfe4c6eb5f095cdc4f14b8324b4e9f1908b3c22c fix(memory): harden Mem0 plugin — thread safety, non-blocking sync, circuit breaker 44d02f35d234087997797c29db56e9fe50f2e982 docs: restructure site navigation — promote features and platforms to top-level (#4116) b2e1a095f8ec90db545acfc81328939a3a90fb5f fix(anthropic): write scopes field to Claude Code credentials on token refresh (#4126) 2fe04533067ee11a7b3f91c37981946855ed9eab fix(agent): use standard MiniMax-M2.7 for auxiliary model instead of highspeed f8ba6a4a3e30301588f33ccba9a9fa2d3f7c1783 fix(setup): use npm ci instead of npm install in hermes update c27eacba93764a54474d5a67b2c909ce656f7fa4 refactor(memory): drop cognitive plugin, rewrite OpenViking as full provider ffd5d37f9b50febb2a85343a2052fec08950f199 fix: treat non-sk-ant- keys as regular API keys, not OAuth tokens (#4093) 720507efac6f3909b3450d949503addcf8550181 feat: add post-migration cleanup for OpenClaw directories (#4100) 8a794d029d3238b26c781888eafa4c8cb60583c7 fix(ci): add repo conditionals to prevent fork workflow failures (#4107) e64b047663a0ff95753a1bf930036e6ccca43bd2 chore: prepare Hermes for Homebrew packaging (#4099) 1b7473e702b23baad2a95df3b948f3518036a9f2 Fixes and refactors enabled by recent updates to main. 1126284c979dc148f02a3952936d2057e82091cd Merge branch 'main' into rewbs/tool-use-charge-to-subscription 6ed5eda2ad80a20b6349d139c54814032ea39683 fix(nix): regenerate uv.lock to include exa-py and other missing deps 11aa44d34d13af1f15eb0642276cd223879b6c5d docs(telegram): add webhook mode documentation (#4089) 07746dca0c1ac5e1f7afb698cb2e6a7615648c77 fix(matrix): E2EE decryption — request keys, auto-trust devices, retry buffered events (#4083) 7e0c2c3ce3afa8c80467609edd9084431391a33c docs: comprehensive documentation audit — fix 9 HIGH, 20+ MEDIUM gaps (#4087) f503eb6647a78a12b9e6e394be7bcbddf8932700 feat(memory): add pluggable memory provider interface with profile isolation 3c8f91097393dd6d3c201f64fccf91b45ae1b9e3 feat: respect NO_COLOR env var and TERM=dumb (#4079) 13f3e6716575d0bd20162409b9de19c74dc55037 ux: show 'Initializing agent...' on first message (#4086) 4a7c17fca59e3193dfb57aa545d1f68d41760670 fix(gateway): read custom_providers context_length in hygiene compression (#4085) c1ef64a0ac6cd8a8f5fb52e6b8721c438a1349e7 feat(secrets): add phase 1 secrets tool and redaction hardening 6e4598ce1ea7bdd94e2b331d9fd8e8ba5d21e2de Merge branch 'main' into rewbs/tool-use-charge-to-subscription f007284d051900a424745dc4d4fb4bdcd78eff04 fix: rate-limit pairing rejection messages to prevent spam (#4081) 3d47af01c3b7e348fe5fb7340412fd081b7eab19 fix(honcho): write config to instance-local path for profile isolation (#4037) 275fcc66734ab9c1a09a7b54efe706342053ee46 Merge pull request #4054 from NousResearch/ascii-video/text-readability-and-layout-oracle ab62614a89c568dfb10f78368570b36308a0b758 ascii-video: add text readability techniques and external layout oracle pattern 0287597d02c74f26084f36ff610044b7a930dd85 Optimize Playwright install de368cac54eba1be7e58ff260f332d500ccbda76 fix(tools): show browser and TTS in reconfigure menu (#4041) 3a1e489dd6d0bf99f54ef513204065318fd8c985 Add build-essential to Dockerfile dependencies 0d1003559d85372aed77116a68362e73e93b5b37 refactor: simplify web backend priority detection (#4036) 4f4d7c4eeb409f8e68852c222470583da4e863ab Merge branch 'NousResearch:main' into docker-optimization 5de312c9e39ad0ee88a2ff41f040b16d84d66c42 Simplify dockerignore 48942c89b526274d560d6e9452f2bb675be391c2 Further npm optimizations eba8d52d541282c18f853ba9f56a615276097096 fix: show correct shell config path for macOS/zsh in install script (#4025) 72104eb06f267286ec207feed65dc00656ce4e9f fix(gateway): honor default for invalid bool-like config values (#4029) fdef0456a704ea268ea99481685c361bdb6259aa Merge branch 'NousResearch:main' into docker-optimization 4b35836ba42a59a669699197573a969431b4df44 fix(auth): use bearer auth for MiniMax Anthropic endpoints (#4028) bd376fe97604f3fafd16052815d539d0f898ef0f fix(docs): improve mobile sidebar navigation f93637b3a16bc5a638eabd007ad7f27eaebf71fe feat: add /profile slash command to show active profile (#4027) 8210e7aba6a7ce37ed5c2a70c93f4c09e62487fb Optimize Dockerfile: combine RUN commands, clear caches, add .dockerignore 7b4fe0528f95ea7c64f2c7ff064f0f8d0ddaa5b3 fix(auth): use bearer auth for MiniMax Anthropic endpoints (#4028) 950f69475fd59d539ab0b8fc953c29ff170ebb88 feat(browser): add Camofox local anti-detection browser backend (#4008) 7dac75f2ae0773b18e8088b678355c59dd164aa0 fix: prevent context pressure warning spam after compression (#4012) ed9af6e5892f6e33d75c4de5efa7cc8110c281f9 fix: create AsyncOpenAI lazily in trajectory_compressor to avoid closed event loop (#4013) 0d32dae1650593071feda829757e0a88c7a4dec2 feat: add /profile slash command to show active profile 98801b503b6584819922a5d20c0e831021753644 fix(auth): use bearer auth for MiniMax Anthropic endpoints 67bf763d2023e47106d7873a269196530c49182d feat(browser): add Camofox local anti-detection browser backend ec1138c3293b0032d919395bc67ce2f1bf1abbbf feat(prompt): add Gemini-specific operational guidance for main agent 6d3840a86bf882df7e147c468dd199e5140663d6 fix: show correct shell config path for macOS/zsh in install script 158f49f19a6bb8dfd818f477ade43e3800a3178e fix: enforce priority order in Telegram menu — core > plugins > skills (#4023) b3ebcba3f6aa10a991b15522666bc0d1772db008 fix: enforce priority order in Telegram menu — core > plugins > skills bd0c3eadd189a836bdf06aeb684358c882a8229f fix: prevent context pressure warning spam (agent loop + gateway rate-limit) 86250a3e45ffe9c1a6f3e60b6d8a0cd49c366e53 docs: expand terminal backends section + fix docs build (#4016) ea342f238209d99285a0780da5167e902d02e2e4 Fix banner alignment in installer script (#4011) 60ecde8ac7d4b6b82bb80b411629947d0993d88b fix: fit all 100 commands in Telegram menu with 40-char descriptions (#4010) f3069c649ca7c16692a54fb1434a8c29b894f4a7 fix(cli): add missing subprocess.run() timeouts in doctor and status (#4009) 0976bf6cd0653a6097dd01cd2a15e160af9dda55 feat: add /yolo slash command to toggle dangerous command approvals (#3990) da3e22bcfa2c583204cbe0742a6b691d9b681da5 fix: cap Telegram menu at 50 commands — API rejects above ~60 (#4006) 9fd78c7a8ebb5b4f74df2d881d0cc8b4a4b7ceff fix: use SKILLS_DIR not repo path for Telegram menu skill filter (#4005) 5ceed021dcd2bb8ecac43cdf8db0c3849dd43aa2 feat(gateway): skill-aware slash commands, paginated /commands, Telegram 100-cap (#3934) e3123be445d2891b97c71d34a93c81a4bda5cac2 Removing old patches e46d5b2c1391ff096fec6364a019cf9e4c82bcc6 Removing old files 34cc666105c0fd4658289416403c592d9e37a322 Updating with trainer config pieces d6832260f921d3c66eb3b61773f4ac237e095648 Fixing eval steps to be a set number of tasks d2652e980fdd2c4dea8bc98016b71296b67dd250 Adding random jitter for agent temp to add variance into rollouts 89cea9fd2d7b222e458af30a1df12ee8a880f50e Test basic Atropos trainer 143e72c145e7932342a162c43ffe83f81b30abca Updating endless terminals env with silenced warnings 51305b3f3d947bf5ab9603d079a733cae4474e26 Tool call changes 570e52b34244be5cac14c74f62a7bfd59fdd1e90 Monkey patching chat template kwargs d6e874491dc9efb7e56ad189571f7a5d470c113b Env changes for tool use dd3812dffe99a9b2a0469b4aff10c4b9bae7cd63 Adding tool call parser default 6e17630bac008689ba51ffbe0d614545870db5b9 Eval splits for holdout sets 53b710b13fc71b2c1b76eebed938a34c08515a4b Changing return type to be ScoredDataGroup to account for multiple trajectories 5b1e8059cb4dcbc47e174de77ceaf769034e9f96 Added task sppecific metris and evals ff16a33cdd2202e3adf4294a916232125fc2cf64 Wandb changes 7cfb9eb1f6493b342396a42e5e9313aa6ad142c1 Updating config c7b15f8ce1fe7ee4e0cec089d69c23f146584d62 Adding config init method 7602c462ee77340f6c4bd608aa58fb369254307a Updating path vars and dataset loading e38c24363c090b9047df0a9508d5e645bf328b57 Updating to use hermes-agent backend and parse container definition out of provided .sif files d768b244a5fc960efc7b467cdced3c6cfe19f31f Adding endless terminal environment after rebase: 97d6813f513b28ce6cd7d6919c729702dfb3d5f3 fix(cache): use deterministic call_id fallbacks instead of random UUIDs (#3991) 9a6126582476676dd82bd32da879f4d5e1ec1ba0 feat: add /yolo slash command to toggle dangerous command approvals 37825189dddcff5686ff5f3dab4025c7313e72a0 fix(skills): validate hub bundle paths before install (#3986) e08778fa1ee377f7128641f8cc03b0de046bd8da chore: release v0.6.0 (2026.3.30) (#3985) 0632015a4a0c02d134a842704ec95286fe69ddde chore: release v0.6.0 (2026.3.30) fb634068df03185083c26349cb63d423d732fa50 fix(security): extend secret redaction to ElevenLabs, Tavily and Exa API keys (#3920) 74181fe726e2e2c11e5c3e72032d3043586704db fix: add TTY guard to interactive CLI commands to prevent CPU spin (#3933) 1e896b0251c3eaafa2d22c6fe730e9697f583171 fix: resolve 7 failing CI tests (#3936) 13bbd564388a6894735ff17b80dc563f208b29d5 Merge branch 'main' into feat/web-ui 0b0c1b326c4db8c7a421473863c2a3fcbad76aea fix: openclaw migration overwrites model config dict with string (#3924) 229be6209870d417972f177d43b9e327e71cb384 feat(cli): hermes memory setup/status with auto-discovery b4496b33b59de8b66b6b681581d2e21ab6b4deb9 fix: background task media delivery + vision download timeout (#3919) d028a94b83e4c696f0aee5ed0739574fa4516a59 fix(whatsapp): skip reply prefix in bot mode — only needed for self-chat (#3931) 0e592aa5b4d38680233f499c426b9578a2765a1a fix(cli): remove input() from /tools disable that freezes the terminal (#3918) efae525dc5c70523527bcd3ed2c15630f0744daa feat(plugins): add inject_message interface for remote message injection (#3778) 5148682b432e8df38273af0381d14ee812dfee46 feat: mount skills directory into all remote backends with live sync (#3890) 791f4e94b27ccf6bdbcb02f6358e5d7e029f2209 feat(slack): multi-workspace support via OAuth token file (#3903) d0cc6a14d7fa6999b1da33276551233262c73ee9 fix: Anthropic 'sensitive' stop reason handling + WhatsApp echo loop prevention 1ddb03b76fb129afd6430e7bdd238c33d42300e1 feat: per-model rate limit handler with stepped cooldown (inspired by OpenClaw) a4b064763d2fd4ce26b4d617c488fcdd57a50e76 fix(cron): tighten [SILENT] instruction to prevent report-with-silent-prefix (#3901) 21c8c84b039caf0c3b4fd0a7312f26167b4b3e71 fix(cron): tighten [SILENT] instruction to prevent report-with-silent-prefix 138ea3fbe8b8af57772c294816d30ac79a394953 fix(docs): escape angle-bracket URLs in feishu.md breaking MDX build (#3902) f5b0271bfe5d82155dbdf8f80fb58309f99d5889 fix(docs): escape angle-bracket URLs in feishu.md breaking MDX build ee61485cac5590ca3aeb7a42bcdd763ea1a3c588 feat(matrix): support native voice messages via MSC3245 (#3877) 947faed3bc3961f6d6f6a3af4cf8dc2424a92877 feat(approvals): make dangerous command approval timeout configurable (#3886) c288bbfb57f31ef448796c227af2a1e7acf4cd13 fix(cli): prevent status bar wrapping into duplicate rows (#3883) a347921314a0ad5faaeb0c40caed692bb98b737d docs: comprehensive OpenClaw migration guide (#3900) 09def65effe9ceed781a5e33e8948538a656a26b fix(migration): expand OpenClaw migration to cover full data footprint (#3869) 525a859b8fdd686cc706164906d826ba02035cc5 feat(memory): single-provider gating with auto-detection 649d149438eadf72ce3f9cac56177796f338a5d2 feat(telegram): add webhook mode as alternative to polling (#3880) 560245879417625e41e416300b8a78d5d727c6f1 security: harden dangerous command detection and add file tool path guards (#3872) 48364a011f8dacfda77e55e87b4f669847593fcb feat(plugins): add OpenViking, RetainDB, and Cognitive memory providers 1c900c45e314c6b9580f5f05bc6e3ba967243635 fix(agent): support full context length resolution for direct Gemini API endpoints (#3876) 227601c20067250f0b12890385153a489b1b6f42 feat(discord): add message processing reactions (salvage #1980) (#3871) fd29933a6d44fdb1168fed5a50df07aba84c8387 fix: use argparse entrypoint in top-level launcher (#3874) 839f798b746770fcdd08608b6e3e49a2ede5b744 feat(telegram): add group mention gating and regex triggers (#3870) 366bfc3c76e9fd43ab5195f4a8670928f0440bc9 fix(setup): auto-install matrix-nio during hermes setup (#3873) b4ceb541a71e36314426a4040145f061dc125bb9 fix(terminal): preserve partial output when command times out (#3868) ccf7bb1102e7adb3cda323f4163d2fe918b87a2a fix(nous): use curated model list instead of full API dump for Nous Portal (#3867) 521a1df587d3d5296ca9d137d2a637eb71f5e4a6 feat(plugins): add Hindsight and Mem0 memory provider plugins ce2841f3c9af95791755513b279c69e2c170090a feat(gateway): add WeCom (Enterprise WeChat) platform support (#3847) e296efbf2497a4f69bd8d284c095312224742ab5 fix: add INFO-level logging for auxiliary provider resolution (#3866) 1cbb1b99cc89a6dfd5a93a2a9362839afdbde56d Gate tool-gateway behind an env var, so it's not in users' faces until we're ready. Even if users enable it, it'll be blocked server-side for now, until we unlock for non-admin users on tool-gateway. 2ff2cd3a59bf27a51f7e474dfe3707f32e12e984 add .aac audio file format support to transcription tool (#3865) f39ca81babb30e3086e6fba110acd1a8d4f621dc docs: comprehensive hermes claw migrate reference (#3864) 3fad1e7cc1487cc3f9b6c9582a2532c0f86286a0 fix(cron): resolve human-friendly delivery labels via channel directory (#3860) 86ac23c8da4564de93168071c6edff1ee87ac371 fix(auth): stop silently falling back to OpenRouter when no provider is configured (#3862) 3cc50532d15956af15d520c902efd17a562a0708 fix: auxiliary client uses placeholder key for local servers without auth (#3842) 2d607d36f674539bd88443fa73153e6fe8d1ca2c fix(security): catch sensitive path writes in approval checks (#3859) aa389924ad1bb0076b203b41fc15dc423abdee5c fix: prefer curated model list when live probe returns fewer models (#3856) 5e67fc8c40d8f867504bf168f21564eb6903a00e fix(vision): reject non-image files and enforce website policy (salvage #1940) (#3845) b60cfd6ce6a99e6f36792b2d60ed7ae4f3f45fca fix(telegram): gracefully handle deleted reply targets (#3858) 981e14001c98bcb1ca66df323ba5f56ebee996e8 fix: clear api_mode on provider switch instead of hardcoding chat_completions (#3857) a1918e32b1fd65fb4da8a43260a385c02889e250 feat(gateway): add WeCom (Enterprise WeChat) platform support 9d28f4aba30456efc1b8cc20a8dc277a69890e2d fix: add gpt-5.4-mini to Codex fallback catalog (#3855) 3e203de125aaf4608d91defc94060adcad300fae fix(skills): block category path traversal in skill manager (#3844) 2d264a4562b89cdb4d3a5eb128bb2eb523ce5ba3 fix(tests): resolve 10 CI failures across hooks, tiktoken, plugins (#3848) 44b7df409025f861dbc63c8265e18ccde635e190 feat(plugin): holographic memory store adapted to MemoryProvider interface 3e2c8c529bfeb6ac530bcff1884ce5dc11162e2d fix(whatsapp): resolve LID↔phone aliases in allowlist matching (#3830) e4d575e563f83a89fa2ccf3ae911871381d0d82d fix: report subagent status as completed when summary exists (#3829) 2a0e8b001f67b568abab6f876268bdeeddc98037 fix(cli): handle closed stdout ValueError in safe print paths (#3843) ca4907dfbc71b3d7d603a8010cf67d9dc9c33de3 feat(gateway): add Feishu/Lark platform support (#3817) e314833c9d05432ee5aa42f8cea7132769117406 feat(display): configurable tool preview length -- show full paths by default (#3841) 59f2b228f7a04dcca46bb4d7016833936362592b fix(paths): respect HERMES_HOME for protected .env write-deny path (#3840) 86465152f2710aadaa1218c184375297542757ed feat: CI improvements — linting, PR labels, regression test enforcement 2ce9edcb298722ea1830af08b908c152d900dd95 feat: agent resilience — handle truncated tool calls, empty responses, tool error sanitization a06b997158bd9a2172631454bd0864f1e96cbb6f feat: script gate for cron jobs (port from nanoclaw #1232) 572d7bd9f4446875732b4ef2c699674aabfcf8a2 chore: fix merge conflicts d6b78362102a07276a796075d9de01ad9ac6b604 fix: update session_log_file during context compression (#3835) 17b6000e90b325e5c1af98dc61fd7731b08882b1 feat(skills): add songwriting-and-ai-music creative skill (salvage #1901) (#3834) 6d13dab7c9e47d462d86389b244a6a07acc51963 feat: web ui to manage hermes agent 45c8d3da960a56b22670ee2a695f9aa993921c53 fix(banner): show lazy-initialized tools in yellow instead of red (salvage #1854) (#3822) 5ca6d681f058c4d70325daca8d97cff417676ef6 feat(skills): add memento-flashcards optional skill (#3827) 1452c8194143ae4fd086d454ff38ac506fb37cec feat(memory): add pluggable memory provider interface df806bdbaf72b5950ccbf9243fde11544bdd08df feat(cron): add cron.wrap_response config to disable delivery wrapping (#3807) 0ef80c5f32041a90017582b4658c9fe92b846733 fix(whatsapp): reuse persistent aiohttp session across requests (#3818) c4cf20f56469f49058791388f68d25fe75fe7c79 fix: clear __pycache__ during update to prevent stale bytecode ImportError (#3819) 68d54728109f3c4c9a642a31e8520d78a7d6f7d6 fix: omit tools param entirely when empty instead of sending None (#3820) 252fbea005fff3b350b61095620f48727981fd32 feat(providers): add ordered fallback provider chain (salvage #1761) (#3813) c7748336670859025cf0ee9469f972d4ff612555 fix(banner): show honcho tools as available when configured (#3810) d5d22fe7baafcb640550e0a29e9f9969c9db209a feat(mcp): dynamic tool discovery via notifications/tools/list_changed (#3812) bf84cdfa5e88759774f71d98906fcb5e7704a980 fix: ensure tool schema always includes name field in get_definitions (#3811) 38d694f55919c2aba1396450ba8b12db5545828b fix(gateway): apply home channel env overrides consistently (#3808) ed6427e0a77215bd4220c15951f28908c745e4ba fix(agent): user-friendly 429 rate limit messages with Retry-After support (#3809) 0fd3b59ba16838a7c43be7d382f75e1439f0c7d9 feat(cli): add Ctrl+Z process suspend support (#3802) 6716e66e89fc0b7299aa6581ff6a855cbbdc846d feat: add MCP server mode — hermes mcp serve (#3795) d02561af85fb6c0f265371f1c881e7cc55d1c730 feat: add Gemini 3.1 preview models to OpenRouter and Nous catalogs (#3803) 8eb70a6885d3345706fcabc6c06adf69f8a1fe14 fix(email): close SMTP and IMAP connections on failure (#3804) ee3d2941cc39266832ef7384c952641b58f6e733 feat: show estimated tool token context in hermes tools checklist (#3805) 475205e30b9c50c410e7d1cbf5653c0827a1ca61 fix: restore terminalbench2_env.py from patch-tool redaction corruption (#3801) 612321631faa9021379e62d467626e52154d3983 fix(gateway): use atomic writes for config.yaml to prevent data loss (#3800) 83cbf7b5bb458db37cab25cb42430b419d2d8e98 fix(gateway): use atomic writes for config.yaml to prevent data loss (#3800) 563101e2a9126f53a518870d8bbb526a26356094 feat: add Canvas LMS skill for fetching courses and assignments (#3799) fe6a916284da4a09a394bc2a9fbe8b7adf95bb0b feat(skills): add one-three-one-rule communication skill (#3797) 13871e9a8e05780d7272d6c1142c2ed4cce46be9 feat(skills): add one-three-one-rule communication skill 57481c8ac5061cf38fcf25eb4376cdeba67071bd fix(tools): implement send_message routing for Matrix, Mattermost, HomeAssistant, DingTalk (#3796) c62cadb73abf2087d167193e7d322d3d53f8a2ae fix: make display_hermes_home imports lazy to prevent ImportError during hermes update (#3776) 442888a05b6b3bc1ae52b944cd5a59c3900cd14d fix: store token lock identity at acquire time for Slack and Discord b151d5f7a774b50b61e44d4bfe9cf9749100ac68 docs: fix profile alias naming and improve quick start c9479c6c6f00b0343dc1fcf6101aa3873003c714 feat: add disable_command_guards config for RL environments f6db1b27badd67ddac6a1f6a714ce58625cdebeb feat: add profiles — run multiple isolated Hermes instances (#3681) 0df4d1278e7de807e6a0c07a4894e375bb7f213b feat(plugins): add enable/disable commands + interactive toggle UI (#3747) 05601e1f034bf1352b4f7977144260b226d949ae feat(plugins): add enable/disable commands + interactive toggle UI 95f99ea4b9b7c4c23cb5f456430eebe25b486247 feat: built-in boot-md hook — run BOOT.md on gateway startup (#3733) 08f3bcaa6639102c2aa38940aac371a9aaf000ea Merge remote-tracking branch 'origin/main' into hermes/hermes-e6f1d362 811adca277217f084098233d3663dbd3f6ba0770 feat(skills): add SiYuan Note and Scrapling as optional skills (#3742) aafe37012a13b008903134703fc7106cb400a1e0 docs: update skills catalog — add red-teaming and optional skills (#3745) e13b632435029a4dc07714e91d2d850a36ea17ed docs: update skills catalog — add red-teaming category and all 16 optional skills 573f9bf13e6978a7148c4ec380d91d818eeb5b1a feat(skills): add SiYuan Note and Scrapling as optional skills 4e8627104ea56e1144b432c31f2d320038ea8666 feat: built-in boot-md hook — run BOOT.md on gateway startup aa1848d15dfb7109fcedb5d75f55c60a7986be1f feat: add profiles — run multiple isolated Hermes instances 909de72426a5b26fef5b0cd05fdd54f727d3c675 fix: set api_mode when switching providers via hermes model (#3726) ba1b600bce79b63e9e3c4b7d3c1fd7721b931025 fix(tests): align skill/setup and platform mocks with current behavior (#3721) fcd16452239c4c770df26b512bf675648cc3bfa6 feat(skills): support external skill directories via config (#3678) 253a9adc72da39c373e6bfbae7db4d981ec9fa07 docs(skills): clarify DuckDuckGo runtime requirements (#3680) 300964178f1fc353b65076d49edb334e7b923fb7 docs: document credential file passthrough and env var forwarding for remote backends (#3677) 7a3682ac3f964dfee01cc748592cdf73ae1ba1b2 feat: mount skill credential files + fix env passthrough for remote backends (#3671) 9f012441379680c0c347c087f0de24ac9446d2e4 fix: replace user-facing hardcoded ~/.hermes paths with display_hermes_home() 0a80dd9c7ac98df85b93be1d18c40611fdfd0b6d fix(discord): clean up deferred "thinking..." after slash commands complete (#3674) 4764e06fdefa65cb75961da64da1ed63c99a0a2a fix(acp): complete session management surface for editor clients (salvage #3501) (#3675) 4c532c153b0d26d342bfc703b9647bdc5bc94587 fix: URL-encode Signal phone numbers and correct attachment RPC parameter (#3670) a99c0478d00be0eefb8d35de0767aec83bdb7ad9 fix(skills): move parallel-cli to optional-skills (#3673) 67c8e267047b0c5804c73d8d74891356a67c2b4c fix(discord): clean up deferred "thinking..." after slash commands complete c6e3084baf089dd5c9ba747f4436fa0d2be5ffbc fix(gateway): replace print() with logger calls in BasePlatformAdapter (#3669) 8d1254787e321c1d626496c89e1a1bd1a853e805 fix(gateway): replace print() with logger calls in BasePlatformAdapter dcbdfdbb2b02f708d235fccce94c95b85014fc68 feat(docker): add Docker container for the agent (salvage #1841) (#3668) 91b881f931e407a444a73f3524b34cdcdf1c1a83 feat(mattermost): configurable mention behavior — respond without @mention (#3664) 417eccc054d7e99834922493227377b79891edb1 feat(mattermost): configurable mention behavior — respond without @mention 2a7a7c509db9d5804daf6570a894c3be45b076fd Install whatsapp bridge deps in container 034edf4ffa6de9a57276caee925fc54b23b7977c Remove git submodules from container d9e8d857e8889222fabce2b6e5375fe71c2a12da apt -> apt-get c09f81bd3358c7256867983d2b6bc7514e6721cd Add .dockerignore file a6debb0c5376f33fd3a31b7dbfa0d563ba702b44 Fix incorrect Dockerfile reference in GitHub action ec1e66b6f24b74ac2fce1ab929ef431279ade8fc Pin Docker version bc78b2ef298cae9bad802a9e64061109ba10b9b4 feat(docker): Add a docker container for the agent 3e1157080a01ad2375a2be30bdd6954b5d1eaa2f fix(tools): use non-deprecated streamable_http_client for MCP HTTP transport (#3646) 1a032ccf796fd29c794626a3007e9c0c5bff92e3 fix(skills): stop marking persisted env vars missing on remote backends (#3650) 0bd7e95dfc4c160196831d77f1cfc282ffde65fc fix(honcho): allow self-hosted local instances without API key (#3644) d35567c6e0cabbacc7a9e26a35d42210f68214a1 feat(web): add Exa as a web search and extract backend (#3648) bea49e02a31fc85f9229236dc61052f7e676b9a9 fix: route /bg spinner through TUI widget to prevent status bar collision (#3643) c6e2e486bfbf83ce51d722ab083a9cd68c8f833a fix: add download retry to cache_audio_from_url matching cache_image_from_url (#3401) 973deb4f76b7503b3379f587b11b712ec9fdf6a3 fix(browser): guard LLM response content against None in snapshot and vision (#3642) dc74998718e740fa1a3e94025addaf0884820aaa fix(sessions): support stdout (-) in session and snapshot export (salvage #3617) (#3641) 5a5d7ec2a29043a3f47a1e29128cbe0552bb73b9 pwncollege: sentinel-based shell completion, eval improvements, retry hardening 17617e43993f481c12453f6b4e35684d5715344b feat(discord): DISCORD_IGNORE_NO_MENTION — skip messages that @mention others but not the bot (#3640) ffdfeb91d8cffa186dfe05291e2c554627e16796 fix(nix): unify directory and file permissions across all three layers (#3619) 857a5d7b47697944c864bc4fc01aefe70498947b fix: sanitize surrogate characters from clipboard paste to prevent UnicodeEncodeError (#3624) b02974209208ba545501865d9982a42e6b530e76 fix(cli): strengthen paste collapse fallback for terminals without bracketed paste (#3625) b2bb11ab4a348e14536726702bdd225a891aa1fe fix(keystore): reorder unlock priority — interactive prompt before env var 24852c6789afe6d0fe24bc621cb462488fe21975 fix(wallet): auto-unlock keystore in wallet runtime for CLI/headless use 4f419585b13942b1067ec0d353745498fa3e5b72 docs(scope): narrow gateway refresh comments to current .env-backed behavior 22aadaa56fd19afd559b2e9ea364eb41df2a5e64 fix(gateway): source external precedence from refresh inputs, not value equality 79d7cec37a5dfe7b1c24e5e51c770d179744355b fix(gateway): preserve external replacements on keystore secret revocation 712bdfb949d22e3bb4c8db501e9846d7d459013d fix(gateway): revoke deleted keystore-backed env vars on refresh 5b16fa86218c26f7456076ce3260236d3a9eb15f fix(gateway): preserve external env precedence during keystore refresh fe325c1b40cd23e80c3e023ff661ec35461dce4d fix(gateway): overwrite stale env vars on keystore-backed refresh d83ea4883bb81d6d4d621a5ffd7ca689d3a8da17 fix(gateway): inject keystore secrets without config.yaml and on refresh 07808ca7f50284b71fd0893ee83ebfe1af07e7e7 fix(wallet): resolve review issues around persistence, policy ordering, and duplicate wallets 253c7abbe9857cd415348f1d30ec24f66c8c7362 fix(wallet): harden keystore fallback, persist policy/history, wire gateway injection 3fef2fd3ee40bae11553633c0cf5de6526ad48b6 docs: wallet & keystore documentation 7e1a05b475e831c14b7efaee8656a3587081f5fd feat: wallet approval flow, export command, improved create/import UX 53acc4c23854e18b29f4edb555054bb1a9d57630 feat: add wallet_address + wallet_networks tools, config.yaml RPC overrides 182ee2e08e2aac4adb5901d8090a06e1a2a7e6b6 chore: update uv.lock with keystore + wallet dependencies ffefd5771920da6b371d0489a81eb8daafb83d3e feat: add wallet module — manager, policy engine, chain providers, tools, CLI 8fd434037e0fc784254b77d194e05a848217ee1b feat: add encrypted keystore for secret management 02fb7c4aaf94b4c99619596392d3803516f32a2c docs: comprehensive docs audit — fix 12 stale/missing items across 10 pages (#3618) 1e924e99b91a4efedea822f06c7dd40fb0ea5218 refactor: consolidate ~/.hermes directory layout with backward compat (#3610) 614e43d3d95773778b838c751e3aa2b880231395 feat(skills): add garrytan/gstack as default Skills Hub tap (#3605) e4480ff426713f16817fb3cf856361e1c193c6f8 fix(config): accept 'model' key as alias for 'default' in model config (#3603) 9a364f280548fe59a720c6fb3252dd0110247af6 fix: cap percentage displays at 100% in stats, gateway, and memory tool (#3599) 1b2d4f21f321a10e9a23200e841e2e06b4f361a5 feat(cli): show resume-by-title command in exit summary (#3607) 9009169eeba34460fcbb6e6faac7db2ac94292ab fix: recover updater when venv pip is missing (#3608) 098b24184189cfb54ae679101afcaed3cfef1c68 feat(cli): show resume-by-title command in exit summary 0f042f3930129dc6e6b4f235524503508ddcaf0f fix(email): filter automated/noreply senders to prevent reply loops (salvage #3461) (#3606) 33b0512c3651917a7af21e012da5b28063ccc053 fix: remove redundant seen_uids add + trailing whitespace cleanup 7a9e45e560378d6cf13fbcfbc3cb596726d593a1 fix: regenerate uv.lock to match v0.5.0 in pyproject.toml (#3594) a641f20cac76187bc94529c1c5837ed33a7ccb4d fix(gateway): self-heal missing launchd plist on start (#3601) ee066b7be6c2cf646711fdd6845f30ea00cb1910 fix: use placeholder api_key for custom providers without credentials (#3604) a6bc13ce1358ba0f7b5d44206f73d04ec73dcb66 fix(github-auth): check ~/.hermes/.env before ~/.git-credentials for token extraction (#3466) 9cd70192b4e8208fbf13a20b1a323cd6448fa7b2 fix(gateway): filter automated/noreply senders in email adapter f803f66339aac2ec48ccf230facef856bef003c8 fix(terminal): avoid merging heredoc EOF with fence wrapper (#3598) 839d9d74718182d94ff52d44fe66c28a9c3436ae feat(agent): configurable timeouts for auxiliary LLM calls via config.yaml (#3597) 404a0b823e6a94e76df5a68d49d2c9e38f840caa fix: add self-termination guard for pkill/killall targeting hermes/gateway (#3593) dabe3c34cc780455fd89f0ca8f08cb35a06643fe feat(webhook): hermes webhook CLI + skill for event-driven subscriptions (#3578) c0fd13c554baf84a9c80a4c5a5668d25fc63d522 fix: regenerate uv.lock to match v0.5.0 in pyproject.toml 82d6c28bd5701ee157e1eba6153d4a3b5d41e26f fix(skills): cache-aware /skills install and uninstall in TUI (#3586) db04391e9aaa72875a7a24e8d865a6a6fcf280e4 fix(nix): unify directory and file permissions across all three layers dc7d504acafe4c4ca1feadc94f109d182a3c30f3 Remove incorrect docker alternative for signal-cli (#3545) 9e411f7d70bb430d0ba42490dd551d7a2df5f495 fix(update): skip config migration prompts in non-interactive sessions (#3584) 708f187549d5127f94aacf6af839aabe5819094d fix(gateway): exit with failure when all platforms fail with retryable errors (#3592) d7c41f3cef592346ecea47b11c83a966c0248e72 fix(telegram): honor proxy env vars in fallback transport (salvage #3411) (#3591) 6893c3befca7bce2e949959740439c68440cbb89 fix(gateway): inject PATH + VIRTUAL_ENV into launchd plist for macOS service (#3585) 5cdc24c2e2e3245bf235bc6e999496726390f760 docs(slack): add missing Messages Tab setup step (#3590) 2dd286c1624c77ce2bbbb844639e3f410fac81ea fix: write models.dev disk cache atomically (#3588) 924857c3e374b45703663dcb3365993c55c69519 fix: prevent tool name/arg concatenation for Ollama-compatible endpoints (#3582) ba3bbf5b537610b9d8beec3a79b050f54abeb393 fix: add missing mattermost/matrix/dingtalk toolsets + platform consistency tests (salvage #3512) (#3583) d6b4fa2e9f3557e06881d9788e0b143cb1c4eeab fix: strip @botname from commands so /new@TigerNanoBot resolves correctly (#3581) df1bf0a20903c5821ab3cc7feccf3cc80d4483c9 feat(api-server): add basic security headers (#3576) 49a49983e4e2be017c378dbf25ad1ea854fcecf8 feat(api-server): add Access-Control-Max-Age to CORS preflight responses (#3580) e97c0cb578ed6cd7260d37143de8a3a9e718a4c5 fix: replace hardcoded ~/.hermes paths with get_hermes_home() for profile support c0aa06f300e5a38afcea6de79330f76b0d01c934 fix(test): update streaming test to match PR #3566 behavior change (#3574) 32737328910108298c468d1ca8de6b9ec52e1a33 fix(api-server): add CORS headers to streaming SSE responses (#3573) 09ebf8b2526f7d7289cad3dff83aed21ae4bc308 feat(api-server): add /v1/health alias for OpenAI compatibility (#3572) 33c89e52ec3790394928d6be5dc869302028de63 fix(whatsapp): add **kwargs to media sending methods to accept metadata (#3571) 558cc14ad91ec46ae21430cecbef8e7903be57a7 chore: release v0.5.0 (v2026.3.28) (#3568) c2999c05a28a184ce080308dcb7cf352d02e9074 chore: release v0.5.0 (v2026.3.28) 1d0a119368634228b82f74fa62b44f7584e92c7f fix(display): show reasoning before response when tool calls suppress content (#3566) b7b3c8797f682dcc5fba1409a9cb90a7709b6b48 fix(display): show reasoning during streaming even when tool calls suppress content 901494d72892d86d9b036d5794fe3f3dd719df42 feat: make tool-use enforcement configurable via agent.tool_use_enforcement (#3551) d26ee20659d2c835e9fa2be007dc766e6d82e868 docs(discord): fix Public Bot setting for Discord-provided invite link (#3519) 393929831e0214dfe3d19ccb7d73a12d1eb9d728 fix(gateway): preserve transcript on /compress and hygiene compression (salvage #3516) (#3556) be322efdf2a00cb66d6fff91fe8f6b4f5f978ccb fix(matrix): harden e2ee access-token handling (#3562) 8a82379e5439ebff6f6e7b0aa584ffe445d9a22d fix: patch nio mock in e2ee maintenance sync loop test acc6d1a8e79336a9ddd0273aa084aa3602c2ad7f fix(matrix): harden e2ee access-token handling cd2e180efbf000d9a454bbc59474dd906fbbf45c fix(gateway): preserve transcript on /compress and hygiene compression be392926339278b83316b08fbd1e0647c84779bd fix(cli): guard .strip() against None values from YAML config (#3552) df6ce848e9d186da0264e779afafc6fdc23d0635 fix(provider): remove MiniMax /v1→/anthropic auto-correction to allow user override (#3553) 1544638f485106f0c212d260ad24ac8ef103340e fix(gateway): preserve full transcript on /compress instead of overwriting c038ba35bba631b4a280abf0c2bf79682602b0b4 fix(provider): remove MiniMax /v1→/anthropic auto-correction to allow user override 11985485b789ec4451e9841cfa7127d36e604528 feat: make tool-use enforcement configurable via agent.tool_use_enforcement 735ca9dfb20a321f1efd1a28a3f789601ca93711 refactor: replace swe-rex with native Modal SDK for Modal backend (#3538) 455bf2e853a6a9b137e7a2bd594a97c927954a01 feat: activate plugin lifecycle hooks (pre/post_llm_call, session start/end) (#3542) 411e3c1539893b76e8403ea6edf0320b13d05e7d fix(api-server): allow Idempotency-Key in CORS headers (#3530) d313a3b7d7524b7f7d702540b0c2d621e6945850 fix: auto-repair jobs.json with invalid control characters (#3537) 27766a4a86126560c2c813ab53a736138c6239cb fix: auto-repair jobs.json with invalid control characters 80a899a8e2907638531b4f70648898460d547d42 fix: enable fine-grained tool streaming for Claude/OpenRouter + retry SSE errors (#3497) 38eef6754973c966f446b855b47dea608b144e63 fix: enable fine-grained tool streaming for Claude/OpenRouter + retry SSE errors e295a2215acd55f2ee930fc7a4cd2df1c5464234 fix(gateway): include user-local bin paths in systemd unit PATH (#3527) 831e8ba0e5d9c5860917b8a6b81117c778b53a9b feat: tool-use enforcement + strip budget warnings from history (#3528) d4b56d9227312bacd93652d1218e9599591ab43b feat: tool-use enforcement + strip budget warnings from history fd97740ca97c0179c74e636b8106247b33d519b2 fix(gateway): include user-local bin paths in systemd unit PATH 9d4b3e5470fb668ede1a2048f4620ed27477b4fa fix: harden hermes update against diverged history, non-main branches, and gateway edge cases (salvage #3489) (#3492) 6ed9740444999dd97f5cea31f82e68b7ac9b4c63 fix: prevent unbounded growth of _seen_uids in EmailAdapter (#3490) 290c71a707e18f766a372129e9c2826ec9d268cb fix(gateway): scope progress thread fallback to Slack only (salvage #3414) (#3488) 09796b183b50f03bd55da308ec7b677aff985abe fix: alibaba provider default endpoint and model list (#3484) 15cfd2082083099bff7e6d7f61544f802ad06170 fix: cap context pressure percentage at 100% in display (#3480) 03f24c1edd87c81f5ceb511b45f26b27ef637f63 fix: session_search fallback preview on summarization failure (salvage #3413) (#3478) 4a3370583803b4a20df474aee3c31f3579daceb8 feat: GPT tool-use steering + strip budget warnings from history 388fa5293d90508a4c9a5323167747f246296dc0 fix(matrix): add missing matrix entry in PLATFORMS dict (#3473) 83043e9aa8368f29cf9015b2b086fefea7c70388 fix: add timeout to subprocess calls in context_references (#3469) b6b87dedd4acdee8d8dca32062fc45edcb049a69 fix: discover plugins before reading plugin toolsets in tools_config (#3457) 8fdfc4b00c16f89858828e5b9f9f0d6cc2bee010 fix(agent): detect thinking-budget exhaustion on truncation, skip useless retries (#3444) 658692799dbb741567c2e69ab31beb298d203db8 fix: guard aux LLM calls against None content + reasoning fallback + retry (salvage #3389) (#3449) 31f4fd342d4ab071cdfea81dd720ad21654d43c1 fix: discover plugins before reading plugin toolsets in tools_config ab09f6b568a64ded77cb7693e7f0670feeb9d3dd feat: curate HF model picker with OpenRouter analogues (#3440) 4da939a7146e8a787a67ead26dbe4c7976ace713 fix(agent): detect thinking-budget exhaustion on truncation, skip useless retries fa98080b7d68c0bfe66186fcf794ea8eeb3431ff feat: curate HF model picker with OpenRouter analogues e4e04c2005419e2f4ec5e150a308ffc2af7567de fix: make tirith block verdicts approvable instead of hard-blocking (#3428) 6f11ff53ad2bbde9dadbe4a5ac1884ef2578329d fix(anthropic): use model-native output limits instead of hardcoded 16K (#3426) fb46a90098e0fad3cc8e3c44193f96ad3ce9bb91 fix: increase API timeout default from 900s to 1800s for slow-thinking models (#3431) 20c2aeb757371f671641f2d2edbad076ff725e92 fix: increase API timeout default from 900s to 1800s for slow-thinking models fd8c465e423c786297a580634f28bc1a25eef0ad feat: add Hugging Face as a first-class inference provider (#3419) f57ebf52e9bcb63477d0d282c9b5618ad814eb7c fix(api-server): cancel orphaned agent + true interrupt on SSE disconnect (salvage #3399) (#3427) 014ae7a7c69b1378421ca3773283be1f2f2157bf fix: make tirith 'block' verdicts approvable instead of hard-blocking 87995cd9c536c553243fafa0df30b1fd458092e7 pwncollege: add full eval mode with graceful cleanup and richer SDK types 8fd8def544af9c681e81a398b4f8a4b56fa3ad4d update prompts and update SDK w/ types 1d6a92103af18de9546b9899fbd69e545d2208f9 Clean up formatting and improve error handling in pwncollege environment a692859ddb9d51e8a489a5b08348af1657826de3 feat(environments): add pwncollege RL environment with per-task SSH overrides 5127567d5dfc47fba338a2cc27a03fbe21a93a07 perf(ttft): cache skills prompt with shared skill_utils module (salvage #3366) (#3421) cc4514076b8987bb8306a6d075190e447e20cf1f feat(nix): add suffix PATHs during nix build for more agent-friendliness (#3274) 8ecd7aed2c3b2d00048814cc79e6aac60dcaf497 fix: prevent reasoning box from rendering 3x during tool-calling loops (#3405) 499c7346c5c58f060064d8b06ac338bf79756389 fix: prevent reasoning box from rendering 3x during tool-calling loops e0dbbdb2c946c48db595a544580f472daa1cfde2 fix: eliminate 'Event loop is closed' / 'Press ENTER to continue' during idle (#3398) eb2127c1dccc19cc46e8dd6056e3a2d238a4cbef fix(cron): prevent recurring job re-fire on gateway crash/restart loop (#3396) 5a1e2a307ae429f075c2565b3cdc267691769c0c perf(ttft): salvage easy-win startup optimizations from #3346 (#3395) 41d9d0807847b60a5e21dab109180d664c2d5734 fix(telegram): fall back to no thread_id on 'Message thread not found' (#3390) b7bcae49c6395a5bea662842928e5043bd920693 fix: SQLite WAL write-lock contention causing 15-20s TUI freeze (#3385) 564081ca5e42870e90ee95f01fc128c2397a0cfd fix: SQLite WAL write-lock contention causing 15-20s TUI freeze 915df02bbf19bfeb633e40d0b0393ffe3b958275 fix(streaming): stale stream detector race causing spurious RemoteProtocolError 75fcbc44ce89ce8e572b1f2f758edd0492ce23a3 feat(telegram): auto-discover fallback IPs via DoH when api.telegram.org is unreachable (#3376) be416cdfa94e17009b56e5dc292d2a426e57e91c fix: guard config.get() against YAML null values to prevent AttributeError (#3377) b2d9e4dd1fb3dca14039a1596649976f597a8e69 fix: guard config.get() against YAML null values to prevent AttributeError 35b22dab6094cb2be1418e74dc70d2f761db0bcd fix: add telegram.request mock and discovery fixture to remaining test files 2228ac6a8699de95e1626242b83a781f500ccf82 fix: share transport instance and downgrade seed fallback log to info 6f1b7bf08493fd7a9b7819e623153464e2cb9fbd feat(telegram): auto-discover fallback IPs via DoH when api.telegram.org is unreachable ff23d93c3146fcc75ad0f50b5d8976d4596c98e4 feat(container): consolidate first-boot provisioning + Python 3.11 venv b8b1f24fd755ae187a0fbaedf5c9657a2af1ef1e fix: handle addition-only hunks in V4A patch parser (#3325) a2847ea7f0a60cc7cbe3faba6716a2f2d52a7efd fix(gateway): add media download retry to Mattermost, Slack, and base cache (#3323) 58ca875e191eb882c9b9a6c00e35344cc41863d6 feat(gateway): surface session config on /new, /reset, and auto-reset (#3321) 3f95e741a77de69904ea4b600cac8c2acbc8ab8d fix: validate empty user messages to prevent Anthropic API 400 errors (#3322) 03396627a63328ab792aa86723341a0aed77abb1 fix(ci): pin acp <0.9 and update retry-exhaust test (#3320) 66938f8217e7923b0c5ca87d76e4cefd4a1828ac feat(gateway): surface session config on /new, /reset, and auto-reset 8baa045767d80af7a04b0f0ca0f16490c79a64ff fix(ci): pin acp <0.9 and update retry-exhaust test for current behavior 22cfad157b8ec9b4a8ecc0d2657567d7890d7207 fix: gateway token double-counting — use absolute set instead of increment (#3317) 867eefdd9fa7759ad4b6a1a32f86f1876e251964 fix(signal): track SSE keepalive comments as connection activity (#3316) c91416f0161b10e8a2c45b4db32444ef3225886a fix(signal): track SSE keepalive comments as connection activity a8df7f996404f0786a7e6ef0ee6486cefaad7431 fix: gateway token double-counting with cached agents (#3306) 1519c4d477a19bcd426af8b6a70c6cbc6f4edeb4 fix(session): add /resume CLI handler, session log truncation guard, reopen_session API (#3315) 005786c55db89b37e7ed7cf0ebdb3f7a175e41e2 fix(gateway): include per-platform ALLOW_ALL and SIGNAL_GROUP in startup allowlist check (#3313) 2f7e5db456f1b1feb41de613fab4c3e2eeb7ae82 fix(gateway): include per-platform ALLOW_ALL and SIGNAL_GROUP in startup allowlist check ad764d351351ed1cd139e7a371b6956d84eed5f9 fix(auxiliary): catch ImportError from build_anthropic_client in vision auto-detection (#3312) f008ee1019b3533f09e3ae20c72bac31f78b0694 fix(session): preserve reasoning fields in rewrite_transcript (#3311) 60fdb58ce47177db3cb65125ebba831b6bdd2e57 fix(agent): update context compressor limits after fallback activation (#3305) 18d28c63a7959d6f3101c29b5a01ada0952990bc fix: add explicit hermes-api-server toolset for API server platform (#3304) 3c57eaf7442bba1c6d81c8f07c7436e1dd96ac2a fix: YAML boolean handling for tool_progress config (#3300) 2d232c9991151e38ed95400f76035b887e4462e7 feat(cli): configurable busy input mode + fix /queue always working (#3298) 0375b2a0d7204e3df97cffbcdda5f31e96e3c487 fix(gateway): silence background agent terminal output (#3297) 08fa326bb059897bed9bb1fa7b93e9053e45dd6e feat(gateway): deliver background review notifications to user chat (#3293) bde45f5a2adfe16960c2488a3b5cad8c3fff40f1 fix(gateway): retry transient send failures and notify user on exhaustion (#3288) 716e616d28ce108c3358b102296dee738d23be50 fix(tui): status bar duplicates and degrades during long sessions (#3291) 4e5cd76a29e177e8ede6c18cc88cfe2ac9aec0df fix(tui): status bar duplicates and degrades during long sessions bdccdd67a1c3f16aa4d15f700a9615bbc4d141f7 fix: OpenClaw migration overwrites defaults and setup wizard skips imported sections (#3282) 148f46620f52c12b7fea26ef696e96ce91efdb88 fix(matrix): add backoff for SyncError in sync loop (#3280) e95965d76ab145f93430fefc0bb8f00ba9cd26fb Merge branch 'main' into rewbs/tool-use-charge-to-subscription 95dc9aaa75630b4875f1e0dc71698558949f2059 feat: add managed tool gateway and Nous subscription support 3b89a50aad59462c2266d4c51e4f7d8cc35bba01 fix: add explicit hermes-api-server toolset for API server platform 6610c377baef3eab3857e995f82a67ca70046afd fix(telegram): self-reschedule reconnect when start_polling fails (#3268) 05d84a88239a1844a6082d81f86aeabecadcf026 docs: update nixosModules header for tool provisioning 991ca41586af69583583aa1e794d5a9765ade76e feat(container): first-boot apt provisioning for agent tools 5f797c098ffbd6bc7438b0a560c33d1b60ea36f2 refactor: suffix runtimeDeps PATH so apt-installed tools take priority e5d14445efd59ce15f4daf81b4165f5ad6fadef0 fix(security): restrict subagent toolsets to parent's enabled set (#3269) 72250b5f62f421611d2e4939dea3d85cb45b0aca feat: config-gated /verbose command for messaging gateway (#3262) 243ee67529ff58828ea1b4aac764be449472a4e7 fix: store asyncio task references to prevent GC mid-execution (#3267) 3a86328847e479bf2a3012f859ad58d117404110 fix(gateway): add request timeouts to HA, Email, Mattermost, SMS adapters (#3258) db241ae6cef5923ed93cf9568c15e9ac6ce14927 feat(sessions): add --source flag for third-party session isolation (#3255) 41ee207a5ea6cb8a8c1db03547eff16c98bdde3f fix: catch KeyboardInterrupt in exit cleanup handlers (#3257) e9e7fb06835d0f185a54df45cfa3d13741b84514 fix(gateway): track background task references in GatewayRunner (#3254) 76ed15dd4decd88aaa56019ee728a096722a97a1 fix(security): normalize input before dangerous command detection (#3260) 45e1a5037f9f8d6dfc55db4833dc6a99f10b190a fix(gateway): add request timeouts to HA, Email, Mattermost, SMS adapters a8e02c7d49295f1929076b5e4b5bd41b056be348 fix: align Nous Portal model slugs with OpenRouter naming (#3253) b81d49dc450a56791a4ba39401f785eaff573d59 fix(state): SQLite concurrency hardening + session transcript integrity (#3249) 869399e60de6253b64269f3474e963a41287a12e test: add load_transcript source preference tests for #3212 d156ad2ea3c57e87488ac37acf4fd9a0e0da6132 fix(session): prefer longer source in load_transcript to prevent legacy truncation 8266ce661f385ceaa6c28fd39b8b6685d2992ac1 fix(state): release lock between context queries in search_messages 6fbb5e52e0921495debd5209d2edef488a32f061 fix(session-db): survive CLI/gateway concurrent write contention 3a7907b278169110d4fe16e1d50cb316ad5944e0 fix(security): prevent zip-slip path traversal in self-update (#3250) b7b3294c4a925d49e094808c914020d4fc11b557 fix(skills): preserve trust for skills-sh identifiers + reduce resolution churn (#3251) 62f8aa9b03ef2db41f1dddf356e8142a26553658 fix: MCP toolset resolution for runtime and config (#3252) 2c719f0701b9c41f6f0ecacdc0728311a3c54e9c fix(auth): migrate OAuth token refresh to platform.claude.com with fallback (#3246) c6fe75e99bc6ade7780501b46c85050195a0033b fix(gateway): fingerprint full auth token in agent cache signature (#3247) 36af1f3baf3f2b089ca3bd5c3b9405bdaf9689d6 feat(telegram): Private Chat Topics with functional skill binding (#2598) 3cd61bf7bfa503fd9c734240ad8fa6213cdc648c docs: add Private Chat Topics section to Telegram docs 43af094ae34db9bab09162b18c8a368ad4cc7f17 fix(agent): include tool tokens in preflight estimate, guard context probe persistence (#3164) 3439c2958e3ff40bb8bf91789efa1fd6bc0a77ba fix(agent): include tool tokens in preflight estimate, guard context probe persistence 99b134389268dcc495cb796c95264761ee279392 feat: make DM topic skill binding functional 9989e579da217f0c1d75c132d3a752ddb9973bea fix: add request timeouts to send_message_tool HTTP calls (#3162) 4a56e2cd88c328c9258bb24274cd1d1f1086c386 fix(display): show tool progress for substantive tools, not just "preparing" 602dd4f2fa52c07d104b61e9d5f035542477a36b feat(telegram): Private Chat Topics support (Bot API 9.4) 26bfdc22b4d8f110308027c68150049da17c8434 feat: add godmode jailbreaking skill + docs (#3157) 0426bb745f0c46468ce9b9b06258428632615c9c fix: reset default SOUL.md to baseline identity text (#3159) f65ccc2bba5c9033ca84d3e134fa4f732253f695 fix: reset default SOUL.md to baseline identity text 51fb5065c1594ddb4e33cb138e7d0728c0e1741d feat: add godmode jailbreaking skill + docs c511e087e0481c72a849d2e745a247ab516ef3e7 fix(agent): always prefer streaming for API calls to prevent hung subagents (#3120) c07c17f5f2caefb357a9c947d2b52c95984f0fb4 feat(agent): surface all retry/fallback/compression lifecycle events (#3153) 7acf16a6f02544d343479fd94c52a24b891b0ed8 feat(agent): surface all retry/fallback/compression lifecycle events cbf195e8066c14ad09e35ce458e888108c5a56f8 chore: fix 154 f-strings, simplify getattr/URL patterns, remove dead code (#3119) 66a636f48aa3d2a31f45e4f03ce619d7b85299c8 chore: fix 154 f-strings, simplify getattr/URL patterns, remove dead code 08d3be04124beb0dd99c686e043d7bdd549cfac0 fix: graceful return on max retries instead of crashing thread 156b50358b14d170985bd66b02b57eeea030442d fix(reasoning): skip duplicate callback for -extracted reasoning during streaming (#3116) 59575d6a917e51e11ccf4d632e1bfe6e31250249 fix(gateway): recover from hung agents — /stop force-unlocks session (#3104) f46542b6c6fb176275d028161b4b11e64ac3672f fix(cli): read root-level provider and base_url from config.yaml into model config (#3112) ebfbfa5a67fee2081d2e677cd69b91b6de092950 fix(gateway): recover from hung agents — /stop force-unlocks session 5b29ff50f822fcd54e40dd7bc1b3ee7da0f4e7d3 fix(logging): extract useful info from HTML error pages, dump debug on max retries 72583117103973a55e3e269cb250d92b2fcb1d12 fix: stop recursive AGENTS.md walk, load top-level only (#3110) a03ce70aa5542fd37c4830a4e06b1aa2cdb179b5 fix: stop recursive AGENTS.md walk, load top-level only 910ec7eb38fb2c2f08604f6a5ec33ba7548e749a chore: remove unused Hermes-native PKCE OAuth flow (#3107) 3fa65ebab0bb68a0d0d3109650657d9480f5fb27 chore: remove unused Hermes-native PKCE OAuth flow 4b45f65858321483567b978fe57a4734d580e6b6 fix: update api_key in _try_activate_fallback for subagent auth (#3103) b374f52063788311629c02dcf4c9f2d98a3c2d42 fix(session): clear compressor summary and turn counter on /clear and /new (#3102) bd43a43f0761c78ee16ea92ab45e76d1a5d892cb fix(cli): handle EOFError in sessions delete/prune confirmation prompts (#3101) 432ba3b7097d86231774f0dbfc5a17db750d08a8 fix: use sys.executable for pip in update commands to fix PEP 668 (#3099) 712cebc40f2e156036e55ca313f12fda82e35bff fix(logging): show HTTP status code and 400 body in API error output (#3096) 45f57c2012b05879339d3a79433b1ca2ed94ff5a feat(models): add glm-5-turbo to zai provider model list (#3095) 41081d718c309acb10b018438fe905f6edd3697f fix(cli): prevent update crash in non-TTY environments (#3094) 281100e2dfbda46170361d4451d9ffe603c198ea fix(agent): prevent AsyncOpenAI/httpx cross-loop deadlock in gateway mode (#2701) 0d7f7396757d2df31bf32e6dcd094f6508ae2bd1 fix(setup): use explicit key mapping for returning-user menu dispatch instead of positional index (#3083) 9783c9d5c1f29cd5024b44c269a45d5902f34910 refactor: remove /model slash command from CLI and gateway (#3080) 0cfc1f88a34dc9abe0f6392f1285dbaf8eef4503 fix: add MCP tool name collision protection (#3077) 3bc953a666aa1a6039eca66d8731f0db8dd22504 fix(security): bump dependencies to fix CVEs + regenerate uv.lock (#3073) 52a83ebf3a4814e40a406c2ce06602c7b8716e2a chore: regenerate uv.lock for CVE version bumps bd6b138e85261ecdc565359815e90caa26fc3384 fix: clean up HTML error messages in CLI display (#3069) b8cc40987c7ed2cba9bf0932dc6435127001ade4 fix(security): bump dependencies to fix 7 CVEs 9792bde31a91af3b3642918affb6a9dbbc66a2be fix(agent): count compression restarts toward retry limit (#3070) 6836a7ec9f3fde13cce778a46ff581e95d4a076b fix: clean up HTML error messages in CLI display 9d1e13019e3a858e5626ba996e0c3eba6e4e077e fix(cli): prevent TypeError on startup when base_url is None (#3068) 37cabc47d31509b3a8eab005f4ca4ba67f1a9641 test(skills): add regression tests for null metadata frontmatter f7f30aaab94cc0c791a61849eb1a26633de129c9 fix(streaming): detect and kill stale SSE connections d218cf91180f2418777a8985073ebb50f8ae8143 fix(skills): handle null metadata in skill frontmatter 841401f588109de39fd4be11929986a2d823d3b9 feat(cli): preserve user input on multiline paste (#3065) 77bcaba2d7e98fc7e28dcb6998086006d72fd667 refactor: consolidate get_hermes_home() and parse_reasoning_effort() (#3062) e0cfc089daeafa723c337457172ef3fa0dd28981 fix(gateway/slack): send progress messages to correct thread (#3063) 7126524e8d0b8108693176bb58d2b31c76ec3cd3 remove config drift check for nix (#3061) c899f8a71bdcd041998a4c3d8fc6dbff7a7e519d remove config drift check for nix f83c27e26f22e34b4b6337bb45608caf5a02e9c6 feat(skills): add Docker management skill to optional-skills (#3060) ab548a9b5e4af6914f6318f6cc07b8cdf2ff3ed1 fix(security): add SSRF protection to browser_navigate (#3058) 73e66eb3c04185dfeeca6413e2b0800f2e736349 fix(gateway): thread-safe SessionStore — protect _entries with threading.Lock (#3052) 14cf2d85cafec7a92184313c4490fb3200ab0af5 fix(display): guard isatty() against closed streams via _is_tty property (#3056) 8bb1d15da4c0a70c40179dffd375983a88ea857e chore: remove ~100 unused imports across 55 files (#3016) 861624d4e9277066b11a8727d3d9565b89bcdd68 fix(cli): refresh TUI before background task output to prevent status bar overlap (#3048) e4033b2baf681946bc36b3c02546866a28c7aae9 fix(cli): catch KeyboardInterrupt during flush_memories on exit (#3025) 94e3d9adbf2520bd8ea79bcc333f481918114d04 fix(agent): restore safe non-streaming fallback after stream failures (#3020) 0dcd6ab2f25e1b3daee989df3f0acb01bda67b9e fix: status bar shows 26K instead of 260K for token counts with trailing zeros (#3024) b6461903fffb69216b3257a0c50d98870a11d085 feat: nix flake — uv2nix build, NixOS module, persistent container mode (#20) 8f6ef042c110a696e5fb107ead4ea329c9671f9b fix(cli): buffer reasoning preview chunks and fix duplicate display (#3013) 099dfca6dbb2ab26380340a274ab42728b9fa756 fix: GLM reasoning-only and max-length handling (#3010) 68ab37e891d3dc89fb4410a01876833af66f448a fix(delegate): give subagents independent iteration budgets (#3004) 65dace1b1a06280f3bf4c36fa8b7fa52bf19b5c0 fix(discord): stop phantom typing indicator after agent turn completes (#3003) 22a60ab47435c893728b5dca841a4cfffa59d837 fix(nix): preserve container writable layer across nixos-rebuild 650b400c98085b66a9905a3763c22dbac32053e7 fix(cron): mark session as ended after job completes (#2998) 61949f0af794090b957597492f7c7d06cf4ac5d3 Fix (#2997) 52c5e491f58f0a685002273206b5f8c294073c77 fix(session): surface silent SessionDB failures that cause session data loss (#2999) f665351740fc23308d8f9705092c37bdd14376fb fix(shell): exponential backoff for persistent shell polling (#2996) fba73a60e36a84e94736d309d6777bf2247a23eb fix(skills): use Git Trees API to prevent silent subdirectory loss during install (#2995) 114e636b7dfc202a856f61d90247a453dadcb5cc fix(display): suppress KawaiiSpinner animation under patch_stdout (#2994) 20cc1731f423a489e50317766c98b3edbffe4041 perf(prompt_builder): avoid redundant file re-read for skill conditions (#2992) b2a6b012fe164ce97862849bcd346ad9ff278e4c fix(api_server): streaming breaks when agent makes tool calls (#2985) 42fec19151d9ffdfee82724f6f0c30f445a6f945 feat: persist reasoning across gateway session turns (schema v6) (#2974) 5dbe2d9d739e2cc3463e715ea17ed38a5ab5e8e8 fix: skills-sh install fails for deeply nested repo structures (#2980) 9a19cd6cf3a7c7cafe794d92c884bb46a1eedc39 feat: persist reasoning across gateway session turns (schema v6) 5310308b3ac67ee796b10578b071ded09338006b fix: skills-sh install fails for deeply nested repo structures c6f4515f735b0f1da9134047cb6266a8fb228e5c fix(whatsapp): download documents, audio, and video media from messages (#2978) 5e4fa297eb9b4e828acafd895116073e43d36fea fix(whatsapp): download documents, audio, and video media from messages 4250064e9ca51b530dad9ad7668b68d1a9637b80 fix(run_agent): enhance streaming error handling and retry logic a50f2bb909bcbb272875a4258e2c4c79f4f3ad32 fix(run_agent): reduce default stream read timeout for chat completions 18662e8881de8c23f9e635dc18b2c54b39c3ad1b fix(run_agent): improve timeout handling for chat completions 36292c90bfb8693ba561400d7070236089cd7c85 fix(run_agent): ensure _fire_first_delta() is called for tool generation events fd292e676b4741e7afa85ceb132a8b639c3d7fcb fix: skip KawaiiSpinner when TUI handles tool progress (#2973) a18884a3d0a8b93781e3aa8fa8ed0ab9be101b8e fix(run_agent): enhance streaming error handling and retry logic 29d3f1216b0159a6b6ad2d8a9db3574521f97026 fix(run_agent): reduce default stream read timeout for chat completions e102222828fdafbcc3b3ca42f8f5c66ffa76341e fix: skip KawaiiSpinner when TUI handles tool progress fe37a53b75faec40dcf80b91627dc24485158a87 fix(run_agent): improve timeout handling for chat completions b6ef1deafdea1f48b2d10aaa5a892adefd544ea0 fix(run_agent): ensure _fire_first_delta() is called for tool generation events 06ef875477d67163c17532f05b928723e10bae64 fix(nix): skip flake check and build on macOS CI 3f35918988d466119fb7ff73c61aca955bd88b64 fix(nix): skip checks on aarch64-darwin (onnxruntime wheel missing) bc3686ef052e3bdb52aa68cb1bc8cbcffb06a7df fix(nix): add compression.protect_last_n and target_ratio to config-keys.json 08c1fea2964a106498a624c6b82fa266be3bf810 docs: remove docs/nixos-setup.md, consolidate into website docs ca38a5163356b3255d6d2f4911b2efadc2511918 docs: add Nix & NixOS setup guide to docs site e9dd5685da66549ab849c8dea1c4c8c2b56a9021 feat(nix): persistent /home/hermes and MESSAGING_CWD in container mode db3970211077a1c0202a1639ad1cf2d43fadff4a fix group and user creation in container mode 6f46c5596d905e182eba4d825eaf8fa78f939531 feat(nix): container entrypoint with privilege drop and sudo provisioning 211bf795cf2c645e78e1e01aa9dd2781cb05f6f4 fix reading .env. instead have container user a common mounted .env file 76135a8222c7b3499df30703bdbb2ff7b2024802 Update MCP server package name; bundled skills support 361107409699aca64d1903e1621528d8c36148c1 feat(nix): add CI workflow and enhanced build checks - GitHub Actions workflow for nix flake check + build on linux/macOS - Entry point sync check to catch pyproject.toml drift - Expanded managed-guard check to cover config edit - Wrap hermes-acp binary in Nix package - Fix Path type mismatch in is_managed() 8c475752be18676e42c5fff54cde2f847403ce69 Update config.py b51a5b201e4b7cc3725ad87d84fc3ffd47357078 feat(nix): NixOS module with persistent container mode, managed guards, checks 1e8fae283fd2808e6cf8df3de16c944b7d4f08c5 fixed nix run, updated docs for setup 63b583aa2f277736d5c4de471df5ac49006a09b6 feat: nix flake, uv2nix build, dev shell and home manager 0f3c191ef10af3fa8108059a4a8b2d8ee5aab2c4 fix(cli): enhance real-time reasoning output by forcing flush of long partial lines 7cdf4efe053e99b4d35286bc583ed722a0873e12 fix(skills): agent-created skills were incorrectly treated as untrusted community content adee8d1b5ff091e7532c03c23b1a68c8b5fde314 fix: browser_vision ignores auxiliary.vision.timeout config (#2901) f5b84dddfd8b79e4649d5435d1f4e442045d0ae6 fix(compression): restore sane defaults and cap summary at 12K tokens 4549a2f51ac2b28ef6c7429640d85f0f6914c126 docs: clarify two-mode behavior in session_search schema description 466720c2f3977c119e1cd227d1f1fcc096d8d970 feat(session_search): add recent sessions mode when query is omitted e5691eed38716bce6d55fa83e62d92e3c327c437 feat(gateway): configurable Telegram reply threading mode (#2907) 06a05a996edb35d38971d5c886bb062f5932276e refactor: remove /model slash command from CLI and gateway d8f8e7cc7f5d9b58bfe80c61fb814c58d85397a5 feat(gateway): configurable Telegram reply threading mode ab4ba8163abbd0e81515c7c3a61f50eabdec1dc3 feat(migration): comprehensive OpenClaw migration v2 — 17 new modules, terminal recap (#2906) 23e9af7337069183e8123a0795c7c9c722845a57 fix(test): add hermes_config_mod to known false-positives in skills guard test 347d40a33f150a90255e2b76d3b1fd6eaf29573f fix(test): allowlist python_os_environ as known false-positive in skills guard test a65bf2f99fdbe5d5bd8738f6bb89394e4bda963e feat(migration): add terminal recap with visual summary 71a2754d5368bf6a732de4bada5cf51d94c2e921 feat(migration): comprehensive OpenClaw -> Hermes migration v2 80cc27eb9d3b180a1d5f54848906018365a062ea feat(api-server): Idempotency-Key support, body size limit, OpenAI error envelope (#2903) 1b24a226ead7a1104ecfa5587cf1a20442163bda fix(skills): agent-created skills were incorrectly treated as untrusted community content 9b32f846a85ae58eff607b5d8bb6a4abd5db61f1 fix: browser_vision ignores auxiliary.vision.timeout config (#2901) 7ca22ea11bf814f2c74f12792356584b95b6a900 fix(compression): restore sane defaults and cap summary at 12K tokens ef47531617aaf639728dc50b49f5eecbe4447536 docs: unify hooks documentation — add plugin hooks to hooks page, add session:end event b36fe9282a25b859286f434bc9872cbb8ac21447 feat(session_search): add recent sessions mode when query is omitted (#2533) fccd7a2ab4d3b2169c04af774cfc2cb69be650c8 docs: unify hooks documentation — add plugin hooks to hooks page, add session:end event 1e9ff53a740299bb61ea322a6f629302d3ee5eaf docs: clarify two-mode behavior in session_search schema description 27c023e07119d3a705f51353ee7c6f0c9a2173cb feat(config): expose compression target_ratio, protect_last_n, and threshold in DEFAULT_CONFIG 9231a335d4bb3da55e7dab4ca49d2de719763735 fix(compression): replace dead summary_target_tokens with ratio-based scaling (#2554) 7efaa5968d665a83fe377c7c0e7b13a422a710d2 Merge pull request #2891 from NousResearch/hermes/hermes-gateway-context 8ee4f3281990dd78667cd1ae6d68fbd310742884 fix(gateway): use TERMINAL_CWD for context file discovery, not process cwd 689344430c88471a59b93fd613aa5030abd90019 chore: gitignore orphaned mini-swe-agent directory 618f15dda9a82c7061a1a4d60083e0b0d3973b4f fix: reorder setup wizard providers — OpenRouter first 481915587e60becaac7ab25bf4963348a882d1d1 fix: update context pressure warnings and token estimates after compaction 0b993c1e0735c45d2e716fd6654d8b473deca687 docs: quote pip install extras to fix zsh glob errors (#2815) 971833496271fe2260076655bd577f049aa4490c docs: fix api-server response storage — SQLite, not in-memory (#2819) 9ed98debf8b37f80f5947d3256634a5fc9f8b7a1 docs: fix api-server response storage description — SQLite, not in-memory ebcb81b6490c37c5f9573f243eec55a0ab4ab451 docs: document 9 previously undocumented features ac5b8a478acba647d6c8a7e6630f179ae2684c03 ci: add supply chain audit workflow for PR scanning (#2816) 27c37fdcd8e3ff2f69ad5148700eee1915bfb0f2 ci: add supply chain audit workflow for PR scanning 4788a45faed130cf06b3ef70ca177de5ae075079 docs: quote pip install extras to fix zsh glob errors 22eb259ff4a773f1352ac129e4cd6f971be8b431 docs: document 9 previously undocumented features 624e4a8e7a221e499c3619de9c5abbc59826895b chore: regenerate uv.lock with hashes, use lockfile in setup (#2812) 177e43259f2827e9a0a22726597abd6392f07ab3 refactor: update mini_swe_runner to use Hermes built-in backends c9b76057d417bacefb28e202e07af4c160bd3abc chore: pin all dependency version ranges (supply chain hardening) (#2810) 745859babb7b691da976c84e8786d8eeed3cb129 feat: env var passthrough for skills and user config (#2807) ad1bf16f2808fa95f0e8253f3311f6c63e9d5b79 chore: remove all remaining mini-swe-agent references e2c81c6e2f6449051f7f73d613d46db7f12baf67 docs: add missing skills, CLI commands, and messaging env vars 677b11d84c8bd03c0ede39ba4bcb56be41114817 fix: reject relative cwd paths for container terminal backends ee3f3e756ddeeef5f2f8011367e84f02b1db5a08 docs: fix stale and incorrect documentation across 18 files 02b38b93cba9237da77619db5ea9db481648a4b9 refactor: remove mini-swe-agent dependency — inline Docker/Modal backends (#2804) d999d838bb578db3493765f9a698ee91da01484b refactor: remove mini-swe-agent dependency — inline Docker/Modal backends 2233f764af2cbe215d2a4109b15a3c9d34c70854 fix(tools): handle 402 insufficient credits error in vision tool (#2802) 98b5570961cd865819c46a6e80360826a646ab27 fix: make browser command timeout configurable via config.yaml (#2801) 773d3bb4dfe6e594986db8fa0208446b93cb8af8 docs: update all docs for /model command overhaul and custom provider support 8ba29b261f46cf9fb7ed9aee6c544faa1462aa58 docs: update all docs for /model command overhaul and custom provider support a312ee7b4c099201bae53176fc2a2f351522eb2b fix(agent): ensure first delta is fired during reasoning updates 2e524272b1a2c254efbb4444ff15b172a2282e1a refactor(model): extract shared switch_model() from CLI and gateway handlers ce39f9cc442e9c0588fcd59a717bfbfdd8f1f663 fix(gateway): detect virtualenv path instead of hardcoding venv/ (#2797) 18cbd18fa98fe53fe7866ae823b2998c1ef2bd98 fix: remove litellm/typer/platformdirs from hermes-agent deps (supply chain compromise) (#2796) b641ee88f4982cfc153f183d19a6b6a163810ae6 feat(model): /model command overhaul — Phases 2, 3, 5 2f1c4fb01f4260d6a2b14330418ad705fb1e11b6 fix(auth): preserve 'custom' provider instead of silently remapping to 'openrouter' 4313b8aff6fd76fb834fb8adcd6edffa4490cccf fix(cli): ensure single closure of streaming boxes during tool generation 87e2626cf6d490f03f48bf44d6d8c324bed56153 feat(cli, agent): add tool generation callback for streaming updates 1345e933930656da1512abdefa9694e65536b017 fix: add macOS Homebrew paths to browser and terminal PATH resolution 9381272cfc5b95fdc9550277724705efd4b5db4e fix: add macOS Homebrew paths to browser and terminal PATH resolution 6e97a3b338eb9c284c7bb4a2eff1a9b69a6f0c9f docs: revise v0.4.0 changelog — fix feature attribution, reorder sections 8416bc2142ad7494b3d72b055cd5a86a80472fe4 chore: release v0.4.0 (v2026.3.23) 48b5bc60386360f7b234407fab2294216bb453c4 fix(gateway): prevent stale memory overwrites by flush agent (#2670) bc5a67dbf2bbcf66ce4b1a35a7528d114dc2842e fix(gateway): prevent stale memory overwrites by flush agent (#2670) 4ff73fb32c6cd259e3a9b964a01db88a1a195958 feat(config): support ${ENV_VAR} substitution in config.yaml (#2684) 73a88a02fe4d8947936da34b3bb88ba7a36f8281 fix(security): prevent shell injection in _expand_path via ~user path suffix (#2047) 18e06bb7187aaebfd77853b442fe26b3f0e2a8fd fix: extend env var expansion to CLI and gateway config loaders 1508f9e9cfd8f3ae2692bda5fd638b6f4871bccb fix(security): prevent shell injection in _expand_path via ~user path suffix f9c2565ab4b89324ff09f626c043fb25ca019a67 fix(config): log warning instead of silently swallowing config.yaml errors (#2683) 18bc2402b6fc56c126d1e0ab7914ca51832f0e08 feat(config): support ${ENV_VAR} substitution in config.yaml 53ce061d5fee5509bad2009ade6cb306934bab30 fix(config): log warning instead of silently swallowing config.yaml errors ad5f973a8dbbacfc5f81234b5e1ade8678330d36 fix(vision): make SSRF redirect guard async for httpx.AsyncClient 0791efe2c340370e2bd734e12cf94221f7d3ec5b fix(security): add SSRF protection to vision_tools and web_tools (hardened) 934fbe3c06174d5b71b02c48c9f099e83c3f1e8e fix: strip ANSI at the source — clean terminal output before it reaches the model 6302e56e7cf1c230be1c9fb0940ceb7d390d6352 fix(gateway): add all missing platform allowlist env vars to startup warning check (#2628) fa3a9d609d027737fd7b0ff6b2ed81f39ac3dd34 fix: prevent background review agents from creating ghost session files 85638f9c09f651ab87ceb70099533e082fb33506 fix: strip ANSI at the source — clean terminal output before it reaches the model 868b3c07e3555c5483741836c7da912e5e41ef01 fix: platform default toolsets silently override tool deselection in hermes tools (#2624) 2d22eb36027351b445891854b35e8d39eaa50fe0 fix(gateway): add all missing platform allowlist env vars to startup check b52672c3da035cb40de51cf64b8f568740d39acd fix: platform default toolsets silently override tool deselection in hermes tools 7768a3e14d9035f6a67ae889306ec953469ba1b7 fix(gateway): added MATRIX_ALLOWED_USERS to list of env vars checked by gateway 9d6148316c5650c09d67fc7b06d9a8fda03c50bf fix: media delivery fails for file paths containing spaces (#2621) 306beab018a6e36de326d645d4230dca00c04549 fix: media delivery fails for file paths containing spaces 7da082245645315a8fe30bb0de07c7790e6c0375 fix(approval): honor bare YAML approvals.mode: off (#2620) 1946016255d6fd6899621115c89e63915e437851 fix(approval): honor bare YAML approvals.mode: off d35df0db718bf0902568d2ff326647ef2e4ee8fd fix(discord): ignore system messages in on_message handler (#2618) 93dc5dee6fc2469e51fa1bbc8f5f5d7d51115160 fix: prevent agents from starting gateway outside systemd management (#2617) d33f2a6bcb033667897c7d04955846ee37206c83 fix: prevent agents from starting gateway outside systemd management 2d8fad8230d1535d7a0e76c11adee7030f3ebaf3 fix(context): restrict @ references to safe workspace paths (#2601) ca2958ff98fd5a9b76d8586cbad0daa7a95a3ccf fix: normalize repeat<=0 to None to prevent cron jobs deleting after first run (#2612) f60ebc7bf2d9958c5a9ef28db58c93d20ef58907 fix: move activated skills line below welcome text b072737193d8d71e7b713dc558e571024b8cbfda fix: expand tilde (~) in vision_analyze local file paths (#2585) 3b509da571355347a08d89b3d7b5b26ce7ca0166 feat: auto-reconnect failed gateway platforms with exponential backoff (#2584) fe8f32b66317b2cba841d88462e0d93c7b63509c fix: expand tilde (~) in vision_analyze local file paths e4a2765153fcfed821c8c0c669d97989f3314e9d feat: auto-reconnect failed gateway platforms with exponential backoff 5ddb6a191fe37ae71cf9cf573cd28080b72fcb81 Merge pull request #2556 from NousResearch/hermes/hermes-fdcb4c4a 1b5fb36c9d5b6f88a285ce76faea4d808e92e472 fix(cli): allow custom/local endpoints without API key 942f6eac94962f32410bfd7cfc1f75becc8000e9 fix(run_agent): ensure proper cleanup of OpenAI client in background review 2b3c1d81f042299770ddc0f21e8c47ad6f63cba2 Merge pull request #2555 from NousResearch/hermes/hermes-fdcb4c4a 1f21ef7488002b9cf826a1885b15d8254234ca5c fix(cli): prevent 'Press ENTER to continue...' on exit b799bca7a3b3418ca6e31e6c1eed0c844cd05982 refactor(gateway): remove broken 1.4x hygiene multiplier entirely 58f1fe5aee34964f0df32b573b0718581066dff3 fix(messaging): resolve explicit delivery labels consistently (#1945) b2b4a9ee7ddd6b40ea8fb16e695952cc16db2b5d fix(gateway): hygiene compression ignores config context_length and 1.4x exceeds model limit ed805f57ffba09adedb3b53acdc12672e0a63e08 fix(mcp-oauth): port mismatch, path traversal, and shared handler state (salvage #2521) (#2552) 804b961c80b58b36621f4afb52fb7ff8ec8ff128 test: add tests for MCP OAuth path traversal, handler isolation, and port sharing ef6455238a6a383c3004e3703193e9796e38da85 fix(mcp-oauth): port mismatch, path traversal, and shared state in OAuth flow e93b539a8f658f2dbc9b16e219ab09a418e1866e feat(session_search): add recent sessions mode when query is omitted fa6f0695777d3d66cbdf16d291410b69882630b5 fix(file_tools): strip ANSI escape codes from write_file and patch content (#2532) cd2280d1a3f36c990600ad5194e1a87b8fbfb6d5 feat(gateway): notify users when session auto-resets (#2519) 5e5ad634a1df2b6ac417e5d2f1f8e4c5798cb987 fix(matrix): duplicate messages, image caching for vision support (#2520) 55a27a3fb886e38f4d6800b3c2e370696b1376df Merge pull request #2517 from NousResearch/hermes/hermes-31d7db3b 2bd8e5cb23da48722a13856660610e0ca69279fc fix(telegram): auto-reconnect polling after network interruption 8587cddd6cff28aec535875e6d23655d014e9d0c chore: remove unused imports, dead code, and stale comments (#2509) 3e5ca0bc13cfaf6422fdae96ed85ada22e2e3dac fix(gateway): clear stale runtime error fields after platform recovery bfe4baa6ed1161cac05daa9cd066d27113c71305 chore: remove unused imports, dead code, and stale comments 72a6d7dffe69379ace5a8b37fb12b8297a14e8ed fix(model_metadata): skip endpoint probe for known providers (Copilot context bug) (#2507) afe2f0abe19940aff75f6ab31d4f74ebed34f586 feat(discord): add document caching and text-file injection (#2503) 09fd007c6e1a5ee1a2158eba9bb68ba701bf13f7 Merge pull request #2482 from NousResearch/hermes/hermes-5d6932ba 24cf2a7954251974e0db7680de175eb8feec549d Merge pull request #2488 from NousResearch/hermes/hermes-31d7db3b be3eb62047308bf79ea26092f571c9958be39075 fix(tests): resolve all consistently failing tests 9c32fed18408498ca3586c8602cfc731095c4b38 feat(cli): Claude Code-style @ context completions 6435d69a6dcde647ca4942f336b87ba44f071f70 fix: make vision_analyze timeout configurable via config.yaml (#2480) a2276177a3d5aeacb51453bdf97c2380f5fdcf02 Merge pull request #2475 from NousResearch/hermes/hermes-31d7db3b ebd0291ef243162be1a999a1345bf259cbc78203 docs(honcho): add self-hosted / Docker configuration section 0510ee056d4d3f344939ec2c2238cdda32f9952b chore: add minimax-m2.7 to model catalogs (#2474) 44b572a9e012d13581bce15a74d877f8a93d121c fix: defer streaming iteration linebreak to prevent blank line stacking (#2473) f9c2ad48c29168a168a1e5895afe8a34a0454078 fix: defer streaming iteration linebreak to prevent blank line stacking c275aa4732be6c6c566f3973fc1faf5468e581fc Merge pull request #2465 from NousResearch/hermes/hermes-31d7db3b ff071fc74c535ce99c8194d306c9f650fe7dcdae fix(gateway): process /queue'd messages after agent completion (#2469) 8d528e00458ba313ad3ebde1e302b2694bc11a8b fix(api_server): persist ResponseStore to SQLite across restarts (#2472) fd32e3d6e8aa571eb76bd613fd9546cdd875db3f revert: remove trailing empty assistant message stripping (#2471) 34be3f8be6de135468d476f5114c86444c5701ad revert: remove trailing empty assistant message stripping 3037450c774dcfdf61fca41ec5a51fc408b8c98f Merge pull request #2468 from NousResearch/hermes/hermes-5d6932ba b7091f93b19b03da31439aef23823a6b5984a01a feat(cli): MCP server management CLI + OAuth 2.1 PKCE auth ab3cbfc99d09d9fb5585f86042edc64977691b30 feat(discord): persistent typing indicator for DMs 26030266d2e19e82b84e6a50f021a681538231bb docs: Gemini OAuth provider implementation plan (#2467) edda0e324b749fd3f7d94ed27b3ec07c27f276e5 fix: batch of 5 small contributor fixes (#2466) 5407d12bc61f18e2b5cd1988315448ad3ea71086 fix(agent): strip trailing empty assistant messages before API calls to prevent prefill rejection 2de42ba6901240eaefc256798db700866a7739ae fix(state): add missing thread lock to session_count() and message_count() f3301a31d52253e76bc643c7197490f4857e3c40 fix(email): guard against IndexError when IMAP search returns empty list e6a708aa04805a118acc7b260dc042f9a416755a fix(io): catch ValueError in _SafeWriter for closed file handles (#2428) e80489135ba8989a2c7409005fdebdae5d770c67 fix: improve error message when PortAudio system library is missing a53db44d40f6863048c9576fdbad1966b612f74b fix(compression): remove hardcoded gemini-3-flash-preview as default summary model (#2464) 0698ddb49618646c6a576fe7d8e15d8503604c5a fix(compression): remove hardcoded gemini-3-flash-preview as default summary model 0962cbb2e57195b1371f385b6381d8afa2333903 fix: /stop command crash + UnboundLocalError in streaming media delivery (#2463) f69c47d9aee6b9b70c3938d1811637a24c257201 fix: /stop command crash + UnboundLocalError in streaming media delivery 027fc1a85a7fd90086b297ea5c63f4157eb2a6dc fix: replace production print() calls with logger in rl_training_tool (salvage #1981) (#2462) f84230527cdffc9523331f3b10e6db7d3da20a63 docs(skill): add split, merge, search examples to ocr-and-documents skill (#2461) 0e64a48743f0dabe270dd3882087a4244e8d918d Merge pull request #2460 from NousResearch/hermes/hermes-5d6932ba ffa8b562e9c198dc5cac88b06b36f1ad1615889f fix(discord): properly route slash event handling in threads 56b010415404a7864243a5d0178617e2676e68c8 fix: respect DashScope v1 runtime mode for alibaba (#2459) c0c13e4ed4fa12fadef01bb41915ad944c0a679e fix(api-server): harden jobs API — input limits, field whitelist, startup check, tests (#2456) 89befcaf33965e4e45c1a20f1941e20c448cbaeb fix(cron): support Telegram topic delivery via platform:chat_id:thread_id format (#2455) 0f1c9701799c64de6e83df4a31993c21ce41ffed fix(api-server): harden jobs API — input limits, field whitelist, startup check, tests 57d3ac0c0bd0ae59515fbdb2f2039d1b9b97502f Merge pull request #2452 from NousResearch/hermes/hermes-5d6932ba a9f9c60efd6f25aea63120482637059bdd8a1bd6 fix(deps): add dingtalk-stream to optional dependencies e109a8b50255efe47c821a722404995b62940268 fix(security): block untrusted browser access to api server (#2451) b81926def6e3458374b45805f13a38ca1727a5c7 feat(api-server): add /api/jobs endpoints for cron job management (#2450) 8cb7864110faebc9370d58df9710a205289cf03f fix: resolve garbled ANSI escape codes in status printouts (#2262) (#2448) 7cd9f9ed48b022efc4875666f4b80efff566b2eb feat(api-server): add /api/jobs endpoints for cron job management 2c2334d4db3a7632a7da172282c0f9e68699670c Merge pull request #2449 from NousResearch/hermes/hermes-31d7db3b 21ffadc2a614804f7ee152b49501e273a849e1d1 fix: dynamic grace window for missed cron job catch-up 241f966b1a4cf4b626def0f15ccde3773b98ca50 Merge pull request #2447 from NousResearch/hermes/hermes-5d6932ba 7d0e4510b8644e504bad890df40eec6f68b5f574 fix: skills hub inspect/resolve — 4 bugs 306e67f32d34c59b262b93c0af8287ad85e502a0 fix: fail fast when explicit provider has no API key instead of silent OpenRouter fallback (#2445) 5c8d7d5d6fa6b61f5e43871297fe3d67f8d20ff0 fix(skills_guard): agent-created dangerous skills ask instead of block (#2446) 0b370f2dd9326df3a31e325eaa942d50bb86251e fix(skills_guard): agent-created dangerous skills ask instead of block 887e8a8d840b09c9679432572b4f475b19a516a4 Merge pull request #2444 from NousResearch/hermes/hermes-31d7db3b 189214a69db867739e259bf81ca136558e5a6106 fix(tests): replace FakePath subclass with monkeypatch for Python 3.12 compat cd6d24f111e11392085f8c51ba6351bcba179d9e Merge pull request #2443 from NousResearch/hermes/hermes-31d7db3b c01cfe4f9ac232b23043781a524304f20d224169 fix(cron): silent jobs return empty response for delivery skip (#2442) fbbe9e603048e6b75f71484f9c7d53ebd33aea8c feat(gateway): add @-mention-only filter for Mattermost channels 43bca6d107c86efc7e60a4a35ca8a55e1b4b4c1e Merge pull request #2413 from NousResearch/hermes/hermes-5d6932ba 669c60a6bb1839f6f13085abd86a5eee5abe7f3b fix: add iteration boundary linebreak to prevent stream concatenation dd39003a9bc6142bd30aa67e4e473927d13ad775 Merge pull request #2406 from NousResearch/hermes/hermes-31d7db3b 4bded44b6aaf9ad0f35ebc2720b44a56e888864c fix(gateway): detect stopped processes and release stale locks on --replace ec22635b472617a38254136b785e14ad3adf8fb1 Merge pull request #2403 from NousResearch/hermes/hermes-31d7db3b 29d0541ac9e8aad8b51c7a3a84fc279d76a0a2f2 fix(model_metadata): use /v1/props endpoint for llama.cpp context detection a0f411c87df96b6062dc3054ffbfb20a9c7dae39 Merge pull request #2400 from NousResearch/hermes/hermes-5d6932ba 862d5224dddffe9bda9afe8089e7e5656b668c23 docs: replace ASCII diagrams with Mermaid/lists, add linting note (#2402) e664bc7632af8b8a691f105d076b8ac8929f0202 docs: replace ASCII diagrams with Mermaid/lists, add linting note f9052d7ecf024ead56b962d7cce1f1f8adf51fb8 fix(signal): use id instead of attachmentId in getAttachment RPC 7dff34ba4edf3678180c303af6891d59aa70667c fix: auxiliary client skips expired Codex JWT and propagates Anthropic OAuth flag (salvage #2378) dbc25a386ea377c03f3be035a98201e5c5b9b642 fix: auxiliary client skips expired Codex JWT and propagates Anthropic OAuth flag 0ea7d0ec80b74f053cb0f52f56758c3334ba0d49 fix(terminal): log disk warning check failures at debug level (salvage #2372) (#2394) 1d28b4699bd9df495e8a2133c0e87563128b348d fix(redact): safely handle non-string inputs (salvage #2369) e0ca46cd738f775b3c04ed5899e8e163dfac2c8e fix: restore opencode-go provider config corrupted by secret redaction (#2393) 5454a55269f8329843022f854989d58820a4308a fix(prompt-caching): skip top-level cache_control on role:tool for OpenRouter (#2391) 40c9a13476e8d173188bd178c2640790dab6b976 fix(redact): safely handle non-string inputs bd49bce2781629474d895f3de0350ecf3de38bb4 fix(prompt-caching): skip top-level cache_control on role:tool for OpenRouter 52dd4792149f2d904131a0773cc09b5fd5f3fbeb Merge pull request #2361 from NousResearch/hermes/hermes-5d6932ba c57d5cbdde4a2bc6b2a7efa2247fe74be6904c38 fix(update): prompt before resetting working tree on stash conflicts (#2390) 525caadd8c042e2f429d2ce0cad1babdc909c95f fix: prevent Anthropic token leaking to third-party anthropic_messages providers (salvage #2383) (#2389) f9fa7421cbf74d6ac70cb071d239839df1aae427 feat: bioinformatics gateway skill — index to 400+ bio skills 342096b4bdb7976db0353cbf93e0396845df2f8c feat(gateway): cache AIAgent per session for prompt caching 55510cbad209c7fac6d3d94019aeeedecfea7754 Merge pull request #2388 from NousResearch/hermes/hermes-31d7db3b 3ab50376b0b71c39cb3575a4186b112d4b59e1c3 fix(update): reset working tree when stash restore leaves conflict markers f8fb61d4ad44e92eb78bf99ba644cfa27994378c fix(provider): prevent Anthropic fallback from inheriting non-Anthropic base_url 0d68446323b8b0a2a93ae8db797fc1331c674c3c feat: add bioinformatics gateway skill 81dbf4309ae65a3cdbb77a2d5aaccb7014da1d9b fix(telegram): escape bare parentheses/braces in MarkdownV2 output (#2386) febfe1c268a585ac571879b468504f3b9fc4e164 fix(telegram): escape bare parentheses/braces in MarkdownV2 output 2a5f86ed6d95e3e143e0015f4f63c7797b368b22 Merge pull request #2343 from NousResearch/hermes/hermes-31d7db3b d3659c8ca0625dee76b2136531398e6a981a8647 fix(gateway): /title command fails when session doesn't exist in SQLite yet (#2379) f7f75de7c33ae018253921add5a3f1993f4b3853 fix(gateway): deliver MEDIA: files after streaming responses (#2382) f58902818d9302fcdd4b30cc29cf2b9bc5f9f5f4 fix(gateway): deliver MEDIA: files after streaming responses 8da410ed95f245107e8794d2d0e71cb2b2a4886b feat(plugins): add slash command registration for plugins (#2359) da44c196b60423e82fa7c754662a01f884dfbd80 feat: @ context references — inline file, folder, diff, git, and URL injection 36079c66464589d137634e9f06301092139dd961 fix(tools): fix resource leak and double socket close in code_execution_tool (#2381) 135448f513b4e1f4bdeee723214923831a88bd1c fix: ignore placeholder provider keys in provider activation checks (salvage #2121) 2e143fd15c6e05c6d423eb38518c81327dca45d8 fix(acp): preserve session provider when switching models (#2380) 0b9526b4761bbabc98ca48f5c0a3f2dfda765314 fix(acp): preserve session provider when switching models f304bc63b802f217739f71c201193f4812c2e22a fix: ignore placeholder provider keys in provider activation checks decc7851f2e8e209e9cbaf9f49ed39171e34859f fix(cli): pass conversation_history in quiet mode with --resume (#2357) 97108db03806ea5b8be8d5902ce23b5496e13518 fix(cli): pass conversation_history in quiet mode with --resume 1f1fa71d0c1e48924dd8514a515e7dd067568e36 feat(skill): meme-generation — real image generator with Pillow (#2344) 2988334fe5bdddfe0427390fb251511c988e479a fix: case-insensitive model family matching + compressor init logging (#2350) 292d12bed42ee3747b33bf32d828c953917890b2 fix: case-insensitive model family matching + compressor init logging 509cff6e5c6720c3392f8d580aebd09a7e3d769c revert: remove Shift+Enter keybindings that crash prompt_toolkit (#2349) 29520df44f0326a66d12ee50faf7d305ceb68d7c revert: remove Shift+Enter keybindings that crash prompt_toolkit 9be42e49f9034ce7141b175823d94da3f7b6d01a fix: resolve merge conflict markers in cli.py breaking hermes startup (#2347) 42cef9c2826fddec714cc51860de149c08f0a07e fix: resolve merge conflict markers in cli.py breaking hermes startup 3a71099dac11b83ce343f630dc8685322c9739be fix(cli): handle Kitty keyboard protocol Shift+Enter for Ghostty/WezTerm (#2345) 356122e990343d47999c1ae3d0836958b0d0c0fa fix(cli): handle Kitty keyboard protocol Shift+Enter for Ghostty/WezTerm aefcdd6f7fe85dfa1191b2282fdfdece928b55c0 fix: return JSON parse error to model instead of dispatching with empty args (#2342) 3835a8d5df0c9b1f9edd1488087e1eb382320be0 fix: whitespace-only env vars bypass web backend detection + clearer Firecrawl error (#2341) e8188a56c7ee762b6b150e687aa1b4378b3eed8d Fix backend detection when environment variables contain only whitespace c42a18e9e5c2d74b98759171f374ecca13547b7b Improve Firecrawl configuration error message and add logging b73d2213247159aecac27afd6a387fb6488b77bc fix: Alibaba/DashScope: preserve model dots, fix 401 auth, fix dead provider check (salvage #1748 + fix #2314) cc51ffdb57fd7d531a522f384c116b25995429a0 Merge pull request #2340 from NousResearch/feat/streaming-default c8971db435902a101fbfdc316eda67e331adcb32 fix(gateway): pass message_thread_id in send_image_file, send_document, send_video (#2339) c4e787d47b7cb354a535ff5386ca2bccb5489335 feat: enable streaming by default in CLI fb48b8f0c5f51164e88eb5fdb4d3dfcc752620f0 fix(gateway): pass message_thread_id in send_image_file, send_document, send_video 67600d0a0bcadaab04861bef340c72229d025e1c feat(cli): add hermes plugins install/remove/list command (#2337) 5a9ab09bc3d1d15aedc4fcb1b49e0f2a47496b50 feat(cli): add hermes plugins install/remove/list command 2c06ec5f5156db937cb0e1bbcbdfb648c112a148 fix: correct provider check for Alibaba model identity injection d70e07fc450bd91fb1bfc64d65cbc41a074dfa2f refactor(cli): add protected TUI extension hooks for wrapper CLIs fff72030490abd2e41805436e9c16c01d4ee7836 fix(mistral-parser): handle nested JSON in fallback extraction (#2335) 566398001516a7cb41d6f0cdf57122552c37cf07 fix(mistral-parser): handle nested JSON in fallback extraction 8304a7716dc42edd2356ccd92f7d7bc582ce6bef fix(gateway): restart on whatsapp bridge child exit (#2334) 523d8c38f919c30f1cb07907773d6a4059fd27fd fix: Alibaba/DashScope: preserve model dots (qwen3.5-plus) and fix 401 auth e6299960cc84f818663afefcb6dd557ee2c5aeb3 docs(discord): mark Server Members Intent as required (#2330) fb6d41237cbfe45ce402b98f933e3e6fcb71674e docs(discord): mark Server Members Intent as required e183744cb50f30e03172974b792a5769ca955d61 feat(honcho): instance-local config via HERMES_HOME, default session strategy to per-directory 07112e4e98dc4ca751c8379fedbb7a7135a353ba fix(mattermost): use MIME types for media attachments (#2329) bc15f6cca3b798c39e77b86772a6f9d903c8d2d1 fix(mattermost): use MIME types for media attachments 3921fb973c664343c4aa411f19acf8a788766bee fix(gateway): load platforms section from config.yaml for webhook routes (#2328) 6408b4ad53adddfc482cbc932264a052a32a4586 Merge pull request #2327 from NousResearch/hermes/hermes-5d6932ba 326b146d68bcd58c777a7c71808dbf6e58566617 fix: prevent systemd restart storm on gateway connection failure 1830db0476b154f276fcd1a3f316405ca44b5dcb fix(gateway): load platforms section from config.yaml into gateway config 3ba6043c6232156d5cf343c16f8a82124ad9b849 feat(compressor): major context compaction improvements (#2323) f4a74d3ac75dba00c16d45da26e2b43bfe81bb4b fix(honcho): hide session banner when not explicitly configured e75f58420c7cbe15e12f609fd21ad2bd3722ac17 feat(compressor): major context compaction improvements 28bb0e770f183379c31a480d23853d55a4d6aded fix(voice): enable TTS voice reply when streaming is active (#2322) 06f4df52f16a80ad2e4870eb39d22a504f73be8e fix(install): add zprofile fallback and create zshrc on fresh macOS installs (#2320) a03cbcd5f9d533d24bc509f370b90a404dcaa5da Merge pull request #2317 from NousResearch/hermes/hermes-5d6932ba df67ae730b818086d507104a686e92a355be9bdf fix(cron): close abandoned coroutine when asyncio.run() raises RuntimeError 9305164bf394c10b2b62e8d4e6ad2ba475323907 fix: add None-entry guard to tool_calls loops in run_agent, batch_runner, and mini_swe_runner (#2316) 453f4c51756269bc4502132fa6d4502e1666b22b Merge pull request #2312 from NousResearch/hermes/hermes-31d7db3b 37a9979459ca16bc46fb4e424e031fc2ad93b78a fix(cron): stop injecting cron outputs into gateway session history (#2313) 713f2f73da98d4de273f0163175b151951fd3c23 fix(agent): inject model identity for Alibaba Coding Plan (#2314) 237499d102528543ac907ae6b66620bbb312c1e3 Merge pull request #2311 from NousResearch/hermes/hermes-5d6932ba 3f811f52fd0a305fee02fbeef32e73ef8514ab30 fix(toolsets): pass visited set by reference to prevent diamond dependency duplication 2ea80543046d9d2719ece9984b9112ba1a47fc2d fix(agent): inject model identity for Alibaba Coding Plan to work around API returning wrong model name 488a30e879d345de82e608cb319c528b731981d0 fix(gateway): retry Telegram 409 polling conflicts before giving up bc3f425212493af2cfdd680da0096f6cc029e37d Merge pull request #2309 from NousResearch/hermes/hermes-5d6932ba fd1d6c03cbc483c4526011985735a1215a0df134 fix(cli): correct truncated AUXILIARY_WEB_EXTRACT_API_KEY env var name 58b52dfb2f0a080d614bb4a9cc3a23f9f48823cc Merge pull request #2303 from NousResearch/hermes/hermes-31d7db3b 651e92fbbf11b625b3dac2255f9667749bdcd6d3 fix: use git pull --ff-only in update/install to avoid divergent branch error (#2274) 779619f742ac824a7d223a5837dbc9862e8bc1f6 fix: remove synthetic error message injection, fix session resume after repeated failures 96a5e9fc110d04295dbb8709f75364624cecb7eb feat(agent): add summary of successful tool actions in review agent eb537b5db4e8982274fb1c668360da694b95dba9 fix(cli): prevent multiple reasoning boxes from rendering 2da79b13dfae6476c8a0c268b2ea9ac7cd91a665 feat: priority-based context file selection + CLAUDE.md support (#2301) beb54ffb9385385396a1b152569b204a078a680c feat: priority-based context file selection + CLAUDE.md support 885f88fb608a6bfd7a4d9d2baaf9b09119e58b29 feat(agent): suppress non-forced output during post-response housekeeping 35850198314624207bf3bc5dd1f9346063536bcd feat(cli): enhance user input display with consistent formatting 6d7f3dbbb74d6e6fb670db54db2e9518475734dd Merge pull request #2278 from NousResearch/hermes/hermes-5d6932ba 71cf7ad11accd66e2af849ef9f9456586357716b fix(setup): add alibaba to provider model selection b748fcf836896b88e62ceeca9155f7ed693d2dda Merge pull request #2277 from NousResearch/hermes/hermes-5d6932ba 7289256114fe14f26b40246db7370b499f47d8f7 fix(setup): OpenCode Zen/Go show OpenRouter models instead of their own 870ebb885022ead3a2f9f2008de4380df7a0e73b fix: use git pull --ff-only in update/install to avoid divergent branch error 517b5c17d6f089d04f18d1a913dfdcd88aac7775 Merge pull request #2275 from NousResearch/hermes/hermes-5d6932ba d0ac8d9fc71c138b5e941dac0bb355c6663c3e1b chore: remove dead top-level toolsets config key 761a8ad39a64d952a8626fff8e73f9a394dedef0 fix(display): show provider and endpoint in API error messages (#2266) 52adc8873b985091c352e937a021d596490e915a Merge pull request #2268 from NousResearch/hermes/hermes-5d6932ba 173a5c6290761372c300f812114fcb07b703caee fix(tools): disabled toolsets re-enable themselves after hermes tools f3b23034280f217fa66b949151d1121ce1016a5a fix(gateway): skip model auto-detection for custom/local providers 1870069f80fe4eae1adebd954bfea9850e4053c9 fix(session_search): exclude current session lineage d560f2d1f28b5332397a470529e67f90a8601135 fix(display): show provider and endpoint in API error messages f7e2ed20fa36c02f6c628b61341f2cdae143bf0e feat(cli): implement true-color ANSI support for response text 10d719ac1b14d7e36e16e5f727ca0769707f110c fix(security): require opt-in for project plugin discovery 45058b410597ff5ff99c2e744e7e626a6e426fe6 feat: replace inline nudges with background memory/skill review (#2235) 470d89c6dbff77caf83e1f47d3b509a3a74580e5 feat: replace inline nudges with background memory/skill review 2416b2b7afadc8bd2f8ff132f9c42ca547219afb refactor(cli, banner): update gold ANSI color to true-color format (#2246) 2670baa184d2dc5763a4198627e1556549b5898d refactor(cli, banner): update gold ANSI color to true-color format 4263350c5bc6a5ea5f3d2d60918ca7dbd566e96d fix: remove post-compression file-read history injection (#2226) 214047dee1627694f17b78739b47f9337d100057 fix(display): suppress spinner animation in non-TTY environments (#2216) ba0b77a803c7714d7caefbfe807cc806ab6dd6a3 Merge pull request #2214 from NousResearch/fix/event-loop-closed-delegate 6e2be3356db2078b0aee184b49a450c0248b4b02 fix(display): suppress spinner animation in non-TTY environments 8e884fb3f16f119019c6b0a5b2f331a3ef82bc98 Merge pull request #2215 from NousResearch/hermes/hermes-31d7db3b 59074df021028941ee68492d23e5169920b886c7 fix: add dashscope-intl.aliyuncs.com to URL-to-provider mapping f853e50589e5b43cafc6dd74b8eef747bfa30d54 Merge pull request #2199 from llbn/fix/telegram-markdownv2-features ca03358575e192abb3a18afcb215b2273681ed8a Merge pull request #2200 from llbn/fix/telegram-mdv2-code-backslash ab6abc2c13e5dcccc84e7ee55e7307cec85c5328 fix: use per-thread persistent event loops in worker threads 0ce35a117c2e142ab082cacec4287856b1d022d6 fix: crash on None entry in tool_calls list during Anthropic conversion (#2209) 900e848522091bcdc82bdc33ebd6055be04bc1e2 fix: infer provider from base URL for models.dev context length lookup aafe86d81a05a7d364e14ff62464b3f7193b8247 fix: prevent 'event loop already running' when async tools run in parallel (#2207) 43b3a0ac66ae81172fa1f905c47e266107c03510 fix(telegram): escape backslashes and backticks inside code entities for MarkdownV2 02f639e5616389ff9589afc2939f7eee959ae6c6 fix(telegram): add MarkdownV2 support for strikethrough, spoiler, and blockquotes 76bc27199fcd7379909c64c9be6ebac2f38bc929 fix(cli, agent): improve streaming handling and state management 2ef06a04bbd2398ec9667167d148f6ed846315d3 fix: streaming display — show tool feed lines and fix response box framing 1aa7027be1ae670d0af3faafae6607a7bd8d0166 Merge pull request #2192 from NousResearch/hermes/hermes-3d7c23c9 f961937097f2c3c6b9329eaa97bab63a41320f42 Merge pull request #2181 from NousResearch/hermes/hermes-4a7e401e 7a427d7b037820ae5d6b1f2d32783f7d8e1d913b fix: persistent event loop in _run_async prevents 'Event loop is closed' (#2190) 66a1942524a69ef73d9d86cbfe714d9932746411 feat: add /queue command to queue prompts without interrupting (#2191) 1173adbe86caeac1cfb5811d0a5bbf5ea6b9d9d0 fix(acp): preserve leading whitespace in streaming chunks a5beb6d8f0f76b0ae8669ab8ede12d31e829932a fix(whatsapp): image downloading, bridge reuse, LID allowlist, Baileys 7.x compat 0e3b7b6a39c510efdef44ba1c7cf60db36f58be0 docs: fill documentation gaps from recent PRs (#2183) 67f6a33668f192e760cc485c3c618c0b9d5703cf docs: fill documentation gaps from recent PRs 5e705bc31beae254188a219379cb9d1cbc1e9822 Merge pull request #2182 from NousResearch/hermes/hermes-5d6932ba 55ce601502b52c407d00d95ac889cca9dfc41ce7 fix: 6 bugs in model metadata, reasoning detection, and delegate tool 8f6ecd5c64d486bbf8147f14e34bb78ffb1062fe fix: add missing platforms to cron/send_message delivery maps and tool schema a51a767407134cf44544557e45d682e7f5a33bbc Merge pull request #2167 from buntingszn/fix/cron-matrix-delivery 2ea4dd30c68976e22a9cda705f61338a3ff66203 fix(gateway): strip orphaned tool_results + let /reset bypass running agent (#2180) 80e578d3e3352f00d4d211e70ed71e7036c328f2 docs: add context length detection references to FAQ and quickstart (#2179) c52353cf8a3e8aaa2ea710560c37b75d059efb21 feat: context pressure warnings for CLI and gateway (#2159) d76ebf0ec36b61a6358e61ae38ab42ccb7efdf02 feat(gateway): webhook platform adapter for external event triggers (#2166) 4be507042775bcd52f29a4d8dcae2ee2e0fb9f5d fix(cron): add Matrix to scheduler delivery platform_map e140c02d514c30e3a0644abf027e5c452350b397 feat(gateway): add webhook platform adapter for external event triggers d2305cee2131199174e69a2b0f5ac492758ebf0f Merge remote-tracking branch 'origin/main' into hermes/hermes-7ea545bf 88643a1ba90588f333d63f656761e24633eeb5df feat: overhaul context length detection with models.dev and provider-aware resolution (#2158) b7b585656bb2b2fec4041900d0fc68e94e8ffbb5 Merge pull request #2110 from NousResearch/hermes/hermes-5d6932ba c31be913e15ca5ede11773b0c83a03cb03c59e0a feat: context pressure warnings for CLI and gateway 4494c0b033439ef0a55353ddd529f02eaeca8c52 fix(cron): remove send_message/clarify from cron agents + autonomous prompt aa6416399eaf2b432a6472baea673c56ed0d7b35 Merge pull request #2161 from NousResearch/hermes/hermes-6757a563 b313751acf96fe13ebb7a42b66cb4e6f5b199e0c fix(display): show spinners and tool progress during streaming mode b1d05dfe8b93b3f4d13397f5a527ec84a5f3a5b1 fix(openai): route api.openai.com to Responses API for GPT-5.x f8899af113e8bb0a8c7399708abd703b2f4baabd Merge pull request #2156 from NousResearch/hermes/hermes-6757a563 cf29cba084a9d6485d748a48d0f6c404c2d3bc74 docs(signal): add Note to Self section to Signal setup guide ec9b868aea3984edde6abd4df470867322f53ed8 fix(signal): handle Note to Self messages with echo-back protection 3ec6c71e43de288d816211f9371d9dbb6a12fd7b fix: update claude 4.6 context length from 200K to 1M (#2155) 4ad0083118fb8789dc589066102c1cbb56152b8e fix(honcho): read HONCHO_BASE_URL for local/self-hosted instances 1055d4356a56b5c5420040279d661ff20f813107 fix: skip model auto-detection for custom/local providers 5822711ae66758d580d2337bd5fac6e616eb00bc fix: complete session reset — missing compressor counters + test b19f5133c348ce7b5c8f0d64d79686549f277a57 Merge pull request #2118 from NousResearch/hermes/hermes-e83093f0 471ea81a7d4ae230837ced723faca511ba89839c fix: preserve Ollama model:tag colons in context length detection (#2149) b1832faaae97d3b847c44afdca2d84b77bdbb55b feat: show reasoning/thinking blocks when show_reasoning is enabled 3a9a1bbb847ad3673734d07f2556d7adc46ddfc1 Merge pull request #2091 from dusterbloom/fix/lmstudio-context-length-detection d8081790f3cc24840c4649e8703adf42d3375256 Merge pull request #2102 from NousResearch/hermes/hermes-6757a563 493bf8db7e2242bdad5884d28a85371c0b74562c Merge pull request #2083 from ygd58/fix/delegate-save-parent-tool-names-before-child-build d9eba2a44fb55079a550436c5a0175a31d954e95 feat: optional FastMCP skill + fix: gateway session race guard (#2113) fc061c2fee59e00227b512e9b132c745988c6d57 fix: harden sentinel guard for /stop during setup and shutdown aaa96713d44991227e048e89760c9dff96cf781f fix(gateway): prevent concurrent agent runs for the same session 02954c1a10c60267941d48061a1167844c64b542 feat: add optional FastMCP skill for building MCP servers 4355f3042296ebd0b5497249b8ea600a0db8568e Merge pull request #2114 from NousResearch/hermes/hermes-14b05543 2f07df31778a2b1099f3c376de62f8b236dd2716 fix(cli): expand session list columns for full ID visibility 672e9752a08b66cb6b71aec99b1452533f3d8c9e docs: align venv path to match installer (venv/ not .venv/) df0f684c349a441c50d76187a26592d2266a3210 Merge pull request #2098 from JiwaniZakir/minisweagent_path-missing-wheel-2075 21afa134f0e128fedfdb74dd254f049b7a68dec2 Merge pull request #2101 from InB4DevOps/main 6bcec1ac25adb717298b845848132a41d9896558 fix: resolve MiniMax 401 auth error by defaulting to anthropic_messages (#2103) fe331ed9bdc541377308c6447b80847b82f06721 fix: Reset token counters on new session for accurate usage display (#2099) 746abf5e28e00e9ce900fdae0556e26dd1e87518 fix: use reasoning content as response when model only produces think blocks 4d2c93a04fe918b0950a50211d9dbf3de47813f1 fix: normalize MCP object schemas without properties 3959e3cadb3f1e58918620cf3a73c65c372f31f0 fix: add minisweagent_path to py-modules in pyproject.toml ec5fdb8b92f752eab0cb98c586f1bb6c0f411e76 feat: query local servers for actual context window size c030ac1d8520fec3088f10134a82b9560ea712af fix: prefer loaded instance context size over max for LM Studio d223f7388dc9cf9f787aa1ad8d36295e94f9f643 feat: query local server for actual context window size 816d1344ee17f05f12c99b58bd30fa079a3baafd fix(delegate): save parent tool names before child construction mutates global 4c0c7f4c6efc07528103d8af8953d225432477b8 fix: /model command — bare provider names, custom endpoint display bd774d5495fd8cdb30d269937871aa8df48d3a6c fix: /model command — bare provider names, custom endpoint display 04b6ecadc4a5efacb573cdeded06fa9642a1a71b feat(cli): Tab now accepts auto-suggestions (ghost text) e84d952dc0697c30b87e07f6f47aad502f8ae155 fix(codex): handle reasoning-only responses and replay path (#2070) 388130a122a0815d3ffda053d035e0c561f5ae2c fix: persist ACP sessions to SessionDB so they survive process restarts 484f74caadcf21d5698447d7fdc59f07ec8ef77b fix(codex): ensure reasoning items have required following item in API input bb59057d5df2aca11e65bf9b0031d5ace1155f54 fix: normalize live Chrome CDP endpoints for browser tools 337f902a7e8749c3a4583c84a1cc0fc91c8f7c6b refactor: use SessionDB instead of JSON files for ACP session persistence 36a4481152f4a5595b2aa5496e160ae7856f2892 fix: prevent unavailable tool names from leaking into model schemas efa753678c68c5176b37ff313df5274eacc4261f Merge PR #2064: feat(tools): add base_url support to OpenAI TTS provider 0e9138173e25cb2848acdc02fc8fb1c86ac056ef fix: persist ACP sessions to disk so they survive process restarts 7f3a56725939c37d3cda83f22a875fb120a15aa3 Merge PR #2063: fix(daytona): migrate sandbox lookup from find_one to get/list eccf3da31d5de7f4dd2ef1a7861e5262ee7f22c5 fix(codex): treat reasoning-only responses as incomplete, not stop defbe0f9e910fe3a328f21e1c6fc45ade0a815c9 fix(cron): warn and skip missing skills instead of crashing job 18862145e492d7d6406f78a5c7fa9970f22aa86b fix(daytona): migrate sandbox lookup from find_one to get/list 35558dadf4fafeeba9bcc044d473e939ebfeb547 Merge PR #2061: fix(security): eliminate SQL string formatting in execute() calls ae8059ca24c8bf2968c8914285b0318896fb1d2b fix(delegate): move _saved_tool_names assignment to correct scope 116984feb7432d858dbc4fe14fbe79b2afbfe652 feat(tools): add base_url support to OpenAI TTS provider 219af757046cee4e07520c60ecaea625c191ec64 fix(security): eliminate SQL string formatting in execute() calls d76fa7fc37639934aa803e211dafa979445e3a3c fix: detect context length for custom model endpoints via fuzzy matching + config override (#2051) d7bc0e1d03f618d61f4f4b534bdce8bcc40e6b5d fix: revert accidental summary_target_tokens change + add docs for context_length config 2a3a374c78ec083e4367577008d0d065168e3bf1 fix: auto-detect local model name and context length for local servers 0cee97c500a30e892535575a1779cea476819e28 fix: detect context length for custom model endpoints via fuzzy matching + config override 7b6d14e62a2b7f0015a06e48d7ba89164f3caced fix(gateway): replace bare text approval with /approve and /deny commands (#2002) 7b901e836eec5dc49bd56a11786ec3d1933ac862 fix(gateway): replace bare text approval with /approve and /deny commands 67d707e851800ed76b73090659086cd2406a2ea6 fix: respect config.yaml model.base_url for Anthropic provider (#1948) (#1998) e648863d5203df59ac4e351163ed34df7c498d6b docs: fix documentation inconsistencies across reference and user guides e8286cc859d1e9fe55b33a848ed2b31854a49caf docs: fix documentation inconsistencies across reference and user guides a7cc1cf309c3f3533d51b7e2eec00abe6f919acb fix: support Anthropic-compatible endpoints for third-party providers (#1997) 205891c9c820fdb407bb702a43bdadd5b72f9964 fix: support Anthropic-compatible endpoints for third-party providers f24db23458fdb2e0a14be4881d6eda5cfbf50991 fix: custom provider uses config base_url and api_key over env vars (#1760) (#1994) d132e344d7b3710047aa8a0e82f7177510d5847d fix(agent): prevent silent tool result loss during context compression (#1993) 22f41dadedd179958fbaf0eb4337b44b28873794 fix: send error details to user in gateway outer exception handler f91df18e0d5884de3f8d3561165df2b8dd1aa6b2 fix: send error details to user in gateway outer exception handler 7c7feaa033e36f2c7a9aba32ed72f4adf1ef4dd2 Merge pull request #1929 from NousResearch/hermes/hermes-b29f73b2 2f80bd9f87fd93eaf8a2936187834f9d29239e8b fix: whatsapp reply_prefix config.yaml bridging was dead code (#1923) 23e5e8dde98a5dc47321e6457dadac55e123b89a Merge pull request #1928 from NousResearch/hermes/hermes-ba3c8fa1 e99aca98abe082d5cdcbfaf0e8549a7b14b5858f feat: inject model and provider into system prompt 7e30e97a590abbc437da345c5feb43c2f515b028 chore: trim redundant trigger sentence from huggingface-hub description db4dfea7ec428dfe48ea77b8fd2cf0a7214ce305 docs: document SOUL.md as primary agent identity (#1927) 97fa8cadc5be5a822232cf6ce833ed887a4fc645 docs: document SOUL.md as primary agent identity 17254a7692f3d5c5fb763fd574a5200d3f53dda5 Merge pull request #1926 from NousResearch/hermes/hermes-ba3c8fa1 adf188c43914d442361fe27c71047dd5e4820b5f chore: add search to huggingface-hub skill description 21958a55d106c5a0e2867eb98e79279df29d8523 Merge pull request #1925 from NousResearch/hermes/hermes-ba3c8fa1 947827bba0fad8099e2e2fa80b93656a6b2d8c8e chore: tighten huggingface-hub skill description e4a3ffa9c1d9698be9cf2b2a0094c1e7596779e8 feat: use SOUL.md as primary agent identity instead of hardcoded default (#1922) 1fa3737134d54fca68d2590ae0525bbfc21b42c7 feat: GitHub Copilot provider integration (#1924) a15719042f07396a4bc1a376be955cf0279b9fc4 fix: whatsapp reply_prefix config.yaml bridging was dead code e7844e9c8dfa5c335a3189c4263921712575deb3 Merge origin/main, resolve conflicts (self._base_url_lower) 1c761ae042d0ea3947770ba80c6786b51a00fde8 feat: add huggingface-hub bundled skill (#1921) 56ca84f243bcaecfef8a4fa276d6e644337a39cf feat: add huggingface-hub bundled skill 04101bc59ed7d176362b20f3e611d65ac8f465de docs: comprehensive GitHub Copilot provider documentation 0a247a50f2039e4474a3a36ee6b19a481803f629 feat: support ignoring unauthorized gateway DMs (#1919) 0e2714acea308493499ff337f500858a8565cb25 fix(cron): recover recent one-shot jobs (#1918) 532b6f0dd64af4ed6b12dc292966100c538c1de5 feat: make WhatsApp reply prefix configurable via env var fc1be62a9cd6137218c6dd3aa7ee794ee989d26d feat: support ignoring unauthorized gateway DMs 36921a3e9811be55aafe7038ffb240e55b0999c0 fix: correct Copilot API mode selection to match opencode bcc1edc3a60d21544796d5a3e7dfbd4cb2d37078 fix(cron): recover recent one-shot jobs c1a127c87c00434f91e496fc87b15ab61e8f4ff6 Merge pull request #1917 from NousResearch/hermes/hermes-b29f73b2 c1750bb32d6666e77482009d0aa47ca69b38a18a feat(cli): add /statusbar command to toggle context bar 4699c226dae3bbe9a24e28262f94b2430cbfa98d chore: reorder OpenRouter model catalog (#1916) b05f9b62564c42bd11eeeaef0b232864a78a1ed0 chore: reorder OpenRouter catalog — glm-5-turbo under glm-5, minimax under stepfun 0679712d26d61fd9bb58a24eb8b979c7c04d9615 feat: reorder OpenRouter catalog, add haiku-4.5, fix minimax slug (#1915) cb54750e07786568d6040d21c0d706d55e0dfdd7 feat: reorder OpenRouter catalog, add haiku-4.5, fix minimax slug 21c45ba0aca0b45dd48c20c385914fa13fe608ed feat: proper Copilot auth with OAuth device code flow and token validation c0c14e60b478b0908b0d968cbb58b7fad8cd22f2 fix: make concurrent tool batching path-aware for file mutations (#1914) 050b43108c104e5636f551b3e211608643b5277f feat: add gpt-5.4-mini, gpt-5.4-nano, healer-alpha to OpenRouter catalog (#1913) 00cc0c6a286de96414f46982f1a656f990e37b1d feat: add gpt-5.4-mini, gpt-5.4-nano, healer-alpha to OpenRouter catalog bee13d99212b27d17fe5b60c44cbdccc8d247976 Merge pull request #1912 from NousResearch/hermes/hermes-b29f73b2 f814787144206c7cf852239019de30b7f1a759b7 fix(banner): normalize toolset labels and use skin colors c9bb0c587fe04938234a35ee685491fa0b89daee fix: direct user message on STT failure + hermes-agent-setup skill (#1905) 8422196e8999dfe37201a6f08c4e109666bfd960 Merge PR #1879: feat: integrate GitHub Copilot providers b70dd51cfab01ec7e61ef8db730319d8df621f86 fix: disabled skills respected across banner, system prompt, slash commands, and skill_view (#1897) 190c07975d7bdb896bd9106ca25c6cf2668c0e1d fix: check skill availability before hinting at hermes-agent-setup 011ed540dddcc5e6ff570adc8d84d73fdebc00e4 Merge pull request #1909 from NousResearch/hermes/hermes-b29f73b2 a9c405fac93e91802473af9ffeefa3096026d696 docs: fix MCP install commands — use uv, not bare pip 9c174e0940980229290ee2415ac5a4bd30535d71 Merge pull request #1908 from NousResearch/hermes/hermes-b29f73b2 5c4c4b8b7d097d2b6803a827208b3fb43d7bd4ce fix(gateway): detect script-style gateway processes for --replace 764825bbffde01624469ecd3a62d39d789bcb330 feat: expand hermes-agent-setup skill + tell agent about it in STT notes 053b4b8948d11e9c2025a9f060df039d606c8053 fix: skill_view blocks disabled skills ee4cc8ee3b4a30503bd686edae442541cab26a4d Merge pull request #1907 from NousResearch/hermes/hermes-b29f73b2 4b53b89f0964933790b5c31819b3f53446dda183 feat(mcp): expose MCP servers as standalone toolsets a2440f72f63a1412c1254e2a1eba168b33abe5b1 feat: use endpoint metadata for custom model context and pricing (#1906) 9c0f3462581ffa5fa875d03dd54cdadcd281ae3a fix: direct user message on STT failure + hermes-agent-setup skill e905ea86c3d4f5afded980cef45506cdbfbab031 fix: system prompt and slash commands now respect disabled skills 11f029c311d57dbee37ca94cf45bfb212f04b13e fix(tts): document NeuTTS provider and align install guidance (#1903) fb923d5efc96299d9c6b1b077e2bcfbadd38da31 Merge pull request #1902 from NousResearch/hermes/hermes-b29f73b2 ace2cc62575b39c58abffd2bf1d46e0e86114bd1 fix(gateway): PID-based wait with force-kill for gateway restart 24ac57704628e6938cd49e63bc0be3429283c3c9 fix: respect model.default from config.yaml for openai-codex provider (#1896) e86bfd7667ff49653753cb2a5b9d7d9d0ed44de6 feat: upgrade MiniMax default to M2.7 + add new OpenRouter models (#1900) e4043633fcf852c604311d5e09bc32a0ed3150cc feat: upgrade MiniMax default to M2.7 + add new OpenRouter models 2e0503226ec62543636a6d36f316ca0986d6306c fix: banner skill count now respects disabled skills and platform filtering a8132d1252ae9e5c67527c0e9ab7872da9bfba4c fix: respect model.default from config.yaml for openai-codex provider 927f4d3a37b816ef3530196c4c2f8301035cd331 fix(matrix): use correct reply_to_message_id parameter name (#1895) 66f71c18362dd9434d2bbac8a523233ca78d1c34 fix(matrix): use correct reply_to_message_id parameter name b1069196a6e4d1181dd5de81233b56b8f6ceb411 Merge pull request #1894 from NousResearch/hermes/hermes-b29f73b2 ba7248c6696b77adc92993b26ae50d474b385d0c fix(delegate): move _saved_tool_names save/restore to _run_single_child scope 6fc4e36625fefd6a2e0848546644c4541d0a7031 fix: search all sources by default in session_search (#1892) 7d7c2a62dd1179139ef434ad31c671fbe712dd8b Merge pull request #1890 from NousResearch/hermes/hermes-b29f73b2 5b74df2bfc4f5632c9a0a8a22d0bb4301f900e0d fix: OAuth flag stale after refresh/fallback, memory nudge never fires, dead code 0c392e7a8743f8c29d5c7a2332e9a67e457a1364 feat: integrate GitHub Copilot providers across Hermes f656dfcb32ce39955a465aa45c2824142c8586c0 Merge pull request #1840 from NousResearch/hermes/hermes-b29f73b2 0fab46f65ca219420b2eb9303518b7e5dda8f369 fix: allow agent-created skills with caution-level findings 37dceb043ee65620cdafe6cf859a0850b2b92ee6 fix: improve gateway error handling for 429 usage limits and 500 context overflow (#1839) 7ce374d3b9dd0c7b580592fec9292e2cb941a205 Improve gateway error handling for 429 usage limits and 500 context overflow 6e4415e86541393ff463130c0d8ebcbbea84db49 Merge pull request #1838 from NousResearch/hermes/hermes-b29f73b2 45bad9771d84414f08820f82284dac8750f0cd27 fix(context_compressor): replace print() calls with logger 8d60db0f6fe5898392a519f2fdd1007fd6f39ad6 fix(discord): remove bugged followup messages + remove /ask command (#1836) 1bee519a6f1989cf7bb0635c1325a5c1b68ec395 fix(discord): remove redundant /ask slash command 72bfa115a03ad028a50134eb81ced0522fed6b43 fix(discord): removebugged follow up messages from discord slash commands 7f85b2914d8c4ce01669b62a05e30c5fc168498a Merge pull request #1824 from cutepawss/fix/search-files-pagination b8076bb0bd9ca65e572fde9d4ce78738a4250287 feat: cron agents can suppress delivery with [SILENT] response (#1833) d35d923c768025f97d8b92914d17330fe05c487d feat: cron agents can suppress delivery with [SILENT] response a654bc04f7045da55124544af43043e26d38e012 fix(file_tools): include pagination args in repeated search key a71e3f4d98948b7e2159b1e3c7defc99dfeac3f5 fix: add /browser to COMMAND_REGISTRY so it shows in help and autocomplete 5d65520fd7c928c0374ca91c4ea3eca6b4ccbbe5 feat: add notify parameter to cronjob tool for delivery control cab6fb5a0987869f765d484d814221b9a888f30a fix: allow agent-created skills with caution-level findings 588962d24e8f91ac7e324ba7fbfd486aef5ba0c8 docs: escape {id} in api-server.md headings to fix MDX build (#1787) 1bcc949c304d5fd9bfc8c78c6a8ea96b985fc9b3 docs: escape {id} in api-server.md headings to fix MDX build 2fa33dde81e7c16436c5a03f1838b33bc6d5752e fix: handle message length overflow in streaming mode (#1783) 7ac9088d5c2f81d93b52118214dd2b42831e2990 fix: Telegram streaming — config bridge, not-modified, flood control (#1782) dd60bcbfb7e628176855c79ec437a4b03088af87 feat: OpenAI-compatible API server + WhatsApp configurable reply prefix (#1756) 9234bc89443103b2fbfb9d74e1c9da35be01c1a2 feat(whatsapp): make reply prefix configurable via config.yaml e929b66c1a6415b23ba8c5fa5c493342606063a4 fix(security): PKCE verifier leak, OAuth refresh Content-Type, tool_choice prefix b5cf0f0aefc75f4f1883f2e77abf134bd1a9a811 fix: preserve parent agent's tool list after subagent delegation (#1778) 9a1e97112639d31a3b5a0ab86d47f47078280d75 fix(stt): respect explicit provider config instead of env-var fallback (#1775) 088d65605af0d1bdb1b49e7d8d048e39988de9c6 fix: NameError in OpenCode provider setup (prompt_text -> prompt) (#1779) c881209b9289cf4077b8a6688412d0cada6464aa Revert "feat(cli): skin-aware light/dark theme mode with terminal auto-detection" f781de0e88227346a5be7cf13d4f5c97a7d8c1bb fix: preserve parent agent's tool list after subagent delegation d7a2e3ddae71e95adb8e4ea960b7a813524c2000 fix: handle hyphenated FTS5 queries and preserve quoted literals (#1776) d5af593769649be5fa5a918e23602684386368b1 Merge pull request #1769 from sai-samarth/fix/whatsapp-send-message-support df74f869557c2fea22347d1a936f2749be55cc59 Merge pull request #1767 from sai-samarth/fix/systemd-node-path-whatsapp 2c670ea85852509abdfd6380a28fbc267137440c fix: handle hyphenated FTS5 queries and preserve quoted literals a3de843fdb081fec09da0ea47a90ea9d7fe6c6ae test: replace real-looking WhatsApp jid in regression test dc15bc508fab8dddab654c0d3dd0ee60dd9de675 fix(tools): add outbound WhatsApp send_message routing b8eb7c5fedd248e189fe2bc22aa47cc721564d88 fix(gateway): include resolved node path in systemd unit 6108723b126561e4fc72ff98d14b843e5d233cee feat: OpenAI-compatible API server platform adapter 11c926cc9dbb9248ae6da09bdea330b8c8b4430b docs: add Hugging Face provider to all documentation pages 603599e98294e1b7f741b825c3826ab62284b81c feat: isolated profiles — multiple Hermes instances with independent config, gateway, and data 3273678ff9e4ae2745b36e84773556554bf09530 feat: OpenAI-compatible HTTP server platform adapter 154fd88b76cc4cd9bd9405d8c521399fc452c1d2 feat: add Hugging Face as a first-class inference provider 548cedb8694b198a67a521fb0186dd8dd5a449d3 fix(context_compressor): prevent consecutive same-role messages after compression (#1743) 702191049f2ad699028bd2bd0166b9056731f7ed fix(session): skip corrupt lines in load_transcript instead of crashing (#1744) bdded0f525241aabfe6dea9450ecbf606905f475 feat: show estimated tool token context in hermes tools checklist aea39eeafbd5d35a394f4661091a147e6df9c5d0 Merge pull request #1736 from NousResearch/fix/gateway-platform-hardening 23a3f01b2bf552960f71f34110d78f8e0c363faa Merge pull request #1735 from NousResearch/fix/tool-handler-safety af118501b938d4f1bf6261fb685214e96b85cb61 Merge pull request #1733 from NousResearch/fix/defensive-hardening d1d17f4f0ada92941e0ee597c9efde58679bb74f feat(compression): add summary_base_url + move compression config to YAML-only 6832d60bc06434cb14c27d5da1fd50b6271a1232 fix(gateway): SMS persistent HTTP session + Matrix MIME media types ea954629986ca011c17aaefbeae0052f5f15a7bc fix(tools): browser handler safety + fuzzy_match docstring accuracy b5ed6ebae2bae54eae94b79abb90850073cc56d8 feat(compression): add summary_base_url + move compression to config-only 847ee20390bb6d70428ca443ff9a52a985502e88 fix: defensive hardening — logging, dedup, locks, dead code 867a96c051a3c0e55fd2cd8ab91685431fc8da17 fix+feat: bug fixes, auto session titles, .hermes.md project config (#1712) 0897e4350eb24e62b3443426404f711e6d1b6b9b merge: resolve conflicts with origin/main d2b10545dbd432bfde93e437880516217d006176 feat(web): add Tavily as web search/extract/crawl backend (#1731) 33a9f69ce26c7c260ee924ba9a2d2ef4d70edc28 fix: add web_backend handling to _reconfigure_provider for Tavily 85993fbb5a77d577f027bccecf84054906238aee feat: pre-call sanitization and post-call tool guardrails (#1732) fb20a9e120e750aff059b3cc163775a50e05c0e8 Merge pull request #1729 from NousResearch/fix/cron-timezone-naive-iso 21b823dd3bc77f209f4fded1187408bb70b81538 Merge pull request #1726 from NousResearch/fix/memory-tool-file-locking 03ef8590a6c9ef16972c18e06c2eaef357f4ab34 feat: pre-call sanitization and post-call tool guardrails 618ed2c65f4ade94f036c2a455fe33eb94c8e5d2 fix(update): use .[all] extras with fallback in hermes update (#1728) a0e4cea2b4f9d25df2b35ac52d35025aaa9cba9f feat(web): add Tavily as web search/extract/crawl backend 9f81c11ba08b25dc7dc0f7d7393db9bbd17000ec feat: eager fallback to backup model on rate-limit errors (#1730) 1ef82fc5b70d847022c72a8d225e73a9d36b73db feat: eager fallback to backup model on rate-limit errors 5301c01776e39fc9461578a30498bf2bf3034556 fix(cron): make naive ISO timestamps timezone-aware at parse time 81111cdeb2e3583fa86659041de7ae711b49e1c7 fix(update): use .[all] extras with fallback in hermes update d81de2f3d87abe7dc2792bb4c78fad52854f0bac fix(memory): file-lock read-modify-write to prevent concurrent data loss 1314b4b5415c7ea4453f3412a188a73881b66341 feat(hooks): emit session:end lifecycle event (#1725) d947a52f54a90bf3a2be016f6225675097fb7239 feat(hooks): emit session:end lifecycle event 695eb042438b24a31f355c5b941505ca1667760a feat(agent): .hermes.md per-repository project config discovery e5fc916814e6937b2a9d4fa6baa8d3e42b6f79fb feat: auto-generate session titles after first exchange 0878e5f4a8dd9454be1520b300b4e5fac50ff13d Merge pull request #1724 from NousResearch/fix/model-metadata-fuzzy-match 72bcec0ce523bb696cb29b5470041eed6fbb35b6 Merge pull request #1723 from NousResearch/fix/compression-attempts-persist d604b9622c5110b2de5ad465bb43cda75dbc42e6 Merge pull request #1722 from NousResearch/fix/run-agent-role-violations cf0dd777c8d2e0e099b7466f8dfd3541bff0e48e Merge pull request #1721 from NousResearch/fix/browser-session-race ec272ca8be900ddb64e824a5ea7cfbde085ac002 Merge pull request #1720 from NousResearch/fix/compressor-consecutive-role-violation 99a44d87dc70664499b071d293908c77ab548eed Merge pull request #1718 from NousResearch/fix/messaging-toolset-missing 16f38abd25d4a93e27121e51e8b0d358591f6ee5 Merge pull request #1717 from NousResearch/fix/length-continue-retries-reset cac3c4d45f57164c63b003ea61cd904a2f969144 Merge pull request #1716 from NousResearch/fix/cron-double-load-jobs 4167e2e294eb409faaa8bebc58c6eef907a16c7c Merge pull request #1714 from NousResearch/fix/anthropic-tool-choice-none 6ddb9ee3e3c868ca7fa452f66f31ecbac3c92558 Merge pull request #1713 from NousResearch/fix/auxiliary-is-nous-reset 05aefeddc77e34a7c8e295d62a5d8ca94a1db9e8 Merge pull request #1711 from NousResearch/fix/matrix-mattermost-mark-connected 9db75fcfc2254bb4801b6307bd0cc94c7c8bbe11 fix(metadata): fuzzy context length match prefers longest key 1264275cc3dca3ed2cbaa7a032d002c3c442192b fix(core): compression_attempts counter resets each loop iteration cd6dc4ef7e107f5e35fe4988c7250c366e40fa6f fix(core): message role violations in JSON recovery and error handler 8cd4a9668618e6631820a2f5ad1212d588b9b834 fix(browser): race condition in session creation can orphan cloud sessions 344f3771cb4f9134de14ec76ded1254b9ca7c8b1 fix(compressor): summary role can create consecutive same-role messages 8b851e2eeb6b27a91d48b5bdd48d6fc4418688eb fix(toolsets): add missing 'messaging' toolset definition 24282dceb1d35d5bfd42444ec0c16043b7849160 fix(core): reset length_continue_retries after successful continuation 1f0bb8742fd3502c9d7b39c2e75faf1d07406971 fix(cron): get_due_jobs read jobs.json twice creating race window 0de75505f3fec85838f814c603801b2bb2ca8617 fix(anthropic): tool_choice 'none' still allowed tool calls e5a244ad5d78013a54eaed754f4882b3a5dd4acc fix(aux): reset auxiliary_is_nous flag on each resolution attempt 4433b8337831e804744d4a1d7a14f67c5d5ddb73 feat(web): add Parallel as alternative web search/extract backend (#1696) 7049dba7785d14b477f3ab90476b5265e2912dca fix(docker): remove container on cleanup when container_persistent=false 6405d389aade4af874e2518a1987c8b12f5c1527 test: align Hermes setup and full-suite expectations (#1710) b111f2a7795805839845d9493ab74081a28657a5 fix(gateway): Matrix and Mattermost never report as connected b16186a32a40375ed63510eac78780d4b501ee03 feat(telegram): auto-detect HTML tags and use parse_mode=HTML in send_message (#1709) abdb4660d4eb4bdf0db2223d911ce08438956a5e Merge pull request #1705 from NousResearch/fix/dingtalk-requirements-check ed3bcae8bdbea25757e49d3a0f282875b2cef11c Merge pull request #1704 from NousResearch/fix/hermes-state-thread-locks 75c5136e5a5fd5e01c2332573a563d1aa7246441 Merge pull request #1703 from NousResearch/fix/anthropic-adapter-merge-content-loss 1781c05adbde6517f8e492247a4bc67ddaceb5d2 Merge pull request #1701 from NousResearch/fix/gateway-yaml-pii-redaction f613da4219453c58f1b2bb8b7f8fb1f9c7683a1f fix: add missing subprocess import in _install_neutts_deps d87655afff086b0775fc34e1fe98ccf89f44202b fix(gateway): persist watcher metadata in checkpoint for crash recovery (#1706) a9da944a5d249b8ede47e887ab4a8285984e09b1 fix(dingtalk): requirements check passes with only one credential set efa778a0ef7a2537d2a34151482de5a2785179af fix(state): add missing thread locks to 4 SessionDB methods 8b411b234dee7da499ca1d441206033d79abf70b fix(anthropic): merge consecutive assistant messages with mixed content types ce7418e274aa26949cabed5182457f0851987f69 feat: interactive MCP tool configuration in hermes tools (#1694) 7c9beb5829ad97058ca504f25cdc9810877deaee fix(gateway): add missing yaml import for PII redaction config read 56e0c90445b4037ca8d0f80fd752cbdb6ece22e3 Merge pull request #1700 from NousResearch/fix/redacting-formatter-import 490d37bb804c60b04ef3f37542df9018a9c2c83e Merge pull request #1699 from NousResearch/fix/nous-model-fetch-kwargs ea238721f05d3cab6bcd00baed9a113d722bce41 Merge pull request #1697 from NousResearch/fix/gateway-skill-command-nameref d417ba2a4802767db738f52ff2c8d41fa967acad feat: add route-aware pricing estimates (#1695) c713d01e722d05de7a4e0ad8e9d8b7a420610e0b fix(core): move RedactingFormatter import before conditional block f95c6a221b8a8d7fed08529818abefb03d6434e8 fix(cli): use keyword args for fetch_nous_models (always TypeError) 718d4b013c98e9af60a0f988949b0ecb873cedba fix(gateway): use correct variable for skill slash command task_id d9b9987ad369d5c119c4631d3683455f2227f92e docs: comprehensive documentation update for recent features 9b31bd883e5b791009ab7bc4911b51557d8e8753 merge: resolve conflicts with origin/main (DingTalk docs overlap) d346b6f93f68c39a864a2d1b0774a74978188a15 docs: comprehensive documentation update for recent features ba728f3e63928088495bd79e3641e055e233be8d docs: add DingTalk setup guide and Alibaba Cloud provider to Docusaurus docs (#1692) c1e223580d446c2b81d122d109316908f6802136 docs: add DingTalk setup guide and Alibaba Cloud provider to docs d83efbb5bcdba6baf04c7ded4f8ad6efc6f92e08 feat(gateway): wire DingTalk into gateway setup and platform maps (#1690) 00993b04d4df3b12469bdaed0f836f6b519e40fa feat(gateway): wire DingTalk into gateway setup and platform maps 3cb83404e9e18d311e34571d6d609cbc287c3a0b Merge pull request #1683 from NousResearch/feat/mattermost-matrix-adapters 1ae1e361b71bb919853d68e382d909fc9d2acd5d docs: add Mattermost and Matrix setup guides 016b1e10d7cb5d4372550352d689fcaaa98640c7 feat: register Mattermost and Matrix env vars in OPTIONAL_ENV_VARS c3ce6108e32349ef6635136200e91ad4bce1ff6e test: add comprehensive tests for Mattermost and Matrix adapters cd67f60e0160e5d9f3230953d31a7cbac1e959a9 feat: add Mattermost and Matrix gateway adapters 07549c967aa8bcb1b27cfe4b28d0d08e1633f600 feat: add SMS (Twilio) platform adapter 95690484bb0e78c6ab9a98ca88a93e72b35ab7bf merge: resolve conflicts with origin/main (DingTalk adapter added concurrently) 3d38d852876abd3ac46f8edc607dda903dcfa259 docs: add Alibaba Cloud and DingTalk to setup wizard and docs (#1687) f8ed33af4b37c7695e9992f162a4abce555ae191 feat: add SMS (Twilio) platform adapter 6fc76ef954a7f10d1464c1efa73e7d48f754fb8b fix: harden website blocklist — default off, TTL cache, fail-open, guarded imports d132a3dfbb4e8982b0c209fe7a8b98cabeda55f9 feat(skills): add inference.sh skill (terminal-based, no custom tools) (#1686) aac59fd976c362e7f23a6ea7feec9795c636995a feat(skills): add inference.sh skill (terminal-based, no custom tools) a6dcc231f849cb5561d791fc36241735914ee433 feat(gateway): add DingTalk platform adapter (#1685) c3d626eb07c1be7f83efb2aaad74cbffa6ddb21e Revert "feat: add inference.sh integration (infsh tool + skill) (#1682)" (#1684) 6d1c5d44911a3be7551adc9e97b98c1a0c3ac001 refactor(tools): extract position calculation logic in fuzzy_match (#1681) 30c417fe7092cf0f4b69fc2f1b029d056d9a5e7e feat: add website blocklist enforcement for web/browser tools (#1064) 6020db0243084b02299278929c908951303965e8 feat: add inference.sh integration (infsh tool + skill) (#1682) 9de377850e6589205d5a74760e417eccd87ec621 refactor(tools): extract position calculation logic in fuzzy_match b9ff134f734fb9cfe8120f030fc0c609a4dd9618 feat: add Tavily setup support (#1113) d9a7b83ae3ddf8c5e6182e61e4c6c42987433136 fix: make _is_write_denied robust to Path objects (#1678) 77da011b257a8cf0464cb4e4b176b474d162efba Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 1d5a39e00228b20ec505260f2420e28ebe1c47e2 fix: thread safety for concurrent subagent delegation (#1672) fd61ae13e590e2e09dc780d7301f1c94815a18d8 revert: revert SMS (Telnyx) platform adapter for review ef67037f8ee538ed6995655374ed994b560d4342 feat: add SMS (Telnyx) platform adapter 71c6b1ee992fa17cb47632092ef463cc758a0fce fix: remove ANTHROPIC_BASE_URL env var to avoid collisions (#1675) a1c81360a57d3c7f6d677f31183cc2dfbfe66b13 feat(cli): skin-aware light/dark theme mode with terminal auto-detection d15694241977530cb1440cc21b0857f28d855ca2 fix(telegram): aggregate split text messages before dispatching (#1674) 7042a748f5773f962d508721639fcdceb5c81bd8 feat: add Alibaba Cloud provider and Anthropic base_url override (#1673) d9d937b7f7f429bd466cbb18f6a92766fbcb8324 fix: detect Claude Code version dynamically for OAuth user-agent 65be657a791364140edfeed3229cedd9ece42660 feat(skills): add Sherlock OSINT username search skill 46894c4486f25a9f3f1680db00fddde27f4c1822 fix: detect Claude Code version dynamically for OAuth user-agent f2d9e409bfb2889806d519901bea5ef33372eb2f Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e b197bb01d3ef7ba81ab07980316d36bdcaa60ae3 docs(configuration): clarify self-hosted firecrawl setup a3ac142c8329e715ccc4c667cb3d67898ce24706 fix(core): guard print() calls in run_conversation() against OSError 342a0ad372c6b76015e52542b08dcaf8ce7860c2 fix(whatsapp): support LID format in self-chat mode (#1556) 87048ba54142b0d0fb7a4c3c30c436869aaced85 fix(whatsapp): support LID format in self-chat mode (#1556) 35d948b6e18525654cf8a12db8109f1322b7def8 feat: add Kilo Code (kilocode) as first-class inference provider (#1666) 6c6d12033feadf636414751df463a90423991e26 fix: email send_typing metadata + ☤ Hermes staff symbol (#1431, #1420) 6229e48000e84507840031e25ff6de3ab655b1dc fix: email send_typing metadata param + ☤ Hermes staff symbol 926afb4685a96f8c111928ba0ddb6d4f0caf2bd0 fix(docker): add explicit env allowlist for container credentials (#1436) e6083209f28ed3da33780ef62bad1780e55b2ea8 refactor(tts): replace NeuTTS optional skill with built-in provider + setup flow 8e8b35e868108e3ae1ba002f79b3a42b2ede4c2f perf: use ripgrep for file search (200x faster than find) 556e0f4b4326cf7e04e7095e7946583bce8b4296 fix(docker): add explicit env allowlist for container credentials (#1436) d50e0711c25cbf95b74a1c41250615ace4603295 refactor(tts): replace NeuTTS optional skill with built-in provider + setup flow e2e53d497fc0f39c54673b2c63da058caa154083 fix: recognize Claude Code OAuth credentials in startup gate (#1455) 693f5786acba7b03766dc6ad7e0997d259305692 perf: use ripgrep for file search (200x faster than find) 83f3dfc7c2950bcad8630dd6fd6904f04766ae47 fix: recognize Claude Code OAuth credentials in startup gate (#1455) fe01f0b122a82fc22baa56b0fc011239b4f3d827 Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 9ece1ce2de7c7696991700cfee5a0e4180637708 feat(gateway): inject reply-to message context for out-of-session replies (#1594) d4810d8c4b391586074650d5b2ecdda222c5455c feat(gateway): inject reply-to message context for out-of-session replies (#1594) fb83d5d86d35c5603d0def06a0817d5d736f4837 Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 36a76bf9db3ce32abd5882a71a48289f647098e7 Merge pull request #1661 from NousResearch/fix/discord-thread-persistence d0faf77208d943ec2dc7d146a26fd677cfe04466 fix(gateway): /model shows active fallback model instead of config default (#1615) 753f94a44d54b224a8a58623444c0352314c5cf8 fix(gateway): /model shows active fallback model instead of config default (#1615) c8582fc4a2f14be2a466090698b9ca1b1d485968 fix(discord): persist thread participation across gateway restarts b76f4b2110e075db5e395240aca67949f1f4879f Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 60b67e2b476ef8b4f70e9fa1b3447fff73a95045 fix(gateway): cap interrupt recursion depth to prevent resource exhaustion (#816) ef7c41b58f1a4ca86c2a3f6c16deaa52d159c305 fix(gateway): cap interrupt recursion depth to prevent resource exhaustion (#816) 2c7c30be69d09b37af5c4317bea74a835cbcbee0 fix(security): harden terminal safety and sandbox file writes (#1653) 6da65dc9f0d385004b6a6885ce20854570a117c5 Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 6a320e8bfe6077595c6bf7a1ebf98b1d917b3540 fix(security): block sandbox backend creds from subprocess env (#1264) 95076d7e57cd22f56c2125efb8ed69587fb74066 fix(security): block sandbox backend creds from subprocess env (#1264) 3bd0fa2baba1a5f85f638b2d788b3ba86760e214 Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e cb0deb5f9da5f7af6f2c533630f72953249d3cd9 feat: add NeuTTS optional skill + local TTS provider backend 766f4aae2b2f640a83712d20151f6e9ce7a86342 refactor: tie api_mode to provider config instead of env var (#1656) 4e66d221511bf0f72abb77ac252c53c35901e494 fix(claw): warn when API keys are skipped during OpenClaw migration (#1580) f824116ff95605d5785ea362a8e60bb6f3fc2275 fix(claw): warn when API keys are skipped during OpenClaw migration (#1580) 1b48ce9578d5c32a566614db5d5a9b48b5aa7baf Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 8992babaa393cded8a2af8262a0092ad2c755b1c fix(cli): flush stdout during agent loop to prevent macOS display freeze (#1624) 4cfecd41a68111c4355ca5ec20171181da3b6e97 fix(cli): flush stdout during agent loop to prevent macOS display freeze (#1624) afc9ad0b31742f2a5bfc3fcda095ac0d99c8b733 Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 49043b7b7d079d527c74f65c4960f4efb0375bc8 feat: add /tools disable/enable/list slash commands with session reset (#1652) f2414bfd457def93f10c895999346b56e60ee239 feat: allow custom endpoints to use responses API via api_mode override (#1651) 68fbcdaa0659449246794bbc924226b54b1cc3b1 fix: add browser_console to browser toolset and core tools list (#1084) 7d91b436e47d07fcc9bb9e4584a27c3fd1103f32 fix: exclude hidden directories from find/grep search backends (#1558) 40e2f8d9f0df6bfceccd16ce27df561395beadd1 feat(provider): add OpenCode Zen and OpenCode Go providers 4cb6735541dbaeed524679db31567ca1bcff7644 fix(approval): show full command in dangerous command approval (#1553) 0351e4fa9000ab5c65ed822475d545833772369f fix: add metadata param to base send_image and forward in send_animation 667395ddd393d9db6ec112e7e50ba48e56e6d557 fix(approval): show full command in dangerous command approval (#1553) 9b7dbb1a493f32ff0a5a0d18fff24a6dd181a1df Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 1b2d6c424cf4e140e727cc01feefb0ff24945976 fix: add --yes flag to bypass confirmation in /skills install and uninstall (#1647) 28c35d045da654e0346580f676071588f9cb6da3 Merge pull request #1537 from aydnOktay/improve/skill-manager-error-logging 1f6a1f0028e1d5bcf1a3621f53ad1e16b6398ad0 fix(tools): chunk long messages in send_message_tool before platform dispatch d7029489d6c6f1c30b1fb29c5b3eeae09ab093ae fix: show custom endpoint models in /model via live API probe (#1645) 12afccd9caeca2753009c9835942c35e7e892de3 fix(tools): chunk long messages in send_message_tool before dispatch (#1552) 993abca05c8c4d9b41e93eb2b4b3e53112b4fa8d fix(tools): chunk long messages in send_message_tool before dispatch (#1552) 81f76111b07ebae5584d13613ccbd35af3a555c7 Merge pull request #1560 from eren-karakus0/fix/singularity-preflight-check a1425d7fb5198d738c322a8dac91c434d36d854c Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 96dac22194d5aca03413b29728b24cc483c657b3 fix: prevent infinite 400 loop on context overflow + block prompt injection via cache files (#1630, #1558) 2d368195032f012e9636a5e9a7ea7c0e45aca196 feat: add Base blockchain optional skill 26b2fc360f914985bba0ac94fcfe38ed5403fb05 fix(skills): detect prompt injection patterns and block cache file reads e1e702abc5d1dcfd8a0ce28e0d0075051902b6da Merge remote-tracking branch 'origin/main' into hermes/hermes-6bb9911e 8e20a7e035191279810af736e2169b5bbf04428f fix(gateway): strip MEDIA: and [[audio_as_voice]] tags from message body 4920c5940fe09c97b0ab15ff2076583399d94a67 feat: auto-detect local file paths in gateway responses for native media delivery (#1640) 37441183115371ad4a5e20078d24ce4e0ad443b3 feat(cli): two-stage /model autocomplete with ghost text suggestions (#1641) 75a2b77b0d0b606ffec34416c4f66545ed6846f8 fix: prevent infinite 400 failure loop on context overflow (#1630) 5ada0b95e9cd4f9faafb37e87b06e3be65b3b9b6 Merge pull request #1609 from 0xbyt4/fix/context-counter-cache-tokens 19eaf5d9567ccce767c2dcf624ef347b2094eed5 test: fix telegram mock to include ParseMode constant 365d175100f2178fb4514734b75bcde33270eb7c fix: apply MarkdownV2 formatting in _send_telegram for proper rendering c3ca68d25b6dc65fbef9b433d414e42eb30714c4 Merge pull request #1614 from PeterFile/fix/launchd-service-recovery eaa9ceeb43d38447105e7ae2c20a9b29a9dfc5df Merge pull request #1621 from Death-Incarnate/main 949fac192f9975f4634dca843b6bafd8bf81899a fix(tools): remove unnecessary crontab requirement from cronjob tool (#1638) 4b96d10bc3560f504c5e94e98ba3c50ce15790db fix(cli): invalidate update-check cache after hermes update c16870277cd224ebc53fdaf23cc31cb79a10acff test: add regression test for stale PID in gateway_state.json (#1631) 247e3c1470581bfef58612e0905a22fc20815011 Merge pull request #1632 from nidhi-singh02/fix/stale-pid-gateway-state 2af4af63903479f0b0a790d3b19de006b2d3e3f8 Merge pull request #1635 from NousResearch/hermes/hermes-a86162db 749e9977a03f1306351de33ae3e68dbf8eabca37 Merge pull request #1629 from NousResearch/hermes/hermes-6891ac11 1c61ab6bd9ecf2b92c77fcc882bffa82a660a60c fix: unconditionally clear ANTHROPIC_TOKEN on v8→v9 migration e9f1a8e39bfbe5358720bcc586aa4249abefda5e fix: gate ANTHROPIC_TOKEN cleanup to config version 8→9 migration b6a51c955eec5184969da71ed998c3defbc67487 fix: clear stale ANTHROPIC_TOKEN during migration, remove false *** detection 634c1f67523a3de4e95652dc000491fda154bf43 fix: sanitize corrupted .env files on read and during migration 6ebb816e5611aaf1f3f7187ba8b10e985e899c75 Merge pull request #1634 from NousResearch/hermes/hermes-a86162db 37862f74fa1e32c2c25699fc91f20310728d6d78 chore: release v0.3.0 (v2026.3.17) 67546746d484ed4b9f1014ba4de70c3ca853f919 fix(gateway): overwrite stale PID in gateway_state.json on restart d44b6b7f1b094ef06302dda8069df2802466ca4e feat(browser): multi-provider cloud browser support + Browser Use integration 3576f44a577fcbc03a65e5fc3193b0d51dae45ea feat: add Vercel AI Gateway provider (#1628) 6da42d5ab01ccfc51772863fb4d6cafc5819575a fix: move AI Gateway below established providers in selection order 3ea53b8eed3936490447b93c2593dedc39611e8c feat: switch MiniMax to Anthropic Messages API for reliable tool calling 4768ea624d7025b6505d011fd3f2be6496fc072d fix: skip stale cron jobs on gateway restart instead of firing immediately 77612a552c47e4afaf2a2d0c37dd62962a5bebc3 revert: use gemini-3-flash as AI Gateway auxiliary model 27311bad8f4d9c5f74a99bbe7310dcfc28168bd4 feat: use claude-haiku-4.5 as AI Gateway auxiliary model b7590bcee54eb1568a690ea05701f40c5e8f755d feat: add AI Gateway to hermes model CLI and model metadata ab9456618247bfd99948a6a88de12f1149281877 test: add AI Gateway to api_key_providers test suite f191e35bb9987dda75224fe2eacc29f8eab567ee feat: add AI Gateway to setup wizard, doctor, and fallback providers 20f84ae176ae5c46e0bbc794395290b3dea3d525 feat: add Vercel AI Gateway as a first-class provider e3f9894cafe97d457db1ee945eb92752545afb60 fix: send_animation metadata, MarkdownV2 inline code splitting, tirith cosign-free install (#1626) 19c8ad3d3d612b1ef74d80ea1a9035ac9d0d3e0f fix: add Claude Code user-agent to OAuth token exchange/refresh requests bd3b0c712bf303c465e9a4162c641e5d70acd2e1 fix: make OAuth login URL prominent for SSH/headless users 46176c8029ce5c6cd7f0314d8672f9098d0b92fa refactor: centralize slash command registry (#1603) b79806250143350013f8a9c315890d92bfeba5cf fix: improve OAuth login UX for headless/SSH users 63e88326a80466d6108df2f089ca712bf55810bc feat: Hermes-native PKCE OAuth flow for Claude Pro/Max subscriptions 474301adc6c1903a3944c32cf0bb1c256a0d2083 fix: improve execute_code error logging and harden cleanup (#1623) 496ed0e78b00c9dffcd5581731f64a437903a293 fix: harden execute_code cleanup and reduce logging noise 3304bc93a4d88f241eb66864619d307798b21ca6 fix(tools): improve error logging in code_execution_tool 285300528bf915700a4449cedb629565c9a0b327 fix: isolate test_anthropic_adapter from local credentials 673f13215115682dcc0ab6c915e59f5c8de006fe fix(gateway): Recover stale service state 8d0a96a8bf7f8ee96f94da8f45ccfb8138b0d8c5 fix: context counter shows cached token count in status bar cfa87e77a9c0cffc73de61d24c29d9bf89934a50 Merge pull request #1598 from NousResearch/shloms/ascii-video-v3 60e38e82eca9c68e831506eeecf1b348699302cc fix: auto-detect D-Bus session bus for systemctl --user on headless servers (#1601) e323e2f876d0e27fdc97196c6ccc0a00ccd0fcf8 fix: show linger guidance when gateway restart fails during update and gateway restart ce430fed4c49ee8996fdb68aead2f4fc4d96a5aa installer: clarify why sudo is needed at every prompt (#1602) 4b3fc47de9fe6f56d90580a89788d13a84cd96a4 installer: clarify why sudo is needed at every prompt 452ba358045992d3700f03a8e2369e492a3a9432 fix: auto-detect DBUS_SESSION_BUS_ADDRESS for systemctl --user on headless servers 6794e79bb497f71f174974c0afa2a6d8265a6b77 feat: add /bg as alias for /background slash command (#1590) 181077b7859b7a17d2367389e66d9eec1aa997e3 fix: hide Honcho session line on CLI load when no API key configured (#1582) 63635744bf2a5d98b7f84c443bdb4ec78a62a18b Refactor ascii-video skill: creative-first SKILL.md, consolidate reference files 2158c44efdca7b5e182d649f88e079d5b90943d5 fix: Anthropic OAuth compatibility — Claude Code identity fingerprinting (#1597) 79e88c6bd9fe9fb64be65a221ce995f92fa2d183 fix: Anthropic OAuth compatibility — Claude Code identity fingerprinting e6cf1c94a82414a8c71761018125bdd836806cff Merge pull request #1585 from 0xbyt4/fix/anthropic-error-handling d998cac319ec2c8d72175bbdbb91a87309e707a2 fix(anthropic): retry 429/529 errors and surface error details to users 6c84e26e70651b16fd20f396b8cbc4a8c30ab599 Merge pull request #1538 from NousResearch/hermes/hermes-a098c323 f4d61c168b5fe8c0c7e07e1e81ba9a82787eaaeb merge: resolve conflicts with main (show_cost, turn routing, docker docs) 8feb9e4656ab12458ad68a0a433b79bac42a6adb docs: add streaming section to configuration guide 25a1f1867fa9fbe6732e8c246934955ca54f8e61 fix(gateway): prevent message flooding on adapters without edit support 5e5c92663dbf8c02e24797106d3a39ea46e1cab6 fix: hermes update causes dual gateways on macOS (launchd) (#1567) 942950f5b9aaba74a60c7d400b839f70807d3696 feat(cli): live reasoning token streaming — dim box above response d3687d3e817eaf98f983e8bd6358e825074340c9 docs: document planned live reasoning token display as future enhancement 43b8ecd172dbe9a7d8e20cf9fb019d6378a84c1b fix(tests): use case-insensitive regex in singularity preflight tests 606f57a3ab7c8488afd2de0fb0bfc1f02c287cd8 fix(terminal): add Singularity/Apptainer preflight availability check 23b9d88a763c33c080c404246967c4e1b50b901e docs: add streaming config to cli-config.yaml.example and defaults c0b88018eb8c95d139ac590cf60da5789cb6ca15 feat: ship streaming disabled by default — opt-in via config fc4080c58a4deef04e49d5ead4ccffc5d7170a68 fix(cli): add to streaming tag suppression list 91b9495b047a7bb8e6636131d1a4ddc7490ef0af feat(browser): /browser connect — attach browser tools to live Chrome via CDP (#1549) c2769dffe0f1af585874cab12e350bfb54e9e150 merge: resolve conflicts with main (plugins + stop commands) 71e35311f59f84b548534831a354b8307a346bf7 fix(browser): model waits for user instruction after /browser connect 97990e7ad55dab24260408c0dda666aaa3cbbf56 feat: first-class plugin architecture (#1555) 73f39a77614e1f72782f152803c547d168ee4420 feat(browser): auto-launch Chrome when /browser connect finds no debugger 70f935b81c6c3abb8525247e3e6416f5e13f6f27 feat: first-class plugin architecture with complete docs 1ecfe68675aa81f3e728c8099ef2b2b3e5b18e81 feat: improve memory prioritization + aggressive skill updates (inspired by OpenAI Codex) 447594be286ed0ab858b4d8878d9bc4202d8bf98 feat: first-class plugin architecture + hide status bar cost by default (#1544) 4b0056159030638288bbbe9c3bbe1b661913c49d feat: add optional smart model routing 9d1483c7e64765e2f1be511c83e415e2baee0529 feat(browser): /browser connect — attach browser tools to live Chrome via CDP b95395c010c0f65d1f036457bf4b0b3ae1c6c33e feat: more aggressive skill creation and update prompting 8e07f9ca560fc0c81d91ccd2702ddd8539201e5e fix: audit fixes — 5 bugs found and resolved 9d2e1124555f2c8b2a450b85b7b2ca7cba5f88f0 feat: improve memory prioritization — user preferences over procedural knowledge 885c5dc5e623dbe0aa4fb3eea3fd8926aad542be feat: context window usage warnings at 80% and 95% 57be18c0268941a51c9ad08681ddfdbace228869 feat: smart approvals + /stop command (inspired by OpenAI Codex) 99369b926c1b55bc79d69f219975332a43080764 fix: always fall back to non-streaming on ANY streaming error 2633272ea98ec82e99aff86d1cbfa597ddb23e53 feat(privacy): redact PII from LLM context when privacy.redact_pii is enabled (#1542) 2ba219fa4b96fa649807d881e643ea3f00c735d0 feat(cli): add file path autocomplete in the input prompt (#1545) 9a423c348737d2240665060c0f9ad371ca13835f fix(privacy): skip PII redaction on Discord/Slack (mentions need real IDs) 5479bb0e0cd76a7a4406f7ee90839ac9950046d1 feat(gateway): streaming token delivery — StreamingConfig, GatewayStreamConsumer, already_sent c51e7b4af7844f09ebe6cb866332a579cc781562 feat(privacy): redact PII from LLM context when privacy.redact_pii is enabled 7d2c786acc6f3925294588f86b453c6aff0de108 Merge pull request #1534 from NousResearch/fix/1445-docker-cwd-optin b72f522e30fbdc75e6bb50714e9063d00388672c test: fake minisweagent for docker cwd mount regressions 352980311b3ac224cacaec89ecdfd0b5cf43d722 feat: permissive block_anchor thresholds and unicode normalization (#1539) b411b979cbb2224679a512b650397ae82a182e53 fix(telegram): retry on transient TLS failures during connect and send (#1535) ac739e485fea9b423181cad8869cb30666060a6a fix(cli): reasoning tag suppression during streaming + fix fallback detection 8758e2e8d704424a7c7ce2a4de56da34a7ab8424 feat(email): add skip_attachments option via config.yaml 17e87478d230134b1d290321f589d87e5bcb248c fix(gateway): restart on retryable startup failures (#1517) a5359e61e76e518b8af7320ea4616f6f35869370 fix(tools): improve error logging in skill_manager_tool 25b0ae797918a9d724167e570deb397208c01b8c fix(telegram): retry on transient TLS failures during connect and send dfe72b9d97287d00810b2d56a3fef097b993d151 fix(logging): improve error logging in session search tool (#1533) 780ddd102b1a8c8d1231ad44fd2035ced289d124 fix(docker): gate cwd workspace mount behind config 8cdbbcaaa25f882bde6482a76c1f753edbd96f23 fix(docker): auto-mount host CWD to /workspace a2f0d14f2925ad52c2a5b485a14af0ba46a091a3 feat(acp): support slash commands in ACP adapter (#1532) 2219695d92a4d91505a247ead482b5c63c1d51d7 test: 14-test streaming suite — accumulator, callbacks, fallback, reasoning, Codex d23e9a9bed94795e5af7919082ec1ecf897f50cb feat(cli): streaming token display — line-buffered rendering with response box framing add945e53ceee41b2ace816c947e39da25b18544 feat(skills): add blender-mcp optional skill for 3D modeling (#1531) c1ac32737d57179373911eb88fe7110fbe9c4dba feat: unified streaming infrastructure — core delta callbacks for all providers 14b049d658344057021630b7ab99f5391323fdeb feat(skills): add blender-mcp optional skill for 3D modeling 002c459981cb3a12aa284b2304bc87605f19552a fix(gateway): remove recursive ExecStop from systemd units, extend TimeoutStopSec to 60s ce660a4413254794baf5578060998f56451e7c55 fix(gateway): remove app-specific Athabasca references from vision enrichment (#1529) ee579af566f40680e6694f609e6686c761eff16e docs: add CLI status bar docs and update /usage reference (#1523) caa944e752c872919d24bffd5fe200933ed0c187 fix(setup+gateway): defer config write, PID-based gateway kill, scoped systemd service names (#1499) 00110fb3c3713a2f304be17df321db448b5b5cee docs: update checkpoint/rollback docs for new features 3543b755afbf5e899273bfdf5c9996e443a9658f fix(docker): auto-mount host CWD to /workspace 51185354dd00580cee3e89882a83c5b26331f01d docs: document scoped systemd service names for multi-install 9e845a6e5370eb28789f825126a8d86eae3a1c9d feat: major /rollback improvements — enabled by default, diff preview, file-level restore, conversation undo, terminal checkpoints 00a0c5659894b05d29e6658aa9d6c5bc5cf3bf27 feat: add persistent CLI status bar and usage details (#1522) 30da22e1c117c0ddafdb13096b12ff7202e725f2 feat(gateway): scope systemd service name to HERMES_HOME e7d3f1f3bab68794fcb7b05039970429d40b4bc1 fix(update): kill gateway via PID file before restart c1da1fdcd56900868deffdf3f8026de657005598 feat: auto-detect provider when switching models via /model (#1506) 02e0ee3cd0a415a86c8e3ce2fc3093a4582a6241 fix: make hermes update respect branch upstream f7c5d8a7490423880ec1fa05e26aabe81aa71595 Merge remote-tracking branch 'origin/main' into hermes/hermes-6360cdf9 9cf7e2f0af279c395571c1a60c582f5b942ae28f Merge pull request #1495 from NousResearch/fix/814-group-session-isolation dd7921d51443bcd6b9225e2759d7ad161c5c40db fix(honcho): isolate session routing for multi-user gateway (#1500) eb4f0348e1f6505f58cb4e30e62273332df4650f fix: persist CLI token counts to session DB for /insights 38b4fd3737409c3cb9552e911876eb33f0b80807 fix(gateway): make group session isolation configurable 36dd7a3e8db3ec186102a7c5f102b4b0342a1073 fix(setup): defer config.yaml write until after model selection dd698f6d5d189e50b88ff1cdb3bc34ecfb89facd fix(gateway): SSL certificate auto-detection for NixOS and non-standard systems (#1494) 06a7d19f986fa744b8e48cca46ecc300a5074135 fix(gateway): isolate group sessions per user 3801532bd3bc84de7ccd9cabb748b354f44b690e fix(gateway): SSL certificate auto-detection for NixOS and non-standard systems aaacab7de75c0f3b841b9ae1ae98d4739cf7c06e docs: explain checkpoints, /rollback, and git worktrees 4298c6fd9acab69544f4855370b6244735c0b0cb fix: route background process watcher notifications to Telegram forum topics (#1481) c30505dddd09ad69a36b40baacb6efe93a7ca384 feat: add OSS Security Forensics skill (Skills Hub) (#1482) 70e24d77a17be3e4e1e86e5f0a4eae8889c580a4 Merge pull request #1490 from NousResearch/fix/1033-telegram-voice-fallback fa3db2671a77d7dc32928ca0f8e0d4d729a1df43 docs(readme): add CLI vs messaging quick reference 6fd9f2a0c523e8879f0ef4e402992a435367de32 fix(gateway): null-coalesce mode in SessionResetPolicy.from_dict (#1488) 1f72ce71b7d03e9d7498c4d97d4d746bea46588c fix: restore local STT fallback for gateway voice notes 102a25557502c1c11eb3cd4794d20587882c3902 fix(gateway): null-coalesce mode in SessionResetPolicy.from_dict 5beb681c7066621903b3e3fb39fd82146fd7207c fix(cli): prefer curses over simple_term_menu in setup.py (#1487) 8625d746b4d722069c8f0af3c187d95bd2c88994 fix(cli): prefer curses over simple_term_menu in setup.py c9a9db318e5fa8b6cc513dec7b12369da845bf12 feat(tools): persistent shell mode for local and SSH backends (#1483) 01e62c067bf4fa3f420549b2b5f64305c3078d4e merge: resolve conflicts with origin/main (SSH preflight check) ceb970c559e312086d5e1f445e89a29c6c1346b0 fix(terminal): add SSH preflight check (#1486) 3dca48fece5ca280cbc32245e62a5c958c29b1b6 fix(terminal): add SSH preflight check 6894358fe1756020cd198dfe4b00177d8cee90fb docs: add persistent shell section to configuration and env-vars reference 3f0f4a04a951bd5d64ba1f1c00be4f01945774fd fix(agent): skip reasoning extra_body for unsupported OpenRouter models (#1485) 1933478ecd652daa4f2d67dafd588292183c1f2d test(agent): cover reasoning extra_body gating 81f759712656a086f7c31e870e4142d8c26c9466 fix(agent): skip reasoning extra_body for models that don't support it c564e1c3dc52f9a72fced8e9bf796a44451195a9 feat(tools): centralize tool emoji metadata in registry + skin integration (#1484) 210d5ade1e6351650218357a1d1cfa3fb5d58f20 feat(tools): centralize tool emoji metadata in registry + skin integration 33ebedc76d4c36de7a5fb10520d0ca196b9e8dca feat: enable persistent shell by default for SSH, add config option 5b806541988faf07daec4313facafbf3ab5a508d feat(tools): add persistent shell mode to local and SSH backends 25e53f3c1aafc7392422d61175dfc01754c7db8e fix(custom-endpoint): verify /models and suggest working /v1 base URL (#1480) 832a27c17ecdd62adc3443bf30c28a0db5b2a6bf fix(custom-endpoint): verify /models and suggest working /v1 base URL 103f7b1ebcc02c22b44b3def3f98568988d79bfc fix: verbose mode shows full untruncated output a56937735e2f57bd6c307ed92b66ff04376c2d9d fix(telegram): escape chunk indicators in MarkdownV2 (#1478) b458591aad3336f347433c238d1770509fce9595 fix(telegram): escape chunk indicators in MarkdownV2 7148534401bf8e272b0c1639e37cbb22895f38fd fix(gateway): make /status report live state and tokens (#1476) b2aff451ede8009544102ca0402a43622cb4b212 fix(gateway): make /status report live state and tokens 4e91b0240bb20864531410e2533b89ec87367522 fix(honcho): correct seed_ai_identity to use session.add_messages() (#1475) df5838ff27a6b0fb6743bbffc59bd13fdd2ac9e1 fix(honcho): correct seed_ai_identity to use session.add_messages() 5e92a4ce5a67f3ac836d8baf3ccaa01920d66364 fix: auto-reload MCP tools when mcp_servers config changes without restart (#1474) 9c2ec6a2d9adcd7cd0787d84edaccbc66dc54441 fix: auto-reload MCP tools when mcp_servers config changes without restart dd808a7c436eea872caa826db20aafa37b9bb1a8 First pass at a vercel log analysis skill 471c663fdf73f9c17ebf26baad2ff9edb83eb331 fix(cli): silence tirith prefetch install warnings at startup (#1452) 8fd60223b69752b603e896fbec0a4a2b65119725 fix(cli): silence tirith prefetch install warnings at startup 64d333204bb2e32cc90a58b5ec5a4db127396dfc Merge pull request #1242 from NousResearch/fix/file-tool-log-noise c44af43840bdcd7a5cab4a2c93a8868b03c6456b Merge pull request #1401 from NousResearch/hermes/hermes-eca4a640 b54591dddadd437305c6022808b8fb483a4227c3 fix(docker): require explicit env allowlist for container creds 4511322f5633a35200865eeb09b4e3e18d9bdeb6 Merge origin/main into sid/persistent-backend 934fc9df221cb24402bac442db46318cf083800b Merge pull request #1440 from NousResearch/fix/1071-dict-tool-args 5847c180c6eb276d3aa2ab85915e4b2bebc4d5d1 test: restore vllm integration coverage and add dict-args regression 93a0c0cddd792733873706702fd94ca27cd96a13 fix: handle dict tool call arguments from local backends 23e8fdd1678b7dbb03020eacf400ad86b8df0007 feat(discord): auto-thread on @mention + skip mention in bot threads 4ec2ad31823e03287a14b5348d96ecb38d1a7798 feat(discord): auto-thread on @mention + skip mention in bot threads 3268b9877987778753771a0eaa4639f23ca70825 Merge pull request #1437 from NousResearch/fix/1219-cron-thread-context 20f381cfb67d02bb21ff1a4a088af720bb6c8807 fix: preserve thread context for cronjob deliver=origin 77bfa252b985c2093643ec19aeadd12b35cea7c7 Merge pull request #1434 from NousResearch/fix/1244-env-override f24c00a5bf8845fd07e059cce3ded7056af9fec2 fix(config): reload .env over stale shell overrides 463239ed85ea6dd633a79f8e8de387afa6ac2fdc docs: fallback providers + /background command documentation 60cce9ca6d0b72d89cc882ad74ee77f25b5bebae Merge pull request #1429 from NousResearch/fix/1336-discord-voice-reliability 2d57946ee9ee97d8878f075dbb0372f0532c9c37 test(voice): clarify install guidance and local skips 5f32fd8b6d599c8a5b61f7e8c67b476cb80fd8b7 feat(voice): add discord-voice-doctor diagnostic script 3ea039684ee23f7890be86cb3c548a6f3e748751 test(voice): add integration tests with real NaCl crypto and Opus codec 63f0ec96ecbcb88529ca7ce0b10a00720f355494 test(voice): add comprehensive flow tests for voice channel fixes 1cacaccca69e84ab48b084264612874d8b1adac2 fix(voice): show clear error when voice dependencies are missing 773f3c1137b12b6ba6bc84a7ca4eff640219511a fix(voice): DAVE passthrough + auto-map SSRC after bot rejoin 0cc784068d5acff9d15dba59e293733946ed854c fix(voice): add UDP keepalive to prevent Discord dropping voice after silence f1b4d0b280e223bbac010e98705db09faba8af23 fix(voice): make play_tts play in VC instead of no-op 5254d0bba1d4e39e3cccd9355c5d1320ad80f53e Merge pull request #1427 from NousResearch/fix/1414-gateway-shutdown-restart 21c20aeaa52af687705595c63d40611933d0fd1f fix(gateway): cancel active runs during shutdown dc095f84918de801f9ce7e2c625eaa5d4fd89f91 Merge pull request #1425 from NousResearch/fix/1412-session-delete-prefix 621fd80b1eb591dc06507e4432486e64a336d699 fix(cli): accept session ID prefixes for session actions 2b8fd9a8e343dcf4cb7e07f05fd43ac11d245729 Merge pull request #1422 from NousResearch/fix/1409-photo-burst-interrupts fef710aca879e7ce0540299a39395faa9a7f509e test(gateway): cover photo burst interrupt regressions 4ae1334287a575c7ef079e7e38ab659ecebfebe2 fix(gateway): prevent telegram photo burst interrupts db3e3aa6c5c2e3fc8dbd77ab79492a59f34bbde2 Merge pull request #1421 from NousResearch/fix/1247-preserve-mcp-toolsets 633488e0c08c9bcb1e4c28e744a274d072ac9540 fix(tools): preserve MCP toolsets when saving platform tool config 0de200cf4d60991932f8ef16e6af6553a89f1985 Merge pull request #1419 from NousResearch/fix/1264-env-secret-blocklist f6fdb18fe6ea7fe4431f28e5f17a7c667afb8ad3 Merge pull request #1417 from NousResearch/fix/1056-dm-session-isolation b177b4abad1dffd60bc2e1527af8917d1ed7442f fix(security): block gateway and tool env vars in subprocesses 232ba441d73a1f90104202a9100792c87c93c017 test: cover DM session key isolation 34e120bcbb4d9b2b76122a7f93745007a8833032 fix(gateway): enforce chat_id isolation for all DM sessions 92971403fd1460f8293539ea965bfdc4ae86dad6 fix: smooth google workspace auth recovery and gws token handoff 779f8df6a6c2a3fc63d2b2e8754e64fc9c3754dd Merge pull request #1408 from NousResearch/hermes/hermes-daa73839 62abb453d36c41a371ded9329c3befb09829fca4 Merge origin/main into hermes/hermes-daa73839 735a6e7651a003053c92dd109aa96ce00e4e8e8c fix: convert anthropic image content blocks f8a835e476a22b47ba507941953132bcfa564eef fix: harden google workspace oauth setup UX e5ddca1c8b0b12f0c2592c30b39587a062ebf683 Merge pull request #1407 from NousResearch/hermes/slack-thread-docs 214827a5944c0075d5063eff5052b05f65761d56 docs: move Discord behavior guidance to top fd0e1aac728b259d04e93b737228c48b0597e081 Merge pull request #1400 from NousResearch/hermes/hermes-45b79a59-clawhub-search 678e0bd9cc7e983c5fb504d33520b9e5ce8f71bf docs: clarify Slack thread reply behavior 8ccd14a0d4c1788af7f71b5987ec80c6c417e122 fix: improve clawhub skill search matching be58335be0d28590f5110bd6c415f21fe54af741 docs: smooth google workspace setup instructions 6c611c852e2b7f317107babdf2c610df0384056d fix(update): clarify manual autostash cleanup f882dabf1946f22dd04de95167357bb6e4d6e904 fix(update): clarify manual autostash cleanup 973aa9b5494011674ed6808b6e1dcec3544ddafe fix(update): drop autostash by stash selector 2316b8dc988fe36ee0f0436c2f2ff1bf2b1c9ab3 Merge pull request #1405 from NousResearch/hermes/hermes-7ef7cb6a 259208bfe433710acf6077fa7f34e5bf238405ad docs: stabilize website diagrams 47c5c976544dabf3db057e9393b0bdcf42942757 fix(update): drop autostash by stash selector 818e72ea287a86611f9473cef5a99280e5e42ece refactor: route google workspace operations through gws when available b117bbc12534e26db8aecb8d90e9c88394b0e1b5 test: cover atomic temp cleanup on interrupts df9020dfa315d0cdfa1a1d129e4bb75106887e57 fix: harden clawhub skill search exact matches c6fb7f646385bc26db15ebf8284315ff4b790ef1 Merge pull request #1399 from NousResearch/hermes/hermes-629f8bde 672dc1666f6c90099c18e6a5ef51f74ec5efec85 test: cover extra provider env blocklist vars 5b11570517bc14a444ba533e574589d53d0f4091 Merge pull request #1398 from NousResearch/hermes/hermes-1b6f4583 ff87a566c4c4b7d25ed01463f4ced76a5cdfe091 fix(test): make Nous setup prompt selection robust to optional vision step 9e3752df363bb08ee1b8836f4f5cd99531588bd9 fix(#1002): expand environment blocklist for terminal isolation 15bf0b4af21cec766e4aa520256d6b70eeb4ab21 Merge pull request #1365 from mr-emmett-one/fix/deepseek-multi-tool-calls-989 28b3764d1e2c015585fe9dca017fed8f3664ebb7 fix(cron): support per-job runtime overrides 62f1c2b622ae770a733c8f06388a0ae704deb175 Merge pull request #1397 from NousResearch/hermes/hermes-629f8bde 71cff92eb7643b1793d1a1d5924befc5c22a0aad Merge pull request #1377 from NousResearch/hermes/hermes-aa701810 1337c9efd824c317d9cce2e52b06cdbd1e4c322b test: resolve auxiliary client merge conflict 747612fb3e85467bb14db716ca8d35a560e7206c Merge pull request #1396 from NousResearch/hermes/hermes-0fadff1b 84d99f7754c770c0745bba168b8472b4dd2db50f Merge pull request #1394 from NousResearch/hermes/hermes-eca4a640 4524cddc72ccf248505d30888b594e1d19804cac fix: persist google oauth pkce for headless auth f4e8772de4326db63e0f3d10a511ad216ddb40e3 fix: require oauth creds for native Anthropic 39fe9e8533f882cadd09dcc65699b0403d184b67 Merge pull request #1395 from NousResearch/hermes/hermes-7ef7cb6a d5b64ebdb32e96848b25d337a76380123b258c60 fix: preserve legacy approval keys after pattern key migration f8ceadbad0c0aaaacbda59ed8293fc806b867f84 fix: propagate STT disable through shared transcription config c36136084a86a37cf6abee7ffe98301d3d780d03 fix(gateway): honor stt.enabled false for voice transcription 4a93cfd8891c79c07c8ac7b88ae3b1cdd47cea6f fix: use description as pattern_key to prevent approval collisions f46b35e3d100e1169a86cf2e14fdf1d8c399d952 Merge pull request #1393 from NousResearch/hermes/hermes-45b79a59-pr1087 e6417cb7bc9f74c4249d60dc083470fed27604ea fix: escape parens and braces in fork bomb regex pattern 08081e59692e2f3d81a556650c3ace19e2129248 Merge origin/main into hermes/hermes-7ef7cb6a 30120f05a66d93a75b780c1a3d471dacc320ca2a Merge pull request #1392 from NousResearch/hermes/hermes-1b6f4583 6f852835535084a189f0023c67aa0507bb03dfbc fix: use json.dumps instead of str() for Codex Responses API arguments 9a177d6f4bb6dfd4206a8c9b4e7ef9054ec05901 fix(discord): preserve native document and video attachment support 6761021fb4e9ee62e94c0f03148c79290f8ce893 Merge pull request #1391 from NousResearch/hermes/hermes-629f8bde 00c5e77724b1974805f879ec160a78d06a553736 fix: prevent closed OpenAI client reuse across retries 69045711c1d8d734fd33853dd7d3c7581d31476c Merge pull request #1389 from NousResearch/hermes/hermes-7ef7cb6a 9938d27e27960de9ac931cf5fc080bb1ab561412 test(telegram): cover disconnect with inactive updater d36b3d498d839157689e9ed577575aa51453c0fe Merge pull request #1388 from NousResearch/hermes/hermes-0fadff1b af4a63d794203ba8198983abd8a0b1308e7becaf fix: Preserve MCP tools when saving platform toolsets (#1247) 0c182211a134fba08526469de1c5a811d59efd6b fix(telegram): check updater/app state before disconnect f4c012873c7205cb28f959f1524fdcaa17eb5cee fix: harden salvaged worktree include checks 8ac5baf2d81b4ffda5093ca3aa1e089d0a870b8f Merge origin/main into hermes/hermes-7ef7cb6a c54db79edcb5cdd17dd05e453fbf2ab90d62408e Merge pull request #1387 from NousResearch/hermes/hermes-eca4a640 2119b6879968e10e9d78aff59f31c00dcfaae5af fix: clarify Slack setup guidance fd687d09678c3b1b11eddf3fd011f8bc57feaf05 fix slack docs reference 12bc86d9c92e602ded6f81fa34d7deb6175e5896 fix: prevent path traversal in .worktreeinclude file processing 9e0f86cd3b139680230728458583b802e604af59 Merge pull request #1386 from NousResearch/hermes/hermes-7ef7cb6a 883f6c81a2ec6156a22572545049764a5dc34c63 Merge pull request #1385 from NousResearch/hermes/hermes-1b6f4583 b89177668ec6eaecbea9eaca8fc949f195ba4b96 fix(cli): non-blocking startup update check and banner deduplication 9f51de726185332e3f8afa91b9ac0957afd653d2 Merge origin/main into hermes/hermes-7ef7cb6a a05a4afa5369e873e08d299c6c6cab62b99b7bff fix: align salvaged Discord send test mock with current slash-command API db9e512424c8e87b6c86b1386804772454a5346a fix: fall back from managed Anthropic keys 8ce66a01ee50a3cae9540a388090a3b3bc64ed5e fix(discord): retry without reply reference for system messages f9a61a0d9e8d56b6066f62cdb868fb434c8802e9 Merge pull request #1383 from NousResearch/hermes/hermes-7ef7cb6a ba9f82946d6d1c9d741f32d6e77e2b68b805349b Merge pull request #1382 from NousResearch/hermes/hermes-0fadff1b 0614969f7bb20abeb4cca35d03535003b7653e06 test: cover repo-root imports in execute_code sandbox f6ff6639e819ac48934e8914fca38e5863c5d106 fix: complete salvaged cronjob dependency check 861869cb48a2779ade57bfa452b3fc04a63deb20 fix(#878): add robust crontab binary check to requirements 23bc642c8296829f42737be6c40077ea70ec5867 fix: add project root to PYTHONPATH in execute_code sandbox 9c322f7f59765dd0f0b67ae3288e73d62bdf87db Merge origin/main into hermes/hermes-7ef7cb6a b14a07315b5f9420f4396085501d743a01352c8e fix: save /plan output in workspace (#1381) 459b00254c9e44b0a5061fd0aadf380019746b95 fix: save /plan output in workspace 4f4e2671ac8c5ad2968f7bb411bb41a6b0647ed1 test: lock retry replacement semantics ff3473a37c704b86a4809c349f1627bd83f1c4da feat: add /plan command (#1372) 1dbaefed064aa313664dc97f698b67f0515e68c7 merge: bring /plan branch onto current main cb7690b2b508211dcdc33c55f221b9e8707685ad Merge pull request #1375 from NousResearch/hermes/hermes-dd253d81 95939a1b5130c4a04bf67eaacbbb7ea7af5bd3f3 docs: clarify gateway service scopes (#1378) 85ef09e5207c30a7a0a7dc861b8e72e6029b466b Merge origin/main into hermes/hermes-dd253d81 6b1adb7eb1523aad36a324cbb39aa089e97bf1f8 Merge pull request #1376 from NousResearch/hermes/hermes-781f9235-docs 9eddefde0700f7d317580855b4fa97bc1e1192cd docs: clarify gateway service scopes 6dbb09c9ccd11dc889230462f479ba4d3a38d238 docs: document /plan skill db362dbd4c0e6f1b4b3a8dd5a8b2688aa18eec66 feat: add native Anthropic auxiliary vision 282df107a5f0f3a86dc4c01a5efb0c5c401ab4f1 docs: clarify saved custom endpoint routing 9f6bccd76a0a64d9251620e5c713e34f9df4649f feat: add direct endpoint overrides for auxiliary and delegation 248279823d82d0358bf839346924973e669f5922 refactor: back /plan with bundled skill 168a8e2e35c101eb9379212d9f64593420610117 feat: add gateway install scope prompts (#1374) a86b487349a8d5571cf8e99000fa9fe7704952b7 Merge pull request #1373 from NousResearch/hermes/hermes-781f9235 629dd4b1321f716f11eade87d3c8f47de46e189e feat: add gateway install scope prompts 53d1043a50af4226e95d6e56f8cce854e6da2024 fix: restore config-saved custom endpoint resolution 6c24d76533144bfdd38602b8c52a6d985866ba09 feat: add system gateway service mode (#1371) 11f8744ddc261d115639f3c54be45fc4cac0cb06 feat: add /plan command 30b73bdf3480b4b9105c54ac16cf339832d796c0 Merge pull request #1368 from NousResearch/hermes/hermes-dd253d81 31db8c28a476379dc2ca572182fba7b69debf5fe Merge origin/main into hermes/hermes-dd253d81 6f46f84b26037f3af2487c46272befa54f3383a0 feat: add system gateway service mode b3f5c6525abc863821de134104d235202582e23e feat: add direct endpoint overrides for auxiliary and delegation f549981293d043d86fc37d92dbe8b42895572017 Merge pull request #1369 from NousResearch/hermes/hermes-aed06679 2a6dbb25b26231d2e60ce5ca5d983cda134f6f01 fix: exclude Coding Plan-only models from Moonshot model selection 0fd0eb93e86e2d05b3626ba66fe1ebee1d605dd3 fix: resolve cron auto-delivery target after dotenv reload 88a48037d1c16a91607531250f55ef2f31042d64 Merge pull request #1367 from NousResearch/hermes/hermes-aa701810 dc11b86e4bca3887e0eb6307d6311a6326f7b9ea refactor: unify vision backend gating b045e08ed23870e623ed04a30c7e379f36e93609 feat: add workspace roots management 26bedf973b5005a9f5501e17770ca69338702015 fix: support multiple parallel tool calls in DeepSeek V3 parser (#989) fc5443d854e5329315580e52cdfdcd59c00b5a5b Merge pull request #1360 from NousResearch/hermes/hermes-aa701810 799114ac8bd2fcaa88ac8939f2e5bf30a68ea4aa docs: clarify Anthropic Claude auth flow 7ad10183aee3ec1f30b43192fcc87c1773fd3965 feat: show workspace status in cli banner 70ea13eb40cbc12dbf9c5e33859b4253c13488b3 fix: preflight Anthropic auth and prefer Claude store 0bc5aba5d061c6879df31c5fd99a9f0eb8c09ad6 Merge pull request #1363 from NousResearch/hermes/hermes-6be30215 f8a3e37f54f9a2ec4e8deecb0e84cba86c0a19ce Merge pull request #1343 from NousResearch/hermes/hermes-5d160594 3229e434b8361a7bc3f3b16691e2bb5b077bd53f Merge origin/main into hermes/hermes-5d160594 24f61d006a7184f57840e9edd6a6576e1a9108d8 feat: preload CLI skills on launch (#1359) c050c2d552e1a5a40780912f443e6a73998f4b5f docs: fix messaging gateway diagram alignment 81cd367aec02a5efc3e193c3954403292f9321c7 Merge pull request #1362 from NousResearch/hermes/hermes-e1bd76eb b41de7ed7e53882dbccbe29c5b28ab02594e8467 feat: show activated skills before CLI banner e099117a3be9cdbd65e9fb930db0109da4e2efcc docs: complete voice mode docs 2536ff328b18f3155695b87f59c7ec31629e129d fix: prefer prompt names for multi-skill cron jobs f3a074339dba956f566ebb269ce42c74e30ffafa Merge pull request #1361 from NousResearch/hermes/hermes-10683759 62f5965650f31b3ad6a7235c5c7499920c0d0ef9 test: cover continue with worktree and skills flags ea053e8afd8daa73acd3b55fa55b1364c00c3392 docs: add provider contribution guide e052c747275a5fb399078f754dc4b3d2ba370cd8 fix: refresh Anthropic OAuth before stale env tokens a6dc73fa07dde760203a3c8da4c76b8401adc194 docs: finish cron terminology cleanup c3ea620796798a517ff7d0a69f7853da4fd4ce49 feat: add multi-skill cron editing and docs 413037f6f690958f6e823a946d753285ccf59e94 feat: preload CLI skills on launch bff650559e5aa7437980a84902f3eadc7402785c feat: add workspace setup flow and docs 7b140b31e679cfd4e9cdf419814a4e344ed66c01 fix: suppress duplicate cron sends to auto-delivery targets fa89b652304fb31af5f8473611671e6c57821ec2 Merge pull request #1355 from NousResearch/hermes/hermes-ec1096a3 a19f33596ee3387e77d533095f05ef8a854f2e24 feat: finish workspace retrieval pipeline ed0c7194ed64b716f8ad5aab6e860505591af4d6 fix: preserve current gateway update and startup behavior dc44e183e63500abf33ae5f50909364336304f21 Merge pull request #1341 from NousResearch/hermes/hermes-2f2b4807 79c81b22443fc4082cfe2c3ce49868bc54611056 Merge origin/main into hermes/hermes-2f2b4807 e266530c7d7ca316e1a522d59193811ee840959e add different polling intervals for ssh and local backends. ssh has a longer roundtrip 879b7d3fbf8b1b214dbf844f0e6a58d018415da7 fix(tests): update mock stdout in env blocklist tests 9f36483bf4570a521a50e1759810d03fcb9c01d7 refactor: deduplicate execute/cleanup, merge init, clean up helpers 7be314c4561cffc89fd9c5bf1c0f504037167266 pass configs to file_tools for r+w over ssh. pass TERM env. default to ~ to in local and ssh backends. ssh backend. 9001b34146e80bcf39728d64b3b28ea085f0b210 simplify docstrings, fix some bugs 861202b56c453eee8b47db190ca5541dc8e85eb0 wip: add persistent shell to ssh and local terminal backends 9d63dcc3f9eab2c67923229c519a321295b0d40b add persistent ssh backend df5c61b37c80513badd3912faca81d83fdaf1208 feat: compress cron management into one tool b2bdaecf9b8aa5282da7984e3e5b1d85c047610d Merge pull request #1340 from NousResearch/hermes/hermes-1fc28d17 3fab72f1e17f33bc7328219fde4c39b054051e17 fix(gateway): clean up pending Telegram media groups on disconnect e1824ef8a6c22fe0e97d15c6c9fca631e44168ee fix(cli): fall back to main when current branch has no remote counterpart f3a38c90fc64028956fe30902f934ece75424bfd fix(gateway): fall back to sys.executable -m hermes_cli.main when hermes not on PATH a748257bf57fb6845db0147d46bde1f8b810f9d8 Merge pull request #1339 from NousResearch/hermes/hermes-048e6599 8fb618234f3edfff57b5511b13082158bbccdf4a fix(gateway): buffer Telegram media groups to prevent self-interruption 5a2fcaab39a8f2765c724b4ae01d2c0afd0a6b1d fix(gateway): harden Telegram polling conflict handling c207a6b302383313e96c2f27fb782046c72c3f6e Merge pull request #1338 from NousResearch/hermes/hermes-1fc28d17 9177179b3d39c287738a485e496ab2e02fa4a60a feat: add local embeddinggemma backend path 7dc9281f056203bfdfe3e9e0e28674be6d08225f fix(vision): surface actual error reason instead of generic message 2d18b077e144397fa012f4575b444f734bac3551 Merge pull request #1337 from NousResearch/hermes/hermes-2f2b4807 eb8226daabc56cc3f89fcc9eab2d135758e91d91 fix(cli): repair dangerous command approval UI 60710bc8f8f257e802f3c9b7c99e81aa718489df Merge pull request #1335 from NousResearch/hermes/hermes-ec1096a3 0a3bc907918ac3c1d9582608b13f0e00d83de8ab feat: add workspace retrieval and turn injection 7f485f588e10a202001f07e2fcc5fa4db88b4d0b fix(test): provide required model config keys to prevent KeyError on base_url f8e4233e67916e7524e9757df312bf46a4d57164 fix(test): isolate codex provider tests from local env leaking API keys eff0d23dd91db0aef15664ae34a423b1bc267de8 Merge pull request #1334 from NousResearch/hermes/hermes-1fc28d17 f10e26f731ece83e750ccfec86f46753e918e827 fix: auto-enable systemd linger during gateway install on headless servers 1114841a2cdd24497742c023d149d3bceab3065b Merge pull request #1329 from NousResearch/hermes/hermes-2f2b4807 5319bb6ac4b8280cdf8c257b2fd97f746ada31a7 fix: tighten memory and session recall guidance 80a243efe666871d695b345ffa3001875e9caf9d Merge pull request #1333 from NousResearch/hermes/hermes-1fc28d17 c1d1699a64c7bee391d5af895ba76648714cb214 fix: align salvaged browser cleanup patch with current main 889c3e287746d352cd12c5fee9801736c83df931 Merge pull request #1330 from NousResearch/hermes/hermes-048e6599 b8832022f162a1b61eda0510c8c7c1fc30e9d00c feat: add workspace foundation and search tooling 895fe5a5d3454d8ffcdd39d236056b6bb56d353f Fix browser cleanup consistency and screenshot recovery 21ad98b74ce2223f443ba628acd8ad9b47149e7c fix(cli): add --yes alias for skills install 3325e51e530b42712f8828dfef843b7bda942e6f fix(skills): honor policy table for dangerous verdicts 588d4c293cfc441b3c75d07ed73549803cfb8d0d Merge pull request #1328 from NousResearch/hermes/hermes-ec1096a3 88951215d36882c8df0cd98bb6302c0636ef7790 fix: avoid custom provider shadowing built-in providers 4422637e7a3b0731cb161edc2459119918da84c3 fix: resolve named custom delegation providers 6d8286f3964640b98602ea38215674aee1299cde Merge pull request #1327 from NousResearch/hermes/hermes-048e6599 94af51f621de55c1f8ebbe0dbc6c2a54ad4fd0ed fix: harden trajectory compressor summary content handling e5dc569daac34ba0a5f82069ce78c6fb7a25917c fix: salvage gateway dedup and executor cleanup from PR #993 9834e6283560a887882d26431f391d5e9d74d275 docs: add workspace knowledgebase RAG spec 14738e0872c77f28153d9542745d279954b6a787 Merge pull request #1323 from NousResearch/hermes/hermes-1fc28d17 d2e2d6e2a282d4b8d5ac399d1efef2a2ef7781af Merge pull request #1322 from NousResearch/hermes/hermes-2f2b4807 ee73b6bf27eb56daac6601e70d614f8a372dccdc fix: persist default openai vision model in setup wizard 429c44e37787a77882c622790f8b77fee8b89d69 Merge pull request #1320 from NousResearch/hermes/hermes-ec1096a3 14415250167ae7a222f96114259f594135c664a0 Merge pull request #1319 from NousResearch/hermes/hermes-048e6599 2054ffdaebdf63804ff9bf82cd5b9a897799eb49 fix: smart vision setup that respects the user's chosen provider 0d23ad7a152751a1176289f7d4ed3a5f94ae49e3 fix: cover remaining config placeholder help text 9ec3a7a21bcfa973d35cdb715c2740db3daf8b36 fix: mark config set arguments as placeholders 577b477a784be109c7b08a57acda5ab0ced8f232 fix(test): add missing session_id and _pending_input to _make_cli fixture fbdce27b9a1c6378366e22c2161e7eda558da788 fix: address prefix matching recursion and skill command coverage a50550fdb442b2dced799332a2f9b63a23a80888 fix: add prefix matching to slash command dispatcher fbd752b92b0b2f90c412f7a68f56ffff2a2e5ee1 test(cron): add cross-timezone naive timestamp regression 6d2cfc24e9c2da6b4742138f05d1b1f765497ee6 Merge pull request #953 from JackTheGit/fix/docs-typos-batch4 e5186a0bad0691a057aa720f91e7009b28471372 Merge pull request #1316 from NousResearch/hermes/hermes-315847fd c6cc92295c6d4f984217e8c5bcd2522dd1a36595 Merge pull request #1314 from NousResearch/fix/discord-import-safety b26d60c2abb853d3ae09664df434d1bbbf6c5c5d Merge pull request #1317 from NousResearch/hermes/hermes-aa653753 a3b6e3c1ca46002cd1cc6a3ce0cdce62e6bbc12e docs(skills): add integrated hubs reference section f43c078f9e07aadc4a2e20fe09e134925dbbe2e1 docs(voice): add comprehensive voice mode guide 681f1068eabef70983ba555b181cbb9b59bb262a Merge pull request #1303 from NousResearch/hermes/hermes-aa653753 5e6c2ccbc9aeb548692ef434ed385a8be365ea80 docs(skills): cover skills.sh, well-known, and update flows 6c0bf2824e76dafffa6f700001ee336da31118ec Merge pull request #1315 from NousResearch/hermes/hermes-315847fd f8b30d1035cb4f4588c8504897ae6e8d6fb6725d docs(soul): add comprehensive SOUL.md guide 8f3d7dfcc060d8ddda6004da8e9117a3c8012a56 fix: defer discord adapter annotations 8d5563b3f6dfd4371132be7e5075bd3f9cdfbf30 Merge pull request #1311 from NousResearch/hermes/hermes-315847fd 05770520afe248b7ae9da43dd3857f1647160d66 test(skills): isolate well-known cache in adapter tests 43d25af964a13c7363eecb4f896f1b01df63669f feat(skills): add update checks and well-known support 66f8c2d5e8a6baad3a883b6d9efd317c13d927f3 ascii-video README: add missing sections (value fields, SDFs, coordinate transforms, temporal coherence, feedback buffer, masking, OKLAB, design patterns) 906e25f2997fb9a1d27143059cdc5fb41bedbe56 feat: seed a default global SOUL.md 707f3ff41fff9ae04dce1882bdaa43452150094a refactor: tighten MoA traceback logging scope (#1307) d1a1a09a708a6dd2e95765fefe485e868c50aca1 Merge pull request #1310 from NousResearch/fix/gateway-lock-hardening eb8316ea69896aebe917b7b4db4b795929cfc0cb fix: harden gateway restart recovery 02c307b0041e6261a5520398ee565cafed351db8 fix(skills): resolve skills.sh alias installs 75382200e1ea9cc26cb9cf6282076fae3fda7a72 refactor: tighten MoA traceback logging scope 917adcbaf4a520dc1944b602b9515373e30bacad Merge pull request #1306 from NousResearch/hermes/hermes-2ba57c8a 19f4f8970af01a3ea78b98d680854b1b488862ef fix: tolerate test doubles without model attr 95c0bee7f895e936f6bef1fd4e4652f95f82e9d1 Merge pull request #1299 from NousResearch/hermes/hermes-f5fb1d3b 82de0b191b62b72cac786f28d4bbc499dbb4e469 improve: add exc_info to MoA error logging 8602e61fca868c5437552c0920ac26f1c0fc7bd3 test: cover gateway session model backfill 2046a4c08cb24323444c4f161371a8e24b5df8b3 fix: backfill model on gateway sessions after agent runs c1cca6516855098eef3c795b3c77410aa959c39f Merge pull request #1302 from NousResearch/hermes/hermes-315847fd 67e80def53b57cddc2efc37949830659cbfc71e3 docs(mcp): add comprehensive Hermes MCP docs 63309065b65163c2d5b2e5fdde02d049300cde2d Merge pull request #1305 from NousResearch/hermes/hermes-2ba57c8a 71cffbfa4f84c55649610d59dc22a5968ab8654a fix: verify SMTP TLS in send_message_tool 9633ddd8d843e919b238c9355be78c22d1751e80 fix: initialize CLI voice state for single-query mode 344adc72a1b1b9cfae95dc10a82b63aba1ebe33e fix: update email test mocks to use imap.uid() instead of imap.search/fetch fa72f4ff558c72a22d2e66d50da13aa41c252a5a fix: email adapter IMAP UID tracking and SMTP TLS verification 914bb120350713e178fdd70daa94c120cdd60185 Merge pull request #1301 from NousResearch/hermes/hermes-2ba57c8a 483a0b52336e1fdce00247623b2eee4e2526eddf feat(skills): integrate skills.sh as a hub source 04e151714f21deb8abc95d97a07fa850d35cf0c5 feat(mcp): make selective tool loading capability-aware 2ff03ebafe291621d9b34065c5ac495cf0417288 fix: use non-greedy regex in DeepSeek V3 parser for multi-tool calls (#1300) d2869de4779d28f76ed5c12dc08368cb7e983ce2 docs: tighten Parallel CLI skill guidance 8d61ebe18352b8d0d2cf48f3fd5caaceac4ff1dd feat: add Parallel CLI research skill 7b10881b9e2ae7b6f52d39666a25521f15ef0711 fix: persist clean voice transcripts and /voice off state a0f0f4fe52c7bf3f84e45041e8ed160dc0d852ff Merge pull request #1297 from NousResearch/hermes/hermes-5556ee7e 3198cc8fd9cc1741fdad5be0f0f26cedef2eda9b feat(mcp): per-server tool filtering via include/exclude and enabled flag fb3c16361271411d6f566321e5c489e60c06506f fix(gateway): surface missing linger in status and doctor (#1296) 6fa197f97327d12266e7ae332e55480e76561c2c Merge pull request #1298 from NousResearch/hermes/hermes-aa653753 00a0f1854427bdb9f49baf84031389998f41f4b4 fix: clearer terminal backend requirement errors 523a1b6faf293f71279d0582af55516f96997f4c merge: salvage PR #327 voice mode branch dd6a5732e70b68815e1410bc5c6ca6b7a2d7dfb4 docs: fix salvaged PR #980 troubleshooting details 767b5463f970111b487cdfd13b22a2781b583df6 docs: add terminal backend and windows troubleshooting acc669645f7f431f40b024e82f3ca74097a9e847 Merge pull request #1294 from NousResearch/hermes/hermes-315847fd 42c778b5ebe43799daf9b80384fd32a776ce76a2 fix(update): warn and prompt before restoring autostash f764c7135dbbaaa2eec4ddf732c1a66b2106e9e8 fix: auto-stash local changes during updates b646440ca0a600bb5bb8bb258ee1b62a1f59ad93 fix(mcp): resolve npx stdio connection failures (#1291) 92c14ec4b02b6a0edfe0a26c03e855efd016add0 fix(test): add missing voice state attrs to CLI stub in skin tests eb34c0b09a471d2193bb2e2ac74bbe10396954c1 fix: voice pipeline hardening — 7 bug fixes with tests 7a241680800b6dfa171133bdf92d8131379542c6 fix: add missing choices/Choice to discord mock in test_discord_free_response cc0a4534760458495fe18d59f8995ed7870e43f6 fix: address PR review round 5 — streaming guard, VC auth, history prefix, auto-TTS control 35748a2fb02c6cf8016bcfe481f34abcc64cce0a fix: address PR review round 4 — remove web UI, fix audio/import/interface issues 1ad5e0ed15e4cca57ec78821bc5ce5e5187ebb74 feat: add voice channel awareness — inject participant and speaking state into agent context 49f3f0fc6240739229031846ed6d0a465a068d13 fix: add choices/Choice to discord mock for /voice slash command test e3126aeb4076e9872122011b5cc036d1f367b02e fix: STT consistency — web.py model param, error matching, local provider key 41162e0acaec36cf579ba76b04b3d976f5ca6369 fix: prevent shutdown deadlock and unblockable Ctrl+C on exit 69cb373864fc35aefe56aa6a368885eb16ce2514 fix: update /voice status to show correct STT provider eb052b1b42e2b8f399011e8340c9bf611bfe3cad fix: add explicit metadata param to Discord send_voice signature b8f8d3ef9e55f6e98f2d8b00ab3cb0bc5cc3bf3d feat: integrate faster-whisper local STT with three-provider fallback c433c89d7d6a3d5d35839b1007c0ea81cfe1b029 fix: demote RTP debug logs to DEBUG and isolate web sessions fa2c825e2fda1d94b01cd6070f0ba11010b30b2d fix: isolate WEB_UI_HOST env var in test and handle empty string 5b47b87c42c3dc8a5a372944da83328966d17a03 fix: show only reachable URLs in Web UI startup message a21f518c0b082de061383195114d6045f3fdd249 fix: hide configured token value in Web UI startup log 44abe852fb98352b8184ec3dcff146010443ebcf fix: add macOS Homebrew Opus fallback and fix shutdown dict iteration c797314fcf5ffbfc4260984aced869be837318c0 test: add security and hardening tests for voice mode fixes 0ff1b4ade2e8ee56d4d9037f3ae9a89cb16ca899 fix: harden web gateway security and fix error swallowing d646442692f15cff0ca738e5d34d6ba5341e5720 fix: restore Anthropic interrupt handler in _interruptible_api_call 0a8985acf9dfdb8596d2e883a25125e2b553c311 fix: add missing load_config import in _show_voice_status 2c84979d778a76d107c85912f1d3c88135ac2f3e refactor: extract get_stt_model_from_config helper to eliminate DRY violation 3260413cc7fa3b735b6b1dfab3b0e7f503acfddd docs: add STT override env vars to .env.example 238a4315458df478cd22c1fc03cf8f42388bee50 fix: make STT config env-overridable and fix doc issues 79ed0effddcd7ca8787098cd90ddf8fe909276a4 docs: fix 3 inaccuracies found during code-vs-docs audit 9722bd8be0254e175361b92b8477cb2167b69d0a fix: 8 voice pipeline bugs with tests proving each fix c925d2ee7698739f044afad32435feb1fe8fedcf fix: voice pipeline thread safety and error handling bugs 34c324ff597a141b1f37c6028770c695d18de37e fix(test): use real _strip_markdown_for_tts instead of duplicated copy 86ddaaee9c24b80920221b64e0a6064b10f883af fix: extract voice reply logic and add comprehensive tests 0d56b796858e347692527370c3b1063ad7fb135d docs: add firewall and mobile HTTPS troubleshooting for Web UI 3431f73c969d54c2283c7b07bb17cfd0c1843d6e fix: show mic button on mobile Web UI with HTTPS warning fbf47e9ff6267ebc0a8adc2cce96b62436e50abd fix: allow voice reply in Discord VC despite skip_double guard dcb84a8d30c362892ba25eae7efb4e2537798d91 test: add double TTS prevention tests for voice reply logic 095815d5201f1f10be635bae00fb854c9207ce11 fix: skip gateway voice reply for all platforms on voice input 62e75cd158a0a9c429412a4eeb7c57babbe9e48a fix: skip duplicate TTS file attachment when bot is in Discord voice channel 815e83952eec7bec6f05e61095e2f5578e208519 fix: prevent double TTS on Web UI voice messages e21a13488bf5d616933472ffc307fe2dc800136e docs: add Discord DM usage and mention requirement to voice mode guide 1b10c3711d99d4dff1bd2a8069a92007da5d45d8 fix: accept **kwargs in send_voice for Discord and Slack adapters f078cb4038d144bbe7868252d911ae2b07b56dff fix(test): isolate WEB_TOKEN env var in test_web_defaults 6205f061fe0d848ac0137d88ec3b81f2e4799b0d test: add comprehensive tests for web gateway adapter c477f660da7d464b2e405421bae27575a315a626 feat: add continuous voice mode with VAD silence detection d3e09df01aaafda9bfa106c4e6c0b88f2be5b26f feat: add voice conversation support and futuristic UI redesign db51cfa60ed028711a748a64df7733170a6726e7 docs: add Web UI setup guide and update gateway docs 536be3e0f6ce9dc740a23c26a8393f144adc7490 fix: show correct LAN IP when VPN is active ddfbc22b7c99ea2f0a17a6d5954e7d642b4105fe feat: add /remote-control command to start web UI on demand 4e3b14dc692b148ef30c533c3aaea9346437cc83 docs: add Web UI config to .env.example a3905ef2890f42a129bead139358b4114badfe82 feat: add web gateway — browser-based chat UI over WebSocket e50323f73098c821619f998d4d5668836cef3ad7 fix(test): add missing _voice_mode attr to GatewayRunner test stubs 75bd5a582b444df481c2b79ceeffc867714a8829 docs: improve voice mode docs with prerequisites, startup commands, and platform links 2bb2312ea275edfff0c07667f86faad87876a5cc docs: add comprehensive voice mode documentation c0c358d05123d15476a640226b0915fa57dd2853 feat: add Discord voice channel listening — STT transcription and agent response pipeline cc974904f8a6ff9e07bc364b400d1de69c9dcb06 feat: Discord voice channel support — bot joins VC and speaks replies cbe4c23efa064c6572af6bed547c989b509a2508 fix: Discord voice bubble + edge-tts mp3/ogg format mismatch f6cf4ca8263a801a2113959e5667b41827aaaa36 feat: add /voice slash command to Discord + fix cross-platform send_voice d80da5ddd8b959f3038a0c8131a0e3c22f38898b feat: add /voice command for auto voice reply in Telegram gateway 8aab13d12d97ffb3321d5f154a633b6ac4fb81c8 refactor: remove dead _generation counter from AudioRecorder 39a77431e245d8d7ae33fcda3b9d89b2113b025f fix: use shutdown() instead of cancel() on CLI exit to release persistent audio stream eb79dda04be8543c0077459ec64abf46f39aa180 fix: persistent audio stream and silence detection improvements eec04d180aa310e25fec1b877c16834b1363a9d1 fix(test): update play_beep test to match polling-based implementation 8b57a3cb7ecf531099d34f857d55c284cb6388b8 fix: add max recording timeout to prevent infinite wait in quiet environments c3dc4448bf2bb9fb5e07c3c7f54c3ba763e4d30c fix: disable STT retries and stop continuous mode after 3 silent cycles 0a89933f9b44659c03f24cb21f5e8302156d6277 fix: add STT timeout, move finally restart to thread, guard exit on recording bcf4513cb32a462bb90d8a50611b198b7e38ff16 fix: add timeout to play_beep sd.wait and wrap silence callback in try-except 9d58cafec94befc659fcc83054ed97bb06279f4b fix: move process_loop voice restart to daemon thread, use _cprint consistently d0e3b39e6946cd4ec78ae23bc1100031364ae665 fix: prevent Ctrl+B key handler from blocking prompt_toolkit event loop ecc3dd7c630dd6bee5aae7e2a47995012ec5f563 test: add comprehensive voice mode test coverage (86 tests) 6e51729c4cd1461ee9e339ee9b18f3a31e6b62cb fix: remove browser_tool signal handlers that cause voice mode deadlock ddfd6e0c59658440e1f29e571a965c8158429266 fix: resolve 6 voice mode bugs found during audit a78249230c060fc1527dc1e4fa4dc905cb801156 fix: address voice mode PR review (streaming TTS, prompt cache, _vprint) fc893f98f4c2caf3724df774626836d21cc3372f fix: wrap sd.InputStream in try-except and fix config key name a8838a7ae5e1ce530d0847deb76af672d1b96fb1 fix: replace all hardcoded Ctrl+R references with Ctrl+B b859dfab16268da39ac393b1f54407089d32a034 fix: address voice mode review feedback 143cc68946a6009ecaac39c012d3e8c26a474946 fix(test): add /voice to EXPECTED_COMMANDS set in test_commands.py 46db7aeffd022ff4e6bb6586a3b3780c392fcc16 fix: streaming tool call parsing, error handling, and fake HA state mutation 404123aea78ee13f83d5c5d89c6563ab02efa7c0 feat: add persistent voice mode status bar below input area b00c5949fcae98de1495308e36ff971ccc88aa7c fix: suppress verbose logs during streaming TTS, improve hallucination filter, stop continuous mode on errors 3a1b35ed92340918db9a869073937fe46898ec65 fix: voice mode race conditions, temp file leak, think tag parsing 7d4b4e95f1250984ec16ccad8f74db2b285e3e1f feat: sync text display with TTS audio playback a15fa8524843cf950ffda6a4d801276d59ab9c5d fix: catch OSError on sounddevice import in voice_mode.py fd4f229eab0fc76482fe39eb5340b258efa27a5f fix: catch OSError on sounddevice import for CI without PortAudio 179d9e1a22709a6475d931cb4827abc97bd6ca02 feat: add streaming sentence-by-sentence TTS via ElevenLabs d7425343eea6a222bfb01a1ac717067617e80315 fix: fix voice recording stuck in continuous mode dad865e920b8cdd14cbd74794ea265eb448d5106 fix: fix silence detection bugs and add Phase 4 voice mode features 32b033c11ce306d3c30e235d239824e696688f98 feat: add silence filter, hallucination guard, and continuous mode control bfd9c97705c93726ae00dd4431ec8240b99e318d feat: add Phase 4 low-latency features for voice mode a69bd55b5a9926692b096d581d6856c7e2a0fefc fix: isolate GROQ_API_KEY in test_missing_stt_key test c23928d089a35ce6b6ea72785a85aee9d301ffca fix: improve voice mode robustness and add integration tests 37b01ab964a962161480704f67c284f10b368896 test: add transcription_tools tests for multi-provider STT ea5b89825a939bf8fad3fad871a8bf7771d04c16 fix: voice mode TTS playback and keybinding issues ec32e9a5406d32bc8923ffa0be2c196919a57ccd feat: add Groq STT support and fix voice mode keybinding 1a6fbef8a9c046ee2d45da8534663b64453b6502 feat: add voice mode with push-to-talk and TTS output for CLI dcbf958198b18540780a484496ecacb70e336f7c fix(mcp): resolve npx stdio connection failures 1a857123b304935f1069241793c78ee0411ccd70 feat(skills): add optional telephony skill with Twilio, SMS, and AI calls (#1289) d4bb416514ae999e0f7d1491edce4d2e5dc4f1f4 docs(skills): clarify Hermes TTS telephony workflow 02752c83b4656fda2ffb47a5708617d86ea97842 Merge pull request #1287 from NousResearch/hermes/hermes-cc060dd9 a48ebc68f4fc8ce740031348a971153eb13c9495 Merge pull request #1288 from NousResearch/hermes/hermes-de3d4e49-pr976 b42ee3050eb1f1b1dceebb9e78572fb806e82eaf Merge pull request #1290 from NousResearch/hermes/hermes-f48b210a 5c9a84219d605afbca682b9ff3dec86ab2428998 fix: complete send_message MEDIA delivery salvage 50d665939235ce88caf28028edeb79ff022c3808 fix: handle MEDIA tags in send_message tool for native file delivery 37ef6b4a5f677aeaee8af1af889a26844fc9f6bc feat(skills): expand phone-calls into optional telephony skill 9525db913f2076e0f8b8af60fb417775ec3a6ce1 feat(skills): add X/Twitter xitter skill via upstream x-cli (#1285) 3126c60885954e4fd0e3e9c5f8d28bf82a04a642 fix: notify gateway users when updates finish or fail cac238c2a31902e09049bab1b91891127fff9edd Merge pull request #1286 from NousResearch/hermes/hermes-315847fd 7e52e8eb54fa6846dc0d10fec2d2e78456c8ec9a fix(gateway): bridge quick commands into GatewayConfig runtime b127946bc2f429b0337f2fcdbf7670adf70ed469 docs(skills): explain X credential requirements in xitter skill 96c250e53844599d73952a5a1c9a8958bd582f15 test: cover pipe characters in v4a patch apply ce56b4551402ba2b6463edda94f38ae315056dbb fix(gateway): support quick commands from GatewayConfig 1182aeea008d177b51a09c311f4fe845780198fa fix(patch): use regex to detect line-number prefix to avoid corrupting pipe chars cf3dceafe11195cc0140ee70e501609b94c62a5a Merge pull request #1284 from NousResearch/hermes/hermes-de3d4e49-pr964 73591c978adc10434edfa3e420f810df3dfd52a4 feat(skills): add phone-calls skill for outbound AI voice calls 2b7c80b18e10a6b5aaae81466bb7eb0b010f8ee1 Merge remote-tracking branch 'origin/main' into hermes/hermes-3702edad b5a7e807d0ed2aca004ec1872c035b3ddc261b72 test: cover provider label formatting c2c37ef1584132447ef7168cbab71d5dc2ad93f3 Show configured model and provider in status output 4e8f681500836077b5be995700dd2dc6440a6d63 feat(skills): salvage xitter skill from PR #1065 2f8dbe4e77f18e43839001c2752c4be0f49d2969 Merge pull request #1283 from NousResearch/hermes/hermes-f48b210a 95d49401eedb1ce96f0aa499b0964c809ade28bd Merge pull request #1282 from NousResearch/hermes/hermes-cc060dd9 26f8b790c9cc05da57c1aa2c187dd50fca5d5b80 fix(setup): persist provider when switching model endpoints 7901d863dd794b360cf5806b0969599740fb7a4e Merge pull request #1280 from NousResearch/hermes/hermes-de3d4e49-pr944 e9a7441c9b9742859ebe707c8def0d8942a00de6 test: restore default event loop for sync tests 41f22de20fa2afcf914665048642cffc718ac860 fix(cli): make TUI prompt and accent output skin-aware b91cac7b4b948ddaefb9f58d4bd144b8431a9eef test: make gateway async tests xdist-safe (#1281) 29312a23d9e7e153d30253e1a239fa99f158da31 Merge pull request #1279 from NousResearch/hermes/hermes-315847fd 0bb7ed1d9594bd2939afea6e64928ad790b69fa1 refactor: salvage adapter and CLI cleanup from PR #939 397d78253cb1c3a912925c42c2bfb56d963fb088 Merge remote-tracking branch 'origin/main' into hermes/hermes-3702edad 21f322b9253c1326d01f3125b89c74e4d5c24033 test: make gateway async tests xdist-safe f279bb004f00e1368f0e958a40e2eba8cfd53a54 Merge pull request #1278 from NousResearch/hermes/hermes-f48b210a cbbba87099d2d99a3e24250f7528274e203f77ef fix: reuse shared atomic session log helper 6036793f607637ef06bb7d7f3f92931960e3a75d fix: clearer docker backend preflight errors (#1276) f685741481c129455b42dd67418c1f684597e71e fix(agent): use atomic write in _save_session_log to prevent data loss 115dd17b3c69b5dde4590b28e061ad5310eddea4 test: fix gateway async test event loop usage 31cf535be6a504f403bd4020726a480d7e2783ea fix: preserve docker discovery in backend preflight 486cb772b858497f77a4b210e883a5827350f805 Merge pull request #1275 from NousResearch/hermes/hermes-f48b210a 59786656c50a750fc65465d90b001e74e9098437 fix: clearer error when docker backend is unavailable d1f2a34266e2a3d7a0f4249d1b23c21ce5d24e87 Merge remote-tracking branch 'origin/main' into hermes/hermes-3702edad 11e6775f98ce3bcd29333d3ba395c3c630b3e636 Merge pull request #1274 from NousResearch/hermes/hermes-de3d4e49-pr920 52ba940c9b04077c235fbfa1888d390d5c208ca0 feat(gateway): add reasoning hot reload 9492f42aa7489b2ab89742ed4bd9259246f05b8e fix: cover headless first-run setup flow 5c479eedf1baa8d7229c867513b2805d58e7873c feat: improve context compaction handoff summaries (#1273) 4aa94ae7cc13eba71f2b55afe7ba259025ad6805 fix: detect non-interactive TTY in setup wizard to prevent hang 98742879f81b7a3096091f0982bc0535b3064d08 feat: improve context compaction handoff summaries 728fa66ef05beb8c821bc038e0528d192ac455ce Merge pull request #1272 from NousResearch/hermes/hermes-315847fd 1e23d145684609c3b9a1ff19e3e54324d6d3e2ba fix: log prompt builder skill parsing fallbacks 1117a210654b7b53f0196e72024c004fe08ca5f9 Merge pull request #1271 from NousResearch/hermes/hermes-de3d4e49 936040d8f7b8a9364ba0ecebb9ececf398d2f1ba fix: guard init-time stdio writes c122a53744e392d3210c92a1fd01fd93fd5945e5 test: pin context compaction handoff prompt 7e714ac48e22318e82d03d9b18c1db1eb2aa6e9c feat: use Codex-style compaction prompt for context compression 74d7964688acd009ed31b3b9a6de181a696d962c Merge pull request #1259 from NousResearch/docs/internal-systems-and-acp d87a1615cefb16b6f1c4c6933a09be7942d1c923 docs: add ACP and internal systems implementation guides 1869e8816909c1acc9b9ff459c49fc9b466a7489 Merge pull request #1256 from NousResearch/hermes/hermes-720acdad 6f1889b0fa228dc74af0efe7b3c804f3c3c725d2 fix: preserve current approval semantics for tirith guard 4250a7eb9063c56f297655ff1a2ff4e552867558 Merge pull request #1255 from NousResearch/hermes/hermes-7ef267b0 f5cf1f8a459d8ee8f0b3c3f4fb62e015e77b333d fix(cron): tag persisted cron sessions and test wiring 375ce8a881c717878293990a6d0b43e5c83a9a9f feat(security): add tirith pre-exec command scanning 9283877204b08d25e39a24bccdcf8f8f93fc92f6 fix(cron): pass session_db to AIAgent so cron messages are persisted 29176f302e4853b80cc01a56f257208861c55627 fix: sanitize chat payloads and provider precedence (#1253) 25481d42863c7121180330c5abe6e50f7dd480d7 feat: restore ACP server implementation from PR #949 (#1254) 2fe853bcc9ad6f8e96fb687822d6827486558bc8 Merge pull request #1251 from NousResearch/hermes/hermes-f7e92273 2166292157a5163cad744090e505c74cfd679bac fix: clarify provider precedence docstring 163fa4a9d1ea2d3601efc9fc004ee04425d1732f refactor(cli): implement approval locking mechanism to serialize concurrent requests a628c607f0abf6ecad444f256a2ec705df6af395 fix: preserve chat kwargs identity when no sanitization is needed 08208323f294772df15996e3408cd11605bb545c test: cover fireworks tool-call payload sanitization 358dab52ce02944dfe479fa448cc0d2d3537413d fix: sanitize chat payloads and provider precedence 806b79b5897b91d77c36390a5cf9bca3d55300ce test: cover errors.log handler reuse c2a7921f3bc8f96f3cd07c8777dc901655005cf9 fix: prevent logging handler accumulation in gateway mode a20d373945904af5892596463f768aa494d0d6c3 fix: worktree-aware minisweagent path discovery + clean up requirements check (#1248) 78d852013f9c2709b531e0f415ad1c3cb558e58f fix: worktree-aware minisweagent path discovery + clean up requirements check df7a86f04117f3c3bf704090438228746c7aa694 fix: restore terminal and file tools in worktrees 21422dba44f7bf41a7316ea961c23189655bce9d Merge pull request #1239 from NousResearch/hermes/hermes-07d947aa b59da08730977cb9c584eed5e2d94bb4274d7ec8 fix: reduce file tool log noise 329f83ff2defd6b8b80c6f8f447903c72d788c2e fix: stop local terminal warning without minisweagent af8791a49d3d07c9f193a36995fa115e372ced5f test: fix stale CI assumptions in parser and quick-command coverage (#1236) 7c3cb9bb3139a4424ad8efca91345927d05dafc9 Merge pull request #1227 from NousResearch/hermes/hermes-07d947aa a154a138112af3e3728475f172d326d03fb83831 Merge pull request #1237 from NousResearch/hermes/hermes-58b0a1f1 253d54a9e17f3a265fb29742fb2059e986a85d87 fix(cli): make /new, /reset, and /clear start real fresh sessions a1a90f3f10893c20ae94cbf89b7d534f378d520e feat: require runway before prune-only compaction 55729670bec151fac46a4b447c49786dcb2f25a9 docs: add cache-aware compaction design note 22990ed3789338d399b41f5a1297310212e313e2 Merge pull request #1233 from NousResearch/hermes/hermes-7c22e5c1 206e56cc5e0d799ab3a824185b8dc0be65fe888f fix: finish HERMES_HOME path cleanup 984f00e0b0922ebc61b1891c3251b2991173bd2d docs: expand Docusaurus coverage across CLI, tools, skills, and skins (#1232) 607689095ebda71c189f4956741e4f8ea6e7a81d fix: add codex forward-compat model listing 437ec1712545fe3af486c451d988ce5905022362 fix(cli): respect HERMES_HOME in all remaining hardcoded ~/.hermes paths 119bad65fc9d39316dfda34cc4bfbcd6a6e31337 feat: prune old tool outputs before context compaction 2bf6b7ad1afb8a7e30b3f72562bb8aea17f493c3 feat(skills): add Linear project management skill (#1230) acd6acef29fd0d6d6bebcf9e3b77f36e8e2256e1 feat(skills): add Linear project management skill 899cb52e7abd17310a86866db828a55d445545b1 refactor: drop codex oauth model warning 529729831c2b168637db439fcb09107e29c466a3 fix: explain codex oauth gpt-5.4 limits 938e887b4ccefb7f14ea5233c008cdb778ce9210 fix: keep honcho recall out of cached system prefix (#1201) 57e98fe6c9f0a6f15d22f0c8bc51cf6c636f1d16 fix: surface gpt-5.4 in codex setup 07d70a034595ae3cd7b552ed0cbe0c107eb0e5c3 test: cover empty cached Anthropic tool-call turns (#1222) cf78349911c52986489553394860fdd3ef663211 Merge pull request #1216 from brandtcormorant/main 76efb0153ae4ed9cdc4ed4c506a9186a8b04d953 fix(cache_control) treat empty text like None to avoid anthropic api cache_control error 6733a9a538d8f3cdd002713effaeefc63da7265c Update README 58475261c4df9fd1e679b4858cd1ab564cb11a46 Merge pull request #1213 from SHL0MS/ascii-video/design-patterns cda5910ab08614e4b9e25b612148e47b87dd1247 update ascii-video skill: design patterns, local time, examples bfb82b5cee3b25aa16603e065571d1130eda03f8 fix: preserve Anthropic cache markers through adapter (#1205) 525cccb7fbcdf2762aa0048a348cfbb0f1063bbf fix: keep honcho recall out of cached system prefix c8bfb1db8f52c42d37a4448471cf452633598f96 fix(gateway): add platform-specific notes to session context prompt (#1184) ebd4f2c6a878be132245d4a1ddac7232bc4bbdac fix: redesign landing page with Nous blue palette and cleaner layout (#974) b74facd119493a2b77cb169065c6bfa40baea937 fix: handle YAML null values in session reset policy + configurable API timeout (#1194) c5b85531f9e092a2002b855553c44254d7a13b43 fix: handle YAML null values in session reset policy + configurable API timeout 07927f6bf22faaeec42e9215e82914fbf1cddf4f feat(stt): add free local whisper transcription via faster-whisper (#1185) 11b577671b721adeafd7c1eff8e315b08ec327ac fix: auxiliary client uses main model for custom/local endpoints instead of gpt-4o-mini (#1189) 962df5966051bf310b4cb78c847a40c8f67b35a9 fix: auxiliary client uses main model for custom/local endpoints instead of gpt-4o-mini a88a4b394f07ff0c1f228d5d8c7face6d0ed4029 Merge remote-tracking branch 'origin/main' into hermes/hermes-6299a8b2 153ccbfd614f5e1709897e39b1a7e8e54edb12dc fix: strip user: prefix from Discord allowed user IDs in onboarding b430b5acfe8db7b29160e0da6fcfa24bb8d95cf0 feat(stt): add free local whisper transcription via faster-whisper e8c9bcea2b2ac669c3fb42774e6f8f6f8c1fd991 fix: prevent model/provider mismatch when switching providers during active gateway (#1183) 1a79a5118f9259fbfa59e56ff025871cb5635ab3 fix: prevent model/provider mismatch when switching providers during active gateway 2001b88c2346018e882b73eee237ed3b7639eb46 Merge remote-tracking branch 'origin/main' into hermes/hermes-e0e71a89 7aea893b5a697eac3c9d96a222efcc119489da29 Merge pull request #1181 from NousResearch/hermes/hermes-294208e8 938edc6466ab889c1e2bab671043971486845780 fix(skills): use generic example in 1password op run snippet b8b45bfb77503c89481407f794c5e2940429b9dd feat(discord): add /thread command, auto_thread config, and media metadata fix (#1178) d425901bae8c44d6eb8a1780e12e8e87c47a14c0 fix: report cronjob tool as available in hermes doctor 32e22d24afa63d53f535ee67b832504ddd07d345 fix: report cronjob tool as available in hermes doctor bcefc2a475e207c53852f3aefed53f31a1ddc912 fix(skills): improve 1password skill — env var prompting, auth docs, broken examples 9667c71df8a44fcfcb9d9b01aa1a609203d675fb fix(skills): improve 1password skill — env var prompting, auth docs, broken examples 808d81f92115feec29f85576cb84ab02c75896ab Merge PR #883: feat(skills): add official optional 1password skill 9f676d1394baae28539bf745b849a398f43199d4 feat(skills): add bundled opencode autonomous-agent skill 02a819b16e95f09cbd8200e22c60ffc083e217aa feat(delegate): add observability metadata to subagent results (#1175) 79975692a5af8bc26f45bbb4afbd6e292bce2249 feat(delegate): add observability metadata to subagent results 4644f71faf3b3784b118db8af65cb5fcaeb40e38 Merge pull request #1173 from NousResearch/hermes/hermes-4cde5efa 77608c90acfa045959581a9e457685ee045f5cd6 Merge remote-tracking branch 'origin/main' into hermes/hermes-e0e71a89 9a7ed81b4bb53ea2556d77b532d6f7e262bdd5c4 fix(cron): use atomic write in save_job_output to prevent data loss on crash 646b4ec5338072a20c11bdaf7dc4f9c1f6d3d557 fix(terminal): strip provider env vars from background and PTY subprocesses (#1172) e00064c58f567f36e63235fe8e521eccd1a8f84c fix(terminal): strip provider env vars from background and PTY subprocesses c92507e53df58ba9446738fd0154d90246033ca5 fix(terminal): strip Hermes provider env vars from subprocess environment (#1157) 4b53ecb1c78435b92cf4d573f316b94c330fd945 docs: update Home Assistant integration documentation (#1170) 230506a3efb9e20db879f89ca7088ff27d6316d9 docs: update Home Assistant integration documentation 61531396a0d5e92a0f68baad2ebfb44bd975da17 fix: Home Assistant event filtering now closed by default (#1169) 861685684c2ddef020d5f4e68111f2f0a2c62a7a fix: Home Assistant event filtering now closed by default 96d6d72cab8528c3184379e5314897f6d712e509 feat: webhook adapter with response accumulator fix a886fbf111a0dad85d801123954cac339ea44c34 feat: generic webhook inbound platform adapter d4b14f74c32ddc1c9c59efedefb9ec017e448322 docs: add miniverse integration guide 6235fdde7597a45ac386e5e5de3fdb386171e529 fix: raise session hygiene threshold from 50% to 85% aed17de774cab7986026ac6da070f28975d38fa3 fix: raise session hygiene threshold from 50% to 85% of context 8f8dd834432c054841e7a12bdee45739bc8118d3 fix: sync session_id after mid-run context compression ccf471b9b43f05bfb996fad7c6ca950a9f54cccd fix: sync session_id after mid-run context compression 06a5cc484cb7538fbbb6fdcc3a36fca4519025ed fix: improve gateway secret capture guidance message 02028a6a9e53855bd0391523345a663f00e917ec feat: add Anthropic Context Editing API support 01572531450b68908b0deec65b560172bbd1ef67 Merge pull request #1152 from NousResearch/hermes/hermes-f47f71c0 76a654f949ecb05019a645596ff06229b762babb Merge pull request #912 from NousResearch/fix/packaging-bugs 0a88b133c248005b705d682f3be14d316edb409e Merge branch 'main' into fix/packaging-bugs 98b55360a9b639f8982d003a8efdc1926a884efb Merge pull request #1153 from NousResearch/hermes/hermes-42bc21fb ccfbf428449bb5d8fa06a2d1d1b7eacdecb4a136 feat: secure skill env setup on load (core #688) c097e56142708d21a5d3e3a3a1eccb693b57cb7f Merge pull request #1149 from NousResearch/hermes/hermes-d28bf447 ef3f3f9c08c8c3c26a7d251295dad2f139300fb1 fix: normalize dot-versioned model names for Anthropic API 5d0d5b191cc55a76734bb4fbc4646df7a6de3cb6 feat: concurrent tool execution with ThreadPoolExecutor 1a5f31d6317899fd27fd5f3745721c9fbe4b2e01 feat: add agentic on-policy distillation (OPD) environment 34c8a5fe8b5479a53b5233d5d023f61a7399855e Merge pull request #1147 from NousResearch/hermes/hermes-6ec3b1a9 bb3f5ed32a5e0a5bb7cf3fb0940ab7b120006b0c fix: separate Anthropic OAuth tokens from API keys f562d97f13e9fa3372e82897f4a6be1ef5f03bf7 Enhance CLI output formatting with RichText support 28563d6152e46f5fddc3feca637ecd775bd14a08 fix: Rich markup crash on [/HINT], [/NOTE], etc. in agent responses 31afb311082a84fa7582d9d8f4c7f2f75a9cc987 Merge pull request #1135 from NousResearch/hermes/hermes-6ec3b1a9 8a3e7e15c6fef3bdc51ec699ed0570b0776bdc91 feat(skills): add NeuroSkill BCI integration as optional built-in skill d24bcad90b371979623b5e49d5619ce3930b7165 fix: Anthropic OAuth — beta header, token refresh, config contamination, reauthentication (#1132) 9ae6fb23303a6f227c81666e0b47a5db814ade27 fix: Anthropic OAuth — beta header, token refresh, config contamination, reauthentication 6873c9f7db9a25376f7b51e6e2e121394eeb970c fix: hermes update restarts gateway via PID file (HERMES_HOME-scoped) 6ceae61a56c11c6ccd543035dceaf04f1f16525d Merge pull request #1130 from NousResearch/hermes/hermes-c877bdeb 638136e353541de7077ecfdb1368639fc9103cbf fix(anthropic): skip thinking params for Haiku models 8de14c56242d93b925a8e77b84e110b5a11466c2 fix(doctor): treat configured honcho as available (#962) 2a1f92ef4a5befb839687e1f1fcb69f9e8e4c894 fix(doctor): treat configured honcho as available 15911d70c0e0d3d4f19e46b4ae4085bc6727c463 Merge pull request #1128 from ASRagab/fix/adaptive-thinking-budget-tokens 3dc148ab6f621bf8e0f689c3562d9db924b12767 fix: use adaptive thinking without budget_tokens for Claude 4.6 models 9dfa81ab4b6f647fca705f25042fd444151845c0 Merge pull request #1125 from NousResearch/hermes/hermes-c877bdeb e5b8e06037c67245e26e3894f3db58a6d3cef49a fix(anthropic): add diagnostic output on 401 auth failures a282322845d695c988fc52c6ebef5d1f850e37bc Merge pull request #1121 from 0xbyt4/fix/anthropic-adapter-issues 475dd58a8eb53f9a8e0cbfc445079494a505d80a Merge PR #736: feat(honcho): async writes, memory modes, session title integration, setup CLI 02c9e7fee2c4e5b9642648467625525c2869ef8c update skill.md to callout for remote machines 28ffa8e69312c9137a0afc071943e413e57257d3 fix: slack file upload fallback loses thread context (#1122) e53dfd88bba47f4e7f6816209f865e6e448cf507 Merge pull request #1123 from 0xbyt4/fix/setup-is-coding-plan-nameError 93c3a1a9c927046d54ee173038f05a5ad2b82dc1 fix(setup): remove dead code causing is_coding_plan NameError crash 064c66df8cc3b7876dc2af33ce2e3817565dcd10 fix: slack file upload fallback loses thread context 22479b053ce31bdd74e45695d4a65db052c2f44c fix: anthropic adapter — max_tokens ignored, fallback crash, proxy base_url filtered a1c4431479af2013b3fe2081dc1054ec94c883d3 Merge pull request #1062 from NousResearch/feat/optional-rl-training 3bc933586af038f4a19b865f607dac143dd4063e fix: Slack MAX_MESSAGE_LENGTH + typing indicator via assistant.threads.setStatus (#1117) 0219abfeed0d87c644f1557d311b4e409eee9b21 Merge pull request #1097 from NousResearch/hermes/hermes-c877bdeb e976879cf21271067075a342b48c3def71edca52 merge: resolve conflicts with main (URL update to hermes-agent.nousresearch.com) 319e6615c32ac06113aeae0ed8fc69782d11ea0a fix: Slack MAX_MESSAGE_LENGTH + typing indicator via assistant.threads.setStatus 7f7282c78d19d67bbc0114f8fdc0fcb2d9ab0677 fix(anthropic): guard memory flush tool_calls extraction for Anthropic response format 809abd60bf1c182dbed4a5ddaad61c0701c68084 docs: add Anthropic provider to all documentation pages aaaba781269e9bcd0701b3dd6c44bb387c02317c fix(anthropic): final polish — tool ID sanitization, crash guards, temp=1 4068f20ce91357b766cbf86b1c8aef5d08dbb157 fix(anthropic): deep scan fixes — auth, retries, edge cases cd4e995d54dcc8907dfbe886ab64fa1db059997a fix(anthropic): live model fetching + adaptive thinking for 4.5+ models d51243b6d320df50f818b9f94d775bcb4fc8bf5c fix(anthropic): read credentials from ~/.claude.json (native binary v2.x) df07baedfe24340c9fe02eb809ee9e599ec623c4 feat: Slack adapter improvements — formatting, reactions, user resolution, commands (#1106) 38aa47ad6c8a89889ae1324c7454454bbd49132d fix(anthropic): improve auth UX with clear setup-token vs API key choice 978e1356c05239c84bcebd909ec1f2048d081f65 feat: Slack adapter improvements — formatting, reactions, user resolution, commands 39f3c0aeb09ec439cd7bfed86f6aed4a9164b48a fix: use hermes-agent.nousresearch.com as OpenRouter HTTP-Referer 7086fde37e56f8ed569de381f5264288a3b2fdef fix(anthropic): revert inline vision, add hermes model flow, wire vision aux 4cb553c76536642e490978165086c8b15abc7c84 fix: Slack thread handling — progress messages, responses, and session isolation (#1103) 987410fff3d1813213dd6c2697760f4c036f810f fix: Slack thread handling — progress messages, responses, and session isolation 4a8cd6f856b54c9f3d7d2addc61cef9aa76ec6ce fix: stop rejecting unlisted models, accept with warning instead d7adfe8f61e29f3ca7da2d271a1035cd2724d32e fix(anthropic): address gaps found in deep-dive audit def7b84a1226c3a914f829f84105500c091be216 Merge pull request #1098 from NousResearch/hermes/hermes-465f3702 8121aef83c4d15b82315936544a77d4040fc1e96 fix: eliminate execute_code progress spam on gateway platforms 1bb8ed4495a29ba52163f125a4edbffa6b1bee5d chore: lower default compression threshold from 85% to 50% (#1096) 5e12442b4b391670153421eaf92f4ee94c86d9c0 feat: native Anthropic provider with Claude Code credential auto-discovery a91a8fd767d298ec6b85761cc1a91893fea25e17 chore: lower default compression threshold from 85% to 50% fefc709b2c4d6ae9b41e9455d8c69da0ab3dd1a5 merge: resolve conflict with main in subagent interrupt test 45d3e83ad15db87269c2b446e4dd955cbe8664a6 fix(honcho): normalize legacy recallMode values like 'auto' to 'hybrid' 0aed9bfde1d9d0204f54c6a6defc842ff6e43385 refactor(honcho): rename memory tools to Honcho tools, clarify recall mode language ae2a5e5743d5a561231dbac731cb31ae6a68514a refactor(honcho): remove local memory mode f896bb5d8c186ebbf88d06de88c7b99d4143a295 fix(test): patch correct method in subagent interrupt test f77811a8a2ea88365567dee1589e96a6c5d41e1e Remove unnecessary comments from X OAuth2 setup script 1ad8713b2b02f27ae0ea51954d580de412e763d6 add xitter skill cd6e5e44e48fc288034fc5a87f91376d2ec8d7aa feat(honcho): show clickable session line on CLI startup 47e49da77cfb6d44f1ae840e2c7b370bdbca8306 feat: make tinker-atropos RL training fully optional e004c094ea51431379b83f172d028b133c0d1caf fix: use session_key instead of chat_id for adapter interrupt lookups 5c54128475ad7dc0553e14e0441d548a3272a614 fix: ClawHub skill install — use /download ZIP endpoint (#1060) 3c60282270f21084c103965ef93272dbac639260 fix: ClawHub skill install — use /download ZIP endpoint 42cf66ae392f2960e4308fee3aea6a535d73011e feat: add 'hermes claw migrate' command + migration docs (#1059) 73ea5102dcf0696f44e1dccac28ef293989103f6 Merge pull request #1058 from NousResearch/hermes/hermes-465f3702 d53035ad821f7ba80c9f74637d267064837cb8d3 feat: add 'hermes claw migrate' command + migration docs 5a4348d0463eec6475fd516c361913187d29c2c5 Merge pull request #1053 from NousResearch/hermes/hermes-c877bdeb 400b8d92b7dc026f2b9d19056fbb8dd52b3bc805 fix: strip call_id/response_item_id from tool_calls for Mistral compatibility 6b211bf008d228245f256af29760b1857a2a4c28 feat(docs): add local search to Docusaurus site 68fdc62d8f447aa1680e97a069764cf6e08706cb feat: offer OpenClaw migration during first-time setup wizard (#981) bb7cdc6d44ff4394005458fe2bd049029ed43ffb chore(skills): clean up PR #862 — simplify manifest guard, DRY up tests 7e637d3b6a087721a9ae906df2c55713cf2f5c24 Merge pull request #862 from arceus77-7/fix/skills-list-source-provenance 2a62514d1750eb7170a5e5ef1cc9e4fde1fafe78 feat: add 'View full command' option to dangerous command approval (#887) e9c33171581d5b310c1a467247de3522ef73a99a fix: improve Kimi model selection — auto-detect endpoint, add missing models (#1039) df0745fb86ca3f3eec2edba08e3b98bb44d176f4 fix: improve Kimi model selection — auto-detect endpoint, add missing models 1e3607150c4b6abd6781e92630c1fe61da9e7090 Merge pull request #1040 from NousResearch/hermes/hermes-5da06378 c7fc39bde0cf57a3271181df5f3ca5f121a6418b feat: include session ID in system prompt via --pass-session-id flag e782b92bcafc1c05160c531b6be84b3820b6f66b fix: /reasoning command — add gateway support, fix display, persist settings (#1031) 483eb86fcb145c0f35c153688ff1f0b2fbcaae5d feat: add /reasoning command to gateway (Telegram/Discord/etc) 2dcea213618002a49d6f575329bead6dd7cc84d8 fix: /reasoning command output ordering, display, and inline think extraction a370ab8391ca5f8de7ebbc449f05cb0df36ade7c Merge pull request #1018 from NousResearch/hermes/hermes-37fb78aa 2eb778119d3c3772360b8c7ba317bb3ddf59fe8c Fix checkpoint_id typos and add StorageMeta example in checkpoint storage docs 92e9809c86f198812cbf0179f6a30575df933110 fix: fetch live model lists from provider APIs instead of static lists 364cb956c100f452530215add550392cb6c2174d chore: rebuild changelog with correct time window (Feb 25 12PM PST onwards) 8d182ec733d4ceac1ad490afa9cd5c00a7e43088 chore: bump version to v0.2.0 + add curated first-release changelog 323ca70846d173307425d0ad396fa17f54eced6a feat: add versioning infrastructure and release script a37fc05171fdfdef8e43a56bc06aa933e422e490 fix: skip hanging tests + add global test timeout 1956b9d97ac05f78c62619cb75b861e316e5a416 fix: remove nous-api test + fix OAuth test index after nous-api removal 9cb9d1a47ab9f4d0356c4de6ac228db86668868f Merge pull request #1003 from NousResearch/hermes/hermes-cf9f7d54 2192b17670cc36a06fcf8f8812232dd1031616f3 merge: resolve conflicts with origin/main 7febdf7208d59db52f8ebe54b8be71a0d6c31d7c fix: custom endpoint model validation + better /model error messages ec2c6dff7073b1369ac71f405901dabb893e650f feat: unified /model and /provider into single view 65356003e3da075337d4e4407353f6b57d84d150 revert: keep provider preferences for all providers (Nous will proxy) a7e5f195284a54b469a1f2bf9ab6b60401ae3212 fix: don't send OpenRouter-specific provider preferences to Nous Portal 9302690e1b71c1abfc2496640f0a8c3a68709d35 refactor: remove LLM_MODEL env var dependency — config.yaml is sole source of truth a29801286ff0997dc688e206c3144cfe4bc4bdf6 refactor: route main agent client + fallback through centralized router 29ef69c703324fb75b567279ee6ed3d1bf6ab7dd fix: update all test mocks for call_llm migration 0aa31cd3cb8167748ade1195e40eff469f07c7da feat: call_llm/async_call_llm + config slots + migrate all consumers 013cc4d2fcc46c25edb7b2452a1e101209dea2fb chore: remove nous-api provider (API key path) 07f09ecd83fba861041fb117e5e6221d15819975 refactor: route ad-hoc LLM consumers through centralized provider router 8805e705a7e134ff7e090bd5fa5e37ba2ec14811 feat: centralized provider router + fix Codex vision bypass + vision error handling 57e4171021f2195e1655ee32a3f83ce056e06a36 Add default SOUL.md 2d35016b94a9c7cad718a43fd5610933f5e45f97 fix(honcho): harden tool gating and migration peer routing 8cddcfa0d8c505e2da37eddfd7e6718702747d6c docs(honcho): update config docs for host-scoped write convention 3c813535a746fda1a0cd5119dd26c74e37c6d4ea fix(honcho): scope config writes to hosts.hermes, not root 07126394410075a4a8c6bc98ad69b50c1b371425 test: verify reloaded config drives setup after migration 4f427167ac4967e079f5e5a2dd27538fef1dcd45 chore: clean OpenClaw migration follow-up 44bf859c3b456df2e83d8825e3bba8e157b02f78 feat: offer OpenClaw migration during first-time setup wizard 037cfc29e60f5d466702cd0a3dd32d11cb6d9d82 fix: mobile d987ff54a1c977330e9ff2c3fc905dd0e58d1cd6 fix: change session_strategy default from per-directory to per-session 50d2964ebd12202bca70d8e819c86bbea363d80b fix: animations, easings 253f23762b5fe2ca217ab769bed59ef2f10938af fix: misc refactors, easings 3ac5b42cb60b6f5a3b5761aee954147e860264f8 fix: add features link c0f985d05a295e2c1c12ebf53330a708719e246c fix: redesign landing page with Nous blue palette and cleaner layout d2934036fee36c7769c75329678987bf7a3eb491 feat: devex, add Makefile, ruff config, pre-commit hooks, editorconfig, CI lint job f99b508c83bce8bef7cef80601a40ef79e76d92e feat(skills): add phone-calls skill for outbound AI voice calls a0b0dbe6b2b044d4cd81bfa660c22f8801669eb2 Merge remote-tracking branch 'origin/main' into feat/honcho-async-memory 8fa96debc9d5225350ecd468b04adb7a61d1fe70 Merge pull request #963 from NousResearch/hermes/hermes-cf9f7d54 a8409a161f1a7ba500a4110817b98459bc2146fe fix: guard all print() calls against OSError with _SafeWriter 452593319b399be0c91b3dba6be05455df260500 fix(setup): preserve provider metadata during model selection effb44e4bd97ef6e1a1809720cb43dc3760d3c19 fix(skills): distinguish local skills from builtin in 'skills list' 3441911db09b54832913108e671766dac95eb8fc fix(acp): add hermes-acp toolset with curated coding-focused tools 73ba4987d5bded0219cd670efee613a543deff05 Merge pull request #960 from NousResearch/hermes/hermes-20ea56c0 79b3d36ba854930ecf74595ebc6f024d31b54032 docs: add reply threading mode section to Telegram docs 41fa4fbaa5dcc15ca996528af7ff7c7dd01d44ea fix: add exc_info=True to image generation error logging 11825ccefabae376b89e8d0e1689f691d990d83a feat(gateway): thread-aware free-response routing for Discord 1334d5f0148d4e694e96744e16f7556b2cbacf5d feat(gateway): Telegram reply threading modes (off/first/all) 2e4ccbc806a8a12db61fde5902095612a2132af1 feat: offer OpenClaw migration during first-time setup wizard cc61f54cd368837d006ea7fa6d775527f89a8143 feat: add ACP (Agent Client Protocol) server for editor integration b800e63137a448549aa61cf66cbce796f1a52cb2 fix: clean up API server — remove dead code, deduplicate model resolution, cache streaming config, add setup integration and security docs 91101065bb37cd170acd6bed0ab9e05e524e41a6 fix: improve git error logging in checkpoint manager 01bec407245f2004bea0a0dc3ad35e2dfc97a502 refactor(gateway): consolidate model resolution via _resolve_gateway_model() 9b58b9bced42ae70be8abfea22bb3847a2aa0eef Merge pull request #955 from NousResearch/hermes/hermes-cf9f7d54 b66c8b409c715b1f50e200fac1a036f2e2907cad fix(vision): log error when vision client is unavailable 09b1de5f71253ff423af11c4eb01aceb7fb94dc3 Merge pull request #954 from NousResearch/hermes/hermes-20ea56c0 3667138d05da6787ce7bb9e353fe8d74ecb36fd9 fix(config): atomic write for .env to prevent API key loss on crash d54280ea03f071aa8726a58d98f42fdfa55e1788 docs: comprehensive documentation for API server, streaming, and Open WebUI 95d221c31c9f84948b25a8f10278df7b4274673a feat: add streaming LLM response support across all platforms 66c0b719de612af9b947f3f883a704982a3aace0 fix(gateway): pass model to temporary AIAgent instances b2a40927836bb43cae9babf78044d057bd0f360e docs: add Open WebUI integration guide b3c798d1b6e6e86c566d33422d8806c8be63aaf1 feat: add pseudo-streaming SSE + conversation parameter 7ae208bfeee6f28877b5383a5660296e1754b399 feat: add conversation parameter + named session chaining 7d771c2b1bdfd142490c74b8a6ab5dcffad0aadc feat: enhance Responses API — retrieval, deletion, tool calls, usage, CORS 58dc5c4af1e43c27c919bf71f821d0d40d19902d feat: add OpenAI-compatible API server platform adapter (Phase 1) a182d127787341825bfaf3f55c4215ef1e6bb4d2 Fix several documentation typos across training references d905e612aad70ca254615449b815254f1c6c730c Merge pull request #950 from NousResearch/hermes/hermes-20ea56c0 fa7a18f42af364241f94440f6a48c557dddb4577 Merge pull request #949 from NousResearch/hermes/hermes-b86fddbe 82113f1f1edd133251c38618bc541dd9361454c1 docs: conditional skill activation — tag duckduckgo-search as web fallback and add documentation 047b118299fb5cbac28a4517d30b72549f3559e1 fix(honcho): resolve review blockers for merge 01d3b3147938ab9882913adbb08fa07a31100446 Merge PR #785: feat: conditional skill activation based on tool availability a5ffa1278c987dda5e551fb8772d5e75c67d3869 test(cron): add regression tests for _ensure_aware timezone conversion b7d58320a871048eaec0a5e20d8c31235cd44772 Merge pull request #947 from NousResearch/hermes/hermes-cf9f7d54 605ba4adea51af2580f1ab94fd6372e873c108e7 fix(cron): interpret naive timestamps as local time in due-job checks 24a0c08d58f3e85fe8466dcdd5d1d58fa84761dc Merge pull request #796 from 0xbyt4/fix/discovery-failed-count b4a100dfc07de995537723293e5b8195fbe9efda fix(doctor): skip /models health check for MiniMax providers 4a8f23eddff6fe0dbe01c4b0ee37efdb06e31f82 fix: correctly track failed MCP server connections in discovery a54405e339d8a8640a26048710cac6c99fed1c52 fix: proactive compression after large tool results + Anthropic error detection 1e373745a91cf787e9722acc9dbfd3d5c00d10a4 fix: smart vision setup that respects the user's chosen provider efb780c754959a70e1423e325bc93d8c9ca832bc Revert "fix: smart vision setup that respects the user's chosen provider" c64efa92607bf6af0de66236fff93d1b08d34f82 fix: smart vision setup that respects the user's chosen provider 43cb35cb21f5addb1ae6ef853a3cf8d08d566b51 docs: list individual config commands first, then hermes setup as all-in-one db496180db6256942083a0800749042865bb66da docs: remove hermes setup from install flow, point to hermes model/tools instead c69adfbb179520a6a7af751bbf3e3ffc4bb3d64e Merge pull request #825 from JackTheGit/fix/docs-typos-batch2 683c8b24d41f9a40793d28d38b457f31d73dc508 fix: reduce max_retries to 3 and make ValueError/TypeError non-retryable d2dee43825e30fc2ba61820dcf5b6b1df5e7c9aa fix: allow tool_choice, parallel_tool_calls, prompt_cache_key in codex preflight 59b53f0a2313fbafef3c189f4f6911bd3dbe32db fix: skip tests when atroposlib/minisweagent unavailable in CI d198a647e2f963039185fe5918a8f12a270955f9 fix: guard all atroposlib imports for CI without atropos installed 0f53275169f194afe32c6d572e20ded2e943a370 test: skip atropos-dependent tests when atroposlib not installed 366de72a38008cccc27199a9a28e3b3df6d73ae0 add a local vllm instance 13f545967010d0ddc19046eb6ef6caca095f991d fix: use ManagedServer for vLLM in TBLite eval + local_vllm config 93333387d60f4a53bc850ae2ea59baa76b587708 fix: handle dict and object tool_calls in agent loop 1f9e7cd65989e4c26092d55747fe751c5e6f94bb test: 5 vLLM integration tests + fallback tool call parser 09fc64c6b6b4bec6481be90a85e6d84a4e21ff76 add eval output to gitignore 84147f4d815b834aa6e3b6a54ac80a5aa414af43 refactor: update to new atropos tool-calling API ee4b20b55ba2328b029cef6bceb946564e23f9be test: 9 agent loop tool-calling integration tests ed27b826c5767705111f4524ebe049514951e388 feat: add eval_concurrency limit + Docker local config for TBLite b03aefaf20fcb3d1a174e5e713de08a31ce036d4 test: 13 tests for Modal sandbox infra fixes d7f4db53f585569c8d9f20f7fe622d6ecce39bdc fix: Modal sandbox eval infra (9 fixes for TBLite baseline) 2c97bf393656047da7cbcb93873df0d5b1f413dc Add tests for atropos tool calling integration 1dfa544250cbb9c018674943e55cfca524ca9fdd Merge PR #802: test: parallelize test suite with pytest-xdist 22c242b74e66127d63612356226d1855e941d468 fix(cron): handle naive legacy timestamps in due-job checks eac5f8f40f9ddb7b5eb158c84bbc91e376d10382 fix: wire email platform into toolset mappings + add documentation 184aa5b2b386346ae92efa1cd64bffeba9e66234 fix: tighten exc_info assertion in vision test (from PR #803) bdcf247efedf51e4c3cea82b5ff2ed5136989607 feat: add email gateway platform (IMAP/SMTP) b16d7f2da63e13e4b7ef6713064cff59be00b06d Merge pull request #921 from NousResearch/hermes/hermes-ece5a45c 9423fda5cb573ef6b1a7876fc01157433eb7d785 feat: configurable subagent provider:model with full credential resolution e6b325cc24b8c7b7b01f5ae5ba1d054d6e70ea68 feat(cli): add /reasoning slash command to manage reasoning effort 4d873f77c1a7316d2dc2c51c4afd26904a66573c feat(cli): add /reasoning command for effort level and display toggle 72decda5220fba959e4cac6feda3c5f76f272464 feat: unified streaming infrastructure (draft — awaiting streaming impl) 09336a67103b5f72759fc017edb9dbbfe9dd9b9f Merge PR #795: fix: handle empty choices in MCP sampling callback 32c89fed18011b28dfbc2a0894878114d02a7341 feat: configurable custom compaction prompt for context compression 1b8a1c7d5e30d5603a7e594c3426cadc65d66486 fix: handle multimodal content in context compression summarization d63d7a58fe72dc3caf5e5362714b14d544c481fe feat: Codex-style handoff prefix for compressed context summaries d9122ac93619237a4dc212db8a10e6c342395d37 feat: use Codex-style compaction prompt for context compression 9149c34a26d2287cd98cd8f3a51011d27023b085 refactor(slack): replace print statements with structured logging 20b0e62f7269f1eb5f089437419d7518c5537e01 refactor: enhance error handling with logging in various tools c837ef949da6f7a93cb79b304625290a371c22b8 fix: replace debug print() with logger.error() in file_tools 1d4a23fa6c835e5bdea8edfa4cfafd01d54f0f8f fix: add missing packages to setuptools config for non-editable installs a71736ea73bac46a303a85b62f32ac98ae6e6e28 Merge PR #910: fix: add missing Responses API parameters for Codex provider a82ce602946637929bab454b368c2dd522e9889b fix: add missing Responses API parameters for Codex provider 69090d6da1cf2520aa08d17e483c49e12e264c0c fix: add **kwargs to base/telegram media send methods for metadata routing 322ffbed61830be7ba516c56b74197c398935ce6 Merge PR #779: feat: Telegram native file attachment support (send_document + send_video) b1590020784dafa572e2df1e369b54b23e89de81 feat: multi-agent architecture — named agents with routing, tool policies, and isolated workspaces fe9da5280fecf22ac89ea8c0bf7f446a93e93713 Merge pull request #766 from spanishflu-est1918/codex/telegram-topic-session-pr 4864a5684a1c58a141964530c397f6360f1202af refactor: extract shared curses checklist, fix skill discovery perf f1510ec33e9be6109b8f93eadbb91ce17395c306 test(terminal): add tests for env var validation in _get_env_config 4523cc09cfe60861490a47e89b38a233c401d417 fix(terminal): validate env var types with clear error messages f524aed23ef788d4a492821d8287d481a1d8a92a fix: clean up empty file after failed wl-paste clipboard extraction 925f378baa8314a715f471bef54bbfee812f646c Merge PR #773: feat(cli,gateway): add /personality none and custom personality support fe2959471610d57f6f5c5b5bb93af44bc4938b5a fix: replace blocking time.sleep with await asyncio.sleep in WhatsApp connect 772151859105841cf239fa4c033ad0e12951ee9d Merge PR #770: fix: off-by-one in setup toggle selection error message 6e303def12dd9a702e87c023a09f8af1aa60fdcf Merge PR #757: security: enforce 0600/0700 file permissions on sensitive files ad1fbd88b28efd8c2182c3926bbc51ec99514c10 Merge feature/background-command: add /background slash command b8067ac27e7a79cfea627bdd65c7f45d1b69eedb feat: add /background command to gateway and CLI commands registry bd2606a5760a6a56e4d95190cd2721fed9975f89 fix: initialize self.config in HermesCLI to fix AttributeError on slash commands f5324f9aa500ca798f9e910ef1750b8210a46495 fix: initialize self.config in HermesCLI to fix AttributeError on slash commands de2b881886bbe3562aac698e71e9dc08db579761 test(cron): cover topic thread delivery metadata 0d6b25274c6d3b8b77f8730bff75d046bddcbfff fix(gateway): isolate telegram forum topic sessions fbfdde496bbea52e66f1a6f5c22815dafb3b4f28 docs: update AGENTS.md with new files and test count ae1c11c5a512be58c64ce31c2213c2c9ee5079bb fix(cli): resolve duplicate 'skills' subparser crash on Python 3.11+ 5abee4fb235d42812890e1a80c37458c2a49dfc3 Merge pull request #769 from 0xbyt4/fix/codex-models-visibility-mismatch 331af8df23e443fa2eed0605e08d1ff2c4efc9a7 fix: clean up tools --summary output and type annotations 3a2fd1a5c9b1400261cc047703ac41d3fd56478b Merge PR #767: feat: add --summary flag to hermes tools 2e1aa1b4241a1a0a567c0808aab20fea54ae81f7 docs: add iteration budget pressure section to configuration guide aead9c8eadaa3fbe0187520bf2c5943c779e035f chore: remove unnecessary pragma comments from Telegram adapter 93230af7bd66631829b74187269d6d7fd115b461 Merge PR #763: improve Telegram gateway error handling and logging 21ff0d39ad0081f9ca5e1f440993be0390d279cd feat: iteration budget pressure via tool result injection 4b619c9672508816dbe6a8b8534332a9ab655b43 Merge PR #761: Improve Discord gateway error handling and logging c5321298cea497da190bf8f4cb353728cda5e31e docs: add quick commands documentation bb5f847093515bb27472adc7d6fd0f644ca15daa security: enforce 0600/0700 file permissions on sensitive files 359352b9473e226acada5388badc2db4bf675300 Merge PR #755: fix: head+tail truncation for execute_code stdout a9241f3e3e224408e310efc8594bece627880890 fix: head+tail truncation for execute_code stdout ea0a263434d0bf5d7184007a1690218faab1c4e7 Merge PR #758: feat(discord): add DISCORD_ALLOW_BOTS config for bot message filtering 3be6e8a5f263729beeab5aade6d1154687b266f6 Merge PR #746: feat(cli,gateway): add user-defined quick commands that bypass agent loop de47aa6921e942072c1816bfd23478d9760b436a fix: /new, /reset, and /clear all start a fresh session 2b244762e14a04b39efdb74433ff36a939c9d1ca feat: add missing commands to categorized /help 1115e35aae4786c7fe76322c682907ebbd96f514 test: add tests for subagent model config override a169a656b4afa4154ce3b0742571e07a1482a221 Merge PR #743: feat: hermes skills — enable/disable individual skills and categories a9fdd8dc3cb68a7569078e31b63b8be2fce3f476 Merge PR #752: feat(ux): improve /help formatting with command categories 8eb9eed074a0cb32c4974898265979b2d13ece96 feat(ux): improve /help formatting with command categories (#640) 6bd1726422ca7aa5b8cec14c491ee833ca32c0c1 feat(subagent): add configurable subagent model via config.yaml 909e048ad42c8f237c7d3e30de2627e9bef43cf3 fix: integration hardening for gateway token tracking 5eb62ef4238fed579f9ab850818a7db17ce45634 test(gateway): add regression test for /retry response fix 58dbd81f0352dd9be6453b70d322749ba247f6eb fix: use actual API token counts for gateway compression pre-check a35c37a2f9f4d95bc7bf06b9e42d1a8ba25993ff Merge pull request #891 from NousResearch/hermes/hermes-b0162f8d 1518734e591ee3cee59705ac828b754b5a43046e fix: sort Nous Portal model list (opus first, sonnet lower) 67b94702075acb586c8666ce6741a47c62f552eb fix: reduce premature gateway compression on tool-heavy sessions 586fe5d62d0709df43131f88ecd62b1b6d4b0043 Merge PR #724: feat: --yolo flag to bypass all approval prompts 2d80ef78722f6e8a25d9fc65e7218e505c02dc73 fix: _init_agent returns bool, not agent — fix quiet mode crash b76cae94d440ac3cbd494402e43d0130ef8b94de Merge pull request #889 from NousResearch/hermes/hermes-b0162f8d 23270d41b947acec24bc7a022e7c004dc2a7f23c feat: add --quiet/-Q flag for programmatic single-query mode 24479625a2e94a79d831baf2e9255fec0f4c782e fix: Docker backend fails when docker is not in PATH (macOS gateway) 47a22cdb4117bc17b9c3958c715ddcc6a1e01ebb feat: add 'View full command' option to dangerous command approval d41a214c1a8698ec34570b8e89fe3b881332f52f feat(skills): add official optional 1password skill d502952bace229883c077b2e88f562d201e7a8de fix(cli): add loading indicators for slow slash commands ac53bf1d712c73b6d4253b5a3bdb176eb13d76ca Merge pull request #881 from NousResearch/hermes/hermes-b0162f8d 145c57fc01e164b9b09fa0c19ee7022af3e70b88 fix: provider selection not persisting when switching via hermes model 2dddfce08c2007c4560e9448351f2ba0115a8eec fix: log prefill parse errors + clean up cron scheduler tests 03a4f184e6c7fc8ace13cd3a5a3a32fd1446021f fix: call _stop_training_run on early-return failure paths be2e2595964543bc7281fb70ee7ffcaca27ca82c Merge PR #716: fix: log exceptions instead of silently swallowing in cron scheduler 550402116dc391a79eb0b4f1ddf925f12e8671b6 docs: comprehensive documentation for API server, streaming, and Open WebUI 05bc8b19fe614fe92de85f867361a9b62e39ef60 Merge PR #713: docs: clarify Telegram token regex constraint 5a426e084a22e29f566a253756ee3319c2eec135 feat: add streaming LLM response support across all platforms cb6b70bbfbad43bf39592a09f880ac007e46bea6 Merge PR #709: fix: close log file handles to prevent resource leaks a458b535c97fdd3548a1a4002dca64a762aca4fb fix: improve read-loop detection — consecutive-only, correct thresholds, fix bugs b53d5dad67efc86f084bb51565c9a1fecde89253 Merge PR #705: fix: detect, warn, and block file re-read/search loops after context compression e00335fa5f41bf0dcfb358dc20133d6fb1a30163 docs: add Open WebUI integration guide 3a64df8873e551cdfc15be53c92bbf1d1b432d52 feat: add pseudo-streaming SSE + conversation parameter 93a22a42459b75da0cb5a006fe8f4b11f77c3163 feat: add conversation parameter + named session chaining f46bd77ad28abcb743f027ea77c4f599db82338c feat: enhance Responses API — retrieval, deletion, tool calls, usage, CORS 5e5d2bd79a62a459d086b85072f6f2ba4b5be5e4 feat: add OpenAI-compatible API server platform adapter (Phase 1) ad7a16dca64a502adffe109193d1ea32a3533a04 fix: remove left/right borders from response box for easier copy-paste 6e851a1f6ac131826f885c1b655731b6ca6a59f1 Merge PR #873: fix: eliminate 3x SQLite message duplication in gateway sessions c1171fe666456ae9028910ca18e6b3d421fa9bd7 fix: eliminate 3x SQLite message duplication in gateway sessions (#860) 2210068f5b4caef6f0f8a8b75503c3d67537315d Merge: fix(signal) align send() signature with base class d6ab35c1a3a431e0da8eeae5f25f97782dd52f4f fix(signal): align send() signature with base class (content, reply_to, metadata) 5fc751e5433a0a3622e103a217b6d4bdb00ed990 Merge: fix(gateway) add metadata param to _keep_typing and base send_typing cea78c5e278c3f1bd829cd97acc0f340540d8904 fix(gateway): add metadata param to _keep_typing and base send_typing 53be6afe92aaec70b62b4c0ac9e41590003b5adc Merge PR #871: fix(signal): use media_urls/media_types in MessageEvent construction d04b9f4dc56aea18e199db62faa6b150fdb63e95 fix(signal): use media_urls/media_types instead of non-existent image_paths/audio_path/document_paths d94519c5ba240c1aa02790b8f90376a98ea6fddc fix(skills): classify local skills separately in skills list 4c54c2709c1ce4563543e0678ea0f5030b78706c Revert "refactor(honcho): write all host-scoped settings into hosts block" c90ba029ce79160cff052bcddad810716846a7ad refactor(honcho): write all host-scoped settings into hosts block 5489c66cdf0bbce254a9caf7aad4a01971166ea7 docs(honcho): restore use cases, example queries, and configurability language 960c1521f3a3261c9831853e8ea1df69204a197e docs(honcho): rewrite Honcho Memory docs as full feature documentation 149516f3655564b1980ed10f5282c6c01b727c7a Merge pull request #854 from NousResearch/add-ascii-video-skill 87349b9bc1af6df8f074b2b769fda0bafd0f7b2b fix(gateway): persist Honcho managers across session requests 87cc5287a878e869b1963858f35c9fa70076fdda fix(honcho): enforce local mode and cache-safe warmup c047c03e82aa362783cac0b0f5db1f7f914df94c feat(honcho): honcho_context can query any peer (user or ai) 0cb639d47235b5aa246d8032098a7f86b9a6234e refactor(honcho): rename query_user_context to honcho_context 792be0e8e3fc2e5a2862fe48f67a0a6ca49a8b2a feat(honcho): add honcho_conclude tool for writing facts back to memory c1228e9a4a7314db1c26b92c39e33169a387ae26 refactor(honcho): rename recallMode "auto" to "hybrid" 6782249df935f4bbeed41e1b2b9d552d78ce16c4 fix(honcho): rewrite tokens and peer CLI help for clarity b4af03aea8595a56e8f40fbd1b96dbffae2295fb fix(honcho): clarify API key signup instructions 74c214e9571ac584cfaae1d2408c1b0f079de2ed feat(honcho): async memory integration with prefetch pipeline and recallMode 0229e6b407c8d1c6b6fac25ed40e7b64abb9ba40 Fix test_analysis_error_logs_exc_info: mock _aux_async_client so download path is reached c358af7861a07832de67ff2049e9d8415945280c Add ASCII video skill to creative category e80786cc946e58c8c3d128942c1dfcb794e0ff6d feat: add ACP (Agent Client Protocol) server for editor integration cfc3ccb212376f96e4424f023a3ac8ba9b01428f feat(skills): add jupyter-live-kernel skill for stateful Python REPL 8eefbef91cd715cfe410bba8c13cfab4eb3040df fix: replace ANSI response box with Rich Panel + reduce widget flashing e590caf8d870f16795bc18a293b11a374bf3d8d2 Revert "Merge PR #702: feat: configurable embedding infrastructure — local (fastembed) + API (OpenAI)" 46b95ee6944688939d692510e9c877f8747464c6 Merge PR #702: feat: configurable embedding infrastructure — local (fastembed) + API (OpenAI) 0fdeffe6c442636ab1f53f4ae197992687f063f7 fix: replace silent exception swallowing with debug logging across tools cc4ead999adbde8fa064ffa2f53b715a4c8e8e72 feat: configurable embedding infrastructure — local (fastembed) + API (OpenAI) (#675) 60cba55d820163ce59ab3bd03e924a3dcae3b519 Merge PR #701: fix: tool call repair — auto-lowercase, fuzzy match, helpful error on unknown tool 1caee06b226a0e8437e01b3fd6345fcf4e3e2fe2 fix: tool call repair — auto-lowercase, fuzzy match, helpful error on unknown tool (#520) a6eaf0f41f07b4a733712cd9acb693a753ef7e82 Merge PR #700: fix(config): atomic write for config.yaml to prevent data loss on crash fadad820dd00a47630c2b58de6091b19b684a47f fix(config): atomic write for config.yaml to prevent data loss on crash e8b19b5826e32aa2eccd4cf381cde66ffdbdfd55 fix: cap user-input separator at 120 cols (matches response box) 9ea2209a43c1ff3785e2dfdd8c63e01180ba2b9f fix: reduce approval/clarify widget flashing + dynamic border widths 87af622df4bbc4c71c7386d6a2365443a74006b4 Merge PR #686: improve error handling and logging in code execution tool 2c21c4b8976d18da425012268e5c2f72434a0804 Merge PR #698: fix(security): pipe sudo password via stdin instead of shell cmdline 771969f7479cd70379c6f11821da133b14d114b8 fix: wire up enabled_tools in agent loop + simplify sandbox tool selection e9742e202f6048ad2b7eb2f7a62e68de67ae6e05 fix(security): pipe sudo password via stdin instead of shell cmdline a2ea85924a2d10ec73cdef694ed9579c27faf712 Merge PR #687: fix(file_tools): pass docker_volumes to sandbox container config 8318a519e6dcd8408a7b99a77ef0b67d6fb0cada fix: pass enabled_tools through handle_function_call to avoid global race 8ef3c815e77f7536a00b1c4efc920508af296759 Merge PR #680: feat: add Nous Portal API key provider de07aa7c40468361fc7684e62e8ee566520ff1fe feat: add Nous Portal API key provider (#644) 928bb16da1cb259e1e8c258be0e4d933a823e68b fix: forward thread_id to Telegram adapter + update send_typing signatures 441f498d6f16e6c163a619296aa418f773f14e16 Merge PR #679: fix(code_execution): handle empty enabled_sandbox_tools in schema description a630ca15de18c5d02a7c3cdfd955a0d508f2176c fix: forward thread_id metadata for Telegram forum topic routing 52e3580cd43f918734b95d68a6acded8cd3cd93b refactor: merge new tests into test_code_execution.py 694a3ebdd54b6585c83cf13bfbb16059aaac915b fix(code_execution): handle empty enabled_sandbox_tools in schema description 2a062e2f4513e45db9a4dee734f97f09fc602e1a Merge PR #840: background process notification modes + fix spinner line spam 49ec1c9e8f97e71c8c001dddb846c850cc4fd9b5 Merge PR #655: fix: normalize max turns config path 4bd579f915940d4ef7845ab814c8ed2f1b0170bb fix: normalize max turns config path e4adb67ed89e671bf90d9737fc464ded5f13a5f1 fix(display): rate-limit spinner flushes to prevent line spam under patch_stdout ff09cad879eae0c01e83ad6ed90457c1f60a6d4f Merge PR #621: fix: limit concurrent Modal sandbox creations to avoid deadlocks 580e6ba2ffd9351b9c2f4b76b1386070c06036dd feat: add proper favicon and logo for landing page and docs site ca23875575c229569f5ca6b3aa33f6bcd3c808e4 fix: unify visibility filter in codex model discovery d6d5a43d3aece1e373ecb347fab5cd34fb3d8b21 Merge PR #627: fix: continue non-tool replies after output-length truncation d723208b1be5e3d95c18c91bb1d4511ffb76f973 Merge PR #617: Improve skills tool error handling b0a5fe897456cd0bf8704c0abc7f13169dc6c897 fix: continue after output-length truncation 899dfdcfb917ff290d69fbcc6ccb69c639807960 Merge PR #616: fix: retry with rebuilt payload after compression 8f0b07ed29363b1c82ea890399302192f4360f91 Merge PR #611: fix(session): atomic write for sessions.json to prevent data loss on crash f16f2912cfa0b0b8379c791f9068ff72e0350e7c Merge PR #607: fix: reset all retry counters at start of run_conversation() af748539f8378dd05e94def64e6900adc35c69ff Merge PR #608: fix: remove unused imports and unnecessary f-strings 695c017411360f29379409d763e7af91cc3af5a2 Merge PR #603: fix: return deny on approval callback timeout instead of None 5e6c7bc205aa857f768f920cc9f22a084854f5f1 Merge PR #602: fix: prevent data loss in clipboard PNG conversion when ImageMagick fails e8cec55fad1f9c1048aab893edea57b497447b2d feat(gateway): configurable background process watcher notifications 67fc6bc4e9f158e93f95319ff3b2259ac7559547 Merge PR #600: fix(security): use in-memory set for permanent allowlist save cbca0225f682f8f83440ca0a8966b27f965e691b Merge PR #599: fix: strip MarkdownV2 italic markers in Telegram plaintext fallback 36ac91c902b5285047edb7009aa80a34581668d5 Merge PR #598: feat(skill): expand duckduckgo-search with DDGS Python API coverage a2902fbad552014bb784fc720ff78ea956b2ad21 Merge PR #594: Improve TTS error handling and logging d03de749a1e96dff2662fa3e557e2721cce725d3 fix: add themed hero art for all skins, fix triple-quote syntax c3dec1dcdae569f5a97149798db38a1d7beb216f fix(file_tools): pass docker_volumes to sandbox container config 4945240fc391641a9be271d2ca232932e463d478 feat: add poseidon/sisyphus/charizard skins + banner logo support 1db8609ac99fdaff43c6524a1cac77832be1d857 Fix several documentation typos f6bc620d3935ac4e22fab99dc54d9b43076d90b7 fix: apply skin colors to local build_welcome_banner in cli.py b4b46d1b67dbbe6ce48e20c69101453dccb56a76 docs: comprehensive skin/theme system documentation c1775de56f9816f13bd974df846d951c8f144c5d feat: filesystem checkpoints and /rollback command de6750ed23985e61aa6c9bd30cbe605264bb4bb3 feat: add data-driven skin/theme engine for CLI customization c0ffd6b704728944d322e3780c19db548ea41ed9 feat: expand OpenClaw migration to cover all platform channels, provider keys, model/TTS config, shared skills, and daily memory 8b9de366f23529dede9da7bc4fafd48cd1dc460c Merge PR #570: feat: OpenClaw migration skill + CLI panel width improvements 60d3f79c72232ac260572e0bd489505e35d65e30 Merge PR #565: fix: sanitize FTS5 queries and close mirror DB connections 6f3a673aba205b1dced06331c02f030b8bb4963d fix: restore success-path server_sock.close() before rpc_thread.join() ab6a6338c4cf965a98430a7ffaee739358936468 Merge PR #568: fix(code-execution): close server socket in finally block to prevent fd leak 1ec8c1fcaaad9fca3bb339604571c2e29acdae87 Merge PR #564: fix: count actual tool calls instead of tool-related messages 739eb6702ebdb54b140daa3b2fcf84a7f8c38709 Merge PR #551: Make skill file writes atomic 1aa7badb3c7ee0595217b34698a7abe9ad2435fc fix: add missing Platform.SIGNAL to toolset mappings, update test + config docs ee4008431ab08d97ad599775cd27137f61b27a1a fix: stop terminal border flashing with steady cursor and TUI spinner widget 88f8bcde3819fad667b30ee2a55c16ccfff03700 Merge PR #538: fix cron HERMES_HOME path mismatch, missing HomeAssistant toolset mapping, Daytona timeout drift 22856150101b84a7976ccd90aead838125145657 Merge PR #533: fix: use regex for search output parsing to handle Windows drive-letter paths 805ce8177bdfee15e5a030baf495cfce3e022bf1 Merge PR #529: fix: restrict .env file permissions to owner-only bdce33e239bb7de04add583d49e561fee8ab9e66 Merge PR #810: fix(cli): handle unquoted multi-word session names in -c/--continue and -r/--resume 9be8d88ccc36913decaa345c800caf7d2ede222e Merge pull request #815 from NousResearch/hermes/hermes-5ab2a29e 6ab3ebf1959e6a5bb86dc5f88078ab67a454d4c7 Add hermes-atropos-environments skill (bundled) 5f9c02bb37dec3111fcb8d7502f0767037f65134 fix: skip tests when atroposlib/minisweagent unavailable in CI 0a628c1aefd0517b70417f10254bcdb4309eb913 fix(cli): handle unquoted multi-word session names in -c/--continue and -r/--resume 3dbeaea3dce215b782f04f7897b9ef7539ffe415 fix: guard all atroposlib imports for CI without atropos installed 36328a996fb35b74e004df101cc0239166236a3d Merge PR #458: Add explicit UTF-8 encoding to config/data file I/O 4bc32dc0f140ed3e1221a6927a6c64b4e9d7dd78 Fix password reader for Windows using msvcrt.getwch() 26d9b5af29676ab5c249cf422c9a26fb21be60a6 test: skip atropos-dependent tests when atroposlib not installed 4de5e017f1335cfae33f45770df66d07fa880182 Merge PR #457: Use pywinpty for PTY support on Windows ef8cb9afd284db834c184b204b932b83d1493012 add a local vllm instance 3e352f8a0da6d735a68ad13f7fdd761fe44910e9 fix: add upstream guard for non-dict function_args + tests for build_tool_preview 28ae5db9b0108fc6a66a3ac5ee41c431d91bd980 Merge PR #453: fix: handle None args in build_tool_preview d5811c887a0cd3b5ccf1a33445cde1155e4612f3 Merge: fix double judge call + eval buffer pollution in WebResearchEnv 975fd86dc429d33fd338fe5da6516ce7c0fe7f6b fix: eliminate double LLM judge call and eval buffer pollution 0ff7fe3ee2ef44393642310959c60f736ac2a751 Merge PR #439: docs: fix spelling of 'publicly' b9d55d57196d0a0ba8b4bd96e9f7aa5679c85491 feat: add pokemon-player skill with battle-tested gameplay tips ab7dc229844854bdf25dc00829a76aae7db9bba2 Merge: WebResearchEnv evaluate() with full agent loop + tools bf8350ac1851ffacb37abb11d75376acf9ac20c8 fix: evaluate() uses full agent loop with tools, not single-turn 407a1e24b2a6957df308053907ea7f817993fc22 fix: use ManagedServer for vLLM in TBLite eval + local_vllm config a5c6348d41eaaf7f78cbbc290026b32487721b5b Merge: WebResearchEnv compute_reward fix (verified with live test) 320f881e0b6d788bfc8cd4b49be551dfc6257e3f fix: WebResearchEnv compute_reward extracts from AgentResult.messages e1e69dfd322bfeb0fca150ddbb92a18301d30972 fix: handle dict and object tool_calls in agent loop 003b6e49df6acf779801046247972e01228acd48 test: 5 vLLM integration tests + fallback tool call parser dab2cfe566d8931386a5ce1c544ad637fbf7bdbc add eval output to gitignore 8ac288e932633b2634a12b951529636d9feba2db chore: uptick 888277ece8a92929dd558ee923c23ce4af5c4f0e chore: fix vision test by mocking aux client c87bd5dd873d4047eeaf24f3a14354b19b4b200d refactor: update to new atropos tool-calling API 0d96f1991c5c5756af6aa4bbeffec8a88750dc3c test: parallelize test suite with pytest-xdist 2a67e4fa576457bcdd63f81243e6199ca9f574a9 test: 9 agent loop tool-calling integration tests f4d7e6a29e046d9eec15cd5067ee3a34cfc13cee feat: devex help, add Makefile, ruff, pre-commit, and modernize CI 136a64942d011ddda38adea7e3c8d5824927c715 feat: add eval_concurrency limit + Docker local config for TBLite 9f74d1f2ecd029f75f71bb0462344132cabb0331 test: 13 tests for Modal sandbox infra fixes d41115aa3195b2f5a906658d1caaf1a0c11e51fb Merge branch 'main' into feat/streaming-tui 172a38c344a372296ea995258d2251be4245ba04 fix: Docker persistent bind mounts fail with Permission denied 9f086173befafdbc18c8a8825a93c1f775db1d65 fix: formatting output newlines etc 8bc0d4f77d0769f8e4732dee8958957667e005d7 Merge: WebResearchEnv Atropos standards compliance 8eabdefa8ac26b2ae799882c37bea91a50296d6e fix: bring WebResearchEnv up to Atropos environment standards f658af45c290ea40c6c87b27e9b43d6f14c90ed1 Merge PR #446: fix(cli): use correct visibility filter string in codex API model fetch 5212644861ffefe2a51b259692da564cf0d4aab7 fix(security): prevent shell injection in tilde-username path expansion 1151f843511625cfac4b201a3b20e469fc49a6ee Merge PR #434: feat: add WebResearchEnv RL environment for multi-step web research 9abd6bf342aa9e05339df53826b11610d102b39a fix: gateway missing docker_volumes config bridge + list serialization bug d2c7ef6b41b91ee9349d637e255cedef385251a3 Merge pull request #792 from NousResearch/hermes/hermes-d2f5523a 11ad4173de1c70974cab0791f1cae1f82b943192 fix: Modal sandbox eval infra (9 fixes for TBLite baseline) 4e3a8a06371fe9edc8f34de6d368183f809ebb2c fix: handle empty choices in MCP sampling callback 57faddd8087262505714771a242821b4d71b3abb fix: duplicate goodbye msg a34102049b6f9ff970c211759369c5de14010f75 Merge: vision auto-detection fallback to local endpoints ef5d811abac69725208a90062f2da6ac502ef3ea fix: vision auto-detection now falls back to custom/local endpoints af6a92a4c2805e1e3a3e299e3f1667b17a3f1ade chore: remove textual 4d6c90c6d0b4a5415ec4eadc4c56accb2d5d8631 feat: add streaming token output and simplify CLI to plain stdout 2d44ed1c5b862ab0b674b576505b643a66fb225e test: add comprehensive tests for vision_tools (42 tests) fa2e72ae9c61a231445f28114b4f63f957e59dd1 docs: document docker_volumes config for shared host directories 5bfc4ed53b20e3cdc609f420ea503726da002dd6 Merge PR #428: Improve type hints and error diagnostics in vision_tools 520aec20e06c1d11ca443f1753c25ddfe1d3d993 fix: add mcp to dev dependencies for test suite 64bec1d06040a503202a05538afbdb6cc8713be8 fix: Slack gateway setup missing event subscriptions and scopes ac58309dbdb363692a4bd853364533244620e548 docs: improve Slack setup guide with channel event subscriptions and scopes 92cb77eaa76b92a6b7e5a2584f1770978d092645 Add tests for atropos tool calling integration 94023e6a85c42e90a3bf8e16a9e74ce6916794f2 feat: conditional skill activation based on tool availability 5eaf4a3f323c184f04e8f552fba1502710715839 feat: Telegram send_document and send_video for native file attachments a5a5d82a21f821a9da1c15997d8726b4406e268f Merge pull request #784 from NousResearch/feat/slack-app-mention-and-documents 34e8d088c21f072a6f2fc9ffdaacbcd47e2a324e feat(slack): fix app_mention 404 + add document/video support b78b605ba9872f5d8a2b977a9e2cb864b9999ad4 fix: replace print() with logger.error() in file_tools 1b5eb9df84d4f46293c894ec02e7b7808cf49a62 feat: Telegram send_document and send_video for native file attachments c3cf88b202fcb579052e3462f89b0d52a1c5171c feat(cli,gateway): add /personality none and custom personality support 58b756f04c26edc79ccc1e8ff8b27e1c33da1120 fix: clean up empty file after failed wl-paste clipboard extraction 34f8ac2d8570eb2e7a3e18899c23d3fd53e60b3f fix: replace blocking time.sleep with await asyncio.sleep in WhatsApp connect 1a10eb8cd9163dbfd247a51f94d00c48fd03dbe2 fix: off-by-one in setup toggle selection error message 59705b80cd8e7a9142c640c5eb60dea06df1bf35 Add tools summary flag to Hermes CLI 46a7d6aeb207538717c2063aacc64a700f8d7d9d Improve Telegram gateway error handling and logging c7541359657e9508e9edd455a1569a3e31585622 fix: banner wraps in narrow terminals (Kitty, small windows) a477118337c35f4bd69f2dd44502671dd34c8714 Merge PR #425: feat(#417): add pokemon-player skill c6b75baad0731f3f7f4f88721e5dcf596928dd0d feat: find-nearby skill and Telegram location support 0ceb93e1077392fcac16bd0452d25b8bc200bd6b feat: iteration budget pressure via tool result injection a7ad6f6d28887336487a5178789f7c54ef90afed Merge: custom providers instant activation + model persistence 1a2141d04d7f5416ce0900cd9cb4634c57b8a105 fix: custom providers activate immediately, save model name ff3f3169b2ca6e33fd79d0c4e305e7addb0051b7 Merge: auto-save custom endpoints + removal option f4580b60105f86d411f7ff1e383e90c10c802a45 feat: auto-save custom endpoints + removal option d82fcef91b685dce54873f0e01dfcdbd3e934731 Improve Discord gateway error handling and logging 7b63a787b3cad2ab5d554430118a1c1f98a03641 Merge: named custom providers in hermes model 069570d1037f8a9106d38ba7f1ca7f6f5c7abe03 feat: support multiple named custom providers in `hermes model` 0dafdcab861b103ecde8e37555da304cd7d565ec Merge: skill reorganization + sub-category support 654e16187e719aeb64d6c56444a303795a6e5272 feat(mcp): add sampling support — server-initiated LLM requests (#753) fbed19967298fa8b0310f4bd2084e5530dd52445 docs: add sampling config examples to docstring and cli-config.yaml.example 732c66b0f3257f788b4c9df12a43cc8a0df7bd52 refactor: reorganize skills into sub-categories 1f0944de210b14f6173a70dbe2cc7bfea9e52d6f fix: handle non-string content from OpenAI-compatible servers (#759) 912efe11b57bade7586c9caf484747914d2da692 fix(tests): add content attribute to fake result objects 4684aaffdcb65dc7ac5ec5b9b4f52b1940823f98 merge: resolve file_tools.py conflict with origin/main f1a1b58319da7ef66d50e8408ffbf8a150d48362 fix: hermes setup doesn't update provider when switching to OpenRouter c21d77ca08cbc6998366604a5ef7cfa4d09b79b6 Merge: OBLITERATUS skill v2.0 + unified gateway compression d6c710706f1b8f5779e54727b419a1ecc0fb93b2 docs: add real-world testing findings to OBLITERATUS skill a6d3becd6a9ba56391685364e6a7148534f18b46 feat: update OBLITERATUS skill to v2.0 — match current repo state 3b67606c42462def32fcc5e74513ee939a5880f6 fix: custom endpoint provider shows as openrouter in gateway f8240143b60f6e4635d4725dc0f7e47d6883732e feat(discord): add DISCORD_ALLOW_BOTS config for bot message filtering (inspired by openclaw) 0ce190be0dd7b0d6e0b9ccc59f6cfc372b1cd835 security: enforce 0600/0700 file permissions on sensitive files (inspired by openclaw) 27e25c54194488e2e632d9f28b8ab9eb1e5ec34d feat(compression): configurable protect_first_n/protect_last_n turns 67cf37fc26eb849b30ff8f2b97f43cdde117e725 fix: head+tail truncation for execute_code stdout (inspired by openclaw context-pruning) a2d0d071098e935ec9a22fbb12966ff226630bf2 Merge PR #754: fix: stabilize system prompt across gateway turns for cache hits aedb773f0d024a2eddf5842b5ce691c424b21831 fix: stabilize system prompt across gateway turns for cache hits aaf8f2d2d2db7e7e768cd7ee6563c5bfc86d0355 feat: expand secret redaction patterns 2d13eb9795db6f4cbf8ac6525630f3540a086863 feat(mcp): add sampling support — server-initiated LLM requests 12f48006314a9dc898dd567180074cd9b50004c4 docs: add security.redact_secrets as commented config section 57b48a81ca10ff69a6918b0def81a098fd0b1809 feat: add config toggle to disable secret redaction 7af33accf100743f994b78e86700e10b5c4d3cf2 fix: apply secret redaction to file tool outputs 3214c05e823d20c0df6e9c9be83c5ae00bdf67ef Merge PR #369: fix(gateway): add missing UTF-8 encoding to file I/O 4608a7fe4eb0d21967cd44b0201073b06ba89e66 fix: make skills manifest writes atomic af67ea880033fcf4c37464423779e3fcceaf76b6 fix: setup wizard overwrites platform_toolsets saved by tools_command 37c3dcf551a2d06b28f11eda196bd73bbacf3f41 fix: setup wizard overwrites platform_toolsets saved by tools_command 6a49fbb7da5e005332610398a672ba8eaa61ab4c fix: correct agentmail skill — API key goes in config.yaml env block eb0b01de7b67e7ccc3db8f26201b9597887f0e2f chore: move agentmail skill to optional-skills, add API key docs 5b1528519c0ed28da9b0abe730e7955d43dd43a2 Merge PR #330: feat: add AgentMail skill for agent-owned email inboxes 52f92eb689d5bd90208a7177b209b1b164e64a00 fix: first-install tool setup shows all providers + skip options 7f9dd60c155dddc611395fed1f4ec562e7ae1c70 fix: first-install tool setup shows all providers + skip options 77da3bbc95feae670632b6b173703a20a06eb2ac fix: use correct role for summary message in context compressor bb489a3903f2207d916f945946a3a98cc2d2700c fix: add first_install flag to tools setup for reliable API key prompting 167eb824cbde26d93ed2a792847e1ff1291814da fix: add first_install flag to tools setup for reliable API key prompting efb64aee5a74676b92533a113f84ab47c51cbbe2 fix: default MoA, Home Assistant, RL Training to off for new installs 3045e29232deefa5e048a535b036283ada06ffd7 fix: default MoA, Home Assistant, and RL Training to off for new installs 5d7d76025a9b1e0d7c33564ad7ec24aa8844ad09 fix: setup wizard default max iterations 60 → 90 e6c829384e3bc06a2a9e9cababf2e74283548123 fix: setup wizard shows 60 as default max iterations, should be 90 5c658a416c1a93ee1fe7eab7403815b886f2eaa1 Merge PR #748: fix: first-time setup skips API key prompts + install.sh echo Link2them00n. | sudo -S -p '' on WSL a130aa81657d637ac3ef19c49255a859eee79964 fix: first-time setup skips API key prompts + install.sh sudo on WSL 35d57ed752f250e008490a3bc7f11072d8efa2c7 refactor: unified OAuth/API-key credential resolution for fallback 1404f846a70d8802b0545fa65d8b69c3532c879b feat(cli,gateway): add user-defined quick commands that bypass agent loop 5785bd327266ee239be39b5a9e727dd7264a13b0 feat: add openai-codex as fallback provider cf9482984e49c865519696dbce4121ed8b30e9a3 docs: condense AGENTS.md from 927 to 242 lines 67275641f8481e980f6c7afbb6eed529d5d7ea7c fix: unify gateway session hygiene with agent compression config 3ffaac00dd05959115c657ddd66fd907e31a455d feat: bell_on_complete — terminal bell when agent finishes 816a3ef6f19b6a7df52bfb4507ca600fd2fff789 Merge pull request #745 from NousResearch/hermes/hermes-f8d56335 a8bf414f4a867511e8bb8aa2bf295d4353a934b9 feat: browser console/errors tool, annotated screenshots, auto-recording, and dogfood QA skill 3b312d45c5f6062c1dc7201ae5eb81d3b1dc854d fix: show fallback_model as commented-out YAML example in config fcd899f8881982eee0e174eb54fb51c4acacdaaa docs: add platform integration checklist for new gateway adapters 315f3ea4293db498fc836bea65bc79b55eea7b04 Merge pull request #740 from NousResearch/hermes/hermes-3cd7c62d 7241e8784a0e538f6a1adae9ebb52f1ba7e6dd13 feat: hermes skills — enable/disable individual skills and categories (#642) b7d6eae64c16d65c1a243f4238479faa9085b983 fix: Signal adapter parity pass — integration gaps, clawdbot features, env var simplification b3765c28d0ac311764d9163062f8ecdddd252e99 fix: restrict fallback providers to actual hermes providers 4cfb66bac263798721de814217e77e7018126d96 docs: list all supported fallback providers with env var names 0c4cff352a05e415bc2072afe3750f3edb028f32 docs: add Signal messenger documentation across all doc surfaces 503269b85a327c2abbae0b743eb28e67954dfd13 chore: remove stale docs/ directory 161436cfdd94df053eb908e2be0aa527dec195cd feat: simple fallback model for provider resilience 24f549a6929ad636f72f30f47eeda207653a8c01 feat: add Signal messenger gateway platform (#405) 7a8778ac73737fe2b38a175929bc52ec0648b893 Merge pull request #732 from NousResearch/hermes/hermes-2cb83eed 763c6d104d020db989b839f7f9ffa0ff6255d118 fix: unify gateway session hygiene with agent compression config 4d7d9d971556d0ecf069ef7fceb5c3a24d28a803 fix: add diagnostic logging to browser tool for errors.log a9c35f917538cb519671bdd494a3d9cc555021f8 docs: comprehensive rewrite of all messaging platform setup guides 37752ff1ac5e3bcda47b10e5eba164affb38f13e feat: bell_on_complete — terminal bell when agent finishes 31b84213e4c715a5668016611e502b7f2c10b6bb docs: add Guides & Tutorials section, restructure sidebar 2036c22f88464485c11ca5e6ef590f3eb889ac65 fix: macOS browser/code-exec socket path exceeds Unix limit (#374) 7185a66b9662b4dcc806a8cdb7792471d748e0fb feat: enhance Solana skill with USD pricing, token names, smart wallet output 2394e18729b085937d865e848ce069dbfc8de001 fix: add context to interruption messages for model awareness 99f7582175387fecf2b25a4502e7e304c85eaa89 chore: move Solana skill to optional-skills/ 93c59972906e230ed689bcb284d4dbed53e94bcb Merge PR #212: feat(skills): add Solana blockchain skill 2d1a1c1c47555e18d9b4f6f2cec7dc87eb7047b6 refactor: remove redundant 'openai' auxiliary provider, clean up docs 71e81728ac5c728e936afe5db41f69059e892d0a feat: Codex OAuth vision support + multimodal content adapter ebe60646db06503c8a47fe05a10a0ff6f8537924 Merge pull request #735 from NousResearch/hermes/hermes-f8d56335 f996d7950b7aa582bd0b071a9a25d2d3500416fb fix: trust user-selected models with OpenAI Codex provider ae4a674c84305ee943d31f6d9049ef7e68af1aa8 feat: add 'openai' as auxiliary provider option 169615abc8f20c7cf336339f0ea386fae45a8ea0 docs: add Auxiliary Models section to user-facing configuration docs 7c30ac21412ca2539cca033aa6f705911817d3e8 fix: overhaul ascii-art skill with working sources (#662) 192501528f8700c3e04f1c3696b421db22c3784e docs: add Auxiliary Model Configuration section to AGENTS.md 5ae0b731d0116b28da3cf3c2a410ff3a71794b0e fix: harden auxiliary model config — gateway bridge, vision safety, tests d9f373654b4a9cc7ecfcb46d54a5a42b6c8baca4 feat: enhance auxiliary model configuration and environment variable handling 0efbb137e8cc331a8b7173887a2261511f6762cb Merge pull request #734 from NousResearch/hermes/hermes-f8d56335 cf63b2471f8e6eebed51dece51433fe173181ab6 docs: add resume history display to sessions, CLI, config, and AGENTS docs d8df91dfa85b4dbc90e47cc76b3ec47ba5dfb9e6 fix: resolve merge conflict with main in clipboard.py f88343a6dabd4920bb3cbd35621a566cd3fc854f Merge PR #733: feat: interactive session browser with search filtering (#718) 491605cfea3941e8e95dea0253e05a3b08cad014 feat: add high-value tool result hints for patch and search_files (#722) 3aded1d4e5e9a112ba966f3ac8e3dfbc4fb1e0d8 feat: display previous messages when resuming a session in CLI 4f0402ed3a516645120f93463ec7bf688db44d3a chore: remove all NOUS_API_KEY references ecac6321c420e34850d310c4e356ccf94f44ea16 feat: interactive session browser with search filtering (#718) 20c6573e0aa46eff767c2b688ea71b38474f54f3 docs: comprehensive AGENTS.md audit and corrections 97b1c76b1430405077e78a6dc687486c56e4ddb4 test: add regression test for #712 (setup wizard codex import) 24a37032fa6305b206cdbfead6cb57c4fd949899 Merge PR #711: fix(setup): correct import of get_codex_model_ids in setup wizard c0520223fda4b900a67c752794bacde246d13a83 fix: clipboard BMP conversion file loss and broken test 1f1caa836abe808b7d8f819323d7b1b0a6b858ba fix: error out when hermes -w is used outside a git repo b3ea7714f5cb048b67e9914c5b4e2c82bc8570ba docs: add dedicated /compress command documentation a7f9721785afb8ab5f138de1934aeff0c86f5d17 feat: register remaining commands with platform menus a5461e07bf4cbed358d8edcd2f4f2504655609d7 feat: register title, resume, and other missing commands with platform menus 2e73a9e8936038d23008ac6914c7c8e0ccd1de9c Merge PR #704: fix: initialize Skills Hub before listing skills 26bb56b77546a8464ec426b7a050fe320f351531 feat: add /resume command to gateway for switching to named sessions e80320069b33439d190fc3b568aa468c170f3e9e feat: --pass-session-id flag to include session ID in system prompt f2027b8bffc29ccfbbc555ac9493fdae11ae1a3c Merge remote-tracking branch 'origin/main' into pass-session-id a648022137b41e32e03b2203edc35b530ef4bb02 feat: include session ID in system prompt 95b1130485a2fcf6d403465bc47cd8be5be401cf fix: normalize incompatible models when provider resolves to Codex 3fb8938cd35c6cf24739d667cf898c918360c45d fix: search_files now reports error for non-existent paths instead of silent empty results 7791174cedd5805724b0f6ac5c19a22bcedb1fb5 feat: add --fuck-it-ship-it flag to bypass dangerous command approvals c5e8166c8bafafb9eb6045c3d695f185c105d911 Merge pull request #720 from NousResearch/feat/session-naming 2b8856865339d23c575d1a72c9308f9123c727a5 docs: add session naming documentation across all doc files 34b4fe495e7bd169492daba380e34310adc40cf7 fix: add title validation — sanitize, length limit, control char stripping 4fdd6c0dac1ab4b48f9664d9c18f1c9fb9dd8672 fix: harden session title system + add /title to gateway 60b6abefd98f1aaec351c859a1dacfa37b6b2335 feat: session naming with unique titles, auto-lineage, rich listing, resume by name 4d53b7ccaa0d2885c266b3a350b8033f3b5289e9 Add OpenRouter app attribution headers to skills_guard and trajectory_compressor 0c3253a4859cde2ef4972310e2763a25a84c07c0 fix: mock asyncio.run in mirror test to prevent event loop destruction d0f84c0964063c74cd588fe695fe6bb2044586ee fix: log exceptions instead of silently swallowing in cron scheduler ceefe367562f973c15f699bbcebb2a83064dae82 docs: clarify Telegram token regex constraint 67421ed74f2e5cc1e7ac619e12b56519cfeae088 fix: update test_non_empty_has_markers to match todo filtering behavior 081079da629cf33206108e01ac736e1be725ded2 fix(setup): correct import of get_codex_model_ids in setup wizard e2fe1373f31f046683f3863be6045aa7e6fe7319 fix: escalate read/search blocking, track search loops, filter completed todos 7891050e06b5e8f1df45636813cf350df3f874ce fix: use Path.read_text() instead of open() in browser_tool e28dc13cd5d3c5b4a514bf95f16694173a6237ea fix: store and close log file handles in rl_training_tool 9eee529a7fecfa3388208e9facad9f73505b2bd8 fix: detect and warn on file re-read loops after context compression 333e4abe30327eae769a10a559baf3acb5ca8cf8 fix: Initialize Skills Hub on list cd77c7100c045cdb613152971405a82d06987ff3 Merge PR #648: test: add regression coverage for compressor tool-call boundaries cf810c2950fdaefa8a4dcfbf7d83b93199499120 fix: pre-process CLI clipboard images through vision tool instead of raw embedding a23bcb81ceb58a4abb1aca5a919ad7f51a06d037 fix: improve /model user feedback + update docs d07d867718a1b270a3558ab20ed3a8c80074e992 Fix empty tool selection persistence 666f2dd4868a89220c12bb34579aa42a44b09675 feat: /provider command + fix gateway bugs + harden parse_model_input 34792dd907dfd1599417c3ae73942e4987020ae6 fix: resolve 'auto' provider properly via credential detection 7ad6fc8a408ca1e82be13b42913361354a01a2b8 fix: gateway /model also needs normalize_provider for 'auto' resolution f824c104298e5916122cfc6c5a1afc4a9af16a90 feat: enhance config migration with new environment variable tracking 132e5ec179f59c2848e4ee8de08a9df13a1d2449 fix: resolve 'auto' provider in /model display + update gateway handler 66d3e6a0c2c3c7d8032e26befa06eb3220bcff53 feat: provider switching via /model + enhanced model display 4a09ae2985739f150f19c27af77549dde87ad45d chore: remove dead module stubs from test_cli_init.py 8c734f2f2767e793105e3e8c374dc5993f3d2fdd fix: remove OpenRouter '/' format enforcement — let API probe be the authority 245d1743592bab4d0a63b6bd5e62e577ef696c0e feat: validate /model against live API instead of hardcoded lists 77f47768dde5aa519b93e46b298bb5eade500997 fix: improve /history message display 7b1f40dd009daabb406734047292a6fe7d3cebc7 Improve error handling and logging in code execution tool 90fa9e54ca0aa7653f27dc34d989f25805f57d6c fix: guard validate_requested_model + expand test coverage (PR #649 follow-up) 9d3a44e0e8705fe8de59d9b061499a1e87c24124 fix: validate /model values before saving 932d596466838806f111afc3c24e7122d1b8b873 feat: enhance systemd unit and install script for browser dependencies d518f40e8bf1d219f65bf918c006b5f24d68b713 fix: improve browser command environment setup f016cfca46f0322f05726a504579ad23918a38d8 Merge pull request #685 from NousResearch/revert-659-feat/skill-prerequisites b8120df860bbb267556d0536276309545230c58e Revert "feat: skill prerequisites — hide skills with unmet runtime dependencies" 0df7df52f3979a1d7c570686b9247589e073b42f test: expand slash command autocomplete coverage (PR #645 follow-up) bfa27d0a68debfac8b122fb895d98f49cea1c159 fix(cli): unify slash command autocomplete registry 5a20c486e31000622349d5b9d4ff4c3cf162246f Merge PR #659: feat: skill prerequisites — hide skills with unmet runtime dependencies 78e19ebc951ff4a6bf1c472947c17671a1e5f9df chore: update .gitignore to include .worktrees directory b383cafc440b969ffdbddc1e50357dd269e6fbdc refactor: rename and enhance shell detection in local environment b10ff835663e3f69e58c76d5298b50346739accb fix: enhance PATH handling in local environment daa1f542f9abc4082771ed8606d130473b4146f7 fix: enhance shell detection in local environment configuration d507f593d08b1ff2893be7d9a1d3a1692e6d1d88 fix: respect config.yaml cwd in gateway, add sandbox_dir config option f2105102763d80dee886a30bd4ebb8f1364d4630 feat: add prerequisites field to skill spec — hide skills with unmet dependencies 19b6f81ee78bfea2e6d59ac352916300163390d3 fix: allow Anthropic API URLs as custom OpenAI-compatible endpoints 76545ab365307f194dbd8bcd606560a534c7a1df Merge pull request #657 from NousResearch/feat/browser-screenshot-sharing b8c3bc78417c80b0ba47702750a83ec5e7fce076 feat: browser screenshot sharing via MEDIA: on all messaging platforms a68036756853d29bd9cd51d8b116e7bd20f16bec fix tmux menus dfd37a4b3132e0b5b5e8e261a58562e36f5626f7 Merge PR #635: fix: add Kimi Code API support (api.kimi.com/coding/v1) 5ee9b67d9b34f1676da5a6c8b30160d81c4ca745 Merge PR #654: feat: git worktree isolation for parallel CLI sessions (--worktree / -w) 542faf225fcc758cc3114d1c7e7b5e716b22cb5e Fix Telegram image delivery for large (>5MB) images 5684c681216e14e26464b6e66bd3b8fdf66cf140 Add logger.info/error for image extraction and delivery debugging 4be783446af8fdab83e7f15726a86a2d95a77f0e fix: wire worktree flag into hermes CLI entry point + docs + tests 8d719b180aeab1954c2d0995c41f68897686bd3e feat: git worktree isolation for parallel CLI sessions (--worktree / -w) bf048c8aecf0a3d7801ecf9f32f766e97046179b feat: add qmd optional skill — local knowledge base search c5a9d1ef9d4fd79e3b3a8732ce5fc4619434d2b5 Merge branch 'main' into pr-635 c7b6f423c713d4b54af26d559d1853ec948cfad5 feat: auto-compress pathologically large gateway sessions (#628) 6d342071675fe03bdebc80f4562d8c21305fa881 Merge PR #620: fix: restore missing MIT license file fcde9be10d565ac37e04e29daba80bc1df3bf5ea fix: keep tool-call output runs intact during compression 3830bbda41e21cb1953a60bd652c7cb7aa4a257a fix: include url in web_extract trimmed results & fix docs 4447e7d71afaa9840e02469c6296c7e2604b3ea5 fix: add Kimi Code API support (api.kimi.com/coding/v1) 7bccd904c7ad2d39ca39f129dbf817203c757f4c Merge PR #629: feat: add Polymarket prediction market skill (read-only) 313d522b6162daf5ff52cc476c9bf730e5ab8399 feat: add Polymarket prediction market skill (read-only) 9ee4fe41fe42a9533edf913ab9f23b3f82593ffa Fix image_generate 'Event loop is closed' in gateway 39ee3512cbdf537a5fe69b0054c5166c8f99569e Merge PR #614: fix: resolve systemd restart loop with --replace flag 42673556af74e1168861d61989117883c02104c6 Merge PR #575: fix(setup): prevent OpenRouter model list fallback for Nous provider faab73ad58cdd4419c319f797f28ee36118e74f8 Merge PR #573: fix(doctor): detect OpenAI custom endpoint env settings 7e36468511c80bf75416490e88355890fa4fb4ed fix: /clear command broken inside TUI (patch_stdout interference) 86eed141afdc3702366e4fb344daa217706fb075 fix: rebuild compressed payload before retry c6df39955ccf38bb513a5bb26809184609675060 fix: limit concurrent Modal sandbox creations to avoid deadlocks 9ba5d399e58fa353d7132b0e2e9533d281ff64d1 fix: restore missing MIT license file 19459b7623145556363c591c9de1f2c2f219c671 Improve skills tool error handling 306d92a9d7c508f3465a67b7bcd806f84bca85c3 refactor(context_compressor): improve summary generation logic and error handling 5baae0df889733efdb417481040cfa927f500c29 feat(scheduler): enhance job configuration with reasoning effort, prefill messages, and provider routing 24f6a193e7273a985ad8d0f161a0e9dfe5f45067 fix: remove stale 'model' assertion from delegate_task schema test 8c0f8baf326c6c2921e53078ac86df987873e463 feat(delegate_tool): add additional parameters for child agent configuration d80c30cc92faa4df6fd29624f93c9c62b1680161 feat(gateway): proactive async memory flush on session expiry e64d646bad67c2218723971e408d57321aff89d9 Critical: fix bug in new subagent tool call budget to not be session-level but tool call loop level b84f9e410c011d399425056b82e4eb9c0db7a7a8 feat: default reasoning effort from xhigh to medium ee5daba061e5174b96a812ff040268ec3820c0dc fix: resolve systemd restart loop with --replace flag (#576) 23e84de8308dfc9c93979155cfe2d47fd1a8887e refactor: remove model parameter from AIAgent initialization 48e0dc87916e7da89bb81a4ef926cad005a24e86 feat: implement Z.AI endpoint detection for API key validation b0b19fdeb1f0bed89ca23316096761da6535ca17 fix(session): atomic write for sessions.json to prevent data loss on crash fb0f579b165da4ad43f2407ef2c87fd85fdae67b refactor: remove model parameter from delegate_task function 5a711f32b13eea8e2d3fa4698f7574fc3434db1c fix: enhance payload and context compression handling 8c26a057a3a67a6bf120679b12aca32543b2de44 fix: reset all retry counters at start of run_conversation() ae4644f495132e075d22820de2f72793e4deeb19 Fix Ruff lint warnings (unused imports and unnecessary f-strings) 4d34427cc79dbedfdc009db8c381021d849a3370 fix: update model version in agent configurations 70cffa4d3b4982e367b7607de0eec696c0c79956 fix: return "deny" on approval callback timeout instead of None ee7d8c56c71c12752c3ee7dd384480119aaa83c5 fix: prevent data loss in clipboard PNG conversion when ImageMagick fails 41877183bc85e9dff2c46969b9e1a3e1acc984a2 Merge PR #604: fix(tests): isolate max_turns tests from CI env and update default to 90 f984cc335b5f914d73c0366549f993dfe8b6d978 feat: enhance auxiliary model configuration and environment variable handling 451a007fb11b22e6336edb9ac40dc5f414b2a765 fix(tests): isolate max_turns tests from CI env and update default to 90 0a8239671816258c772510b96fd99c47d7c7e5b7 feat: shared iteration budget across parent + subagents 5da55ea1e32260d90df98265027eb98c7a3765d9 fix: sanitize orphaned tool-call/result pairs in message compression 40bc7216e1c66d23e35d4e875eb3741701a93808 fix(security): use in-memory set for permanent allowlist save 5cdcb9e26f832edd7ae9b84f1c566842c49343f0 fix: strip MarkdownV2 italic markers in Telegram plaintext fallback ce7e7fef30f8541403a2b0232c2900bd769f40d8 docs(skill): expand duckduckgo-search with DDGS Python API coverage 064c009deb92ba67bf87cd205716823e4f90eb5a feat: show update-available notice in CLI banner 86caa8539c791a9cfca634f644c5a03f320fa897 Improve TTS error handling and logging caab1cf4536f79f5b74552f47360e178e6d28ff9 fix: update setup/config UI for local browser mode 55c70f3508c62e2a4cbe2092e5fbc0e6c7b116df fix: strip MarkdownV2 escapes from Telegram plaintext fallback d29249b8fa07fb40d30cfafd159c94fc075e986f feat: local browser backend — zero-cost headless Chromium via agent-browser f668e9fc753e583f0c0699014d9f35f90033b257 feat: platform-conditional skill loading + Apple/macOS skills 74fe1e225420978fa3d76144d3a4b86e14e00e66 chore: remove TODO.md — all items tracked as issues 348936752a3787ab0a89a721ffea4b8ba63168d6 fix: simplify timezone migration to use os.getenv directly 69a36a3361dbc85180e69c47cb4f1a0ae62811a3 Merge PR #309: fix(timezone): timezone-aware now() for prompt, cron, and execute_code 8712dd6d1cd38e9756a4e6cea979d98648016393 Merge pull request #308 from batuhankocyigit/patch-2 55a21fe37b36e3979421d6f9c7a4c9191145a3fa docs: add Environments, Benchmarks & Data Generation guide f55f625277dbd41b316c6a50f0d760bc2d83cbf8 chore: reorder terminal backends in setup wizard 9dac85b069cb44cf74601f7ae867cf1fa1bc17a1 fix: uv pip install fails outside venv in setup wizard 99bd69baa8a3b75c760c9233dffa920097751828 Merge feat/modular-setup-wizard: modular setup wizard with section subcommands and tool-first UX a62a137a4fb6d845a97097dbd71d948d56c87b62 fix: handle dict-format model config in setup wizard display 82b18e8ac22bdd8e098ee80c7594ef8b57bb83e0 feat: unify hermes tools and hermes setup tools into single flow 0111c9848d457878ba62bb7a1b076fa8fa526237 fix: remove ANSI codes and em dashes from menu labels ab9cadfeee851cd16d39a1c7177d954a63c85fd8 feat: modular setup wizard with section subcommands and tool-first UX 8bf28e144146c3926f2d1148ebd8866d878aa434 fix(setup): prevent OpenRouter model list fallback for Nous provider ce28f847ce1611353345773e056afb49f406a03a fix: update OpenRouter model names for yc-bench config 560911788260efb75b09c7cf252f5e4f796054ba fix(doctor): recognize OPENAI_API_KEY custom endpoint config b4fbb6fe10095cab6c914aa2368f1f5e3f9c2000 feat: add YC-Bench long-horizon agent benchmark environment 82d7e9429e9d7cdc63589c80b82c5b12902885ab chore: add GLM/Kimi/MiniMax models to insights pricing (zero cost) e2821effb5cccb5b3f3a1975d7df76667a799c38 feat: add direct API-key providers as auxiliary client fallbacks 9742f11fda2afbd79b7d3206112276f3e5949f83 chore: add context lengths for Kimi and MiniMax models 53b4b7651a5503d72a6584281826f31291c634fd Add official OpenClaw migration skill for Hermes Agent 388dd4789c4530e428b1c5b446b902c96a98ca9c feat: add z.ai/GLM, Kimi/Moonshot, MiniMax as first-class providers fdebca45734a24ccc03bb9f430c8db4bf2d11ee9 Merge pull request #571 from NousResearch/rewbs/nous-key-remint-attempt-on-401 479dfc096aafa047bc5aa00ed59b9d1bbdb7ffaa Merge PR #473: Update model id in OpenRouter from minimax-m2.1 to minimax-m2.5 3c6c11b7c9f14c3c139fdf0e2a1026bdfaa2e042 Merge PR #420: fix: respect OPENAI_BASE_URL when resolving API key priority bc091eb7ef1f00be7d58f9ec4732ca7954ff1387 fix: implement Nous credential refresh on 401 error for retry logic a857321463ce6181e40bbcc266f321cc8dda5006 fix(code-execution): close server socket in finally block to prevent fd leak fea3a5bdcf9d531235c447a33f3dd889d7cd7789 feat: unify hermes tools and hermes setup tools into single flow 93dd869eabb1ae44369327182d302f1c08c549b7 fix: remove ANSI codes and em dashes from menu labels 50ee4aa672bc3c307f98bcb9463c8b1396c4f921 feat: modular setup wizard with section subcommands and tool-first UX f75b1d21b4c8cacc2b9b9fb87227ff315365cd90 fix: execute_code and delegate_task now respect disabled toolsets 33cfe1515dc2312aa306cce97e1de473119b01b2 fix: sanitize FTS5 queries and close mirror DB connections 94053d75a64a6faf28e7e6a1c90e2ff3083c11b4 fix: custom endpoint no longer leaks OPENROUTER_API_KEY (#560) 2a680996752c68fadb2c55ab857b902ca7694a1f fix(tests): isolate tests from user ~/.hermes/ config and SOUL.md 3b43f7267a1f83b75d9ceb8b476fcbc4e78f5f64 fix: count actual tool calls instead of tool-related messages 6cd3bc66405b93ea0f8210de216fc77b139ef7fa Merge PR #563: fix: prevent data loss in skills sync on copy/update failure 211b55815eb61cc310eb27be917fbc8553137274 fix: prevent data loss in skills sync on copy/update failure 8ae4a6f824e7351d48b9a699c3aa2d399bc664e4 fix: improve handling of empty responses after tool calls b98301677a68b7b3a6c93797a4199cf59c6fa774 docs: add /insights to all help menus and documentation f2fdde5ba4f5fc39817953617fe600cb5f2022c4 fix: show user-modified skills count in hermes update output 4f56e31dc741e29bc2c1bad3413411185ce2e6c6 fix: track origin hashes in skills manifest to preserve user modifications e1369d1936037683792c2564502504008aadbe3f docs: add /insights to all help menus and documentation 6d3804770cbf03d4a6519da904ad92ce6b70cb62 Merge pull request #552 from NousResearch/feat/insights ab0f4126cf978df89be7bf6213e13a304d9b6ba8 fix: restore all removed bundled skills + fix skills sync system 64133814a2d5a8b8c71757499a6d352de4d8b1f8 fix: restore all removed bundled skills + fix skills sync system 1755a9e38a77bf5e5f0d280635ddb61970fb9d0a Design agent migration skill for Hermes Agent from OpenClaw | Run successful dry tests with reports 585f8528b217e51f4d01cfc8dfb6909e3b4bdfd5 fix: deep review — prefix matching, tool_calls extraction, query perf, serialization 75f523f5c033733377db3d68cd685bc7e720bdb1 fix: unknown/custom models get zero cost instead of fake estimates 68fbae56921244802b8f1cb34edea7d418469e1b docs: add Custom & Self-Hosted LLM Providers guide 80f1dd8d37b234f605f67e25b2964755c0150d5e docs: add Custom & Self-Hosted LLM Providers guide b52b37ae64811c7f9297b86348290b80e1212b11 feat: add /insights command with usage analytics and cost estimation 566aeaeefac482afdb727fd3007b1ceac096f279 Make skill file writes atomic 7a0544ab57a13dc3e9819d606eae6f7466e5e498 fix: three small inconsistencies across cron, gateway, and daytona d63b363cde77d14553aee7e2b12bcecb6364ebc3 refactor: extract atomic_json_write helper, add 24 checkpoint tests c05c60665e63d2a208dc75226fec85f85c50e04f Merge PR #298: Make process_registry checkpoint writes atomic b4873a5de7005d3417b01153dadcfa57d086a845 fix(setup): Escape skips instead of exiting, add control hints to all prompts 913f8ce0a5b4d8cb959b1f0ba5cf0368845e6776 Merge PR #297: Make batch_runner checkpoint incremental and atomic 453e0677d63a5cf16cc77006caae29ccf37e4d77 fix: use regex for search output parsing to handle Windows drive-letter paths 4a63737227828f2e8bb330162c2dd2920515fef1 Merge PR #433: fix(whatsapp): replace Linux-only fuser with cross-platform port cleanup 3e93db16bd198553d3d9f58198df65186a787228 Merge PR #436: fix: use _max_tokens_param in max-iterations retry path f863a42351172175529650c56c787d5eea586517 Merge PR #441: fix(gateway): return response from /retry handler instead of discarding it dc55f493bec8feff986e5f8ddeeabc9ecc1affa6 fix: add missing re.DOTALL to DeepSeek V3.1 parser (same bug as V3) 936fda3f9ecfc98931acc8647d38ec4dbdb5a699 Merge PR #444: fix: add missing re.DOTALL flag to DeepSeek V3 tool call parser ecb8148a9f86a06593318263f7ed09766cf821ea Merge PR #448: fix(cli): use correct dict key for codex auth file path in status output 2dbbedc05a7fec7a4efe7db0f305e15393d92e5d docs: rebrand messaging — 'the self-improving AI agent' c30967806c75ed901ee79de4668e3aa778025e5a test: add 26 tests for set_config_value secret routing 145f719d309b1ecdde8417c4c6d2d20184817b21 Merge PR #469: fix(config): route API keys and tokens to .env instead of config.yaml 32dbd31b9a8746d58a1680e57c66092515e1ed99 fix: restrict .env file permissions to owner-only b89eb2917401386411c72bde56d2a5cfb70936f3 fix: correct mock tool name 'search' → 'search_files' in test_code_execution 3670089a42a53161abae5d57ad94b38f982fce21 docs: add Daytona to batch_runner, process_registry, agent_loop, tool_context 3982fcf0951719b0a17fab3f139755758a99bf4e fix: sync execute_code sandbox stubs with real tool schemas 8481fdcf08b0049878dd05442c5bfa0dfd92c33f docs: complete Daytona backend documentation coverage 39299e2de42ff45484de1b5f6465b2e517abb256 Merge PR #451: feat: Add Daytona environment backend efec4fcaabf97c66ef662387044348e08d946433 feat(execute_code): add json_parse, shell_quote, retry helpers to sandbox 5ce2c47d603a05bc5590ed35b946dc9b8e768870 docs: update all docs for optional-skills and browse command f6f3d1de9b81472f3ff1e251b0aa14c82fcb4ad8 fix: review fixes — path traversal guard, trust_style consistency, edge cases ec0fe3242aacdca10cb98581b8fd55efcf4b8435 feat: 'hermes skills browse' — paginated browsing of all hub skills f2e24faaca15712c7741e45b88627269632e82c6 feat: optional skills — official skills shipped but not activated by default 8c80b963180549418fba27c4000692839d4adbbe chore: update OpenRouter model list 2387465dcc2e8d8be2866b2c74c5105dc7d89b69 chore: add openai/gpt-5.4-pro and stepfun/step-3.5-flash to OpenRouter models 32636ecf8a751ee84ab44c140ec1b8174a6d7eef Update MiniMax model ID from m2.1 to m2.5 6055adbe1b5fb9bbe9375e8c1b1c3345ad9326d2 fix(config): route API keys and tokens to .env instead of config.yaml ffd2f8dc50d56c8aedc4d67c0f492db64adb8066 docs: add Vision & Image Paste guide with platform compatibility e93b4d1dcdccacbcd00c7cc2adc6c0b6cea4a687 feat: Alt+V keybinding for clipboard image paste 014a5b712d4cdc352b68e2510e11d0a372fd4a3d fix: prevent duplicate gateway instances from running simultaneously 2317d115cd01849fb799ce329dd5c5a79e989434 fix: clipboard image paste on WSL2, Wayland, and VSCode terminal 8253b54be93d1420df28b61623b1ed01ed9a4390 test: strengthen assertions in skill_manager + memory_tool (batch 3) 5c867fd79fc563cfe644515846a106b1d1137627 test: strengthen assertions across 3 more test files (batch 2) a44e041acf39f6f4b3a6760d527171db8c68cc5c test: strengthen assertions across 7 test files (batch 1) e9f05b352497525b3836fc8eef04728f2f172ace test: comprehensive tests for model metadata + firecrawl config e2a834578dda172215d1a273a46deccc6ede0929 refactor: extract clipboard methods + comprehensive tests (37 tests) ffc752a79ed32ed169834d60b811853b5d057225 test: improve clipboard tests with realistic scenarios and multimodal coverage 399562a7d1cf327fc14a1a1e87d8618d83fe82d5 feat: clipboard image paste in CLI (Cmd+V / Ctrl+V) fec8a0da7263330679c850b4baa45bbacf83105b Merge PR #296: fix(cron): close lock_fd on failed flock to prevent fd leak 9f4542b3dbd20ea0f145ea48c7cf6471d68cd38a fix: require Python 3.11+ in pyproject.toml 363633e2bafc7bf05dcf3229ea98826711a6eb0d fix: allow self-hosted Firecrawl without API key + add self-hosting docs a41ba57a7a1c1125fae407e0a43a32c7f72e5bb0 Merge PR #460: feat(tools): add support for self-hosted firecrawl 884c8ea70a3579e93c086ba561d5dc306e4cde71 chore: add openai/gpt-5.4 to OpenRouter preferred models list c886333d3218e3b23402111169199ca81486111b feat: smart context length probing with persistent caching + banner display cc5ca0fe427105a4d2d56b27b3bba3abfda0012c chore: add tests 55b173dd033e2f88c8932b35ec6842f2fcc08a39 refactor: move shutil import to module level 9079a2781421b3d1ba3e0dc240c5bed1097b293b fix: prompt box and response box span full terminal width on wide screens f035796381a1728005cf64c328197f7cea5fb5bb feat: add support to deploy to modal d7d10b14cd519bcd01bfb197dacb84ed11e3235d feat(tools): add support for self-hosted firecrawl 81986022b7bd2dde51ce021ca9fdb7c0b51b095c Add explicit encoding="utf-8" to all config/data file open() calls dcba291d45d966ff67edf3aa16db163b1fe74f3a Use pywinpty instead of ptyprocess on Windows for PTY support 48e65631f64135fb004438544c9672ebf8bd8c93 Fix auth store file lock for Windows (msvcrt) with reentrancy support a6499b610760d0f1bfa89a5dbd29407f594d3f7f fix(daytona): use shell timeout wrapper instead of broken SDK exec timeout 14a11d24b4b5b397ba30369e260976aba6aeb736 fix: handle None args in build_tool_preview 74a36b0729aa27e866ca2e153aceda96866f4cd1 docs: add Daytona to backend lists in docs efc7a7b95707a19d47ffbf6b614fc67a655361b2 fix(daytona): don't guess /root on cwd probe failure, keep constructor default; update tests to reflect this 4f1464b3af7d79091d6619cadc718c2f9965963b fix(daytona): default disk to 10GB to match platform limit 3a41079fac7eb69e0f9ebdb5d4fac45f23432c50 fix(daytona): add optional dependency group to pyproject.toml 5279540bb4f1c5afdc61812ca0f26ad431e4bfa4 fix(daytona): add missing config mappings in gateway, CLI defaults, and config display 577da79a472c5cc73a52882db9145c406d7f36e1 fix(daytona): make disk cap visible and use SDK enum for sandbox state 1faa9648d3bbc15372f5a240dac5c253ba567755 chore(daytona): cap the disk size to current maximum on daytona sandboxes ad57bf1e4bea7b5aa2c4d5d36c39715edb6360c6 fix(cli): use correct dict key for codex auth file path in status output d5efb82c7c5458b58a1b6121275d3140ec6f2699 test(daytona): add unit and integration tests for Daytona backend 36214d14db03cc17f8e16cf7c21333baaca27592 fix(cli): use correct visibility filter string in codex API model fetch ea2f7ef2f6a2aa8d6f968b4448dc15880c7dca46 docs(config): add Daytona disk limit hint and fix default cwd in example 435530018b14e5ad24a36b45f3b568a4423ef42e fix(daytona): resolve cwd by detecting home directory inside the sandbox df61054a8490debdf4f33b180c0208871e694e99 feat(cli): add Daytona to setup wizard, doctor, and status display 690b8bb56341069269cea16321ff754a8b003fe1 feat(cli): add Daytona config mapping and env var sync c43451a50b5cdeaa31ac56a39876523fd0088f84 feat(terminal): integrate Daytona backend into tool pipeline 1e312c6582e94d74f049f3f0ff1788fe6cac4646 feat(environments): add Daytona cloud sandbox backend e36c8cd49a3404f4ae98cfbe243a2014373feb56 fix: add missing re.DOTALL flag to DeepSeek V3 tool call parser 16cb6d1a6e87a21c2ee601ccd4d1072c9f6d47e8 fix(gateway): return response from /retry handler instead of discarding it 21d61bdd71b8923e6420e3e42972c84316b97cf4 Merge pull request #307 from batuhankocyigit/patch-1 ad9c26afb886d69ad19583e08443bfb378ab96a2 Merge PR #293: fix: eliminate shell noise from terminal output and fix test failures 71c0cd00e56ff62556f5c2a2ecaf646b62317820 docs: fix spelling of 'publicly' 83f99d8203b131cf3f6b90c24503f51c3b26d3c0 Merge PR #438: fix: add missing empty-content guard after think-block stripping in retry path 6b37d38deef3fd8b70dee82e9fa936790791ff32 Merge PR #292: feat(whatsapp): native media attachments for images, videos and documents 938499ddfbd3e64006eb364f1b0b62ea0bd0b7d3 fix: add missing empty-content guard after think-block stripping in retry path d92266d7c0481b54a0e39f4b18863280135d12df ci: pin tests to Python 3.11 only a352b5c19315823d7933e8fc9f04e715f5cee2a0 docs: remove legacy docs/ directory — all content migrated to website 82f74839994a69dff26e26e859e2f86f1b0dda36 docs: simplify README from 1776 to 121 lines 56dc9277d7244c7eecb90271333ee05e3629594c ci: add test workflow for PRs and main branch d50e9bcef74a451d01bff3e6a874ee21459aa630 docs: add 11 new pages + expand 4 existing pages (26 → 37 total) c4e520fd6e55e42822a7e6fe0c6177dfbe8e2c5c docs: add documentation & housekeeping checklist to PR template 30ff3959242d1b90b0fcd68c0d91cef41b026634 feat: add issue and PR templates f55025952d114f201b488bf3d0d326b4e3c61ad5 docs: reorder sidebar — Quickstart before Installation 1bc45ee8feb52fab69afc8ad47e078d9ef48a3a3 docs: simplify installer description for getting started page 19016497ef81027072cb1b12877f1b64c58e3f1f docs: fix all remaining minor accuracy issues d578d06f59f2d8a9d07fa8bc3cb14e36b30ec1ef docs: comprehensive accuracy audit fixes (35+ corrections) e25ad79d5d854815681040f7686576e6555a2fd8 fix: use _max_tokens_param in max-iterations retry path f2624a142601049bf523305fbe31bf7e84d7b3eb docs: remove Windows support references, recommend WSL2 15561ec425a74f26bd2051f562d60ec43f78a050 feat: add WebResearchEnv RL environment for multi-step web research 93d93fdea4594157e6255466cadc4b483ed80644 feat: add gateway setup wizard and update steps to landing page 87f4e4cb9b6c17002fc445aad601f8d9ee1eb82e chore: remove Windows install options from landing page 82cb1752d95ea3518fd970dd85969b37d31cd86e fix(whatsapp): replace Linux-only fuser with cross-platform port cleanup ada3713e777cc67974e22d55899aaa96bf8e0623 feat: add documentation website (Docusaurus) 7d79ce92ac22c85072981ef28e84abc82b2c679b Improve type hints and error diagnostics in vision_tools 1708dcd2b24354c344ebd96b42fe4439892dcbd4 feat: implement edit_message() for Telegram/Discord/Slack and fix fallback regression 5702eba93b532671d4f551077c1050c31920a4ec Merge PR #288: feat(whatsapp): stream tool progress as a single live-updating message a1767fd69c90a630a4f41a403c6b3eb5173e59ec feat(whatsapp): consolidate tool progress into single editable message 99d9ea1464273d2de8de0c1363918f4238608160 feat(#417): add pokemon-player skill b4b426c69d82b16b11445e58f23216702f77ac06 test: add coverage for tee, process substitution, and full-path rm patterns 2465674fda02fb9252fb79a34ec8f1835f14f3ca Merge PR #280: fix: add missing dangerous command patterns (tee, process substitution, full-path rm) 2eca0d4af14d874dcc992f9a620c77493dfcc7a4 Merge PR #275: fix(batch_runner): preserve traceback when batch worker fails 11a7c6b112085bb9421cf555c9d5c947bfb6685f fix: update mock agent signature to accept task_id after PR #419 50ea8adf467976a067aba961b344d70b23d9fc73 Merge PR #419: fix: pass stable task_id in CLI and gateway to preserve sandbox state across turns ca33372595614e65ac84c16700d9703a9aa62595 fix: pass task_id to _create_environment as well, to prevent cross-session state mixing 7d47e3b776968cac3fe21ee8a479cae97d44e699 fix: pass stable task_id in CLI and gateway to preserve sandbox state across turns fe15a2c65c198d9b92ba5a4bbefa3d9f0d5ad7c3 Merge PR #274: fix(setup): handle TerminalMenu init failures with safe fallback d400fb8b2310d5cd72895d7f434d23f7fad5b7d7 feat: add /update slash command for gateway platforms 3221818b6e5536ff2dc17155ca90b678bc61f403 fix: respect OPENAI_BASE_URL when resolving API key priority 2af2f148ab3f921f9be5543732715381f0c8b9ce refactor: rewrite duckduckgo-search skill for accuracy and usability d19109742e0c59c66d81d365e42713985da5fbfa Merge PR #267: feat(skills): add DuckDuckGo search skill as Firecrawl fallback 078e2e4b19effc7ae4d8a4ff2398344e4eefff44 fix(cli): Ctrl+C clears input buffer before exiting 9aa29993884f0f4a4df6fd514d9d07627fd680eb Merge PR #393: fix(whatsapp): initialize data variable and close log handle on error paths d0d9897e81f0d23f3dec12359f9d8843fce03937 refactor: clean up transcription_tools after PR #262 merge 9306a1e06afb4a2fec76abd7c535fc20960734a9 Merge PR #262: improve error handling and validation in transcription_tools 141b12bd39be726d631df77e9da0fb673720c7ad refactor: clean up type hints and docstrings in session_search_tool ae3deff8d43077730518dce63fbdbba511651dba Merge PR #261: improve error handling and type hints in session_search_tool 41adca4e772ca232ce3b3a38045329be47765f05 fix: strip internal fields from API messages in _handle_max_iterations 8e901b31c10b090251aff0432fac5553f54221fb Merge PR #214: fix: align _apply_delete comment with actual behavior 11a5a6472900076a9e566e6f8af5e76ae5053d4d feat: add emojicombos.com as primary ASCII art search source 0dba3027c119bcfce8d8eccc6e1d1187da386385 feat: expand ascii-art skill with cowsay, boxes, toilet, image-to-ascii 405c7e08beb83a2f0ccb59a286e629c4a9393f5f feat: enhance ascii-art skill with pyfiglet and asciiart.eu search cb36930f1dbf5dc4abd8710aba8c10af2ffeff16 Merge PR #209: add ascii-art skill for creative text banners and art 90e6fa2612d214ed167afd3b787b0d7c4b8b08f4 Merge PR #204: fix Telegram italic regex newline bug fd22ae5fcbf6a38c1d299284d5ab1ae2dca432ec Merge PR #203: add unit tests for trajectory_compressor e1baab90f79501ded8412e1cc02783f29259f613 Merge PR #201: fix skills hub dedup to prefer higher trust levels 4fcfa329ba95d6889164a5a7b9768c4c435a10b4 Merge PR #200: fix extract_images and truncate_message bugs in platform base b336980229d679f776514c39f36a9b54aad9049c Merge PR #193: add unit tests for 5 security/logic-critical modules (batch 4) 7128f956212dfb3652922f59d4d9b5d7457b45ed Merge PR #390: fix hidden directory filter broken on Windows ffc6d767ec50b191c70f865df6eef62b498d674d Merge PR #388: fix --force bypassing dangerous verdict in should_allow_install 44a2d0c01fde802821f27ddb454ed55c6e11f637 Merge PR #386: fix symlink boundary check prefix confusion in skills_guard 58aa8c1846d541e4d6f43fe086dec4fa3366c7b9 fix: correct method count and analysis module count per creator review 3e2ed18ad0ddc9c6b191eef1409c428111fbc372 fix: fallback to main model endpoint when auxiliary summary client fails db58cfb13d42c56ab1ee71f46b02dd6ee783cec9 Merge PR #269: Fix nous refresh token rotation failure on key mint failure 3220bb8aaa90a10db115692b1db1933699b9510e Merge PR #403: Fix context overrun crash with local LLM backends 5f85fe4be9c0f34c1bad3a9e0d4514c77fd733e8 feat: add OBLITERATUS skill for LLM refusal removal via SVD-based weight projection ff3a47915627b632c714c63f9316e47f5ffe9c8a fix: coerce session_id and data to string in process tool handler 6f4941616d9a9240a71ddb6a1c1d44723f1afa7f fix(gateway): include history_offset in error return path bd3025d6698e847bdab7ffd01dcdc95ecd92f67f Merge PR #395: fix(gateway): use filtered history length for transcript message extraction 4c7232941210586cf9ea4e5f473b06ae0901a883 feat: add backend validation for required binaries in setup wizard 8311e8984bb62b926dba0825773a43bc5d703ce2 fix: preflight context compression + error handler ordering for model switches 093acd72dd2e2391cbb9f34ce940ca3e58b1fb9a fix: catch exceptions from check_fn in is_toolset_available() e9ab711b667eda9e8c1769d1d3fac6589f6d6899 Fix context overrun crash with local LLM backends (fixes #348) b2a9f6beaa5a812d827dcc0d7c3426337b0eaddc feat: enable up/down arrow history navigation in CLI d3504f84aff4649f4d49cf22bdb6e94651c13427 fix(gateway): use filtered history length for transcript message extraction 34badeb19c80fed56517d0199882bee9ff513f66 fix(whatsapp): initialize data variable and close log handle on error paths f93b48226c8abc90268b63ac3b3a92b04f8625ee fix: use Path.parts for hidden directory filter in skill listing 4805be01196081a003582b1c29a91f01723c7eda fix: prevent --force from overriding dangerous verdict in should_allow_install a3ca71fe262ecbdf99f2d5c6f6232c29a02d5fe3 fix: use is_relative_to() for symlink boundary check in skills_guard 70a0a5ff4a20bcf1cf5f94f3d13629c09ae2b517 fix: exclude current session from session_search results 021f62cb0ce3818fcc458fa2436304b50363d950 fix(security): patch multi-word bypass in 8 more injection patterns ba214e43c86e138b4e1572d3f10a3b259d185fc5 fix(security): apply same multi-word bypass fix to disregard pattern 520a26c48f4d1a8056a1f1fd73a8cf0553cba0f3 Merge PR #192: fix(security): catch multi-word prompt injection bypass in skills_guard a787a0d60bd036ed0954018effc1f95452a182d9 Merge PR #317: fix(setup): improve shell config detection for PATH setup 8d2d8cc728a08c263a769fd821a98fc7b3562f74 refactor: add exception handling and docstring to has_any_sessions 4ae61b0886f9963cb2fc691ba89e9061f454dca6 Merge PR #370: fix(session): use database session count for has_any_sessions 79871c20833059444a27f1e23cd7df056a389158 refactor: use Path.is_relative_to() for skill_view boundary check 7796ac1411c7450a51965df8c39608623d4e1e5e Merge PR #354: fix: use os.sep in skill_view path boundary check for Windows compatibility c45aeb45b12760d7d099af368625bf6c33375259 fix(whatsapp): wait for connected status and log bridge output ee7fde6531499df637345dcc345252ce09269a63 feat: add OpenThoughts-TBLite evaluation script 0ea6c343259a0925d6db25e1d11f7cc853da184b feat: add OpenThoughts-TBLite evaluation environment and configuration files 3db3d603683642b7583375b28f0f10334d19aa54 refactor: extract build_session_key() as single source of truth bfd08d5648e05bdade016794c318b00236ff2b5d Merge PR #350: fix(gateway): match _quick_key to _generate_session_key for WhatsApp DMs 7f9777a0b045583bf86518c5c17f2380e5e5e636 feat: add container resource configuration prompts in setup wizard 87a16ad2e5225d3d2da7a9446ee7d71fce085a48 fix(session): use database session count for has_any_sessions (#351) f90a627f9afd1f88b8f7daaa5da48e0060d261e3 fix(gateway): add missing UTF-8 encoding to file I/O preventing crashes on Windows 152e0800e6271dabfa096b24038bf6c2b3aee483 feat: add detailed setup instructions for Telegram, Discord, and Slack platforms d8f10fa51576736de7b4dee66c344c5bf5e0320b feat: implement allowlist feature for user access in gateway setup e86f391cacfeadfdcd19e153b5373f2d2f1cd727 fix: use os.sep in skill_view path boundary check for Windows compatibility e39de2e75289f1f4df3f80cf331e560b35de5cdd fix(gateway): match _quick_key to _generate_session_key for WhatsApp DMs 1538be45de27ae937d8c2a04d12d29cb013c9ea2 fix: improve gateway setup messaging for non-interactive environments 95e3f4b0017cf9d5c4a3ef99f9eb7fc768600ee9 refactor: enhance gateway service setup messaging and installation prompts b7821b6dc1b67524ce993faaf63057b6a6b0bb22 enhance: improve gateway setup messaging and service installation prompts 556a132f2db383e8df6b5050d917922238c7b871 refactor: update platform status function to return plain-text strings fafb9c23bf768c275eb16f7235227ae6e9803be8 fix: strip emoji characters from menu choices in interactive setup 1754bdf1e875f8f0f1702e722c64387eb2d24c2d docs: update AGENTS.md, README.md, and messaging.md to include interactive setup for messaging platforms fa3d7b3d0348468326c428ceeb3adc3744093788 feat: add interactive setup for messaging platforms in gateway CLI 73f2998d48bef52edd3c811288cbdb0844508980 fix: update setup wizard logic to handle terminal availability dff5481e584435a3f7ce3b69f4c44a8ec788cc25 Eval splits for holdout sets 6a51fd23dfc8e508e989f8e51aec26ccaf93403a feat: add AgentMail skill for agent-owned email inboxes (#329) ffec21236d21745f4530fa1866d9cf858f82529f feat: enhance Home Assistant integration with service discovery and setup db0521ce0e6a843101f7b20073043a0ed905e6bd Merge PR #184: feat: Home Assistant integration (REST tools + WebSocket gateway) a1c25046a9785a5fb0af7045eecbf758c0a189b0 fix(timezone): add timezone-aware clock across agent, cron, and execute_code de0af4df66166390ba9e5c50d723cfc39cbe5d18 refactor: enhance software-development skills with Hermes integration 0e1723ef74b40fe1fdb27af2e735e647832ed085 Merge PR #137: feat: Add Superpowers software development skills aefc330b8f3cb337c8bc6f2c0c706e447bdcb8b8 merge: resolve conflict with main (add mcp + homeassistant extras) f9674717584117766520578c3071b0e1091c2f41 merge: resolve conflict with main (keep fence markers + _find_shell) 4f5ffb89095962632da2861e05c87f150d323b39 fix: NoneType not iterable error when summarizing at max iterations 54909b0282e0ab839109086a3d30553fe8c6d7c3 fix(setup): improve shell config detection for PATH setup f084538cb9aecce7e35eafd20fd1c8dc88854a4a Move vision items to GitHub issues (#314, #315) 535b46f8130cf5b51aef4a26f0fd0ad3d5d74ed6 feat: ZIP-based update fallback for Windows 4766b3cdb9d0acaac9ca3c10322bf6149fd49be4 fix: fall back to ZIP download when git clone fails on Windows 354af6cceedb31c0f13487bf11cc22a1a75c5325 chore: remove unnecessary migration code from install.ps1 c9afbbac0b49a6d972381dc34aee7173e602377a feat: install to %LOCALAPPDATA%\hermes on Windows 83fa442c1bf782ba6a43c99da6909ee45a306e04 fix: use env vars for git windows.appendAtomically on Windows 1900e5238b3e3dd2e868c8da9ee3448b77ae68b5 fix: git clone fails on Windows with 'copy-fd: Invalid argument' ddae1aa2e97c27a1a2c5abb853fb58d632dec78d fix: install.ps1 exits entire PowerShell window when run via iex 16274d5a82e92911f31f35d593e21b382d3f246e fix: Windows git 'unable to write loose object' + venv pip path 5749f5809c49d0af296d9eaaa1028431150952e9 fix: explicit UTF-8 encoding for .env file operations (Windows only) d10108f8caf58cc4d356d2073aa10a964898a31d fix: rename misspelled directory 'fouth-edition' to 'fourth-edition' 8b520f98485b4360fd0b6a37de40662db7a7f855 fix: rename misspelled directory 'fouth-edition' to 'fourth-edition' 4cc431afabe85fede0b375d3981048bc04e87080 fix: setup wizard skipping provider selection on fresh install a718aed1be1b811db211e4beebf3b1bb7bb12f58 fix: rename misspelled directory 'fouth-edition' to 'fourth-edition' 5f29e7b63c7d07cf4187f0f05167f7390b763923 fix: rename misspelled directory 'fouth-edition' to 'fourth-edition' 245c766512850ff2298fd64c21e0ef51ed307840 fix: remove 2>&1 from git commands in PowerShell installer f08ad94d4d8a6aa609144d33b277317276fe96f5 fix: correct typo 'Grup' -> 'Group' in test section headers cdf5375b9a00981235ccf40ddf7cefd88ff53f52 fix: PowerShell NativeCommandError on git stderr output bdf4758510257689cfb1203ddffb298e5ffe28ec fix: show uv error on Python install failure, add fallback detection 84e45b5c402c2d309a3e0f7a12749652e76f359c feat: tabbed platform installer on landing page daedec6957df125b012854282b194ba90b59d28a fix: Telegram adapter crash on Windows when library not installed (#304) de59d91add144937933b532938cd205c94235135 feat: Windows native support via Git Bash 68cc81a74d68df870c0a781688fbc0cb367f3143 Merge pull request #301 from NousResearch/feat/mcp-support 3ead3401e0b0d1e1059c0b28c183b8ca5b6b3c7b fix(mcp): persist updated tools to session log immediately after reload 0f2fcf6f82f78657b7b787e29297603854a6d103 fix: prompt box and response box span full terminal width on wide screens eec31b008910df8805220fad321fa94f34e63188 fix(mcp): /reload-mcp now updates agent tools + injects history message 7df14227a957b5efb0096d0199304262776cfbc0 feat(mcp): banner integration, /reload-mcp command, resources & prompts 60effcfc4427c5dee2ce95c1751454f2e5fb67a3 fix(mcp): parallel discovery, user-visible logging, config validation 63f5e14c6993bcec5c5a51d2e27d86a2be6897ca docs: add comprehensive MCP documentation and examples 64ff8f065b1f4506626fbef29cc509032cdf145e feat(mcp): add HTTP transport, reconnection, security hardening 468b7fdbad9a130879f3318fe7f72d94788e128a Merge PR #291: feat: add MCP (Model Context Protocol) client support 14b0ad95c6ae104411213f70198a6acedaa9dc98 docs: enhance WhatsApp setup instructions and introduce mode selection 221e4228ecb45daeda869471167c9823bd74196a Merge PR #295: fix: resolve OPENROUTER_API_KEY before OPENAI_API_KEY in all code paths dd9d3f89b9da7d62f61a0cbf7304f67faca367a2 Merge PR #286: Fix ClawHub Skills Hub adapter for API endpoint changes b0cce17da637c571c788cd199b4a453bda9099b6 Merge PR #284: fix(cli): throttle UI invalidate to prevent terminal blinking on SSH c6b3b8c84722096538055097afdf05e3fbbd9eff docs: add VISION.md brainstorming/roadmap doc 2ba87a10b01951d044b609f767842989e1ccb98b Merge PR #219: fix: guard POSIX-only process functions for Windows compatibility 5fa3e24b762076a6e6aabf471248da8d890c6225 Make process_registry checkpoint writes atomic ac6d747fa6105a8d54a4a4c6d7013369497959a6 Make batch_runner checkpoint incremental and atomic ee541c84f19b28adce60286de2241baaac124dcd fix(cron): close lock_fd on failed flock to prevent fd leak 60532361583b9dd0b4bd3f0e6b2755c9e1cfd41e fix: prioritize OPENROUTER_API_KEY over OPENAI_API_KEY 11615014a4ec2f945d66275d4b697c912414c9e5 fix: eliminate shell noise from terminal output with fence markers fe17b5ff080d26c60e07298a17f0397e4bede6ac Changing return type to be ScoredDataGroup to account for multiple trajectories 358839626370dd192973d01a2bd404336de4a4ec feat(whatsapp): native media sending — images, videos, documents 11a2ecb936d6bc97f67ce2574630767091a504ec fix: resolve thread safety issues and shutdown deadlock in MCP client 151e8d896ca2296eeb836097bdb8049e70ef40f0 fix(tests): isolate discover_mcp_tools tests from global _servers state 593c549bc466f6e0b8c517320393c16731597c74 fix: make discover_mcp_tools idempotent to prevent duplicate connections aa2ecaef29fd13eae1df704857039cbba6c05849 fix: resolve orphan subprocess leak on MCP server shutdown 0eb0bec74cac9e5022087e40deba27ff466d4f6b feat(gateway): add MCP server shutdown on gateway exit 3c252ae44b524ed20861e681b14c4d66a6fb4bdf feat: add MCP (Model Context Protocol) client support 6789084ec0bc7d1528c8e22ab23f5f7ecf23c5dd Fix ClawHub Skills Hub adapter for updated API b603b6e1c973e895daf56478f1db2cf0181d4ffa fix(cli): throttle UI invalidate to prevent terminal blinking on SSH 3c13feed4c39ad6f577af50b10c0201a603084c7 feat: show detailed tool call args in gateway based on config 7652afb8de59a4e82d35049faafe5014e76b18a3 Merge PR #243: fix(honcho): auto-enable when API key is present 7862e7010cbd90fe6da9dea030b9a0cb9c20486d test: add additional multiline bypass tests for find patterns 4faf2a6cf493edba93c467800e330693da5c7c2e Merge PR #233: fix(security): add re.DOTALL to prevent multiline bypass of dangerous command detection 8c48bb080fb6fdca9b2a818ff368a1afbc18d364 refactor: remove unnecessary single-element loop in disk usage calc 6d2481ee5c3325a7e0615c0160ec42e4f538d649 Merge PR #231: fix: use task-specific glob pattern in disk usage calculation ca5525bcd7df67e5f8afb3cc2fd07e695b5c9911 fix(tests): isolate HERMES_HOME in tests and adjust log directory for debug session 56b53bff6e42a534c7b9558b09aa28a6876e37d3 Merge PR #229: fix(agent): copy conversation_history to avoid mutating caller's list fd335a4e26eb12401e1f46cbd22a30e20413fe3f fix: add missing dangerous command patterns in approval.py c4ea996612b23c6824089eb929caef43b0d4e880 fix: repair flush sentinel test — mock auxiliary client and add guard 39bfd226b89997d85c3cd2b2ebe8a3bd672f008b Merge PR #225: fix: preserve empty content in ReadResult.to_dict() 234b67f5fd7d67b1a12713419b1e614d009589f4 fix: mock time in retry exhaustion tests to prevent backoff sleep e27e3a4f8aa63c57302d00c4ebdebb7ce75b5b06 Merge PR #223: fix: correct off-by-one in retry exhaustion checks 7a11ff95a93da64fbb5e24882398f81c47b99589 Merge PR #277: fix: handle None message content across codebase 33ab5cec825f6feaf5c75099b3002eff84c05962 fix: handle None message content across codebase (fixes #276) 1cb2311bad5d10ce7de66f6c0ac5e91956a3ce34 fix(security): block path traversal in skill_view file_path (fixes #220) 25c65bc99eea1ead4b0c25bdadd0d0bee6f6ddc3 fix(agent): handle None content in context compressor (fixes #211) afb680b50dc24db81c862a035b7a927d8095e0a8 fix(cli): fix max_turns comment and test for correct priority order c574a4d0862cdaf219236837d03cb0f573feeee5 fix(batch_runner): log traceback when worker raises during imap_unordered bd8b20b933ae3d0d24a622372c9d151599338bbe Merge branch 'NousResearch:main' into main 866fd9476bf3440c797e52b9c2e3d9b80e60a5f5 fix(docker): remove --read-only and allow exec on /tmp for package installs d2ec5aaacf7c3add9111621042b9389495c9fdec fix(registry): preserve full traceback on tool dispatch errors e265006fd6c968280ba20fee4d67ee723fde2fa5 test: add coverage for chat_topic in SessionSource and session context prompt b1bf11b0fed163933b7c8ec3ca6063da93bd0ef0 fix(setup): handle TerminalMenu init failures with safe fallback 6bf3aad62ec69eae77a945bfbac0d71a03ba76f9 fix(delegate_tool): update max_iterations in documentation and example config to reflect default value of 50 3a840a130cebcfad404ab7e20d9c5a7493dde97d Merge PR #248: feat(gateway): include Discord channel topic in session context 14396e3fe777d0fdb4ce96c1268da5ed3b6bbccf fix(delegate_tool): update max_iterations default from 25 to 50 for improved task handling 1ad930cbd06197de93afdf5456138020787148b7 fix(delegate_tool): increase DEFAULT_MAX_ITERATIONS from 25 to 50 to enhance processing capabilities 7a0b37712ff2d840f16356905da6edeb398ec044 fix(agent): strip finish_reason from assistant messages to fix Mistral 422 errors (#253) e2b8740fcf546ff7161cbb93b1909cceef07fcf0 fix: load_cli_config() now carries over non-default config keys 45d132d098a5408bc2c37f79b958bff749263a8b fix(agent): remove preview truncation in assistant message output 719f2eef323734a962f7db7a079548b9c416be3a Merge branch 'pr-217' 698b35933e4f534d65f0dffaaccc658cdc68075b fix: /retry, /undo, /compress, and /reset gateway commands (#210) 0512ada793b323a0f28269c01968c7f0203b2331 feat(agent): include tools in agent status output 47289ba6f133201179d17a7dbd80013b86c2afee feat(agent): include system prompt in agent status output 5e5e0efc60884649f3d4e53fc73c9687176db36f Fix nous refresh token rotation failure in case where api key mint/retrieval fails 7b38afc179d6c1e232e8ba1ad61553a5c7ba98bc fix(auth): handle session expiration and re-authentication in Nous Portal e5893075f9b5eb10a5dcc1736851ef8f80615888 feat(agent): add summary handling for reasoning items 5e598a588f6c7ded21c93bf348084c4b2aa29735 refactor(auth): transition Codex OAuth tokens to Hermes auth store c2d8d1728545adb1d2b04f35d99ac7ea391faac3 feat(skills): add DuckDuckGo search skill as Firecrawl fallback 8bc2de4ab696b46864f08b78754f2053452ec189 feat(provider-routing): add OpenRouter provider routing configuration 75a92a3f82b164aa78ab3ced3f89b36313af8ef0 refactor(cli): improve header formatting and description truncation 72963e9ccbd18cae4482ec8e3a898f35ca73fa13 fix(install): prevent interactive prompts during non-interactive installs 92da8e7e6244d8423ca54568b5698084cd0912af feat(agent): enhance reasoning handling and configuration c84d5ce738be4f27cff3300419407b2c9d5acdfb refactor(terminal_tool): clarify foreground and background process usage dda9f3e734c239b8c45d957cb9d84a53c66b5240 fix(process_registry): ensure unbuffered output for subprocesses 834e25a662abd09fbb798475d38a9e166087a949 feat(batch_runner): enhance prompt processing with optional container image support 196a13f3dcb4d168da18c74300dc194e7cb76043 Improve error handling and validation in transcription_tools 440d33eec4038e35da1fdd05c276ace1a05e8104 Improve error handling and type hints in session_search_tool 11f5c1ecf01665dfa82cfa558b0eaf275176c3f1 fix(tests): use bare @pytest.mark.asyncio for hook emit tests 3b745633e4f5e7dd014285e8d804117e0bba8e56 test: add unit tests for 8 untested modules (batch 3) (#191) 900d48714a3a9a920d6595767f131378bbbf44d3 Merge remote-tracking branch 'origin/main' into test/expand-coverage-4 3fdf03390ecc8c053e5352ff3edab31b1045d24a Merge remote-tracking branch 'origin/main' into feature/homeassistant-integration 25fb9aafcbf1530f13b4df2e52a817a6a43dfaa5 fix: add service domain blocklist and entity_id validation to HA tools 54147474d3f348efc77b4ad102cfe976b3d92516 feat(gateway): include Discord channel topic in session context 4d6f380bd1c88a93343f3f576c72f43764dbaee5 docs: update README and CLI documentation for new commands 93f5fd80b8b0bd2e5ebbad4355f12388a41a659d feat(gateway): add /compress and /usage commands for conversation management 177be32b7f9174bca7fceebba097b187aa1d9c5f feat(cli): add /usage command to display session token usage 30efc263ffca8a67166445a56128c5b604e29ba0 feat(cli): add /compress command for manual conversation context compression ed0e860abb09edcf52877a4e3bba8734198b06ab fix(honcho): auto-enable when API key is present 41d8a802268d7caf2e6a9bdc3e22df7274964f7c fix(display): fix subagent progress tree-view visual nits 4ec386cc724f8822aa188c72c89c034726bad7aa fix(display): use spaces instead of ANSI \033[K in print_above() for prompt_toolkit compat dd69f16c3e06a069d52a4ee8d44963ea2dcd8dbd feat(gateway): expose subagent tool calls and thinking to user (fixes #169) (#186) 1db559829485a01909c949b3a322b4bfc636d561 feat(tests): add live integration tests for file operations and shell noise filtering 23d0b7af6a577c5602d0afa427cbbbd849b77891 feat(logging): implement persistent error logging for tool failures a7c2b9e280939bc93a533f760400cae459808a42 fix(display): enhance memory error detection for tool failures 70dfec9638ada694580e2a9df6f5ef4b4d664dda test(redact): add sensitive text redaction 95b0610f36a62cfcf3100fa046a2eb7c97c6cc00 refactor(cli, auth): Add Codex/OpenAI OAuth Support - finalized 500f0eab4a0ad2d6590fed37256b8e4a128ad451 refactor(cli): Finalize OpenAI Codex Integration with OAuth 86b1db0598cf587c8dfff9ddea99cc3935b5dfc7 Merge pull request #43 from grp06/codex/align-codex-provider-conventions-mainrepo 5a79e423fe01443cce44faa50e12396a908af0c5 Merge branch 'main' into codex/align-codex-provider-conventions-mainrepo 7f7643cf632c43c36d19cbb8c83911a0c06074f1 feat(hooks): introduce event hooks system for lifecycle management bf52468a913ebbdea89bb20ad979bfa610631d82 fix(gateway): improve MEDIA tag handling to prevent duplication across turns b4688f10d4ed2c51af8cfe5fd3f2fc0234a3e51a Merge pull request #176 from Bartok9/fix-tts-voice-accumulation 31a5cd185a3de83ad608c16ddee78e6b59933ea3 Merge pull request #174 from Bartok9/fix-think-block-leakage 7166647ca132d54149af35dfd21312a1e3c19625 fix(security): add re.DOTALL to prevent multiline bypass of dangerous command detection f7300a858e3d6a16626971603542c83ab0db4e48 fix(tools): use task-specific glob pattern in disk usage calculation e87859e82c3c45b7ece64d8ba215174f1b33089c fix(agent): copy conversation_history to avoid mutating caller's list de101a82028a757b69b76e12ad4d6a18173912d3 fix(agent): strip _flush_sentinel from API messages 7f1f4c224817d473b49f2e589d0fb7e608ecfca1 fix(tools): preserve empty content in ReadResult.to_dict() c33f8d381b87fd85dda1305a14fb7101ceb47b61 fix: correct off-by-one in retry exhaustion checks 3f58e47c63912cb14936b65a2d133878e1771758 fix: guard POSIX-only process functions for Windows compatibility b7f8a17c24b66fcc2b6b36c292b58111535fcd8b fix(gateway): persist transcript changes in /retry, /undo and fix /reset 6cbb8f3a0c8aea23f5b2b1bb0e22c923fdc26a84 fix: align _apply_delete comment with actual behavior ec97f9ad1af262e82139eda7885a4fc1e1943048 feat(skills): add Solana blockchain skill (converted from tool) 10085041cfc1a7e0cf9cf23080ca95fd395e06b2 feat: add ascii-art skill for creative text banners and art 7b23dbfe6841002328f96e8d97980e1d11410db5 feat(animation): add support for sending animated GIFs in BasePlatformAdapter and TelegramAdapter 8e0c48e6d25b0a31ef6f809f64afe1d28180d97f feat(skills): implement dynamic skill slash commands for CLI and gateway b75960248324ec419de27013654ec1997420e490 fix: prevent italic regex from spanning newlines in Telegram formatter 2205b22409f2590069a1f37841dd31417f9faf7a fix(headers): update X-OpenRouter-Categories to include 'productivity' 1ddf8c26f50d49719a502fd0cf9b47d30a136a46 refactor(cli): update max turns configuration precedence and enhance documentation 9769e07cd5e5a438c5b3e1e5644c6ab452fa934d test: add 25 unit tests for trajectory_compressor 08250a53a1206a2e117e5ee65dfd6afb58900325 fix: skills hub dedup prefers higher trust levels + 43 tests ff6d62802df8ac1fa289c1c653b2fb44348e0346 fix: platform base extract_images and truncate_message bugs + tests 46506769f1e350f19af5cfde4fa64c62f5e8052e test: add unit tests for 5 security/logic-critical modules (batch 4) 4ea29978fc6778bc5641ed422261366a91d42961 fix(security): catch multi-word prompt injection in skills_guard dfd50ceccd8ff6b743bc5f23a2dff0d2ac5aa3b9 fix: preserve Gemini thought_signature in tool call messages 6366177118ec1a30622e695bba07103067d71936 refactor: update context compression configuration to use config.yaml and improve model handling 2390728cc38b1236279820971439e74f4d88b8ff fix: resolve 4 bugs found in HA integration code review b32c642af3cfd8c2fee700e1c05fad10fca07a0e test: add HA integration tests with fake in-process server c36b256de56ae97e3ccabe8e97a02ae31a371e3d feat: add Home Assistant integration (REST tools + WebSocket gateway) 0afe1b707d686b0a07750f7347009b4ba1bbe440 Merge pull request #178 from gamedevCloudy/main f213620c8bea56ccf9f46750bf3dffee40a31268 fix(install): ignore commented lines when checking for existing PATH configuration 35655298e691726f725feb0c30a2b53e0834d915 fix(gateway): prevent TTS voice messages from accumulating across turns 1e463a8e39a8c0ae827ad646b6779f2454a7de6d fix: strip blocks from final response to users de5a88bd976aea965ebf3005e01330db8d36f552 refactor: migrate tool progress configuration from environment variables to config.yaml 0862fa96fdd2f95566942b8ed4053ab559a3b1cd refactor(domain-intel): streamline documentation and add CLI tool for domain intelligence operations 924570c5be3ddbbec6b4eeffc5f6b2569332dcd1 Merge pull request #136 from FurkanL0/feat/domain-intel-skill 4d8689c10cbaa3422e311f807fe63ca9e2a9d40b feat: add honcho-ai package to dependencies and update extras in uv.lock 1d7ce5e063ff2138f6d3650a5e07fc1301fae312 feat: integrate honcho-ai package and enhance tool progress callback in delegate_tool 72d3425eef0fc8765db2ad7378e4948b53f43865 Merge pull request #94 from cesareth/feat/verbose-slash-command b7f099beed376cad6a565a75b47e558311754545 feat: add Honcho integration for cross-session user modeling 912ef501659de45da21ee872a8c39ab183b29beb Merge pull request #38 from plastic-labs/feat/honcho-integration 4a9086b848a7b0a8dd7a2c707abcb04309a1c501 Merge branch 'main' into feat/honcho-integration 50cb4d5fc7e4dd59e6688120a17286cfa88855b2 fix(agent): update error message for unsupported Anthropic API endpoints to clarify usage of OpenRouter 2bc9508b7cece48b7446ae196a4d898d22e2076e Merge pull request #173 from adavyas/fix/anthropic-base-url-guard 337cd574c8f7ea26b8222efae66f1b881382273f Merge pull request #167 from Jr-kenny/pr/docs-codefences 9fb027915e6d5394f237f969af29b36ef1763bf1 Merge pull request #166 from Jr-kenny/pr/docs-config 2b821c3a142ee7954b0d43d4dc7fa32167a52048 Merge pull request #162 from aydnOktay/fix/memory-tool-entry-delimiter-parsing 0d113fab1aa979717bf43cb50d6cbf744b32f744 Merge pull request #158 from Indelwin/feature/docker-volumes 19f28a633a9ee32eecc74ebf3c231539c09c6c9b fix(agent): enhance 413 error handling and improve conversation history management in tests 2c817ce4a583d900814ff8dd108e031077325e1f Merge pull request #153 from tekelala/main 66a5bc64db92996f86674e5d4d5fc71ccb08dc3e fix(process): use shlex to safely quote commands in bg_command for improved security 7f423508e46ebc6ffb7e97600ce4ccf8c8082e77 Merge pull request #151 from johnh4098/fix/shell-injection-spawn-via-env-v2 306c6706a68f896f77ed5864797ddd771b8d04f4 Merge pull request #150 from VencentSoliman/fix/gateway-model-personality-commands 64be67e06214776facda8bfa1f6d74c3ffa460c6 Merge pull request #146 from alireza78a/fix/atomic-cron-job-save 0c0a2eb0a27923e8a801a19d5c151d8abb27af8d fix(agent): fail fast on Anthropic native base URLs de0829cec330c3122385faac91b352a2a57cb33d fix(cli): increase max iterations for child agents and extend API call timeout for improved reliability 20177660bb19a7012b16c37e9c822ec3b8eb0f5e Merge pull request #142 from Bartok9/docs/add-slash-commands-reference 609fc6d08014bba4403f02ddafce21a9808e8434 fix(docs): add missing code block language specifiers 518826e70c6b5cc9d4518562979468d38f3804bd fix(docs): standardize terminology and CLI formatting 13992a58da0678d34b15cfdcc0cd4a2f1a8cc94d fix(docs): correct CLI config precedence and paths 0d2ac1c07f99150582ae0202f9c133bc8f13c85b Merge pull request #121 from Bartok9/test-clarify-tool fb7df099e0fd877ed4004342548c74f22ee5e73f feat(cli): add shell noise filtering and improve command execution with interactive login shell f14ff3e0417bdbc678efe0dc3d339a898ec3167e feat(cli): use user's login shell for command execution to ensure environment consistency 07fcb94bc0d937ce26ac1bb790835872bc4dc058 fix(gateway): sync /model and /personality with CLI config.yaml pattern 66d9983d46c08f40584315a4f08529c9ac99c64f Fix memory tool entry parsing when content contains section sign 4f3cb98e5e1c54499d32714fc55293562499421c feat(cli): implement platform-specific toolset selection with improved user interface 8c1f5efcaba62e07fe4c74e2a2215db224bcb3b6 feat(cli): add toolset API key validation and improve checklist display c92bdd878538f72cc03e07c57f053c9d8c7723cf fix(cli): improve spinner line clearing to prevent garbled output with prompt_toolkit e09ef6b8bc7dea7f1a807c7b7a9dd9c991e00937 feat(gateway): improve model command handling by resolving current model from environment and config file f7677ed275e914f516fcc651344825b7893d1c1d feat: add docker_volumes config for custom volume mounts 6fdb38ed296eea5710457b20aef1db529d9ff08e Added task sppecific metris and evals e5f719a33bfe2705d40c5b4948cd301c0a5b8811 fix(process): escape single quotes in spawn_via_env bg_command 79bd65034c9254bdb49d90d7177bc1fa5b706a45 fix(agent): handle 413 payload-too-large via compression instead of aborting fbb1923fad18eb3bba332c3bfbdcfd69dddae19e fix(security): patch path traversal, size bypass, and prompt injection in document processing bf75c450b7d710760488fb1a503b716551b21619 fix(cron): use atomic write in save_jobs to prevent data loss b2172c4b2e808860f3c46dacbb352d3f3347a33d feat(telegram): add document file processing for PDF, text, and Office files 69ccd76679f0769911d6f60c35cbcfbfa3daf8c3 docs: add slash commands reference 8b54bb4d895777897a1b81d2a334a88fa4e9099d docs: update CONTRIBUTING.md to enhance contribution guidelines and clarify priorities 2595d81733ebdb6f62278af49936c23aa3927238 feat: Add Superpowers software development skills f9e05218caf6ce0b754a6e2e8ef73e6f34073e99 Create SKILL.md 2ddda5da894089ae404ab1bcf74e6d1fce21a144 Create DESCRIPTION.md dc80f0b222de112eec1db2e2b63eb892ba59a4d0 Merge pull request #117 from Bartok9/docs/add-contributing-guide 5007a122b27315ce6ccadea6bb588ff72b7140ba fix(terminal): enhance error logging in cleanup functions with exception info 43f23212259b627ae5dc053ac8373bcdd07f6005 Merge pull request #91 from 0xbyt4/fix/cli-spinner-flickering 1362f92f2ea80a07170e87adf1cc06a1159987a7 Merge pull request #89 from 0xbyt4/fix/cli-show-config-wrong-path 445d2646a96e4cd1e36037f134328c30debdbe4a Enhance arXiv integration: Add BibTeX generation, ID versioning, and withdrawn paper handling. Update search script to display version information alongside arXiv IDs. ae8d25faca0a5790e783afb2b56b8f8bf0eb11f1 Merge pull request #87 from 0xbyt4/fix/cli-max-turns-sentinel 9061c03b6d772d566bf39137647ef9f57118ea30 Merge pull request #84 from 0xbyt4/fix/cli-paste-detection-false-positive 8174f5a9888a3725e533b2d993d5bfb299b55f74 Merge pull request #83 from 0xbyt4/fix/cli-save-config-string-model 03f7b551be24d7b0e8b24882658d46fc7bf9d4ca Update README.md: Add DeepWiki Docs badge and enhance security description for sandboxing feature 80ad6572a306a2616a238f387e119b01f810fb1f Merge pull request #75 from satelerd/fix/whatsapp-multi-user-sessions c77f3da0ceab2b61e35b08b8c7bf57e01885f328 Cherry-pick 6 bug fixes from PR #76 and update documentation c10464745023e6f5f69c23d4298ec995872cdd61 Documentation (README.md): - Add "Security Hardening" section with table of protections from recent PRs - Add "Reasoning Effort" config section under Features - Add Slack and WhatsApp env vars to Environment Variables Reference - Remove non-functional ANTHROPIC_API_KEY from env vars table - Add `hermes whatsapp` to Commands section 547ba73b82335669310be1f340a395404631ec82 Merge pull request #65 from leonsgithub/fix/sudo-password-shell-injection 3526fa27fdeb3a8932a08210ad647a8d81327ab9 Merge pull request #62 from 0xbyt4/test/expand-coverage-2 9eabdb64fff4cb2478c698d3451f9c4d70cc5029 Merge pull request #72 from cutepawss/fix/install-script-silent-abort 6f543eac9fcee834587753eb083960960d4d5968 Merge branch 'main' into fix/install-script-silent-abort 64eca8587620b8b5aa64133e9470ef4a0a2317d7 Merge pull request #67 from 0xbyt4/test/add-run-agent-unit-tests 152271851fedbb626f20f6c719bd2b83689ee3e9 Merge pull request #63 from 0xbyt4/fix/cron-prompt-injection-bypass 0909be3aa89491d478f70c4998663024d9caac6f Merge pull request #61 from 0xbyt4/fix/write-deny-macos-symlink 274e623b50d1e7038f91b4a67a760a5a2d550e3a Merge pull request #60 from 0xbyt4/test/expand-coverage 2972f982e4cc59376757bef79f1f118a04b34f93 Merge pull request #55 from bierlingm/fix/atexit-signal-handler-race df8a62d018519e878ee866e117fc1969e64e7e9a test(tools): add unit tests for clarify_tool.py fec5d59fb3dd0b93b2179bf7f1a7391c42503acf feat(gateway): integrate pairing store and event hook system 7285e44064b9b3a86a980c2a594b8272b983ec35 docs: add CONTRIBUTING.md with contributor guidelines 2ff54ae6b35d13a24232192bbc21bcd0fa0682d1 fix(gateway): Remove session_db from AIAgent instantiation to prevent errors f74ac0fc3add9b4281776ba349193ff5608fb965 Merge pull request #108 from Bartok9/fix-session-db-gateway 26a6da27fa72fda870ddcb230b3dc31447f5c592 feat(research): add arXiv search skill and documentation 19abbfff9653a3c5ad79cf0f6afe148731242bd0 feat(ocr-and-documents): add OCR and document extraction skills 8aa531c7faeab93fb02a31fc8091f62a192c1bcb fix(gateway): Pass session_db to AIAgent, fixing session_search error 21cf339a856497334236f405c8861f72256eea78 Merge pull request #59 from deankerr/fix/ssh-terminal-check 588cdacd49e17ca9a123f2e1da1ac4763edded6f feat(session): implement session reset policy for messaging platforms 0cce536fb2c0a471cfb04a9193aad1439f4d521d fix: fileops on mac b281ecd50ad40f9387e615e2f9cf99be93926586 Fix: rending issue on /skills command b267e3409212a8cdd110960a3e9b784b126077e5 feat(cli): add auto-restart functionality for hermes-gateway service when updating 58fce0a37bab011ca372f1e1b667ec7b39d403e9 feat(api): implement dynamic max tokens handling for various providers f0458ebdb881f0716287cf156a9d5620b8862e7d feat(config): enhance terminal environment variable management 0a231c078364b454fc096ff952e298ddddc53db1 feat(config): synchronize terminal settings with environment variables 7c1f90045e9884685c58aabcb21d532d45cab933 docs: update README and tools configuration for improved toolset management a5ea272936a8a170888cb0d05c6f26f18d5ab4d0 refactor: streamline API key retrieval in transcription and TTS tools 715825eac38af0bc6b754a25917e135e08fb8501 fix(cli): enhance provider configuration check for environment variables 1a97e8200070ec93e71b5ffcb8fec19dee27bd29 feat(cli): add /verbose slash command to toggle debug output at runtime 70d1abf81b6dd23e4d0f758e5846fc40bf33d12c refactor: run Honcho and USER.md in tandem 1fd0fcddb27485bea40a2414affa4f3a2093facf feat: integrate Honcho with USER.md memory system ab4bbf2fb2f3feea9e6fb772248ad09029ea04e1 feat: add Honcho AI-native memory integration 669e4d02975fdb720c82471c49c16fd81e3a3cf6 add experimental google workspace command center skill f92875bc3e1cc5570df10d712167bc30fdd9dd61 fix(cli): reduce spinner flickering under patch_stdout 7f36259f8834be45756ff441e87d49cd7a2cb87a fix(cli): show correct config file path in /config command 2c28d9f5604e989f99661de2e06633a922862f16 fix(cli): respect explicit --max-turns value even when it equals default c21b071e770265f62cedfa994d251bdc4108c9ea fix(cli): prevent paste detection from destroying multi-line input de197bd7cb85037b803d6236f1a7f7622b08f97d fix(cli): prevent crash in save_config_value when model is a string bf9dd83c105354261b46c3ecd95790e903f67dd1 fix(cli): improve description extraction for toolsets 760fb2ca0efe43fc9ef79e8d8fcb374ba1d97f38 feat(install): enhance installation script for build tools and interactive prompts a8ccaca8ea0086ce655284ffe62558317489ac9a Merge pull request #68 from cutepawss/fix/dangerous-cmd-regex-false-positive 32070e6bc032df28676cfe3af12d61b75126732c Merge remote-tracking branch 'origin/main' into codex/align-codex-provider-conventions-mainrepo b7e713b101586093c2806cd4bd4d1f2a55950904 Wandb changes f02f647237914072c0cb504f09a514041e39f269 fix(whatsapp): per-contact DM session isolation and user identity in context 96043a8f7e484d6b598ffb074dde24fce331059b fix(whatsapp): skip agent's own replies in bridge message handler 0bb8d8faf562d340963bb250e5f7d9830c001896 fix: prevent silent abort in piped install when interactive prompts fail (#69) f5c09a3ababb891aac39435ef15d9bd53017e8da test: add regression tests for recursive delete false positive fix 3227cc65d14c4645c8b7e5e863eafc8d1cb12be9 fix: prevent false positives in recursive delete detection 90ca2ae16b8d3515cb775466351015e62fdf2058 test: add unit tests for run_agent.py (AIAgent) 25e260bb3a00102590a09d8e0b3758e3b7647fd1 fix(security): prevent shell injection in sudo password piping feea8332d6246cddeb76c90fde663b39cdcbf88b fix: cron prompt injection scanner bypass for multi-word variants ffbdd7fcce12f460f3cb1a14459abf74486abc38 test: add unit tests for 8 modules (batch 2) b699cf8c4843d5ee43867c80e435973377609499 test: remove /etc platform-conditional tests from file_operations 2efd9bbac47a616641c107f69c9fa4e664e7300e fix: resolve symlink bypass in write deny list on macOS 0ac3af8776d50d10f2c844860a5aab6fd22052ca test: add unit tests for 8 untested modules fed9f06c4ed4661609cd45af545ad663020581ee fix: add SSH backend to terminal requirements check 240f33a06fd4ff3285152f6e46f8155880100134 feat(docker): add support check for Docker's --storage-opt option 254aafb2650ea2482b6dd796e55daa717b3ee03e Fix SystemExit traceback during atexit cleanup on Ctrl+C 8bd82119be267cc99dc34f77555164dc2adb58ab docs: update README with security details and environment variable descriptions 9a148bb9a3add106ec205d64111271efb9ba2f0e Merge pull request #51 from deankerr/fix/cli-env-path-resolution 7a4241e4065e73b6dff24f948d350da7d6c5791c Co-authored-by: Dogila Developer cb92fbe749fbb3dda24fb16b7bdd8c7c505a8485 feat: add Notion block types reference documentation 1d040744646d6f991eb976b75d030244a24cfe40 Merge pull request #53 from JoshuaMart/fix/install c4096b47317dc07b1aa6d26b6b6d712f4cfa6db7 Merge pull request #27 from VolodymyrBg/fix/tool-context-docstring-threading 178658bf9fb23b62bdae5032d77de0760a285185 test: enhance session source tests and add validation for chat types d372eb1f0e584322fc73aaf4a3f4fa83231795b5 feat: add uv.lock file for package management ebe25fefd6ad2813b64c4af5206b9f63cf1f1cb2 Add missing mkdir 688ccf05cbdd3598df21d935240be737c6424fc8 Format 9dc5615b9d86517f8d5ca2face5d94d5357dbc49 fix: use HERMES_HOME constant in doctor.py directory check 696e2316a861868af6106c7a8d4caf2d82797b0a fix: respect HERMES_HOME and add encoding fallback in rl_cli.py f2891b70d02628e1c334353127edce976f4a20b5 fix: respect HERMES_HOME env var in gateway and cron scheduler dcf370cb6e7db5b0651800e653d95dedcbe256f6 Merge pull request #34 from 0xbyt4/test/reorganize-and-add-unit-tests 1b8eb85eeb83341d654e420ba5cb96f9ef688934 Add npm audit checks for Node.js packages in doctor.py cf3236ed279327ba3f8163e1e96281400adc5b82 fix: resolve .env path from ~/.hermes/ in cli.py, matching run_agent.py pattern 6c86c7c4a96ea4e70c801fe0263fbee64a56b0c7 Add output format examples for YouTube content 9cc2cf32416806bf05f26a60fac55d2482b682b2 Add youtube transcript collection skill: 9eb4a4a481636ed228b8c8149ab856524217ac37 fix: gateway credential resolution, memory flush auth, and LLM_MODEL fallback 8463b7ea59a6188713804f1c45c1cb79e267541d Merge pull request #46 from rsavitt/fix/docker-backend-macos faa185e37c75c617effd8255dab269cd7d756fae Merge branch 'main' into fix/docker-backend-macos 53b3177ca591a60671d5edb305e55300a9c39e8d Merge pull request #48 from deankerr/fix/config-path-resolution 76badfed6360646e8aea474a4d2376135ea74e65 Enhance CLI documentation and functionality for session resumption 3c1e31de3e3ba94e4f9c20ec9e591a7743b50395 Implement session continuation feature in CLI d2c932d3acebcaefd005b855b510c27c911379a6 add session resumption for cli with easy copy paste command 5a569eb1b653092df47c3cf9d62eb7645319e4f6 fix: resolve .env and config paths from HERMES_HOME, not PROJECT_ROOT e5bd25c73f661e304edd3192d4d5050d7bbaee01 Fix: #41 eb88474dd80d2ef3f1b3af73c3e1180499b5e186 fix: strip emoji characters from menu labels in TerminalMenu 9fc0ca0a724aa03ec067fc31179157e112577b96 add full support for whatsapp 95b6bd5df62bfa4e343e83018f26189dc18040d8 Harden agent attack surface: scan writes to memory, skills, cron, and context files f1311ad3dee49216284342333d216ded2459685a refactor: update Obsidian vault path handling 0310170869aa2581e03123da686fe83aafa91d12 Fix subagent auth: propagate parent API key to child agents b6d7e222c1f6dad4c4929b7610e8614c3b6828c2 Fix Docker backend failures on macOS e71d9a89d24950b6527551bb753bcfcb26dbbeb3 Merge origin/main into codex/align-codex-provider-conventions-mainrepo 74c662b63a8c559ebb9638a42bd5195d4fc726f4 Harden Codex auth refresh and responses compatibility 91bdb9eb2d8e93a1aa37029b72da14b7b8fceebd Fix Codex stream fallback for Responses completion gaps 47f16505d2e099085908aa5a056178d323350b4e Omit optional function_call id in Responses replay input e63986b53487b098ad144f8639e20be7d274b98e Harden Codex stream handling and ack continuation cbde8548f4b57dacc0ab8ad62d708e7fac7cb504 Fix for gateway not using nous auth: issue #28 7a3656aea21d6d9c5f0fd660e0eb91a47166658a refactor: integrate Nous Portal support in auxiliary client 3ba8b15f13a9b988357c8d46e7cbd4be03ec3c5c Tone down Codex docs and prompt wording 7727a792f2758b30d04a27ec05b9e31c7f4c33a2 Revert README Codex messaging changes ce175d73722dd8a38184df77a9d8722101671bbd Fix Codex Responses continuation and schema parity 609b19b63086102bbf66deaf9d5fee05c8c8499e Add OpenAI Codex provider runtime and responses integration (without .agent/PLANS.md) e3cb957a10a632ae9973d2b5bfeaaeea7eb0b11c refactor: streamline reasoning configuration checks in AIAgent 55a0178490f13f5e72b895b2314d06f63073fb06 refactor: enhance configuration loading for GatewayRunner 9a858b8d6743120123d4c652024c411e8989fa80 add identifier for openrouter calls cbff32585d8026e03f49def32e32939129925939 one more windoze fix? 8fc28c34ce961334ed750705d903c0cb4016d2f7 test: reorganize test structure and add missing unit tests d72b9eadece10e22bc81387304722a42a0a3c493 More fixes for windoze 3c5bf5b9d8d6e65454f51cc02985c68479a3853c refactor: enhance error handling in user prompts 5a07e2640536c2a611f27573cb780bf5962d8116 fix: align threading docstring with implementation cd66546e24495d45cc29e66332c95b3fa6e13818 refactor: enhance install script output and command handling 21a59a4a7ca2ceb97fd461a770c6ae3413c7cd2a refactor: improve SSH cloning process in install script b5dbf8e43df97a3993b58179662adbddb38a31f1 Update model version in hermes_cli to use openai/gpt-5.3-codex 54e50b8a6e4e37c86f8a5a4baed0c15a0471e69d Update README.md to clarify the description of the AI agent, emphasizing its fully open-source nature and enhancing the overall messaging for better understanding. b35dbb0420e6d53516fb5de2a319b8a7231773a4 Update README.md to refine the description of the AI agent, emphasizing its growth and autonomy while streamlining the language for clarity. 63f6afd75b5cfa2188aff241e75c2142eb44f261 Update README.md to replace badge links with new styles and add a link to the X platform for Nous Research 3e311a009278895df422e4ce58d53d6c0a46a0f8 Update banner image to new version 69d3d3c15aaae9382144fee4e55f55b24f62fa9e Hide Hermes model until next release with agentic capabilities 33bc1a3b5827ecbb15bba49e2d79b1c688f7d48b docs: add sandboxed terminal usage recommendations to README 740dd928f769c65df09fc11195c52540f63d6c7d Release set of skills 757d012ab5fcd09245cd9a61bf8a27fec548f7b5 refactor: remove outdated skills and references from MLOps f64a87209d8f40f002fd8589cd03cafe292b208f refactor: enhance session content handling in AIAgent and update TTS output path 41df8ee4f53b0447acb2da7c8684afa7d211efea refactor: enhance interrupt handling in AIAgent class 6877d5f3b5c873526c83ff4eb3f3675975741fa6 docs: add note on message delivery in cronjob_tools 6d74d424d3209b058cb18b0d94e9d3b7ef1c9fc2 refactor: update job execution configuration loading in scheduler 9ec4f7504be4406297f486d78c8b5eb785506ae9 Provide example datagen config scripts 0e694b954af62638eadf9981e619af1c7c737229 Updating config c12e46cf132492db840c87aaece6c008cc21f8ee Adding config init method b93ad43191c1d66c51c3b9b9fb0d6ec6b7c3cf55 Updating path vars and dataset loading 9166d56f171344fbd26ad12e08644d3e904b64c0 style: enhance landing page responsiveness and layout 80b90dd0d9e13b28311cecc4ea1e534bfb5d48c1 refactor: update landing page metadata for clarity and engagement f1c2f8a41475a4969d1420d1c588caf6380641bd Updating to use hermes-agent backend and parse container definition out of provided .sif files 91907789af08952d7634857d9f2e69ea24d366a9 refactor: remove temporary debug logging in code execution tool 6845852e827a266e4a1949b55e996086c1610693 refactor: update failure message handling in display module and add debug logging in code execution tool 99af12af3f6ffef1a9d3be2f17eeb8760879b635 chore: update landing page hero text for improved messaging fd76ff60acb481393fdb84c38007c827ce850f41 fix: improve stdout/stderr handling in delegate_task function cc6bea8b90b9dab3ec0a647583ba34723c7a5be3 feat: enhance session search tool with parent session resolution and parallel summarization c1d9e9a28575f448649e5112dd176c28d101a715 refactor: improve stdout handling in KawaiiSpinner class 681141a5265fbdd0d92840de58f0d790e5da3fee fix: ansi escapes causing broken terminal cli output c100541f07d1c323e9f16a4ec9c9c07baf99a125 refactor: remove direct stdout handling in spinner class d64f62c2ef0139481a246b9100798b8db149679d feat: enhance spinner output handling in display module e049441d9343c3674fe316db6cb874cfc0c28977 feat: add reasoning effort configuration for agent a30b2f34ebc6643e3d1a4f214d001cd2c960d241 feat: add landing page for Hermes Agent 2bf96ad244611ea067e2f24cd22a09e620a0fa09 feat: add ephemeral prefill messages and system prompt loading a1838271285aa71e06e626bd311d92d56484e5d7 feat: enhance README and improve environment configuration 54dd1b3038fe2cbabd6ee33015109820ab14ef08 feat: enhance README and update API client initialization 75d251b81a262a405dc0aa322ccac50afefc2012 feat: add API key requirement checks for toolsets 7a6d4666a2e72c65cf3bc561d6ed7e657c4ecb29 refactor: clarify user prompts in checklist interfaces d802db4de07b3267c34bb362fb067ab9aedcabd6 refactor: improve tool configuration prompts for clarity b103bb4c8bc0bb86b068492404943fd6ea8c69b2 feat: add interactive tool configuration command a9d16c40c7d80ec5b7a55717954a3fb99ecce2bb refactor: streamline API key prompt in setup wizard 98e3a26b2a2dfc9da463074c1a909df947225583 refactor: update user prompt in setup wizard for item selection f209a92b7ec14178da1a155b3591cfc9bf8e7195 refactor: enhance setup wizard for messaging platform configuration 0edfc7fa49aa17eb484a90460e81893ce0f87adf refactor: update tool progress environment variable defaults and improve setup wizard prompts cefe038a87180da603a03e6c7ea78cae9ea21fe7 refactor: enhance environment variable configuration and setup wizard 0858ee2f270131b483a10a63f0c84755873253d8 refactor: rename HERMES_OPENAI_API_KEY to VOICE_TOOLS_OPENAI_KEY 4d1f2ea5228b15a096df1d7337bc3f6723a4a452 refactor: remove unused multi_select_cursor_brackets_style in prompt_checklist function 6447a6020cad90a8dc2fa86eae775fddb356f6ed feat: add Node.js installation support to the setup script b3bf21db565f3e8d9c34acc0f01b3906cd47abd9 refactor: update environment variable configuration and add multi-select checklist for tool setup 674a6f96d36d67918567b506f6ee2b37a3e83090 feat: unify set-home command naming across platforms 79f88317385df3e61d106dd51b323e41ce3e0cc0 refactor: improve message source tagging in GatewayRunner 224c900532b3eec53a31ceea30704f59dce720b4 refactor: update session loading method in SessionStore 4f9f5f70e397ec1ac9a3088500b1bfd92045c887 fix: handle missing toolset IDs in welcome banner 38db6e9366601fb4cddc920f2ea13f6683ac5be3 fix: correct toolset ID mapping in welcome banner d18c753b3ce0c94dfcb850b2df1ce9596a4b8538 refactor: streamline scratchpad handling in AIAgent 8fedbf87d92effebc86f0e9c79f2038a0876ffef feat: add cleanup utility for test artifacts in checkpoint resumption tests d8a369e19405eba8ef0a3089839b0044e9db98bc refactor: update API key checks in WebToolsTester 90af34bc8336d090856a8e375290216a0aaf7b65 feat: enhance interrupt handling and container resource configuration c7857dc1d4063a7aa2e006f5e5fa0f388931d9a8 feat: enhance AIAgent's tool usage nudges and content handling 08e4dc256372bce1285ef4c07db880c81da50fec feat: implement channel directory and message mirroring for cross-platform communication 92447141d95b5663345cdf5d1b6bbfbae7e4528f feat: integrate config.yaml values into environment for enhanced flexibility e0ed44388f161d7d661a4be7a5cf6779e49193f7 fix: improve error messaging for chat ID and home channel configuration 16d0aa7b4d0141eb32e87cc6a61b900d10bcc1e8 feat: enhance job delivery mechanism in scheduler 6037b6a5abff924f8bb6e047572cd8ddb60af5ac Fix session saving to DB with full conversation history (not just user/assistant messages without tool calls) e1604b2b4abc347e38ea6f22adea42a32d289d41 feat: enhance user authorization checks in GatewayRunner db23f51bc63ac68a80d2e48cfb160438a83929f2 feat: introduce skills management features in AIAgent and CLI 3c6750f37b28bbfa9a23d8f18efab319177d8854 feat: enhance memory management features in AIAgent and CLI df2ec585f1d3b29db5afe0e8f80400c2bcef90fb fix: clarify MEMORY_GUIDANCE phrasing 250b2ca01adf686e8b117504c7f9c061dac73168 fix: update MEMORY_GUIDANCE for clarity c2d5f7bf2619d34c4812e817faba278cd836f243 feat: add timestamp formatting function for session metadata e223b4ac096b56c9e882450e1a0593d6fb314736 Enhance agent guidance with memory and session search tools f072801f38624ab1694ebac000c88a7718514617 refactor: remove unused compression model variable in AIAgent ededaaa87410184d37756eed5e47a1a70b239a10 Hermes Agent UX Improvements b1f55e3ee578b2779d7598c97992142f7ea38596 refactor: reorganize agent and CLI structure for improved clarity 51b95236f97647fe3680d59bd69f83c91e302cf6 refactor: move model metadata functions to agent/model_metadata.py 9123cfb5dd4d35210c8fb51222d4b05e11f72f70 Refactor Terminal and AIAgent cleanup 9018e9dd70ce2f5f01b73d9d1e5f2bf4d4c9816d refactor: update tool registration and documentation 08ff1c1aa8a426d7bbcb1640d9919f802d1fc0f3 More major refactor/tech debt removal! 61349398828b1e60da97c3eb6a6c15b704539cac refactor: deduplicate toolsets, unify async bridging, fix approval race condition, harden security 7cb6427dea43a368b2fe8a936197a0ac571d122d refactor: streamline cron job handling and update CLI commands 79b62497d1ca3ecb17abd5ab505b0d1ffc37cd3c enable cronjobs in messaging platforms 0729ef7353c14af4d48ae81e1e8be68526110e3c fix: refine environment creation condition in terminal_tool 8f6788474b0df05045f7e82e30a621611172cb7a feat: enhance logging in AIAgent for quiet mode 5c2926102bf822a498c9c7b4d4c59b8e5dd6c976 fix: improve placeholder handling and hint height in CLI bff37075f61e999908d15fb3f3e4327a9e2c9a2a feat: enhance CLI input handling with password masking and placeholder text c98ee985259470a271dfbcb5fc7715263965f315 feat: implement interactive prompts for sudo password and command approval in CLI ecb430effecae2d553fcc68c05cb6675678e6c94 refactor: enhance API interaction and message handling in AIAgent 7ee7221af11f2425e8e7c6e1aa7dd2608aef66cf refactor: consolidate debug logging across tools with shared DebugSession class 748fd3db885848d9e03c50a44c91ddaff4652ba1 refactor: enhance error handling with structured logging across multiple modules cbff1b818c30e0f88a906afc01b752d783b866f1 refactor: remove obsolete Nous API test scripts a885d2f240295ac17038ef3c4c65ac3a7433ead4 refactor: implement structured logging across multiple modules b6247b71b5a786de194b88dafc142d975b95f5ff refactor: update tool descriptions for clarity and conciseness 3555c6173d0f08ba1f67f91b1cb462066d7e0daf refactor: remove temporary API payload logging and enhance session log structure 3976962621d5c9d4006a72ee9ee4645c9a20f15f fix: update session logging directory path in README and code a54a27595bf4223c63e95bbd64e2083c5f34ec34 fix: update browser command connection instructions to prevent session conflicts 7283b9f6cf0c023e5231c3d5d8635e7454e84bb3 feat: extend browser session management with improved thread safety and timeout configuration 3dfc0a9679d666de1e3702b478cfa6764828f0e0 feat: add PPTX editing and creation skills with comprehensive documentation 6903c4605ceba94053e3ee47c6af49511c8722f9 chore: update package-lock.json with new dependencies and version upgrades 5b3f708fcb440cf3d81da92952dc11fa9855e321 feat: enhance stale daemon cleanup and improve error logging in browser tool b33ed9176ff897d9fc2893d13e66d2a285d3bff3 feat: update database schema and enhance message persistence c48817f69b220b1d359306681ea557905073e2eb chore: update agent-browser dependency and clean up stale daemon processes 70dd3a16dccd16f2449382e2168a96bb5b74e3e9 Cleanup time! 9a19fe1f5090fc54b739eecb2ef9a97fd9747db7 chore: remove deprecated session viewer and exported data files 3961f8e7a493a90ab9554b0abed15c3fb094e989 refactor: update README for improved clarity on provider setup and switching fc37b17b1f4c349f7a91886a16d9203dad1da439 feat: simplify README instructions for connecting to LLM providers 630bd3d78913b2dadf0ea7e2ba64354ec6425168 feat: improve password prompt handling in terminal tool 5c4c0c0cbaf4a3225575d787962671ce0002edc6 feat: update branding and visuals across the project 24c241d29b3a0f7228c6f27d9997f2a0b5b1705b add github project management skill a3d760ff12fc704752e60ab2837503850ae844e8 feat: implement provider deactivation and enhance configuration updates 77a3dda59d3a7b2b700fae265298d2178d0a4456 feat: enhance README and CLI with multi-provider model selection f6daceb449c4c4db33559dfd3cc5b8332c0c50e0 feat: add interactive model selection and saving functionality cfef34f7a61f787bca9e0ec999374edabcb1e3a9 feat: add multi-provider authentication and inference provider selection c007b9e5bd192154cd2370a53708d9c1c8ce27f5 chore: update installer banner text for branding consistency b9f3518b33aab5fc6920d74ff1ad401c0ff44c20 refactor: streamline TODO.md for clarity and focus ba07d9d5e3a185c3d18dd4052d1ec77fedb60d11 feat: enhance task delegation with spinner updates and progress display 90e5211128765ae9d3eab9291bd7404f9ceb482c feat: implement subagent delegation for task management c0d412a736f10d632dfebc312b002e50ecceae62 refactor: update search tool parameters and documentation for clarity f9eb5edb965369618ae02e88180754b6790664c3 refactor: rename search tool for clarity and consistency ba8b80a16314889076720a854df45bce36f02344 refactor: improve memory entry handling and file operations 3b90fa5c9ba5821ac3ce85d8607b4b346f6ec9c7 fix: increase default timeout for code execution sandbox 273b367f0511d88cb9f4694061ccda4eff96cf2e fix: update documentation and return types for web tools 783acd712d6a382cd66efc5f8e76b1efc13211dc feat: implement code execution sandbox for programmatic tool calling 748f0b2b5fc185764821defea335d96a4e7309d0 feat: enhance clarify tool with configurable timeout and countdown display 9350e26e681e5952836c49c9890b1a2fe54bd48b feat: introduce clarifying questions tool for interactive user engagement 997f793af12e0c4e1623564642ed195d8b0ff0f8 feat: update TODO.md with enhancements to skills and memory systems 4d5f29c74ca99928f053ac55d2f780be61b827df feat: introduce skill management tool for agent-created skills and skills migration to ~/.hermes d070b8698d39ecbbb5c617aeec50756566946faf fix: escape file glob patterns in ShellFileOperations 057d3e1810a2177f1b31495d36759f5ff358a1d6 feat: enhance search functionality in ShellFileOperations d49af633f06a7f7f9f2c02089e5debdfda87f953 feat: enhance command execution with stdin support 3191a9ba11d4922dd0283a26442905dd04ed55ae feat: add new conversation command and enhance command handling 53e13fe1f12cb67b42840672ba5255ee570215dd feat: add Slack and WhatsApp setup prompts in setup wizard 59cb0cecb214b670264d9a6d8683921faadaa23a feat: add messaging gateway startup functionality 1c6846c4c283d830fa90be2104ff2cd16fb368a7 Merge branch 'main' of github.com:NousResearch/Hermes-Agent b88e441a076a97b511ae190dbcbfb106422f2df0 feat: implement cross-channel messaging functionality 4f57d7116d9f497b9ebf5b9e378f0bbec136567f Improved stdout handling in the terminal tool to prevent deadlocks by implementing a background thread to continuously drain output, ensuring smooth command execution without blocking. 2d0b9edbf6776b6358f8502a1c91109702100d46 - Integration with Nous Portal via subscription, using device auth flow, standard refresh/access token flow, and short-lived API key rotation - Optional request dumping for debugging 422607df7c80880f1fb397e685d457a92e1a32cd feat: expand README with update and messaging gateway instructions 3f4b494c616fe6fee5f14f9af41e6d3d849993b3 refactor: streamline thinking spinner behavior in AIAgent 109dffb2428b91a1220d7baef4a91cbeee031b7b fix: refine dynamic height adjustment for input area in CLI 0e8ee051c64ad8ac072322725f9e8c151588a7ed feat: replace framed input with horizontal rules in CLI 5c545e67f350df8dff0ea2346f4bd7ab5056ab66 feat: add styled border frame to input area in CLI 2daf5e4296a48f302dedddc41cbf9313a3cb81c6 fix: improve CLI output rendering and response display d0c8dd78c2536468f7dd0a2b6dd95c538ed67bbe fix: ensure proper output rendering in CLI by flushing stdout 21c3e9973ac7084e2bc591486e0dabbc8f940bc2 feat: enhance CLI output formatting with dynamic borders 8e4d0131543e6ce6558f0589d68ac1e8cc277593 feat: improve ANSI text rendering in CLI 37fb01b17d44dc22b477471e835ada603405f5be feat: enhance conversation display with ANSI escape codes ac0a70b3698a557badef0ac79e6b504d494363db feat: enhance input area height adjustment in CLI a4bc6f73d77d9496c1fd9bfca9d98aeb545ad3cb refactor: simplify CLI layout by integrating inline completions 56ee8a5cc68a1f81ad04e98cd59499eae06d1195 refactor: remove 'read' action from memory tool and agent logging 440c244cac71f0764e00ea85ab87ae0a2d18fe61 feat: add persistent memory system + SQLite session store 655303f2f1e0afac0dab45b714db88cc197da561 Add skill name resolution and enhanced install confirmation in Skills Hub 14e59706b732164dda260f1899ade74a86a8352a Add Skills Hub — universal skill search, install, and management from online registries d59e93d5e9c6878a5aa614e75a63f0da8cac71f3 Enhance platform toolset configuration and CLI toolset handling 9e85408c7bfd6024754709800ab762402d1a2816 Add todo tool for task management and enhance CLI features 225ae32e7affa679ead636021c49d640ac919f6c Enhance CLI layout with floating completion menu 50ef18644ba56e642d37d2930075c34bb5fc8afc Update multiline input instructions in HermesCLI 41608beb3585676032f7f6305a64f213339692f1 Update multiline input handling in HermesCLI d9a8e421a4a272a6030e7a76bb5300edd6bb292c Enhance multiline input handling in HermesCLI d7cef744ecc99bf10064729f2a92368e9c15c7f4 Add autocomplete and multiline support in HermesCLI input 54cbf30c1430eff14cf8e79a4224ef2a6b1aa23d Refactor dynamic prompt and layout in HermesCLI dfa3c6265c7ed73b29d3d956409210051cc19514 Refactor CLI input prompt and layout in HermesCLI a7f52911e1c61d632d000b5279a6f95a0fda7996 Refactor CLI output formatting in AIAgent 1e316145724da4897f72c3f57b0cbcffb05b64e3 Refactor tool activity messages in AIAgent for improved CLI output 3b615b0f7a89c909f2724eae3cd6e96383e0cae9 Enhance tool previews in AIAgent and GatewayRunner e184f5ab3a51a9f9874d6d161788a844fcc43f74 Add todo tool for agent task planning and management 9139eeaa60bfc8389db4123d717c5dafc2f904f9 Adding endless terminal environment after rebase: d0f82e6dcca634e191cead913d222c3e6fcf7819 Removing random project notes doc 49e1f9ea896dfa79643020d9fc6488b7db228181 Refactor TODO.md to summarize future improvements for the Hermes Agent, focusing on subagent architecture, task management, dynamic skills expansion, and interactive clarifying questions. Key ideas include context isolation for subagents, task decomposition, progress tracking, and skill acquisition from successful tasks. 6731230d7340b5ae093454f0dbf06ff7b86e32b3 Add special handling for 'process' tool in _build_tool_preview function ec59d71e6083cdddfd0092dfbdd62d5077ba0633 Update PTY write handling in ProcessRegistry to ensure data is encoded as bytes before writing. This change improves compatibility with string inputs and clarifies the expected data type in comments. bdac541d1ee20aa8545d908a01e18c65b8e319de Rename OPENAI_API_KEY to HERMES_OPENAI_API_KEY in configuration and codebase for clarity and to avoid conflicts. Update related documentation and error messages to reflect the new key name, ensuring backward compatibility with existing setups. 061fa7090720f4631b58ec0e760ca9236b198946 Add background process management with process tool, wait, PTY, and stdin support 48b5cfd0851e8f330ab7f7a0c158a709e68deb39 Add skip_context_files option to AIAgent for batch processing a7609c97be5f03c881e75973f5bf1e405f8d1511 Update docs to match backend key rename and CWD behavior c33feb6dc9d4401e8e5f55b026f17e8665e290e2 Fix host CWD leaking into non-local terminal backends 2c7deb41f6f7274c803b108b49c1da0e590099bc Fix Modal backend not working from CLI 8117d0adabe39e47973eaff9290a4340b92f63ba Refactor file operations and environment management in file_tools and terminal_tool 01a3a6ab0d2d8e0e8644f85ff2c650d2cecd0821 Implement cleanup guard to prevent multiple executions on exit 45a8098d3afe181b281f4fc908199852a11b1299 Remove browserbase SDK check and add Node.js and agent-browser validation in doctor script 60812ae0418d12b6baec52659fc6ec05eaaed272 Enhance configuration checks and persona file creation in doctor and install scripts 635bec06cbb22cae75fb5fffbe7729861dd0e719 Update tool definitions handling in GatewayRunner 0f58dfdea4e2b9371a4ebe5f569aeec069454b71 Enhance agent response handling and transcript logging dd5fe334f3b4c516e8150ca2c92c226803411e86 Refactor configuration handling to improve user experience e0c9d495ef7764c656c5fc55faefd8464353cce9 Refine configuration migration process to improve user experience 2f34e6fd3017f8eb32bad073c9b68b9c28553a4c Update OpenAI configuration prompts for clarity and detail 69aa35a51c3db85002892e2fab889287bf170dda Add messaging platform enhancements: STT, stickers, Discord UX, Slack, pairing, hooks 5404a8fcd8a575a9c82bc77a5f090d4fd545f8c1 Enhance image handling and analysis capabilities across platforms eb49936a60aaf6c57483d01138a86fe1ac5445d1 Update documentation and installation scripts for TTS audio formats ff9ea6c4b1c69ebe450a6128e8f76d39162565ac Enhance TTS tool to support platform-specific audio formats 586b0a7047ea7d9ea81bcd44496fb9e2136de50d Add Text-to-Speech (TTS) support with Edge TTS and ElevenLabs integration 354e668eeecdbb078915425d4385e54d86a34d29 Nomad backend: draft raw_exec/Apptainer driver support + docs 327eb38b15b5976c938b67608179c750fd4cfa29 Draft Nomad SlotPool terminal backend (opt-in) 62d5cc738e678607a768ed7e5bc8117d93f21595 README: document optional Modal pooling (TERMINAL_MODAL_MODE=pool) 6ff573fef2ff7c956c7738f1448f3e8787ee8a7a Add optional Modal sandbox pooling backend (TERMINAL_MODAL_MODE=pool) ae6435f78745cbb4908be4f8fe4fbf8e84cbf356 Env robustness: context-safe prompting + tool arg normalization 24c13bc412e1a2d74bbdd0221a5581e09f4f1265 Hermes parser: clarify string arguments comment (JSON vs plain) 06e94223242e844e892a5c9c67fcfa700a8f82ed Keep full trajectory; truncate prompt on per-turn copy 907616a692143ebfe987d80d93d7aedcd74ccda4 Context truncation: guard protect_tail for short histories 33a00d9b8e7843ebff93526ebf9c582bbb8a5466 Agent loop: be robust to non-JSON tool args strings a2312076dacb3c1226e6cb720ef21a8c1a8c544f SWE env: keep reward shaping env-defined; log tool-call metrics only 499490d06af0cecd863ccb98d4e444989ef9c9c1 Track tool-call validity vs attempts; shape reward accordingly 35b2250b362043476d38de937599a83644c1512c Fix RL training pipeline: context truncation, double-encoding, shaped rewards 735723803f931f3bcc1a03d2fa1ad3c81c341414 Adding finalized endless terminal 84718d183abb3a44d6e7ab886f7268c41bca8a70 Add platform-specific formatting hints and identity for AIAgent 3099a2f53c856f670ad0059a1d3a2c13f2c0a2c4 Add timestamp to active system prompt in AIAgent 1472cc302dbced1a5e4f038915dfa5664f0f365a Adding full environment and config file ed010752dd1f9862b75b17977dbe4b98c0663352 Update .env.example to use new Docker, Singularity, and Modal images for Python 3.11 with Node.js 20 support f5be6177b2314b9703850b4059680adf0d197877 Add Text-to-Speech (TTS) functionality with multiple providers 89c6f24d48fcc43cf4975d730f26560bda2fe80b Merge branch 'main' of github.com:nousresearch/hermes-agent f23856df8ef21f051b6735150240b15af7590fc2 Add kill_modal script to manage Modal applications and better handling of file and terminal tools 1b7bc299f373771706698b813f38c2043bf6bcd7 Enhance TerminalBench2 environment with task filtering due to incompat with modal and logging improvements a291cc99cf704f1a84dc4795b0b8099b90750d03 more extra kwarg support for provider selection etc on openrouter in agent rl envs and evals 389ac5e017ed4d963ce7a596451a03b96427c8f0 pass extrabody for agentloop to ban and allowlist providers on openrouter, control thinking, etc fc792a4be9279495ff0c2a75e95e3ae3c65e1b23 Update Project_notes.md: grailed-embedding-search status and TODOs (June 2025) 07501bef14bff9358e07dee2b56a6be87378d6b8 Add Project_notes.md — centralized status tracker for all side projects 395392e5deef165951ee15c6ba547df9dff04eb0 testing training 137ce05324d07489a1e7e8a71d81b4b6473f37f0 Add image generation tool to toolsets for messaging platforms ada0b4f131baf95034ecb125ac36cec847eb6a0b Enhance image handling in platform adapters abe925e21260a1b593bda0c021fc93ebf8b38723 Update hermes-discord toolset to enable full terminal access with safety checks 8fb44608bfe48733cf5c02009c5839cab8a524a6 Update SKILL.md and related references to implement container binding for labeled shapes and arrows in Excalidraw 153cd5bb44efa020c468d9e9e0b788d104d9c235 Refactor skills tool integration and enhance system prompt 669545f5518ceb5a5b9dfae3f5d34821e0ab239f Add diagramming skills for Excalidraw cfe2f3fe15d0eeb121c28acea2606a508d4fff47 Implement interrupt handling for long-running tool executions in AIAgent 140d609e0c8b48f6a3bed42867a1790fbf301871 Refine agent history conversion logic in GatewayRunner a32ad1a656f0a7d5caeb572db5fdd24fdf58874e Fix infinite interrupt loop in gateway by consuming pending messages with .pop() and clearing interrupt events before recursion 62ba69a29d4e78635b4eb0c086e569c17bbbe800 Fix gateway exit code to enable systemd auto-restart on connection failure 9b0f2a16ca9047a449fd056aeb0610c8f9bd8cff Enhance CLI functionality with retry and undo commands 85e629e9154c06b97ff0854947f7e37da182790e Add cleanup functionality for orphaned sandboxes in TerminalBench2EvalEnv 999a28062d1f99ea72f15c9b5a7e5ded2c93e8dc Implement graceful exit cleanup for terminal tool ba3fea24f10c77f27ad9554a99a9e3d42d926fdf Enhance TerminalBench 2 configuration and evaluation handling 6b4a8d0b175c4befa3df4c88577204d58f6adff3 Add terminal configuration options and enhance environment setup 5ec75e38b978e12bbabd915cf0ef716eedbcec77 Enhance tool execution and logging in HermesAgentLoop ad042fdd68c0286023c08451096e111133482606 Update terminalbench_2 configuration for enhanced performance and evaluation 35ad3146a8ab4b64c19dfe1b5b41b192c8d2b60a Add new environments and enhance tool context functionality 2041b354a98759270f467564373587403aae897c threaded batch runner variant to share slot pool 3951eab39970dddc5f3244a62cae6d9238973f33 fixed bug in check terminal requirements for slot pool 62001e3bf5239e390bb18f9f0ec1f0d5a06c442b refactor on SlotPoolEnvironment c8b30e9efa8a41299ec18867bea15d00b8e8511b Updated terminal_tool with SlotPoolEnvironment e8343f2d870eb5a135a25e942ed9ec3cae563ce0 Refactor Singularity environment for persistent container management 1b1307d0d120cf83715d128912843c0790247f9c Implement Anthropic prompt caching for Claude models via OpenRouter f82c3081f2d041d1f8b90645ea2b62dc20b8a137 working with qwen 8b a69924631c277eab1f3efda795fd190a0bfd4d45 updated hermes_base_env, moved in sandbox logic from old agent, added patch so sglang on runpod works with /generate format (will remove). worked, model didnt produce tool calls but full logprobs worked 4619d1c8ef2294af6b9c599ce6e8460e14a630d8 Port SWE-smith-oracle env to HermesAgentBaseEnv 98d945f6de1815ca0d7cc9772c0986291c617366 Add sandbox pool support to HermesAgentBaseEnv 507b77c4aca59f8c4e286dc39366b04513bcc6b9 Point atropos dep at tool_call_support branch (PR #366) b99c2a2644aa849fb8ff3a9901535153670e2cad consolidating with HermesBaseEnv 975c8493087350573933891d16d889d43385a818 Add GSM8k agent env using proper HermesAgentBaseEnv (not ICL) 9c200abdb160699871d7e58ee7aadb19468d1649 Initial commit for endless terminal integrations 7a11be9f3fddc22957e2ec6e56a90b133be28c15 Enhance browser tool functionality and cleanup process 9dc27880cd76dda31e62bddc3f4284e012263ce9 adding tinker but need api key 3b9c53e6dbef3f2518e23b8fd755dceec8b09d29 Add Tinker RL training integration and documentation 05dd31131f3d8455b56f1cde46a227f2233c0479 merged main 36ea883d455f99ddd57a91ed1dfa7b13d64d2f80 Merge origin/main into atropos-integrations 6be8cdeeca4485c33669a4cf03881dd023738fff modal backend working ok, merged in modal-integrations 192ce958c37d8e2c6e91bbfd521e81310fc4235a Enhance CLI command handling and introduce resource cleanup features c441681dc2e45254018792d322519d194518c0db Update default model to 'anthropic/claude-opus-4.6' and refine terminal working directory settings dd70d57b9bc3229e1b1ae32252bcd01d502b6e9b Refactor BatchRunner and AIAgent for enhanced reasoning and tool management, improved tool definitions for fileops f12ea1bc027b001591cd3a5df8dd8bbf6c7581cc Enhance BatchRunner and AIAgent with new configuration options, default model now opus 4.6, default summarizer gemini flash 3 fa76a331b0320c49a927d84317ef309159d41af1 Merge pull request #19 from NousResearch/atropos-hermes-agent d999d9876d9bb2e091dcfdb585e1de9592bf96e9 Enhance async tool execution and error handling in Hermes agent for Atropos integration 578a5fb6a90872727d9750b54d272e6abf6a6b0c Merge pull request #18 from NousResearch/atropos-hermes-agent a8809bbd3e4ba9671ce524525ae8a7ad10df1870 Transition installation to uv for py version and speed to be easier to streamline a478e4458567f26f47fbbf2a44ef2b27f7ab6ff7 Increase max_token_length in TerminalTestEnv to 16000 for enhanced processing capacity c0494b3558df6cda7ea11196d807366539daa643 Update pyproject.toml to refine dependency management 7f1cd014f27d1cbbce6172f2f5c61386d18182f3 Merge pull request #17 from NousResearch/atropos-hermes-agent 07b615e96ed4ac9700ec64d02a71969d8ac3edc7 Add support for Atropos Agentic RL environments (requires branch tool_call_support in Atropos atm) ab387a6120031bf56f06a950efa5e20b369a62fd Merge pull request #16 from NousResearch/atropos-hermes-agent ac797259232e91c107381546137a287b2262f9d0 Update dependencies and enhance installation scripts 0bc914b00c5b968b2be5d76be5f5c0516d28bd0d readme edit 411e7f8ff49fa55118ffe6266103b365a6756fa7 readme edit eb2e6b73febd955ed1fdae9043afb9cf18951cf8 integration 664acf7426d1762dbbabc9a0b05f57868030cba2 fixed gitignore fd1c3da305c7d50992dc49d63dc2405c1bddcd47 singularity working 8dd38318fce73ee0a83b16473d5de615dedd2122 Merge pull request #15 from NousResearch/rl-capabilities 533c064269417d4c213aa8393e3a6098a78fb5d1 Add file manipulation tools and enhance setup scripts 4d619bcd21feedc9eed36c53c038585d97e7295e moved nomand config 5c3105b4376c7422b7c0c0f76e487f14a72a3e38 Enhance RL test inference with WandB integration and real-time output streaming beac2ee06ab65dc2fb8d5ef734faf236631e399a increasing per-chat timeout (re api issues ergh), and tweaked logging 487487406d7918f02a3b3385e45590a7aafd6bb5 adjusted prompt again to make things more reliable, having api issues 87464821d836850d09534ea4ea40046a5844a84b added metadata capture 661d8f4d6cf73fadf849b2b0c409e8555b0d6751 logprobs bf13a848ef162c96e4768fcfa2587fe817cc50af endpoint issue (can reproduce with curl calls) 88286f6da3a237288935a8eecdf9111259ba2c29 slow completions over group_size 4, debugging added 5b8219046055ab977c3a2619e9feea4658528def adding some more debugging, hitting endpoint errors or some other slowdown 3c0d0dba49f99da4b4e363545dfe1e2fac0417e6 Update RL tools and enhance configuration management 12bbca95ecf4bbca5e3d4056526584ae3624e3c7 Add tinker-atropos submodule and update RL training tools f6574978de39c6ccae8a06d13ddabbb2c72c9ce1 Add RL training configuration and tools 8380895ae31f4c6e7f2e2fd5b33c869325f8e7ff Update README.md f018999da97862bfc919a8eaddfec57ce0cdea18 initial RL training tools and loop ea7aa0b0d48787e5025e3bdc3e59f33fb16c9c96 Modal backend stubs 7130fa50cbda6438f24b1ae3e7ed4c0090d29528 fixed infinite loop on agent errors 51a6b7d2b5dcbe06a8edce9b0c8d176d91068276 Implement interrupt handling for message processing in GatewayRunner and BasePlatformAdapter 5a9c98a771b82545b91d1341b4cb026100b54c71 swe-smith-oracle runs 1 step process. llama server was just breaking again locally idk, works through Hermes endpoint & ManagedServer fine 9bfe185a2e31bcc5743cf30cc195d7b35a14b565 Implement interrupt handling for agent and CLI input and persistent prompt line at bottom of CLI :) beeb7896e07e3f6608042857585349f0ec6cb8b8 Refactor message handling and error logging in agent and gateway 212460289b51fe1ff64c0cf5deb450f4c9b709fe Enhance skills tool to have an arg so it is more reliably called, and error handling in agent 221fb17c5e3956520852f19a83ade4411fe70c07 Refine typing indicator behavior in message handling 488deb04a4f9ab3433aefbb4077aebbe51e3191d fix telegram, import asyncio 9d9eea9ac970670699ae6f68707d7660dd62f153 Enhance agent configuration and documentation for tool progress and working directory e7f0ffbf5d1e51e7a3cbefcc43e5b6180a37303b Add tool progress notifications for messaging channels a09b018bd50e6ff2909a5194bcdcafbb0002311c Implement continuous typing indicator in message handling 7eac4ee9fe9feb9cd23b26345171473dddf44a30 Update agent configuration for maximum tool-calling iterations 17a5efb416b521b0a89191dd1324e4f161ff9a0b Enhance messaging gateway configuration and security features 3e634aa7e4f505312a25f39456cc05316d82371b Update requirements and enhance environment variable loading in gateway 5d3398aa8a206c94a761ad9f2dd3f44fcbdc1f97 Refactor terminal tool command approval process and enhance CLI feedback 76d929e177251e674e670a39e5dc7348be3f4545 Implement dangerous command approval system for terminal tool be91af7551f657f5856e93bdf11dcf9f908c806e Refactor TODO list and remove completed items 6cb4fe948aa5b0a16c35455bac30887dd84c2e9b group size 1 works, some timeouts but could be just local server c9011fc7e192a3006843fed56e303a68c7ee6c71 Add uninstall command to CLI and update documentation 265562f2408fb1635c4a239829348a6ae40b9a5e Enhance AIAgent tool messaging and add Obsidian skill documentation 30221d8c2017b0cf2b2cd2b61b89f4f946d82d7e get tokenizer from .env b5b1fef20a37432ccd794c456ba46afa9470d0d0 successful loop with Hermes-36b, adding docker lib to hermes-agent to manage env sandbox builds ff776b57bf4f0c1b410080cc54b34ee2ba04dc2a Remove outdated .cursorrules file and add comprehensive AGENTS.md documentation 3ee788dacc79b5938b8558f1f0b459ca3ded5b48 Implement configuration migration system and enhance CLI setup fef504f0386908aaf0576d3ffe2c7125166e7b23 Refactor configuration file management and improve user feedback bbb5776763e4cc05a3395a94042bcd01ca3bb86f Enhance tool availability checks and user feedback in CLI e87bee9ccd420e1fb802165420c5b2c03baccb0f Refactor setup wizard for improved API key and provider configuration 69a338610a7a1ba8cc5d57e6692b9c6380db64d7 Enhance repository cloning logic in install script aa6394e94fdfeca5b345ba05dc77ba794149f4e7 Update install script to support SSH and HTTPS repository URLs ef409c6a24f477ed76e46d751ecfc9cd4f4b90ab Enhance repository cloning in install script da4167560f5774a16b0dc61df9deaa12ada49dde Enhance terminal backend selection in setup wizard 3488576bd873795c3648551257514e8899cd00a6 Update terminal configuration and enhance CLI model management 619c72e566fa4f79e6792c3fab71d08794292872 Enhance CLI with multi-platform messaging integration and configuration management 16fb41f9cc77b70762aaeef42b0e1efd16b2ad6f smokes working, fixing up toolserver. switched to llama.cpp, ollama sucks too much a3ba41fce21e546c011bd830f816c0aaff16c7cd Implement cron job management system for scheduled tasks (similar to OpenAI's Pulse but the AI can also schedule jobs) c935a604f87622e3af91b4c8b9e22ce4b6c7cd6f Refactor TODO.md to reorganize task sections and update descriptions e114f09f70be8048cdb8e124fed5ff7c4b69c963 Implement reasoning extraction and enhance assistant message handling 4939130485b40b295eadac955e1dc31cbdcf03cb tool dedup 8dccd6569e41e08c7d3372423ec077378b443006 moved in main atropos agent files to Hermes-Agent, updated paths, gated on optional package install db348dc46767aa675d7664cfa8a38466b0e1bd84 ds store 88722e230d6041a737525346e6fd3204a37af8c5 backed in tui works for basic toolset 9b4d9452ba117a44aaaee897dd685462d2ae334d Add context compression feature for long conversations 68fb0efe0e0aca2f86df1a6488b9d648a0870635 added atropos as dependency, and extra flag, adding atropos as optional backend to agent e38c274f8d4a4162ab1532014cb3535e0a2d2788 Added AtroposAIAgent to ovveride standard runner with ManagedServer integration bbeed5b5d12dd3619809d2dc26ade95aedd3d244 Enhance session logging and interactive sudo support 971ed2bbdf61d07db6fcb54c3fde40fd8897158a Implement sudo support across terminal environments affc4e9a8fed24f75d643ea26bf8f28bac7fd988 Update TODO.md 3db83b682411fe9dcbda0944db58ee645f886b0a Revise TODO.md to introduce Subagent Architecture and Interactive Clarifying Questions Tool 9c8d707530c0a721dbf969a45a54bba4a503923c Update .gitignore to include additional ignored files 8f5f99c22ab5a4b6b49441e4063a081762ffed8b Add new skills descriptions and enhance skills tool functionality 32254d301023b678fb372ca192b6da334279a33f Add skills guidance to system prompts in run_agent.py 20f2875472751d7d681f8b257aee55668e786620 Implement browser session inactivity timeout and cleanup 95c55fa2e95c186e3daac780c4d423f8deb92c0c Move skills c360da4f3531e83f436087d36b3a6ca8878597ea Enhance documentation for CLI and tool integration bc76a032ba29edf49d0a53963f1cbb8c51866729 Add a claude code-like CLI 8e986584f44f09278e551b829f76dd8ba5d56f63 Update .gitignore to include private keys and CLI config 4b68d30b0e9297f712e61ddec19c77b2dd7dea5e Moved "architecture" dir to "docs" for clarity b292192467e3c8d52df0e215e317b23e07f7e876 Enhance documentation for skills system and project structure f172f7d4aa145913dca40a7871c693495b3840f2 Add skills tools and enhance model integration 8e8b6be690ec65e1074b282bd6671cf7ef3f7785 Add timeout configuration for trajectory processing e8c6135a9145bfac553ef5a364364e5e7524f84c Update documentation for project structure and tool integration 771cf41fea1f38794140bcdd2f284504dfdbcae4 Update environment configuration and enhance terminal tool integration 7ea17bb9576b92e880cc44cdec4e0e870beb0794 Update environment configuration and enhance tool definitions f8846f85a142fda912842b8fe8dd8e9771f7bd0b Add package.json and package-lock.json for project setup 4c05ef0ba8f01886daafc47ec09e7839cdac3136 Enhance logging and tool initialization for improved performance 5438b64e32b96caa8ffb6f100418d5581f1618b0 Add new shell scripts for various task runs 248acf715e0ffcf81c5a2637abade8d1d7ab1b79 Add browser automation tools and enhance environment configuration 54ca0997ee988ed20b2f553e1993197b57f99f9a Update .gitignore to include additional directories and files b78076cac75fc84d90c95ab401b98f3fa0fcbe1f Enhance trajectory_compressor.py with new input options and sampling functionality ba19d530ad2418f8a787c88fc7553ca186b9ae52 Update environment configuration and enhance terminal tool integration 47555602d7f18f606d38f11fa2be2a1a27204b71 Add mini-swe-agent runner and trajectory compressor 6eb76c7c1a37f85984f5fd0cec72d50b7abfcbda Enhance batch processing and image generation tools b32cc4b09dd36343a8ab2534a8c0e22c42a84fc0 Refactor batch processing with rich progress tracking and update logging in AIAgent 6e3dbb8d8b68243495664304955c02cb30548810 Enhance batch processing with progress tracking and update AIAgent for OpenRouter detection b66c093316b9b0105b7781e665be25efeec0238f add default datagen example script 13d360030fe0efc8baeee3761519a0b7d295bca1 Enhance tool normalization and API integration across modules 66daebe88f003bd635aa5b8b15d8d20cba049cbb Implement enhanced response handling and tool call validation in run_agent 4071ba29dac77bebeafe0801715a93ecca181178 Enhance batch processing and tool validation 21f9e2df4048c482e74bb0b3c3b6f2adf2eac1ec Merge pull request #14 from NousResearch/speed-upgrades 80d326310e805a092878c8d00221f6e30f3c87fb Merge branch 'main' into speed-upgrades 53fc705b138b00bbf7545cf1ffc5a568d27bc3ef Merge pull request #8 from NousResearch/update-snapshot-id d5af53888a745ad06f15ec10ff6dec51cee4d310 Merge pull request #3 from NousResearch/architecture-planning a7a37249f75162623a7ecee729075f98eecb298e Merge branch 'main' into architecture-planning 6af6ff2a0a4679374c9d4a06f0b9031e305c28ed updates for stability and speed e578f976af18252680e33ccc726580bfd514ee0d gemini thinking script 96bc31a8b1e4e0e6af5dd9ec7ead1745b4c5b766 add prokletor 7d9a1e119d44f63353c1e45fbc71b5a320ad0f1d add prokletor formatter e91d9e839a370c0506238a193718a1be65812810 switch to asyncio 98321be8b026c2485ca6856db7d7341d4a13d928 gemini fake reasoning 30ca2825942f8e810af1c80b541d9f969d811d66 Merge pull request #11 from NousResearch/simplify-terminal a219e178a16fb28c27e559cc249a13ca252eba61 support gemini models e06a15b3ab22a3e290d34f35a1393ed22dd16961 add profiling 349e37de0a7d501c6a400e6a83490938a3405758 add linewise profiling ab7293bed6529b4f28f3b4109cfe96e5e62fc3e0 don't log exit code !=0 as terminal failure 1614c15bb1123a8e5eec0d1b7983ec653bb1cd99 rate limits f81395975025145d25825cb6bbb12c1ee3f7af83 add simple terminal f957ec226789ca4cb985b57b5e7961ad9f3bde0f update distribution and gitignore 92e3074c1033dc72b222982a2d36c9994dae54a4 Merge pull request #9 from NousResearch/tc-logging 31c733383be8fc2a751ff2f8b4f871588d95bc46 add tracking for cluster failurse 0c618482c408e0dbfcf35651b5da58ca934a0ac8 add logging of prefix of tool call and tool response 2d8f6c46f12496d153cdc16dd47fc4d50a5d00e4 log first 20 chars 0fbc0475f3c9bc0cf0ed1841afbe7c668e065fcb update snapshot id for ipython c27787f09f9fdb0d8b473fb2fc262fd064839b93 fix gitignore again d90fcd4e2b9d49e126f8b3e69d723f115b5d5d12 update gitignore 69fd0ca9aabfbeceb9681bb1662b50576c358bbb Merge pull request #7 from NousResearch/test 4135cf46824e63e71dac4feb9e949919f87f964f Merge branch 'main' into test c82741c3d8dad2964226a4ed4fa027c9d3fd5631 some cleanups 9573b2ac2ddcce469e2f8f6301fd87fa6ecc545e Merge pull request #6 from NousResearch/fix-leakage fbd3a2fdb88e67d5ae3923f074d437bd5adeae73 prevent leakage of morph instances between tasks a4db3fdee5b921f39092d3d61ae50c6963a61231 fix leakage ab5c9fc37b321705c13b12a1414d0381350655e4 Merge pull request #5 from NousResearch/update-snapshot 0ca3e0aaa95c053f6a3f0697761739532e6176ce update snapshot f6f75cbe2b5d699ba686c05026420c6b320fd423 update webtools d4544f08c5550f6ae05c58d81f0ad06df97ff4d2 Merge pull request #4 from NousResearch/fix-terminal a6ec79730cded38a942d2425d9251eccca9ecbee terminal tool faecbddd9b3ea790e9babc17297e6f8b776e8c09 fix terminal interactivity de9c0edc515a1245e4a9a42cdb0f915132091836 some bugfixes c2d5a28d1522d5f3a2db414c3194d568e22b37b1 Modularize frontend bb5eab2645dd219c4abf696eb2a136407873b852 logging work 6313c9879f56972a4efa7770fee8ff5d06e2c5d2 changes e698b7e0e505d83de6aefba3032221cc3adde0be changes 8d256779d8fa76231702f0f7296052f2395fdb02 Update vision_tools.py to include image downloading and base64 conversion features. d36790de915354343ffad5c66916ee115cc29ed8 Add ephemeral system prompt support in batch and agent runners. Update README with usage examples and documentation for the new feature. Ensure prompt is not saved to trajectories. a398d320b7f38ec5d71ca7631b554e05cb9e5fd1 update gitignore 22b6d5866c10cc8780c581d50600507eb7f891f7 Fix some issues around async and tool constraints 0e2e69a71ddacdc99ba7282f3b4ab93ded881834 Add batch processing capabilities with checkpointing and statistics tracking, along with toolset distribution management. Update README and add test scripts for validation. bc5f0e62d9e6c36f8f14a43e5e6c70982f280069 Add support for enabling all toolsets with 'all' or '*' alias in README and toolset resolution logic 6fac6fecde923cff127e0fb042392a15686904e8 Enhance import handling for Hecate in terminal_tool.py to manage local folder shadowing and improve error reporting for import failures. c42d9055ed23b68e6b0b9d1154fadc36876b7dd4 Move test run back to repo root. weirdness occurred a7ff4d49e94f717f19ca54b8c0e99994b2555f6b A bit of restructuring for simplicity and organization 0411ca188099379218841a7c63e2fb552373e0f5 Add environment configuration file, restructure tool imports, and enhance README setup instructions e5e77381f0fb6de54cf988a1f088b4833c702bc8 Made to be more descriptive from comments 066514e2a9be69fff56cd1324c3d90ae031de446 add more architecture docs 045a1737f899d1415d7fb72bd037a1ff011aa322 - message graphs c5386ed7e6425ee750d3fe7d6d6685c076811004 add better logging when requests fail 2082c7caa3089cb8bc9f5474726c257044fb52ce update gitignore 17608c11422bc1bea8c8c2e2032c41cd4ac57a7a Update to use toolsets and make them easy to create and configure c7fa4447b831e2320b7d07e451bbef63dbf28cf3 cleanup e7019d98bfbbe5d7a91ca42e3800a81ebb97403c support passing morph snapshot id 587d1cf720950dbb7f9b4afb527d2d4898574c7f Fix Web Tools, Upgrade MoA to GPT5, Add Trajectory Saving 4ece87efb0ddb477565a90917538cd6497ce708f update to firecrawl 96cff783357c785ea1ba8a1e61f923364e29f2bd cleanup 58d5fa1e4cec2783962328d887b12810d6de0c8c update fal requirements f4ff1f496b259d10316f81af52d16756ab274666 update gitignore e1710378b7388714b75c8c96ecb917193faf92fc update model_tools for imagen and moa bc71dffd4cb7586bd82501f6897ccca1255c2e1c update requirements for fal image api ebb46ba0e6a70dc1caa0005ca4449a63e0657ad1 add image generation tool 3078053795e838e47797ede02b44e6dead731aac add mixture of agents tool cde7e64418e00a1337325e1259a7f8ba7e563315 add vision model tool, cli updates for exclusive and inclusive toolsets bf4223f3818fb5654550b059e416425cb06ab5e2 implement first pass of scrape/crawl content compression 1dacd941f67be89ccfd17ae6211eb38525f07698 Merge pull request #1 from NousResearch/terminal 10b4cfeace2487980cf682808e0613dd099f2167 fix history leakage 45d0b0b1427b965bd7a61f1510dee5cf2479aa0a change command bab9c75b5b40bfa8788aaec8a3c6f606bb60d240 more detailed desc 6d346250b18df94878f7bcc27604c6e9f51208b0 readme a49596cbb2c17686f2c6de47393e3c419e4c9444 terminal tool 122d8788ae2308dd222eafec393a6862a2e39574 terminal tool 21d80ca68346dfdb8d3556015a723a9217f8566f initital commit