Commit Graph

4869 Commits

Author SHA1 Message Date
Peter Steinberger
10afde99c1 fix: harden discord guild allowlist resolution 2026-03-14 02:09:19 +00:00
Peter Steinberger
965bdb2d2d fix: harden gateway status rpc smoke 2026-03-14 01:56:24 +00:00
ImLukeF
200625b340 docs(changelog): note voice wake crash fix 2026-03-14 12:48:51 +11:00
Vincent Koc
8b82a0124d Changelog: credit embedded runner queue deadlock fix 2026-03-13 18:47:47 -07:00
Jaehoon You
2bfe188510 fix(macos): prevent PortGuard from killing Docker Desktop in remote mode (#13798)
fix(macos): prevent PortGuardian from killing Docker Desktop in remote mode (#6755)

PortGuardian.sweep() was killing non-SSH processes holding the gateway
port in remote mode. When the gateway runs in a Docker container,
`com.docker.backend` owns the port-forward, so this could shut down
Docker Desktop entirely.

Changes:
- accept any process on the gateway port in remote mode
- add a defense-in-depth guard to skip kills in remote mode
- update remote-mode port diagnostics/reporting to match
- add regression coverage for Docker and local-mode behavior
- add a changelog entry for the fix

Co-Authored-By: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
2026-03-14 12:26:09 +11:00
Sally O'Malley
e5fe818a74 fix(gateway/ui): restore control-ui auth bypass and classify connect failures (#45512)
Merged via squash.

Prepared head SHA: 42b5595edec71897b479b3bbaa94bcb4ac6fab17
Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com>
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
2026-03-13 20:13:35 -05:00
Val Alexander
40ab39b5ea fix(ui): keep oversized chat replies readable (#45559)
* fix(ui): keep oversized chat replies readable

* Update ui/src/ui/markdown.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix(ui): preserve oversized markdown whitespace

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-03-13 20:03:19 -05:00
Steven
25f458a907 macOS: respect exec-approvals.json settings in gateway prompter (#13707)
Fix macOS gateway exec approvals to respect exec-approvals.json.

This updates the macOS gateway prompter to resolve per-agent exec approval policy before deciding whether to show UI, use agentId for policy lookup, honor askFallback when prompts cannot be presented, and resolve no-prompt decisions from the configured security policy instead of hardcoded allow-once behavior. It also adds regression coverage for ask-policy and allowlist-fallback behavior, plus a changelog entry for the fix.

Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
2026-03-14 12:00:15 +11:00
Peter Steinberger
9fbb7eb2e1 docs(changelog): note upcoming security fixes 2026-03-14 00:54:19 +00:00
fabiaodemianyang
983fecc106 fix(feishu): preserve non-ASCII filenames in file uploads (#33912) (#34262)
* fix(feishu): preserve non-ASCII filenames in file uploads (#33912)

* style(feishu): format media test file

* fix(feishu): preserve UTF-8 filenames in file uploads (openclaw#34262) thanks @fabiaodemianyang

---------

Co-authored-by: Robin Waslander <r.waslander@gmail.com>
2026-03-14 01:42:46 +01:00
Peter Steinberger
482fdd8c05 docs: reorder changelog highlights by user impact 2026-03-14 00:37:56 +00:00
Frank Yang
7a53eb7ea8 fix: retry Telegram inbound media downloads over IPv4 fallback (#45327)
* fix: retry telegram inbound media downloads over ipv4

* fix: preserve telegram media retry errors

* fix: redact telegram media fetch errors
2026-03-14 08:21:31 +08:00
Val Alexander
0e8672af87 fix(ui): stop dashboard chat history reload storm (#45541)
* UI: stop dashboard chat history reload storm

* Changelog: add PR number for chat reload fix

* fix: resolve branch typecheck regressions
2026-03-13 19:19:53 -05:00
Robin Waslander
a54bf71b4c fix(imessage): sanitize SCP remote path to prevent shell metacharacter injection
References GHSA-g2f6-pwvx-r275.
2026-03-14 00:38:14 +01:00
Val Alexander
868fd32ee7 fix(config): avoid Anthropic startup crash (#45520)
Co-authored-by: Val Alexander <bunsthedev@gmail.com>
2026-03-13 18:28:33 -05:00
Robin Waslander
1803d16d5c fix(auth): make device bootstrap tokens single-use to prevent scope escalation
Refs: GHSA-63f5-hhc7-cx6p
2026-03-13 23:58:45 +01:00
Robin Waslander
7e49e98f79 fix(telegram): validate webhook secret before reading request body
Refs: GHSA-jq3f-vjww-8rq7
2026-03-13 23:21:48 +01:00
Vincent Koc
f59b2b1db3 fix(browser): normalize batch act dispatch for selector and batch support (#45457)
* feat(browser): add batch actions, CSS selector support, and click delayMs

Adds three improvements to the browser act tool:

1. CSS selector support: All element-targeting actions (click, type,
   hover, drag, scrollIntoView, select) now accept an optional
   'selector' parameter alongside 'ref'. When selector is provided,
   Playwright's page.locator() is used directly, skipping the need
   for a snapshot to obtain refs. This reduces roundtrips for agents
   that already know the DOM structure.

2. Click delay (delayMs): The click action now accepts an optional
   'delayMs' parameter. When set, the element is hovered first, then
   after the specified delay, clicked. This enables human-like
   hover-before-click in a single tool call instead of three
   (hover + wait + click).

3. Batch actions: New 'batch' action kind that accepts an array of
   actions to execute sequentially in a single tool call. Supports
   'stopOnError' (default true) to control whether execution halts
   on first failure. Results are returned as an array. This eliminates
   the AI inference roundtrip between each action, dramatically
   reducing latency and token cost for multi-step flows.

Addresses: #44431, #38844

* fix(browser): address security review — batch evaluateEnabled guard, input validation, recursion limit

Fixes all 4 issues raised by Greptile review:

1. Security: batch actions now respect evaluateEnabled flag.
   executeSingleAction and batchViaPlaywright accept evaluateEnabled
   param. evaluate and wait-with-fn inside batches are rejected
   when evaluateEnabled=false, matching the direct route guards.

2. Security: batch input validation. Each action in body.actions
   is validated as a plain object with a known kind string before
   dispatch. Applies same normalization as direct action handlers.

3. Perf: SELECTOR_ALLOWED_KINDS moved to module scope as a
   ReadonlySet<string> constant (was re-created on every request).

4. Security: max batch nesting depth of 5. Nested batch actions
   track depth and throw if MAX_BATCH_DEPTH exceeded, preventing
   call stack exhaustion from crafted payloads.

* fix(browser): normalize batch act dispatch

* fix(browser): tighten existing-session act typing

* fix(browser): preserve batch type text

* fix(browser): complete batch action execution

* test(browser): cover batch route normalization

* test(browser): cover batch interaction dispatch

* fix(browser): bound batch route action inputs

* fix(browser): harden batch interaction limits

* test(browser): cover batch security guardrails

---------

Co-authored-by: Diwakar <diwakarrankawat@gmail.com>
2026-03-13 15:10:55 -07:00
Peter Steinberger
b7ff8256ef test: guard plugin-sdk shared-bundle regression (#45426) (thanks @TarasShyn) 2026-03-13 21:57:43 +00:00
Vincent Koc
28b0d8e8bd fix(cron): prevent isolated cron nested lane deadlocks (#45459)
* fix(cron): resolve isolated session deadlock (#44805)

Map cron lane to nested in resolveGlobalLane to prevent deadlock when
isolated cron jobs trigger inner operations (e.g. compaction). Outer
execution holds the cron lane slot; inner work now uses nested lane.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(changelog): add cron isolated deadlock note

---------

Co-authored-by: zhujian <zhujianxyz@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:19:40 -07:00
Vincent Koc
a976cc2e95 Slack: add opt-in interactive reply directives (#44607)
* Reply: add Slack interactive directive parser

* Reply: wire Slack directives into normalization

* Reply: cover Slack directive parsing

* Reply: test Slack directive normalization

* Slack: hint interactive reply directives

* Config: add Slack interactive reply capability type

* Config: validate Slack interactive reply capability

* Reply: gate Slack directives behind capability

* Slack: gate interactive reply hints by capability

* Tests: cover Slack interactive reply capability gating

* Changelog: note opt-in Slack interactive replies

* Slack: fix interactive reply review findings

* Slack: harden interactive reply routing and limits

* Slack: harden interactive reply trust and validation
2026-03-13 14:08:04 -07:00
Peter Steinberger
4d686b47f0 fix: bind macOS skill trust to resolved paths 2026-03-13 21:00:59 +00:00
Peter Steinberger
6b49a604b4 fix: harden macos shell continuation parsing 2026-03-13 20:54:10 +00:00
Peter Steinberger
9747da8682 fix: honor gateway command env in status reads 2026-03-13 20:50:48 +00:00
Peter Steinberger
e1fedd4388 fix: harden macos env wrapper resolution 2026-03-13 20:49:17 +00:00
Peter Steinberger
28a49aaa34 fix: harden powershell wrapper detection 2026-03-13 20:37:38 +00:00
Peter Steinberger
b7afc7bf40 fix: harden external content marker sanitization 2026-03-13 20:28:45 +00:00
Peter Steinberger
593964560b feat(browser): add chrome MCP existing-session support 2026-03-13 20:10:08 +00:00
Peter Steinberger
5189ba851c fix: stop windows startup fallback gateways 2026-03-13 19:10:57 +00:00
AstroHan
96c48f5566 fix(ui): restore chat-new-messages class on scroll pill button (#44856)
Merged via squash.

Prepared head SHA: 621ef634a49bc55ff52e0d0adbcdd1d23c5949fa
Co-authored-by: Astro-Han <255364436+Astro-Han@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 22:03:00 +03:00
0xffee
5ba1bfdb7b refactor: remove redundant ?? undefined in Slack probe (#44775)
Merged via squash.

Prepared head SHA: ecc73fe47c5ba8be28005e8752cff85eb01ae643
Co-authored-by: Cafexss <13113185+Cafexss@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 21:52:15 +03:00
Keelan Fadden-Hopper
fc408bba37 Fix incorrect rendering of brave costs in docs (#44989)
Merged via squash.

Prepared head SHA: 8c69de822273938cb57cf73371101fcc6e10ece2
Co-authored-by: keelanfh <19519457+keelanfh@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 21:37:39 +03:00
Frank Yang
7778627b71 fix(ollama): hide native reasoning-only output (#45330) Thanks @xi7ang
Co-authored-by: xi7ang <266449609+xi7ang@users.noreply.github.com>
Co-authored-by: Frank Yang <vibespecs@gmail.com>
2026-03-14 01:38:06 +08:00
Peter Steinberger
202765c810 fix: quiet local windows gateway auth noise 2026-03-13 16:22:13 +00:00
Peter Steinberger
394fd87c2c fix: clarify gated core tool warnings 2026-03-13 15:38:07 +00:00
Max aka Mosheh
55e79adf69 fix: resolve target agent workspace for cross-agent subagent spawns (#40176)
Merged via squash.

Prepared head SHA: 2378e40383f194557c582b8e28976e57dfe03e8a
Co-authored-by: moshehbenavraham <17122072+moshehbenavraham@users.noreply.github.com>
Co-authored-by: mcaxtr <7562095+mcaxtr@users.noreply.github.com>
Reviewed-by: @mcaxtr
2026-03-13 12:09:51 -03:00
정우용
72b6a11a83 fix: preserve persona and language continuity in compaction summaries (#10456)
Merged via squash.

Prepared head SHA: 4518fb20e1037f87493e3668621cb1a45ab8233e
Co-authored-by: keepitmello <71975659+keepitmello@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-13 07:40:32 -07:00
Peter Steinberger
80e7da92ce fix: stabilize macos daemon onboarding 2026-03-13 13:47:09 +00:00
Radek Sienkiewicz
0a3b9a9a09 fix(ui): keep shared auth on insecure control-ui connects (#45088)
Merged via squash.

Prepared head SHA: 99eb3fd9281549a4e012b63eb9608dc47455ad03
Co-authored-by: velvet-shark <126378+velvet-shark@users.noreply.github.com>
Co-authored-by: velvet-shark <126378+velvet-shark@users.noreply.github.com>
Reviewed-by: @velvet-shark
2026-03-13 14:25:31 +01:00
Peter Steinberger
be8d51c301 fix(node-host): harden perl approval binding 2026-03-13 13:09:36 +00:00
Peter Steinberger
2f03de029c fix(node-host): harden pnpm approval binding 2026-03-13 12:59:55 +00:00
ingyukoh
af4731aa5f fix(discovery): add missing domain to wideArea Zod config schema (#35615)
Merged via squash.

Prepared head SHA: d81d3321b6aaf4ca4f3c63989b6b9ac431b60fbb
Co-authored-by: ingyukoh <6015960+ingyukoh@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 15:52:54 +03:00
Nimrod Gutman
496176d738 feat(ios): add onboarding welcome pager (#45054)
* feat(ios): add onboarding welcome pager

* feat(ios): add onboarding welcome pager (#45054) (thanks @ngutman)
2026-03-13 14:24:15 +02:00
Alex Zaytsev
61429230b2 fix(signal): add groups config to Signal channel schema (#27199)
Merged via squash.

Prepared head SHA: 4ba4a39ddf10eaa3d6ad3f2975c088547f5373e5
Co-authored-by: unisone <32521398+unisone@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 15:14:30 +03:00
stim64045-spec
4e68684bd2 fix: restore web fetch firecrawl config in runtime zod schema (#42583)
Merged via squash.

Prepared head SHA: e37f965b8ef5370f07e1492499c6a87aa26a178a
Co-authored-by: stim64045-spec <259352523+stim64045-spec@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 14:56:26 +03:00
Ayaan Zaidi
45721d5dec fix: polish Android QR scanner onboarding (#45021) 2026-03-13 17:13:54 +05:30
atian8179
b72c87712d fix(config): add missing params field to agents.list[] validation schema (#41171)
Merged via squash.

Prepared head SHA: 9522761cf1d5f5318b6b44abfb1292384acd9c37
Co-authored-by: atian8179 <255488364+atian8179@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-13 14:29:36 +03:00
xingsy97
2c39cd0953 fix(agents): rephrase session reset prompt to avoid Azure content filter (#43403)
* fix(agents): rephrase session reset prompt to avoid Azure content filter

Azure OpenAI's content filter flags the phrase 'Execute your Session
Startup sequence now' as potentially harmful, causing /new and /reset
to return 400 for all Azure-hosted deployments.

Replace 'Execute ... now' with 'Run your Session Startup sequence' in
session-reset-prompt.ts and post-compaction-context.ts. The semantics
are identical but the softer phrasing avoids the false-positive.

Closes #42769

* ci: retrigger checks (windows shard timeout)

* fix: add changelog for Azure startup prompt fix (#43403) (thanks @xingsy97)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-13 15:07:03 +05:30
cheapestinference
60cb1d683c fix(agents): respect explicit user compat overrides for non-native openai-completions (#44432)
Reviewed-by: @frankekn
2026-03-13 17:30:24 +08:00
Jealous
4d3a2f674b Docker: add OPENCLAW_TZ timezone support (#34119)
* Docker: add OPENCLAW_TZ timezone support

* fix: validate docker timezone names

* fix: support Docker timezone override (#34119) (thanks @Lanfei)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-13 14:51:55 +05:30