diff --git a/.babelrc b/.babelrc deleted file mode 100644 index aa532f11ad..0000000000 --- a/.babelrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "presets": [ - // "@babel/preset-env", - [ - "@babel/preset-typescript", - { - "allExtensions": true - } - ] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-optional-chaining", - "@babel/plugin-proposal-nullish-coalescing-operator", - "./builder/node/@babel/plugin-top-level-return" - ] -} \ No newline at end of file diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000000..be10b4631d --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,19 @@ +> 1% +last 2 versions +not dead +chrome > 105 +edge > 105 +firefox > 127 +safari > 15.4 +not and_chr > 0 +not and_ff > 0 +not and_qq > 0 +not and_uc > 0 +not android > 0 +not baidu > 0 +not ios_saf > 0 +not kaios > 0 +not op_mob > 0 +not op_mini all +not samsung > 0 +not ie > 0 \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..a9c11d3e02 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Tab indentation +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +quote_type = single \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000..c0ba0a5b9b --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +packages/ +typings/ +**/dist/ +dev/ +node_modules/ +!.github-json/ +.eslintrc.* diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000000..3b2bf44ec3 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,111 @@ +module.exports = { + env: { + browser: true, + es2020: true, + }, + extends: [ + 'plugin:vue/recommended', + 'plugin:@typescript-eslint/recommended', + 'airbnb-base', + 'plugin:prettier/recommended', + ], + globals: { + Atomics: 'readonly', + SharedArrayBuffer: 'readonly', + }, + parser: 'vue-eslint-parser', + parserOptions: { + ecmaVersion: 2020, + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + plugins: ['vue', '@typescript-eslint', 'prettier'], + rules: { + 'prettier/prettier': 'error', + + 'import/no-unresolved': 'off', + 'import/extensions': 'off', + 'import/no-extraneous-dependencies': 'off', + 'import/prefer-default-export': 'off', + 'import/no-default-export': 'error', + 'import/no-named-default': 'off', + + '@typescript-eslint/member-delimiter-style': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': 'error', + '@typescript-eslint/no-shadow': ['error', { builtinGlobals: false }], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-use-before-define': ['error'], + '@typescript-eslint/no-redeclare': 'error', + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'enumMember', + format: ['PascalCase'], + }, + ], + + 'vue/multi-word-component-names': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/html-self-closing': 'off', + 'vue/no-v-html': 'off', + 'vue/require-prop-types': 'off', + 'vue/one-component-per-file': 'off', + 'vue/singleline-html-element-content-newline': 'off', + + // 使用 @typescript-eslint/no-unused-vars, 否则 interface 都是 unused + 'no-unused-vars': 'off', + 'no-console': 'off', + 'no-undef': 'off', + 'no-param-reassign': 'off', + 'no-continue': 'off', + 'no-plusplus': 'off', + 'no-eval': 'off', + 'no-useless-constructor': 'off', + 'no-unused-expressions': 'off', + 'no-await-in-loop': 'off', + 'no-restricted-syntax': 'off', + 'no-useless-escape': 'off', + 'no-empty-function': ['error', { allow: ['constructors'] }], + 'no-return-assign': ['error', 'except-parens'], + 'no-redeclare': 'off', + 'no-script-url': 'off', + 'no-shadow': 'off', + 'no-use-before-define': 'off', + 'no-alert': 'off', + 'no-restricted-globals': 'off', + + 'arrow-body-style': 'off', + 'prefer-arrow-callback': 'off', + 'object-curly-newline': 'off', + 'linebreak-style': 'off', + camelcase: 'off', + 'lines-between-class-members': 'off', + radix: ['error', 'as-needed'], + 'max-classes-per-file': 'off', + 'class-methods-use-this': 'off', + 'prefer-destructuring': [ + 'error', + { + VariableDeclarator: { + array: false, + object: true, + }, + AssignmentExpression: { + array: false, + object: false, + }, + }, + ], + curly: ['error', 'all'], + }, + overrides: [ + { + files: ['*.vue', 'shims.d.ts', 'webpack/**/*.ts', 'registry/webpack/**/*.ts'], + rules: { + 'import/no-default-export': 'off', + }, + }, + ], +} diff --git a/.github-json/README.md b/.github-json/README.md new file mode 100644 index 0000000000..fbc4cd0ef0 --- /dev/null +++ b/.github-json/README.md @@ -0,0 +1,3 @@ +# Fuck YAML + +在项目根目录使用 `pnpm build-github-config` 来生成 GitHub 相关配置. diff --git "a/.github-json/data/DISCUSSION_TEMPLATE/\345\212\237\350\203\275\345\273\272\350\256\256-ideas.json" "b/.github-json/data/DISCUSSION_TEMPLATE/\345\212\237\350\203\275\345\273\272\350\256\256-ideas.json" new file mode 100644 index 0000000000..788d4a5520 --- /dev/null +++ "b/.github-json/data/DISCUSSION_TEMPLATE/\345\212\237\350\203\275\345\273\272\350\256\256-ideas.json" @@ -0,0 +1,36 @@ +{ + "title": "功能建议", + "labels": [], + "body": [ + { + "type": "markdown", + "attributes": { + "value": "默认您已阅读 [常见问题解答](https://github.com/the1812/Bilibili-Evolved/discussions/1301)\n请勿重复发起, 发之前记得搜索一下. 如果需要反馈 Bug, 请前往 [Issues](https://github.com/the1812/Bilibili-Evolved/issues) 发起.\n" + } + }, + { + "type": "textarea", + "id": "description", + "attributes": { + "label": "期望的效果", + "description": "描述你遇到的问题, 以及建议的解决方式", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "input", + "id": "script-version", + "attributes": { + "label": "脚本版本", + "description": "可在设置面板的关于弹窗中找到脚本版本信息", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + } + ] +} \ No newline at end of file diff --git a/.github-json/data/FUNDING.json b/.github-json/data/FUNDING.json new file mode 100644 index 0000000000..9a17e2a70e --- /dev/null +++ b/.github-json/data/FUNDING.json @@ -0,0 +1,15 @@ +{ + "github": null, + "patreon": null, + "open_collective": null, + "ko_fi": null, + "tidelift": null, + "community_bridge": null, + "liberapay": null, + "issuehunt": null, + "otechie": null, + "lfx_crowdfunding": null, + "custom": [ + "https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/donate.md" + ] +} \ No newline at end of file diff --git a/.github-json/data/ISSUE_TEMPLATE/bug_report.json b/.github-json/data/ISSUE_TEMPLATE/bug_report.json new file mode 100644 index 0000000000..5edd14cd9a --- /dev/null +++ b/.github-json/data/ISSUE_TEMPLATE/bug_report.json @@ -0,0 +1,131 @@ +{ + "name": "Bug 反馈", + "description": "功能运行不正常 / 失效", + "body": [ + { + "type": "markdown", + "attributes": { + "value": "默认您已阅读 [Issues 须知](https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/issue-rules.md)\n请勿重复发起, 发之前记得看下[置顶问题 (Pinned issues)](https://github.com/the1812/Bilibili-Evolved/issues) (如果有的话), 以及[常见问题解答](https://github.com/the1812/Bilibili-Evolved/discussions/1301)\n" + } + }, + { + "type": "textarea", + "id": "feature", + "attributes": { + "label": "对应功能", + "description": "(指本脚本的某项具体功能, 不是指 b 站的) 可以在设置中尝试开启 / 关闭某项功能来排查. 最好能附上功能的 Commit 值 (在设置里功能选项的底部).\n\n如果组件包含作者的信息 (by @xxx), 请在这里 at 他们\n请注意: 以下功能已不再维护 (不再修复 bug 和添加新功能), 但是你仍然可以为其提供 Pull Request.\n- 直播间自动抽奖\n- 默认播放器模式\n- 播放器置顶\n- 播放器定位\n", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "textarea", + "id": "description", + "attributes": { + "label": "问题描述", + "description": "如何重现此问题, 在哪个页面里出现这个问题, 比如视频相关的可以提供一下 av / BV 号", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "input", + "id": "script-version", + "attributes": { + "label": "脚本版本", + "description": "可在设置面板的关于弹窗中找到脚本版本信息", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "input", + "id": "script-manager-version", + "attributes": { + "label": "脚本管理器及版本", + "description": "例如 Tampermonkey v4.19.6176", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "input", + "id": "browser-version", + "attributes": { + "label": "浏览器及版本", + "description": "可在浏览器的关于页面中找到浏览器版本信息", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "input", + "id": "player-version", + "attributes": { + "label": "播放器版本", + "description": "在 b 站播放器上右键可以看到播放器版本号\n", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "dropdown", + "id": "player-codec", + "attributes": { + "label": "播放策略", + "description": "在 b 站播放器设置 - 更多播放设置 里可以看到播放策略", + "options": [ + "默认", + "AV1", + "HEVC", + "AVC" + ] + }, + "validations": { + "required": true + } + }, + { + "type": "textarea", + "id": "logs", + "attributes": { + "label": "错误信息", + "description": "脚本直接报告的错误信息, 或者浏览器开发者工具 (F12 或 Ctrl+Shift+I 召唤) 里 Console / 控制台 一栏的输出, 太长的话可以截图放下面.
\n", + "render": "Shell", + "placeholder": "请输入" + }, + "validations": { + "required": true + } + }, + { + "type": "textarea", + "id": "screenshots", + "attributes": { + "label": "附加截图", + "placeholder": "可在此粘贴图片" + } + }, + { + "type": "textarea", + "id": "kind_reminder", + "attributes": { + "label": "致遇到了相同问题准备回复的人", + "description": "请勿修改文本框中的内容", + "value": "**太长不看**:\n1、遇到了相同的问题:**请用左下角的 reaction 点赞**\n2、实时关注该 Issue 的后续进展:**请用 Issue 页上的 Subscribe 功能**(在 PC 端按钮通常位于页面右侧)。\n**_请您回复前务必确认您有在本 Issue 之外补充了其它相关信息(比如 Log)再行回复以免对他人造成不必要的困扰_**\n
\n 完整版\n 由于每个 Issue 甚至整个项目都是可以订阅通知的, 对于已经有人汇报过的 Bug, 如果您也遇到了并且没有其他信息要补充, 可以直接在左下点个赞表示 +1, 不要再去新增评论。想关注后续的可以用 Subscribe,Subscribe 之后该 Issue 如果有变动都可以收到通知,如果不想被回复打扰可以使用更加进阶的 Customize 功能,勾选 \"Closed\" & \"Reopened\"。Closed 通常代表该 Issue 已被解决,极少数情况下的 Reopened 代表该 Issue 的问题重新出现。如果您新增了无意义评论,因为 Issue 这个 bug tracker 与邮件列表类似,订阅某个 Issue 的用户会在每次这个 Issue 有新的动态时收到一封新的提醒邮件。也就是说,在 Issue 中的一个不能提供新的信息的评论,相当于给所有订阅这个 Issue 的用户发了一封垃圾邮件(spam)。尤其项目的维护者也是订阅者中的一员,太多垃圾邮件会对维护者带来很多不必要的困扰。发送垃圾邮件在开源社区通常是不那么受欢迎的行为。\n
\n" + } + } + ] +} \ No newline at end of file diff --git a/.github-json/data/ISSUE_TEMPLATE/config.json b/.github-json/data/ISSUE_TEMPLATE/config.json new file mode 100644 index 0000000000..738e225b59 --- /dev/null +++ b/.github-json/data/ISSUE_TEMPLATE/config.json @@ -0,0 +1,30 @@ +{ + "blank_issues_enabled": false, + "contact_links": [ + { + "name": "转到讨论区", + "url": "https://github.com/the1812/Bilibili-Evolved/discussions", + "about": "Issues 用于反馈 Bug, 新的功能建议和提问答疑请到讨论区发起" + }, + { + "name": "查看 Issues 须知", + "url": "https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/issue-rules.md", + "about": "默认所有 Issues 发起者均已了解此处的内容" + }, + { + "name": "查看讨论区指南", + "url": "https://github.com/the1812/Bilibili-Evolved/discussions/1297", + "about": "默认所有讨论发起者均已了解此处的内容" + }, + { + "name": "查看置顶问题", + "url": "https://github.com/the1812/Bilibili-Evolved/issues", + "about": "在 Pinned issues 中会包含一些近期常见问题, 已有的其他问题也会在下面列出, 请务必查看避免重复发起" + }, + { + "name": "查看常见问题", + "url": "https://github.com/the1812/Bilibili-Evolved/discussions/1301", + "about": "一些老生常谈的问题, 或许里面就有你想问的" + } + ] +} \ No newline at end of file diff --git a/.github-json/data/workflows/build.json b/.github-json/data/workflows/build.json new file mode 100644 index 0000000000..57bce99a31 --- /dev/null +++ b/.github-json/data/workflows/build.json @@ -0,0 +1,73 @@ +{ + "name": "Build", + "on": { + "workflow_dispatch": null, + "push": { + "branches": [ + "master", + "master-cdn", + "preview" + ] + } + }, + "jobs": { + "build": { + "runs-on": "ubuntu-latest", + "steps": [ + { + "uses": "actions/checkout@v3", + "with": { + "fetch-depth": "0" + } + }, + { + "name": "Setup git", + "run": "git config --local user.email github-actions[bot]@users.noreply.github.com\ngit config --local user.name github-actions[bot]\ngit config --global core.autocrlf true\ngit config --global core.safecrlf false" + }, + { + "name": "Install dependencies", + "uses": "pnpm/action-setup@v4", + "with": { + "run_install": true + } + }, + { + "name": "Type check", + "run": "pnpm run type" + }, + { + "name": "ESLint check", + "run": "pnpm run lint" + }, + { + "name": "Build core", + "run": "pnpm run build-core" + }, + { + "name": "Build features", + "run": "cd registry\npnpm install\ncd ../\npnpm run build-features\n" + }, + { + "name": "Git commit", + "id": "commit", + "run": "git add --all\ngit commit -m \"CI build\"\n", + "continue-on-error": true + }, + { + "name": "Git push", + "uses": "ad-m/github-push-action@master", + "if": "${{ steps.commit.outcome == 'success' }}", + "with": { + "github_token": "${{ secrets.GITHUB_TOKEN }}", + "branch": "${{ github.ref }}" + } + }, + { + "name": "Log", + "if": "${{ steps.commit.outcome != 'success' }}", + "run": "echo Nothing to commit." + } + ] + } + } +} \ No newline at end of file diff --git a/.github-json/data/workflows/pull-request-check.json b/.github-json/data/workflows/pull-request-check.json new file mode 100644 index 0000000000..0c63fcd54d --- /dev/null +++ b/.github-json/data/workflows/pull-request-check.json @@ -0,0 +1,46 @@ +{ + "name": "Pull Request Check", + "on": [ + "pull_request" + ], + "jobs": { + "check": { + "runs-on": "ubuntu-latest", + "steps": [ + { + "uses": "actions/checkout@v3", + "with": { + "ref": "${{ github.event.pull_request.head.sha }}" + } + }, + { + "name": "Install dependencies", + "uses": "pnpm/action-setup@v4", + "with": { + "run_install": true + } + }, + { + "name": "Type check", + "run": "pnpm run type" + }, + { + "name": "ESLint check", + "run": "pnpm run lint-check" + }, + { + "name": "Build core", + "run": "pnpm run build-core" + }, + { + "name": "Build features", + "run": "cd registry\npnpm install\ncd ../\npnpm run build-features\n" + }, + { + "name": "Log", + "run": "echo Check complete." + } + ] + } + } +} \ No newline at end of file diff --git a/.github-json/index.ts b/.github-json/index.ts new file mode 100644 index 0000000000..41f8be840f --- /dev/null +++ b/.github-json/index.ts @@ -0,0 +1,26 @@ +import { readFileSync, writeFileSync } from 'fs' +import { glob } from 'glob' +import { basename, dirname, extname, join, resolve } from 'path' +import { stringify } from 'yaml' + +const jsonFiles = glob.sync('./.github-json/data/**/*.json') +const changeExtension = (path: string, extension: string) => { + const fileName = basename(path, extname(path)) + return join(dirname(path), fileName + extension) +} +const transformPath = (sourcePath: string) => { + const path = resolve(sourcePath).replace(resolve('./.github-json/data'), resolve('./.github')) + return changeExtension(path, '.yml') +} +jsonFiles.forEach(jsonFile => { + const json = JSON.parse(readFileSync(jsonFile, { encoding: 'utf-8' })) + const yaml = stringify(json, { + nullStr: '', + doubleQuotedMinMultiLineLength: Infinity, + lineWidth: 0, + minContentWidth: 0, + }) + const yamlFile = transformPath(jsonFile) + // console.log(`${jsonFile} -> ${yamlFile}`) + writeFileSync(yamlFile, yaml) +}) diff --git "a/.github/DISCUSSION_TEMPLATE/\345\212\237\350\203\275\345\273\272\350\256\256-ideas.yml" "b/.github/DISCUSSION_TEMPLATE/\345\212\237\350\203\275\345\273\272\350\256\256-ideas.yml" new file mode 100644 index 0000000000..8632517c90 --- /dev/null +++ "b/.github/DISCUSSION_TEMPLATE/\345\212\237\350\203\275\345\273\272\350\256\256-ideas.yml" @@ -0,0 +1,24 @@ +title: 功能建议 +labels: [] +body: + - type: markdown + attributes: + value: | + 默认您已阅读 [常见问题解答](https://github.com/the1812/Bilibili-Evolved/discussions/1301) + 请勿重复发起, 发之前记得搜索一下. 如果需要反馈 Bug, 请前往 [Issues](https://github.com/the1812/Bilibili-Evolved/issues) 发起. + - type: textarea + id: description + attributes: + label: 期望的效果 + description: 描述你遇到的问题, 以及建议的解决方式 + placeholder: 请输入 + validations: + required: true + - type: input + id: script-version + attributes: + label: 脚本版本 + description: 可在设置面板的关于弹窗中找到脚本版本信息 + placeholder: 请输入 + validations: + required: true diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000..b6ce14523f --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +github: +patreon: +open_collective: +ko_fi: +tidelift: +community_bridge: +liberapay: +issuehunt: +otechie: +lfx_crowdfunding: +custom: + - https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/donate.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 676c6b480e..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: Bug 反馈 -about: 功能运行不正常 / 失效 - ---- - - - - - - -**关于哪一项功能** - - -**问题描述** - - - -**脚本版本** - - - -**浏览器版本** - - - -**错误信息** - - - - -**附加截图** diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000000..1a176307f2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,106 @@ +name: Bug 反馈 +description: 功能运行不正常 / 失效 +body: + - type: markdown + attributes: + value: | + 默认您已阅读 [Issues 须知](https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/issue-rules.md) + 请勿重复发起, 发之前记得看下[置顶问题 (Pinned issues)](https://github.com/the1812/Bilibili-Evolved/issues) (如果有的话), 以及[常见问题解答](https://github.com/the1812/Bilibili-Evolved/discussions/1301) + - type: textarea + id: feature + attributes: + label: 对应功能 + description: | + (指本脚本的某项具体功能, 不是指 b 站的) 可以在设置中尝试开启 / 关闭某项功能来排查. 最好能附上功能的 Commit 值 (在设置里功能选项的底部). + + 如果组件包含作者的信息 (by @xxx), 请在这里 at 他们 + 请注意: 以下功能已不再维护 (不再修复 bug 和添加新功能), 但是你仍然可以为其提供 Pull Request. + - 直播间自动抽奖 + - 默认播放器模式 + - 播放器置顶 + - 播放器定位 + placeholder: 请输入 + validations: + required: true + - type: textarea + id: description + attributes: + label: 问题描述 + description: 如何重现此问题, 在哪个页面里出现这个问题, 比如视频相关的可以提供一下 av / BV 号 + placeholder: 请输入 + validations: + required: true + - type: input + id: script-version + attributes: + label: 脚本版本 + description: 可在设置面板的关于弹窗中找到脚本版本信息 + placeholder: 请输入 + validations: + required: true + - type: input + id: script-manager-version + attributes: + label: 脚本管理器及版本 + description: 例如 Tampermonkey v4.19.6176 + placeholder: 请输入 + validations: + required: true + - type: input + id: browser-version + attributes: + label: 浏览器及版本 + description: 可在浏览器的关于页面中找到浏览器版本信息 + placeholder: 请输入 + validations: + required: true + - type: input + id: player-version + attributes: + label: 播放器版本 + description: | + 在 b 站播放器上右键可以看到播放器版本号 + placeholder: 请输入 + validations: + required: true + - type: dropdown + id: player-codec + attributes: + label: 播放策略 + description: 在 b 站播放器设置 - 更多播放设置 里可以看到播放策略 + options: + - 默认 + - AV1 + - HEVC + - AVC + validations: + required: true + - type: textarea + id: logs + attributes: + label: 错误信息 + description: | + 脚本直接报告的错误信息, 或者浏览器开发者工具 (F12 或 Ctrl+Shift+I 召唤) 里 Console / 控制台 一栏的输出, 太长的话可以截图放下面.
+ render: Shell + placeholder: 请输入 + validations: + required: true + - type: textarea + id: screenshots + attributes: + label: 附加截图 + placeholder: 可在此粘贴图片 + - type: textarea + id: kind_reminder + attributes: + label: 致遇到了相同问题准备回复的人 + description: 请勿修改文本框中的内容 + value: | + **太长不看**: + 1、遇到了相同的问题:**请用左下角的 reaction 点赞** + 2、实时关注该 Issue 的后续进展:**请用 Issue 页上的 Subscribe 功能**(在 PC 端按钮通常位于页面右侧)。 + **_请您回复前务必确认您有在本 Issue 之外补充了其它相关信息(比如 Log)再行回复以免对他人造成不必要的困扰_** +
+ 完整版 + 由于每个 Issue 甚至整个项目都是可以订阅通知的, 对于已经有人汇报过的 Bug, 如果您也遇到了并且没有其他信息要补充, 可以直接在左下点个赞表示 +1, 不要再去新增评论。想关注后续的可以用 Subscribe,Subscribe 之后该 Issue 如果有变动都可以收到通知,如果不想被回复打扰可以使用更加进阶的 Customize 功能,勾选 "Closed" & "Reopened"。Closed 通常代表该 Issue 已被解决,极少数情况下的 Reopened 代表该 Issue 的问题重新出现。如果您新增了无意义评论,因为 Issue 这个 bug tracker 与邮件列表类似,订阅某个 Issue 的用户会在每次这个 Issue 有新的动态时收到一封新的提醒邮件。也就是说,在 Issue 中的一个不能提供新的信息的评论,相当于给所有订阅这个 Issue 的用户发了一封垃圾邮件(spam)。尤其项目的维护者也是订阅者中的一员,太多垃圾邮件会对维护者带来很多不必要的困扰。发送垃圾邮件在开源社区通常是不那么受欢迎的行为。 +
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 6d3a4d06b2..f7e7c1ece3 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,17 +1,17 @@ blank_issues_enabled: false contact_links: - - name: 功能建议 - url: https://github.com/the1812/Bilibili-Evolved/discussions/new?category=ideas - about: 关于新功能的想法 / 现有功能的改进 - - name: 提问 / 答疑 - url: https://github.com/the1812/Bilibili-Evolved/discussions/new?category=Q-A - about: 其他疑问 - name: 转到讨论区 url: https://github.com/the1812/Bilibili-Evolved/discussions - about: Issues 用于反馈 Bug, 新的功能建议和提问答疑请到讨论区查看 + about: Issues 用于反馈 Bug, 新的功能建议和提问答疑请到讨论区发起 - name: 查看 Issues 须知 url: https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/issue-rules.md about: 默认所有 Issues 发起者均已了解此处的内容 + - name: 查看讨论区指南 + url: https://github.com/the1812/Bilibili-Evolved/discussions/1297 + about: 默认所有讨论发起者均已了解此处的内容 - name: 查看置顶问题 url: https://github.com/the1812/Bilibili-Evolved/issues about: 在 Pinned issues 中会包含一些近期常见问题, 已有的其他问题也会在下面列出, 请务必查看避免重复发起 + - name: 查看常见问题 + url: https://github.com/the1812/Bilibili-Evolved/discussions/1301 + about: 一些老生常谈的问题, 或许里面就有你想问的 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..3f8cfee438 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,52 @@ +name: Build +on: + workflow_dispatch: + push: + branches: + - master + - master-cdn + - preview +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: "0" + - name: Setup git + run: |- + git config --local user.email github-actions[bot]@users.noreply.github.com + git config --local user.name github-actions[bot] + git config --global core.autocrlf true + git config --global core.safecrlf false + - name: Install dependencies + uses: pnpm/action-setup@v4 + with: + run_install: true + - name: Type check + run: pnpm run type + - name: ESLint check + run: pnpm run lint + - name: Build core + run: pnpm run build-core + - name: Build features + run: | + cd registry + pnpm install + cd ../ + pnpm run build-features + - name: Git commit + id: commit + run: | + git add --all + git commit -m "CI build" + continue-on-error: true + - name: Git push + uses: ad-m/github-push-action@master + if: ${{ steps.commit.outcome == 'success' }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.ref }} + - name: Log + if: ${{ steps.commit.outcome != 'success' }} + run: echo Nothing to commit. diff --git a/.github/workflows/pull-request-check.yml b/.github/workflows/pull-request-check.yml new file mode 100644 index 0000000000..d602180321 --- /dev/null +++ b/.github/workflows/pull-request-check.yml @@ -0,0 +1,28 @@ +name: Pull Request Check +on: + - pull_request +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Install dependencies + uses: pnpm/action-setup@v4 + with: + run_install: true + - name: Type check + run: pnpm run type + - name: ESLint check + run: pnpm run lint-check + - name: Build core + run: pnpm run build-core + - name: Build features + run: | + cd registry + pnpm install + cd ../ + pnpm run build-features + - name: Log + run: echo Check complete. diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 862fd4b2b5..0000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Stale Bot - -on: - schedule: - - cron: "0 0 * * *" - -jobs: - stale: - - runs-on: ubuntu-latest - - steps: - - uses: actions/stale@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 1 day.' - stale-pr-message: 'This pull request is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 1 day.' - stale-issue-label: 'stale' - stale-pr-label: 'stale' - exempt-issue-label: long-term - exempt-pr-label: long-term - days-before-stale: 180 - days-before-close: 1 diff --git a/.gitignore b/.gitignore index 6e8c381876..1ac67a0514 100644 --- a/.gitignore +++ b/.gitignore @@ -1,276 +1,11 @@ -bilibili-evolved.dev.js .DS_Store -builder/dotnet/Properties -.node_modules/ -.ts-output/ -.sass-output/ -package-lock.json -dark.css -dark-template.css -_dark-template.scss -min/dark-slice-*.min.scss -min/dark-slice-*.min.css -doc/roadmap.* -*.csx +node_modules/ *.backup.* -*.vue.ts - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj +dev/ *.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc +dist/stats.html +dist/profile.json +dist/bilibili-evolved.dev.user.js +registry/dist/doc.js +dev-tools/**/dist/ +.idea diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..127347cd3d --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "all", + "arrowParens": "avoid", + "endOfLine": "auto", + "printWidth": 100 +} \ No newline at end of file diff --git a/.vscode/dynamic-import.code-snippets b/.vscode/dynamic-import.code-snippets new file mode 100644 index 0000000000..3db8cb8a43 --- /dev/null +++ b/.vscode/dynamic-import.code-snippets @@ -0,0 +1,24 @@ +{ + // Place your Bilibili Evolved workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + "Dynamic import": { + "scope": "javascript, typescript", + "prefix": "import", + "body": "const { $2 } = await import('$1')$0", + "description": "Dynamic import" + } +} \ No newline at end of file diff --git a/.vscode/html-in-js.code-snippets b/.vscode/html-in-js.code-snippets index 600554cb70..54fd40f5ad 100644 --- a/.vscode/html-in-js.code-snippets +++ b/.vscode/html-in-js.code-snippets @@ -1,5 +1,5 @@ { - // Place your Bilibili Evo workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // Place your Bilibili Evolved workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: diff --git a/.vscode/launch.json b/.vscode/launch.json index cc1d152188..290d59c2f3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,28 +4,5 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "name": "重新编译 rebuild", - "type": "coreclr", - "request": "launch", - "program": "${workspaceFolder}/builder/dotnet/bin/Debug/netcoreapp3.1/build.dll", - "args": [], - "cwd": "${workspaceFolder}", - "stopAtEntry": false, - "console": "internalConsole", - "preLaunchTask": "构建编译器 (Debug模式) compile builder" - }, - { - "name": "监视 watch", - "type": "coreclr", - "request": "launch", - "program": "${workspaceFolder}/builder/dotnet/bin/Debug/netcoreapp3.1/build.dll", - "args": ["watch"], - "cwd": "${workspaceFolder}", - "stopAtEntry": false, - "internalConsoleOptions": "neverOpen", - "console": "integratedTerminal", - "preLaunchTask": "构建编译器 (Debug模式) compile builder" - } ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 36314678a5..58edeaa595 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,80 +1,145 @@ { - "todohighlight.exclude": [ - "**/node_modules/**", - "**/bower_components/**", - "**/dist/**", - "**/build/**", - "**/.vscode/**", - "**/.github/**", - "**/_output/**", - "**/*.min.*", - "**/*.map", - "**/.next/**", - "**/.vs/**", - "**/build-scripts/**" - ], - "cSpell.words": [ - "Bangumi", - "Biliplus", - "Bing", - "Danmaku", - "Doujin", - "HEVC", - "Liveroom", - "Otaku", - "Swiper", - "Violentmonkey", - "Vuex", - "WASD", - "Watchlater", - "afterbegin", - "afterend", - "bili", - "bilibili", - "bofqi", - "btns", - "bvid", - "clipboardy", - "cntr", - "compositionend", - "compositionstart", - "csrf", - "ctnr", - "danmakus", - "debounced", - "downloaders", - "dpis", - "durl", - "githubusercontent", - "gridview", - "haruna", - "hdslb", - "iconfont", - "imgleft", - "jinkela", - "jsdelivr", - "kanban", - "kichiku", - "materialdesignicons", - "medialist", - "overscroll", - "pako", - "protobuf", - "qrcode", - "rcmd", - "reloadable", - "reloadables", - "remd", - "repo", - "repost", - "reposts", - "superchat", - "tabindex", - "truetype", - "xmlhttp" - ], - "javascript.validate.enable": true, - "files.associations": { - "*.user.js": "plain" - } -} \ No newline at end of file + "todohighlight.exclude": [ + "**/node_modules/**", + "**/bower_components/**", + "**/dist/**", + "**/build/**", + "**/.vscode/**", + "**/.github/**", + "**/_output/**", + "**/*.min.*", + "**/*.map", + "**/.next/**", + "**/.vs/**", + "**/build-scripts/**" + ], + "cSpell.words": [ + "afterbegin", + "afterend", + "akari", + "BALH", + "Bangumi", + "bevo", + "bili", + "bilibili", + "Biliplus", + "Bing", + "Blockable", + "bofqi", + "BVID", + "camelcase", + "cascader", + "clipboardy", + "cntr", + "compositionend", + "compositionstart", + "contenteditable", + "csrf", + "ctnr", + "Danmaku", + "danmakus", + "debounced", + "devtools", + "Doujin", + "downloaders", + "dpis", + "durl", + "epid", + "esbuild", + "ffmetadata", + "flac", + "Fullscreen", + "githubusercontent", + "Greasemonkey", + "guochuang", + "haruna", + "hdslb", + "HEVC", + "iconfont", + "Iframes", + "Interop", + "jinkela", + "jsdelivr", + "jszip", + "kanban", + "keymap", + "kichiku", + "linebreak", + "Liveroom", + "materialdesignicons", + "matroska", + "medialist", + "mimetype", + "minmax", + "mixins", + "Muuri", + "overscroll", + "pako", + "plusplus", + "pnpm", + "Popcap", + "popperjs", + "preload", + "protobuf", + "pubdate", + "rcount", + "reimu", + "reloadable", + "reloadables", + "repo", + "repost", + "reposts", + "Roadmap", + "roomid", + "rpid", + "saturationv", + "Sendbar", + "sortablejs", + "streamsaver", + "superchat", + "Swiper", + "tabindex", + "tagid", + "Tampermonkey", + "Touhou", + "truetype", + "uname", + "usercard", + "userscript", + "Violentmonkey", + "vnode", + "Vuex", + "Wasm", + "watchlater", + "webfullscreen", + "woff", + "xmlhttp" + ], + "svg.preview.background": "transparent", + "files.associations": { + // don't highlight generated files + "*.user.js": "plaintext", + "**/dist/**/*.js": "plaintext" + }, + "search.exclude": { + "**/dev": true, + "**/dist": true, + "**/pnpm-lock.yaml": true + }, + "eslint.format.enable": true, + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[vue]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "explorer.fileNesting.patterns": { + "*.ts": "${capture}.js", + "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts", + "*.jsx": "${capture}.js", + "*.tsx": "${capture}.ts", + "tsconfig.json": "tsconfig.*.json", + "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, .*", + "index.ts": "index.*.ts, index.md, index.*.md" + } +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a1805e0c07..7fcd64c6b9 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,122 +4,149 @@ "version": "2.0.0", "tasks": [ { - "label": "生产编译 production", - "type": "shell", - "command": "dotnet builder/dotnet/publish/build.dll production", - "options": { - "cwd": "./" - }, - "group": { - "kind": "build", - "isDefault": true - }, - "presentation": { - "echo": false, - "reveal": "always", - "focus": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] + "type": "shell", + "command": "pnpm ts-node ./dev-tools/dev-server/index.ts", + "group": "build", + "problemMatcher": [], + "label": "启动开发服务 dev-server" }, { - "label": "重新编译 rebuild", "type": "shell", - "command": "dotnet builder/dotnet/publish/build.dll", - "options": { - "cwd": "./" - }, + "command": "pnpm webpack --config ./webpack/webpack.dev.ts --progress", "group": "build", - "presentation": { - "echo": false, - "reveal": "always", - "focus": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] + "problemMatcher": [], + "label": "本体:编译开发版本 dev:build-core" }, { - "label": "监视 watch", "type": "shell", - "command": "dotnet builder/dotnet/publish/build.dll watch", - "options": { - "cwd": "./" - }, + "command": "pnpm webpack --watch --config ./webpack/webpack.dev.ts --progress", "group": "build", - "presentation": { - "echo": false, - "reveal": "always", - "focus": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] + "problemMatcher": [], + "label": "本体:监视开发版本 dev:watch-core" }, { - "label": "生产监视 production-watch", "type": "shell", - "command": "dotnet builder/dotnet/publish/build.dll watch production", - "options": { - "cwd": "./" - }, + "command": "pnpm serve dist -p ${input:serverPort}", "group": "build", - "presentation": { - "echo": false, - "reveal": "always", - "focus": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] + "problemMatcher": [], + "label": "本体:启动服务器 dev:serve-core" }, { - "label": "构建编译器 compile builder", "type": "shell", - "command": "dotnet publish -c Release -o publish/", - "options": { - "cwd": "./builder/dotnet/" - }, + "command": "pnpm serve registry/dist -p ${input:serverPort}", "group": "build", - "presentation": { - "echo": false, - "reveal": "always", - "focus": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] + "problemMatcher": [], + "label": "功能:启动服务器 dev:serve-features" + }, + { + "type": "shell", + "command": "pnpm webpack --watch --config ./registry/webpack/components.ts --progress --mode=development", + "group": "build", + "problemMatcher": [], + "label": "功能:监视组件 dev:watch-components" + }, + { + "type": "shell", + "command": "pnpm webpack --watch --config ./registry/webpack/plugins.ts --progress --mode=development", + "group": "build", + "problemMatcher": [], + "label": "功能:监视插件 dev:watch-plugins" + }, + { + "type": "shell", + "command": "pnpm tsc -p tsconfig.type-check.json --noEmit", + "group": "build", + "problemMatcher": [], + "label": "生产:类型检查 prod:type" + }, + { + "type": "shell", + "command": "pnpm --silent webpack --config ./webpack/webpack.prod.ts --profile --json > dist/profile.json && pnpm webpack-bundle-analyzer dist/profile.json", + "group": "build", + "problemMatcher": [], + "label": "本体:打包分析 prod:analyze" + }, + { + "type": "shell", + "command": "pnpm eslint . --cache --cache-location node_modules/.cache/eslint/ --ext .ts,.vue", + "group": "build", + "problemMatcher": [], + "label": "生产:代码检查 prod:lint" + }, + { + "type": "shell", + "command": "pnpm eslint . --cache --cache-location node_modules/.cache/eslint/ --fix --ext .ts,.vue", + "group": "build", + "problemMatcher": [], + "label": "生产:代码修复 prod:lint-fix" + }, + { + "type": "shell", + "command": "pnpm webpack --config ./webpack/webpack.prod.ts --progress", + "group": "build", + "problemMatcher": [], + "label": "本体:编译生产版本 prod:build-core" + }, + { + "type": "shell", + "command": "pnpm webpack --config ./registry/webpack/components.ts --progress", + "group": "build", + "problemMatcher": [], + "label": "功能:编译组件 prod:build-components" + }, + { + "type": "shell", + "command": "pnpm webpack --config ./registry/webpack/plugins.ts --progress", + "group": "build", + "problemMatcher": [], + "label": "功能:编译插件 prod:build-plugins" + }, + { + "type": "shell", + "command": "pnpm webpack --config ./registry/webpack/all.ts", + "group": "build", + "problemMatcher": [], + "label": "功能:编译所有 prod:build-features" + }, + { + "type": "shell", + "command": "pnpm build-github-config", + "group": "build", + "problemMatcher": [], + "label": "功能:生成 GitHub 配置 prod:build-github-config" }, { - "label": "构建编译器 (Debug模式) compile builder", "type": "shell", - "command": "dotnet build", - "options": { - "cwd": "./builder/dotnet/" - }, + "command": "pnpm webpack --config ./registry/webpack/docs.ts --progress", "group": "build", - "presentation": { - "echo": false, - "reveal": "always", - "focus": true, - "panel": "shared", - "showReuseMessage": false - }, + "problemMatcher": [], + "label": "功能:编译功能文档 prod:build-docs" + }, + { + "type": "shell", + "command": "rm -r ./node_modules/.cache/webpack/", + "label": "缓存:清除 webpack cache:clean-webpack", "problemMatcher": [] }, { - "label": "同步i18n数据 sync i18n", "type": "shell", - "command": "node ./builder/node/i18n-sync/i18n-sync.js", - "presentation": { - "echo": false, - "reveal": "silent", - "focus": false, - "panel": "shared", - "showReuseMessage": false - }, + "command": "rm -r ./node_modules/.cache/babel-loader/", + "label": "缓存:清除 babel cache:clean-babel", "problemMatcher": [] + }, + { + "type": "shell", + "command": "rm -r ./node_modules/.cache/", + "label": "缓存:清除全部 cache:clear-all", + "problemMatcher": [] + } + ], + "inputs": [ + { + "id": "serverPort", + "type": "promptString", + "description": "监听端口", + "default": "5000" } ] } \ No newline at end of file diff --git a/.vscode/ui-import.code-snippets b/.vscode/ui-import.code-snippets new file mode 100644 index 0000000000..a949e73bdf --- /dev/null +++ b/.vscode/ui-import.code-snippets @@ -0,0 +1,24 @@ +{ + // Place your Bilibili Evolved workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + "UI import": { + "scope": "javascript, typescript", + "prefix": "ui", + "body": "import {\n $0\n} from '@/ui'", + "description": "UI import" + }, +} \ No newline at end of file diff --git a/.vscode/vue-import.code-snippets b/.vscode/vue-import.code-snippets new file mode 100644 index 0000000000..3d1f9a5193 --- /dev/null +++ b/.vscode/vue-import.code-snippets @@ -0,0 +1,24 @@ +{ + // Place your Bilibili Evolved workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + "Vue import": { + "scope": "javascript, typescript", + "prefix": "vue", + "body": "() => import('$1').then(m => m.default)$0", + "description": "Vue import" + } +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..374532696e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2499 @@ + +# 更新日志 + +## v2.10.5-preview +`2025-12-13` + +包含 [v2.10.5](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.10.5) 的所有更新内容. + +✨新增 +- `定制自动连播行为` 支持推荐列表的自动连播. (PR #5410 by [wsgh0202](https://github.com/wsgh0202)) +- 新增组件 `直播前后台音量调节`, 支持在直播间前后台切换时自动调节音量. (PR #5407 by [KDH-KDHKDH](https://github.com/KDH-KDHKDH)) +- `保存视频元数据` 支持保存视频统计数据、番剧非正片内容、自定义时间格式. (PR #5399 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `下载视频 - WASM 混流输出` 新增输出格式选项, 支持嵌入封面. (PR #5388 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- 新增组件 `视频缩放`, 支持自定义视频播放器缩放比例和预设选项. (PR #5352 by [Weedy233](https://github.com/Weedy233)) +- `动态过滤器` 支持编辑和开关过滤关键词. (#5394) +- 改进 `下载视频` 中对 MCDN 的检测方式. (#5390, #5438) + +🐛修复 +- 修复 `定制自动连播行为` 正片为数字列表模式时自动模式失效. (PR #5360 by [wsgh0202](https://github.com/wsgh0202)) + +## v2.10.5 +`2025-12-13` + +✨新增 +- 支持手动选择下载字幕的语言. (#4927) +- `网址参数清理` 新增对推荐列表、评论搜索关键词、收藏和稍后再看页面的链接清理支持. (PR #5412 by [wsgh0202](https://github.com/wsgh0202)) + +🐛修复 +- 修复 `播放器置顶(新)` 对迷你播放器的处理. (PR #5417 by [Elypha](https://github.com/Elypha)) +- 修复字幕开关切换失效, 现在切换字幕会在 “关闭” 和 “最近一次使用的字幕语言” 之间切换. (#5368) (用起来应该差不多, 之前只是开启和关闭, 不会管最近一次使用) +- 为脚本中涉及的视频链接尾部补充了斜杠, 有助于减少重复历史记录. (#5391) +- 修复 `禁止跳转动态详情` 导致展开全文按钮失效. (#5426) +- `夜间模式` 排除直播间天选时刻. (#5223) +- 修复 `禁用特殊弹幕样式` 未隐藏 UP 主徽章的问题. +- 改进 `快速收藏` 的错误处理, 支持识别到收藏夹已满. (#5382) + +## v2.10.4-preview +`2025-09-11` + +包含 [v2.10.4](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.10.4) 的所有更新内容. + +✨新增 +- 新增组件 `定制自动连播行为`, 可根据自动连播视频类型分别配置. (PR #5303 by [wsgh0202](https://github.com/wsgh0202)) +- `网址参数清理` 新增选项 `清理页面中的 A 标签`. (PR #5339 by [WakelessSloth56](https://github.com/WakelessSloth56), [LainIO24](https://github.com/lainio24)) +- `保存视频元数据` 支持标签和番剧信息, 支持番剧OPED转换为章节. (PR #5355 by [WakelessSloth56](https://github.com/WakelessSloth56), [LainIO24](https://github.com/lainio24)) +- 新增组件 `替换标题党封面`, 可将视频卡片的封面替换为视频预览帧. (PR #5226 by [UcnacDx2](https://github.com/UcnacDx2)) +- 新增组件 `会员购链接转换`, 可将移动端的会员购链接转换为 PC 端的链接. (#5310) +- `下载视频` 支持配置下载地址偏好. (#3234) +- 搜索栏支持自动补全关键词和搜索历史. (#822) + +## v2.10.4 +`2025-09-11` + +✨新增 +- `隐藏用户信息卡片` 适配新版评论区. (#5324, PR #5327 by [WakelessSloth56](https://github.com/WakelessSloth56)) + +🐛修复 +- 修复 `隐藏首页轮播图` 失效. (PR #5287 by [wsgh0202](https://github.com/wsgh0202)) +- 修复 `删除广告` 在首页无法屏蔽部分广告, 新增移除占位的选项. (PR #5307, #5309 by [wsgh0202](https://github.com/wsgh0202)) +- 修复部分功能未能识别主站分区页面的问题. +- 修复 `下载表情` 失效. (#5320, PR #5325 by [Pencil](https://github.com/pencilqaq)) +- 修复 `点亮粉丝勋章` 在原版直播间失效. (PR #5328 by [k](https://github.com/kkkkkkkk566)) +- 修复 `清爽首页` 中的国创分区内容显示错误. (#5292) +- 修复 `评论内容替换` 在 Firefox 中不生效. (#4843) +- `夜间模式` 排除商家平台 (`shop.bilibili.com`). (PR #5354 by [ImAyxs](https://github.com/Ayx03)) + +## v2.10.3-preview +`2025-07-22` + +包含 [v2.10.3](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.10.3) 的所有更新内容. + +- 新增 `深色模式` 组件, 用于跟随 b 站官方的内测深色模式. (#5272) +> 脚本自身的元素配色也会逐步适配官方的配色, 目前仅适配设置面板、自定义顶栏和动态首页中的元素 + +- `插件 - 下载视频 - WASM 混流输出` 修正下载限制为 2GB, 新增下载速度和剩余时间显示. (#5102, PR #5233 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `弹幕空降` 支持识别中文数字, 修复对特殊弹幕未触发的问题. (PR #5265 by [fixfeat](https://github.com/fixfeat)) +- 新增 `视频预览放大` 组件. (PR #5281 by [wsgh0202](https://github.com/wsgh0202)) +> 放大鼠标悬停于视频卡片时播放的 5 分钟预览 +> +> - 点击放大镜图标放大预览 +> - 点击缩小图标或者预览框外空白处关闭预览 + +## v2.10.3 +`2025-07-22` + +
+正式版用户将获得 v2.10.1-preview ~ v2.10.2-preview 的所有改动, 点击展开查看 + +- 新增 `稍后再看页面-重定向` 组件. (PR #5205 by [undefined](https://github.com/magicFeirl)) +> 重定向**稍后再看页面**到普通视频页面,和`稍后再看重定向`组件的区别在于,该组件是在进入稍后再看的视频页面后进行重定向,而非直接替换链接到普通视频的链接,用于补充`稍后再看重定向`组件的功能。 + +- `隐藏热搜` 支持隐藏直播间搜索框的热搜. (PR #5207 by [undefined](https://github.com/magicFeirl)) +- 修复 `视频链接增强` 对 niconico 链接的处理. (PR #5215 by [Alan Ye](https://github.com/at-wr)) +- 新增 `动态分组过滤` 组件. (PR #5217 by [Rinne](https://github.com/OharaRinneY)) +> 按照关注分组筛选动态 + +- `直播信息扩充` 支持配置置顶和隐藏的关注列表. (#5183) +- 新增组件 `一键点亮直播间粉丝勋章`. (PR #5171 by [undefined](https://github.com/magicFeirl)) +> 在直播间页面的功能面板添加一键点亮粉丝勋章功能,仅适用于有粉丝勋章且正在直播的直播间。原理:发送一个 300 次点赞的请求点亮粉丝勋章。 + +- 新增组件 `下载表情`. (PR #5176 by [Pencil](https://github.com/pencilqaq)) +> 支持下载 up 主专属表情包,处于任意直播间页面时,下载按钮会在 `功能` 面板显示,以压缩包形式保存。 + +- 新增组件 `视频链接增强`. (PR #5197 by [Alan Ye](https://github.com/at-wr)) +> 这个组件会将视频简介中的普通网址转换为可点击的链接,并将被 Bilibili 抛弃已失效的 `acg.tv` 跳转链接修复为 `nicovideo.jp` 链接。 +> +> 例如: `https://acg.tv/sm37507315` → `https://www.nicovideo.jp/watch/sm37507315` +> +> 本组件不会保证目标链接的安全性,因此在点击前请自行验证其是否可信 + +- `自定义顶栏` 新增 `使用主题色 Logo` 选项, 关闭时可以使用黑白纯色的 Logo. (#4996) +- `自定义顶栏` 更新 `游戏中心`, `漫画`, `赛事` 的弹窗, 废弃 `直播` 的弹窗. (#5055) + +
+ +- 修复 `隐藏首页轮播图` 失效, 并增加了一些局部元素控制功能. (PR #5287 by [wsgh0202](https://github.com/wsgh0202)) + +(以下其实都是 6 月就更新了, 只要你的 `自动更新器` 正常使用, 应该早已收到更新了, 这些改动无需更新本体) + +✨新增 +- `显示视频投稿时间` 支持在合集类页面显示. (#5247, PR #5266 by [呼乎户](https://github.com/wisokey)) +- `动态过滤` 支持过滤新出现的热搜面板. (#5273, PR #5276 by [Whalko](https://github.com/RtYkk)) + +🐛修复 +- 修复 `夜间模式` 在首页 svg 图标的颜色. (PR #5240 by [hyrious](https://github.com/hyrious)) +- 修复 `自动移出稍后再看` 重复调用接口的 bug. (PR #5241 by [sunfkny](https://github.com/sunfkny)) +- 修复 `关注时间显示` 失效. (#5096, #5212, PR #5282 by [CNOCM](https://github.com/CNOCM)) + + +## v2.10.2-preview +`2025-05-30` + +包含 [v2.10.2](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.10.2) 的所有更新内容. + +- 新增 `稍后再看页面-重定向` 组件. (PR #5205 by [undefined](https://github.com/magicFeirl)) +> 重定向**稍后再看页面**到普通视频页面,和`稍后再看重定向`组件的区别在于,该组件是在进入稍后再看的视频页面后进行重定向,而非直接替换链接到普通视频的链接,用于补充`稍后再看重定向`组件的功能。 + +- `隐藏热搜` 支持隐藏直播间搜索框的热搜. (PR #5207 by [undefined](https://github.com/magicFeirl)) +- 修复 `视频链接增强` 对 niconico 链接的处理. (PR #5215 by [Alan Ye](https://github.com/at-wr)) +- 新增 `动态分组过滤` 组件. (PR #5217 by [Rinne](https://github.com/OharaRinneY)) +> 按照关注分组筛选动态 + +- `直播信息扩充` 支持配置置顶和隐藏的关注列表. (#5183) + + +## v2.10.2 +`2025-05-30` + +✨新增 +- 更新历史记录页面的链接至 `https://www.bilibili.com/history`. (#5218) +- `删除视频弹窗` 支持屏蔽新型的流畅度反馈弹窗. +- 优化了个人空间的夜间模式. + +🐛修复 +- 修复 `快捷键扩展` 在 Firefox 中聚焦播放器后失效. (#5225) +- 修复 `动态过滤器` 对合集 / 课程类型的过滤, 恢复失效的 `自转发` 类型. (#5135, #5229) +- 修复 `禁用特殊弹幕样式` 对大会员弹幕失效. (#5208) +- 修复 `自动点赞` 对黑名单无效. (#5221, PR #5222 by [CrazyboyQCD](https://github.com/CrazyboyQCD)) +- 修复 `清爽首页` 中失效的排行榜数据, 部分视频的描述未展示, 以及视频的封面比例不正确. (#5211) + +☕开发者相关 +- 修复组件中新创建的数组类型选项没有保存到脚本管理器的存储中. + +## v2.10.1-preview +`2025-04-09` + +包含 [v2.10.1](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.10.1) 的所有更新内容. + +- 新增组件 `一键点亮直播间粉丝勋章`. (PR #5171 by [undefined](https://github.com/magicFeirl)) +> 在直播间页面的功能面板添加一键点亮粉丝勋章功能,仅适用于有粉丝勋章且正在直播的直播间。原理:发送一个 300 次点赞的请求点亮粉丝勋章。 + +- 新增组件 `下载表情`. (PR #5176 by [Pencil](https://github.com/pencilqaq)) +> 支持下载 up 主专属表情包,处于任意直播间页面时,下载按钮会在 `功能` 面板显示,以压缩包形式保存。 + +- 新增组件 `视频链接增强`. (PR #5197 by [Alan Ye](https://github.com/at-wr)) +> 这个组件会将视频简介中的普通网址转换为可点击的链接,并将被 Bilibili 抛弃已失效的 `acg.tv` 跳转链接修复为 `nicovideo.jp` 链接。 +> +> 例如: `https://acg.tv/sm37507315` → `https://www.nicovideo.jp/watch/sm37507315` +> +> 本组件不会保证目标链接的安全性,因此在点击前请自行验证其是否可信 + +- `自定义顶栏` 新增 `使用主题色 Logo` 选项, 关闭时可以使用黑白纯色的 Logo. (#4996) +- `自定义顶栏` 更新 `游戏中心`, `漫画`, `赛事` 的弹窗, 废弃 `直播` 的弹窗. (#5055) + +## v2.10.1 +`2025-04-09` + +
+正式版用户将获得 v2.9.6-preview ~ v2.10.0-preview 的所有改动, 点击展开查看 + +- 新增插件 `自定义顶栏 - 版权内容`. (#5045) +> 为自定义顶栏扩充版权内容相关的快速入口, 包括国创 / 电影 / 电视剧 /综艺 / 纪录片 + +- 视频截图在还有截图未处理 (保存 / 丢弃) 时, 离开页面增加二次确认. (#5066) +- `插件 - 下载视频 - WASM 混流输出` 在超过 4GB 时支持抛出错误提示. (PR #5102 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `自定义顶栏` 的透明填充在同时开启了全局固定时, 支持下拉后过渡到不透明状态. (#4996) +- `自定义顶栏` 的弹窗增加了 0.2s 的触发延迟, 防止鼠标快速经过时误触. (#4949) +- 废弃 `双击全屏` 组件, 本体也不再会屏蔽双击全屏. (#5095) + +
+ +✨新增 +- 新增组件 `禁用双击全屏`. (#5095) +> ⚠ 请注意 `双击全屏` 组件已废弃, 本体也不再会屏蔽双击全屏, 更新后可以直接卸载 `双击全屏` 组件 + +- `快捷键扩展` 的使用说明增加关于屏蔽 b 站自带快捷键的指南. (#5168) +- `动态过滤器` 增加 `课程`, `直播`, `合集` 类型. (#5135) +> 这些类型的支持是根据 b 站代码里的枚举加的, 我的动态里没有这些类型无法测试, 如果还有相关问题请继续在 #5135 中反馈 + +🐛修复 +- 修复 `快捷键扩展` 在聚焦元素相关的动作中出现失效的情况. (#5150, #5153, #5174) +- 修复 `启用快速收藏` 在存在和默认收藏夹同名的收藏夹时, 收藏到了错误的收藏夹. (#5151) +- 修复 `图片批量导出` 在 Firefox 中导出动态图片时出现重复图片. (#5166) +- 修复 `夜间模式` 导致登录时二维码扫码困难. (#5163, PR #5173 by [Pencil](https://github.com/pencilqaq)) +- 修复 `删除广告` 在搜索页出现的空位. (#5032) + + +## v2.10.0-preview +`2025-02-25` + +包含 [v2.10.0](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.10.0) 的所有更新内容. + +- `插件 - 下载视频 - WASM 混流输出` 在超过 4GB 时支持抛出错误提示. (PR #5102 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `自定义顶栏` 的透明填充在同时开启了全局固定时, 支持下拉后过渡到不透明状态. (#4996) +- `自定义顶栏` 的弹窗增加了 0.2s 的触发延迟, 防止鼠标快速经过时误触. (#4949) +- 废弃 `双击全屏` 组件, 本体也不再会屏蔽双击全屏. (#5095) + +## v2.10.0 +`2025-02-25` + +✨新增 +- 优化 `夜间模式` 在视频页和新版个人空间的适配. (#5121, #5115, PR #5116 by [Pencil](https://github.com/pencilqaq)) +- 动态相关功能支持在新版个人空间里使用. (#5112) +- `稍后再看` 重定向支持在新版稍后再看列表页里使用. (#4951) + +🐛修复 +- 对 `自定义顶栏` 的番剧区分了链接和弹窗两种形式, 避免重名. 若同时开启, 番剧弹窗将自动变为 "追番追剧". (#5087) +- 修复 `图片批量导出` 在新版动态卡片上不生效. (#5098) +- 修复 `删除广告` 在视频页清理不干净. (#5110) +- 修复 `快捷键扩展` 导致在视频页使用方向键选择搜索建议时, 触发了音量调整. (#5119) +- 修复 `高分辨率图片` 导致部分图片比例不正确 (#5103) +> 因为 b 站自身基本已经普及 2x 缩放的图片, 如果你的系统缩放比例小于等于 200%, 也不需要在专栏中请求原图, 则可以删除 `高分辨率图片` 组件. `高分辨率图片` 改为只对 200% 缩放以上的屏幕请求更高分辨率的图片. + +- 修复 `自定义顶栏` 的排序设置在重新登录后乱序. (#5099) +- 修复关闭再打开 `自定义顶栏` 后, 其布局设置的界面异常. +- 修复注入到播放器控制栏按钮的相关功能不生效. + +☕开发者相关 +- 优化关于启动 `dev-server` 的文档. (PR #5130 by [undefined](https://github.com/magicFeirl)) +- pnpm 升级至 v10, 启用 corepack. + +🗑️废弃 +- 废弃 `签到助手` 中的 `直播间签到`, 因为直播间签到已被 b 站下线. + + +## v2.9.6-preview +`2024-12-28` + +包含 [v2.9.6](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.9.6) 的所有更新内容. + +- 新增插件 `自定义顶栏 - 版权内容`. (#5045) +> 为自定义顶栏扩充版权内容相关的快速入口, 包括国创 / 电影 / 电视剧 /综艺 / 纪录片 + +- 视频截图在还有截图未处理 (保存 / 丢弃) 时, 离开页面增加二次确认. (#5066) + +## v2.9.6 +`2024-12-28` + +✨新增 +- `自定义顶栏` 更新: + - (来自 v2.9.5-preview) 历史支持手动刷新. (#4948) + - 全局固定适配话题页. (#5039) + - 新歌热榜 URL 更新. (#5056) + - `订阅` 重命名为 `番剧`, 功能不变. (#4777) + - 增加 VLOG, 搞笑, 综艺, 单机游戏入口. (#1511) +- `传统连播模式` 支持番剧页面. (#5067) +- `下载视频` 增加选项 `DASH 回退编码`, 默认回退到 AVC, 可以避免 HEVC 回退到 AV1 的情况. (#5080) +- 新增功能 `隐藏首页轮播图`. (从上一版本废弃的 `简化首页` 中提取) (#5038) +- `夜间模式` 优化对动态和新版首页的适配. (#5075) + +🐛修复 +- 修复 `隐藏头像框` 对部分角标删除不完全. (#5040) +- 修复 `自定义顶栏` 删除搜索历史时失焦. (#4732) +- 修复 `自定义顶栏` 未登录时仍能通过功能面板进行排序. (#5051) +- 修复 `自定义顶栏` 收藏夹的音频链接错误. (#5069) +- 修复在搜索页的样式冲突. (#5073) +- 修复 `直播首页静音` 在关闭时仍会导致首页静音. (#5045) +- 修复 `禁止滚轮调音量` 在 Firefox 中不生效. (#5047) +- 回退 `直播信息扩充` 的 API 变更. (#4964) + +## v2.9.5-preview +`2024-11-12` + +包含 [v2.9.5](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.9.5) 的所有更新内容. + +- `自定义顶栏` 的历史支持手动刷新. (#4948) + +## v2.9.5 +`2024-11-12` + +
+正式版用户将获得 v2.9.4-preview 的所有改动, 点击展开查看 + +✨新增 +- 新增组件 `隐藏头像框`. +> 隐藏页面中用户的头像框 (包括角标), 目前支持动态和视频页面. + +- 新增组件 `隐藏直播马赛克`. (#4634) +> 移除直播画面中的马赛克区域. + +- 优化了搜索框的搜索建议精准度. (#4833) +- 新增组件 `删除动态`. (PR #4915 by [gouzil](https://github.com/gouzil)) +> 删除动态, 可选转发抽奖, 和全部删除. + +- `保存视频元数据` 增加 FFMETADATA 字段选项. (PR #4943 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- 新增组件 `评论内容替换`. (#4072) +> 替换评论中的内容. +> 可以添加多个替换配置, 每项配置可将一个关键词替换为其他文本. 若替换的目标是一个链接, 则视作替换为表情. +> + +- `直播信息扩充` 更换新的 API 接口. (PR #4964 by [Oxygenくん](https://github.com/oxygenkun)) + +
+ +✨新增 +- 新版视频推荐适配组件: + - `显示视频投稿时间` (#4934, PR #4960 by [呼乎户](https://github.com/wisokey)) + - `隐藏视频推荐` + - `选集区域优化`, 其中 `展开选集标题` 选项还可恢复分 P 数的展示 + - `传统连播模式` + - `展开弹幕列表` - `有选集时不自动展开` +- 优化在线仓库中的搜索逻辑和搜索为空的提示. (#4975, #4973) +- `自定义顶栏` 的历史支持显示分 P 数信息. (#1866) +- `删除广告` 更新对首页浮窗广告的屏蔽. (#5001) + +🐛修复 +- 修复 `简化直播间` 付费礼物屏蔽失效. (#4968) +- 修复动态菜单中的扩展菜单项失效. (#4976) +- `夜间模式` 排除工房页面, 避免文字难以阅读. (#4981) +- `自定义顶栏` 移除已下线的 `短剧榜` 入口. (#4987) +- 修复 `删除广告` 导致直播间和个人空间里的动态显示不出来. (#5003) +- 修复 `网址参数清理` 对需转义的字符处理不正确. (#5009) +- 修复组件描述在部分页面的标题颜色不正确. (#4995) +- 修复 `禁止跳转动态详情` 在带图转发动态二次转发后, 查看图片按钮失效. (PR #4980 by [sunfkny](https://github.com/sunfkny)) +- 插件 `下载视频 - WASM 混流输出` 修复写入元数据选项, 新增混流进度, 优化多集下载. (#4840, PR #4984 by [WakelessSloth56](https://github.com/WakelessSloth56)) + +☕开发者相关 +- `自定义顶栏` 未登录时的阿卡林头像转为内置. (感觉说不定 b 站哪天就把这图删了) + +🗑️废弃 +- 废弃 `简化首页` 功能, 请使用 [BewlyBewly](https://github.com/BewlyBewly/BewlyBewly) 替代. + +## v2.9.4-preview +`2024-10-22` + +包含 [v2.9.4](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.9.4) 的所有更新内容. + +✨新增 +- 新增组件 `隐藏头像框`. +> 隐藏页面中用户的头像框 (包括角标), 目前支持动态和视频页面. + +- 新增组件 `隐藏直播马赛克`. (#4634) +> 移除直播画面中的马赛克区域. + +- 优化了搜索框的搜索建议精准度. (#4833) +- 新增组件 `删除动态`. (PR #4915 by [gouzil](https://github.com/gouzil)) +> 删除动态, 可选转发抽奖, 和全部删除. + +- `保存视频元数据` 增加 FFMETADATA 字段选项. (PR #4943 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- 新增组件 `评论内容替换`. (#4072) +> 替换评论中的内容. +> 可以添加多个替换配置, 每项配置可将一个关键词替换为其他文本. 若替换的目标是一个链接, 则视作替换为表情. +> + +- `直播信息扩充` 更换新的 API 接口. (PR #4964 by [Oxygenくん](https://github.com/oxygenkun)) + +## v2.9.4 +`2024-10-22` + +✨新增 +- `屏蔽黑名单up主` 去除了登录校验. (#4917, PR #4926 by [snowraincloud](https://github.com/snowraincloud)) +- `图片批量导出` 适配新型的图片动态. (#4830) +- 更新评论区的 `夜间模式`. (#4931) + +🐛修复 +- 修复 StreamSaver 和 ffmpeg WASM 的 SRI 校验问题. (#4913, #4864) +- 修复下载合集时 BV 号命名重复. (#4818) +- 修复 `删除广告` 去除首页广告时没有遵循 `占位文本` 选项. (#4836) +- 修复 `自定义顶栏` 历史面板中的多余 title 提示. (#4962) +- 修复下载弹幕时播放器设置没有正确读取. (#4824) + +🗑️废弃 +- `自定义顶栏` 删除 `相簿` 入口. + +☕开发者相关 +- 修复 DevClient 无法重载 Shadow DOM 样式. + +## v2.9.3-preview +`2024-09-15` + +主要是各种修复, 见 [v2.9.3](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.9.3). + +## v2.9.3 +`2024-09-15` + +
+正式版用户将获得 v2.9.1-preview ~ v2.9.2-preview 的所有改动, 点击展开查看 + +✨新增 +- `查看封面` 可以为 aria2 输出提供直接的封面下载. (PR #4798 by [Oxygenくん](https://github.com/oxygenkun)) +- 新增组件 `保存视频元数据`. (PR #4840 by [WakelessSloth56](https://github.com/WakelessSloth56)) +> - 保存视频元数据为 [FFMETADATA](https://ffmpeg.org/ffmpeg-formats.html#Metadata-2) 格式 +> - 使用组件 `下载视频` 时指定 `WASM` 输出方式(插件 `下载视频 - WASM 混流输出`)可选择是否直接混流入输出文件。 +> - 保存视频章节为 OGM 格式 (https://github.com/the1812/Bilibili-Evolved/discussions/2069#discussioncomment-10110916) + +- `简化首页` 支持隐藏轮播图. (PR #4852 by [Lime](https://github.com/Liumingxun)) +- 新增组件 `添加直播间用户超链接`. (PR #4856 by [Light_Quanta](https://github.com/LightQuanta)) +> 网页版直播间右上角的房间观众和大航海界面的用户列表只可查看用户名,不可进行点击。该组件为用户头像和用户名称处添加点击效果,允许通过点击直接查看用户空间。 + +- 插件 `下载视频 - WASM 混流输出` 支持并行下载库和音视频流. (PR #4864 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `弹幕转义` 支持对正斜杠的换行 (`/n`) 进行转义. (#4865) +- `自定义顶栏` 支持直接在功能中打开布局设置. (#2666) +- `高分辨率图片` 支持处理没有指定高度的图片, 支持在专栏页面中请求原图. (#2868) +- `直播间网页全屏自适应` 样式适配较低的宽度值. (#4895) + +☕开发者相关 +- 外部资源接入 Subresource Integrity. (#4896) + +
+ +🐛修复 +- 修复 `快速收起评论` 对旧版评论区的兼容性. (#4905) +- 修复 `快捷键扩展` 的发送评论在新版评论区失效. (#4843) +- 修复 `禁用评论区搜索词` 偶现样式失效. (#4843) + +☕开发者相关 +- `ShadowDomObserver` 在使用前无需再调用 `observe()`. +- 增加工具方法 `getActiveElement` 检测当前页面的聚焦元素. + +## v2.9.2-preview +`2024-09-08` + +包含 [v2.9.2](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.9.2) 的所有更新内容. + +✨新增 +- `弹幕转义` 支持对正斜杠的换行 (`/n`) 进行转义. (#4865) +- `自定义顶栏` 支持直接在功能中打开布局设置. (#2666) +- `高分辨率图片` 支持处理没有指定高度的图片, 支持在专栏页面中请求原图. (#2868) +- `直播间网页全屏自适应` 样式适配较低的宽度值. (#4895) + +☕开发者相关 +- 外部资源接入 Subresource Integrity. (#4896) + +## v2.9.2 +`2024-09-08` + +✨新增 +- `网址参数清理` 支持清理 `is_room_feed`. (PR #4886 by [dreammu](https://github.com/dreammu)) + +🐛修复 +- 新版评论区相关功能修复: (#4843) + - 修复 `快速收起评论` 按钮错位. (#4890) + - 恢复功能: `禁用评论区搜索词`, `评论区IP属地显示`, `复制动态链接`. + - `简化评论区` 支持 Firefox. + - 样式实现使用 [Container style queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_size_and_style_queries#container_style_queries_2) 替代 [:host-context](https://developer.mozilla.org/en-US/docs/Web/CSS/:host-context), 虽然 Firefox 还是不支持, 但是能稍微标准化一点. + - 夜间模式适配 + +☕开发者相关 +- Shadow DOM API (`./src/core/shadow-dom`) 更名为 Shadow Root API (`./src/core/shadow-root`), 模块内的功能导出单例: + - `shadowDomObserver`: 持续观测页面上的所有 Shadow DOM. + - `shadowRootStyles`: 支持将样式注入到 Shadow DOM 内部. +- Comments API 增加 `CommentAreaV3` 实现, 支持基于 Shadow DOM 的新版评论区. (#4843) +- 增加 `isContainerStyleQuerySupported` 来检测当前浏览器对 [Container style queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_size_and_style_queries#container_style_queries_2) 的支持. +- 组件样式支持在 `ComponentMetadata.instantStyles` 中声明 `shadowDom: true` 来插入到 Shadow DOM 中. + + +## v2.9.1-preview +`2024-08-15` + +包含 [v2.9.1](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.9.1) 的所有更新内容. + +✨新增 +- `查看封面` 可以为 aria2 输出提供直接的封面下载. (PR #4798 by [Oxygenくん](https://github.com/oxygenkun)) +- 新增组件 `保存视频元数据`. (PR #4840 by [WakelessSloth56](https://github.com/WakelessSloth56)) +> - 保存视频元数据为 [FFMETADATA](https://ffmpeg.org/ffmpeg-formats.html#Metadata-2) 格式 +> - 使用组件 `下载视频` 时指定 `WASM` 输出方式(插件 `下载视频 - WASM 混流输出`)可选择是否直接混流入输出文件。 +> - 保存视频章节为 OGM 格式 (https://github.com/the1812/Bilibili-Evolved/discussions/2069#discussioncomment-10110916) + +- `简化首页` 支持隐藏轮播图. (PR #4852 by [Lime](https://github.com/Liumingxun)) +- 新增组件 `添加直播间用户超链接`. (PR #4856 by [Light_Quanta](https://github.com/LightQuanta)) +> 网页版直播间右上角的房间观众和大航海界面的用户列表只可查看用户名,不可进行点击。该组件为用户头像和用户名称处添加点击效果,允许通过点击直接查看用户空间。 + +- 插件 `下载视频 - WASM 混流输出` 支持并行下载库和音视频流. (PR #4864 by [WakelessSloth56](https://github.com/WakelessSloth56)) + +## v2.9.1 +`2024-08-15` + +
+正式版用户将获得 v2.9.0-preview 的所有改动 (新功能以及一项废弃), 点击展开查看 + +✨新增 +- `简化直播间` 支持屏蔽推荐直播间. (#4787) +- 新增功能 `删除直播马赛克遮罩` (#4634, PR #4814) +> 删除观看直播时某些分区的马赛克遮罩. + +- `启用视频截图` 截出来的图支持直接复制. (此功能需要 Firefox 127 版本以上) (#4806) +- `图片批量导出`, `下载视频` 支持更多变量, 详情可在更新组件后查看设置中的说明: (#3852) + - 动态 ID, 用户 ID, 动态发布时间, 被转发动态相关数据 + - 专栏 cv 号, 专栏发布时间 + - (仅对批量视频下载 (分P / 合集) 有效) up 主名称, up 主 ID, 视频发布时间 +- `自定义顶栏` 的稍后再看和历史面板现在始终显示 "已观看" 状态. (#4346) +- `自定义顶栏` 的稍后再看, 收藏和历史面板优化了分 P 数和观看进度的展示, 详见[此处](https://github.com/the1812/Bilibili-Evolved/discussions/1866#discussioncomment-10075203). (#1866) + +🗑️废弃 +- 删除 `下载视频` 的 Toast 输出方式. + +
+ +🐛修复 +- 部分修复 `简化评论区` 在新版评论区下失效. (#4843) + - 头像框目前还没找到比较好的方式隐藏, 暂不支持. + - 时间由于 Shadow DOM 限制, 无法再挪到右上角了, `装扮 & 时间` 只对装扮有效. + - 样式实现依赖 [:host-context](https://developer.mozilla.org/en-US/docs/Web/CSS/:host-context), 因此目前还不支持 Firefox. +- 修复 `删除视频弹窗` 和 `禁用特殊弹幕样式` 在新版播放器下失效. (#4843, #4823, PR #4839 by [festoney8](https://github.com/festoney8)) +- 修复 `快捷键扩展` 的部分操作和 `启用弹幕空降` 在新版播放器下失效. + +☕开发者相关 +- 新增 Shadow DOM 系列 API (`src/core/shadow-dom.ts`), 用于处理 Shadow DOM 相关的逻辑. + - `ShadowDomObserver`: 持续观测页面上的所有 Shadow DOM. + - `ShadowDomStyles`: 支持将样式注入页面, 包含所有 Shadow DOM 内部. +- `MutationObserver` 相关的 API 支持使用 `Node` 类型作为目标. + +## v2.9.0-preview +`2024-07-19` + +✨新增 +- `简化直播间` 支持屏蔽推荐直播间. (#4787) +- 新增功能 `删除直播马赛克遮罩` (#4634, PR #4814) +> 删除观看直播时某些分区的马赛克遮罩. + +- `启用视频截图` 截出来的图支持直接复制. (此功能需要 Firefox 127 版本以上) (#4806) +- `图片批量导出`, `下载视频` 支持更多变量, 详情可在更新组件后查看设置中的说明: (#3852) + - 动态 ID, 用户 ID, 动态发布时间, 被转发动态相关数据 + - 专栏 cv 号, 专栏发布时间 + - (仅对批量视频下载 (分P / 合集) 有效) up 主名称, up 主 ID, 视频发布时间 +- `自定义顶栏` 的稍后再看和历史面板现在始终显示 "已观看" 状态. (#4346) +- `自定义顶栏` 的稍后再看, 收藏和历史面板优化了分 P 数和观看进度的展示, 详见[此处](https://github.com/the1812/Bilibili-Evolved/discussions/1866#discussioncomment-10075203). (#1866) + +🗑️废弃 +- 删除 `下载视频` 的 Toast 输出方式. + +## v2.8.13 +`2024-07-19` + +
+获得 v2.8.12-preview 的所有新功能, 点击展开查看 + +✨新增 +- `下载视频 - WASM 混流输出` 支持批量下载. (PR #4726 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `夜间模式` 增加 `color-scheme` meta 信息, 适配 Chrome 的 [Fluent overlay scrollbars](chrome://flags/#fluent-overlay-scrollbars). (#4717) + +
+ +✨新增 +- `删除广告` 支持屏蔽首页的 "广告已被屏蔽" 占位卡片. +- `自定义顶栏` 增加公益、公开课、社区中心入口. (#1511) + +🐛修复 +- 修复 `显示视频投稿时间` 时间显示错误及不显示时间的问题. (#4755, PR #4756 by [呼乎户](https://github.com/wisokey)) +- 修复夜间模式的一些适配问题. (#4376, #4768, #4785, #4802, PR #4763, #4810 by [Pencil](https://github.com/pencilqaq)) +- 修复 `屏蔽黑名单up主` 弹窗高度溢出. (PR #4784 by [snowraincloud](https://github.com/snowraincloud)) +- 修复 `自定义顶栏` 搜索框在 b 站搜索页打字时自动弹出. (#4808) + +☕开发者相关 +- 修复 GitHub Workflow 中 pnpm 安装失败. + +## v2.8.11-preview / v2.8.12-preview +`2024-05-14` + +包含 [v2.8.11](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.11) 的所有更新内容. + +✨新增 +- `下载视频 - WASM 混流输出` 支持批量下载. (PR #4726 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `夜间模式` 增加 `color-scheme` meta 信息, 适配 Chrome 的 [Fluent overlay scrollbars](chrome://flags/#fluent-overlay-scrollbars). (#4717) + +## v2.8.11 / v2.8.12 +`2024-05-14` + +🐛修复 +- 修复了搜索框中的 XSS 注入问题. +- 修复了搜索框在搜索页面不能同步关键词. (#4721) +- 修复 `评论区IP属地显示` 失效. (#4690) +- 在搜索框中删除搜索历史时将不再收起下拉菜单. (#4732) +- 修复功能反复开关时, 功能面板中的按钮重复出现. (#4731) +- 修复功能面板空间不足时出现折行. (#4730) +- 修复 `启用视频截图` 在番剧区失效. (#4719) + +☕开发者相关 +- Comment API 调整: + - 增加对 `CommentArea` 销毁的监测. + - `forEachCommentItem` / `forEechCommentArea` 参数统一支持 `added` 和 `removed` 回调. + - `CommentReplyItem` / `CommentItem` 增加属性 `vueProps`. + + +## v2.8.10-preview +`2024-04-23` + +包含 [v2.8.10](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.10) 的所有更新内容. + +- 更新了 `动态过滤器` 的描述, 当开启 `直播信息扩充` 时不可配置 `正在直播` 的显隐. (#4705) + +## v2.8.10 +`2024-04-23` + +
+获得 v2.8.9-preview 的所有新功能, 点击展开查看 + +- `下载视频 - WASM 混流输出` 支持更持久的缓存方式. (PR #4667 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `外置稍后再看` 和 `启用快速收藏` 增加了 `显示方式` 选项, 出现无法自动适配的排版问题时可以尝试手动调整此设置. (#4532) +- 新增插件 `动态过滤器 - 移除商品带货动态`. (#4425) +> 移除动态里的商品带货动态 (UP主的推荐 · 来自 XX), 装有 `动态过滤器` 时生效. + +- 新增组件 `动态图片平铺展示`. (#4645) +> 将动态中左右切换式的图片改回传统的平铺展示. (在动态详情中可能稍有延迟) + +- 更换了 `自定义顶栏` 的动态提醒数字来源. (#4427) + +
+ +✨新增 +- 夜间模式更新对视频和直播页面的样式. (#4701, PR #4675 by [WangYK](https://github.com/AnotiaWang)) +- 增强 `下载视频 - WASM 混流输出` 对错误输入流的检测, 支持 FLAC 音频流 (产生 `.mkv` 文件). (PR #4686 by [DBeidachazi](https://github.com/DBeidachazi)) +- `复制动态链接` 改用 `opus` 格式的链接, 并支持新版话题页面. (PR #4695, PR #4696 by [星海](https://github.com/lovelyCARDINAL)) +- 同时安装了 pakku 时, 支持下载处理后的弹幕. (PR #4712 by [xmcp](https://github.com/xmcp)) +- `传统连播模式` 支持识别和处理视频列表. (#4699, PR #4713 by [Wuch](https://github.com/IEXPECTATION)) +- `删除视频弹窗` 支持屏蔽收起后的弹窗. (#4703) + +🐛修复 +- 再次修复 `快速收起评论` 遮挡评论的表情等弹窗. +- 修复评论区相关功能失效. (#4690) +- 修复 `自定义顶栏` 导致稍后再看页面布局错位. (#4668) + +☕开发者相关 +- Comment API 现已重构并支持 Vue 3 版本的评论区. (#4690) + +## v2.8.9-preview +`2024-03-09` + +包含 [v2.8.9](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.9) 的所有更新内容. + +✨新增 +- `下载视频 - WASM 混流输出` 支持更持久的缓存方式. (PR #4667 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `外置稍后再看` 和 `启用快速收藏` 增加了 `显示方式` 选项, 出现无法自动适配的排版问题时可以尝试手动调整此设置. (#4532) +- 新增插件 `动态过滤器 - 移除商品带货动态`. (#4425) +> 移除动态里的商品带货动态 (UP主的推荐 · 来自 XX), 装有 `动态过滤器` 时生效. + +- 新增组件 `动态图片平铺展示`. (#4645) +> 将动态中左右切换式的图片改回传统的平铺展示. (在动态详情中可能稍有延迟) + +- 更换了 `自定义顶栏` 的动态提醒数字来源. (#4427) + + +## v2.8.9 +`2024-03-09` + +✨新增 +- `下载视频 - IDM 输出支持` 补充了保留文件名相关内容的描述. (PR #4664 by [LY](https://github.com/Young-Lord)) +- 夜间模式更新对以下区域的支持: + - 新版评论区输入框 (#4605) + - 动态详情页 + - 搜索页面 (#4354) +- `删除广告` 现在可以在新版首页中将删除后的空位移除. (#4610) +- `删除视频弹窗` 支持屏蔽 "请评价视频播放效果" 等小弹窗, 归属于投票类. (#4610) + +🐛修复 +- 修复 XML 弹幕下载遇到空弹幕时报错. (#4629) +- 修复播放前显示封面在中途暂停仍会出现. (#4491) +- 修复 `自定义顶栏` 的搜索结果描述溢出. (#4464) +- 修复自动关灯无效. (PR #4659 by [Waua](https://github.com/FoundTheWOUT), #4631) +- 修复 `网址参数清理` 导致搜索页出现 `https://search.bilibili.com/undefined`. (PR #4663 by [sunfkny](https://github.com/sunfkny), #4656) +- 修复 `禁止跳转动态详情` 导致动态中的查看图片按钮失效. (PR #4662 by [sunfkny](https://github.com/sunfkny)) +- 修复 `展开动态内容` 对部分用户失效. (#4633) +- 修复 `高分辨率图片` 导致旧版首页 logo 比例出错. (#4480) +- 修复个人空间中搜索过动态后再返回导致常规动态里的相关功能失效. (#4458) +- 修复番剧区的 `扩展倍速` 失效. (#4571) +- 修复 `快速收起评论` 遮挡评论的表情等弹窗. +- 修复 `自定义顶栏` 导致网课分区内容错位. (#4610) +- 修复 `隐藏顶部横幅` 导致部分分区页面内容错位. (#4610) + +☕开发者相关 +- PlayerAgent 支持监听 `pause` 事件. +- `forEachFeedsCard` 现在不会在非动态页面执行. + +## v2.8.8 / v2.8.8-preview +`2024-01-18` + +
+正式版用户将获得 v2.8.6-preview ~ v2.8.7-preview 的所有新功能, 点击展开查看 + +✨新增 +- 新增插件 `下载视频 - MPV 输出支持加强版`. (PR #4448 by [weapon!](https://github.com/Asukaaaaaa)) +> 同时支持单文件和多文件, 不需要额外下载程序处理 mpv 协议, 配置方式请参考 [README](https://github.com/Asukaaaaaa/tricks/blob/main/Bilibili-Evolved%20mpv-ex%20%E6%8F%92%E4%BB%B6.md) + +- `查看封面` 组件安装后可为 `下载视频` 提供下载封面支持. (#889, PR #4473 by [Oxygenくん](https://github.com/oxygenkun)) +- 新增插件 `下载视频 - WASM 混流输出`. (PR #4521 by [WakelessSloth56](https://github.com/WakelessSloth56)) +> 使用 WASM 在浏览器中下载并合并音视频,运行过程中请勿关闭页面,初次使用或清除缓存后需要加载约 30 MB 的 WASM 文件 + +- 使用流量计费网络时, 不再触发本体和功能的更新检查. (仅 Chrome) (#4477) +- `快捷键扩展` 的音量调整支持自定义幅度. (#2594) +- `自定义字体` 改善了组件代码和功能. (PR #4485 by [Tinhone](https://github.com/Tinhone)) + +☕开发者相关 +- PlayerAgent API 重构为调用 `window.player` 和 `window.nano` API, 可以解决 #2544 的问题, 感谢 [timongh](https://github.com/timongh) 和 [WakelessSloth56](https://github.com/WakelessSloth56) 的发现. (#4330, #4341) + +
+ +⚠ 注意 +- Firefox 的最低版本要求提升至 121, 顺便更新了下配置要求, 分为了最低配置和推荐配置, CPU 统一为桌面级型号. +- 移除对旧版视频播放器的支持, 仅支持新版视频播放器 (BPX 播放器) + +✨新增 +- 新增插件 `动态过滤器 - 移除充电专属动态`. (#4033) +> 移除动态里的充电专属动态, 装有 `动态过滤器` 时生效. + +- `删除视频弹窗` 支持屏蔽 "心动" 弹窗, `禁用特殊弹幕样式` 支持屏蔽相应的带货弹幕. (#4565) +- `删除广告` 支持屏蔽首页的桌面端弹窗广告. (#4590) +- 新增插件 `下载视频 - 空输出`. (#4581) +> 提供一个 "空" 的输出选项, 只想获取下载视频的附带产物 (弹幕, 字幕等) 时可以使用此插件. + +- `下载视频` 支持下载合集. (#3240) +- 视频相关功能和快捷键扩展支持新版番剧播放器. (#4571) + +🐛修复 +- 修复 `评论区IP属地显示` 在小黑屋中失效的问题. (#4572, PR #4573 by [Light_Quanta](https://github.com/LightQuanta)) +- `自定义字体` 改进: (PR #4585 by [Tinhone](https://github.com/Tinhone)) + - 修复 `自定义字体` 导致快速收藏图标消失. (#4566) + - 将 `覆盖选项` 迁移到了更多选项中. + - 因为文泉驿微米黑(WenQuanYi Micro Hei)字体的部分版本存在朝鲜语(韩语)显示不正确的问题,所以从默认设置中删除,使用 Malgun Gothic 字体替换. +- 夜间模式适配播放页的充电卡片. (#4599, PR #4600 by [Pencil](https://github.com/pencilqaq)) +- `直播信息扩充` 使用新的 API, 能够显示悄悄关注的主播. (PR #4587 by [Oxygenくん](https://github.com/oxygenkun)) +- 修复自定义顶栏在搜索页面的表现: 关键词同步 & 禁用全局固定. (#1431) +- `删除广告` 使用 CSS `:has` 功能实现了移除广告的空白占位区域. (#3997) +- 修复新版的动态多图界面中 `图片批量导出` 检测不到图片. (#4586) +- 修复使用 `pluginApis.installStyle` 安装带有特殊字符的名称的样式后, 无法删除的问题. (#4557) +- 修复快速收起评论遮挡了评论的操作菜单. (#4595) +- 更新了 `稍后再看重定向` 的说明文字, 明确了功能作用范围. (#4555) +> 将稍后再看的链接重定向为普通播放网址. +> - `重定向页面`: 对稍后再看列表页面里的链接重定向. +> - `重定向顶栏`: 对 `自定义顶栏` 里的稍后再看链接重定向. + +- 修复文件命名格式中 `[title]`, `[ep]`, `[lid]` 变量的值获取不正确. (#4575) + +☕开发者相关 +- pnpm 更新至 8.12.1. +- README 调整了一些中英文字符之间的空格. (PR #4602 by [Shen-Linwood](https://github.com/Shen-Linwood)) +- PlayerAgent.getPlayerConfig 支持 BPX 播放器, 且默认认为当前 Agent 为 BPX 类型. +- 修复 DownloadPackage 中同名文件会互相覆盖. (#4576) +- 动态过滤器中使用 CSS `.plugin-block` 可以隐藏某个动态卡片, 插件结合 `forEachFeedsCard` 等 API 可以实现自定义的过滤逻辑. (#4033) +- retrieveImageUrl 支持传入 picture 元素本身. +- 内置 UA 更新至 Firefox 123. +- 增加了 simulateClick API, 可以模拟一次点击. (依次触发 `pointerdown`, `mousedown`, `pointerup`, `mouseup`, `click` 事件) + +## v2.8.7 / v2.8.7-preview +`2023-11-23` + +- 修复正式版中清爽首页无法加载的问题. (#4538) + +其他更新内容请看 [v2.8.6](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.6) / [v2.8.6-preview](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.6-preview). + +## v2.8.6-preview +`2023-11-22` + +包含 [v2.8.6](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.6) 的所有更新内容. + +✨新增 +- 新增插件 `下载视频 - MPV 输出支持加强版`. (PR #4448 by [weapon!](https://github.com/Asukaaaaaa)) +> 同时支持单文件和多文件, 不需要额外下载程序处理 mpv 协议, 配置方式请参考 [README](https://github.com/Asukaaaaaa/tricks/blob/main/Bilibili-Evolved%20mpv-ex%20%E6%8F%92%E4%BB%B6.md) + +- `查看封面` 组件安装后可为 `下载视频` 提供下载封面支持. (#889, PR #4473 by [Oxygenくん](https://github.com/oxygenkun)) +- 新增插件 `下载视频 - WASM 混流输出`. (PR #4521 by [WakelessSloth56](https://github.com/WakelessSloth56)) +> 使用 WASM 在浏览器中下载并合并音视频,运行过程中请勿关闭页面,初次使用或清除缓存后需要加载约 30 MB 的 WASM 文件 + +- 使用流量计费网络时, 不再触发本体和功能的更新检查. (仅 Chrome) (#4477) +- `快捷键扩展` 的音量调整支持自定义幅度. (#2594) +- `自定义字体` 改善了组件代码和功能. (PR #4485 by [Tinhone](https://github.com/Tinhone)) + +☕开发者相关 +- PlayerAgent API 重构为调用 `window.player` 和 `window.nano` API, 可以解决 #2544 的问题, 感谢 [timongh](https://github.com/timongh) 和 [WakelessSloth56](https://github.com/WakelessSloth56) 的发现. (#4330, #4341) + +## v2.8.6 +`2023-11-22` +✨新增 +- `清爽首页` / `极简首页` 现在可以正确重定向 "悬浮视频". (#4404) +- `网址参数清理` 增加 `spmid` 参数. (#4512) +- `快捷键扩展` 默认不再启用前进/后退的快捷键 (默认使用 b 站的前进/后退). (#4501) +- `展开动态内容` 现在不会展开专栏类型的动态, 并保留原来的 "全文" 按钮. (#4475) + +🐛修复 +- 修复了首页的正式版安装链接 CDN 不正确. (#4460) +- 修复 `极简首页` 在特定情况下无法触发加载的问题. (#4302, PR #4430 by [Tinhone](https://github.com/Tinhone)) +- 调整了 `简化评论区` 和 `删除广告` 对评论区附近的活动横幅和小喇叭横幅的说明, 关于这两种元素的具体区别以及分配至的组件, 可以参考 #4444 中的讨论. +- 修复 `直播信息扩充` 中的标题未处理转义的 HTML 特殊字符. +- 修复 `BV 号转换` 复制的链接即使没有参数也会带上末尾的 `?`. (#4515) +- 修复番剧片单页面出现报错. (#1999) +- 修复 `自定义顶栏` 历史面板无法正确跳转课程. (#4484) +- 修复 `自定义顶栏` 在历史记录页面产生的布局错位. (#4459) +- 修复 `网址参数清理` 处理相对路径 URL 时产生了错误的结果. (#4471) +- 修复 `自定义顶栏` 在专栏页面挡住了作者信息顶栏. (#4540) + +☕开发者相关 +- 锁定了 PR Check 中的 pnpm 版本, 避免 pnpm 更新后出现不兼容 lockfile 导致 PR Check 失败. +- `夜间模式` 增加了一篇详细的[开发文档](./registry/lib/components/style/dark-mode/README.md). +- Microsoft Edge 不再作为首要兼容的浏览器. (和 Chrome 相同内核, 理论上兼容性不会有太大差别) + +## v2.8.5 / v2.8.5-preview +`2023-09-24` + +✨新增 +- 新增组件 `自定义字体`. (PR #4406 by [Tinhone](https://github.com/Tinhone)) +> 使用组件提供的字体设置覆盖原版的主站字体,并使主站字体可被自定义。字体设置写法请参考 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-family) 、默认设置与设置说明 + +- `简化直播间` 适配了新版 PK 条. (PR #4439 by [Pencil](https://github.com/pencilqaq)) + +- `下载视频` 支持配置 DASH 格式下的文件扩展名. (PR #4449 by [小傅Fox](https://github.com/xfoxfu)) + + +
+正式版用户将获得 v2.8.0-preview ~ v2.8.4-preview 的所有新功能, 点击展开查看 + +- `清爽首页` 改进: + - 支持自定义板块的布局和可见性. (操作方式和自定义顶栏那个差不多) + - 番剧时间表优化样式, 增加翻页按钮. + +
+ + +
+ +- 新增功能 `首页净化`. (PR #4153 by [RieN](https://github.com/rien7)) +> 删除首页特定类型的卡片. + +- `自定义顶栏` 增加 `创作中心` 入口, `排行` 新增 `全站音乐榜` 和 `短剧榜` 的入口. (#4101, PR #4154 by [星海](https://github.com/lovelyCARDINAL), PR #4155 by [星海](https://github.com/lovelyCARDINAL)) +- `播放器置顶(新)` 增加选项 `顶部留白`. (#4152, PR #4165 by [Ziu](https://github.com/ZiuChen)) +- `播放器置顶(新)` 的标题改为放置到播放器和点赞中间. (PR #4208 by [LockRim](https://github.com/LockRim)) +- `显示视频投稿时间` 支持转义字符. (#4160, PR #4167 by [呼乎户](https://github.com/wisokey)) +- `隐藏视频推荐` 支持稍后再看和收藏夹播放页, 并适配 bpx 播放器. (#4174) +- 新增功能 `隐藏记笔记` 和 `隐藏稿件投诉`. (#4124) +- 优化了 `自定义顶栏` 中订阅在筛选时的 API 调用. (#4120) +- 优化粗体的显示: 优先调用 Semibold 字重, 若字体不支持则使用 Bold 字重. +- `自定义顶栏` 增加选项: + - 支持自定义消息提醒样式, 可设置为 `数字`, `点状` 或 `隐藏`. (#4125) + - 支持自定义搜索栏宽度. (#4112) +- 搜索在纯数字输入时, 增加对 UID 和直播间的搜索. (#677) +- `网址参数清理` 更新对直播间的支持. (#1459) +- `自动点赞` 转为由 [CrazyboyQCD](https://github.com/CrazyboyQCD) 维护, 支持手动控制点赞和黑名单功能. (PR #4343, PR #4358 by [CrazyboyQCD](https://github.com/CrazyboyQCD)) + +- `简化直播间` 支持隐藏荣耀等级勋章. (PR #4348 by [CrunchyShark](https://github.com/CrunchyShark944)) +- 在设置面板中的组件管理等面板中, 搜索框移动至已安装列表的上方, 更符合直觉. (#3806) +- 支持从 Tampermonkey 的菜单中唤起功能和设置面板. (#4170) +- 搜索栏中添加了导入 / 导出设置的操作. (#4170) +- `自定义顶栏` 新增选项 `链接对齐样式`, 可以自定义纯链接弹窗内链接文字的对齐样式. (PR #4365 by [Tinhone](https://github.com/Tinhone)) +- `简化评论区` 支持独立控制简化选项, 并支持隐藏粉丝勋章和活动横幅. (仅支持新版评论区) (#2381) +- `清爽首页` 设置为隐藏的版块现在将彻底销毁, 减少资源占用. +- `禁用特殊弹幕样式` 支持禁用大会员弹幕. (#4227) +- `下载视频` 在批量下载番剧时, 支持下载多个不同板块的选集. (#2834) +- 新增功能 `全屏直播礼物简化`. (PR #4306 by [TimmyOVO](https://github.com/TimmyOVO)) + +> 移除全屏观看直播时的底部礼物栏 + +- 新增功能 `评论区 IP 属地显示`. (PR #4331, PR #4334 by [Light_Quanta](https://github.com/LightQuanta)) + +> 在评论区显示评论的IP属地信息 + +- 新增功能 `直播间网页全屏自适应`. (#4216) + +> 在直播网页全屏时, 自动调整侧边栏的宽度, 使得视频区域的比例和视频源相匹配, 达到无黑边的效果. 如果在侧边栏的边缘拖动, 可以自定义侧边栏的固定宽度, 双击边缘可以还原到自动宽度. +> +> - `侧边栏最大宽度 (px)`: 限制侧边栏可被拉伸到的最大宽度. (最小宽度固定为 190px, 再小的话布局就要出问题了) +> +> > 注意, 由于有最大宽度和最小宽度的限制, 部分窗口尺寸下仍然无法做到无黑边. + +- 新增功能 `关注时间显示`. (PR #4352 by [Light_Quanta](https://github.com/LightQuanta)) + +> 在个人空间的粉丝/关注列表显示关注的具体时间 + +- 新增功能 `自动移出稍后再看`. + +> 在稍后再看页面播放结束时, 自动将当前视频移出稍后再看. +> 注意: +> - 一定要播放结束, 快结束时手动切走不算 +> - b 站的稍后再看列表不会实时刷新 + +- 新增功能 `相簿发布时间显示`. (PR #4362 by [Light_Quanta](https://github.com/LightQuanta)) + +> 在个人空间的相簿界面显示相簿的发布时间 + +
+ +🐛修复 +- 修复 `禁止滚轮调音量` 在网页全屏下失效. (#4381). +- 修复 Feeds API 无法解析新版图文动态的文字内容. (主要是动态过滤器会受影响) (#4409) +- 修复 `选集区域优化` 在部分视频合集页面上无法使用 Alt 来切换折叠. (#4429) +- 修复被转发图文动态的 `详情 >` 功能失效. (PR #4452 by [sunfkny](https://github.com/sunfkny)) + + +## v2.8.4-preview +`2023-09-07` + +包含 [v2.7.6](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.7.6) 的所有更新内容. + +- `直播间网页全屏自适应` 支持自定义侧边栏宽度. (#4216) +- 修复 `直播勋章快速更换` 获取头衔列表时报错. (#4403) + +## v2.7.6 +`2023-09-07` + +更新了动态相关的 API 地址, 修复番剧无法加载的问题. (#4305) + + +## v2.8.3-preview +`2023-08-26` + +包含 v2.7.5 的所有更新内容. + +✨新增 +- `网址参数清理` 更新对直播间的支持. (#1459) +- `自动点赞` 转为由 [CrazyboyQCD](https://github.com/CrazyboyQCD) 维护, 支持手动控制点赞和黑名单功能. (PR #4343, PR #4358 by [CrazyboyQCD](https://github.com/CrazyboyQCD)) + +- `简化直播间` 支持隐藏荣耀等级勋章. (PR #4348 by [CrunchyShark](https://github.com/CrunchyShark944)) +- 在设置面板中的组件管理等面板中, 搜索框移动至已安装列表的上方, 更符合直觉. (#3806) +- 支持从 Tampermonkey 的菜单中唤起功能和设置面板. (#4170) +- 搜索栏中添加了导入 / 导出设置的操作. (#4170) +- `自定义顶栏` 新增选项 `链接对齐样式`, 可以自定义纯链接弹窗内链接文字的对齐样式. (PR #4365 by [Tinhone](https://github.com/Tinhone)) +- `简化评论区` 支持独立控制简化选项, 并支持隐藏粉丝勋章和活动横幅. (仅支持新版评论区) (#2381) +- `清爽首页` 设置为隐藏的版块现在将彻底销毁, 减少资源占用. +- `禁用特殊弹幕样式` 支持禁用大会员弹幕. (#4227) +- `下载视频` 在批量下载番剧时, 支持下载多个不同板块的选集. (#2834) +- 新增功能 `全屏直播礼物简化`. (PR #4306 by [TimmyOVO](https://github.com/TimmyOVO)) + +> 移除全屏观看直播时的底部礼物栏 + +- 新增功能 `评论区 IP 属地显示`. (PR #4331, PR #4334 by [Light_Quanta](https://github.com/LightQuanta)) + +> 在评论区显示评论的IP属地信息 + +- 新增功能 `直播间网页全屏自适应`. (#4216) + +> 在直播网页全屏时, 自动调整侧边栏的宽度, 使得视频区域的比例和视频源相匹配, 达到无黑边的效果. +> +> - `侧边栏最大宽度 (px)`: 限制侧边栏可被拉伸到的最大宽度. (最小宽度固定为 190px, 再小的话布局就要出问题了) +> +> > 注意, 由于有最大宽度和最小宽度的限制, 部分窗口尺寸下仍然无法做到无黑边. + +- 新增功能 `关注时间显示`. (PR #4352 by [Light_Quanta](https://github.com/LightQuanta)) + +> 在个人空间的粉丝/关注列表显示关注的具体时间 + +- 新增功能 `自动移出稍后再看`. + +> 在稍后再看页面播放结束时, 自动将当前视频移出稍后再看. +> 注意: +> - 一定要播放结束, 快结束时手动切走不算 +> - b 站的稍后再看列表不会实时刷新 + +- 新增功能 `相簿发布时间显示`. (PR #4362 by [Light_Quanta](https://github.com/LightQuanta)) + +> 在个人空间的相簿界面显示相簿的发布时间 + +🐛修复 +- 修复 `清爽首页` 番剧区图标不显示. (#4262) +- 修复 `清爽首页` 番剧区时间线的遮罩颜色在夜间模式下不正确. +- 修复 `隐藏记笔记` 功能打开后, 评论区的笔记弹窗无法显示. (#4285) + +☕开发者相关 +- SwitchOptions API 更新: + - 老的 `createSwitchOptions` 标记为已弃用. + - 新的 `newSwitchComponentWrapper` 更名为 `wrapSwitchOptions`. + - `checkedIcon` 拥有默认值: `mdi-eye-off-outline`. + - `notCheckedIcon` 拥有默认值: `mdi-eye-outline`. + - `dimAt` 选项功能更改为如下所示, 更符合直觉: +```ts +/** + * 控制开关变暗的时机 + * + * `false`: 始终不变暗 + * `'checked'`: 当开关开启时变暗 + * `'notChecked'`: 当开关关闭时变暗 + * + * @default 'checked' + */ +dimAt?: false | 'checked' | 'notChecked' +``` +- Vue 升级到 2.7, 支持组合式 API 以及使用 Volar 提供代码提示. (PR #4337 by [timongh](https://github.com/timongh)) +- 修复组件加载失败时没有输出任何报错. + +## v2.7.5 +`2023-08-26` + +✨新增 +- 夜间模式适配新版番剧播放页面. (PR #4366 by [QwExZy@0xx1](https://github.com/qwaszx-WXY)) + +🐛修复 +- 修复下载弹幕的数量比实际要少. (#4287) +- jsDelivr 源域名由 `fastly.jsdelivr.net` 更换为 `cdn.jsdelivr.net`. (#4198) +- 修复 `快速收起评论区` 在新版动态下宽度不正确. (#4282) +- 修复删除搜索历史时选项不会立即消失. (#4268) +- 修复 `直播全屏包裹` 的颜色问题. (#4166, PR #4323 by [CrazyboyQCD](https://github.com/CrazyboyQCD)) +- 修复 `下载字幕` 失效, 注意由于 b 站接口变更, AI 字幕可能无法下载. (#4319) +- 修复 `隐藏视频推荐` 未能隐藏番剧页面的相关推荐. (#4247) +- 修复 `自定义顶栏` 中封面图片在个人空间的样式异常. (#4312, PR #4338 by [timongh](https://github.com/timongh)) +- 修复 `简化直播间` 屏蔽标题栏活动后, 粉丝团打榜弹窗位置异常. (#4215) +- 修复 `传统连播模式` 在点击右侧推荐视频时会延后一次. (#4256) + +☕开发者相关 +- 修复 VPopup 组件中 openHandler 的 this 绑定丢失. (#4264) +- 重构了 Comments API. (#4334) + - `CommentReplyItem` 实现了 `EventTarget`, 评论更新事件 (`repliesUpdate`) 均通过 `EventTarget` 的事件订阅实现. + - 修复新版评论区下评论更新事件没触发. +- 重构了 `playerModePolyfill` 的实现, 解决 empty class token 在页面上反复报错的问题. + +## v2.7.4 / v2.8.2-preview +`2023-07-16` + +- 修复 v4.2 播放器下视频相关功能失效. (#4303) + +注: 下载字幕还是会失败, 属于另一个问题 (#4319), 需要另外再修复. + + +## v2.7.3 / v2.8.1-preview +`2023-07-13` + +- 修复 VideoInfo 报错 `Cannot read properties of null (reading 'list')`. (影响 `下载字幕`, `查看封面` 等功能) (#4291) + +## v2.8.0-preview +`2023-06-03` + +包含 v2.7.2 的所有更新内容. + +✨新增 + +- `清爽首页` 改进: + - 支持自定义板块的布局和可见性. (操作方式和自定义顶栏那个差不多) + - 番剧时间表优化样式, 增加翻页按钮. + +
+ + +
+ +- 新增功能 `首页净化`. (PR #4153 by [RieN](https://github.com/rien7)) +> 删除首页特定类型的卡片. + +- `自定义顶栏` 增加 `创作中心` 入口, `排行` 新增 `全站音乐榜` 和 `短剧榜` 的入口. (#4101, PR #4154 by [星海](https://github.com/lovelyCARDINAL), PR #4155 by [星海](https://github.com/lovelyCARDINAL)) +- `播放器置顶(新)` 增加选项 `顶部留白`. (#4152, PR #4165 by [Ziu](https://github.com/ZiuChen)) +- `播放器置顶(新)` 的标题改为放置到播放器和点赞中间. (PR #4208 by [LockRim](https://github.com/LockRim)) +- `显示视频投稿时间` 支持转义字符. (#4160, PR #4167 by [呼乎户](https://github.com/wisokey)) +- `隐藏视频推荐` 支持稍后再看和收藏夹播放页, 并适配 bpx 播放器. (#4174) +- 新增功能 `隐藏记笔记` 和 `隐藏稿件投诉`. (#4124) +- 优化了 `自定义顶栏` 中订阅在筛选时的 API 调用. (#4120) +- 优化粗体的显示: 优先调用 Semibold 字重, 若字体不支持则使用 Bold 字重. +- `自定义顶栏` 增加选项: + - 支持自定义消息提醒样式, 可设置为 `数字`, `点状` 或 `隐藏`. (#4125) + - 支持自定义搜索栏宽度. (#4112) +- 搜索在纯数字输入时, 增加对 UID 和直播间的搜索. (#677) + +☕开发者相关 +- 播放器模式转换出的 bpx class 更换为更统一的名称, 并增加事件派发. (PR #4191 by [Ziu](https://github.com/ZiuChen)) +- 需要选择组件 / 插件的构建任务中, 优化了选项的长度. (PR #4192 by [Ziu](https://github.com/ZiuChen)) +- 弃用 utils 中的 `formData`. (名称具有歧义, 应使用 `URLSearchParams` 来代替) +- `addComponentListener` / `removeComponentListener` 支持传入多层的组件 options 路径. +- 移除依赖 `vue-fragment`. (使用 `display: contents` 代替) + +## v2.7.2 +`2023-06-03` + +> ⚠ 对浏览器的要求中, Safari 提升至 15.4 + +✨新增 + +
+获得 v2.6.1-preview ~ v2.7.1-preview 的所有新功能, 点击展开查看 + +- `自定义顶栏` 搜索优化: + - 提高了搜索 av 号 / BV 号结果的优先级, 输入编号后直接回车就可以前往视频. + - 支持搜索多种 ID, 可以通过安装对应的插件来使用: (#677) + - 搜索 av / BV 号时, 支持显示视频标题 + - 支持搜索专栏 cv 号 / 文集 rl 号 + - 支持搜索音频 au 号 / 播放列表 am 号 + - 支持搜索番剧 ss / ep 号, 或番剧详情 md 号 + - 支持搜索用户 uid 号 + - 纯数字输入时, 支持同时搜索视频和专栏 +- `自定义顶栏` 的收藏和稍后再看支持显示数量. (#4069) +- `自定义顶栏` 的订阅支持过滤 在看 / 看过 / 想看. (#3217) +- 添加跨域存储功能 (`crossOriginLocalStorage`), 支持搜索历史跨域同步. (#3893) +- 新增功能 `弹幕转义`. (#3470) +> 将弹幕中的 `\n` 替换为真实的换行, 注意这可能导致原先不重叠的弹幕发生重叠. +- 新增功能 `组件二等分`, 在出现问题时可帮助定位是哪个组件导致的问题. (#3829, PR #3965 by [JLoeve](https://github.com/LonelySteve)) +- 优化了 `网址参数清理` 的逻辑, 通过 Hook History API 来减少出现重复的历史记录. (#4039) +- 新增功能 `隐藏热搜`. (#3744) +> 隐藏搜索栏和搜索页面中的 `bilibili 热搜`. +- 新增功能 `隐藏视频分享`. (#3663) +> 隐藏视频和番剧播放器下方的分享按钮. +- 新增插件 `快捷键扩展 - 开关灯`. (#3587) +> 在快捷键的动作列表里添加一个 "开关灯". +- `显示视频投稿时间` 允许自定义替换文本格式. (PR #4136 by [呼乎户](https://github.com/wisokey)) +- `清爽首页` 排行榜支持切换为列表模式, 能够查看 10 项左右的排行. (#3611, #3175) +- 新增功能 `动态看图自动回顶`. (#4029) +> 在动态里查看图片详情时 (非全屏), 切换图片自动回到图片顶部; 退出查看图片模式时, 自动将动态移入视图内. +- 重构了 `直播信息扩充` 面板, 改为完全自主实现, 支持显示超过 10 条的直播间, 并可以进行搜索和刷新操作. (#3774, #4035, #4034) + + + +- 新增功能 `反转滚轮调音量`. (#4053) +> 反转在网页全屏 / 全屏模式下使用滚轮调节音量的方向, 使其更符合使用触控板时的操作方向. 请注意不能和 `禁止滚轮调音量` 一同使用. +> - 手指向上推时, 增加音量 +> - 手指向下推时, 减少音量 +> - 可以自定义 `灵敏度`, 同样的滚动幅度下, 灵敏度越高变化的音量越多 + +- 新增功能 `自动点赞`. (#2354) +> 进入视频 / 查看动态时, 自动点赞. + +- 新增功能 `隐藏用户信息卡片`. (PR #4093 by [WakelessSloth56](https://github.com/WakelessSloth56)) +> 隐藏鼠标指向用户名或用户头像时弹出的浮动用户信息卡片. + +- 新增功能 `播放器置顶(新)`. (#3030, #PR #4152 by [RieN 7z](https://github.com/rien7)) +> 原来的播放器置顶组件,现在已经不可用了,这是一个新的版本,可以在视频页面中将播放器放在页面最上方. + +- 启用新的代码加载方式. (PR #3938 by [timongh](https://github.com/timongh)) +- Comments API 支持读取评论图片. (PR #4130 by [manip_ego](https://github.com/manipEgo)) +```diff +export interface CommentItem extends CommentReplyItem { ++ /** 评论图片 */ ++ pictures?: string[] + /** 回复 */ + replies: CommentReplyItem[] + // ... +} +``` + +
+ +- `网址参数清理` 增加清理会员购和直播间的一些参数. (PR #4189, PR #4214 by [星海](https://github.com/lovelyCARDINAL)) +- `删除广告` 增加选项 `保留小喇叭通知`. (PR #4199 by [imshixin](https://github.com/imshixin)) +> 指评论区上方的小喇叭通知, 待 `简化评论区` 完成功能拆分后会移动到那边去. + +- `与 "解除 B 站区域限制" 互斥` 现在不再在番剧详情页面生效. (#4157) + +🐛修复 +- 修复播放器模式切换时 `body` 类名响应问题. (PR #4188 by [Ziu](https://github.com/ZiuChen)) +- 修复 `播放器控制栏背景色` 位置不正确. (#3713) +- 修复勋章过多时, `直播勋章快速更换` 的弹窗溢出视图. (#4181) +- 修复 `清爽首页` 在非内测首页上无法隐藏原版首页. (#3981) +- 修复 `自定义顶栏` 导致分区页面内容错位. (#4183) +- 修复 `删除广告` 未能删除活动横幅. (#4177) +- 修复 `外置稍后再看` 没有隐藏菜单中的相同选项. (#4175) +- 修复 `直播全屏包裹` 的一部分样式问题. (#4166, #4210) +- 修复检查更新的查看详情弹窗内容溢出. (#4164) +- 修复 `播放前显示封面` 在预览关联视频时封面消失. (#4197) +- 修复 `禁止跳转动态详情` 对新版专栏卡片无效. +- 修复 `动态过滤器` 在切换了 UP 主过滤后失效. (#4149) +- 修复 `简化直播间` 的 `标题栏活动` 内容出现溢出. (#4215) +- 新版动态页面适配: + - `快速收起评论区` + - `addMenuItem` API (涉及 `图片批量导出` 和 `复制动态链接`) + - `强制固定动态侧栏`: 由于 class 名称和旧版一样, 目前只能先把宽度也锁死在旧版的宽度. + - `夜间模式` + - `feedsCardsManager` API + +☕开发者相关 +- GitHub 相关配置更换为 JSON 格式, 并由脚本自动生成 YAML. +- 增加了讨论区 `功能建议` 的模板. + +## v2.7.1-preview +`2023-04-25` + +包含 [v2.7.1](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.7.1) 的所有更新内容. + +- Comments API 支持读取评论图片. (PR #4130 by [manip_ego](https://github.com/manipEgo)) +```diff +export interface CommentItem extends CommentReplyItem { ++ /** 评论图片 */ ++ pictures?: string[] + /** 回复 */ + replies: CommentReplyItem[] + // ... +} +``` +- `显示视频投稿时间` 允许自定义替换文本格式. (PR #4136 by [呼乎户](https://github.com/wisokey)) +- `清爽首页` 排行榜支持切换为列表模式, 能够查看 10 项左右的排行. (#3611, #3175) +- 新增功能 `动态看图自动回顶`. (#4029) +> 在动态里查看图片详情时 (非全屏), 切换图片自动回到图片顶部; 退出查看图片模式时, 自动将动态移入视图内. + +- 重构了 `直播信息扩充` 面板, 改为完全自主实现, 支持显示超过 10 条的直播间, 并可以进行搜索和刷新操作. (#3774, #4035, #4034) + + + +- 新增功能 `反转滚轮调音量`. (#4053) +> 反转在网页全屏 / 全屏模式下使用滚轮调节音量的方向, 使其更符合使用触控板时的操作方向. 请注意不能和 `禁止滚轮调音量` 一同使用. +> - 手指向上推时, 增加音量 +> - 手指向下推时, 减少音量 +> - 可以自定义 `灵敏度`, 同样的滚动幅度下, 灵敏度越高变化的音量越多 + +- 新增功能 `自动点赞`. (#2354) +> 进入视频 / 查看动态时, 自动点赞. + +- 新增功能 `隐藏用户信息卡片`. (PR #4093 by [WakelessSloth56](https://github.com/WakelessSloth56)) +> 隐藏鼠标指向用户名或用户头像时弹出的浮动用户信息卡片. + +- 新增功能 `播放器置顶(新)`. (#3030, #PR #4152 by [RieN 7z](https://github.com/rien7)) +> 原来的播放器置顶组件,现在已经不可用了,这是一个新的版本,可以在视频页面中将播放器放在页面最上方. + +- 新增插件 `搜索栏 - UID 跳转`, `搜索栏 - 数字联想`. (#677) +> 在输入 UID (用户 ID) 时, 提供对应的跳转选项. / 在输入纯数字时, 提供以下选项: +> - 跳转至相应的视频 (视为 av 号) +> - 跳转至相应的专栏 (视为 cv 号) + + +## v2.7.1 +`2023-04-25` + +✨新增 +- `与 "解除 B 站区域限制" 互斥` 现在只在番剧页面生效. +- 更新 `夜间模式` 对新版直播间, 番剧, 稍后再看等页面的适配. (#3963, #4007, #4128, PR #4137 by [Pencil](https://github.com/pencilqaq)) +- 新版番剧页面功能适配: `下载视频` (#4044), `自定义顶栏` (#4007) +- 新版稍后再看页面功能适配: `外置稍后再看`, `启用快速收藏`, `播放器控制栏背景`, `展开视频简介`. (#3916) +- `简化直播间 - 付费礼物` 现在对底栏只留一个包裹按钮, 因为其他元素也都算付费礼物了. + +🐛修复 +- 修复 `自定义顶栏` 动态的详情链接. (PR #4119 by [星海](https://github.com/lovelyCARDINAL)) +- 修复在部分分辨率下 `外置稍后再看` 和 `启用快速收藏` 的响应式宽度. (#4083) +- 修复 `直播全屏包裹` 和 `简化直播间 - 付费礼物` 在新版直播间下的适配问题. (#4105, #4108, PR #4122 by [Pencil](https://github.com/pencilqaq), PR #4123 by [Pencil](https://github.com/pencilqaq)) +- 修复 `自定义顶栏` 未完全隐藏个人空间原版顶栏. (#4079) +- 修复 `直播信息扩充` 在新版动态无法打开 “正在直播” 十个以后的链接. (#4034, #3917, PR #4145 by [hhp1614](https://github.com/hhp1614)) + +☕开发者相关 +- pnpm 升级至 8.1.0, 之前本地装过依赖的开发者需要重新 `pnpm install` 一下. +- 废弃 Ajax Hook API. (#4117) +- 新增 API `addVideoActionButton`, 可向视频操作按钮区的 "收藏" 右侧添加元素. + +## v2.7.0-preview +`2023-03-26` + +包含 v2.7.0 的所有更新内容. + +- 新增功能 `组件二等分`, 在出现问题时可帮助定位是哪个组件导致的问题. (#3829, PR #3965 by [JLoeve](https://github.com/LonelySteve)) +- 优化了 `loadFeatureCode` 的代码. (PR #4013 by [timongh](https://github.com/timongh)) +- 搜索栏在搜索 ID 时的优化, 新增功能可以通过安装对应的插件来使用: (#677) + - 搜索 av / BV 号时, 支持显示视频标题 + - 支持搜索专栏 cv 号 / 文集 rl 号 + - 支持搜索音频 au 号 / 播放列表 am 号 + - 支持搜索番剧 ss / ep 号, 或番剧详情 md 号 +- `自定义顶栏` 的收藏和稍后再看支持显示数量. (#4069) +- 优化了 `网址参数清理` 的逻辑, 通过 Hook History API 来减少出现重复的历史记录. (#4039) +- 新增功能 `隐藏热搜`. (#3744) +> 隐藏搜索栏和搜索页面中的 `bilibili 热搜`. +- 新增功能 `隐藏视频分享`. (#3663) +> 隐藏视频和番剧播放器下方的分享按钮. +- `自定义顶栏` 的订阅支持过滤 在看 / 看过 / 想看. (#3217) +- 新增插件 `快捷键扩展 - 开关灯`. (#3587) +> 在快捷键的动作列表里添加一个 "开关灯". + +## v2.7.0 +`2023-03-26` + +增加了 GitHub Projects 看板: https://github.com/users/the1812/projects/1/views/3, 上面会列出当前和未来计划的功能, 可供参考. + +✨新增 +- 快捷键扩展的几个插件自带了 YouTube / PotPlayer 等预设的默认按键. (#3971) +- `简化直播间` 在开启隐藏付费礼物时, 将直接隐藏左下角的打榜入口 (以前是领银瓜子所以没算进付费礼物). (#4067) +- `专栏文字选择` 更名为 `专栏复制优化`, 现在专栏的文字默认就可以直接选择, 本功能可以用于去除复制后带上的多余文本. (#4065) +- 删除功能 `直播录像下载`, 现在已经没有直播录像的页面了. (#4061) +- 在检测到[解除番剧区域限制](https://greasyfork.org/zh-CN/scripts/25718-%E8%A7%A3%E9%99%A4b%E7%AB%99%E5%8C%BA%E5%9F%9F%E9%99%90%E5%88%B6)的脚本在运行时, 本脚本将停止运行以避免兼容性问题. (#2704) +- `选集区域优化` 在多个分组时支持仅展开当前分组. (#3899) +- `播放时自动关灯` 支持星光动画. (PR #4077 by [z503722728](https://github.com/z503722728)) + +🐛修复 +- 修复 `直播信息扩充` 失效的问题. (#4034, PR #4043 by [deepdarkssj](https://github.com/deepdarkssj)) +- 修复 `简化直播间` 在开启隐藏付费礼物时, 右下布局错乱. (PR #4089 by [Pencil](https://github.com/pencilqaq)) +- 修复动态相关功能对新版专栏卡片不生效. (#3994) +- 修复搜索界面的广告链接仍然可点击. (#3969) +- 修复 `图片批量导出` 在动态失效了. (#4038) +- 修复 `选集区域优化` 仅开启 `展开选集标题` 时视频标题无法显示完全. (#3909) +- 修复 `查看封面` 在复制链接后没有显示成功图标. (#4002) +- 修复番剧页面的部分夜间模式. (PR #4077 by [z503722728](https://github.com/z503722728)) + +☕开发者相关 +- 修复 `IframePopup.vue` 的类型定义. (PR #4014 by [timongh](https://github.com/timongh)) +- 修复 `UserItem.vue` 初始化 Toast 的逻辑问题. (PR #4056 by [timongh](https://github.com/timongh)) +- 优化了 `switch-options.ts` 的注释. (PR #4021 by [timongh](https://github.com/timongh)) +- 清理了项目中 Vue 文件里对未定义字段的引用. (#3992) +- 导出了 Dialog API (`@/core/dialog`), 允许其他组件使用. +- 调整了 CONTRIBUTING 中的本地开发流程描述. (PR #4077 by [z503722728](https://github.com/z503722728)) + +## v2.6.3-preview +`2023-02-20` + +包含 v2.6.3 的所有更新内容. + +- 启用新的代码加载方式. (PR #3938 by [timongh](https://github.com/timongh)) + +## v2.6.3 +`2023-02-20` + +- 修复 `隐藏推荐直播` 失效. (#3993) +- 修复 `夜间模式` 下鼠标移至特定页排行榜时的显示问题. (#1052, PR #4001 by [Tinhone](https://github.com/Tinhone)) + +## v2.6.2-preview +`2023-02-09` + +包含 v2.6.2 的所有更新内容. + +- 修复搜索历史无法删除. (#3893) + +## v2.6.2 +`2023-02-09` + +- 修复 `播放前显示封面` 未正确清除封面. (#3974, PR #3976 by [imshixin](https://github.com/imshixin)) +- 删除 NavbarWatchlater.vue 中的未定义属性. (#3949) + +## v2.6.1-preview +`2023-02-07` + +包含 v2.6.1 的所有更新内容. + +- 提高了 `自定义顶栏` 搜索栏中搜索 av 号 / BV 号结果的优先级, 输入编号后直接回车就可以前往视频. +- 添加跨域存储功能 (`crossOriginLocalStorage`), 支持搜索历史跨域同步. (#3893) +- 新增功能 `弹幕转义`. (#3470) +> 将弹幕中的 `\n` 替换为真实的换行, 注意这可能导致原先不重叠的弹幕发生重叠. + +## v2.6.1 +`2023-02-07` + +✨新增 +- 优化 `简化评论区` 的时间样式. (#3541, PR #3791 by [Tinhone](https://github.com/Tinhone)) +- `下载视频`: + - 支持选择备用下载地址. (PR #3798 by [Seaward233](https://github.com/Seaward233)) + - 新增 `StreamSaver` 输出方式. + - 新增 `Motrix` 输出方式. (PR #3908 by [FoundTheWOUT](https://github.com/FoundTheWOUT)) +- `删除广告` 支持屏蔽动态的商品推荐. (#3778) +- 优化 `自定义顶栏` 的弹窗逻辑, *有任意元素聚焦时* -> *仅在输入框聚焦时*显示弹窗. (#3756) +- `展开弹幕列表` 新增 `有选集时不自动展开` 选项. (#1734) +- 新增功能 `禁止滚轮调音量`. (#3489) +> 在网页全屏 / 全屏模式下, 禁止鼠标滚轮控制播放器的音量. + +- 新增功能 `批量导入合集`. (PR #3884 by [swhoro](https://github.com/swhoro)) +> 在合集页面制作一个批量导入按钮,可以新增所有合集内视频至同名收藏夹 + +- `扩展倍速` 添加 `隐藏移除图标` 和 `隐藏新增图标` 选项. (PR #3864 by [Tinhone](https://github.com/Tinhone)) +- 新增插件 `快捷键扩展 - 开关 CC 字幕`, 默认为 Shift + C. (#3407) +- 新增插件 `快捷键扩展 - 开关弹幕列表`, 默认为 Shift + D. (#3613) +- `新版本提示` 支持在安装前查看更新说明. +- 功能面板为空时增加引导提示. (#3932, PR #3936 by [Ethkuil](https://github.com/Ethkuil)) +- `下载字幕` 支持在番剧页面使用. +- 新增功能 `禁用评论区搜索词`. (#3648) +> 禁用评论区的搜索词链接. + +🐛修复 +- `下载视频` 的 `flv` 格式恢复 1080P 支持. (一共就 360P / 1080P, 其他清晰度还是没有, 需要的话请使用 dash 格式) +- 修复评论区功能在新版播放页上的支持, 包括 `复制评论链接` / `简化评论区` 等. (#3807) +- 修复 `清爽首页` 的排行榜第三项数据不正确. (#3911, PR #3912 by [Colerar](https://github.com/Colerar)) +- 修复 `简化直播间` 对左下角红包的简化样式. (#3243) +- MDI 图标库内联至本体中, 避免阻塞页面加载. (#3964, #3888) +- 修复 `侧栏垂直偏移` 在部分直播间失效的问题. (#3934) +- 修复 `自定义顶栏` 的收藏夹在加载完毕后仍显示加载中. (#3940) +- 修复 `展开弹幕列表` 检测到的弹幕量不正确. (获取页面的已装载弹幕量太坑了, 改为调 API 获取总弹幕量来判断了) (#3958) +- 修复 `启用弹幕空降` 失效. (#3187) +- 修复 `高分辨率图片` 在个人空间投稿页失效. (#3894) +- 修复 `复制评论链接` 在个人空间复制出的链接不正确. (#3821) +- 修复 ASS 弹幕中的颜色标记不正确. (#3960) + +☕开发者相关 +- 完成 define API + SwitchOptions API 的改造 (受影响组件为 `简化首页` 和 `简化直播间`), 感谢 [timongh](https://github.com/timongh) 的长期贡献. +- 重新拆分了一下 PlayerAgent 的文件. +- 修复 CI 构建脚本未提交新增文件. (#3903) +- 新增 Dialog API, 可用简单封装以弹窗形式展示的内容. +- 开源许可有所变更, 对再分发有一些限制, 详见 [LICENSE](./LICENCE.md). +- 删除了 `