Commit Graph

73382 Commits

Author SHA1 Message Date
Vincent Koc a27e5ee607 refactor(skills): isolate workshop draft ingestion (#115791)
* origin/refactor-workshop-draft-ingestion:
  refactor(skills): keep workshop validation internals private
  test(skills): prove shipped workshop upgrade path
  refactor(skills): centralize workshop record validation
  refactor(skills): unify workshop draft preparation
  refactor(skills): extract workshop draft ingestion
2026-07-29 17:09:53 +08:00
Peter Steinberger 13563478fb fix(mattermost): preserve safe denied-sender group history (#115773)
* fix(mattermost): record pending history for non-allowlisted group senders

When `groupPolicy` is `"allowlist"`, messages from senders not in
`groupAllowFrom` were silently dropped before reaching
`recordPendingHistoryEntryIfEnabled()`. This meant the bot had no
context of what non-allowlisted users said, breaking use cases like
conversation summarization.

This change introduces a `senderBlockedByGroupAllowlist` flag so that
non-allowlisted messages continue through the history-recording code
path before returning without generating a response.

Changes:
1. Add `senderBlockedByGroupAllowlist` flag before access check
2. `GROUP_POLICY_NOT_ALLOWLISTED` sets flag instead of returning
3. Skip `commandGate` check for blocked senders
4. Call `recordPendingHistory()` then return before response processing

Fixes openclaw/openclaw#57607

* test(mattermost): verify denied history over real transport

Co-authored-by: Jason Wang <jasonwang@barkingdog.ai>

---------

Co-authored-by: Jason Wang <jasonwang@barkingdog.ai>
2026-07-29 05:08:22 -04:00
Dallin Romney 0723c68b57 refactor(qa): remove execution sharding (#115787) 2026-07-29 17:06:57 +08:00
Peter Steinberger 994ca7d259 fix(msteams): honor group and channel conversation allowlists (#115746)
* fix(msteams): honor group conversation allowlists

Fixes #95737. Preserve opaque Teams conversation identities, the documented group fallback, personal-DM isolation, and display-name spoof protection.

Based on the original contributor fix in #95764.

Co-authored-by: 周鹤0668001310 <zhou.he3@xydigit.com>

* test(msteams): isolate conversation allowlist regression proof

Co-authored-by: 周鹤0668001310 <zhou.he3@xydigit.com>

---------

Co-authored-by: 周鹤0668001310 <zhou.he3@xydigit.com>
2026-07-29 05:05:42 -04:00
Peter Steinberger f32242e62f fix(cli): scope dns setup timeout to brew prefix probe with SIGKILL (#115782)
Make the subprocess timeout opt-in so long-running setup steps (brew
install, service restart, sudo writes) keep their unbounded wait, and
apply a 15s SIGKILL-backed deadline only to the fast brew --prefix probe
so a signal-resistant hung shim cannot block dns setup.

Also fix the regression test on Linux CI: stub process.platform via
withMockedPlatform (the action does not consult os.platform()) and point
the mocked brew prefix at a real temp dir so un-mocked fs writes succeed
without sudo. Add focused coverage that non-probe subprocesses stay
unbounded.

(cherry picked from commit 469ae1db40)

Co-authored-by: thomas.szbay <thomas.szbay@example.com>
2026-07-29 05:03:20 -04:00
Peter Steinberger dbba7e5c4b fix(nostr): keep private tool traces out of encrypted messages (#115769)
Sanitize both Nostr delivery paths with the shared assistant-visible text contract. Preserve ordinary replies and suppress internal-only messages before Markdown conversion.

Related: #90684

Co-authored-by: liyuanbin <li.yuanbin1@xydigit.com>
2026-07-29 05:01:27 -04:00
Peter Steinberger ed17774f3f fix(agents): strip leading BOM from file reads (#115781)
Co-authored-by: luyifan <al3060388206@gmail.com>
2026-07-29 05:00:00 -04:00
Peter Steinberger fb788b79cf feat(memory): retain recent project scopes per session (#115731)
* feat(memory): retain active project set

* refactor(memory): require prepared active set

* docs(memory): explain active project set
2026-07-29 04:58:14 -04:00
Peter Steinberger b148150281 fix(memory): reconcile derived FTS schemas (#115775)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 04:54:50 -04:00
Vincent Koc e9d08afce1 Merge remote-tracking branch 'origin/main' into refactor-workshop-draft-ingestion
* origin/main:
  fix(feishu): reject unsupported initial document content (#115697)
  feat(media): probe duration and dimensions for playback metadata (#115728)
  fix(sandbox): scope runtimes by workspace (#115766)
  fix(ui): guide users through missing or broken AI setup (#115716)
  fix(sessions): return direct-agent replies to their active session (#115756)
  fix(zalo): stop provider startup after gateway shutdown (#115763)
  fix(agents): bound completed background process retention (#115760)
  fix(plugins): bound hook execution and retire stale registrations (#115695)
  fix(ui): collapse custodian startup error gap (#115720)
  fix(gateway): reload edited hook transforms (#107875)
  refactor: centralize channel streaming config hints (#115739)
2026-07-29 16:54:03 +08:00
Peter Steinberger 94025985f7 fix(feishu): reject unsupported initial document content (#115697) 2026-07-29 04:53:11 -04:00
Peter Steinberger c402688894 feat(media): probe duration and dimensions for playback metadata (#115728)
* feat(media): probe playback metadata

* fix(media): satisfy CI gates

* fix(media): satisfy lint rules
2026-07-29 04:52:17 -04:00
Vincent Koc 30346f9788 fix(sandbox): scope runtimes by workspace (#115766)
Qualify non-shared sandbox identities by resolved workspace while preserving shared runtime names. Existing non-shared runtimes reset once under the new identity.

Related: #51363

Co-authored-by: Tayoun <39609208+tayoun@users.noreply.github.com>
2026-07-29 16:50:38 +08:00
Vincent Koc cc6b766079 fix(ui): guide users through missing or broken AI setup (#115716)
* fix(ui): block chat until inference is configured

* fix(ui): gate new sessions on configured inference

* fix(ui): gate custodian before inference starts

* fix(ui): clarify custodian setup navigation

* fix(ui): explain missing AI provider setup

* fix(ui): distinguish unavailable configured AI

* fix(ui): align inference setup fixtures

* test(ui): default mock gateway to working inference

* test(ui): align startup send gate coverage

* test(ui): inherit inference in gateway fixtures

* test(ui): normalize deferred gateway agents

* test(ui): update model setup sidebar fixture
2026-07-29 16:48:48 +08:00
Peter Steinberger 81171d04bd fix(sessions): return direct-agent replies to their active session (#115756)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: 程科0668000771 <cheng.ke@xydigit.com>
2026-07-29 04:48:15 -04:00
Peter Steinberger 4a19f399be fix(zalo): stop provider startup after gateway shutdown (#115763)
Reconstruct the verified Zalo lifecycle fix from #109990 on current main and preserve its exact production and regression-test blobs.

Source: https://github.com/openclaw/openclaw/pull/109990

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: LZY3538 <liu.zhenye@xydigit.com>
2026-07-29 04:45:50 -04:00
Peter Steinberger f14e8607e7 fix(agents): bound completed background process retention (#115760)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 04:45:08 -04:00
Vincent Koc 80707db7ab fix(plugins): bound hook execution and retire stale registrations (#115695)
* fix(plugins): bound hooks and own legacy registrations

* docs(hooks): clarify internal handler ownership

* fix(cli): retain message hook shutdown deadline
2026-07-29 16:44:05 +08:00
Vincent Koc 0f9c702d8b fix(ui): collapse custodian startup error gap (#115720) 2026-07-29 16:43:30 +08:00
sunlit-deng d78c1a54f2 fix(gateway): reload edited hook transforms (#107875)
* fix(gateway): reload edited hook transforms

* test(gateway): use auto cleanup temp dirs for hook reload tests
2026-07-29 16:42:40 +08:00
Peter Steinberger 382ea7b74e refactor: centralize channel streaming config hints (#115739)
* refactor: centralize channel streaming config hints

* fix: repair code mode static checks

* fix: restore QA evidence validator import
2026-07-29 04:42:23 -04:00
Vincent Koc 8ee8bde257 refactor(skills): keep workshop validation internals private 2026-07-29 16:41:24 +08:00
Vincent Koc 8b1697d03a test(skills): prove shipped workshop upgrade path 2026-07-29 16:41:23 +08:00
Vincent Koc eea4937d5b refactor(skills): centralize workshop record validation 2026-07-29 16:41:22 +08:00
Vincent Koc bfb3e53052 refactor(skills): unify workshop draft preparation 2026-07-29 16:41:21 +08:00
Vincent Koc 530cb26077 refactor(skills): extract workshop draft ingestion 2026-07-29 16:41:20 +08:00
ndholakia 726d348bbd fix(msteams): finalize sent replies after dispatch (#82354)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-29 16:40:52 +08:00
Peter Steinberger f418a0749f fix(cron): deliver explicitly configured failure alerts (#115762)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 04:39:49 -04:00
Peter Lee 10c20738f6 fix(hooks): resolve inbound claim conversation once (#115491)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-29 16:38:51 +08:00
Peter Steinberger c5d0b7dd39 refactor: retire legacy provider and secret paths (#115655)
* refactor: retire legacy provider and secret paths

* fix: remove stale cache retention import

* test: remove retired secret marker fallback
2026-07-29 04:36:20 -04:00
Peter Steinberger 327432831a fix(memory): reject malformed QMD result entries (#115705)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 04:36:06 -04:00
Pavan Kumar Gondhi 36984fe1af fix(diagnostics): keep internal thinking out of telemetry [AI] (#115261)
* fix(diagnostics): exclude internal thinking from telemetry

* fix(diagnostics): redact replay reasoning fields

* fix(diagnostics): omit replay signatures from telemetry

* chore: sync removed test helper
2026-07-29 14:05:45 +05:30
Vincent Koc 755eea5e97 fix(ui): localize remaining control surfaces (#115730)
* feat(ui): add localization keys for control surfaces

* fix(ui): localize relative time and durations

* fix(ui): localize update and recovery notices

* fix(ui): localize chat controls and command results

* fix(ui): localize memory management views

* fix(ui): localize shared tool surfaces

* fix(ui): localize settings and action notices

* chore(ui): tighten localization raw-copy baseline

* fix(ui): preserve localized status copy

* fix(ui): preserve compact sidebar time label

* fix(ui): preserve near-future sidebar direction

* test(ui): align screenshot localization assertion
2026-07-29 16:34:35 +08:00
Kevin Lin 8704d3d83f fix(gateway): prevent model owner mismatch after plugin activation (#115747)
* fix(gateway): publish plugin runtime config at startup

* chore: allow gateway startup test seam
2026-07-29 01:33:02 -07:00
Vincent Koc 5578f27ce7 fix(agents): run reply hooks for restart recovery (#115711)
Co-authored-by: sweetcornna <96944678+sweetcornna@users.noreply.github.com>
2026-07-29 16:32:44 +08:00
Vincent Koc 02f7c7ada3 fix(cron): initialize detached hook run sessions (#115765) 2026-07-29 16:31:36 +08:00
Peter Steinberger 85afb973e4 fix(ios): keep stop available for staged voice notes (#115744) 2026-07-29 04:31:07 -04:00
Peter Steinberger 6b554592be fix(doctor): preserve config includes during cleanup (#115723)
* fix(doctor): preserve config include directives

* chore: keep Doctor release note in PR metadata
2026-07-29 04:29:37 -04:00
Peter Steinberger ed6010ed54 fix(memory): keep dreaming consolidation within project scope (#115721)
* fix(memory): isolate consolidation by project

* test(memory): align dreaming status threshold
2026-07-29 04:27:24 -04:00
Edward Abrams 6c000dc696 fix(discord): keep tool rows under verbose progress (#111947)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 04:26:28 -04:00
Narahari Raghava 320c3ad8e0 fix(hooks): kill gog process tree on gmail-watcher shutdown (#112452)
* fix(hooks): kill gog process tree on gmail-watcher shutdown

* fix(hooks): add curly braces for oxlint curly rule

* test(hooks): add integration proof for gmail-watcher process-tree shutdown

* test(hooks): fix integration test lint errors

* fix(hooks): await Gmail watcher tree escalation

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-29 16:25:00 +08:00
Peter Steinberger 1b6ad8da8f fix(memory): avoid phantom continuation pages (#115722)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 04:24:19 -04:00
Peter Steinberger 7c6eba5467 fix(agents): reject cancelled foreground commands (#115694)
Co-authored-by: 赵旺0668001248 <zhao.wang1@xydigit.com>
2026-07-29 04:22:31 -04:00
Peter Steinberger 104322c5cc fix(telegram): prevent false empty replies after message-tool delivery (#115588)
* fix(telegram): suppress message-tool-only reply fallbacks

Honor message-tool-only delivery when a non-silent Telegram reply is skipped in both ordinary group dispatch and native slash-command turns. Keep the existing visible fallback for genuinely empty native replies and cover both dispatch surfaces with regression tests.

Fixes #90091

* fix(telegram): preserve genuine delivery failure fallbacks

Suppress only non-silent skips owned by message-tool-only delivery. Preserve visible fallbacks when the same turn also encounters a real dispatch or final-delivery failure, with an explicit regression for the mixed failure path.

* fix(telegram): preserve native message-tool delivery errors

Track genuine native slash delivery failures so message-tool-only skip suppression never hides a failed response. Cover the exact mixed empty-skip and real-error path with a regression while preserving true-empty and intentionally cancelled fallbacks.

* test(telegram): preserve synchronous native delivery callbacks
2026-07-29 04:19:43 -04:00
Peter Steinberger 98dae674cb refactor: unify session cost rollup scans (#115749) 2026-07-29 04:18:32 -04:00
Peter Steinberger 06c5bd6340 fix(agents): honor completed semantic command exits (#115737)
Preserve explicit tool failures while preventing completed grep and semantic shell exits from producing false agent, cron, and provider-runtime failures.

Fixes #107278.

Co-authored-by: Yuval Dinodia <102706514+yetval@users.noreply.github.com>
2026-07-29 04:17:51 -04:00
Peter Steinberger eee5e029e3 feat(agents): persist last-used session model as the agent default (#115717)
* feat(agents): persist last-used session model as the agent default

* fix(agents): gate sticky model persistence on admin authority and make it best-effort

* fix(agents): keep sticky model helper internal

* fix(agents): satisfy sticky model lint rules

* style(agents): format sticky model gateway test
2026-07-29 04:16:51 -04:00
Peter Steinberger 7441362014 feat(openai): support GPT-Live over backend WebSocket (#115622)
* feat(openai): add GPT-Live websocket bridge

* chore: defer GPT-Live changelog to release

* fix(android): preserve GPT-Live relay readiness gate

* fix(openai): normalize GPT-Live assistant completion
2026-07-29 04:15:03 -04:00
Vincent Koc 87a66ddf2d fix(ui): unify sidebar thread density (#115646) 2026-07-29 16:12:54 +08:00
Peter Steinberger a2c88e2a18 feat(ui): path-based agent and panel URLs on Settings > Agents (#115673)
* feat(ui): add agent panel path URLs

* test(ui): clarify unknown agent route fallback

* fix(ui): reject agent URL dot segments

* test(ui): clarify agent panel switch proof

* chore(ui): localize panel id table and refresh docs map

* test(ui): keep agent panel cases test-local

* chore(ui): keep agent route path type local
2026-07-29 04:12:46 -04:00