Skip to content

完善回收站功能与清理设置交互#1584

Merged
CodFrm merged 23 commits into
mainfrom
recycle-bin
Jul 15, 2026
Merged

完善回收站功能与清理设置交互#1584
CodFrm merged 23 commits into
mainfrom
recycle-bin

Conversation

@CodFrm

@CodFrm CodFrm commented Jul 15, 2026

Copy link
Copy Markdown
Member

检查清单

  • 修复已提及的问题
  • 代码通过人工检查
  • 已完成测试

描述

  • 增加脚本回收站、还原、彻底删除、自动到期清理及相关数据保留机制
  • 桌面端与移动端统一提供回收站数量、搜索、来源筛选和清空操作
  • 在回收站内增加自动清理时间弹窗,可选择 7 天、30 天、90 天或永不清理
  • 空回收站仅替换列表内容区,保留 tabs、搜索、筛选、设置入口和表头
  • 桌面批量操作与筛选共用固定高度行,并提供平滑状态动画
  • 移除回收站脚本名称删除线,完善移动端明暗主题与禁用状态

测试

  • 相关 Vitest:5 个文件、12 个用例通过
  • pnpm run typecheck 通过
  • 相关文件 ESLint 通过
  • Rspack development build 通过
  • 真实扩展 Playwright E2E:桌面和移动端 2 个场景通过

截图

本地 E2E 已留存桌面空状态、期限弹窗、批量选择,以及移动端浅色/深色弹窗截图和录像。验证记录位于本地 test-results/verify/trash-ui-ux/,未提交测试产物。

CodFrm added 23 commits July 15, 2026 00:45
从回收站(trashScript:)彻底销毁脚本及其关联的 scriptCode:/compiled_resource:
数据,并广播既有的 deleteScripts 事件供下游 4 个清理订阅者(value/permission/
resource/favicon)消费。作为回收站功能的销毁终点,暂无生产调用方,由后续任务
接入。
- Toolbar 新增 leading 槽位,tabs 传入后取代「已安装脚本 + 数量」标题
- 回收站顶栏 = tabs + 搜索 + 清空回收站,与已安装 tab 共用同一条 h-14 顶栏
- 保留提示移到 chips 行右侧;批量栏改为独立条件行
- 脚本数量不再丢失:改由 tab 角标显示(已安装 = scriptList.length,回收站 = trashCount)
- 回收站为空时仍渲染带 tabs 的顶栏,避免用户被困在回收站 tab
- prepareScriptByCode 在所有活跃表查找之后增查回收站,命中则复用其 uuid 并置 oldInTrash
- 复用 uuid 即保住 storageName → value 与权限不丢;移出回收站由 installScript 的 upsert 不变量保证
- InstallView.inTrash 透出;主按钮改为 还原 / 还原并更新(按版本是否变化)
- 安装页新增 in_trash_hint 提示条,告知用户还原会保留原有数据
- zh-CN「7 天」→「7天」:对齐同文件既有的「6小时」体例(空格是我在 plan 里带进去的,zh-TW 自由翻译时就没这个问题)
- ja-JP「なし」→「無期限」:该行标签是「ゴミ箱の保存期間」,值为「なし」会被读成「不保存/立刻删」,与「永不清理」语义相反
端到端验证真实扩展时发现:删除脚本后「已安装」列表的行不消失、popup 也不更新,
再点一次删除会报「删除失败: scripts not found」。

根因:Task 3 把删除的广播从 deleteScripts 改为 trashScripts 时,只迁移了 SW 侧的
4 个订阅者(spec 统计的「8 个订阅者」只涵盖 SW 侧),漏了两个页面侧的:
- ScriptList/hooks.ts —— 负责从「已安装」列表移除该行
- popup/usePopupData.ts —— popup 列表

单元测试全部 mock 掉消息层,跨上下文的 topic 不匹配跑不出来,3165 个用例无一发现。

同时新增静态护栏 trash_event_partition.test.ts 钉死事件二分:
- trashScripts(6) = 脚本不再活跃:注销/停 cron/刷 badge/云端删除/列表移行/popup 移行
- deleteScripts(4) = 销毁数据:value/权限/资源/图标(只在彻底删除时触发)
护栏已验证有牙:把任一订阅者订错边,测试立即失败。
@CodFrm CodFrm merged commit 1a130ac into main Jul 15, 2026
7 of 8 checks passed
@CodFrm CodFrm deleted the recycle-bin branch July 15, 2026 07:38
@CodFrm CodFrm restored the recycle-bin branch July 15, 2026 07:41
@CodFrm CodFrm mentioned this pull request Jul 15, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant