From 344011a02c38759d467a84231103375fe8615a24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E8=88=AA=E5=AE=87?= <3364451258@qq.com>
Date: Thu, 28 May 2026 00:43:36 +0800
Subject: [PATCH] =?UTF-8?q?chore:=20=E6=95=B4=E7=90=86=E4=BB=93=E5=BA=93?=
=?UTF-8?q?=20=E2=80=94=20=E7=89=88=E6=9C=AC=E5=8F=B7=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E3=80=81README=20=E5=BE=BD=E7=AB=A0=E6=9B=B4=E6=96=B0=E3=80=81?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=20CHANGELOG=20=E5=92=8C=20CONTRIBUTING?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 版本号 4.0.0 → 4.2.0(tauri.conf.json, Cargo.toml, 窗口标题)
- README 徽章更新(tests 55→72, version 4.0.0→4.2.0)
- CHANGELOG.md 补充 v4.1 和 v4.2 变更记录
- 新增 CONTRIBUTING.md 贡献指南
- GitHub Release: v4.2.0 补充说明,旧 C 版本标记为 pre-release
Co-Authored-By: Claude Opus 4.7
---
CHANGELOG.md | 63 +++++++++++++++++++++++++++++++--------
CONTRIBUTING.md | 29 ++++++++++++++++++
README.md | 12 ++++----
src-tauri/Cargo.toml | 2 +-
src-tauri/tauri.conf.json | 4 +--
5 files changed, 89 insertions(+), 21 deletions(-)
create mode 100644 CONTRIBUTING.md
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 @@
-
+
-
+
---
@@ -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,