Patch Changes
-
jalth destroy,jalth devices list, and operations gated by the role and ownership checks now make fewer Cloudflare API calls per request — a single Access Groupslistis fetched once on the authenticated request and reused across every consumer in the same request.jalth destroyis also capped at a small fixed number ofgroups.listround-trips regardless of how many devices the saga cleans up.jalth initruns its provisioning steps sequentially instead of in two parallel batches; expect a slightly longer wall-clock for the one-time init, with no change in success criteria or CF resource shape. No CLI commands, flags, output formats, exit codes, or wire contracts changed. (#218) -
jalth init,jalth join,jalth upgrade, andjalth ssh enablenow route through the sharedrunActionwrapper. Three operator-facing effects: (1) failures piped to--output json(e.g.jalth init --output json | jq) no longer risk truncation — these commands setprocess.exitCodeand let Node drain stdout instead of callingprocess.exit; (2)jalth upgradenow emits a drift warning when the CLI binary’s embedded Worker version differs from the deployed Worker version, matching the warning every other authenticated command already shows; (3) tRPC errors thrown byinit.configure,join.register,join.byAuthKey, and thessh enablepath now get hint enrichment viareportErrorwhen a hint is configured for the thrown code. Closes #244. (#311) -
Show clearer conflict messages when
jalth route addcollides with existing routes or device joins collide with registered devices:Route name is already in use. Run "jalth route ls" to inspect routes.,Hostname is already routed. Run "jalth route ls" to inspect routes.,Hostname key collision — retry with a different name.,Device name is already registered, andWARP device is already registered to another device. These paths previously shared ambiguous route or device messages; exit behavior is unchanged. Closes #240. (#258) -
CLI commands that route through
runAction, includingjalth init,jalth join,jalth upgrade, andjalth ssh enable, no longer callprocess.exiton error; they setprocess.exitCodeand let Node drain stdout before exiting. Piped JSON output (e.g.jalth devices --output json | jq,... > file.json) is no longer at risk of truncation on error. Closes #243. (#311) -
jalth ssh enableand device WARP enrollment updates now return specific conflict errors when a concurrent D1 race loses, includingSSH target already configured on this device. Run "jalth ssh disable" first.andWARP device is already registered to another device. Previously these races surfaced as internal errors even though the operator could resolve or retry them. Closes #241. (#259) -
jalth ssh enableon macOS now succeeds when sshd is already loaded. Previously thelaunchctl bootstrapexit-37 (“File exists”) signal was lost behind anResult.tryPromisewrap, so the “already loaded” classifier never matched and every repeat enable on a Mac with Remote Login on failed at the “Ensuring sshd is running” step. Validation failures (sshd -t) also now include the actual stderr lines in the error chain instead of a baresshd -t failed. (#311) -
Updated dependencies [
244f49a,eef5b59,28cbcfc]:- @jalth/contracts@0.4.1