Commit Graph

3931 Commits

Author SHA1 Message Date
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