Skip to content

feat(cli): 沙箱剪贴板图片粘贴桥接补齐 Linux/Windows 支持 #385

Description

@CodeCasterX

功能摘要 / Feature Summary

为沙箱「宿主剪贴板图片 → 容器内 Ctrl+V 粘贴」桥接补齐 Linux 与 Windows 平台支持(首版仅 macOS/darwin)。

问题描述 / Problem Description

沙箱图片粘贴桥接的首版(#381 / PR #384)只实现了 macOS/darwin。当前非 macOS 进沙箱走原样裸 docker exec -it 交互、不启用桥接(零行为变化、零副作用),因此 Linux 与 Windows 用户无法在容器内 TUI 中用 Ctrl+V 粘贴宿主剪贴板里的图片。

架构 A 的通用部分(宿主 node-pty PTY 中继、Ctrl+V 识别、PNG 落盘/命名/清理、终端恢复/退出码/stdin.pause 清理、optional node-pty 动态加载与回退)均平台无关、可直接复用;createClipboardAdapter 已按 process.platform 分派,只缺 Linux / Windows 两个 adapter 实现。

建议的解决方案 / Proposed Solution

  • 新增 lib/sandbox/clipboard/linux.ts:X11(xclip -selection clipboard -t image/png -ohasImage 走 TARGETS 探测)+ Wayland($WAYLAND_DISPLAYwl-paste -t image/png / wl-paste --list-types);沿用 darwin 的二进制安全读图范式(写临时 PNG → fs 二进制读 + PNG magic 校验 + timeout + 失败透传不吞键);工具缺失时 available() 给可执行报错(提示装 xclip / wl-clipboard)。
  • 新增 lib/sandbox/clipboard/win32.ts:PowerShell Get-Clipboard -Format Image(WSL2 经 powershell.exe);二进制安全读图同上;注意 node-pty 走 ConPTY、commandForEngine 会把命令包成 wsl.exe --
  • index.ts 接入 linux / win32 分派;bridge 平台门槛从「仅 darwin」放宽为「存在可用 adapter 即启用」,各平台失败回退路径与 macOS 保持一致。
  • node-pty optionalDependencies 预编译矩阵覆盖 linux-x64/linux-arm64win32-x64
  • 各平台真机验证矩阵(env-blocked):Linux(X11/Wayland) + Windows(WSL2) 上 4 个 TUI 的 Ctrl+V 贴图、退出/终端恢复、降级与负向用例。

替代方案 / Alternative Solutions

不做架构 B(容器内 xclip/wl-paste shim)——保留为未来高保真升级;本任务延续架构 A 的宿主中继思路。


跟进 #381(macOS 首版需求)/ PR #384(macOS 首版实现)。内部追踪:TASK-20260602-151139。

Metadata

Metadata

Assignees

Labels

Fields

No fields configured for Feature.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions