Skip to content

fix(extension): 修复插件任务删除和目录跳转问题#379

Open
techotaku39 wants to merge 6 commits into
JefferyHcool:developfrom
techotaku39:fix/extension-delete-sync
Open

fix(extension): 修复插件任务删除和目录跳转问题#379
techotaku39 wants to merge 6 commits into
JefferyHcool:developfrom
techotaku39:fix/extension-delete-sync

Conversation

@techotaku39
Copy link
Copy Markdown

@techotaku39 techotaku39 commented May 25, 2026

改动概述

修复浏览器插件历史任务删除后又被 popup / sidepanel / 后端同步刷回的问题,并修复插件侧 Markdown 目录锚点跳转不稳定的问题。

依赖 PR:#378 feat(auth): 支持自托管访问鉴权与笔记同步

这是 stacked PR。当前向 develop 发起时会暂时包含 #378 的提交;只看本 PR 实际新增改动请看:
techotaku39/BiliNote@feature/auth-self-host-sync...fix/extension-delete-sync

为什么

用户在插件 popup / sidepanel 删除任务时遇到几个问题:

  • 删除按钮使用浏览器原生 confirm(),如果用户勾选了“阻止此页面继续弹出对话框”,后续删除会无响应。
  • 插件本地删除后,另一个插件页面的轮询或后端历史同步会把已删除任务重新写回,表现为“删了又刷出来”。
  • 侧边栏 Markdown 目录链接在部分 LLM 生成的标题格式下无法稳定跳转。

做了什么

  • 插件删除逻辑:
    • popup / sidepanel 改为插件内确认弹层,替代原生 window.confirm()
    • 删除任务时先写本地 tombstone,防止其他页面轮询或服务端同步把任务刷回。
    • 删除任务时调用后端 /api/delete_task,同步清理服务端记录。
    • 删除当前选中任务后自动切换到下一个任务,并清理轮询定时器。
  • 插件本地历史存储:
    • 增加删除任务 ID 列表,限制保存数量。
    • 串行化任务历史写入,避免多个插件页面并发打开时互相覆盖历史。
    • 禁止已删除任务被 upsertTask 重新写回。
  • 插件 Markdown 目录跳转:
    • 为标题生成稳定锚点 id。
    • 对目录链接做 decode / normalize / 模糊匹配。
    • 点击目录链接时在插件内容区域内平滑滚动到匹配标题。

测试方式

  • pnpm build(浏览器插件)通过
  • pnpm typecheck(浏览器插件)通过
  • pnpm exec eslint src/logic/api.ts src/logic/constants.ts src/logic/storage.ts src/popup/Popup.vue src/sidepanel/Sidepanel.vue src/components/MarkdownView.vue 通过,无 error;剩余为项目既有 Vue 单行文本换行 warning
  • 手动验证步骤:
    • 构建插件并复制到本地加载目录后,重新加载 Chrome 插件
    • 在 popup / sidepanel 删除任务,会出现插件内确认弹层,不再依赖浏览器原生弹窗
    • 删除任务后重新打开 popup / sidepanel,已删除任务不会再次刷回
    • 打开 3015 Web 端确认服务端历史同步后,删除残留任务不再重新出现
    • 在侧边栏点击 Markdown 目录链接,可跳转到对应标题

回归风险

  • 影响浏览器插件 popup / sidepanel 历史任务同步、删除和轮询逻辑。
  • 依赖 feat(auth): 支持自托管访问鉴权与笔记同步 #378 中新增的服务端笔记同步与 /api/delete_task 能力;需要与后端同步部署。
  • 已删除任务通过 tombstone 阻止重新写回,若未来需要“恢复历史任务”,需要增加显式恢复逻辑。

Checklist

  • 分支命名遵循 CONTRIBUTING.md §3fix/extension-delete-sync
  • base 分支正确(常规修复 → develop;本 PR 依赖 feat(auth): 支持自托管访问鉴权与笔记同步 #378
  • Commit message 遵循 type(scope): subject 格式
  • 已自测核心流程
  • 已更新相关文档(不适用,插件交互修复无需文档)
  • 未夹带 secrets / .env / 大型二进制
  • 单 PR 不跨多个工作区做无关改动(本 PR 实际新增改动仅 BillNote_extension/ 6 个文件)

@techotaku39 techotaku39 changed the title fix(extension): 修复插件删除任务回流和目录跳转 fix(extension): 修复插件任务删除和目录跳转问题 May 26, 2026
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.

2 participants