diff options
| author | Dax Raad <[email protected]> | 2025-12-10 16:13:04 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-12-10 16:13:11 -0500 |
| commit | 9ad828dcd0e2bbcd02eee2700856c20ed118e174 (patch) | |
| tree | 6242d88721f842f06510bfc5d87ddc0b9395e18d /packages/tauri | |
| parent | 59fb3ae606764e8bd3dc8f8d9fc40b952aee8257 (diff) | |
| download | opencode-9ad828dcd0e2bbcd02eee2700856c20ed118e174.tar.gz opencode-9ad828dcd0e2bbcd02eee2700856c20ed118e174.zip | |
tui: use random free port and enable icon discovery by default
- Tauri app now automatically finds an available port instead of defaulting to 4096
- Icon discovery feature is now enabled by default in the Tauri app
- Prevents port conflicts when multiple OpenCode instances are running
Diffstat (limited to 'packages/tauri')
| -rw-r--r-- | packages/tauri/src-tauri/src/lib.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/packages/tauri/src-tauri/src/lib.rs b/packages/tauri/src-tauri/src/lib.rs index afb34094f..d380e3576 100644 --- a/packages/tauri/src-tauri/src/lib.rs +++ b/packages/tauri/src-tauri/src/lib.rs @@ -1,5 +1,5 @@ use std::{ - net::SocketAddr, + net::{SocketAddr, TcpListener}, process::Command, sync::{Arc, Mutex}, time::{Duration, Instant}, @@ -18,7 +18,13 @@ fn get_sidecar_port() -> u16 { .map(|s| s.to_string()) .or_else(|| std::env::var("OPENCODE_PORT").ok()) .and_then(|port_str| port_str.parse().ok()) - .unwrap_or(4096) + .unwrap_or_else(|| { + TcpListener::bind("127.0.0.1:0") + .expect("Failed to bind to find free port") + .local_addr() + .expect("Failed to get local address") + .port() + }) } fn find_and_kill_process_on_port(port: u16) -> Result<(), Box<dyn std::error::Error>> { @@ -60,6 +66,7 @@ fn spawn_sidecar(app: &AppHandle, port: u16) -> CommandChild { .shell() .sidecar("opencode") .unwrap() + .env("OPENCODE_EXPERIMENTAL_ICON_DISCOVERY", "true") .args(["serve", &format!("--port={port}")]) .spawn() .expect("Failed to spawn opencode"); |
