Skip to content

fix(reliability): keep pause/cancel failures visible and recoverable #168

Description

@Wangnov

背景

这是已合入的任务重连与退出恢复工作的 follow-up。当前暂停/取消请求失败时,错误被写入 Home 的 actionError,但进行中/暂停态会整页返回 ProgressScreen,该组件没有错误入口,因此用户看不到失败,可能误以为任务已经暂停或取消。

暂停态点击取消时还会先清空 paused,再删除 partial cache;如果删除失败,页面已经离开暂停态,继续下载或重试取消的恢复入口同时丢失。

当前证据

  • src/app/views/useDownloadProgress.ts:115-134:pause/cancel 返回 false 或 reject 时只调用 onError(...)
  • src/app/views/Home.tsx:543-564src/app/views/WinHome.tsx:602-622:进行中与暂停态直接返回 ProgressScreen
  • src/app/views/ProgressScreen.tsx:21-51,80-149:组件没有 failure 参数、错误区域或恢复动作。
  • src/app/views/Home.tsx:352-366src/app/views/WinHome.tsx:344-357setPaused(null) 早于 discardDownload() 成功。

验收标准

  • 进行中和暂停态都能持久显示结构化失败信息,并以 role="alert" 正确播报。
  • pause/cancel 返回 false 或 reject 时,明确告诉用户“请求未生效,任务仍在继续/仍处于暂停态”,按钮恢复为可重试状态。
  • 暂停缓存删除成功后才退出暂停页;删除失败时保留继续与重试取消入口。
  • 区分“请求未送达”“后端拒绝”“任务已进入不可中断阶段”,不使用误导性的统一取消文案。
  • macOS 与 Windows 测试覆盖 pause false/reject、cancel false/reject、paused-discard reject。

占位说明

对应 Draft PR 只保留实施入口,不包含正式修改,不应合并。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpriority: P1Must be addressed before the next stable release

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions