Commit graph

82074 commits

Author SHA1 Message Date
Peter Steinberger
b5880c09bc
fix(gateway): publish cloud placement changes (#128914)
Some checks are pending
Native App Locale Refresh / Refresh native hi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native id (push) Blocked by required conditions
Native App Locale Refresh / Refresh native it (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ja-JP (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ko (push) Blocked by required conditions
Native App Locale Refresh / Refresh native nl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pt-BR (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ru (push) Blocked by required conditions
Native App Locale Refresh / Refresh native sv (push) Blocked by required conditions
Native App Locale Refresh / Refresh native th (push) Blocked by required conditions
Native App Locale Refresh / Refresh native tr (push) Blocked by required conditions
Native App Locale Refresh / Refresh native uk (push) Blocked by required conditions
Native App Locale Refresh / Refresh native vi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-CN (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-TW (push) Blocked by required conditions
Native App Locale Refresh / Commit native locale refresh (push) Blocked by required conditions
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Waiting to run
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Blocked by required conditions
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / Validate release publish approval (push) Blocked by required conditions
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / Preflight plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / Trusted publisher OIDC exchange (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Plugin NPM Release / verify_plugins_npm (push) Blocked by required conditions
Vitest Cache Warm / warm (push) Waiting to run
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
2026-08-24 17:33:44 -07:00
RoboClaw
ae3d679b12
fix(ui): center completed progress marker (#128911)
Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-24 17:22:31 -07:00
Peter Steinberger
ee4bb5f85b
fix(media): match optimized image filenames to output format (#128902) 2026-08-24 17:04:34 -07:00
Peter Steinberger
058a72fe66
fix(update): bind managed handoffs to exact targets (#128868)
* fix(update): bind managed handoffs to exact targets

* fix(update): preserve campaigns on target mismatch

* fix(update): fence active campaign updates
2026-08-24 17:01:11 -07:00
Vincent Koc
e27433c22e
improve(ci): shard iOS screenshot capture (#128460)
* perf(ci): shard iOS screenshot capture

* fix(ci): bind iOS screenshot shard evidence

* fix(ci): preserve screenshot capture attempts

* fix(ci): align screenshot shards with Xcode 26.6

* fix(ci): provision screenshot shard Fastlane

* fix(ci): normalize Fastlane provenance version

* fix(ci): select installed Fastlane version
2026-08-24 16:59:06 -07:00
Peter Steinberger
4c8c22867e
fix(msteams): preserve channel thread context with supported Graph queries (#128901) 2026-08-24 16:47:40 -07:00
xingzhou
1edbbc9dd7
fix(ui): prevent oversized WebRTC SDP answers from hanging Talk setup (#119295)
* fix(ui): bound WebRTC SDP answer reads and release failed bodies

* fix(ui): scope WebRTC SDP limits to OpenAI

* fix(ui): release bounded response readers

* test(ui): split WebRTC SDP browser coverage

* fix(ui): reject unsafe declared response lengths

* test(ui): reuse pending WebRTC SDP response fixture

* test(ui): use native response for pending SDP body

* style(ui): align pending SDP fixture formatting

* test(ui): capture WebRTC SDP alert proof

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-24 16:41:36 -07:00
Vitor Cepeda Lopes
b71a09fd8a
fix(macos): return paired-node Codex catalogs without native supervision (#126811)
* fix(macos): route Codex catalog to plugin worker

* fix(macos): freeze Codex catalog ownership per invoke

---------

Co-authored-by: Josh Lehman <550978+jalehman@users.noreply.github.com>
2026-08-24 16:24:27 -07:00
Peter Steinberger
9abfc1b4a3
fix(cron): honor updated recurring schedule anchors (#128893) 2026-08-24 16:18:48 -07:00
Josh Lehman
2ec0757c2c
fix(memory): suppress stale warning during session catch-up (#128894) 2026-08-24 16:13:38 -07:00
Ben Badejo
9b36c8bc56
fix(docs): document OpenAI audio auth with OAuth (#128885)
Co-authored-by: Benjamin Badejo <ben@benbadejo.com>
2026-08-24 15:58:05 -07:00
Josh Lehman
5487f23468
perf(sqlite): avoid unnecessary snapshot workers (#128884) 2026-08-24 15:54:36 -07:00
Martin Cleary
7f24f54214
docs: require discussion for material SQLite changes (#128876) 2026-08-24 23:53:14 +01:00
Peter Steinberger
b1b26be853
fix(ui): show when connected chats cannot receive live messages (#128865)
* fix(ui): surface failed live chat subscriptions

* test(ui): type live message subscription fixtures
2026-08-24 15:42:52 -07:00
Peter Steinberger
c50f90251e
fix(gateway): surface cloud workspace recovery failures (#128864)
* fix(gateway): record workspace recovery failures

Persist bounded, deduplicated recovery-attempt failures through the session transcript while preserving pending workspace result fences, and prefer current recovery errors over stale terminal reasons.\n\nRefs #128850

* fix(gateway): revalidate recovery transcript ownership

Recheck the canonical session mapping inside the queued transcript transaction so a rebound session cannot receive a stale workspace recovery diagnostic.\n\nRefs #128850
2026-08-24 15:38:25 -07:00
Vincent Koc
0d4e369b1c
test(ui): scope Claude session selection to sidebar links (#128874)
* test(ui): scope Claude session link locators

* test(ui): keep Claude locator fix under lint cap
2026-08-24 15:24:18 -07:00
Josh Avant
d74555299d
fix(agents): keep Unicode filename reads inside workspace (#128873) 2026-08-24 15:03:32 -07:00
Peter Steinberger
a30e310910
fix(browser): isolate parent and leaf CLI options (#128870) 2026-08-24 14:58:34 -07:00
RoboClaw
94bd567674
refactor(ui): flatten tasks page layout (#128853)
Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-24 14:45:48 -07:00
Peter Steinberger
5f9fda20c9
fix(cron): route script notifications to their owning agent (#128856) 2026-08-24 14:26:01 -07:00
Peter Steinberger
be509faf94
fix(cli): emit JSON parse errors for default-machine commands (#128861) 2026-08-24 14:15:23 -07:00
Vincent Koc
c40e787309
fix(ci): preserve iOS Fastlane root after cd (#128854) 2026-08-24 14:06:37 -07:00
Peter Steinberger
d48166515e
fix(plugins): surface load errors in the default plugin list (#128849)
* fix(plugins): show load errors in the default plugin list

* fix(plugins): preserve disabled plugin descriptions
2026-08-24 14:02:07 -07:00
Peter Steinberger
97e732715a
fix(slack): keep edited and deleted messages in their original threads (#128768)
* fix(slack): route threaded edits and deletes to their sessions

* fix(slack): tighten threaded-event assertion baseline
2026-08-24 14:00:52 -07:00
Peter Steinberger
5775cd3dfa
fix(cli): explain empty capability listings (#128852) 2026-08-24 13:44:42 -07:00
Miorbnli
3a17d5993a
fix: prevent $-pattern injection in prompt template and approval substitution (#123015)
* fix: prevent dollar-pattern injection in prompt template and approval substitution

Three call sites used String.replace/replaceAll with a string replacement
fed a runtime variable, causing dollar-amp/dollar-1/dollar-backtick
sequences in user-supplied args or approval ids to corrupt the rendered text.

Switch each to a function replacement so the value is treated literally:

- prompt-template-arguments: dollar-ARGUMENTS and dollar-@ substitution
  corrupted slash-command args containing dollar signs
- get-reply-inline-actions: bundle command template expansion had the
  same issue with normalizedArgs
- approval-reaction-runtime: approval id placeholder rendering mangled
  ids containing dollar signs; the iMessage sibling
  (extensions/imessage/src/approval-text.ts) already escapes this

* fix: rebase, drop unproven approval rewrite, add dollar regression

Address review: the approval placeholder helper has no canonical
/approve <id> producer in the plugin-SDK manual fallback path, so its
rewrite is unproven - revert it. Keep the two reachable prompt-template
fixes and add an owner-boundary regression covering literal dollar
sequences in dollar-ARGUMENTS and dollar-@ substitution (fails on the
old string replacement form, passes with the callback form).

* test(auto-reply): cover literal dollar bundle command arguments

* fix(agent-core): resolve prompt placeholders in a single substitution pass
2026-08-24 13:43:23 -07:00
Peter Steinberger
bea8740981
fix(matrix): show edited messages in replies and thread context (#128763)
* fix(matrix): use edited messages in reply and thread context

* fix(matrix): narrow bundled edit records without assertions
2026-08-24 13:38:57 -07:00
Peter Steinberger
998128abd8
fix(reply): preserve distinct streamed location replies (#128846) 2026-08-24 13:28:09 -07:00
Peter Steinberger
2a39c50227
fix: make full verification hermetic across local environments (#128777)
* test: harden full verification fixtures

* test: resolve main fixture overlap
2026-08-24 13:26:00 -07:00
Peter Steinberger
9a15d4cbf9
fix(discord): keep forum attachments and receipts in their first thread (#128765)
* fix(discord): keep structured forum attachments in one thread

* test(discord): type forum delivery fixture sender
2026-08-24 13:17:06 -07:00
Peter Steinberger
a99317ef97
refactor(gateway): unify bounded chat history across transports (#128844) 2026-08-24 13:06:06 -07:00
Peter Steinberger
9e98229678
fix(plugins): report Git commit updates when package version is unchanged (#128841) 2026-08-24 12:55:47 -07:00
Peter Steinberger
b91f1ea6e0
fix(outbound): normalize valid attachment data URLs (#128823) 2026-08-24 12:54:26 -07:00
qingminlong
97cc8d6d34
docs: correct directory JSON failure envelope (#124989)
* docs: correct directory JSON failure envelope

* docs(cli): document canonical config and directory JSON failures

Preserve the contributor directory error-envelope correction and update config get to distinguish schema-valid unset paths from unknown paths while linking the shared canonical CLI JSON failure contract.

Co-authored-by: qingminlong <qing.minlong@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-24 12:48:27 -07:00
RoboClaw
b4c620b157
fix(ui): compact touch tool rows (#128839)
Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-24 12:43:53 -07:00
Vladislav Smolensky
636b00cb04
fix(cli): normalize echoed binary tool outputs (#128699)
* fix(cli): image-heavy Claude CLI turns abort after about fifteen screenshots

The Claude CLI emits every image tool result twice in its stream-json
output: once inside `message.content[].tool_result.content[]` and once in
the `tool_use_result` field it echoes alongside the message. The
normalizer added in #119486 only walks the message copy, so the echoed
copy still counts against the 8 MiB per-turn raw-output budget and is
still retained in the live-turn line buffer.

Walk the whole parsed user record instead, so both copies are stubbed,
and cover the `tool_use_result.file.base64` shape the built-in image
read echoes. openclaw never reads `tool_use_result` (no references in
src), so nothing downstream changes.

[AI-assisted]

* fix(cli): make echoed-payload normalization stack-safe

Addresses the review finding on the recursive walker. The normalizer now
lives in its own module as one canonical entry point, walks the record
iteratively with an explicit stack, and falls back to raw accounting when
a record is too deeply nested for `JSON.stringify` to re-serialize.

Adds a 50,000-deep regression record, built as text because
`JSON.stringify` itself cannot serialize one that deep.

[AI-assisted]

* fix(cli): normalize Agent SDK REPL binary echoes

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-24 12:29:56 -07:00
ClawSweeper
798c21af7b
feat(ui): search sessions and catalogs from command palette (#128356)
* feat(ui): search session context from command palette

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): harden unified session search

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): preserve control UI style budget

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* feat(ui): search command palette catalogs

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): surface incomplete palette searches

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): distinguish incomplete transcript results

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

---------

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
2026-08-24 15:27:12 -04:00
Peter Steinberger
6fe4e11a78
fix(gateway): reuse verified GitHub profiles during outages (#128833) 2026-08-24 12:15:48 -07:00
Peter Steinberger
e1a700840a
fix(update): keep managed handoff as successor owner (#128212)
* fix(update): make managed handoff own successor

Park the exact native service before Gateway close and coalesce same-root handoff requests so only the detached updater can activate and restart.

* refactor(update): reuse restart ownership helpers

* test(gateway): isolate supervisor restart fixtures

* fix(update): cancel handoff before restart fallback

* fix(update): harden managed service handoff

* fix(update): use canonical SQLite opener

* fix(update): preserve lifecycle runtime boundaries
2026-08-24 11:56:20 -07:00
RoboClaw
b0e8a985ee
feat(ui): load owner sessions before shared roster (#128767)
* feat(ui): load owner sessions before shared roster

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): preserve owner roster across refreshes

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

---------

Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
2026-08-24 11:50:36 -07:00
ClawSweeper
a5b5920444
feat(ui): configure capabilities before session start [AI-assisted] (#128081)
* feat(ui): configure capabilities before session start

Reuse the active-chat Plus menu on new sessions, move Draft into it, and persist admin-scoped tool overrides before the initial turn. Closes #128079.

* test(ui): follow new-session Draft menu

* refactor(ui): reconcile new-session capability ownership

* fix(ui): gate terminal launch on capability overrides

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-24 11:47:12 -07:00
Vincent Koc
88f417d328
fix(ci): pin iOS Fastlane toolchain (#128735)
* fix(ci): pin iOS Fastlane toolchain

* fix(ci): enforce locked iOS Fastlane path

* fix(ci): route iOS docs through bundle

* fix(ci): pin all documented iOS Fastlane commands

* fix(ci): make iOS bundle selection canonical

* fix(ci): enforce the locked iOS Fastlane path

* fix(ci): pin Bundler in iOS wrapper

* fix(ci): require the iOS Fastlane Gemfile

* fix(docs): pin direct iOS Fastlane bundle
2026-08-24 11:45:05 -07:00
Peter Steinberger
f533cde954
fix(update): verify complete Control UI assets (#128825) 2026-08-24 11:43:50 -07:00
Peter Steinberger
bf83a4dde8
fix(node-host): recover worker hosting after transient initialization failures (#128798)
* fix(node-host): retry worker supervisor initialization

Clear failed initialization ownership for retry, retain valid container supervisors after transient reconciliation errors, and retry from the runtime until capacity becomes authoritative or shutdown cancels the lifecycle.\n\nRefs #128794

* fix(node-host): preserve permanent container mismatch failures

Keep durable engine and daemon-context mismatches on the actionable disabled path while retrying only transient supervisor reconciliation failures.\n\nRefs #128794

* fix(node-host): withdraw hosting on late context mismatch

Stop retrying when a later reconciliation attempt proves a permanent container context mismatch, close the supervisor, and withdraw worker hosting from runner inventory.\n\nRefs #128794
2026-08-24 11:06:52 -07:00
Ayaan Zaidi
5238648a3b
fix(chat): show native commentary progress (#128793)
Preserve native provider commentary as keyed progress items across live delivery and history reloads while keeping cursor pagination reachable.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-24 17:58:26 +00:00
Peter Steinberger
3c2667ca40
fix(gateway): fill older chat pages without duplicate transcript storage (#128810)
* fix(gateway): page visible chat history without duplicate storage

* chore: keep release changelog owned by release automation
2026-08-24 10:43:59 -07:00
Ayaan Zaidi
614e084cf8
improve: serialize Telegram Mantis proofs (#128811)
Queue Telegram-visible Mantis proofs at workflow level so only one shared-user run allocates a runner at a time.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-24 23:10:45 +05:30
Peter Steinberger
86d2c35e2e
fix(feishu): preserve captions after inferred voice degrades (#128771) 2026-08-24 10:38:26 -07:00
Vincent Koc
7d08e40e2f
fix(qa): run explicitly selected Telegram RTT scenarios (#128795)
* fix(qa): support explicit Telegram RTT scenarios

* docs(qa): document Telegram RTT scenario selection

* fix(qa): expose Telegram RTT scenario in manual E2E

* fix(qa): gate historical Telegram downgrade proof
2026-08-24 10:26:30 -07:00
Peter Steinberger
56664c5cfb
fix(codex): preserve GitHub tool capability (#128807) 2026-08-24 10:12:19 -07:00