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
Shakker
014e1a6c3a
feat: preserve Markdown in Buzz messages
2026-07-29 23:07:22 +01:00
Peter Steinberger
b9377f6048
fix(codex): enforce native MCP tool access ( #116054 )
...
* fix(codex): enforce native MCP tool access
* chore: remove prerelease changelog entry
* chore: restore changelog to main
* refactor(codex): build MCP server patches from entries
2026-07-29 17:06:49 -04:00
xingzhou
b5c0878777
fix(build): bound bundled plugin asset generators ( #111366 )
...
Fail build and copy generators with ETIMEDOUT after 600000ms and terminate the complete managed process tree. Keep the timeout policy in the bundled-assets caller while preserving the shared helper for distinct callers such as #111349 .
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 04:56:21 +08:00
Peter Steinberger
d6f9affe79
feat(cli): run agent exec against the ambient config, composed in memory ( #116038 )
...
* feat(cli): run agent exec against the ambient config, composed in memory
Exec previously ignored the operator's config entirely, so a one-shot turn
could not reach configured providers, credentials, or agentRuntime harness
selection. It now layers config the way other folder-scoped coding CLIs do.
The composed config is published as this process's runtime snapshot rather
than serialized to a temp file and re-read through OPENCLAW_CONFIG_PATH. The
snapshot is the only in-process config cache, so the file only ever fed it --
while writing env-substituted provider keys to disk where the run's own exec
tool could read them.
* fix(cli): resolve exec stored credentials from the configured agent dir
* chore(scripts): allow agent exec the file-scoped config loader at its process boundary
* test(cli): cover the exec credential default and pinned-config flags
2026-07-29 15:38:27 -04:00
Jason (Json)
3f6f172873
fix(build): bound declaration memory use ( #116021 )
2026-07-29 13:25:47 -06:00
Josh Lehman
6beaff450e
fix(codex): avoid transcript mirror snapshot churn ( #115070 )
2026-07-29 11:59:14 -07:00
Vincent Koc
6ef0beaa60
Merge pull request #115951 from openclaw/refactor/isrecord-cleanup-final-20260729
...
refactor: reuse canonical record guards
2026-07-30 02:36:19 +08:00
Peter Steinberger
ff72f287c3
fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions ( #116001 )
...
* fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions
* refactor(ui): isolate viewer presence lifecycle ownership
* chore(protocol): register viewer presence schema owner
* fix(ui): keep viewer presence cleared after detach
* chore: drop changelog edits from this PR
CHANGELOG.md is release-owned; release generation derives entries from merged
PRs. Release-note context stays in the PR body.
2026-07-29 13:56:54 -04:00
Jason (Json)
cf927f7b1b
fix(memory): keep rollbacks compatible after recall metadata upgrade ( #116003 )
...
* fix(memory): keep agent database rollbacks compatible
* fix(memory): satisfy rollback migration guards
2026-07-29 11:19:22 -06:00