v1.14.29

anomalyco/opencodev1.14.29Apr 28, 2026by opencode-agent[bot]

AI Summary

The release introduces session relative paths, sanitizes tool schemas for Moonshot and Kimi, and adds Roslyn LSP support for Razor and C# files.

Key Highlights

  • Sessions now keep a relative workspace path.
  • Moonshot and Kimi tool schemas are sanitized to avoid rejected tool calls.
  • MCP OAuth errors now match the native API more closely.
  • Added Roslyn LSP support for Razor, `.cshtml`, and C# script files.
  • Shell cancellations now finish cleanly instead of leaving aborted commands in a bad state.

New Features

  • Roslyn LSP support for Razor, .cshtml, and C# script files

Full Release Notes

## Core
- Sessions now keep a relative workspace path.
- Moonshot and Kimi tool schemas are sanitized to avoid rejected tool calls.
- MCP OAuth errors now match the native API more closely.
- Provider OAuth authorize errors now match the native API more closely.
- Shell cancellations now finish cleanly instead of leaving aborted commands in a bad state.
- Creating a session over HTTP now works with an empty request body.
- Workspace HTTP API routes are now mounted through the bridge.
- Tool streaming now defaults off for non-Anthropic models when using the Anthropic SDK.
- DeepSeek OpenAI-compatible setups now keep `reasoning_content` interleaved by default.
- The experimental LSP tool now forwards the workspace symbol query.
- Google Vertex now defaults tool call streaming off.

## TUI
- Zed context polling stays responsive.
- Pressing Enter in dialogs now triggers the dialog instead of leaking through. (@CasualDeveloper)
- File context is clearer, can be turned off, and clears after sending.
- `opencode agent create` now writes a valid `permissions.deny` config. (@21pounder)

## Desktop
- Per-workspace icon overrides now stay applied for subdirectories in the same repo.
- Sync state loading is more reliable for MCP, LSP, and workspace refreshes.

**Thank you to 3 community contributors:**
- @21pounder:
  - fix(opencode): agent create generates permissions field with deny ins… (#24482)
- @SeashoreShi:
  - docs: fix duplicated word in CLI env var table (#24614)
- @CasualDeveloper:
  - fix(tui): consume Enter in dialog useKeyboard handlers (#23390)