diff --git a/apps/cli/src/doctor.rs b/apps/cli/src/doctor.rs index 4b36b0ed99..7af9261657 100644 --- a/apps/cli/src/doctor.rs +++ b/apps/cli/src/doctor.rs @@ -1,8 +1,7 @@ use serde::Serialize; -use std::{ - path::{Path, PathBuf}, - time::Duration, -}; +use std::path::{Path, PathBuf}; +#[cfg(target_os = "macos")] +use std::time::Duration; use crate::{OutputFormat, write_json}; @@ -456,6 +455,7 @@ fn install_check(install: &Result) -> } } +#[cfg_attr(not(target_os = "macos"), allow(unused_variables))] fn capture_ready(permissions: &Permissions, checks: &[Check]) -> bool { let permission_ready = match permissions.screen_recording { #[cfg(target_os = "macos")] diff --git a/apps/desktop/src-tauri/src/general_settings.rs b/apps/desktop/src-tauri/src/general_settings.rs index 3bc8459239..a8003c4a80 100644 --- a/apps/desktop/src-tauri/src/general_settings.rs +++ b/apps/desktop/src-tauri/src/general_settings.rs @@ -91,12 +91,13 @@ impl MainWindowRecordingStartBehaviour { } } +// NOTE: Do not add "Cap Target Select" here — on Windows, WDA_EXCLUDEFROMCAPTURE applied to that +// hidden window causes it to reappear as a ghost overlay after recording ends. const DEFAULT_EXCLUDED_WINDOW_TITLES: &[&str] = &[ "Cap", "Cap Settings", "Cap Recording Controls", "Cap Camera", - "Cap Target Select", "Cap Window Capture Occluder", "Cap Capture Area", "Cap Mode Selection", @@ -417,6 +418,17 @@ pub fn init(app: &AppHandle) { }; append_missing_default_excluded_windows(&mut store.excluded_windows); + + const REMOVE_TARGET_SELECT_MIGRATION_KEY: &str = "remove_cap_target_select_exclusion_v1"; + if let Ok(raw_store) = app.store("store") + && raw_store.get(REMOVE_TARGET_SELECT_MIGRATION_KEY).is_none() + { + store.excluded_windows.retain(|w| { + w.window_title.as_deref() != Some("Cap Target Select") + }); + raw_store.set(REMOVE_TARGET_SELECT_MIGRATION_KEY, json!(true)); + } + crate::posthog::set_telemetry_enabled(store.enable_telemetry); register_bundled_muxer_binary(app);