Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
1b028d0
revert: roll back git-backed review modes (#19295)
nexxeln Mar 26, 2026
1d363fa
chore: generate
opencode-agent[bot] Mar 26, 2026
83ed1c4
tui: bypass local SSE event streaming in worker (#19183)
thdxr Mar 26, 2026
ec20efc
feat: embed WebUI in binary with proxy flags (#19299)
thdxr Mar 26, 2026
54443bf
release: v1.3.3
Mar 26, 2026
9a2482a
chore: generate
opencode-agent[bot] Mar 26, 2026
bcf18ed
changelog ci tweaks
thdxr Mar 26, 2026
c7d2309
refactor(lsp): effectify LSP service with InstanceState (#19150)
kitlangton Mar 26, 2026
17e8f57
chore: generate
opencode-agent[bot] Mar 26, 2026
da1d372
feat: add gpt prompt so non codex gpt models have their own system pr…
rekram1-node Mar 26, 2026
3845044
feat(core): remove workspace server, WorkspaceContext, start work tow…
jlongster Mar 26, 2026
28f5176
effectify Config service (#19139)
kitlangton Mar 26, 2026
9f94bdb
chore: generate
opencode-agent[bot] Mar 26, 2026
1ebc92f
refactor(config): use cachedInvalidateWithTTL, bump effect to beta.37…
kitlangton Mar 26, 2026
2e6ac8f
fix(mcp): close transport on failed/timed-out connections (#19200)
kitlangton Mar 26, 2026
c7760b4
fix(app): more startup perf (#19288)
adamdotdevin Mar 26, 2026
c333e91
chore: generate
opencode-agent[bot] Mar 26, 2026
98a31e3
chore: update nix node_modules hashes
opencode-agent[bot] Mar 26, 2026
b8fb75a
fix(app): don't bundle fonts (#19329)
adamdotdevin Mar 26, 2026
590523d
chore: generate
opencode-agent[bot] Mar 26, 2026
ad3b350
fix(app): default shell tool to collapsed
adamdotdevin Mar 26, 2026
311ba41
fix(app): remove fork session button
adamdotdevin Mar 26, 2026
b7a06e1
fix(ui): reduce markdown jank while responses stream (#19304)
nexxeln Mar 26, 2026
ef7d1f7
fix: web ui bundle build on windows (#19337)
Hona Mar 26, 2026
9c6f1ed
refactor(effect): yield services instead of promise facades (#19325)
kitlangton Mar 27, 2026
b242a8d
chore: generate
opencode-agent[bot] Mar 27, 2026
e96eead
refactor(vcs): replace async git() with ChildProcessSpawner (#19361)
kitlangton Mar 27, 2026
7715252
fix(opencode): ignore generated models snapshot files (#19362)
kitlangton Mar 27, 2026
d341499
fix(ui): keep partial markdown readable while responses stream (#19403)
nexxeln Mar 27, 2026
3fb60d0
chore: update nix node_modules hashes
opencode-agent[bot] Mar 27, 2026
d2bfa92
fix(app): persist queued followups across project switches (#19421)
nexxeln Mar 27, 2026
7b44918
refactor(tool-registry): yield Config/Plugin services, use Effect.for…
kitlangton Mar 27, 2026
d8ad833
chore: generate
opencode-agent[bot] Mar 27, 2026
6274b06
tui plugins (#19347)
kommander Mar 27, 2026
2102333
chore: generate
opencode-agent[bot] Mar 27, 2026
decb5e6
effectify Skill service internals (#19364)
kitlangton Mar 27, 2026
bb8d2cd
chore: update nix node_modules hashes
opencode-agent[bot] Mar 27, 2026
e528ed5
effectify Plugin service internals (#19365)
kitlangton Mar 27, 2026
a76be69
refactor(core): split out instance and route through workspaces (#19335)
jlongster Mar 27, 2026
af2ccc9
chore(app): more spacing controls
adamdotdevin Mar 27, 2026
a93374c
fix(ui): make streamed markdown feel more continuous (#19404)
nexxeln Mar 27, 2026
bdd7829
fix(app): resize layout viewport when mobile keyboard appears (#15841)
BYK Mar 27, 2026
d36b38e
fix(desktop-electron): match dev dock icon inset on macOS (#19429)
kitlangton Mar 27, 2026
e973bbf
fix(app): default file tree to closed with minimum width (#19426)
kitlangton Mar 27, 2026
ff13524
fix flaky plugin tests (no mock.module for bun) (#19445)
kommander Mar 27, 2026
6f5b70e
tweak: add additional overflow error patterns (#19446)
rekram1-node Mar 27, 2026
7a7643c
no theme override in dev (#19456)
kommander Mar 27, 2026
c33d999
feat: AI SDK v6 support (#18433)
rekram1-node Mar 27, 2026
e5f0e81
refactor(session): effectify Session service (#19449)
kitlangton Mar 27, 2026
4b9660b
refactor(core): move more responsibility to workspace routing (#19455)
jlongster Mar 27, 2026
c890990
chore: update nix node_modules hashes
opencode-agent[bot] Mar 27, 2026
5cd54ec
refactor(format): use ChildProcessSpawner instead of Process.spawn (#…
kitlangton Mar 27, 2026
02b19bc
chore: generate
opencode-agent[bot] Mar 27, 2026
f3997d8
Single target plugin entrypoints (#19467)
kommander Mar 27, 2026
2145d97
refactor(session): effectify SessionCompaction service (#19459)
kitlangton Mar 28, 2026
82fc493
feat(ci): use Azure Artifact Signing for Windows releases (#15201)
Hona Mar 28, 2026
f736116
fix(app): more startup efficiency (#19454)
adamdotdevin Mar 28, 2026
43bc555
update effect to 4.0.0-beta.42 (#19484)
kitlangton Mar 28, 2026
48326e8
chore: update nix node_modules hashes
opencode-agent[bot] Mar 28, 2026
15a8c22
tweak: adjust bash tool description to increase cache hit rates betwe…
rekram1-node Mar 28, 2026
8446719
refactor(session): move context into prompt footer (#19486)
thdxr Mar 28, 2026
81eb6e6
refactor(prompt): remove variant cycle display from footer (#19489)
thdxr Mar 28, 2026
41b0d03
feat: add model variant selection dialog (#19488)
thdxr Mar 28, 2026
c3a9ec4
fix: restore subagent footer and fix style guide violations (#19491)
thdxr Mar 28, 2026
6c14ea1
tweak(session): add top spacing and remove obsolete docs prompt
thdxr Mar 28, 2026
cfa5665
fix: prevent stderr bleed on session cancel
sjawhar Mar 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
184 changes: 183 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,15 +98,129 @@ jobs:
- uses: actions/upload-artifact@v4
with:
name: opencode-cli
path: packages/opencode/dist
path: |
packages/opencode/dist/opencode-darwin*
packages/opencode/dist/opencode-linux*

- uses: actions/upload-artifact@v4
with:
name: opencode-cli-windows
path: packages/opencode/dist/opencode-windows*
outputs:
version: ${{ needs.version.outputs.version }}

sign-cli-windows:
needs:
- build-cli
- version
runs-on: blacksmith-4vcpu-windows-2025
if: github.repository == 'anomalyco/opencode'
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TRUSTED_SIGNING_ACCOUNT_NAME: ${{ secrets.AZURE_TRUSTED_SIGNING_ACCOUNT_NAME }}
AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE: ${{ secrets.AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE }}
AZURE_TRUSTED_SIGNING_ENDPOINT: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
steps:
- uses: actions/checkout@v3

- uses: actions/download-artifact@v4
with:
name: opencode-cli-windows
path: packages/opencode/dist

- 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: Azure login
uses: azure/login@v2
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}

- uses: azure/artifact-signing-action@v1
with:
endpoint: ${{ env.AZURE_TRUSTED_SIGNING_ENDPOINT }}
signing-account-name: ${{ env.AZURE_TRUSTED_SIGNING_ACCOUNT_NAME }}
certificate-profile-name: ${{ env.AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE }}
files: |
${{ github.workspace }}\packages\opencode\dist\opencode-windows-arm64\bin\opencode.exe
${{ github.workspace }}\packages\opencode\dist\opencode-windows-x64\bin\opencode.exe
${{ github.workspace }}\packages\opencode\dist\opencode-windows-x64-baseline\bin\opencode.exe
exclude-environment-credential: true
exclude-workload-identity-credential: true
exclude-managed-identity-credential: true
exclude-shared-token-cache-credential: true
exclude-visual-studio-credential: true
exclude-visual-studio-code-credential: true
exclude-azure-cli-credential: false
exclude-azure-powershell-credential: true
exclude-azure-developer-cli-credential: true
exclude-interactive-browser-credential: true

- name: Verify Windows CLI signatures
shell: pwsh
run: |
$files = @(
"${{ github.workspace }}\packages\opencode\dist\opencode-windows-arm64\bin\opencode.exe",
"${{ github.workspace }}\packages\opencode\dist\opencode-windows-x64\bin\opencode.exe",
"${{ github.workspace }}\packages\opencode\dist\opencode-windows-x64-baseline\bin\opencode.exe"
)

foreach ($file in $files) {
$sig = Get-AuthenticodeSignature $file
if ($sig.Status -ne "Valid") {
throw "Invalid signature for ${file}: $($sig.Status)"
}
}

- name: Repack Windows CLI archives
working-directory: packages/opencode/dist
shell: pwsh
run: |
Compress-Archive -Path "opencode-windows-arm64\bin\*" -DestinationPath "opencode-windows-arm64.zip" -Force
Compress-Archive -Path "opencode-windows-x64\bin\*" -DestinationPath "opencode-windows-x64.zip" -Force
Compress-Archive -Path "opencode-windows-x64-baseline\bin\*" -DestinationPath "opencode-windows-x64-baseline.zip" -Force

- name: Upload signed Windows CLI release assets
if: needs.version.outputs.release != ''
shell: pwsh
env:
GH_TOKEN: ${{ steps.committer.outputs.token }}
run: |
gh release upload "v${{ needs.version.outputs.version }}" `
"${{ github.workspace }}\packages\opencode\dist\opencode-windows-arm64.zip" `
"${{ github.workspace }}\packages\opencode\dist\opencode-windows-x64.zip" `
"${{ github.workspace }}\packages\opencode\dist\opencode-windows-x64-baseline.zip" `
--clobber `
--repo "${{ needs.version.outputs.repo }}"

- uses: actions/upload-artifact@v4
with:
name: opencode-cli-signed-windows
path: |
packages/opencode/dist/opencode-windows-arm64
packages/opencode/dist/opencode-windows-x64
packages/opencode/dist/opencode-windows-x64-baseline

build-tauri:
needs:
- build-cli
- version
continue-on-error: false
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TRUSTED_SIGNING_ACCOUNT_NAME: ${{ secrets.AZURE_TRUSTED_SIGNING_ACCOUNT_NAME }}
AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE: ${{ secrets.AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE }}
AZURE_TRUSTED_SIGNING_ENDPOINT: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -152,6 +266,14 @@ jobs:

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

- name: Azure login
if: runner.os == 'Windows'
uses: azure/login@v2
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}

- uses: actions/setup-node@v4
with:
node-version: "24"
Expand Down Expand Up @@ -190,6 +312,7 @@ jobs:
env:
OPENCODE_VERSION: ${{ needs.version.outputs.version }}
GITHUB_TOKEN: ${{ steps.committer.outputs.token }}
OPENCODE_CLI_ARTIFACT: ${{ (runner.os == 'Windows' && 'opencode-cli-windows') || 'opencode-cli' }}
RUST_TARGET: ${{ matrix.settings.target }}
GH_TOKEN: ${{ github.token }}
GITHUB_RUN_ID: ${{ github.run_id }}
Expand Down Expand Up @@ -246,11 +369,34 @@ jobs:
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_API_KEY_PATH: ${{ runner.temp }}/apple-api-key.p8

- name: Verify signed Windows desktop artifacts
if: runner.os == 'Windows'
shell: pwsh
run: |
$files = @(
"${{ github.workspace }}\packages\desktop\src-tauri\sidecars\opencode-cli-${{ matrix.settings.target }}.exe"
)
$files += Get-ChildItem "${{ github.workspace }}\packages\desktop\src-tauri\target\${{ matrix.settings.target }}\release\bundle\nsis\*.exe" | Select-Object -ExpandProperty FullName

foreach ($file in $files) {
$sig = Get-AuthenticodeSignature $file
if ($sig.Status -ne "Valid") {
throw "Invalid signature for ${file}: $($sig.Status)"
}
}

build-electron:
needs:
- build-cli
- version
continue-on-error: false
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
AZURE_TRUSTED_SIGNING_ACCOUNT_NAME: ${{ secrets.AZURE_TRUSTED_SIGNING_ACCOUNT_NAME }}
AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE: ${{ secrets.AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE }}
AZURE_TRUSTED_SIGNING_ENDPOINT: ${{ secrets.AZURE_TRUSTED_SIGNING_ENDPOINT }}
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -292,6 +438,14 @@ jobs:

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

- name: Azure login
if: runner.os == 'Windows'
uses: azure/login@v2
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}

- uses: actions/setup-node@v4
with:
node-version: "24"
Expand Down Expand Up @@ -326,6 +480,7 @@ jobs:
env:
OPENCODE_VERSION: ${{ needs.version.outputs.version }}
OPENCODE_CHANNEL: ${{ (github.ref_name == 'beta' && 'beta') || 'prod' }}
OPENCODE_CLI_ARTIFACT: ${{ (runner.os == 'Windows' && 'opencode-cli-windows') || 'opencode-cli' }}
RUST_TARGET: ${{ matrix.settings.target }}
GH_TOKEN: ${{ github.token }}
GITHUB_RUN_ID: ${{ github.run_id }}
Expand Down Expand Up @@ -358,6 +513,22 @@ jobs:
env:
OPENCODE_CHANNEL: ${{ (github.ref_name == 'beta' && 'beta') || 'prod' }}

- name: Verify signed Windows Electron artifacts
if: runner.os == 'Windows'
shell: pwsh
run: |
$files = @()
$files += Get-ChildItem "${{ github.workspace }}\packages\desktop-electron\dist\*.exe" | Select-Object -ExpandProperty FullName
$files += Get-ChildItem "${{ github.workspace }}\packages\desktop-electron\dist\*unpacked\*.exe" | Select-Object -ExpandProperty FullName
$files += Get-ChildItem "${{ github.workspace }}\packages\desktop-electron\dist\*unpacked\resources\opencode-cli.exe" -ErrorAction SilentlyContinue | Select-Object -ExpandProperty FullName

foreach ($file in $files | Select-Object -Unique) {
$sig = Get-AuthenticodeSignature $file
if ($sig.Status -ne "Valid") {
throw "Invalid signature for ${file}: $($sig.Status)"
}
}

- uses: actions/upload-artifact@v4
with:
name: opencode-electron-${{ matrix.settings.target }}
Expand All @@ -373,6 +544,7 @@ jobs:
needs:
- version
- build-cli
- sign-cli-windows
- build-tauri
- build-electron
runs-on: blacksmith-4vcpu-ubuntu-2404
Expand Down Expand Up @@ -411,6 +583,16 @@ jobs:
name: opencode-cli
path: packages/opencode/dist

- uses: actions/download-artifact@v4
with:
name: opencode-cli-windows
path: packages/opencode/dist

- uses: actions/download-artifact@v4
with:
name: opencode-cli-signed-windows
path: packages/opencode/dist

- uses: actions/download-artifact@v4
if: needs.version.outputs.release
with:
Expand Down
54 changes: 0 additions & 54 deletions .github/workflows/sign-cli.yml

This file was deleted.

34 changes: 0 additions & 34 deletions .opencode/agent/docs.md

This file was deleted.

12 changes: 7 additions & 5 deletions .opencode/command/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ create UPCOMING_CHANGELOG.md
it should have sections

```
# TUI
## TUI

# Desktop
## Desktop

# Core
## Core

# Misc
## Misc
```

go through each PR merged since the last tag
fetch the latest github release for this repository to determine the last release version.

find each PR that was merged since the last release

for each PR spawn a subagent to summarize what the PR was about. focus on user facing changes. if it was entirely internal or code related you can ignore it. also skip docs updates. each subagent should append its summary to UPCOMING_CHANGELOG.md into the appropriate section.
Loading
Loading