Skip to content

[Feature] 命令列表:支持多选删除、全部删除、清空「内置命令」文件夹,并为删除提供恢复途径 #511

Description

@emo172

[Feature] 命令列表:支持多选删除、全部删除、清空「内置命令」文件夹,并为删除提供恢复途径

Summary (EN) — The saved-command manager only supports deleting commands one by one. This
request adds multi-select deletion, a "delete all" action, the ability to delete/clear the
built-in commands folder, and an undo / "restore built-in commands" path — currently a deleted
built-in command is a permanent tombstone with no restore entry.

通过命令行提交,无法填写网页表单。以下按 feature_request 模板字段组织。

Problem / pain point — 现在的痛点

命令列表目前只能逐条删除命令(每条都要走一遍确认对话框),没有批量操作能力:

  1. 无多选删除:列表只有单一游标选中(上下键移动高亮),不支持 Ctrl/Shift
    点选或复选框,想清理一批不用的命令只能一条条删、一条条确认。
  2. 无全部删除:没有「清空」入口,想重置整个列表同样只能逐条删。
  3. 「内置命令」文件夹无法删除或清空:单个内置命令自 v1.8.2
    起可以删除(持久墓碑),但「内置命令」这个文件夹行永远显示,也没有入口能一次删掉其中全部内置命令;想完全只用自定义命令的用户无法隐藏内置分组。
  4. 删除不可逆且无恢复入口:删除命令的确认框明示「删除后无法撤销」;内置命令删除写入
    deleted_builtins 墓碑后,没有任何「恢复默认内置命令」的入口,只能手工编辑 saved_commands.json
    或从备份恢复。
  5. 附带的不一致:删除自定义文件夹是即时生效、没有二次确认的,与删除命令(有确认对话框)的交互不一致,误点会直接丢掉整个分组。

Proposed solution — 希望的做法

  1. 列表支持多选(Ctrl/Shift 点选或复选框),选中后可一键删除所选命令;
  2. 提供「全部删除」入口,走单次事务落盘,并明确其作用范围(仅自定义命令 / 是否连带内置墓碑);
  3. 允许删除或清空「内置命令」文件夹:等价实现可以是「批量墓碑该文件夹下全部内置命令」并在空时隐藏该分组,或在设置中提供「隐藏内置命令」开关;
  4. 给删除加后悔药:参照 SSH 主机删除已有的 8 秒撤销 toast,或至少提供「恢复内置命令」(清空
    deleted_builtins 墓碑)的入口;
  5. 删除自定义文件夹补上与命令删除一致的二次确认。

Alternatives considered — 现在的替代办法

目前只能逐条删除并逐条确认;内置命令误删后,手工编辑 %APPDATA%\Pebrel\saved_commands.json、从
deleted_builtins 数组里删掉对应条目即可恢复(无 UI 途径)。

Platform / 平台

Windows(分析基于 Windows;三平台通用)

Related area / 相关范围

Settings / theme / layout / blur — 设置页、主题、布局(命令列表管理器)

How important is this to you? / 对你有多重要

Would improve my daily workflow / 每天都会用到

源码分析(供维护者参考,基于 main@b99383c)

现状能力矩阵(file:line 相对仓库根):

能力 现状 证据
单选删除(自定义命令) 支持,有确认对话框 nebula_app/src/gpui_shell/workspace/command_manager/rows.rs:192-207;command_manager.rs:454-550
单选删除(内置命令) 支持(v1.8.2 起墓碑持久删除) nebula_app/src/saved_commands.rs:188-206(remove 对 builtin: id 写 deleted_builtins);CHANGELOG.md:778
多选删除 不支持,仅单游标 nebula_app/src/gpui_shell/workspace.rs:687(command_manager_selected: usize)
全部删除 不支持,store 无批量/清空 API saved_commands.rs 仅 remove/remove_group
删除「内置命令」文件夹 不支持,按钮不渲染 command_manager/groups.rs:222, 285-298(BUILTIN_GROUP_ID 排除);虚拟分组每次渲染无条件追加 command_manager/groups.rs:57-60
恢复默认内置命令 不存在,墓碑无任何移除路径 deleted_builtins 仅出现在 saved_commands.rs:43,51,60,95,97,115,192,229 与 groups.rs:100
撤销模式(可借鉴) SSH 主机删除有 8 秒撤销 toast nebula_app/src/gpui_shell/ssh_settings.rs:36, 238-301

实现提示:

  • 批量删除应放进单次 mutate_store
    事务(saved_commands.rs:209-234)保证多窗口一致与单次落盘;当前 remove 对不存在 id 返回
    NotFound,批量需容忍陈旧 id;
  • 命令行单击即执行命令(command_manager/rows.rs:78-81),多选交互需避免与单击冲突;
  • 自定义文件夹删除无确认(command_manager/groups.rs:285-298),与命令删除交互不一致。

Before submitting / 提交前确认

  • I searched existing issues for similar requests / 已搜索,无重复

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ui窗口 chrome、设置页、主题、布局、模糊背景os: windows仅 Windows 或与 ConPTY/Win32 相关

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions