第二轮产品复核
日期:2026-10-18。针对当前 Flutter 产品继续检查,不以浏览器原型代替实际应用,也不把通过测试等同“功能全部完成”或“98% 还原”。本轮保持 0.3.1+6,不创建发布标签;下述修复尚未进入公开的 v0.3.1 安装包。
已确认并修复
| 场景 | 原问题 | 本轮处理 |
|---|---|---|
| 恢复快照损坏或写入中断 | 仅依赖主文件不足以保护草稿 | 依次读取主文件、已落盘临时文件、上一份可读快照;拒绝损坏字段,保存时捕获快照并串行写入。明确丢弃时删除备份,避免已丢弃内容重新出现 |
| 设置读取失败 | 设置与草稿在同一异常边界,可能跳过旧草稿读取;新写作后的快照会遗漏旧草稿 | 恢复读取独立执行;完全无法读取恢复记录时阻止新草稿覆盖它,保留文件供下次启动重试;没有新草稿时不阻止正常关闭。自动保存仍默认关闭 |
| 关闭期间继续输入 | 保存或刷新恢复记录时新增的输入,可能在关闭后丢失 | 保存全部后复查脏文档,最终恢复写入前后复查修改版本;有新内容则保留窗口,允许再次保存后关闭 |
| 非 Windows 源码 | 固定高度行号与真实换行、文字缩放不一致 | 按真实输入控件的光标几何绘制可见行号,匹配字体与缩放;覆盖空行和末尾换行,按文档恢复滚动位置 |
| 窄桌面标题栏 | 菜单和工具占满空间,窗口关闭按钮可能被挤出 | 按实测文字宽度选择完整菜单、简化助记符或收纳菜单;窗口按钮保持在右侧,七类菜单和 Alt 菜单入口保留 |
| 排版浮层 | Windows 原生窗口中 Esc 偶尔无法关闭 | 浮层提供明确的焦点与 Esc 快捷键;控件和原生集成均检查打开后、选卡后关闭 |
| 内置阅读与关于 | 鸣谢、日志跟随界面强调色;MIT 链接偏到信息列右侧 | 内置正文使用独立白底/深色阅读配色,保留外框主题;MIT 与同列信息左对齐 |
| 检查更新 | 只显示远端版本,不能准确说明是否有更新 | 按语义版本比较,不把构建号当新版本;区分最新、可更新、本机较新、无正式版本与本机版本未知。请求含整体截止时间、体积限制、销毁取消和失败重试,发布页限定为本仓库 |
| 文档阅读链接 | 无法通过学习资料中的相对链接打开另一篇文档 | 支持相对 .md、.markdown、.txt 与 文档.md#章节,中文/空格路径和上级目录;复用已打开文档,保留未保存内容。异步完成不抢走较新的文档焦点,失败时保留原文并提示 |
设置异常和关闭期间输入的关键回归先复现失败,再修复复跑。草稿写入失败时不能假装保存成功;若恢复文件始终不可读,有未保存新内容的用户需先保存原文件,再关闭或重启重试。
本地文档链接只在 Vex 内打开支持的文本文件,不通过系统执行程序,也不自动访问网络共享。没有实际路径的手机选择器副本或未保存草稿,不能假设相对目录存在;会提示先保存。手机系统文件提供程序授权仍需真机验收。演示模式的链接行为不在本次跨文档导航范围内。
自动回归
| 工作目录 | 检查 | 结果 |
|---|---|---|
packages/vex_markdown_core |
dart test |
24 项通过 |
packages/vex_editor |
flutter test --no-pub |
223 项通过 |
packages/vex_mindmap |
flutter test --no-pub |
16 项通过 |
apps/vex |
flutter test --no-pub |
251 项通过 |
| 仓库根目录 | flutter analyze --no-pub --fatal-infos |
无问题 |
| 仓库根目录 | 全部已跟踪 Dart 文件的格式检查 | 无需修改;Windows 分批传参,避免命令行长度上限 |
| 仓库根目录 | python -m unittest discover -s scripts/tests -v |
55 项通过 |
| 仓库根目录 | design/scripts/verify*.cjs |
七组原型契约通过 |
| 仓库根目录 | python scripts/sync_brand_assets.py --check |
与品牌源一致 |
合计 514 项 Dart/Flutter 测试,不包括下述一项 Windows 原生集成;测试数不换算为视觉还原率。非 Windows 源码行号用 Android、iOS、macOS、Linux 平台主题与不同文字缩放验证,实际运行平台仍是本机测试环境,不是上述系统的真机认证。
Windows 原生检查
apps/vex/integration_test/editor_ux_test.dart 通过真实 Windows Debug 构建和原生窗口运行,生成 11 张非空截图:
- 简约/书卷排版的斜体示例、源码行号、四级标题排版浮层。
- 明/暗关于及可更新状态、800px 桌面菜单和右侧窗口按钮。
- 明/暗独立更新日志阅读窗口。
- 1280px 与 390px 的跨文档链接和目标章节跳转。
截图位于本机 artifacts/product-audit-2026-10-18/,生成产物不提交。已核看上述截图,确认浮层没有残留在关于对话框后、信息列左对齐、正文颜色独立和窄窗口无操作按钮遮挡。标题间距仍较宽松,属于后续视觉校准项;本轮不据此宣称全部语法和排版无问题。
集成中的更新结果由内存测试服务提供,不是真实下载/安装;链接测试使用内存文件服务与真实渲染/导航,不能冒充系统文件提供程序测试。原生文件读取与目录枚举另有临时目录测试。390px 为 Windows 窄窗口,不代表物理手机、触控软键盘或系统输入法验收。
$env:VEX_CAPTURE_DIR = Join-Path $PWD 'artifacts/product-audit-2026-10-18'
$env:CMAKE_BUILD_PARALLEL_LEVEL = '1'
$env:CL = '/MP1'
Push-Location apps/vex
try {
flutter test --no-pub integration_test/editor_ux_test.dart -d windows
} finally {
Pop-Location
}重新审视产品
以下按用户风险和实际使用影响排序,均未宣布完成:
| 优先级 | 仍需完成 | 用户影响与验收方向 |
|---|---|---|
| 高 | 完整更新流程 | 当前只有检查与发布页入口。需匹配平台/架构、流式下载、进度/取消/重试、SHA256 校验、启动安装器和未保存内容保护;Windows 必须确认安装器真正就绪后再退出。参考相邻 Vex 的 VexUpdateService.cs、WindowsUpdateInstaller.cs 和共享 Toolkit,不能把打开网页当作自动更新 |
| 高 | MCP 系统安全凭据 | 令牌仍随普通偏好持久化,尚未接入系统凭据库。已有本机绑定、鉴权和修改确认不等于静态凭据安全;需验证系统解锁失败和更换令牌的行为 |
| 高 | 大文件与真实输入 | 非 Windows 源码仍为整篇 TextField,行号修复不等于长文档虚拟化。需在低配/无独显电脑及物理移动设备测文件切换、最差输入时延、滚动、章节跳转和系统中日文候选,不能用桌面窄窗口替代 |
| 中 | 复杂 Markdown 排版 | 常见代码、列表、斜体与链接已有回归,特殊行内公式、图片、引用式链接、上下标基线及全语法换行一致性仍需完善;阅读留白和字号应在统一字体/缩放下对照原型 |
| 中 | 原生安装与外部工作流 | macOS/Linux 原生运行、安装/升级/卸载及实际打印、Word 页面、系统文件授权仍需验收;本轮没有重装各平台安装包,安装器的多 DPI 清晰度也未全面验证 |
| 中 | 文档导航的连续性 | 跨文档链接现在可用,但仍可补“返回上次阅读位置”的导航历史和演示内链接策略;需要与文件树/大纲跳转的操作习惯一起确定,不随意增加常驻按钮 |
| 持续 | 工程维护 | 工作区 ViewModel 较大、部分全局刷新粒度与外部文件轮询仍可改善;应在性能测量和职责边界明确后逐项拆分,不用无关重构混入功能修复 |
iOS IPA 与 HarmonyOS HAP 发布按用户确认继续暂缓。这不代表原生 iOS、鸿蒙手机/平板/电脑适配已经完成。98% 原型还原仍缺完整测量矩阵,本轮不升级版本或触发正式发布。
有疑问或建议,欢迎到 GitHub 提交 Issue 参与讨论。