Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
558083c
first pass at electron app
Brendonovich Feb 19, 2026
a84c100
fix router + put dev sidecar in node_modules
Brendonovich Feb 19, 2026
18baa0e
icon work
Brendonovich Feb 19, 2026
dd434b7
deeplinks + dev fixes
Brendonovich Feb 23, 2026
4d73167
add build-electron
Brendonovich Feb 24, 2026
48d59fb
make publish work on forks
Brendonovich Feb 24, 2026
c9f27be
string
Brendonovich Feb 24, 2026
2fbb50a
string 2
Brendonovich Feb 24, 2026
cb30656
remove if
Brendonovich Feb 24, 2026
0657ec5
remove apple api key stuff
Brendonovich Feb 24, 2026
b96d2ec
temp fix version names
Brendonovich Feb 24, 2026
fdcaa9d
windows and linux
Brendonovich Feb 24, 2026
74ebe3c
linux
Brendonovich Feb 24, 2026
63efce8
fix windows
Brendonovich Feb 24, 2026
6ffbddf
remove tauri publish
Brendonovich Mar 2, 2026
14380a5
fix publish
Brendonovich Mar 2, 2026
1747a65
remove committer setup
Brendonovich Mar 2, 2026
e1d9fda
beta
Brendonovich Mar 2, 2026
b256e0a
token
Brendonovich Mar 2, 2026
8c7cf7f
-_-
Brendonovich Mar 2, 2026
74d045d
publish owner
Brendonovich Mar 2, 2026
04df687
finalize
Brendonovich Mar 2, 2026
f0b4425
fix?
Brendonovich Mar 2, 2026
e179dc5
runs-on
Brendonovich Mar 2, 2026
f4fb3de
remove committer
Brendonovich Mar 2, 2026
3d3c3ad
-_-
Brendonovich Mar 2, 2026
25c4730
bring back existing ci
Brendonovich Mar 2, 2026
ab6fc65
ci
Brendonovich Mar 2, 2026
7401689
sign dmg
Brendonovich Mar 2, 2026
2ad39f5
fix
Brendonovich Mar 2, 2026
4122904
opencode-beta
Brendonovich Mar 2, 2026
b750dbb
fix beta
Brendonovich Mar 2, 2026
362bbf5
add updater logs
Brendonovich Mar 3, 2026
207e2a7
icons + config + drag
Brendonovich Mar 3, 2026
b6a344e
fix linux rpm
Brendonovich Mar 3, 2026
3782a7a
fix opencode binar path
Brendonovich Mar 3, 2026
009160d
cleanup publish.yml
Brendonovich Mar 4, 2026
6932bde
more
Brendonovich Mar 4, 2026
de0427b
more
Brendonovich Mar 4, 2026
afc9b27
undo
Brendonovich Mar 4, 2026
34c92b7
Merge branch 'dev' into brendan/desktop-electron
Brendonovich Mar 4, 2026
e8ab90c
use solid router for notification click handlers
Brendonovich Mar 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 126 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ jobs:
with:
name: opencode-cli
path: packages/opencode/dist

outputs:
version: ${{ needs.version.outputs.version }}

Expand Down Expand Up @@ -240,11 +239,130 @@ jobs:
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_API_KEY_PATH: ${{ runner.temp }}/apple-api-key.p8

build-electron:
needs:
- build-cli
- version
continue-on-error: false
strategy:
fail-fast: false
matrix:
settings:
- host: macos-latest
target: x86_64-apple-darwin
platform_flag: --mac --x64
- host: macos-latest
target: aarch64-apple-darwin
platform_flag: --mac --arm64
- host: "blacksmith-4vcpu-windows-2025"
target: x86_64-pc-windows-msvc
platform_flag: --win
- host: "blacksmith-4vcpu-ubuntu-2404"
target: x86_64-unknown-linux-gnu
platform_flag: --linux
- host: "blacksmith-4vcpu-ubuntu-2404"
target: aarch64-unknown-linux-gnu
platform_flag: --linux
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v3

- uses: apple-actions/import-codesign-certs@v2
if: runner.os == 'macOS'
with:
keychain: build
p12-file-base64: ${{ secrets.APPLE_CERTIFICATE }}
p12-password: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}

- name: Setup Apple API Key
if: runner.os == 'macOS'
run: echo "${{ secrets.APPLE_API_KEY_PATH }}" > $RUNNER_TEMP/apple-api-key.p8

- uses: ./.github/actions/setup-bun

- uses: actions/setup-node@v4
with:
node-version: "24"

- name: Cache apt packages
if: contains(matrix.settings.host, 'ubuntu')
uses: actions/cache@v4
with:
path: ~/apt-cache
key: ${{ runner.os }}-${{ matrix.settings.target }}-apt-electron-${{ hashFiles('.github/workflows/publish.yml') }}
restore-keys: |
${{ runner.os }}-${{ matrix.settings.target }}-apt-electron-

- name: Install dependencies (ubuntu only)
if: contains(matrix.settings.host, 'ubuntu')
run: |
mkdir -p ~/apt-cache && chmod -R a+rw ~/apt-cache
sudo apt-get update
sudo apt-get install -y --no-install-recommends -o dir::cache::archives="$HOME/apt-cache" rpm
sudo chmod -R a+rw ~/apt-cache

- name: Setup git committer
id: committer
uses: ./.github/actions/setup-git-committer
with:
opencode-app-id: ${{ vars.OPENCODE_APP_ID }}
opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }}

- name: Prepare
run: bun ./scripts/prepare.ts
working-directory: packages/desktop-electron
env:
OPENCODE_VERSION: ${{ needs.version.outputs.version }}
OPENCODE_CHANNEL: ${{ (github.ref_name == 'beta' && 'beta') || 'prod' }}
RUST_TARGET: ${{ matrix.settings.target }}
GH_TOKEN: ${{ github.token }}
GITHUB_RUN_ID: ${{ github.run_id }}

- name: Build
run: bun run build
working-directory: packages/desktop-electron
env:
OPENCODE_CHANNEL: ${{ (github.ref_name == 'beta' && 'beta') || 'prod' }}

- name: Package and publish
if: needs.version.outputs.release
run: npx electron-builder ${{ matrix.settings.platform_flag }} --publish always --config electron-builder.config.ts
working-directory: packages/desktop-electron
timeout-minutes: 60
env:
OPENCODE_CHANNEL: ${{ (github.ref_name == 'beta' && 'beta') || 'prod' }}
GH_TOKEN: ${{ steps.committer.outputs.token }}
CSC_LINK: ${{ secrets.APPLE_CERTIFICATE }}
CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_API_KEY: ${{ runner.temp }}/apple-api-key.p8
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY }}
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}

- name: Package (no publish)
if: ${{ !needs.version.outputs.release }}
run: npx electron-builder ${{ matrix.settings.platform_flag }} --publish never --config electron-builder.config.ts
working-directory: packages/desktop-electron
timeout-minutes: 60
env:
OPENCODE_CHANNEL: ${{ (github.ref_name == 'beta' && 'beta') || 'prod' }}

- uses: actions/upload-artifact@v4
with:
name: opencode-electron-${{ matrix.settings.target }}
path: packages/desktop-electron/dist/*

- uses: actions/upload-artifact@v4
if: needs.version.outputs.release
with:
name: latest-yml-${{ matrix.settings.target }}
path: packages/desktop-electron/dist/latest*.yml

publish:
needs:
- version
- build-cli
- build-tauri
- build-electron
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -281,6 +399,12 @@ jobs:
name: opencode-cli
path: packages/opencode/dist

- uses: actions/download-artifact@v4
if: needs.version.outputs.release
with:
pattern: latest-yml-*
path: /tmp/latest-yml

- name: Cache apt packages (AUR)
uses: actions/cache@v4
with:
Expand Down Expand Up @@ -308,3 +432,4 @@ jobs:
GITHUB_TOKEN: ${{ steps.committer.outputs.token }}
GH_REPO: ${{ needs.version.outputs.repo }}
NPM_CONFIG_PROVENANCE: false
LATEST_YML_DIR: /tmp/latest-yml
Loading
Loading