jxxghp
da327ae968
chore(release): publish v3.2.6 with frontend v3.2.6
2026-11-12 13:43:57 +08:00
jxxghp
cbed026844
Merge pull request #7386 from jxxghp/fix/legacy-rule-ids-7383
...
fix(filter): migrate legacy rule IDs and diagnose invalid groups
2026-11-12 13:32:29 +08:00
jxxghp
bbc7795230
fix(filter): migrate legacy rule IDs and diagnose invalid groups
...
Refs #7383
2026-11-12 13:04:36 +08:00
jxxghp
e72830204c
fix(download): report indirect ticket failures without blacklisting
...
换票无响应、HTTP 错误、配方解析失败或无有效地址时,携带脱敏诊断返回“换票失败”并交给 on_failure 上报,不再静默失败或调用 add_invalid。换票所得临时地址返回错误页或非种子内容时标记为“临时下载地址失效”,下一次重新换票;两类失败均使用 1 小时瞬时冷却。直接链接的真实损坏种子仍保留“种子数据有误”和 24 小时黑名单。诊断包含 HTTP 状态、有限错误字段摘要与是否携带 Cookie,并移除凭据和完整签名 URL。
Fixes #7372
2026-11-12 12:50:03 +08:00
jxxghp
6a9cd52ba2
Merge pull request #7385 from jxxghp/fix/issue-7369
...
fix(transfer): honor scrape defaults and music track overwrite
2026-11-12 11:58:30 +08:00
jxxghp
c488952b23
fix(transfer): honor scrape defaults and music track overwrite
...
手动整理未显式选择刮削时跟随目标目录设置;音乐自动整理锁定具体发行版本时按唯一曲序写入线上曲名和艺人。
Fixes #7369
Fixes #7379
2026-11-12 11:51:54 +08:00
jxxghp
a3171977d1
Merge pull request #7384 from jxxghp/refactor/site-module-dispatch
...
refactor(indexer): move site-specific protocols into modules
2026-11-12 11:17:03 +08:00
jxxghp
794856747a
test(indexer): cover site connection failure responses
2026-11-12 11:02:03 +08:00
jxxghp
8b152b9fb0
chore: merge latest v3 into site protocol refactor
2026-11-12 10:37:22 +08:00
jxxghp
31acf2b923
Merge pull request #7381 from jxxghp/fix/issue-7368
...
fix(scraping): honor music album track overwrite policy
2026-11-12 10:14:22 +08:00
jxxghp
2e495e8129
fix(scraping): honor music album track overwrite policy
...
按音乐标签覆盖策略对专辑曲目做批次唯一匹配,保留有歧义或身份冲突的标签,并在响应和日志中说明处理结果。
Refs #7368
2026-11-12 09:57:48 +08:00
jxxghp
ad7f4a37ba
refactor(indexer): move site-specific protocols into modules
2026-11-12 09:57:27 +08:00
jxxghp
8a8fa9d8fb
Merge pull request #7376 from jxxghp/fix/piggo-resource-labels
...
feat(indexer): 支持猪猪资源标签与站点能力分发
2026-11-12 06:52:15 +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
2651d797d7
Merge pull request #7375 from Huyvux12/fix/issue-7367-caa-front500-fallback
2026-11-12 06:21:59 +08:00
Huyvux12
1fd1743667
fix(scraping): CAA front-500 404 时回退请求 /front 原图
...
front-500 缩略图派生文件缺失时 Cover Art Archive 返回 404,
旧逻辑直接把 (None, "image/jpeg") 写入缓存且无日志,重刮无法恢复。
改为 404 时回退请求 /front 原图并记录 info 日志;缓存 TTL 与
下载链路均不改动。
Fixes #7367
2026-11-11 15:43:48 +00:00
jxxghp
2830aff0e4
Merge pull request #7374 from jxxghp/docs/issue-7370-resource-version
2026-11-11 22:22:26 +08:00
jxxghp
f488023b63
Merge pull request #7366 from Huyvux12/fix/issue-7363-music-online-tags-overwrite
2026-11-11 22:20:24 +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
7af97c4429
Merge pull request #7373 from jxxghp/fix/issue-7370
...
feat(indexer): 高清视界切换 API Key 访问
2026-11-11 22:02:50 +08:00
jxxghp
18fe2ea387
feat(indexer): support HDArea REST API
...
Refs #7370
2026-11-11 21:53:16 +08:00
jxxghp
eaf833445f
Merge pull request #7371 from jxxghp/fix/issue-7274
...
fix(indexer): support Piggo laboratory API (#7274 )
2026-11-11 19:02:55 +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
Huyvux12
2e0fc48646
fix(music): prefer online disc/track structure for manually selected release
...
When a MusicBrainz release is explicitly selected, the aligned track
already carries the release structure, but _merge_music_track_context
only filled missing local fields, so dirty local total_discs/disc_number
kept producing a spurious Disc layer (e.g. total_discs=2 on a 1-disc
release) and wrong track positions. Let online values win for
disc_number/track_number/total_tracks/total_discs on the selected-release
path only; auto-match keeps the fill-only behaviour.
Album scrape merge now prefers online total_discs as well, and forces
disc_number=1 for confirmed single-disc albums so a dirty local disc
number cannot pair with total_discs=1 as "2/1" in tags.
Fixes #7363
2026-11-11 07:15:29 +00:00
jxxghp
33cc86e225
Merge pull request #7364 from jxxghp/fix/issue-7360
...
fix(agent): 防止插件配置误覆盖与回执误判
2026-11-11 14:01:46 +08:00
jxxghp
ba034b20f0
test(agent): document regression test contracts
2026-11-11 13:55:27 +08:00
jxxghp
9323f00510
docs(agent): clarify config safeguards
2026-11-11 13:51:21 +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
Penguin Secret Agency
8be08ee773
feat(llm): 新增 UberLLM provider ( #7302 )
...
* feat(llm): 新增 UberLLM provider
* fix(llm): 调整 UberLLM 排序值
与 cheapaimodel 的排序修复协同:cheapaimodel 使用 60、GitHub Copilot 顺延为 61 后,UberLLM 顺延为 62,保持目录排序值唯一。
---------
Co-authored-by: sang nguyen <sangnguyen@sangs-MacBook-Pro-5.local >
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-11-11 10:45:46 +08:00
Nicho Deng
192bd7d5b8
feat(llm): 新增 cheapaimodel provider ( #7303 )
...
* feat(llm): 新增 cheapaimodel provider
* fix(llm): 修正 cheapaimodel 排序冲突
cheapaimodel 与 Obscurify.ai 同为 59,合并后会留下重复排序值。将 cheapaimodel 调整为 60,GitHub Copilot 顺延为 61,保持新预设位于 Obscurify.ai 之后。
---------
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-11-11 10:44:50 +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
Huyvux12
dcdebe366a
fix(module): report filter and subtitle modules as available without probing ( #7357 )
2026-11-11 07:00:01 +08:00
flippedyizheng
e930296935
fix(u115): avoid blocking worker threads for 3600s during rate-limit cooldown ( #7356 )
2026-11-11 06:58:26 +08:00
jxxghp
c1c505358d
chore(test): preserve ruff debt baseline
2026-11-10 19:51:38 +08:00
jxxghp
d5f1745d8e
test(formatting): cover configured lyric extensions
2026-11-10 19:47:51 +08:00
jxxghp
7e1ac758d7
fix(transfer): make lyric suffixes configurable
2026-11-10 19:38:27 +08:00
jxxghp
8d4c6eb7c1
fix(transfer): unify media sidecar handling
2026-11-10 18:43:31 +08:00
jxxghp
ab608d45b9
fix(browser): use pre-license CloakBrowser release
2026-11-10 18:26:57 +08:00
jxxghp
48b20d3dfb
fix(transfer): keep music companions in manual batches ( #7350 )
2026-11-10 17:43:35 +08:00
jxxghp
d0fb0a21a8
fix(agent): make session_search sort Gemini compatible
2026-11-10 17:24:53 +08:00
jxxghp
af963b47b3
test(music): cover strm track parsing branches
2026-11-10 07:22:35 +08:00
jxxghp
a4ccd86d85
fix(torrent): support traditional first-download prompts
2026-11-10 07:05:07 +08:00
Jaylen.Mar
2ecedc25ce
fix: 修复音乐 STRM 整理的曲序丢失与目标文件名重复扩展名 ( #7316 )
...
strm 未列入音频扩展名,音乐解析走不到文件分支,曲序与曲名均无法识别,
导致整理时大量失败并可能写出 xxx.strm.strm。本次补充 strm 后缀,并补齐
两种常见命名形态的曲序提取。
- 扩展名列表补 strm,使 STRM 曲库走与普通音轨一致的解析路径
- 新增四段式「艺人 - 专辑 - 序号 - 曲名」处理:从右切出曲名与序号,
专辑名含分隔符时也能正确切分;前缀单独解析回填艺人与专辑
- 新增四位补零「0101 - 曲名」处理,按碟号曲号拆分;仅接受 0 开头,
避免 1812、1999、2023 等作品名与年份被误判
- 真实文件名的扩展名不再带进曲名,消除 xxx.strm.strm;点分种子标题
仍保留扩展名参与格式识别
2026-11-10 06:58:48 +08:00
Huyvux12
02856727dd
fix(download): resume paused magnet to fetch metadata before episode selection ( #7348 )
2026-11-10 06:56:10 +08:00
jxxghp
6d9cf06085
fix(download): accept unique video for mapped single episode
...
## 问题
识别阶段把累计集号换算为季集后,单集种子的物理文件仍可能保留原始集号。qBittorrent 和 Transmission 只按文件名解析集号,导致唯一视频文件被判定为未找到目标集数,任务停留在暂停状态。
## 修复
- 当本次只请求一集且种子只有一个视频文件时,按唯一视频文件兜底选集;多视频文件和多集视频继续严格按解析集号匹配。
- 下载历史结算沿用相同边界,避免任务启动后原始累计集号再次被过滤为空明细。
- 覆盖 qBittorrent、Transmission,以及 durable/普通下载历史写入路径。
## 验证
- 相关下载与历史回归:244 passed, 12 skipped
- 完整测试:19427 passed, 21 skipped;22 个既有基线失败与本次改动无关,已在干净 v3 checkout 复跑确认
- Pylint(3 个生产文件):10.00/10
2026-11-09 22:52:37 +08:00
Huyvux12
55da2238df
fix(jellyfin): 混合内容库使用 mixed 路由而非不存在的 library 路由 ( #7344 )
2026-11-09 22:12:20 +08:00
jxxghp
549f3f32d1
fix(subscribe): retry identity conversion during metadata checks
2026-11-09 19:56:13 +08:00