diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 4c2b63711a81..fe1ec8409b43 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -11,6 +11,14 @@ body:
validations:
required: true
+ - type: input
+ id: plugins
+ attributes:
+ label: Plugins
+ description: What plugins are you using?
+ validations:
+ required: false
+
- type: input
id: opencode-version
attributes:
diff --git a/.github/last-synced-tag b/.github/last-synced-tag
index 0ea756349584..56130fb3a196 100644
--- a/.github/last-synced-tag
+++ b/.github/last-synced-tag
@@ -1 +1 @@
-v1.0.223
+v1.1.1
diff --git a/.github/workflows/duplicate-prs.yml b/.github/workflows/duplicate-prs.yml
new file mode 100644
index 000000000000..54bd9f3efda9
--- /dev/null
+++ b/.github/workflows/duplicate-prs.yml
@@ -0,0 +1,60 @@
+name: Duplicate PR Check
+
+on:
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ check-duplicates:
+ if: |
+ github.event.pull_request.user.login != 'actions-user' &&
+ github.event.pull_request.user.login != 'opencode' &&
+ github.event.pull_request.user.login != 'rekram1-node' &&
+ github.event.pull_request.user.login != 'thdxr' &&
+ github.event.pull_request.user.login != 'kommander' &&
+ github.event.pull_request.user.login != 'jayair' &&
+ github.event.pull_request.user.login != 'fwang' &&
+ github.event.pull_request.user.login != 'adamdotdevin' &&
+ github.event.pull_request.user.login != 'iamdavidhill' &&
+ github.event.pull_request.user.login != 'opencode-agent[bot]'
+ runs-on: blacksmith-4vcpu-ubuntu-2404
+ permissions:
+ contents: read
+ pull-requests: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Setup Bun
+ uses: ./.github/actions/setup-bun
+
+ - name: Install opencode
+ run: curl -fsSL https://opencode.ai/install | bash
+
+ - name: Build prompt
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_NUMBER: ${{ github.event.pull_request.number }}
+ run: |
+ {
+ echo "Check for duplicate PRs related to this new PR:"
+ echo ""
+ echo "Title: $(gh pr view "$PR_NUMBER" --json title --jq .title)"
+ echo ""
+ echo "Description:"
+ gh pr view "$PR_NUMBER" --json body --jq .body
+ } > pr_info.txt
+
+ - name: Check for duplicate PRs
+ env:
+ OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_NUMBER: ${{ github.event.pull_request.number }}
+ run: |
+ COMMENT=$(opencode run --agent duplicate-pr --print -f pr_info.txt "Check the attached file for PR details and search for duplicates")
+
+ gh pr comment "$PR_NUMBER" --body "_The following comment was made by an LLM, it may be inaccurate:_
+
+ $COMMENT"
diff --git a/.github/workflows/nix-desktop.yml b/.github/workflows/nix-desktop.yml
new file mode 100644
index 000000000000..d3e6fbf13deb
--- /dev/null
+++ b/.github/workflows/nix-desktop.yml
@@ -0,0 +1,29 @@
+name: nix desktop
+
+on:
+ pull_request:
+ branches: [dev]
+ workflow_dispatch:
+
+jobs:
+ build-desktop:
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - blacksmith-4vcpu-ubuntu-2404
+ - macos-latest
+ runs-on: ${{ matrix.os }}
+ timeout-minutes: 60
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Setup Nix
+ uses: DeterminateSystems/nix-installer-action@v21
+
+ - name: Build desktop via flake
+ run: |
+ set -euo pipefail
+ nix --version
+ nix build .#desktop -L
diff --git a/.github/workflows/opencode.yml b/.github/workflows/opencode.yml
index 8752ceacff63..646b9c92007d 100644
--- a/.github/workflows/opencode.yml
+++ b/.github/workflows/opencode.yml
@@ -30,18 +30,7 @@ jobs:
if: ${{ !github.event.issue.pull_request && contains(github.event.issue.labels.*.name, 'upstream-sync') }}
run: git checkout integration
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: "22"
-
- - name: Setup Bun
- uses: oven-sh/setup-bun@v2
- with:
- bun-version: 1.3.3
-
- - name: Install dependencies
- run: bun install
+ - uses: ./.github/actions/setup-bun
- name: Run shuvcode
uses: Latitudes-Dev/shuvcode/github@integration
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index b7094793d7c8..ea60a5840be0 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -48,18 +48,6 @@ jobs:
- uses: ./.github/actions/setup-bun
- - name: Setup SSH for AUR
- if: inputs.bump || inputs.version
- run: |
- sudo apt-get update
- sudo apt-get install -y pacman-package-manager
- mkdir -p ~/.ssh
- echo "${{ secrets.AUR_KEY }}" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- git config --global user.email "shuvcode@latitudes.dev"
- git config --global user.name "shuvcode"
- ssh-keyscan -H aur.archlinux.org >> ~/.ssh/known_hosts || true
-
- name: Install OpenCode
if: inputs.bump || inputs.version
run: bun i -g opencode-ai@1.0.169
@@ -84,18 +72,17 @@ jobs:
- name: Setup Git Identity
run: |
- git config --global user.email "opencode@sst.dev"
- git config --global user.name "opencode"
+ git config --global user.email "shuvcode@latitudes.dev"
+ git config --global user.name "shuvcode"
git remote set-url origin https://x-access-token:${{ secrets.SST_GITHUB_TOKEN }}@github.com/${{ github.repository }}
- name: Publish
id: publish
- run: ./script/publish.ts
+ run: ./script/publish-start.ts
env:
OPENCODE_BUMP: ${{ inputs.bump }}
OPENCODE_VERSION: ${{ inputs.version }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
- ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
AUR_KEY: ${{ secrets.AUR_KEY }}
GITHUB_TOKEN: ${{ secrets.SST_GITHUB_TOKEN }}
NPM_CONFIG_PROVENANCE: false
@@ -106,8 +93,9 @@ jobs:
path: packages/opencode/dist
outputs:
- releaseId: ${{ steps.publish.outputs.releaseId }}
- tagName: ${{ steps.publish.outputs.tagName }}
+ release: ${{ steps.publish.outputs.release }}
+ tag: ${{ steps.publish.outputs.tag }}
+ version: ${{ steps.publish.outputs.version }}
publish-tauri:
needs: publish
@@ -131,7 +119,7 @@ jobs:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- ref: ${{ needs.publish.outputs.tagName }}
+ ref: ${{ needs.publish.outputs.tag }}
- uses: apple-actions/import-codesign-certs@v2
if: ${{ runner.os == 'macOS' }}
@@ -178,16 +166,13 @@ jobs:
cd packages/desktop
bun ./scripts/prepare.ts
env:
- OPENCODE_BUMP: ${{ inputs.bump }}
- OPENCODE_VERSION: ${{ inputs.version }}
- OPENCODE_CHANNEL: latest
+ OPENCODE_VERSION: ${{ needs.publish.outputs.version }}
NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.SST_GITHUB_TOKEN }}
AUR_KEY: ${{ secrets.AUR_KEY }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
RUST_TARGET: ${{ matrix.settings.target }}
GH_TOKEN: ${{ github.token }}
- OPENCODE_RELEASE_TAG: ${{ needs.publish.outputs.tagName }}
GITHUB_RUN_ID: ${{ github.run_id }}
# Fixes AppImage build issues, can be removed when https://github.com/tauri-apps/tauri/pull/12491 is released
@@ -218,8 +203,8 @@ jobs:
tauriScript: ${{ (contains(matrix.settings.host, 'ubuntu') && 'cargo tauri') || '' }}
args: --target ${{ matrix.settings.target }} --config ./src-tauri/tauri.prod.conf.json --verbose
updaterJsonPreferNsis: true
- releaseId: ${{ needs.publish.outputs.releaseId }}
- tagName: ${{ needs.publish.outputs.tagName }}
+ releaseId: ${{ needs.publish.outputs.release }}
+ tagName: ${{ needs.publish.outputs.tag }}
releaseAssetNamePattern: opencode-desktop-[platform]-[arch][ext]
releaseDraft: true
@@ -227,14 +212,29 @@ jobs:
needs:
- publish
- publish-tauri
- if: needs.publish.outputs.tagName
+ if: needs.publish.outputs.tag
runs-on: blacksmith-4vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- ref: ${{ needs.publish.outputs.tagName }}
+ ref: ${{ needs.publish.outputs.tag }}
- - run: gh release edit ${{ needs.publish.outputs.tagName }} --draft=false
+ - uses: ./.github/actions/setup-bun
+
+ - name: Setup SSH for AUR
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y pacman-package-manager
+ mkdir -p ~/.ssh
+ echo "${{ secrets.AUR_KEY }}" > ~/.ssh/id_rsa
+ chmod 600 ~/.ssh/id_rsa
+ git config --global user.email "shuvcode@latitudes.dev"
+ git config --global user.name "shuvcode"
+ ssh-keyscan -H aur.archlinux.org >> ~/.ssh/known_hosts || true
+
+ - run: ./script/publish-complete.ts
env:
- GH_TOKEN: ${{ github.token }}
+ OPENCODE_VERSION: ${{ needs.publish.outputs.version }}
+ AUR_KEY: ${{ secrets.AUR_KEY }}
+ GITHUB_TOKEN: ${{ secrets.SST_GITHUB_TOKEN }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index ac1a24fd5147..c39710bee8f3 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -2,11 +2,9 @@ name: test
on:
push:
- branches-ignore:
- - production
+ branches:
+ - dev
pull_request:
- branches-ignore:
- - production
workflow_dispatch:
jobs:
test:
diff --git a/.opencode/agent/duplicate-pr.md b/.opencode/agent/duplicate-pr.md
new file mode 100644
index 000000000000..c053ace5dcb9
--- /dev/null
+++ b/.opencode/agent/duplicate-pr.md
@@ -0,0 +1,24 @@
+---
+mode: primary
+hidden: true
+model: opencode/claude-haiku-4-5
+color: "#E67E22"
+tools:
+ "*": false
+ "github-pr-search": true
+---
+
+You are a duplicate PR detection agent. When a PR is opened, your job is to search for potentially duplicate or related open PRs.
+
+Use the github-pr-search tool to search for PRs that might be addressing the same issue or feature.
+
+Search using keywords from the PR title and description. Try multiple searches with different relevant terms.
+
+If you find potential duplicates:
+
+- List them with their titles and URLs
+- Briefly explain why they might be related
+
+If no duplicates are found, say so clearly.
+
+Keep your response concise and actionable.
diff --git a/.opencode/tool/github-pr-search.ts b/.opencode/tool/github-pr-search.ts
new file mode 100644
index 000000000000..668557e38e4f
--- /dev/null
+++ b/.opencode/tool/github-pr-search.ts
@@ -0,0 +1,52 @@
+///
+ }
+
+ function RawMessage(msgProps: { message: Message }) {
+ return (
+
- }
+ const id = getActiveMessageId(target)
+ if (!id) return
+ if (id === store.messageId) return
- function RawMessage(props: { message: Message }) {
- return (
-