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

Reply via email to