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
|
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
|
fba05db43e
|
docs(4.0-P7): 记录 P7 第二部分的实施调整,P7 标记为已完成,更新 CHANGELOG
|
2026-10-08 14:51:00 +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
|
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
|
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
|
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
|
e4a7fc8483
|
docs(4.0-P2.5): 记录 P2.5 第一部分的实施调整,下载器与番剧管理文档改为 plugins.instances / slots
|
2026-10-08 12:07:59 +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
|
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
|
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 |
|
Estrella Pan
|
e1e6c0c849
|
fix(4.0-P4): 插件配置的 field_validator 报错返回 422 而不是 500
ValidationError.errors() 的 ctx 里带 ValueError 对象,无法 JSON 序列化,
保存配置时校验失败(如 hardlink 的路径必须为绝对路径)会变成 500。
|
2026-10-08 11:26:42 +02:00 |
|
Estrella Pan
|
422def2bf9
|
fix(4.0-P4): hardlink 认领未记录的自有文件、不覆盖用户替换的文件、并发放置互不干扰
KV 记录改为 [源文件身份, 目标身份]:目标是源的链接或 copy2 副本时视为已完成并补写记录;版本升级只替换目标身份与记录一致的文件。临时文件名每次不同,失败时删除。
|
2026-10-08 11:14:50 +02:00 |
|
Estrella Pan
|
8c12cd30dd
|
fix(4.0-P4): 一轮重命名只解析一次策略,轮中停用插件不再给未改名的种子打 ab:renamed
rename() 把解析出的 ProviderEntry 传给 gen_path / rename_subtitles / rename_collection,打标签与生成文件名始终来自同一个策略。
|
2026-10-08 11:14:49 +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 |
|
Estrella Pan
|
41e578d1c8
|
feat(4.0-P4): 内置插件 hardlink 把整理好的文件链接到媒体库
- 订阅 torrent.organized,按 path_map(最长前缀、按下载器)把下载器路径换成本地路径,链接到 library_root 下的同一相对路径
- 跨文件系统时按 cross_device 复制 / 软链接 / 跳过并通知
- 目标被占用且非本插件创建时跳过并通知(每个种子一条);本插件为同一集创建过的链接在版本升级后原子替换;重复投递不重复操作
- POST /api/v1/plugins/hardlink/backfill 按需补链已有文件并返回计数
- 默认停用;删除种子不会删除媒体库中的链接
|
2026-10-08 10:53:02 +02:00 |
|
Estrella Pan
|
595d3746eb
|
feat(4.0-P4): 插件可通知事件进入通知中心,@subscribe 支持超时,清单增加 default_enabled
- PluginBus 收到插件发布的 SystemEvent 时经 NotificationManager.send_event 投递(通知中心 → 事件总线 → 外部渠道)
- @subscribe(kind, timeout=...) 覆盖总线默认 30 秒的处理超时
- plugin.toml 的 default_enabled = false 让内置插件默认停用
|
2026-10-08 10:51:33 +02:00 |
|
Estrella Pan
|
d645f1c8f6
|
fix(4.0-P4): 未设置 runner 时插件重命名策略抛异常不再触发 UnboundLocalError
|
2026-10-08 10:41:53 +02:00 |
|
Estrella Pan
|
a0ebfff0e1
|
feat(4.0-P4): 内置插件 rename 提供 pn / advance / template 重命名方式
- pn / advance 从 core 移入内置插件 rename(默认启用),输出与 3.x 逐字节一致;
宿主只保留 none,插件停用时按 none 处理。
- template:Jinja2 沙箱模板(StrictUndefined + pad 过滤器)渲染文件名主体,
字幕自动追加语言与扩展名。保存配置时编译并试渲染示例,不合法返回 422;
运行时渲染失败、结果为空或含路径分隔符时抛出 RenameSkipped,文件保留原名并
通知,绝不退回 pn。
- 设置页重命名方式下拉框并入插件提供的方式;通知中心支持 rename_skipped。
- 测试环境默认登记内置 rename 插件,与生产默认启用一致。
|
2026-10-08 10:37:58 +02:00 |
|
Estrella Pan
|
e0b8939ec5
|
feat(4.0-P4): 重命名经 rename_strategy 解析,media_files / conflict_policy 改为 core Provider,发布整理事件
- 重命名方式按 rename_method 从注册表解析;未登记时记录一次日志并按 none 处理,
不再给未改名的种子打 ab:renamed 标签。字幕改用 RenameInput.kind,不再拼 subtitle_*。
- 插件策略经 runner 同步调用(异常与无效返回值计入熔断);策略抛出 RenameSkipped
或失败时文件保留原名、种子不打标签,每个种子同一原因只发一条 rename_skipped 通知。
- check_files 经 media_files 分类;版本冲突经 conflict_policy 判定,core 实现与
3.x 的原因文案一致。
- 每轮结束发布 file.renamed;种子整理完成(含 none)发布 torrent.organized。
- pn / advance 暂以 core 登记,下一步移入内置插件 rename。
|
2026-10-08 10:32:15 +02:00 |
|
Estrella Pan
|
cf8135874d
|
feat(4.0-P4): ab_sdk 增加 organize 契约与整理事件
ab_sdk.rename:RenameStrategy / RenameInput(kind 区分正片与字幕)/ RenameSkipped、
MediaFiles、ConflictPolicy 及其冻结快照,pad 补零格式化;points 增加
rename_strategy / media_files / conflict_policy;ab_sdk.events 增加 FileRenamed、
TorrentOrganized 与 RenameSkippedEvent。SDK 升至 0.4.0。
|
2026-10-08 10:23:31 +02:00 |
|
Estrella Pan
|
659d0e0501
|
refactor(4.0-P4): 拆分 renamer —— 命名策略移出 gen_path,revision 替换事务移入 revision_saga
纯搬移,不改行为:pn / advance / subtitle_* 命名移到 manager/rename_strategies.py,
普通重命名的一次性执行与 V1 → V2 替换 saga 移到 manager/revision_saga.py
(RevisionSaga,由 Renamer 继承)。
|
2026-10-08 10:21:04 +02:00 |
|