diff --git a/build.ts b/build.ts index 441c4c9..72ef086 100644 --- a/build.ts +++ b/build.ts @@ -150,7 +150,7 @@ class BuildService extends Context.Tag('BuildService')< Bun.build({ entrypoints: [config.entrypoint], compile: { - outfile: `server-${targetMap[target]}`, + outfile: `app-${targetMap[target]}`, target: target, }, outdir: config.outputDir, @@ -181,7 +181,7 @@ class BuildService extends Context.Tag('BuildService')< Bun.build({ entrypoints: [config.entrypoint], compile: { - outfile: `server-${targetMap[target]}`, + outfile: `app-${targetMap[target]}`, target: target, }, outdir: config.outputDir, diff --git a/src-tauri/AGENTS.md b/src-tauri/AGENTS.md index 002e35a..b4bbe0a 100644 --- a/src-tauri/AGENTS.md +++ b/src-tauri/AGENTS.md @@ -6,8 +6,8 @@ - **项目类型**: Tauri v2 桌面应用(轻量级壳子) - **后端**: Rust (Edition 2021) -- **架构**: Sidecar 模式 - Sidecar Server 承载主要业务逻辑 -- **设计理念**: Tauri 仅提供原生桌面能力(文件对话框、系统通知等),Web 逻辑全部由 Sidecar Server 处理 +- **架构**: Sidecar 模式 - Sidecar App 承载主要业务逻辑 +- **设计理念**: Tauri 仅提供原生桌面能力(文件对话框、系统通知等),Web 逻辑全部由 Sidecar App 处理 - **开发模式**: 使用 localhost:3000(需手动启动开发服务器) - **生产模式**: 自动启动 Sidecar 二进制 - **异步运行时**: Tokio @@ -99,7 +99,7 @@ app-desktop/ │ │ └── mod.rs # 原生桌面功能命令 (文件对话框、通知等) │ └── sidecar.rs # Sidecar 进程管理 (启动、端口扫描、清理) ├── binaries/ # Sidecar 二进制文件 -│ └── server-* # Sidecar Server 可执行文件 (示例: server) +│ └── app-* # Sidecar App 可执行文件 (示例: app) ├── capabilities/ # Tauri v2 权限配置 │ └── default.json ├── icons/ # 应用图标资源 @@ -182,14 +182,14 @@ async fn is_port_available(port: u16) -> bool { // ✅ 推荐 let sidecar = app_handle .shell() - .sidecar("server") - .expect("无法找到 server sidecar"); + .sidecar("app") + .expect("无法找到 app sidecar"); let (mut rx, child) = sidecar.spawn().expect("启动 sidecar 失败"); // 日志记录 -eprintln!("✗ Sidecar Server 启动失败"); -println!("✓ Sidecar Server 启动成功!"); +eprintln!("✗ Sidecar App 启动失败"); +println!("✓ Sidecar App 启动成功!"); // ❌ 避免 let data = read_file().unwrap(); // 无上下文信息 @@ -226,7 +226,7 @@ tauri::async_runtime::spawn(async move { ```rust // ✅ 推荐 -// 全局状态:存储 Sidecar Server 进程句柄 +// 全局状态:存储 Sidecar App 进程句柄 struct SidecarProcess(Mutex>); // 检查端口是否可用 @@ -297,8 +297,8 @@ if let Some(state) = app_handle.try_state::() { // 启动 sidecar let sidecar = app_handle .shell() - .sidecar("server") - .expect("无法找到 server sidecar") + .sidecar("app") + .expect("无法找到 app sidecar") .env("PORT", port.to_string()); // 清理进程 diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index 71fbab6..8408a9e 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -18,7 +18,7 @@ "identifier": "shell:allow-execute", "allow": [ { - "name": "binaries/server", + "name": "binaries/app", "sidecar": true } ] diff --git a/src-tauri/src/sidecar.rs b/src-tauri/src/sidecar.rs index 6794e0d..aee0578 100644 --- a/src-tauri/src/sidecar.rs +++ b/src-tauri/src/sidecar.rs @@ -7,7 +7,7 @@ use tauri_plugin_shell::ShellExt; // ===== 配置常量 ===== -/// Sidecar Server 启动超时时间(秒) +/// Sidecar App 启动超时时间(秒) const STARTUP_TIMEOUT_SECS: u64 = 5; /// 默认起始端口 @@ -73,7 +73,7 @@ pub fn spawn_sidecar(app_handle: tauri::AppHandle) { // 生产模式:启动 sidecar 二进制 tauri::async_runtime::spawn(async move { - println!("🚀 生产模式:启动 Sidecar Server"); + println!("🚀 生产模式:启动 Sidecar App"); // 查找可用端口 let port = find_available_port(DEFAULT_PORT).await; @@ -82,8 +82,8 @@ pub fn spawn_sidecar(app_handle: tauri::AppHandle) { // 启动 sidecar let sidecar = app_handle .shell() - .sidecar("server") - .expect("无法找到 server") + .sidecar("app") + .expect("无法找到 app") .env("PORT", port.to_string()); let (mut rx, child) = sidecar.spawn().expect("启动 sidecar 失败"); @@ -96,17 +96,17 @@ pub fn spawn_sidecar(app_handle: tauri::AppHandle) { // 监听 stdout,等待服务器就绪信号 let start_time = std::time::Instant::now(); let timeout = Duration::from_secs(STARTUP_TIMEOUT_SECS); - let mut server_ready = false; + let mut app_ready = false; while let Some(event) = rx.recv().await { if let CommandEvent::Stdout(line) = event { let output = String::from_utf8_lossy(&line); - println!("Server: {}", output); + println!("App: {}", output); - // 检测服务器启动成功的标志 + // 检测 App 启动成功的标志 if output.contains("Listening on:") || output.contains("localhost") { - server_ready = true; - println!("✓ Server 启动成功!"); + app_ready = true; + println!("✓ App 启动成功!"); // 创建主窗口 let url = format!("http://localhost:{}", port); @@ -128,15 +128,15 @@ pub fn spawn_sidecar(app_handle: tauri::AppHandle) { // 超时检查 if start_time.elapsed() > timeout { eprintln!( - "✗ 启动超时: Server 未能在 {} 秒内启动", + "✗ 启动超时: App 未能在 {} 秒内启动", STARTUP_TIMEOUT_SECS ); break; } } - if !server_ready { - eprintln!("✗ Server 启动失败"); + if !app_ready { + eprintln!("✗ App 启动失败"); std::process::exit(1); } }); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ebc12f1..8c0aa7a 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -20,6 +20,6 @@ "icons/icon.icns", "icons/icon.ico" ], - "externalBin": ["binaries/server"] + "externalBin": ["binaries/app"] } }