Skip to content

feat: Various misc UX stuff, including fix for macOS virtual screens #4916

feat: Various misc UX stuff, including fix for macOS virtual screens

feat: Various misc UX stuff, including fix for macOS virtual screens #4916

Triggered via pull request December 7, 2025 17:00
Status Success
Total duration 4m 14s
Artifacts

ci.yml

on: pull_request
Detect Changes
10s
Detect Changes
Typecheck
1m 24s
Typecheck
Format (Biome)
11s
Format (Biome)
Format (Cargo)
8s
Format (Cargo)
Lint (Biome)
14s
Lint (Biome)
Verify Tauri plugin versions
0s
Verify Tauri plugin versions
Matrix: Build Desktop
Matrix: Clippy
Matrix: Rust cache
Fit to window
Zoom out
Zoom in

Annotations

11 warnings
`flatten()` will run forever if the iterator repeatedly produces an `Err`: apps/desktop/src-tauri/src/captions.rs#L1013
warning: `flatten()` will run forever if the iterator repeatedly produces an `Err` --> apps/desktop/src-tauri/src/captions.rs:1013:36 | 1013 | for line in reader.lines().flatten() { | ^^^^^^^^^ help: replace with: `map_while(Result::ok)` | note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error --> apps/desktop/src-tauri/src/captions.rs:1013:21 | 1013 | for line in reader.lines().flatten() { | ^^^^^^^^^^^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#lines_filter_map_ok = note: `#[warn(clippy::lines_filter_map_ok)]` on by default
manual implementation of `.is_multiple_of()`: crates/recording/src/output_pipeline/win.rs#L599
warning: manual implementation of `.is_multiple_of()` --> crates\recording\src\output_pipeline\win.rs:599:40 | 599 | ... if frame_count % 30 == 0 { | ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `frame_count.is_multiple_of(30)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#manual_is_multiple_of = note: `#[warn(clippy::manual_is_multiple_of)]` on by default
deref which would be done by auto-deref: crates/recording/src/output_pipeline/win.rs#L524
warning: deref which would be done by auto-deref --> crates\recording\src\output_pipeline\win.rs:524:33 | 524 | ... &mut *output_guard, | ^^^^^^^^^^^^^^^^^^ help: try: `&mut output_guard` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#explicit_auto_deref
deref which would be done by auto-deref: crates/recording/src/output_pipeline/win.rs#L276
warning: deref which would be done by auto-deref --> crates\recording\src\output_pipeline\win.rs:276:71 | 276 | ... .write_sample(&output_sample, &mut *output) | ^^^^^^^^^^^^ help: try: `&mut output` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#explicit_auto_deref
deref which would be done by auto-deref: crates/recording/src/output_pipeline/win.rs#L215
warning: deref which would be done by auto-deref --> crates\recording\src\output_pipeline\win.rs:215:37 | 215 | ... &mut *output_guard, | ^^^^^^^^^^^^^^^^^^ help: try: `&mut output_guard` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#explicit_auto_deref
deref which would be done by auto-deref: crates/recording/src/output_pipeline/win.rs#L165
warning: deref which would be done by auto-deref --> crates\recording\src\output_pipeline\win.rs:165:63 | 165 | ... .and_then(|builder| builder.build(&mut *output_guard)) | ^^^^^^^^^^^^^^^^^^ help: try: `&mut output_guard` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#explicit_auto_deref
usage of an `Arc` that is not `Send` and `Sync`: crates/recording/src/feeds/camera.rs#L580
warning: usage of an `Arc` that is not `Send` and `Sync` --> crates\recording\src\feeds\camera.rs:580:41 | 580 | ... buffer: std::sync::Arc::new(std::sync::Mutex::new(buffer)), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `Arc<Mutex<IMFMediaBuffer>>` is not `Send` and `Sync` as `Mutex<IMFMediaBuffer>` is neither `Send` nor `Sync` = help: if the `Arc` will not be used across threads replace it with an `Rc` = help: otherwise make `Mutex<IMFMediaBuffer>` `Send` and `Sync` or consider a wrapper type such as `Mutex` = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#arc_with_non_send_sync = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default
deref which would be done by auto-deref: crates/recording/src/feeds/camera.rs#L568
warning: deref which would be done by auto-deref --> crates\recording\src\feeds\camera.rs:568:50 | 568 | ... lock.copy_from_slice(&*bytes); | ^^^^^^^ help: try: `&bytes` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#explicit_auto_deref = note: `#[warn(clippy::explicit_auto_deref)]` on by default
you should consider adding a `Default` implementation for `EncoderPreferences`: crates/recording/src/capture_pipeline.rs#L22
warning: you should consider adding a `Default` implementation for `EncoderPreferences` --> crates\recording\src\capture_pipeline.rs:22:5 | 22 | / pub fn new() -> Self { 23 | | Self { 24 | | force_software: Arc::new(AtomicBool::new(false)), 25 | | } 26 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#new_without_default = note: `#[warn(clippy::new_without_default)]` on by default help: try adding this | 21 + impl Default for EncoderPreferences { 22 + fn default() -> Self { 23 + Self::new() 24 + } 25 + } |
constant `MAX_DROP_RATE_THRESHOLD` is never used: crates/recording/src/sources/screen_capture/windows.rs#L28
warning: constant `MAX_DROP_RATE_THRESHOLD` is never used --> crates\recording\src\sources\screen_capture\windows.rs:28:7 | 28 | const MAX_DROP_RATE_THRESHOLD: f64 = 0.25; | ^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
transmute used without annotations: crates/enc-mediafoundation/src/video/h264.rs#L216
warning: transmute used without annotations --> crates\enc-mediafoundation\src\video\h264.rs:216:31 | 216 | std::mem::transmute::<_, usize>(temp), | ^^^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::<windows::Win32::Media::MediaFoundation::IMFDXGIDeviceManager, usize>` | = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#missing_transmute_annotations = note: `#[warn(clippy::missing_transmute_annotations)]` on by default