fix(desktop): add single-instance protection to prevent multiple app spawns #6926
+15
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
tauri-plugin-single-instanceto prevent multiple desktop app instancesProblem
Opening the OpenCode desktop app would spawn orphaned
opencode-cli serveprocesses that accumulate over time, even from a single launch attempt. Users reported 100+ orphaned processes consuming system resources.Root Cause
When the sidecar fails to start within 7 seconds (e.g., due to module loading errors like the
@tarquinen/opencode-dcpBun compatibility issue), the app would:app.exit(1)Each failed launch attempt would leave another orphaned process. The random port allocation (
TcpListener::bind("127.0.0.1:0")) meant each orphan ran on a different port.Solution
child.kill()before showing the failure dialog and exitingtauri-plugin-single-instanceto prevent concurrent launches (secondary fix)Changes
packages/desktop/src-tauri/Cargo.toml: Addedtauri-plugin-single-instance = "2"packages/desktop/src-tauri/src/lib.rs: