5bc796d4cb
readTextFromClipboard called execSync for pbpaste, termux-clipboard-get, wl-paste, and xclip; readMacFileUrlsFromClipboard did the same for osascript; copyToClipboard for termux-clipboard-set. execSync parks the event loop until the child exits or the 2000ms timeout fires, so a hung clipboard daemon froze the TUI render loop for the whole budget on every paste and copy chord (input-controller handleImagePaste and handleClipboardTextRawPaste). A new spawnCapture helper wraps Bun.spawn with the same 2000ms guard, stdout-to-string decoding, and non-zero-exit/timeout throw semantics the outer try/catch already assumed. Every synchronous clipboard shell-out now yields to the event loop while the child runs. Regression test under readTextFromClipboard runs a slow fake pbpaste and asserts a concurrent setInterval keeps ticking; the pre-fix code delivered zero ticks. Fixes #4235