Commit Graph

66940 Commits

Author SHA1 Message Date
Vincent Koc
d5c9e7ea99 test(plugin-sdk): ratchet surface budget checks 2026-06-16 02:56:41 +02:00
Vincent Koc
9eed9c5758 fix(e2e): derive lifecycle proc units 2026-06-16 02:56:41 +02:00
Vincent Koc
1c2363def6 fix(plugin-sdk): refresh QA self-check API baseline 2026-06-16 02:56:41 +02:00
Vincent Koc
b7d53800d6 fix(release): require beta smoke run url 2026-06-16 02:55:19 +02:00
Vincent Koc
6326395c0a fix(state): make SQLite sidecar archives retriable
Archive the canonical legacy database before SQLite sidecars, then detect and finish pending sidecar cleanup on retry without reopening the migrated database.
2026-06-16 02:52:29 +02:00
Vincent Koc
568f2d5631 fix(sessions): guard unsafe transcript serialization cache 2026-06-16 02:43:58 +02:00
Vincent Koc
e94b666e45 fix(mac): isolate dmg image cleanup 2026-06-16 02:43:16 +02:00
Dirk
ee3b7eb7c0 fix(telegram): forward Bot API 10.1 rich_message content to agent (#93418)
* fix(telegram): surface unsupported inbound rich messages

* fix(telegram): isolate rich message placeholders

* fix(telegram): accept typed rich message inputs

* fix(telegram): preserve rich message cache marker

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 08:42:48 +08:00
Alex Knight
2365a137d8 fix(mattermost): keep message tool replies in threads (#93424)
* fix(mattermost): keep message tool replies in threads

* fix(outbound): preserve one-root reply threading

* fix(outbound): preserve explicit reply target precedence

* fix(mattermost): mirror inherited replies to root session

* test(outbound): align reply transport contract

* fix(mattermost): align mirrored thread root

---------

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 08:36:59 +08:00
Alex Knight
dc09d148bb fix(guards): allow auth profile sqlite reader (#93448)
Allow the auth-profile read-only SQLite bootstrap path through the Kysely guardrail. The runtime already wraps reads with Kysely; the raw DatabaseSync boundary is the short-lived read-only bootstrap.

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-06-16 10:34:13 +10:00
Gio Della-Libera
55263b3dfa feat(policy): cover exec approvals artifact (#90003)
Add exec approvals artifact evidence to Policy.

- add the execApprovals policy namespace and check IDs for required artifact presence, default/per-agent security posture, autoAllowSkills, and allowlist drift
- read the active exec-approvals.json artifact only when execApprovals policy rules are configured, honoring OPENCLAW_STATE_DIR before the default ~/.openclaw path
- emit redacted posture evidence and stable oc:// references without socket tokens, command text, resolved paths, timestamps, or approval-session details
- document the public policy surface and add focused scanner, doctor, conformance, and CLI coverage

Validation:
- GitHub Actions for head b82eefe492 are green, including Real behavior proof.
- ClawSweeper re-review completed for the same head with proof: sufficient and status: ready for maintainer look.
- Maintainer artifact-boundary acceptance is recorded in the PR discussion and body.

Co-authored-by: Gio Della-Libera <235387111+giodl73-repo@users.noreply.github.com>
2026-06-15 17:30:48 -07:00
ZengWen-DT
01acb34bdb fix(tui): show activity indicator for system-injected runs (#93427)
* fix(tui): show activity indicator for system-injected runs

System-injected runs (bridge-notify, webhook, cron) never go through the
TUI submit path, so no active/pending run id exists when their lifecycle
"start" event arrives. handleAgentEvent dropped events for untracked runs,
leaving the status bar idle until the response landed.

Adopt an untracked lifecycle "start" for the current session (lifecycle
events always carry sessionKey) so the activity indicator shows work is
happening, mirroring how chat deltas adopt runs in handleChatEvent. Local
side-question (btw) runs never claim the active slot.

Closes #51825

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

* fix(tui): preserve concurrent injected run activity

---------

Co-authored-by: zengwen <zeng_wen@foxmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 08:27:59 +08:00
zengLingbiao
03e3ef86af fix(agents): resolve configured default model in runEmbeddedAgent (fixes #93419) (#93428)
* fix(agents): honor configured default model in embedded runs

* fix(agents): resolve embedded defaults from runtime config

* fix(agents): preserve embedded model routing semantics

* test(agents): model current embedded attempts explicitly

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 08:27:19 +08:00
Harjoth Khara
eac3e08cfd fix(line): cap carousel column text at 60 chars when a title or image is set (#93429)
* fix(line): cap carousel column text at 60 chars with title or image

LINE limits a carousel column's text to 60 characters when the column has
a title or thumbnail image, and 120 characters otherwise. createCarouselColumn
always truncated to 120, so a column with a title/image and 61-120 char text
exceeded the limit and made LINE reject the entire carousel reply (HTTP 400).
Apply the conditional limit (mirroring the buttons template) and drop the now
redundant slice in createProductCarousel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(line): apply conditional text limits across templates

* fix(line): truncate template text by code point

* fix(line): preserve grapheme clusters when truncating

* fix(line): apply compact limit for default actions

* fix(line): follow title and thumbnail text limits

* fix(line): truncate template text within UTF-16 limits

* fix(line): preserve required text within template limits

* fix(line): preserve carousel product prices

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 08:23:05 +08:00
NianJiu
a375d6c849 fix(telegram): gate rich messages behind opt-in (#93279)
Restore readable standard Telegram text delivery by default after Bot API 10.1 rich messages rendered as unsupported in current clients. Keep native rich tables and structured messages available through the account-level richMessages opt-in, with account-aware capability advertising and documented structural limits.

Fixes #93263.
2026-06-15 17:22:41 -07:00
Vincent Koc
9dbf8f718f fix(sessions): guard append cache after extension serialization 2026-06-16 08:13:38 +08:00
Vincent Koc
fd806ada64 fix(agents): bound autoreview scope (#93435) 2026-06-16 07:58:07 +08:00
Vincent Koc
4ca8bf086c fix(proxy): close cached SQLite stores by path
Track debug proxy capture stores per database path so replacing or concurrently leasing capture paths cannot orphan SQLite handles and WAL checkpoint timers.
2026-06-16 01:54:09 +02:00
Vincent Koc
b41c0b6746 fix(cli): preserve gateway request errors in json mode 2026-06-16 01:52:23 +02:00
Marcus Castro
52d9d16e1b fix(whatsapp): preserve auth on terminal disconnects (#93076)
* fix(whatsapp): preserve auth on passive terminal stops

* fix(whatsapp): recover stale web auth during relink

* fix(gateway): defer channel stop until qr takeover
2026-06-15 20:50:22 -03:00
Vincent Koc
0ef8620746 fix(auth): wait through SQLite read contention
Apply the canonical SQLite busy timeout to short-lived read-only auth profile reads so a brief rollback-journal exclusive lock cannot make valid persisted credentials appear missing.
2026-06-16 01:41:05 +02:00
Vincent Koc
74c6f175c7 fix(ci): skip transcript guard for older release targets 2026-06-16 07:40:47 +08:00
Alix-007
0d50ec77de fix(memory): swap rollback-journal sidecar during atomic reindex (#93295)
The atomic reindex file ops hardcoded the WAL sidecar pair (-wal/-shm)
when moving, removing, and backing up index files. NFS-backed memory
stores run SQLite under journal_mode=DELETE, which produces a
rollback-journal (-journal) sidecar instead. As a result an index swap
left the previous targets stale -journal next to the freshly published
2026-06-16 07:37:17 +08:00
Dr Rushindra Sinha
eccfacb02c fix(whatsapp): stop markdownToWhatsApp dropping code spans followed by a digit (#93409)
The inline-code/fence restore step matched the placeholder index with a
greedy `(\d+)`, so a digit in user text immediately after a code span
(e.g. `code`5) was absorbed into the index, resolved to undefined, and
`?? ""` deleted both the code span and the digit. Terminate the
placeholder index with the existing NUL marker so the index boundary is
unambiguous.

Co-authored-by: Dr Rushindra Sinha <5796457+rushindrasinha@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 07:35:28 +08:00
Matt Gunnin
f08b24e63c fix(discord): suppress tool progress for message-tool replies (#93412)
* fix(discord): suppress tool progress for message-tool replies

* fix(discord): preserve explicit status reactions for tool-only replies

* fix(discord): keep explicit status reactions private

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 07:35:15 +08:00
Vincent Koc
c32ba171db fix(qa): fail unsuccessful self-checks 2026-06-16 01:32:47 +02:00
Shakker
e64379dddb fix: stabilize transcript cache and CLI env isolation 2026-06-16 00:27:53 +01:00
Josh Lehman
127e174c9e refactor: route auto-reply sessions through session seam (#89124)
* clawdbot-6f0: route agent runtime session writes through seam

* clawdbot-6f0: route command entry persistence through seam

* test: ratchet auto-reply session accessor writes

* refactor: scope embedded attempt quota reads

* test: ratchet session store save writer
2026-06-15 15:50:38 -07:00
joshavant
21e3cfa5e9 Add Apple Watch screenshot pipeline 2026-06-16 00:40:40 +02:00
Vincent Koc
c8e70708e9 fix(ci): restore main checks 2026-06-16 06:36:10 +08:00
Harjoth Khara
0bb415bf66 fix(sessions): preserve behavior overrides across rollover
Carry user behavior overrides across implicit daily/idle session rollover while preserving existing model fallback clearing behavior.
2026-06-16 06:35:26 +08:00
Dr Rushindra Sinha
00c58b6613 fix(whatsapp): notify when trailing media send fails
Notify users when a later WhatsApp media attachment fails instead of silently dropping it.
2026-06-16 06:35:09 +08:00
Vincent Koc
50dbd46aa6 test(agents): mark runtime contract delivery as sent 2026-06-16 06:31:06 +08:00
Keeley Hoek
baeedaa316 fix(discord): reject malformed realtime consult calls
Catch malformed realtime consult tool-call args, return a tool error, and avoid crashing Discord voice handling. Includes e2e coverage.
2026-06-16 06:27:49 +08:00
litang9
0f71a665ed fix(logging): avoid stalled warnings for active model calls
Classify owned silent model calls as long-running until the abort threshold while preserving stalled handling for ownerless stale activity, with diagnostics tests and docs.
2026-06-16 06:27:40 +08:00
lundog
bcd1fdb1db fix(media): stop pruning media on write
Stop media writes from triggering opportunistic pruning and leave retention cleanup to the configured maintenance timer. Preserve explicit cleanup options and cover shallow/root/recursive cleanup behavior.
2026-06-16 06:27:22 +08:00
Alix-007
1b5ac45e60 fix(doctor): separate platform-incompatible skills
Track platform-incompatible skills separately from missing requirements, keep doctor --fix from treating them as broken installs, and cover the status output.
2026-06-16 06:26:20 +08:00
Bakhtiyar
3d3d291902 fix(auth): keep alias-compatible auth-profile overrides
Use alias-aware credential compatibility before clearing auth-profile overrides, preventing compatible CLI sessions from flapping auth profiles. Includes regression coverage.
2026-06-16 06:26:11 +08:00
Andy Ye
57bad4bdf8 fix(cron): suppress announce control replies
Use the shared suppressed-control-reply detector for cron delivery so NO_REPLY, ANNOUNCE_SKIP, and REPLY_SKIP do not leak to outbound channels, with direct/text delivery coverage.
2026-06-16 06:25:21 +08:00
James W. Niu
923828ccd7 fix(infra): drop duplicated restart word
Avoid rendering "Gateway restart restart" for restart sentinel summaries, while keeping the existing wording for other restart kinds.
2026-06-16 06:25:12 +08:00
Franco Viotti
7305d9baca fix(googlechat): return sent thread metadata
Return Google Chat message and thread metadata from message sends, and cover the action/API result shape in tests.
2026-06-16 06:23:07 +08:00
ooiuuii
212fef8703 fix(cli): accept --no-color after subcommands
Normalize root --no-color before command parsing while preserving command option values, and add coverage for subcommand/root option placement.
2026-06-16 06:20:56 +08:00
pick-cat
7a008c53f4 fix(control-ui): keep workboard card titles visible
Keep workboard card titles visible when a column overflows by pinning implicit rows to content height, and add e2e coverage for the overflow case.

Fixes #91717
2026-06-16 06:18:22 +08:00
Vincent Koc
93fa065fb3 fix(ci): update Vitest past browser advisory 2026-06-16 06:16:04 +08:00
Vincent Koc
bdc3017c1a test(agents): require delivery evidence in suppression fixtures 2026-06-16 06:16:02 +08:00
Vincent Koc
6cb631afc9 fix(agents): distinguish delivery routes from references 2026-06-16 05:56:48 +08:00
Vincent Koc
fec6a0407f fix(agents): validate visible delivery receipts 2026-06-16 05:56:48 +08:00
Vincent Koc
43cef3a80c fix(agents): record visible delivery target evidence 2026-06-16 05:56:48 +08:00
Dallin Romney
e32929e12c Add slim evidence mode for QA profile evidence (#93179)
* test(qa): compact profile evidence execution metadata

* docs(qa): document compact profile evidence

* test(qa): support compact evidence mode

* test(qa): rename compact evidence mode to slim

* docs(qa): trim slim evidence wording

* fix(qa): avoid commander runtime import
2026-06-15 14:50:40 -07:00
pick-cat
f018945eff fix(doctor): import default-agent auth profiles into sqlite (#93156)
* fix(doctor): import default-agent auth profiles into sqlite

* fix(doctor): type legacy config auth imports

* fix(doctor): preserve auth json precedence

* fix(doctor): import config auth with state-only stores

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-06-15 17:42:51 -04:00