Conversation
🦋 Changeset detectedLatest commit: 8063ec3 The changes in this PR will be included in the next version bump. This PR includes changesets to release 14 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
upgrade command
Merging this PR will not alter performance
Comparing Footnotes
|
7476043 to
124eaeb
Compare
|
@ematipico I believe I've addressed all your concerns here. Thanks for reviewing. Let me know if there are any other concerns. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdds a new Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment Tip CodeRabbit can generate a title for your PR based on the changes.Add |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
crates/biome_flags/src/lib.rs (1)
20-20: Consider printingBIOME_DISTRIBUTIONin the env dump too.You register the variable, but it is not emitted by
Display for BiomeEnv, so debugging distribution-specific upgrade paths is harder than it needs to be.Suggested follow-up patch
impl Display for BiomeEnv { fn fmt(&self, fmt: &mut Formatter) -> std::io::Result<()> { let padding = 35usize; + match self.biome_distribution.value() { + None => { + KeyValuePair::new(self.biome_distribution.name, markup! { <Dim>"unset"</Dim> }) + .with_padding(padding) + .fmt(fmt)?; + } + Some(value) => { + KeyValuePair::new(self.biome_distribution.name, markup! {{DebugDisplay(value)}}) + .with_padding(padding) + .fmt(fmt)?; + } + }; match self.biome_log_path.value() { None => { KeyValuePair::new(self.biome_log_path.name, markup! { <Dim>"unset"</Dim> }) .with_padding(padding) .fmt(fmt)?;Also applies to: 36-39
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_flags/src/lib.rs` at line 20, The Display implementation for BiomeEnv currently omits the BIOME_DISTRIBUTION field, so add the biome_distribution (type BiomeEnvVariable) to the string emitted by Display for BiomeEnv (and the similar display logic around lines 36-39) so the env dump prints BIOME_DISTRIBUTION; locate the BiomeEnv struct (field name biome_distribution) and the impl Display for BiomeEnv and append a formatted entry for biome_distribution (using its Debug/Display formatting) into the output so distribution-specific upgrade paths are visible in logs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.changeset/add-upgrade-command.md:
- Line 2: The changeset for the new `biome upgrade` feature incorrectly lists
the release type as `patch`; update the value for the package key
"@biomejs/biome" in the .changeset/add-upgrade-command.md file from `patch` to
`minor` so the new user-facing command targeting the `next` branch is released
as a minor change.
In `@crates/biome_cli/src/commands/upgrade.rs`:
- Around line 33-40: The match in upgrade.rs that handles InstallSource
currently treats any non-Npm/Homebrew case as InstallSource::Standalone and
calls upgrade_standalone(session); instead, explicitly refuse to self-update
when the install source is unknown or not one of the expected channels: change
the match so Npm returns the existing upgrade_error, Homebrew calls
upgrade_with_homebrew(session), Standalone calls upgrade_standalone(session),
and add a catch-all arm (or handle the InstallSource::Other/Unknown variant)
that returns Err(CliDiagnostic::upgrade_error(...)) with a message instructing
the user to upgrade via their original installer; keep upgrade_with_homebrew and
upgrade_standalone unchanged but ensure the unknown-arm prevents cross-channel
self-update.
- Around line 60-63: Remove the HOMEBREW_NO_AUTO_UPDATE env var so Homebrew can
refresh formula metadata before upgrading: in the Command invocation that
constructs the brew call (Command::new("brew") building the process for
.arg("upgrade").arg(BREW_BINARY_NAME) in upgrade.rs), delete the
.env("HOMEBREW_NO_AUTO_UPDATE", "1") call so the process uses Homebrew's normal
auto-update behavior.
- Around line 8-10: The reqwest blocking Client is built without a timeout which
can hang; update the Client construction to set a finite timeout (e.g.,
Client::builder().timeout(Duration::from_secs(10)).build() ) and import
std::time::Duration (or read a timeout value from config/env) so the
version-check HTTP call cannot block indefinitely; locate the client creation
(calls to reqwest::blocking::Client or Client::builder()) in this module and
replace it with a builder that sets .timeout(...) and propagate/handle any build
errors accordingly.
---
Nitpick comments:
In `@crates/biome_flags/src/lib.rs`:
- Line 20: The Display implementation for BiomeEnv currently omits the
BIOME_DISTRIBUTION field, so add the biome_distribution (type BiomeEnvVariable)
to the string emitted by Display for BiomeEnv (and the similar display logic
around lines 36-39) so the env dump prints BIOME_DISTRIBUTION; locate the
BiomeEnv struct (field name biome_distribution) and the impl Display for
BiomeEnv and append a formatted entry for biome_distribution (using its
Debug/Display formatting) into the output so distribution-specific upgrade paths
are visible in logs.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: c040f36a-f2cf-4438-bfb4-42ffaf893fd4
⛔ Files ignored due to path filters (4)
Cargo.lockis excluded by!**/*.lockand included by**crates/biome_cli/tests/snapshots/main_cases_help/upgrade_help.snapis excluded by!**/*.snapand included by**crates/biome_diagnostics_categories/src/categories.rsis excluded by!**/categories.rsand included by**packages/@biomejs/backend-jsonrpc/src/workspace.tsis excluded by!**/backend-jsonrpc/src/workspace.tsand included by**
📒 Files selected for processing (10)
.changeset/add-upgrade-command.mdCargo.tomlcrates/biome_cli/Cargo.tomlcrates/biome_cli/src/commands/mod.rscrates/biome_cli/src/commands/upgrade.rscrates/biome_cli/src/diagnostics.rscrates/biome_cli/src/lib.rscrates/biome_cli/tests/cases/help.rscrates/biome_flags/src/lib.rspackages/@biomejs/biome/bin/biome
There was a problem hiding this comment.
♻️ Duplicate comments (2)
crates/biome_cli/src/commands/upgrade.rs (2)
62-65:⚠️ Potential issue | 🟠 MajorRemove
HOMEBREW_NO_AUTO_UPDATEto let Homebrew refresh formula metadata.With this environment variable set,
brew upgrade biomeruns against stale formula metadata and won't detect the latest release—defeating the purpose of the command.Suggested fix
let status = Command::new("brew") - .env("HOMEBREW_NO_AUTO_UPDATE", "1") .arg("upgrade") .arg(BREW_BINARY_NAME)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 62 - 65, The call building the Homebrew command in the upgrade flow sets HOMEBREW_NO_AUTO_UPDATE which prevents Homebrew from refreshing formula metadata; remove the .env("HOMEBREW_NO_AUTO_UPDATE", "1") from the Command::new("brew") chain (the block that sets .arg("upgrade").arg(BREW_BINARY_NAME)) so brew can auto-update metadata before running the upgrade.
35-42:⚠️ Potential issue | 🟠 MajorConsider treating unknown installs explicitly rather than defaulting to standalone.
When the binary path doesn't match npm or Homebrew patterns, it falls through to
InstallSource::Standalone. This could inadvertently trigger a GitHub self-update for distro packages, source builds, or other installation methods—potentially overwriting a binary managed by another tool.Safer approach
enum InstallSource { Homebrew, Npm, Standalone, + Unknown, } // In detect_install_source: } else { - InstallSource::Standalone + InstallSource::Unknown } // In match: + InstallSource::Unknown => Err(CliDiagnostic::upgrade_error( + "Could not determine how Biome was installed. Upgrade it with your original installer, or set `BIOME_DISTRIBUTION` explicitly.", + None, + )),Also applies to: 237-238
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 35 - 42, The match on InstallSource currently defaults unknown paths to InstallSource::Standalone which can trigger a self-update inappropriately; update the match in the upgrade command so that unknown or Unrecognized install sources are handled explicitly (e.g., introduce or use an InstallSource::Unknown/Unrecognized variant or pattern and return a CliDiagnostic::upgrade_error or a no-op with a clear message) instead of calling upgrade_standalone(session); change the branches that call upgrade_standalone(session) to only match the explicit Standalone variant and add a new branch that returns an error/diagnostic for unknown installs so distro/source-managed binaries are not overwritten.
🧹 Nitpick comments (2)
crates/biome_cli/src/commands/upgrade.rs (2)
279-291: Fallback inrelease_targetmay produce an invalid asset identifier.If a user runs on an unsupported OS/arch combination, the fallback
format!("{os}-{arch}")(line 289) won't match any GitHub release asset, leading to a confusing download failure. Consider returning aResultor a clearer error.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 279 - 291, The fallback in release_target() returns a guessed "{os}-{arch}" string that may not match any release asset; change release_target() to return Result<String, UpgradeError> (or anyhow::Result) and replace the generic fallback arm (os, arch, _) with an Err that includes the observed os and arch; update callers to propagate or display a clear error message explaining the unsupported OS/arch instead of attempting to download a non-existent asset. Refer to the function release_target() and ensure all call sites that currently expect a String are updated to handle the Result.
243-250: Warn or error on unrecognisedBIOME_DISTRIBUTIONvalues.Currently, an invalid value (e.g. a typo like
"standlone") silently falls through to path-based detection. Users might believe their override is active when it isn't.Suggested approach
fn install_source_from_env() -> Option<InstallSource> { - match env::var_os("BIOME_DISTRIBUTION")?.to_str()? { + let value = env::var_os("BIOME_DISTRIBUTION")?; + let value_str = value.to_str()?; + match value_str { "npm" => Some(InstallSource::Npm), "homebrew" => Some(InstallSource::Homebrew), "standalone" => Some(InstallSource::Standalone), - _ => None, + other => { + // Consider logging a warning or returning an error variant + eprintln!("Warning: Unrecognised BIOME_DISTRIBUTION value '{}', falling back to path detection", other); + None + } } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 243 - 250, install_source_from_env currently silently ignores unrecognised BIOME_DISTRIBUTION values; update it to log a clear warning or return an error when the env var exists but does not match a known InstallSource. Locate the function install_source_from_env and the InstallSource enum and: if env::var_os("BIOME_DISTRIBUTION") is present but the to_str() value doesn’t match "npm"|"homebrew"|"standalone", emit a warning (e.g., via log::warn! or eprintln!) that includes the invalid value and that path-based detection will be used (or change the function to return a Result and propagate an explicit error). Ensure the warning/error message includes the raw BIOME_DISTRIBUTION value so users can see the typo.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@crates/biome_cli/src/commands/upgrade.rs`:
- Around line 62-65: The call building the Homebrew command in the upgrade flow
sets HOMEBREW_NO_AUTO_UPDATE which prevents Homebrew from refreshing formula
metadata; remove the .env("HOMEBREW_NO_AUTO_UPDATE", "1") from the
Command::new("brew") chain (the block that sets
.arg("upgrade").arg(BREW_BINARY_NAME)) so brew can auto-update metadata before
running the upgrade.
- Around line 35-42: The match on InstallSource currently defaults unknown paths
to InstallSource::Standalone which can trigger a self-update inappropriately;
update the match in the upgrade command so that unknown or Unrecognized install
sources are handled explicitly (e.g., introduce or use an
InstallSource::Unknown/Unrecognized variant or pattern and return a
CliDiagnostic::upgrade_error or a no-op with a clear message) instead of calling
upgrade_standalone(session); change the branches that call
upgrade_standalone(session) to only match the explicit Standalone variant and
add a new branch that returns an error/diagnostic for unknown installs so
distro/source-managed binaries are not overwritten.
---
Nitpick comments:
In `@crates/biome_cli/src/commands/upgrade.rs`:
- Around line 279-291: The fallback in release_target() returns a guessed
"{os}-{arch}" string that may not match any release asset; change
release_target() to return Result<String, UpgradeError> (or anyhow::Result) and
replace the generic fallback arm (os, arch, _) with an Err that includes the
observed os and arch; update callers to propagate or display a clear error
message explaining the unsupported OS/arch instead of attempting to download a
non-existent asset. Refer to the function release_target() and ensure all call
sites that currently expect a String are updated to handle the Result.
- Around line 243-250: install_source_from_env currently silently ignores
unrecognised BIOME_DISTRIBUTION values; update it to log a clear warning or
return an error when the env var exists but does not match a known
InstallSource. Locate the function install_source_from_env and the InstallSource
enum and: if env::var_os("BIOME_DISTRIBUTION") is present but the to_str() value
doesn’t match "npm"|"homebrew"|"standalone", emit a warning (e.g., via
log::warn! or eprintln!) that includes the invalid value and that path-based
detection will be used (or change the function to return a Result and propagate
an explicit error). Ensure the warning/error message includes the raw
BIOME_DISTRIBUTION value so users can see the typo.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 88e82e7f-7ae4-4018-8095-90e99b64f86c
📒 Files selected for processing (3)
.changeset/add-upgrade-command.mdcrates/biome_cli/src/commands/upgrade.rscrates/biome_flags/src/lib.rs
🚧 Files skipped from review as they are similar to previous changes (1)
- crates/biome_flags/src/lib.rs
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
crates/biome_cli/src/commands/upgrade.rs (1)
241-249: Consider warning on unrecognisedBIOME_DISTRIBUTIONvalues.If a user sets
BIOME_DISTRIBUTION=standalon(typo), it silently falls through to path-based detection. A warning would help catch misconfiguration.♻️ Suggested approach
fn install_source_from_env() -> Option<InstallSource> { - match env::var_os("BIOME_DISTRIBUTION")?.to_str()? { - "npm" => Some(InstallSource::Npm), - "homebrew" => Some(InstallSource::Homebrew), - "standalone" => Some(InstallSource::Standalone), - _ => None, + let value = env::var_os("BIOME_DISTRIBUTION")?; + let value_str = value.to_str()?; + match value_str { + "npm" => Some(InstallSource::Npm), + "homebrew" => Some(InstallSource::Homebrew), + "standalone" => Some(InstallSource::Standalone), + other => { + eprintln!("Warning: unrecognised BIOME_DISTRIBUTION value '{other}', falling back to path detection"); + None + } } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 241 - 249, The function install_source_from_env currently ignores unknown BIOME_DISTRIBUTION values; change it to detect when the env var is present but not one of the recognized strings and emit a warning (including the raw value) before returning None. Specifically, in install_source_from_env, capture env::var_os("BIOME_DISTRIBUTION") into an Option, attempt to convert to &str, and if conversion fails or the value doesn't match "npm"/"homebrew"/"standalone" call the project's logging facility (or eprintln!) to warn that the BIOME_DISTRIBUTION value is unrecognized (include the bad value) and then fall through returning None; keep InstallSource::Npm / Homebrew / Standalone branches unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@crates/biome_cli/src/commands/upgrade.rs`:
- Around line 278-290: The release_target() function currently returns a
best-effort String and falls back to formats like "freebsd-x86_64" which won't
match release assets; change release_target() to return Result<String, Error>
(or a suitable custom error) and explicitly return Err for unsupported OS/ARCH
combinations with a clear message, e.g., "unsupported platform: <os>-<arch>";
update every caller of release_target (e.g., code paths invoking
release_target() in the upgrade flow) to propagate or handle the Result (use ?
to propagate where appropriate) so callers can surface a clear error instead of
letting self_update fail with a download error.
---
Nitpick comments:
In `@crates/biome_cli/src/commands/upgrade.rs`:
- Around line 241-249: The function install_source_from_env currently ignores
unknown BIOME_DISTRIBUTION values; change it to detect when the env var is
present but not one of the recognized strings and emit a warning (including the
raw value) before returning None. Specifically, in install_source_from_env,
capture env::var_os("BIOME_DISTRIBUTION") into an Option, attempt to convert to
&str, and if conversion fails or the value doesn't match
"npm"/"homebrew"/"standalone" call the project's logging facility (or eprintln!)
to warn that the BIOME_DISTRIBUTION value is unrecognized (include the bad
value) and then fall through returning None; keep InstallSource::Npm / Homebrew
/ Standalone branches unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 2139f53c-bfee-49a0-9f6d-2e590d8a6edb
📒 Files selected for processing (1)
crates/biome_cli/src/commands/upgrade.rs
There was a problem hiding this comment.
♻️ Duplicate comments (2)
crates/biome_cli/src/commands/upgrade.rs (2)
70-71:⚠️ Potential issue | 🟠 Major
HOMEBREW_NO_AUTO_UPDATE=1prevents detection of latest release.This environment variable was flagged in a prior review but appears unresolved in the current code. With it set,
brew upgraderuns against stale formula metadata and may not see the newest version—rather defeating the purpose of an upgrade command.Suggested fix
let status = Command::new("brew") - .env("HOMEBREW_NO_AUTO_UPDATE", "1") .arg("upgrade")🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 70 - 71, The brew invocation currently sets HOMEBREW_NO_AUTO_UPDATE=1 which prevents Homebrew from refreshing formula metadata and can cause upgrades to miss new releases; locate the Command::new("brew") call in upgrade.rs (the block that builds the status variable) and remove the env("HOMEBREW_NO_AUTO_UPDATE", "1") setting so brew can perform its normal auto-update behavior before running upgrade.
292-304:⚠️ Potential issue | 🟡 MinorUnsupported platforms will cause confusing download errors.
The catch-all arm produces identifiers like
"freebsd-x86_64"that won't match any GitHub release asset.self_updatewill then fail with a cryptic download error rather than a clear "platform not supported" message.Suggested approach
-fn release_target() -> String { +fn release_target() -> Result<String, CliDiagnostic> { match (env::consts::OS, env::consts::ARCH, is_musl()) { - ("macos", "x86_64", _) => String::from("darwin-x64"), + ("macos", "x86_64", _) => Ok(String::from("darwin-x64")), // ... other arms similarly wrapped in Ok(...) - (os, arch, _) => format!("{os}-{arch}"), + (os, arch, _) => Err(CliDiagnostic::upgrade_error( + format!("Standalone upgrade is not supported on {os}-{arch}."), + None, + )), } }Callers (
upgrade_standalone,release_asset_identifier) would need to propagate theResult.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_cli/src/commands/upgrade.rs` around lines 292 - 304, The release_target() function currently returns a String for any platform which yields unsupported identifiers (e.g., "freebsd-x86_64") and causes cryptic download errors; change release_target() to return Result<String, UpgradeError> (or Option<String>) and have it return an Err(UpgradeError::UnsupportedPlatform{os,arch}) for the catch-all branch instead of formatting an identifier, then update callers upgrade_standalone and release_asset_identifier to propagate the Result (using ? or map_err) so they can surface a clear "platform not supported" error to users; ensure you add or reuse an UpgradeError enum variant and update function signatures and any tests accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@crates/biome_cli/src/commands/upgrade.rs`:
- Around line 70-71: The brew invocation currently sets
HOMEBREW_NO_AUTO_UPDATE=1 which prevents Homebrew from refreshing formula
metadata and can cause upgrades to miss new releases; locate the
Command::new("brew") call in upgrade.rs (the block that builds the status
variable) and remove the env("HOMEBREW_NO_AUTO_UPDATE", "1") setting so brew can
perform its normal auto-update behavior before running upgrade.
- Around line 292-304: The release_target() function currently returns a String
for any platform which yields unsupported identifiers (e.g., "freebsd-x86_64")
and causes cryptic download errors; change release_target() to return
Result<String, UpgradeError> (or Option<String>) and have it return an
Err(UpgradeError::UnsupportedPlatform{os,arch}) for the catch-all branch instead
of formatting an identifier, then update callers upgrade_standalone and
release_asset_identifier to propagate the Result (using ? or map_err) so they
can surface a clear "platform not supported" error to users; ensure you add or
reuse an UpgradeError enum variant and update function signatures and any tests
accordingly.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 0cc0c852-36f8-4fd3-8da9-7c2f1e4b2d81
⛔ Files ignored due to path filters (7)
crates/biome_cli/tests/snapshots/main_commands_rage/rage_ok.snapis excluded by!**/*.snapand included by**crates/biome_cli/tests/snapshots/main_commands_rage/with_configuration.snapis excluded by!**/*.snapand included by**crates/biome_cli/tests/snapshots/main_commands_rage/with_formatter_configuration.snapis excluded by!**/*.snapand included by**crates/biome_cli/tests/snapshots/main_commands_rage/with_jsonc_configuration.snapis excluded by!**/*.snapand included by**crates/biome_cli/tests/snapshots/main_commands_rage/with_linter_configuration.snapis excluded by!**/*.snapand included by**crates/biome_cli/tests/snapshots/main_commands_rage/with_malformed_configuration.snapis excluded by!**/*.snapand included by**crates/biome_cli/tests/snapshots/main_commands_rage/with_no_configuration.snapis excluded by!**/*.snapand included by**
📒 Files selected for processing (1)
crates/biome_cli/src/commands/upgrade.rs
|
For new features, we usually want at least docs PR ready before merging. In past we shipped features without documentation because we forgot, so now we're a bit more strict |
This comment was marked as resolved.
This comment was marked as resolved.
| session.app.console.log(markup! { | ||
| <Info> | ||
| "Your editor may still be using the previous Biome version. Reload it to pick up the updated binary." | ||
| </Info> |
There was a problem hiding this comment.
Added this to tell the user to reload his editor instead of force killing the daemon. This matches what happens when upgrading biome with homebrew AFAICT
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
b8ca9a2 to
8063ec3
Compare
Note
AI assistance was used to implement this feature
Summary
This PR implements the
biome upgradecommand, which allows users to upgrade Biome to the latest version, while handling the following cases gracefully:brew upgrade biomewhen Biome was installed with HomebrewWhy
Upgrading Biome with a package manager is pretty straightforward. However, it's a bit more involved for users that have installed Biome manually. This command aims to streamline that process.
Pending questions
Test Plan
Added a bunch of tests, and confirmed it works on the following systems/strategies
Tip
Help me test on Linux and Windows, if you can.
Build with
BIOME_VERSION=2.4.6just to trigger the upgradeDocs
I plan to add docs to the website at a later time