Commit Graph

187 Commits

Author SHA1 Message Date
jxxghp
d32d17568a fix(runtime): apply configuration changes without restart 2026-09-11 00:12:05 +08:00
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
jxxghp
d97906f0a9 fix(transfer): clarify execution conflict errors 2026-09-08 22:01:55 +08:00
jxxghp
f9f2601144 fix(transfer): deduplicate recovery failures and system alerts 2026-09-08 14:28:40 +08:00
yanjunpu
1f728996eb feat(music): add release region and script preferences 2026-09-08 05:20:02 +08:00
jxxghp
db7faef202 refactor(config): use field policies for setting updates 2026-09-07 18:25:59 +08:00
thsrite
4a66d43366 fix(types): 补齐模块基类注解,消除新模块的类型门禁失败
Architecture Contract Gate 的 mypy ratchet 报出新模块两条错误,根因都在基类:

- ConfigReloadMixin.__init_subclass__ 缺注解,导致所有继承它的模块在类型化
  上下文中被判 no-untyped-call
- _ModuleBase.init_setting 的返回注解为 Tuple[...],与其文档说明的
  「不实现该方法或返回 None 代表不使用开关」矛盾,子类如实声明 Optional
  就会被判 override 不兼容

两处均为纯注解修正,无行为变化。全量 mypy 错误由 9,496 降至 9,441(净减 55,
未新增任何错误),出错文件 514 → 513;同步固化 mypy 低水位与架构清单中的计数。
2026-09-07 14:33:01 +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
jxxghp
44c41ec476 fix(config): separate auto-update and dev tracking settings for clarity 2026-09-07 13:35:52 +08:00
jxxghp
c56734a826 fix(docker): apply release updates before supervisor restart 2026-09-07 08:28:14 +08:00
jxxghp
d5605bb0a1 fix(scheduler): gate release update checks 2026-09-06 21:50:40 +08:00
jxxghp
e6f531d47f refactor: manage Docker processes with supervisor 2026-09-06 21:21:06 +08:00
jxxghp
429ceca8c1 Merge pull request #6574 from dogodefi/codex/apev2-cover-art 2026-09-05 07:53:37 +08:00
jxxghp
ff01449cdd fix(api): humanize user-facing error messages 2026-09-04 17:55:56 +08:00
yanjunpu
16e5a161b4 feat(music): support APE metadata and cover art 2026-09-04 05:42:56 +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
jxxghp
3371925d55 fix: restore mypy ratchet after Windows updates 2026-09-02 20:44:57 +08:00
developer-wlj
089b007a00 refactor(state): 添加Windows重启逻辑
- 将Windows重启逻辑封装为_staticmethod
- 实现了独立的命令行执行方法cmd
- 添加了可执行文件存在性检查
- 统一了重启操作的返回格式
- 改进了错误处理和消息提示机制
2026-09-02 20:07:56 +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
658fa473d8 feat: support staged site resource updates 2026-09-01 23:49:53 +08:00
jxxghp
c319cb6a83 feat: add configurable wallpaper settings 2026-08-31 09:18:06 +08:00
jxxghp
9146c75941 feat(auth): add first-run administrator initialization 2026-08-30 09:05:23 +08:00
jxxghp
0c05956814 refactor(architecture): enforce module naming policy 2026-08-29 22:17:17 +08:00
jxxghp
fb5d7fc593 refactor(torrent): group application capability 2026-08-29 21:28:18 +08:00
jxxghp
d3d007b1a4 fix(runtime): reopen shared thread pool per lifespan 2026-08-29 20:19:13 +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
6d8a4667ee refactor(runtime): clear capability callback type debt 2026-08-29 18:35:54 +08:00
jxxghp
95606801af refactor(startup): complete provider reset contracts 2026-08-29 18:33:01 +08:00
jxxghp
0d62822132 refactor(runtime): unify capability lifecycle state decisions 2026-08-29 18:31:44 +08:00
jxxghp
808f2439ef refactor(startup): add provider reset contracts 2026-08-29 17:57:01 +08:00
jxxghp
d2a860d89a refactor(startup): govern composition lifecycle ownership 2026-08-29 16:57:53 +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
dbdf7d0582 refactor(agent): narrow package compatibility surfaces 2026-08-29 14:29:42 +08:00
jxxghp
3a33da0b38 refactor(agent): split manager runtime owners 2026-08-29 14:26:12 +08:00
jxxghp
fa40f29dfd refactor(plugin): converge runtime ownership and compatibility 2026-08-29 12:55:52 +08:00
jxxghp
13fba96fd8 refactor(runtime): govern dependency module naming 2026-08-29 08:14:21 +08:00
jxxghp
7941fd921d refactor(chain): split download orchestration package 2026-08-29 06:41:15 +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
jxxghp
92e745fc97 refactor(architecture): split chain owners and close runtime boundaries 2026-08-28 22:26:19 +08:00
jxxghp
2fe39d856c refactor(architecture): invert application adapter boundaries 2026-08-28 18:45:47 +08:00
jxxghp
9bff18739d refactor(runtime): own lifecycle and adapter boundaries 2026-08-28 18:18:07 +08:00
jxxghp
7a10964526 refactor(subscription): close typed persistence boundary 2026-08-28 13:56:42 +08:00