feat: Pro 买断门禁、SFTP 精简与批量多机改造

新增 entitlement/license IPC 与 Waffo 一次性结账服务骨架,挂载 AI/转发/代理/串口/广播/批量导入导出门禁;批量执行改为结果矩阵并复用连接池,SFTP 工具栏图标化并去掉已连接条,同时完善跨平台本地终端与窗口配置。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Logan.LiandCursor committed 2026-08-07 11:38:30 +08:00
1 parent 101d2164b4
commit fea6d8db04
72 files changed
+3307 -396

No files matched your search

+8 -2
View File
@@ -331,9 +331,15 @@ fn permission_bits(mode: u32) -> String {
}
fn expand_home(value: &str) -> PathBuf {
if let Some(relative) = value.strip_prefix("~/") {
if value == "~" {
return dirs::home_dir().unwrap_or_else(|| PathBuf::from(value));
}
let relative = value
.strip_prefix("~/")
.or_else(|| value.strip_prefix("~\\"));
if let Some(relative) = relative {
if let Some(home) = dirs::home_dir() {
return home.join(relative);
return home.join(std::path::Path::new(relative));
}
}
PathBuf::from(value)
+23
View File
@@ -0,0 +1,23 @@
use tauri::AppHandle;
use crate::services::license::{self, LicenseStatus};
#[tauri::command]
pub fn license_get(app: AppHandle) -> Result<LicenseStatus, String> {
license::read_status(&app)
}
#[tauri::command]
pub fn license_activate(app: AppHandle, token: String) -> Result<LicenseStatus, String> {
license::activate(&app, &token)
}
#[tauri::command]
pub fn license_clear(app: AppHandle) -> Result<LicenseStatus, String> {
license::clear(&app)
}
#[tauri::command]
pub fn license_device_id(app: AppHandle) -> Result<String, String> {
license::get_or_create_device_id(&app)
}
+1
View File
@@ -2,6 +2,7 @@ pub mod ai;
pub mod deep_link;
pub mod files;
pub mod known_hosts;
pub mod license;
pub mod local_terminal;
pub mod serial;
pub mod ssh;