332 Commits

Author SHA1 Message Date
jxxghp
054119e885 fix(event): isolate durable broadcast handler delivery 2026-11-05 02:51:43 +08:00
freeman
68cfc377ee feat(history): register externally completed transfers (#7293) 2026-11-04 06:24:38 +08:00
@huluohu
9eaaf5f715 fix(subscribe): 整理入库后及时同步订阅事实以修复日历入库状态 (#7270) 2026-11-02 06:58:55 +08:00
jxxghp
83243d2418 fix: 限制插件生命周期准入并保留慢钩子所有权 (#7268) 2026-11-01 22:22:04 +08:00
SmallSpider
7f227857d8 fix: 修复 WebAgent 会话与选择状态 (#7266)
* fix(agent): preserve WebAgent session state

* test: separate subscription pressure coordination and owner waits

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-11-01 17:49:20 +08:00
SmallSpider
05050376ea fix(search): load diagnostics lazily and cover user context forwarding 2026-11-01 10:07:09 +08:00
SmallSpider
9ce3d7a292 feat(search): add scoped page diagnostics 2026-11-01 09:51:24 +08:00
jxxghp
e3e5184d42 fix(anilist): persist Chinese titles and use official API 2026-11-01 08:16:03 +08:00
jxxghp
6ca7b294a0 fix(download): 共享站点流控并保留频控错误原因 (#7246)
* fix(download): share site limits and preserve frequency errors

* test(startup): record shared site throttle module
2026-10-30 14:53:32 +08:00
jxxghp
586a4f595e fix(transfer): settle tasks with missing metadata safely (#7245) 2026-10-30 14:34:07 +08:00
jxxghp
9aab7c0f4c fix(agent): pin scheduled tasks to real execution accounts (#7241) 2026-10-29 22:39:08 +08:00
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
Cat
252b702875 fix(site): keep redirect failures from aborting site requests (#7227) 2026-10-28 18:43:19 +08:00
jxxghp
d9afaba8dd feat(plugin): expose documentation before installation (#7222) 2026-10-27 21:37:00 +08:00
JontyLee
6e405a67b3 fix(cache): Redis 故障日志遮盖缓存键中携带的请求凭据 (#7220) 2026-10-27 20:54:42 +08:00
jxxghp
e9563b0346 perf(api): 合并卡片状态查询并减轻推荐轮询 (#7207) 2026-10-27 06:05:49 +08:00
Aqr-K
71c2e9e3df fix(storage): retain history until target cleanup is confirmed (#7202) 2026-10-27 05:42:07 +08:00
jxxghp
42edfd1da8 fix(api): bound collection views and query calendar dates (#7200) 2026-10-27 00:40:09 +08:00
jxxghp
53f455cac8 fix(resources): normalize GitHub proxy and retry downloads
Reuse the checked resource manifest within each download and retain phase-specific retry errors. Preserve application update error contracts.

Refs #7185
2026-10-26 09:04:54 +08:00
jxxghp
86a1ca5e98 docs: align widget dependency count in architecture overview 2026-10-25 15:07:10 +08:00
jxxghp
d5ecf2927c feat(widget): 显示下载上传速度和剩余磁盘空间 (#7177) 2026-10-25 11:28:36 +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
6680e090e6 feat: 自动登记中心推送实例并安全轮换凭据 2026-10-24 09:17:24 +08:00
jxxghp
438fa5ef0a test: synchronize AppPush inventory and architecture metrics 2026-10-24 07:57:17 +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
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
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
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
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
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
c732844f46 chore(architecture): sync download notification dependencies 2026-10-20 12:18:59 +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
jxxghp
c85f9b262f feat(agent): isolate interactive execution from background services (#7083) 2026-10-19 18:12:05 +08:00
JontyLee
0609ac9e01 fix(download): 复用下载器已有任务时不再重复通知与记录文件明细 (#7078) 2026-10-19 17:56:58 +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
DDSRem
e1b703aacc refactor(agent): centralize graph resource ownership (#7062) 2026-10-18 21:49:57 +08:00
jxxghp
f2b0064449 docs: refresh backend architecture overview 2026-10-18 14:41:04 +08:00
jxxghp
2d73cbc43e docs: drop process records and internal implementation docs
Keep only install, usage, development-workflow and architecture-boundary
documents; remove the one-off refactor plans, audits and ledgers that had
already served their purpose.

- delete docs/refactor plus the agent API surface audit generator and its
  drift-only tests; the fixed route registry remains the source of truth
- delete internal implementation notes (agent, music, notification, transfer,
  subscription activity, docker startup, V3t runtime governance)
- delete site adapter capture/release shims and the ADR records; external
  links point at MoviePilot-Site-Collector instead
- keep docs/architecture-overview.md and gate its dependency and event
  figures against the generated fixtures
- drop doc-only assertions from the architecture baseline test and retarget
  remaining references at code and rule documents
2026-10-18 14:24:49 +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
jxxghp
30378f2fc8 fix(network): recover shared pools after repeated pool timeouts 2026-10-18 09:01:33 +08:00
jxxghp
49f7d585b8 chore(architecture): restore U115 import edge 2026-10-17 17:45:19 +08:00
jxxghp
e2df9c3d3e docs(architecture): refresh dependency edge count 2026-10-17 17:29:06 +08:00
jxxghp
00645938d2 fix: isolate durable notification recovery 2026-10-17 13:11:15 +08:00