Skip to content

feat(buddy): 新增工作区文件安全读改(文件管理器闭环 + Windows 回收站大小写修复) - #242

Open
QAyong wants to merge 2 commits into
useLexora:masterfrom
QAyong:codex/feature-workspace-file-management
Open

QAyong wants to merge 2 commits into
useLexora:masterfrom
QAyong:codex/feature-workspace-file-management

Conversation

@QAyong

@QAyong QAyong commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

背景与关联 / Context and related issue

  • 问题或目标 / Problem or goal: 文件树已有浏览、编辑、预览,但缺少"创建 → 编辑 → 重命名 → 删除"的整理闭环;同时原生 helper 的路径校验过严,在部分 Windows 卷上会把正常操作判为不安全并拒绝——例如卷上回收站根目录的存储名是全大写 $RECYCLE.BIN 时,柄取回的真实路径与请求路径只差大小写,比较失败会让该卷所有"移到回收站"都被拒绝。
  • 关联 Issue / Related issue: N/A

主要改动 / Changes

  • 变更 / Change:
    • 原生侧新增 file_mutation 模块:按句柄逐级 pin 目录、拒绝重解析点、用句柄真实路径校验请求路径,失败一律 fail-closed(不删除、不覆盖、不移动);--mutate-entry 支持新建、重命名、删除、移到回收站。
    • 路径比较改为 Windows 语义(ASCII 大小写不敏感),修复上面说的回收站问题;非 ASCII 大小写差异仍 fail-closed,词法包含判断仍区分大小写。
    • 服务侧新增空间文件变更 RPC(新建/重命名/删除/移到回收站),复用既有空间目录授权与分页读取。
    • 渲染侧新增 WorkspaceFileMutationGuard 与 WorkspaceFileOperations:操作前校验资源仍在授权目录内;被拒绝时视图标记 blocked(编辑器转只读并提示);删除已打开且未保存的文件时必须由用户选择保存/放弃/取消;重命名后同步编辑副本、工作台视图路径、标签标题与目录范围。
    • 文件树右键菜单与对话框(新建文件/文件夹、重命名、删除、移到回收站),失败给出可重试提示。
    • 新增测试:原生 file_mutation、平台层 mutateBoundedEntry、服务层空间文件变更、渲染层 guard 与 operations。

验证 / Verification

  • 自动检查 / Automated checks: cargo fmt --check、cargo clippy -D warnings、cargo test --locked --manifest-path apps/buddy/native/Cargo.toml --workspace;buddy 的 unit/runtime/platform 相关 vitest 用例(file mutation、workspace file operations、space file service、file tree menu)。
  • 手动验证 / Manual verification: Windows 11 上在回收站目录存储名为全大写的 D: 卷把文件移到回收站并还原;重命名/删除已打开的干净文件与有未保存内容的文件;对越权或只读目标操作被拒绝并提示。
  • 未执行 / Not run: macOS/Linux 原生文件变更后端未包含在本次改动中(当前仅 Windows 实现);完整 pnpm lint 未执行。

兼容与风险 / Compatibility and risks

  • 新增原生 helper 子命令、服务端 RPC 与渲染侧 API,旧的调用路径不变。
  • 所有文件变更操作 fail-closed:校验失败时不修改目标文件。
  • 仅放宽 ASCII 大小写比较,授权目录判定与词法包含检查保持原样。

界面变更 / UI changes

  • 文件树新增右键菜单与操作对话框;资源被判定为不可修改时编辑器显示只读提示。

@QAyong
QAyong force-pushed the codex/feature-workspace-file-management branch 2 times, most recently from bc76a25 to a66e8a9 Compare October 8, 2026 05:48
@QAyong
QAyong force-pushed the codex/feature-workspace-file-management branch from a66e8a9 to 03b2db2 Compare October 8, 2026 06:00
@shanyuhai123

Copy link
Copy Markdown
Contributor

当前看起来有一些问题:

  • 空间支持绑定同一目录,相关部分似乎没有处理好
  • 文件操作应该新增一个主体进行维护,这样多个文件处理后续应该会更好一点,学习下 VSCode 有没有对应方案?
  • 缺乏持久化记录、日志相关,如果学习上一步应该可以做到不错的方案

这部分修改你看是你继续调整,还是我进行追加?

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.

2 participants