Peter Steinberger
3f402f2c48
fix(telegram): suppress replies superseded during adoption ( #103965 )
...
* fix(telegram): preserve supersession through async adoption
* fix(auto-reply): stop superseded queued turns after adoption
* test(telegram): use dispatcher delivery return type
2026-07-10 23:10:05 +01:00
Vincent Koc
c5bdd64442
fix(telegram): detach adopted turns from reply fence ( #103952 )
2026-07-10 14:36:46 -07:00
JC
59e95fe3fd
feat: support GPT-5.6 Ultra across OpenClaw and Codex runtimes ( #98021 )
...
* feat: support GPT-5.6 Ultra across agent runtimes
Co-authored-by: J Cai <anyech@gmail.com >
* fix: keep harness projections discovery-free
* fix(codex): mirror V2 native subagent tasks
* chore: refresh plugin SDK surface budgets
* test: expose Ultra wire effort proof
* test(cron): avoid hoisted mock initialization race
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 15:23:24 +01:00
Vincent Koc
f79e885985
fix(telegram): harden spooled turn adoption ( #103695 )
...
* fix(telegram): harden spooled turn adoption
* fix(telegram): retain fence through adoption
* fix(auto-reply): await queued admission hooks
* fix(telegram): clean up adoption integration
* fix(telegram): break spool retry import cycle
* fix(telegram): serialize spool timeout with adoption
2026-07-10 07:08:35 -07:00
Yuval Dinodia
b7ab62c2cf
fix(mattermost): preserve text-block boundaries in draft preview ( #87322 ) ( #87449 )
...
* fix(mattermost): preserve text-block boundaries in draft preview (#87322 )
* fix(mattermost): preserve block preview boundaries
* fix(mattermost): reset progress at tool boundaries
* docs(plugin-sdk): refresh API baseline
* fix(mattermost): group parallel tool previews
* fix(mattermost): stage tool previews before awaits
* fix(mattermost): satisfy tool boundary return contract
* fix(mattermost): serialize preview block generations
Co-authored-by: Yuval Dinodia <yetvald@gmail.com >
* fix(mattermost): preserve complete block previews
* test(agents): align streaming assertions
* test(telegram): align reply pipeline mock
* fix(plugin-sdk): keep reply prefix options compatible
* test(mattermost): exercise threaded final participation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 14:32:11 +01:00
Alix-007
26aef8c48b
fix(telegram): recover when media downloads stall ( #103020 )
...
* fix(telegram): add request timeout to media file downloads
* fix(telegram): bound inbound media startup
Co-authored-by: llagy009 <0668001470@xydigit.com >
Co-authored-by: Alix-007 <li.long15@xydigit.com >
* docs(changelog): note Telegram media recovery
* fix(net): normalize preflight abort errors
* test(media): accept nullable request signals
* fix(telegram): abort webhook media on shutdown
* fix(telegram): own webhook media cancellation
* fix(telegram): retry aborted media groups
* fix(telegram): cancel isolated media work
* fix(telegram): stop draining ended polling cycles
* fix(telegram): separate cycle media cancellation
* fix(telegram): preserve live polling media fallbacks
* chore: move release note to PR body
---------
Co-authored-by: llagy009 <0668001470@xydigit.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 14:31:16 +01:00
Ayaan Zaidi
d11d1d0ee6
fix(telegram): scope reply-fence abort authority to pre-adoption dispatch
2026-07-10 17:08:31 +05:30
Gorkem Erdogan
a6b907825a
fix(telegram): attribute the bot's own chat-window messages as self ( #102507 )
...
* fix(telegram): label cached bot replies as self
Co-authored-by: Gorkem Erdogan <gorkem.erdogan@outlook.com >
* fix(telegram): preserve optional cached senders
* fix(telegram): recognize business bot senders
* test(telegram): isolate self-attribution fixtures
* fix(telegram): ignore fake channel senders
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 10:19:13 +01:00
Ayaan Zaidi
d1a97f5503
test(telegram): fix promise-executor-return lint in adoption test
2026-07-10 14:32:11 +05:30
Ayaan Zaidi
77c84de510
fix(telegram): complete spooled updates at turn adoption, rescope ingress watchdog
2026-07-10 14:32:11 +05:30
Peter Steinberger
d133f28cfb
fix: preserve selected models through hot reloads and fallbacks ( #103510 )
...
* fix(agents): keep model fallback turn-local instead of persisting over user pins
* fix(telegram): use live config snapshots per operation
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
* test(telegram): fix config snapshot type coverage
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-07-10 08:26:33 +01:00
Peter Steinberger
add2c586c2
feat(slack): support native chart presentations ( #102635 )
2026-07-10 04:05:23 +01:00
Ayaan Zaidi
6da0af1cd3
fix(ci): use public plugin-sdk test seams and refresh generated surfaces
2026-07-10 07:53:37 +05:30
Ayaan Zaidi
0521d848bb
fix(telegram): fixed-length initData hash compare and base-path ws url
2026-07-10 07:53:37 +05:30
Ayaan Zaidi
00aad83f43
fix(telegram): harden mini app URL and page serving
2026-07-10 07:53:37 +05:30
Ayaan Zaidi
3c99adb9ca
feat(telegram): add dashboard mini app command
2026-07-10 07:53:37 +05:30
ZOOWH
e327a3dca1
fix(telegram): deliver content instead of throwing when tag overhead fills chunk ( #102999 )
...
* fix(telegram): deliver content instead of throwing when tag overhead fills chunk
When HTML tag overhead (open + close tags) exceeds the chunk limit,
appendText threw an error causing complete message delivery failure.
Instead, force the text into the chunk so the message is still delivered
even if the chunk slightly exceeds the limit.
Closes #102910
* fix(telegram): strip rich formatting when tag overhead fills chunk
When HTML tag overhead fills an empty chunk with no room for text, strip
rich formatting and retry as plain text instead of delivering an oversized
chunk or throwing. Orphan close tags from the stripped formatting are
skipped to keep the output well-formed and within the chunk limit.
This preserves the existing plain-text fallback paths in send.ts and
rich-message.ts.
Closes #102910
* fix(telegram): preserve delivery when HTML tag overhead overflows
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 01:05:51 +01:00
lsr911
6ad8a77b51
fix(telegram): use truncateUtf16Safe for raw update log truncation ( #102567 )
...
* fix(telegram): use truncateUtf16Safe for raw update log truncation
* refactor(telegram): own raw log bounds in formatter
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 11:11:35 +01:00
Miorbnli
18e80760a7
fix(channels): keep inbound log previews UTF-16 safe ( #102407 )
...
* fix(matrix): truncate inbound preview on UTF-16 code-point boundary
The matrix inbound verbose preview used bodyText.slice(0, 200) before logging.
When a supplementary-plane character (emoji, extended CJK) straddles the 200th
code unit, the slice splits its surrogate pair and emits a lone surrogate into
the verbose log line. Lone surrogates corrupt JSON log serialization, break
terminal rendering, and crash UTF-8-validating log shippers.
Use the shared truncateUtf16Safe helper (already used by the mattermost sibling
monitor after #101630 ) to keep complete surrogate pairs intact. No behavior
change for ASCII input; the preview is still capped at 200 code units.
Co-Authored-By: Claude <noreply@anthropic.com >
* test(matrix): fix inbound-preview test for lint and lib target
- Avoid String.prototype.isWellFormed (ES2024 lib): use the encodeURIComponent
well-formedness probe instead, which works on the project's TS lib target.
- Replace literal string concatenation with template strings to satisfy the
no-useless-concat lint rule. No behavior change in the assertions.
Co-Authored-By: Claude <noreply@anthropic.com >
* fix(channels): keep inbound log previews UTF-16 safe
* test(line): type verbose preview fixtures
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 07:32:55 +01:00
NIO
a3f00d32c9
fix(telegram): keep DM topic auto-rename user message UTF-16 safe ( #101781 )
...
* fix(telegram): keep DM topic auto-rename user message UTF-16 safe
Add surrogate-boundary regression for auto-topic label input truncation.
Co-authored-by: Cursor <cursoragent@cursor.com >
* test(telegram): tighten topic label boundary proof
---------
Co-authored-by: NIO <nocodet@mail.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 06:44:19 +01:00
Vincent Koc
238be4b849
test(release): refresh beta3 gate expectations
2026-07-08 15:55:50 -07:00
Vincent Koc
22ae651e9a
fix(channels): keep native think menus responsive ( #101926 )
2026-07-07 18:58:39 -07:00
Vincent Koc
1b6f3e43d1
refactor(deadcode): trim private helper exports ( #101886 )
2026-07-07 14:43:45 -07:00
Vincent Koc
e242c61400
refactor(deadcode): localize extension helpers ( #101860 )
2026-07-07 12:12:32 -07:00
Vincent Koc
fdc7892a6e
refactor: localize internal implementation types ( #101731 )
2026-07-07 07:41:04 -07:00
Peter Steinberger
a2a68d154b
fix(agent): preserve explicit recipient sessions ( #101507 )
...
* fix(agent): honor recipient session routing
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
* fix(agent): preserve canonical recipient routes
* fix(agent): require exact recipient routes
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
* fix(agent): harden recipient route resolution
* fix(imessage): require canonical recipient handles
* fix(agent): refine provider recipient exactness
* fix(agent): bound direct alias session routing
* fix(signal): preserve direct alias route type
* fix(agent): honor binding-scoped recipient sessions
* fix(routing): honor configured main session aliases
* fix(clickclack): align account-owned session routes
* fix(twitch): preserve canonical recipient sessions
* fix(routing): isolate stable outbound identities
* chore: defer recipient session changelog
* fix(sms): use dedicated channel SDK facade
---------
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
2026-07-07 10:07:13 +01:00
Ayaan Zaidi
01f6593ea5
fix(telegram): reduce durable empty-rich guard to skip
2026-07-07 14:14:03 +05:30
snowzlmbot
2f98e1fdb5
fix(telegram): address rich fallback proof review
2026-07-07 14:14:03 +05:30
snowzlmbot
982328218b
fix(telegram): harden rich send fallback and typing breaker
...
- Raise typing-breaker default from 2 to 5 consecutive failures via a
named constant, keeping explicit overrides intact.
- Extend rich-plain-fallback trigger map to classify
RICH_MESSAGE_CONTENT_REQUIRED alongside existing invalid-entity
errors so both durable and streaming send funnels benefit.
- Add empty rendered-rich-HTML guards before sendRichMessage in both
the durable chunk loop (send.ts) and the streaming delivery funnel
(delivery.send.ts), preventing doomed Bot API calls and preserving
later valid chunks.
- Add regression tests for the default typing breaker, delivery-side
and durable-side RICH_MESSAGE_CONTENT_REQUIRED fallback behavior.
2026-07-07 14:14:03 +05:30
NickNMorty
59097783e2
fix(markdown-core): CJK-friendly emphasis flanking so **标签:**正文 renders bold ( #101120 ) ( #101230 )
...
* test(telegram): reproduce CJK emphasis flanking bug
* fix(markdown-core): support CJK emphasis flanking
* fix(markdown-core): type CJK delimiter state (#101120 )
* fix(markdown-core): mirror markdown-it Unicode whitespace in CJK delimiter override
Preserves markdown-it isWhiteSpace classification (U+3000, U+00A0, U+2000-200A, etc.) before forcing CJK-adjacent delimiter flags, and adds U+3000/U+2009 regressions. Addresses clawsweeper P1 finding on #101230 .
* refactor(markdown): use maintained CJK flanking plugin
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 05:43:42 +01:00
Vincent Koc
84e5327720
fix(text): keep bounded outputs UTF-16 safe ( #101355 )
...
Co-authored-by: Alix-007 <li.long15@xydigit.com >
2026-07-06 21:33:24 -07:00
lzw112
da20b65231
fix(telegram): add UND_ERR_CONNECT_TIMEOUT to PRE_CONNECT_ERROR_CODES ( #101258 )
...
* fix(telegram): add UND_ERR_CONNECT_TIMEOUT to PRE_CONNECT_ERROR_CODES
UND_ERR_CONNECT_TIMEOUT occurs during TCP/TLS connect handshake,
before any HTTP request data is sent. Adding it to the pre-connect
set allows isSafeToRetrySendError to safely retry sendMessage when
undici's connect timeout fires — the message was never transmitted.
* test(telegram): cover connect-timeout retry funnels
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 05:33:02 +01:00
Mark
db38127c22
[codex] Allow reply_payload_sending to add portable buttons ( #98922 )
...
* fix(telegram): retry plugin callback submit text
* fix(telegram): harden plugin callback submit text
* fix(telegram): preserve plugin callback submit semantics
* fix(telegram): release callback dedupe after submit failure
* fix(telegram): settle skipped plugin callback submissions
* style(telegram): format public API exports
* chore: leave changelog to release generation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 20:17:41 +01:00
Vincent Koc
3ad77774f0
fix: carry 2026.7.1 stability repairs into main ( #101043 )
...
* fix(telegram): throttle reconnect delivery drains
(cherry picked from commit 7182c74d04 )
* fix(agents): honor aborts during session lock acquisition
(cherry picked from commit 6443c2a552 )
* fix(cli): prefer installed launcher package roots
(cherry picked from commit 37e1b324db )
* fix(e2e): allow Linux onboarding to finish
(cherry picked from commit 88192552a0 )
* fix(e2e): scrub single-plugin allowlists on Windows
(cherry picked from commit bee5dee521 )
* fix(e2e): preserve Windows config shape during updates
(cherry picked from commit a580a7fe3f )
2026-07-06 10:17:36 -07:00
ZZIPP
979d198fd1
fix(media): recognize m2a as MPEG audio ( #92167 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 17:48:37 +01:00
Dallin Romney
b29d472e41
refactor(qa): add canonical live channel adapters ( #99707 )
2026-07-06 09:24:34 -07:00
machine3at
1021784c85
fix(telegram): stop local listener and bot on retry loop non-recoverable error ( #100863 )
...
* fix(telegram): stop local listener and bot on retry loop non-recoverable error
* fix(telegram): reuse webhook shutdown on setup failure
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 17:09:34 +01:00
machine3at
dbb70549be
fix(telegram): pass proxy and apiRoot config when resolving runtime target usernames ( #100868 )
...
* fix(telegram): pass proxy and apiRoot config when resolving runtime target usernames
* fix(protocol,telegram): fix duplicate worktree exports and update resolveTargets test types
* fix(telegram): honor runtime routing in target resolution
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 17:06:18 +01:00
Vincent Koc
e311943700
refactor(telegram): localize private implementation types ( #100975 )
2026-07-06 08:37:16 -07:00
Vincent Koc
17777b3a9f
refactor: remove proven dead code across runtime surfaces ( #100823 )
...
* refactor: remove unused internal helpers
* refactor(ui): remove unused compatibility helpers
* refactor(android): remove unused talk cleanup shim
* refactor(android): remove orphaned legacy UI
* refactor: remove unused private exports
* refactor(docs-i18n): remove dead matcher and satisfy lint
2026-07-06 03:31:19 -07:00
lzw112
22dfb15048
fix(telegram): add missing 'action' retry context for sendChatAction ( #100762 )
...
* fix(telegram): add missing 'action' retry context for sendChatAction
* fix(telegram): cover all sendChatAction retry paths
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-06 02:33:57 -07:00
Lu Wang
314c53b814
fix(telegram): extract canonical rich block text ( #100570 )
2026-07-06 09:12:25 +00:00
Momo
e0d23cfc5a
fix(telegram): dedupe visible assistant prompt context ( #100573 )
...
Summary:
- Merged fix(telegram): dedupe visible assistant prompt context after ClawSweeper review.
Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(telegram): align directive reply prompt timestamps
Validation:
- ClawSweeper review passed for head 5c4cc7245e .
- Required merge gates passed before the squash merge.
Prepared head SHA: 5c4cc7245e
Review: https://github.com/openclaw/openclaw/pull/100573#issuecomment-4890518598
Co-authored-by: momothemage <niuzhengnan@163.com >
Approved-by: momothemage
2026-07-06 08:11:08 +00:00
lzw-xydt
7b68306949
fix(telegram): add missing "edit" retry context for editMessageTelegram ( #100543 )
2026-07-06 00:46:37 -07:00
Peter Steinberger
037ad2bdfb
feat(telegram): offer BotFather web app flow in setup help and docs ( #100540 )
2026-07-06 07:48:55 +01:00
clawSean
d84aabf642
feat: add channel pairing request hook ( #97733 )
...
* feat: add channel pairing request hook
* fix(plugin-sdk): keep pairing hook types internal
* docs: regenerate docs map
* docs: regenerate docs map
* docs: regenerate docs map
* fix(plugin-sdk): keep pairing hook types internal
* fix(plugin-sdk): keep pairing hook types internal
* docs: refresh plugin hook docs
* docs: refresh plugin hook docs
* docs: refresh plugin hook docs
---------
Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com >
Co-authored-by: Omar Shahine <omarshahine@users.noreply.github.com >
2026-07-05 19:11:58 -07:00
Moeed Ahmed
0e0f0b16cd
fix(telegram): show typing for accepted topic messages ( #99965 )
...
Co-authored-by: Moeed Ahmed <5780040+moeedahmed@users.noreply.github.com >
2026-07-05 18:36:49 -07:00
scoootscooob
7e7fc0075e
[codex] Honor all ack scope for room events ( #87433 )
...
* fix(discord): honor all ack scope for room events
* fix(channels): align all ack scope for room events
* fix(channels): centralize ambient ack scope
* test(telegram): restore room-event ack fixture
* test(discord): satisfy promise executor lint
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 01:28:41 +01:00
Peter Steinberger
c757675f34
improve: keep isolated tests under one second ( #100019 )
...
* test: speed up isolated test suite
* test: finish isolated latency cleanup
* test: eliminate remaining isolated latency spikes
* test: remove final isolated timing outliers
* test: bound full-suite tooling processes
* test: bound native test process lifetime
* test: warm isolated runtime suites
* test: eliminate final isolated timing outliers
* test: fix isolated timing fixture types
* test: make timeout cleanup timing deterministic
* test: pin media manifests to source checkout
* test: isolate provider manifest contracts
* test: eliminate residual isolated timing spikes
* test: restore final isolated timing fixes
* test: eliminate remaining isolated timing spikes
* test: warm Zalo lifecycle imports
* test: keep isolated suites below one second
* test: use readable browser response fixtures
2026-07-05 10:57:19 -07:00
Peter Steinberger
1f484a8dbd
test: speed up and stabilize full suite
2026-07-05 08:00:23 -04:00