Commit Graph

41 Commits

Author SHA1 Message Date
Peter Steinberger ec7e5dd769 fix(gateway): recover channel autostart after crash loops (#118311)
* fix(gateway): recover channel autostart after crash loops

* docs(gateway): clarify crash-loop recovery steps

* test(gateway): type crash-loop recovery context

* test(gateway): correct recovery mock context

* test(gateway): keep recovery monitor coverage compact

* chore: leave crash-loop note to release flow

---------

Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 18:01:39 -07:00
Peter Steinberger 2cf6b50614 docs(discord): document channel-allowlist and ambient room event pitfalls (#113692)
* docs(discord): document channel-allowlist and ambient room event pitfalls

Three gating behaviors that silently produce a mute or blind agent:

- A guild channels map is an allowlist. Adding one entry denies every
  unlisted channel rather than leaving them at guild defaults; the "*"
  wildcard key keeps the rest of the guild reachable.
- requireMention: true drops unmentioned messages before they can become
  room events, so an ambient agent has no room backlog at all.
- Room events post via message(action=send), but the message tool ships
  only in the messaging profile; a coding-profile agent listens and can
  never speak.

Adds matching Discord failure-signature rows to channel troubleshooting.

* docs: regenerate docs map for new Discord and ambient headings
2026-07-25 06:43:02 -07:00
EricCai 37a269f711 docs(gateway): document crash-loop safe mode channel recovery (#113091)
* docs(gateway): document crash-loop safe mode channel recovery

When the crash-loop breaker suppresses channel autostart, the control plane
stays up and channels.start can manually override. Document the operator SOP.

* docs(gateway): refresh docs_map after crash-loop recovery SOP

* docs(gateway): clarify crash-loop recovery restart

* docs(gateway): clarify boot-scoped channel suppression

---------

Co-authored-by: eric <ericstudio@ericdeMacStudio.lan>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-25 06:36:13 -07:00
Peter Steinberger 783a5d21cf refactor(config): purge numeric tuning knobs behind built-in defaults (#111382) 2026-07-19 07:35:45 -07:00
Peter Steinberger f7d7148cf0 docs: rewrite published docs grounded in current source (#100142)
Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green.

Closes #100141
2026-07-05 00:32:47 -04:00
Peter Steinberger 658be7f1c7 docs: absorb small documentation PRs 2026-05-22 23:42:51 +01:00
Peter Steinberger 1e5450f23e fix(messages): keep group visible replies automatic by default (#83498)
* fix(messages): keep group visible replies automatic by default

* fix(messages): keep unauthorized slash turns quiet

* fix(messages): return boolean from slash guard

* test(messages): narrow visible reply fixtures

* test(messages): align completion delivery default
2026-05-18 09:48:58 +01:00
Peter Steinberger a46d2e2b06 docs: add ambient room events guide 2026-05-17 07:20:15 +01:00
Peter Steinberger 0190f4ae1e fix: finish inbound event rebase (#82606) 2026-05-17 00:10:29 +01:00
Peter Steinberger 575936473d fix(auto-reply): log suppressed message-tool-only finals (#82609)
* fix(auto-reply): fallback group finals when message tool is missed

* fix(auto-reply): log suppressed message-tool finals

* docs(auto-reply): clarify message-tool finals stay private

# Conflicts:
#	CHANGELOG.md

* docs(auto-reply): fix group visible reply examples
2026-05-16 16:30:07 +01:00
Peter Steinberger b830beb34b fix: surface update restart and plugin repair guidance 2026-05-15 07:32:29 +01:00
Vincent Koc 91ed1604b0 docs(imessage): make imsg the supported setup path 2026-05-07 12:53:01 -07:00
Vincent Koc 5a0d6c7ad8 fix(gateway): keep reset and refresh paths responsive (#77701)
* fix(hooks): keep session memory slugging off reset hot path

* fix(hooks): run session memory capture asynchronously

* fix(cli): avoid stuck gateway command exits

* fix(gateway): cache empty read-only model catalog

* fix(doctor): stop stale TUI clients for WhatsApp responsiveness
2026-05-05 00:59:13 -07:00
Peter Steinberger 2493ab1978 docs: clarify tool-only Discord replies 2026-05-04 01:37:22 +01:00
Peter Steinberger 7e41913a20 fix(gateway): reduce TUI history startup latency 2026-04-28 23:34:59 +01:00
Peter Steinberger 4397717322 fix(telegram): report unauthorized startup tokens 2026-04-28 06:50:51 +01:00
Peter Steinberger f50fb73560 fix(whatsapp): honor env proxy during QR login 2026-04-27 11:30:29 +01:00
Vincent Koc d71518b1eb docs(channels,nodes): add Related sections to pages missing them 2026-04-23 15:43:47 -07:00
Vincent Koc 2777b089b5 docs: normalize frontmatter titles to sentence case 2026-04-23 13:15:17 -07:00
Vincent Koc 4a2cd533ac docs: remove duplicate H1 where frontmatter title already sets it 2026-04-23 13:11:14 -07:00
Vincent Koc ff67a890af docs(channels): clean troubleshooting link labels, generic imessage path placeholder, drop msteams stamped date 2026-04-21 13:59:12 -07:00
Peter Steinberger f3b56165f5 docs(telegram): clarify polling stall tuning 2026-04-21 01:15:28 +01:00
Peter Steinberger 60fea81cf1 fix(telegram): harden polling transport liveness (#69476)
* fix(telegram): release undici dispatchers via TelegramTransport.close()

TelegramTransport now exposes an explicit close() that destroys every
owned undici dispatcher (default Agent plus lazily-created IPv4 and
IP-pinned fallback Agents) and the TCP sockets they hold. Dispatcher
constructors are also given bounded keep-alive defaults
(keepAliveTimeout, keepAliveMaxTimeout, connections, pipelining) as a
defence-in-depth layer so the pool cannot grow unbounded even if a
caller forgets to call close().

Without this, every transport that went through a fallback retry left
its fallback Agents anchored forever in a closure; long-running polling
sessions accumulated hundreds of ESTABLISHED keep-alive sockets to
api.telegram.org, saturating the per-IP quota on upstream forward
proxies and making the currently-active outbound node time out while
every other node still tested healthy.

Mock dispatchers in fetch.test.ts gain destroy() spies so the close()
chain is assertable. Call sites that built caller-owned transports from
globalThis.fetch (delivery.resolve-media, test helpers) return an async
no-op close(), matching the new required surface.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(telegram): dispose polling transport on shutdown and dirty rebuild

Every recoverable network error and stall-watchdog trip sets
TelegramPollingTransportState.#transportDirty so the next polling
cycle rebuilds the transport inside acquireForNextCycle(). Previously
the rebuild simply overwrote the field, leaving the old transport's
keep-alive sockets anchored in the now-unreferenced dispatcher — the
polling loop has no natural GC point for these resources, and Node's
object GC never touches OS-level sockets.

acquireForNextCycle() now closes the previous transport (fire-and-
forget so the polling cycle is not blocked by a slow destroy) before
swapping in the rebuilt one. dispose() is a new method that the owning
TelegramPollingSession calls from the finally block of runUntilAbort(),
so a single transport is always tied to a single polling session
lifetime. After dispose(), acquireForNextCycle() returns undefined to
prevent zombie rebuilds.

Under high sustained polling traffic over long-lived sessions, this is
what stops the per-gateway connection count to api.telegram.org from
growing indefinitely and saturating upstream proxy quotas.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(changelog): note Telegram undici dispatcher lifecycle fix

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(telegram): disable HTTP/2 for all Telegram polling dispatchers

Undici 8 enables HTTP/2 ALPN by default, but Telegram's long-polling
connections stall on Windows due to IPv6 + H2 multiplexing issues. The
core fetch-guard already sets allowH2:false for guarded paths, but the
Telegram extension creates its own Agent/ProxyAgent/EnvHttpProxyAgent
instances directly from undici without this flag.

Apply allowH2:false to all dispatcher constructors in the Telegram
transport layer, matching the approach used in src/infra/net/undici-runtime.ts.

Fixes #66885

* fix: avoid false telegram polling stall restarts

* fix(telegram): publish polling health liveness

---------

Co-authored-by: Ethan Chen <ethanbit@qq.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Magicray1217 <magicray1217@users.noreply.github.com>
Co-authored-by: aoao <aoao@openclaw>
2026-04-20 23:03:57 +01:00
Ayaan Zaidi a80874a4c1 docs(gateway): clarify probe capability wording 2026-04-20 11:59:27 +05:30
Peter Steinberger 896928d8c0 docs: refresh slack secretref status mirrors 2026-04-04 22:14:15 +01:00
Peter Steinberger 72b59231a3 docs: refresh channels status probe mirrors 2026-04-04 18:52:01 +01:00
Gustavo Madeira Santana ebc9784f26 docs: fix Matrix plugin docs 2026-04-02 21:47:34 -04:00
Vincent Koc 71f341c4b4 docs: add /tasks chat command, cleanup-aware status, and QQ Bot troubleshooting 2026-04-01 16:46:04 +09:00
Vincent Koc a89d9f491b fix(docs): broken anchor links across 4 more files
- sandboxing.md: remove stale '-opt-in' suffix from Docker accordion anchor
- troubleshooting.md: remove #troubleshooting anchor (matrix has no such section)
- docker.md: drop unpredictable security heading anchor with parens/dots
- faq.md: fix SSL error accordion anchor slug
2026-03-22 15:50:56 -07:00
Vincent Koc 0b11ee48f8 docs: fix 26 broken anchor links across 18 files 2026-03-19 10:33:02 -07:00
Peter Steinberger ddeb423944 fix: quiet Telegram command overflow retry logs 2026-03-13 01:45:56 +00:00
Peter Steinberger 226bf74634 docs(telegram): document allowlist id requirement 2026-02-14 16:51:59 +01:00
Seb Slight 9a3f62cb86 docs: add symptom-first troubleshooting hub and deep runbooks (#11196)
* docs(troubleshooting): add symptom-first troubleshooting runbooks

* docs(troubleshooting): fix approvals command examples

* docs(troubleshooting): wrap symptom cases in accordions

* docs(automation): clarify userTimezone missing-key behavior

* docs(troubleshooting): fix first-60-seconds ladder order
2026-02-07 10:28:19 -05:00
Seb Slight 93bf75279f docs(imessage): improve macOS TCC troubleshooting guidance (#10781) 2026-02-06 19:21:52 -05:00
Seb Slight abcaa8c7a9 Docs: add nav titles across docs (#5689) 2026-01-31 15:04:03 -06:00
cpojer 8cab78abbc chore: Run pnpm format:fix. 2026-01-31 21:13:13 +09:00
Peter Steinberger 9a7160786a refactor: rename to openclaw 2026-01-30 03:16:21 +01:00
Peter Steinberger 6d16a658e5 refactor: rename clawdbot to moltbot with legacy compat 2026-01-27 12:21:02 +00:00
Peter Steinberger ede5145191 docs: sweep support troubleshooting updates 2026-01-25 04:33:14 +00:00
Peter Steinberger 564b6aa2aa docs: clarify Telegram IPv6 DNS troubleshooting 2026-01-15 07:23:28 +00:00
Peter Steinberger 90342a4f3a refactor!: rename chat providers to channels 2026-01-13 08:40:39 +00:00