From 51b8386483d11e6a276f84335c100d3f5c134eab Mon Sep 17 00:00:00 2001 From: Mushfiq Taief <116129537+Mushfiqtaief@users.noreply.github.com> Date: Sat, 12 Sep 2026 11:17:37 +0600 Subject: [PATCH] fix(tui): read text from clipboard directly on Windows (#13800) --- packages/tui/src/clipboard.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/tui/src/clipboard.ts b/packages/tui/src/clipboard.ts index 2ae29da88894..7a616edfc247 100644 --- a/packages/tui/src/clipboard.ts +++ b/packages/tui/src/clipboard.ts @@ -53,11 +53,15 @@ export async function read() { if (platform() === "win32" || release().includes("WSL")) { const script = - "Add-Type -AssemblyName System.Windows.Forms; $img = [System.Windows.Forms.Clipboard]::GetImage(); if ($img) { $ms = New-Object System.IO.MemoryStream; $img.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png); [System.Convert]::ToBase64String($ms.ToArray()) }" - const image = await command("powershell.exe", ["-NonInteractive", "-NoProfile", "-command", script]).catch(() => + "$t=Get-Clipboard -Raw -EA SilentlyContinue;if($t){[Console]::OutputEncoding=[Text.Encoding]::UTF8;[Console]::Out.Write('T:'+$t)}else{$i=Get-Clipboard -Format Image -EA SilentlyContinue;if($i){$m=New-Object IO.MemoryStream;$i.Save($m,[Drawing.Imaging.ImageFormat]::Png);[Console]::Out.Write('I:'+[Convert]::ToBase64String($m.ToArray()))}}" + const output = await command("powershell.exe", ["-NonInteractive", "-NoProfile", "-command", script]).catch(() => Buffer.alloc(0), ) - if (image.length) return { data: image.toString().trim(), mime: "image/png" } + if (output.length) { + const text = output.toString("utf8") + if (text.startsWith("T:")) return { data: text.slice(2), mime: "text/plain" } + if (text.startsWith("I:")) return { data: text.slice(2).trim(), mime: "image/png" } + } } if (platform() === "linux") {