## Core
- Increase maximum batch tool limit from 10 to 25 (@spoons-and-mirrors)
- Remove favicon from application
- Apply patch description
- Format only edited file in Cargo workspace instead of entire workspace (@goniz)
- Cargo fmt does not support formatting single files
- Rename uv formatter from 'uv format' to 'uv' for config consistency (@paulclou)
- Initial e2e test setup for app
- Reset worktree to clean state
- Delete workspace functionality
- Tweak apply_patch tool description
- Omit todo tools for OpenAI models
- Add proper variant support to copilot
- Track reasoning by output_index for Copilot compatibility (@NateSmyth)
- Add scheduler and cleanup module
- Auto-route GPT-5+ models to Responses API in GitHub Copilot integration (@christso)
- Use streamObject when using OpenAI OAuth in agent generation (@thmalek)
- Fix incorrect model variants for Grok models
- Note untracked files in review documentation
- Treat .fbs files as text instead of images in tool handling (@zerone0x)
- Update GitLab AI provider to version 1.3.2 (@vglafirov)
- Add command execute before hook (@spoons-and-mirrors)
- Overhaul Nix flake and packages (@gigamonster256)
- Preserve file attachment metadata during session replay (@liorshk)
- Update Scoop installation method (@chawyehsu)
- Fix import issue in patch module
- Restore persisted model and agent when loading ACP session (@noamzbr)
- Use single global event subscription and route by session ID in ACP (@noamzbr)
- Increase question header and label limits (@bdwelle)
- Add apply_patch tool for OpenAI models
- Fix Java language server download on Windows (@pschiel)
- Add vim-style line-by-line scrolling keybindings (@NathanFlurry)
- Prevent environment variables in config from being replaced with actual values
- Fix mDNS hostname discovery (@j0nl1)
- Revert OAuth redirect URI configuration for MCP servers
- Fix GPT ID handling in API responses
- Add OAuth polling safety margin in Copilot device authentication (@hamir-suspect)
- Open help dialog with tui/open-help route (@AksharP5)
## TUI
- Clarify resume session tip in TUI (@kearns-cu)
- Set input mode based on whether mouse or keyboard is in use to prevent unwanted mouse events (@jcampuza)
- Don't unnecessarily wrap lines and introduce an unneeded empty line (@ariane-emory)
- Add mouse support for permission buttons in TUI (@Hona)
- Fix Windows evaluating text on copy (@Hona)
- Uninstall OpenCode installed via Windows package managers (@itsrainingmani)
- Unify command registry and derive slash commands from command definitions (@kitlangton)
- Hide variants hint when list is empty
- Fix model state persistence when model store is not ready
- Centralize OSC 52 clipboard support for SSH sessions (@b3nw)
- Keep primary model after subagent runs (@sethcarlton)
- Make home/end keys work in menu list modal windows (@ariane-emory)
## Desktop
- Fix favicon in app
- Change keybind for cycling thinking effort in app (@neriousy)
- Fixed global terminal and review pane toggle functionality
- Fix hash-based navigation in the application
- Give feedback when trying to paste an unsupported file type (@neriousy)
- Rename favicons to v2 for cache busting (@R44VC0RP)
- Reload instance after workspace reset
- Make terminal sessions scoped to workspace
- Add hover overlay with upload and trash icons to project icon in edit dialog
- Tighten edit project color spacing
- Constrain edit project dialog width
- Tweak edit project icon container styling
- Adjust edit project icon helper text
- Update edit project dialog padding and avatar styles for consistency
- New layout improvements for app
- New session layout
- Improved session layout
- Hide settings button in app
- Add more end-to-end tests for the app
- Add end-to-end testing utilities for the application
- Tweak share button to prevent layout shift in desktop (@itsrainingmani)
- Apply getComputedStyle polyfill on all platforms in desktop app (@Slone123c)
- Improve layout and styling of desktop session search button (@OpeOginni)
- Remove redundant toast for thinking effort changes (@kitlangton)
- Add session unshare button to desktop application (@itsrainingmani)
- Remove max-width constraint from session name tooltip
- Adjust project path tooltip placement
- Remove max width on sidebar new buttons
- Adjust session list tooltip trigger and delay
- Keep project avatar hover styles while popover is open
- Adjust recent sessions popover padding
- Reduce prompt dock bottom spacing
- Show project name in avatar hover
- Remove loading text after splash screen
- Fix command palette file list item spacing
- Shrink project notification dot and apply masking
- Update desktop initializing splash logo
- Align project avatar notification dot
- Don't try to open command palette if a dialog is already open (@BlankParticle)
- Added Windows-only guard to make window.getComputedStyle fall back to document.documentElement (@Eric-Guo)
- Fix flaky session archiving behavior
- Prevent text clipping on search button descenders
- Remove secondary text from commands
- Limit search modal max-height to 480px
- Refine search modal styling and list component
- Reduce command item left padding in search modal
- Add hideIcon and class options to List search and customize search modal input styling
- Adjust command item left padding in search modal
- Add left padding to command items in search modal
- Increase keybind border radius in search modal
- Display arrow keys as symbols in keybind formatting
- Use Keybind component in search modal list
- Use Keybind component in titlebar search button
- Fix recent sessions gutter spacing
## Extensions
- Add use_github_token to example
**Thank you to 39 community contributors:**
- @ariane-emory:
- fix: make home/end keys work in menu list modal windows (resolves #7190) (#8347)
- fix: Don't unnecessarily wrap lines and introduce an unneeded empty line (resolves #9489) (#9488)
- @sethcarlton:
- fix: keep primary model after subagent runs (#8951)
- @AksharP5:
- fix: open help dialog with tui/open-help route (#8596)
- @b3nw:
- fix: centralize OSC 52 clipboard support for SSH sessions (#8974)
- @gigamonster256:
- fix(nix): add desktop application entry (#8972)
- feat(nix): overhaul nix flake and packages (#9032)
- fix: nix ci - swapped dash/underscore (#9352)
- @dbpolito:
- fix(desktop): Stream bash output + strip-asni (#8961)
- @hamir-suspect:
- fix(opencode): add oauth polling safety margin in copilot device authentication (#8986)
- @jerome-benoit:
- fix(nix): resolve hash race condition in parallel matrix jobs (#8995)
- @benjaminshafii:
- docs: Add OpenWork to ecosystem (#8741)
- @Eric-Guo:
- fix(desktop): Added a Windows-only guard that makes window.getComputedStyle fall back to document.documentElement (#9054)
- @j0nl1:
- fix: mdns discover hostname (#9039)
- @Slone123c:
- fix: escape CSS selector keys to handle special characters (#9030)
- fix(desktop): apply getComputedStyle polyfill on all platforms (#9369)
- @cgilly2fast:
- docs: add firmware provider to providers docs (#8993)
- @berenar:
- docs(config): explain that `autoupdate` doesn't work when installed with a package manager (#9092)
- @BlankParticle:
- fix: don't try to open command palette if a dialog is already open (#9116)
- @kitlangton:
- refactor(tui): unify command registry and derive slash commands (#9115)
- fix(app): remove redundant toast for thinking effort changes (#9181)
- @NathanFlurry:
- feat: bind vim-style line-by-line scrolling (#8980)
- @pschiel:
- fix(windows): fix jdtls download on Windows (#9195)
- @bdwelle:
- feat(tool): increase question header and label limits (#9201)
- @noamzbr:
- fix(acp): use single global event subscription and route by sessionID (#5628)
- fix: restore persisted model/agent when loading ACP session (#7809)
- @itsrainingmani:
- feat(cli): uninstall opencode installed via windows package managers (#8571)
- feat(desktop): implement session unshare button (#8660)
- refactor(desktop): tweak share button to prevent layout shift (#9322)
- @OpeOginni:
- refactor(desktop): improve layout and styling of session search button (#9251)
- @chawyehsu:
- refactor(installation): update scoop installation method (#9243)
- @liorshk:
- fix(acp): preserve file attachment metadata during session replay (#6342)
- @spoons-and-mirrors:
- feat(hook): command execute before hook (#9267)
- tweak(batch): up restrictive max batch tool from `10` to `25` (#9275)
- @vglafirov:
- fix: update gitlab-ai-provider to 1.3.2 (#9279)
- docs: Improve Gitlab self-hosted instances documentation (#9391)
- @zerone0x:
- fix(tool): treat .fbs files as text instead of images (#9276)
- @alanpog:
- docs: clarify agent tool access and explore vs general distinction (#9300)
- @Hona:
- fix: Windows evaluating text on copy (#9293)
- feat(tui): use mouse for permission buttons (#9305)
- @thmalek:
- fix(opencode): use streamObject when using openai oauth in agent generation (#9231)
- @christso:
- fix(github-copilot): auto-route GPT-5+ models to Responses API (#5877)
- @NateSmyth:
- fix: track reasoning by output_index for copilot compatibility (#9124)
- @kedMertens:
- docs: update codecompanion.nvim acp doc (#9411)
- @paulclou:
- fix(config): rename uv formatter from 'uv format' to 'uv' for config consistency (#9409)
- @jcampuza:
- fix(app): list component jumping when mouse happens to be under the list and keyboard navigating. (#9435)
- fix(opencode): sets input mode based on whether mouse vs keyboard is in use to prevent mouse events firing (#9449)
- @goniz:
- fix(opencode): `cargo fmt` is formatting whole workspace instead of edited file (#9436)
- @R44VC0RP:
- fix(web): rename favicons to v2 for cache busting (#9492)
- @neriousy:
- fix(app): give feedback when trying to paste a unsupported filetype (#9452)
- fix: keyboard nav when mouse hovered over list (#9500)
- fix(app): change keybind for cycling thinking effort (#9508)
- @kearns-cu:
- fix(tui): clarify resume session tip (#9490)