jxxghp
ae1187bd3f
feat(module): add dynamic module switches and catalogs
2026-09-11 10:31:53 +08:00
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