Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1012 commits
Select commit Hold shift + click to select a range
e1f29fb
Merge remote-tracking branch 'origin/main' into perf/enc-gif-zero-cop…
Wraient Oct 25, 2026
d0f2d64
fix(web): release Pro seats before the first snapshot read in each re…
richiemcilroy Oct 25, 2026
3a74182
Merge pull request #3113 from Wraient/perf/enc-gif-zero-copy-handoff
richiemcilroy Oct 25, 2026
04a0662
fix(web): keep Backspace working with selected Caps
AksharP5 Oct 25, 2026
6072d58
test(web): use a valid source in the keyboard fixture
AksharP5 Oct 25, 2026
d1f8017
Merge pull request #3151 from AksharP5/mobile-settings-state
richiemcilroy Oct 25, 2026
c6bd30f
fix: cancel extension startup when capture ends
AksharP5 Oct 25, 2026
9bfc197
Merge pull request #3154 from AksharP5/transcript-hour-labels
richiemcilroy Oct 25, 2026
077eeb7
Merge pull request #3156 from AksharP5/voice-playback-recovery
richiemcilroy Oct 25, 2026
808f616
fix: recover interrupted mobile recording completion
AksharP5 Oct 25, 2026
592c717
fix(mobile): make inferred completion recovery consistent
AksharP5 Oct 25, 2026
f68e2c6
test(mobile): fix upload recovery callback types
AksharP5 Oct 25, 2026
2478d79
feat(desktop-gpui): leave a crash record for every way the app can di…
richiemcilroy Oct 25, 2026
217d117
fix(recording): let the preparing preview accept segment start times
patrickballard Oct 25, 2026
f550a39
fix(enc-avfoundation): scale camera frames that change size mid-recor…
richiemcilroy Oct 25, 2026
d76d4e2
fix: correct converted filenames with uppercase extensions
AksharP5 Oct 25, 2026
af9189c
fix(web): keep bulk notification reads in active workspace
AksharP5 Oct 25, 2026
0c2442a
style(web): format converter download tests
AksharP5 Oct 25, 2026
46d14e4
fix(desktop-gpui): turn camera blur off after a crash with blur runni…
richiemcilroy Oct 25, 2026
9e64986
fix(rendering): log uncaptured wgpu errors instead of panicking (#3149)
richiemcilroy Oct 25, 2026
697c409
Merge remote-tracking branch 'origin/main' into fix/pro-seat-toggle
richiemcilroy Oct 25, 2026
39af8d5
fix(camera-effects): keep a missing DirectML from crashing the next b…
richiemcilroy Oct 25, 2026
5c6277d
Merge pull request #3166 from AksharP5/library-text-editing
richiemcilroy Oct 25, 2026
dd73afc
perf(desktop-gpui): keep the edge-column branch out of the thumbnail …
Markgatcha Oct 25, 2026
08a15f2
Merge pull request #3168 from AksharP5/screen-start-cancel
richiemcilroy Oct 25, 2026
c431477
Merge pull request #3170 from AksharP5/mobile-upload-recovery
richiemcilroy Oct 25, 2026
9728139
fix(desktop-gpui): make Wayland recording start and stop on GNOME 50 …
richiemcilroy Oct 25, 2026
1b614d9
Merge pull request #3173 from AksharP5/converter-file-extension
richiemcilroy Oct 25, 2026
08b4466
fix: avoid submitting comments during IME composition
AksharP5 Oct 25, 2026
b1a9769
fix(web): repaint paused timeline after zoom and pan
AksharP5 Oct 25, 2026
3621dd2
fix(cli): include standard error field in Caps JSON failures
AksharP5 Oct 25, 2026
2604e5a
perf(windows-picker): cache process info and speed icon PNG
kyzer1023 Oct 25, 2026
eae05b3
Merge pull request #3175 from AksharP5/notification-unread
richiemcilroy Oct 25, 2026
90cda25
Merge pull request #3171 from patrickballard/fix/preparing-preview-st…
richiemcilroy Oct 25, 2026
7ef6a6c
style(web): format comment composition regression
AksharP5 Oct 25, 2026
2169a6a
Merge pull request #3157 from CapSoftware/fix/pro-seat-toggle
richiemcilroy Oct 25, 2026
80205b2
improve(project): reuse adjacent transition resolution
Oct 25, 2026
879bae4
improve(project): parse small cursor files from bounded slices
Oct 24, 2026
dc9352b
chore: resolve timeline CI conflict with main
AksharP5 Oct 25, 2026
b1511e1
fix(sdk-recorder): release capture before uploading
AksharP5 Oct 25, 2026
6dccdd2
fix(audio): trim overlapping resampler samples
yashranaway Oct 22, 2026
484dfbc
test(project): cover cursor files growing past the buffer limit
Oct 25, 2026
ec15b98
fix(desktop-gpui): show confirmations and alerts on Linux desktops wi…
richiemcilroy Oct 25, 2026
98efad8
style(sdk-recorder): format capture release regression
AksharP5 Oct 25, 2026
98de43c
fix(cli): return current defaults for fresh project configs
AksharP5 Oct 25, 2026
4789b10
improve(audio): validate streams without copying discarded PCM
Oct 24, 2026
1a7bb19
perf(project): reuse cursor ID strings during stabilization
Oct 24, 2026
cdefb49
perf(project): encode keyboard events without a temporary payload
Oct 24, 2026
d5780ff
perf(project): move completed keyboard keys into overlay groups
Oct 24, 2026
dc0eb56
perf(project): borrow caption style overrides during synchronization
Oct 24, 2026
d937565
fix(sdk-recorder): isolate canceled recording stops
AksharP5 Oct 25, 2026
ef4e885
Merge branch 'main' into perf/reuse-adjacent-transition-resolution
richiemcilroy Oct 25, 2026
aa00028
Merge branch 'main' into perf/parse-small-cursor-files-from-slices
richiemcilroy Oct 25, 2026
1b25e56
Merge branch 'main' into perf/thumbnail-box-column
richiemcilroy Oct 25, 2026
900dd82
Merge pull request #3178 from kyzer1023/perf/windows-picker-icons
richiemcilroy Oct 25, 2026
719347b
fix(web): skip notifications for replies to your own comments
yashranaway Oct 25, 2026
d68de6b
Merge pull request #3182 from AksharP5/paused-timeline-window
richiemcilroy Oct 25, 2026
97348d9
fix(web): check file import folder ownership
yashranaway Oct 25, 2026
87ffd7e
perf(web): batch access checks for Caps grid analytics
yashranaway Oct 25, 2026
100f43a
Merge pull request #3183 from AksharP5/caps-json-errors
richiemcilroy Oct 25, 2026
f5bc621
perf(web): join share-page download permission checks
yashranaway Oct 25, 2026
0c3367d
perf(web): avoid rebuilding unchanged transcript rows
yashranaway Oct 25, 2026
09fea65
perf(web): load mobile Caps lists in fewer round trips
yashranaway Oct 25, 2026
6dc1ff9
fix(web): remove shares when deleting a video
yashranaway Oct 25, 2026
8f14e93
perf(gpui): reuse text layouts during long-script input
kartikkabadi Oct 25, 2026
0971794
perf(web): lazy-load the share limit overlay
yashranaway Oct 25, 2026
5f03510
Merge pull request #3184 from AksharP5/comment-ime-input
richiemcilroy Oct 25, 2026
c4616b2
Merge pull request #3189 from yashranaway/fix/resampler-overlap
richiemcilroy Oct 25, 2026
a28e201
Merge pull request #3191 from AksharP5/sdk-capture-release
richiemcilroy Oct 25, 2026
4832500
fix(recording): preserve stereo system audio on Linux
yashranaway Oct 25, 2026
1700cce
fix(recording): exclude unfinished pauses from audio tails
yashranaway Oct 25, 2026
f0f744b
fix(desktop-gpui): keep reopened camera windows on screen
yashranaway Oct 25, 2026
fdc706a
Merge pull request #3196 from vedanth-jadhav/perf/encode-keyboard-wit…
richiemcilroy Oct 25, 2026
186ed14
fix(desktop-gpui): translate appearance options
yashranaway Oct 25, 2026
b49cbbf
improve(audio): skip single-source transcription normalization
Oct 25, 2026
1457c73
Merge pull request #3198 from vedanth-jadhav/perf/borrow-caption-styl…
richiemcilroy Oct 25, 2026
f713872
improve(project): bound ordered caption mapping scans
Oct 25, 2026
69caa30
Merge pull request #3187 from vedanth-jadhav/perf/parse-small-cursor-…
richiemcilroy Oct 25, 2026
f9fb06f
perf(desktop-gpui): virtualize long dropdown menus
kartikkabadi Oct 25, 2026
a6ff011
Merge remote-tracking branch 'origin/main' into fix/pr3193-merge
richiemcilroy Oct 25, 2026
738ff90
fix(editor): register playback retention before starting the worker
Oct 25, 2026
67cb2b9
Merge pull request #3185 from Markgatcha/perf/thumbnail-box-column
richiemcilroy Oct 25, 2026
a05ccfa
Merge pull request #3197 from vedanth-jadhav/perf/move-completed-keyb…
richiemcilroy Oct 25, 2026
e3edebf
Merge pull request #3186 from vedanth-jadhav/perf/reuse-adjacent-tran…
richiemcilroy Oct 25, 2026
a0118dc
Merge pull request #3194 from vedanth-jadhav/perf/validate-audio-with…
richiemcilroy Oct 25, 2026
a4928f6
Merge pull request #3195 from vedanth-jadhav/perf/reuse-cursor-shape-…
richiemcilroy Oct 25, 2026
94a800c
Merge pull request #3193 from AksharP5/project-config-defaults
richiemcilroy Oct 25, 2026
f1e237f
perf(rendering): filter inactive text before sorting
Oct 25, 2026
634548e
perf(audio): fuse single-track stereo mixing and clamping
Oct 25, 2026
76c009f
perf(project): skip caption-track copies without a timeline
Oct 25, 2026
43938fa
perf(rendering): precompute cursor spring for preview and thumbnail
kyzer1023 Oct 25, 2026
70ae90e
perf(media-info): copy trimmed packed audio by frame
Oct 25, 2026
4c35c40
Merge pull request #3199 from yashranaway/fix/web-self-reply-notifica…
richiemcilroy Oct 25, 2026
ba76b45
Merge branch 'main' into perf/gpui-long-script-input
richiemcilroy Oct 25, 2026
5707e96
Merge branch 'main' into perf/gpui-menu-virtualization
richiemcilroy Oct 25, 2026
6393522
Merge pull request #3201 from yashranaway/fix/web-import-folder-access
richiemcilroy Oct 25, 2026
a402818
perf(rendering): reuse software-decode YUV plane buffers
kyzer1023 Oct 25, 2026
9c88810
Merge pull request #3202 from yashranaway/perf/caps-list
richiemcilroy Oct 25, 2026
9a7da8c
Merge pull request #3203 from yashranaway/perf/r7-api-lists
richiemcilroy Oct 25, 2026
e978a78
Merge pull request #3204 from yashranaway/fix/r7-video-details
richiemcilroy Oct 25, 2026
d3c4eb3
Merge pull request #3205 from yashranaway/perf/r7-share-page
richiemcilroy Oct 25, 2026
6efc6f5
Merge pull request #3206 from yashranaway/perf/share-client
richiemcilroy Oct 25, 2026
601a885
Merge pull request #3207 from yashranaway/perf/r7-bundle
richiemcilroy Oct 25, 2026
49e5100
Merge pull request #3213 from vedanth-jadhav/perf/narrow-ordered-capt…
richiemcilroy Oct 25, 2026
79eb5fb
Merge pull request #3215 from vedanth-jadhav/perf/skip-single-source-…
richiemcilroy Oct 25, 2026
623ef7d
perf(linux-screen): cache screenshot swscale context
kyzer1023 Oct 25, 2026
4b77e65
Merge pull request #3219 from vedanth-jadhav/fix/register-playback-re…
richiemcilroy Oct 25, 2026
2a3b2b3
perf(rendering): narrow time mappings for late zoom seeks
Oct 25, 2026
e52d012
Merge pull request #3221 from vedanth-jadhav/perf/filter-inactive-tex…
richiemcilroy Oct 25, 2026
2f7e6b7
Merge pull request #3222 from vedanth-jadhav/perf/fuse-single-stereo-…
richiemcilroy Oct 25, 2026
da545c7
perf(gpui): reuse color preset previews across editor lifetimes
tadhgdowdall Oct 25, 2026
8f6c452
Merge pull request #3224 from vedanth-jadhav/perf/skip-discarded-capt…
richiemcilroy Oct 25, 2026
d23dd5a
improve(audio): reuse pristine denoiser states on first render
Oct 25, 2026
98b1353
improve(audio): sum remaining waveform windows in pairs
Oct 25, 2026
e088090
test(linux-screen): assert cached screenshot conversion changes with …
kyzer1023 Oct 25, 2026
efb8937
Merge pull request #3210 from yashranaway/fix/linux-audio
richiemcilroy Oct 25, 2026
900c287
Merge pull request #3211 from yashranaway/fix/recording-pause-resume
richiemcilroy Oct 25, 2026
6b81bb0
Merge pull request #3212 from yashranaway/fix/camera-window
richiemcilroy Oct 25, 2026
ec4c1c7
Merge pull request #3214 from yashranaway/fix/desktop-i18n
richiemcilroy Oct 25, 2026
2bb5963
Merge pull request #3225 from kyzer1023/perf/cursor-spring-precompute
richiemcilroy Oct 25, 2026
06154a9
Merge pull request #3220 from kartikkabadi/perf/gpui-menu-virtualization
richiemcilroy Oct 25, 2026
a3644e4
ci: run the web unit tests added in #3199 #3201 #3202 #3203 #3206 #3207
richiemcilroy Oct 25, 2026
807f439
Merge pull request #3226 from vedanth-jadhav/perf/copy-trimmed-audio-…
richiemcilroy Oct 25, 2026
aadf416
ci: run cap-media-info unit tests in sync-tests
richiemcilroy Oct 25, 2026
bac4fcf
Merge pull request #3227 from kyzer1023/perf/decode-yuv-plane-reuse
richiemcilroy Oct 25, 2026
0bdebc6
fix(web): record share views under the video's own org and path
richiemcilroy Oct 25, 2026
5315552
Merge pull request #3200 from vedanth-jadhav/perf/avoid-first-voice-s…
richiemcilroy Oct 25, 2026
38ee95a
fix(web): show hours in the Summary tab's chapter timestamps
patrickballard Oct 25, 2026
361b8cc
Merge pull request #3208 from kartikkabadi/perf/gpui-long-script-input
richiemcilroy Oct 25, 2026
d99a8f7
Merge pull request #3231 from kyzer1023/perf/screenshot-swscale-cache
richiemcilroy Oct 25, 2026
21f5eaf
Merge pull request #3232 from vedanth-jadhav/perf/narrow-zoom-timelin…
richiemcilroy Oct 25, 2026
ba571a2
Merge pull request #3209 from vedanth-jadhav/perf/process-waveform-pa…
richiemcilroy Oct 25, 2026
331cfd7
Merge pull request #3233 from tadhgdowdall/perf/share-color-preview-c…
richiemcilroy Oct 25, 2026
0983901
Merge pull request #3237 from CapSoftware/ci/run-media-info-tests
richiemcilroy Oct 25, 2026
7c6102c
fix(desktop-gpui): preserve translucent pixels in mask-only exports
himanshu748 Oct 25, 2026
8b54934
test(web): type the track route mocks without the runtime Effect import
richiemcilroy Oct 25, 2026
08242c3
Merge pull request #3236 from CapSoftware/ci/run-new-web-unit-tests
richiemcilroy Oct 25, 2026
9095aa6
Merge remote-tracking branch 'origin/main' into fix/analytics-track-t…
richiemcilroy Oct 25, 2026
2a747ff
fix(media-server): skip the zero-length closing entry in Loom DASH ti…
richiemcilroy Oct 25, 2026
0e2c0d3
fix(loom-importer): import audio-only Looms and skip a missing Loom s…
richiemcilroy Oct 25, 2026
9186186
fix: process Loom originals with decoder glitches on first view
richiemcilroy Oct 25, 2026
80e3f2b
Merge pull request #3241 from CapSoftware/fix/analytics-track-trust-v…
richiemcilroy Oct 25, 2026
f168c45
fix(loom-importer): stop at the first unskippable missing segment and…
richiemcilroy Oct 25, 2026
73089a7
fix(media-server): fail imported originals whose recovered output is …
richiemcilroy Oct 25, 2026
ca225cc
feat(desktop-gpui): add timeline start and end shortcuts
himanshu748 Oct 25, 2026
13c89da
perf(gpui): index timeline snap targets once per drag
himanshu748 Oct 25, 2026
7ed9c74
Merge pull request #3244 from himanshu748/fix/gpui-mask-only-export-a…
richiemcilroy Oct 25, 2026
c62021c
perf(editor): stream short Studio Sound cuts with bounded history
Oct 25, 2026
ef01676
Merge pull request #3247 from CapSoftware/fix/loom-import-overnight-f…
richiemcilroy Oct 25, 2026
d75acf7
ci: run the media server Loom importer and video input validation tests
richiemcilroy Oct 25, 2026
44c38bf
perf(desktop-gpui): lay out the sidebar's scroll body as a block
patrickballard Oct 25, 2026
85057d0
Merge pull request #3255 from CapSoftware/ci/run-loom-importer-tests
richiemcilroy Oct 25, 2026
45796a0
fix(web): show hours in the share page's chapter list too
patrickballard Oct 25, 2026
9e55b6d
perf(editor): bound parallel imported music decoding
Oct 25, 2026
96444e1
Merge pull request #3252 from himanshu748/perf/gpui-index-drag-snap-t…
richiemcilroy Oct 25, 2026
7cdb2f9
Merge pull request #3253 from himanshu748/feat/gpui-timeline-boundary…
richiemcilroy Oct 25, 2026
4ba6b14
perf(web): import Button from the @cap/ui/button subpath
richiemcilroy Oct 25, 2026
2d33696
perf(web): recompress hero cloud, ray and Linux logo assets
richiemcilroy Oct 25, 2026
85e1b0e
feat(web): rebuild the homepage feature sections
richiemcilroy Oct 25, 2026
9438cd6
Merge pull request #3243 from patrickballard/fix/summary-chapter-hours
richiemcilroy Oct 25, 2026
e1934e8
fix(web): restart showcase clocks between equal-length scenes
richiemcilroy Oct 25, 2026
f392fff
fix(web): add the Rome background swatch thumbnail
richiemcilroy Oct 25, 2026
f90df0e
fix(web): stop showcase fades under reduced motion
richiemcilroy Oct 25, 2026
8cbc1da
fix(web): wrap showcase feature headings in block elements
richiemcilroy Oct 25, 2026
cba6822
refactor(web): drop lint suppressions from homepage demos
richiemcilroy Oct 25, 2026
972043d
chore(web): remove narrating comments from homepage components
richiemcilroy Oct 25, 2026
5be70c8
Merge pull request #3259 from CapSoftware/feat/landing-showcase
richiemcilroy Oct 25, 2026
af5820f
Merge pull request #3254 from vedanth-jadhav/perf/stream-studio-sound…
richiemcilroy Oct 25, 2026
1ec44e5
fix(mobile): reload library after organization switch
AksharP5 Oct 25, 2026
5dbb936
fix: preserve line breaks in activity comments
AksharP5 Oct 25, 2026
91eadd2
perf(audio): mix single mono tracks in one pass
tadhgdowdall Oct 25, 2026
6c4ad26
test: camera size from the first frame and Studio Sound across short …
richiemcilroy Oct 25, 2026
802f5c5
fix(desktop-gpui): play the start cue only once capture is primed (#3…
richiemcilroy Oct 25, 2026
a8e23af
fix(desktop-gpui): movable manual captions, area aspect ratio lock, p…
richiemcilroy Oct 25, 2026
c55248a
fix(desktop-gpui): reveal and open paths through GPUI (#3235)
richiemcilroy Oct 25, 2026
515f418
fix(desktop-gpui): stop logging expected zbus, Wayland window id and …
richiemcilroy Oct 25, 2026
7e3edb9
fix(linux): give the portals an app id when Cap is launched from a te…
richiemcilroy Oct 25, 2026
edaacfa
fix(linux): relaunching Cap brings its window to the front on GNOME W…
richiemcilroy Oct 25, 2026
a5d1fb1
fix(desktop-gpui): keep a reshown Wayland window's present mode so GL…
richiemcilroy Oct 25, 2026
fa35c7a
fix(rendering): fall back to the next GPU adapter when the preferred …
richiemcilroy Oct 25, 2026
7c4395e
fix(desktop): start recording without the cue when its output is stil…
richiemcilroy Oct 25, 2026
08aa56c
perf(desktop-gpui): sync only the sidebar fields the frame draws
PravinMandal Oct 25, 2026
ef4735e
perf(desktop-gpui): filter complete recordings out of the recovery scan
PravinMandal Oct 25, 2026
a3817dd
perf(editor): skip timeline rebuild for model-irrelevant slider edits
PravinMandal Oct 25, 2026
e3ad34f
feat(linux): hardware H264 on AMD and Intel GPUs through VA-API (#3262)
richiemcilroy Oct 25, 2026
3161a06
Merge pull request #3256 from patrickballard/perf/sidebar-scroll-body…
richiemcilroy Oct 25, 2026
23b3d96
perf: reduce background image preview decoding work
tadhgdowdall Oct 25, 2026
5f58dc7
ci: run the summary chapters web test
richiemcilroy Oct 25, 2026
fd0100a
test: tighten background preview regression coverage
tadhgdowdall Oct 25, 2026
21bb7ec
Merge branch 'main' into perf/sync-visible-sidebar-fields
richiemcilroy Oct 25, 2026
700b1bd
Merge pull request #3266 from AksharP5/comment-line-breaks
richiemcilroy Oct 25, 2026
9ca78ae
Merge pull request #3269 from AksharP5/org-library-reload
richiemcilroy Oct 25, 2026
3454e9c
fix: stop logging events for already-closed windows and dropped decod…
richiemcilroy Oct 25, 2026
3045e3b
fix(linux): record with visible controls when there is no tray or Sto…
richiemcilroy Oct 25, 2026
8a4b95c
Merge pull request #3276 from CapSoftware/ci/run-summary-chapters-test
richiemcilroy Oct 25, 2026
14b5759
Merge branch 'main' into perf/imported-music-playback-baseline
richiemcilroy Oct 25, 2026
fd94b53
Merge branch 'main' into perf/lean-recovery-scan
richiemcilroy Oct 25, 2026
ca1ff1a
Merge pull request #3264 from PravinMandal/perf/slider-timeline-rebuild
richiemcilroy Oct 25, 2026
5e9aef4
Merge pull request #3268 from tadhgdowdall/perf/single-mono-audio-mixing
richiemcilroy Oct 25, 2026
ed673e5
perf(rendering): AVX2 the software YUV to RGBA path
kyzer1023 Oct 25, 2026
cb3d339
Merge pull request #3258 from vedanth-jadhav/perf/imported-music-play…
richiemcilroy Oct 25, 2026
eb4e4c4
fix(linux): AppImage screen capture on NixOS, niri DMA-BUF screencast…
richiemcilroy Oct 25, 2026
1ece29d
Merge pull request #3271 from PravinMandal/perf/sync-visible-sidebar-…
richiemcilroy Oct 25, 2026
a91cf46
Merge pull request #3270 from PravinMandal/perf/lean-recovery-scan
richiemcilroy Oct 25, 2026
e1ded27
refactor: move caption word utilities into cap-project (#3274)
Ker102 Oct 25, 2026
39ed1c0
fix(desktop-gpui): stop native traffic lights flashing on the macOS m…
richiemcilroy Oct 25, 2026
d6f5d16
fix(rendering): gate YUV span helpers to x86
kyzer1023 Oct 25, 2026
4491ce3
ci(linux): visible Stop click on GPU-rendered GNOME sessions (#3283)
richiemcilroy Oct 25, 2026
385a2fa
Merge branch 'main' into perf/background-image-preview
richiemcilroy Oct 25, 2026
2fc199a
fix(linux): editor background image picker opens the portal file choo…
richiemcilroy Oct 25, 2026
dc4d011
Merge pull request #3281 from kyzer1023/perf/rendering-avx2-yuv-rgba
richiemcilroy Oct 25, 2026
f4efad3
fix: address review notes on the shared chunker (#3274)
Ker102 Oct 25, 2026
c24dcba
Merge pull request #3277 from tadhgdowdall/perf/background-image-preview
richiemcilroy Oct 25, 2026
a7192c8
perf(rendering): AVX2 software RGBA→NV12
kyzer1023 Oct 25, 2026
af48fba
fix(rendering): gate RGBA to NV12 bounds check to x86
kyzer1023 Oct 25, 2026
f389ffc
fix(linux): use the desktop wallpaper as an editor background (#3286)
richiemcilroy Oct 25, 2026
60ef632
fix(linux): retry the portal app id registration for a just-written d…
richiemcilroy Oct 26, 2026
6d94c04
Merge branch 'main' into kyzer/perf-rendering-avx2-rgba-nv12-9048
richiemcilroy Oct 26, 2026
9da1df8
Merge origin/main into fix/gpui-deferred-reentrant-callbacks
richiemcilroy Oct 26, 2026
351864f
fix(gpui): keep deferred window callbacks quiet for closed windows
richiemcilroy Oct 26, 2026
3bea077
fix(linux): ask for the Wayland screenshot permission while Cap has f…
richiemcilroy Oct 26, 2026
548e04a
Record a v4l2loopback camera on X11 in the Linux CI (#3297)
richiemcilroy Oct 26, 2026
9335ae7
Merge branch 'main' into kyzer/perf-rendering-avx2-rgba-nv12-9048
richiemcilroy Oct 26, 2026
8e8f7ab
Merge branch 'main' into refactor/caption-words-shared-module
richiemcilroy Oct 26, 2026
0ee3505
perf(linux-screenshot): SSSE3 BGRZ to RGB24
kyzer1023 Oct 26, 2026
e8db1fe
ci(linux): KDE Plasma desktop for the Linux harness (#3301)
richiemcilroy Oct 26, 2026
66893b4
ci(linux): cover X11 targets, screenshots, export and Instant uploads…
richiemcilroy Oct 26, 2026
7889c2e
chore(linux-screenshot): drop redundant comment
kyzer1023 Oct 26, 2026
8208485
Merge origin/main into fix/gpui-deferred-reentrant-callbacks
richiemcilroy Oct 26, 2026
558c535
Merge branch 'main' into kyzer/perf-rendering-avx2-rgba-nv12-9048
richiemcilroy Oct 26, 2026
a50d6b2
Merge branch 'main' into refactor/caption-words-shared-module
richiemcilroy Oct 26, 2026
5fcf8e9
fix(linux): start on X11 when WAYLAND_DISPLAY names no running compos…
richiemcilroy Oct 26, 2026
fb1a186
Merge origin/main into fix/gpui-deferred-reentrant-callbacks
richiemcilroy Oct 26, 2026
7252757
Merge branch 'main' into kyzer/perf-rendering-avx2-rgba-nv12-9048
richiemcilroy Oct 26, 2026
cb67208
Merge branch 'main' into refactor/caption-words-shared-module
richiemcilroy Oct 26, 2026
586522a
Merge pull request #3287 from kyzer1023/kyzer/perf-rendering-avx2-rgb…
richiemcilroy Oct 26, 2026
c23d0a8
Merge branch 'main' into refactor/caption-words-shared-module
richiemcilroy Oct 26, 2026
f6046f1
Merge pull request #3295 from Ker102/refactor/caption-words-shared-mo…
richiemcilroy Oct 26, 2026
2e3bccc
Merge branch 'main' into perf/linux-screenshot-ssse3-bgrz-rgb24
richiemcilroy Oct 26, 2026
fb453e3
Merge pull request #3306 from kyzer1023/perf/linux-screenshot-ssse3-b…
richiemcilroy Oct 26, 2026
7c3bd99
fix(linux): GNOME screenshots after a terminal launch of the packaged…
richiemcilroy Oct 26, 2026
98fe6cb
Linux cancelled or crashed Instant starts delete their empty video (#…
richiemcilroy Oct 26, 2026
42ff4c7
Merge branch 'main' into fix/gpui-deferred-reentrant-callbacks
richiemcilroy Oct 26, 2026
ec22b54
Run the macOS playback and seek verify tests alone so their frame dea…
richiemcilroy Oct 26, 2026
8653d75
perf(web): check Cap bucket recording sources with listings in one ch…
richiemcilroy Oct 26, 2026
94774cc
perf(web): claim and commit a desktop recording in one workflow step
richiemcilroy Oct 26, 2026
2c65333
fix(web): name replacement attempts by number so a later step retry s…
richiemcilroy Oct 26, 2026
80cf92e
Merge pull request #3376 from CapSoftware/perf/instant-finalize-commit
richiemcilroy Oct 26, 2026
d2744bc
Merge pull request #2760 from CapSoftware/fix/gpui-deferred-reentrant…
richiemcilroy Oct 26, 2026
fa6d814
Merge remote-tracking branch 'origin/main' into ns-draft-2854
richiemcilroy Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ filter = '(binary_id(cap-verify::crash) and test(=crash_safety)) or (binary_id(c
threads-required = "num-test-threads"
priority = 100

# Playback and seek ask for each frame with a deadline (2 s, 10 s for a
# seek's first frame). On the blacksmith macOS VMs, Apple's video decoding
# stalls once every core is busy: a standalone AVAssetReader read went from
# 0.4 ms to 55-77 ms a frame with all 6 cores loaded, and stayed under 1 ms
# with half of them loaded (a real Mac and the hosted macos-15 VM are
# unaffected). Shared with the export and chaos tests, frames then missed
# their deadline ("decoders returned no frame"), so on macOS these run alone,
# after the wall-clock tests.
[[profile.ci.overrides]]
platform = 'cfg(target_os = "macos")'
filter = '(binary_id(cap-verify::playback) and not test(=realtime_loop)) or binary_id(cap-verify::seek)'
threads-required = "num-test-threads"
priority = 90

# The FULL-tier seek storms (3000 seeks per decoder) are the slowest tests:
# on the macos-15 runner one storm fixture takes 240 to 570 s per decoder,
Expand Down
10 changes: 5 additions & 5 deletions .github/actions/setup-js/action.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
name: Setup JS (Bun & Node)
description: Sets up Bun 1.4.0 and Node with frozen dependencies and caching
description: Sets up Bun 1.4.4 and Node with frozen dependencies and caching
runs:
using: "composite"
steps:
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 24

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
with:
bun-version: 1.4.0
bun-version: 1.4.4

# Saved from main only: a cache saved on a PR ref is invisible to every
# other PR and still counts against the repository cache quota.
Expand All @@ -20,9 +20,9 @@ runs:
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830
with:
path: ${{ runner.temp }}/bun-cache
key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-${{ hashFiles('bun.lock') }}
key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.4-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-
${{ runner.os }}-${{ runner.arch }}-bun-1.4.4-

- name: Install frontend dependencies
shell: bash
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ jobs:
bun test scripts/loops/profile.test.ts scripts/loops/lifecycle.test.ts
bun run tsc --noEmit --strict --jsx react-jsx --allowImportingTsExtensions --target ESNext --module ESNext --moduleResolution bundler --resolveJsonModule --types bun --skipLibCheck scripts/loops/*.ts

- name: Test Chrome extension
run: bun run --cwd apps/chrome-extension test

- name: Test recorder SDK
run: bun --no-install test packages/sdk-recorder

- name: Test render farm orchestration
run: |
bun test apps/render-farm
Expand All @@ -122,16 +128,49 @@ jobs:
- name: Test web React compatibility
run: >-
bun run --cwd apps/web test
__tests__/unit/analytics-track-route.test.ts
__tests__/unit/caps-analytics-round-trips.test.ts
__tests__/unit/caps-keyboard.test.ts
__tests__/unit/comment-composer-composition.test.ts
__tests__/unit/dashboard-analytics-cap-access.test.ts
__tests__/unit/dashboard-analytics-space-access.test.ts
__tests__/unit/embed-video-playback-chrome.test.ts
__tests__/unit/folder-videos.test.ts
__tests__/unit/homepage-demo-accessibility.test.ts
__tests__/unit/invite-decline-pro-seat.test.ts
__tests__/unit/invite-decline.test.ts
__tests__/unit/linkified-text.test.ts
__tests__/unit/loom-import-ui.test.ts
__tests__/unit/media-comment-playback-cleanup.test.ts
__tests__/unit/media-format-converter-selection.test.ts
__tests__/unit/media-format-converter.test.ts
__tests__/unit/media-player-store-refs.test.ts
__tests__/unit/mobile-caps-list.test.ts
__tests__/unit/notification-read-state.test.ts
__tests__/unit/playback-store.test.ts
__tests__/unit/remove-organization-member.test.ts
__tests__/unit/reply-notification.test.ts
__tests__/unit/seo-demo-videos.test.ts
__tests__/unit/share-page-round-trips.test.ts
__tests__/unit/share-transcript-rendering.test.ts
__tests__/unit/share-video-quota-loading.test.ts
__tests__/unit/signed-baa-card.test.ts
__tests__/unit/space-folder-page-access.test.ts
__tests__/unit/space-page-round-trips.test.ts
__tests__/unit/speed-controller-playback-failure.test.ts
__tests__/unit/speed-controller.test.ts
__tests__/unit/summary-chapters.test.ts
__tests__/unit/summary-editor.test.ts
__tests__/unit/sso-login-pages.test.ts
__tests__/unit/timeline-paused-window.test.ts
__tests__/unit/toggle-pro-seat.test.ts
__tests__/unit/transcript-hours.test.ts
__tests__/unit/transcript-numbers.test.ts
__tests__/unit/video-analytics-access.test.ts
__tests__/unit/video-analytics-bulk.test.ts
__tests__/unit/video-create-atomicity.test.ts
__tests__/unit/video-download-permissions.test.ts
__tests__/unit/voice-note-playback.test.ts

- name: Typecheck
run: bun run typecheck
Expand Down Expand Up @@ -288,8 +327,13 @@ jobs:
run: |
cargo test --locked -p cap-utils -p cap-cli-install --lib
cargo test --locked -p cap --bin cap record::tests
cargo test --locked -p cap --bin cap recordings::tests
cargo test --locked -p cap --test cli recordings_list
cargo test --locked -p cap --test cli project_config_get_without_file_returns_default
cargo test --locked -p cap --test cli caps_json_errors_include_the_standard_error_field
cargo test --locked -p cap-recording --lib -- --test-threads=1
cargo test --locked -p cap-recording --test x11_shm_capture -- --test-threads=1
cargo test --locked -p scap-targets --lib --test linux_targets
cargo test --locked -p cap-enc-ffmpeg

build-gpui:
Expand Down Expand Up @@ -377,6 +421,7 @@ jobs:
cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} --bin cap-gpui
fi
cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} -p cap-gpui-kernels
cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} -p cap-i18n-build

# Cap only builds gpui's crates as dependencies, so their own tests never run
# in the app jobs above. Run the ones covering Cap's patches against real
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/desktop-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,17 @@ jobs:
echo "::error::The Cap AppImage bundles PipeWire that can conflict with host ALSA plugins"
exit 1
fi
if [[ -n "$(find "$APPROOT/usr/lib" -maxdepth 1 -name 'libva*.so*' -print -quit)" ]]; then
echo "::error::The Cap AppImage puts its libva where Cap loads it ahead of the host's, which breaks host PipeWire plugins"
exit 1
fi
test -e "$APPROOT/usr/lib/cap/libva/libva.so.2"
test -e "$APPROOT/usr/lib/cap/libva/libva-drm.so.2"
grep -qx 'exec "$cap_appdir/usr/bin/Cap" "$@"' "$APPROOT/AppRun"
if grep -q 'AppRun.cap-original' "$APPROOT/AppRun"; then
echo "::error::The Cap AppImage still starts through the generic AppImage launcher"
exit 1
fi

- name: Build Arch Linux package
id: build_arch
Expand Down
18 changes: 17 additions & 1 deletion .github/workflows/docker-build-media-server.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ jobs:
src/__tests__/lib/media-routes-real-world.integration.test.ts
docker run --rm --network none --entrypoint bun "$MEDIA_IMAGE" test \
src/__tests__/lib/media-video.integration.test.ts
docker run --rm --network none --entrypoint bun "$MEDIA_IMAGE" test \
src/__tests__/lib/video-input-validation.integration.test.ts
docker run --rm --network none --entrypoint bun "$MEDIA_IMAGE" test \
src/__tests__/loom-importer/

- name: Verify long recording performance in the production image
env:
Expand Down Expand Up @@ -199,7 +203,19 @@ jobs:
run: |
if [[ "$IMAGE_TAG" == "latest" ]]; then
current="$(gh api "repos/${GITHUB_REPOSITORY}/git/ref/heads/main" --jq .object.sha)"
[[ "$current" == "$GITHUB_SHA" ]] || exit 1
if [[ "$current" != "$GITHUB_SHA" ]]; then
# Merge trains move main during the build. Keep the tag only when this commit is on main and no newer commit changes this workflow's paths, so an older image can never replace a newer one.
comparison="$(gh api "repos/${GITHUB_REPOSITORY}/compare/${GITHUB_SHA}...${current}")"
[[ "$(jq -r .status <<<"$comparison")" == "ahead" ]] || exit 1
(($(jq '.files | length' <<<"$comparison") < 300)) || exit 1
jq -e '[.files[] | .filename, (.previous_filename // empty)
| select(startswith("apps/media-server/")
or . == "scripts/benchmark-instant-audio.py"
or . == "scripts/benchmark-audio-intelligibility.py"
or . == "scripts/test-audio-intelligibility.py"
or . == ".github/workflows/docker-build-media-server.yml")]
| length == 0' <<<"$comparison" >/dev/null || exit 1
fi
fi
sources=()
for path in /tmp/digests/*; do
Expand Down
28 changes: 27 additions & 1 deletion .github/workflows/engine-verify-os.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,13 @@ jobs:
name: verify-archive-${{ inputs.platform }}-${{ github.run_attempt }}
path: ${{ runner.temp }}

# A test process that crashes (SIGSEGV) leaves no Rust backtrace;
# macOS writes a crash report instead, collected below on failure.
- name: Mark crash report start
if: inputs.platform == 'macos'
shell: bash
run: touch "$RUNNER_TEMP/crash-reports-since"

- name: Prepare recorded fixtures without concurrent rendering
if: contains(format(',{0},', inputs.suites), ',export,')
shell: bash
Expand Down Expand Up @@ -217,8 +224,27 @@ jobs:
--junit "$CAP_VERIFY_REPORT_DIR/junit.xml" --flaky "$CAP_VERIFY_FLAKY_FILE"
"$CAP_VERIFY_REPORT_DIR" >> "$GITHUB_STEP_SUMMARY"

- name: Collect macOS crash reports
id: crash-reports
if: failure() && inputs.platform == 'macos'
continue-on-error: true
shell: bash
run: |
dest="$RUNNER_TEMP/verify-report/crash-reports"
for dir in "$HOME/Library/Logs/DiagnosticReports" /Library/Logs/DiagnosticReports; do
[[ -d "$dir" ]] || continue
{ find "$dir" -type f \( -name '*.ips' -o -name '*.crash' \) -newer "$RUNNER_TEMP/crash-reports-since" -print0 2>/dev/null || true; } |
while IFS= read -r -d '' report; do
mkdir -p "$dest"
cp "$report" "$dest/" && echo "collected $report" || echo "could not copy $report"
done
done
if [[ -n "$(ls -A "$dest" 2>/dev/null)" ]]; then
echo "collected=true" >> "$GITHUB_OUTPUT"
fi

- name: Upload report
if: always() && steps.test.outcome != 'skipped'
if: always() && (steps.test.outcome != 'skipped' || steps.crash-reports.outputs.collected == 'true')
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: verify-report-${{ inputs.platform }}-${{ inputs.tier }}-${{ matrix.shard }}
Expand Down
Loading
Loading