Repository navigation
v1.61.0
What's Changed
- fix(tools): ship the browser recording JS helpers in the wheel by @onatozmenn in #4445
- fix(sdk): drop a stale cache entry when the new value is too large to cache by @yftx293 in #6483
- Replace OpenVSCode Server with Coder code-server by @neubig in #6307
- fix(workspace): look up provider tokens as GITHUB_TOKEN by @jpshackelford in #5730
- chore(deps): bump boto3 from 1.43.117 to 1.43.121 by @dependabot[bot] in #6472
- chore(deps): bump @openrouter/sdk from 1.5.14 to 1.5.21 in /clients/typescript by @dependabot[bot] in #6476
- chore(deps): bump docker from 7.1.0 to 7.2.0 by @dependabot[bot] in #6530
- fix(agent-server): keep Docker conversation worktrees host-resolvable by @rohan-patnaik in #5318
- fix(sdk): drop cached text when a binary write replaces it by @yftx293 in #6534
- fix(sdk): parse file:// URLs instead of slicing the scheme off by @yftx293 in #6482
- fix(sdk): skip profile files that are not valid UTF-8 by @yftx293 in #6536
- feat(hooks): expose per-plugin PLUGIN_ROOT to plugin hook commands by @hieptl in #6542
- fix: record positive usage costs for custom models by @rajshah4 in #6539
- fix(agent-server): load skills marketplace from .plugin manifest first by @enyst in #5767
- fix(sdk): accept large remote conversation state messages by @ak684 in #6550
- feat(sdk): support effort level for Claude ACP models by @RobLoach in #6107
- fix(mcp): kill stdio subprocesses unconditionally on sync_close by @neubig in #4862
- docs(typescript): align TypeScript client maturity labeling with the Software Agent SDK by @neubig in #6299
- fix(agent-server): aggressive dependency upgrades — npm 12, code-server 4.145 + undici 7.30.1, node 24.22.2, uv 0.13.7, msgpack 1.2.3 by @neubig in #6529
- test(sdk): cover unknown refs in cached plugin installs by @enyst in #5793
- fix(mcp): migrate to fastmcp 4 and mcp 2 by @VascoSch92 in #6540
- chore(deps): update fakeredis[lua] requirement from >=2.32.1 to >=2.40.0 by @dependabot[bot] in #6474
- fix(sdk): stop asking for an emoji in generated conversation titles by @ak684 in #6319
- feat(secrets): optional scope and scope_description, grouped in the system prompt [dup of #5672] by @juanmichelini in #6276
- fix(sdk): keep the first line's indentation in commit file diffs by @VascoSch92 in #6538
- fix(tools): pass the ripgrep pattern with -e so it cannot be read as a flag by @VascoSch92 in #6537
- chore(deps): bump @openrouter/sdk from 1.5.21 to 1.5.32 in /clients/typescript by @dependabot[bot] in #6563
- chore(deps): bump eslint from 10.13.0 to 10.14.0 in /clients/typescript by @dependabot[bot] in #6562
- chore(deps): bump joserfc from 1.7.5 to 1.7.7 by @dependabot[bot] in #6560
- refactor(tools): deprecate legacy delegation and move the shared visualizer by @smolpaws in #6510
- fix(agent-server): refuse activating or re-saving a profile under a changed cipher key by @enyst in #5775
- fix(agent-server): stop lost to a queued re-arm; event-socket replay races by @VascoSch92 in #6577
- fix(sdk): keep truncated titles within a max_length below 3 by @VascoSch92 in #6583
- fix(agent-server): scope the workspace session cookie to the root path by @enyst in #5792
- fix(agent-server): refuse switch_llm/switch_profile on ACP conversations by @enyst in #5816
- fix(workspace): retry a null pod_status like any unknown status by @VascoSch92 in #6586
- fix(agent-server): negotiate WebSocket subprotocols through the app-backend bridge by @enyst in #5763
- fix(agent-server): reject MCP servers with neither command nor url by @enyst in #5796
- fix(typescript): keep reconnecting when a refused handshake fires only error by @enyst in #5764
- fix(agent-server): percent-encode the X-Archive-Base-Ref header by @VascoSch92 in #6585
- fix(sdk): skip a README of any case in recursive skill discovery by @VascoSch92 in #6588
- fix(workspace): report an out-of-range port as not available by @VascoSch92 in #6587
- fix(sdk): skip an undecodable top-level AGENTS.md instead of aborting by @VascoSch92 in #6589
- fix(tools): fall back to Python search when ripgrep fails by @VascoSch92 in #6593
- fix(workspace): stop retrying cloud secret fetches twice by @VascoSch92 in #6595
- fix(sdk): read subagent frontmatter through a BOM and empty values by @VascoSch92 in #6590
- fix(workspace): stop the container when cleanup runs on the logs thread by @VascoSch92 in #6599
- fix(agent-server): make safe_rmtree report what it could not remove by @VascoSch92 in #6597
- fix(sdk): allow a case-only agent profile rename by @VascoSch92 in #6598
- fix(sdk): list a git type change as an updated file by @VascoSch92 in #6591
- fix(agent-server): report per-request usage on continued chat completions by @enyst in #5761
- fix(agent-server): ignore a non-object base_state.json in the status index by @VascoSch92 in #6592
- fix(tools): report an unreadable file as a file editor error by @VascoSch92 in #6596
- fix(workspace): send the completion callback from Docker and Apptainer exit by @VascoSch92 in #6594
- fix(tools): refuse str_replace when old_str matches at overlapping offsets by @yftx293 in #6429
- fix(llm): preserve whitespace in multiline non-fncall parameter values by @wangxuzhou666-arch in #6451
- fix(workspace): don't pipe Apptainer server output nobody reads by @VascoSch92 in #6619
- fix(tools): keep CRLF line endings when the file editor writes a file by @VascoSch92 in #6618
- fix(tools): apply a patch all-or-nothing and keep CRLF line endings by @VascoSch92 in #6617
- fix(agent-server): reject an empty path on the git endpoints by @VascoSch92 in #6616
- fix(tools): expand brace patterns in the glob Python fallback by @VascoSch92 in #6615
- chore(deps): bump boto3 from 1.43.121 to 1.43.123 by @dependabot[bot] in #6561
- chore(deps): bump ws from 8.22.0 to 8.22.1 in /clients/typescript by @dependabot[bot] in #6626
- chore(deps): bump docker/login-action from 4.7.0 to 4.8.0 by @dependabot[bot] in #6624
- chore(deps): bump @openrouter/sdk from 1.5.32 to 1.5.33 in /clients/typescript by @dependabot[bot] in #6625
- test(agent-server): cover PubSub.close with a failing subscriber close by @VascoSch92 in #6584
- fix(sdk): repair malformed arguments for optional Annotated fields by @VascoSch92 in #6613
- fix(sdk): kill a timed-out sync hook's whole process group by @VascoSch92 in #6614
- fix(sdk): keep nested structure for nullable type lists by @yftx293 in #6386
- chore(deps): bump tabulate from 0.9.0 to 0.10.0 by @dependabot[bot] in #6623
- Add verify-sdk: an executable feature map of the in-process SDK by @enyst in #5750
- fix(sdk): fall back when the output directory cannot be created by @VascoSch92 in #6634
- fix(tools): expand brace globs in the grep include filter by @VascoSch92 in #6636
- fix(sdk): keep an oversize write in the in-memory file store by @VascoSch92 in #6635
- fix(sdk): report a malformed hooks wrapper as a validation error by @yftx293 in #6535
- fix(sdk): treat a JSON null hook reason as no reason by @yftx293 in #6580
- fix(sdk): forget a removed LLM's metrics id by @yftx293 in #6581
- chore(deps): bump globals from 17.13.0 to 17.14.0 in /clients/typescript by @dependabot[bot] in #6640
- docs: refresh AGENTS.md guidance by @all-hands-bot in #6684
- fix(sdk): resolve secret lookups outside the state lock before async tools run by @enyst in #6662
- fix(agent-server): flush traces before SIGTERM exit by @anubhavlal07 in #6578
- docs(examples): show how to use DecisionModel by @jpshackelford in #6339
- Release v1.61.0 by @openhands-release-bot[bot] in #6558
New Contributors
- @rohan-patnaik made their first contribution in #5318
- @RobLoach made their first contribution in #6107
- @wangxuzhou666-arch made their first contribution in #6451
- @anubhavlal07 made their first contribution in #6578
Full Changelog: v1.60.2...v1.61.0