feat(cli): non-blocking 'update available' notice so users know to upgrade
The CLI ships as a GitHub Release binary with a manual `chrome-use upgrade`, but nothing told users a newer version existed — so releases didn't reach them. Add a lightweight update check: each run reads a cached latest-version and, if it's newer than the running binary, prints a one-line hint to STDERR (never stdout, so --json stays clean): "⚠ chrome-use X.Y.Z is available — run chrome-use upgrade". The cache is refreshed at most once a day by a DETACHED `__update-check` worker (curl → GitHub latest release), so the current command never waits on the network. Skipped for meta commands (upgrade/install/doctor/ __*/--version/--help), in CI, in daemon mode, and via CHROME_USE_NO_UPDATE_CHECK / AGENT_BROWSER_NO_UPDATE_CHECK. Verified: nag shows for a newer cached version, suppressed by the opt-out env + on meta commands + when up-to-date; the detached worker writes the real latest tag from the GitHub API.
This commit is contained in:
@@ -586,6 +586,17 @@ fn main() {
|
||||
return;
|
||||
}
|
||||
|
||||
// Hidden update-check worker, spawned detached by maybe_notify_update() to
|
||||
// refresh the cached latest version without blocking a real command.
|
||||
if env::args().nth(1).as_deref() == Some("__update-check") {
|
||||
upgrade::run_update_check();
|
||||
return;
|
||||
}
|
||||
|
||||
// Non-blocking "update available" hint (stderr only; self-skips meta
|
||||
// commands, daemon mode, CI, and the opt-out env vars).
|
||||
upgrade::maybe_notify_update();
|
||||
|
||||
// Native daemon mode: when AGENT_BROWSER_DAEMON is set, run as the daemon process
|
||||
if env::var("AGENT_BROWSER_DAEMON").is_ok() {
|
||||
// Ignore SIGPIPE so the daemon isn't killed when the parent drops
|
||||
|
||||
Reference in New Issue
Block a user