Skip to content

Commit b3e9098

Browse files
author
Marcel M.
authored
Merge branch 'dev' into feat/tui-sidebar-config
2 parents d01e304 + 563b4c3 commit b3e9098

120 files changed

Lines changed: 10242 additions & 1181 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/pull_request_template.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### What does this PR do?
2+
3+
### How did you verify your code works?

.github/workflows/nix-desktop.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ on:
99
- "nix/**"
1010
- "packages/app/**"
1111
- "packages/desktop/**"
12+
pull_request:
13+
paths:
14+
- "flake.nix"
15+
- "flake.lock"
16+
- "nix/**"
17+
- "packages/app/**"
18+
- "packages/desktop/**"
1219
workflow_dispatch:
1320

1421
jobs:

.github/workflows/pr-standards.yml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,23 @@ jobs:
7070
}
7171
7272
// Step 1: Check title format
73-
const validPrefixes = ['feat:', 'fix:', 'docs:', 'chore:', 'refactor:', 'test:'];
74-
const hasValidTitle = validPrefixes.some(prefix => title.startsWith(prefix));
73+
// Matches: feat:, feat(scope):, feat (scope):, etc.
74+
const titlePattern = /^(feat|fix|docs|chore|refactor|test)\s*(\([a-zA-Z0-9-]+\))?\s*:/;
75+
const hasValidTitle = titlePattern.test(title);
7576
7677
if (!hasValidTitle) {
7778
await addLabel('needs:title');
7879
await comment('title', `Hey! Your PR title \`${title}\` doesn't follow conventional commit format.
7980
8081
Please update it to start with one of:
81-
- \`feat:\` new feature
82-
- \`fix:\` bug fix
83-
- \`docs:\` documentation changes
84-
- \`chore:\` maintenance tasks
85-
- \`refactor:\` code refactoring
86-
- \`test:\` adding or updating tests
82+
- \`feat:\` or \`feat(scope):\` new feature
83+
- \`fix:\` or \`fix(scope):\` bug fix
84+
- \`docs:\` or \`docs(scope):\` documentation changes
85+
- \`chore:\` or \`chore(scope):\` maintenance tasks
86+
- \`refactor:\` or \`refactor(scope):\` code refactoring
87+
- \`test:\` or \`test(scope):\` adding or updating tests
88+
89+
Where \`scope\` is the package name (e.g., \`app\`, \`desktop\`, \`opencode\`).
8790
8891
See [CONTRIBUTING.md](../blob/dev/CONTRIBUTING.md#pr-titles) for details.`);
8992
return;
@@ -92,7 +95,7 @@ jobs:
9295
await removeLabel('needs:title');
9396
9497
// Step 2: Check for linked issue (skip for docs/refactor PRs)
95-
const skipIssueCheck = title.startsWith('docs:') || title.startsWith('refactor:');
98+
const skipIssueCheck = /^(docs|refactor)\s*(\([a-zA-Z0-9-]+\))?\s*:/.test(title);
9699
if (skipIssueCheck) {
97100
await removeLabel('needs:issue');
98101
console.log('Skipping issue check for docs/refactor PR');

.github/workflows/publish.yml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,22 @@ jobs:
177177
cargo tauri --version
178178
179179
- name: Build and upload artifacts
180-
timeout-minutes: 20
181-
uses: tauri-apps/tauri-action@390cbe447412ced1303d35abe75287949e43437a
180+
uses: Wandalen/wretry.action@v3
181+
timeout-minutes: 60
182+
with:
183+
attempt_limit: 3
184+
attempt_delay: 10000
185+
action: tauri-apps/tauri-action@390cbe447412ced1303d35abe75287949e43437a
186+
with: |
187+
projectPath: packages/desktop
188+
uploadWorkflowArtifacts: true
189+
tauriScript: ${{ (contains(matrix.settings.host, 'ubuntu') && 'cargo tauri') || '' }}
190+
args: --target ${{ matrix.settings.target }} --config ./src-tauri/tauri.prod.conf.json --verbose
191+
updaterJsonPreferNsis: true
192+
releaseId: ${{ needs.publish.outputs.release }}
193+
tagName: ${{ needs.publish.outputs.tag }}
194+
releaseAssetNamePattern: opencode-desktop-[platform]-[arch][ext]
195+
releaseDraft: true
182196
env:
183197
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
184198
TAURI_BUNDLER_NEW_APPIMAGE_FORMAT: true
@@ -190,16 +204,6 @@ jobs:
190204
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
191205
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
192206
APPLE_API_KEY_PATH: ${{ runner.temp }}/apple-api-key.p8
193-
with:
194-
projectPath: packages/desktop
195-
uploadWorkflowArtifacts: true
196-
tauriScript: ${{ (contains(matrix.settings.host, 'ubuntu') && 'cargo tauri') || '' }}
197-
args: --target ${{ matrix.settings.target }} --config ./src-tauri/tauri.prod.conf.json --verbose
198-
updaterJsonPreferNsis: true
199-
releaseId: ${{ needs.publish.outputs.release }}
200-
tagName: ${{ needs.publish.outputs.tag }}
201-
releaseAssetNamePattern: opencode-desktop-[platform]-[arch][ext]
202-
releaseDraft: true
203207

204208
publish-release:
205209
needs:

CONTRIBUTING.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,19 @@ PR titles should follow conventional commit standards:
192192
- `refactor:` code refactoring without changing behavior
193193
- `test:` adding or updating tests
194194

195+
You can optionally include a scope to indicate which package is affected:
196+
197+
- `feat(app):` feature in the app package
198+
- `fix(desktop):` bug fix in the desktop package
199+
- `chore(opencode):` maintenance in the opencode package
200+
195201
Examples:
196202

197203
- `docs: update contributing guidelines`
198204
- `fix: resolve crash on startup`
199205
- `feat: add dark mode support`
206+
- `feat(app): add dark mode support`
207+
- `fix(desktop): resolve crash on startup`
200208
- `chore: bump dependency versions`
201209

202210
### Style Preferences

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ npm i -g opencode-ai@latest # or bun/pnpm/yarn
2929
scoop bucket add extras; scoop install extras/opencode # Windows
3030
choco install opencode # Windows
3131
brew install anomalyco/tap/opencode # macOS and Linux (recommended, always up to date)
32-
brew install opencode # macOS and Linux (official brew formula, updated less frequently)
32+
brew install opencode # macOS and Linux (official brew formula, updated less)
3333
paru -S opencode-bin # Arch Linux
3434
mise use -g opencode # Any OS
3535
nix run nixpkgs#opencode # or github:anomalyco/opencode for latest dev branch

STATS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,4 @@
195195
| 2026-01-06 | 1,960,988 (+222,817) | 1,377,377 (+24,334) | 3,338,365 (+247,151) |
196196
| 2026-01-07 | 2,123,239 (+162,251) | 1,398,648 (+21,271) | 3,521,887 (+183,522) |
197197
| 2026-01-08 | 2,272,630 (+149,391) | 1,432,480 (+33,832) | 3,705,110 (+183,223) |
198+
| 2026-01-09 | 2,443,565 (+170,935) | 1,469,451 (+36,971) | 3,913,016 (+207,906) |

bun.lock

Lines changed: 25 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nix/hashes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"nodeModules": "sha256-rNGq0yjL5ZHYVg+zyV4nFPug4gqhKhyOnfebaufyd34="
2+
"nodeModules": "sha256-+QM5BDFxzrm1HY5ealjCm7jIO1t/rpW1q4GGLViPMmA="
33
}

packages/app/index.html

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,7 @@
1414
<meta property="og:image" content="/social-share.png" />
1515
<meta property="twitter:image" content="/social-share.png" />
1616
<!-- Theme preload script - applies cached theme to avoid FOUC -->
17-
<script id="oc-theme-preload-script">
18-
;(function () {
19-
var themeId = localStorage.getItem("opencode-theme-id")
20-
if (!themeId) return
21-
22-
var scheme = localStorage.getItem("opencode-color-scheme") || "system"
23-
var isDark = scheme === "dark" || (scheme === "system" && matchMedia("(prefers-color-scheme: dark)").matches)
24-
var mode = isDark ? "dark" : "light"
25-
26-
document.documentElement.dataset.theme = themeId
27-
document.documentElement.dataset.colorScheme = mode
28-
29-
if (themeId === "oc-1") return
30-
31-
var css = localStorage.getItem("opencode-theme-css-" + themeId + "-" + mode)
32-
if (css) {
33-
var style = document.createElement("style")
34-
style.id = "oc-theme-preload"
35-
style.textContent =
36-
":root{color-scheme:" +
37-
mode +
38-
";--text-mix-blend-mode:" +
39-
(isDark ? "plus-lighter" : "multiply") +
40-
";" +
41-
css +
42-
"}"
43-
document.head.appendChild(style)
44-
}
45-
})()
46-
</script>
17+
<script id="oc-theme-preload-script" src="/oc-theme-preload.js"></script>
4718
</head>
4819
<body class="antialiased overscroll-none text-12-regular overflow-hidden">
4920
<noscript>You need to enable JavaScript to run this app.</noscript>

0 commit comments

Comments
 (0)