Skip to content

feat(desktop): open Neovim in an external terminal - #19

Draft
kalvenschraut wants to merge 3 commits into
feat/wsl-ssh-runnerfrom
feat/neovim-terminal
Draft

feat(desktop): open Neovim in an external terminal#19
kalvenschraut wants to merge 3 commits into
feat/wsl-ssh-runnerfrom
feat/neovim-terminal

Conversation

@kalvenschraut

@kalvenschraut kalvenschraut commented Sep 5, 2026

Copy link
Copy Markdown
Member

Opening an editor currently supports GUI launches and remote editor links, which cannot host an interactive Neovim session. This adds Neovim (Terminal) to Open and Settings → Editors, opening a separate Windows Terminal window in the project's native, WSL or saved SSH environment.

Desktop main owns discovery, executable overrides, account/runner validation, cached capability checks and deduplicated launch acceptance. WSL routes bind the concrete distro and account; SSH retains the saved native/WSL credential context. A packaged helper stages private payloads separately from interactive stdin, preserves workspace and file positions, cleans consumed payloads, and holds failures visible.

Header, keyboard, markdown, terminal links, diffs, changed files, file preview and Settings editor actions share the same environment preference and dispatch. The existing GUI server RPC remains compatible. Browser/older-desktop clients retain GUI behavior and explain the capability limit for a saved Neovim choice. Provider adapters are unaffected; native Linux terminal adapters remain a follow-up.

Depends on #2; this PR targets feat/wsl-ssh-runner.

Validation:

  • 244 focused tests across 15 files passed, covering routing/account binding, saved-record compatibility, discovery, deduplication, preferences, transport and packaging. Real local Neovim verified the exact filename and UTF-16-to-byte cursor conversion.
  • Desktop/web typechecks and desktop main/preload bundling passed. Targeted lint has no errors; existing warnings remain in surrounding components. New feature modules lint cleanly.
  • Chromium pass against isolated state verified discovery, preference/settings persistence, missing-editor recovery, browser fallback and one launch request with the correct workspace. Desktop capabilities/acceptance were simulated for renderer testing.
  • Before/after picker, Editors settings and browser-fallback screenshots are uploaded as unpublished draft assets for fork maintainers; no screenshots are committed.

Real Windows validation found redirected console input in the terminal helper. The helper now waits on the packaged runtime without competing for input and opens the Windows console input device for interactive children; staging input remains separate.

  • Packaged Windows Terminal launches passed for direct WSL, native SSH and WSL-hosted SSH, including actual keyboard edits, normal Neovim configuration, workspace, adversarial filenames and multibyte cursor positions.
  • Native/WSL SSH password prompts and verified first-use host-key prompts passed against a disposable Linux SSH target; native SSH key authentication passed too.
  • A WSL SSH editor remained usable after closing a separately started isolated packaged desktop GUI. The actual desktop bridge discovered Windows Terminal and correctly reported missing native Windows Neovim. Missing-executable failures remained visible.
  • 82 focused regression tests and targeted lint passed after the console-input fix. A sanitized Windows validation summary is attached to the draft evidence release linked above.

Still draft: these were manual packaged-helper route tests plus an actual GUI capability probe. Full GUI-driven WSL/SSH setup, real saved-host aliases, ProxyJump, locked-key passphrases and distro/default-account transitions remain unverified. Native Windows Neovim is not installed on the test host. The remaining procedure is in docs/operations/neovim-terminal-validation.md.

Model: GPT-6. Harness: Codex.

@kalvenschraut kalvenschraut changed the title feat(desktop): prepare external Neovim terminal transport feat(desktop): open Neovim in an external terminal Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant