summaryrefslogtreecommitdiffhomepage
path: root/packages/tauri
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-12-10 16:13:04 -0500
committerDax Raad <[email protected]>2025-12-10 16:13:11 -0500
commit9ad828dcd0e2bbcd02eee2700856c20ed118e174 (patch)
tree6242d88721f842f06510bfc5d87ddc0b9395e18d /packages/tauri
parent59fb3ae606764e8bd3dc8f8d9fc40b952aee8257 (diff)
downloadopencode-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.rs11
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");