Skip to content

Conversation

@Brendonovich
Copy link
Collaborator

@Brendonovich Brendonovich commented Dec 4, 2025

Adds @opencode-ai/desktop to @opencode-ai/tauri, with CI setup for building and uploading assets as debug artifacts and as release assets. The Tauri app embeds the opencode binary as a sidecar, and runs it as a child process.
A summary of changes in no particular order:

  • @opencode-ai/desktop is now consumable as a library, exporting both runtime code and config
    • I've given the package it's own /vite export so that any plugins and config can be shared between its consumers' Vite configs
  • Running bun tauri dev in packages/tauri will now performing the following preparation steps:
    • An opencode binary for the specified target will be searched for in packages/opencode/dist/{target}/bin
    • If no binary is found, bun run build --single will be used to build the binary for the current target (this doesn't yet support building a specific target)
    • The binary will be copied into packages/tauri/src-tauri/binaries
  • CI now builds Desktop for x86_64-apple-darwin, aarch64-apple-darwin, x86_64-pc-windows-msvc, and x86_64-unknown-linux-gnu
    • This happens after the CLI release completes
    • packages/tauri/scripts/prepare.ts is used to download the opencode binary for the specified target
    • The updater currently uses OS dialogs for checking for updates on startup, see here for how to have more control over it
    • The updater currently sources updates from GitHub releases, this can be changed to be your own domain or update server
    • The version number from the app is being pulled from packages/tauri/package.json

Pending tasks and questions:

  • tauri-action will require a releaseId to upload assets to, right now I have it set to create a draft release
  • Should the CI flow be redesigned so that release doesn't complete until the desktop app is ready?
  • Generate a public/provide key for the updater
  • macOS Codesigning: Requires APPLE_CERTIFICATE and APPLE_CERTIFICATE_PASSWORD
  • macOS Notarization: Requires APPLE_API_ISSUER, APPLE_API_KEY, and the contents of the corresponding private key

},
"plugins": {
"updater": {
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEQ2MjAwMDFGN0Y2MDdCRDgKUldUWWUyQi9Id0FnMW05Zjk1cGtmSzlyWUM3ZUptWC95OXdFQ1dEKzlmZlhDSnF2NVExU0t4bXAK"
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This needs to be replaced with a public key you guys generate, detailed here


@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/utilities.css" layer(utilities);
@import "tailwindcss/utilities.css" layer(utilities) source("../../../../");
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Without this, tailwind wasn't detecting styles outside of the ui package (docs)

@Brendonovich Brendonovich changed the title Tauri prod OpenCode Desktop app Dec 4, 2025
Comment on lines +154 to +156
releaseDraft: true
tagName: ${{ inputs.version }}
releaseName: ${{ inputs.version }}
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

These should all be replaced by just providing releaseId, which will likely need to be derived from the publish job

@adamdotdevin adamdotdevin marked this pull request as ready for review December 5, 2025 20:39
@adamdotdevin adamdotdevin merged commit cd6bfb3 into anomalyco:dev Dec 5, 2025
4 checks passed
shuv1337 added a commit to Latitudes-Dev/shuvcode that referenced this pull request Dec 5, 2025
* fix: ensure checkUpgrade sets `init:` (anomalyco#5040)

* chore: format code

* ci: use blacksmith runners in review workflow too (anomalyco#5042)

* zen: make session provider sticky

* ci: only maintainer can trigger

* ci: cleaner

* ignore: update download stats 2025-12-04

* fix(tui): cursor color

* Preserve prompt input when creating new session (anomalyco#4993)

* fix: model not being passed correctly to tool

* tweak: bash tool messages regarding timeouts and truncation more clear for agent (anomalyco#5066)

* tui: fix /new slash command being persisted in prompt input

* add optional prompt Input to Github Action (anomalyco#4828)

Co-authored-by: Github Action <action@github.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* bump: builtin plugin versions

* feat: Add SAP AI Core provider support (anomalyco#5023)

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>

* core: ensure model npm package falls back to dev models config when not explicitly defined

* docs: add CodeCompanion.nvim integration instructions (anomalyco#5079)

* tweak: bash tool description re commit stuff

* core: add test for custom model npm package inheritance

* feat(desktop): terminal pane (anomalyco#5081)

Co-authored-by: Github Action <action@github.com>
Co-authored-by: Dax Raad <d@ironbay.co>

* Revert "feat(desktop): terminal pane (anomalyco#5081)"

This reverts commit d763c11.

* release: v1.0.133

* Update Nix flake.lock and hashes

* Reapply "feat(desktop): terminal pane (anomalyco#5081)"

This reverts commit f9dcd97.

* chore: format code

* Update Nix flake.lock and hashes

* zen: fix byok

* ignore: fix provider credentials query for BYOK

Provider credentials field was being selected from ProviderTable even when the table wasn't joined (when byokProvider was undefined). Now the join is conditional - when byokProvider exists, we join and get the credentials; when it doesn't, the join condition is always false so provider remains null.

* docs: llama.cpp docs: `limit` moved under model (anomalyco#5089)

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

* fix: add getModel to SAP AI Core provider for correct SDK initialization (anomalyco#5086)

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>

* fix pty builds

* fix

* increase default scroll speed

* ci: review

* fix: ensure that vcs is still set to git even if no commits in repo

* ignore: rm slop commnand (only for opencode repo this isnt shipping)

* chore: format code

* ignore: cmd tweak

* tui: wrap dialog option descriptions (anomalyco#5083)

* ci: keybinds

* fix: ensure projects that go from having no commits to having commits have sessions migrated (anomalyco#5105)

Co-authored-by: GitHub Action <action@github.com>

* ignore: tweak

* ignore: update download stats 2025-12-05

* Zen: add codex max

* do not use required pty for local dev

* fix: anomalyco#5064 ProviderInitError github-copilot-enterprise (anomalyco#5123)

* feat(theme): Vercel (anomalyco#5119)

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

* fix(desktop): new session not selecting tab

* fix(desktop): clone pty session on reconnect

* add experimental.open_telemetry config option to enable OTEL spans (anomalyco#4978)

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

* ignore: regen sdk

* fix(desktop): prompting

* fix(desktop): terminal cursor position

* feat: add max steps for supervisor and sub-agents (anomalyco#4062)

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

* tweak: bash tool improve output metadata for agent consumption, fix small timeout issue (anomalyco#5131)

* OpenCode Desktop app (anomalyco#5044)

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

* Update Nix flake.lock and hashes

* release: v1.0.134

* sync: record last synced tag v1.0.134

* chore: format code

---------

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
Co-authored-by: YeonGyu-Kim <code.yeon.gyu@gmail.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: wsx99outlook <247713593+wsx99outlook@users.noreply.github.com>
Co-authored-by: Frank <frank@sst.dev>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
Co-authored-by: Daniel Gray <DanielFGray@gmail.com>
Co-authored-by: Shantur Rathore <i@shantur.com>
Co-authored-by: Daniel Polito <danielbpolito@gmail.com>
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
Co-authored-by: Dax Raad <d@ironbay.co>
Co-authored-by: Cason Adams <casonadams@gmail.com>
Co-authored-by: opencode <opencode@sst.dev>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: ry2009 <134240944+ry2009@users.noreply.github.com>
Co-authored-by: Julian Visser <12615757+justmejulian@users.noreply.github.com>
Co-authored-by: Anthony Shew <anthonyshew@gmail.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
Co-authored-by: Noam Bressler <noamzbr@gmail.com>
Co-authored-by: noamzbr <noamzbr@users.noreply.github.com>
Co-authored-by: Nathan Thomas <nwthomas@me.com>
Co-authored-by: Brendan Allan <brendonovich@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants