loose files - #94
loose files#94
Conversation
Give Volt a single Launch path into a registry of Owned Process trees with Workspace tags, Share Keys, and graceful-then-force teardown so later spawn migrations can stop leaving orphans after close/quit/crash. Closes #87
Route interactive PTY sessions and background/compile-style jobs through the Process Registry so Workspace Close and Application Quit tear down their trees instead of leaving OpenConsole/cmd orphans after exit. Closes #88 Co-authored-by: Cursor <cursoragent@cursor.com>
Route language servers, debug adapters, ACP children, and tool helpers through the Process Registry with Share Key workspace tags and protocol-then-force teardown on Workspace Close / Application Quit. Closes #89 Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 91582a680f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| edits: Option<&[editor_buffer::TextEdit]>, | ||
| ) -> Result<Vec<String>, LspClientError> { | ||
| let sessions = self.ensure_sessions_for_path(path, root, None, false)?; | ||
| self.sync_buffer_with_edits_for_workspace(path, text, revision, root, edits, None) |
There was a problem hiding this comment.
Tag legacy LSP syncs with their workspace
This compatibility path always forwards None for ownership, but both autocomplete worker paths in workers_autocomplete.rs still call sync_buffer_with_edits; if either one is the first operation to start a server, its registry entry has no workspace tag. Closing that workspace then removes no tag, prepare_workspace_close does not shut it down, and workspace_close leaves the language-server process running until application exit.
Useful? React with 👍 / 👎.
| if let Some(nvm_env) = windows_nvm_environment(request.cwd, request.env) { | ||
| for candidate in windows_nvm_launch_program_candidates(request.program, &nvm_env) { | ||
| let mut merged = request.env.to_vec(); | ||
| merged.extend(nvm_env.iter().cloned()); | ||
| attempts.push((candidate, merged)); |
There was a problem hiding this comment.
Preserve explicit PATH for NVM-backed LSP launches
On Windows, when the normal launch fails and the NVM fallback is used for a LanguageServerSpec with an explicit PATH, this appends a second PATH after the explicit one. ProcessRegistry::launch applies the pairs in order, so the NVM path replaces the configured path instead of being prepended to it; tools in the configured path can then no longer be found by the server. The retained Windows test for this behavior expects nvm-path;custom-path, but production no longer uses that merging helper.
Useful? React with 👍 / 👎.
volt owned processes