v1.2.27
- Fix: restore fork markers and account config merge
- Sync: merge upstream v1.2.27 into shuvcode-dev
- Fix: vcs watcher if statement (anomalyco#17673)
- Tweak(ui): remove open label (anomalyco#17512)
- Chore(permission): delete legacy permission module (anomalyco#17534)
- Fix(question): clean up pending entry on abort (anomalyco#17533)
- Remove sighup exit (anomalyco#17254)
- Refactor(permission): effectify PermissionNext + fix InstanceState ALS bug (anomalyco#17511)
- Fix(app): handle multiline web paste in prompt composer (anomalyco#17509)
- Refactor(schema): inline branded ID schemas (anomalyco#17504)
- Refactor(question): effectify QuestionService (anomalyco#17432)
- Tweak: ensure that compaction message is tracked as agent initiated (anomalyco#17431)
- Fix(core): increase default chunk timeout from 2 min to 5 min (anomalyco#17490)
- Fix(opencode): lost sessions across worktrees and orphan branches (anomalyco#16389)
- Fix(app): model selection persist by session (anomalyco#17348)
- Fix(app): polish prompt composer controls (anomalyco#17388)
- Fix(app): sidebar sync
- Tweak(ui): use new-session icon in sidebar buttons
- Fix(app): avoid clipping new session during sidebar anim
- Fix(app): animate titlebar controls on sidebar open
- Fix(app): restore sidebar dash and sync session spinner colors (anomalyco#17384)
- Feat(schema): scaffold effect-to-zod bridge (anomalyco#17273)
- Fix(app): fork should copy prompt into new session (anomalyco#17375)
- Fix(app): sidebar spacing + session list spinner transition (anomalyco#17355)
- Fix(app): terminal cloning without retry (anomalyco#17354)
- Fix(app): scroll falls behind prompt input
- Fix(app): todo spacing
- Fix(app): better optimistic prompt submit (anomalyco#17337)
- Fix(opencode): serialize config bun installs (anomalyco#17342)
- Fix(app): support text attachments (anomalyco#17335)
- Chore(app): i18n sync (anomalyco#17283)
- Perf(app): use cursor session history loading (anomalyco#17329)
- Perf(server): paginate session history (anomalyco#17134)
- Fix(opencode): sessions lost after git init in existing project (anomalyco#16814)
- Fix(e2e): fail fast on config dependency installs (anomalyco#17280)
- Fix(app): list item background colors
- Fix: filter empty content blocks for Bedrock provider (anomalyco#14586)
- Fix(cli): hide console command from help output (anomalyco#17277)
- Fix(app): stabilize todo dock e2e with composer probe (anomalyco#17267)
- Refactor(provider): effectify ProviderAuthService (anomalyco#17227)
- Desktop: multi-window support in electron (anomalyco#17155)
- Feat(cli): add console account subcommands (anomalyco#17265)
- Refactor(auth): effectify AuthService (anomalyco#17212)
- Tweak: rm openrouter warning (anomalyco#17259)
- Fix(app): increase CI e2e workers (anomalyco#17263)
- Reorder provider list in providers login (anomalyco#17262)
- Fix(app): sidebar re-rendering too often
- Fix(app): task error state
- Fix(app): message loading
- Fix: if server password exists, use basic auth for plugin client by default (anomalyco#17213)
- Feat(app): follow-up behavior (anomalyco#17233)
- Fix(app): optimistic revert/restore
- Fix(app): not loading message nav
- Fix(app): titlebar cleanup (anomalyco#17206)
- Feat: session load perf (anomalyco#17186)
- Fix: non openai azure models that use completions endpoints (anomalyco#17128)
- Refactor(import): use .parse() at boundaries instead of manual .make() (anomalyco#17106)
- Refactor(provider): flow branded ProviderID/ModelID through internal signatures (anomalyco#17182)
- Fix(web): fix broken mobile sidebar (in workflows mode) sizing issue by adding flex-1 (anomalyco#17055)
- Fix(app): terminal animation
- Feat(id): brand ProviderID and ModelID (anomalyco#17110)
- Fix(app): sidebar quirks
- Refactor(desktop): rework default server initialization and connection handling (anomalyco#16965)
- Fix terminal e2e flakiness with a real terminal driver (anomalyco#17144)
- Fix(desktop): set default WebSocket username and prevent repeated calling of terminal spawn properly closing the terminal (anomalyco#17061)
- Fix(electron): theme Windows titlebar overlay (anomalyco#16843)
- Fix(app): guard comment accessor in message timeline (anomalyco#17126)
- Merge remote-tracking branch 'origin/dev' into dev
- Core: remove external sourcemap generation to reduce build artifacts
- Fix(e2e): re-focus prompt after terminal opens in slash-terminal test (anomalyco#17113)
- Feat(id): brand PermissionID, PtyID, QuestionID, and ToolID (anomalyco#17042)
- Feat(windows): add arm64 release targets for cli and desktop (anomalyco#16696)
- Feat(id): brand PartID through Drizzle and Zod schemas (anomalyco#16966)
- Feat(id): brand WorkspaceID through Drizzle and Zod schemas (anomalyco#16964)
- Fix: resolve symlinks in Instance cache to prevent duplicate contexts (anomalyco#16651)
- Feat(id): brand SessionID through Drizzle and Zod schemas (anomalyco#16953)
- Core: restore plugin serverUrl getter so plugins can connect to local server
- Feat(app): restore to message and fork session (anomalyco#17092)
- Fix: re-enable snapshot in acp (anomalyco#14918)
- Tweak: adjust skill presentation to be a little less token heavy (anomalyco#17098)
- Feat(id): brand ProjectID through Drizzle and Zod schemas (anomalyco#16948)
- Fix(app): todos not clearing
- Fix(app): skip editor reconcile during IME composition (anomalyco#17041)
- Refactor(account): tighten effect-based account flows (anomalyco#17072)
- Fix(core): read stdout and stderr in PackageRegistry.info before waiting for the process to exit (anomalyco#16998)
- Chore(app): simplify review pane (anomalyco#17066)
- Tweak: adjust way skills are presented to agent to increase likelyhood of skill invocations. (anomalyco#17053)
- Perf(app): trim session render work (anomalyco#16987)
- Sync: merge upstream v1.2.24 into shuvcode-dev
- Fix(electron): hide Windows background consoles (anomalyco#16842)
- Fix: add GOOGLE_VERTEX_LOCATION env var support for Vertex AI (anomalyco#16922)
- Fix(account): resilient orgs fetch (anomalyco#16944)
- Chore(app): fix tests
- Fix(app): terminal jank
- Fix(app): terminal focus issues and jank
- Fix ESM imports for @opencode-ai/plugin (anomalyco#16916)
- Core: make account login upgrades safe while adding multi-account workspace auth (anomalyco#15487)
- Fix(core): don't permit access to system directories (anomalyco#16891)
- Feat(core): allow passing
workspaceIDinto session create endpoint (anomalyco#16798) - Fix(core): a chunk timeout when processing llm stream (anomalyco#16366)
- Fix(core): make worktrees read the project id from local workspace (anomalyco#16795)
- Fix(opencode): add thinking variants support for SAP AI provider (anomalyco#14958)
- Chore(app): debug window
- Upgrade opentui to v0.1.87 (anomalyco#16772)
- Fix(mcp): fix OAuth auto-connect failing on first connection (anomalyco#15547)
- Refactor(server): extract createApp function for server initialization
- Chore(app): dev stats
- Fix(app): terminal state corruption
- Fix(core): put workspace routing behind OPENCODE_EXPERIMENTAL_WORKSPACES flag (anomalyco#16775)
- Merge remote-tracking branch 'origin/dev' into dev
- Refactor: replace bun semver with npm semver package
- Fix(tui): wait for model store before auto-submitting --prompt (anomalyco#7476)
- Refactor(opencode): replace Bun shell in core flows (anomalyco#16286)
- Refactor: change pathToFileURL imports from bun to url module
- Fix(tui): handle error when creating a session (anomalyco#16767)
- Fix: Multiple jdtls LSPs eating memory in java monorepos (anomalyco#12123)
- Fix(app): scroll jitter/loop
- Fix(app): session title turn spinner (anomalyco#16764)
- Fix(app): dismiss toast notifications when questions or permissions a… (anomalyco#16758)
- Feat(tui): add initial support for workspaces into the tui (anomalyco#16230)
- Feat(gitlab): send context-1m-2025-08-07 beta header to enable 1M context window (anomalyco#16153)
- Add copilot gpt-5.4 xhigh support (anomalyco#16294)
- Fix(app): remove oc-1 theme
- Tui: fix sidebar workspace container sizing by adding box-border class to prevent content overflow issues
- Fix(app): don't animate review panel in/out
- Revert(app): "STUPID SEXY TIMELINE (anomalyco#16420)" (anomalyco#16745)
- Fix(app): sanitize workspace store filenames on Windows (anomalyco#16703)
- Fix(opencode): pass missing auth headers in
run --attach(anomalyco#16097) - Feat(app): generate color palettes (anomalyco#16232)
- Disable fallback to free nano for small model
- Guard tui exit (anomalyco#16640)
- Fix(tui): canonicalize cwd after chdir (anomalyco#16641)
- Tui: fix sidebar background color when collapsed
- App: suppress hover when opening project menu or right-clicking to prevent flickering
- Fix: trim retained desktop terminal buffers (anomalyco#16583)
- Fix(app): messages not loading reliably
- Fix: prune and evict stale app session caches (anomalyco#16584)
- Fix(opencode): avoid TTY corruption from double cleanup (anomalyco#16565)
- Fix(tui): fix broken /mcp toggling (anomalyco#16431)
- Revert "tui: dock auto-accept after thinking and move Add file to bottom-left"
- Revert "tui: keep model + thinking selectors beside Add file"
- Revert "tui: add more editor bottom padding for prompt controls"
- Revert "tui: expose auto-accept as a permissions select"
- Revert "tui: use text-base color for prompt selects"
- Revert "tui: remove prompt model/thinking/permissions selectors on dev so the composer stays simple"
- Tui: remove prompt model/thinking/permissions selectors on dev so the composer stays simple
- Tui: restore new-session logo on dev so users recognize OpenCode immediately
- Tui: revert new-session logo on dev so this UI change only ships with auto-accept-permissions
- Tui: add opencode logo to new session screen so users can immediately identify the app when starting a fresh session
- Tui: use text-base color for prompt selects
- Tui: expose auto-accept as a permissions select
- Tui: add more editor bottom padding for prompt controls
- Tui: keep model + thinking selectors beside Add file
- Tui: dock auto-accept after thinking and move Add file to bottom-left
- Tui: revert prompt control docking
- Tui: dock auto-accept after thinking and move Add file to bottom-left
- Core: update database path test to verify correct channel-based filename
- Core: allow beta channel to share database with stable channel
- Tui: balance titlebar columns so center content doesn't get squeezed by long side content
- Tui: center empty states vertically in session view and improve review panel messaging for projects without version control
- Core: add OPENCODE_SKIP_MIGRATIONS flag to bypass database migrations
- Fix(app): review panel transition
- Fix(app): guard session-header current() against undefined when options is empty (anomalyco#16478)
- Fix(app): preserve file tree tab on reopen + fix e2e test regressions (anomalyco#16482)
- Tui: remove close button from project hover popover (anomalyco#16403)
- Fix(app): new session uses agent model/variant
- Fix(app): model sticks to session
- Fix(app): all panels transition
- Fix(app): can't scroll files
- Fix(app): fix max-width on timeline
- Tui: align session empty states (anomalyco#16412)
- STUPID SEXY TIMELINE (anomalyco#16420)
- Test(app): share workspace slug wait helper across e2e specs (anomalyco#16446)
- Fix(opencode): preserve original line endings in 'edit' tool (anomalyco#9443)
- Fix(tui): fix broken /export toggling (anomalyco#16443)
- Test(app): abort sessions and wait for idle before e2e cleanup (anomalyco#16439)
- Fix(windows): git path resolution for modified files across Git Bash, MSYS2, and Cygwin (anomalyco#16422)
- Fix(pty): pty session handle leak (anomalyco#15599)
- Feat(desktop): show skill issue when snapshotting is off (anomalyco#16432)
- Fix(opencode): sanitize preview database filenames (anomalyco#16430)
- App: fix portal positioning for sidebar menus and tooltips by removing conditional mount logic
- Tests(app): e2e tests part 67 (anomalyco#16406)
- Feat(app): sidebar reveal animation, hover peek overlay, and weaker dividers (anomalyco#16374)
- Fix(core): log stack trace when schema validation fails (anomalyco#16401)
- Fix issue with migration
- Fix(app): better review/filetree empty states (anomalyco#16221)
- Feat: add project git init api (anomalyco#16383)
- Fix(app): enable Safari autocorrect in normal mode, disable in shell mode (anomalyco#15563)
- Fix(app): stale keyed show errors
- Chore(storage): update drizzle and channel db handling
- Share: speed up share loads (anomalyco#16165)
- Revert "fix(app): stale read error"
- Revert "fix(app): stale keyed show errors"
- Fix(app): add english to locale matchers (anomalyco#16280)
- Fix(app): enable auto-accept keybind regardless of permission config (anomalyco#16259)
- Fix: restore Bun stdin reads for prompt input (anomalyco#16300)
- Fix(git): stop leaking fsmonitor daemons e.g. 60GB+ of commited memory after running tests (anomalyco#16249)
- Refactor(opencode): replace Bun.which with npm which (anomalyco#15012)
- Feat: add "gpt-5.4" to codex allowed models list (anomalyco#16274)
- Refactor: replace Bun.stderr and Bun.color with Node.js equivalents
- Refactor: replace Bun.connect with net.createConnection
- Fix: use sha1 for hash instead of unsupported xxhash3-xxh64
- Refactor: use node:stream/consumers for stdin reading
- Refactor: replace Bun.stdin.text with Node.js stream reading
- Refactor: replace Bun.hash with Hash.fast using xxhash3-xxh64
- Refactor: replace Bun.write with Filesystem.write in config files
- Refactor: replace Bun.write/file with Filesystem utilities in snapshot
- Refactor: replace Bun.sleep with node timers (anomalyco#15013)
- Fix(app): stale show (anomalyco#16236)
- Tui: remove keyboard shortcut tooltips from new session and new workspace buttons in the sidebar
- Fix(app): load tab on open file
- Feat(tui): add onClick handler to InlineTool and Task components (anomalyco#16187)
- Chore(app): ghostty-web fork
- Update sdk package.json
- Fix(app): stale keyed show errors
- Fix(app): locale error
- Fix(app): stale read error
- Fix(app): provider settings consistency
- Fix(app): preserve question dock state across session switches (anomalyco#16173)
- Fix(app): icon jiggle
- Fix(app): mod+f always opens search
- Refactor(desktop): improve error handling and translation in server error formatting (anomalyco#16171)
- Fix(app): improve agent selection logic passing in configured models and variants correctly (anomalyco#16072)
- Desktop: remove unnecessary macOS entitlements (anomalyco#16161)
- Desktop: new-session deeplink (anomalyco#15322)
- App: prefer using useLocation instead of window.location (anomalyco#15989)
- Feat(opencode): Adding options to auth login to skip questions (anomalyco#14470)
- Dont let dax touch the ui (anomalyco#16060)
- Fix(core): handle SIGHUP and kill process (anomalyco#16057)
Thank you to 35 community contributors:
- @natewill:
- fix(tui): fix broken /mcp toggling (anomalyco#16431)
- @tobwen:
- fix(opencode): avoid TTY corruption from double cleanup (anomalyco#16565)
- @Bezkup:
- docs(zen.mdx): correct Italian grammar and punctuation errors (anomalyco#16590)
- @nexxeln:
- fix: prune and evict stale app session caches (anomalyco#16584)
- fix: trim retained desktop terminal buffers (anomalyco#16583)
- perf(app): trim session render work (anomalyco#16987)
- perf(server): paginate session history (anomalyco#17134)
- perf(app): use cursor session history loading (anomalyco#17329)
- fix(opencode): serialize config bun installs (anomalyco#17342)
- fix(app): handle multiline web paste in prompt composer (anomalyco#17509)
- @Hona:
- fix(tui): canonicalize cwd after chdir (anomalyco#16641)
- fix(app): sanitize workspace store filenames on Windows (anomalyco#16703)
- fix(electron): hide Windows background consoles (anomalyco#16842)
- feat(windows): add arm64 release targets for cli and desktop (anomalyco#16696)
- fix(e2e): re-focus prompt after terminal opens in slash-terminal test (anomalyco#17113)
- fix(ci): use dynamic bun cache path for cross-platform support (anomalyco#17120)
- fix(app): guard comment accessor in message timeline (anomalyco#17126)
- fix(desktop-electron): fix resource loading under file:// protocol (anomalyco#17125)
- fix(electron): theme Windows titlebar overlay (anomalyco#16843)
- Fix terminal e2e flakiness with a real terminal driver (anomalyco#17144)
- fix(ci): keep test runs on dev (anomalyco#17260)
- fix(app): increase CI e2e workers (anomalyco#17263)
- fix(app): stabilize todo dock e2e with composer probe (anomalyco#17267)
- fix(e2e): fail fast on config dependency installs (anomalyco#17280)
- @ariane-emory:
- docs: add session_child_first keybinding to documentation (anomalyco#16631)
- @ericclemmons:
- fix(opencode): pass missing auth headers in
run --attach(anomalyco#16097)
- fix(opencode): pass missing auth headers in
- @yihuikhuu:
- fix(app): fix issue with scroll jumping when pressing escape in comment text area (anomalyco#15374)
- @MrMushrooooom:
- add copilot gpt-5.4 xhigh support (anomalyco#16294)
- feat(web): use Feishu for Chinese community links (anomalyco#16908)
- fix(ui): force wasm highlighter for markdown code blocks (anomalyco#17373)
- @Krule:
- feat(gitlab): send context-1m-2025-08-07 beta header to enable 1M context window (anomalyco#16153)
- @jlongster:
- feat(tui): add initial support for workspaces into the tui (anomalyco#16230)
- fix(tui): handle error when creating a session (anomalyco#16767)
- fix(core): put workspace routing behind OPENCODE_EXPERIMENTAL_WORKSPACES flag (anomalyco#16775)
- fix(core): make worktrees read the project id from local workspace (anomalyco#16795)
- fix(core): a chunk timeout when processing llm stream (anomalyco#16366)
- feat(core): allow passing
workspaceIDinto session create endpoint (anomalyco#16798) - fix(core): increase default chunk timeout from 2 min to 5 min (anomalyco#17490)
- @ShriKaranHanda:
- fix(storybook): add ci build workflow (anomalyco#16760)
- @neriousy:
- fix(app): dismiss toast notifications when questions or permissions a… (anomalyco#16758)
- fix(app): make error tool card respect settings (anomalyco#17005)
- @stevoland:
- fix: Multiple jdtls LSPs eating memory in java monorepos (anomalyco#12123)
- @altendky:
- fix(tui): wait for model store before auto-submitting --prompt (anomalyco#7476)
- @bhaktatejas922:
- docs: update opencode-morph-fast-apply to opencode-morph-plugin in ecosystem (anomalyco#16634)
- docs: update opencode-morph-plugin in all language ecosystem pages (anomalyco#16869)
- @domdomegg:
- fix(mcp): fix OAuth auto-connect failing on first connection (anomalyco#15547)
- @jerome-benoit:
- fix(opencode): add thinking variants support for SAP AI provider (anomalyco#14958)
- @kitlangton:
- fix(account): resilient orgs fetch (anomalyco#16944)
- refactor(account): tighten effect-based account flows (anomalyco#17072)
- feat(id): brand ProjectID through Drizzle and Zod schemas (anomalyco#16948)
- feat(id): brand SessionID through Drizzle and Zod schemas (anomalyco#16953)
- feat(id): brand WorkspaceID through Drizzle and Zod schemas (anomalyco#16964)
- feat(id): brand PartID through Drizzle and Zod schemas (anomalyco#16966)
- feat(id): brand PermissionID, PtyID, QuestionID, and ToolID (anomalyco#17042)
- feat(id): brand ProviderID and ModelID (anomalyco#17110)
- refactor(provider): flow branded ProviderID/ModelID through internal signatures (anomalyco#17182)
- refactor(import): use .parse() at boundaries instead of manual .make() (anomalyco#17106)
- reorder provider list in providers login (anomalyco#17262)
- refactor(auth): effectify AuthService (anomalyco#17212)
- feat(cli): add console account subcommands (anomalyco#17265)
- refactor(provider): effectify ProviderAuthService (anomalyco#17227)
- fix(cli): hide console command from help output (anomalyco#17277)
- feat(schema): scaffold effect-to-zod bridge (anomalyco#17273)
- refactor(question): effectify QuestionService (anomalyco#17432)
- refactor(schema): inline branded ID schemas (anomalyco#17504)
- refactor(permission): effectify PermissionNext + fix InstanceState ALS bug (anomalyco#17511)
- fix(question): clean up pending entry on abort (anomalyco#17533)
- chore(permission): delete legacy permission module (anomalyco#17534)
- @SOUMITRO-SAHA:
- fix: add GOOGLE_VERTEX_LOCATION env var support for Vertex AI (anomalyco#16922)
- @shuv1337:
- sync: merge upstream v1.2.24 into shuvcode-dev
- sync: record last synced tag v1.2.24
- sync: merge upstream v1.2.27 into shuvcode-dev
- sync: record last synced tag v1.2.27
- sync: normalize bun.lock after install
- fix: restore fork markers and account config merge
- @andyWang1688:
- docs(providers): clarify npm choice for chat vs responses APIs (anomalyco#16974)
- @ghost91-:
- fix(core): read stdout and stderr in PackageRegistry.info before waiting for the process to exit (anomalyco#16998)
- @ysm-dev:
- fix(app): skip editor reconcile during IME composition (anomalyco#17041)
- @noamzbr:
- fix: re-enable snapshot in acp (anomalyco#14918)
- @jmylchreest:
- fix: resolve symlinks in Instance cache to prevent duplicate contexts (anomalyco#16651)
- @OpeOginni:
- fix(desktop): set default WebSocket username and prevent repeated calling of terminal spawn properly closing the terminal (anomalyco#17061)
- @Brendonovich:
- refactor(desktop): rework default server initialization and connection handling (anomalyco#16965)
- desktop: multi-window support in electron (anomalyco#17155)
- @5w14:
- fix(web): fix broken mobile sidebar (in workflows mode) sizing issue by adding flex-1 (anomalyco#17055)
- @Wangmerlyn:
- docs: clarify subagent session navigation keybinds (anomalyco#16455)
- @Tom-Ryder:
- fix: filter empty content blocks for Bedrock provider (anomalyco#14586)
- @michaeldwan:
- fix(opencode): sessions lost after git init in existing project (anomalyco#16814)
- fix(opencode): lost sessions across worktrees and orphan branches (anomalyco#16389)
- @marcusschiesser:
- fix(ui): prevent long filenames from overlapping actions (anomalyco#17151)
- @Gojer16:
- docs(es): fix Spanish intro page translation, grammar, and terminology (anomalyco#17563)
- @erikengervall:
- docs: Add opencode-firecrawl to ecosystem documentation (anomalyco#17672)