diff --git a/CHANGELOG.md b/CHANGELOG.md index e9b728e..fd04d7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,38 +1,77 @@ # Changelog -## v4.0.0 (2026-05-26) +## [4.2.0] — 2026-05-28 + +### 新增 +- 路径启用/禁用功能:复选框控制 PATH 中每条路径是否生效 +- PathEntry 数据类型:替代原有 `string[]`,支持 `enabled` 状态 +- `disabled.json` 持久化禁用状态的独立存储 +- E2E 测试框架:Playwright + 4 条核心流程测试 +- CI/CD 流水线:TypeScript + Rust 自动检查,Release 自动构建 + +### 修复 +- undo/redo after toggle 未持久化 disabled 状态 +- expand_env_vars 两次 API 调用间缓冲区截断风险 +- E2E mock load_disabled_state 返回格式与 Rust 后端不匹配 +- 双 hive 保存失败时错误信息只显示一个 +- 导入 both 产生两条 undo 记录,需两次 Ctrl+Z +- 备份失败警告被"保存成功"覆盖 +- 非连续多行删除后 undo 恢复到错误位置 +- backup_registry 未 await 导致竞态保存新值 + +### 变更 +- 导入改用原生文件对话框(`@tauri-apps/plugin-dialog`) +- PathTable 环境变量展开限流 20 并发 +- CI 切换到 MSVC 工具链 +- 版本号统一为 4.2.0 + +--- + +## [4.1.0] — 2026-05-26 + +### 新增 +- app-store 单元测试:25 个测试覆盖 CRUD/undo-redo/loadPaths/savePaths +- 72 个前端单元测试 + 10 个 Rust 单元测试 + +### 修复 +- NSIS 安装包缺少 WebView2Loader.dll +- AppShell overflow-hidden 导致窗口无法上下滚动 + +### 变更 +- 清理 LOW 问题:样式去重、死代码删除、命名修正 +- 抽取 Modal 共享组件、统一按钮样式 +- 支持 JSON/CSV/TXT 三种导入导出格式 + +--- + +## [4.0.0] — 2026-05-25 ### 重大变更 - 完全重写为 Tauri 2.x + React 19 + TypeScript + Rust 技术栈,替代原有的 C + IUP GUI。 ### 新增 - -- 现代 Web UI(React + Tailwind CSS 4 + Zustand) +- 现代 Web UI(React 19 + Tailwind CSS 4 + Zustand) - 深色/浅色模式切换 - 中英文界面即时切换 - 路径有效性颜色编码(红色无效、橙色重复) - 环境变量展开悬停提示 - 文件夹拖拽添加路径 - 保存前 PATH 长度检查 -- 66 个前端单元测试 + 10 个 Rust 单元测试 ### 改进 - -- 安装包体积从 ~3MB 降至 ~8MB(含 WebView2 运行时) - 完整撤销/重做支持(8 种操作类型,50 步历史) - JSON/CSV/TXT 三种格式导入导出 - 合并预览查看系统+用户路径 - 类型安全:TypeScript strict 模式 + Rust 编译期检查 +- NSIS 安装包,约 8MB ### 移除 - - 旧 C + IUP + Lua + gettext 代码库 - Lua 配置引擎 → JSON 配置文件 - gettext 国际化 → i18next -### 已知限制 +--- -- 需要 Windows 10+ 系统预装的 WebView2 运行时 -- 内存占用约 50MB(旧版约 15MB) -- 文件系统路径验证在清理功能中为同步检查(不含实际目录存在性验证) +## [3.x] 及更早 + +C + IUP GUI 版本,已停止维护。历史发布记录见 [GitHub Releases](https://github.com/LHY0125/PathEditor/releases)。 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ae96961 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# 贡献指南 + +感谢你对 PathEditor 的关注! + +## 提交 Issue + +- 使用清晰的标题描述问题 +- 提供复现步骤 +- 附上系统信息(Windows 版本、是否管理员) +- 如果是功能建议,说明使用场景 + +## 提交 Pull Request + +1. Fork 仓库并从 `main` 创建功能分支 +2. 运行 `npm test` 和 `cargo check` 确保通过 +3. 遵循项目代码规范: + - TypeScript `strict: true`,零编译错误 + - 前端核心逻辑在 `src/core/`,纯函数,零依赖 + - Rust `unsafe` 块必须有 `// SAFETY:` 注释 +4. 新功能应包含测试 + +## 本地开发 + +```bash +npm install +npx tauri dev +``` + +详见 [README.md](./README.md#开发)。 diff --git a/README.md b/README.md index 2931d2a..84d7ed2 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@

- version + version tauri react rust typescript license - tests + tests

--- @@ -19,7 +19,7 @@ PathEditor 是 Windows PATH 环境变量的可视化管理工具。支持系统变量和用户变量的增删改查、拖拽排序、一键清理无效路径、导入导出以及完整的撤销/重做。 -v4.0 使用 **Tauri 2.x + React 19 + TypeScript + Rust** 完全重写,替代了原有的 C + IUP GUI。 +v4.2 使用 **Tauri 2.x + React 19 + TypeScript + Rust** 完全重写,替代了原有的 C + IUP GUI。 ## 截图 @@ -41,7 +41,7 @@ _[待补充]_ - 环境变量路径(含 `%VAR%`)悬浮展开预览 ### 撤销/重做 -- 支持 8 种操作类型,最多 50 步历史 +- 支持 9 种操作类型,最多 50 步历史 - 新增、删除、编辑、移动、清理、清空、导入均可撤销 ### 导入/导出 @@ -63,7 +63,7 @@ _[待补充]_ ## 安装 -从 [Releases](https://github.com/LHY0125/PathEditor/releases) 下载最新版 `PathEditor_4.0.0_x64-setup.exe` 安装。 +从 [Releases](https://github.com/LHY0125/PathEditor/releases) 下载最新版 `PathEditor_4.2.0_x64-setup.exe` 安装。 或从源码构建: @@ -106,7 +106,7 @@ cd src-tauri && cargo test | 国际化 | i18next | | 桌面框架 | Tauri 2.x | | 后端 | Rust (winreg + windows-rs FFI) | -| 前端测试 | Vitest (45 个测试) | +| 前端测试 | Vitest (72 个测试) | | Rust 测试 | cargo test (10 个测试) | | 构建 | Vite | | 打包 | NSIS | diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index e813573..17b4912 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "patheditor" -version = "4.0.0" +version = "4.2.0" description = "Windows PATH Environment Variable Editor" authors = ["刘航宇"] license = "MIT" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index df173ca..cf0356e 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "PathEditor", - "version": "4.0.0", + "version": "4.2.0", "identifier": "com.liuhangyu.patheditor", "build": { "frontendDist": "../dist", @@ -12,7 +12,7 @@ "app": { "windows": [ { - "title": "PathEditor v4.0", + "title": "PathEditor v4.2", "width": 900, "height": 700, "minWidth": 800,