Skip to content

Commit 9f4c79d

Browse files
committed
chore: merge upstream main and regenerate desktop bindings
2 parents a344410 + 9ad9495 commit 9f4c79d

536 files changed

Lines changed: 76558 additions & 57108 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.

.claude/agents/coderabbit-pr-reviewer.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ After implementing all fixes:
7070

7171
1. **Format Code**
7272
- Rust: `cargo fmt --all`
73-
- TypeScript: `pnpm format`
73+
- TypeScript: `bun run format`
7474

7575
2. **Check Compilation**
7676
- Rust: `cargo check -p affected_crate`
77-
- TypeScript: `pnpm typecheck`
77+
- TypeScript: `bun run typecheck`
7878

7979
3. **Lint Check**
8080
- Rust: `cargo clippy`
81-
- TypeScript: `pnpm lint`
81+
- TypeScript: `bun run lint`
8282

8383
## Critical Rules
8484

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,42 @@
1-
name: Setup JS (pnpm & node)
2-
description: Sets up pnpm & node with dependencies and caching
1+
name: Setup JS (Bun & Node)
2+
description: Sets up Bun 1.4.0 and Node with frozen dependencies and caching
33
runs:
44
using: "composite"
55
steps:
6-
- name: Install pnpm
7-
uses: pnpm/action-setup@v6
8-
with:
9-
run_install: false
10-
11-
- name: Setup node
6+
- name: Setup Node
127
uses: actions/setup-node@v4
138
with:
149
node-version: 20
15-
cache: pnpm
10+
11+
- name: Setup Bun
12+
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
13+
with:
14+
bun-version: 1.4.0
15+
16+
- name: Cache Bun packages
17+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830
18+
with:
19+
path: ${{ runner.temp }}/bun-cache
20+
key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-${{ hashFiles('bun.lock') }}
21+
restore-keys: |
22+
${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-
1623
1724
- name: Install frontend dependencies
1825
shell: bash
26+
env:
27+
BUN_INSTALL_CACHE_DIR: ${{ runner.temp }}/bun-cache
1928
run: |
2029
set -euo pipefail
2130
for attempt in 1 2 3; do
22-
if pnpm install; then
31+
if bun install --frozen-lockfile; then
2332
exit 0
2433
fi
2534
if [[ "$attempt" == "3" ]]; then
2635
exit 1
2736
fi
2837
sleep $((attempt * 30))
2938
done
39+
40+
- name: Verify Bun installation
41+
shell: bash
42+
run: bun run check:bun

.github/workflows/ci.yml

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ jobs:
3434
desktop:
3535
- '.gitattributes'
3636
- '.github/actions/install-desktop-deps/**'
37+
- '.github/actions/setup-js/**'
3738
- '.github/workflows/ci.yml'
3839
- 'apps/cli/**'
3940
- 'apps/desktop/**'
@@ -52,7 +53,9 @@ jobs:
5253
- 'scripts/verify-gpui-release-inputs.mjs'
5354
- 'Cargo.toml'
5455
- 'Cargo.lock'
55-
- 'pnpm-lock.yaml'
56+
- 'bun.lock'
57+
- 'bunfig.toml'
58+
- 'package.json'
5659
rust:
5760
- '.cargo/**'
5861
- '.github/**'
@@ -64,7 +67,9 @@ jobs:
6467
- 'Cargo.lock'
6568
tauri-plugins:
6669
- 'Cargo.lock'
67-
- 'pnpm-lock.yaml'
70+
- 'bun.lock'
71+
- 'scripts/check-tauri-plugin-versions*'
72+
- 'apps/desktop/package.json'
6873
6974
- name: Output branch name
7075
id: branch
@@ -80,10 +85,25 @@ jobs:
8085

8186
- uses: ./.github/actions/setup-js
8287

83-
- run: pnpm web exec next typegen
88+
- run: bun run --cwd apps/web next typegen
89+
90+
- name: Test workspace tooling
91+
run: node --test scripts/bun-scripts.test.mjs scripts/check-tauri-plugin-versions.test.mjs
92+
93+
- name: Test web React compatibility
94+
run: >-
95+
bun run --cwd apps/web test
96+
__tests__/unit/embed-video-playback-chrome.test.ts
97+
__tests__/unit/homepage-demo-accessibility.test.ts
98+
__tests__/unit/linkified-text.test.ts
99+
__tests__/unit/loom-import-ui.test.ts
100+
__tests__/unit/media-player-store-refs.test.ts
101+
__tests__/unit/signed-baa-card.test.ts
102+
__tests__/unit/summary-editor.test.ts
103+
__tests__/unit/sso-login-pages.test.ts
84104
85105
- name: Typecheck
86-
run: pnpm typecheck
106+
run: bun run typecheck
87107

88108
mobile:
89109
name: Mobile
@@ -97,19 +117,19 @@ jobs:
97117
- name: Check Expo dependencies
98118
env:
99119
EXPO_OFFLINE: "1"
100-
run: pnpm --dir apps/mobile exec expo install --check
120+
run: bun run --cwd apps/mobile expo install --check
101121

102122
- name: Run Expo Doctor
103123
env:
104124
EXPO_OFFLINE: "1"
105125
working-directory: apps/mobile
106-
run: pnpm dlx expo-doctor@1.20.1
126+
run: bunx expo-doctor@1.20.1
107127

108128
- name: Typecheck
109-
run: pnpm --dir apps/mobile typecheck
129+
run: bun run --cwd apps/mobile typecheck
110130

111131
- name: Test
112-
run: pnpm --dir apps/mobile test
132+
run: bun run --cwd apps/mobile test
113133

114134
format-biome:
115135
name: Format (Biome)
@@ -271,7 +291,7 @@ jobs:
271291

272292
- name: Run cap-setup
273293
shell: bash
274-
run: pnpm -w cap-setup
294+
run: bun run cap-setup
275295
env:
276296
RUST_TARGET_TRIPLE: ${{ matrix.settings.target }}
277297

@@ -284,7 +304,7 @@ jobs:
284304
shell: bash
285305
run: |
286306
node --test scripts/linux-bundle-config.test.mjs scripts/finalize-linux-appimage.test.mjs
287-
pnpm --dir apps/desktop exec vitest run scripts/prepare.test.js
307+
bun run --cwd apps/desktop vitest run scripts/prepare.test.js
288308
cargo test --locked -p cap-utils -p cap-cli-install --lib
289309
cargo test --locked -p cap --bin cap record::tests
290310
cargo test --locked -p cap-recording --lib -- --test-threads=1
@@ -317,7 +337,7 @@ jobs:
317337
318338
- name: Build app
319339
working-directory: apps/desktop
320-
run: pnpm tauri build --debug --target ${{ matrix.settings.target }} --no-bundle
340+
run: bun run tauri build --debug --target ${{ matrix.settings.target }} --no-bundle
321341
env:
322342
LD_LIBRARY_PATH: ${{ runner.os == 'Linux' && format('{0}/target/native-deps/lib:{0}/target/debug:{0}/target/{1}/debug', github.workspace, matrix.settings.target) || '' }}
323343
RUST_TARGET_TRIPLE: ${{ matrix.settings.target }}
@@ -331,10 +351,7 @@ jobs:
331351
- name: Checkout
332352
uses: actions/checkout@v4
333353

334-
- name: Setup node
335-
uses: actions/setup-node@v3
336-
with:
337-
node-version: 20
354+
- uses: ./.github/actions/setup-js
338355

339356
- name: Run verify
340357
shell: bash

.github/workflows/desktop-release.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ jobs:
301301
302302
- name: Run cap-setup
303303
shell: bash
304-
run: pnpm -w cap-setup
304+
run: bun run cap-setup
305305
env:
306306
RUST_TARGET_TRIPLE: ${{ matrix.settings.target }}
307307
APPLE_SIGNING_IDENTITY: ${{ runner.os == 'macOS' && secrets.APPLE_SIGNING_IDENTITY || '' }}
@@ -348,7 +348,7 @@ jobs:
348348

349349
- name: Build app
350350
working-directory: apps/desktop
351-
run: ${{ runner.os == 'Linux' && 'CARGO_PROFILE_RELEASE_DEBUG=0 node ../../scripts/build-linux-packages.mjs' || runner.os == 'macOS' && hashFiles('scripts/build-macos-packages.mjs') != '' && 'node ../../scripts/build-macos-packages.mjs' || 'pnpm build:tauri --target' }} ${{ matrix.settings.target }} --config src-tauri/tauri.prod.conf.json ${{ runner.os == 'Windows' && '--bundles nsis' || runner.os == 'Linux' && '--verbose' || '' }}
351+
run: ${{ runner.os == 'Linux' && 'CARGO_PROFILE_RELEASE_DEBUG=0 node ../../scripts/build-linux-packages.mjs' || runner.os == 'macOS' && hashFiles('scripts/build-macos-packages.mjs') != '' && 'node ../../scripts/build-macos-packages.mjs' || 'bun run build:tauri --target' }} ${{ matrix.settings.target }} --config src-tauri/tauri.prod.conf.json ${{ runner.os == 'Windows' && '--bundles nsis' || runner.os == 'Linux' && '--verbose' || '' }}
352352
env:
353353
# https://github.com/tauri-apps/tauri-action/issues/740
354354
CI: false
@@ -411,7 +411,7 @@ jobs:
411411
if: ${{ runner.os == 'Windows' }}
412412
working-directory: apps/desktop
413413
shell: bash
414-
run: pnpm tauri bundle --target ${{ matrix.settings.target }} --bundles nsis --config src-tauri/tauri.prod.conf.json
414+
run: bun run tauri bundle --target ${{ matrix.settings.target }} --bundles nsis --config src-tauri/tauri.prod.conf.json
415415
env:
416416
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
417417
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
@@ -792,7 +792,7 @@ jobs:
792792
for exe in "$BUNDLE_DIR"/*.exe; do
793793
echo "Re-signing $(basename "$exe") for Tauri updater..."
794794
rm -f "${exe}.sig"
795-
pnpm tauri signer sign -k "$TAURI_SIGNING_PRIVATE_KEY" -p "$TAURI_SIGNING_PRIVATE_KEY_PASSWORD" "$exe"
795+
bun run tauri signer sign -k "$TAURI_SIGNING_PRIVATE_KEY" -p "$TAURI_SIGNING_PRIVATE_KEY_PASSWORD" "$exe"
796796
if [[ ! -s "${exe}.sig" ]]; then
797797
echo "::error::Windows production updater signature missing for $exe"
798798
exit 1

.github/workflows/docker-build-media-server.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,43 @@ on:
1313
- main
1414
paths:
1515
- "apps/media-server/**"
16+
- "scripts/benchmark-instant-audio.py"
17+
- "scripts/benchmark-audio-intelligibility.py"
18+
- "scripts/test-audio-intelligibility.py"
1619
- ".github/workflows/docker-build-media-server.yml"
1720
pull_request:
1821
paths:
1922
- "apps/media-server/**"
23+
- "scripts/benchmark-instant-audio.py"
24+
- "scripts/benchmark-audio-intelligibility.py"
25+
- "scripts/test-audio-intelligibility.py"
2026
- ".github/workflows/docker-build-media-server.yml"
2127

28+
permissions: {}
29+
2230
concurrency:
2331
group: media-server-${{ github.head_ref || github.ref_name }}-${{ inputs.tag || 'latest' }}
2432
cancel-in-progress: true
2533

2634
jobs:
35+
audio-metrics:
36+
name: Audio intelligibility alignment
37+
runs-on: ubuntu-24.04
38+
timeout-minutes: 5
39+
permissions:
40+
contents: read
41+
steps:
42+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
43+
with:
44+
persist-credentials: false
45+
- name: Verify aligned audio metrics
46+
env:
47+
PYTHONDONTWRITEBYTECODE: "1"
48+
run: |
49+
python3 -m venv "$RUNNER_TEMP/audio-metrics"
50+
"$RUNNER_TEMP/audio-metrics/bin/python" -m pip install --disable-pip-version-check --no-input --only-binary=:all: numpy==2.4.1 scipy==1.18.1 pystoi==0.4.1
51+
"$RUNNER_TEMP/audio-metrics/bin/python" scripts/test-audio-intelligibility.py
52+
2753
build:
2854
name: Build Docker Image (${{ matrix.platform }})
2955
runs-on: ${{ matrix.runner }}
@@ -77,6 +103,13 @@ jobs:
77103
env:
78104
MEDIA_IMAGE: ${{ github.event_name == 'pull_request' && 'cap-media-server:verification' || format('ghcr.io/{0}/cap-media-server@{1}', env.REPOSITORY_OWNER, steps.build.outputs.digest) }}
79105
run: |
106+
docker run --rm --network none --entrypoint bun "$MEDIA_IMAGE" test \
107+
src/__tests__/lib/audio-quality-policy.test.ts \
108+
src/__tests__/lib/audio-quality.integration.test.ts \
109+
src/__tests__/lib/audio-quality-formats.integration.test.ts \
110+
src/__tests__/lib/audio-quality-benchmark.test.ts
111+
docker run --rm --network none --entrypoint bun "$MEDIA_IMAGE" test \
112+
src/__tests__/lib/audio-levels.integration.test.ts
80113
docker run --rm --network none --entrypoint bun "$MEDIA_IMAGE" test \
81114
src/__tests__/lib/recording-verification.integration.test.ts \
82115
src/__tests__/lib/job-manager.test.ts

.github/workflows/publish-chrome-extension.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,21 +67,21 @@ jobs:
6767
done
6868
6969
- name: Typecheck
70-
run: pnpm --filter "@cap/chrome-extension..." typecheck
70+
run: bun run --filter "@cap/chrome-extension..." typecheck
7171

7272
- name: Test
73-
run: pnpm --filter @cap/chrome-extension test
73+
run: bun run --filter @cap/chrome-extension test
7474

7575
- name: Install Playwright browser
7676
if: ${{ inputs.run_e2e }}
77-
run: pnpm --filter @cap/chrome-extension test:e2e:install
77+
run: bun run --filter @cap/chrome-extension test:e2e:install
7878

7979
- name: Test E2E
8080
if: ${{ inputs.run_e2e }}
81-
run: pnpm --filter @cap/chrome-extension test:e2e
81+
run: bun run --filter @cap/chrome-extension test:e2e
8282

8383
- name: Build
84-
run: pnpm --filter @cap/chrome-extension build
84+
run: bun run --filter @cap/chrome-extension build
8585

8686
- name: Package
8787
id: package

.github/workflows/recording-reliability.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
- "packages/database/**"
1010
- "packages/web-*/**"
1111
- "crates/recording/**"
12-
- "pnpm-lock.yaml"
12+
- "bun.lock"
1313
- ".github/workflows/recording-reliability.yml"
1414
push:
1515
branches: [main]
@@ -19,7 +19,7 @@ on:
1919
- "packages/database/**"
2020
- "packages/web-*/**"
2121
- "crates/recording/**"
22-
- "pnpm-lock.yaml"
22+
- "bun.lock"
2323
- ".github/workflows/recording-reliability.yml"
2424

2525
permissions:
@@ -40,11 +40,20 @@ jobs:
4040
- name: Verify recording contracts
4141
working-directory: apps/web
4242
run: |
43-
pnpm exec vitest run \
43+
bun run vitest run \
44+
__tests__/unit/audio-level-publication.test.ts \
45+
__tests__/unit/recording-output.test.ts \
46+
__tests__/unit/recording-storage-lifecycle.test.ts \
4447
__tests__/unit/desktop-recording-*.test.ts \
4548
__tests__/unit/desktop-segments-*.test.ts \
4649
__tests__/unit/finalize-desktop-recording.test.ts \
4750
__tests__/unit/media-server-progress.test.ts \
4851
__tests__/unit/media-processing-budget.test.ts \
4952
__tests__/unit/playback-source.test.ts \
50-
__tests__/unit/upload-progress-playback.test.ts
53+
__tests__/unit/share-page-loading.test.ts \
54+
__tests__/unit/media-player-store-refs.test.ts \
55+
__tests__/unit/video-edit-processing.test.ts \
56+
__tests__/unit/video-edit-published-output.test.ts \
57+
__tests__/unit/upload-progress-playback.test.ts \
58+
__tests__/unit/recording-prepare.test.ts \
59+
__tests__/unit/s3-bucket-connections.test.ts

.github/workflows/sync-tests.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ jobs:
137137
shell: bash
138138
run: |
139139
cargo test --locked -p cap-timestamp -p cap-enc-ffmpeg
140+
cargo test --locked -p cap-camera-effects --lib
140141
cargo test --locked -p cap-recording --lib -- --test-threads=1
141142
# --nocapture so a WARP-adapter notch skip prints instead of
142143
# looking identical to a pass in the CI log.

0 commit comments

Comments
 (0)