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-07-17 01:40:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/topgrade (Old)
 and      /work/SRC/openSUSE:Factory/.topgrade.new.24530 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "topgrade"

Fri Jul 17 01:40:59 2026 rev:29 rq:1366037 version:17.8.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/topgrade/topgrade.changes        2026-07-12 
18:35:35.207685358 +0200
+++ /work/SRC/openSUSE:Factory/.topgrade.new.24530/topgrade.changes     
2026-07-17 01:42:52.400034050 +0200
@@ -1,0 +2,15 @@
+Thu Jul 16 00:02:36 UTC 2026 - Gerald Chen <[email protected]>
+
+- Update to version 17.8.0:
+  * chore: release v17.8.0 (#2157)
+  * fix(antidote): stop the zsh probe suspending topgrade (#2185)
+  * docs: ask for title to be descriptive commit message in PR template (#2091)
+  * chore(deps): update github/codeql-action action to v4.37.0 (#2149)
+  * chore(deps): lock file maintenance (#2175)
+  * fix: fix formatting of a `zh_CN` message to be the same as `zh_TW` (#2174)
+  * fix(powershell): capitalize “Powershell” as “PowerShell” in strings (#2173)
+  * feat(step): add sera (KDE Plasma addon updater) (#2134)
+  * feat(step): add OpenCode upgrade (#2144)
+  * fix(pi): skip self update if disabled or installed with homebrew (#2156)
+
+-------------------------------------------------------------------

Old:
----
  topgrade-17.7.0.tar.zst

New:
----
  topgrade-17.8.0.tar.zst

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

Other differences:
------------------
++++++ topgrade.spec ++++++
--- /var/tmp/diff_new_pack.H3SBtj/_old  2026-07-17 01:42:54.352099953 +0200
+++ /var/tmp/diff_new_pack.H3SBtj/_new  2026-07-17 01:42:54.356100088 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           topgrade
-Version:        17.7.0
+Version:        17.8.0
 Release:        0
 Summary:        Upgrade all the things
 License:        GPL-3.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.H3SBtj/_old  2026-07-17 01:42:54.392101303 +0200
+++ /var/tmp/diff_new_pack.H3SBtj/_new  2026-07-17 01:42:54.396101439 +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.7.0</param>
+    <param name="revision">v17.8.0</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.H3SBtj/_old  2026-07-17 01:42:54.428102519 +0200
+++ /var/tmp/diff_new_pack.H3SBtj/_new  2026-07-17 01:42:54.432102654 +0200
@@ -1,7 +1,7 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/topgrade-rs/topgrade.git</param>
-              <param 
name="changesrevision">59c8ebaa0ecf056d4cd5293bdda3b7f0df2bc599</param></service><service
 name="tar_scm">
+              <param 
name="changesrevision">df9d3e5fca607bd9cd399c9780e21419704dbe56</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.7.0.tar.zst -> topgrade-17.8.0.tar.zst ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/.github/PULL_REQUEST_TEMPLATE.md 
new/topgrade-17.8.0/.github/PULL_REQUEST_TEMPLATE.md
--- old/topgrade-17.7.0/.github/PULL_REQUEST_TEMPLATE.md        2026-07-10 
19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/.github/PULL_REQUEST_TEMPLATE.md        2026-07-15 
20:39:23.000000000 +0200
@@ -6,8 +6,8 @@
 
 ## Standards checklist
 
-- [ ] The PR title is descriptive
 - [ ] I have read `CONTRIBUTING.md`
+- [ ] *Optional:* The PR title is a descriptive commit message (this will 
appear in release notes, leave unchecked if you want a maintainer to improve it)
 - [ ] *Optional:* I have tested the code myself, with the relevant tools 
installed. If yes, add Topgrade's output of the relevant steps.
 - [ ] If this PR introduces new user-facing messages they are translated
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/topgrade-17.7.0/.github/workflows/check_security_vulnerability.yml 
new/topgrade-17.8.0/.github/workflows/check_security_vulnerability.yml
--- old/topgrade-17.7.0/.github/workflows/check_security_vulnerability.yml      
2026-07-10 19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/.github/workflows/check_security_vulnerability.yml      
2026-07-15 20:39:23.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@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # 
v4.36.3
+        uses: 
github/codeql-action/upload-sarif@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # 
v4.37.0
         with:
           sarif_file: devskim-results.sarif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/.github/workflows/scorecards.yml 
new/topgrade-17.8.0/.github/workflows/scorecards.yml
--- old/topgrade-17.7.0/.github/workflows/scorecards.yml        2026-07-10 
19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/.github/workflows/scorecards.yml        2026-07-15 
20:39:23.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@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # 
v4.36.3
+        uses: 
github/codeql-action/upload-sarif@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # 
v4.37.0
         with:
           sarif_file: results.sarif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/CHANGELOG.md 
new/topgrade-17.8.0/CHANGELOG.md
--- old/topgrade-17.7.0/CHANGELOG.md    2026-07-10 19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/CHANGELOG.md    2026-07-15 20:39:23.000000000 +0200
@@ -7,6 +7,20 @@
 
 ## [Unreleased]
 
+## [17.8.0](https://github.com/topgrade-rs/topgrade/compare/v17.7.0...v17.8.0) 
- 2026-07-15
+
+### Added
+
+- *(step)* add sera (KDE Plasma addon updater) 
([#2134](https://github.com/topgrade-rs/topgrade/pull/2134))
+- *(step)* add OpenCode upgrade 
([#2144](https://github.com/topgrade-rs/topgrade/pull/2144))
+
+### Fixed
+
+- *(antidote)* stop the zsh probe suspending topgrade 
([#2185](https://github.com/topgrade-rs/topgrade/pull/2185))
+- fix formatting of a `zh_CN` message to be the same as `zh_TW` 
([#2174](https://github.com/topgrade-rs/topgrade/pull/2174))
+- *(powershell)* capitalize “Powershell” as “PowerShell” in strings 
([#2173](https://github.com/topgrade-rs/topgrade/pull/2173))
+- *(pi)* skip self update if disabled or installed with homebrew 
([#2156](https://github.com/topgrade-rs/topgrade/pull/2156))
+
 ## [17.7.0](https://github.com/topgrade-rs/topgrade/compare/v17.6.2...v17.7.0) 
- 2026-07-10
 
 ### Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/Cargo.lock 
new/topgrade-17.8.0/Cargo.lock
--- old/topgrade-17.7.0/Cargo.lock      2026-07-10 19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/Cargo.lock      2026-07-15 20:39:23.000000000 +0200
@@ -370,15 +370,15 @@
 
 [[package]]
 name = "bytes"
-version = "1.12.0"
+version = "1.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
 
 [[package]]
 name = "cc"
-version = "1.2.66"
+version = "1.2.67"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996"
+checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38"
 dependencies = [
  "find-msvc-tools",
  "jobserver",
@@ -664,9 +664,9 @@
 
 [[package]]
 name = "crossbeam-deque"
-version = "0.8.6"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
 dependencies = [
  "crossbeam-epoch",
  "crossbeam-utils",
@@ -674,18 +674,18 @@
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.9.18"
+version = "0.9.20"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
 dependencies = [
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.21"
+version = "0.8.22"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
 
 [[package]]
 name = "crossterm"
@@ -1544,9 +1544,9 @@
 
 [[package]]
 name = "ignore"
-version = "0.4.27"
+version = "0.4.28"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "fe112b004901c62c2faa11f4f75e9864e0cc5af8da71c9115d184a3aa888749f"
+checksum = "2adf14691c72bcfc1058740436a35bdd3ae9c07d1a941ef00b749e9ea16aefa7"
 dependencies = [
  "crossbeam-deque",
  "globset",
@@ -1808,9 +1808,9 @@
 
 [[package]]
 name = "memchr"
-version = "2.8.2"
+version = "2.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
 
 [[package]]
 name = "memoffset"
@@ -2346,9 +2346,9 @@
 
 [[package]]
 name = "regex"
-version = "1.12.4"
+version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
+checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2358,9 +2358,9 @@
 
 [[package]]
 name = "regex-automata"
-version = "0.4.14"
+version = "0.4.15"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
+checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2444,9 +2444,9 @@
 
 [[package]]
 name = "rust-i18n"
-version = "4.1.0"
+version = "4.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "55691a65892c33ee2de49c15ea5600c6f4a70e8eeb8e6c3cd96d2a231d230c40"
+checksum = "752c95174ef2555cd95873d6f12d0bee9f0a1dcbf1b631dde847053a29174996"
 dependencies = [
  "globwalk",
  "regex",
@@ -2457,9 +2457,9 @@
 
 [[package]]
 name = "rust-i18n-macro"
-version = "4.1.0"
+version = "4.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "30de488acadcf767d97cd48518a8da8ea9777b1c9a5beca4eab78bbf77d07309"
+checksum = "cc99fd028c912b59841bd745ec11c2dda112549ae6de25a850f384bb59d1a8f8"
 dependencies = [
  "glob",
  "proc-macro2",
@@ -2473,9 +2473,9 @@
 
 [[package]]
 name = "rust-i18n-support"
-version = "4.1.0"
+version = "4.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "aea0fef8a93c06326b66392c95a115120e609674cb2132d37d276a6b05b545b4"
+checksum = "3dfb30689b70c7fd955e8e5c709fa055a778ae024ef6a382c4eb425dd2c2fabb"
 dependencies = [
  "arc-swap",
  "base62",
@@ -2502,9 +2502,9 @@
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.27"
+version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d"
+checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb"
 
 [[package]]
 name = "rustc-hash"
@@ -2626,9 +2626,9 @@
 
 [[package]]
 name = "rustversion"
-version = "1.0.22"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
 
 [[package]]
 name = "ryu"
@@ -3144,9 +3144,9 @@
 
 [[package]]
 name = "thread_local"
-version = "1.1.9"
+version = "1.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
+checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070"
 dependencies = [
  "cfg-if",
 ]
@@ -3202,9 +3202,9 @@
 
 [[package]]
 name = "tinyvec"
-version = "1.11.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
+checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -3347,7 +3347,7 @@
 
 [[package]]
 name = "topgrade"
-version = "17.7.0"
+version = "17.8.0"
 dependencies = [
  "chrono",
  "clap",
@@ -3656,9 +3656,9 @@
 
 [[package]]
 name = "uuid"
-version = "1.23.4"
+version = "1.23.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
+checksum = "ea5fab0d6c3c01ae70085a09cb03d4c7a1d6314e2b3e075392783396d724ca0a"
 dependencies = [
  "getrandom 0.4.3",
  "js-sys",
@@ -4235,9 +4235,9 @@
 
 [[package]]
 name = "zbus"
-version = "5.16.0"
+version = "5.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285"
+checksum = "a28b97f866896a4be7aefd2b5a8e01bb6773d19a775d54ab28b4d094b9a4480e"
 dependencies = [
  "async-broadcast",
  "async-executor",
@@ -4270,9 +4270,9 @@
 
 [[package]]
 name = "zbus_macros"
-version = "5.16.0"
+version = "5.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6"
+checksum = "5e05ad887425eecf5e8384dc2406a4a9313eb73468712fc1cdea362eb4fe0469"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
@@ -4285,9 +4285,9 @@
 
 [[package]]
 name = "zbus_names"
-version = "4.3.2"
+version = "4.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d"
+checksum = "1039ca249fee9559680f3a9f05b55e0761fee51af4f6c1e7d8c1f31e549721d2"
 dependencies = [
  "serde",
  "winnow 1.0.3",
@@ -4382,15 +4382,15 @@
 
 [[package]]
 name = "zlib-rs"
-version = "0.6.5"
+version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5431d5661c32445236631278f27946e444ddafe4684cac70b185272d4f9c52d5"
+checksum = "b142a20ec14a91d5bc708c1dc21b080c550113d8aa77afa29635673a65dd02c5"
 
 [[package]]
 name = "zmij"
-version = "1.0.21"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+checksum = "bd2f034a4bebf216c9e4b7083603e024cf930873fd67830cfb083c9fa33129d9"
 
 [[package]]
 name = "zopfli"
@@ -4406,9 +4406,9 @@
 
 [[package]]
 name = "zvariant"
-version = "5.12.0"
+version = "5.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0"
+checksum = "7cf057bb00bf5c9ad77abb6147b0ca4818236a1858416e9d988e40d6322fefa7"
 dependencies = [
  "endi",
  "enumflags2",
@@ -4420,9 +4420,9 @@
 
 [[package]]
 name = "zvariant_derive"
-version = "5.12.0"
+version = "5.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737"
+checksum = "8118ca6bda77bfc0ab51d660db0c955f2505eef854c9a449435bccb616933b31"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
@@ -4433,9 +4433,9 @@
 
 [[package]]
 name = "zvariant_utils"
-version = "3.4.0"
+version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6"
+checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7"
 dependencies = [
  "proc-macro2",
  "quote",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/Cargo.toml 
new/topgrade-17.8.0/Cargo.toml
--- old/topgrade-17.7.0/Cargo.toml      2026-07-10 19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/Cargo.toml      2026-07-15 20:39:23.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.7.0"
+version = "17.8.0"
 exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"]
 edition = "2024"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/locales/app.yml 
new/topgrade-17.8.0/locales/app.yml
--- old/topgrade-17.7.0/locales/app.yml 2026-07-10 19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/locales/app.yml 2026-07-15 20:39:23.000000000 +0200
@@ -117,7 +117,7 @@
   lt: "Topgrade atnaujintas nuo %{from_version} iki %{to_version}:\n"
   es: "Topgrade actualizado de %{from_version} a %{to_version}:\n"
   fr: "Topgrade mis à jour de %{from_version} vers %{to_version}:\n"
-  zh_CN: "已将 Topgrade 从 %{from_version} 更新至 %{to_version}: \n"
+  zh_CN: "已将 Topgrade 从 %{from_version} 更新至 %{to_version}:\n"
   zh_TW: "已將 Topgrade 從 %{from_version} 更新至 %{to_version}:\n"
   de: "Topgrade von Version %{from_version} auf %{to_version} aktualisiert:\n"
 "Topgrade is up-to-date":
@@ -136,22 +136,22 @@
   zh_CN: "正在更新模块..."
   zh_TW: "正在更新模組..."
   de: "Module werden aktualisiert..."
-"Powershell Modules Update":
-  en: "Powershell Modules Update"
+"PowerShell Modules Update":
+  en: "PowerShell Modules Update"
   lt: "PowerShell modulių atnaujinimas"
-  es: "Actualización de módulos Powershell"
-  fr: "Mise à jour des modules Powershell"
-  zh_CN: "Powershell 模块更新"
-  zh_TW: "Powershell 模組更新"
-  de: "Powershell-Module Aktualisierung"
-"Powershell is not installed":
-  en: "Powershell is not installed"
+  es: "Actualización de módulos PowerShell"
+  fr: "Mise à jour des modules PowerShell"
+  zh_CN: "PowerShell 模块更新"
+  zh_TW: "PowerShell 模組更新"
+  de: "PowerShell-Module Aktualisierung"
+"PowerShell is not installed":
+  en: "PowerShell is not installed"
   lt: "PowerShell nėra įdiegtas"
-  es: "Powershell no está instalado"
-  fr: "Powershell n'est pas installé"
-  zh_CN: "未安装 Powershell"
-  zh_TW: "未安裝 Powershell"
-  de: "Powershell ist nicht installiert"
+  es: "PowerShell no está instalado"
+  fr: "PowerShell n'est pas installé"
+  zh_CN: "未安装 PowerShell"
+  zh_TW: "未安裝 PowerShell"
+  de: "PowerShell ist nicht installiert"
 "Cannot detect PowerShell in a dumb terminal":
   en: "Cannot detect PowerShell in a dumb terminal"
   lt: "Nepavyko aptikti PowerShell ribotame terminale"
@@ -1506,3 +1506,11 @@
   zh_CN: "Flatpak %{name} 未安装"
   zh_TW: "Flatpak %{name} 未安装"
   de: "Flatpak %{name} ist nicht installiert"
+"OpenCode not installed with the official script":
+  en: "OpenCode not installed with the official script"
+  lt: "OpenCode neįdiegtas oficialiu skriptu"
+  es: "OpenCode no está instalado con el script oficial"
+  fr: "OpenCode n'est pas installé avec le script officiel"
+  zh_CN: "OpenCode 未通过官方脚本安装"
+  zh_TW: "OpenCode 未透過官方腳本安裝"
+  de: "OpenCode ist nicht mit dem offiziellen Skript installiert"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/src/step.rs 
new/topgrade-17.8.0/src/step.rs
--- old/topgrade-17.7.0/src/step.rs     2026-07-10 19:22:50.000000000 +0200
+++ new/topgrade-17.8.0/src/step.rs     2026-07-15 20:39:23.000000000 +0200
@@ -124,6 +124,7 @@
     Node,
     Ollama,
     Opam,
+    Opencode,
     Pacdef,
     Pacstall,
     Pearl,
@@ -157,6 +158,7 @@
     Scoop,
     Sdkman,
     SelfUpdate,
+    Sera,
     Sheldon,
     Shell,
     Skills,
@@ -490,6 +492,7 @@
             Node => runner.execute(*self, "npm", || 
node::run_npm_upgrade(ctx))?,
             Ollama => runner.execute(*self, "Ollama", || 
generic::run_ollama_pull(ctx))?,
             Opam => runner.execute(*self, "opam", || 
generic::run_opam_update(ctx))?,
+            Opencode => runner.execute(*self, "OpenCode", || 
generic::run_opencode(ctx))?,
             Pacdef =>
             {
                 #[cfg(target_os = "linux")]
@@ -543,7 +546,7 @@
             PlatformioCore => runner.execute(*self, "PlatformIO Core", || 
generic::run_platform_io(ctx))?,
             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))?,
+            Powershell => runner.execute(*self, "PowerShell Modules Update", 
|| generic::run_powershell(ctx))?,
             Protonplus =>
             {
                 #[cfg(target_os = "linux")]
@@ -607,6 +610,11 @@
                     }
                 }
             }
+            Sera =>
+            {
+                #[cfg(all(unix, not(any(target_os = "macos", target_os = 
"android"))))]
+                runner.execute(*self, "sera", || unix::run_sera(ctx))?
+            }
             Sheldon => runner.execute(*self, "sheldon", || 
generic::run_sheldon(ctx))?,
             Shell => {
                 #[cfg(unix)]
@@ -815,6 +823,7 @@
         Waydroid,
         AutoCpufreq,
         CinnamonSpices,
+        Sera,
         Mandb,
         Pkgfile,
         Yadm,
@@ -911,6 +920,7 @@
         GitRepos,
         ClamAvDb,
         ClaudeCode,
+        Opencode,
         Colima,
         Skills,
         PlatformioCore,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/src/steps/generic.rs 
new/topgrade-17.8.0/src/steps/generic.rs
--- old/topgrade-17.7.0/src/steps/generic.rs    2026-07-10 19:22:50.000000000 
+0200
+++ new/topgrade-17.8.0/src/steps/generic.rs    2026-07-15 20:39:23.000000000 
+0200
@@ -685,11 +685,23 @@
     let supports_explicit_update_targets =
         pi_update_help.stdout.contains("--self") && 
pi_update_help.stdout.contains("--extensions");
 
+    // `pi update --self` errors when PI_SKIP_VERSION_CHECK is set. Homebrew 
sets it when it runs.
+    let pi_skip_version_check_env = 
std::env::var("PI_SKIP_VERSION_CHECK").is_ok();
+    let pi_installed_through_homebrew = pi
+        .canonicalize()
+        .is_ok_and(|p| p.to_string_lossy().contains("/Cellar/"));
+
     if supports_explicit_update_targets {
-        ctx.execute(&pi)
-            .current_dir(temp_dir.path())
-            .args(["update", "--self"])
-            .status_checked()?;
+        if pi_skip_version_check_env {
+            debug!("Skipping `pi update --self`: PI_SKIP_VERSION_CHECK is 
set");
+        } else if pi_installed_through_homebrew {
+            debug!("Skipping `pi update --self`: pi is installed via 
Homebrew");
+        } else {
+            ctx.execute(&pi)
+                .current_dir(temp_dir.path())
+                .args(["update", "--self"])
+                .status_checked()?;
+        }
 
         ctx.execute(&pi)
             .current_dir(temp_dir.path())
@@ -1240,7 +1252,7 @@
 pub fn run_powershell(ctx: &ExecutionContext) -> Result<()> {
     let powershell = ctx.require_powershell()?;
 
-    print_separator(t!("Powershell Modules Update"));
+    print_separator(t!("PowerShell Modules Update"));
 
     // For PowerShell Core, run without sudo (defaults to CurrentUser scope).
     // For Windows PowerShell, use sudo (defaults to AllUsers scope).
@@ -2254,6 +2266,20 @@
     command.status_checked()
 }
 
+pub fn run_opencode(ctx: &ExecutionContext) -> Result<()> {
+    let opencode = require("opencode")?;
+
+    let script_install_path = HOME_DIR.join(".opencode").join("bin");
+    if !opencode
+        .canonicalize()
+        .is_ok_and(|p| p.is_descendant_of(&script_install_path))
+    {
+        return Err(SkipStep(t!("OpenCode not installed with the official 
script").to_string()).into());
+    }
+    print_separator("OpenCode");
+    ctx.execute(opencode).arg("upgrade").status_checked()
+}
+
 fn ollama_serve(ctx: &ExecutionContext, ollama: &Path) -> 
Result<ExecutorChild> {
     ctx.execute(ollama)
         .arg("serve")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/src/steps/os/unix.rs 
new/topgrade-17.8.0/src/steps/os/unix.rs
--- old/topgrade-17.7.0/src/steps/os/unix.rs    2026-07-10 19:22:50.000000000 
+0200
+++ new/topgrade-17.8.0/src/steps/os/unix.rs    2026-07-15 20:39:23.000000000 
+0200
@@ -1153,6 +1153,15 @@
     ctx.execute(atuin).status_checked()
 }
 
+#[cfg(not(any(target_os = "android", target_os = "macos")))]
+pub fn run_sera(ctx: &ExecutionContext) -> Result<()> {
+    let sera = require("sera")?;
+
+    print_separator("sera");
+
+    ctx.execute(sera).arg("upgrade").status_checked()
+}
+
 pub fn reboot(ctx: &ExecutionContext) -> Result<()> {
     #[cfg(any(target_os = "linux", target_os = "macos"))]
     if let Ok(()) = system_shutdown::reboot() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/src/steps/powershell.rs 
new/topgrade-17.8.0/src/steps/powershell.rs
--- old/topgrade-17.7.0/src/steps/powershell.rs 2026-07-10 19:22:50.000000000 
+0200
+++ new/topgrade-17.8.0/src/steps/powershell.rs 2026-07-15 20:39:23.000000000 
+0200
@@ -40,7 +40,7 @@
     }
 
     fn detect_path() -> Result<(PathBuf, bool), SkipStep> {
-        let mut skip_reason = SkipStep(t!("Powershell is not 
installed").to_string());
+        let mut skip_reason = SkipStep(t!("PowerShell is not 
installed").to_string());
 
         for (binary, is_pwsh) in [("pwsh", true), ("powershell", false)] {
             let Some(path) = which(binary) else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/topgrade-17.7.0/src/steps/zsh.rs 
new/topgrade-17.8.0/src/steps/zsh.rs
--- old/topgrade-17.7.0/src/steps/zsh.rs        2026-07-10 19:22:50.000000000 
+0200
+++ new/topgrade-17.8.0/src/steps/zsh.rs        2026-07-15 20:39:23.000000000 
+0200
@@ -51,7 +51,11 @@
     print_separator("antidote");
 
     match update {
-        AntidoteUpdate::Shell => ctx.execute(zsh).args(["-i", "-c", "antidote 
update"]).status_checked(),
+        // Commands handed to an *interactive* zsh must end on a builtin 
(#2158).
+        AntidoteUpdate::Shell => ctx
+            .execute(zsh)
+            .args(["-i", "-c", "antidote update; exit $?"])
+            .status_checked(),
         AntidoteUpdate::Source(antidote) => ctx
             .execute(zsh)
             .args(["-c", r#"source "$1" && antidote update"#, "zsh"])
@@ -61,9 +65,10 @@
 }
 
 fn antidote_available_in_shell(ctx: &ExecutionContext, zsh: &Path) -> bool {
+    // Commands handed to an *interactive* zsh must end on a builtin (#2158).
     ctx.execute(zsh)
         .always()
-        .args(["-i", "-c", "antidote home"])
+        .args(["-i", "-c", "command -v antidote"])
         .output_checked()
         .is_ok()
 }

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

Reply via email to