Commit Graph

64628 Commits

Author SHA1 Message Date
Jesse Merhi
5cd71db85e fix(diagnostics-otel): route OTLP exports through env proxy
* fix(diagnostics-otel): route OTLP exports through env proxy

* fix(diagnostics-otel): harden OTLP proxy agent options

* fix(ci): refresh rebased gateway checks

* fix(ci): avoid proxy boundary scan
2026-07-06 22:52:22 +10:00
Peter Steinberger
876ab9bb0b feat(android): add chat message actions (#100879)
* fix(android): add chat message actions

* chore(android): sync native i18n inventory

* fix(i18n): collect Android action labels

* fix(i18n): preserve Android placeholders
2026-07-06 13:50:16 +01:00
Vincent Koc
c3501761da test(qa): allow deleted progress in private final check 2026-07-06 05:49:48 -07:00
xydigit-sj
c421143b3b fix(auto-reply): warn when /export-session only contains user messages (backend-delegated) (#90867)
* fix(auto-reply): warn when /export-session only contains user messages (backend-delegated)

Closes #90844 (minimum-fix option 2).

When a session is driven by a CLI/ACP backend, OpenClaw's own transcript only
records the inbound user messages. /export-session would still produce a
successful HTML export with empty summary stats and no assistant/tool/usage
data, which is misleading.

This change detects the backend-delegated case (a transcript whose message
entries are exclusively role: user) and surfaces a clear warning in the command
reply text and the exported HTML header.

* fix(auto-reply): correct template literal closure in export session HTML

* fix(auto-reply): warn on backend-delegated session exports

* fix(session): harden backend export warning

* fix(session): read persisted ACP export metadata

* fix(session): keep ACP metadata lookup best-effort

* fix(session): avoid shadowed export locals

* test(session): type export store mock

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-07-06 05:41:19 -07:00
machine3at
5c49cec618 fix(heartbeat): catch delivery errors in maybeSendHeartbeatOk to prevent side-effect replays (#100834)
* fix(heartbeat): catch delivery errors in maybeSendHeartbeatOk to prevent side-effect replays

* test(heartbeat): cover quiet ack delivery failures

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-06 05:40:33 -07:00
Momo
17605c57df improve: reduce repeated session startup scans (#99335)
Summary:
- Merged improve: reduce repeated session startup scans after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix: preserve blank-prefixed session header guard
- PR branch already contained follow-up commit before automerge: fix: fail closed on capped transcript header scan
- PR branch already contained follow-up commit before automerge: fix: stream transcript reset guard
- PR branch already contained follow-up commit before automerge: chore: drop bootstrap digest cache change

Validation:
- ClawSweeper review passed for head baf54d8046.
- Required merge gates passed before the squash merge.

Prepared head SHA: baf54d8046
Review: https://github.com/openclaw/openclaw/pull/99335#issuecomment-4892783806

Co-authored-by: momothemage <niuzhengnan@163.com>
Approved-by: momothemage
2026-07-06 12:30:20 +00:00
Vincent Koc
3c530c79a0 test(qa): accept completed wait envelopes 2026-07-06 05:22:57 -07:00
Vincent Koc
8b86645f5c fix(macos): keep node invokes responsive during system.run (#100842)
* fix(macos): keep app node connected after system.run invoke

* fix(macos): document node invoke receive isolation

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
2026-07-06 05:06:34 -07:00
Vincent Koc
aabf68606a fix(macos): preserve launchd Node gateway in PortGuardian (#100867)
* fix(macos): preserve launchd Node gateway in PortGuardian

Co-authored-by: lsr911 <18230762+lsr911@users.noreply.github.com>

* fix(macos): tighten PortGuardian gateway matcher

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: lsr911 <18230762+lsr911@users.noreply.github.com>
2026-07-06 05:00:43 -07:00
Vincent Koc
56fe5d0459 fix(release): skip loader lifecycle scripts on Windows 2026-07-06 04:57:57 -07:00
Peter Steinberger
ce36a13ad2 fix(browser): foreground tabs before screenshots (#100857)
Co-authored-by: Spencer Fuller <spencer.p.fuller@gmail.com>
2026-07-06 12:57:45 +01:00
Vincent Koc
f532323edf docs(changelog): remove generated main entry 2026-07-06 13:47:54 +02:00
Vincent Koc
e7d43db52f test(codex): make side tool abort test deterministic 2026-07-06 13:47:54 +02:00
Vincent Koc
ab534919ff refactor(core): remove stale internal exports (#100856)
* refactor(core): remove reintroduced unused helpers

* refactor(core): remove test-only production seams
2026-07-06 04:43:34 -07:00
Peter Steinberger
90e1ef1768 fix(android): hide internal chat history rows (#100826)
* fix(android): hide internal chat history rows

* chore(android): sync native i18n inventory
2026-07-06 12:37:39 +01:00
Peter Steinberger
e66b470ea5 feat(ui): add configurable chat send shortcut (#100810)
* feat(ui): add configurable chat send shortcut

Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>

* fix(ui): translate chat shortcut labels

---------

Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-07-06 12:36:07 +01:00
Peter Steinberger
f53346944d feat: correlate native search outcomes in audit history (#98704)
* feat: correlate native search outcomes in audit history

Metadata-only audit ledger for agent runs and tool actions in the shared
state DB: stable event identity, closed action/status/error vocabularies,
one-way-hashed tool-call ids, never-inferred terminal outcomes for native
web-search (explicit completed/failed only; otherwise unknown), bounded
retention, audit.list gateway RPC and openclaw audit CLI. Squashed from
the 82-commit audit stack for replay onto current main.

* feat(audit): add audit.enabled config gate (default on)

The metadata-only audit ledger records by default: an audit trail enabled
only after an incident cannot explain the incident, and the rows are
strictly less sensitive than the transcripts every install already
stores. audit.enabled=false stops new writes at the gateway subscription
seam; audit.list and openclaw audit keep serving existing records until
they expire. Documented in the configuration reference, protocol page,
and CLI reference.

* fix: repair full-matrix CI findings after rebase

- break the dynamic-tools/dynamic-tool-execution import cycle by
  extracting resolveCodexToolAbortTerminalReason into a leaf module
- restore main's session-worktree protocol exports lost in the
  index.ts auto-merge
- register the audit event writer worker as a knip entry point
- docs table formatting; subagent wait-cancellation test scoped to its
  audit intent (outcome + timing) and advanced past main's new
  lifecycle-timeout retry grace
2026-07-06 12:30:12 +01:00
Vincent Koc
96e676c2b3 fix(release): hydrate fresh Anthropic OAuth access 2026-07-06 04:20:58 -07:00
Peter Steinberger
a467ceb523 fix(android): finish PTT relay handoff safely (#100786)
* fix(android): finish PTT relay handoff safely

* style(android): satisfy PTT ktlint

* test(android): make relay resume tests deterministic

* fix(android): recheck PTT finishing ownership

* chore(android): refresh native i18n inventory
2026-07-06 12:20:26 +01:00
Peter Steinberger
2a741bebb5 feat(ios): render LaTeX display math in chat via SwiftMath (#100829) 2026-07-06 12:14:38 +01:00
Peter Steinberger
827402243d feat: add Anthropic and OpenAI cost history (#100672)
* feat(providers): add admin cost history

* fix(ui): sync cron raw-copy baseline

* fix(usage): harden provider cost credentials

* fix(ui): refresh raw-copy baseline

* docs: refresh documentation map

* fix(ci): sync provider usage baselines

* fix(ui): hide zero-cost history bars

* docs(changelog): defer provider cost note
2026-07-06 12:06:55 +01:00
github-actions[bot]
41bea62b4a chore(i18n): refresh native locales 2026-07-06 11:04:01 +00:00
xingzhou
d86cb67a4a fix(agents): MiniMax VLM can consume oversized success responses (#100694)
* Cap MiniMax VLM success response reads

* fix: share bounded MiniMax response reader

* test: return fresh MiniMax response bodies

* test: allow stream prefetch at MiniMax bound

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 12:03:53 +01:00
Ishan Godawatta
a53565f6df fix: normalise wiki lint targets (#100017)
* fix: normalise wiki lint targets

* fix: preserve wiki title queries
2026-07-06 04:03:15 -07:00
xingzhou
a8709996a2 fix(agents): Anthropic-compatible streams hang on oversized partial responses (#100686)
* fix: bound Anthropic SSE pending frame buffer

* fix(anthropic): document parser-local SSE cap

* docs: place Anthropic hardening under fixes

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 12:01:59 +01:00
Wynne668
bffecbff1d fix: unblock replies after multi-agent room reset (#99091)
* fix: release stale reply work during reset cleanup

* fix: release archived reply runs during reset

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 11:58:33 +01:00
Peter Steinberger
e1595d5a96 fix(browser): clean up peer-scoped tabs on reset (#100792)
Co-authored-by: FMLS <kfliuyang@gmail.com>
2026-07-06 11:56:47 +01:00
Huang Wanjia
8f2986290d fix: silence heartbeat notify=false fallback replies (#100735)
* fix(heartbeat): consume trailing notify=false fallback marker

* fix(heartbeat): keep notify=false marker fully silent

---------

Co-authored-by: martin <huangtongxuedev@outlook.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-07-06 03:50:54 -07:00
Vincent Koc
cbf9acff37 fix(release): reuse setup-token for Anthropic live checks 2026-07-06 03:46:22 -07:00
Peter Steinberger
1f06b890a6 feat(ios): add model picker favorites and recents with working iOS model switching (#100774) 2026-07-06 11:44:13 +01:00
Vincent Koc
8ce620f3e6 fix(protocol): remove duplicate worktree result exports 2026-07-06 03:37:09 -07:00
Vincent Koc
4f55d5eda2 test(commitments): await retry persistence 2026-07-06 03:33:43 -07:00
Vincent Koc
17777b3a9f refactor: remove proven dead code across runtime surfaces (#100823)
* refactor: remove unused internal helpers

* refactor(ui): remove unused compatibility helpers

* refactor(android): remove unused talk cleanup shim

* refactor(android): remove orphaned legacy UI

* refactor: remove unused private exports

* refactor(docs-i18n): remove dead matcher and satisfy lint
2026-07-06 03:31:19 -07:00
Peter Steinberger
704c584686 fix(protocol): export managed worktree session result types (#100804)
* fix: complete managed worktree surfaces

* chore: drop landed locale changes
2026-07-06 11:23:58 +01:00
Peter Steinberger
fda01a64a7 fix(protocol): export session worktree result types (#100793) 2026-07-06 03:21:38 -07:00
xydt-tanshanshan
738654d20c fix(memory): add batch completed log after embedding batch finishes (#94732)
* [AI] fix(memory): add batch completed and batch failed logs for embedding ops

The embedBatchWithRetry function logged 'batch start' but never logged
'batch completed' or 'batch failed' after the embedding batch call,
leaving operators with no post-request feedback. When batches hang or
time out, only 'batch start' appears in logs with no diagnostic signal.

Add 'batch completed' log after runEmbeddingOperationWithTimeout success
and 'batch failed' log in the catch handler. This is an observability
improvement, not a functional fix for the underlying hang (#93312).

Related to #93312

* [AI] fix(memory): use formatErrorMessage for embedding batch error log

Replace String(err) with formatErrorMessage(err) in the batch failed
catch handler to redact sensitive provider error text (e.g. API keys
and tokens embedded in error messages) before logging.

Related to #94732

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-06 03:10:51 -07:00
Alex Knight
7f29380d21 fix(android): add missing new_chat_in_worktree locale strings (#100805)
Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-07-06 20:03:26 +10:00
Vincent Koc
fa70403403 fix(release): isolate Claude ACP subscription auth 2026-07-06 02:58:59 -07:00
Alex Knight
3221d43d89 fix(openai): image generation unavailable when openai provider set via config apiKey + custom baseUrl (#100745)
* fix(openai): treat a config apiKey as configured for image generation

The openai image provider's isConfigured only consulted env vars / auth
profiles (isProviderApiKeyConfigured) and considered a config apiKey only
inside that env/profile-gated branch. A provider apiKey supplied directly in
config (models.providers.openai.apiKey) — e.g. an AI-gateway token alongside a
custom baseUrl — was reported as not-configured, even though the generate path
resolves exactly that credential via resolveApiKeyForProvider and honors the
config baseUrl. This made image generation behave differently from chat models,
which authenticate purely from provider config.

Recognize a config apiKey as configured so image generation works purely from
config, like chat, with no OPENAI_API_KEY env var or auth profile. Env/profile
and Codex/ChatGPT-OAuth branches are unchanged. Formatting verified with oxfmt
--check (no node_modules in this worktree); full tests run in CI/Testbox.

* fix(openai): require a non-empty config apiKey for image readiness

* fix(openai): normalize config apiKey readiness via hasConfiguredSecretInput

---------

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-07-06 19:54:44 +10:00
Alex Knight
7634c8118b fix(google): image generation unavailable when google provider set via config apiKey + custom baseUrl (#100779)
* fix(google): image generation unavailable when google provider set via config apiKey + custom baseUrl

* test(google): satisfy required baseUrl in provider config fixture

* fix(google): normalize config apiKey readiness via hasConfiguredSecretInput

---------

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-07-06 19:54:10 +10:00
Vincent Koc
748169d61a test(release): use harmless ACP live markers 2026-07-06 02:52:24 -07:00
Vincent Koc
75d7ae08f5 test(docker): allow patch-free runtime workspace 2026-07-06 02:52:24 -07:00
Vincent Koc
c42ef8b267 fix(release): harden Claude CLI live probe 2026-07-06 02:52:24 -07:00
lzyyzznl
671d592d98 fix(config): handle undefined in safeStringify [skip ci] (#99045) 2026-07-06 02:51:38 -07:00
github-actions[bot]
24bca38cda chore(i18n): refresh native locales 2026-07-06 09:44:48 +00:00
Piotr Durlej
f46fc8c7ad docs(channels): clarify message receipt evidence (#90063)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 10:39:19 +01:00
Vincent Koc
56216c7ff5 docs(changelog): remove generated main entry 2026-07-06 11:38:31 +02:00
lzw112
22dfb15048 fix(telegram): add missing 'action' retry context for sendChatAction (#100762)
* fix(telegram): add missing 'action' retry context for sendChatAction

* fix(telegram): cover all sendChatAction retry paths

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-06 02:33:57 -07:00
Peter Steinberger
a13a198a4b fix(update): guard Windows task autostart during package updates (#100757)
* fix(update): guard Windows task autostart

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>

* fix(update): preserve recovery error causes

* fix(update): retain restore failure causes

* fix(update): recover task on Ctrl+Break

* chore(update): document aggregate lint intent

* fix(update): tolerate deleted Windows tasks

* fix(update): preserve combined recovery failures

* fix(update): preserve aggregate error causes

* fix(update): construct aggregate causes consistently

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-06 10:33:47 +01:00
github-actions[bot]
65e2166fbe chore(ui): refresh control ui locales 2026-07-06 09:32:48 +00:00