Keep `openclaw onboard --skip-ui` and `openclaw setup --skip-ui` on guided onboarding while suppressing browser and terminal handoffs.
Refs #118388 and #118038.
Prepared head SHA: 4e284c4523
Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
* fix(parallels): preserve real launch outcomes after setup consumes its deadline
* fix(parallels): drain completed launches before enforcing setup deadlines
Align Telegram artifact reuse and packaged Docker validation with current GitHub Actions and runtime state contracts. Refresh affected regression fixtures and isolate test state.
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.
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.
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.
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.
* fix(e2e): bound Docker stats sample lines
* fix(e2e): format Docker stats line cap proof
* fix docker stats CRLF line cap
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* docs(agents): standardize canonical record guards
* refactor(model-catalog): use canonical record guard
* refactor(scripts): use canonical record guard
* refactor(ui): use canonical record guard
* refactor(codex): use canonical record guard
* refactor(agents): use canonical record guard
* refactor(sessions): use canonical record guard
* refactor(doctor): use canonical record guard
* refactor(infra): use canonical record guard
* origin/main: (72 commits)
fix: macOS-only Parallels smoke harness regression (#75293)
fix(ios): use configured speech language for system voice (#113372)
refactor: centralize isolated agent test ownership (#115340)
test(ui): stabilize browser route readiness (#115320)
fix(cron): clear automation after failed scheduler shutdown (#115316)
fix: keep isolated gateway workspaces and skills inside state dir (#114487)
docs: document local TTS on macOS, Linux, and Windows (#110230)
fix(tasks): clone only the requested task page (#114277)
fix(agents): prevent Code Mode resume loss and unbounded preparation (#115314)
fix(process): preserve the first process cancellation reason (#115317)
fix(nostr): report unavailable ingress when queue open fails (#115313)
fix: prevent Slack and Feishu ingress startup leaks (#115295)
fix(slack): avoid unsafe emphasis boundaries (#111575)
fix: prevent changed checks from expanding into full lint (#115322)
fix(codex): stabilize prompts and expose real cache regressions (#115238)
refactor(ui): derive page route specs from the route table (#115214)
fix(compaction): plan cut points in trigger units (#111886) (#115309)
fix: prevent cron and gateway stress-run timeouts (#115241)
fix(ci): validate frozen Matrix QA targets (#115298)
test(macos): block real process fallthrough (#113337)
...
# Conflicts:
# CHANGELOG.md