Commit Graph

10604 Commits

Author SHA1 Message Date
jxxghp
ec5ff575f0 fix(agent): restore API bodies before direct request dispatch 2026-10-23 07:55:16 +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
DDSRem
daa2729bdd chore: bump moviepilot-rust to 0.3.11 (#7152) 2026-10-23 07:47:46 +08:00
Aqr-K
6610a8c008 fix: retain plugin lifecycle ownership and recover installation state (#7146)
* fix: retain plugin lifecycle ownership and recover installation state

* test: cover plugin rollback and uninstall lifecycle boundaries

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 07:44:07 +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
Aqr-K
5aebc7ac59 fix(auth): preserve administrator and credential consistency (#7141) 2026-10-23 06:50:30 +08:00
Aqr-K
d51320103c fix: make local setup and bundled skill operations recoverable (#7150)
* fix: make local setup and bundled skill operations recoverable

* test: verify user updates with real transaction runners
2026-10-23 06:49:13 +08:00
jxxghp
5fc4f2efd8 fix(music): match verified bilingual artist and title aliases 2026-10-22 18:21:12 +08:00
jxxghp
0a429cd8bd fix(subscribe): preserve custom categories from edit forms (#7138) 2026-10-22 17:51:07 +08:00
InfinityPacer
9e24ea0c68 ci(release): add OSV pass to dependency audit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:52:54 +08:00
Cat
c8517eb2f1 fix(doh): skip CNAME answers and cool down failed resolvers (#7135) 2026-10-22 16:43:20 +08:00
InfinityPacer
ec922865be feat(update): require image system baseline before installing updates
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:36:44 +08:00
InfinityPacer
cba9779a8a build(docker): refresh system packages against a tracked baseline
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:36:44 +08:00
InfinityPacer
a76fc9f579 build(docker): decouple browser system deps from the venv layer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:36:44 +08:00
InfinityPacer
80def953b5 fix(deps): upgrade mako to 1.4.3 for GHSA-5639-2j2p-m4mx
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:22:46 +08:00
DDSRem
517169b905 chore: bump moviepilot-rust to 0.3.10 (#7132)
Co-authored-by: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com>
2026-10-22 13:27:41 +08:00
InfinityPacer
2b6d14d908 fix(deps): upgrade pillow, aiohttp and certifi for security advisories
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 11:40:27 +08:00
jxxghp
2fbc1c4ec7 chore(release): publish v3.1.9 2026-10-22 11:15:11 +08:00
jxxghp
6d7499fb2e test(progress): preserve coverage for helper snapshots 2026-10-22 10:42:37 +08:00
jxxghp
6ea561b765 test(storage): exercise image links through storage chain 2026-10-22 09:44:04 +08:00
jxxghp
17a866f47b fix(transfer): restore AI takeover for failed transfers 2026-10-22 09:43:03 +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
9d534d1954 fix(search): restore complete packs before initial parts 2026-10-22 07:37:31 +08:00
jxxghp
2393f198af fix(fsworker): rename symlinks by link device 2026-10-22 06:49:18 +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
85ccba699f Merge pull request #7119 from JontyLee/fix/music-suffix-disc-directory 2026-10-21 10:59:39 +08:00
jianlin6
d89ad925ee fix(music): 识别碟号后缀目录,修复多碟专辑音轨键塌陷
整专下载完成度按 `["<disc>", "<track>"]` 键集累计,而碟片识别只接受目录名整体
为 `CD1`/`Disc 2`。把碟号写在专辑目录名末尾的资源(`陈奕迅 - 十年经典 CD1`)
解析不到 disc_number,音轨键生成回退到 `disc_number or 1`,两张碟的同曲序互相
覆盖,键集直接减半(30 首只记到 15 个键),订阅永远判定未完成。

只补碟号,不改变专辑根推断:该目录仍按专辑目录解析,`parse_disc_dir` 的 11 处
结构性调用语义不变,入库目标目录(`Disc 1` 布局)也不受影响。
2026-10-21 10:39:53 +08:00
jxxghp
04963c4608 Merge pull request #7116 from jxxghp/feat/issue-7112-secrets
feat(config): support Docker and Kubernetes secrets
2026-10-21 07:09:37 +08:00
jxxghp
a1d0bf1fd2 feat(scraping): make season image root copies optional 2026-10-21 07:04:42 +08:00
jxxghp
85af231b20 feat(config): support deployment secrets without persisting values 2026-10-21 07:03:39 +08:00
jxxghp
53c5344f4e fix(agent): avoid replaying delivered streaming progress 2026-10-21 00:20:13 +08:00
jxxghp
6c68225a07 ci(startup): 固定冷导入耗时上限为三秒 2026-10-20 20:44:01 +08:00
jxxghp
43424e592c fix(subscribe): 全集洗版始终使用洗版规则筛选资源 (#7111) 2026-10-20 20:22:18 +08:00
wenking
38d7ca3f45 fix(image): 图片跳转校验沿用已配置的非公网放行网段 (#7110) 2026-10-20 20:13:12 +08:00
alexcastgonz
14b9ea6d3e fix(setup): 更新 Google 默认模型并兼容 Gemini 3.8 思考级别 (#7109)
* fix(setup): 更新 Google 默认模型为 gemini-3.8-flash

安装向导中 Google 的预设模型 gemini-2.5-flash 对新建的 Gemini API 密钥
已返回 404,在模型选择处直接回车会写入无法使用的 LLM_MODEL。改为
Google 文档中推荐给新项目的稳定模型 gemini-3.8-flash。

新增用例校验预设值不再是 Gemini 2.5 系列。

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(llm): honor Gemini 3.8 minimum thinking level

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-20 18:41:57 +08:00
JontyLee
d57af7979e fix(download): 重复接受且零新增交付的种子按资源退避,订阅改试其他资源 (#7107)
* fix(download): back off resources re-submitted with no new files

A subscription that re-selects an already-held package gets accepted by the
downloader again every search round, so the same resource keeps being
submitted while nothing new can be delivered. Record a resource-scoped
backoff when a reused task contributes no file rows: it suppresses only that
one resource, so candidates keep trying other torrents for the same media and
the subscription is neither completed nor failed. The cooldown ledger is no
longer failure-only, so the skip log reports the recorded reason instead of
claiming the add failed.

* fix(download): keep duplicate backoff stable across selection

---------

Co-authored-by: jianlin6 <jianlin6@jianlin6-MacBookPro.local>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-20 18:35:14 +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
ec7e4acfba fix(site): route API connectivity checks by site protocol (#7105) 2026-10-20 15:58:27 +08:00
jxxghp
e65e0bbd7b fix(transfer): retain boolean types across dynamic job view 2026-10-20 15:40:55 +08:00
jxxghp
842320a22c fix(site): preserve MTorrent role names and nullable share ratios 2026-10-20 15:39:06 +08:00
jxxghp
84e4abc922 fix(transfer): scope completed torrent cleanup to its own tasks 2026-10-20 15:36:41 +08:00
jxxghp
2c0f1ac976 fix(site): test MTorrent compatible sites through profile API 2026-10-20 15:33:17 +08:00
jxxghp
95606bb915 fix(transfer): keep exact byte size in 115 instant upload receipts 2026-10-20 15:25:04 +08:00