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
a432906475
fix(download): 按所选剧集组重新计算缺失季集 ( #7253 )
...
* fix(download): recalculate missing episodes for episode groups
Refs #7252
* test: align episode group regression import spacing
2026-10-31 10:32:50 +08:00
jxxghp
f5bd3458a6
fix(subscribe): restore strict media identity checks
2026-10-30 22:36:51 +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
16cd9f75ed
fix(apppush): deliver business notifications to all active users ( #7235 )
2026-10-29 21:43:18 +08:00
paysen
b55d9bd167
fix(transfer): recover legacy results and retain pending sources ( #7232 )
2026-10-29 17:06:36 +08:00
Cat
252b702875
fix(site): keep redirect failures from aborting site requests ( #7227 )
2026-10-28 18:43:19 +08:00
Aqr-K
b94b1c1496
fix(media): invalidate album cache when CUE content changes ( #7203 )
2026-10-27 05:42:40 +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
251513f580
fix(search): honor the actual site rate limit when deferring
...
Refs #7187
2026-10-26 09:02:20 +08:00
jxxghp
046d4758e6
fix(search): persist processed candidates across queue resumes
...
Refs #7183
2026-10-26 08:50:04 +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
b51f93f60f
fix(subscribe): reconcile inferred media type conflicts ( #7166 )
2026-10-23 23:08:10 +08:00
jxxghp
e1b0d5b4bf
fix(indexer): identify HDDolby API connection failures ( #7164 )
2026-10-23 21:04:49 +08:00
jxxghp
4d32f25fe4
fix(indexer): honor HDDolby API resource URL ( #7158 )
2026-10-23 17:48:59 +08:00
ranzhigg
0797d548b3
fix(transfer): tolerate disappeared previous target ( #7155 )
2026-10-23 15:19:29 +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
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
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
9d534d1954
fix(search): restore complete packs before initial parts
2026-10-22 07:37:31 +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
jxxghp
43424e592c
fix(subscribe): 全集洗版始终使用洗版规则筛选资源 ( #7111 )
2026-10-20 20:22:18 +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
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
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
80a92ddb29
fix(notification): preserve download template titles
2026-10-20 12:09:05 +08:00
JontyLee
80ce5c1186
fix(music): 重复提交守卫改按整理交付事实判定,单曲移出媒体库不再重投整包 ( #7079 )
2026-10-19 17:58:52 +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
jxxghp
9e02d26292
fix(telegram): omit buttons without valid actions ( #7074 )
2026-10-19 15:47:28 +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
Ning Yang
3b4115957f
fix(music): honor umask when publishing lyric sidecars ( #7065 )
...
歌词临时文件在原子替换前使用与其他刮削文件一致的 0666 & ~UMASK 权限,避免 TXT、LRC 和 Lyricsfile 沿用临时文件的 0600 权限,导致不同 UID 的媒体服务器无法读取。
覆盖写入同样遵循部署权限;保留链接种源保护和失败时清理临时文件的行为。
验证:198 项相关 pytest 回归通过;变更文件 Pylint、Ruff ratchet、mypy ratchet、复杂度 ratchet 和 git diff --check 通过。
2026-10-19 07:31:56 +08:00
jxxghp
05967cdc0f
fix(music): sync local covers during automatic transfers ( #7064 )
2026-10-18 22:04:24 +08:00
Q
8b3eb22748
fix(search): bound long site cooldowns during paged searches ( #7056 )
...
分页搜索在站点持续冷却时无法结束本轮收集,已缓存候选因此长期不能提交。
为来源持久化长冷却次数,仅在 cooldown 且等待至少 600 秒时累计;达到三次后仅停止当前轮次,下一轮重新搜索,成功取页后清零。
审查修复:
- 冷却时间与当前时间采用同一秒精度,避免恰好 600 秒的等待漏计。
- 临时下载票据重取共享有限等待计数,保留末页来源的实际冷却时间;重启不清零,也不提前重复请求。超过上限后放弃无法恢复票据的候选,继续提交可用候选。
- 补充虚拟时钟、检查点恢复、同源多个候选回退、旧检查点兼容与成功后清零的回归覆盖及中文注释。
验证:本地相关 pytest 217 passed;changed-file Pylint、Ruff ratchet、结构复杂度、849 个源文件的 mypy 和宿主架构快照通过。合并前核对最终 PR head 的六片全量测试、覆盖率、Pylint 和架构门禁。
2026-10-18 09:38:17 +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
1b52da5a8a
test: cover dynamic subscription rule selection
2026-10-17 13:07:16 +08:00