Peter Steinberger
f72114173c
fix(ci): resolve type regressions on main
2026-03-08 03:11:24 +00:00
Peter Steinberger
bd413263b2
refactor: register gateway service adapters
2026-03-08 03:02:25 +00:00
Peter Steinberger
2646739d23
refactor: centralize strict numeric parsing
2026-03-08 03:02:25 +00:00
Peter Steinberger
7f44bc5e94
fix: reject launchd pid sentinel values
...
Landed from contributor PR #39281 by @mvanhorn.
Co-authored-by: Matt Van Horn <mvanhorn@gmail.com >
2026-03-08 02:44:02 +00:00
Vincent Koc
556a74d259
Daemon: handle degraded systemd status checks ( #39325 )
...
* Daemon: handle degraded systemd status checks
* Changelog: note systemd status handling
* Update src/commands/status.service-summary.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-03-07 17:30:48 -08:00
Peter Steinberger
08597e817d
fix(ci): stabilize detect-secrets baseline
2026-03-08 01:25:15 +00:00
Peter Steinberger
a2cb80b9c4
fix(daemon): preserve envfile auth provenance
2026-03-08 01:13:28 +00:00
Vincent Koc
0d66834f94
Daemon: scope relaxed systemd probes to install flows
2026-03-07 16:45:18 -08:00
Vincent Koc
60441c8ced
Systemd: allowlist environment file fixtures
2026-03-07 16:43:21 -08:00
Vincent Koc
a56841b98c
Daemon: harden WSL2 systemctl install checks ( #39294 )
...
* Daemon: harden WSL2 systemctl install checks
* Changelog: note WSL2 daemon install hardening
* Daemon: tighten systemctl failure classification
2026-03-07 16:43:19 -08:00
Josh Avant
25252ab5ab
gateway: harden shared auth resolution across systemd, discord, and node host
2026-03-07 18:28:32 -06:00
Peter Steinberger
265367d99b
fix(gateway): land #28428 from @l0cka
...
Landed from contributor PR #28428 by @l0cka.
Co-authored-by: Daniel Alkurdi <danielalkurdi@gmail.com >
2026-03-07 22:51:08 +00:00
Peter Steinberger
c934dd51c0
fix(daemon): normalize schtasks runtime from numeric result only ( #39153 , thanks @scoootscooob)
...
Co-authored-by: scoootscooob <zhentongfan@gmail.com >
2026-03-07 22:06:20 +00:00
Peter Steinberger
4dcd930923
fix(test): strip windows drive prefix from darwin hints
2026-03-07 21:46:34 +00:00
Peter Steinberger
eb616b709f
fix(test): normalize darwin runtime hint paths
2026-03-07 21:40:52 +00:00
Peter Steinberger
cc7e61612a
fix(gateway): harden service-mode stale process cleanup ( #38463 , thanks @spirittechie)
...
Co-authored-by: Jesse Paul <drzin69@gmail.com >
2026-03-07 21:36:24 +00:00
Peter Steinberger
b9dd6e99b6
fix(daemon): avoid freezing Windows PATH in task scripts ( #39139 , thanks @Narcooo)
...
Co-authored-by: majx_mac <mjxnarco@pku.edu.cn >
2026-03-07 21:15:01 +00:00
Peter Steinberger
b955ba1688
refactor: consolidate daemon runtime and start hints
2026-03-07 21:09:26 +00:00
Peter Steinberger
80a6eb3131
fix(daemon): use locale-invariant schtasks running code detection ( #39076 )
...
Co-authored-by: ademczuk <andrew.demczuk@gmail.com >
2026-03-07 19:56:47 +00:00
ademczuk
70be8ce15c
fix(daemon): normalise whitespace in checkTokenDrift to prevent false-positive warning ( #39108 )
2026-03-07 14:10:54 -05:00
Peter Steinberger
1fc11ea7d8
refactor(daemon): dedupe systemd restart test scaffolding
2026-03-07 17:58:30 +00:00
Ayaan Zaidi
05c240fad6
fix: restart Windows gateway via Scheduled Task ( #38825 ) ( #38825 )
2026-03-07 18:00:38 +05:30
Ayaan Zaidi
26c9796736
fix: check managed systemd unit before is-enabled ( #38819 )
2026-03-07 17:11:07 +05:30
Vincent Koc
53b2479eed
Fix Linux daemon install checks when systemd user bus env is missing ( #34884 )
...
* daemon(systemd): fall back to machine user scope when user bus is missing
* test(systemd): cover machine scope fallback for user-bus errors
* test(systemd): reset execFile mock state across cases
* test(systemd): make machine-user fallback assertion portable
* fix(daemon): keep root sudo path on direct user scope
* test(systemd): cover sudo root user-scope behavior
* ci: use resolvable bun version in setup-node-env
2026-03-04 11:54:03 -08:00
Vincent Koc
2b98cb6d8b
Fix gateway restart false timeouts on Debian/systemd ( #34874 )
...
* daemon(systemd): target sudo caller user scope
* test(systemd): cover sudo user scope commands
* infra(ports): fall back to ss when lsof missing
* test(ports): verify ss fallback listener detection
* cli(gateway): use probe fallback for restart health
* test(gateway): cover restart-health probe fallback
2026-03-04 10:52:33 -08:00
a
4fb40497d4
fix(daemon): handle systemctl is-enabled exit 4 (not-found) on Ubuntu ( #33634 )
...
Merged via squash.
Prepared head SHA: 67dffc3ee239cd7b813cb200c3dd5475d9e203a6
Co-authored-by: Yuandiaodiaodiao <33371662+Yuandiaodiaodiao@users.noreply.github.com >
Co-authored-by: shakkernerd <165377636+shakkernerd@users.noreply.github.com >
Reviewed-by: @shakkernerd
2026-03-04 16:13:45 +00:00
Bob
61f7cea48b
fix: kill stuck ACP child processes on startup and harden sessions in discord threads ( #33699 )
...
* Gateway: resolve agent.wait for chat.send runs
* Discord: harden ACP thread binding + listener timeout
* ACPX: handle already-exited child wait
* Gateway/Discord: address PR review findings
* Discord: keep ACP error-state thread bindings on startup
* gateway: make agent.wait dedupe bridge event-driven
* discord: harden ACP probe classification and cap startup fan-out
* discord: add cooperative timeout cancellation
* discord: fix startup probe concurrency helper typing
* plugin-sdk: avoid Windows root-alias shard timeout
* plugin-sdk: keep root alias reflection path non-blocking
* discord+gateway: resolve remaining PR review findings
* gateway+discord: fix codex review regressions
* Discord/Gateway: address Codex review findings
* Gateway: keep agent.wait lifecycle active with shared run IDs
* Discord: clean up status reactions on aborted runs
* fix: add changelog note for ACP/Discord startup hardening (#33699 ) (thanks @dutifulbob)
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com >
2026-03-04 10:52:28 +01:00
Peter Steinberger
7eda632324
refactor: split slack/discord/session maintenance helpers
2026-03-02 23:07:20 +00:00
scoootscooob
163f5184b3
fix(daemon): handle versioned node@XX Homebrew formulas in Cellar resolution
...
Address review feedback: versioned Homebrew formulas (node@22, node@20)
use keg-only paths where the stable symlink is at <prefix>/opt/<formula>/bin/node,
not <prefix>/bin/node. Updated resolveStableNodePath to:
1. Try <prefix>/opt/<formula>/bin/node first (works for both default + versioned)
2. Fall back to <prefix>/bin/node for the default "node" formula
3. Return the original Cellar path if neither stable path exists
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 22:37:09 +00:00
scoootscooob
8950c59581
fix(daemon): resolve Homebrew Cellar path to stable symlink for gateway install
...
When `openclaw gateway install` runs under Homebrew Node, `process.execPath`
resolves to the versioned Cellar path (e.g. /opt/homebrew/Cellar/node/25.7.0/bin/node).
This path breaks when Homebrew upgrades Node, silently killing the gateway daemon.
Resolve Cellar paths to the stable Homebrew symlink (/opt/homebrew/bin/node)
which Homebrew updates automatically during upgrades.
Closes #32182
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 22:37:09 +00:00
Peter Steinberger
f9cbcfca0d
refactor: modularize slack/config/cron/daemon internals
2026-03-02 22:30:21 +00:00
magos-minor
350ac0d824
fix(daemon): default NODE_USE_SYSTEM_CA=1 on macOS
2026-03-02 22:17:14 +00:00
Peter Steinberger
b1c30f0ba9
refactor: dedupe cli config cron and install flows
2026-03-02 19:57:33 +00:00
liuxiaopai-ai
c9558cdcd7
fix(launchd): set restrictive umask in gateway plist
2026-03-02 18:38:56 +00:00
Mark L
718d418b32
fix(daemon): harden launchd plist with umask 077 ( #31919 )
...
* fix(daemon): add launchd umask hardening
* fix: finalize launchd umask changelog + thanks (#31919 ) (thanks @liuxiaopai-ai)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-03-02 18:13:41 +00:00
Fologan
8421b2e848
fix(gateway): avoid stale running status from Windows Scheduled Task (openclaw#19504) thanks @Fologan
...
Verified:
- pnpm vitest src/daemon/schtasks.test.ts
- pnpm check
- pnpm build
Co-authored-by: Fologan <164580328+Fologan@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-02 08:12:24 -06:00
Peter Steinberger
b02b94673f
refactor: dedupe runtime and helper flows
2026-03-02 12:55:47 +00:00
Sahil Satralkar
cda119b052
fix: handle missing systemctl in containers ( #26089 ) ( #26699 )
...
* Daemon: handle missing systemctl in containers
* Daemon: harden missing-systemctl detection
* Daemon tests: cover systemctl spawn failure path
* Changelog: note container systemctl service-check fix
* Update CHANGELOG.md
* Daemon: fail closed on unknown systemctl is-enabled errors
* Daemon tests: cover is-enabled unknown-error path
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-01 21:48:06 -08:00
Peter Steinberger
a13586619b
test: move integration-heavy suites to e2e lane
2026-03-02 05:33:07 +00:00
Mark L
f1354869bd
Node install: persist gateway token in service env ( #31122 )
...
* Node daemon: persist gateway token env
* changelog: add credits for node gateway token fix
* changelog: credit byungsker for node token service fix
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-03-01 17:35:24 -08:00
Gustavo Madeira Santana
c0ce125512
fix(gateway): shorten manual reinstall/restart delays
...
LaunchAgent plist hardcodes ThrottleInterval to 60 in src/daemon/launchd-plist.ts
That means every restart/install path that terminates the launchd-managed gateway gets delayed by launchd’s one-minute relaunch throttle. The CLI restart path in src/daemon/launchd.ts is doing the expected supervisor actions, but the plist policy makes those actions look hung.
In src/daemon/launchd-plist.ts:
- added LAUNCH_AGENT_THROTTLE_INTERVAL_SECONDS
- reduced the LaunchAgent ThrottleInterval from 60 to 1
2026-02-28 20:46:11 -05:00
Ayaan Zaidi
9d52dcf1f4
fix: stabilize launchd CA env tests ( #27915 ) (thanks @Lukavyi)
2026-02-27 08:11:16 +05:30
clawdbot
6b59c87570
fix: add missing closing brace in proxy env test
2026-02-27 08:11:16 +05:30
Clawborn
d33f24c4e9
Fix NODE_EXTRA_CA_CERTS missing from LaunchAgent environment on macOS
...
launchd services do not inherit the shell environment, so Node's undici/fetch
cannot locate the macOS system CA bundle (/etc/ssl/cert.pem). This causes TLS
verification failures for all HTTPS requests (e.g. Telegram, webhooks) when the
gateway runs as a LaunchAgent, while the same gateway works fine in a terminal.
Add NODE_EXTRA_CA_CERTS defaulting to /etc/ssl/cert.pem on macOS in both
buildServiceEnvironment and buildNodeServiceEnvironment. User-supplied
NODE_EXTRA_CA_CERTS is always respected and takes precedence.
Fixes #22856
Co-authored-by: Clawborn <tianrun.yang103@gmail.com >
2026-02-27 08:11:16 +05:30
Peter Steinberger
5dd264d2fb
refactor(daemon): unify runtime binary detection
2026-02-26 22:39:05 +01:00
Peter Steinberger
262bca9bdd
fix: restore dm command and self-chat auth behavior
2026-02-26 18:49:16 +01:00
Kevin Shenghui
16ccd5a874
fix(gateway): add ThrottleInterval to launchd plist to prevent restart loop
2026-02-26 15:31:04 +00:00
Gustavo Madeira Santana
39d725f4d3
Daemon tests: guard undefined runtime status
2026-02-26 03:24:48 -05:00
Gustavo Madeira Santana
4ebefe647a
fix(daemon): keep launchd KeepAlive while preserving restart hardening
2026-02-26 02:52:00 -05:00
Frank Yang
b975711429
fix(daemon): stabilize LaunchAgent restart and proxy env passthrough ( #27276 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: b08797a99561f3d849443f77fda4fe086c508b49
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-26 02:40:48 -05:00