aboutsummaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-01 15:48:22 +0300
committerGitHub <noreply@github.com>2026-09-01 15:48:22 +0300
commit207be3c771d281baae6e5fa0fb74be9a056e97a2 (patch)
treed7b037ecdf629224a048c841d11659efdc23507d /src/platform
parent8a6d697308162874a236c84aac0b0f8c7ac01f83 (diff)
refactor: render the shell in the client (#3487)
* feat: add opt-in client-rendered shell * feat: add client-owned shell mouse controls * feat: complete client-owned shell chrome * feat: add client-owned shell settings and notifications * feat: run client shell custom commands * feat: render popup terminals in client shell * feat: add client-owned scrollback and copy mode * fix: preserve client worktree trust defaults * feat: render startup diagnostics in client shell * feat: render onboarding in client shell * feat: render product announcements in client shell * feat: render release notes in client shell * feat: render mobile switcher in client shell * feat: render kitty graphics in client shell * fix: preserve client shell lifecycle coherence * refactor: route client shell commands through endpoint connections * refactor: make the client-rendered shell the default * refactor: remove monolithic launch mode * refactor: complete client-rendered shell cutover * perf: retain client pane surface updates * perf: scale retained pane surface updates * perf: remove remote pane input latency * test: make client shell checks platform-independent * fix: prevent client timer starvation * test: fix client shell platform gates * test: accept retained surfaces in cross-area checks * test: make client mode assertions platform-neutral * fix: badge only outdated integrations
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/fallback.rs2
-rw-r--r--src/platform/mod.rs8
-rw-r--r--src/platform/windows.rs33
3 files changed, 41 insertions, 2 deletions
diff --git a/src/platform/fallback.rs b/src/platform/fallback.rs
index 64e5467b..7e14dcd8 100644
--- a/src/platform/fallback.rs
+++ b/src/platform/fallback.rs
@@ -220,8 +220,6 @@ pub fn open_url(_url: &str) -> std::io::Result<Option<std::process::Child>> {
}
/// Unsupported platform stub.
-// Windows does not wire clipboard-image bridging into semantic input yet.
-#[cfg_attr(windows, allow(dead_code))]
pub fn read_clipboard_image() -> Option<ClipboardImage> {
None
}
diff --git a/src/platform/mod.rs b/src/platform/mod.rs
index 6323212a..fc80bc64 100644
--- a/src/platform/mod.rs
+++ b/src/platform/mod.rs
@@ -201,6 +201,14 @@ mod unix_common;
#[cfg(unix)]
pub(crate) use unix_common::{begin_cli_output, end_cli_output};
+#[cfg(not(windows))]
+pub(crate) fn replace_file(
+ source: &std::path::Path,
+ destination: &std::path::Path,
+) -> std::io::Result<()> {
+ std::fs::rename(source, destination)
+}
+
#[cfg(not(unix))]
pub(crate) fn begin_cli_output() {}
diff --git a/src/platform/windows.rs b/src/platform/windows.rs
index 413119ed..e63b8920 100644
--- a/src/platform/windows.rs
+++ b/src/platform/windows.rs
@@ -15,6 +15,39 @@ use std::{
mod clipboard_image;
+pub(crate) fn replace_file(
+ source: &std::path::Path,
+ destination: &std::path::Path,
+) -> std::io::Result<()> {
+ use std::os::windows::ffi::OsStrExt;
+ use windows_sys::Win32::Storage::FileSystem::{
+ MoveFileExW, MOVEFILE_REPLACE_EXISTING, MOVEFILE_WRITE_THROUGH,
+ };
+
+ let source = source
+ .as_os_str()
+ .encode_wide()
+ .chain(std::iter::once(0))
+ .collect::<Vec<_>>();
+ let destination = destination
+ .as_os_str()
+ .encode_wide()
+ .chain(std::iter::once(0))
+ .collect::<Vec<_>>();
+ let moved = unsafe {
+ MoveFileExW(
+ source.as_ptr(),
+ destination.as_ptr(),
+ MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH,
+ )
+ };
+ if moved == 0 {
+ Err(std::io::Error::last_os_error())
+ } else {
+ Ok(())
+ }
+}
+
pub(crate) fn set_default_plugin_pane_pwd(
_env: &mut Vec<(String, String)>,
_cwd: &std::path::Path,