Release notes generator plugin needs a quick revie...
# proj-extensions
l
Release notes generator plugin needs a quick review: https://github.com/OpenHands/extensions/pull/98
👀 1
c
Left a small comment 🤔
How do you think about adding another section, All Changes, which is not a link, it actually is All Changes? It would be down the page, at the end, where it doesn’t have highlight and most users don’t scroll to, but at least it gives credit fully, basically
Alternatively (or in addition), maybe • a deterministic script to pull the data
l
Thanks @calm-artist-7206, reflected. @better-park-34863 I'd also be interested in your impression of these release notes:
Copy code
## [v1.15.0] - 2026-03-26

This release brings ACP agent support to the remote runtime API, parallel tool execution, and several critical bug fixes including a security patch for LiteLLM.

### Key Highlights

- **ACP Agent Remote Runtime**: ACPAgent now works with RemoteRuntime via dedicated `/api/acp/conversations` endpoints, preserving backward compatibility for existing Agent-only flows (#2465) @simonrosenberg
- **Parallel Tool Execution**: Enable concurrent tool calls within agent steps via `TOOL_CONCURRENCY_LIMIT` environment variable (default: 1, fully backward-compatible) (#2390) @VascoSch92
- **OpenHands Cloud Credential Inheritance**: `OpenHandsCloudWorkspace` now provides `get_llm()` and `get_secrets()` methods to inherit user SaaS credentials in SDK-created conversations (#2409) @xingyaoww

### ✨ New Features

- Add support for GPT-5.4, Gemini 3.1, and MiniMax-M2.7 models (#2487) @juanmichelini, (#2276) @mayeco, (#2500) @juanmichelini
- Add `entry_command` field to `PluginManifest` for default plugin command invocation and `url` field to `PluginAuthor` for Claude Code schema parity (#2230) @jpshackelford, (#2546) @jpshackelford
- Add `after_timestamp` query parameter to WebSocket events endpoint for bi-directional event loading optimization (#1880) @jpshackelford
- Add AI disclosure policy requiring agents to identify generated content when posting to external services (#2476) @xingyaoww
- Add `OPENHANDS_BUILDKIT_CACHE_MODE`, `INSTALL_ACP`, `INSTALL_BOTO3` environment variables and `extra_build_args` to `BuildOptions` for granular build control (#2479, #2535, #2536, #2541) @simonrosenberg
- Add browser tool usage guidelines to system prompt to prevent ineffective CAPTCHA-solving loops (#2547) @VascoSch92
- Support pre-built base images for faster benchmark rebuilds via explicit Docker build targets (#2542) @simonrosenberg
- Upgrade `rich` package to 14.3.3 to address denial-of-service vulnerability (#2414) @yitao-li

### 🐛 Bug Fixes

- **Security**: Pin LiteLLM to exactly 1.80.10 to prevent installation of malicious wheel in 1.82.8 and fix run-eval workflow to use locked dependencies (#2558, #2559) @rbren, @simonrosenberg
- Fix Qwen3.5-Flash low submission rate by improving JSON argument parsing and adding corrective feedback for malformed tool calls (#2512) @juanmichelini
- Synchronize ACP telemetry writes and refresh remote conversation state before `run()` returns to prevent race conditions (#2460) @simonrosenberg
- Fix preflight LLM check to validate `reasoning_content` for thinking models and stop sending `reasoning_effort` to Kimi models (#2420, #2549) @juanmichelini, @enyst
- Fix Apptainer workspace cleanup to kill zombie child processes by creating new process group (#2450) @adityasoni9998
- Return browser action timeouts as `BrowserObservation` errors instead of fatal conversation exceptions (#2455) @neubig
- Use `asyncio.Event()` for thread-safe server initialization state (#2383) @ixchio
- Make API breakage workflows fail loudly when checks detect incompatibilities (#2432) @enyst
- Fix docstrings for MDX rendering compatibility and add OpenAPI tags to root endpoint (#2452, #2458) @rbren
- Add diagnostics for preflight LiteLLM proxy failures and use `/v1/models` health check endpoint (#2557, #2563) @simonrosenberg
- Normalize `instance_ids` workflow input by stripping spaces automatically (#2529) @simonrosenberg

### 📚 Documentation

- Clarify REST contract deprecation policy requiring 5 minor release runway and migration paths (#2433) @enyst
- Export `TokenUsage`, `page_iterator`, and `AsyncRemoteWorkspace` as public SDK APIs (#2445) @enyst

### 👥 New Contributors

- @dependabot[bot] made their first contribution in #2448

### 🔎 Small Fixes/Internal Changes
- @simonrosenberg: #2190, #2493, #2561, #2522
- @VascoSch92: #2502, #2504, #2480
- @neubig: #2430, #2382, #2360
- @enyst: #2508, #2507, #2524, #2457, #1990, #2434, #2435, #2442, #2443, #2451, #2464
- @dependabot[bot]: #2475, #2484, #2497, #2520, #2517, #2519, #2521, #2518
- @juanmichelini: #2483, #2324
- @aivong-openhands: #2501, #2427
- @all-hands-bot: #2567
- @mayeco: #2277

**Full Changelog**: <https://github.com/OpenHands/software-agent-sdk/compare/v1.14.0...v1.15.0>
c
This looks very good to me!
@dependabot[bot] made their first contribution
I doubt this is accurate 😅 👀
l
hmm, let me check
b
Personally I think release notes should be end user focused. I may be alone in this. I always viewed release notes as something end users take a look for new features and important bug fixes but I may be absolutely wrong! That said things like this I don't find useful: • Add
OPENHANDS_BUILDKIT_CACHE_MODE
,
INSTALL_ACP
,
INSTALL_BOTO3
environment variables and
extra_build_args
to
BuildOptions
for granular build control • Normalize
instance_ids
workflow input by stripping spaces automatically • Use
asyncio.Event()
for thread-safe server initialization state • Add
entry_command
field to
PluginManifest
for default plugin command invocation and
url
field to
PluginAuthor
for Claude Code schema parity etc.
c
@limited-student-10747 I just made a quick check on my memory, and it seems there was a new contributor, but somehow the agent is missing them from that list
l
Thanks @better-park-34863! I agree. Will aim for a fix
c
You're not wrong mamoodi, however: • Add
entry_command
field to
PluginManifest
for default plugin command invocation and
url
field to
PluginAuthor
for Claude Code schema parity << this is actually important and client developers and users may well know • as you see, we're missing things • I personally prefer to err on the side of crediting contributions, rather than risk missing them
👍 1
Although... just pondering, it might be nice if it was a short summary instead of such PR title... I don't know
Example that really goes into relevant summaries: (probably at an extreme on that) https://github.com/kubernetes-sigs/kind/releases/tag/v0.31.0
Example that seems much more readable (no long PR titles), but it is at the other end: https://github.com/rust-lang/rust-analyzer/releases/tag/2026-03-23
Add
entry_command
field to
PluginManifest
for default plugin command invocation
Just to elaborate a bit, because this is probably unclear within the long PR title: • this gives users and plugin developers the ability (or at least the initial definition of the ability) to start a conversation with an "autostarted" plugin. • that is, they don't even need to prompt, just click a button and OpenHands starts a predefined command • I just saw these days that
codex app
added plugins, with such "entry" too. Anthropic plugins don't have it afaik. • in my understanding, this intuition or request comes from enterprises with hundreds/thousands of developers for which it would be handy to have a button to click or call to make, without re-prompting
l
(I'm working on fixing this)
🙏 1
c
🤔 i was wondering if it make sense to first generate a "auto-generated release note" from github, then have agent work on top of it, that could make this a bit more accurate
l
I think that’s what it kinda already does?
👍 1
I just haven’t had time to polish yet, had lots of meetings the last two days
Here is a new example, I think it mitigates @better-park-34863’s concerns above, it seems to be easier to read for someone who’s less familiar with the codebase.
Copy code
## [v1.15.0] - 2026-03-26

This release brings parallel tool execution for significant performance improvements, ACP Agent support on the remote runtime API, and expanded model coverage including GPT-5.4, Gemini 3.1, and MiniMax-M2.7. It also includes critical security fixes for LiteLLM and the rich library.

### ✨ New Features

- Enable parallel tool execution with `TOOL_CONCURRENCY_LIMIT` environment variable for concurrent tool calls within agent steps, defaulting to 1 for backward compatibility (#2390) @VascoSch92
- Add ACP Agent support to RemoteRuntime API via dedicated `/api/acp/conversations` endpoints while preserving existing REST contract stability (#2465) @simonrosenberg
- Add credential inheritance to `OpenHandsCloudWorkspace` via `get_llm()` and `get_secrets()` methods for SDK-created conversations to inherit SaaS user credentials (#2409) @xingyaoww
- Add verified model support for GPT-5.4 (#2487) @juanmichelini, Gemini 3.1 (#2276) @mayeco, and MiniMax-M2.7 (#2500) @juanmichelini
- Add `entry_command` field to `PluginManifest` for default plugin invocation (#2230) @jpshackelford and `url` field to `PluginAuthor` for Claude Code schema parity (#2546) @jpshackelford

### 🐛 Bug Fixes

- Pin LiteLLM to exactly 1.80.10 to mitigate malicious wheel vulnerability in 1.82.8 (#2558) @rbren
- Fix Qwen3.5-Flash low submission rate by improving JSON argument parsing and adding corrective feedback for stuck conversations (#2512) @juanmichelini
- Fix Apptainer workspace cleanup to properly kill zombie child processes (#2450) @adityasoni9998
- Fix browser action timeouts to return `BrowserObservation` errors instead of fatal `TimeoutError` exceptions (#2455) @neubig
- Fix ACP telemetry race conditions by synchronizing writes onto a single path and refreshing remote conversation state before `run()` returns (#2460) @simonrosenberg
- Fix preflight check to validate `reasoning_content` for thinking models that output to reasoning instead of content (#2420) @juanmichelini
- Fix Kimi thinking models to stop sending unsupported `reasoning_effort` parameter (#2549) @enyst
- Use `asyncio.Event()` for thread-safe initialization state in server details router (#2383) @ixchio
- Upgrade rich package to 14.3.3 to address denial-of-service vulnerability in 14.3.2 (#2414) @yitao-li

### 📚 Documentation

- Establish docstring standards for MDX compatibility and fix key docstrings to prevent rendering issues in Mintlify (#2452) @rbren

### 👥 New Contributors

- @yitao-li made their first contribution in #2414


### 🔎 Small Fixes/Internal Changes
- @simonrosenberg: #2190, #2535, #2536, #2542, #2493, #2529, #2557, #2559, #2561, #2563, #2522
- @VascoSch92: #2502, #2547, #2480
- @enyst: #2432, #2508, #2507, #2524, #2457, #1990, #2433, #2434, #2435, #2442, #2443, #2445, #2451, #2464
- @rbren: #2458
- @neubig: #2430, #2382, #2360
- @dependabot[bot]: #2448, #2475, #2484, #2497, #2520, #2517, #2519, #2521, #2518
- @juanmichelini: #2483, #2324
- @aivong-openhands: #2501, #2427
- @all-hands-bot: #2567
- @mayeco: #2277

**Full Changelog**: <https://github.com/OpenHands/software-agent-sdk/compare/v1.14.0...v1.15.0>
ship it parrot 2
👍 3
From my POV it’s ready to merge, I think that we can always improve later
c
LGTM!
c
This is aweosme 🙂 LGTM
i'm about to ship a release so curious to see how that'd perform
l
🙌 let’s try it