Skip to content

Commit d1b3124

Browse files
merge: upstream/main into dev-build (v0.0.20 + 27 commits)
Brings in upstream changes since d22c6f5: - Claude Opus 4.5 built-in model (pingdotgg#2143) - Claude Opus 4.7 built-in model (pingdotgg#2072) - opencode provider support (pingdotgg#1758) - Claude process leak fix & session reaper (pingdotgg#2042) - Configurable project grouping (pingdotgg#2055) - Node-native TypeScript for desktop/server (pingdotgg#2098) - Clean up invalid pending approval projections (pingdotgg#2106) - Thread status in command palette (pingdotgg#2107) - Backend startup readiness coordination (pingdotgg#2133) - Preserve provider bindings on session stop (pingdotgg#2125) - Allow deleting non-empty projects (pingdotgg#1264) - Various Windows fixes and CI improvements Conflict resolutions: - model.ts: kept claudeAgent opus-4-7 default, added opencode entry - settings.ts: adopted upstream sidebarProjectGroupingMode/Overrides - ClaudeProvider.ts: adopted upstream Opus 4.7 effort config - Sidebar.tsx: adopted upstream project grouping approach - package.json: kept custom desktop-only build filter Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 parents 371f1f8 + a3b1df5 commit d1b3124

249 files changed

Lines changed: 14353 additions & 3243 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/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
jobs:
1010
quality:
1111
name: Format, Lint, Typecheck, Test, Browser Test, Build
12-
runs-on: blacksmith-4vcpu-ubuntu-2404
12+
runs-on: blacksmith-8vcpu-ubuntu-2404
1313
timeout-minutes: 10
1414
steps:
1515
- name: Checkout
@@ -71,12 +71,12 @@ jobs:
7171

7272
- name: Verify preload bundle output
7373
run: |
74-
test -f apps/desktop/dist-electron/preload.js
75-
grep -nE "desktopBridge|getLocalEnvironmentBootstrap|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.js
74+
test -f apps/desktop/dist-electron/preload.cjs
75+
grep -nE "desktopBridge|getLocalEnvironmentBootstrap|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.cjs
7676
7777
release_smoke:
7878
name: Release Smoke
79-
runs-on: ubuntu-24.04
79+
runs-on: blacksmith-8vcpu-ubuntu-2404
8080
timeout-minutes: 10
8181
steps:
8282
- name: Checkout

.github/workflows/release.yml

Lines changed: 121 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
tags:
66
- "v*.*.*"
77
schedule:
8-
- cron: "0 9 * * *"
8+
- cron: "0 */3 * * *"
99
workflow_dispatch:
1010
inputs:
1111
channel:
@@ -26,9 +26,46 @@ permissions:
2626
id-token: write
2727

2828
jobs:
29+
check_changes:
30+
name: Check for changes since last nightly
31+
if: github.event_name == 'schedule'
32+
runs-on: ubuntu-24.04
33+
outputs:
34+
has_changes: ${{ steps.check.outputs.has_changes }}
35+
steps:
36+
- name: Checkout
37+
uses: actions/checkout@v6
38+
with:
39+
fetch-depth: 0
40+
41+
- id: check
42+
name: Compare HEAD to last nightly tag
43+
run: |
44+
last_nightly_tag=$(git tag --list 'nightly-v*' --sort=-creatordate | head -n 1)
45+
if [[ -z "$last_nightly_tag" ]]; then
46+
echo "No previous nightly tag found. Proceeding with release."
47+
echo "has_changes=true" >> "$GITHUB_OUTPUT"
48+
exit 0
49+
fi
50+
51+
last_nightly_sha=$(git rev-parse "$last_nightly_tag^{commit}")
52+
head_sha=$(git rev-parse HEAD)
53+
54+
if [[ "$last_nightly_sha" == "$head_sha" ]]; then
55+
echo "No changes on main since last nightly release ($last_nightly_tag). Skipping."
56+
echo "has_changes=false" >> "$GITHUB_OUTPUT"
57+
else
58+
echo "Changes detected on main since $last_nightly_tag ($last_nightly_sha → $head_sha). Proceeding."
59+
echo "has_changes=true" >> "$GITHUB_OUTPUT"
60+
fi
61+
2962
preflight:
3063
name: Preflight
31-
runs-on: ubuntu-24.04
64+
needs: [check_changes]
65+
if: |
66+
!failure() && !cancelled() &&
67+
(github.event_name != 'schedule' || needs.check_changes.outputs.has_changes == 'true')
68+
runs-on: blacksmith-8vcpu-ubuntu-2404
3269
timeout-minutes: 10
3370
outputs:
3471
release_channel: ${{ steps.release_meta.outputs.release_channel }}
@@ -141,25 +178,30 @@ jobs:
141178
matrix:
142179
include:
143180
- label: macOS arm64
144-
runner: macos-14
181+
runner: blacksmith-12vcpu-macos-26
145182
platform: mac
146183
target: dmg
147184
arch: arm64
148185
- label: macOS x64
149-
runner: macos-15-intel
186+
runner: blacksmith-12vcpu-macos-26
150187
platform: mac
151188
target: dmg
152189
arch: x64
153190
- label: Linux x64
154-
runner: ubuntu-24.04
191+
runner: blacksmith-32vcpu-ubuntu-2404
155192
platform: linux
156193
target: AppImage
157194
arch: x64
158195
- label: Windows x64
159-
runner: windows-2022
196+
runner: blacksmith-32vcpu-windows-2025
160197
platform: win
161198
target: nsis
162199
arch: x64
200+
# - label: Windows arm64
201+
# runner: windows-11-arm
202+
# platform: win
203+
# target: nsis
204+
# arch: arm64
163205
steps:
164206
- name: Checkout
165207
uses: actions/checkout@v6
@@ -183,6 +225,23 @@ jobs:
183225
- name: Align package versions to release version
184226
run: node scripts/update-release-package-versions.ts "${{ needs.preflight.outputs.version }}"
185227

228+
- name: Install Spectre-mitigated MSVC libs
229+
if: matrix.platform == 'win'
230+
shell: pwsh
231+
run: |
232+
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
233+
$installPath = & $vswhere -products * -latest -property installationPath
234+
$setupExe = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\setup.exe"
235+
$proc = Start-Process -FilePath $setupExe `
236+
-ArgumentList "modify", "--installPath", "`"$installPath`"", "--add", `
237+
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64.Spectre", "--quiet", "--norestart" `
238+
-Wait -PassThru -NoNewWindow
239+
if ($null -eq $proc -or $proc.ExitCode -ne 0) {
240+
$code = if ($null -ne $proc) { $proc.ExitCode } else { 1 }
241+
Write-Error "Visual Studio Installer failed with exit code $code"
242+
exit $code
243+
}
244+
186245
- name: Build desktop artifact
187246
shell: bash
188247
env:
@@ -272,6 +331,18 @@ jobs:
272331
done
273332
fi
274333
334+
# Enable if Windows arm64 builds are enabled.
335+
# Windows updater metadata is channel-specific (for example
336+
# "latest.yml" or "nightly.yml"). Suffix each per-arch copy so the
337+
# release job can merge matching arm64/x64 manifests back into one
338+
# canonical manifest per channel.
339+
# if [[ "${{ matrix.platform }}" == "win" ]]; then
340+
# shopt -s nullglob
341+
# for manifest in release-publish/*.yml; do
342+
# mv "$manifest" "${manifest%.yml}-win-${{ matrix.arch }}.yml"
343+
# done
344+
# fi
345+
275346
- name: Upload build artifacts
276347
uses: actions/upload-artifact@v7
277348
with:
@@ -282,7 +353,7 @@ jobs:
282353
publish_cli:
283354
name: Publish CLI to npm
284355
needs: [preflight, build]
285-
runs-on: ubuntu-24.04
356+
runs-on: ubuntu-24.04 # blacksmith-8vcpu-ubuntu-2404
286357
timeout-minutes: 10
287358
steps:
288359
- name: Checkout
@@ -316,19 +387,27 @@ jobs:
316387
release:
317388
name: Publish GitHub Release
318389
needs: [preflight, build, publish_cli]
319-
runs-on: ubuntu-24.04
390+
runs-on: ubuntu-24.04 # blacksmith-8vcpu-ubuntu-2404
320391
timeout-minutes: 10
321392
steps:
322393
- name: Checkout
323394
uses: actions/checkout@v6
324395
with:
325396
ref: ${{ needs.preflight.outputs.ref }}
326397

398+
- name: Setup Bun
399+
uses: oven-sh/setup-bun@v2
400+
with:
401+
bun-version-file: package.json
402+
327403
- name: Setup Node
328404
uses: actions/setup-node@v6
329405
with:
330406
node-version-file: package.json
331407

408+
- name: Install dependencies
409+
run: bun install --frozen-lockfile
410+
332411
- name: Download all desktop artifacts
333412
uses: actions/download-artifact@v8
334413
with:
@@ -342,11 +421,40 @@ jobs:
342421
for x64_manifest in release-assets/*-mac-x64.yml; do
343422
arm64_manifest="${x64_manifest%-x64.yml}.yml"
344423
if [[ -f "$arm64_manifest" ]]; then
345-
node scripts/merge-mac-update-manifests.ts "$arm64_manifest" "$x64_manifest"
424+
node scripts/merge-update-manifests.ts --platform mac "$arm64_manifest" "$x64_manifest"
346425
rm -f "$x64_manifest"
347426
fi
348427
done
349428
429+
# - name: Merge Windows updater manifests
430+
# run: |
431+
# shopt -s nullglob
432+
# found_windows_manifest=false
433+
# for x64_manifest in release-assets/*-win-x64.yml; do
434+
# if [[ "$(basename "$x64_manifest")" == builder-debug-* ]]; then
435+
# continue
436+
# fi
437+
438+
# arm64_manifest="${x64_manifest/-x64.yml/-arm64.yml}"
439+
# output_manifest="${x64_manifest/-win-x64.yml/.yml}"
440+
# if [[ ! -f "$arm64_manifest" ]]; then
441+
# echo "Missing matching arm64 Windows manifest for $x64_manifest" >&2
442+
# exit 1
443+
# fi
444+
445+
# found_windows_manifest=true
446+
# node scripts/merge-update-manifests.ts --platform win \
447+
# "$arm64_manifest" \
448+
# "$x64_manifest" \
449+
# "$output_manifest"
450+
# rm -f "$arm64_manifest" "$x64_manifest"
451+
# done
452+
453+
# if [[ "$found_windows_manifest" != true ]]; then
454+
# echo "No Windows updater manifests found to merge." >&2
455+
# exit 1
456+
# fi
457+
350458
- name: Publish release
351459
if: needs.preflight.outputs.previous_tag != ''
352460
uses: softprops/action-gh-release@v2
@@ -390,7 +498,7 @@ jobs:
390498
name: Finalize release
391499
if: needs.preflight.outputs.release_channel == 'stable'
392500
needs: [preflight, release]
393-
runs-on: ubuntu-24.04
501+
runs-on: blacksmith-8vcpu-ubuntu-2404
394502
timeout-minutes: 10
395503
steps:
396504
- id: app_token
@@ -429,6 +537,9 @@ jobs:
429537
with:
430538
node-version-file: package.json
431539

540+
- name: Install dependencies
541+
run: bun install --frozen-lockfile
542+
432543
- id: update_versions
433544
name: Update version strings
434545
env:

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
AGENTS.md
1+
AGENTS.md

0 commit comments

Comments
 (0)