Commit Graph

32452 Commits

Author SHA1 Message Date
Ayaan Zaidi
f19e3ab298 refactor(doctor): distill pending pairing diagnosis 2026-04-20 11:36:25 +05:30
Ayaan Zaidi
f96eca4ab2 fix(doctor): tighten pairing state type guards 2026-04-20 11:36:25 +05:30
Ayaan Zaidi
c68a582e6e docs(doctor): document device pairing drift checks 2026-04-20 11:36:25 +05:30
Ayaan Zaidi
451b37ece1 fix(doctor): report device pairing auth drift 2026-04-20 11:36:25 +05:30
Ayaan Zaidi
b414c8b863 fix: default GitHub Copilot onboarding to Claude Opus 4.6 (#69207) 2026-04-20 11:03:50 +05:30
Ayaan Zaidi
be47599cad test(github-copilot): cover opus default model 2026-04-20 11:03:50 +05:30
Ayaan Zaidi
66ae458cce fix(github-copilot): default onboarding to opus 4.6 2026-04-20 11:03:50 +05:30
Ayaan Zaidi
0ce5e358d4 fix: require numeric Telegram allowFrom setup ids (#69191) 2026-04-20 10:03:25 +05:30
Ayaan Zaidi
3c354c0907 docs(telegram): clarify allowFrom setup ids 2026-04-20 10:03:25 +05:30
Ayaan Zaidi
df3aa90a20 fix(telegram): require numeric allowFrom ids in setup 2026-04-20 10:03:25 +05:30
竹田賢史
1d5b58ac18 feat(plugins): pass attachment metadata to before_model_resolve hook (#67322)
Merged via squash.

Prepared head SHA: 8af0ba9703
Co-authored-by: estack-takeda-yorichika <47170408+estack-takeda-yorichika@users.noreply.github.com>
Co-authored-by: sallyom <11166065+sallyom@users.noreply.github.com>
Reviewed-by: @sallyom
2026-04-20 00:14:50 -04:00
Roy Martin
9fc0d2a6bf fix(bluebubbles): prefer iMessage over SMS when both chats exist (#61781)
Merged via squash.

Prepared head SHA: 664fecff2f
Co-authored-by: rmartin <119151+rmartin@users.noreply.github.com>
Co-authored-by: omarshahine <10343873+omarshahine@users.noreply.github.com>
Reviewed-by: @omarshahine
2026-04-19 21:12:41 -07:00
zqchris
77b424b15e BlueBubbles/reactions: fall back unsupported reactions to love (#64693)
* bluebubbles: fall back unsupported reactions to love

iMessage tapback only supports love/like/dislike/laugh/emphasize/question.
Previously, `normalizeBlueBubblesReactionInput` threw when the input did
not map to one of those (e.g. a non-standard unicode emoji like 👀 used
to mean "seen, working on it"), which aborted the whole reaction request
and left the user with no feedback.

This splits the normalizer into a strict and lenient variant:

- `normalizeBlueBubblesReactionInputStrict` throws on unsupported input
  and is used by validator-style callers (e.g. `resolveBlueBubblesAckReaction`
  in monitor-processing.ts) that rely on the throw to detect misconfigured
  ack reactions and skip them cleanly. This preserves the previous silent-skip
  + warn-once behavior for ack reactions configured with an unsupported
  emoji.
- `normalizeBlueBubblesReactionInput` stays lenient and falls back to
  `love` (or `-love` when removing) on unsupported input, so agent-driven
  `sendBlueBubblesReaction` still produces a visible tapback instead of
  failing the whole reaction request. Contract errors (empty input)
  continue to bubble up.

`love` is chosen over `like` as the neutral default: `❤️` reads as a
general acknowledgment across chat norms, while `👍` carries an
agreement connotation that does not match the "seen, working on it"
semantic.

* CHANGELOG: note BlueBubbles reaction fallback

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-04-19 20:52:36 -07:00
Omar Shahine
97492cf602 test(agents,gateway): fix two main-baseline test breakages from #68726 and #65986 (#69173)
* test(agents): expect timing fields in killed-run outcome

Aligns the steer-restart killed-run test with the timing fields added to
subagent run outcomes in #68726. The production code now returns
startedAt/endedAt/elapsedMs alongside status and error on the error
outcome, but this test's toEqual still asserted only status+error, so it
has been failing on main since #68726 landed. Uses the same expect.any(Number)
matcher already in use a few lines below for the ended hook payload.

* test(gateway): register ops agent in sessions.create task-start test

The "sessions.create can start the first agent turn from an initial task"
test triggers the auto chat.send path by passing `task:`. After #65986
added a deleted-agent guard to chat.send, an unregistered `ops` agent
triggers the reject path and the auto-started run never happens, so
runStarted comes back false.

Register `ops` via testState.agentsConfig (matching the pattern already
used by other ops-agent tests in this file) so the guard lets chat.send
through and the first turn starts as expected.

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-04-19 20:45:19 -07:00
Shakker
fd90c30c23 docs: add gateway startup retry changelog 2026-04-20 04:06:57 +01:00
Shakker
4e6dfc015e chore: dedupe gateway chat client imports 2026-04-20 04:06:57 +01:00
Shakker
4ebeb18fde test: restore gateway chat timer cleanup 2026-04-20 04:06:57 +01:00
Shakker
3730d6d17a fix: retry tui chat history during startup 2026-04-20 04:06:57 +01:00
Ayaan Zaidi
52cca21ea8 fix: require explicit recipient for mode none (#69163) 2026-04-20 08:25:16 +05:30
Ayaan Zaidi
f657a25422 docs(changelog): note mode none recipient fix 2026-04-20 08:25:16 +05:30
Ayaan Zaidi
b64e1d8b91 fix(cron): require explicit recipient for mode none 2026-04-20 08:25:16 +05:30
Ayaan Zaidi
03de50e70b test(cron): cover mode none implicit recipient leak 2026-04-20 08:25:16 +05:30
Ayaan Zaidi
7d9a9d83ff fix: preserve isolated message targets (#69153)
* test(cron): cover delivery target context for mode none

* fix(cron): preserve target context for delivery mode none

* test(cron): cover isolated message target forwarding

* fix(cron): forward isolated message targets into embedded runs

* fix(cron): ignore implicit last-target context for mode none

* fix(cron): keep mode none channel explicit only

* test(cron): fix isolated target test typing

* fix: preserve isolated message targets (#69153)

* fix: preserve isolated message targets (#69153)
2026-04-20 08:05:32 +05:30
Josh Avant
d5b326523f qa-lab: make live lanes CI-ready for v1 E2E automation (#69122)
* qa-lab: harden CI defaults and failure semantics for live lanes

* qa-lab: add unit tests for suite progress logging defaults

* qa-lab: cover malformed multipass summary edge cases

* qa-lab: share suite summary failure counting helper

* qa-lab: test allow-failures parse wiring and sanitize progress ids

* fix: note qa CI live-lane defaults in changelog (#69122) (thanks @joshavant)
2026-04-19 21:13:27 -05:00
Gustavo Madeira Santana
6159b17cdf Tests: isolate sessions spawn registry seam 2026-04-19 19:26:56 -04:00
Gustavo Madeira Santana
f06493f0ea fix: preserve deleted main session targets 2026-04-19 19:24:58 -04:00
BitToby
d41c9860d7 fix: invalidate orphaned sessions on agent deletion (#65986)
Merged via squash.

Prepared head SHA: bc7c167dd9
Co-authored-by: bittoby <218712309+bittoby@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-19 18:47:52 -04:00
B.K.
4277078bc5 fix(subagent): include role, session key, and timing in error payloads (#68726)
Merged via squash.

Prepared head SHA: 55c756142f
Co-authored-by: BKF-Gitty <263413630+BKF-Gitty@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-19 18:31:31 -04:00
Gustavo Madeira Santana
f9a1875127 qa-matrix: cover Matrix allowlist hot reload
Add a Matrix QA scenario that removes an observer from the running account group allowlist and verifies the existing gateway stops replying without relying on a channel restart.

The scenario disables generic config reload and defers restart during the probe so it specifically covers the Matrix handler per-message live allowlist read.
2026-04-19 18:10:51 -04:00
Gustavo Madeira Santana
f309656325 fix(matrix): align mention-stripped command body 2026-04-19 17:34:37 -04:00
Bulut M.
f039d80306 refactor(terminal): optimize log sanitization (#67205)
* refactor(terminal): optimize sanitizeForLog with dynamic regex

* perf(terminal): optimize log sanitization

---------

Co-authored-by: Altay <altay@uinaf.dev>
2026-04-20 00:21:32 +03:00
Gustavo Madeira Santana
4d4f3eb404 chore(docs): remove stale ref 2026-04-19 17:13:02 -04:00
Mr.NightQ
733c0c2fda fix(matrix): strip mention prefix before slash command matching (#68570)
Merged via squash.

Prepared head SHA: d2c1ed5832
Co-authored-by: nightq <3429433+nightq@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-19 16:50:06 -04:00
Gustavo Madeira Santana
efc19f0ddb Add Matrix QA coverage for MXID-prefixed commands
Add a qa-matrix contract scenario that sends a Matrix self MXID-prefixed
control command from an observer and expects no SUT reply. This captures the
regression fixed by the Matrix command precheck change.
2026-04-19 16:46:49 -04:00
Omar Shahine
8fbf0972e7 bluebubbles: always set method explicitly on text sends, force Private API on macOS 26 (#69070)
Merged via squash.

Prepared head SHA: e3af5c5d83
Co-authored-by: omarshahine <198016546+xqing3@users.noreply.github.com>
Co-authored-by: omarshahine <10343873+omarshahine@users.noreply.github.com>
Reviewed-by: @omarshahine
2026-04-19 13:42:56 -07:00
澄潭
f38a498985 fix(matrix): hot-reload dm.allowFrom and groupAllowFrom on each inbound message (#68546)
Merged via squash.

Prepared head SHA: ab369851c8
Co-authored-by: johnlanni <6763318+johnlanni@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-19 15:55:18 -04:00
Gustavo Madeira Santana
55f094ea33 Skills: require manual test performance invocation 2026-04-19 15:48:18 -04:00
Gustavo Madeira Santana
d64948f5c2 Skills: add OpenClaw test performance workflow 2026-04-19 15:38:38 -04:00
Masato Hoshino
517801282a fix(matrix): pin event-helpers import to canonical matrix-js-sdk subpath (refs #50477) (#68498)
Merged via squash.

Prepared head SHA: 32e08e4d8e
Co-authored-by: masatohoshino <246810661+masatohoshino@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-04-19 15:35:34 -04:00
Ayaan Zaidi
c206702add docs(changelog): note cron delivery validation follow-ups 2026-04-19 23:18:27 +05:30
Ayaan Zaidi
9b38606d5c fix(gateway): preserve cron delivery validation behavior 2026-04-19 23:18:27 +05:30
Ayaan Zaidi
c0563aa532 test(gateway): cover cron delivery validation follow-ups 2026-04-19 23:18:27 +05:30
Marcus Castro
aa76cf43f0 fix(whatsapp): stabilize auth state and reconcile local runtime after CLI login (#67815)
* WhatsApp: harden auth persistence and backup recovery

* WhatsApp: model unstable auth state across runtime and setup

* WhatsApp: recover login and monitor startup from unstable auth

* Channels: surface auth stabilizing in status and health

* Gateway protocol: add channels.start surface

* Gateway: reconcile local channel runtime after CLI login

* Channels UI: reflect recovered login start state

* Changelog: note WhatsApp auth stabilization

* Gateway: fix lint in call test
2026-04-19 14:20:46 -03:00
Ayaan Zaidi
1d4e4314dd fix: preserve deferred cron heartbeat target (#69021)
* test(cron): cover deferred heartbeat target preservation

* fix(cron): preserve deferred heartbeat target override

* test(cron): update timer expectation for deferred heartbeat target

* fix(cron): preserve agent heartbeat config for targeted wakes

* test(cron): use wake request type in scheduler helper

* fix(cron): forward heartbeat overrides through gateway wake adapter

* fix(cron): preserve coalesced wake heartbeat overrides

* fix: preserve deferred cron heartbeat target (#69021)
2026-04-19 22:48:46 +05:30
Ayaan Zaidi
64089fd15e fix: reject invalid cron announce delivery config (#69015)
* test(gateway): cover invalid cron announce delivery config

* fix(gateway): reject invalid cron announce delivery config

* style(gateway): use toSorted for configured channels

* fix: reject invalid cron announce delivery config (#69015)

* fix: preserve default-agent cron delivery validation (#69015)
2026-04-19 22:05:24 +05:30
Ayaan Zaidi
99fb9ab444 fix: key recurring delivery dedupe to execution (#69000) 2026-04-19 21:16:57 +05:30
Ayaan Zaidi
34334f0e68 test(cron): cover recurring delivery dedupe 2026-04-19 21:16:57 +05:30
Ayaan Zaidi
21cfc21e4f fix(cron): key delivery dedupe by execution 2026-04-19 21:16:57 +05:30
Ayaan Zaidi
f44a7423c2 refactor(cron): share execution id helper 2026-04-19 21:16:57 +05:30
Omar Shahine
055c17b088 bluebubbles: consolidate HTTP traffic through typed BlueBubblesClient (#68234)
Merged via squash.

Prepared head SHA: ee72657bc8
Co-authored-by: omarshahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: omarshahine <10343873+omarshahine@users.noreply.github.com>
Reviewed-by: @omarshahine
2026-04-19 08:43:32 -07:00