530 Commits

Author SHA1 Message Date
Cat
87561a90d1 fix(agent): route agent command receipts to the signed channel user (#7228)
- Agent 代渠道用户调用内部 API 时,把会话渠道与渠道用户写入宿主签发令牌的签名
  声明(agent_channel、agent_channel_user),不再新增可伪造的请求头。
- /commands/run 对 Telegram 等通知渠道只使用与请求渠道一致的签名渠道用户执行命令
  和投递回执;缺少该声明时明确拒绝,不再把 MoviePilot 用户表主键当作渠道 chat id。
  Web、WebAgent 与无渠道调用仍按 MoviePilot 用户 ID 处理。
- 只读公共资料借用宿主身份,不携带渠道发起人声明。
- 同步依赖基线与架构总览中的内部导入边数量。

Refs #7225

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-28 19:05:52 +08:00
jxxghp
be65e047b0 fix(plugin): support mirrors for Release asset downloads (#7224) 2026-10-27 22:21:48 +08:00
jxxghp
d9afaba8dd feat(plugin): expose documentation before installation (#7222) 2026-10-27 21:37:00 +08:00
JontyLee
f2918b9285 fix(scheduler): 让声明为不限时的协程任务预算真正生效
JobSpec.timeout_seconds 此前无法表达“显式不限时”:所有未声明预算的协程任务
一律补齐 SCHEDULER_JOB_TIMEOUT,订阅搜索队列因此被 3600 秒总时长判死,而它的
托管协程消费者无法靠取消收尾,只会把正常长轮次记成失败。现在收敛为三态语义
(正数为上限、0 为显式不限时、缺省继承默认),并修正 asyncio 超时异常 str()
为空导致的日志、系统通知与 SystemError 事件文本缺失。
2026-10-26 10:34:42 +08:00
jxxghp
8f21e12d75 fix(search): release unused site request reservations 2026-10-26 09:23:29 +08:00
jxxghp
d66b58c475 feat(widget): enrich system and combined media summaries 2026-10-25 14:53:54 +08:00
jxxghp
d5ecf2927c feat(widget): 显示下载上传速度和剩余磁盘空间 (#7177) 2026-10-25 11:28:36 +08:00
jxxghp
86ededa739 feat(widget): 增加当前主登录的只读账号上下文 (#7176) 2026-10-25 06:28:57 +08:00
jxxghp
721c03734a feat(widget): 提供受限凭据和只读快照接口 (#7175)
* feat(widget): add restricted read-only snapshot foundation

* test(widget): 补齐运行时与文档迁移契约
2026-10-25 06:02:47 +08:00
jxxghp
81260dc452 fix(notification): persist independent media posters 2026-10-24 19:11:27 +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
d8cb95ab9e fix(filter): 修复分类名称与目录不一致时跳过规则组 (#7165)
* fix(filter): match rule groups to effective media categories

* docs(architecture): sync dependency count for category matching
2026-10-23 23:15:28 +08:00
jxxghp
b51f93f60f fix(subscribe): reconcile inferred media type conflicts (#7166) 2026-10-23 23:08:10 +08:00
JontyLee
8c156d4f47 fix(rss): 遮盖失败日志与诊断报告中的 URL 凭据 (#7157)
站点 RSS 地址把 passkey、sign 等凭据放在查询串里,请求失败时这些原文会随
错误日志落盘,并被 Doctor 摘录进可外发的诊断报告;连接串形式的 userinfo 口令
同样存在。新增 app.foundation.url.mask_url_credentials 纯函数与两条共享正则,
RSS 失败日志改用遮盖后的地址,Doctor 的日志遮盖规则复用同一模式,避免两处实现分叉。
2026-10-23 17:43:30 +08:00
ranzhigg
e0ff8141f8 fix(transfer): allow safely discarding manual-review tasks (#7154) 2026-10-23 15:18:33 +08:00
Aqr-K
7584d4b9fc fix: isolate agent sessions and retain runtime resource ownership (#7149)
* fix: arbitrate subscription identity and restore workflow state

* fix: isolate agent sessions and retain runtime resource ownership

* test: preserve legacy empty-owner subscription transactions

* test: handle reaped terminal descendants during shutdown polling

* fix: align shared atomic configuration method with lifecycle prerequisite

* test: cover subagent cancellation and completion lifecycle boundaries

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 08:20:59 +08:00
Aqr-K
951cdc5b27 fix: arbitrate subscription identity and restore workflow state (#7147)
* fix: arbitrate subscription identity and restore workflow state

* test: preserve legacy empty-owner subscription transactions

* fix: align shared atomic configuration method with lifecycle prerequisite

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 08:14:15 +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
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
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
6d4ce83837 fix(types): clear host mypy debt and prevent typing regressions
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。

修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00
jxxghp
a1d0bf1fd2 feat(scraping): make season image root copies optional 2026-10-21 07:04:42 +08:00
wenking
38d7ca3f45 fix(image): 图片跳转校验沿用已配置的非公网放行网段 (#7110) 2026-10-20 20:13:12 +08:00
jxxghp
1b62418caa fix(transfer): preserve valid u115 overwrite filenames
Keep 115 staging and backup names compatible with its rename API by retaining the target extension and a nonempty basename.

Refs #7093
2026-10-20 12:21:09 +08:00
秋澪Akimio
e3d32e491b feat(storage): 本地复制支持仅限关键字参数 try_reflink 并新增实验室配置项 (#7089) 2026-10-19 22:54:43 +08:00
jxxghp
c85f9b262f feat(agent): isolate interactive execution from background services (#7083) 2026-10-19 18:12:05 +08:00
jxxghp
379c26a300 feat(subscribe): record initial and upgrade download provenance (#7061) 2026-10-19 16:03:21 +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
9bcebc2c52 fix(community): prewarm and refresh medal snapshots in background 2026-10-18 10:37:19 +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
DDSRem
2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
jxxghp
c1d7deada8 fix(types): type messaging template and queue boundaries 2026-10-17 18:23:57 +08:00
jxxghp
00645938d2 fix: isolate durable notification recovery 2026-10-17 13:11:15 +08:00
jxxghp
47ef181ca0 mypy: narrow subscription write inputs 2026-10-17 09:48:15 +08:00
jxxghp
58967c602c mypy: fix subscription metadata contracts 2026-10-17 09:48:15 +08:00
jxxghp
841789371e fix(types): disambiguate Servarr list annotations 2026-10-17 09:11:49 +08:00
jxxghp
acbec8fd90 fix(types): type transfer history projection 2026-10-17 08:09:18 +08:00
jxxghp
991b03921b fix(types): require coroutine web agent tasks 2026-10-17 08:09:18 +08:00
jxxghp
4d329963e0 fix(types): align WebAgent task contract 2026-10-17 08:09:18 +08:00
jxxghp
2cf927d700 fix(formatting): preserve numeric episode range filtering and type contracts 2026-10-17 06:44:44 +08:00
jxxghp
68101746ae fix(plugin): recover invalid historical instance rows (#7039)
* fix(plugin): recover invalid historical instance rows

* fix(plugin): keep maintenance on existing startup path

* style(plugin): order maintenance test imports

* chore(architecture): record plugin instance validator edges
2026-10-17 06:34:25 +08:00
jxxghp
27ca7b3708 fix(types): define skill interaction button payloads 2026-10-17 05:57:54 +08:00
jxxghp
2b4602e0f6 refactor(types): align agent chat messages with repository contracts 2026-10-17 04:25:39 +08:00