Core
- Add required id fields to ephemeral environment details part
- Bump opentui to v0.1.87
- Remove "message" typo from system prompt
- Save permissions without disposing instances
- Add Windows ARM64 build support for CLI and VS Code extension
- Delay paste summary in CLI
- Add bell() utility for terminal attention requests
- Update session prompt configuration
- Fix package.json configuration
- Refactor and fix test
- Avoid mutating stored message when injecting environment details
- Preserve editor context on synthetic summary user messages
- Recompute environment details when user message changes mid-loop
- Cache environment details per turn for prompt caching
- Include ISO 8601 timestamp with timezone in per-message environment details
- Inject environment details ephemerally to avoid stale accumulation across turns
- Remove timezone from editor context prompt options
- Add system prompt instruction about environment details block
- Move dynamic editor context from system prompt to user message
- Refactor Kilo compatibility for version 1.2.21
- Preserve original line endings in edit tool (@ranqn)
- Fix git path resolution for modified files across Git Bash, MSYS2, and Cygwin on Windows (@Hona)
- Fix PTY session handle leak (@kikuchan)
- Sanitize preview database filenames (@Hona)
- Log stack trace when schema validation fails (@jlongster)
- Fix issue with migration (@thdxr)
- Add project git init API (@nexxeln)
- Update Drizzle ORM and improve channel database handling (@thdxr)
- Speed up share loads (@nexxeln)
- Enable auto-accept keybind regardless of permission config (@luisfelipesena)
- Stop leaking fsmonitor daemons causing 60GB+ of committed memory after running tests (@Hona)
- Replace Bun.which with npm which package for better cross-platform compatibility (@thdxr)
- Add GPT-5.4 to Codex allowed models list (@msadiks)
- Replace Bun.stderr and Bun.color with Node.js equivalents (@thdxr)
- Replace Bun.connect with net.createConnection for better compatibility (@thdxr)
- Use SHA1 for hash instead of unsupported xxHash3-XXH64 (@thdxr)
- Replace Bun.hash with Hash.fast using xxhash3-xxh64 (@thdxr)
- Replace Bun.write with Filesystem.write in config files (@thdxr)
- Replace Bun.write/file with Filesystem utilities in snapshot tests (@thdxr)
- Replace Bun.sleep with Node.js timers for better compatibility (@thdxr)
- Handle SIGHUP signal and kill process gracefully (@jlongster)
TUI
- Add prompt history navigation with ArrowUp/ArrowDown in VS Code extension
- Show notifications in ctrl+p menu
- Add notifications toggle to CLI
- Add bell toggle to CLI settings
- Remove terminal bell sound from CLI run command
- Skip input bell sound on route change
- Skip bell sound on session route change
- Skip bell sound in JSON format mode for kilo run command
- Ring bell on task completion in kilo run
- Ring bell on permission and question prompts
- Ring bell when task completes in TUI
- Fix broken /export toggling in TUI (@natewill)
- Restore Bun stdin reads for prompt input (@thdxr)
- Use node:stream/consumers for stdin reading (@thdxr)
- Replace Bun.stdin.text with Node.js stream reading for better compatibility (@thdxr)
- Add onClick handler to InlineTool and Task components in TUI (@thdxr)
- Add options to auth login command to skip interactive questions (@dbpolito)
- Don't let Dax touch the UI (@Hona)
Desktop
- Fixed compatibility issues with OpenCode v1.2.21
- Guard session-header current() against undefined when options is empty (@cyberprophet)
- Preserve file tree tab on reopen and fix E2E test regressions (@neriousy)
- Remove close button from project hover popover in TUI (@iamdavidhill)
- Add support for using agent model/variant when creating new sessions (@adamdotdevin)
- Model selection now persists correctly across sessions (@adamdotdevin)
- All panels transition in app (@adamdotdevin)
- Can't scroll files in app (@adamdotdevin)
- Fix max-width on timeline in app (@adamdotdevin)
- Align session empty states in TUI (@iamdavidhill)
- Add interactive timeline visualization to Agent Manager (@kitlangton)
- Share workspace slug wait helper across e2e specs (@Hona)
- Abort sessions and wait for idle before e2e cleanup (@Hona)
- Show skill issue when snapshotting is disabled in desktop app (@Hona)
- Fix portal positioning for sidebar menus and tooltips by removing conditional mount logic (@iamdavidhill)
- Add end-to-end tests for app (part 67) (@neriousy)
- Sidebar reveal animation, hover peek overlay, and weaker dividers (@iamdavidhill)
- Better review and file tree empty states in the app (@iamdavidhill)
- Enable Safari autocorrect in normal mode, disable in shell mode (@alexandrereyes)
- Add English to locale matchers (@KirillTregubov)
- Fix stale show in app (@neriousy)
- Remove keyboard shortcut tooltips from new session and new workspace buttons in the sidebar (@iamdavidhill)
- Load tab when opening file (@adamdotdevin)
- Fork Ghostty Web terminal emulator for integration (@adamdotdevin)
- Fix stale keyed show errors in app (@adamdotdevin)
- Fix locale error in app (@adamdotdevin)
- Provider settings consistency across the application (@adamdotdevin)
- Preserve question dock state across session switches (@ualtinok)
- Fix icon jiggle animation in app interface (@adamdotdevin)
- Mod+F always opens search in the application (@adamdotdevin)
- Improve error handling and translation in server error formatting (@OpeOginni)
- Improve agent selection logic to correctly pass configured models and variants (@OpeOginni)
- Remove unnecessary macOS entitlements from desktop app (@nexxeln)
- Add deep link support for creating new sessions in desktop app (@Brendonovich)
- Prefer using useLocation instead of window.location in app (@Brendonovich)
SDK
- Update SDK package.json (@thdxr)
Thank you to 30 community contributors:
- @iamdavidhill:
- chore(console): switch /go page to go.* i18n keys
- docs: send Go landing page links to Go docs
- chore(console): edit copy
- chore(console): update copy
- docs: replace Go landing page video with interactive limits graph
- docs: clarify Go models in FAQ answer
- docs: update Go privacy copy for global hosting
- docs: de-link Go testimonials and swap Zen→Go
- docs: localize Go graph and testimonial copy
- docs: make Go hero CTA translatable with pricing emphasis
- tui: reduce excessive spacing in go route layout to improve visual balance
- tui: clarify which models are available in Go subscription
- tui: show Go request limits per 5-hour session
- tweak(ui): remove section
- tweak(ui): darker text
- chore(ui): remove quotes
- docs: redesign Go pricing graph with horizontal bars and inline request labels
- wip: Make bar colors in limit graph customizable via CSS variables for consistent theming across the go route visualization
- tui: clarify free tier includes Big Pickle and promotional requests on Go pricing page
- tui: clearer graph labels and responsive layout for usage visualization
- tui: prevent Go pricing graph from overflowing on medium screens by constraining width and moving axis labels outside SVG for sharper rendering
- tui: remove keyboard shortcut tooltips from new session and new workspace buttons in the sidebar
- fix(app): better review/filetree empty states (#16221)
- feat(app): sidebar reveal animation, hover peek overlay, and weaker dividers (#16374)
- app: fix portal positioning for sidebar menus and tooltips by removing conditional mount logic
- tui: align session empty states (#16412)
- tui: remove close button from project hover popover (#16403)
- @fwang:
- Merge branch 'dev' into go-page
- Merge branch 'go-page' into dev
- wip: zen
- zen: update go page
- zen: gpt5.4
- zen: gpt5.3 codex spark
- zen: gpt 5.4 pro
- @stolinski:
- docs: Add opencode-sentry-monitor to ecosystem documentation (#16037)
- @opencode-agent[bot]:
- docs(i18n): sync locale docs from english changes
- @jlongster:
- fix(core): handle SIGHUP and kill process (#16057)
- fix(core): log stack trace when schema validation fails (#16401)
- @Hona:
- dont let dax touch the ui (#16060)
- fix(git): stop leaking fsmonitor daemons e.g. 60GB+ of commited memory after running tests (#16249)
- fix(opencode): sanitize preview database filenames (#16430)
- feat(desktop): show skill issue when snapshotting is off (#16432)
- fix(windows): git path resolution for modified files across Git Bash, MSYS2, and Cygwin (#16422)
- test(app): abort sessions and wait for idle before e2e cleanup (#16439)
- test(app): share workspace slug wait helper across e2e specs (#16446)
- @dbpolito:
- feat(opencode): Adding options to auth login to skip questions (#14470)
- @Brendonovich:
- app: prefer using useLocation instead of window.location (#15989)
- desktop-electon: handle latest version update check properly
- desktop: new-session deeplink (#15322)
- @nexxeln:
- desktop: remove unnecessary macOS entitlements (#16161)
- share: speed up share loads (#16165)
- feat: add project git init api (#16383)
- @OpeOginni:
- fix(app): improve agent selection logic passing in configured models and variants correctly (#16072)
- refactor(desktop): improve error handling and translation in server error formatting (#16171)
- @adamdotdevin:
- fix(app): no delay on tooltip close
- fix(app): mod+f always opens search
- chore(console): go page i18n
- fix(app): icon jiggle
- fix(app): file icon stability
- fix(app): file path truncation in session turn
- fix(app): provider settings consistency
- fix(app): websearch and codesearch tool rendering
- fix(app): stale read error
- fix(app): locale error
- fix(app): stale keyed show errors
- chore(app): ghostty-web fork
- fix(app): load tab on open file
- Revert "fix(app): stale keyed show errors"
- Revert "fix(app): stale read error"
- fix(app): part type gate
- fix(app): fix max-width on timeline
- fix(app): task agent title
- fix(app): can't scroll files
- fix(app): all panels transition
- fix(app): model sticks to session
- fix(app): new session uses agent model/variant
- @ualtinok:
- fix(app): preserve question dock state across session switches (#16173)
- @thdxr:
- update sdk package.json
- feat(tui): add onClick handler to InlineTool and Task components (#16187)
- refactor: replace Bun.sleep with node timers (#15013)
- refactor: replace Bun.write/file with Filesystem utilities in snapshot
- refactor: replace Bun.write with Filesystem.write in config files
- refactor: replace Bun.hash with Hash.fast using xxhash3-xxh64
- refactor: replace Bun.stdin.text with Node.js stream reading
- refactor: use node:stream/consumers for stdin reading
- fix: use sha1 for hash instead of unsupported xxhash3-xxh64
- refactor: replace Bun.connect with net.createConnection
- refactor: replace Bun.stderr and Bun.color with Node.js equivalents
- refactor(opencode): replace Bun.which with npm which (#15012)
- fix: restore Bun stdin reads for prompt input (#16300)
- chore(storage): update drizzle and channel db handling
- fix issue with migration
- @Seungjun0906:
- fix(console): follow-up for #13108 docs/en routing and locale cookie sync (#13608)
- @neriousy:
- fix(app): stale show (#16236)
- tests(app): e2e tests part 67 (#16406)
- fix(app): preserve file tree tab on reopen + fix e2e test regressions (#16482)
- @msadiks:
- feat: add "gpt-5.4" to codex allowed models list (#16274)
- @luisfelipesena:
- fix(app): enable auto-accept keybind regardless of permission config (#16259)
- @imdzx:
- feat: Add Vietnamese README and update all language navigation links … (#16322)
- @KirillTregubov:
- fix(app): add english to locale matchers (#16280)
- @hoshiumiarata:
- fix(ui): prevent unwanted key events during composition in LineCommentEditor (#16361)
- @alexandrereyes:
- fix(app): enable Safari autocorrect in normal mode, disable in shell mode (#15563)
- @jayair:
- docs: update legal policies for 2026 terms refresh
- @kikuchan:
- fix(pty): pty session handle leak (#15599)
- @ShriKaranHanda:
- fix(config): point GitHub PR search tool at current repository (#16441)
- fix(storybook): restore build by mocking useLocation (#16472)
- @natewill:
- fix(tui): fix broken /export toggling (#16443)
- @ranqn:
- fix(opencode): preserve original line endings in 'edit' tool (#9443)
- @kitlangton:
- STUPID SEXY TIMELINE (#16420)
- @cyberprophet:
- fix(app): guard session-header current() against undefined when options is empty (#16478)
- @Eric-Guo:
- fix(app): text-shimmer undefined length (#16475)
- @Githubguy132010: