Vincent Koc
f5a8cb02ea
test(release): repair full validation regressions ( #116931 )
...
* test(discord): mock thread delete listener
* test(qa): expect blocked update evidence
* test(telegram): preserve recovered context body
* fix(test): configure kitchen-sink personality
* test(browser): expect canonical staged upload paths
* test(browser): canonicalize macOS download roots
* test(feishu): seed legacy session rows offline
* test(telegram): isolate message context session stores
* test(qqbot): expect canonical media paths
* test(anthropic): match canonical transcript paths
* test(qa): expect canonical session store keys
* test(gateway): isolate rewind media reads
* test(release): review plugin child spawns
* test(plugins): expect process-stable manifest metadata
* test(google): retire usage telemetry contracts
2026-08-01 15:42:50 +08:00
Vincent Koc
b45ca07ec9
fix(ci): keep full release validation aligned with runtime state ( #116653 )
...
Align Telegram artifact reuse and packaged Docker validation with current GitHub Actions and runtime state contracts. Refresh affected regression fixtures and isolate test state.
2026-07-31 23:03:02 +08:00
Vincent Koc
c45c318848
fix(plugins): enforce conformance probe diagnostics ( #116676 )
2026-07-31 13:20:33 +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
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
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
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
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
d16e33e08e
fix: restore trustworthy end-to-end QA and cross-channel delivery ( #115404 )
...
* fix(qa): repair verified end-to-end and channel regressions
* fix(gateway): make interrupted restart recovery lifecycle-safe
* test(heartbeat): target the canonical recovery session store
* fix(gateway): prioritize durable restart recovery before heartbeat
* fix(qa): preserve safe restart recovery and channel expiry
* fix(qa): fail closed and fence restart recovery
* test(agents): isolate restart recovery timing
* test(agents): prove actual restart retry timing
* fix(qa): report incompatible profile scenarios
* fix(scripts): resolve symlinked docker scheduler entrypoints
* fix(qa): require fresh native test evidence
* fix(heartbeat): fence active restart recovery delivery
* fix(gateway): consume untargeted restart acknowledgements
* fix(qa): satisfy exhaustive hosted validation gates
* fix(agents): fence stopped restart recovery dispatch
* style(agents): format restart recovery lifecycle regression
* test(gateway): isolate context prewarm sidecar lifecycle
* test(qa): make scenario process timeout cleanup deterministic
* fix(qa): stamp synthetic gateway configs with current version
* fix(openai): preserve vision capabilities in stale model catalogs
* test(qa): align profile channel rejection with current main
* fix(openai): forward supported moderation for image edits
* fix: restore latest-main CI and image edit documentation
* fix(qa): retain relocated code-mode evidence validation
* fix(openai): expose GPT-5.4 vision in static catalog
* fix(pricing): honor explicit model cost overrides
* test(pricing): keep isolated provider regressions deterministic
* fix(openai): inherit transport for discovered static models
* fix(gateway): honor agent-owned static image capabilities
* test(gateway): preserve prepared-snapshot attachment races
* test(gateway): isolate subagent persistence failure injection
* test(gateway): exercise concurrent voice replay admission
* fix(gateway): restore stale model image capabilities
* fix(agents): publish configured model vision capabilities
* fix(agents): isolate detached media transcript ownership
* test(agents): preserve generic transcript lock regression
* fix(gateway): require proven static model route identity
* fix(qa): accept bounded full-size generated image attachments
* fix(qa): require fresh script producer evidence
* test(qa): prove native E2E scenario execution
2026-07-29 12:45:27 -04:00
Vincent Koc
ee8f60d38a
refactor(scripts): reuse shared record guard
2026-07-29 16:42:12 +02:00
Vincent Koc
38abf500ba
fix(update): stabilize cross-version dev upgrades ( #115651 )
...
* fix(e2e): stabilize cross-version Parallels upgrades
* fix(e2e): avoid inline macOS guest probes
* fix(e2e): detach Windows dev updates
* fix(e2e): detach macOS guest updates with Node
* fix(e2e): initialize skipped upgrade config
* fix(update): use partial clone for dev checkout
* fix(update): keep Windows dev checkouts clean
* fix(e2e): pin Parallels dev update targets
* fix(e2e): own Parallels gateway restarts
* fix(e2e): verify pinned Parallels checkouts
* fix(e2e): forward Parallels update budgets
* fix(e2e): use canonical provider auth choices
* chore: leave changelog to release automation
* test(ui): stabilize route waits on loaded runners
2026-07-29 19:52:34 +08:00
qingminlong
ba26595aaa
fix(e2e): bound Docker stats sample lines ( #109262 )
...
* 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 >
2026-07-29 07:30:29 -04:00
Vincent Koc
25c375e47f
refactor: reuse canonical record guards ( #115810 )
...
* 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
2026-07-29 11:43:36 +02:00
Peter Steinberger
4232126bba
chore: update dependencies across workspace ( #115677 )
...
* chore(deps): update dependencies
* fix(deps): restore CI compatibility
2026-07-29 05:16:42 -04:00
Vincent Koc
9daa60961c
fix(agents): serialize sandbox provisioning ( #115645 )
...
* fix(agents): serialize sandbox provisioning
* test(docker): add sandbox browser sidecar e2e
* fix(ci): register sandbox browser e2e entrypoint
* fix(ci): restore code mode matrix checks
2026-07-29 14:50:15 +08:00
Peter Steinberger
388bcc43a1
fix: make Code Mode reliable across gateway and provider lifecycles ( #115379 )
...
* fix(code-mode): dispose suspended runs and propagate cancellation
* fix(code-mode): preserve request-visible provider tools
* test(code-mode): require real packaged gateway execution
* fix(gateway): load code mode cleanup only during shutdown
2026-07-28 15:21:54 -04:00
Vincent Koc
13b8f0765c
Merge remote-tracking branch 'origin/main' into test/parallels-main-3224005-host
...
* 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
2026-07-29 02:22:47 +08:00
clawsweeper[bot]
a0e4ac412c
fix: macOS-only Parallels smoke harness regression ( #75293 )
...
* fix: macOS-only Parallels smoke harness regression
* fix(parallels): keep macOS update smoke script owner-readable
* fix: macOS-only Parallels smoke harness regression
* test(parallels): exercise macOS guest script identity
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
---------
Co-authored-by: openclaw-clawsweeper[bot] <280122609+openclaw-clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 14:12:57 -04:00
Vincent Koc
caa5ae32e9
fix(e2e): preserve Windows installer reboot results
2026-07-29 01:12:42 +08:00
Vincent Koc
6e275bf0b4
fix(e2e): force Windows smoke gateway stop
2026-07-29 00:27:25 +08:00
Vincent Koc
c56091e0a0
fix(e2e): harden Parallels guest preparation
2026-07-29 00:24:03 +08:00
Peter Steinberger
3a39dbcdfd
fix(agents): harden code mode module isolation ( #114742 )
2026-07-27 16:38:44 -04:00
Peter Steinberger
9c7d83117d
fix: browser CDP Docker lane rejects its fixture ( #114691 )
...
* test(e2e): drop retired browser profile color
* test(ci): remove duplicate Codex prewarm routing
2026-07-27 16:00:36 -04:00
Peter Steinberger
1695854877
fix(qa): isolate Mantis candidate execution ( #114465 )
...
* fix(qa): allow restricted Mantis worktree traversal
* fix(qa): pin Mantis harness checkout revision
* fix(qa): isolate Mantis candidate execution
* fix(qa): harden Mantis teardown
2026-07-27 12:11:34 -04:00
Peter Steinberger
45bad50e26
fix(qa): harden Mantis Telegram proof harness ( #114429 )
...
* fix(qa): harden Mantis Telegram proof harness
* fix(qa): require explicit Mantis dispatch
2026-07-27 04:33:06 -04:00
Peter Steinberger
669db2968f
refactor(agents): retire TOOLS.md into an AGENTS.md section with a doctor migration ( #113966 )
...
* fix(agents): stop retired attestation hashes from faking a vanished workspace
* feat(agents): migrate TOOLS.md content into the AGENTS.md tools section
* refactor(agents): drop TOOLS.md from the workspace bootstrap set
* refactor(policy): read tool policy entries from AGENTS.md
* docs: describe local tool notes as an AGENTS.md section
* test(codex): drop TOOLS.md developer-instruction coverage with the removed path
* test(agents): cover the TOOLS.md doctor migration behaviors
* refactor(doctor): satisfy TOOLS.md migration lint
* test(agents): split workspace attestation survival coverage
* refactor(codex): simplify workspace context basenames
* refactor(doctor): keep TOOLS.md migration helpers module-local
* docs: regenerate docs map
* fix(doctor): keep migration claims fresh
* fix(doctor): preserve nested tool notes
* refactor(doctor): split tools migration helpers
* refactor(doctor): limit TOOLS.md migration to workspace root
* style(doctor): keep migration under line limit
* fix(doctor): recover interrupted AGENTS publish
* docs(hooks): describe root-only TOOLS.md migration accurately
* fix(doctor): preserve migrated tool guidance visibility
* test(agents): regenerate prompt snapshots after rebase
* fix(policy): block evaluation while TOOLS.md is unmigrated
* fix(doctor): check merged bootstrap budget per agent
* fix(doctor): keep budget helper internal
* refactor(doctor): keep migration budget helpers to their consumers
2026-07-27 03:56:30 -04:00
Peter Steinberger
60aac74672
fix(openai): harden live and packaged onboarding ( #114288 )
2026-07-27 00:50:49 -04:00
Peter Steinberger
f9721b9809
fix(e2e): use the newest Windows smoke snapshot ( #114157 )
...
* fix(e2e): select newest Windows smoke snapshot
* test(e2e): preserve undated snapshot ordering
2026-07-26 15:34:04 -04:00
Peter Steinberger
96aa6be670
fix(e2e): harden Windows prerequisite downloads ( #114153 )
2026-07-26 15:01:59 -04:00
Peter Steinberger
c16c0dbef4
fix(release): allow macOS snapshot selection in candidate smoke ( #114144 )
2026-07-26 14:08:31 -04:00
Peter Steinberger
19a98c873c
refactor(auth): finish SQLite-only auth profile cutover ( #114033 )
...
* refactor(auth): finish SQLite-only profile cutover
* test(auth): isolate SQLite shadow fixtures
* test(auth): satisfy OAuth refresh lint
* test(auth): infer legacy sidecar fixtures
* fix(auth): fail closed on unreadable stores
* fix(auth): recheck migration readiness on lookup
* fix(auth): preserve compatibility owner checks
* fix(auth): align SQLite cutover proof
* style(qa): format SQLite auth helpers
* fix(auth): recover interrupted SQLite migrations
* fix(auth): bind materialized SQLite refs
* style(auth): clarify receipt hash value
* fix(auth): preserve state-only OAuth routing
* fix(auth): snapshot receipted migration sources
* fix(auth): fail closed across recovery races
* fix(auth): close legacy recovery gaps
* fix(auth): serialize SQLite refresh recovery
2026-07-26 07:27:54 -04:00
Peter Steinberger
f6131a4fbf
build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks ( #114006 )
...
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks
npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.
* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration
- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture
2026-07-26 01:29:55 -04:00
Peter Steinberger
6e2cde0fba
fix(e2e): assert canonical agent entries after delete ( #113827 )
2026-07-25 12:55:46 -07:00
Peter Steinberger
f1538c6d6c
fix(release): validate complete package sets in candidate smoke ( #113600 )
...
* fix(release): pass only root dependencies to candidate smoke
* fix(release): stage plugin candidates for Parallels
* fix(release): bind plugin preflight package identity
* fix(test): stream upstream npm tarballs
* fix(test): retry post-update gateway startup
* fix(test): install fresh candidates through registry
* fix(test): route fresh candidates through registry
* test(release): update Parallels source contracts
* fix(test): split host and guest registry URLs
2026-07-25 07:59:06 -07:00
Peter Steinberger
eddd5224ad
fix(e2e): expose redacted packaged plugin failures ( #113635 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 04:48:08 -07:00
Peter Steinberger
57e2f220de
fix(ci): restore packaged OpenWebUI and update validation ( #113614 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 04:14:41 -07:00
Peter Steinberger
5bea268128
feat(anthropic): complete Claude Opus 5 rollout ( #113392 )
...
* feat(models): add Claude Opus 5 support
* test(models): align Opus 5 setup fixtures
* test(models): update ambient Opus 5 detection
* fix(models): reconcile Opus 5 support with main
2026-07-24 14:55:36 -07:00
joshavant
bd559a98ed
fix(cron): migrate scheduled authority provenance
2026-07-24 01:24:03 -05:00
Peter Steinberger
3b7b2a2a1f
chore: update dependencies and migrate major contracts ( #112963 )
...
* build(deps): complete latest dependency migrations
* fix(deps): satisfy updated dependency types
* fix(deps): hold incompatible build tooling
* fix(deps): preserve portable tooling contracts
* build(deps): allow reviewed fresh transitive releases
* fix(deps): repair major upgrade validation
* build(deps): regenerate current dependency graph
* fix(logging): keep tslog adapter type private
* fix(agents): narrow grep subprocess handle
* fix(codex): prefer pinned managed binary
* fix(codex): fence managed native provenance
* build(deps): align codex ACP with managed harness
* fix(slack): use socket-mode Undici runtime
* fix(slack): detect cross-runtime responses
* fix(slack): bridge package-owned fetch types
* fix(deps): retain tslog v4 JSON contract
* build(plugin-sdk): refresh logging API manifest
2026-07-23 21:21:01 -07:00
Peter Steinberger
c5a2220d37
refactor(sessions): restructure per-agent SQLite schema ( #113071 )
...
* refactor(sessions): restructure agent session schema
* fix(sessions): preserve sharing across node ownership
* refactor: split session node artifact helpers
* test: track session cleanup temp directories
* fix(sessions): preserve fresher alias artifacts
* fix(sessions): reject placeholder membership writes
* test(sessions): align schema ownership fixtures
* fix(sessions): align incognito and heartbeat ownership
* test(sessions): preserve retained window rehoming coverage
2026-07-23 10:21:05 -07:00
Peter Steinberger
acd92f6a3d
chore(deps): refresh repository dependencies ( #112453 )
...
* build(deps): update QA broker dependency
* build(deps): refresh repository dependencies
* build(deps): reconcile rebased shrinkwraps
* test(plugins): remove stale loader test state
* test(deps): stabilize updated dependency coverage
* fix(swift): use caller-isolated TaskLocal overload
* build(deps): regenerate rebased shrinkwraps
* test(msteams): preserve DNS validation in fetch helper
* fix(deps): avoid vulnerable optional image stack
* test(deps): validate generated LRU override
* refactor(ui): extract chat resizable divider
* test(ui): update divider ownership path
* fix(matrix): retain restart-compatible SDK
* style(cron): format update test
2026-07-23 16:17:13 +00:00
Peter Steinberger
525a7f4c96
ci(release): restore full validation after config migrations ( #112740 )
...
* fix(browser): preserve scoped CDP authority policy
* test(release): migrate canonical config fixtures
* ci(release): repair acceptance harness drift
* ci(release): extend Anthropic setup budget
* test(release): align remaining CI contracts
* test(release): align Docker and QA contract tests
* docs(release): preserve validation evidence inputs
* test(plugins): align unprepared metadata reads
* ci(release): separate QA live suite filters
* test(release): bind cron MCP cleanup device
2026-07-23 08:46:55 -04:00
Peter Steinberger
a2be4efb63
refactor(transcripts): store meeting captures in SQLite ( #112910 )
...
* refactor(transcripts): move meeting transcripts to sqlite
* perf(transcripts): batch legacy utterance staging
* fix(transcripts): report recovery moves on migration failure
* fix(transcripts): refresh archive membership after recovery
* fix(transcripts): omit failed summary export paths
* fix(transcripts): type restore metadata tuple
* fix(transcripts): align migration contract gates
* fix(transcripts): verify case-aliased export ownership
* fix(transcripts): allowlist doctor verifier sqlite query
* fix(transcripts): preflight partial artifact recovery
* fix(transcripts): stabilize exports and legacy path checks
* fix(transcripts): resolve case-renamed doctor ownership
* fix(transcripts): harden canonical export recovery
* fix(transcripts): preserve pending import boundaries
* refactor(transcripts): split migration insert transaction
* perf(transcripts): query selected summary existence
2026-07-23 07:18:55 -04:00