Estrella Pan
|
5fc7f749d7
|
Merge remote-tracking branch 'origin/4.0-dev' into feat/4.0-plugin-market
|
2026-10-09 13:00:21 +02:00 |
|
Estrella Pan
|
ee3ee0a6ab
|
fix(webui): 4.0 界面审查第二轮修复
- 通知渠道列表测试:已保存且未改动的行按下标测试后端保存的配置(掩码密钥
不再导致失败,插件渠道的自带字段得以保留),未保存的行按当前配置测试;
后端下标改为对应完整渠道列表(含停用项)
- 插件配置表单:草稿深拷贝 options,编辑嵌套行后保存按钮可用
- 插件配置表单:数字字段清空后保持空白,Optional 字段清空为 null
- 标签输入:失焦(focusout)时添加未确认的输入;输入法组字时的回车不添加标签
- 下载器:切回已保存的类型时恢复保存的配置,不再清空凭据
- 插件挂载点加载失败时改为刷新页面,提示文案同步
- 移动端导航:同一插件只显示一个入口,导航项不收缩、可横向滚动
- 插件页面无匹配挂载点时标题回退为插件 id
|
2026-10-09 12:11:30 +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
|
d664122af8
|
fix(plugins): 按 Codex 审查加固插件市场流水线
- 拒绝符号链接形式的条目;PR 检查纳入类型变更(T)
- PR 头部先解析为固定 SHA,作者代码不能借 FETCH_HEAD 换掉被检查的 commit
- 使用已发布的 catalog 前先验签,篡改的 release 资源不会被重新签名
- 全部下架时签发空目录
|
2026-10-09 10:31:55 +02:00 |
|
Estrella Pan
|
5e15c5cf17
|
fix(webui): 4.0 界面审查修复
按 4.0 UI 审查确认的问题修复(设计规范、状态与流程、无障碍与手机端、文案):
- 插件卡片:加载失败可重试、未保存标记、开关与保存分开忙碌状态、停用或卸载
仍在使用的插件前确认、扩展点与权限显示为译名、tags 字段改用 ab-tags-input
- 插件表单:必填与范围校验、删除非空行前确认、清空数字恢复默认值、稳定的行 key
- 插件页面与挂载点:加载骨架、失败原因与重试;手机底栏可进入插件页面
- 下载器:按类型显示字段、切换类型重置选项、id 规则提示、类型名称
- 通知:测试结果按列表 / 对话框分开、插件渠道提示、rename_skipped 显示方法名
- 规则编辑与添加 RSS:高级区改用 ab-field / ab-select,补充可访问名称
|
2026-10-09 10:23:16 +02:00 |
|
Estrella Pan
|
c77f437fc7
|
fix(plugins): 插件市场流水线按审查意见加固
- 插件公钥移入 module/plugin/,随在线更新包分发,旧镜像更新后也能验签目录
- 合并后每个插件在独立的 job 中构建;签名 job 自己下载复用的 zip 并校验
sha256,逐个核对新 zip 的 id 与来源,单个插件的构建篡改不到别的插件
- 发布只从 4.0-dev 运行;PR 检查使用 base 分支的脚本与 ab_sdk
- 复用判断加入 path,手动触发可全部重新打包
- 打包前拒绝符号链接;摘要转义作者控制的输出;单个条目出错不影响整份摘要
- 已上架版本以已发布的 catalog 为准,不再拉取旧 commit
- 修复 git diff 把提交范围当作路径的问题
|
2026-10-09 10:22:55 +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
|
f3359b17fd
|
feat(examples): manual-pick 前端改由 web-src/ 构建,补充测试
插件市场要求带前端的插件以 web-src/ 源码提交、至少有 1 个测试。ab-plugin pack
不再打包 web-src/,运行时只需要构建出的 web/。
|
2026-10-09 10:07:37 +02:00 |
|
Estrella Pan
|
a421814ab8
|
chore(release): 准备 4.0.0-beta.1
|
2026-10-08 17:55:01 +02:00 |
|
Estrella Pan
|
d1953fae34
|
test(4.0): 端到端测试改为断言删除失败时保留规则
|
2026-10-08 17:46:39 +02:00 |
|
Estrella Pan
|
73ab8a2a9a
|
fix(4.0): 4.x 另写版本记录并备份 3.x 数据库,回退 3.3 不再误跑 3.0 迁移
|
2026-10-08 17:44:49 +02:00 |
|
Estrella Pan
|
6439577b2b
|
refactor(4.0): 改正描述旧行为的注释与文档字符串
- ab_sdk 的扩展点与下载器说明仍写 downloader.type,P2.5 起改为下载器实例的 provider
- ab_sdk 与示例插件中的阶段编号(P3 / P4 / P5 / P6)对插件作者没有意义,去掉
- EventBus.drain 只有测试调用;hardlink 注释中的 slots 已实施
|
2026-10-08 17:24:14 +02:00 |
|
Estrella Pan
|
67f16ad372
|
refactor(4.0): ab-plugin 命令行复用 ab_sdk.manifest 的插件 id 正则
cli.py 自带一份与 manifest.ID_RE 完全相同的私有正则,改为直接导入。
|
2026-10-08 17:21:00 +02:00 |
|
Estrella Pan
|
12f0049df2
|
refactor(4.0): 删除 vulture 白名单中已不需要的条目
去掉 13 个在不带白名单运行 vulture 时也不会被报告的名字(已有生产调用方或不在扫描路径内),
以及随之变空的分组注释;drain 只有测试调用,注释改正。
|
2026-10-08 17:17:35 +02:00 |
|
Estrella Pan
|
64c8a92fc1
|
fix(4.0): /config/get 掩码插件通知渠道的自定义字段,保存时按身份还原
插件渠道的配置存为 notification.providers[] 的额外字段,没有 schema,
原先只按键名掩码,webhook / sendkey 等以明文返回。模型未声明的字段
现在与无 schema 的插件选项一样全部按秘密处理;保存时对通知渠道列表
用同一判定做身份匹配与还原,删除或调换渠道不会串用或丢失密钥。
|
2026-10-08 16:56:59 +02:00 |
|
Estrella Pan
|
47d136b68e
|
fix(4.0): 秘密字段标记写在 anyOf / $ref 外层或容器上时也掩码
secret_field() 用于可选字段时,Pydantic 把 secret 标记写在 anyOf 外层;
_branches 展开分支时丢弃了外层节点,GET /plugins 与 /config/get 返回明文。
容器(list / dict / 嵌套对象)上的秘密标记也不再传给其中的元素。
|
2026-10-08 16:54:17 +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
|
5426bec0c3
|
fix(4.0): 配置迁移失败时把备份移回原文件,重启循环不再堆积 .v3.bak.N
|
2026-10-08 16:20:06 +02:00 |
|
Estrella Pan
|
fb77bd3e10
|
fix(4.0): 更新规则时先在所有实例上匹配种子,任一实例不可用则不做任何修改
此前逐实例移动种子,后面的实例不可用时前面的实例已经移动,数据库仍记着旧目录。
|
2026-10-08 16:20:06 +02:00 |
|
Estrella Pan
|
813f04abff
|
fix(4.0): 版本门禁覆盖首次启动的 2.x 数据与 3.0 数据库,提示先还原配置备份
- 2.x 的 data.json 检查移到首次启动之前,不再建出新库后在下次启动才拒绝
- 缺少 version.info 且数据库没有 rssitem 表时判定为 3.0.x,提示先升级到 3.1.x
- 拒绝提示说明要先用 config.json.v3.bak 覆盖已被改写的 config.json
|
2026-10-08 16:20:06 +02:00 |
|
Estrella Pan
|
9af029485e
|
fix(4.0): 设置向导把 Bark/WeCom 凭据写入渠道实际读取的字段
向导只有通用的 token / chat_id 输入。P7 移除旧字段别名后,Bark 只读 device_key,
WeCom 只读 webhook_url,向导保存的配置与测试通知都失效。保存和测试前用 v4
迁移器的别名表改写字段。
|
2026-10-08 16:20:06 +02:00 |
|
Estrella Pan
|
82466fab6f
|
fix(4.0): 只对已开始 setup 的插件实例调用 teardown
注册扩展失败(如未知扩展点)时 setup 尚未执行,没有需要释放的资源。
|
2026-10-08 16:08:52 +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
|
2c36970d91
|
fix(4.0): 插件运行时的发现、setup 失败、熔断与状态修复
- 非 UTF-8 的 plugin.toml、pip 插件顶层导入失败记为发现错误,不再使启动失败
- setup 失败或超时后调用 teardown,释放已创建的任务与连接
- 事件订阅成功时清零熔断计数,只按连续失败熔断
- 关闭插件后清除旧的失败记录,状态显示为 disabled
- 熔断禁用只作用于触发熔断的实例,不影响重新加载后的新实例
|
2026-10-08 16:04:47 +02:00 |
|
Estrella Pan
|
83527c342b
|
fix(4.0): 安装器统一校验插件 id,卸载只删除本类安装器装入的目录
LLM 安装器此前不校验 id,DELETE /llm/providers/.. 会删除整个 config 目录,
local 会删除本地插件源码,通用插件的 id 会删除正在运行的通用插件。
id 校验与卸载归属检查移到 SignedCatalogInstaller,两类安装器共用。
|
2026-10-08 16:04:47 +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
|
3aff767c99
|
ci(4.0-P7): CI 运行示例插件测试,release 附带 SDK 轮子与插件作者 skill
- test 作业新增示例插件步骤
- release 作业构建 autobangumi-sdk 轮子并压缩 skills/autobangumi-plugin,随 beta 与稳定版一起上传
- 新增 skills/autobangumi-plugin:插件作者 agent skill
- beta tag 原本就创建预发布 release,分类脚本与 Docker 标签不变,新增测试固定该行为
|
2026-10-08 14:51:00 +02:00 |
|
Estrella Pan
|
a1adf237b8
|
feat(4.0-P7): 新增 5 个示例插件,逐个运行契约与行为测试
- webhook-on-event、custom-rss-site、template-rename、nfo-writer、ntfy-notifier
- scripts/test_example_plugins.sh 对每个示例运行 ab-plugin validate 与自带测试
- 宿主侧测试把全部示例载入 PluginManager,断言 Provider 与钩子已登记
- NotifierContract 发现 ntfy 示例的中文标题请求头缺陷,已改用 bytes 请求头
|
2026-10-08 14:50:59 +02:00 |
|
Estrella Pan
|
2d524fd13d
|
refactor(4.0-P7): 移除 Bark token 与 WeCom chat_id 旧字段别名,v3 迁移器改写为新字段
渠道不再读取旧字段。迁移器把 Bark 的 token 移到 device_key,WeCom 的 chat_id 移到 webhook_url,新字段已有值时丢弃旧值。
|
2026-10-08 14:23:12 +02:00 |
|
Estrella Pan
|
ab9801b63a
|
feat(4.0-P7): 签名目录来源:LLM 安装器泛化为通用插件安装器
- SignedCatalogInstaller 提供目录 / 插件包验签、sha256、防 zip-slip 与落盘;PluginInstaller 从 plugins tag 安装 plugin.toml 插件,LLM 安装器改为其子类,行为不变
- 加载器新增 catalog 来源(builtin > catalog > local > pip),视为已签名
- 新增 GET /plugins/catalog、POST /plugins/{id}/install、DELETE /plugins/{id};安装前拒绝保留 id、非法 id 与内置同名,卸载只删除安装器装入的目录
- scripts/build_plugin_catalog.py 生成并签名 catalog.json
|
2026-10-08 14:23:12 +02:00 |
|
Estrella Pan
|
decc95481a
|
feat(4.0-P7): 插件 dev_mode 文件监听,新增 PluginManager.reload
- plugins.dev_mode 开启后每秒比较本地插件目录的文件指纹,变化时重新加载该插件,包括上次加载失败的
- PluginManager.reload(id) 重新发现并重载单个插件,忽略配置快照
|
2026-10-08 14:23:06 +02:00 |
|
Estrella Pan
|
3179c971f5
|
feat(4.0-P7): ab_sdk 独立打包为 autobangumi-sdk,新增 ab-plugin 命令行与四个契约测试套件
- backend/sdk/pyproject.toml 构建 autobangumi-sdk 轮子(版本取 SDK_VERSION),后端 dev 组可编辑安装,uv run ab-plugin 可用
- 清单解析移入 ab_sdk.manifest(宿主与命令行共用),保留 id 增加 local,新增 check() 与 native_files()
- ab-plugin new / validate / pack / dev:骨架(rename / notifier / search)、校验、确定性打包、链接到本地插件目录并写入 dev_mode
- ab_sdk.testing 新增 DownloaderContract、RenameStrategyContract、NotifierContract、SearchSiteContract;内置下载器、重命名方式、通知渠道与默认搜索站点通过
|
2026-10-08 14:23:06 +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
|
7af2c781aa
|
fix(4.0-P2.5): 部分更新规则时保持原下载器实例,编辑器打开时才请求实例列表
- update_rule 在请求未带 downloader_id 时沿用规则原来的实例,不再按默认实例重算保存目录
- 下载器设置的实例行改用 ab-button
- 规则编辑与添加订阅在每次打开时请求实例列表(组件常驻,创建时请求会拿到旧列表)
|
2026-10-08 12:45:22 +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
|
d0e357a603
|
feat(4.0-P2.5): WebUI 管理多个下载器实例,规则与订阅可选下载器,种子列表标注实例
- 下载器设置列出所有实例:添加、编辑、删除、设为默认,类型下拉框含插件下载器
- 规则编辑与添加订阅新增下载器选择(留空跟随默认实例,只有一个实例时不显示)
- 下载器页与种子列表在多实例时标出种子所在实例,批量暂停 / 恢复 / 删除按实例分别请求
- 插件卡片保存后只刷新 plugins.enabled / options,不再覆盖未保存的实例与 slots 修改
- 添加订阅时保存 downloader_id
|
2026-10-08 12:37:06 +02:00 |
|
Estrella Pan
|
dd505d67ae
|
feat(4.0-P2.5): 下载操作按实例路由,重命名逐实例运行,不可用实例跳过并通知
- DownloadClient(instance_id) 按实例缓存客户端,凭据闩锁按实例隔离;DownloaderPool 在一次操作内惰性进入多个实例
- 新种子投递到规则的实例,规则未指定时用订阅的,再退回默认实例;种子行记录实际实例
- 规则 / 订阅 / 电影的 downloader_id 为空表示跟随默认实例(修改未发布的迁移 v26)
- rename_all 逐实例重命名,事件带真实 downloader_id;版本替换事务按实例过滤;不可用实例只在首次不可用时发 DownloaderUnavailableEvent
- 删除规则按种子所在的各实例删除;规则换实例时旧种子留在原位置
- /downloader/torrents 汇总所有实例并标注实例,暂停 / 恢复 / 删除 / 打标按 downloader_id 路由,新增 /downloader/instances
|
2026-10-08 12:29:51 +02:00 |
|
Estrella Pan
|
e442d35c76
|
feat(4.0-P2.5): 下载器改为 plugins.instances 实例,slots 选择 Provider,新增 3.3 配置迁移器
- 运行时模型移除 downloader 配置节:下载器是 plugins.instances 中的实例(id / point / provider / options),plugins.slots.downloader 指向默认实例;Config.downloader 改为只读视图
- 重命名方式、文件分类、版本冲突策略按 plugins.slots 选择,未登记时退回 none / default / hold;冲突策略改为 core 的 hold / replace 两个 Provider,ConflictRequest 删除 configured,ab_sdk 升至 0.5.0
- module/update/v4.py:迁移 downloader、rename_method(normal 改为 none)、revision_conflict_policy;先备份为 config.json.v3.bak,失败时恢复备份并拒绝启动;在 Settings 读写配置前运行
- module.update 包初始化不再 import 子模块,避免 module.conf 引用迁移器时循环 import
- AB_DOWNLOADER_* 等环境变量与设置向导写入默认实例
- 数据库迁移 v26:bangumi / movie / rssitem / torrent 增加 downloader_id,存量行为 default
- WebUI:下载器设置编辑默认实例,重命名方式与版本冲突策略绑定 plugins.slots
|
2026-10-08 12:07:53 +02:00 |
|
Estrella Pan
|
d51e77c37f
|
feat(4.0-P4): 内置插件 media-server-refresh 在整理完成后刷新 Jellyfin / Emby / Plex 媒体库
订阅 torrent.organized(含重命名方式为 none 的种子),等待 delay 秒把期间的
事件合并成一次刷新请求。未填写服务器地址或 API Key 时不做任何事,因此与
另一份 P4 实现相同,内置默认启用。
|
2026-10-08 11:32:38 +02:00 |
|
Estrella Pan
|
2b505e07bd
|
refactor(4.0-P4): 删除无生产调用方的 renamer / 数据库方法与未使用的 season_offset 参数
- Renamer.rename_file / _rename_media_file、_lookup_offsets / _normalize_path:
生产路径只走 rename() 与 _batch_lookup_offsets,相关测试改为经它们驱动
- BangumiDatabase.match_by_save_path、TorrentDatabase.search_by_qb_hash、
RenameOperationDatabase.release_replacement_lease:无调用方;租约随
set_state_claimed 的同一条 UPDATE 释放,已在其文档说明
- season_offset 在重命名链路中逐层传递却从未使用(季度偏移已体现在
保存路径的 Season 文件夹),从 gen_path 起整条链路与偏移查询结果中移除
- vulture 白名单移除上述待处理项,补登 rename / hardlink 内置插件入口
(此前 CI 的 vulture 检查会失败)
|
2026-10-08 11:30:27 +02:00 |
|