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 |
|
jxxghp
|
a329507137
|
fix(qbittorrent): verify temporary tag cleanup
|
2026-09-02 12:46:30 +08:00 |
|
jxxghp
|
8795e30c39
|
fix(indexer): keep music site category on rust parsing
|
2026-09-02 08:55:02 +08:00 |
|
jxxghp
|
6881ef42ec
|
fix(wallpaper): 修正绿联媒体类型判断
|
2026-09-01 20:58:23 +08:00 |
|
jxxghp
|
184cfc9c67
|
fix(wallpaper): 过滤非影视媒体库海报
|
2026-09-01 20:48:23 +08:00 |
|
jxxghp
|
e57288b5ea
|
refactor(subscribe): satisfy global governance gates
|
2026-09-01 17:09:55 +08:00 |
|
jxxghp
|
bab1d2862e
|
refactor(subscribe): govern fallback site pressure
|
2026-09-01 17:09:54 +08:00 |
|
Sebastian
|
77d5d92c3b
|
fix(vocechat): accept numeric user IDs
|
2026-09-01 14:48:51 +08:00 |
|
jxxghp
|
c4d8185d8d
|
refactor(transfer): keep planning rejection within complexity budget
|
2026-09-01 07:42:53 +08:00 |
|
jxxghp
|
94716484b7
|
fix(transfer): resolve durable failure recovery issues
|
2026-09-01 07:11:06 +08:00 |
|
kelvin
|
0ddd82fdaf
|
fix(tmdb): 修复剧集组查询参数名
|
2026-08-31 18:56:43 +08:00 |
|
InfinityPacer
|
a66cdb04e0
|
fix(notification): stabilize channel identity
|
2026-08-31 07:20:42 +08:00 |
|
jxxghp
|
3e9c2dcf42
|
fix(qbittorrent): clean temporary tags on all download paths
|
2026-08-30 16:57:24 +08:00 |
|
jxxghp
|
4e054151dc
|
fix(ci): repair initialization regressions
|
2026-08-30 10:37:18 +08:00 |
|
jxxghp
|
40ad00f250
|
test(architecture): sync renamed module baselines
|
2026-08-29 22:52:14 +08:00 |
|
jxxghp
|
5ba7e6170d
|
refactor(parity): unify remaining sync async decisions
|
2026-08-29 22:50:31 +08:00 |
|
jxxghp
|
0c05956814
|
refactor(architecture): enforce module naming policy
|
2026-08-29 22:17:17 +08:00 |
|
jxxghp
|
094621f5b8
|
refactor(parity): unify message and douban decisions
|
2026-08-29 21:50:09 +08:00 |
|
jxxghp
|
157934abe5
|
test(architecture): lower recognition type debt
|
2026-08-29 21:32:27 +08:00 |
|
jxxghp
|
6b3474d5c0
|
refactor(recognition): unify sync async state machines
|
2026-08-29 21:28:38 +08:00 |
|
jxxghp
|
b4b5f82511
|
refactor(modules): narrow package root exports
|
2026-08-29 21:19:00 +08:00 |
|
jxxghp
|
66ca0a9246
|
refactor(indexer): unify spider response handling
|
2026-08-29 20:50:00 +08:00 |
|
jxxghp
|
840153e7c7
|
refactor(modules): unify music catalog decisions
|
2026-08-29 20:47:29 +08:00 |
|
jxxghp
|
8ffe1f63ac
|
refactor(tmdb): unify api sync async decisions
|
2026-08-29 20:44:38 +08:00 |
|
jxxghp
|
3f7c89654d
|
refactor(modules): unify catalog source decisions
|
2026-08-29 20:05:21 +08:00 |
|
jxxghp
|
41b3c086cf
|
refactor(indexer): unify sync async search decisions
|
2026-08-29 19:43:00 +08:00 |
|
jxxghp
|
73e2f931ee
|
refactor(tmdb): unify sync async decision plans
|
2026-08-29 19:32:38 +08:00 |
|
jxxghp
|
a1e351aa9e
|
refactor(domain): isolate media source projections
|
2026-08-29 15:48:12 +08:00 |
|
jxxghp
|
27f357b1d2
|
fix(transfer): create local target before remote download (#6493)
|
2026-08-29 10:35:24 +08:00 |
|
jxxghp
|
92e745fc97
|
refactor(architecture): split chain owners and close runtime boundaries
|
2026-08-28 22:26:19 +08:00 |
|
jxxghp
|
3f8d5990e7
|
refactor(user): freeze host user query ports
|
2026-08-28 08:44:35 +08:00 |
|
jxxghp
|
f134e068e7
|
refactor: normalize capability module paths
|
2026-08-27 22:20:38 +08:00 |
|
jxxghp
|
e82ce8447c
|
refactor: complete durable transfer execution settlement
|
2026-08-27 20:27:42 +08:00 |
|