Commit Graph

467 Commits

Author SHA1 Message Date
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