Estrella Pan
|
b129c4437a
|
chore(release): 准备 4.0.0
- 部署文档、升级指南与 README 改为正式版说法:latest = 4.0,3.3 固定为 3.3.7
- docs/changelog/4.0.md 新增 4.0.0 汇总(升级前必读、破坏性变更、新功能、主要修复),链接改为绝对地址
- 文档站与插件市场改为从 main 发布,插件上架 PR 的目标分支改为 main
- 文档站页脚版本 v4.0.0;en/ja README 的 star history 地址
|
2026-10-24 11:46:50 +02:00 |
|
Estrella Pan
|
7e76dd7e27
|
Merge main (3.3.7) into 4.0-dev
|
2026-10-24 11:26:02 +02:00 |
|
Estrella Pan
|
29dc558789
|
fix(update): 应用内更新只提供同一主版本的发布,准备 3.3.7
4.0 的更新包要求 4.0 镜像,3.3 镜像上无法应用;稳定版与测试版渠道都不再提供 4.x。
发布列表每页取 100 条,4.x 发布增多后仍能找到 3.x 发布。
|
2026-10-24 11:03:45 +02:00 |
|
Estrella Pan
|
396a92787e
|
fix: 回滚后再升级时重新备份 3.x 数据库,单个下载器重命名出错不拖垮其它实例
- version_check: 数据库仍是 3.x 结构(schema ≤ 24)时备份并原子替换 data.db.v3.bak,
回滚 3.3 后再升级也会刷新备份;只留一份,迁移失败的重启循环不会堆积
- rename_all: 实例内的异常记录后继续下一个实例
- 文档:回滚步骤删除 data.db-wal/-shm、还原编号最大的配置备份;schema v28
- 插件 skill 改用 httpx2、补全示例列表;示例 README 先安装 SDK 轮子再测试
- 准备 4.0.0-beta.9
|
2026-10-24 11:00:56 +02:00 |
|
Estrella Pan
|
4bcc6443fd
|
docs: 用 4.0 界面重拍文档截图,中英文分开,新增插件与下载器截图
- 25 张截图按 4.0 界面重拍(1280x800):中文站用 zh-CN 界面,en/ja 站用 docs/public/image/en/ 下的英文界面
- 首页预览图按站点语言切换
- 新增下载器页、插件市场、插件配置、插件设置 4 张截图
- 修正文档:插件目录在插件市场页;API 令牌在用户与访问控制中管理(security.login_tokens/mcp_tokens 为启动时导入的旧项);默认搜索源含 anibt
|
2026-10-22 09:10:54 +02:00 |
|
Estrella Pan
|
415154be3d
|
Merge branch 'feat/more-plugins' into feat/notifier-plugins
# Conflicts:
# backend/src/test/test_plugin_examples.py
# docs/dev/plugins/examples.md
|
2026-10-21 09:13:47 +02:00 |
|
Estrella Pan
|
f1dd439fbe
|
feat(notification): Bark 支持铃声、分组、中断级别、图标与点击地址;插件权限新增「运行外部命令」
- Bark 渠道新增可选字段 sound、group、level、icon,并复用 url 作为点击打开的地址;
只发送已设置的项,旧配置的请求体不变;配置了 icon 时优先于海报地址(#792)
- 测试接口 /notification/test-config 透传新字段;通知设置表单加上对应输入框
与 level 下拉框,并更新三语言的通知配置文档
- 插件权限标签新增 subprocess(运行外部命令),仅用于展示
|
2026-10-21 09:09:43 +02:00 |
|
Estrella Pan
|
8312f47769
|
feat(plugins): 新增 run-command、strm-writer、synology-chat-notifier、slack-notifier 示例插件
- run-command:torrent.organized / file.renamed 后运行外部命令,参数列表直接 exec,
事件字段以 AB_* 环境变量与 {占位符} 传入,超时终止(#897、#668)
- strm-writer:按媒体目录结构写 .strm,内容为地址前缀加相对路径(#428)
- synology-chat-notifier:Synology Chat 传入 Webhook,payload= 表单 JSON(#887)
- slack-notifier:Slack Incoming Webhook,带海报时附图片块(#277)
|
2026-10-21 09:08:56 +02:00 |
|
Estrella Pan
|
403cf94572
|
feat(plugins): 新增 WPUSH、OneBot、Apprise 官方通知插件示例
- wpush-notifier:POST JSON 到 WPUSH 接口,code == 0 才算成功
- onebot-notifier:OneBot v11 私聊 / 群消息,可附带 poster_url 海报
- apprise-notifier:调用 Apprise API 服务器,支持 URL 列表与配置键
- 宿主加载测试与示例文档登记三个新渠道
|
2026-10-21 08:53:28 +02:00 |
|
Estrella Pan
|
124b156b7a
|
fix: 修复 4.0 工具链升级审查问题
- ab-plugin new 与示例插件的 requires-python 改为 >=3.14,与 SDK 0.6.0 一致
- 示例插件 ntfy-notifier / webhook-on-event 改用 httpx2
- openai / anthropic / google-genai 下限改为实际需要的大版本
- 插件 MCP 工具的 input_schema 无效时计入熔断
- 复制 RSS 链接在 HTTP 部署下回退到 execCommand(useClipboard legacy)
- CI 步骤名、PLAYWRIGHT_VERSION、README 徽章与 e2e 指南改为 Python 3.14 / Playwright 1.64.1
|
2026-10-20 12:12:58 +02:00 |
|
Estrella Pan
|
a7a3143683
|
Merge branch 'feat/4.0-toolchain-webui' into feat/4.0-toolchain
|
2026-10-20 11:49:15 +02:00 |
|
Estrella Pan
|
1bf799791c
|
docs: 补齐 4.0.0-beta.3 英日文破坏性变更说明与日文插件 SDK 文档(0.6.0 / httpx2 / Python 3.14)
|
2026-10-20 11:49:05 +02:00 |
|
Estrella Pan
|
73fbca985b
|
refactor(mcp): 升级 mcp 2.3,改用 MCPServer 与 Streamable HTTP(端点 /mcp)
- 内置工具与资源改为 AutoBangumiMCP(MCPServer 子类)上的 @mcp.tool() /
@mcp.resource(),参数 schema 由类型注解生成,工具名、描述与参数名不变;
结果仍是一段 JSON 文本,异常返回 is_error 结果
- 插件工具与资源在子类的 list / call / read 中追加与分发,熔断与超时逻辑
不变;mcp 2 不再校验参数,插件工具按 input_schema 用 jsonschema 校验,
不合法的参数不计入熔断
- 传输只保留 Streamable HTTP,以路由挂载在 /mcp(mount 会把 /mcp 重定向到
/mcp/),删除 /mcp/sse 与 /mcp/messages/;会话管理器在应用 lifespan 中运行;
关闭 DNS rebinding 防护,访问控制仍由 IP 白名单与令牌负责
- 更新 MCP 文档、e2e 用例与 4.0 更新日志的破坏性变更
|
2026-10-20 11:40:32 +02:00 |
|
Estrella Pan
|
ca7fcdf058
|
chore(deps): httpx 全面迁移到 httpx2,SOCKS5 改用原生代理,升级 LLM SDK 大版本
- 依赖 httpx[socks] 换为 httpx2[socks]>=2.15,移除 httpx-socks / python-socks 及其 mypy 覆盖
- backend/src、ab_sdk、e2e 与单元测试统一使用 httpx2(异常类与 httpx 不通用)
- request_url 与 LLM 客户端工厂合并为 proxy_url(),SOCKS5 走 httpx2 原生代理(主机名由代理解析)
- 保留 #1104 过期连接池替换:httpcore2 2.15.1 的 start_tls 失败路径仍会泄漏隧道
- 日志同时压低 httpx2 与 httpx(google-genai、mcp 仍依赖旧 httpx)
- openai 3.35.1 / anthropic 1.15.0 / google-genai 2.31.0;结构化解析改用 chat.completions.parse
- ab_sdk 升到 0.6.0,客户端类型改为 httpx2.AsyncClient,同步插件文档
|
2026-10-20 10:56:32 +02:00 |
|
Estrella Pan
|
02e0c3ea63
|
chore(deps): CI 运行时升级到 Node 24 / pnpm 12,并移除未用依赖
- Node 24、pnpm 12.14.0、pnpm/action-setup@v6,@types/node ^24
- .npmrc 的 public-hoist-pattern 迁入 pnpm-workspace.yaml,新增 allowBuilds
- docs 同步迁移 pnpm 12
- 删除 @vueuse/components、radash、generate-pwa-assets 脚本、失效的 coverage 配置、app AutoImport 的 vitest 预设与 Components dirs
|
2026-10-20 10:41:07 +02:00 |
|
Estrella Pan
|
2ed46695a2
|
feat(plugins): 条目以 sha256 绑定审查过的 zip
PR 检查打出的 zip 的 sha256 写进条目。合并后在独立 job 中重新打包的 zip、
签名 job 汇总的 zip(含复用的旧 zip)都必须与它一致才签名,构建在 PR 与
合并后产出不同字节时发布失败,不会签下未审查的内容。条目缺少或写错 sha256
时,PR 检查在摘要中给出应填的值。
|
2026-10-09 12:02:02 +02:00 |
|
Estrella Pan
|
eb1598c21e
|
feat(plugins): 插件市场索引与签名发布流水线
- plugins/registry/<id>.toml 指向作者仓库的固定 commit(repo、commit、path)
- scripts/plugin_registry.py:check 在 PR 上校验改动的条目、运行作者测试、
从 web-src/ 构建前端并写审查摘要;build 在合并后增量打包(commit 未变的
条目复用已发布的 zip)
- plugin-registry.yml:check / build 不读 secret,sign 只用 PLUGIN_SIGNING_KEY
签名,不运行作者代码;发布到 release plugins 并删除下架的资源
- 插件目录改用独立的插件公钥 ab_plugin_pubkey.pem,与在线更新密钥分开
- catalog 条目新增 authors、permissions、has_web、repo、commit、readme
- 6 个示例插件上架;上架文档(中 / 英 / 日)、PR 模板与 CODEOWNERS
|
2026-10-09 10:13:30 +02:00 |
|
Estrella Pan
|
96a2517f99
|
docs(4.0): 修正本地部署的 pip 命令与插件技能中的路径映射字段
|
2026-10-08 17:45:47 +02:00 |
|
Estrella Pan
|
c9b5753ebd
|
docs(4.0): 回滚指南改为还原 data.db.v3.bak,删除 version.info 手工处理步骤
|
2026-10-08 17:45:30 +02:00 |
|
Estrella Pan
|
fcf573ae25
|
Merge refactor/4.0-final into docs/4.0-site
|
2026-10-08 17:41:10 +02:00 |
|
Estrella Pan
|
776abfa896
|
docs(4.0): 更新 API 参考与开发者文档,新增获取 SDK 页
- API 参考按实际路由重写,修正认证方式、请求方法与设置向导端点
- 数据库指南改为异步 Database 与 MIGRATIONS
- E2E 指南改为指向 e2e/README.md
- 插件快速上手补上安装 SDK 轮子的步骤,ab-plugin dev 加 --config-dir
- 发布流程改为手动推送标签触发
|
2026-10-08 17:36:53 +02:00 |
|
Estrella Pan
|
f6bca2be60
|
docs(4.0): 新增插件设置参考,修正下载器、番剧管理、通知等配置页与代码不符之处
|
2026-10-08 17:36:53 +02:00 |
|
Estrella Pan
|
2a500362f3
|
docs(4.0): 新增插件、多下载器、硬链接功能页,更新番剧、RSS、搜索、重命名页
|
2026-10-08 17:36:53 +02:00 |
|
Estrella Pan
|
b9b1fa367c
|
docs(4.0): 新增 3.3 升级到 4.0 指南与 4.0 更新日志,更新部署页与首页
|
2026-10-08 17:36:53 +02:00 |
|
Estrella Pan
|
4102d77b88
|
ci(docs): 改用 GitHub Pages 部署文档站,侧边栏加入 4.0 新页面
- 新增 docs.yml:*-dev 分支推送 docs/** 时构建并部署到 GitHub Pages
- 新增 public/CNAME(www.autobangumi.org),删除 vercel.json
- VitePress 排除 plans/、superpowers/,生成 sitemap
- 中英日侧边栏加入升级指南、4.0 更新日志、插件/多下载器/硬链接、插件设置、获取 SDK、数据库与 E2E 指南
|
2026-10-08 17:36:53 +02:00 |
|
Estrella Pan
|
75eefc9ce1
|
docs(4.0): 记录收尾阶段的调整并更新变更日志
|
2026-10-08 17:29:56 +02:00 |
|
Estrella Pan
|
34526246b7
|
fix(4.0): 媒体库刷新在硬链接放好文件后再刷新一次,刷新期间的事件不再丢失
media-server-refresh 只按第一个 torrent.organized 起算 delay,不等待
同一事件的 hardlink 订阅者:跨盘复制慢于 delay 时刷新早于文件到位。
hardlink 新放入文件后发布 hardlink.linked(普通事件,不是通知),
media-server-refresh 同时订阅它。刷新请求发出后到达的事件原先被忽略,
现在这次刷新之后再排一次。
|
2026-10-08 16:46:13 +02:00 |
|
Estrella Pan
|
045bdbd407
|
fix(4.0): 已打 ab:renamed 的种子在本进程未发布过时补发 torrent.organized
标签在发布之前打上,之后的轮次不再检查该种子:订阅者处理中被取消
(重启、插件重载)的事件永远不会再投递,硬链接漏掉这一集。现在每个
进程按当前文件名为已打标签的种子补发一次,丢失的事件在下次启动时
重新投递,投递恢复为至少一次;没有事件总线时不查询文件。
test_renamed_tag_skips_before_file_and_offset_queries 改为在已发布的
稳态下断言。文档与 TorrentOrganized 说明同步更新。
|
2026-10-08 16:42:42 +02:00 |
|
Estrella Pan
|
93520e5b03
|
fix(4.0): 重命名策略未登记而按 none 处理时不发布 torrent.organized
重载窗口、熔断或模板失效期间,种子按原名发布 torrent.organized;
策略恢复后改名再发布一次,硬链接在媒体库留下两份。原名不是最终
文件名,此时不再发布。test_rename_unregistered_method_keeps_names_without_tag
的期望随之改为不发布。
|
2026-10-08 16:36:26 +02:00 |
|
Estrella Pan
|
1d764b0974
|
fix(4.0): conflict_policy 与 media_files 插件经熔断器调用,失败时退回宿主实现
两者原先直接调用插件实现:抛出异常或返回值无效会中断整轮重命名,
且不计入熔断。新增 plugin_host.call_sync(重命名策略同样改用它),
conflict_policy 失败按 hold 处理,media_files 失败按扩展名分类。
|
2026-10-08 16:34:20 +02:00 |
|
Estrella Pan
|
04beea02c8
|
fix(4.0): hardlink 不再重建用户从媒体库删除的文件
插件放置过、之后被删除的目标,KV 记录中的源身份与当前源相同:
torrent.organized 重复投递时不再放回,只有用户主动补链时重建。
|
2026-10-08 16:30:24 +02:00 |
|
Estrella Pan
|
406f1a074f
|
fix(4.0): 插件目录默认 min_ab_version 改为 4.0.0-beta.1
semver 中 4.0.0-beta.N 低于 4.0.0,原默认值与文档命令会使全部 4.0 beta
用户无法安装目录插件。
|
2026-10-08 16:04:48 +02:00 |
|
Estrella Pan
|
ee5704eef0
|
feat(4.0): 设置页新增签名插件目录的浏览、安装、更新与卸载
- 插件卡片下方新增「插件目录」区:点击后才请求 GET /plugins/catalog(silent),失败时在区内显示后端原因并可刷新
- 条目按已装版本显示安装 / 更新 / 已安装;安装成功后刷新卡片、Provider 下拉与前端挂载点
- 卸载只对来源为 catalog 的插件开放,经危险确认框;与后端卸载前提为同一条件,LLM 插件不受影响
- 卡片标出已签名 / 未签名
- 修复前端缺少 catalog 来源类型与 source_catalog 文案
- 同步签名与分发文档(中 / 英 / 日)、设计文档第 0 节与 CHANGELOG
|
2026-10-08 15:38:52 +02:00 |
|
Estrella Pan
|
f01e1e1358
|
fix(4.0): aria2 的 gid 映射按下载器实例区分
两个 aria2 实例可能分配到相同的 gid,原先 aria2_gid 以 gid 为主键,
番剧关联、改名记录与按 dedup_key 判重会在实例间互相覆盖。
- v27 迁移重建 aria2_gid,主键改为 (downloader_id, gid),存量行归属 default。
- Aria2GidDatabase 构造时绑定实例 id,经 Database.aria2(downloader_id) 取得。
- DownloaderConnection 新增 instance_id(默认 "default"),工厂把它传给 Aria2Downloader。
|
2026-10-08 15:25:09 +02:00 |
|
Estrella Pan
|
b763c62fe3
|
fix(4.0): 删除规则时下载器不可用则保留规则与种子行以便重试
delete_rule 原先先删种子行与番剧,再逐实例删种子;某个实例不可用时,
该实例上的种子失去记录,之后无法再删。现在删除文件时先逐实例删种子,
全部成功才删种子行与番剧;有失败时两者都保留并返回 500。
|
2026-10-08 15:18:50 +02:00 |
|
Estrella Pan
|
88950d30a8
|
fix(4.0): 在线更新包带上 ab_sdk 并要求 4.0 镜像
- build.yml:bundle 打入 backend/src/ab_sdk,min_image_version 设为 4.0.0-beta.1。
已发布的 3.3 镜像在 beta 通道会选中最新预发布,靠该下限拒绝 4.x bundle。
- boot_overlay:已验签 bundle 必须同时带 module 与 ab_sdk,先换 /app/ab_sdk 再换 /app/module。
- 测试:覆盖层替换 ab_sdk、缺 ab_sdk 时不应用;3.3.6 镜像拒绝 min_image_version
为 4.0.0-beta.1 的 bundle 且不留存 bundle;build.yml 的 bundle 步骤。
|
2026-10-08 15:16:33 +02:00 |
|
Estrella Pan
|
da77f94f0f
|
fix(4.0-P7): 评审修复:插件扫描跳过工具链目录、v3 迁移忽略空旧字段、通用与 LLM 插件互不干扰
|
2026-10-08 15:02:56 +02:00 |
|
Estrella Pan
|
3258fcca4b
|
docs(4.0-P7): 插件开发文档拆分为总览加每个扩展点一页,补齐中英日三语
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/
- 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页
- 每个扩展点一页,侧边栏由页面表生成
- 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
|
2026-10-08 14:51:00 +02:00 |
|
Estrella Pan
|
e0fc4c4eb6
|
docs(4.0-P7): 记录 install / catalog 路径对插件路由的占用
|
2026-10-08 14:27:26 +02:00 |
|
Estrella Pan
|
ce98409950
|
docs(4.0-P7): 记录 P7 第一部分的实施调整,更新 CHANGELOG
|
2026-10-08 14:23:12 +02:00 |
|
Estrella Pan
|
34d51dd711
|
fix(4.0-P6): 嵌套秘密字段掩码、未启用插件 schema 刷新、custom element 归属校验
|
2026-10-08 14:05:56 +02:00 |
|
Estrella Pan
|
91e01f716f
|
feat(4.0-P6): WebUI 插件挂载点、AbHost 宿主实现与示例插件「手动选种」
- PluginSlot:导入插件模块并在 Shadow DOM 中挂载 custom element,host / context 先于插入设置;加载失败、元素未定义或运行时报错只让该插件的挂载点显示「插件组件加载失败」
- AbHost:api 限定在 /api/v1/plugins/<id>/ 与只读 GET 的宿主 API;i18n、主题、toast;events.on 订阅 SSE 新增的 bus 帧(后端把总线事件转发给前端)
- 五个挂载点:设置分区、番剧详情标签、卡片操作、侧边栏页面 /plugins/:id、首页小组件
- 未启用的内置 / 已允许的插件也能取得配置 schema,首次启用前即可填写配置
- Schema 表单支持对象数组(hardlink 的 path_map)
- hardlink 插件自带 settings.section 元素「链接已有文件」,调用补链路由并显示计数
- examples/plugins/manual-pick:详情页标签示例,含插件路由与事件订阅
- 设计文档第 0 节记录调整,第 10 节标记 P6 已完成
|
2026-10-08 13:50:46 +02:00 |
|
Estrella Pan
|
bf1c8db08c
|
feat(4.0-P6): 前端插件后端与 plugin-ui 工作区包
- 清单 [[plugin.ui]]:五个挂载点、ab-plugin- 元素名与 web/ 入口校验
- GET /plugins/ui 列出已启用插件的挂载点;GET /plugins/{id}/web/{path} 提供静态资源(防路径穿越、JS MIME、需登录)
- SPA 文档加 CSP script-src 'self',内联深色模式脚本移到 theme-init.js
- webui/packages/plugin-ui:AbHost 类型、--ab-* 主题变量、Vite 库模式模板
- 设计文档第 0 节记录第一部分的调整
|
2026-10-08 13:31:03 +02:00 |
|
Estrella Pan
|
a5defee676
|
fix(4.0-P2.5): 保存目录随投递实例重新生成,删除 / 补全 / 打标逐实例隔离,迁移不覆盖已有备份
- add_torrent 经 save_path_for:已存目录不在本实例下载目录之下时按本实例重新生成
(默认实例切换、规则的实例被删除、订阅指向别的实例)
- TorrentManager 按已存目录与本实例目录匹配种子;更新规则时在种子行记录的每个实例上移动
- delete_torrents 逐实例隔离,一个实例不可用时其它实例照常删除,最后报告失败的实例
- eps_complete 与自动打标跳过不可用实例
- 单实例时不按实例过滤进行中的版本替换事务,改主机地址后仍能恢复
- v4 迁移器已有 .v3.bak 时另存为 .v3.bak.1 等
|
2026-10-08 13:10:13 +02:00 |
|
Estrella Pan
|
75b42cfe24
|
docs(4.0-P2.5): 记录 P2.5 第二部分的实施调整并标记阶段完成,下载器文档补充多实例说明
- 设计文档第 0 节补充按实例路由、迁移 v26 取值修改、重命名逐实例运行与推迟项,第 10 节 P2.5 标记已完成
- 下载器文档(中 / 英 / 日)新增「多个下载器」,插件开发文档更新 downloader_id 与 instance_id
- 新增 qB 与 aria2 实例并存的进程内测试
|
2026-10-08 12:40:51 +02:00 |
|
Estrella Pan
|
e4a7fc8483
|
docs(4.0-P2.5): 记录 P2.5 第一部分的实施调整,下载器与番剧管理文档改为 plugins.instances / slots
|
2026-10-08 12:07:59 +02:00 |
|
Estrella Pan
|
78f0c0ab20
|
docs(4.0-P4): 番剧管理文档补充 template / hardlink / 媒体库刷新,记录两份 P4 实现的移植
- docs/{,en/,ja/}config/manager.md:template 模板变量与失败行为、hardlink
选项(path_map、cross_device)与 Docker 下硬链接不能跨文件系统的说明、
media-server-refresh 配置
- CHANGELOG.md 增加 P4 条目
- VitePress 不给行内代码加 v-pre,行内 Jinja2 示例在构建时报
_ctx.pad is not a function;改用 ::: v-pre 容器
- 设计文档第 0 节记录另一份 P4(refactor/4.0-p4-organize-cloud)与移植内容,
第 10 节 P4 行补充 media-server-refresh,第 11 节风险 2 标为已决
|
2026-10-08 11:38:12 +02:00 |
|
Estrella Pan
|
422def2bf9
|
fix(4.0-P4): hardlink 认领未记录的自有文件、不覆盖用户替换的文件、并发放置互不干扰
KV 记录改为 [源文件身份, 目标身份]:目标是源的链接或 copy2 副本时视为已完成并补写记录;版本升级只替换目标身份与记录一致的文件。临时文件名每次不同,失败时删除。
|
2026-10-08 11:14:50 +02:00 |
|
Estrella Pan
|
82ea8f098f
|
fix(4.0-P4): hardlink 复制中断不再在媒体库留下半个文件
所有放置先写到同目录临时文件再 os.replace 到目标;否则重试时残留文件会被当成非本插件创建的冲突。文档补充 path_map 需在 config.json 填写与首次启用流程。
|
2026-10-08 11:00:23 +02:00 |
|
Estrella Pan
|
9502f373fa
|
docs(4.0-P4): 插件文档补充整理扩展点、整理事件与 rename / hardlink 内置插件,设计文档记录 P4 调整
|
2026-10-08 10:55:09 +02:00 |
|