Commit Graph

29294 Commits

Author SHA1 Message Date
Gustavo Madeira Santana
d9f553bccf fix(matrix/doctor): preserve allowlist semantics for trusted dm policy 2026-04-08 16:59:17 -04:00
Luke Boyett
2bea5b06fd fix(matrix/doctor): always migrate trusted dm.policy to 'pairing'
Address Codex review feedback on #62942 about preserving paired senders
during the trusted-policy migration.

After tracing the actual policy enforcement in
extensions/matrix/src/matrix/monitor/handler.ts (the dmPolicy switch
around line 606) and the access state resolver in
extensions/matrix/src/matrix/monitor/access-state.ts (which merges
allowFrom and storeAllowFrom into a single effectiveAllowFrom), I found
that 'pairing' and 'allowlist' are equivalent for ACCEPTING already-
trusted senders — both consult the pairing store and the explicit
allowFrom list via the same directAllowMatch path.

The only semantic difference is what happens to an unknown sender:

  - 'pairing'   sends a pairing request reply (operator can approve)
  - 'allowlist' drops silently (no path for new senders to gain access)

We don't know exactly what behavior the legacy 'trusted' policy had for
unknown senders, but 'pairing' is a strict superset of 'allowlist' for
accepting existing senders, AND it preserves the ability to onboard new
ones — which is the most likely intent of an operator who chose
'trusted' in the first place.

Mapping 'trusted' unconditionally to 'pairing' (instead of branching on
allowFrom presence) also moots the whitespace edge case from the prior
fixup commit, since allowFrom is now always preserved as-is.

Updates the existing 'with allowFrom' and 'per-account' tests to expect
'pairing' instead of 'allowlist'. Tests added in the prior fixup commit
for the empty / whitespace-only allowFrom cases continue to assert
'pairing' as well, so they remain valid as additional documentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:58:42 -04:00
Luke Boyett
1cc10c2325 fix(matrix/doctor): trim allowFrom entries before counting in trusted-policy migration
Address Codex review feedback on #62942: migrateLegacyTrustedDmPolicy
counted raw string length to decide between 'allowlist' and 'pairing',
so an allowFrom list of whitespace-only entries (e.g. ['   ']) would
migrate to 'allowlist'. Downstream Matrix allowlist normalization later
trims and drops those entries, leaving an effectively empty allowlist
while the policy stays 'allowlist' — silently blocking all DMs instead
of falling through to the intended 'pairing' default.

Trim before the length check so whitespace-only entries are treated as
empty and the safer 'pairing' fallback is used.

Adds a regression test for the whitespace-only edge case.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:58:41 -04:00
Luke Boyett
e9d6bfce63 ci: retrigger checks-node-test after unrelated OOM flake
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:58:41 -04:00
Luke Boyett
cd5029e064 fix(matrix/doctor): migrate legacy channels.matrix.dm.policy "trusted"
The "trusted" value for channels.matrix.dm.policy (and the per-account
channels.matrix.accounts.<id>.dm.policy variant) is no longer accepted
by the schema as of 2026.4.7 — only "pairing" | "allowlist" | "open" |
"disabled" are valid. Configs that previously held "trusted" cause the
gateway to hard-fail at startup with:

  channels.matrix.dm.policy: Invalid option: expected one of
  "pairing"|"allowlist"|"open"|"disabled"

The error message tells the operator to run "openclaw doctor --fix",
but doctor had no migration for this case and only re-printed the same
validation error.

This adds a doctor compatibility migration in
extensions/matrix/src/doctor-contract.ts that rewrites legacy "trusted"
to a safe equivalent:

  - dm.policy "trusted" + non-empty allowFrom -> "allowlist"
    (preserves the explicit allowlist semantics that "trusted" had)
  - dm.policy "trusted" + no allowFrom         -> "pairing"
    (defaults to the secure mode rather than silently widening access)

The same migration is applied to per-account
channels.matrix.accounts.<id>.dm.policy.

Adds two legacyConfigRules so the issue is surfaced under the existing
"Legacy config keys detected" channel before --fix is applied, plus
four unit tests covering top-level allowlist, top-level pairing,
per-account, and a no-op case for modern policy values.

Refs: #62931

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:58:41 -04:00
Shakker
540fcd48f7 docs(changelog): add qa auth fail-fast entry (#63333) (thanks @shakkernerd) 2026-04-08 21:55:39 +01:00
Shakker
48c4003f22 test: cover unsafe qa missing-key providers 2026-04-08 21:55:39 +01:00
Shakker
705d2dd03e fix: harden qa missing-key provider messages 2026-04-08 21:55:39 +01:00
Shakker
d66e2d5b33 test: cover curated qa missing-key reply classification 2026-04-08 21:55:39 +01:00
Shakker
c63d25bd9b fix: classify curated qa missing-key replies 2026-04-08 21:55:39 +01:00
Shakker
9cfa152962 test: cover mixed-traffic qa wait cursors 2026-04-08 21:55:39 +01:00
Shakker
204d766b27 fix: align qa wait cursor semantics 2026-04-08 21:55:39 +01:00
Shakker
7d818c32ba test: cover sanitized qa missing-key replies 2026-04-08 21:55:39 +01:00
Shakker
4ad9f166e2 fix: sanitize qa missing-key replies 2026-04-08 21:55:39 +01:00
Shakker
a6d76df4f0 test: cover qa scenario wait failure replies 2026-04-08 21:55:39 +01:00
Shakker
b3f3cfd598 fix: fail fast across qa scenario wait paths 2026-04-08 21:55:39 +01:00
Shakker
491e216c45 fix: fail fast on qa live auth errors 2026-04-08 21:55:39 +01:00
Gustavo Madeira Santana
30211be1cb Slack: treat ACP block text as visible output (#62858)
Merged via squash.

Prepared head SHA: 14f202e1cc
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-08 16:33:43 -04:00
Eva H
d7bf97adb3 fix: enable thinking support for the ollama api (#62712)
Merged via squash.

Prepared head SHA: c0b995035e
Co-authored-by: hoyyeva <63033505+hoyyeva@users.noreply.github.com>
Co-authored-by: BruceMacD <5853428+BruceMacD@users.noreply.github.com>
Reviewed-by: @BruceMacD
2026-04-08 13:26:18 -07:00
Peter Steinberger
37fb1eb9ad test: move directive state coverage to pure tests 2026-04-08 20:50:56 +01:00
Agustin Rivera
5f5b3d733b fix(browser): re-check interaction-driven navigations (#63226)
* fix(browser): guard interaction-driven navigations

* fix(browser): avoid rechecking unchanged interaction urls

* fix(browser): guard delayed interaction navigations

* fix(browser): guard interaction-driven navigations for full action duration

* fix(browser): avoid waiting on interaction grace timer

* fix(browser): ignore same-document hash-only URL changes in navigation guard

* fix(browser): dedupe interaction nav guards

* fix(browser): guard same-URL reloads in interaction navigation listeners

* docs(changelog): add interaction navigation guard entry

* fix(browser): drop duplicate ssrfPolicy props

* fix(browser): tighten interaction navigation guards

---------

Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-08 13:39:07 -06:00
Peter Steinberger
ab46010caa test: reuse verbose directive reply imports 2026-04-08 20:30:59 +01:00
Peter Steinberger
1d1763caa4 test: reuse exec directive reply imports 2026-04-08 20:25:11 +01:00
Agustin Rivera
dafcaf9d69 fix(browser): harden browser control override loading (#62663)
* fix(browser): harden browser control overrides

* fix(lint): prepare boundary artifacts for extension oxlint

* docs(changelog): add browser override hardening entry

* fix(lint): avoid duplicate boundary prep

---------

Co-authored-by: Devin Robison <drobison@nvidia.com>
Co-authored-by: Devin Robison <drobison00@users.noreply.github.com>
2026-04-08 13:24:47 -06:00
Gustavo Madeira Santana
9b19c0b87f Matrix: report startup failures as errors 2026-04-08 15:19:43 -04:00
Peter Steinberger
8a5ae730d4 auth: persist explicit profile upserts directly 2026-04-08 20:15:57 +01:00
Peter Steinberger
5df4351c4d test(doctor): mock memory-core runtime seam 2026-04-08 20:13:44 +01:00
Peter Steinberger
5b4eb267b0 auth: avoid external cli sync on profile upsert 2026-04-08 20:10:47 +01:00
Peter Steinberger
21ef1bf8de feat: parallelize character eval runs 2026-04-08 20:05:55 +01:00
Peter Steinberger
f1e75d3259 fix: load QA live provider overrides 2026-04-08 20:05:55 +01:00
Peter Steinberger
b3e7858051 build: stage nostr runtime dependencies 2026-04-08 20:05:55 +01:00
Agustin Rivera
dbfcef3196 fix(dotenv): block workspace runtime env vars (#62660)
* fix(dotenv): block workspace runtime env vars

Co-authored-by: zsx <git@zsxsoft.com>

* docs(changelog): add workspace dotenv runtime-control entry

* fix(dotenv): block workspace gateway port override

---------

Co-authored-by: zsx <git@zsxsoft.com>
Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-08 13:04:00 -06:00
Peter Steinberger
f4704184f6 build: narrow plugin SDK declaration build 2026-04-08 20:00:51 +01:00
Peter Steinberger
757fc49506 test: harden Parallels macOS smoke fallback 2026-04-08 20:00:51 +01:00
Peter Steinberger
79f440c903 fix(memory): accept embedded dreaming heartbeat tokens 2026-04-08 19:59:36 +01:00
Peter Steinberger
5478462cbf test: harden provider mock isolation 2026-04-08 19:59:36 +01:00
Gustavo Madeira Santana
c341161a77 docs(config): tighten wording in reference 2026-04-08 14:56:13 -04:00
Peter Steinberger
112e725237 test: reuse followup runner imports 2026-04-08 19:54:37 +01:00
Peter Steinberger
218078ffd4 test: reuse image generate tool imports 2026-04-08 19:49:01 +01:00
Agustin Rivera
4a60087cd0 Align remote node exec event system messages with untrusted handling (#62659)
* fix(nodes): downgrade remote exec system events

* docs(changelog): add remote node exec event entry

---------

Co-authored-by: Devin Robison <drobison@nvidia.com>
2026-04-08 12:47:24 -06:00
Gustavo Madeira Santana
0c00c3c230 fix(matrix): contain sync outage failures (#62779)
Merged via squash.

Prepared head SHA: 901bb767b5
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-08 14:41:28 -04:00
Peter Steinberger
a3d21539ef test: stabilize full-suite execution 2026-04-08 19:40:57 +01:00
github-actions[bot]
365524fc2b chore(ui): refresh id control ui locale 2026-04-08 18:39:12 +00:00
github-actions[bot]
6c8ee340b6 chore(ui): refresh pl control ui locale 2026-04-08 18:39:08 +00:00
github-actions[bot]
935cdcdadc chore(ui): refresh uk control ui locale 2026-04-08 18:39:04 +00:00
github-actions[bot]
cbac55f0da chore(ui): refresh tr control ui locale 2026-04-08 18:39:01 +00:00
Gustavo Madeira Santana
106a40426f docs(matrix): tighten setup and config guidance 2026-04-08 14:38:10 -04:00
github-actions[bot]
4cc539ec4d chore(ui): refresh fr control ui locale 2026-04-08 18:37:56 +00:00
github-actions[bot]
43d3f33b25 chore(ui): refresh ja-JP control ui locale 2026-04-08 18:37:51 +00:00
github-actions[bot]
b8164f7968 chore(ui): refresh ko control ui locale 2026-04-08 18:37:47 +00:00