Maintenance release. Fixes false negatives in pai-anywhere doctor / verify when run under the unprivileged managed account.
Fixed
- Dependency probes read "missing" under the
paiaccount —cmdExistsransh -lc(a login shell), which resetPATHfrom/etc/profile(dropping/usr/sbin,/sbin) and could abort entirely when aprofile.dsnippet used bash syntax under dash, socommand -vnever ran. git/tailscale/ufw/fail2ban/sudo all read as not-installed. Now a plainsh -cover a PATH augmented with the standard admin directories —doctor/verifyreflect reality regardless of the invoking account. - ufw/fail2ban status warned falsely when unprivileged —
ufw statusneeds root andfail2ban-client pingtalks to a root-owned socket, so the probes leaked "ERROR: You need to be root" and misreported a healthy fail2ban as "daemon did not respond". NewrunPrivileged()elevates via passwordlesssudo -nwhen available, else reports a clean "needs root" INFO instead of a false warning.
CI
actions/checkoutbumped v4 → v7 (Node 20 EOL on GitHub runners); pin-bot stays SHA-pinned.
Full diff: v0.2.2...v0.2.3