Closed
Conversation
Owner
DemonicEgg
commented
Apr 10, 2026
- fix(opencode): avoid snapshotting files over 2MB (fix(opencode): avoid snapshotting files over 2MB anomalyco/opencode#19043)
- fix: provide merge context to beta conflict resolver (fix: provide merge context to beta conflict resolver anomalyco/opencode#19055)
- tweak: only spawn lsp servers for files in current instance (or cwd if instance is global) (tweak: only spawn lsp servers for files in current instance (or cwd if instance is global) anomalyco/opencode#19058)
- fix: beta resolver typecheck + build smoke check (fix: beta resolver typecheck + build smoke check anomalyco/opencode#19060)
- fix: unblock beta conflict recovery (fix: unblock beta conflict recovery anomalyco/opencode#19068)
- electron: add createDirectory to open directory picker (electron: add createDirectory to open directory picker anomalyco/opencode#19071)
- electron: remove file extension from electron-store wrapper (electron: remove file extension from electron-store wrapper anomalyco/opencode#19082)
- app: pre-warm project globalSync state when navigate project via keybind (app: pre-warm project globalSync state when navigate project via keybind anomalyco/opencode#19088)
- fix(app): move message navigation off cmd+arrow (fix(app): move message navigation off cmd+arrow anomalyco/opencode#18728)
- Reapply "fix(app): startup efficiency (fix(app): startup efficiency anomalyco/opencode#18854)"
- Reapply "fix(app): more startup efficiency (fix(app): more startup efficiency anomalyco/opencode#18985)"
- fix(app): hash inline script for csp
- Revert "fix(app): startup efficiency"
- Reapply "fix(app): startup efficiency"
- fix(app): opencode web server url
- chore(app): markdown playground in storyboard
- chore(app): markdown playground in storyboard
- feat(core): initial implementation of syncing (feat(core): initial implementation of syncing anomalyco/opencode#17814)
- chore: generate
- chore: bump modelcontextprotocol/sdk to 1.27.1 (chore: bump modelcontextprotocol/sdk to 1.27.1 anomalyco/opencode#19064)
- chore: storybook tweaks
- feat: restore git-backed review modes with effectful git service (feat: restore git-backed review modes with effectful git service anomalyco/opencode#18900)
- chore: generate
- chore: update nix node_modules hashes
- chore: cleanup
- chore: remove dead code for todoread tool (chore: remove dead code for todoread tool anomalyco/opencode#19128)
- chore: storybook tweaks
- fix(opencode): classify ZlibError from Bun fetch as retryable instead of unknown (fix(opencode): classify ZlibError from Bun fetch as retryable instead of unknown anomalyco/opencode#19104)
- fix(task): respect agent permission config for todowrite tool (fix(task): respect agent permission config for todowrite tool anomalyco/opencode#19125)
- fix(app): agent normalization (fix(app): agent normalization anomalyco/opencode#19169)
- fix: Windows e2e stability (CrossSpawnSpawner, snapshot isolation, session race guards) (fix: Windows e2e stability (CrossSpawnSpawner, snapshot isolation, session race guards) anomalyco/opencode#19163)
- fix+refactor(mcp): lifecycle tests, cancelPending fix, Effect migration (fix+refactor(mcp): lifecycle tests, cancelPending fix, Effect migration anomalyco/opencode#19042)
- effectify Bus service: migrate to Effect PubSub + InstanceState (effectify Bus service: migrate to Effect PubSub + InstanceState anomalyco/opencode#18579)
- file: use Effect.cached for scan deduplication (file: use Effect.cached for scan deduplication anomalyco/opencode#19164)
- ignore: update disavowed list (ignore: update disavowed list anomalyco/opencode#19184)
- skill: use Effect.cached for load deduplication (skill: use Effect.cached for load deduplication anomalyco/opencode#19165)
- chore: generate
- fix: bump gitlab-ai-provider to 5.3.3 for DWS tool approval support (fix: bump gitlab-ai-provider to 5.3.3 for DWS tool approval support anomalyco/opencode#19185)
- test: restore 5 workers on Windows e2e (test: restore 5 workers on Windows e2e anomalyco/opencode#19188)
- fix(opencode): image paste on Windows Terminal 1.25+ with kitty keyboard (fix(opencode): image paste on Windows Terminal 1.25+ with kitty keyboard anomalyco/opencode#17674)
- chore: update nix node_modules hashes
- wip: zen
- wip: zen
- go: do not respect disabled zen models
- fix: ensure enterprise url is set properly during auth flow (fix: ensure enterprise url is set properly during auth flow anomalyco/opencode#19212)
- revert: roll back git-backed review modes (revert: roll back git-backed review modes anomalyco/opencode#19295)
- chore: generate
- tui: bypass local SSE event streaming in worker (tui: bypass local SSE event streaming in worker anomalyco/opencode#19183)
- feat: embed WebUI in binary with proxy flags (feat: embed WebUI in binary with proxy flags anomalyco/opencode#19299)
- release: v1.3.3
- chore: generate
- changelog ci tweaks
- refactor(lsp): effectify LSP service with InstanceState (refactor(lsp): effectify LSP service with InstanceState anomalyco/opencode#19150)
- chore: generate
- feat: add gpt prompt so non codex gpt models have their own system prompt modeled after codex cli (feat: add gpt prompt so non codex gpt models have their own system prompt modeled after codex cli anomalyco/opencode#19220)
- feat(core): remove workspace server, WorkspaceContext, start work towards better routing (feat(core): remove workspace server, WorkspaceContext, start work towards better routing anomalyco/opencode#19316)
- effectify Config service (effectify Config service anomalyco/opencode#19139)
- chore: generate
- refactor(config): use cachedInvalidateWithTTL, bump effect to beta.37 (refactor(config): use cachedInvalidateWithTTL, bump effect to beta.37 anomalyco/opencode#19322)
- fix(mcp): close transport on failed/timed-out connections (fix(mcp): close transport on failed/timed-out connections anomalyco/opencode#19200)
- fix(app): more startup perf (fix(app): more startup perf anomalyco/opencode#19288)
- chore: generate
- chore: update nix node_modules hashes
- fix(app): don't bundle fonts (fix(app): don't bundle fonts anomalyco/opencode#19329)
- chore: generate
- fix(app): default shell tool to collapsed
- fix(app): remove fork session button
- fix(ui): reduce markdown jank while responses stream (fix(ui): reduce markdown jank while responses stream anomalyco/opencode#19304)
- fix: web ui bundle build on windows (fix: web ui bundle build on windows anomalyco/opencode#19337)
- refactor(effect): yield services instead of promise facades (refactor(effect): yield services instead of promise facades anomalyco/opencode#19325)
- chore: generate
- refactor(vcs): replace async git() with ChildProcessSpawner (refactor(vcs): replace async git() with ChildProcessSpawner anomalyco/opencode#19361)
- fix(opencode): ignore generated models snapshot files (fix(opencode): ignore generated models snapshot files anomalyco/opencode#19362)
- fix(ui): keep partial markdown readable while responses stream (fix(ui): keep partial markdown readable while responses stream anomalyco/opencode#19403)
- chore: update nix node_modules hashes
- fix(app): persist queued followups across project switches (fix(app): persist queued followups across project switches anomalyco/opencode#19421)
- refactor(tool-registry): yield Config/Plugin services, use Effect.forEach (refactor(tool-registry): yield Config/Plugin services, use Effect.forEach anomalyco/opencode#19363)
- chore: generate
- tui plugins (tui plugins anomalyco/opencode#19347)
- chore: generate
- effectify Skill service internals (effectify Skill service internals anomalyco/opencode#19364)
- chore: update nix node_modules hashes
- effectify Plugin service internals (effectify Plugin service internals anomalyco/opencode#19365)
- refactor(core): split out instance and route through workspaces (refactor(core): split out instance and route through workspaces anomalyco/opencode#19335)
- chore(app): more spacing controls
- fix(ui): make streamed markdown feel more continuous (fix(ui): make streamed markdown feel more continuous anomalyco/opencode#19404)
- fix(app): resize layout viewport when mobile keyboard appears (fix(app): resize layout viewport when mobile keyboard appears anomalyco/opencode#15841)
- fix(desktop-electron): match dev dock icon inset on macOS (fix(desktop-electron): match dev dock icon inset on macOS anomalyco/opencode#19429)
- fix(app): default file tree to closed with minimum width (fix(app): default file tree to closed with minimum width anomalyco/opencode#19426)
- fix flaky plugin tests (no mock.module for bun) (fix flaky plugin tests (no mock.module for bun) anomalyco/opencode#19445)
- tweak: add additional overflow error patterns (tweak: add additional overflow error patterns anomalyco/opencode#19446)
- no theme override in dev (no theme override in dev anomalyco/opencode#19456)
- feat: AI SDK v6 support (feat: AI SDK v6 support anomalyco/opencode#18433)
- refactor(session): effectify Session service (refactor(session): effectify Session service anomalyco/opencode#19449)
- refactor(core): move more responsibility to workspace routing (refactor(core): move more responsibility to workspace routing anomalyco/opencode#19455)
- chore: update nix node_modules hashes
- refactor(format): use ChildProcessSpawner instead of Process.spawn (refactor(format): use ChildProcessSpawner instead of Process.spawn anomalyco/opencode#19457)
- chore: generate
- Single target plugin entrypoints (Single target plugin entrypoints anomalyco/opencode#19467)
- refactor(session): effectify SessionCompaction service (refactor(session): effectify SessionCompaction service anomalyco/opencode#19459)
- feat(ci): use Azure Artifact Signing for Windows releases (feat(ci): use Azure Artifact Signing for Windows releases anomalyco/opencode#15201)
- fix(app): more startup efficiency (fix(app): more startup efficiency anomalyco/opencode#19454)
- update effect to 4.0.0-beta.42 (update effect to 4.0.0-beta.42 anomalyco/opencode#19484)
- chore: update nix node_modules hashes
- tweak: adjust bash tool description to increase cache hit rates between projects (tweak: adjust bash tool description to increase cache hit rates between projects anomalyco/opencode#19487)
- refactor(session): move context into prompt footer (refactor(session): move context into prompt footer anomalyco/opencode#19486)
- refactor(prompt): remove variant cycle display from footer (refactor(prompt): remove variant cycle display from footer anomalyco/opencode#19489)
- feat: add model variant selection dialog (feat: add model variant selection dialog anomalyco/opencode#19488)
- fix: restore subagent footer and fix style guide violations (fix: restore subagent footer and fix style guide violations anomalyco/opencode#19491)
- tweak(session): add top spacing and remove obsolete docs prompt
- upgrade opentui to 0.1.91 (upgrade opentui to 0.1.91 anomalyco/opencode#19440)
- refactor(file): use AppFileSystem instead of raw Filesystem (refactor(file): use AppFileSystem instead of raw Filesystem anomalyco/opencode#19458)
- chore: generate
- chore: update nix node_modules hashes
- kv theme before default fallback (kv theme before default fallback anomalyco/opencode#19523)
- feat: open dialog for model variant selection instead of cycling (feat: open dialog for model variant selection instead of cycling anomalyco/opencode#19534)
- refactor(session): effectify session processor (refactor(session): effectify session processor anomalyco/opencode#19485)
- feat: dialog variant menu and subagent improvements (feat: dialog variant menu and subagent improvements anomalyco/opencode#19537)
- use theme color for prompt placeholder (use theme color for prompt placeholder anomalyco/opencode#19535)
- fix: update opencode-gitlab-auth to 2.0.1 (fix: update opencode-gitlab-auth to 2.0.1 anomalyco/opencode#19552)
- chore: update nix node_modules hashes
- prompt slot (prompt slot anomalyco/opencode#19563)
- fix: respect semver build identifiers for nix (fix: respect semver build identifiers for nix anomalyco/opencode#11915)
- fix: nix embedded web-ui support (fix: nix embedded web-ui support anomalyco/opencode#19561)
- ignore: kill todo (ignore: kill todo anomalyco/opencode#19566)
- chore: update nix node_modules hashes
- wip: zen
- wip: zen
- zen: ZDR policy
- ci: cancel stale nix-hashes runs (ci: cancel stale nix-hashes runs anomalyco/opencode#19571)
- release: v1.3.4
- tweak: adjust gpt prompt to be more minimal, fix file reference annoyances (tweak: adjust gpt prompt to be more minimal, fix file reference annoyances anomalyco/opencode#19585)
- core: fix plugin hooks to properly handle async operations ensuring plugins can execute async code without errors (core: fix plugin hooks to properly handle async operations ensuring plugins can execute async code without errors anomalyco/opencode#19586)
- release: v1.3.5
- test: add regression coverage for sync plugin hooks (test: add regression coverage for sync plugin hooks anomalyco/opencode#19589)
- wip: zen
- ci: fix
- Fix variant dialog filtering (Fix variant dialog filtering anomalyco/opencode#19917)
- wip: zen
- wip: zen
- docs: add question tool to available permissions list (docs: add question tool to available permissions list anomalyco/opencode#19922)
- fix(session): fix token usage double-counting w/ anthropic & bedrock due to AI SDK v6 upgrade (fix(session): fix token usage double-counting w/ anthropic & bedrock due to AI SDK v6 upgrade anomalyco/opencode#19758)
- release: v1.3.6
- fix: ensure OPENCODE_DISABLE_CLAUDE_CODE_PROMPT is respected for project lvl CLAUDE.md (fix: ensure OPENCODE_DISABLE_CLAUDE_CODE_PROMPT is respected for project lvl CLAUDE.md anomalyco/opencode#19924)
- plugins installs should preserve jsonc comments (plugins installs should preserve jsonc comments anomalyco/opencode#19938)
- theme colors for dialog textarea placeholders (theme colors for dialog textarea placeholders anomalyco/opencode#19939)
- feat(windows): add first-class pwsh/powershell support (feat(windows): add first-class pwsh/powershell support anomalyco/opencode#16069)
- fix: discourage _noop tool call during LiteLLM compaction (fix: discourage _noop tool call during LiteLLM compaction anomalyco/opencode#18539)
- chore: update nix node_modules hashes
- docs: rename patch tool to apply_patch and clarify apply_patch behavior (docs: rename patch tool to apply_patch and clarify apply_patch behavior anomalyco/opencode#19979)
- fix: stabilize release changelog generation (fix: stabilize release changelog generation anomalyco/opencode#19987)
- make variant modal less annoying (make variant modal less annoying anomalyco/opencode#19998)
- release: v1.3.7
- fix: preserve image attachments when selecting slash commands (fix: preserve image attachments when selecting slash commands anomalyco/opencode#19771)
- update plugin themes when plugin was updated (update plugin themes when plugin was updated anomalyco/opencode#20052)
- pluggable home footer (pluggable home footer anomalyco/opencode#20057)
- chore(app): cleanup (chore(app): cleanup anomalyco/opencode#20062)
- fix: agent value passed to chat.params and chat.headers hooks was not a string (fix: agent value passed to chat.params and chat.headers hooks was not a string anomalyco/opencode#19996)
- Refactor into plugin loader and do not enforce (Refactor into plugin loader and do not enforce anomalyco/opencode#20112)
- refactor(session): effectify SessionPrompt service (refactor(session): effectify SessionPrompt service anomalyco/opencode#19483)
- chore: generate
- fix(Opencode): Bump ai-sdk/xai to 3.0.75 to fix tool calls (fix(Opencode): Bump ai-sdk/xai to 3.0.75 to fix tool calls anomalyco/opencode#20123)
- zen: add safety identifier
- fix(session): restore busy route handling and add regression coverage (fix(session): restore busy route handling and add regression coverage anomalyco/opencode#20125)
- zen: qwen3.6 plus
- zen: qwen3.6 plus
- chore: update nix node_modules hashes
- release: v1.3.8
- refactor: replace Filesystem util with AppFileSystem service (refactor: replace Filesystem util with AppFileSystem service anomalyco/opencode#20127)
- chore: generate
- wip: zen
- wip: zen
- fix(plugin): properly resolve entrypoints without leading dot (fix(plugin): properly resolve entrypoints without leading dot anomalyco/opencode#20140)
- release: v1.3.9
- smarter changelog (smarter changelog anomalyco/opencode#20138)
- fix(theme): darken muted text in catppuccin tui themes (fix(theme): darken muted text in catppuccin tui themes anomalyco/opencode#20161)
- refactor(storage): effectify Storage service (refactor(storage): effectify Storage service anomalyco/opencode#20132)
- refactor(provider): effectify Provider service (refactor(provider): effectify Provider service anomalyco/opencode#20160)
- chore: generate
- wip: zen
- fix(session): subagents not being clickable (fix(session): subagents not being clickable anomalyco/opencode#20263)
- release: v1.3.10
- upgrade opentui to 0.1.93 (upgrade opentui to 0.1.93 anomalyco/opencode#19950)
- ensure pinned plugin versions and do not run package scripts on install (ensure pinned plugin versions and do not run package scripts on install anomalyco/opencode#20248)
- chore: use paid zen model in e2e
- warn only and ignore plugins without entrypoints, default config via exports (warn only and ignore plugins without entrypoints, default config via exports anomalyco/opencode#20284)
- chore: e2e model
- chore: update nix node_modules hashes
- feat: add a dedicated system prompt for Kimi models (feat: add a dedicated system prompt for Kimi models anomalyco/opencode#20259)
- chore: skip 2 tests
- chore: rm harcoded model definition from codex plugin (chore: rm harcoded model definition from codex plugin anomalyco/opencode#20294)
- test: update model test fixture (test: update model test fixture anomalyco/opencode#20182)
- refactor(session): simplify LLM stream by replacing queue with fromAsyncIterable (refactor(session): simplify LLM stream by replacing queue with fromAsyncIterable anomalyco/opencode#20324)
- release: v1.3.11
- fix: rm exclusion of ai-sdk/azure in transform.ts, when we migrated to v6 the ai sdk changed the key for ai-sdk/azure so the exclusion is no longer needed (fix: rm exclusion of ai-sdk/azure in transform.ts, when we migrated to v6 the ai sdk changed the key for ai-sdk/azure so the exclusion is no longer needed anomalyco/opencode#20326)
- feat: enable prompt caching and cache token tracking for google-vertex-anthropic (feat: enable prompt caching and cache token tracking for google-vertex-anthropic anomalyco/opencode#20266)
- Update VOUCHED list
- upgrade opentui to 0.1.94 (upgrade opentui to 0.1.94 anomalyco/opencode#20357)
- release: v1.3.12
- Update VOUCHED list
- test: migrate prompt tests to HTTP mock LLM server (test: migrate prompt tests to HTTP mock LLM server anomalyco/opencode#20304)
- refactor(session): effectify SessionSummary service (refactor(session): effectify SessionSummary service anomalyco/opencode#20142)
- refactor(session): effectify SessionRevert service (refactor(session): effectify SessionRevert service anomalyco/opencode#20143)
- chore: generate
- chore: update nix node_modules hashes
- upgrade opentui to 0.1.95 (upgrade opentui to 0.1.95 anomalyco/opencode#20369)
- release: v1.3.13
- refactor(prompt): use Provider service in effect layers (refactor(prompt): use Provider service in effect layers anomalyco/opencode#20167)
- test: finish HTTP mock processor coverage (test: finish HTTP mock processor coverage anomalyco/opencode#20372)
- chore: update nix node_modules hashes
- test(app): add mock llm e2e fixture (test(app): add mock llm e2e fixture anomalyco/opencode#20375)
- electron: port mergeShellEnv logic from tauri (electron: port mergeShellEnv logic from tauri anomalyco/opencode#20192)
- app: try to hide autofill popups in prompt input (app: try to hide autofill popups in prompt input anomalyco/opencode#20197)
- fix(session): add keyboard support to question dock (fix(session): add keyboard support to question dock anomalyco/opencode#20439)
- feat(comments): support file mentions (feat(comments): support file mentions anomalyco/opencode#20447)
- test(app): route prompt e2e through mock llm (test(app): route prompt e2e through mock llm anomalyco/opencode#20383)
- perf(review): defer offscreen diff mounts (perf(review): defer offscreen diff mounts anomalyco/opencode#20469)
- refactor: standardize InstanceState variable name to state (refactor: standardize InstanceState variable name to state anomalyco/opencode#20267)
- fall back to first agent if last used agent is not available
- test(e2e): isolate prompt tests with per-worker backend (test(e2e): isolate prompt tests with per-worker backend anomalyco/opencode#20464)
- chore: generate
- refactor(init): tighten AGENTS guidance (refactor(init): tighten AGENTS guidance anomalyco/opencode#20422)
- refactor(shell): use Effect ChildProcess for shell command execution (refactor(shell): use Effect ChildProcess for shell command execution anomalyco/opencode#20494)
- refactor: use Effect services instead of async facades in provider, auth, and file (refactor: use Effect services instead of async facades in provider, auth, and file anomalyco/opencode#20480)
- chore: generate
- chore: update nix node_modules hashes
- Update VOUCHED list
- test(app): migrate more e2e suites to isolated backend (test(app): migrate more e2e suites to isolated backend anomalyco/opencode#20505)
- fix(account): coalesce concurrent console token refreshes (fix(account): coalesce concurrent console token refreshes anomalyco/opencode#20503)
- test(app): fix isolated backend follow-ups (test(app): fix isolated backend follow-ups anomalyco/opencode#20513)
- wip: zen
- refactor: replace BunProc with Npm module using @npmcli/arborist (refactor: replace BunProc with Npm module using @npmcli/arborist anomalyco/opencode#18308)
- zen: sync
- fix: normalize filepath in FileTime to prevent Windows path mismatch (fix: normalize filepath in FileTime to prevent Windows path mismatch anomalyco/opencode#20367)
- resolve subpath only packages for plugins (resolve subpath only packages for plugins anomalyco/opencode#20555)
- Fix selection expansion by retaining focused input selections during global key events (Fix selection expansion by retaining focused input selections during global key events anomalyco/opencode#20205)
- feat: add new provider plugin hook for resolving models and sync models from github models endpoint (falls back to models.dev) (feat: add new provider plugin hook for resolving models and sync models from github models endpoint (falls back to models.dev) anomalyco/opencode#20533)
- fix(tui): apply scroll configuration uniformly across all scrollboxes (fix(tui): apply scroll configuration uniformly across all scrollboxes anomalyco/opencode#14735)
- chore(tui): clean up scroll config follow-up (chore(tui): clean up scroll config follow-up anomalyco/opencode#20561)
- fix(opencode): batch snapshot revert without reordering (fix(opencode): batch snapshot revert without reordering anomalyco/opencode#20564)
- fix(test): auto-acknowledge tool-result follow-ups in mock LLM server (fix(test): auto-acknowledge tool-result follow-ups in mock LLM server anomalyco/opencode#20528)
- chore: generate
- refactor: add Effect-returning versions of MessageV2 functions (refactor: add Effect-returning versions of MessageV2 functions anomalyco/opencode#20374)
- refactor(bash): use Effect ChildProcess for bash tool execution (refactor(bash): use Effect ChildProcess for bash tool execution anomalyco/opencode#20496)
- chore: generate
- Refactor plugin/config loading, add theme-only plugin package support (Refactor plugin/config loading, add theme-only plugin package support anomalyco/opencode#20556)
- fix(test): use effect helper in snapshot race test (fix(test): use effect helper in snapshot race test anomalyco/opencode#20567)
- refactor(revert): yield SessionSummary.Service directly (refactor(revert): yield SessionSummary.Service directly anomalyco/opencode#20541)
- fix: show model display name in message footer and transcript (fix: show model display name in message footer and transcript anomalyco/opencode#20539)
- flock npm.add (flock npm.add anomalyco/opencode#20557)
- fix(account): refresh console tokens before expiry (fix(account): refresh console tokens before expiry anomalyco/opencode#20558)
- chore: add User-Agent headers for Cloudflare providers (chore: add User-Agent headers for Cloudflare providers anomalyco/opencode#20538)
- fix(build): replace require() with dynamic import() in cross-spawn-spawner (fix(build): replace require() with dynamic import() in cross-spawn-spawner anomalyco/opencode#20580)
- chore: generate
- tui: add consent dialog when sharing for the first time (tui: add consent dialog when sharing for the first time anomalyco/opencode#20525)
- test(app): block real llm calls in e2e prompts (test(app): block real llm calls in e2e prompts anomalyco/opencode#20579)
- refactor(instruction): migrate to Effect service pattern (refactor(instruction): migrate to Effect service pattern anomalyco/opencode#20542)
- fix(cli): use simple logo in CLI (fix(cli): use simple logo in CLI anomalyco/opencode#20585)
- fix(core): prevent agent loop from stopping after tool calls with OpenAI-compatible providers (fix(core): prevent agent loop from stopping after tool calls with OpenAI-compatible providers anomalyco/opencode#14973)
- fix(session): compaction agent responds in same language as conversation (fix(session): compaction agent responds in same language as conversation anomalyco/opencode#20581)
- refactor(account): share token freshness helper (refactor(account): share token freshness helper anomalyco/opencode#20591)
- fix(cli): restore colored help logo (fix(cli): restore colored help logo anomalyco/opencode#20592)
- feat(opencode): Add Venice AI package as dependency (feat(opencode): Add Venice AI package as dependency anomalyco/opencode#20570)
- chore: generate
- cli: update usage exceeded error
- chore: update nix node_modules hashes
- fix(node): set OPENCODE_CHANNEL during build (fix(node): set OPENCODE_CHANNEL during build anomalyco/opencode#20616)
- zen: friendly trial ended message
- refactor: simplify solid reactivity across app and web (refactor: simplify solid reactivity across app and web anomalyco/opencode#20497)
- use solid-primitives/resize-observer across web code (use solid-primitives/resize-observer across web code anomalyco/opencode#20613)
- cleanup event listeners with solid-primitives/event-listener (cleanup event listeners with solid-primitives/event-listener anomalyco/opencode#20619)
- chore: update nix node_modules hashes
- refactor: split up models.dev and config model definitions to prevent coupling (refactor: split up models.dev and config model definitions to prevent coupling anomalyco/opencode#20605)
- chore: generate
- feat: add optional messageID to ShellInput (feat: add optional messageID to ShellInput anomalyco/opencode#20657)
- chore: generate
- ignore: fix typecheck in dev (ignore: fix typecheck in dev anomalyco/opencode#20702)
- fix(format): use biome format instead of check to prevent import removal (fix(format): use biome format instead of check to prevent import removal anomalyco/opencode#20545)
- tweak: add abort signal timeout to the github copilot model fetch to prevent infinite blocking (tweak: add abort signal timeout to the github copilot model fetch to prevent infinite blocking anomalyco/opencode#20705)
- Add MiMo-V2 models to Go UI and docs (Add MiMo-V2 models to Go UI and docs anomalyco/opencode#20709)
- refactor(format): update formatter interface to return command from enabled() (refactor(format): update formatter interface to return command from enabled() anomalyco/opencode#20703)
- app: unify auto scroll ref handling (app: unify auto scroll ref handling anomalyco/opencode#20716)
- go: add mimo
- electron: add basic context menu for inspect element (electron: add basic context menu for inspect element anomalyco/opencode#20723)
- feat: add macOS managed preferences support for enterprise MDM deployments (feat: add macOS managed preferences support for enterprise MDM deployments anomalyco/opencode#19178)
- chore: generate
- feat(acp): Add messageID and emit user_message_chunk on prompt/command (feat(acp): Add messageID and emit user_message_chunk on prompt/command anomalyco/opencode#18625)
- chore: generate
- test(app): add a golden path for mocked e2e prompts (test(app): add a golden path for mocked e2e prompts anomalyco/opencode#20593)
- chore: update nix node_modules hashes
- docs(effect): refresh migration status (docs(effect): refresh migration status anomalyco/opencode#20665)
- test(opencode): remove temporary e2e url repro (test(opencode): remove temporary e2e url repro anomalyco/opencode#20729)
- refactor(app): unexport internal e2e helpers (refactor(app): unexport internal e2e helpers anomalyco/opencode#20730)
- test(app): emit junit artifacts for playwright (test(app): emit junit artifacts for playwright anomalyco/opencode#20732)
- refactor(todo): effectify session todo (refactor(todo): effectify session todo anomalyco/opencode#20595)
- Adds TUI prompt traits, refs, and plugin slots (Adds TUI prompt traits, refs, and plugin slots anomalyco/opencode#20741)
- chore: update nix node_modules hashes
- dialog aware prompt cursor (dialog aware prompt cursor anomalyco/opencode#20753)
- fix(opencode): honor model limit.input overrides (fix(opencode): honor model limit.input overrides anomalyco/opencode#16306)
- refactor(effect): prune unused facades (refactor(effect): prune unused facades anomalyco/opencode#20748)
- fix: rm dynamic part from bash tool description again to restore cache hits across projects (fix: rm dynamic part from bash tool description again to restore cache hits across projects anomalyco/opencode#20771)
- refactor(share): effectify share next (refactor(share): effectify share next anomalyco/opencode#20596)
- fix: call models.dev once instead of twice on start (fix: call models.dev once instead of twice on start anomalyco/opencode#20765)
- fix: prevent Tool.define() wrapper accumulation on object-defined tools (fix: prevent Tool.define() wrapper accumulation on object-defined tools anomalyco/opencode#16952)
- chore: generate
- add automatic heap snapshots for high-memory cli processes (add automatic heap snapshots for high-memory cli processes anomalyco/opencode#20788)
- feat: Send x-session-affinity and x-parent-session-id headers (feat: Send x-session-affinity and x-parent-session-id headers anomalyco/opencode#20744)
- fix(sdk): handle Windows opencode spawn and shutdown (fix(sdk): handle Windows opencode spawn and shutdown anomalyco/opencode#20772)
- chore: update nix node_modules hashes
- electron: better menus (electron: better menus anomalyco/opencode#20878)
- fix(core): fix restoring earlier messages in a reverted chain (fix(core): fix restoring earlier messages in a reverted chain anomalyco/opencode#20780)
- fix(session): delay jump-to-bottom button (fix(session): delay jump-to-bottom button anomalyco/opencode#20853)
- fix(prompt): unmount model controls in shell mode (fix(prompt): unmount model controls in shell mode anomalyco/opencode#20886)
- fix(session): disable todo dock auto-scroll (fix(session): disable todo dock auto-scroll anomalyco/opencode#20840)
- feat(ui): redesign modified files section in session turn (feat(ui): redesign modified files section in session turn anomalyco/opencode#20348)
- fix(app): hide default session timestamps (fix(app): hide default session timestamps anomalyco/opencode#20892)
- refactor(effect): resolve built tools through the registry (refactor(effect): resolve built tools through the registry anomalyco/opencode#20787)
- fix: restore prompt focus after footer selection (fix: restore prompt focus after footer selection anomalyco/opencode#20841)
- feat: restore git-backed review modes (feat: restore git-backed review modes anomalyco/opencode#20845)
- chore: generate
- fix(app): show correct submit icon when typing follow up
- chore(app): remove queued follow-ups for now
- refactor(effect): build todowrite tool from Todo service (refactor(effect): build todowrite tool from Todo service anomalyco/opencode#20789)
- test(ci): publish unit reports in actions (test(ci): publish unit reports in actions anomalyco/opencode#20547)
- chore: rm models snapshot (chore: rm models snapshot anomalyco/opencode#20929)
- notes on v2 (notes on v2 anomalyco/opencode#20941)
- chore: generate
- refactor(provider): stop custom loaders using facades (refactor(provider): stop custom loaders using facades anomalyco/opencode#20776)
- perf(opencode): batch snapshot diffFull blob reads (perf(opencode): batch snapshot diffFull blob reads anomalyco/opencode#20752)
- fix(ci): create JUnit output dirs before tests (fix(ci): create JUnit output dirs before tests anomalyco/opencode#20959)
- release: v1.3.14
- refactor: remove redundant Kimi skill section (refactor: remove redundant Kimi skill section anomalyco/opencode#20393)
- fix(npm): Arborist reify fails on compiled binary — Bun pre-resolves node-gyp path at build time (fix(npm): Arborist reify fails on compiled binary — Bun pre-resolves node-gyp path at build time anomalyco/opencode#21040)
- release: v1.3.15
- fix: ensure reasoning tokens arent double counted when calculating usage (fix: ensure reasoning tokens arent double counted when calculating usage anomalyco/opencode#21047)
- feat(tui): show console-managed providers (feat(tui): show console-managed providers anomalyco/opencode#20956)
- refactor(effect): move read tool onto defineEffect (refactor(effect): move read tool onto defineEffect anomalyco/opencode#21016)
- chore: generate
- fix(tui): only show org switch affordances when useful (fix(tui): only show org switch affordances when useful anomalyco/opencode#21054)
- chore: generate
- test: add regression test for double counting bug (test: add regression test for double counting bug anomalyco/opencode#21053)
- doc: udpate doc
- tweak: add newline between and first line of read tool output to prevent confusion (tweak: add newline between <content> and first line of read tool output to prevent confusion anomalyco/opencode#21070)
- fix(plugin): parse package specifiers with npm-package-arg and sanitize win32 cache paths (fix(plugin): parse package specifiers with npm-package-arg and sanitize win32 cache paths anomalyco/opencode#21135)
- chore: update nix node_modules hashes
- feat(tui): make the mouse disablable ([FEATURE]: add a settings to disable mouse anomalyco/opencode#6824, feat: Add option to disable mouse capture in TUI for better terminal multiplexer compatibility anomalyco/opencode#7926) (feat(tui): make the mouse disablable (#6824, #7926) anomalyco/opencode#13748)
- fix(core): implement proper configOptions for acp (fix(core): implement proper configOptions for acp anomalyco/opencode#21134)
- fix: pass both 'openai' and 'azure' providerOptions keys for @ai-sdk/azure (fix: pass both 'openai' and 'azure' providerOptions keys for @ai-sdk/azure anomalyco/opencode#20272)
- fix(tui): default Ctrl+Z to undo on Windows (fix(tui): default Ctrl+Z to undo on Windows anomalyco/opencode#21138)
- release: v1.3.16
- zen: remove header check
- zen: normalize ipv6
- fix: show clear error when Cloudflare provider env vars are missing (fix: show clear error when Cloudflare provider env vars are missing anomalyco/opencode#20399)
- fix(tui): revert kitty keyboard events workaround on windows (fix(tui): revert kitty keyboard events workaround on windows anomalyco/opencode#20180)
- release: v1.3.17
- fix(lsp): MEMORY LEAK: ensure typescript server uses native project config (fix(lsp): MEMORY LEAK: ensure typescript server uses native project config anomalyco/opencode#19953)
- chore: generate
- docs: update Cloudflare provider setup to reflect /connect prompt flow (docs: update Cloudflare provider setup to reflect /connect prompt flow anomalyco/opencode#20589)
- refactor: replace Bun.serve with Node http.createServer in OAuth handlers (refactor: replace Bun.serve with Node http.createServer in OAuth handlers anomalyco/opencode#18327)
- upgrade opentui to 0.1.97 (upgrade opentui to 0.1.97 anomalyco/opencode#21137)
- refactor(server): replace Bun serve with Hono node adapters (refactor(server): replace Bun serve with Hono node adapters anomalyco/opencode#18335)
- chore: update nix node_modules hashes
- tweak: ensure copilot anthropic models have same reasoning effort model as copilot cli, also fix qwen incorrectly having variants (tweak: ensure copilot anthropic models have same reasoning effort model as copilot cli, also fix qwen incorrectly having variants anomalyco/opencode#21212)
- tweak: adjust chat.params hook to allow altering of the maxOutputTokens (tweak: adjust chat.params hook to allow altering of the maxOutputTokens anomalyco/opencode#21220)
- tweak: move the max token exclusions to plugins @rekram1-node (tweak: move the max token exclusions to plugins @rekram1-node anomalyco/opencode#21225)
- fix: bump openrouter ai sdk pkg to fix openrouter issues (fix: bump openrouter ai sdk pkg to fix openrouter issues anomalyco/opencode#21242)
- chore: update nix node_modules hashes
- chore: remove ai-sdk/provider-utils patch and update pkg (chore: remove ai-sdk/provider-utils patch and update pkg anomalyco/opencode#21245)
- chore: update nix node_modules hashes
- chore: bump anthropic ai sdk pkg, delete patch (chore: bump anthropic ai sdk pkg, delete patch anomalyco/opencode#21247)
- refactor(core): add full http proxy and change workspace adaptor interface (refactor(core): add full http proxy and change workspace adaptor interface anomalyco/opencode#21239)
- go: add mimo
- feat: add --dangerously-skip-permissions flag to opencode run (feat: add --dangerously-skip-permissions flag to opencode run anomalyco/opencode#21266)
- chore: update nix node_modules hashes
- feat(opencode): Add PDF attachment Drag and Drop (feat(opencode): Add PDF attachment Drag and Drop anomalyco/opencode#16926)
- feat(app): show full names on composer attachment chips (feat(app): show full names on composer attachment chips anomalyco/opencode#21306)
- style(app): redesign jump-to-bottom button per figma spec (style(app): redesign jump-to-bottom button per figma spec anomalyco/opencode#21313)
- Move auto-accept permissions to settings (refactor(app): auto-accept permissions to settings anomalyco/opencode#21308)
- go: support coupon
- fix(opencode): keep user message variants scoped to model (fix(opencode): keep user message variants scoped to model anomalyco/opencode#21332)
- chore: generate
- chore: update web stats
- feat(app): better subagent experience (feat(app): better subagent experience anomalyco/opencode#20708)
- refactor(core): support multiple event streams in worker and remove workspaces from plugin api (refactor(core): support multiple event streams in worker and remove workspaces from plugin api anomalyco/opencode#21348)
- fix(tui): use sentence case for theme mode command palette items (fix(tui): use sentence case for theme mode command palette items anomalyco/opencode#21192)
- fix: ensure the alibaba provider errors are retried (fix: ensure the alibaba provider errors are retried anomalyco/opencode#21355)
- fix(opencode): improve console login transport errors (fix(opencode): improve console login transport errors anomalyco/opencode#21350)
- chore: generate
- feat(tui): allow variant_list keybind for the "Switch model variant" command (feat(tui): allow variant_list keybind for the "Switch model variant" command anomalyco/opencode#21185)
- test: disable GPG signing in test fixtures (test: disable GPG signing in test fixtures anomalyco/opencode#20386)
- fix(opencode): clear webfetch timeouts on failed fetches (fix(opencode): clear webfetch timeouts on failed fetches anomalyco/opencode#21378)
- feat(opencode): add OTLP observability support (feat(opencode): add OTLP observability support anomalyco/opencode#21387)
- zen: glm5.1 doc
- zen: glm5.1 doc
- go: glm5.1
- core: refactor tool system to remove agent context from initialization (core: refactor tool system to remove agent context from initialization anomalyco/opencode#21052)
- refactor(snapshot): store unified patches in file diffs (refactor(snapshot): store unified patches in file diffs anomalyco/opencode#21244)
- chore: generate
- release: v1.4.0
- chore: update nix node_modules hashes
- fix(tui): simplify console org display (fix(tui): simplify console org display anomalyco/opencode#21339)
- ui: fix sticky session diffs header (ui: fix sticky session diffs header anomalyco/opencode#21486)
- test: update webfetch test (test: update webfetch test anomalyco/opencode#21398)
- fix: ensure that /providers list and shell endpoints are correctly typed in sdk and openapi schema (fix: ensure that /providers list and shell endpoints are correctly typed in sdk and openapi schema anomalyco/opencode#21543)
- fix(app): patch tool diff rendering
- fix(app): diff list normalization
- fix: dont show invalid variants for BP (fix: dont show invalid variants for BP anomalyco/opencode#21555)
- tweak: separate ModelsDev.Model and Config model schemas (tweak: separate ModelsDev.Model and Config model schemas anomalyco/opencode#21561)
- refactor(effect): build task tool from agent services (refactor(effect): build task tool from agent services anomalyco/opencode#21017)
- fix(app): skip url password setting for same-origin server and web app (fix(app): skip url password setting for same-origin server and web app anomalyco/opencode#19923)
- Add Claude Agent SDK integration (Phases 0-6)
- Add static SDK model definitions and always include Anthropic provider
- Add agent dashboard, multi-agent support, and all SDK features
- Guard SDK worktree API calls for upstream compatibility
- Add missing dashboard keybind (escape) to config
- Fix agent summary fetch and add dashboard keybind hint to prompt footer
- Add activity display to AI SDK processor
- Remove environment prompt that duplicates model self-knowledge
- Fix cross-directory event bridge and remove debug logs; simplify session directory helper
- Fix duplicate event delivery in global.event listener when directory is undefined
- Regenerate SDK to restore missing worktree.diffstat method
- Show model descriptions from SDK in model selector
- Port queued message handling, /deepReview, /merge, and suppress update dialog
- Fix draft restore when prompt is hidden by active permission/question prompt
- Fix abort signal propagation and session directory context for cancel
- Fix permission merging and propagate caller permissions to subagents
- Fix @ autocomplete using wrong directory for agent sessions
- Add test comment to README
Co-authored-by: dongyuxin <dongyuxin@dev.dongyuxin.msh-dev.svc.cluster.local>
…o v6 the ai sdk changed the key for ai-sdk/azure so the exclusion is no longer needed (anomalyco#20326)
…x-anthropic (anomalyco#20266) Signed-off-by: Major Hayden <major@mhtx.net>
…ped in sdk and openapi schema (anomalyco#21543)
Replace the Vercel AI SDK with the Claude Agent SDK for Anthropic provider LLM communication. Adds adapter layer, permission bridge, stream processor, auth integration, session map, and comprehensive tests (113 pass, 1 skip). The AI SDK code path remains for non-Anthropic providers. New source files: - claude-sdk-adapter.ts: SDKMessage → MessageV2 part mapping - claude-sdk-permissions.ts: canUseTool bridge to Permission events/TUI - claude-sdk-processor.ts: consumes query() stream, persists parts - claude-sdk-query.ts: resolves auth and calls query() with options - claude-sdk-session-map.ts: maps opencode session IDs to SDK UUIDs - summarize.ts: agent summary generation via SDK or AI SDK
Adds SDK_MODELS with Opus 4.6 (1M), Sonnet 4.6, Sonnet 4.6 (1M), and Haiku 4.5. Ensures Anthropic provider is always present in the provider list even without a local API key, since the Agent SDK handles auth via subscription login.
Complete reimplementation of all Claude SDK changes on the effects architecture. Includes: - Agent dashboard with table-based navigation (j/k/Enter/a/w/x/d) - Multi-agent support with worktree creation and cross-directory SSE - Subagent routing to child sessions with full TUI support - MCP server bridge proxying tool calls to connected clients - Permission bridge with cross-directory support - Worktree diff view and terminal attach - GitHub PR integration - Inline permission approval UI - Activity display on dashboard agent rows - Compaction support via SDK hooks - Image/PDF attachment forwarding - Thinking effort level passthrough - Session resumption via SDK UUID mapping - Dispatch binary rename and install scripts - Release workflow and README updates
The worktree.diffstat, worktree.info, and worktree.diff endpoints don't exist in the upstream SDK yet. Guard all calls with typeof checks so the dashboard doesn't crash on launch.
The dashboard keybind was referenced in the session route and command palette but not registered in the keybind config, so <leader>escape had no effect.
- Use direct fetch for /session/:id/last-response instead of the generated SDK client method which doesn't exist yet - Add dashboard keybind hint to session prompt footer so users can see the <leader>esc shortcut
Set activity on session status during tool execution so the dashboard shows what each agent is doing regardless of which SDK path is used. Shows "Thinking..." on stream start and tool details during execution.
…ion directory helper
Restore the model descriptions (e.g. 'Most capable for complex work' for Opus, 'Best for everyday tasks' for Sonnet) that were being read from model.options.sdkDescription but not displayed. The provider already stores these descriptions from SDK_MODELS.
- Move AbortController creation before createClaudeSdkQuery so the SDK receives the signal and can clean up on cancel - Wire Effect.onInterrupt to call abortController.abort() so fiber interruption propagates to the SDK stream - Wrap cancel and assertNotBusy routes in withSessionDirectory for correct session context
|
Hey! Your PR title Please update it to start with one of:
Where See CONTRIBUTING.md for details. |
|
This PR doesn't fully meet our contributing guidelines and PR template. What needs to be fixed:
Please edit this PR description to address the above within 2 hours, or it will be automatically closed. If you believe this was flagged incorrectly, please let a maintainer know. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.