Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package topgrade for openSUSE:Factory checked in at 2026-10-21 20:57:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/topgrade (Old) and /work/SRC/openSUSE:Factory/.topgrade.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "topgrade" Wed Oct 21 20:57:26 2026 rev:37 rq:1386659 version:17.14.1 Changes: -------- --- /work/SRC/openSUSE:Factory/topgrade/topgrade.changes 2026-10-17 21:26:03.187509006 +0200 +++ /work/SRC/openSUSE:Factory/.topgrade.new.2252680/topgrade.changes 2026-10-21 20:59:25.941875239 +0200 @@ -1,0 +2,22 @@ +Wed Oct 21 00:32:21 UTC 2026 - Gerald Chen <[email protected]> + +- Update to version 17.14.1: + * chore: release v17.14.1 (#2442) + * fix(opencode): check for plugin updates before updating (#2447) + * chore(deps): update swatinem/rust-cache action to v2.9.3 (#2444) + * chore(deps): update vmactions/openbsd-vm action to v1.4.9 (#2445) + * chore(deps): lock file maintenance (#2446) + * chore(deps): update release-plz/action action to v0.5.143 (#2443) + * chore(deps): update github/codeql-action action to v4.39.0 (#2417) + * chore(deps): update dtolnay/rust-toolchain digest to 683b588 (#2420) + * docs(readme): add Terra as an official Fedora installation method (#2432) + * chore: release v17.14.0 (#2435) + * fix(opencode): support opencode v1 version format (#2428) + * fix(locale): correct French plural in "Finding available software" (#2436) + * feat(step): add pre-commit gc step (#2437) + * feat(step): add GitHub CLI skills step (#2438) + * chore(deps): lock file maintenance (#2441) + * feat(deno): add a no_delta option to pass --no-delta to deno upgrade (#2440) + * feat(os): add aerynOS support (#2433) + +------------------------------------------------------------------- Old: ---- topgrade-17.13.1.tar.zst New: ---- topgrade-17.14.1.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ topgrade.spec ++++++ --- /var/tmp/diff_new_pack.vHp6Y1/_old 2026-10-21 20:59:28.047963542 +0200 +++ /var/tmp/diff_new_pack.vHp6Y1/_new 2026-10-21 20:59:28.049963626 +0200 @@ -17,7 +17,7 @@ Name: topgrade -Version: 17.13.1 +Version: 17.14.1 Release: 0 Summary: Upgrade all the things License: GPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.vHp6Y1/_old 2026-10-21 20:59:28.090965345 +0200 +++ /var/tmp/diff_new_pack.vHp6Y1/_new 2026-10-21 20:59:28.094965513 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/topgrade-rs/topgrade.git</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> - <param name="revision">v17.13.1</param> + <param name="revision">v17.14.1</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.vHp6Y1/_old 2026-10-21 20:59:28.122966687 +0200 +++ /var/tmp/diff_new_pack.vHp6Y1/_new 2026-10-21 20:59:28.127966897 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/topgrade-rs/topgrade.git</param> - <param name="changesrevision">3787718c28a06f54b782b94280843fe95308baa9</param></service><service name="tar_scm"> + <param name="changesrevision">c082f174454b08d3621b9a7a5e9addb3b0e6dd7a</param></service><service name="tar_scm"> <param name="url">https://ghproxy.net/https://github.com/topgrade-rs/topgrade.git</param> <param name="changesrevision">ef0a0d69bbe0cb08d6c4930ee18b734e03c215fb</param></service></servicedata> (No newline at EOF) ++++++ topgrade-17.13.1.tar.zst -> topgrade-17.14.1.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/.github/workflows/check_config_creation_if_not_exists.yml new/topgrade-17.14.1/.github/workflows/check_config_creation_if_not_exists.yml --- old/topgrade-17.13.1/.github/workflows/check_config_creation_if_not_exists.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/.github/workflows/check_config_creation_if_not_exists.yml 2026-10-20 21:38:06.000000000 +0200 @@ -18,7 +18,7 @@ with: persist-credentials: false - - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 + - uses: Swatinem/rust-cache@d1527c8f67ef9af357290475d4af4b0fab8f12e0 # v2.9.3 - run: | CONFIG_PATH=~/.config/topgrade.toml; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/.github/workflows/check_security_vulnerability.yml new/topgrade-17.14.1/.github/workflows/check_security_vulnerability.yml --- old/topgrade-17.13.1/.github/workflows/check_security_vulnerability.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/.github/workflows/check_security_vulnerability.yml 2026-10-20 21:38:06.000000000 +0200 @@ -32,6 +32,6 @@ uses: microsoft/DevSkim-Action@4b5047945a44163b94642a1cecc0d93a3f428cc6 # v1.0.16 - name: Upload DevSkim scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3 + uses: github/codeql-action/upload-sarif@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4.39.0 with: sarif_file: devskim-results.sarif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/.github/workflows/ci.yml new/topgrade-17.14.1/.github/workflows/ci.yml --- old/topgrade-17.13.1/.github/workflows/ci.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/.github/workflows/ci.yml 2026-10-20 21:38:06.000000000 +0200 @@ -128,7 +128,7 @@ with: persist-credentials: false - - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 + - uses: Swatinem/rust-cache@d1527c8f67ef9af357290475d4af4b0fab8f12e0 # v2.9.3 with: key: ${{ matrix.target }} @@ -189,7 +189,7 @@ with: persist-credentials: false - - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 + - uses: Swatinem/rust-cache@d1527c8f67ef9af357290475d4af4b0fab8f12e0 # v2.9.3 with: key: ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/.github/workflows/create_release_assets.yml new/topgrade-17.14.1/.github/workflows/create_release_assets.yml --- old/topgrade-17.13.1/.github/workflows/create_release_assets.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/.github/workflows/create_release_assets.yml 2026-10-20 21:38:06.000000000 +0200 @@ -307,7 +307,7 @@ persist-credentials: false - name: Start OpenBSD VM - uses: vmactions/openbsd-vm@5f7b2c933b8846a138361d6843c52af4bef5d945 # v1.4.8 + uses: vmactions/openbsd-vm@f1ca8bc8ecc5b6ef7218e5b914836e067e1546d3 # v1.4.9 with: arch: x86_64 sync: nfs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/.github/workflows/release-plz.yml new/topgrade-17.14.1/.github/workflows/release-plz.yml --- old/topgrade-17.13.1/.github/workflows/release-plz.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/.github/workflows/release-plz.yml 2026-10-20 21:38:06.000000000 +0200 @@ -23,12 +23,12 @@ fetch-depth: 0 persist-credentials: false - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # master + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # master with: toolchain: stable - name: Run release-plz id: release-plz - uses: release-plz/action@8921286633dfa0c4020f7f30bd1c14fe19cbb10e # v0.5.142 + uses: release-plz/action@6caa8d34f74d82b0dc76a18edd1cc3d6801c9baf # v0.5.143 with: command: release env: @@ -62,11 +62,11 @@ fetch-depth: 0 persist-credentials: false - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # master + uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # master with: toolchain: stable - name: Run release-plz - uses: release-plz/action@8921286633dfa0c4020f7f30bd1c14fe19cbb10e # v0.5.142 + uses: release-plz/action@6caa8d34f74d82b0dc76a18edd1cc3d6801c9baf # v0.5.143 with: command: release-pr env: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/.github/workflows/scorecards.yml new/topgrade-17.14.1/.github/workflows/scorecards.yml --- old/topgrade-17.13.1/.github/workflows/scorecards.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/.github/workflows/scorecards.yml 2026-10-20 21:38:06.000000000 +0200 @@ -71,6 +71,6 @@ # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3 + uses: github/codeql-action/upload-sarif@6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee # v4.39.0 with: sarif_file: results.sarif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/CHANGELOG.md new/topgrade-17.14.1/CHANGELOG.md --- old/topgrade-17.13.1/CHANGELOG.md 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/CHANGELOG.md 2026-10-20 21:38:06.000000000 +0200 @@ -7,6 +7,26 @@ ## [Unreleased] +## [17.14.1](https://github.com/topgrade-rs/topgrade/compare/v17.14.0...v17.14.1) - 2026-10-20 + +### Security +- Includes updated versions of `rustls-webpki` and `webpki-roots`/`webpki-root-certs`, which revoke the recently compromised eMudhra CA certificates + +### Fixed +- *(opencode)* check for plugin updates before updating ([#2447](https://github.com/topgrade-rs/topgrade/pull/2447)) + +## [17.14.0](https://github.com/topgrade-rs/topgrade/compare/v17.13.1...v17.14.0) - 2026-10-19 + +### Added +- *(step)* add pre-commit gc step ([#2437](https://github.com/topgrade-rs/topgrade/pull/2437)) +- *(step)* add GitHub CLI skills step ([#2438](https://github.com/topgrade-rs/topgrade/pull/2438)) +- *(deno)* add a no_delta option to pass --no-delta to deno upgrade ([#2440](https://github.com/topgrade-rs/topgrade/pull/2440)) +- *(os)* add aerynOS support ([#2433](https://github.com/topgrade-rs/topgrade/pull/2433)) + +### Fixed +- *(opencode)* support opencode v1 version format ([#2428](https://github.com/topgrade-rs/topgrade/pull/2428)) +- *(locale)* correct French plural in "Finding available software" ([#2436](https://github.com/topgrade-rs/topgrade/pull/2436)) + ## [17.13.1](https://github.com/topgrade-rs/topgrade/compare/v17.13.0...v17.13.1) - 2026-10-16 Update dependencies to fix AUR build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/Cargo.lock new/topgrade-17.14.1/Cargo.lock --- old/topgrade-17.13.1/Cargo.lock 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/Cargo.lock 2026-10-20 21:38:06.000000000 +0200 @@ -50,9 +50,9 @@ [[package]] name = "annotate-snippets" -version = "0.12.16" +version = "0.12.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f211a51805bc641f3ad5b7664c77d2547af685cc33b4cd8d31964027a46f13f1" +checksum = "b2a5b0a5ab8561c603f16c3b78c24a386b1f70e7fc1b1b1e8c15738828e4a176" dependencies = [ "anstyle", "memchr", @@ -120,9 +120,9 @@ [[package]] name = "arc-swap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" +checksum = "380962b3d93b99642e50b9febf72c071e97e8b32d86eae9cf4ef582bb960ae6e" dependencies = [ "rustversion", ] @@ -412,9 +412,9 @@ [[package]] name = "cc" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6651c9ed80effdc7db0ff72512157f901af5e3549e341e24b1dd4887d836d838" +checksum = "877bf67ac8e52449eb2f9e98a344ea163beb70dd1f9eebe3cc5357dcfeaee4df" dependencies = [ "find-msvc-tools", "jobserver", @@ -707,9 +707,9 @@ [[package]] name = "crc32fast" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" +checksum = "0ba106e844045ddc02c20768ac4b0b7cb45f2cc2ecbd833ac9f5dacb183c2055" dependencies = [ "cfg-if", ] @@ -1101,9 +1101,9 @@ [[package]] name = "find-msvc-tools" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" +checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48" [[package]] name = "flate2" @@ -1133,9 +1133,9 @@ [[package]] name = "freedesktop-desktop-entry" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cfa09933e03f1ced380ad639822d65cb59a1914217da6c72aa8db3563e94214" +checksum = "42a69ad6111a2b572cb41e0f3542d546386e841013cee7c45d705b61a15a87dd" dependencies = [ "bstr", "log", @@ -1819,9 +1819,9 @@ [[package]] name = "libc" -version = "0.2.190" +version = "0.2.191" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78" +checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a" [[package]] name = "libredox" @@ -2752,9 +2752,9 @@ [[package]] name = "rustls-webpki" -version = "0.103.15" +version = "0.103.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" +checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" dependencies = [ "aws-lc-rs", "ring", @@ -3378,9 +3378,9 @@ [[package]] name = "tokio" -version = "1.53.3" +version = "1.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce3335fa71841cda333a58d7615b03901380ecf09d59b3296d21f8bbac0dde4e" +checksum = "a0c168a474b95bfecfe908a65d4bdffc523144b649a74c09c286afb35d53e0bc" dependencies = [ "bytes", "libc", @@ -3509,7 +3509,7 @@ [[package]] name = "topgrade" -version = "17.13.1" +version = "17.14.1" dependencies = [ "chrono", "clap", @@ -3767,9 +3767,9 @@ [[package]] name = "ureq-proto" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86fd172ccca569e458f61b6bdd6220965a9ef36e672a6852953b51a0e1583be" +checksum = "841583fc36089d7d59419568ae157f43a5a03a2e5a81ba87c77d1596ef46e922" dependencies = [ "base64 0.23.1", "http", @@ -3949,18 +3949,18 @@ [[package]] name = "webpki-root-certs" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b" +checksum = "58ec80e73fd8baf57bf0d9615554c75348bda990d6d5bbeab964dd068319fecb" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" +checksum = "1c1c8e20c8a38fc7d65abfe74eb7280e4aa667e8eec8bc84996d2874810748d9" dependencies = [ "rustls-pki-types", ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/Cargo.toml new/topgrade-17.14.1/Cargo.toml --- old/topgrade-17.13.1/Cargo.toml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/Cargo.toml 2026-10-20 21:38:06.000000000 +0200 @@ -6,7 +6,7 @@ license = "GPL-3.0-or-later" repository = "https://github.com/topgrade-rs/topgrade" rust-version = "1.88.0" -version = "17.13.1" +version = "17.14.1" exclude = ["doc/screenshot.gif"] edition = "2024" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/README.md new/topgrade-17.14.1/README.md --- old/topgrade-17.13.1/README.md 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/README.md 2026-10-20 21:38:06.000000000 +0200 @@ -41,6 +41,9 @@ - macOS or Linux ([Homebrew](https://brew.sh/)): [`brew install topgrade`](https://formulae.brew.sh/formula/topgrade) - Fedora/RHEL/AlmaLinux/CentOS-Stream ([Copr](https://copr.fedorainfracloud.org/)): [ `sudo dnf copr enable lilay/topgrade && sudo dnf install topgrade`](https://copr.fedorainfracloud.org/coprs/lilay/topgrade/) +- Fedora ([Terra](https://terrapkg.com/)): Install [Terra](https://terrapkg.com/), then [`sudo dnf install topgrade`](https://github.com/terrapkg/packages/blob/frawhide/anda/tools/topgrade/rust-topgrade.spec) + - Ultramarine: [`sudo dnf install topgrade`](https://github.com/terrapkg/packages/blob/frawhide/anda/tools/topgrade/rust-topgrade.spec) + - Nobara: [`sudo dnf install topgrade`](https://github.com/terrapkg/packages/blob/frawhide/anda/tools/topgrade/rust-topgrade.spec) ### Community-maintained diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/config.example.toml new/topgrade-17.14.1/config.example.toml --- old/topgrade-17.13.1/config.example.toml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/config.example.toml 2026-10-20 21:38:06.000000000 +0200 @@ -383,6 +383,10 @@ # Upgrade deno executable to the given version. # version = "stable" +# Pass `--no-delta` to `deno upgrade`, so it downloads the full binary instead of +# a delta patch (useful on machines with little memory). +# no_delta = true + [viteplus] # Use sudo if the Vite+ directory isn't owned by the current user diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/locales/app.yml new/topgrade-17.14.1/locales/app.yml --- old/topgrade-17.13.1/locales/app.yml 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/locales/app.yml 2026-10-20 21:38:06.000000000 +0200 @@ -343,7 +343,7 @@ en: "Finding available software" lt: "Ieškoma prieinamos programinės įrangos" es: "Buscando software disponible" - fr: "Recherche de logiciels disponible" + fr: "Recherche de logiciels disponibles" zh_CN: "正在寻找可用的软件" zh_TW: "正在尋找可用的軟體" de: "Suche nach verfügbarer Software" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/src/config.rs new/topgrade-17.14.1/src/config.rs --- old/topgrade-17.13.1/src/config.rs 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/src/config.rs 2026-10-20 21:38:06.000000000 +0200 @@ -177,6 +177,7 @@ #[serde(deny_unknown_fields)] pub struct Deno { version: Option<String>, + no_delta: Option<bool>, } #[derive(Deserialize, Default, Debug, Merge)] @@ -2059,6 +2060,14 @@ self.config_file.deno.as_ref().and_then(|deno| deno.version.as_deref()) } + pub fn deno_no_delta(&self) -> bool { + self.config_file + .deno + .as_ref() + .and_then(|deno| deno.no_delta) + .unwrap_or(false) + } + #[cfg(target_os = "linux")] pub fn firmware_upgrade(&self) -> bool { self.config_file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/src/step.rs new/topgrade-17.14.1/src/step.rs --- old/topgrade-17.13.1/src/step.rs 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/src/step.rs 2026-10-20 21:38:06.000000000 +0200 @@ -76,6 +76,7 @@ Ghcup, GitRepos, GithubCliExtensions, + GithubCliSkills, GnomeShellExtensions, Go, Guix, @@ -147,6 +148,7 @@ Pnpm, Poetry, Powershell, + PreCommitGc, Protonplus, Protonup, Pyenv, @@ -386,6 +388,7 @@ GithubCliExtensions => runner.execute(*self, "GitHub CLI Extensions", || { generic::run_ghcli_extensions_upgrade(ctx) })?, + GithubCliSkills => runner.execute(*self, "GitHub CLI Skills", || generic::run_ghcli_skills_upgrade(ctx))?, GnomeShellExtensions => { #[cfg(all(unix, not(any(target_os = "macos", target_os = "android"))))] @@ -568,6 +571,7 @@ Pnpm => runner.execute(*self, "pnpm", || node::run_pnpm_upgrade(ctx))?, Poetry => runner.execute(*self, "Poetry", || generic::run_poetry(ctx))?, Powershell => runner.execute(*self, "PowerShell Modules Update", || generic::run_powershell(ctx))?, + PreCommitGc => runner.execute(*self, "pre-commit gc", || generic::run_pre_commit_gc(ctx))?, Protonplus => { #[cfg(target_os = "linux")] @@ -938,6 +942,7 @@ Raco, Spicetify, GithubCliExtensions, + GithubCliSkills, Bob, Certbot, GitRepos, @@ -951,6 +956,7 @@ PlatformioCore, Lensfun, Poetry, + PreCommitGc, Uv, Zvm, Aqua, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/src/steps/generic.rs new/topgrade-17.14.1/src/steps/generic.rs --- old/topgrade-17.13.1/src/steps/generic.rs 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/src/steps/generic.rs 2026-10-20 21:38:06.000000000 +0200 @@ -1803,6 +1803,24 @@ .status_checked() } +pub fn run_ghcli_skills_upgrade(ctx: &ExecutionContext) -> Result<()> { + let gh = require("gh")?; + + // `gh skill` only exists in recent versions of the GitHub CLI. + let result = ctx + .execute(&gh) + .always() + .args(["skill", "--help"]) + .output_checked_utf8(); + if result.is_err() { + debug!("GH skill result {:?}", result); + return Err(SkipStep("GitHub CLI has no skill command".to_string()).into()); + } + + print_separator("GitHub CLI Skills"); + ctx.execute(&gh).args(["skill", "update", "--all"]).status_checked() +} + pub fn update_julia_packages(ctx: &ExecutionContext) -> Result<()> { let julia = require("julia")?; @@ -1958,6 +1976,18 @@ } } +pub fn run_pre_commit_gc(ctx: &ExecutionContext) -> Result<()> { + let pre_commit = require("pre-commit")?; + + if !ctx.config().cleanup() { + return Err(SkipStep("Cleanup is disabled".to_string()).into()); + } + + print_separator("pre-commit gc"); + + ctx.execute(pre_commit).arg("gc").status_checked() +} + pub fn run_poetry(ctx: &ExecutionContext) -> Result<()> { let poetry = require("poetry")?; @@ -2710,15 +2740,15 @@ .is_ok_and(|p| p.is_descendant_of(&script_install_path)); let version_output = ctx.execute(&opencode).always().arg("-v").output_checked_utf8()?; - // Output will be something like: "opencode v2.X.Y\n" - let version_string = version_output.stdout.split_whitespace().nth(1).ok_or_else(|| { - eyre!(output_changed_message!( - "opencode -v", - "Expected version after 'opencode '" - )) - })?; - let version = Version::parse(version_string.trim_start_matches('v')) - .wrap_err_with(|| output_changed_message!("opencode -v", "Invalid version"))?; + // Output will be something like: "opencode v2.X.Y\n" or "1.X.Y" + let mut it = version_output.stdout.split_whitespace(); + let version = Version::parse(match (it.next(), it.next()) { + (_, Some(version_string)) => version_string.trim_start_matches("v"), + (Some(version_string), _) => version_string, + (None, _) => return Err(eyre!(output_changed_message!("opencode -v", "No version found"))), + }) + .wrap_err_with(|| output_changed_message!("opencode -v", "Invalid version"))?; + let can_update_plugins = version >= Version::new(2, 0, 0); if !can_self_upgrade { @@ -2737,6 +2767,7 @@ ctx.execute(&opencode).arg("upgrade").status_checked()?; } if can_update_plugins { + ctx.execute(&opencode).args(["plugin", "check"]).status_checked()?; ctx.execute(&opencode).args(["plugin", "update"]).status_checked()?; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/src/steps/node.rs new/topgrade-17.14.1/src/steps/node.rs --- old/topgrade-17.13.1/src/steps/node.rs 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/src/steps/node.rs 2026-10-20 21:38:06.000000000 +0200 @@ -234,6 +234,10 @@ } } + if ctx.config().deno_no_delta() { + args.push("--no-delta"); + } + ctx.execute(&self.command).arg("upgrade").args(args).status_checked()?; Ok(()) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/src/steps/os/linux.rs new/topgrade-17.14.1/src/steps/os/linux.rs --- old/topgrade-17.13.1/src/steps/os/linux.rs 2026-10-16 20:48:20.000000000 +0200 +++ new/topgrade-17.14.1/src/steps/os/linux.rs 2026-10-20 21:38:06.000000000 +0200 @@ -71,6 +71,7 @@ pub enum Distribution { Alpine, AOSC, + AerynOS, Wolfi, Arch, Bedrock, @@ -108,6 +109,7 @@ Ok(match id { Some("alpine") => Distribution::Alpine, Some("aosc") => Distribution::AOSC, + Some("aerynos") => Distribution::AerynOS, Some("chimera") => Distribution::Chimera, Some("wolfi") => Distribution::Wolfi, Some("centos") | Some("rhel") | Some("ol") => Distribution::CentOS, @@ -214,6 +216,7 @@ Distribution::Nobara => upgrade_nobara(ctx), Distribution::NILRT => upgrade_nilrt(ctx), Distribution::AOSC => upgrade_aosc(ctx), + Distribution::AerynOS => upgrade_aerynos(ctx), } } @@ -256,6 +259,16 @@ .status_checked() } +fn upgrade_aerynos(ctx: &ExecutionContext) -> Result<()> { + let moss = require("moss")?; + let sudo = ctx.require_sudo()?; + + sudo.execute(ctx, &moss)? + .args(["sync", "--update"]) + .arg_if(ctx.config().yes(Step::System), "-y") + .status_checked() +} + fn upgrade_alpine_linux(ctx: &ExecutionContext) -> Result<()> { let apk = require("apk")?; let sudo = ctx.require_sudo()?; @@ -1340,6 +1353,11 @@ } #[test] + fn test_aerynos() { + test_template(include_str!("os_release/aerynos"), Distribution::AerynOS); + } + + #[test] fn test_centos() { test_template(include_str!("os_release/centos"), Distribution::CentOS); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-17.13.1/src/steps/os/os_release/aerynos new/topgrade-17.14.1/src/steps/os/os_release/aerynos --- old/topgrade-17.13.1/src/steps/os/os_release/aerynos 1970-01-01 01:00:00.000000000 +0100 +++ new/topgrade-17.14.1/src/steps/os/os_release/aerynos 2026-10-20 21:38:06.000000000 +0200 @@ -0,0 +1,11 @@ +NAME="AerynOS" +ID="aerynos" +VERSION_ID="2026.08" +VERSION="2026.08" +PRETTY_NAME="AerynOS 2026.08" +ID_LIKE="linux" +HOME_URL="https://aerynos.com" +DOCUMENTATION_URL="https://aerynos.dev/" +SUPPORT_URL="https://github.com/orgs/AerynOS/discussions" +BUG_REPORT_URL="https://github.com/orgs/AerynOS/discussions" +ANSI_COLOR="0;32" ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/topgrade/vendor.tar.zst /work/SRC/openSUSE:Factory/.topgrade.new.2252680/vendor.tar.zst differ: char 7, line 1
