Wake the isolated polling drain immediately after a worker-spooled
update is written to channel_ingress_events, instead of waiting for
the next drain interval.
- Add requestImmediateDrain() calls after worker write and spooled message
- Track pending drain requests while drain is active (fix race condition)
- Add regression test for updates arriving during active drain
Fixes#86957.
* fix(googlechat): sanitize internal tool-trace lines from outbound text (#90684)
Google Chat ran only sanitizeForPlainText() on outbound text, so internal
assistant trace lines leaked to users — most visibly the
`⚠️🛠️ <command> (agent) failed` banner emitted for benign non-zero shell
exits (e.g. a grep with no match, exit 1). The turn succeeds but the user
gets an alarming "failed" message.
Apply sanitizeAssistantVisibleText() before sanitizeForPlainText() in the
googlechat outbound sanitizeText hook, mirroring Discord and WhatsApp. The
hook runs pre-chunking in the shared deliver path, covering all text sends.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(googlechat): sanitize internal tool-trace lines from outbound text (#90684)
---------
Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Add oc_queue to DEFAULT_COMMAND_SPECS so the native slash-command registrar exposes /oc_queue, mapped (originalName: queue) to the core /queue directive via the existing trigger-map path. Additive; rides the same registration/callback machinery as the other oc_* commands.
Adds large OpenAI and Anthropic prompt-cache live coverage plus a QA Lab long-context tool-result scenario.
Co-authored-by: vincentkoc <vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
Summary:
- The PR changes `parseBindingSpecs` to reject `<channel>:<account>:...` bind specs and adds Matrix parser regression coverage for the malformed and valid forms.
- PR surface: Source +8, Tests +26. Total +34 across 2 files.
- Reproducibility: yes. Source inspection of current main shows `parseBindingSpecs` truncating with `split(":", 2)`, and the PR body provides before/after terminal output from a harness importing the real parser.
Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(agents): reject bind specs with extra colon segments
Validation:
- ClawSweeper review passed for head 3e1af31fc4.
- Required merge gates passed before the squash merge.
Prepared head SHA: 3e1af31fc4
Review: https://github.com/openclaw/openclaw/pull/95572#issuecomment-4762320150
Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
* 'main' of https://github.com/openclaw/openclaw: (39 commits)
chore(deadcode): remove stale agent helper reexports
chore(ui): refresh fa control ui locale
chore(ui): refresh nl control ui locale
chore(ui): refresh th control ui locale
chore(ui): refresh vi control ui locale
chore(ui): refresh id control ui locale
chore(ui): refresh pl control ui locale
chore(ui): refresh uk control ui locale
chore(ui): refresh tr control ui locale
chore(ui): refresh it control ui locale
chore(ui): refresh ar control ui locale
chore(ui): refresh fr control ui locale
chore(ui): refresh ko control ui locale
chore(ui): refresh ja-JP control ui locale
chore(ui): refresh es control ui locale
chore(ui): refresh zh-TW control ui locale
chore(ui): refresh zh-CN control ui locale
chore(ui): refresh pt-BR control ui locale
chore(ui): refresh de control ui locale
fix: preserve fast auto delivery semantics
...