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 / 已搜索,无重复

No activity

Activity on this issue will appear here.

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