Commit Graph

86 Commits

Author SHA1 Message Date
jxxghp
02686ed674 feat(search): merge music artists into person search 2026-09-10 09:02:17 +08:00
jxxghp
53f7012b6b feat(music): add AMLL TTML lyrics source 2026-09-09 23:53:30 +08:00
jxxghp
17eaf47c34 refactor(music)!: remove Musixmatch and expose lyrics plugin types
BREAKING CHANGE: remove the Musixmatch module and settings without migration. Lyrics providers can use the public music candidate SDK and existing plugin module hook.
2026-09-09 23:04:20 +08:00
ranzhigg
f10af54404 fix(plugin-market): share index request limits 2026-09-09 07:48:40 +08:00
jxxghp
d0c894f5eb fix(transfer): close durable error recovery loop 2026-09-08 22:38:59 +08:00
thsrite
d04b721f84 feat(mediaserver): 新增 MediaVault 自建媒体库模块
通过 MediaVault 管理端口的原生接口接入自建媒体库,凭据为管理面板的长效 API Key:

- 媒体库列表、条目分页遍历、条目详情与总数
- 按标题/年份/媒体身份判断电影与剧集存在性,季集齐全度与季集条目 ID
- 数量统计、最近入库、继续观看、封面与背景图直链、播放地址
- 入库后按目标路径命中媒体库并排队后台扫描,未命中时回退全库扫描
- 用 MediaVault 账号完成 MoviePilot 用户认证

MediaVault 无音乐库也不外发 Webhook,get_music 与 webhook_parser 不实现;
图片直链自带 API Key,无需 mediaserver_image_cookies。

同时把 mediavault 接入 mediaserver-operation Agent Skill 的 provider 清单。
2026-09-07 13:49:10 +08:00
InfinityPacer
b8fd1b9958 修复非模块组件配置变更未触发热重载 (#6569)
* fix(event): bind config reload lifecycle owners

* chore(architecture): update config reload dependency baseline

* fix(event): preserve config resolver type contracts
2026-09-04 03:43:49 +08:00
InfinityPacer
43af5b5282 fix(module): bind config reload to module manager (#6568) 2026-09-04 01:34:29 +08:00
jxxghp
71147c1d96 feat(classification): support multi-source media rules 2026-09-03 11:51:18 +08:00
Aqr-K
d7c5955031 fix(plugin): 插件自有数据库释放与销毁全程容错,并修正建表去重与 schema 命名
release/destroy 统一经 _close_handle 先清线程局部会话再 dispose,两步失败都
只记日志:单个插件的连接池故障不再让 close_database 跳过宿主同步与异步引擎的
释放,release_all_databases 也逐插件隔离。按模型建表对 __table__ 去重,单表
继承的父子类一并声明时不再对同一张表建两次。

卸载编排先删插件数据、后停插件,停机钩子里的 get_database() 会把刚销毁的库
重新建出来:注册表记下已销毁的插件标识,其后的 release 改为再次销毁并清除
标记,ensure 则撤销标记,宿主编排代码不动。PostgreSQL schema 名在归一改写过
标识或超长时追加插件标识哈希并截到 63 字节,My-Plugin、My_Plugin 与
my_plugin 不再折叠到同一个 schema 而在卸载时互相 DROP。

start 的失败分支释放已经建立、却进不了运行态的句柄,整体停止把只登记在
_classes 里的插件一并释放。声明的迁移目录不存在时在建句柄之前抛
FileNotFoundError,不再留下空库;SQLite 迁移 URL 改由引擎渲染;
_get_sqlite_engine 的连接参数下沉到实际使用它的异步分支。
2026-09-02 02:14:19 -04:00
Aqr-K
f4c5549a37 feat(plugin): 接线插件自有数据库生命周期
新增 app/runtime/extensions/plugin/database.py 运行时端口(零 app.db 依赖),
PluginLifecycle.start 在 init_plugin 之后建库、_finalize 只释放不销毁;
PluginConfigStore.delete_data 在删除宿主业务数据后销毁插件自有库;
组合根 app/startup/initializers/plugins.py 把端口装配到 db 层实现。
覆盖 start→ensure / stop·reload·remove→release / delete_data→destroy
三条接线与失败策略。
2026-09-02 02:14:19 -04:00
jxxghp
0c05956814 refactor(architecture): enforce module naming policy 2026-08-29 22:17:17 +08:00
jxxghp
c1f50f6d3f refactor(runtime): unify paired decision flows 2026-08-29 19:58:33 +08:00
jxxghp
2116ccecf9 refactor(startup): enforce symmetric lifecycle cleanup 2026-08-29 18:59:14 +08:00
jxxghp
808f2439ef refactor(startup): add provider reset contracts 2026-08-29 17:57:01 +08:00
InfinityPacer
dba4ddc168 fix(plugin): 增加插件市场元数据边界 (#6495)
* fix(plugin): bound market metadata inputs

* test(architecture): sync plugin metadata baseline

* fix(plugin): narrow validated metadata identifiers

* test(architecture): sync coverage baseline
2026-08-29 15:23:33 +08:00
jxxghp
fa40f29dfd refactor(plugin): converge runtime ownership and compatibility 2026-08-29 12:55:52 +08:00
InfinityPacer
92066dfad4 feat: 完成插件原生依赖重启激活闭环 (#6491)
* feat(plugins): track native dependency activation

* fix(plugins): finalize native restart state lifecycle
2026-08-29 02:10:50 +08:00
InfinityPacer
513d867dd6 fix(plugin): suppress delayed install reloads (#6484) 2026-08-27 23:28:09 +08:00
jxxghp
988b425510 fix(plugin): preserve market package generation 2026-08-27 22:46:03 +08:00
jxxghp
f134e068e7 refactor: normalize capability module paths 2026-08-27 22:20:38 +08:00
InfinityPacer
011ebfbe5f fix: 协调本地插件与绑定仓库的版本选择 (#6482)
* fix(plugin): reconcile local and bound payload versions

* fix(plugin): preserve bound source on updates

* fix(plugin): normalize source reconciliation ids

* fix(plugin): defer local payload activation

* fix(plugin): centralize startup source admission

* fix(plugin): derive sync mode from admitted source
2026-08-27 20:03:30 +08:00
jxxghp
23bff6b2bb refactor: add durable transfer planning checkpoints 2026-08-27 13:16:33 +08:00
InfinityPacer
3b7f8c357d fix: 增加插件 V3t 运行时兼容门禁 (#6475)
* fix(plugin): enforce declared runtime compatibility

* chore(ci): record plugin runtime compatibility edges

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-08-27 07:06:16 +08:00
InfinityPacer
627775c090 fix(plugin): 按绑定仓库保留更新候选 (#6474)
* fix(plugin): preserve repository update candidates

* chore(ci): sync architecture ratchet baselines

* chore(ci): align canonical coverage baseline

* chore(ci): align coverage ratchet baseline
2026-08-27 06:56:33 +08:00
InfinityPacer
7c81fb357f fix(plugin): 收敛市场安装与运行态错误处理 (#6470) 2026-08-26 18:00:49 +08:00
jxxghp
9dbe424c3d refactor(config): retire RuntimeSettingsCompat host usage 2026-08-26 15:55:21 +08:00
jxxghp
e02418bace feat(media): aggregate aliases from enabled metadata sources 2026-08-26 13:45:03 +08:00
InfinityPacer
71db425c07 feat(plugin): 建立可信来源准入与安装恢复 (#6462) 2026-08-26 07:52:00 +08:00
jxxghp
574c50586e feat(music): 完善歌词与专辑目录整理 2026-08-25 21:02:26 +08:00
InfinityPacer
adbeff95d0 fix(plugin): serialize dynamic route projection (#6441) 2026-08-25 06:40:43 +08:00
InfinityPacer
326b5cf3ad feat: 新增 Python 3.14t 自由线程镜像 (#6434)
* fix(resource): select free-threaded extension ABI

* chore(deps): require moviepilot-rust 0.2.9

* perf: add free-threaded runtime comparison

* feat: add free-threaded runtime profile

* chore(deps): require moviepilot-rust 0.3.0

* test: isolate system endpoint import graph

* fix(docker): preserve runtime profile during recovery

* feat(runtime): expose active GIL state

* feat(plugin): log GIL fallback attribution

* test: refresh runtime observability dependency baseline

* fix(plugin): validate the active uv runtime profile

* test(runtime): expand free-threaded benchmark evidence

* docs(runtime): define v3t governance gates

* test(runtime): separate rust benchmark modes

* docs: sync free-threaded architecture baseline

* perf: add PostgreSQL driver comparison

* docs(runtime): record final free-threaded evidence

* fix(runtime): converge dual-profile dependency verification

* fix(runtime): scope Python 3.14 warning filter

* fix(runtime): match actual oss2 syntax warning

* docs(runtime): refresh free-threaded benchmark evidence

* test(architecture): refresh runtime dependency baseline

* ci: skip unused Trivy Java database

* build: exclude local verification artifacts

* docs(runtime): refresh PostgreSQL driver benchmarks

* docs(runtime): record plugin restore acceptance

* docs(runtime): record amd64 candidate acceptance

* ci: pin beta image publisher action

* test(architecture): merge runtime dependency baseline

* feat(runtime): expose Python GIL status

* docs(runtime): document Python runtime status fields
2026-08-24 17:48:14 +08:00
jxxghp
009631b8ee refactor: unify capability shutdown convergence 2026-08-24 13:48:11 +08:00
jxxghp
52fd495d38 refactor: normalize downloader file contracts 2026-08-24 02:10:04 +08:00
jxxghp
83318b12c0 refactor: enforce module fanout contracts 2026-08-24 02:02:01 +08:00
jxxghp
19653b1437 refactor: type recognition module contracts 2026-08-24 01:58:36 +08:00
jxxghp
3e4e182ff9 refactor: type routed module contracts 2026-08-24 01:55:27 +08:00
jxxghp
9712803b8d refactor: type music module contracts 2026-08-24 01:50:01 +08:00
jxxghp
f655051c85 refactor: unify tmdb query contracts 2026-08-24 01:47:47 +08:00
jxxghp
488b3667bb refactor: unify anilist module contracts 2026-08-24 01:45:49 +08:00
jxxghp
903d1d3c4d refactor: unify bangumi module contracts 2026-08-24 01:44:06 +08:00
jxxghp
ce27732064 refactor: unify douban module contracts 2026-08-24 01:42:34 +08:00
jxxghp
8f6456be6c refactor: unify discovery module contracts 2026-08-24 01:40:39 +08:00
jxxghp
c41492e56c refactor: type host lookup contracts 2026-08-24 01:38:27 +08:00
jxxghp
bb80c10a0b refactor: type storage value contracts 2026-08-24 01:35:42 +08:00
jxxghp
e359bbace9 refactor: type media server contracts 2026-08-24 01:33:04 +08:00
jxxghp
bc8e4e75e3 refactor: unify media capability contracts 2026-08-24 01:15:09 +08:00
jxxghp
14e70208a2 refactor: type downloader action contracts 2026-08-24 01:11:47 +08:00
jxxghp
f37407d0f3 fix: merge downloader tracker mappings 2026-08-24 01:08:45 +08:00
jxxghp
b0c4809d1a refactor: type high-value module contracts 2026-08-24 01:03:57 +08:00