Skip to content

feat(buddy): 支持文件编辑器自动保存 - #419

Open
QAyong wants to merge 1 commit into
useLexora:masterfrom
QAyong:codex/file-editor-auto-save
Open

QAyong wants to merge 1 commit into
useLexora:masterfrom
QAyong:codex/file-editor-auto-save

Conversation

@QAyong

@QAyong QAyong commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

背景与关联 / Context and related issue

  • 为什么要做:文件管理器中的文本修改此前主要依赖手动保存。增加可关闭的延迟自动保存,减少漏保存,同时沿用已有版本检测、草稿恢复和关闭确认保护。
  • 关联 Issue:N/A。

主要改动 / Changes

  • 做了什么:新增工作台级 files.autoSave 配置,默认 afterDelay,关闭值为 off;设置通过现有工作台持久化服务保存,同一工作台内其他空间的已打开文本文件也受该设置控制。
  • 使用现有 VueUse useDebounceFn,停输 1000 毫秒后调用现有 WorkingCopyService.save();同一工作副本多视图共享任务,多文件独立防抖,保存期间继续修改会补存最新内容。不新增依赖或其他文件写入通道。
  • 仅编辑模式显示“自动保存 → 紧凑开关 → 保存”,预览和源码模式隐藏入口但不改变后台策略。开关轨道为 26×14 像素,保留可见标签、无障碍关联和 22 像素高的点击区域;窄工具栏支持换行。
  • 关闭开关时取消尚未触发的自动保存,保留修改;有修改时可以通过保存按钮或 Ctrl+S 手动保存,无修改时保存按钮置灰。开启时仍保留立即手动保存。
  • 对保存失败、磁盘冲突、恢复草稿、关闭确认、文件操作保护、资源迁移和释放保留暂停或显式确认;提供失败重试与草稿恢复保存入口,中英文状态反馈完整。
  • 增加自动保存调度和界面联动测试,并补充默认配置断言。上游适配保留其工作台布局、既有测试结构及原子样式,不携带下游品牌、Office 或其他定制;不包含 docs/**。

验证 / Verification

  • 自动检查:此上游 PR 分支未安装依赖、未运行本地类型检查或测试,按仓库约定由上游 CI 验证;已核对差异范围、冲突标记和 git diff --check。
  • 移植前验证:下游原实现的初版 10 份定向测试共 109 个用例通过;最终界面调整后,两份相关测试共 38 个用例、应用类型检查及改动文件 ESLint 通过。这些是移植前结果,不代表当前上游分支已通过同样检查。
  • 手动验证:下游原实现已在 Windows 桌面开发预览中完成用户验收,包含工具栏反馈后的顺序、尺寸、编辑模式入口与手动保存联动调整;上游分支未单独启动桌面预览。
  • 未执行:本 PR 分支本地完整测试、Playwright E2E、真实文件读回专项、重启专项、打包、安装包验证以及 macOS/Linux 实机验证。

兼容与风险 / Compatibility and risks

  • 无数据库迁移、原生代码或依赖变更;设置默认开启会使可编辑文本文件真实写盘,并非仅保存备份。开关提示明确其工作台作用域,关闭后可恢复手动保存方式。
  • 所有写入仍由现有保存服务执行,不绕过授权、etag 检查、冲突或文件操作保护,不对失败后台无限重试。
  • 自动保存已经完成的磁盘写入不会被之后关闭文件时的“不保存”撤销;关闭确认期间暂停待触发任务,保留用户原有选择语义。
  • 恢复草稿即使默认开启,也需要用户显式确认保存后才恢复自动保存,不因继续输入或切换全局开关而静默覆盖磁盘。
  • 多窗口设置即时同步不在本期范围。请重点审阅关闭计划的暂停/恢复、保存中继续修改及异常状态的保护逻辑。

界面变更 / UI changes

  • 编辑模式工具栏新增“自动保存”文字和紧凑开关,置于保存按钮前;预览、源码和只读预览不显示此入口。
  • 增加等待、保存中、保存后仍有修改、失败、冲突、恢复草稿及暂停等状态反馈,失败和恢复提供就近操作。
  • 下游 Windows 开发预览已获用户确认;未上传截图或录屏,上游适配后的效果仍待 CI 与审阅确认。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant