jxxghp
|
f7fe0c8fe0
|
chore(types): govern database backup application service
|
2026-10-16 16:29:45 +08:00 |
|
jxxghp
|
9ad0c10115
|
refactor(types): describe sync and async configuration reload callbacks
|
2026-10-16 16:28:47 +08:00 |
|
jxxghp
|
81dea8e2ef
|
refactor(types): define server reporting payload mappings
|
2026-10-16 16:17:08 +08:00 |
|
jxxghp
|
12f64bab7d
|
refactor(types): specify text utility input and return contracts
|
2026-10-16 16:14:40 +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
|
5e14615dce
|
refactor(types): govern raw plugin metadata mappings
|
2026-10-16 15:49:36 +08:00 |
|
jxxghp
|
7f61662fae
|
refactor(types): declare legacy settings update result
|
2026-10-16 15:45:51 +08:00 |
|
jxxghp
|
02fb8953b4
|
refactor(types): preserve retry and timing decorator contracts
|
2026-10-16 15:42:50 +08:00 |
|
jxxghp
|
bb31275c41
|
docs: refresh source metrics after download integration
|
2026-10-16 15:15:33 +08:00 |
|
jxxghp
|
3ee36342bd
|
refactor(types): prove acquired plugin mutation context
|
2026-10-16 15:15:17 +08:00 |
|
jxxghp
|
0297216794
|
refactor(types): preserve memory decorator call signatures
|
2026-10-16 15:15:17 +08:00 |
|
jxxghp
|
ca15f05038
|
refactor(types): govern plugin lifecycle configuration
|
2026-10-16 15:15:17 +08:00 |
|
jxxghp
|
2d7af4b0a7
|
refactor(types): govern stored plugin configuration values
|
2026-10-16 15:15:17 +08:00 |
|
jxxghp
|
97c92dd395
|
docs: refresh source metrics after upstream integration
|
2026-10-16 13:27:18 +08:00 |
|
jxxghp
|
967860e830
|
refactor(types): specify plugin clone configuration values
|
2026-10-16 13:25:40 +08:00 |
|
jxxghp
|
ece46052aa
|
refactor(types): preserve configured service schema types
|
2026-10-16 13:25:40 +08:00 |
|
jxxghp
|
bd21d8a6bf
|
refactor(types): specify localization catalog value boundaries
|
2026-10-16 13:25:40 +08:00 |
|
jxxghp
|
68a6504a92
|
refactor(types): govern filesystem worker request and response contracts
|
2026-10-16 13:25:40 +08:00 |
|
jxxghp
|
8c59a89d57
|
fix(transfer): debounce monitored file success notifications (#7026)
|
2026-10-16 13:24:31 +08:00 |
|
jxxghp
|
7b3f6fb9d9
|
refactor(types): keep resource response import type only
|
2026-10-16 12:46:25 +08:00 |
|
jxxghp
|
8a39ece678
|
refactor(types): narrow RSA key verification and key derivation
|
2026-10-16 12:46:24 +08:00 |
|
jxxghp
|
802b7ae9c7
|
refactor(types): govern resource response and proxy types
|
2026-10-16 12:46:24 +08:00 |
|
jxxghp
|
dd3bd909ce
|
refactor(types): align database backup process runner contract
|
2026-10-16 12:46:24 +08:00 |
|
jxxghp
|
44f9528a21
|
refactor(types): preserve deprecated callable signatures
|
2026-10-16 12:45:57 +08:00 |
|
ranzhigg
|
383fb82b89
|
fix(transmission): normalize raw fallback progress (#7017)
* fix(transmission): normalize raw fallback progress
* fix(transmission): satisfy type ratchet for progress helper
Annotate and normalize the fallback progress helper so the stricter V3 typing gate does not regress.
Co-authored-by: Codex <codex@openai.com>
* docs: sync mypy metric after progress fix
---------
Co-authored-by: ranzhigg <ranzhigg@users.noreply.github.com>
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
|
2026-10-16 12:27:33 +08:00 |
|
jxxghp
|
33213e8ac3
|
refactor(types): govern streaming platform lookup cache
|
2026-10-16 12:13:53 +08:00 |
|
jxxghp
|
e06a051d7f
|
refactor(types): govern singleton and remove thread metaclass ignore
|
2026-10-16 11:35:14 +08:00 |
|
jxxghp
|
55f4290c79
|
refactor(types): type singleton construction and cached instances
|
2026-10-16 11:34:11 +08:00 |
|
jxxghp
|
3858a82852
|
refactor(types): align sensitive event field lookup key types
|
2026-10-16 11:13:47 +08:00 |
|
jxxghp
|
a59c9bb94e
|
refactor(types): govern event dispatch callback types
|
2026-10-16 11:12:37 +08:00 |
|
jxxghp
|
2e897d9fe5
|
refactor(types): govern event handler binding contracts
|
2026-10-16 11:10:46 +08:00 |
|
jxxghp
|
e1b6d478e6
|
refactor(types): govern event registry and snapshot contracts
|
2026-10-16 11:08:28 +08:00 |
|
jxxghp
|
37a5787bf3
|
refactor(types): govern interpreter environment detection
|
2026-10-16 10:55:16 +08:00 |
|
jxxghp
|
65e86f8f3d
|
refactor(types): govern torrent cache recognition result types
|
2026-10-16 10:54:03 +08:00 |
|
jxxghp
|
e67f602c0d
|
refactor(types): govern IP address helpers with strict mypy
|
2026-10-16 10:52:52 +08:00 |
|
jxxghp
|
95e936f1b3
|
refactor(types): govern reflection helpers without changing runtime signatures
|
2026-10-16 10:51:22 +08:00 |
|
jxxghp
|
9d5ad08e08
|
refactor(types): govern agent display contract with strict mypy
|
2026-10-16 10:03:27 +08:00 |
|
jxxghp
|
226a13075c
|
refactor(types): govern correlation middleware with strict mypy
|
2026-10-16 09:40:38 +08:00 |
|
jxxghp
|
5457d131b5
|
refactor(types): govern challenge detection with strict mypy
|
2026-10-16 09:37:46 +08:00 |
|
jxxghp
|
e59f1de518
|
refactor(types): govern URL query composition with strict mypy
|
2026-10-16 09:35:28 +08:00 |
|
jxxghp
|
70511cc4d2
|
refactor(types): govern token stream with strict mypy
|
2026-10-16 09:27:01 +08:00 |
|
jxxghp
|
0ae48fb281
|
refactor(types): govern media title parsing with strict mypy
|
2026-10-16 09:21:27 +08:00 |
|
jxxghp
|
4955b7b9ea
|
fix: harden backend isolation and execution safety
|
2026-10-16 09:11:28 +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 |
|
jxxghp
|
63c8c0d71a
|
fix(transfer): render aggregated success notifications with user template (#7007)
|
2026-10-15 13:10:43 +08:00 |
|
Opportunity
|
5e476e2419
|
fix(indexer): 修复 Discuz 用户分享率解析 (#7006)
|
2026-10-15 13:01:57 +08:00 |
|
jxxghp
|
ea60ed0fd6
|
feat(community): recognize GitHub contributions and honor levels
|
2026-10-15 12:11:36 +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 |
|
@huluohu
|
76a4e33e44
|
fix(telegram): Rich Message 失败时保留原始错误并降级纯文本 (#6993)
* fix(telegram): Rich Message 失败时保留原始错误并降级纯文本
Telegram Rich Message 发送失败时存在三个叠加问题:
1. `__send_rich_message` 用固定文本 `RetryException("发送 Telegram Rich
Message 失败")` 包装异常,`str(e)` 里没有 Telegram 返回的 description,
日志只剩“发送失败”四个字,无法判断是内容非法、方法不存在还是格式问题。
2. 内容非法这类确定性失败(400)同样走满3 次退避重试(3s、6s),
期间同一条坏消息反复阻塞,且最终报错仍无有效信息。
3. 失败即丢失通知:Rich Message 发不出去时没有任何降级路径,
整条通知直接消失。
改动:
- 异常文本改为 f"...失败:{err}",保留 Telegram 原始 description 与错误码。
- 新增 `NonRetryableTelegramError`(继承 `ImmediateException`)与
`_is_non_retryable_api_error`,400 立即抛出以跳过 retry 退避;
5xx 与网络异常保持原有重试策略。
- `send_msg` / `edit_msg` 增加纯文本降级出口,Rich Message 失败时
用不带格式解析的纯文本重发,保证通知内容不丢失。
- 降级路径显式传 `parse_mode=""`:`TelegramBotApi._parse_mode` 在参数为
`None` 时会回落到客户端默认的 MarkdownV2,那正是 Rich Message 已经
失败过的解析路径,漏传会让降级重演同一个错误。
新增 tests/test_telegram_rich_message_fallback.py(14 项)覆盖错误信息保留、
400 免重试、5xx 仍重试、发送与编辑两条降级路径,以及 parse_mode 回落陷阱的
回归防护。
* fix(telegram): 修正 Rich Message 降级路径的 mypy 与架构基线
上一提交引入的两处门禁失败:
1. `__send_plain_fallback` 用 `**self._topic_kwargs(chat_id)` 展开参数,mypy
把 `**` 匹配到 `send_message` 第 5 个形参 `disable_web_page_preview`
(Optional[bool]),判定 `dict[str, int]` 不兼容,arg-type 由 1 增至 2。
改为显式传 `message_thread_id`,`_topic_kwargs` 只可能产出该键。
2. 新增 `app.schemas.exception` 导入带来 2 条依赖边,宿主基线由 9542 变为
9544。已用 `baseline.py --write-host` 固化,其余 3 个基线文件字节不变。
连带影响:docs/architecture-overview.md 与 docs/refactor/
optimization-checklist.md 硬编码了边数,`test_architecture_documents_
match_generated_quality_metrics` 断言两处必须与基线一致,同步为 9,544。
门禁与测试验证:
- scripts/architecture/mypy_ratchet.py exit 0(9163 个类型错误)
- scripts/architecture/baseline.py --check-host exit 0
- pytest(fallback + contract + telegram) 75 passed
---------
Co-authored-by: jxxghp <jxxghp@gmail.com>
|
2026-10-15 07:32:16 +08:00 |
|