jxxghp
16cd9f75ed
fix(apppush): deliver business notifications to all active users ( #7235 )
2026-10-29 21:43:18 +08:00
jxxghp
222c0f0314
fix(ugreen): accept null poster wall lists
2026-10-27 07:31:05 +08:00
Aqr-K
71c2e9e3df
fix(storage): retain history until target cleanup is confirmed ( #7202 )
2026-10-27 05:42:07 +08:00
Derrors
72d940b835
fix(storage): detect nested 115 changes with stale directory times
...
115 子项变化不保证推进祖先目录时间。禁用该存储的目录时间剪枝,沿用现有快照遍历、深度、分页及限流。补充 API 边界与真实轮询器回归,验证空基线、旧时间移入和重复派发。
2026-10-26 21:59:07 +08:00
JontyLee
68d13fc5b2
fix(trimemedia): 访问码校验失败日志不再记录设备访问码
...
verify_access_code 把设备访问码拼进校验地址的路径段(/c/<code>),一旦连不上
就把整条 URL 写进 error 日志,明文凭据随之落到实例日志文件里;404 与状态码两
个分支本来就不带访问码,这里补齐同一条边界:只记录设备根地址。
这是 #7157 之后对其余裸 {url} 日志点做完整评估时唯一确认会写入凭据的一处:其余
调用点记录的是站点根地址,或把 api_key 经 params 传递、URL 本身不含凭据。
2026-10-26 20:49:21 +08:00
jxxghp
2fb3890f9d
fix(qbittorrent): 兼容 5.3 跳过校验参数
2026-10-25 18:30:00 +08:00
jxxghp
6680e090e6
feat: 自动登记中心推送实例并安全轮换凭据
2026-10-24 09:17:24 +08:00
jxxghp
3ac7526930
feat(notification): relay AppPush through private MoviePilot Server
2026-10-24 07:32:00 +08:00
jxxghp
e1b0d5b4bf
fix(indexer): identify HDDolby API connection failures ( #7164 )
2026-10-23 21:04:49 +08:00
jxxghp
5258e06fd7
fix(transfer): warn on unmatched custom target directory ( #7159 )
2026-10-23 18:23:57 +08:00
jxxghp
4d32f25fe4
fix(indexer): honor HDDolby API resource URL ( #7158 )
2026-10-23 17:48:59 +08:00
Aqr-K
fc0eed08cc
fix: preserve directed messaging and channel interaction contracts ( #7148 )
...
* fix: retain plugin lifecycle ownership and recover installation state
* fix: preserve directed messaging and channel interaction contracts
* test: cover plugin rollback and uninstall lifecycle boundaries
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-23 07:49:53 +08:00
Aqr-K
bcbf79f030
fix(media): preserve recognition and rule mutation identities ( #7144 )
...
* fix(media): preserve recognition and rule mutation identities
* test: cover typed classification facts with alias policies
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-23 07:33:27 +08:00
Aqr-K
598d1663b1
fix(download): preserve protocol failures and isolate site updates ( #7143 )
...
* fix(download): preserve protocol failures and isolate site updates
* test: cover tracker token lifecycle and record dependency facts
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-23 07:22:22 +08:00
Aqr-K
d666ae9d86
fix: preserve media library cache on incomplete enumeration ( #7145 )
2026-10-23 06:53:14 +08:00
Aqr-K
f3c1449c8b
fix(storage): preserve transfer contents and cleanup identities ( #7142 )
2026-10-23 06:51:54 +08:00
jxxghp
fa67be8e4a
fix(scraping): normalize artwork and reuse downloads for aliases
...
Add independent alias and Fanart 4K switches, identify exact artwork names, preserve episode and season conventions, and detect missing images across case and format variants. Normalize downloaded bytes to JPEG or PNG and reuse one request with storage hard links or local upload copies.
Refs #7128
2026-10-22 09:25:42 +08:00
jxxghp
cc2e02793e
fix(telegram): wait for final streaming edit interval
...
Wait once for the remaining message edit interval during Agent finalization, without bypassing Telegram 429 cooldown or replaying confirmed text.
Refs #7124
2026-10-22 08:25:25 +08:00
jxxghp
6d4ce83837
fix(types): clear host mypy debt and prevent typing regressions
...
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。
修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00
JontyLee
453a956819
fix(themoviedb): 让声明的 TMDB 请求超时真正生效 ( #7123 )
2026-10-21 17:22:01 +08:00
jxxghp
4bf11c3277
fix(transmission): confirm torrent state around episode selection
2026-10-21 15:23:42 +08:00
jxxghp
f090d22df2
fix(transfer): continue overwrite after target cleanup
...
## 问题
覆盖裁决确认旧媒体库目标存在后,洗版流程可能在实际备份前删除旧目标。恢复整理时备份步骤把旧目标和备份都不存在视为未知冲突,任务进入人工复核,暂存的新版本无法入库。
## 修复
- 备份步骤在确认旧目标已被外部删除、且备份目标也不存在时记录为无副作用跳过。
- 继续提升已完整暂存的新版本;移动整理仍在提升成功后清理源文件。
- 查询失败、两端同时存在或存在备份但状态矛盾时继续保持人工复核保护。
- 增加持久整理回归测试,覆盖覆盖裁决后旧目标被删除的场景。
## 验证
- `tests/test_transfer_safe_overwrite.py`:94 passed
- 整理执行、持久化、人工复核、提交、worker、计划测试:202 passed
- changed-file Pylint:10.00/10
Fixes #7120
2026-10-21 12:54:06 +08:00
jxxghp
6766a0516e
fix(transfer): recover legacy 115 receipts and isolate cloud copies
...
Validate old instant-upload receipts against frozen source bytes and the original cloud file ID before source deletion. Isolate native 115 copies before renaming, verify moved object IDs, and quarantine uncertain native operations instead of replaying them. Require explicit delete success.
Refs #7099
2026-10-20 17:33:51 +08:00
jxxghp
842320a22c
fix(site): preserve MTorrent role names and nullable share ratios
2026-10-20 15:39:06 +08:00
jxxghp
95606bb915
fix(transfer): keep exact byte size in 115 instant upload receipts
2026-10-20 15:25:04 +08:00
jxxghp
04e7cebbf7
fix(mediaserver): request production year in Emby projections
2026-10-20 14:04:09 +08:00
jxxghp
c6cfef198c
fix(douban): normalize person search image URLs
2026-10-20 07:47:28 +08:00
秋澪Akimio
e3d32e491b
feat(storage): 本地复制支持仅限关键字参数 try_reflink 并新增实验室配置项 ( #7089 )
2026-10-19 22:54:43 +08:00
jxxghp
9f03157977
fix(transfer): ignore timestamps in cleanup identity checks
2026-10-19 19:09:12 +08:00
jxxghp
cfec9497f5
fix(feishu): 补充资源选择卡片的站点、大小和做种数 ( #7085 )
...
* fix(feishu): show site size and seeders in torrent cards
* chore(architecture): record Feishu size formatting dependency
2026-10-19 18:47:30 +08:00
GuanAllen
458329b3f7
fix(indexer): 透传 mTorrent、HDDolby、Yema 的站点分类 ( #7080 )
...
* fix(indexer): 站点资源页页码归一化并让 mTorrent/HDDolby/Yema 支持分类透传
站点资源页传 1 起始页码,链路按 0 起始处理,mTorrent 再 +1 后请求 pageNumber=2,
导致单页关键词搜索返回空;同时站点页选择的分类没有透传到专站适配器,
Movie/TV 预置分类互相覆盖,分类筛选不生效。
- site.py: page 传入前归一化为 max(page-1, 0)
- indexer: mTorrent/HDDolby/Yema 专站参数补充 cat
- mtorrent.py: search/async_search/__get_params 支持 cat,显式分类优先
- hddolby.py: search/async_search/__get_params 支持 cat,显式分类优先
- yema.py: search/async_search/_prepare_search_requests 支持 cat,显式分类优先
* fix(indexer): preserve browse paging and support category lists
---------
Co-authored-by: GuanAllen <guanyelin@users.noreply.github.com >
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-19 18:33:28 +08:00
秋澪Akimio
8b5e536452
feat(storage): 本地复制优先尝试写时复制(reflink)并支持自动回退 ( #7082 )
2026-10-19 18:01:22 +08:00
JontyLee
0609ac9e01
fix(download): 复用下载器已有任务时不再重复通知与记录文件明细 ( #7078 )
2026-10-19 17:56:58 +08:00
jxxghp
6e5c9d0afb
fix(storage): 修复 reflink 同存储回退语义与测试稳定性 ( #7081 )
...
- transhandler: 恢复同存储 copy/move 的 elif 回退语义,不再在 item 操作未命中后重复调用远端操作
- local: reflink 空源路径直接失败,避免新增 mypy 存量债务
- tests: 管道用例改为模拟克隆,系统用例改用真实能力探测,并新增不支持时严格失败的用例
- mcp: 整理历史模式说明补充 reflink
2026-10-19 17:07:02 +08:00
秋澪Akimio
114c2cebe5
feat(storage): 本地存储增加引用链接(reflink)整理方式 ( #7077 )
2026-10-19 16:48:41 +08:00
jxxghp
9e02d26292
fix(telegram): omit buttons without valid actions ( #7074 )
2026-10-19 15:47:28 +08:00
JontyLee
6b107e3538
fix(filemanager): skip subitems that vanish during local listing ( #7076 )
...
本地目录列举在枚举子项后逐项 stat,条目在 listdir 与 stat 之间被移动、
删除或成为悬空软链时 FileNotFoundError 会中断整次浏览,使文件管理与
整理链路读取该目录失败。改为逐项容错,仅跳过已消失的条目。
Co-authored-by: jianlin6 <jianlin6@jianlin6-MacBookPro.local >
2026-10-19 14:28:09 +08:00
jxxghp
4f98486e25
fix: restore popular years and safe Transmission selection
2026-10-19 12:17:56 +08:00
Aqr-K
bf4ef4214e
perf(mediaserver): add caller-controlled query projections ( #7068 )
...
* perf(mediaserver): add caller-controlled query projections
* test(mediaserver): cover query projection option contracts
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-19 08:33:45 +08:00
jxxghp
60d2fe418a
fix(douban): preserve recommendation lists and page model contracts
2026-10-18 15:08:37 +08:00
DDSRem
e0642eafa7
chore(types): reduce v3 host mypy debt ( #7057 )
...
* chore(types): clear AniList endpoint mypy debt
* chore(types): clear Douban endpoint mypy debt
* chore(types): clear recommendation endpoint mypy debt
* chore(types): clear subscription notification mypy debt
* chore(types): clear SDK string compatibility mypy debt
* chore(types): ratchet v3 host mypy across remaining files
* chore(types): reduce v3 host mypy debt and retire ledger
* chore(types): reconcile host snapshot with upstream HTTP pool
* test(types): cover host paths exposed by mypy cleanup
2026-10-18 09:37:49 +08:00
FlameSky
dd371ec4cc
fix(wechat): refresh stale or rejected access_token ( #7053 )
2026-10-18 06:56:30 +08:00
InfinityPacer
8c52755d4e
fix(plex): avoid detail reloads for continue watching
2026-10-18 01:40:55 +08:00
jxxghp
f1e09b40d0
fix(types): preserve Plex SDK return contracts
2026-10-17 20:14:11 +08:00
jxxghp
16723f03a4
fix(types): preserve Feishu notification identity boundaries
2026-10-17 20:12:48 +08:00
jxxghp
a03e620c27
fix(types): make Emby response contracts explicit
2026-10-17 20:12:48 +08:00
jxxghp
acfe477c66
fix(types): make Discord callbacks and receipts explicit
2026-10-17 20:12:48 +08:00
jxxghp
74489ca32f
fix(types): make ZSpace response contracts explicit
2026-10-17 20:12:48 +08:00
jxxghp
0bde181702
fix(types): make Jellyfin response contracts explicit
2026-10-17 20:12:48 +08:00
jxxghp
bb7f7f7315
fix(types): clarify Ugreen session and media response boundaries
2026-10-17 20:12:48 +08:00