Files
mnote/design/05-editor-mainline/done/5-20-resource-tab-close-confirm-checklist-v1.md
T
lix-2026 1956a8a21a chore: align mvp design governance
- 统一 local-first MVP 后阶段架构口径,补充 process 执行总序和 Reasonix 协作记录

- 归档已完成的 design checklist,标注参考型 process,更新 AGENTS/REASONIX/架构文档

- 补充文件树/主编辑器下载与上下文菜单相关实现、bug 记录和 smoke 脚本

验证:git diff --check;codegraph sync .;cargo test -p mnote-web;node --check scripts/task476-filetree-editor-context-menu-download-smoke.js
2026-05-21 09:04:13 +08:00

1.9 KiB

5-20 Resource Tab Close Confirm Checklist v1

状态:done

归档说明(2026-05-21):resource tab close guard 可见提示已完成。

日期:2026-05-20

Owner:主编辑区 resource tab close guard / web_shell.rs

1. 目标

补齐 P0-2 的可见关闭防护:resource tab 已能检测 dirty/saving/hasExternalConflict,但当前只是 console.warn 并阻止关闭。需要补上用户可见的最小确认/提示 UI,避免“点击无反应”。

2. 允许修改范围

  • rust/crates/mnote-web/src/routes/web_shell.rs
  • rust/crates/mnote-web/src/ssr/styles.rs
  • scripts/task460-resource-tab-close-dirty-smoke.js
  • 可新增一个聚焦 smoke

3. 禁止事项

  • 不引入完整 VSCode working copy service。
  • 不改变 resource markdown / text / code 的保存事实源。
  • 不实现完整 discard/undo 体系;本轮只做可见提示和明确阻止。

4. Checklist

  • dirty 关闭时显示明确提示,说明资源有未保存更改。
  • saving 关闭时显示明确提示,说明正在保存。
  • hasExternalConflict 关闭时显示明确提示,说明存在外部冲突。
  • tab 上保留 data-mnote-resource-close-guard 与可测试状态。
  • 提示 UI 可被后续关闭尝试更新,不堆积多个弹层。
  • 新增或更新 smoke 覆盖点击关闭后出现提示,而不是静默无响应。

5. 验收

  • node --check scripts/task460-resource-tab-close-dirty-smoke.js
  • node scripts/task460-resource-tab-close-dirty-smoke.js
  • cargo test -p mnote-web web_shell -- --test-threads=1

5.1 本轮执行记录

  • 已合入:showResourceTabCloseGuardNotice,对 dirty / saving / hasExternalConflict 输出可见提示。
  • 已验证:task460 断言可见提示存在且重复点击不堆叠。
  • 保留约束:仍只阻止关闭,不实现 discard/undo。

6. 非目标

  • 不做真正丢弃更改按钮。
  • 不做保存队列或 retry 策略。