jxxghp
2e578a69ee
fix(notification): prevent untyped message broadcasts
2026-09-20 11:32:40 +08:00
jxxghp
fc0101a64e
fix(imdb): handle null seasons response
2026-09-19 17:38:36 +08:00
HDDolby
4a22760bb4
Skip requests when userid invalid ( #6723 )
2026-09-18 10:35:58 +08:00
jxxghp
4e9a64c0f0
refactor(application): 按模块子目录统一文件命名
2026-09-15 23:57:06 +08:00
jxxghp
61b0ae951f
refactor(application): 拆分消息渠道权限
2026-09-15 23:57:06 +08:00
jxxghp
4a777f1410
fix: 补齐 Bangumi 客户端类型标注
2026-09-15 07:53:44 +08:00
jxxghp
ee6393974a
feat: 内置 Bangumi 数据与图片代理
2026-09-15 07:42:18 +08:00
jxxghp
53e0c6c5c0
fix(transmission): normalize parsed torrent year type
2026-09-14 21:11:05 +08:00
jxxghp
6d82f44fc8
fix(music): split core recognition and organization optimizations ( #6686 )
2026-09-14 13:04:58 +08:00
jxxghp
9724305a03
fix(imdb): handle null episode fields
2026-09-14 12:42:54 +08:00
jxxghp
c868faf0cf
fix(synologychat): skip unsupported command menu registration
2026-09-13 14:22:59 +08:00
jxxghp
8072b7d78f
Refactor application architecture and compatibility boundaries
2026-09-13 12:53:00 +08:00
jxxghp
990e3ac3ae
fix(module): enhance documentation for transfer plan checkpoint method parameters
2026-09-13 12:38:20 +08:00
jxxghp
765b185d42
fix(module): add preview parameter to transfer plan checkpoint method
2026-09-13 12:33:50 +08:00
jxxghp
5f050f35b6
fix(jellyfin): fallback when collection type is missing
2026-09-13 11:11:40 +08:00
jxxghp
4d4327e25a
fix(site): report unauthenticated userdata refresh failures
2026-09-12 21:19:58 +08:00
jxxghp
49cc9bc63c
fix(transfer): guide manual review recovery in logs
2026-09-12 12:03:14 +08:00
jxxghp
404a737047
feat(ugreen): 支持 9443 媒体库服务账号
2026-09-12 08:39:17 +08:00
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
thsrite
2b4ba9c927
fix(mediaserver): 翻页按总数收敛,剧集定位命中即返回
...
按代码审查意见再修两处,都与上一轮引入的关键字翻页有关:
- 末页恰好装满时仍会多请求一页。响应里已带可靠总数,改为累计条数达到总数即
结束,只有没有总数时才按页是否满额判断;那次多余请求一旦失败,会把完整结果
误报成服务不可达
- 按标题定位剧集先把所有页读完再检查匹配,第一页已命中的目标会因后续页请求
失败而返回不可达,比改动前更差;改为逐行检查、命中即返回,只有在命中前中断
才报告不可达
补 2 条回归,均已确认在修正前失败。
2026-09-10 17:59:08 +08:00
thsrite
963a80788e
fix(mediaserver): 翻页中途失败不再被当成查询结束
...
新增的关键字翻页逻辑只在第一页失败时返回 None,后续页面请求失败会让生成器
正常结束:get_movies 返回残缺列表、按标题定位剧集返回空串,等于把「连不上」
误报成「确定不在库中」,可能触发重复下载。
改为中途失败抛出私有异常并由调用方转成 None,恢复「连接失败返回 None、
未找到返回空结果」的区分;补 2 条回归,均已确认在修正前失败。
2026-09-10 17:35:27 +08:00
thsrite
429b0020be
fix(mediaserver): 修正 MediaVault 图片凭据、查询截断、剧集类型与刷新短路
...
代码审查在 v2 移植版上发现四处缺陷,同样存在于本分支已合入的模块:
- 图片地址把管理面板的长效 API Key 拼进查询参数。该地址会随接口响应交给浏览器
直接加载,等于把管理凭据下发到客户端,可被重放到 MediaVault 的全部管理接口。
MediaVault 的媒体库图片为免鉴权资源,去掉该参数即可
- get_movies 与按标题定位剧集只读关键字查询的第一页,命中数超过单页上限时排在
后面的目标会被误判为未入库;改为翻页直到取完
- 最新入库把 Series 条目标成电影,只有 Episode 被识别为电视剧;改为两者都映射为
电视剧,「季:集 - 分集名」副标题仍只给分集
- refresh_library_by_items 把生成器交给 all(),首个媒体库排队失败就会短路,同批
命中的其余媒体库收不到扫描任务;改为先全部发出请求再汇总
补 6 条回归测试;同时收紧测试替身:假 Api 改为复用真实的 image_url 实现,避免
自行拼装掩盖「图片地址不得携带凭据」这一约束。
2026-09-10 17:28:58 +08:00
jxxghp
554e7388b3
fix(music): keep shared search signatures compatible
2026-09-10 10:16:09 +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
jxxghp
4da22fc471
fix(tmdb): bound rate-limit retries and clear stale quota
2026-09-09 14:18:24 +08:00
jxxghp
7a1941ec39
fix(site): configure login and userdata pages from resources
2026-09-09 08:10:56 +08:00
jxxghp
bfda2ef797
fix(indexer): limit userdata schema fallbacks
2026-09-09 07:23:26 +08:00
yanjunpu
2e8664c1dc
fix(music): scope and rank manual search results
2026-09-09 03:57:20 +08:00
jxxghp
d0c894f5eb
fix(transfer): close durable error recovery loop
2026-09-08 22:38:59 +08:00
yanjunpu
abb51cda3f
fix(music): retain release group types in album matching
2026-09-08 22:16:46 +08:00
jxxghp
3331ba43cd
fix(transfer): settle missing library directory as planning rejection
2026-09-08 18:37:14 +08:00
yanjunpu
1f728996eb
feat(music): add release region and script preferences
2026-09-08 05:20:02 +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
6ae5b9d9f0
fix(transfer): preserve frozen source step identity
2026-09-07 12:20:44 +08:00
jxxghp
be41517520
fix: 防止音乐署名清理截断真实曲名
2026-09-06 04:55:08 +08:00
jxxghp
a01a941c11
fix: 对齐音乐备选来源匹配并校验录音版本证据
2026-09-06 04:06:00 +08:00
jxxghp
976cecce8f
fix: 对齐音乐候选识别和缓存匹配规则
2026-09-06 02:21:03 +08:00
jxxghp
fba0b6ae67
refactor: 统一音乐与影视的识别搜索匹配流程
2026-09-06 00:48:00 +08:00
jxxghp
e28f4a11cd
feat(update): add interactive channel upgrade flow
2026-09-05 21:35:30 +08:00
jxxghp
b4be185e44
fix(subscribe): tolerate partial site search failures
2026-09-05 20:03:09 +08:00
jxxghp
d07564e3cb
fix(notification): type DingTalk command hook config
2026-09-05 09:10:53 +08:00
jxxghp
3b3de01a54
fix(notification): skip unsupported DingTalk command registration
2026-09-05 09:02:41 +08:00
ranzhigg
08b5e9d34c
fix(plex): skip episodes with missing season or episode numbers
2026-09-04 07:51:22 +08:00
jxxghp
0528e531e3
fix(transfer): keep directory intercept intent stable
2026-09-03 16:14:58 +08:00
jxxghp
71147c1d96
feat(classification): support multi-source media rules
2026-09-03 11:51:18 +08:00
jxxghp
dd2a4b22e1
fix(imdb): handle null optional title fields
2026-09-02 22:59:07 +08:00