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 sst: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:` (sst#5040)

* chore: format code

* ci: use blacksmith runners in review workflow too (sst#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 (sst#4993)

* fix: model not being passed correctly to tool

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

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

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

Co-authored-by: Github Action <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>

* bump: builtin plugin versions

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

Signed-off-by: Jérôme Benoit <[email protected]>

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

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

* tweak: bash tool description re commit stuff

* core: add test for custom model npm package inheritance

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

Co-authored-by: Github Action <[email protected]>
Co-authored-by: Dax Raad <[email protected]>

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

This reverts commit d763c11.

* release: v1.0.133

* Update Nix flake.lock and hashes

* Reapply "feat(desktop): terminal pane (sst#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 (sst#5089)

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

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

Signed-off-by: Jérôme Benoit <[email protected]>

* 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 (sst#5083)

* ci: keybinds

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

Co-authored-by: GitHub Action <[email protected]>

* ignore: tweak

* ignore: update download stats 2025-12-05

* Zen: add codex max

* do not use required pty for local dev

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

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

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

* fix(desktop): new session not selecting tab

* fix(desktop): clone pty session on reconnect

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

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

* ignore: regen sdk

* fix(desktop): prompting

* fix(desktop): terminal cursor position

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

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

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

* OpenCode Desktop app (sst#5044)

Co-authored-by: Adam <[email protected]>

* 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 <[email protected]>
Co-authored-by: YeonGyu-Kim <[email protected]>
Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: wsx99outlook <[email protected]>
Co-authored-by: Frank <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
Co-authored-by: Adam <[email protected]>
Co-authored-by: Daniel Gray <[email protected]>
Co-authored-by: Shantur Rathore <[email protected]>
Co-authored-by: Daniel Polito <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: Jérôme Benoit <[email protected]>
Co-authored-by: Dax Raad <[email protected]>
Co-authored-by: Cason Adams <[email protected]>
Co-authored-by: opencode <[email protected]>
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: ry2009 <[email protected]>
Co-authored-by: Julian Visser <[email protected]>
Co-authored-by: Anthony Shew <[email protected]>
Co-authored-by: rekram1-node <[email protected]>
Co-authored-by: Noam Bressler <[email protected]>
Co-authored-by: noamzbr <[email protected]>
Co-authored-by: Nathan Thomas <[email protected]>
Co-authored-by: Brendan Allan <[email protected]>
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