diff --git a/.editorconfig b/.editorconfig index 5a5809db..3b510aa6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,6 +4,5 @@ indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true - end_of_line = lf max_line_length = 100 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9956df99..3525b88c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,29 @@ ## [Unreleased] +## [7.2.9] - 2026-5-24 + +### 新增 + +- 适配新版粉丝团任务,新增【点赞】和【发弹幕】任务 +- 【领取年度大会员权益】支持领取超级大会员专属权益 + +### 修复 + +- 修复【移除直播画面上方杂项】失效的bug +- 修复跨天时间段判断错误导致部分任务在午夜附近表现异常的bug +- 修复弹幕发送结果判定不正确的bug + +### 调整 + +- 粉丝团任务【点亮熄灭勋章】、【点赞】、【发弹幕】和【观看直播】均拥有自己的黑白名单,互不影响 +- 【点亮熄灭勋章】和【发弹幕】分别拥有自己的弹幕配置 +- 💻 Cookie 工具类使用 `cookieStore` 重构 + +### 删除 + +- 删除【移除排行榜】(排行榜现在包含在“直播画面上方杂项”中)和【移除礼物栏下方推荐直播间】(B站已下线该功能)模块 + ## [7.2.8] - 2026-5-9 ### 修复 diff --git a/CLAUDE.md b/CLAUDE.md index cc82fcf7..2d5b8b1f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,80 +1,38 @@ -# CLAUDE.md +# 项目概述 -本文件为 AI 助手在本仓库中工作时提供指引。 +BLTH(Bilibili Live Tasks Helper)是基于 Vue 3 + Vite + vite-plugin-monkey + Element Plus + TypeScript 的用户脚本,运行在 Bilibili 直播页面(`live.bilibili.com/直播间号`),实现自动完成每日任务、观看体验优化和页面元素清理。 -## 项目概述 - -BLTH(Bilibili Live Tasks Helper)是一个基于 Vue 3 + Vite 的浏览器用户脚本,运行在 Bilibili 直播页面(如 `live.bilibili.com/直播间号`),通过 Tampermonkey/Violentmonkey 实现直播相关每日任务、观看体验优化和页面元素清理。 - -## 常用命令 +# 常用命令 ```sh -npm run dev # 启动 Vite 开发服务器(watch 模式生成用户脚本) -npm run build # 类型检查 + 构建并压缩(并行) -npm run build-only # 仅构建,不做类型检查和压缩 +npm run dev # 启动 Vite 开发服务器(watch模式生成用户脚本) +npm run build # type-check 与 build+minify 并行 npm run type-check # 仅 Vue TypeScript 类型检查 npm run lint # ESLint + Stylelint 自动修复 npm run format # 使用 Prettier 格式化 src/ +npm run preview # 提供编译产物安装链接的本地预览页 ``` -本项目没有自动化测试。 - -## 架构 - -### 模块系统 - -所有功能以模块形式实现,继承自 [src/modules/BaseModule.ts](src/modules/BaseModule.ts)。由 `useModuleStore` 管理生命周期。 - -模块分类: - -- `default/` — 默认模块,负责获取用户信息、Cookie、粉丝勋章等基础数据;多数业务模块依赖其结果,但部分体验优化模块会更早运行 -- `dailyTasks/` — 每日任务(主站任务、直播任务、其他任务) -- `enhanceExperience/` — 体验优化 -- `removeElement/` — 移除页面元素 - -模块通常通过各级 `index.ts` 桶文件导出;其中 `src/modules/index.ts` 只导出非默认模块。 +无自动化测试。 -### 新增模块流程 +# 架构 -1. 在 `src/modules/` 对应子目录下创建继承 `BaseModule` 的模块类 -2. 在 `src/types/storage.d.ts` 的 `ModuleConfig` 中添加类型定义 -3. 在 `src/library/storage/defaultValues.ts` 中添加默认配置 -4. 如需调用新的 B 站 API,在 `src/library/bili-api/` 中补充实现,以及请求/响应类型定义 -5. 完成模块类后,在对应的 `index.ts` 桶文件中导出 -6. 在 `src/components/` 对应组件中添加 UI -7. 每日任务通常还需在 `useModuleStore` 中添加状态和重置逻辑 -8. 如模块需要尽早执行、跨页面执行或限定 frame,检查并设置 `BaseModule` 的静态属性(如 `runAt`、`onFrame`、`runAfterDefault`、`runOnMultiplePages`) +- 所有功能模块继承 `src/modules/BaseModule.ts`,由 `useModuleStore` 管理生命周期 +- `main.ts` 分两阶段加载模块:先加载早期模块,再在 `document-body` 后加载默认模块 +- 脚本分为三类:Main,SubMain,Other。同时打开多个直播间页面时,`useCacheStore.checkCurrentScriptType()` 会选出唯一 Main,避免部分模块重复执行 -### 状态管理(Pinia Stores) +# 分支 -- `useBiliStore` — B 站用户数据(uid、硬币、勋章、动态视频等) -- `useCacheStore` — 脚本运行时状态,检测主/副脚本类型以防多标签页重复执行 -- `useModuleStore` — 模块注册、生命周期、配置持久化、状态跟踪与重置 -- `useUIStore` — 控制面板 UI 状态 -- `usePlayerStore` — 直播播放器状态 +- `master`:发布分支。合并来自 `dev` 的 PR 后触发 GitHub Actions 自动构建并创建 Release +- `dev`:开发分支。非发布 PR 的目标分支 -### 存储 +# 规范 -通过 `GM_getValue`/`GM_setValue` 持久化 `ui`、`modules` 和 `cache` 数据([src/library/storage/](src/library/storage/))。 - -### 构建 - -[vite.config.ts](vite.config.ts) 使用 `vite-plugin-monkey` 生成 `.user.js` 用户脚本。外部依赖通过 CDN `@require` 引入而非打包。新增第三方库必须加到 `vite.config.ts` 的 `externalGlobals` 或 `externalResource` 中。 - -### 路径别名 - -`@/` 映射到 `src/`。 - -## 分支策略 - -- `master`:发布分支;合并来自 `dev` 的 PR 后由 GitHub Actions 构建并创建 Release -- `dev`:开发分支,所有 PR 以 `dev` 为目标 +- `src/library/bili-api/` 中的 API 必须有详细的请求/响应类型定义 +- 路径别名 `@/` 映射到 `src/` +- Commit message 使用约定式提交格式 -## 代码规范 +# 易踩坑点 -- Vue 3 Composition API + ` - + + + -