Commit Graph

68755 Commits

Author SHA1 Message Date
Peter Steinberger
bfb015dbc5 fix(macos): silence Xcode 27 source warnings (#108081)
* fix(macos): silence Xcode 27 warnings

* fix(macos): silence remaining Swift 6.4 warnings
2026-07-15 01:49:23 -07:00
Dallin Romney
6c4e76ea8b ci(qa): reuse Matrix live workflow for releases (#103604)
* ci(qa): reuse Matrix live workflow for releases

* docs(testing): restore Tailscale isolation flag

* fix(ci): make Matrix artifact names ref-safe

* test(ci): type Matrix workflow profiles

* style(testing): format Tailscale isolation guidance
2026-07-15 01:48:59 -07:00
Peter Steinberger
bef86c8b88 fix(macos): skip post-update window for app-only updates (#108146)
* fix(macos): skip app-only update dialog

* fix(macos): preserve incomplete gateway recovery

* chore: leave release changelog ownership intact
2026-07-15 01:38:49 -07:00
Dallin Romney
e9c8cad99e fix(ci): support frozen Codex binding sidecars (#108158) 2026-07-15 01:38:30 -07:00
Peter Steinberger
3bd9e280e4 refactor(acp): trim internal dead exports (#108170)
* refactor(acp): trim internal dead exports

* chore(deadcode): refresh export baseline
2026-07-15 01:37:08 -07:00
Peter Steinberger
ad1071bcd0 refactor: split agent runner execution and preserve probe state (#108137)
* refactor(auto-reply): split agent runner execution

* fix(auto-reply): preserve concurrent probe selection

* fix(auto-reply): refresh rejected probe cache

* fix(auto-reply): preserve probe cache updates

* fix(auto-reply): preserve concurrent probe cache state

* fix(auto-reply): guard persisted probe generation

* fix(auto-reply): snapshot nested probe cache state

* fix(auto-reply): merge probe cleanup cache updates

* fix(auto-reply): privatize fallback cycle types
2026-07-15 01:35:37 -07:00
Peter Steinberger
3861bce485 test(ci): separate hooks output and exit deadlines (#108162) 2026-07-15 01:35:17 -07:00
Hannes Rudolph
63aafd003d docs: explain snapshots and rollback (#108159) 2026-07-15 02:29:29 -06:00
Peter Steinberger
b6989cbaf2 refactor(cron): isolate creator tool caps (#108122)
* refactor(cron): isolate creator tool caps

Co-authored-by: yetval <yetvald@gmail.com>

* fix(cron): keep creator cap plan internal

* test(cron): derive internal patch plan type

---------

Co-authored-by: yetval <yetvald@gmail.com>
2026-07-15 01:25:41 -07:00
Peter Steinberger
b65a2d836a feat(linux): discover gateways via Bonjour and open their dashboard (#108115)
New discovery.rs browses _openclaw-gw._tcp with a lifetime mdns-sd
browser, keeps a fullname-keyed snapshot (resolved updates replace,
goodbye/TTL removes), and mirrors the native clients' TXT contract and
direct-selection gate (resolved SRV endpoint routing; tailnetDns is a
hint only). The bootstrap page lists discovered gateways and connecting
navigates the dashboard WebView to the resolved endpoint, validated
against the live snapshot; remote selection cancels the local watchdog
so an in-flight local bootstrap cannot steal the WebView back.
2026-07-15 01:22:36 -07:00
Peter Steinberger
40e245856e fix: synchronize gateway dispatch tests before invocation (#108138)
* test(gateway): capture dispatch baseline before invocation

* docs(agents): guard local PR token identity
2026-07-15 01:22:23 -07:00
Dallin Romney
ad34552473 refactor(qa): migrate Matrix scenarios into QA Lab (#103589)
* refactor(qa): migrate Matrix scenarios into QA Lab

* fix(qa): build Matrix boundary declarations

* fix(qa): preserve Matrix preview boundaries

* fix(qa): preserve Matrix hot reload semantics

* fix(qa): harden Matrix destructive scenario failures

* fix(qa): harden Matrix scenario isolation

* fix(qa): close Matrix negative scenario blind spots

* fix(qa): isolate Matrix substrate state

* fix(qa): harden Matrix transport substrate

* fix(qa): preserve Matrix profile and event parity

* fix(qa): preserve explicit scenario models

* fix(qa): align Matrix scenario coverage taxonomy

* fix(qa): format Matrix allowlist cleanup

* fix(qa): satisfy migrated Matrix CI contracts

* fix(qa): reconcile Matrix migration with current main

* fix(qa): break scenario flow import cycle

* fix(qa): reconcile Matrix max-lines ownership

* fix(qa): address Matrix review boundaries

* fix(qa): remove stale Matrix lint suppression

* fix(qa): adopt split Matrix E2EE flows

* fix(qa): export Matrix scenario record guard

* fix(qa): align Matrix migration with privatized helpers

* refactor(qa): finish Matrix QA Lab ownership

* fix(qa): preserve Matrix suite defaults

* fix(qa): reconcile Matrix cleanup with current main

* test(qa): follow canonical Matrix profile size

* fix(qa): guard stale Matrix QA package output

* docs(qa): redirect retired Matrix QA pages

* refactor(qa): finish Matrix runner rename

* test(qa): assert Matrix defaults through profile resolver

* docs: refresh QA cleanup map

* fix(qa): privatize Matrix storage discovery
2026-07-15 01:22:20 -07:00
Peter Steinberger
3e4b3b370f test(hooks): isolate Gmail setup module cache (#108150)
* test(hooks): isolate Gmail setup module cache

* chore(deadcode): refresh export baseline
2026-07-15 01:18:23 -07:00
wangmiao0668000666
72521492be fix(workspaces): reject non-decimal --grid segments via strict parser (#107478)
* fix(workspaces): reject non-decimal --grid segments via strict parser

Swap bare Number() in parseWorkspaceGrid for parseStrictNonNegativeInteger
from openclaw/plugin-sdk/number-runtime, so JS-coercion forms (hex,
exponent, octal, binary, negative, empty segment) are rejected at the
CLI --grid parser boundary instead of being silently persisted into
Widget.grid. Same owner-boundary shape as #106384 (google-meet --since)
and #106926 (onepassword --limit).

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

* test(workspaces): prove persisted grid coercions

Co-authored-by: wangmiao0668000666 <wangmiao0668000666@users.noreply.github.com>

---------

Co-authored-by: wangmiao0668000666 <wangmiao0668000666@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 01:18:02 -07:00
QiuYuang
92ed1c73ec fix(matrix): keep draft previews for queued followups (#108094)
* fix(matrix): reset draft preview for queued followups

* fix(matrix): rearm queued progress drafts

Co-authored-by: 仇宇昂0668000995 <chou.yuang@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 01:16:58 -07:00
Peter Steinberger
57761ebe8c perf(ci): balance node test shards and gate heavy CI lanes by changed scope (#108091) 2026-07-15 01:16:47 -07:00
Leon-SK668
9b6361a50c fix(android): preserve emoji in voice error status (#108101)
* fix(android): preserve emoji in voice error status

* chore(android): sync native i18n inventory

* fix(android): align voice status i18n allowlist
2026-07-15 01:16:27 -07:00
Leon-SK668
42d42703e6 fix(session-catalog): keep searches UTF-16 safe (#107719) 2026-07-15 01:16:01 -07:00
Miorbnli
9e6cce6358 fix(ui): show <1m for sub-minute quota reset windows instead of 0m (#108009)
* fix(ui): show <1m for sub-minute quota reset windows instead of 0m

formatQuotaReset computed Math.floor(diffMs / 60_000) for the minute branch.
When a provider quota window resets in under 60 seconds (common for 5h Anthropic
or 3h Codex windows near rollover), the floor is 0 and the UI rendered
"Resets in 0m" — nonsensical and indistinguishable from "already reset".

Add a sub-minute guard returning "<1m", matching the convention already used
by formatRemainingShort and formatRelativeTimestamp elsewhere in the codebase.

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

* test(ui): cover quota reset display boundary

Co-Authored-By: ZCode <noreply@zcode.ai>

* test(ui): cover elapsed quota reset boundary

Co-Authored-By: ZCode <noreply@zcode.ai>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: ZCode <noreply@zcode.ai>
2026-07-15 01:15:36 -07:00
Peter Steinberger
ac95af2c41 test: reuse release validation repo fixture (#108129) 2026-07-15 01:13:44 -07:00
Peter Steinberger
0be803ebc0 fix: npm 12 global updates no longer stop at the candidate guard (#108100)
* fix(update): approve candidate lifecycle on npm 12

* test(update): align npm lifecycle argv expectations
2026-07-15 01:10:32 -07:00
Peter Steinberger
f3e6042119 fix(ui): preserve explicit steer queue mode (#108121) 2026-07-15 01:09:55 -07:00
Peter Steinberger
a7456edf94 refactor(proxy-capture): privatize server helpers (#108139)
* refactor(proxy-capture): privatize server helpers

* chore(deadcode): refresh export baseline
2026-07-15 01:07:57 -07:00
Peter Steinberger
f1e2e5bc25 fix: clear stale task and OAuth doctor warnings (#108123)
* fix(doctor): repair taskflow and oauth warnings

* chore: keep release changelog out of PR
2026-07-15 01:03:53 -07:00
Peter Steinberger
f3c191039a refactor(music-generation): privatize mode resolver (#108132)
* refactor(music-generation): privatize mode resolver

* chore(deadcode): refresh export baseline
2026-07-15 00:59:15 -07:00
Peter Steinberger
1fe3a5f557 fix(skills): shorten Testbox SSH socket paths 2026-07-15 08:52:05 +01:00
Peter Steinberger
2afa9de438 fix(codex): structured abort detection, tool-schema repair, native-result middleware relay (#108105)
* fix(codex): use structured turn status for aborts, repair tool schemas, relay native results to middleware

- turn aborts are detected from the correlated turn/completed status instead
  of byte-matching private codex-rs prose; the <turn_aborted> marker remains a
  non-terminal user-interrupt hint (tags only, wording-independent) because the
  app-server collapses all abort reasons into "interrupted" (#99268)
- dynamic-tool schemas are repaired before projection via the shared OpenAI
  normalizer: annotation nulls stripped, type:null inferred from object/array
  shape hints; unrepairable null constraints stay quarantined instead of
  widening the schema (#106277, #97913)
- Codex-native tool results now flow through agentToolResultMiddleware at the
  post_tool_use relay boundary (observe-only: the Codex PostToolUse contract
  cannot replace a native tool response) (#95597)

* test(codex): regenerate prompt snapshots for normalized dynamic-tool schemas

The shared OpenAI strict-compat normalization now runs on Codex dynamic tools,
so empty object schemas gain additionalProperties:false and required:[] in the
snapshot payloads, matching what the OpenAI provider family sends.
2026-07-15 00:51:24 -07:00
Peter Steinberger
fda08e26de refactor(gateway): privatize terminal shell quoting (#108125)
* refactor(gateway): privatize terminal shell quoting

* chore(deadcode): refresh export baseline
2026-07-15 00:50:01 -07:00
Peter Steinberger
fe469082b7 chore(plugins): backfill compat windows for deprecated plugin-sdk subpaths (#108035) 2026-07-15 00:49:02 -07:00
Peter Steinberger
4f71a2855e test(auto-reply): install channel metadata for group prompt cases (#108113) 2026-07-15 00:43:03 -07:00
Peter Steinberger
46393fb3dc refactor(status): privatize session cost line (#108118)
* refactor(status): privatize session cost line

* chore(deadcode): refresh export baseline
2026-07-15 00:41:45 -07:00
Peter Steinberger
85963a2d58 fix(pr): preserve signed merge commits (#108112) 2026-07-15 00:41:18 -07:00
Yuval Dinodia
7974def3fd fix(codex): restore shell for restricted turns (#92294)
* fix(codex): keep OpenClaw exec when native surface has no environment (#92238)

* chore: keep release note in PR

* fix(codex): keep shell tool type internal

Co-authored-by: yetval <yetvald@gmail.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 00:37:04 -07:00
Peter Steinberger
7856a99aa5 test: speed Telegram archive fixture (#108108) 2026-07-15 00:34:38 -07:00
Eden
cce791607e fix(line): drop blank entries from trailing commas in agenda/device directives (#105381)
* fix(line): drop blank entries from trailing commas in agenda/device directives

* fix(line): drop blank device action labels

Co-authored-by: Eden <146086744+edenfunf@users.noreply.github.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 00:32:30 -07:00
Peter Steinberger
53cc2977ac chore(plugin-sdk): align baseline after auth refactor 2026-07-15 08:30:41 +01:00
Peter Steinberger
15cc637004 chore(plugin-sdk): refresh API baseline 2026-07-15 08:30:41 +01:00
Peter Steinberger
061ccb1a26 refactor(active-memory): prepare recall context once 2026-07-15 08:30:41 +01:00
Peter Steinberger
658fdaea5b refactor(audit): remove internal test exports (#108111)
* refactor(audit): remove internal test exports

* chore(deadcode): refresh export baseline
2026-07-15 00:30:16 -07:00
sunlit-deng
8ddb23ea96 fix(agents): avoid stale session label timestamps after replacement (#107638)
* fix(agents): clear session label timestamps on replacement

* fix(agents): clear label timestamps on run reset

Co-authored-by: sunlit-deng <yang.jiajun1@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 00:29:35 -07:00
Peter Steinberger
666a907316 fix: preserve updates across pnpm and Bun lifecycle checks (#108090)
* fix(update): validate lifecycle runtimes

* fix(update): verify Bun lifecycle path

* fix(update): reject drive-relative Node paths

* test(update): align lifecycle argv expectations
2026-07-15 00:26:41 -07:00
Peter Steinberger
46fad5296a refactor(github-copilot): own runtime auth in provider (#108096) 2026-07-15 00:19:44 -07:00
Leon-SK668
9a8ed45935 fix(linux-node): keep command errors UTF-16 safe (#107717) 2026-07-15 00:16:39 -07:00
Peter Steinberger
752032e4fb test: stabilize full-suite shards (#108093) 2026-07-15 00:15:57 -07:00
WhatsSkiLL
a0af118c0d fix(android): keep offline chat actions readable (#107404)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-07-15 00:15:03 -07:00
Peter Steinberger
d801f2e68c docs: document CI rerun attempt selection (#108095) 2026-07-15 00:12:41 -07:00
Peter Steinberger
723c2f81ad refactor(llm): privatize provider internals (#108099)
* refactor(llm): privatize provider internals

* chore(deadcode): refresh export baseline
2026-07-15 00:11:43 -07:00
Peter Steinberger
6beb726be7 fix(docs): preserve inline code literals 2026-07-15 03:10:11 -04:00
Peter Steinberger
0d7da61e9b fix(macos): hide update guide after app-only updates (#108034)
* fix(macos): hide update guide for app-only updates

* chore: defer release note to release changelog

* docs(macos): clarify app-only update completion

* chore(i18n): sync native update strings
2026-07-15 00:09:26 -07:00
Peter Steinberger
732fb5f9e6 fix(release): bind Telegram proof artifact identity 2026-07-15 08:02:17 +01:00