mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
Fixes #11592. ## Problem WSL starts Windows programs in the current directory, translated to `\\wsl.localhost\<distro>\<cwd>`. When that path exceeds MAX_PATH, every Windows program fails to start with `Invalid argument`. pi inherits its cwd when spawning `powershell.exe`, so in a deep directory: - clipboard image paste returns `null` (the PowerShell backend fails, stderr is discarded) - copy via `powershell.exe` (WSL without WSLg) fails - opening the browser for sign-in fails (`xdg-open` on WSL runs `explorer.exe`) Reproduced on WSL (FedoraLinux-44): `powershell.exe` and `cmd.exe` work from a 225-char cwd and fail from 230. With an image on the Windows clipboard, `readClipboardImage()` returns the PNG from `/tmp` and `null` from a 245-char cwd; with this change it returns the PNG from both. `LongPathsEnabled=1` does not help. ## Changes - `runClipboardCommand` and `openBrowser` run from `/` on POSIX. These tools never use the cwd (temp files are passed by absolute path), and `/` is always the shortest UNC path. `tmpdir()` was not used because `$TMPDIR` can itself be deep. - The external editor keeps pi's cwd on purpose, so project-relative paths and integrated terminals keep working. A Windows editor such as `code` can still fail from a deep WSL directory, as with git's `core.editor`. A comment documents this. - External editor failures were silent: the UI redrew over the error immediately. pi now shows `Failed to launch external editor: <cmd>`, `External editor exited with code N; prompt unchanged`, or the signal name. This shows in the status line for the main editor and inline in the extension editor dialog. ## Testing - New tests: clipboard commands run from `/` (POSIX); an editor that cannot be launched is reported (POSIX); the existing failure test checks the message. - Verified on WSL by running the real modules: clipboard image paste from a deep cwd, and editor success, exit code 1, launch failure, and SIGTERM. - On Windows, the 3 existing `external-editor.test.ts` tests already fail on `main`: the editor command is split on spaces, so `C:\Program Files\nodejs\node.exe` breaks. Not addressed here. This PR is AI-generated. |
||
|---|---|---|
| .. | ||
| abort.ts | ||
| ansi.ts | ||
| changelog.ts | ||
| child-process.ts | ||
| clipboard-command.ts | ||
| clipboard-image.ts | ||
| clipboard.ts | ||
| deprecation.ts | ||
| exif-orientation.ts | ||
| frontmatter.ts | ||
| fs-watch.ts | ||
| git.ts | ||
| highlight-js.d.ts | ||
| html.ts | ||
| image-convert.ts | ||
| image-process.ts | ||
| image-resize-core.ts | ||
| image-resize-worker.ts | ||
| image-resize.ts | ||
| json.ts | ||
| management-http.ts | ||
| mime.ts | ||
| open-browser.ts | ||
| output-files.ts | ||
| paths.ts | ||
| photon.ts | ||
| pi-user-agent.ts | ||
| shell.ts | ||
| sleep.ts | ||
| syntax-highlight.ts | ||
| text.ts | ||
| tool-result-images.ts | ||
| tools-manager.ts | ||
| version-check.ts | ||
| windows-self-update.ts | ||
| wsl.ts | ||
| zip.ts | ||