Skip to content

Commit c265e33

Browse files
Merge branch 'main' into codex/unified-invoices
2 parents a0f0864 + b7b6053 commit c265e33

440 files changed

Lines changed: 43156 additions & 3859 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.

‎.config/nextest.toml‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ slow-timeout = { period = "60s" }
1111
filter = 'binary_id(cap-rendering) and test(/^decoder::model::/)'
1212
threads-required = 3
1313

14+
# Wall-clock tests run first and alone. crash_safety hands frames to a
15+
# real-time VideoToolbox session on a 30 fps schedule, and realtime_loop
16+
# counts the frames playback presents against the clock. Sharing the runner
17+
# with the seek storms, chaos and export tests starves them. On macOS,
18+
# crash/equality lost 3 to 7 frames in 6 shared runs and passed in all 6
19+
# solo reruns; realtime30 presented 65% of its frames shared and passed solo.
20+
[[profile.default.overrides]]
21+
filter = '(binary_id(cap-verify::crash) and test(=crash_safety)) or (binary_id(cap-verify::playback) and test(=realtime_loop))'
22+
threads-required = "num-test-threads"
23+
priority = 100
24+
1425
[profile.ci]
1526
# No retries: a flaky case is a bug. run.sh reruns failures once afterwards
1627
# only to label them flaky in the job summary; the job still fails.
@@ -31,6 +42,12 @@ store-failure-output = true
3142
filter = 'binary_id(cap-rendering) and test(/^decoder::model::/)'
3243
threads-required = 3
3344

45+
# Wall-clock tests run first and alone, as in the default profile.
46+
[[profile.ci.overrides]]
47+
filter = '(binary_id(cap-verify::crash) and test(=crash_safety)) or (binary_id(cap-verify::playback) and test(=realtime_loop))'
48+
threads-required = "num-test-threads"
49+
priority = 100
50+
3451

3552
# The FULL-tier seek storms (3000 seeks per decoder) are the slowest tests:
3653
# on the macos-15 runner one storm fixture takes 240 to 570 s per decoder,

‎.github/workflows/ci.yml‎

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jobs:
2424
rust: ${{ steps.filter.outputs.rust }}
2525
gpui: ${{ steps.filter.outputs.rust == 'true' || steps.filter.outputs.gpui == 'true' || steps.desktop-resources.outputs.desktop-resources == 'true' }}
2626
tauri-plugins: ${{ steps.filter.outputs.tauri-plugins }}
27+
gpui-patches: ${{ steps.filter.outputs.gpui-patches }}
2728
steps:
2829
- name: Checkout
2930
uses: actions/checkout@v4
@@ -42,7 +43,7 @@ jobs:
4243
- 'crates/**'
4344
- 'vendor/**'
4445
- 'scripts/diagnostic-build.rs'
45-
- 'scripts/setup.js'
46+
- 'scripts/setup*'
4647
- 'Cargo.toml'
4748
- 'Cargo.lock'
4849
gpui:
@@ -65,6 +66,9 @@ jobs:
6566
- 'scripts/sync-desktop-versions.mjs'
6667
- 'scripts/verify-gpui-release-inputs.mjs'
6768
- 'scripts/verify-windows-stack.mjs'
69+
gpui-patches:
70+
- 'apps/desktop-gpui/patches/**'
71+
- 'scripts/prepare-gpui-dependency.sh'
6872
tauri-plugins:
6973
- 'Cargo.lock'
7074
- 'bun.lock'
@@ -123,6 +127,7 @@ jobs:
123127
__tests__/unit/linkified-text.test.ts
124128
__tests__/unit/loom-import-ui.test.ts
125129
__tests__/unit/media-player-store-refs.test.ts
130+
__tests__/unit/playback-store.test.ts
126131
__tests__/unit/seo-demo-videos.test.ts
127132
__tests__/unit/signed-baa-card.test.ts
128133
__tests__/unit/summary-editor.test.ts
@@ -273,6 +278,9 @@ jobs:
273278
prefix-key: v1-rust-tests
274279
save-cache: ${{ github.ref == 'refs/heads/main' }}
275280

281+
- name: Test native dependency setup
282+
run: node --test scripts/setup.test.mjs
283+
276284
- name: Run setup
277285
run: node scripts/setup.js
278286

@@ -370,6 +378,70 @@ jobs:
370378
fi
371379
cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} -p cap-gpui-kernels
372380
381+
# Cap only builds gpui's crates as dependencies, so their own tests never run
382+
# in the app jobs above. Run the ones covering Cap's patches against real
383+
# devices: Metal on macOS, WARP on Windows, and Mesa's lavapipe (Vulkan) and
384+
# llvmpipe (GL) on Linux. Windows renders with D3D11 and its runners expose
385+
# no wgpu adapter, so wgpu's tests run on macOS and Linux only. Zed's lockfile predates the patches' dependency
386+
# changes, so these builds cannot use --locked.
387+
gpui-patch-tests:
388+
name: GPUI patch tests (${{ matrix.settings.name }})
389+
needs: changes
390+
if: needs.changes.outputs.gpui-patches == 'true'
391+
timeout-minutes: 90
392+
strategy:
393+
fail-fast: false
394+
matrix:
395+
settings:
396+
- name: macOS
397+
runner: blacksmith-6vcpu-macos-15
398+
- name: Windows
399+
runner: blacksmith-8vcpu-windows-2025
400+
- name: Linux
401+
runner: blacksmith-8vcpu-ubuntu-2404
402+
runs-on: ${{ matrix.settings.runner }}
403+
env:
404+
CARGO_PROFILE_DEV_DEBUG: "0"
405+
steps:
406+
- name: Checkout repository
407+
uses: actions/checkout@v4
408+
409+
- name: Install Linux desktop dependencies
410+
if: ${{ runner.os == 'Linux' }}
411+
uses: ./.github/actions/install-desktop-deps
412+
413+
- name: Install software GPU drivers
414+
if: ${{ runner.os == 'Linux' }}
415+
run: sudo apt-get install -y --no-install-recommends mesa-vulkan-drivers libvulkan1 libegl1 libegl-mesa0 libgl1-mesa-dri
416+
417+
- name: Allow long paths in Zed's git dependencies
418+
if: ${{ runner.os == 'Windows' }}
419+
run: git config --global core.longpaths true
420+
421+
- name: Rust setup
422+
uses: dtolnay/rust-toolchain@1.95.0
423+
424+
- name: Prepare GPUI dependency
425+
shell: bash
426+
run: ./scripts/prepare-gpui-dependency.sh
427+
428+
- name: Test GPUI patches
429+
shell: bash
430+
working-directory: ../zed-cap
431+
env:
432+
GPUI_REQUIRE_TEST_DEVICE: "1"
433+
run: |
434+
cargo +1.95.0 test -p gpui --lib stream
435+
if [[ "$RUNNER_OS" == "Linux" ]]; then
436+
WGPU_BACKEND=vulkan cargo +1.95.0 test -p gpui_wgpu --lib wgpu_atlas -- --nocapture
437+
WGPU_BACKEND=gl cargo +1.95.0 test -p gpui_wgpu --lib wgpu_atlas -- --nocapture
438+
elif [[ "$RUNNER_OS" == "macOS" ]]; then
439+
cargo +1.95.0 test -p gpui_wgpu --lib wgpu_atlas -- --nocapture
440+
cargo +1.95.0 test -p gpui_macos --lib -- metal_atlas metal_renderer
441+
else
442+
cargo +1.95.0 test -p gpui_windows --lib directx_atlas
443+
fi
444+
373445
tauri-plugins:
374446
name: Verify Tauri plugin versions
375447
runs-on: blacksmith-8vcpu-ubuntu-2404

‎.github/workflows/opencode.yml‎

Lines changed: 0 additions & 29 deletions
This file was deleted.

‎.github/workflows/perf-budget.yml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ jobs:
2929
- uses: actions/checkout@v4
3030
with:
3131
persist-credentials: false
32+
- name: Test performance report isolation
33+
run: python3 -B scripts/verify/test-perf-ab.py
3234
- name: Scope
3335
id: scope
3436
env:

‎.github/workflows/recording-reliability.yml‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ jobs:
4646
__tests__/unit/recording-storage-lifecycle.test.ts \
4747
__tests__/unit/desktop-recording-*.test.ts \
4848
__tests__/unit/desktop-segments-*.test.ts \
49+
__tests__/unit/segments-audio-download.test.ts \
4950
__tests__/unit/finalize-desktop-recording.test.ts \
5051
__tests__/unit/media-server-progress.test.ts \
5152
__tests__/unit/media-processing-budget.test.ts \
@@ -56,4 +57,7 @@ jobs:
5657
__tests__/unit/video-edit-published-output.test.ts \
5758
__tests__/unit/upload-progress-playback.test.ts \
5859
__tests__/unit/recording-prepare.test.ts \
59-
__tests__/unit/s3-bucket-connections.test.ts
60+
__tests__/unit/s3-bucket-connections.test.ts \
61+
__tests__/unit/media-processing-workflows.test.ts \
62+
__tests__/unit/new-media-comment-thumbnail.test.ts \
63+
__tests__/unit/comment-reply-parent.test.ts

‎.github/workflows/sync-tests.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ jobs:
146146
- name: Timestamp pipeline unit + property tests
147147
shell: bash
148148
run: |
149-
cargo test --locked -p cap-timestamp -p cap-enc-ffmpeg
149+
cargo test --locked -p cap-timestamp -p cap-enc-ffmpeg -p ffmpeg-hw-device
150150
cargo test --locked -p cap-camera-effects --lib
151151
cargo test --locked -p cap-recording --lib -- --test-threads=1
152152
# --nocapture so a WARP-adapter notch skip prints instead of

‎.github/workflows/verify-recording.yml‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,15 @@ jobs:
251251
done
252252
SwitchAudioSource -s "BlackHole 2ch" -t output
253253
SwitchAudioSource -s "BlackHole 2ch" -t input
254+
# macOS 15 plays alert and interface sounds through the default
255+
# output, BlackHole, so ScreenCaptureKit records them as system
256+
# audio and Instant's mixed track and every export carry them over
257+
# the microphone markers. Hosted runners and macOS 26 capture
258+
# silence there; silence these too so every runner records the same.
259+
osascript -e 'set volume alert volume 0' || true
260+
defaults write -g com.apple.sound.uiaudio.enabled -int 0
261+
defaults write -g com.apple.sound.beep.volume -float 0
262+
defaults write -g com.apple.sound.beep.feedback -int 0
254263
echo "outputs:"; SwitchAudioSource -a -t output
255264
echo "default output: $(SwitchAudioSource -c -t output)"
256265

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ outputs
3838
.zed
3939
.output
4040
.vinxi
41+
*.config.timestamp_*.js
4142
native-deps*
4243
.tinyb
4344

‎Cargo.lock‎

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

0 commit comments

Comments
 (0)