Commit Graph

7334 Commits

Author SHA1 Message Date
Vincent Koc
eb55c8ea8f feat(plugins): externalize Voyage embeddings (#116785)
* feat(voyage): externalize embedding provider

* fix(voyage): drop stale bundled description
2026-07-31 19:52:33 +08:00
wangyan2026
d865c9b8f5 fix(build): fail closed on symlinked build output roots (#116705)
Reject symlinked generated-output roots before build and postbuild mutation paths can recurse into unrelated targets. Cover aggregate, UI, export-template, bundled-plugin, Docker-prune, and plugin-runtime entry points with regression tests and migration guidance.

Closes #116498

Co-authored-by: WangYan <wang.yan29@xydigit.com>
2026-07-31 19:37:05 +08:00
Vincent Koc
6830820755 feat(plugins): externalize DuckDuckGo search (#116740) 2026-07-31 18:49:07 +08:00
Vincent Koc
a550827dad feat(plugins): externalize Synthetic provider (#116720) 2026-07-31 17:19:43 +08:00
Vincent Koc
6d132b93b6 fix(testing): load relay smoke through UI Vite config 2026-07-31 16:37:06 +08:00
Vincent Koc
5a9c249780 fix(testing): repair realtime relay live smoke import 2026-07-31 16:37:05 +08:00
Vincent Koc
37b1a71654 fix(release): unblock beta validation workflows (#116708)
* fix(release): repair beta validation workflow state

* fix(qa): dispatch yielded fanout runs without task tracking

* fix(test): honor GPT-Live shard opt-in
2026-07-31 15:47:11 +08:00
Dallin Romney
1e45f7ed9f improve(ci): rebalance embedded agent test configs (#116436)
* improve(ci): rebalance embedded agent test configs

* fix(ci): satisfy compact planner lint

* refactor(ci): simplify compact shard rebalancing
2026-07-31 15:15:13 +08:00
Vincent Koc
8d7ff3c04c fix(test): keep memory FD repro config valid (#116698) 2026-07-31 14:44:09 +08:00
Dallin Romney
d24cdea7ec fix(release): omit unavailable candidate Docker scripts (#116432)
* fix(release): omit unavailable candidate Docker scripts

* fix(docker): fail on unreadable candidate manifest

* fix(docker): expose candidate planner option
2026-07-31 14:18:18 +08:00
Dallin Romney
bd5daad79a fix(release): accept legacy zero skipped runtime summaries (#116429) 2026-07-31 14:13:53 +08:00
Vincent Koc
fa4cc51a87 feat(plugins): externalize Teams and Zoom meetings (#116682) 2026-07-31 14:10:46 +08:00
Vincent Koc
c45c318848 fix(plugins): enforce conformance probe diagnostics (#116676) 2026-07-31 13:20:33 +08:00
Vincent Koc
c3bb8fc265 fix(perf): make Kova startup diagnostics actionable (#116319)
* fix(perf): rank startup duration hotspots correctly

* ci(perf): exercise prepared runtime startup cases
2026-07-31 10:23:32 +08:00
Vincent Koc
d5ab7d7d03 fix(ci): run fs-safe removal Windows coverage (#116510)
* test(ci): run fs-safe remove suite on Windows

* test(infra): correct Windows rebind race expectation

* test(infra): exercise Windows rebind hook
2026-07-31 09:58:34 +08:00
Vincent Koc
88876f780b fix(android): preserve device work across lifecycle changes (#116593)
* fix(android): use configured SDK for screenshot AVDs

* fix(android): keep chat jump control clear of messages

* fix(wear): ignore stale control completions

* fix(android): advertise node permission changes

* fix(android): select play flavor for benchmarks

* test(android): decouple cron benchmark from copy

* fix(android): install play variant in perf scripts

* fix(wear): clear gateway control busy state

* fix(android): surface voice e2e connection errors

* test(android): cover common live node commands

* fix(android): retain share parsing across recreation

* fix(android): retain permission requests across recreation

* fix(wear): bind realtime audio to talk attempts

* fix(android): track active permission host

* fix(wear): own gateway control busy state

* fix(wear): admit realtime channels by attempt

* fix(android): refresh permissions on top resume

* fix(wear): serialize reconnect retirement with writes

* chore(i18n): refresh native source inventory

* fix(wear): retain pending audio through start RPC

* fix(wear): negotiate realtime channel compatibility

* test(wear): assert reconnect outcome without owner churn

* fix(android): move settings prompt with active host

* fix(wear): reject stale relay starts

* chore(changelog): leave notes to release generation
2026-07-31 09:49:11 +08:00
Vincent Koc
39156a99cd fix(ci): restore beta release harnesses (#116596)
* test(release): model systemd ownership probes

* fix(ci): restore release Docker package probes

* fix(release): preserve Windows setup-node runtime

* fix(release): isolate Windows service validation

* fix(release): strip isolated Windows service identity
2026-07-31 09:17:35 +08:00
WhatsSkiLL
47f8c1d6b0 Android: add adaptive app navigation sidebar (#113908)
* feat(android): add adaptive navigation sidebar

* fix(android): satisfy native i18n checks

* fix(android): use adaptive Material navigation

* fix(android): preserve adaptive navigation state

* chore(i18n): refresh native source baseline

* fix(android): keep compact navigation labels on one line

* chore(android): refresh native i18n source lines

* fix(android): preserve sidebar gateway status

* fix(android): satisfy status label checks

---------

Co-authored-by: Colin <colin@solvely.net>
2026-07-30 17:27:45 -04:00
Vincent Koc
3b355879b8 test(infra): run exec allowlist suite on Windows (#116492) 2026-07-31 01:46:19 +08:00
Vincent Koc
26f107071e test(agents): run exec preflight suite on Windows (#116469) 2026-07-31 00:57:04 +08:00
Vincent Koc
17ef4a26f1 test(openai): settle roundtrip failures without rejection 2026-07-31 00:42:04 +08:00
Vincent Koc
5f0c49b65d test(openai): clear roundtrip timeout on early failure 2026-07-31 00:42:04 +08:00
Vincent Koc
786d40d607 test(openai): observe roundtrip failures during streaming 2026-07-31 00:42:04 +08:00
Vincent Koc
969758d0d5 test(openai): satisfy live smoke lint guards 2026-07-31 00:42:04 +08:00
Vincent Koc
b559705aab test(openai): add live realtime audio roundtrip 2026-07-31 00:42:04 +08:00
Vincent Koc
85466bd89e test(mxc): run Windows-only suites in CI (#116451) 2026-07-31 00:10:22 +08:00
Vincent Koc
90a22b4f50 chore(test): run browser copilot E2E in CI (#116407)
* test(browser): run copilot E2E in CI

* test(browser): stabilize copilot E2E synchronization

* test(browser): wake extension workers deterministically

* test(ci): route browser copilot command changes
2026-07-30 23:20:34 +08:00
Peter Steinberger
e604cf5b77 fix(release): trust update restart harness (#116301)
* fix(release): trust update restart harness

* fix(release): preserve candidate harness root
2026-07-30 05:19:16 -07:00
Vincent Koc
dac0ef6f0e fix(test): bound Testbox agentic and extension suites (#115696)
* fix(test): split Testbox extension processes

* fix(test): split Testbox agentic processes
2026-07-30 19:26:47 +08:00
Dallin Romney
c854a04696 fix(ci): validate frozen release candidates faithfully (#116357) 2026-07-30 18:57:32 +08:00
Dallin Romney
bf8da2537c improve(ci): fail_fast option for release validation, off by default (#116352)
* ci: make release validation fail-fast optional

* ci: pass release QA fail-fast as boolean

* test: format release validation helper test
2026-07-30 18:53:41 +08:00
Vincent Koc
8a3f5c862b fix(plugin-sdk): ship documented public typings (#116345)
* fix(plugin-sdk): ship documented public typings

* fix(plugin-sdk): refresh public contract artifacts
2026-07-30 18:20:07 +08:00
WhatsSkiLL
e5cee36b46 fix(memory): retry failed queued session targets (#115923)
* fix(memory): retain failed queued sync targets

* fix(memory): drain retained targets on idle sync

* test(memory): prove idle queued sync recovery

* fix(memory): preserve queued sync ownership

* fix(memory): avoid queued sync self-deadlock

* fix(memory): stop queued recovery during close

* fix(memory): clear retained sync state on close

* test(memory): prove live queued rejection transition

* fix(memory): enforce sync repro invariants

* test(memory): bound archive recovery proof

* test(memory): seed archive proof transcript

* test(memory): exercise archived transcript recovery

* chore(knip): register memory sync repro

* fix(memory): reject blank queries before settings

* style(memory): satisfy queue recovery lint

* test(memory): align doctor migration expectations

* test(memory): insert explicit provenance fixture

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-30 02:47:59 -07:00
Vincent Koc
ea894bba8a fix(test): preserve failed shard diagnostics (#116289) 2026-07-30 17:17:17 +08:00
WhatsSkiLL
c63fdc631f fix(sessions): release closed SQLite entry caches (#115794)
* fix(sessions): release closed sqlite entry caches

* chore(ci): register sqlite cache lifetime proof

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-07-30 02:06:44 -07:00
Jason (Json)
a67ad03eea perf(gateway): bound prepared runtime startup work (#116261) 2026-07-30 01:41:35 -06:00
Ayaan Zaidi
4bd56b8ad8 test(e2e): tag the mock Responses preamble with its wire phase
The mock streamed pre-tool assistant text on the Responses path without `phase: "commentary"`, the field the API sets and the transport reads, so the draft-proof scenario ran green while never exercising the preamble lane on that transport. Proven live on Telegram: the preamble now renders as the status headline, and as a commentary line when progress.commentary is on.
2026-07-30 16:34:38 +09:00
Peter Steinberger
2c436594de fix: clean npm preflight cache restore targets (#116276) 2026-07-30 00:33:55 -07:00
Peter Steinberger
3e67671d92 fix(e2e): apply default service identity per flow (#116265) 2026-07-30 00:00:14 -07:00
Peter Steinberger
62cbbcc800 fix(e2e): align service account state (#116254) 2026-07-29 23:00:16 -07:00
Ayaan Zaidi
d8d77ffbae test(e2e): delay the draft-proof final answer past the start gate
A progress draft only exists while the agent is working, and OpenClaw's exec
returns instantly for a mock tool call, so the whole turn finished in ~86ms —
inside the 1.5s draft gate. No draft was created, which is correct behavior but
proves nothing about rendering.

The draft-proof scenario now holds its final answer (MOCK_DRAFTPROOF_FINAL_DELAY_MS,
default 6s) so the turn straddles the gate. That is what made the live Discord
recording possible: draft created, edited with the status headline above the
tool line, replaced by the final answer, then deleted.
2026-07-30 13:36:21 +09:00
Ayaan Zaidi
dcb0ad5c29 fix(ci): satisfy docs formatting, lint, and the SDK API baseline
Three gates my own changes broke:

- docs/channels/telegram.md needed a blank line before </Note>; I formatted the
  TypeScript but never ran the docs formatter over the pages I edited.
- The mock harness matched a literal with a regex, which oxlint's prefer-includes
  rejects.
- Widening resolveChannelPreviewStreamMode's defaultMode to StreamingMode and
  adding rendersRollingLinesNatively changes the exported plugin-SDK surface, so
  the API baseline hash had to be regenerated.
2026-07-30 13:36:21 +09:00
Ayaan Zaidi
436557b8e9 test(e2e): add a progress-draft scenario to the mock provider
Proving headline-plus-tool-line composition needs assistant text emitted
*before* a tool call: that leading text is what gets tagged as commentary and
rendered as the draft's status headline. The mock could only echo a single token,
so the draft path was unreachable without a live model.

Trigger `OPENCLAW_E2E_DRAFTPROOF` now serves two turns — preamble plus a shell
call, then the final answer — on both /v1/responses and /v1/chat/completions.
Only the completions transport tags commentary today, which is why the
completions path matters here.

Used to record the draft live on real Telegram: one message carrying the
headline above the tool line, the final answer, then the draft edited to its
receipt.
2026-07-30 13:36:21 +09:00
Vincent Koc
16baaff90f fix(e2e): align doctor switch with service ownership (#116209) 2026-07-30 12:31:39 +08:00
Peter Steinberger
4430f8ecfd fix(e2e): use account home for daemon switch (#116217) 2026-07-29 21:06:38 -07:00
Peter Steinberger
9c3503a443 fix(e2e): use default state for daemon switch (#116190) 2026-07-29 20:02:19 -07:00
joshavant
21db50efc7 refactor(whatsapp): keep inbound boundary transport-private 2026-07-29 20:34:55 -05:00
Vincent Koc
f970e5093b refactor(channels): add portable inbound boundary 2026-07-29 20:34:55 -05:00
Vincent Koc
ffa99ca81d fix(docker): validate timezone in runtime image (#116153) 2026-07-30 09:19:01 +08:00
Vincent Koc
1065c1d697 fix(ui): identify source builds in settings footer (#116134)
* fix(ui): identify source builds in settings footer

* fix(release): classify all official Control UI builds
2026-07-30 08:58:34 +08:00