fabro/lib/crates/fabro-cli/src
Bryan Helmkamp d535edfda4
feat(cli): brew-aware upgrade check and gate
Detect Homebrew-managed installs from the canonicalized executable path
(Cellar/fabro[-nightly]/...) and branch both the background nag and
`fabro upgrade` accordingly.

- Background check fetches the tap's versions.json (raw.githubusercontent)
  for the matching channel instead of GitHub's latest release, so the nag
  tracks what `brew update` can satisfy.
- Cache payload gains an install_source tag; entries from a different
  source (or legacy entries without the field) are ignored, so users who
  switch between fabro/fabro-nightly/tarball don't see stale versions.
- `fabro upgrade` on a brew install refuses to overwrite the
  Homebrew-managed binary and prints `brew upgrade fabro[-nightly]`.
  --dry-run prints the command and exits 0; --version/--prerelease/--force
  are rejected with a clear Homebrew-managed error.
- Manifest/exe-resolve failures on brew installs skip the notice rather
  than falling back to GitHub latest (which would reintroduce the
  tap-lag false positives this change is meant to remove).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 17:46:55 -04:00
..
commands feat(cli): brew-aware upgrade check and gate 2026-04-17 17:46:55 -04:00
shared fix(cli): improve device code login readability with blank line spacing 2026-04-16 07:20:57 -04:00
sleep_inhibitor refactor(async): lint std::process::Command across all targets 2026-04-12 13:35:57 -04:00
args.rs feat(cli): add --prerelease to fabro upgrade 2026-04-16 20:20:14 -04:00
command_context.rs refactor(cli): route global args through settings layer 2026-04-14 12:27:59 -04:00
gh.rs feat(install): let user choose GitHub App owner (personal or org) 2026-04-10 09:32:05 -04:00
landing.rs feat(cli): add fabro docs to landing Set up section 2026-04-17 09:03:40 -04:00
logging.rs fmt 2026-04-11 11:27:46 -04:00
main.rs feat(cli): show curated landing output for bare fabro 2026-04-17 08:59:03 -04:00
manifest_builder.rs refactor(config): move project state under .fabro 2026-04-11 12:55:46 -04:00
server_client.rs chore(lint): fix fabro-cli clippy warnings 2026-04-13 19:45:26 -04:00
server_runs.rs fmt: apply nightly rustfmt after merge 2026-04-11 13:43:30 -04:00
sse.rs refactor(cli): stream run attach over SSE 2026-04-07 12:58:37 -04:00
user_config.rs fix: wrap propagated io errors with anyhow context across prod code 2026-04-17 11:44:38 -04:00