Commit Graph

1309 Commits

Author SHA1 Message Date
jxxghp
2e495e8129 fix(scraping): honor music album track overwrite policy
按音乐标签覆盖策略对专辑曲目做批次唯一匹配,保留有歧义或身份冲突的标签,并在响应和日志中说明处理结果。

Refs #7368
2026-11-12 09:57:48 +08:00
jxxghp
a0e27c4424 feat(indexer): map Piggo resource labels
Resolve site labels from the Piggo catalog and dispatch connectivity, ticket parsing, and throttling through indexer capabilities.
2026-11-12 06:45:16 +08:00
jxxghp
b5384dc7ab docs(site): align HDArea resources with version 3.0.32
Refs #7370
2026-11-11 22:14:19 +08:00
jxxghp
18fe2ea387 feat(indexer): support HDArea REST API
Refs #7370
2026-11-11 21:53:16 +08:00
jxxghp
123b201ba9 test(architecture): record Piggo dependency graph 2026-11-11 18:54:37 +08:00
jxxghp
8dc4b08114 fix(indexer): support Piggo laboratory API (#7274) 2026-11-11 18:32:59 +08:00
jxxghp
6bc19a59cc fix(agent): protect plugin config and replay receipts (#7360) 2026-11-11 13:39:35 +08:00
ChantXu64
0200642746 fix(download): 完整覆盖整包只下载订阅范围内的剧集 (#7361) 2026-11-11 13:36:17 +08:00
jxxghp
1ec2bff817 Trae/agent s2h0 df (#7359) 2026-11-11 13:15:46 +08:00
gntv456
6166968f4c feat(indexer): 支持 FluxTorrent 兼容层站点搜索与用户数据 (#7355)
* feat(indexer): 支持 FluxTorrent 兼容层站点搜索与用户数据

好学(hxpt.org)已由 NexusPHP 迁移到 FluxTorrent,原有页面刮削全部失效。
FluxTorrent 提供 /api/v1/compat/nexusphp/* 只读 JSON 兼容层,本提交按该契约
新增索引器与用户数据解析器,并在分发层加入能力探测,使未在站点资源中登记
专站协议的站点也能被自动识别(站点清单是闭源发布资源,主仓无法新增条目)。

- 新增 FluxTorrentSpider:调用兼容层 torrents.json 搜索,按 category_newznab
  映射媒体类型,按 promotion 换算下载与上传量系数,下载地址携带开放 API 令牌
- 新增 FluxTorrentSiteUserInfo:解析兼容层 user.json 的用户资料与流量
- 新增同步与异步能力探测:站点未登记专站协议时,用站点令牌请求一次
  user.json,响应符合 {code, message, data, request_id} 信封即判定为 FluxTorrent
- 探测要求站点已配置令牌,并用命中 24 小时、未命中 30 分钟的双层 TTL 缓存
- 不下发分类与媒体类型筛选:兼容层的 category 只接受站内分类 ID,且客户端
  过滤会破坏分页续拉契约,分类筛选待站点资源发布链路补齐后再放开

* fix(indexer): 抽出用户数据模型解析,消除复杂度增长

CI 复杂度门禁报 IndexerModule.refresh_userdata 圈复杂度 15->16(上限 15)。
把 FluxTorrent 能力探测与模型选择抽成模块级函数 _resolve_userdata_schema,
refresh_userdata 的方法体不再因新增分支而增长。

* refactor(indexer): FluxTorrent 模块文件改为单词命名

命名门禁 test_new_host_production_modules_use_single_word_filenames 要求
app 下的模块文件名满足 [a-z][a-z0-9]*,flux_torrent.py 不合规 ⇒ 两个模块
改名为 fluxtorrent.py,同步更新导入与测试打桩路径。

* test(indexer): 修正发布时间断言并同步架构依赖基线

- 发布时间断言原先写死本机时区渲染结果,在 UTC 的 CI 上必然失败 ⇒ 改为对同一
  转换函数取期望值,只验证 Unix 时间戳经由 format_timestamp 输出
- dependency-baseline.json 新增 app.modules.indexer.spider.fluxtorrent 与
  app.modules.indexer.parser.fluxtorrent 的模块与导入边(edge_count 9973→9990、
  module_count 1151→1153),结构与既有 haidan 等专站模块一致,边界未越权

* docs(architecture): 同步架构快照的模块与导入边数量

架构依赖基线新增两个索引器模块后,docs/architecture-overview.md 的
快照表需同步:Python 模块 1151→1153、内部导入边 9,973→9,990。

* test(indexer): 补齐异步探测与失败路径用例,满足新文件覆盖率门槛

新增文件的覆盖率低水位要求 80%,补齐后 spider 90.81%、parser 92.21%:
- 异步能力探测命中与请求异常两条路径
- 站点无响应、响应不是 JSON 时的降级判定
- 异步搜索缺少令牌时的直接失败
- 用户接口空响应 / 非 JSON / 结构异常 / 业务错误码的错误信息
- 站点地址缺协议与空白地址的归一

* test(indexer): 覆盖协议解析的三条分支

存量文件覆盖率低水位要求未覆盖语句数不增长,补齐协议解析的已登记协议、
探测命中、未识别三种情况(同步与异步),以及用户数据模型名的两条分支。

* refactor(indexer): 按站点资源路由 FluxTorrent 协议

删除运行时能力探测与 TTL 缓存,搜索和用户数据直接使用站点资源声明的 parser/schema;保留 FluxTorrent spider 与用户数据解析器的注册,由站点构建配置决定路由。

---------

Co-authored-by: gntv456 <gntv456@users.noreply.github.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-11-11 10:27:52 +08:00
jxxghp
7e1ac758d7 fix(transfer): make lyric suffixes configurable 2026-11-10 19:38:27 +08:00
jxxghp
ab608d45b9 fix(browser): use pre-license CloakBrowser release 2026-11-10 18:26:57 +08:00
jxxghp
252d05767f feat(browser): add queued CloakBrowser watchdog recovery 2026-11-09 17:24:32 +08:00
jxxghp
a3c8280d14 fix(telegram): retry poster uploads before text fallback (#7330) 2026-11-08 10:37:03 +08:00
jxxghp
8e9e89c636 fix(image): request media thumbnails with identity-aware caching (#7326) 2026-11-07 20:51:05 +08:00
jxxghp
41516bbc29 fix(plugin): cache static resources and rating snapshots (#7324) 2026-11-07 19:44:33 +08:00
jxxghp
379ef94c9c fix(transfer): 修复硬链接覆盖整理误留暂存与备份 (#7322)
从已落账操作回执更新共享 inode 的状态时间,并保留外部改写与未知结果的副本保护。关联 #7321。
2026-11-07 18:33:23 +08:00
jxxghp
263ae3fbc7 fix(llm): retain finite provider request timeouts 2026-11-07 05:52:11 +08:00
jxxghp
db07e6ff0f fix(agent): preserve choice receipt timestamps
Refs #7314
2026-11-06 22:23:37 +08:00
Derrors
17478f7825 fix(browser): reap idle sessions without subsequent requests
Register a lifecycle-owned periodic reaper and close expired sessions on their original workers. Guard pending operations and retain closing resources until actual completion, including owner shutdown races. Add isolated concurrency and lifecycle regressions and synchronize browser documentation.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-06 20:37:40 +08:00
jxxghp
054119e885 fix(event): isolate durable broadcast handler delivery 2026-11-05 02:51:43 +08:00
jxxghp
90d469c510 docs(site): add site API integration requirements 2026-11-04 13:31:54 +08:00
jxxghp
f9c010fc91 fix(plugin): preserve startup recovery transaction ownership (#7297) 2026-11-04 12:30:12 +08:00
jxxghp
565631f157 fix(mediaserver): paginate Emby family library synchronization (#7295)
* fix(mediaserver): paginate Emby family library synchronization

* fix(mediaserver): keep request client import type-only
2026-11-04 07:14:46 +08:00
freeman
68cfc377ee feat(history): register externally completed transfers (#7293) 2026-11-04 06:24:38 +08:00
MoviePilot Contributor
e550ec6dd8 fix(log): 文件日志保留异常堆栈 (#7286)
未捕获异常经 localized_unhandled_exception_handler 写入文件日志时只保留正文,异常三元组未进入文件写入链路,导致 moviepilot.log 丢失异常类型与堆栈。现将 exc_info 在调用方线程规范化为三元组并随 LogEntry 携带到文件格式化器。
2026-11-04 02:23:07 +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
ae6270e655 Merge pull request #7257 from qingyukb/codex/security-web-agent-file-owner 2026-10-31 22:08:06 +08:00
jxxghp
10e9ade7de fix(site): preserve text category IDs and replay resource configs 2026-10-31 17:25:29 +08:00
qingyukb
aea8cf11c4 fix: 按用户隔离 Web 智能助手临时附件 2026-10-31 17:04:21 +08:00
jxxghp
f5bd3458a6 fix(subscribe): restore strict media identity checks 2026-10-30 22:36:51 +08:00
jxxghp
d8fbabaa6a fix(apppush): preserve full notification text for web details 2026-10-30 16:52:58 +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
a9c992d9b9 fix(apppush): preserve posters in relay notifications (#7244) 2026-10-30 13:38:30 +08:00
jxxghp
9aab7c0f4c fix(agent): pin scheduled tasks to real execution accounts (#7241) 2026-10-29 22:39:08 +08:00
jxxghp
16cd9f75ed fix(apppush): deliver business notifications to all active users (#7235) 2026-10-29 21:43:18 +08:00
jxxghp
4f91c6be75 test(apppush): verify persisted channels survive restart 2026-10-29 19:15:38 +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
f84894faee fix(events): release handler ownership before notifying completion (#7206) 2026-10-27 05:43:57 +08:00
Aqr-K
8b2275592e fix(database): enforce SQLite secret-table access during execution (#7205) 2026-10-27 05:43:37 +08:00