jxxghp
464d23a9d0
refactor(types): narrow playback position before comparison
2026-10-16 17:36:07 +08:00
jxxghp
acb9b85f90
refactor(types): type notification helper initialization
2026-10-16 17:19:49 +08:00
jxxghp
b9871b1288
refactor(types): type downloader helper initialization
2026-10-16 17:18:42 +08:00
jxxghp
0c6b86cde0
refactor(types): constrain service configuration contracts
2026-10-16 17:16:46 +08:00
jxxghp
0518b1b5d6
refactor(types): declare persisted storage configuration records
2026-10-16 17:14:24 +08:00
jxxghp
572e2e921e
refactor(types): declare configured customization values
2026-10-16 17:09:59 +08:00
jxxghp
08a00c0803
refactor(types): declare configured release group values
2026-10-16 16:55:57 +08:00
jxxghp
16e2c979f4
refactor(types): type server sharing payload contracts
2026-10-16 16:54:50 +08:00
jxxghp
1a62829f6d
refactor(types): infer configuration writes through governed executor
2026-10-16 16:38:54 +08:00
jxxghp
b759378167
chore(types): govern database application facade
2026-10-16 16:32:33 +08:00
jxxghp
065a787e1e
refactor(types): describe database cleanup batch report fields
2026-10-16 16:31:44 +08:00
jxxghp
f7fe0c8fe0
chore(types): govern database backup application service
2026-10-16 16:29:45 +08:00
jxxghp
81dea8e2ef
refactor(types): define server reporting payload mappings
2026-10-16 16:17:08 +08:00
jxxghp
ba9a7b074f
refactor(types): preserve per-call agent task transaction results
2026-10-16 16:08:18 +08:00
jxxghp
fd22007ce4
refactor(types): align plugin configuration command contracts
2026-10-16 15:52:29 +08:00
jxxghp
8c59a89d57
fix(transfer): debounce monitored file success notifications ( #7026 )
2026-10-16 13:24:31 +08:00
jxxghp
11c4b0394a
fix(events): preserve video metadata when replaying durable events ( #7024 )
2026-10-16 12:44:39 +08:00
jxxghp
7e24ce62c3
fix(plugin): restrict update badges to bound repositories
2026-10-16 12:29:20 +08:00
jxxghp
70aa163568
fix(search): reject punctuated English word fragments ( #7019 )
2026-10-16 12:28:37 +08:00
jxxghp
65e86f8f3d
refactor(types): govern torrent cache recognition result types
2026-10-16 10:54:03 +08:00
jxxghp
4955b7b9ea
fix: harden backend isolation and execution safety
2026-10-16 09:11:28 +08:00
jxxghp
0eb79ceee2
fix(storage): preserve shared category directories during media cleanup ( #7012 )
2026-10-16 00:33:47 +08:00
InfinityPacer
9181ad2b65
feat(community): serve community medals from the Wiki registry behind remote switches
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:28:58 +08:00
InfinityPacer
8249450014
chore(settings): regenerate system settings catalog
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:28:58 +08:00
jxxghp
ea60ed0fd6
feat(community): recognize GitHub contributions and honor levels
2026-10-15 12:11:36 +08:00
jxxghp
2c889a1735
fix(subscribe): 站点本地流控按限流窗口退避 ( #6996 ) ( #7001 )
...
订阅分页搜索遇到站点本地流控(limit_interval/limit_count/limit_seconds)
拒绝时只按秒级 cooldown 反复重试,在整个限流窗口内持续触发风控。现在:
- 本地流控被拒时按站点配置窗口计算退避(访问间隔与计数窗口取最大值,
并多留 1 秒越过窗口的严格比较边界);
- 同一退避写入站点预算冷却,窗口内其它订阅任务不会继续访问该站点;
- 本地流控没有发出请求,不计入连续失败与错误退避类别。
2026-10-15 09:14:13 +08:00
jxxghp
91b70ee2ce
fix(wechatclawbot): 识别 item_list 媒体入站消息并修正 CDN 探测判定 ( #7000 )
...
* fix(wechatclawbot): 识别 item_list 媒体入站消息并修正 CDN 探测判定 (#6992 )
iLink 下行媒体报文把附件放在 item_list 子项中,原解析存在三处缺口,
图片/语音/文件入站消息会被判为空消息丢弃:
- item_list 仅按数字 type 处理 1 文本/2 图片/5、6 文件,缺少 3 语音/
4 文件/5 视频分派;改为按实际出现的子项键名分派,同时兼容历史
type=5/6 文件报文。
- 附件引用只读取顶层 url/aeskey,识别不了 image_item.media.full_url /
media.aes_key 等嵌套字段;统一按“顶层优先、media 子对象兜底”提取。
- 消息被解析为空时直接返回 None,日志只剩“未识别到有效消息”;补充
渠道级诊断日志,输出 message_id 与截断后的原始报文。
另外把“微信 ClawBot 媒体 CDN”网络探测的 400 纳入成功状态码:该 CDN
对无参数裸请求固定返回 400,此前探测项恒定误报失败。
tests/test_wechatclawbot.py 整文件迁移为 pytest 原生,并新增 item_list
媒体解析、仅图片消息可入链、空消息诊断日志回归;nettest 契约测试补充
CDN 400 探测用例。复杂度与 mypy 低水位随债务下降同步固化。
* fix(wechatclawbot): 同步架构清单中的 mypy 债务数字 (#6992 )
2026-10-15 09:02:59 +08:00
flippedyizheng
3484e6a82d
fix(scheduler): skip CookieCloud schedule when credentials are missing ( #6999 )
...
定时同步仅在来源与凭据完整时注册,并在相关配置变更时重建任务;
手动同步入口保持不变。
Fixes #6995
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-15 07:27:22 +08:00
jxxghp
57b883d2bf
feat(music): add global local cover control
2026-10-15 07:20:44 +08:00
jxxghp
72c8bff312
feat(music): preserve local covers and fall back after online scraping fails
2026-10-14 23:15:41 +08:00
jxxghp
c4cd6c8ac4
fix(download): confirm tracker forms and blacklist invalid torrents
2026-10-13 21:54:37 +08:00
jxxghp
8cbba9916e
fix(subscribe): prefer complete packs for initial TV downloads
2026-10-13 21:16:22 +08:00
jxxghp
48cffca3a1
feat(transfer): aggregate successful notifications by batch ( #6981 )
2026-10-13 17:21:17 +08:00
jxxghp
98bd038623
fix(music): reconcile album completion and prevent duplicate downloads
...
Recover complete release coverage from successful local transfers and audio tags/CUE before subscription searches. Keep release-group and album boundaries, and reject completed torrent hashes before downloader submission.
2026-10-13 17:05:57 +08:00
JontyLee
a94dac60a9
fix(music): fall back to tags when cue index is broken for split albums ( #6978 )
2026-10-13 15:32:19 +08:00
jxxghp
edc719596d
feat(update): prepare latest updates for a single restart
2026-10-13 12:50:01 +08:00
jxxghp
86c7fccfd5
feat(subscribe): persist business activity with scoped details
2026-10-12 23:43:01 +08:00
jxxghp
bd1e6eb899
fix(agent): separate public API queries from bound user operations
2026-10-12 07:30:35 +08:00
jxxghp
391f55df40
feat(subscribe): add isolated execution logs with authorized streaming ( #6963 )
2026-10-11 22:18:37 +08:00
jxxghp
453a3479aa
fix(music): keep detached audio readable on ACL mounts ( #6961 )
2026-10-11 13:24:29 +08:00
jxxghp
0cbdbf9b1d
fix(search): cap paging and stop unmatched IMDb sources
2026-10-11 07:46:38 +08:00
InfinityPacer
25aaf3a32b
feat(plugin): add agent pet extension contract
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 04:08:15 +08:00
InfinityPacer
338687bee8
fix(download): treat blank save path as default directory
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-10 23:48:50 +08:00
jxxghp
dd90883c5d
fix(torrent): respect tracker rate limits and quota cooldowns
...
Recognize explicit JSON rate limits before torrent parsing and short retries. Preserve per-call quota errors through download preparation so subscription cooldowns cover the tracker window.
Refs #6950
2026-10-10 23:34:35 +08:00
jxxghp
bb29451222
fix: isolate unhandled durable transfer failures
2026-10-10 12:17:07 +08:00
jxxghp
e9f0c693e2
fix(torrent): retry transient downloads and shorten empty-content cooldown
2026-10-10 00:05:22 +08:00
jxxghp
4caa1885ae
Merge pull request #6928 from cwd0204/style/ruff-autofix
2026-10-09 18:11:43 +08:00
InfinityPacer
6034dcc880
fix(workflow): drop shared context on fork and legacy pickle context
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-09 13:56:35 +08:00
freeman
f3ad81b39e
style: apply safe ruff auto-fixes and exempt startup late imports
...
Run `ruff check app tests scripts --fix` with the configured rule set
(E4/E7/E9/F/I): import sorting (I001), f-strings without placeholders
(F541), lambda/variable/unused-import cleanups that ruff marks safe.
Nine files whose only ruff debt sits next to pre-existing pylint
import-resolution errors (lazy exports, sys.path script imports) or
whose "unused" imports are reached through attribute access by tests are
left untouched so the changed-file pylint gate and the benchmark tests
stay green; their diagnostics remain in the baseline.
app/startup/lifecycle/__init__.py and app/main.py import business
modules after cache composition, import-path and stdio setup on purpose
(the source comments document the contract), so declare E402
per-file-ignores for them instead of adding per-line noqa.
Ruff ratchet watermark drops from 498 to 100; sync the baseline fixture
and the optimization checklist figure.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-09 13:29:09 +08:00
jxxghp
233be41b49
Merge pull request #6925 from cwd0204/fix/login-throttle
2026-10-09 13:04:40 +08:00