fix cmsec dmotd --json blocking SSH login in 140.00beta01 The dmotd login banner's cmsec_checks() called cmsec.sh --json to capture JSON for the Pushover loop. That call runs with DMOTD_MODE=0, which bypasses the stale-tolerant async cache path, so on a TTL-expired (or cold) cache it ran all 5 kernel CVE checks synchronously inline (~54s measured), blocking SSH login on the first login after the 24h cache TTL expired. Changes: - cmsec.sh: gate the DMOTD display branch in do_run()/do_check() on JSON_OUT != 1, so '--dmotd --json' emits JSON via the stale-tolerant DMOTD cache path (serves stale instantly + background refresh) instead of running the checks synchronously. - dmotd.sh and check-for-updates.sh: switch the JSON-capture calls from --json to --dmotd --json so they ride the cached/stale path. - cmsec.sh: detach the background cache refresh via setsid (re-exec of the public 'check --no-cache' path) so it survives an immediate logout and reliably warms the cache; fall back to the in-shell fork when setsid is unavailable. - dmotd.sh: bound the per-login git fetch with 'timeout 15' so an unreachable git remote cannot hang login. Continue reading... 140.00beta01 branch Branch: https://github.com/centminmod/centminmod/tree/140.00beta01 Commit History: https://github.com/centminmod/centminmod/commits/140.00beta01