Vincent Koc
215e49b1a2
fix(hooks): report eventless hooks as not ready ( #116083 )
...
Fixes #72370
Release note: hooks check now reports selected hooks without declared events as not ready instead of ready.
2026-07-30 05:29:25 +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
Peter Steinberger
b240703cfc
fix(ui): compact the macOS gateway picker menu ( #115977 )
...
* fix(ui): compact native gateway menu
* chore: leave changelog to release automation
* test: stabilize UI and CLI process checks
2026-07-29 14:42:18 -04:00
Peter Steinberger
e80fe942c8
fix(gateway): stop start-time repair from retargeting managed services ( #115935 )
2026-07-29 13:41:19 -04:00
Harjoth Khara
895b691c55
fix(daemon): refuse duplicate launchd gateway managers ( #97285 )
...
* fix(daemon): block duplicate launchd owners
Co-authored-by: Harjoth Khara <harjoth.khara@gmail.com >
* fix(ci): satisfy launchd docs and lint gates
* fix(ci): remove unused launchd exports
* docs: refresh gateway map
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 13:31:22 -04:00
Vincent Koc
aaf7a432aa
fix(skills): preserve configless workshop apply upgrades ( #115982 )
2026-07-30 01:09:56 +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
Peter Steinberger
b4d14d7848
refactor(config): move model normalization to input owners ( #115965 )
...
* refactor(config): move model normalization to input owners
* fix(config): merge canonical doctor model rows
* fix(config): align touched model map identities
* ci(env): lower production variable budget
* chore: leave changelog to release automation
2026-07-29 12:04:07 -04:00
Peter Steinberger
5bfc65d7f4
refactor: remove 3,543 lines of redundant runtime and tests ( #115961 )
...
* refactor: remove 3,543 lines of redundant runtime and tests
* refactor: ratchet production environment variable budget
2026-07-29 11:43:41 -04:00
Peter Steinberger
383f8947c1
fix: doctor skips host services for isolated state ( #115922 )
...
* fix(doctor): isolate host service management
* fix(doctor): clarify service isolation recovery
* test(doctor): isolate service identity fixtures
* test(daemon): keep lifecycle fixtures lint-clean
* test(daemon): isolate install identity fixtures
2026-07-29 11:09:56 -04:00
Peter Steinberger
628262a4af
test(cli): keep help-exit process children single-process with a diagnosable timeout ( #115940 )
2026-07-29 10:28:25 -04:00
Simranjit Singh
26b236dae3
fix(update): gateway restart survives inherited cross-user D-Bus environment ( #111534 )
...
* fix(update): repair mismatched user bus for restart
* fix(update): preserve custom user bus on restart
* fix(update): preserve effective-user D-Bus transports
* fix(update): preserve effective-user D-Bus transports
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 10:25:10 -04:00
Vincent Koc
4278fdfd5e
Merge pull request #115825 from openclaw/refactor/health-owner-boundary
...
refactor(gateway): own health snapshot collection
2026-07-29 22:00:59 +08:00
Vincent Koc
7d74e45f7f
fix(ports): prevent duplicate macOS listener probes during status checks ( #115813 )
...
* fix(ports): batch macOS lsof listener inspection to one spawn per cycle
(cherry picked from commit edd01c72ae )
* fix(ports): keep single-port lsof checks targeted
(cherry picked from commit 18ece86a57 )
* test(daemon): mock batched port usage in coverage
(cherry picked from commit 917ef0d416 )
* test(daemon): model batched listener status
* refactor(ports): isolate lsof listener parsing
---------
Co-authored-by: 狼哥 <hanwanlonga@gmail.com >
2026-07-29 21:33:55 +08:00
Peter Steinberger
8ec4a059fc
fix(codex): keep stressed inference turns isolated and observable ( #115893 )
2026-07-29 09:11:20 -04:00
Peter Steinberger
bfb7ff189e
docs(codex): replace stale app/list wording with app/installed ( #115867 )
2026-07-29 08:09:44 -04: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
Vincent Koc
f6e874835c
fix(gateway): stop managed crash loops for pending agent DB migrations ( #115631 )
...
* fix(gateway): recover managed services after agent DB migration
* test(infra): use managed temp directory cleanup
2026-07-29 19:21:46 +08:00
Peter Steinberger
f20fc70cb4
test(cli): isolate unknown-command process validation ( #115848 )
2026-07-29 06:49:55 -04:00
loong
7bdd1f646b
fix(memory-host-sdk): resolve stable execPath for worker fork to survive Homebrew Node upgrades ( #99318 )
...
* fix(memory): survive Homebrew Node upgrades
Co-authored-by: 袁龙辉0668001277 <yuan.longhui@xydigit.com >
* test(whatsapp): isolate last-route coverage
* fix(deepinfra): preserve offline model compatibility
* test(memory): isolate migration cleanup lifecycle
* test: stabilize aggregate extension gates
* ci: retrigger pull request workflow
* test: preserve inherited Node options
* test(cli): tolerate cold hosted startup
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 06:49:02 -04:00
Vincent Koc
46f629882b
refactor(gateway): own health summary contract
2026-07-29 17:36:30 +08:00
Peter Steinberger
f32242e62f
fix(cli): scope dns setup timeout to brew prefix probe with SIGKILL ( #115782 )
...
Make the subprocess timeout opt-in so long-running setup steps (brew
install, service restart, sudo writes) keep their unbounded wait, and
apply a 15s SIGKILL-backed deadline only to the fast brew --prefix probe
so a signal-resistant hung shim cannot block dns setup.
Also fix the regression test on Linux CI: stub process.platform via
withMockedPlatform (the action does not consult os.platform()) and point
the mocked brew prefix at a real temp dir so un-mocked fs writes succeed
without sudo. Add focused coverage that non-probe subprocesses stay
unbounded.
(cherry picked from commit 469ae1db40 )
Co-authored-by: thomas.szbay <thomas.szbay@example.com >
2026-07-29 05:03:20 -04:00
Peter Steinberger
e1a00726a3
feat(gateway): add least-privilege voice-node pairing ( #115712 )
...
* feat(gateway): add least-privilege voice-node pairing
* chore: leave voice-node note to release
* fix(gateway): keep bootstrap helpers private
* fix(ci): remove unused Code Mode type export
* fix(ci): remove stale model matrix import
* fix(ci): align QA evidence timeout guard
2026-07-29 04:09:37 -04:00
Vincent Koc
14940edf15
feat(skills): add Skill Workshop lifecycle hooks ( #115606 )
...
* feat(skills): add lifecycle hook contracts
* feat(plugins): expose skill hook contracts
* feat(plugins): identify skill evaluators
* feat(skills): persist proposal evaluation lifecycle
* feat(skills): add agent evaluation action
* feat(skills): emit committed skill lifecycle changes
* feat(gateway): expose skill proposal evaluation lifecycle
* feat(ui): add Skill Workshop evaluations
* fix(skills): bind lifecycle state to proposal revisions
* fix(skills): preserve lifecycle events without artifacts
* feat(cli): evaluate skill proposals
* fix(ui): bind evaluations to proposal revisions
* docs(skills): document lifecycle hook primitives
* chore(plugin-sdk): refresh skill hook surface
* fix(skills): harden proposal evaluator execution
* fix(plugins): isolate skill evaluator inputs
* fix(cli): align skill lifecycle deadlines
* fix(skills): preserve evaluation replay invariants
* test(ui): capture Skill Workshop evaluation proof
* fix(skills): bind apply to evaluated target tree
* fix(skills): preserve evaluation contract edges
* fix(skills): bound evaluation event storage
* chore(skills): keep lifecycle helpers internal
* refactor(skills): isolate evaluation persistence
* fix(skills): satisfy lifecycle validation gates
* chore(protocol): refresh Skill Workshop clients
* docs: refresh Skill Workshop map
* chore: keep release notes in PR metadata
* docs: refresh merged docs map
* fix(ci): type Code Mode catch errors
* fix(skills): freeze lifecycle observation payloads
* fix(protocol): keep proposal inspect backward-decodable
* fix(skills): enforce final evaluator bundle limits
* fix(skills): preserve lifecycle caller attribution
* chore: drop subsumed Code Mode formatting
* test(plugins): adapt lifecycle hook mocks
2026-07-29 15:49:44 +08:00
Peter Steinberger
bb19d65446
fix(cli): keep remote gateway calls read-only ( #115664 )
2026-07-29 03:48:59 -04:00
Peter Steinberger
6ec84bc3bd
fix(models): expose custom max and ultra reasoning tiers ( #115690 )
...
* fix(models): honor custom advanced reasoning levels
* fix(ci): restore code mode matrix boundaries
2026-07-29 03:33:30 -04:00
wm0018
a1d31204f1
fix(gateway): drain root work continuations before direct-stop process exit ( #105848 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 14:28:14 +08:00
Peter Steinberger
ddd0b48673
refactor: remove 3,527 lines of runtime and test duplication ( #115626 )
...
* refactor: remove obsolete runtime and test duplication
* test: preserve typed cron and realtime fixtures
2026-07-29 02:21:20 -04:00
Vincent Koc
1c36054494
feat(agents): add code mode model acceptance matrix ( #115305 )
...
* feat(agents): add code mode model acceptance matrix
* fix(qa): emit canonical Code Mode matrix evidence
* fix(qa): reserve code mode matrix output safely
* fix(qa): require fresh matrix builds
* fix(qa): protect matrix evidence paths
2026-07-29 14:12:20 +08:00
Vincent Koc
3b3a64c322
fix(cli): keep JSON stdout valid through finalization ( #115315 )
...
* fix(cli): preserve JSON stdout through finalization
* test(cli): cover JSON entrypoint routing
* fix(cli): preserve native relay import ordering
2026-07-29 14:04:12 +08:00
Peter Steinberger
cc3b059497
fix(plugins): honor update channel for targeted probes ( #115604 )
2026-07-29 01:46:53 -04:00
Peter Steinberger
5fe07e4ae8
fix(update): honor declared plugin entrypoints during repair ( #115610 )
2026-07-29 01:43:30 -04:00
Peter Steinberger
ec4c90c455
fix(onboard): reject conflicting custom inputs ( #115595 )
2026-07-29 01:34:54 -04:00
Peter Steinberger
aa1e8683d8
fix(doctor): keep cleanup hints scoped to detected services ( #115559 )
2026-07-29 01:08:19 -04:00
Peter Steinberger
a8f1e035e4
fix(cli): tolerate listeners exiting before force cleanup ( #115568 )
2026-07-29 01:02:32 -04:00
Peter Steinberger
83a3975eca
improve(agents): reuse prepared model facts across warm turns ( #115527 )
...
* perf(agents): keep prepared model facts together
* test(media): expect prepared image runtime context
2026-07-29 00:23:39 -04:00
Peter Steinberger
430c293ee0
refactor: remove duplicate provider and runtime code ( #115529 )
...
* refactor: remove duplicated runtime and provider code
* refactor: exclude unrelated browser test cleanup
* refactor: preserve canonical subagent cleanup ordering
2026-07-29 00:04:52 -04:00
ooiuuii
8ffc567075
fix(plugins): keep bulk updates on the beta channel ( #115083 )
...
* fix(plugins): preserve beta channel on bulk update
* docs(plugins): document beta bulk update fallback
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-29 12:04:38 +08:00
Peter Steinberger
5cc9693507
fix(doctor): enable workspace suggestions by default ( #115512 )
...
Restore the documented default workspace health guidance and preserve the explicit opt-out. Add regression coverage for both real CLI registration modes. Fixes #109503 ; thanks @moguangyu5-design for reporting the bug and proposing #109504 .
2026-07-28 23:35:46 -04:00
Peter Steinberger
5457165289
fix(cli): honor help, dry-run, and plugin pin contracts ( #115464 )
2026-07-28 23:01:24 -04:00
Peter Steinberger
e1e1c1879b
fix: validate plugin installs before lifecycle mutations ( #115427 )
2026-07-28 18:25:57 -04:00
Josh Lehman
ba68a4ed67
fix(codex): isolate native hook relay startup ( #115078 )
2026-07-28 11:57:36 -07:00
Vincent Koc
77751a224d
fix: stabilize package-to-dev release upgrades ( #115292 )
...
* origin/test/parallels-main-3224005-host:
docs(changelog): cover Windows prerequisite readiness
fix(e2e): preserve Windows installer reboot results
docs(changelog): include Windows stop safety gate
fix(e2e): force Windows smoke gateway stop
docs(changelog): note Parallels and update fixes
fix(update): finalize install switches in fresh process
fix(e2e): harden Parallels guest preparation
2026-07-29 02:52:44 +08:00
Peter Steinberger
a8fb4872fb
refactor: harden shell completion and shard Control UI E2E ( #115332 )
...
* refactor: harden CLI completion and shard Control UI E2E
* fix: keep completion command-tree result private
* fix: remove unused browser test helper exports
* test: cover sharded Control UI workflow contract
2026-07-28 14:35:27 -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
Peter Steinberger
ba8bccb750
fix(cli): gateway health JSON connects before loading presentation code ( #115244 )
...
* fix(gateway): start one-shot CLI clients immediately
Closes #115243
* fix(cli): defer gateway health presentation imports
* style(cli): format gateway health loader
* test(cli): match gateway health call shape
* perf(cli): route gateway health JSON before Commander
* fix(cli): preserve routed health output contract
* test(cli): match routed JSON indentation
* fix(cli): guard routed health config resolution
* perf(cli): avoid duplicate health config bootstrap
2026-07-28 14:19:18 -04:00
Peter Steinberger
2b8e6395b9
fix: prevent node gateway hangs and runaway local inference ( #115248 )
...
* fix(node): bound gateway wake, cancellation, and local inference
* refactor(gateway): extract bounded node invocation policies
2026-07-28 12:47:30 -04:00
Vincent Koc
4ee399c714
fix(update): finalize install switches in fresh process
2026-07-29 00:24:09 +08:00
Peter Steinberger
4d9588dfed
fix: restore Fish completion after global CLI options ( #115222 )
...
* fix(cli): restore Fish completions after root options
* test(ui): restore shared history after agent tool clicks
* test(ui): wait for terminal availability before toggling
* test(ui): wait for Settings takeover before asserting sidebar
2026-07-28 12:19:20 -04:00
Peter Steinberger
964c5abbde
fix(cli): reject malformed infer model refs ( #115225 )
2026-07-28 12:03:58 -04:00