Skip to content

[UX] 调整危险操作确认:删除会话需确认,无运行任务时退出免确认 #424

Description

@zszz3

问题

当前两处确认交互与操作风险不匹配:永久删除会话没有二次确认,而没有会话任务正在运行时,退出应用仍会弹出确认框。建议在同一个 issue 中统一调整。

1. 永久删除会话前增加确认

当前侧边栏删除会话直接调用删除接口;Host 执行 DELETE FROM sessions,并直接删除对话 JSONL、修订记录和检查点等文件,不经过回收站。误点后无法在应用内恢复。

期望:

  • 点击删除后先弹确认框,展示会话标题。
  • 明确提示「会话及其对话记录将被永久删除,无法恢复」。
  • 提供「取消」和红色危险操作按钮「永久删除」,默认聚焦取消。
  • 仅确认后执行删除;取消不改变会话和文件,删除成功后再从列表移除。

建议文案:

永久删除此会话?

会话「xxx」及其对话记录将被永久删除,无法恢复。

取消 / 永久删除

2. 无任务运行时退出应用不弹确认

当前显式退出的确认逻辑没有根据运行中的任务判断:除自动化模式、更新重启等例外,首次退出均弹确认。

期望:

  • 没有任务正在运行时,直接执行正常的保存和退出流程,不弹确认。
  • 有任务正在运行时,提示退出将中断任务,提供「取消」和「退出并中断」。
  • 判断范围覆盖整个应用中的运行任务,包括其他会话、后台会话和子代理,不能只看当前聊天页。
  • 仅有历史会话、打开着会话页面或未来尚未触发的定时任务,不应触发退出确认。
  • Cmd+Q、应用菜单退出、托盘退出采用一致判断;保留现有更新重启逻辑和数据保存/有序关闭流程。

验收

  • 删除会话必须确认;取消后记录和文件保持完整。
  • 确认删除成功后,会话从列表移除;删除失败显示错误。
  • 无运行任务时退出不弹确认,历史会话仍正常保存。
  • 当前或后台会话/子代理有运行任务时退出弹确认;取消后任务继续。
  • 确认退出后沿用正常的任务中断、数据保存和资源清理流程。
  • 更新重启不被新增确认阻塞。

代码核对依据

基于本地 checkout f0932f3ae6c4b1e18d4eabfcc6c7a84420a43179 的静态核对,未进行本次原生 UI 复现:

  • apps/desktop/src/components/Sidebar.tsxdeleteSession 直接调用删除 action。
  • crates/host-core/src/sessions.rsdelete_session 执行数据库 DELETE 并清理会话文件。
  • crates/host-core/src/transcripts.rsremove_session_files 使用 fs::remove_file
  • apps/desktop/electron/main/bootstrap/shutdown.tsbefore-quit 确认条件未判断运行任务。

相关 #360 涉及其他 UI 优化和项目删除,未覆盖这里的两个确认条件。

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions