问题
当前两处确认交互与操作风险不匹配:永久删除会话没有二次确认,而没有会话任务正在运行时,退出应用仍会弹出确认框。建议在同一个 issue 中统一调整。
1. 永久删除会话前增加确认
当前侧边栏删除会话直接调用删除接口;Host 执行 DELETE FROM sessions,并直接删除对话 JSONL、修订记录和检查点等文件,不经过回收站。误点后无法在应用内恢复。
期望:
- 点击删除后先弹确认框,展示会话标题。
- 明确提示「会话及其对话记录将被永久删除,无法恢复」。
- 提供「取消」和红色危险操作按钮「永久删除」,默认聚焦取消。
- 仅确认后执行删除;取消不改变会话和文件,删除成功后再从列表移除。
建议文案:
永久删除此会话?
会话「xxx」及其对话记录将被永久删除,无法恢复。
取消 / 永久删除
2. 无任务运行时退出应用不弹确认
当前显式退出的确认逻辑没有根据运行中的任务判断:除自动化模式、更新重启等例外,首次退出均弹确认。
期望:
- 没有任务正在运行时,直接执行正常的保存和退出流程,不弹确认。
- 有任务正在运行时,提示退出将中断任务,提供「取消」和「退出并中断」。
- 判断范围覆盖整个应用中的运行任务,包括其他会话、后台会话和子代理,不能只看当前聊天页。
- 仅有历史会话、打开着会话页面或未来尚未触发的定时任务,不应触发退出确认。
- Cmd+Q、应用菜单退出、托盘退出采用一致判断;保留现有更新重启逻辑和数据保存/有序关闭流程。
验收
代码核对依据
基于本地 checkout f0932f3ae6c4b1e18d4eabfcc6c7a84420a43179 的静态核对,未进行本次原生 UI 复现:
apps/desktop/src/components/Sidebar.tsx:deleteSession 直接调用删除 action。
crates/host-core/src/sessions.rs:delete_session 执行数据库 DELETE 并清理会话文件。
crates/host-core/src/transcripts.rs:remove_session_files 使用 fs::remove_file。
apps/desktop/electron/main/bootstrap/shutdown.ts:before-quit 确认条件未判断运行任务。
相关 #360 涉及其他 UI 优化和项目删除,未覆盖这里的两个确认条件。
问题
当前两处确认交互与操作风险不匹配:永久删除会话没有二次确认,而没有会话任务正在运行时,退出应用仍会弹出确认框。建议在同一个 issue 中统一调整。
1. 永久删除会话前增加确认
当前侧边栏删除会话直接调用删除接口;Host 执行
DELETE FROM sessions,并直接删除对话 JSONL、修订记录和检查点等文件,不经过回收站。误点后无法在应用内恢复。期望:
建议文案:
2. 无任务运行时退出应用不弹确认
当前显式退出的确认逻辑没有根据运行中的任务判断:除自动化模式、更新重启等例外,首次退出均弹确认。
期望:
验收
代码核对依据
基于本地 checkout
f0932f3ae6c4b1e18d4eabfcc6c7a84420a43179的静态核对,未进行本次原生 UI 复现:apps/desktop/src/components/Sidebar.tsx:deleteSession直接调用删除 action。crates/host-core/src/sessions.rs:delete_session执行数据库 DELETE 并清理会话文件。crates/host-core/src/transcripts.rs:remove_session_files使用fs::remove_file。apps/desktop/electron/main/bootstrap/shutdown.ts:before-quit确认条件未判断运行任务。相关 #360 涉及其他 UI 优化和项目删除,未覆盖这里的两个确认条件。