7.4 KiB
7.4 KiB
DiffLens 应用开发与版本迭代规范
适用项目:DiffLens(MetonaTeam / thzxx) 文档维护:随应用版本同步更新
1. 版本号总规范
版本号遵循 语义化版本(SemVer)三段式:x.y.z
x = 主版本号(Major)
y = 次版本号(Minor)
z = 补丁版本号(Patch)
本项目最重要的约束:
x永远是0,永远不要提升到1.0.0。 版本迭代只允许修改y和z,x保持0不变。
当前基线版本:0.4.2
2. x / y / z 各自的含义与规则
| 段位 | 值 | 何时提升 | 举例 |
|---|---|---|---|
x 主版本 |
恒为 0 |
永不提升 | 不生效 |
y 次版本 |
0, 1, 2, 3 … |
新增功能 / 界面较大调整 / 构建方式变更 | 0.1.0 → 0.2.0 |
z 补丁 |
0, 1, 2, 3 … |
Bug 修复 / 样式微调 / 文档 / 依赖小升级 | 0.1.0 → 0.1.1 |
何时走 y(次版本升级 0.x.z → 0.(x+1).0)
- 新增用户可见的功能特性
- UI / 交互有较大调整
- 引入新的差异能力(如导出报告、文件夹对比)
- 内部引擎算法 / 数据结构的兼容性变更
何时走 z(补丁升级 0.x.z → 0.x.(z+1))
- 修复 Bug、崩溃、显示异常
- 细微的样式 / 文案优化
- 文档补充、依赖补丁级升级
- 非功能性重构(不改变用户可见行为)
反例(禁止)
- ❌ 直接跳到
1.0.0或更高 - ❌ 只升
x不升y/z - ❌ 同时改
y与z(一次发布只应改动一段)
3. 版本演进示意
0.1.0 ← 初始版本(已发布)
0.1.1 ← 体验打磨补丁(已发布):拖拽编码识别 · 行级右键菜单 · 尾部换行显示修正
0.2.0 ← 导出差异报告(已发布):HTML / 纯文本 / Markdown 三种格式
0.2.1 ← 建立测试体系(已发布):Vitest 单元+组件测试 · 测试策略文档
0.2.2 ← 体验打磨(已发布):拖拽处处可用 · 手动粘贴对比 · 导出后一键定位 · 报告/可读性增强 · 仅限文本文件
0.2.3 ← 安装器优化(已发布):NSIS 向导式安装,支持手动选择安装目录
0.2.4 ← 健壮性与体验打磨(已发布):读取容错与 10MB 大文件防护 · 横向滚动同步 · 下拉点击外部/Esc 关闭 · 二进制误判预警
0.2.5 ← 一致性与边角修复(已发布):右键菜单边缘防溢出 · 粘贴入口 10MB 防护 · 拖拽读取失败提示 · 多文件拖拽提示 · 剪贴板统一走主进程 · 主进程异步读取
0.2.6 ← 主进程异步收尾与边角防护(已发布):保存报告异步写盘 · 拖拽解码 handler 异步化 · 空白粘贴拦截 · 超多行卡顿预警 · 清理 mac 无效签名配置 · 文档与测试同步
0.3.0 ← 大文件性能与差异导航增强(已发布):自研虚拟滚动 · 仅看差异过滤(折叠提示行) · F7/Shift+F7 导航快捷键 · 交换左右侧 · 忽略空行
0.3.1 ← 稳健性与测试补强(已发布):超长单行词级 diff 防护 · 打开对话框补“所有文件”筛选 · 虚拟滚动 minWidth 测试覆盖 · 滚动同步去锁化重构
0.3.2 ← 报告对齐与性能收尾(已发布):纯文本报告行号右对齐 · 超长行列宽封顶防卡顿 · 对话框与拖拽扩展名清单对齐 · 右键菜单打开时导航快捷键守卫 · 清理导出死属性
0.4.0 ← 差异计算 worker 化(已发布):大文件 diff 移入 Worker 后台计算不阻塞界面 · 输入去抖与过期任务丢弃(终止重建实现取消) · 小输入同步快路径 · 无 Worker 环境回退 · 计算中遮罩与导出禁用
0.4.1 ← worker 创建开销优化与文档对齐(已发布):worker 延迟至去抖到期才创建(去抖期内取消零创建开销,无 Worker 回退同样走去抖) · 质量门禁文档补 npm test · README 架构树补 hooks · Markdown 报告标题移出引用块 · 安装包排除开发期文件
0.4.2 ← 导出菜单溢出修复与报告可读性重设计(当前):底部工具栏导出菜单改向上弹出(修复超出窗口底边选不到) · HTML 报告全新设计(Hero 概览/人话结论/文件卡片/统计卡/图例/差异分块目录/相同段折叠可展开/打印亮色/窄屏适配,零 JS) · TXT 与 Markdown 报告头部补人话结论
0.5.0 ← 新增功能(候选:主进程解码 worker 化 · Playwright E2E · 文件夹对比)
...
0.y.z ← 长期停留,永不进入 1.x
4. 应用命名约束(三重一致)
交付给用户的所有可见名称必须统一为 DiffLens:
| 环节 | 名称 |
|---|---|
| 安装包文件名 | DiffLens-{version}-setup.exe |
| 安装后主程序 | DiffLens.exe |
| 开始菜单 / 桌面快捷方式 | DiffLens |
| 窗口标题 | DiffLens |
| 工程内部 name / productName | DiffLens |
注:
appId为内部安装标识(如com.metonateam.difflens),不展示给用户,不受此约束。
5. 开发流程
需求确认 → 方案权衡 → 开发实现 → 本地自测 → 类型检查 → 生产构建 → 代码评审 → 合并 → 发布
- 需求确认:明确目标,先梳理全貌,避免返工
- 方案权衡:涉及取舍时列出利弊,由负责拍板
- 开发实现:聚焦需求本身,不过度设计
- 本地自测:
npm run dev运行验证 - 质量门禁:见第 7 节
- 发布:见第 8 节
6. 分支与合并规范
main:唯一稳定主干,始终可运行、可发布- 功能分支:
feature/<功能名> - 修复分支:
fix/<问题描述>
main
└─ feature/xxx → (评审后合并回 main)
合并且无二次改动时,才允许 rebase 保持历史整洁;否则用普通合并提交。
7. 质量门禁(提交/推送前必须通过)
每次提交与推送前执行:
npm run typecheck # 类型检查(node + web 双端)
npm test # Vitest 单元 + 组件测试(覆盖率 80% 硬门禁)
npm run build # 生产构建(main/preload/renderer 三端)
任一命令失败则禁止提交;修复通过后再提交。与《测试策略与方案》第 7 节保持一致。
8. 发布流程
npm run build:win # Windows NSIS 安装包(在 Windows 上)
发布前 checklist:
- 更新
package.json的version到新的0.y.z - 更新本文件第 3 节演进记录
- 通过质量门禁(typecheck + build)
- 打标签并推送到远程
git.metona.cn/MetonaTeam/DiffLens - 如需发布安装包,生成对应平台产物与 Release 说明
9. 元信息维护表
| 文件 | 维护内容 |
|---|---|
package.json |
version(唯一版本来源)、name、productName 保持 DiffLens |
electron-builder.yml |
productName / executableName / artifactName 保持 DiffLens |
README.md |
特性描述与发布版本号随版本同步 |
| 本文件 | 第 3 节演进记录同步补写 |
版本号只以
package.json的version为唯一来源,其余打包产物名由它派生。
附:提交信息格式
采用约定式提交:
<type>: <描述>
feat: 新增功能 (配 y 版本)
fix: 修复问题 (配 z 版本)
docs: 文档变更
build: 构建/依赖
refactor: 重构(不改行为,配 z 版本)
例如:
feat: 新增导出差异报告→0.2.0fix: 修复 GBK 文件乱码→0.1.1
© 2026 MetonaTeam · thzxx · DiffLens