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-06-11 17:27:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/topgrade (Old)
 and      /work/SRC/openSUSE:Factory/.topgrade.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "topgrade"

Thu Jun 11 17:27:36 2026 rev:26 rq:1358619 version:17.6.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/topgrade/topgrade.changes        2026-05-25 
21:58:45.829803001 +0200
+++ /work/SRC/openSUSE:Factory/.topgrade.new.1981/topgrade.changes      
2026-06-11 17:29:20.931331756 +0200
@@ -1,0 +2,27 @@
+Wed Jun 10 21:55:30 UTC 2026 - Gerald Chen <[email protected]>
+
+- Update to version 17.6.1:
+  * chore: release v17.6.1 (#2085)
+  * chore: release v17.6.0 (#2070)
+  * fix(needrestart): skip if hooks already run it (#2066)
+  * chore(pre-commit): autoupdate (#2079)
+  * chore(deps): update vmactions/openbsd-vm action to v1.4.3 (#2071)
+  * chore(deps): update github/codeql-action action to v4.36.2 (#2073)
+  * chore(deps): lock file maintenance (#2078)
+  * chore(deps): lock file maintenance (#2061)
+  * chore(deps): update vmactions/openbsd-vm action to v1.4.2 (#2054)
+  * chore(deps): update rust to v1.96.0 (#2058)
+  * chore(deps): update github/codeql-action action to v4.36.1 (#2069)
+  * chore(deps): update actions/checkout action to v6.0.3 (#2068)
+  * chore(pre-commit): autoupdate (#2064)
+  * chore(pre-commit): autoupdate (#2053)
+  * chore(deps): update github/codeql-action action to v4.36.0 (#2047)
+  * chore(deps): update vmactions/openbsd-vm action to v1.4.1 (#2051)
+  * chore(deps): lock file maintenance (#2052)
+  * feat(vim): add opt-in vim.pack pruning (#2044)
+  * refactor: improve path handling in config, node steps, and build (#2015)
+  * fix(tmux): update path to tpm update script (#2050)
+  * fix(jetbrains-toolbox): skip step when Toolbox is not installed, but 
remotely managed IDEs are installed (#2038)
+  * fix(jetbrains-toolbox): fix breakage on new Toolbox version by switching 
to different update finished line (#2039)
+
+-------------------------------------------------------------------

Old:
----
  topgrade-17.5.1.tar.zst

New:
----
  topgrade-17.6.1.tar.zst

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ topgrade.spec ++++++
--- /var/tmp/diff_new_pack.R6MlyF/_old  2026-06-11 17:29:22.835411604 +0200
+++ /var/tmp/diff_new_pack.R6MlyF/_new  2026-06-11 17:29:22.839411771 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           topgrade
-Version:        17.5.1
+Version:        17.6.1
 Release:        0
 Summary:        Upgrade all the things
 License:        GPL-3.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.R6MlyF/_old  2026-06-11 17:29:22.875413281 +0200
+++ /var/tmp/diff_new_pack.R6MlyF/_new  2026-06-11 17:29:22.879413449 +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.5.1</param>
+    <param name="revision">v17.6.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.R6MlyF/_old  2026-06-11 17:29:22.903414455 +0200
+++ /var/tmp/diff_new_pack.R6MlyF/_new  2026-06-11 17:29:22.907414623 +0200
@@ -1,7 +1,7 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/topgrade-rs/topgrade.git</param>
-              <param 
name="changesrevision">efe095e8c5a587c7e97236e8754de7230306b044</param></service><service
 name="tar_scm">
+              <param 
name="changesrevision">171d0b608b5e0a603cf3b365b6a069e351ec0279</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.5.1.tar.zst -> topgrade-17.6.1.tar.zst ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/topgrade-17.5.1/.github/workflows/check_config_creation_if_not_exists.yml 
new/topgrade-17.6.1/.github/workflows/check_config_creation_if_not_exists.yml
--- 
old/topgrade-17.5.1/.github/workflows/check_config_creation_if_not_exists.yml   
    2026-05-20 09:19:01.000000000 +0200
+++ 
new/topgrade-17.6.1/.github/workflows/check_config_creation_if_not_exists.yml   
    2026-06-10 20:08:38.000000000 +0200
@@ -14,7 +14,7 @@
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/.github/workflows/check_i18n.yml 
new/topgrade-17.6.1/.github/workflows/check_i18n.yml
--- old/topgrade-17.5.1/.github/workflows/check_i18n.yml        2026-05-20 
09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/check_i18n.yml        2026-06-10 
20:08:38.000000000 +0200
@@ -14,7 +14,7 @@
     runs-on: ubuntu-latest
     steps:
       - name: Checkout code
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/topgrade-17.5.1/.github/workflows/check_security_vulnerability.yml 
new/topgrade-17.6.1/.github/workflows/check_security_vulnerability.yml
--- old/topgrade-17.5.1/.github/workflows/check_security_vulnerability.yml      
2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/check_security_vulnerability.yml      
2026-06-10 20:08:38.000000000 +0200
@@ -24,7 +24,7 @@
       security-events: write
     steps:
       - name: Checkout code
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -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@9e0d7b8d25671d64c341c19c0152d693099fb5ba # 
v4.35.5
+        uses: 
github/codeql-action/upload-sarif@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # 
v4.36.2
         with:
           sarif_file: devskim-results.sarif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/.github/workflows/ci.yml 
new/topgrade-17.6.1/.github/workflows/ci.yml
--- old/topgrade-17.5.1/.github/workflows/ci.yml        2026-05-20 
09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/ci.yml        2026-06-10 
20:08:38.000000000 +0200
@@ -28,7 +28,7 @@
     name: Format (cargo fmt)
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -41,7 +41,7 @@
     name: Custom checks
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -119,7 +119,7 @@
 
           # Ignores the cross-compiled targets for simplicity; they contain a 
minimal amount of code anyway.
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -180,7 +180,7 @@
       cargo_cmd: ${{ matrix.use_cross == true && 'cross' || 'cargo' }}
       matrix_target: ${{ matrix.target }}
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/topgrade-17.5.1/.github/workflows/create_release_assets.yml 
new/topgrade-17.6.1/.github/workflows/create_release_assets.yml
--- old/topgrade-17.5.1/.github/workflows/create_release_assets.yml     
2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/create_release_assets.yml     
2026-06-10 20:08:38.000000000 +0200
@@ -33,7 +33,7 @@
     env:
       tag: ${{ github.event.client_payload.tag }}
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -170,7 +170,7 @@
       matrix_target: ${{ matrix.target }}
       tag: ${{ github.event.client_payload.tag }}
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -302,12 +302,12 @@
         shell: openbsd {0}
 
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
       - name: Start OpenBSD VM
-        uses: vmactions/openbsd-vm@d7d892b7b9ba97ed2747b0fc201be65037d64c3e # 
v1.4.0
+        uses: vmactions/openbsd-vm@fcf799d7ce9c305ad89eabef1fb2fa5c1c42d0ee # 
v1.4.3
         with:
           arch: x86_64
           sync: nfs
@@ -382,7 +382,7 @@
     permissions:
       contents: write # `gh release edit`
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
       - name: Publish release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/topgrade-17.5.1/.github/workflows/dependency-review.yml 
new/topgrade-17.6.1/.github/workflows/dependency-review.yml
--- old/topgrade-17.5.1/.github/workflows/dependency-review.yml 2026-05-20 
09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/dependency-review.yml 2026-06-10 
20:08:38.000000000 +0200
@@ -17,7 +17,7 @@
     runs-on: ubuntu-latest
     steps:
       - name: 'Checkout Repository'
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/.github/workflows/release-plz.yml 
new/topgrade-17.6.1/.github/workflows/release-plz.yml
--- old/topgrade-17.5.1/.github/workflows/release-plz.yml       2026-05-20 
09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/release-plz.yml       2026-06-10 
20:08:38.000000000 +0200
@@ -18,7 +18,7 @@
       id-token: write  # For trusted publishing
     steps:
       - name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           fetch-depth: 0
           persist-credentials: false
@@ -57,7 +57,7 @@
       cancel-in-progress: false
     steps:
       - name: Checkout repository
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           fetch-depth: 0
           persist-credentials: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/topgrade-17.5.1/.github/workflows/release_to_pypi.yml 
new/topgrade-17.6.1/.github/workflows/release_to_pypi.yml
--- old/topgrade-17.5.1/.github/workflows/release_to_pypi.yml   2026-05-20 
09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/release_to_pypi.yml   2026-06-10 
20:08:38.000000000 +0200
@@ -15,7 +15,7 @@
       matrix:
         target: [x86_64, x86, aarch64]
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -37,7 +37,7 @@
       matrix:
         target: [x64, x86]
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -58,7 +58,7 @@
       matrix:
         target: [x86_64, aarch64]
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -76,7 +76,7 @@
   sdist:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/.github/workflows/scorecards.yml 
new/topgrade-17.6.1/.github/workflows/scorecards.yml
--- old/topgrade-17.5.1/.github/workflows/scorecards.yml        2026-05-20 
09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/.github/workflows/scorecards.yml        2026-06-10 
20:08:38.000000000 +0200
@@ -36,7 +36,7 @@
 
     steps:
       - name: "Checkout code"
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+        uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # 
v6.0.3
         with:
           persist-credentials: false
 
@@ -71,6 +71,6 @@
 
       # Upload the results to GitHub's code scanning dashboard.
       - name: "Upload to code-scanning"
-        uses: 
github/codeql-action/upload-sarif@9e0d7b8d25671d64c341c19c0152d693099fb5ba # 
v4.35.5
+        uses: 
github/codeql-action/upload-sarif@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # 
v4.36.2
         with:
           sarif_file: results.sarif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/.pre-commit-config.yaml 
new/topgrade-17.6.1/.pre-commit-config.yaml
--- old/topgrade-17.5.1/.pre-commit-config.yaml 2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/.pre-commit-config.yaml 2026-06-10 20:08:38.000000000 
+0200
@@ -17,7 +17,7 @@
   - id: trailing-whitespace
 
 - repo: https://github.com/adhtruong/mirrors-typos
-  rev: v1.46.2
+  rev: v1.47.2
   hooks:
   - id: typos
     args:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/CHANGELOG.md 
new/topgrade-17.6.1/CHANGELOG.md
--- old/topgrade-17.5.1/CHANGELOG.md    2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/CHANGELOG.md    2026-06-10 20:08:38.000000000 +0200
@@ -7,6 +7,19 @@
 
 ## [Unreleased]
 
+## [17.6.1](https://github.com/topgrade-rs/topgrade/compare/v17.5.1...v17.6.1) 
- 2026-06-10
+
+### Added
+
+- *(vim)* add opt-in vim.pack pruning 
([#2044](https://github.com/topgrade-rs/topgrade/pull/2044))
+
+### Fixed
+
+- *(needrestart)* skip if hooks already run it 
([#2066](https://github.com/topgrade-rs/topgrade/pull/2066))
+- *(tmux)* update path to tpm update script 
([#2050](https://github.com/topgrade-rs/topgrade/pull/2050))
+- *(jetbrains-toolbox)* skip step when Toolbox is not installed, but remotely 
managed IDEs are installed 
([#2038](https://github.com/topgrade-rs/topgrade/pull/2038))
+- *(jetbrains-toolbox)* fix breakage on new Toolbox version by switching to 
different update finished line 
([#2039](https://github.com/topgrade-rs/topgrade/pull/2039))
+
 ## [17.5.1](https://github.com/topgrade-rs/topgrade/compare/v17.5.0...v17.5.1) 
- 2026-05-20
 
 ### Fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/Cargo.lock 
new/topgrade-17.6.1/Cargo.lock
--- old/topgrade-17.5.1/Cargo.lock      2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/Cargo.lock      2026-06-10 20:08:38.000000000 +0200
@@ -248,9 +248,9 @@
 
 [[package]]
 name = "autocfg"
-version = "1.5.0"
+version = "1.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
 
 [[package]]
 name = "aws-lc-rs"
@@ -315,9 +315,9 @@
 
 [[package]]
 name = "bitflags"
-version = "2.11.1"
+version = "2.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
+checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
 
 [[package]]
 name = "block-buffer"
@@ -363,9 +363,9 @@
 
 [[package]]
 name = "bumpalo"
-version = "3.20.2"
+version = "3.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
 
 [[package]]
 name = "byteorder"
@@ -381,9 +381,9 @@
 
 [[package]]
 name = "cc"
-version = "1.2.62"
+version = "1.2.63"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
+checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
 dependencies = [
  "find-msvc-tools",
  "jobserver",
@@ -405,9 +405,9 @@
 
 [[package]]
 name = "chrono"
-version = "0.4.44"
+version = "0.4.45"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
+checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
 dependencies = [
  "iana-time-zone",
  "js-sys",
@@ -678,7 +678,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "crossterm_winapi",
  "document-features",
  "filedescriptor",
@@ -809,15 +809,15 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "objc2",
 ]
 
 [[package]]
 name = "displaydoc"
-version = "0.2.5"
+version = "0.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -885,9 +885,9 @@
 
 [[package]]
 name = "either"
-version = "1.15.0"
+version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
 
 [[package]]
 name = "encode_unicode"
@@ -1335,9 +1335,9 @@
 
 [[package]]
 name = "http"
-version = "1.4.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0"
 dependencies = [
  "bytes",
  "itoa",
@@ -1374,9 +1374,9 @@
 
 [[package]]
 name = "hyper"
-version = "1.9.0"
+version = "1.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
+checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
 dependencies = [
  "atomic-waker",
  "bytes",
@@ -1566,9 +1566,9 @@
 
 [[package]]
 name = "ignore"
-version = "0.4.25"
+version = "0.4.26"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a"
+checksum = "b915661dd01db3f05050265b2477bcc6527b3792388e2749b41623cc592be67d"
 dependencies = [
  "crossbeam-deque",
  "globset",
@@ -1658,9 +1658,9 @@
 
 [[package]]
 name = "jetbrains-toolbox-updater"
-version = "6.0.0"
+version = "6.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4462ef6f061d87a9b7565e70974e0714f8df3d81b12dcdbe8c0eb412ee89de20"
+checksum = "4dca9e96ad84de2c37208b0d4a6f01b19580a7d11e8fc2c2c6c4c6983a718261"
 dependencies = [
  "dirs",
  "freedesktop-desktop-entry",
@@ -1730,9 +1730,9 @@
 
 [[package]]
 name = "js-sys"
-version = "0.3.98"
+version = "0.3.99"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08"
+checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11"
 dependencies = [
  "cfg-if",
  "futures-util",
@@ -1760,9 +1760,9 @@
 
 [[package]]
 name = "libredox"
-version = "0.1.16"
+version = "0.1.17"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
+checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3"
 dependencies = [
  "libc",
 ]
@@ -1802,9 +1802,9 @@
 
 [[package]]
 name = "log"
-version = "0.4.29"
+version = "0.4.32"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
 
 [[package]]
 name = "lru-slab"
@@ -1814,9 +1814,9 @@
 
 [[package]]
 name = "mac-notification-sys"
-version = "0.6.12"
+version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "29a16783dd1a47849b8c8133c9cd3eb2112cfbc6901670af3dba47c8bbfb07d3"
+checksum = "50efa634682b3fc5a1ab6f3dd5b2bce7b848011fc485b53b063dc68f2f74feae"
 dependencies = [
  "cc",
  "objc2",
@@ -1835,9 +1835,9 @@
 
 [[package]]
 name = "memchr"
-version = "2.8.0"
+version = "2.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
+checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
 
 [[package]]
 name = "memoffset"
@@ -1882,9 +1882,9 @@
 
 [[package]]
 name = "mio"
-version = "1.2.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
+checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
 dependencies = [
  "libc",
  "log",
@@ -1898,7 +1898,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "cfg-if",
  "cfg_aliases",
  "libc",
@@ -1947,9 +1947,9 @@
 
 [[package]]
 name = "num-conv"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
 
 [[package]]
 name = "num-traits"
@@ -1975,7 +1975,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "dispatch2",
  "objc2",
 ]
@@ -1992,7 +1992,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "block2",
  "libc",
  "objc2",
@@ -2099,9 +2099,9 @@
 
 [[package]]
 name = "parse-changelog"
-version = "0.6.16"
+version = "0.6.17"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a6245ae3ccab647e14c9b3894b8d18e4ddeea5365a6d5dad774ba89ba2021a1d"
+checksum = "c0878368d958d9eac74fcbbe62d3fa9fc0e6f1c2ea7c16f9cdbd7232722d58d9"
 dependencies = [
  "indexmap",
  "memchr",
@@ -2214,7 +2214,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
 dependencies = [
- "toml_edit 0.25.11+spec-1.1.0",
+ "toml_edit 0.25.12+spec-1.1.0",
 ]
 
 [[package]]
@@ -2387,7 +2387,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
 ]
 
 [[package]]
@@ -2441,9 +2441,9 @@
 
 [[package]]
 name = "reqwest"
-version = "0.13.3"
+version = "0.13.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0"
+checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
 dependencies = [
  "base64",
  "bytes",
@@ -2501,9 +2501,9 @@
 
 [[package]]
 name = "rust-i18n"
-version = "4.0.0"
+version = "4.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "21031bf5e6f2c0ae745d831791c403608e99a8bd3776c7e5e5535acd70c3b7ba"
+checksum = "55691a65892c33ee2de49c15ea5600c6f4a70e8eeb8e6c3cd96d2a231d230c40"
 dependencies = [
  "globwalk",
  "regex",
@@ -2514,9 +2514,9 @@
 
 [[package]]
 name = "rust-i18n-macro"
-version = "4.0.0"
+version = "4.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "51fe5295763b358606f7ca26a564e20f4469775a57ec1f09431249a33849ff52"
+checksum = "30de488acadcf767d97cd48518a8da8ea9777b1c9a5beca4eab78bbf77d07309"
 dependencies = [
  "glob",
  "proc-macro2",
@@ -2530,18 +2530,15 @@
 
 [[package]]
 name = "rust-i18n-support"
-version = "4.0.0"
+version = "4.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "69bcc115c8eea2803aa3d85362e339776f4988a0349f2f475af572e497443f6f"
+checksum = "aea0fef8a93c06326b66392c95a115120e609674cb2132d37d276a6b05b545b4"
 dependencies = [
  "arc-swap",
  "base62",
  "globwalk",
  "itertools 0.11.0",
- "lazy_static",
  "normpath",
- "proc-macro2",
- "regex",
  "serde",
  "serde_json",
  "serde_yaml",
@@ -2587,7 +2584,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "errno",
  "libc",
  "linux-raw-sys 0.4.15",
@@ -2600,7 +2597,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "errno",
  "libc",
  "linux-raw-sys 0.12.1",
@@ -2625,9 +2622,9 @@
 
 [[package]]
 name = "rustls-native-certs"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
+checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d"
 dependencies = [
  "openssl-probe",
  "rustls-pki-types",
@@ -2726,7 +2723,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "core-foundation",
  "core-foundation-sys",
  "libc",
@@ -2818,9 +2815,9 @@
 
 [[package]]
 name = "serde_json"
-version = "1.0.149"
+version = "1.0.150"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
+checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
 dependencies = [
  "itoa",
  "memchr",
@@ -2908,9 +2905,9 @@
 
 [[package]]
 name = "shlex"
-version = "1.3.0"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
 
 [[package]]
 name = "signal-hook"
@@ -2995,9 +2992,9 @@
 
 [[package]]
 name = "socket2"
-version = "0.6.3"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
+checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
 dependencies = [
  "libc",
  "windows-sys 0.61.2",
@@ -3105,16 +3102,16 @@
 
 [[package]]
 name = "sysinfo"
-version = "0.36.1"
+version = "0.38.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d"
+checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f"
 dependencies = [
  "libc",
  "memchr",
  "ntapi",
  "objc2-core-foundation",
  "objc2-io-kit",
- "windows 0.61.3",
+ "windows 0.62.2",
 ]
 
 [[package]]
@@ -3129,9 +3126,9 @@
 
 [[package]]
 name = "tar"
-version = "0.4.45"
+version = "0.4.46"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973"
+checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840"
 dependencies = [
  "filetime",
  "libc",
@@ -3376,9 +3373,9 @@
 
 [[package]]
 name = "toml_edit"
-version = "0.25.11+spec-1.1.0"
+version = "0.25.12+spec-1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"
+checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7"
 dependencies = [
  "indexmap",
  "toml_datetime 1.1.1+spec-1.1.0",
@@ -3409,7 +3406,7 @@
 
 [[package]]
 name = "topgrade"
-version = "17.5.1"
+version = "17.6.1"
 dependencies = [
  "chrono",
  "clap",
@@ -3452,7 +3449,7 @@
  "tracing",
  "tracing-subscriber",
  "walkdir",
- "which 8.0.2",
+ "which 8.0.3",
  "wildmatch",
  "windows 0.62.2",
  "windows-registry",
@@ -3475,11 +3472,11 @@
 
 [[package]]
 name = "tower-http"
-version = "0.6.10"
+version = "0.6.11"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51"
+checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "bytes",
  "futures-util",
  "http",
@@ -3595,9 +3592,9 @@
 
 [[package]]
 name = "typenum"
-version = "1.20.0"
+version = "1.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
 
 [[package]]
 name = "uds_windows"
@@ -3724,9 +3721,9 @@
 
 [[package]]
 name = "uuid"
-version = "1.23.1"
+version = "1.23.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76"
+checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7"
 dependencies = [
  "js-sys",
  "serde_core",
@@ -3790,9 +3787,9 @@
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.121"
+version = "0.2.122"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790"
+checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -3803,9 +3800,9 @@
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.71"
+version = "0.4.72"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8"
+checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -3813,9 +3810,9 @@
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.121"
+version = "0.2.122"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578"
+checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -3823,9 +3820,9 @@
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.121"
+version = "0.2.122"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2"
+checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e"
 dependencies = [
  "bumpalo",
  "proc-macro2",
@@ -3836,9 +3833,9 @@
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.121"
+version = "0.2.122"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441"
+checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437"
 dependencies = [
  "unicode-ident",
 ]
@@ -3871,7 +3868,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
 dependencies = [
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "hashbrown 0.15.5",
  "indexmap",
  "semver",
@@ -3879,9 +3876,9 @@
 
 [[package]]
 name = "web-sys"
-version = "0.3.98"
+version = "0.3.99"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa"
+checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -3929,9 +3926,9 @@
 
 [[package]]
 name = "which"
-version = "8.0.2"
+version = "8.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459"
+checksum = "c789537cf2f7f55be8e6192f92e464174ee55f91af622777f7f1ceb0dbccd03e"
 dependencies = [
  "libc",
 ]
@@ -4445,7 +4442,7 @@
 checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
 dependencies = [
  "anyhow",
- "bitflags 2.11.1",
+ "bitflags 2.13.0",
  "indexmap",
  "log",
  "serde",
@@ -4499,9 +4496,9 @@
 
 [[package]]
 name = "yoke"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"
+checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
 dependencies = [
  "stable_deref_trait",
  "yoke-derive",
@@ -4522,9 +4519,9 @@
 
 [[package]]
 name = "zbus"
-version = "5.15.0"
+version = "5.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1"
+checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285"
 dependencies = [
  "async-broadcast",
  "async-executor",
@@ -4557,9 +4554,9 @@
 
 [[package]]
 name = "zbus_macros"
-version = "5.15.0"
+version = "5.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff"
+checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
@@ -4583,18 +4580,18 @@
 
 [[package]]
 name = "zerocopy"
-version = "0.8.48"
+version = "0.8.50"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
+checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.8.48"
+version = "0.8.50"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
+checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -4713,9 +4710,9 @@
 
 [[package]]
 name = "zvariant"
-version = "5.11.0"
+version = "5.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee"
+checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0"
 dependencies = [
  "endi",
  "enumflags2",
@@ -4727,9 +4724,9 @@
 
 [[package]]
 name = "zvariant_derive"
-version = "5.11.0"
+version = "5.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda"
+checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
@@ -4740,9 +4737,9 @@
 
 [[package]]
 name = "zvariant_utils"
-version = "3.3.1"
+version = "3.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691"
+checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6"
 dependencies = [
  "proc-macro2",
  "quote",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/Cargo.toml 
new/topgrade-17.6.1/Cargo.toml
--- old/topgrade-17.5.1/Cargo.toml      2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/Cargo.toml      2026-06-10 20:08:38.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.5.1"
+version = "17.6.1"
 exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"]
 edition = "2024"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/build.rs new/topgrade-17.6.1/build.rs
--- old/topgrade-17.5.1/build.rs        2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/build.rs        2026-06-10 20:08:38.000000000 +0200
@@ -1,4 +1,4 @@
-use std::path::Path;
+use std::path::PathBuf;
 use std::{env, fs};
 
 fn main() {
@@ -8,8 +8,7 @@
 }
 
 fn breaking_changes() {
-    let out_dir_s = &env::var("OUT_DIR").unwrap();
-    let out_dir = Path::new(out_dir_s);
+    let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
     let version_str = env::var("CARGO_PKG_VERSION").unwrap();
     let changelog = 
parse_changelog::parse(include_str!("CHANGELOG.md")).expect("Invalid 
CHANGELOG.md");
     let release = changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/config.example.toml 
new/topgrade-17.6.1/config.example.toml
--- old/topgrade-17.5.1/config.example.toml     2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/config.example.toml     2026-06-10 20:08:38.000000000 
+0200
@@ -377,6 +377,8 @@
 [vim]
 # For `vim-plug`, execute `PlugUpdate!` instead of `PlugUpdate`
 # force_plug_update = true
+# For Neovim's `vim.pack`, remove inactive packages before updating
+# vim_pack_prune = true
 
 
 [firmware]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/rust-toolchain.toml 
new/topgrade-17.6.1/rust-toolchain.toml
--- old/topgrade-17.5.1/rust-toolchain.toml     2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/rust-toolchain.toml     2026-06-10 20:08:38.000000000 
+0200
@@ -1,2 +1,2 @@
 [toolchain]
-channel = "1.95.0"
+channel = "1.96.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/config.rs 
new/topgrade-17.6.1/src/config.rs
--- old/topgrade-17.5.1/src/config.rs   2026-05-20 09:19:01.000000000 +0200
+++ new/topgrade-17.6.1/src/config.rs   2026-06-10 20:08:38.000000000 +0200
@@ -392,6 +392,9 @@
 pub struct Vim {
     #[merge(strategy = merge::option::overwrite_none)]
     force_plug_update: Option<bool>,
+
+    #[merge(strategy = merge::option::overwrite_none)]
+    vim_pack_prune: Option<bool>,
 }
 
 #[derive(Deserialize, Default, Debug, Merge)]
@@ -761,25 +764,25 @@
         let mut res = Vec::new();
         let dir_to_search = config_directory.join("topgrade.d");
 
-        if dir_to_search.exists() {
-            for entry in fs::read_dir(dir_to_search)? {
-                let entry = entry?;
-                // Use `Path::is_file()` here to traverse symbolic links.
-                // `DirEntry::file_type()` and `FileType::is_file()` will not 
traverse symbolic links.
-                if entry.path().is_file() {
-                    debug!(
-                        "Found additional (directory) configuration file at 
{}",
-                        entry.path().display()
-                    );
-                    res.push(entry.path());
-                }
-            }
-            res.sort();
-        } else {
+        if !dir_to_search.exists() {
             debug!("No additional configuration directory exists, creating 
one");
             fs::create_dir_all(&dir_to_search)?;
         }
 
+        for entry in fs::read_dir(&dir_to_search)? {
+            let entry_path = entry?.path();
+
+            if entry_path.is_file() {
+                debug!(
+                    "Found additional (directory) configuration file at {}",
+                    entry_path.display()
+                );
+                res.push(entry_path);
+            }
+        }
+
+        res.sort();
+
         Ok(res)
     }
 
@@ -1575,6 +1578,15 @@
             .unwrap_or(false)
     }
 
+    /// Whether to prune inactive `vim.pack` packages in Neovim
+    pub fn vim_pack_prune(&self) -> bool {
+        self.config_file
+            .vim
+            .as_ref()
+            .and_then(|c| c.vim_pack_prune)
+            .unwrap_or(false)
+    }
+
     /// Binaries to exclude from `gup update`
     pub fn gup_exclude(&self) -> &[String] {
         self.config_file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/steps/generic.rs 
new/topgrade-17.6.1/src/steps/generic.rs
--- old/topgrade-17.5.1/src/steps/generic.rs    2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/src/steps/generic.rs    2026-06-10 20:08:38.000000000 
+0200
@@ -1879,6 +1879,12 @@
             // Skip
             Err(SkipStep(format!("{}", t!("No JetBrains Toolbox installation 
found"))).into())
         }
+        Err(FindError::NoDesktopFile(_)) => {
+            // Skip: the JetBrains/Toolbox directory exists but no Toolbox 
binary or desktop
+            // file is present. This can happen when Toolbox running on 
another machine remotely
+            // installed an IDE here, leaving the directory behind without a 
local Toolbox.
+            Err(SkipStep(format!("{}", t!("No JetBrains Toolbox installation 
found"))).into())
+        }
         Err(FindError::UnsupportedOS(os)) => {
             // Skip
             Err(SkipStep(format!("{}", t!("Unsupported operating system {os}", 
os = os))).into())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/steps/node.rs 
new/topgrade-17.6.1/src/steps/node.rs
--- old/topgrade-17.5.1/src/steps/node.rs       2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/src/steps/node.rs       2026-06-10 20:08:38.000000000 
+0200
@@ -302,7 +302,7 @@
         let vp_home = match std::env::var_os("VP_HOME") {
             None => return Ok(false),
             Some(s) if s.is_empty() => return Ok(false),
-            Some(s) => s,
+            Some(s) => PathBuf::from(s),
         };
 
         let uid = Uid::effective();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/steps/os/linux.rs 
new/topgrade-17.6.1/src/steps/os/linux.rs
--- old/topgrade-17.5.1/src/steps/os/linux.rs   2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/src/steps/os/linux.rs   2026-06-10 20:08:38.000000000 
+0200
@@ -179,10 +179,6 @@
             archlinux::show_pacnew();
         }
     }
-
-    pub fn redhat_based(self) -> bool {
-        matches!(self, Distribution::CentOS | Distribution::Fedora)
-    }
 }
 
 fn update_bedrock(ctx: &ExecutionContext) -> Result<()> {
@@ -887,33 +883,19 @@
     Ok(())
 }
 
-/// `needrestart` should be skipped if:
-///
-/// 1. This is a redhat-based distribution
-/// 2. This is a debian-based distribution and it is using `nala` as the `apt`
-///    alternative
-fn should_skip_needrestart() -> Result<()> {
-    let distribution = Distribution::detect()?;
-    let msg = t!("needrestart will be ran by the package manager");
-
-    if distribution.redhat_based() {
-        return Err(SkipStep(String::from(msg)).into());
-    }
-
-    if let Distribution::Debian = distribution {
-        let (apt_kind, _) = detect_apt()?;
-        if let AptKind::Nala = apt_kind {
-            return Err(SkipStep(String::from(msg)).into());
-        }
-    }
-
-    Ok(())
-}
-
 pub fn run_needrestart(ctx: &ExecutionContext) -> Result<()> {
     let needrestart = require("needrestart")?;
 
-    should_skip_needrestart()?;
+    // `needrestart` should be skipped if system update will run and its hooks 
exist
+    const HOOKS: &[&str] = &[
+        "/usr/share/libalpm/hooks/needrestart.hook",
+        "/etc/pacman.d/hooks/needrestart.hook",
+        "/etc/apt/apt.conf.d/99needrestart",
+    ];
+
+    if HOOKS.iter().any(|hook| Path::new(hook).exists()) && 
ctx.config().should_run(Step::System) {
+        return Err(SkipStep(String::from(t!("needrestart will be ran by the 
package manager"))).into());
+    }
 
     print_separator(t!("Check for needed restarts"));
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/steps/tmux.rs 
new/topgrade-17.6.1/src/steps/tmux.rs
--- old/topgrade-17.5.1/src/steps/tmux.rs       2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/src/steps/tmux.rs       2026-06-10 20:08:38.000000000 
+0200
@@ -18,7 +18,7 @@
 pub fn run_tpm(ctx: &ExecutionContext) -> Result<()> {
     let tpm = match env::var("TMUX_PLUGIN_MANAGER_PATH") {
         // Use `$TMUX_PLUGIN_MANAGER_PATH` if set,
-        Ok(var) => PathBuf::from(var).join(UPDATE_PLUGINS),
+        Ok(var) => PathBuf::from(var).join("tpm").join(UPDATE_PLUGINS),
         Err(_) => {
             // otherwise, use the default XDG location `~/.config/tmux`
             #[cfg(unix)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/steps/upgrade.vim 
new/topgrade-17.6.1/src/steps/upgrade.vim
--- old/topgrade-17.5.1/src/steps/upgrade.vim   2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/src/steps/upgrade.vim   2026-06-10 20:08:38.000000000 
+0200
@@ -12,7 +12,21 @@
 endif
 
 if has("nvim")
-    lua if vim.pack and next(vim.pack.get(nil, { info = false })) ~= nil then 
vim.pack.update(nil, { force = true }) end
+    lua << EOF
+if vim.pack and next(vim.pack.get(nil, { info = false })) ~= nil then
+    if vim.env.TOPGRADE_VIM_PACK_PRUNE == "true" and vim.fn.exists(":packdel") 
~= 0 then
+        local ok, err = pcall(vim.cmd, "packdel ++all")
+        if not ok then
+            if tostring(err):find("E5809: Nothing to remove", 1, true) then
+                print("No inactive vim.pack packages to prune")
+            else
+                error(err)
+            end
+        end
+    end
+    vim.pack.update(nil, { force = true })
+end
+EOF
 endif
 
 if exists(":MasonUpdate")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.5.1/src/steps/vim.rs 
new/topgrade-17.6.1/src/steps/vim.rs
--- old/topgrade-17.5.1/src/steps/vim.rs        2026-05-20 09:19:01.000000000 
+0200
+++ new/topgrade-17.6.1/src/steps/vim.rs        2026-06-10 20:08:38.000000000 
+0200
@@ -65,6 +65,9 @@
     if ctx.config().force_vim_plug_update() {
         command.env("TOPGRADE_FORCE_PLUGUPDATE", "true");
     }
+    if ctx.config().vim_pack_prune() {
+        command.env("TOPGRADE_VIM_PACK_PRUNE", "true");
+    }
 
     let output = command.output()?;
 

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/topgrade/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.topgrade.new.1981/vendor.tar.zst differ: char 7, 
line 1

Reply via email to