diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 4ff94c9..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.75.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 cfa4494..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.75+) +- **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/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: [] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 883e378..6a69d97 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 }} @@ -526,7 +526,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: - toolchain: 1.75.0 + toolchain: 1.89.0 - uses: Swatinem/rust-cache@v2 - name: Check MSRV with sccache fallback shell: bash 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..e53ddd1 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,19 +59,19 @@ 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" version = "0.4.2" edition = "2021" -rust-version = "1.75.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 0982091..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.75.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 74a8545..3ab2816 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,7 +1,7 @@ # RustIRC Clippy Configuration # Set MSRV for clippy -msrv = "1.75.0" +msrv = "1.89.0" # Lint configuration avoid-breaking-exported-api = true 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..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::Rng; - 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/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"); } diff --git a/docs/development/getting-started.md b/docs/development/getting-started.md index 9073f77..be9467c 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.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.75.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 4a6e3cf..1b950af 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.89.0 - Stable channel primary - Beta channel for testing - Feature flags for newer features