|
| 1 | +# Release 0.2.4 |
| 2 | + |
| 3 | +**发布日期**: 2025-10-24 |
| 4 | + |
| 5 | +## 🎉 主要更新 |
| 6 | + |
| 7 | +### 🆕 新功能 |
| 8 | + |
| 9 | +#### 1. **WireGuard 配置导入功能** |
| 10 | +- ✨ 支持一键导入 `.conf` 格式的 WireGuard 配置文件 |
| 11 | +- 🤖 自动解析配置文件内容(Interface 和 Peer 部分) |
| 12 | +- 🔍 智能检测运行模式: |
| 13 | + - 单个 Peer → 客户端模式 |
| 14 | + - 多个 Peer → 服务端模式 |
| 15 | +- 📋 自动填充配置字段: |
| 16 | + - PrivateKey (私钥) |
| 17 | + - Address (本地地址) |
| 18 | + - DNS (DNS 服务器) |
| 19 | + - MTU (最大传输单元) |
| 20 | + - Peer 配置 (PublicKey, Endpoint, AllowedIPs, PresharedKey 等) |
| 21 | +- 🔑 自动计算并显示公钥 |
| 22 | + |
| 23 | +#### 2. **二维码图像导入功能** ⭐ 新增 |
| 24 | +- 📸 支持从二维码图像文件导入 WireGuard 配置 |
| 25 | +- 🖼️ 支持的图像格式:PNG, JPG/JPEG, GIF, BMP, WebP |
| 26 | +- 🔧 自动识别二维码内容并解析配置 |
| 27 | +- ⚙️ 完整的错误处理和用户提示 |
| 28 | +- 📲 与文件导入共用一套配置解析逻辑,确保一致性 |
| 29 | + |
| 30 | +### 🎨 UI/UX 改进 |
| 31 | + |
| 32 | +- **导入按钮重设计**: |
| 33 | + - 新增两个并排的导入按钮(各占 50% 宽度) |
| 34 | + - `📥 文件导入` - 从配置文件导入 |
| 35 | + - `📱 二维码导入` - 从二维码图像导入 |
| 36 | + - 仅在客户端模式且新建配置时显示 |
| 37 | + |
| 38 | +- **模式选择器优化**: |
| 39 | + - 清理了不必要的导入选项 |
| 40 | + - 简化了选择流程,聚焦于模式选择 |
| 41 | + |
| 42 | +### 🔧 技术改进 |
| 43 | + |
| 44 | +#### 后端 (Rust/Tauri) |
| 45 | +- 新增 `read_file_as_base64` 命令用于二进制文件读取 |
| 46 | +- 支持返回 Base64 编码的文件内容,便于前端处理二进制数据 |
| 47 | +- 完整的错误处理和提示 |
| 48 | + |
| 49 | +#### 前端 (React) |
| 50 | +- 新增 `jsqr@1.4.0` 依赖用于二维码识别 |
| 51 | +- 实现 `parseWireGuardConfig()` 函数(~90 行): |
| 52 | + - 支持 INI 格式配置文件解析 |
| 53 | + - 正确处理多个 Peer 配置 |
| 54 | + - 自动跳过注释行和空行 |
| 55 | + - 支持两种 PSK 格式(PresharedKey 和 PreSharedKey) |
| 56 | + |
| 57 | +- 实现 `handleImportFromQrcodeImage()` 函数(~120 行): |
| 58 | + - 文件选择对话框与图像格式筛选 |
| 59 | + - Canvas API 获取图像数据 |
| 60 | + - jsQR 库识别二维码 |
| 61 | + - 完整的配置解析和验证流程 |
| 62 | + - 自动打开配置表单 |
| 63 | + |
| 64 | +### 📝 文档更新 (v0.2.3 → v0.2.4) |
| 65 | + |
| 66 | +重构了项目 README,包含: |
| 67 | +- 🌟 详细的功能特性列表 |
| 68 | +- 📸 应用界面预览 |
| 69 | +- 🛠️ 技术栈说明 |
| 70 | +- 📦 安装指南和系统要求 |
| 71 | +- ⚠️ macOS 用户注意事项(解决未签名应用的问题) |
| 72 | +- 🚀 快速开始指南 |
| 73 | +- 📂 项目架构和目录结构说明 |
| 74 | +- 🔗 相关资源链接 |
| 75 | + |
| 76 | +--- |
| 77 | + |
| 78 | +## 📊 提交统计 |
| 79 | + |
| 80 | +| 类型 | 提交数 | 说明 | |
| 81 | +|------|--------|------| |
| 82 | +| feat | 3 | 新功能实现 | |
| 83 | +| docs | 1 | 文档更新 | |
| 84 | +| chore | 1 | 版本更新 | |
| 85 | +| **总计** | **5** | | |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +## 📝 提交详情 |
| 90 | + |
| 91 | +### feat(tauri): 添加文件读取功能并支持导入 WireGuard 配置 |
| 92 | +- 新增 Tauri 命令 `read_file_content` 用于读取文件内容 |
| 93 | +- 前端实现配置文件导入和解析逻辑 |
| 94 | +- 添加 dialog 权限声明 |
| 95 | +- 支持自动检测运行模式 |
| 96 | + |
| 97 | +**文件变更**: |
| 98 | +- `src-tauri/src/commands/misc_commands.rs` (+6) |
| 99 | +- `src-tauri/src/lib.rs` (+1) |
| 100 | +- `src-tauri/capabilities/default.json` (+1) |
| 101 | +- `src/pages/TunnelManagementView/index.jsx` (+161) |
| 102 | +- `src/pages/TunnelManagementView/components/ModeSelector.jsx` (+22/-4) |
| 103 | + |
| 104 | +### feat(TunnelManagementView): 调整模式选择器并优化配置导入逻辑 |
| 105 | +- 将导入按钮位置从模式选择器移至配置表单内 |
| 106 | +- 限制导入功能仅在适当的上下文显示 |
| 107 | +- 优化用户导入流程 |
| 108 | + |
| 109 | +**文件变更**: |
| 110 | +- `src/pages/TunnelManagementView/index.jsx` (+31/-24) |
| 111 | +- `src/pages/TunnelManagementView/components/ModeSelector.jsx` (+22/-44) |
| 112 | + |
| 113 | +### feat(tunnel): 新增从二维码图像导入配置功能 |
| 114 | +- 新增 `read_file_as_base64` 后端命令用于二进制文件读取 |
| 115 | +- 集成 `jsqr@1.4.0` 库进行二维码识别 |
| 116 | +- 实现完整的二维码导入流程 |
| 117 | +- 支持 PNG, JPG, GIF, BMP, WebP 等多种图像格式 |
| 118 | + |
| 119 | +**文件变更**: |
| 120 | +- `package.json` (+1) |
| 121 | +- `src-tauri/src/commands/misc_commands.rs` (+7) |
| 122 | +- `src-tauri/src/lib.rs` (+1) |
| 123 | +- `src/pages/TunnelManagementView/index.jsx` (+167/-16) |
| 124 | + |
| 125 | +### docs(readme): 重构 README 文档结构与内容 |
| 126 | +- 重新组织文档结构,分为功能特性、技术栈、安装指南等清晰章节 |
| 127 | +- 补充应用界面预览和详细功能描述 |
| 128 | +- 增加 macOS 用户首次运行应用的解决方案 |
| 129 | +- 更新项目目录结构和开发指引 |
| 130 | +- 添加安全性、贡献指南和相关资源链接 |
| 131 | + |
| 132 | +--- |
| 133 | + |
| 134 | +## 🔧 技术细节 |
| 135 | + |
| 136 | +### WireGuard 配置解析支持 |
| 137 | + |
| 138 | +**Interface 配置**: |
| 139 | +- ✅ PrivateKey - 本地私钥 |
| 140 | +- ✅ Address - 本地 IP 地址 |
| 141 | +- ✅ DNS - DNS 服务器 |
| 142 | +- ✅ MTU - 最大传输单元 |
| 143 | + |
| 144 | +**Peer 配置**: |
| 145 | +- ✅ PublicKey - 对端公钥 |
| 146 | +- ✅ PresharedKey / PreSharedKey - 预共享密钥(两种格式支持) |
| 147 | +- ✅ Endpoint - 对端连接地址 |
| 148 | +- ✅ AllowedIPs - 允许的 IP 范围 |
| 149 | +- ✅ PersistentKeepalive - 保活间隔 |
| 150 | + |
| 151 | +### 二维码识别 |
| 152 | + |
| 153 | +- 使用纯 JavaScript 库 `jsqr` 实现,无需服务器支持 |
| 154 | +- 支持多种图像格式自动转换 |
| 155 | +- 完整的错误处理: |
| 156 | + - 无法识别二维码时提示用户 |
| 157 | + - 缺少必要字段时验证并告知 |
| 158 | + |
| 159 | +--- |
| 160 | + |
| 161 | +## 🐛 已知问题 & 注意事项 |
| 162 | + |
| 163 | +无新增已知问题 |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +## 🙏 贡献者 |
| 168 | + |
| 169 | +- @mrtian2016 |
| 170 | + |
| 171 | +--- |
| 172 | + |
| 173 | +## 📦 依赖更新 |
| 174 | + |
| 175 | +### 新增依赖 |
| 176 | +- `jsqr@1.4.0` - 前端二维码识别库 |
| 177 | + |
| 178 | +### Rust 依赖 |
| 179 | +- 已有的 `base64` 库用于 Base64 编码 |
| 180 | + |
| 181 | +--- |
| 182 | + |
| 183 | +## 🚀 后续计划 |
| 184 | + |
| 185 | +- [ ] 支持从摄像头扫描二维码(移动端可用) |
| 186 | +- [ ] 增强配置导入的验证和错误提示 |
| 187 | +- [ ] 支持拖放导入配置文件 |
| 188 | +- [ ] 配置导入历史记录 |
| 189 | + |
| 190 | +--- |
| 191 | + |
| 192 | +## 📥 升级指南 |
| 193 | + |
| 194 | +### 从 0.2.3 升级到 0.2.4 |
| 195 | + |
| 196 | +1. 下载最新版本安装包 |
| 197 | +2. 卸载旧版本 |
| 198 | +3. 安装新版本 |
| 199 | +4. 可选:删除旧的临时配置文件 |
| 200 | + |
| 201 | +升级过程中所有已保存的隧道配置和历史记录都会被保留。 |
| 202 | + |
| 203 | +--- |
| 204 | + |
| 205 | +## 🔐 安全性 |
| 206 | + |
| 207 | +- 所有文件读取操作都在本地进行,无网络传输 |
| 208 | +- 二维码扫描完全离线,不涉及第三方服务 |
| 209 | +- 隐私友好:配置信息仅存储在本地设备 |
| 210 | + |
| 211 | +--- |
| 212 | + |
| 213 | +**版本号**: v0.2.4 |
| 214 | +**发布时间**: 2025-10-24 |
| 215 | +**下一版本计划**: v0.2.5 (ETA: 待定) |
0 commit comments