From 11550c0100c65b4d3c763e6f2f48f562c5cd34b0 Mon Sep 17 00:00:00 2001 From: doublegate Date: Fri, 26 Jun 2026 23:37:16 -0400 Subject: [PATCH 1/5] =?UTF-8?q?chore(deps):=20master=20dependency=20bump?= =?UTF-8?q?=20=E2=80=94=20consolidate=2014=20Dependabot=20PRs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adjudicates and supersedes all 14 open Dependabot PRs in a single change. Cargo dependencies (workspace + crates): - toml 0.9 -> 1.0 (#83) - tracing-subscriber 0.3.22 -> 0.3.23 (#85) - rustls-webpki 0.103.9 -> 0.103.10+ (#87) - rand 0.9 -> 0.10 (#98) — recovery.rs: rand::Rng -> rand::RngExt for random_range - proptest 1.10 -> 1.11 (#92) - notify-rust 4.12 -> 4.16+ (#106) - tokio 1.50 -> 1.52 (#107) - clap 4.5 -> 4.6 (#108) - rustls 0.23.37 -> 0.23.39+ (#109) - webpki-roots 1.0.6 -> 1.0.7+ (#110) GitHub Actions: - codecov/codecov-action 5 -> 6 (#91) - actions/github-script 8 -> 9 (#97) - mozilla-actions/sccache-action 0.0.9 -> 0.0.10 (#105) - actions/dependency-review-action 4 -> 5 (#111) The only source change required is the rand 0.10 API migration (random_range moved to the RngExt trait). All workspace builds, clippy (Linux), and the core/protocol/tui/plugins/scripting plus integration test suites pass locally. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/ci.yml | 4 +- .github/workflows/master-pipeline.yml | 4 +- .github/workflows/security-audit.yml | 4 +- Cargo.lock | 163 ++++++++++++++++---------- Cargo.toml | 10 +- crates/rustirc-core/Cargo.toml | 2 +- crates/rustirc-core/src/recovery.rs | 2 +- 7 files changed, 113 insertions(+), 76 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 883e378..fe98ebe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -132,7 +132,7 @@ jobs: # Setup sccache with comprehensive GitHub cache service resilience - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.9 + uses: mozilla-actions/sccache-action@v0.0.10 continue-on-error: true id: sccache with: @@ -475,7 +475,7 @@ jobs: # Upload test results to Codecov for Test Analytics - name: Upload test results to Codecov if: ${{ !cancelled() }} - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@v6 continue-on-error: true with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/master-pipeline.yml b/.github/workflows/master-pipeline.yml index 5bba540..2ba210c 100644 --- a/.github/workflows/master-pipeline.yml +++ b/.github/workflows/master-pipeline.yml @@ -88,7 +88,7 @@ jobs: # Setup sccache with comprehensive resilience for GitHub cache service outages - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.9 + uses: mozilla-actions/sccache-action@v0.0.10 continue-on-error: true id: sccache with: @@ -463,7 +463,7 @@ jobs: RUSTC_WRAPPER: "" # Disable sccache for coverage to avoid conflicts - name: Upload coverage to Codecov - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@v6 with: files: ./cobertura.xml use_oidc: true diff --git a/.github/workflows/security-audit.yml b/.github/workflows/security-audit.yml index 0a40a34..bfcbb25 100644 --- a/.github/workflows/security-audit.yml +++ b/.github/workflows/security-audit.yml @@ -225,7 +225,7 @@ jobs: - name: Comment audit summary on PR if: github.event_name == 'pull_request' && github.event.pull_request continue-on-error: true - uses: actions/github-script@v8 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); @@ -255,7 +255,7 @@ jobs: uses: actions/checkout@v6 - name: Dependency Review - uses: actions/dependency-review-action@v4 + uses: actions/dependency-review-action@v5 with: config-file: './.github/dependency-review-config.yml' comment-summary-in-pr: true diff --git a/Cargo.lock b/Cargo.lock index 8330356..df17ffb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -108,9 +108,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -129,9 +129,9 @@ checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -604,6 +604,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" version = "0.4.44" @@ -647,9 +658,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.60" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -657,9 +668,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -669,9 +680,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck", "proc-macro2", @@ -895,6 +906,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "criterion" version = "0.8.2" @@ -1575,6 +1595,7 @@ dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", "wasip2", "wasip3", ] @@ -2182,9 +2203,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.182" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -2301,14 +2322,16 @@ dependencies = [ [[package]] name = "mac-notification-sys" -version = "0.6.10" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26053f9919b5b032f327ab94d830f2465c4c88138e9df23c8fcd305060a9b28b" +checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca" dependencies = [ "cc", + "log", "objc2 0.6.4", "objc2-foundation 0.3.2", "time", + "uuid", ] [[package]] @@ -2392,9 +2415,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "1.1.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "log", @@ -2539,9 +2562,9 @@ dependencies = [ [[package]] name = "notify-rust" -version = "4.12.0" +version = "4.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21af20a1b50be5ac5861f74af1a863da53a11c38684d9818d82f1c42f7fdc6c2" +checksum = "c5b4c1b4f2aa9f25f63a7a49d3dd0ed567b3670da15330a66b29434be899b891" dependencies = [ "futures-lite", "log", @@ -3390,15 +3413,15 @@ checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" [[package]] name = "proptest" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566cb3fdacef14c0737f9546df7cfeadbfbc9fef10991038bf5015d0c80532" +checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", "bitflags 2.11.0", "num-traits", - "rand 0.9.3", + "rand 0.9.4", "rand_chacha", "rand_xorshift", "regex-syntax", @@ -3463,14 +3486,25 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha", "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.9.0" @@ -3496,6 +3530,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_xorshift" version = "0.4.0" @@ -3780,7 +3820,7 @@ dependencies = [ "criterion", "dirs", "pretty_assertions", - "rand 0.9.3", + "rand 0.10.1", "rustirc-protocol", "rustls", "rustls-pki-types", @@ -3900,9 +3940,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.37" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", "log", @@ -4064,9 +4104,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -4078,7 +4118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -4612,9 +4652,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.50.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -4629,9 +4669,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -4684,33 +4724,24 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.12+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.0.0+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] @@ -4722,25 +4753,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" dependencies = [ "indexmap", - "toml_datetime 1.0.0+spec-1.1.0", + "toml_datetime", "toml_parser", - "winnow", + "winnow 0.7.15", ] [[package]] name = "toml_parser" -version = "1.0.9+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.3", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -4788,9 +4819,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -5248,9 +5279,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf" dependencies = [ "rustls-pki-types", ] @@ -6024,6 +6055,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" + [[package]] name = "winsafe" version = "0.0.19" @@ -6222,7 +6259,7 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow", + "winnow 0.7.15", "zbus_macros", "zbus_names", "zvariant", @@ -6250,7 +6287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" dependencies = [ "serde", - "winnow", + "winnow 0.7.15", "zvariant", ] @@ -6315,7 +6352,7 @@ dependencies = [ "endi", "enumflags2", "serde", - "winnow", + "winnow 0.7.15", "zvariant_derive", "zvariant_utils", ] @@ -6343,7 +6380,7 @@ dependencies = [ "quote", "serde", "syn 2.0.117", - "winnow", + "winnow 0.7.15", ] [[patch.unused]] diff --git a/Cargo.toml b/Cargo.toml index a34c54c..704c718 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ rustdoc-args = ["--cfg", "docsrs"] [workspace.dependencies] # Async runtime -tokio = { version = "1.49", features = ["full"] } +tokio = { version = "1.52", features = ["full"] } tokio-rustls = "0.26" # TLS @@ -27,7 +27,7 @@ webpki-roots = "1.0" # Serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.148" -toml = "0.9" +toml = "1.0" # Error handling anyhow = "1.0" @@ -35,7 +35,7 @@ thiserror = "2.0" # Logging tracing = "0.1.44" -tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } +tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } # Text processing regex = "1.12.1" @@ -59,13 +59,13 @@ mlua = { version = "0.11", features = ["lua54", "vendored", "async", "send"] } # Testing mockall = "0.13" -proptest = "1.9" +proptest = "1.11" tokio-test = "0.4" pretty_assertions = "1.4" criterion = { version = "0.8.1", features = ["html_reports"] } # CLI -clap = { version = "4.5.53", features = ["derive"] } +clap = { version = "4.6.1", features = ["derive"] } [package] name = "rustirc" diff --git a/crates/rustirc-core/Cargo.toml b/crates/rustirc-core/Cargo.toml index a5b8659..3fd5675 100644 --- a/crates/rustirc-core/Cargo.toml +++ b/crates/rustirc-core/Cargo.toml @@ -19,7 +19,7 @@ rustls = "0.23" tokio-rustls = "0.26" rustls-pki-types = "1.13.2" webpki-roots = "1.0" -rand = "0.9" +rand = "0.10" base64 = "0.22" zeroize = { version = "1.8", features = ["zeroize_derive"] } diff --git a/crates/rustirc-core/src/recovery.rs b/crates/rustirc-core/src/recovery.rs index a6ba916..5d36198 100644 --- a/crates/rustirc-core/src/recovery.rs +++ b/crates/rustirc-core/src/recovery.rs @@ -264,7 +264,7 @@ impl ConnectionRecovery { // Add jitter if enabled if self.config.jitter { - use rand::Rng; + use rand::RngExt; let mut rng = rand::rng(); let jitter_factor = rng.random_range(0.8..1.2); delay *= jitter_factor; From 8f1838bbcd7f3a97e3f35dbcfd2e96c70872549e Mon Sep 17 00:00:00 2001 From: doublegate Date: Fri, 26 Jun 2026 23:40:14 -0400 Subject: [PATCH 2/5] ci(deps): allow mac-notification-sys non-SPDX license in dependency review notify-rust 4.18 pulls mac-notification-sys 0.6.15, whose crate metadata declares the deprecated "MIT/Apache-2.0" slash-form license expression. GitHub's dependency-review parser cannot resolve it and renders it as LicenseRef-bad-mitapache-2.0, failing the license check. Both MIT and Apache-2.0 are already in allow-licenses, so the crate is genuinely permissive; add it to allow-dependencies-licenses like the other crates with complex license expressions. Co-Authored-By: Claude Opus 4.8 --- .github/dependency-review-config.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/dependency-review-config.yml b/.github/dependency-review-config.yml index 38fa7bb..d8443fe 100644 --- a/.github/dependency-review-config.yml +++ b/.github/dependency-review-config.yml @@ -72,6 +72,10 @@ allow-dependencies-licenses: - pkg:cargo/iced_core - pkg:cargo/iced_widget - pkg:cargo/iced_runtime + # Notification backend (macOS-only). Genuinely MIT/Apache-2.0, but its + # crate metadata uses a non-SPDX "MIT/Apache-2.0" string that GitHub's + # license parser cannot resolve (rendered as LicenseRef-bad-mitapache-2.0). + - pkg:cargo/mac-notification-sys # Deny specific packages using purl format deny-packages: [] From 4fc2cb3aa6cacecc76cf8e3be71badbdd6aa56a0 Mon Sep 17 00:00:00 2001 From: doublegate Date: Sat, 27 Jun 2026 00:07:23 -0400 Subject: [PATCH 3/5] =?UTF-8?q?chore(deps):=20address=20review=20feedback?= =?UTF-8?q?=20=E2=80=94=20raise=20MSRV=20to=201.85,=20simplify=20rand=20us?= =?UTF-8?q?age?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adjudicates the bot review comments on the master dependency-bump PR: - gemini-code-assist: use the top-level rand::random_range() in recovery.rs instead of importing RngExt and spinning up a thread RNG. - Copilot (x2): clap 4.6 and rand 0.10 both declare rust-version = 1.85, which is inconsistent with the repo's previously declared MSRV of 1.75. Since this PR's purpose is to adopt those bumps, raise the project MSRV to 1.85 across Cargo.toml, clippy.toml, the CI msrv toolchain, and the docs (README, technology-stack, getting-started, copilot-instructions, bug_report template). Co-Authored-By: Claude Opus 4.8 --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/copilot-instructions.md | 2 +- .github/workflows/ci.yml | 2 +- Cargo.toml | 2 +- README.md | 2 +- clippy.toml | 2 +- crates/rustirc-core/src/recovery.rs | 4 +--- docs/development/getting-started.md | 4 ++-- docs/technology-stack.md | 2 +- 9 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4ff94c9..e474b69 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -35,7 +35,7 @@ If applicable, add screenshots to help explain your problem. - **OS**: [e.g. Ubuntu 22.04, Windows 11, macOS 13] - **RustIRC Version**: [e.g. 0.1.0, git commit hash] -- **Rust Version**: [e.g. 1.75.0] +- **Rust Version**: [e.g. 1.85.0] - **Interface**: [GUI/TUI] ## IRC Server Details diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index cfa4494..6a73258 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -11,7 +11,7 @@ RustIRC is a modern IRC client built in Rust that combines the best features fro ## Technology Stack -- **Language**: Rust (MSRV: 1.75+) +- **Language**: Rust (MSRV: 1.85+) - **Async Runtime**: Tokio for network I/O - **GUI Framework**: Iced 0.13.1 with Material Design 3 components - **TUI Framework**: ratatui for terminal interface diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe98ebe..21bb1a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -526,7 +526,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: 1.75.0 + toolchain: 1.85.0 - uses: Swatinem/rust-cache@v2 - name: Check MSRV with sccache fallback shell: bash diff --git a/Cargo.toml b/Cargo.toml index 704c718..0b38947 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ clap = { version = "4.6.1", features = ["derive"] } name = "rustirc" version = "0.4.2" edition = "2021" -rust-version = "1.75.0" +rust-version = "1.85.0" authors = ["RustIRC Contributors"] description = "A powerful, modern IRC client combining the best of mIRC, HexChat, and WeeChat" documentation = "https://docs.rs/rustirc" diff --git a/README.md b/README.md index 0982091..46f75a6 100644 --- a/README.md +++ b/README.md @@ -337,7 +337,7 @@ RustIRC is being developed in 7 carefully planned phases over 24-26 weeks: ### Core Technologies -- **Language**: Rust (Edition 2021, MSRV 1.75.0) +- **Language**: Rust (Edition 2021, MSRV 1.85.0) - **Async Runtime**: Tokio (multi-threaded, work-stealing) - **GUI Framework**: Enhanced Iced 0.14.0 with Material Design 3 - WGPU backend for GPU acceleration diff --git a/clippy.toml b/clippy.toml index 74a8545..2beaa51 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,7 +1,7 @@ # RustIRC Clippy Configuration # Set MSRV for clippy -msrv = "1.75.0" +msrv = "1.85.0" # Lint configuration avoid-breaking-exported-api = true diff --git a/crates/rustirc-core/src/recovery.rs b/crates/rustirc-core/src/recovery.rs index 5d36198..9fe51fe 100644 --- a/crates/rustirc-core/src/recovery.rs +++ b/crates/rustirc-core/src/recovery.rs @@ -264,9 +264,7 @@ impl ConnectionRecovery { // Add jitter if enabled if self.config.jitter { - use rand::RngExt; - let mut rng = rand::rng(); - let jitter_factor = rng.random_range(0.8..1.2); + let jitter_factor = rand::random_range(0.8..1.2); delay *= jitter_factor; } diff --git a/docs/development/getting-started.md b/docs/development/getting-started.md index 9073f77..7f784e9 100644 --- a/docs/development/getting-started.md +++ b/docs/development/getting-started.md @@ -2,7 +2,7 @@ ## Prerequisites -- Rust 1.75.0 or later +- Rust 1.85.0 or later - Git - C compiler (for some dependencies) - pkg-config (Linux/macOS) @@ -265,7 +265,7 @@ cargo doc --document-private-items --open ### Common Issues #### Compilation Errors -- Ensure Rust version is 1.75.0+: `rustup update` +- Ensure Rust version is 1.85.0+: `rustup update` - Clean build: `cargo clean && cargo build` - Update dependencies: `cargo update` diff --git a/docs/technology-stack.md b/docs/technology-stack.md index 4a6e3cf..747d585 100644 --- a/docs/technology-stack.md +++ b/docs/technology-stack.md @@ -217,7 +217,7 @@ ## Version Policy ### Rust Version -- **MSRV**: 1.75.0 +- **MSRV**: 1.85.0 - Stable channel primary - Beta channel for testing - Feature flags for newer features From d6f246f04d9e13f827291009fffdb9767cfcb2b3 Mon Sep 17 00:00:00 2001 From: doublegate Date: Sat, 27 Jun 2026 00:10:36 -0400 Subject: [PATCH 4/5] chore(deps): correct MSRV to 1.89 (true dependency-tree minimum) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auditing the locked dependency tree shows the real minimum supported Rust is 1.89.0, driven by notify-rust 4.18 (rust-version = 1.89), with iced 0.14 / wgpu 27 at 1.88 and zbus 5.14 at 1.87. 1.85 (clap/rand) was necessary but not sufficient. Note the previously declared 1.75 was already unattainable since iced 0.14 (pre-existing) requires 1.88 — the MSRV CI job only ever passed via a full build-cache hit, never a real 1.75 compile. This sets an honest, enforceable MSRV. Co-Authored-By: Claude Opus 4.8 --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/copilot-instructions.md | 2 +- .github/workflows/ci.yml | 2 +- Cargo.toml | 2 +- README.md | 2 +- clippy.toml | 2 +- docs/development/getting-started.md | 4 ++-- docs/technology-stack.md | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e474b69..ede4e52 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -35,7 +35,7 @@ If applicable, add screenshots to help explain your problem. - **OS**: [e.g. Ubuntu 22.04, Windows 11, macOS 13] - **RustIRC Version**: [e.g. 0.1.0, git commit hash] -- **Rust Version**: [e.g. 1.85.0] +- **Rust Version**: [e.g. 1.89.0] - **Interface**: [GUI/TUI] ## IRC Server Details diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 6a73258..5493af7 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -11,7 +11,7 @@ RustIRC is a modern IRC client built in Rust that combines the best features fro ## Technology Stack -- **Language**: Rust (MSRV: 1.85+) +- **Language**: Rust (MSRV: 1.89+) - **Async Runtime**: Tokio for network I/O - **GUI Framework**: Iced 0.13.1 with Material Design 3 components - **TUI Framework**: ratatui for terminal interface diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21bb1a2..6a69d97 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -526,7 +526,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: 1.85.0 + toolchain: 1.89.0 - uses: Swatinem/rust-cache@v2 - name: Check MSRV with sccache fallback shell: bash diff --git a/Cargo.toml b/Cargo.toml index 0b38947..e53ddd1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ clap = { version = "4.6.1", features = ["derive"] } name = "rustirc" version = "0.4.2" edition = "2021" -rust-version = "1.85.0" +rust-version = "1.89.0" authors = ["RustIRC Contributors"] description = "A powerful, modern IRC client combining the best of mIRC, HexChat, and WeeChat" documentation = "https://docs.rs/rustirc" diff --git a/README.md b/README.md index 46f75a6..fd531a7 100644 --- a/README.md +++ b/README.md @@ -337,7 +337,7 @@ RustIRC is being developed in 7 carefully planned phases over 24-26 weeks: ### Core Technologies -- **Language**: Rust (Edition 2021, MSRV 1.85.0) +- **Language**: Rust (Edition 2021, MSRV 1.89.0) - **Async Runtime**: Tokio (multi-threaded, work-stealing) - **GUI Framework**: Enhanced Iced 0.14.0 with Material Design 3 - WGPU backend for GPU acceleration diff --git a/clippy.toml b/clippy.toml index 2beaa51..3ab2816 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,7 +1,7 @@ # RustIRC Clippy Configuration # Set MSRV for clippy -msrv = "1.85.0" +msrv = "1.89.0" # Lint configuration avoid-breaking-exported-api = true diff --git a/docs/development/getting-started.md b/docs/development/getting-started.md index 7f784e9..be9467c 100644 --- a/docs/development/getting-started.md +++ b/docs/development/getting-started.md @@ -2,7 +2,7 @@ ## Prerequisites -- Rust 1.85.0 or later +- Rust 1.89.0 or later - Git - C compiler (for some dependencies) - pkg-config (Linux/macOS) @@ -265,7 +265,7 @@ cargo doc --document-private-items --open ### Common Issues #### Compilation Errors -- Ensure Rust version is 1.85.0+: `rustup update` +- Ensure Rust version is 1.89.0+: `rustup update` - Clean build: `cargo clean && cargo build` - Update dependencies: `cargo update` diff --git a/docs/technology-stack.md b/docs/technology-stack.md index 747d585..1b950af 100644 --- a/docs/technology-stack.md +++ b/docs/technology-stack.md @@ -217,7 +217,7 @@ ## Version Policy ### Rust Version -- **MSRV**: 1.85.0 +- **MSRV**: 1.89.0 - Stable channel primary - Beta channel for testing - Feature flags for newer features From dbd2fa9ad7572c09ac9eb7ffa7ed4dd6e5975c01 Mon Sep 17 00:00:00 2001 From: doublegate Date: Sat, 27 Jun 2026 00:32:43 -0400 Subject: [PATCH 5/5] style(lint): use is_multiple_of() for modulo checks (MSRV 1.89) Raising the clippy.toml msrv to 1.89 enables clippy::manual_is_multiple_of (the is_multiple_of method stabilized in Rust 1.87). Replace the two manual modulo-zero checks it flags: - rustirc-tui state.rs: total_seconds % 60 == 0 -> .is_multiple_of(60) - rustirc-gui rich_text_editor.rs: len() % n != 0 -> !len().is_multiple_of(n) Co-Authored-By: Claude Opus 4.8 --- crates/rustirc-gui/src/components/organisms/rich_text_editor.rs | 2 +- crates/rustirc-tui/src/state.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/rustirc-gui/src/components/organisms/rich_text_editor.rs b/crates/rustirc-gui/src/components/organisms/rich_text_editor.rs index 69082d6..0bc8563 100644 --- a/crates/rustirc-gui/src/components/organisms/rich_text_editor.rs +++ b/crates/rustirc-gui/src/components/organisms/rich_text_editor.rs @@ -468,7 +468,7 @@ impl RichTextEditor { } // Add remaining emojis if any - if COMMON_EMOJIS.len() % emojis_per_row != 0 { + if !COMMON_EMOJIS.len().is_multiple_of(emojis_per_row) { emoji_grid = emoji_grid.push(container(current_row).padding([0, 8])); } diff --git a/crates/rustirc-tui/src/state.rs b/crates/rustirc-tui/src/state.rs index 9de33e6..0b3c5f4 100644 --- a/crates/rustirc-tui/src/state.rs +++ b/crates/rustirc-tui/src/state.rs @@ -721,7 +721,7 @@ impl TuiState { // Log timestamp update for debugging let total_seconds = epoch_duration.as_secs(); - if total_seconds % 60 == 0 { + if total_seconds.is_multiple_of(60) { // Every minute println!("Timestamp update: {total_seconds} seconds since UNIX_EPOCH"); }