Skip to content

fix(win32): use ffi to get around bun raw input/ctrl+c issues#13052

Merged
Hona merged 4 commits intoanomalyco:devfrom
Hona:experiment/windows-ffi-bandaide
Feb 12, 2026
Merged

fix(win32): use ffi to get around bun raw input/ctrl+c issues#13052
Hona merged 4 commits intoanomalyco:devfrom
Hona:experiment/windows-ffi-bandaide

Conversation

@Hona
Copy link
Member

@Hona Hona commented Feb 11, 2026

No description provided.

Copilot AI review requested due to automatic review settings February 11, 2026 02:07
@Hona Hona removed the needs:title label Feb 11, 2026
@github-actions
Copy link
Contributor

Hey! Your PR title experiment: use ffi to get around bun raw input/ctrl+c issues doesn't follow conventional commit format.

Please update it to start with one of:

  • feat: or feat(scope): new feature
  • fix: or fix(scope): bug fix
  • docs: or docs(scope): documentation changes
  • chore: or chore(scope): maintenance tasks
  • refactor: or refactor(scope): code refactoring
  • test: or test(scope): adding or updating tests

Where scope is the package name (e.g., app, desktop, opencode).

See CONTRIBUTING.md for details.

@Hona Hona added the beta label Feb 11, 2026
@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

Found a potentially related PR:

The other PRs found are related to keybinding and input handling but don't appear to be addressing the specific FFI workaround or Ctrl+C raw input issues that PR #13052 is tackling.

@opencode-agent
Copy link
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Windows-specific Bun FFI workaround to prevent CTRL_C_EVENT from killing the shared console process group (notably when running under bun run), by clearing ENABLE_PROCESSED_INPUT, ignoring Ctrl+C at the OS level, and optionally re-enforcing the console mode during the TUI lifecycle.

Changes:

  • Add win32.ts (Bun FFI wrapper around kernel32.dll) to manipulate Windows console mode and Ctrl+C handling.
  • Invoke the Win32 console tweaks very early in CLI startup and again within TUI initialization.
  • Start a polling guard in the TUI app to re-clear ENABLE_PROCESSED_INPUT if opentui/native calls re-enable it.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
packages/opencode/src/index.ts Calls Win32 Ctrl+C mitigations at top-level during CLI startup.
packages/opencode/src/cli/cmd/tui/win32.ts Introduces Bun FFI helpers for Windows console mode/Ctrl+C behavior and a polling enforcement loop.
packages/opencode/src/cli/cmd/tui/thread.ts Disables processed input early in the TUI thread command handler before worker startup.
packages/opencode/src/cli/cmd/tui/app.tsx Re-applies Win32 settings around raw mode toggles and starts the polling enforcement on mount.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 51 to 55
if (process.platform !== "win32") return
if (!process.stdin.isTTY) return
if (!load()) return

k32!.symbols.SetConsoleCtrlHandler(null, 1)
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

win32IgnoreCtrlC() permanently disables Ctrl+C delivery for the process (and there’s no corresponding restore). That can leave users unable to interrupt the program and can also affect shutdown events. Consider adding a restore function (e.g. call SetConsoleCtrlHandler(NULL, FALSE)) and ensuring it runs on cleanup/exit.

Copilot uses AI. Check for mistakes.
Comment on lines 72 to 85
export function win32EnforceCtrlCGuard() {
if (process.platform !== "win32") return
if (!process.stdin.isTTY) return
if (!load()) return

const handle = k32!.symbols.GetStdHandle(STD_INPUT_HANDLE)
const buf = new Uint32Array(1)

setInterval(() => {
if (k32!.symbols.GetConsoleMode(handle, ptr(buf)) === 0) return
const mode = buf[0]!
if ((mode & ENABLE_PROCESSED_INPUT) === 0) return
k32!.symbols.SetConsoleMode(handle, mode & ~ENABLE_PROCESSED_INPUT)
}, 100)
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

win32EnforceCtrlCGuard() starts a polling interval but doesn’t return a handle or provide a way to stop it. Consider returning the interval id (and possibly calling .unref() if supported) so callers can clear it on exit/unmount to avoid leaking timers.

Suggested change
export function win32EnforceCtrlCGuard() {
if (process.platform !== "win32") return
if (!process.stdin.isTTY) return
if (!load()) return
const handle = k32!.symbols.GetStdHandle(STD_INPUT_HANDLE)
const buf = new Uint32Array(1)
setInterval(() => {
if (k32!.symbols.GetConsoleMode(handle, ptr(buf)) === 0) return
const mode = buf[0]!
if ((mode & ENABLE_PROCESSED_INPUT) === 0) return
k32!.symbols.SetConsoleMode(handle, mode & ~ENABLE_PROCESSED_INPUT)
}, 100)
export function win32EnforceCtrlCGuard(): ReturnType<typeof setInterval> | undefined {
if (process.platform !== "win32") return undefined
if (!process.stdin.isTTY) return undefined
if (!load()) return undefined
const handle = k32!.symbols.GetStdHandle(STD_INPUT_HANDLE)
const buf = new Uint32Array(1)
const interval = setInterval(() => {
if (k32!.symbols.GetConsoleMode(handle, ptr(buf)) === 0) return
const mode = buf[0]!
if ((mode & ENABLE_PROCESSED_INPUT) === 0) return
k32!.symbols.SetConsoleMode(handle, mode & ~ENABLE_PROCESSED_INPUT)
}, 100)
// Allow the process to exit naturally even if this interval is active.
;(interval as any)?.unref?.()
return interval

Copilot uses AI. Check for mistakes.
Comment on lines 249 to 253
onMount(() => {
// opentui reconfigures console mode via native calls which re-enable
// ENABLE_PROCESSED_INPUT. Poll and re-clear it so the parent `bun run`
// wrapper isn't killed by CTRL_C_EVENT.
win32EnforceCtrlCGuard()
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

win32EnforceCtrlCGuard() is started on mount but never stopped. If the TUI unmounts/remounts or if tui() is used in a context that doesn’t hard-exit the process, this will accumulate intervals. Consider capturing the interval id and clearing it in an onCleanup/exit handler.

Copilot uses AI. Check for mistakes.
Comment on lines 31 to 38
// Disable Windows CTRL_C_EVENT as early as possible. When running under
// `bun run` (e.g. `bun dev`), the parent bun process shares this console
// and would be killed by the OS before any JS signal handler fires.
win32DisableProcessedInput()
// Belt-and-suspenders: even if something re-enables ENABLE_PROCESSED_INPUT
// later (opentui raw mode, libuv, etc.), ignore the generated event.
win32IgnoreCtrlC()

Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These top-level calls make the entire CLI ignore Ctrl+C on Windows TTYs (via SetConsoleCtrlHandler), which breaks interruption for non-TUI commands like opencode serve (it awaits forever). Consider scoping this to the TUI entrypoints only and/or restoring the previous Ctrl+C behavior on exit so other commands remain stoppable.

Suggested change
// Disable Windows CTRL_C_EVENT as early as possible. When running under
// `bun run` (e.g. `bun dev`), the parent bun process shares this console
// and would be killed by the OS before any JS signal handler fires.
win32DisableProcessedInput()
// Belt-and-suspenders: even if something re-enables ENABLE_PROCESSED_INPUT
// later (opentui raw mode, libuv, etc.), ignore the generated event.
win32IgnoreCtrlC()
// Disable Windows CTRL_C_EVENT as early as possible, but only for TUI
// entrypoints. When running under `bun run` (e.g. `bun dev`), the parent
// bun process shares this console and would be killed by the OS before
// any JS signal handler fires. Restricting this behavior to TUI commands
// avoids breaking Ctrl+C for non-TUI commands like `opencode serve`.
if (process.platform === "win32") {
const argv = hideBin(process.argv)
const cmd = argv[0]
const sub = argv[1]
// TUI entrypoints:
// - `opencode attach`
// - `opencode tui thread`
// - (optional alias) `opencode tui-thread`
const isTuiCommand =
cmd === "attach" ||
(cmd === "tui" && sub === "thread") ||
cmd === "tui-thread"
if (isTuiCommand) {
win32DisableProcessedInput()
// Belt-and-suspenders: even if something re-enables ENABLE_PROCESSED_INPUT
// later (opentui raw mode, libuv, etc.), ignore the generated event.
win32IgnoreCtrlC()
}
}

Copilot uses AI. Check for mistakes.
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 11, 2026
opencode-agent bot added a commit that referenced this pull request Feb 12, 2026
opencode-agent bot added a commit that referenced this pull request Feb 12, 2026
@Hona Hona changed the title experiment: use ffi to get around bun raw input/ctrl+c issues fix: use ffi to get around bun raw input/ctrl+c issues Feb 12, 2026
@github-actions
Copy link
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@Hona Hona changed the title fix: use ffi to get around bun raw input/ctrl+c issues fix(win32): use ffi to get around bun raw input/ctrl+c issues Feb 12, 2026
opencode-agent bot added a commit that referenced this pull request Feb 12, 2026
@rekram1-node
Copy link
Collaborator

lgtm

@Hona Hona merged commit 8f9742d into anomalyco:dev Feb 12, 2026
9 checks passed
TechnicallyAnna pushed a commit to TechnicallyAnna/opencode that referenced this pull request Feb 13, 2026
relaxkeren pushed a commit to relaxkeren/opencode that referenced this pull request Feb 15, 2026
schneiderlo pushed a commit to schneiderlo/opencode that referenced this pull request Feb 17, 2026
randomm added a commit to randomm/opencode that referenced this pull request Feb 17, 2026
…192)

* release: v1.1.55

* fix(docs): locale translations

* fix(app): don't scroll code search input

* chore: generate

* fix(app): don't close sidebar on session change (anomalyco#13013)

* zen: log error

* fix(desktop): open apps with executables on Windows (anomalyco#13022)

* fix(docs): invalid markdown

* fix(app): task tool rendering

* release: v1.1.56

* chore: update website stats

* wip: zen

* fix(docs): locale translations

* wip: zen

* wip: zen

* wip: zen

* wip: zen

* wip: zen

* Update VOUCHED list

anomalyco#12841 (comment)

* fix(tui): improve amazon-bedrock check to include container credentials (anomalyco#13037)

* fix(tui): default session sidebar to auto (anomalyco#13046)

* tweak: /review prompt to look for behavior changes more explicitly (anomalyco#13049)

* fix(core): ensure compaction is more reliable, add reserve token buffer to ensure that input window has enough room to compact (anomalyco#12924)

Co-authored-by: James Lal <james@littlebearlabs.io>

* chore: generate

* docs: remove 'Migrating to 1.0' documentation section (anomalyco#13076)

* wip: zen

* fix: add additional context overflow cases, remove overcorrecting ones (anomalyco#13077)

* feat(desktop): add WSL backend mode (anomalyco#12914)

* fix(desktop): read wayland preference from store (anomalyco#13081)

* fix(desktop): server spawn resilience (anomalyco#13028)

Co-authored-by: Brendan Allan <git@brendonovich.dev>

* fix(docs): avoid footer language selector truncation (anomalyco#13124)

* docs(ko): improve translations for intro, cli, and commands (anomalyco#13094)

* chore: generate

* feat(desktop): enhance Windows app resolution and UI loading states (anomalyco#13084)

* fix: encode non-ASCII directory paths in v1 SDK HTTP headers (anomalyco#13131)

* desktop: use tracing for logging (anomalyco#13135)

* fix(web): prevent language select label truncation (anomalyco#13100)

* fix(app): copy path button styles

* fix(app): terminal copy/paste

* release: v1.1.57

* fix(tui): prevent home wordmark corruption in height-constrained terminals (anomalyco#13069)

* feat(prompt): mode-specific input placeholders (anomalyco#12388)

* fix(tui): keep /share available to copy existing link (anomalyco#12532)

* fix(tui): dismiss dialogs with ctrl+c (anomalyco#12884)

* fix(app): terminal resize

* fix(console): translations

* fix(app): terminal PTY buffer carryover

* fix(app): notifications on child sessions

* Revert "feat(desktop): add WSL backend mode (anomalyco#12914)"

This reverts commit 213a872.

* release: v1.1.58

* fix(app): sidebar remount

* test(app): more e2e tests (anomalyco#13162)

* Fix/reverception (anomalyco#13166)

Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>

* fix(app): translations

* release: v1.1.59

* chore: generate

* fix(app):workspace reset (anomalyco#13170)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* chore: generate

* fix(app): translations

* chore: update docs sync workflow

* add square logo variants to brand page

* feat: adjust read tool so that it can handle dirs too (anomalyco#13090)

* tweak: make read tool offset 1 indexed instead of 0 to avoid confusion that could be caused by line #s being 1 based (anomalyco#13198)

* Update VOUCHED list

anomalyco#13204 (comment)

* tweak: compaction check (anomalyco#13214)

* upgrade opentui to 0.1.79 (anomalyco#13036)

* chore: update nix node_modules hashes

* chore: upgrade bun to 1.3.9 (anomalyco#13223)

* chore: update nix node_modules hashes

* tweak: use promise all for mcp listTools calls (anomalyco#13229)

* docs(ar): second-pass localization cleanup

* fix(docs): locale translations for nav elements and headings

* fix(app): guard randomUUID in insecure browser contexts (anomalyco#13237)

Co-authored-by: Selim <31136147+selimerunkut@users.noreply.github.com>

* feat(opencode): Venice Add automatic variant generation for Venice models (anomalyco#12106)

* feat(tui): add toggle to hide session header (anomalyco#13244)

* Update VOUCHED list

anomalyco#13076 (comment)

* support custom api url per model

* chore: generate

* feat: support claude agent SDK-style structured outputs in the OpenCode SDK  (anomalyco#8161)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Dax Raad <d@ironbay.co>

* chore: generate

* fix(win32): use ffi to get around bun raw input/ctrl+c issues (anomalyco#13052)

* release: v1.1.60

* zen: return cost

* tweak: tool outputs to be more llm friendly (anomalyco#13269)

* desktop: sqlite migration progress bar (anomalyco#13294)

* Testing SignPath Integration (anomalyco#13308)

* ci: move test-sigining policy

* chore: style loading screen

* wip(ui): diff virtualization (anomalyco#12693)

* chore: update nix node_modules hashes

* feat: update to not post comment on workflows when no duplicates found (anomalyco#13238)

* wip: zen

* core: allow model configurations without npm/api provider details

Makes npm and api fields optional in the provider schema so model definitions

can be more flexible when provider package details aren't needed.

* release: v1.1.61

* chore: generate

* wip: zen

* core: expose tool arguments in shell hook for plugin visibility

* chore: refactor packages/app files (anomalyco#13236)

Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Frank <frank@anoma.ly>

* fix(app): more defensive session context metrics

* fix(app): more defensive code component

* zen: minimax m2.5

* wip: zen

* fix(docs): correct `format` attribute in `StructuredOutputs` (anomalyco#13340)

* fix: downgrade bun to 1.3.5 (anomalyco#13347)

* chore: update nix node_modules hashes

* feat(tool): return image attachments from webfetch (anomalyco#13331)

* ignore: document test fixtures for agents

* chore(app): refactor for better solidjs hygiene (anomalyco#13344)

* fix(app): preserve undo history for plain-text paste (anomalyco#13351)

* fix(app): project icons unloading

* release: v1.1.62

* improve codex model list

* release: v1.1.63

* test: add more test cases for project.test.ts (anomalyco#13355)

* fix(app): remote http server connections

* fix(app): suggestion active state broken

* chore: cleanup

* chore: cleanup

* chore: cleanup

* chore: cleanup

* chore: cleanup

* fix(app): normalize oauth error messages

* feat(app): option to turn off sound effects

* fix(app): terminal pty isolation

* docs: update STACKIT provider documentation with typo fix (anomalyco#13357)

Co-authored-by: amankalra172 <aman.kalra@st.ovgu.de>

* chore: generate

* do not open console on error (anomalyco#13374)

* feat: windows selection behavior, manual ctrl+c (anomalyco#13315)

* fix: baseline CPU detection (anomalyco#13371)

* chore: update nix node_modules hashes

* fix: look for recent model in fallback in cli (anomalyco#12582)

* chore: generate

* chore: cleanup flag code (anomalyco#13389)

* fix: token substitution in OPENCODE_CONFIG_CONTENT (anomalyco#13384)

* release: v1.1.64

* fix: resolve ACP hanging indefinitely in thinking state on Windows (anomalyco#13222)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>

* desktop: only show loading window if sqlite migration is necessary

* fix(app): failed to create store

* fix(app): worktree delete

* chore: cleanup

* fix(app): prompt input quirks

* fix(app): notification should navigate to session

* fix(app): emoji as avatar

* cleanup desktop loading page

* feat(app): toggle all provider models

* fix(app): reconnect event stream on disconnect

* ci: remove signpath policy

* feat(hook): add tool.definition hook for plugins to modify tool description and parameters (anomalyco#4956)

* fix: ensure @-ing a dir uses the read tool instead of dead list tool (anomalyco#13428)

* Revert "fix: token substitution in OPENCODE_CONFIG_CONTENT" (anomalyco#13429)

* release: v1.1.65

* feat: update some ai sdk packages and uuse adaptive reasoning for opus 4.6 on vertex/bedrock/anthropic (anomalyco#13439)

* feat(cli): add --dir option to run command (anomalyco#12443)

* chore: update nix node_modules hashes

* fix(desktop): performance optimization for showing large diff & files  (anomalyco#13460)

* fix(web): sync docs locale cookie on alias redirects (anomalyco#13109)

* fix(app): remount SDK/sync tree when server URL changes (anomalyco#13437)

* docs: Fix zh-cn translation mistake in tools.mdx (anomalyco#13407)

* chore: generate

* fix(web): use prompt_async endpoint to avoid timeout over VPN/tunnel (anomalyco#12749)

* fix(app): terminal resize

* chore: cleanup

* docs(ko): polish Korean phrasing in acp, agents, config, and custom-tools docs (anomalyco#13446)

* docs: add pacman installation option for Arch Linux alongside AUR (anomalyco#13293)

* fix(test): move timeout config to CLI flag (anomalyco#13494)

Co-authored-by: 严浩 <h_mini2024@oo1.dev>

* fix: standardize zh-CN docs character set and terminology (anomalyco#13500)

* fix(ui): support cmd-click links in inline code (anomalyco#12552)

* fix: prevent opencode run crash on malformed tool inputs (anomalyco#13051)

Co-authored-by: 0xK3vin <kevin@git-pu.sh>

* sqlite again (anomalyco#10597)

Co-authored-by: Github Action <action@github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>

* chore: generate

* desktop: remote OPENCODE_SQLITE env (anomalyco#13545)

* chore: update nix node_modules hashes

* desktop: fix rust

* release: v1.2.0

* zen: minimax m2.5 & glm5

* fix: tweak websearch tool description date info to avoid cache busts (anomalyco#13559)

* tui: show all project sessions from any working directory

Previously sessions were only listed if they were created in the current
working directory or its subdirectories. Users can now view and switch
to any session in the project regardless of which directory they're in.

* release: v1.2.1

* ci: test-signing signpath policy

* ci: move signpath policy

* bump vertex ai packages (anomalyco#13625)

* fix vercel gateway variants (anomalyco#13541)

Co-authored-by: Benjamin Woodruff <github@benjam.info>"

* chore: update nix node_modules hashes

* core: filter sessions at database level to improve session list loading performance

* core: add comprehensive test coverage for Session.list() filters

Adds test cases for filtering sessions by directory, root sessions only,

start time, search terms, and result limits to ensure the listing

functionality works correctly for all filter combinations.

* release: v1.2.2

* fix: ensure vercel variants pass amazon models under bedrock key (anomalyco#13631)

* chore: bump nixpkgs to get bun 1.3.9 (anomalyco#13302)

* fix: add WAL checkpoint on database open (anomalyco#13633)

* fix: ensure anthropic models on OR also have variant support (anomalyco#13498)

* chore: update nix node_modules hashes

* release: v1.2.3

* fix(app): stack overflow in filetree (anomalyco#13667)

Co-authored-by: adamelmore <2363879+adamdottv@users.noreply.github.com>

* feat(app): clear notifications action (anomalyco#13668)

Co-authored-by: adamelmore <2363879+adamdottv@users.noreply.github.com>

* fix: derive all IDs from file paths during json migration

Earlier migrations moved data to new directories without updating JSON
fields. Now consistently derives all IDs from file paths:

- Projects: id from filename
- Sessions: id from filename, projectID from parent directory
- Messages: id from filename, sessionID from parent directory
- Parts: id from filename, messageID from parent directory

This ensures migrated data matches the actual file layout regardless of
stale values in JSON content.

* test: add tests for path-derived IDs in json migration

Tests verify that file paths are used for IDs even when JSON contains
different values - ensuring robustness against stale JSON content.

* core: add db command for database inspection and querying

* release: v1.2.4

* fix: ensure sqlite migration logs to stderr instead of stdout (anomalyco#13691)

* feat: Add GeistMono Nerd Font to available mono font options (anomalyco#13720)

* fix(desktop): focus window after update/relaunch (anomalyco#13701)

* docs: add Ukrainian README translation (anomalyco#13697)

* fix(app): keybind [shift+tab] (anomalyco#13695)

* fix(app): only navigate prompt history at input boundaries (anomalyco#13690)

* fix(desktop): issue viewing new files opened from the file tree (anomalyco#13689)

* feat(app): localize "free usage exceeded" error & "Add credits" clickable link (anomalyco#13652)

* release: v1.2.5

* feat(opencode): add `cljfmt` formatter support for Clojure files (anomalyco#13426)

* fix(website): correct zh-CN translation of proprietary terms in zen.mdx (anomalyco#13734)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

* chore: generate

* desktop: use process-wrap instead of manual job object (anomalyco#13431)

* feat(opencode): Add Venice support in temperature, topP, topK and smallOption (anomalyco#13553)

* fix(desktop): normalize Linux Wayland/X11 backend and decoration policy (anomalyco#13143)

Co-authored-by: Brendan Allan <brendonovich@outlook.com>

* feat: add openai-compatible endpoint support for google-vertex provider (anomalyco#10303)

Co-authored-by: BlueT - Matthew Lien - 練喆明 <BlueT@BlueT.org>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>

* chore: generate

* fix: google vertex var priority (anomalyco#13816)

* fix(docs): correct critical translation errors in Russian zen page (anomalyco#13830)

* fix(core): remove unnecessary per-message title LLM calls (anomalyco#13804)

* chore: cleanup

* fix (tui): Inaccurate tips (anomalyco#13845)

* fix: bump GitLab provider and auth plugin for mid-session token refresh (anomalyco#13850)

* chore: update nix node_modules hashes

* feat(cli): add --continue and --fork flags to attach command (anomalyco#13879)

* feat(cli): add db migrate command for JSON to SQLite migration (anomalyco#13874)

* ignore: rm random comment on opencode.jsonc

* fix(tui): make use of server dir path for file references in prompts (anomalyco#13781)

* feat(opencode): add `dfmt` formatter support for D language files (anomalyco#13867)

* release: v1.2.6

* feat(cli): add session delete command (anomalyco#13571)

* fix(opencode): ACP sessions never get LLM-generated titles (anomalyco#13095)

* feat(acp): add opt-in flag for question tool (anomalyco#13562)

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>

* tweak: drop ids from attachments in tools, assign them in prompt.ts instead (anomalyco#13890)

* fix(website): fix site in safari 18 (anomalyco#13894)

* ci: fixed apt cache not working in publish.yml (anomalyco#13897)

* ci: use `useblacksmith/stickydisk` on linux runners only (anomalyco#13909)

* core: keep message part order stable when files resolve asynchronously (anomalyco#13915)

* ci: fixed Rust cache for 'cargo install' in publish.yml (anomalyco#13907)

* ci: fixed missing if condition (anomalyco#13934)

* Hide server CLI on windows (anomalyco#13936)

* zen: glm 5 free

* wip: zen

* ci: update triage workflow (anomalyco#13944)

* fix(app): keep Escape handling local to prompt input on macOS desktop (anomalyco#13963)

* docs(ko): improve Korean translation accuracy and clarity in Zen docs (anomalyco#13951)

* docs: improve zh-cn and zh-tw documentation translations (anomalyco#13942)

* fix(docs): correct reversed meaning in Korean plugins logging section (anomalyco#13945)

* chore: generate

* fix(opencode): resolve conflicts from upstream sync

* fix(tool): remove spurious validateDirectory introduced during sync (#191)

---------

Co-authored-by: opencode <opencode@sst.dev>
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Frank <frank@anoma.ly>
Co-authored-by: Filip <34747899+neriousy@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com>
Co-authored-by: Dax <mail@thdxr.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: James Lal <james@littlebearlabs.io>
Co-authored-by: Ariane Emory <97994360+ariane-emory@users.noreply.github.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Co-authored-by: Brendan Allan <git@brendonovich.dev>
Co-authored-by: webwww123 <1876948535@qq.com>
Co-authored-by: Jun <87404676+Seungjun0906@users.noreply.github.com>
Co-authored-by: Jack <740172898@qq.com>
Co-authored-by: Shintaro Jokagi <61367823+taroj1205@users.noreply.github.com>
Co-authored-by: Kit Langton <kit.langton@gmail.com>
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: Sebastian <hasta84@gmail.com>
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
Co-authored-by: Selim <31136147+selimerunkut@users.noreply.github.com>
Co-authored-by: dpuyosa <dpuyosa@users.noreply.github.com>
Co-authored-by: Kyle Mistele <kyle@humanlayer.dev>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Ryan Vogel <ryan@inbound.new>
Co-authored-by: Dylan Fiedler <dtfiedler@users.noreply.github.com>
Co-authored-by: Rasheed <99349713+gitRasheed@users.noreply.github.com>
Co-authored-by: Aman Kalra <49478659+amankalra172@users.noreply.github.com>
Co-authored-by: amankalra172 <aman.kalra@st.ovgu.de>
Co-authored-by: Smit Chaudhary <smitchaudhary10@gmail.com>
Co-authored-by: projectArtur <155688912+ASidorenkoCode@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: Spoon <212802214+spoons-and-mirrors@users.noreply.github.com>
Co-authored-by: Rahul Mishra <blankparticle@gmail.com>
Co-authored-by: Chris Yang <18487241+ysm-dev@users.noreply.github.com>
Co-authored-by: Annopick <veater@qq.com>
Co-authored-by: eytans <eytans@users.noreply.github.com>
Co-authored-by: G36maid <53391375+G36maid@users.noreply.github.com>
Co-authored-by: 严浩 <37316281+yanhao98@users.noreply.github.com>
Co-authored-by: 严浩 <h_mini2024@oo1.dev>
Co-authored-by: Niu Shuai <guisu2010@gmail.com>
Co-authored-by: Kevin <kevin@apthos.net>
Co-authored-by: 0xK3vin <kevin@git-pu.sh>
Co-authored-by: Github Action <action@github.com>
Co-authored-by: Alberto Valverde <alberto@toscat.net>
Co-authored-by: adamelmore <2363879+adamdottv@users.noreply.github.com>
Co-authored-by: Brandon Julio Thenaro <brandon.julio.t@icloud.com>
Co-authored-by: zerone0x <hi@trine.dev>
Co-authored-by: Denys <dector@dector.space>
Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com>
Co-authored-by: Shane Bishop <71288697+shanebishop1@users.noreply.github.com>
Co-authored-by: Alex Yaroshuk <34632190+alexyaroshuk@users.noreply.github.com>
Co-authored-by: Salam Elbilig <finalfantasia@users.noreply.github.com>
Co-authored-by: Pan Kaixin <pan_kaixin@qq.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bnema <brice@briceamen.com>
Co-authored-by: Jhin Lee <leehack@gmail.com>
Co-authored-by: BlueT - Matthew Lien - 練喆明 <BlueT@BlueT.org>
Co-authored-by: Chujiang <110hqc@gmail.com>
Co-authored-by: Rafi Khardalian <rafi@actualyze.ai>
Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com>
Co-authored-by: Robert Schadek <rburners@gmail.com>
Co-authored-by: Zhiyuan Zheng <zhzy0077@hotmail.com>
Co-authored-by: ImmuneFOMO <60671130+ImmuneFOMO@users.noreply.github.com>
Co-authored-by: James Long <longster@gmail.com>
Co-authored-by: Goni Zahavy <goni1993@gmail.com>
Co-authored-by: Ganesh <179367536+itskritix@users.noreply.github.com>
Co-authored-by: vynn <163614291+vynnlee@users.noreply.github.com>
Co-authored-by: chenmi <jack_chenyuana@163.com>
Co-authored-by: Minung Han <hmu332233@gmail.com>
Co-authored-by: Janni Turunen <janni@Jannis-MacBook-Air.local>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants