Peter Steinberger
641b730134
fix(cron): normalize zoned ISO timestamps consistently ( #117969 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-02 04:22:47 -07:00
Peter Steinberger
85e4094529
fix(cli): publish TTS output atomically ( #117962 )
2026-08-02 04:08:55 -07:00
Peter Steinberger
92c7400a54
perf(cli): finish cold read paths ( #117957 )
...
* perf(cli): finish cold read paths
* test(cli): satisfy cold path lint gates
* test(cli): fix cold path fixture typing
2026-08-02 03:59:24 -07:00
Peter Steinberger
d512d1b182
fix(gateway): preserve trusted CA certificates when reinstalling services ( #117944 )
2026-08-02 03:19:00 -07:00
Peter Steinberger
610ca42ce3
fix(cli): publish buffered media atomically ( #117934 )
2026-08-02 03:15:50 -07:00
Peter Steinberger
4c7a8d412b
feat(cli): support --json across reporting commands ( #117928 )
...
* feat(cli): support --json across reporting commands
* test(cli): satisfy json command checks
* test(cli): type json exception map
2026-08-02 02:56:08 -07:00
Peter Steinberger
4d14f298b0
perf(cli): keep read-only commands on cold paths ( #117932 )
...
* perf(cli): keep read-only commands on cold paths
* perf(channels): reuse list metadata snapshot
2026-08-02 02:54:40 -07:00
Peter Steinberger
83fa625fb6
fix(cli): reject incomplete hosted video downloads ( #117893 )
...
* fix(cli): validate streamed video downloads
* test: repair CLI and plugin test gates
2026-08-02 02:03:37 -07:00
sunlit-deng
9517b10778
fix(hooks): show eventless status consistently ( #116127 )
...
* fix(hooks): show eventless status consistently
* fix(hooks): preserve disabled hook status compatibility
Co-authored-by: sunlit-deng <yang.jiajun1@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-02 01:24:28 -07:00
Peter Steinberger
6b625357fc
refactor(cli): consolidate security-sensitive regression fixtures ( #114411 )
...
* refactor(cli): consolidate security-sensitive regression fixtures
* refactor(cli): refresh fixture cleanup against main
2026-08-02 01:19:59 -07:00
Peter Steinberger
76ec39556e
perf(plugins): list from installed metadata ( #117900 )
2026-08-02 01:18:40 -07:00
Peter Steinberger
1e9a620a28
refactor(gateway): remove deferred channel load flag; 503 plugin routes until runtime ready ( #117852 )
...
* refactor(gateway): remove deferred channel load flag; 503 plugin routes until runtime ready
* test(agents): make setup middleware load intent explicit
* test(gateway): pin webhook startup routing outside SPA
2026-08-02 00:36:21 -07:00
Peter Steinberger
a9bbf45d4b
refactor(cli): unify config-guard policy across dispatch paths ( #117880 )
2026-08-02 00:20:39 -07:00
Peter Steinberger
33ea3e16e9
refactor: consolidate core micro-helpers ( #117825 )
...
* refactor: centralize stable stringification
* refactor: reuse canonical record coercion
* refactor: reuse safe JSON parsing in cron storage
* refactor: centralize environment truthiness
* fix: enforce model scan and block reply timeouts
* refactor: consolidate signal-aware sleep helper
* fix: preserve plugin SDK sleep contract
* test: satisfy model scan timeout lint
2026-08-01 23:10:46 -07:00
Peter Steinberger
57c6f76221
fix(test): prevent CLI process loader hangs ( #117830 )
2026-08-01 22:22:26 -07:00
Peter Steinberger
ccee629359
refactor(plugins): delete registry compat scaffolding ( #117749 )
...
* refactor(plugins): delete registry compat scaffolding
* test(plugins): update CLI registry handle mock
* fix(plugins): preserve explicitly initialized hook registries
* test(plugins): update registry ownership fixtures
* fix(channels): restore registry snapshot memo
2026-08-01 21:18:47 -07:00
Peter Steinberger
fa1123a530
fix(cli): fail nodes push on APNs rejection ( #117737 )
2026-08-01 20:53:59 -07:00
Peter Steinberger
d669e9eddd
refactor(tui): centralize gateway chat history limits ( #117773 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 20:34:49 -07:00
Peter Steinberger
5cb0c9df53
fix(cli): keep channels status route cold ( #117751 )
2026-08-01 19:43:03 -07:00
Vincent Koc
953db0456e
perf(cli): attribute command startup stages ( #117720 )
2026-08-02 09:48:14 +08:00
Peter Steinberger
75e815e866
fix(plugins): refresh gateway marketplace catalog ( #117724 )
2026-08-01 18:24:08 -07:00
Peter Steinberger
681e8c5ab1
fix(cli): keep gateway-backed agent turns cold ( #117705 )
...
* fix(cli): keep gateway-backed agent turns cold
* test(cli): fix agent session test import
2026-08-01 17:34:27 -07:00
Vincent Koc
c1ee660b85
perf(cli): trace startup phases in diagnostics ( #117702 )
2026-08-02 08:32:51 +08:00
Peter Steinberger
91c9d8f8d5
fix(cli): preserve gateway startup policy with parent options ( #117675 )
...
* fix(cli): use parsed command path for startup
Fixes #117674
* style(cli): format startup regression
2026-08-01 16:48:27 -07:00
Peter Steinberger
6c9b38862d
refactor(plugins): root-owned bundle installation with scoped registry handles ( #117587 )
...
* refactor(plugins): root-owned bundle installation with scoped registry handles
* refactor(plugins): root-owned bundle installation with scoped registry handles
* test(gateway): expect gateway-binding fact in reload rewarm
* fix(agents): reuse gateway prepared runtime generations
* test(agents): isolate runtime handle fixtures
* test(agents): align runtime owner fixtures
* test(cron): mock run-owned registry loading
2026-08-01 16:17:30 -07:00
Peter Steinberger
f620c19a93
fix(gateway): bound service reads in status ( #117636 )
...
* fix(gateway): bound status service reads
* fix(gateway): preserve service probe errors
2026-08-01 14:38:40 -07:00
Peter Steinberger
3856b4fa1b
refactor(cli): unify gateway RPC transport ( #117601 )
2026-08-01 14:06:30 -07:00
Peter Steinberger
1e9a140520
fix(skills): preserve profile in ClawHub command hints ( #117555 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 11:57:20 -07:00
Peter Steinberger
b0ec8bbdfa
fix(cli): explain filtered plugin policy without unsafe recovery ( #117556 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 11:55:59 -07:00
Peter Steinberger
f35c34343a
fix(plugins): fail blocked enable commands ( #117536 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 11:48:24 -07:00
WhatsSkiLL
428a9e9cbc
fix(update): return failure when dirty checkout blocks update ( #117452 )
...
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-08-01 11:11:19 -07:00
Peter Steinberger
e9b959aaaa
fix(cli): preserve machine output through fatal terminal restores ( #117487 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 10:03:33 -07:00
Peter Steinberger
94c5b54d96
fix(plugins): compare authoring metadata by canonical JSON semantics ( #117486 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 10:00:39 -07:00
Peter Steinberger
1296ab3b41
fix(cli): report user profile command outcomes ( #117466 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 09:25:25 -07:00
Vincent Koc
5ae401d908
fix(models): reduce default model-list memory use ( #117323 )
...
* fix(models): scope default catalog discovery
* fix(models): split scoped catalog preparation
* perf(models): narrow model-list imports
* perf(auth): narrow provider id imports
* perf(plugins): narrow provider discovery imports
* perf(models): bypass runtime catalog facade for scoped lists
* perf(models): avoid runtime imports in default list
* fix(models): preserve scoped catalog coverage
* chore(models): remove obsolete auth exports
* perf(models): skip redundant configured-provider discovery
* perf(models): skip canonical row runtime loading
* fix(models): normalize configured fallback rows
* test(models): update registry list fixtures
* fix(models): separate catalog and runtime discovery scopes
* fix(models): break row projection import cycle
* fix(models): satisfy type and export checks
* fix(models): keep row projection bundled-only
* fix(models): preserve partial catalog visibility
* fix(models): avoid live discovery in default lists
* test(models): isolate auth-backed catalog coverage
* fix(models): retain OpenAI runtime normalization
* fix(models): skip canonical OpenAI row runtime loading
* test(models): keep provider policy fixtures typed
* fix(models): preserve configured OpenAI routes
2026-08-02 00:01:37 +08:00
Peter Steinberger
40cc08e08d
fix(plugins): fail closed on ambiguous uninstall targets ( #117406 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 07:38:20 -07:00
Jacob Tomlinson
20ac22f647
fix(codex): guide recovery from unimported agent auth ( #116807 )
...
* fix(codex): diagnose unimported agent auth
Add agent-scoped Codex migration guidance and expose a validated --agent target so non-default credentials cannot be imported into the default agent store.
Fixes #116763
* fix(codex): surface auth migration before route planning
* fix(codex): scope auth migration recovery
* fix(codex): preserve API key auth fallback
* test: repair memory importer routing expectation
* test: drop superseded memory routing repair
* test(tui): report PTY progress verbosely
---------
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com >
2026-08-01 07:08:02 -06:00
Peter Steinberger
7bd7d7d2a1
fix(plugins): surface actionable doctor warnings ( #117357 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 04:51:43 -07:00
Peter Steinberger
7ab05df415
fix(plugins): require tracked owners for targeted updates ( #117333 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 04:36:18 -07:00
Peter Steinberger
d88c338a82
fix(update): keep rolled-back Git installs runnable ( #117294 )
...
* fix(update): restore runtime after git rollback
* chore(update): leave changelog to release automation
* test(update): cover rollback restart policy
* test(update): satisfy caller fixture types
2026-08-01 02:20:13 -07:00
Peter Steinberger
b5f1bdb886
fix(plugins): keep remote marketplace JSON output clean ( #117307 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 01:56:44 -07:00
joshavant
07b7d6446c
fix(matrix): reconcile durable sends after response loss
2026-08-01 02:45:12 -05:00
MasterSwords1
732c57435c
fix(cli): update plugins doctor clean message ( #115073 ) ( #117160 )
...
* fix(cli): update plugins doctor clean message (#115073 )
Root cause: plugins doctor reports 'No plugin issues detected.' even when a selected context-engine plugin is quarantined at runtime, because doctor is a fast static control-plane check.
Architectural owner: plugins-cli.runtime.ts
Canonical fix: Change clean status message to direct operators to 'openclaw health' for active runtime quarantine/fallback status.
Production LOC delta: +2 LOC
* fix(cli): update plugins doctor clean message wording (#115073 )
Root cause: Refine the diagnostic text message to run openclaw health directly.
Architectural owner: src/cli/plugins-cli.runtime.ts
* fix(cli): clarify plugin doctor scope
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-01 13:54:37 +08:00
Sasan
6938f7dddb
fix: allow gateway service commands for named profiles ( #116314 )
...
* fix: gateway service commands refuse a named profile or relocated OPENCLAW_HOME
- Resolve the default install identity against the canonical state directory
for the active OpenClaw home and profile instead of the unprofiled OS
account default.
- `--profile <name>` / `--dev` project `.openclaw-<profile>` state and config
paths, so every named profile was classified as isolated state and refused
`install`, `start`, `stop`, `restart`, `uninstall`, Doctor service repair,
and self-update service handling.
- `OPENCLAW_HOME` relocates all OpenClaw path defaults and is documented for
running as a dedicated service user; a relocated home is now an install
identity. `HOME` alone still is not.
- An `OPENCLAW_STATE_DIR` or `OPENCLAW_CONFIG_PATH` pointing outside those
canonical paths is still treated as isolated state.
- Recovery guidance in the refusal message now names the paths that must match.
Verified: focused vitest shards for the changed suites plus the daemon, CLI,
and doctor suites that consume the identity check; tsgo core and core-test
lanes; oxlint; docs format, MDX, link, and map checks.
* fix(gateway): keep relocated homes isolated
* fix(config): validate service profile identity
* fix(daemon): enforce named-profile service ownership
* fix(update): reject drifted service selectors before probes
* test(windows): prove scheduled task lifecycle
* test(windows): harden scheduled task proof cleanup
* test(windows): bind lifecycle proof to checkout
* test(windows): normalize cleanup exit status
* test(windows): verify effective task privilege
* test(windows): protect scheduled task proof roots
* test(windows): prove listener-owned task lifecycle
* test(windows): fix scheduled task proof contracts
* test(windows): remove redundant mock coercions
* test(windows): measure fallback before task probes
* test(windows): prove scheduled task process origin
* fix(gateway): preserve unmanaged restart fallback
* test(gateway): cover denied restart ownership
* test(gateway): keep restart helper types private
* test(gateway): classify lifecycle helpers as test code
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-01 11:28:39 +08:00
Peter Steinberger
95e50d3a7f
fix(terminal): measure unicode display width consistently ( #117062 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 18:25:15 -07:00
Yuval Dinodia
c13a0493aa
fix(config): delete one array element per config patch delete ( #116463 )
...
`openclaw config patch` with a null leaf at an array index removed three
entries instead of one, and reported success. runConfigOperations spliced the
element out of the in-memory config and also pushed the path into unsetPaths,
which the writer replays twice against the persist candidate, so every replay
removed one more neighbour.
runConfigUnset already suppresses unsetPaths for array leaves (fb73f2161e ,
issue #76290 ). runConfigOperations ignored the leafContainer that unsetAtPath
returns and pushed unconditionally. It now applies the same guard, so object
keys keep their write-level unset path and array indices do not.
2026-07-31 17:53:24 -07:00
Vincent Koc
89aadef6ef
feat(plugins): externalize iMessage channel ( #117101 )
2026-08-01 08:01:18 +08:00
Peter Steinberger
433bb3f954
fix(cli): make commands, completion, and JSON output reliable ( #116033 )
...
* fix(cli): make commands, completion, and JSON output reliable
* fix(cli): reconcile completion coverage with current main
* test(cli): keep test routing stable across isolation lanes
2026-07-31 16:20:34 -07:00
Peter Steinberger
6b40ad6a66
fix(cli): honor shell-owned completion profile locations ( #117002 )
...
* fix(cli): honor shell-owned completion profile locations
* test(cli): isolate completion profiles across platforms
* fix(wizard): reuse canonical completion profile hints
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 15:41:08 -07:00
Vincent Koc
61fb29e90a
feat(plugins): externalize OpenCode Go provider ( #117064 )
2026-08-01 06:31:19 +08:00