51 Commits

Author SHA1 Message Date
jxxghp
be65e047b0 fix(plugin): support mirrors for Release asset downloads (#7224) 2026-10-27 22:21:48 +08:00
DDSRem
2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
InfinityPacer
0238351071 fix(plugin): v3t 下不再隐藏不兼容插件,改为提示不支持 (#6760)
* feat(plugin): surface v3t incompatibility instead of hiding plugins

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* chore(architecture): refresh dependency baseline after plugin gate split

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(plugin): keep runtime-incompatible plugins out of startup sync

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(plugin): annotate runtime compatibility ports without bare dict

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 00:35:20 +08:00
Aqr-K
5c01cdddb3 fix(plugin): 插件安装改为暂存后原子换入,避免下载失败删掉已装插件 (#6678) 2026-09-14 07:00:50 +08:00
jxxghp
c60949ffff Merge branch 'v3' into feat/plugin-instance-config-logging 2026-09-13 14:30:42 +08:00
jxxghp
8072b7d78f Refactor application architecture and compatibility boundaries 2026-09-13 12:53:00 +08:00
Aqr-K
4dbb8b8204 feat(plugin): 插件配置与实例描述符迁入独立表
插件配置此前寄存在 systemconfig 的 plugin.<实例ID> 单键下,实例描述符则整份挤在
PluginInstances 这一个 JSON 键里,两者都不成立:

- plugin.<ID> 是裸字符串 key,而仓库规则本身禁止用裸字符串做 SystemConfig key,
  只允许先定义 SystemConfigKey 枚举项;插件 ID 由用户安装决定,永远枚举不出常量。
  条目数随安装量增长,混在系统设置表里会把主程序自己的设置项淹掉。
- 那个键存的其实是实例 ID,表里没有任何一列说得出它属于哪个插件,想列出某个插件
  的全部实例配置只能靠字符串前缀去猜。
- 实例描述符整份读出再整份写回,改一个分身要重写全部分身。

改为 plugininstance 一实例一行:instance_id 与 source_plugin_id 构成身份,本体与
分身由两者是否相等派生而不设模式列——模式列会是这个等式的冗余副本,两者一旦失步
同一行就会在不同读取口被判成不同角色。展示信息与业务参数同存一行,属于同一个
生命周期,分表只会让建分身、删分身退化成两张表之间的协调问题。

读写路由落在 SystemConfigOper.get/set/delete,而不是在各个调用方各改一处:第三方
插件可能直接用 self.systemconfig.get("plugin.xxx") 读写自己的配置,只改
PluginConfigStore 与 _PluginBase.get_config/update_config 必然漏掉它们。路由只做
前缀识别,插入、更新与空本体行回收都委托 PluginInstanceOper,不在配置层重抄一遍。

PluginInstances 旧键迁移后不删,留作回滚依据,并以
SystemConfigKey.PluginInstancesImported 标志防止重复导入;判据不能是「表当前为空」,
否则用户把分身全部删光后,下次启动会把它们整批导回来。

迁移链:b2d4f6a8c1e3 -> 281965691a20(3.0.34 建表并搬描述符)
-> c4e1a7b9d2f6(3.0.35 加 config_data 并搬 plugin.* 配置)。

依赖基线与启动模块数随两个新模块重算,架构文档与数据库技能表目录同步登记新表。
2026-09-12 17:39:36 -04:00
jxxghp
d8fd39d6ea test: publish install readiness atomically and sync quality metrics 2026-09-09 23:53:30 +08:00
jxxghp
0c05956814 refactor(architecture): enforce module naming policy 2026-08-29 22:17:17 +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
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
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
InfinityPacer
71db425c07 feat(plugin): 建立可信来源准入与安装恢复 (#6462) 2026-08-26 07:52:00 +08:00
InfinityPacer
34f59bc9f4 fix(plugin): filter declared uv dependency exclusions (#6437) 2026-08-24 20:06:57 +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
10582277e2 refactor: unify plugin file operation cancellation 2026-08-24 03:17:07 +08:00
jxxghp
579226612a refactor: own plugin release requests 2026-08-24 00:41:09 +08:00
InfinityPacer
3fa8ddf63a fix(plugin): close cancellation compensation gaps 2026-08-23 14:47:17 +08:00
InfinityPacer
14ec4c6eae test(plugin): verify real cancellation cleanup 2026-08-23 14:26:43 +08:00
InfinityPacer
0378eabb8f fix(plugin): make installation lifecycle cancellable 2026-08-23 14:26:42 +08:00
InfinityPacer
2d80f9f04f fix(plugins): preserve dependency manifest sources (#6370) 2026-08-20 20:51:35 +08:00
InfinityPacer
23f5d59c74 feat: 使用 uv 锁定主程序依赖并强化插件恢复边界 (#6364) 2026-08-20 12:17:19 +08:00
jxxghp
5128ae9e1e refactor: 推进后端分层架构治理 2026-08-18 00:29:14 +08:00
Aqr-K
8a11214a43 refactor(db): 修复异步连接池无界增长,并完成 SQLAlchemy 2.0 迁移与分层归位 (#6320) 2026-08-15 06:58:38 +08:00
jxxghp
369d7d6448 refactor: reorganize backend module boundaries 2026-08-14 19:53:33 +08:00
jxxghp
7b3444c366 refactor backend module architecture 2026-08-14 15:45:38 +08:00
jxxghp
ca32922a7f refactor(media): unify media identity and chain responsibilities 2026-08-12 18:31:09 +08:00
jxxghp
4570a7b74a feat: 修复插件市场空白和API缓存 (#6253) 2026-08-08 21:40:06 +08:00
jxxghp
1d708870c9 fix: avoid blocking plugins on pre-existing pip errors 2026-07-21 08:25:03 +08:00
InfinityPacer
770201c48c fix(plugin): exclude build dependencies from runtime copies (#6096) 2026-07-11 18:15:00 +08:00
qqcomeup
099ef7d5bf fix: avoid blocking plugin release history refresh (#6084) 2026-07-08 12:51:24 +08:00
InfinityPacer
ab5995a609 fix(security): contain plugin zip extraction (#6051) 2026-07-05 09:26:09 +08:00
jxxghp
c1cefa3f40 Rename package installer helper to package 2026-06-23 13:45:55 +08:00
InfinityPacer
0c53fb86fd feat(deps): add uv-backed package installer (#5987)
* feat(deps): add uv-backed package installer

* feat(deps): support package cache root
2026-06-23 13:36:15 +08:00
jxxghp
4d87bf8d53 fix(plugin): normalize market labels 2026-06-19 08:59:50 +08:00
InfinityPacer
84eee40e81 fix(plugin): optimize release cache loading (#5966) 2026-06-18 18:52:28 +08:00
InfinityPacer
69ed70cc66 feat(plugin): support installing release versions (#5964) 2026-06-18 15:47:07 +08:00
InfinityPacer
51c2843dd0 fix(plugin): clean release fallback before retry (#5930) 2026-06-12 19:08:18 +08:00
InfinityPacer
10dcb3727e fix(plugin): fall back when release package is unavailable (#5929) 2026-06-12 13:26:35 +08:00
InfinityPacer
791f1fe4ac test: 共享测试 harness 入 app/testing(网络守卫 + 引导)并统一 sys.modules 打桩原语 (#5888) 2026-06-03 18:34:20 +08:00
jxxghp
0e5c592862 refactor: centralize MoviePilot server helper 2026-05-27 12:56:45 +08:00
jxxghp
b7f6ee12ee fix: 强制刷新插件市场绕过远端缓存 2026-05-24 20:28:45 +08:00
jxxghp
ee9eced2f1 fix: avoid blocking event loop during plugin install 2026-05-21 09:16:42 +08:00
jxxghp
c52ccaf75f feat: add plugin system version compatibility checks 2026-05-20 19:55:44 +08:00
jxxghp
f0bc1bd681 fix: prevent storage operations in preview mode and add tests for transfer preview logic 2026-05-13 13:39:57 +08:00
jxxghp
ac090af606 feat(plugin): enhance dependency management by protecting main program dependencies and refining runtime constraints 2026-05-12 12:38:17 +08:00
jxxghp
1b2433f7c2 feat: implement runtime dependency checks and recovery for plugin installations 2026-05-11 08:54:34 +08:00
InfinityPacer
a59afe4cc9 fix(plugin): avoid clearing runtime modules after dependency install 2026-05-08 18:38:09 +08:00