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
