概述

Linx 在过去一周完成了从 Tauri v1 到 v2 的完整迁移,并在此基础上落地了多项核心功能:多标签终端、实时服务器监控、密码加密存储、Toast 通知系统,以及全新的服务器管理 UI。本文梳理这段时间的全部变更。

Tauri v2 迁移

项目从 Tauri v1 迁移到 v2,涉及配置结构、权限模型、构建流程的全面调整:

  • Cargo.toml:tauri/tauri-build 升级到 2,新增 tauri-plugin-opener
  • tauri.conf.json:重构为 v2 schema(app/build/bundle 顶层结构,移除 allowlist)
  • capabilities/default.json:用权限化的 ACL 替代旧的 allowlist
  • 解决了一系列 v2 API 变更:DisconnectCode::Normal → ByApplication、disconnect() 参数包裹 Some、channel.read_to_string 导入等

CI 也同步调整——Linux runner 固定到 ubuntu-22.04 以兼容 Tauri v1 依赖,发布改为 tag 触发。

多标签终端

原来的单连接模型替换为多标签系统:

  • 每个服务器连接独立一个标签页,支持自由切换
  • 双击服务器列表自动连接并打开新标签
  • 已有标签时双击自动重连而非重复打开
  • PTY 交互式 shell:基于事件的 start_shell / write_ssh / resize_ssh,非阻塞读写线程

实时监控面板

监控系统做了架构级重构,核心改进:

  • 独立连接:监控连接和 shell 连接分离,避免互相干扰
  • 网络速率:实时计算并显示上传/下载速率
  • CPU 逐核心:基于 tick 快照计算 CPU 使用率 delta,不再依赖 sysinfo 的解析
  • 凭据缓存:服务器密码缓存后可自动重连监控,断开后无需重新输入

密码加密存储

服务器密码使用 AES-256-GCM 加密后存储在 SQLite 中:

  • 加密密钥保存在 ~/.linx/.key
  • 读取时自动检测:明文密码自动迁移到加密存储
  • 新增 get_server_by_id / get_server_password 解密接口

服务器管理 UI

全新的服务器管理界面:

  • ServerDialog:创建/编辑/删除服务器的完整表单
  • GroupDialog:分组的创建/重命名/删除
  • ContextMenu:右键菜单支持编辑、删除、复制连接信息
  • 导入/导出:支持配置的 JSON 导入导出
  • 状态轮询:带 connectedServerId 门控的轮询机制

Toast 通知系统

集成 ToastProvider 到应用根组件,支持全局消息提示。TabBar 和 Toast 样式同步添加。

UI 样式优化(6/6)

最新一轮视觉调整:

  • 分组标题:左侧蓝色边框 + 背景色 + 加粗字体
  • 服务器项之间添加分隔线
  • 整体文字颜色亮度提升
  • Windows MSI 安装包中文支持

CI/CD

  • 新增 GitHub Actions 工作流,构建 .deb(Linux)和 .msi(Windows)
  • 矩阵构建加 fail-fast: false,各平台独立运行
  • 发布改为 tag 触发:推送 v* 标签时自动构建并创建 Release

已知问题

  • 分组内的服务器列表在高频操作时偶有闪烁,后续考虑虚拟滚动优化
  • 监控面板的网络速率在连接断开时会短暂显示异常值

Linx 是一个基于 Tauri v2 的 SSH 终端管理桌面应用,支持多标签终端、实时服务器监控、分组管理和配置导入导出。