109 openclaw commits, +48K / -43K: Discord and Telegram thread hardening

Signal
109 commits, +48,615 / -43,241 against openclaw: near-parity churn, heavy rewrite day Discord got a target-type-imports fix and username-lookup gating Telegram DM-thread sessions stopped getting dropped (#2731), and forum group non-threaded messages are now ignored cleanly
Evidence
openclaw: 109 commits, +48,615 / -43,241
Discord: fix target type imports and Discord: gate username lookups: two Discord-side commits back-to-back, one typing, one rate-hygiene
fix: keep telegram dm thread sessions (#2731) (thanks @dylanneve1): DM thread-id was being treated like a group thread; regular DMs were losing context
fix(telegram): ignore message_thread_id for non-forum group sessions: same bug’s opposite tail, patched same day
Update wizard header with new ASCII art: cosmetic, but visible to every new install
Additions and deletions nearly matched: 5,374-line net delta on 48K lines touched
Near-parity churn is usually a rewrite. If I am adding roughly the same number of lines I am deleting, I am not extending surface; I am reshaping it. The thread-handling code almost certainly got pulled apart and put back together differently.
So What
This is threading-model-bug day. Two adjacent Telegram commits catch opposite sides of the same misreading: DM thread-ids being conflated with group thread-ids. The PR-plus-follow-up pattern from yesterday repeats: contributor catches the entry point, I patch the exit. Dylanneve1’s PR fixed the case where a DM was losing its context because the thread_id was being read as a group identifier. My follow-up fixed the inverse: non-forum groups were sometimes seeing message_thread_id populated when they should not have it.
Discord got typing hygiene in the same sweep, which points at a chat-platform sweep rather than coincidence. Two Discord commits and two Telegram commits on threading-shaped bugs inside the same 109-commit window is either “I finally sat down and fixed all the platform-handler bugs” or “the channel abstraction leaked and I am patching the leak everywhere it shows.” The ratio of additions to deletions suggests the former: if it were just patching leaks, I would expect lopsided additions.
The wizard ASCII art update is purely cosmetic but it shows up on every new install, which means it is the first visual impression for anyone running the wizard today. Easy to dismiss, but first impressions persist.
What’s Next
Threading semantics now differ per platform (Telegram forum groups vs non-forum, Discord threads). Is there a unified thread-id abstraction hiding here, or do the platforms just diverge? The cost of abstracting too early is you lock in the wrong model. The cost of not abstracting is you patch the same bug twice on different platforms, which is exactly what today was.
The Discord username-lookup gating is a rate-limit defense. If it works, I should see fewer 429s from Discord in the next week. If not, the gate is too loose. Rate-limit gates are always a balance; too tight and usable lookups get blocked, too loose and Discord throttles us anyway. The near-parity churn (48K added against 43K deleted) is also the kind of day that quietly rebuilds confidence: the test suite held up through that much movement, which suggests the consolidation work from 01-23 paid dividends. Big rewrite days without a fast test suite are terrifying; with one, they are just work.
The contributor-then-maintainer pattern is now showing up two days in a row. That is worth pinning because it is a workflow I can optimize for. If outside contributors consistently catch the entry-point bugs and I catch the exit-point bugs, I should be explicit about that expectation in the contribution docs: “if you fix this, expect a follow-up patch from me that covers the inverse.” It sets the right expectation and avoids anyone feeling their PR was incomplete. It also gives me cover to ship the inverse patch without feeling like I am stepping on the contributor.
Log
- Sessions: 0 across 0 projects, 0m total
- Top projects: none (no session telemetry)
- Commits: 109 across 1 repos (48615 +, 43241 -)
- Top repo: openclaw
- Cost: not tracked