From 06f2496b598875146ed281e55a7abe1c2ce1c2df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 03:07:04 +0000 Subject: [PATCH 1/9] Bump clap from 4.5.51 to 4.5.53 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.51 to 4.5.53. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.51...clap_complete-v4.5.53) --- updated-dependencies: - dependency-name: clap dependency-version: 4.5.53 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60f2d36e..b1b61a28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -604,9 +604,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -614,9 +614,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", diff --git a/Cargo.toml b/Cargo.toml index ad2bf111..27d74ee7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ rfd = "0.15.4" phf = "0.13.1" phf_shared = "0.13.1" splines = "5.0.0" -clap = { version = "4.5.51", features = ["derive"] } +clap = { version = "4.5.53", features = ["derive"] } tokio = { version = "1.48.0", features = ["macros"] } async-channel = "2.5.0" semver = "1.0.27" From 504631fe040131f55ad3f80449852c4086059e54 Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Fri, 21 Nov 2025 01:31:10 +0100 Subject: [PATCH 2/9] add badges in README's Download section --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 263cc7f0..c7463d75 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,9 @@ ## _Support Sniffnet's development_ 💖 ## Download + + +
From c583c1ba1319153b6b6ee961078322a207a93b0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 03:06:13 +0000 Subject: [PATCH 3/9] Bump actions/checkout from 5 to 6 Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/crates.yml | 2 +- .github/workflows/docker.yml | 2 +- .github/workflows/package.yml | 12 ++++++------ .github/workflows/rust.yml | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/crates.yml b/.github/workflows/crates.yml index fbe4790f..2439aafa 100644 --- a/.github/workflows/crates.yml +++ b/.github/workflows/crates.yml @@ -7,7 +7,7 @@ jobs: crates: runs-on: macos-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable - name: Publish to crates.io diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a7693ffa..11e56b7b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Extract version from Cargo.toml id: cargo-version diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 24fce212..92df5441 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Linux dependencies if: matrix.os == 'ubuntu' @@ -130,7 +130,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install dependencies run: apt-get update -y && apt-get install -y curl build-essential @@ -183,7 +183,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install dependencies run: apt-get update -y && apt-get install -y git build-essential graphicsmagick-imagemagick-compat wget file desktop-file-utils libfuse2 @@ -235,7 +235,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install dependencies run: dnf update -y && dnf install -y @development-tools patchelf @@ -282,7 +282,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Rust uses: dtolnay/rust-toolchain@stable @@ -348,7 +348,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install dependencies shell: powershell diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 82704275..717014bd 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -32,7 +32,7 @@ jobs: - os: windows steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy From ef5d3b7f22b42bfa3bb6b9aa4546a720ac3ccfa0 Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Fri, 21 Nov 2025 13:34:38 +0100 Subject: [PATCH 4/9] update README header picture --- resources/repository/header_repository.png | Bin 24766 -> 29375 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/repository/header_repository.png b/resources/repository/header_repository.png index b6b7183dc72b164f4c39c4bca3181efccc928f3c..8d245abeb0a6167ab353295779ffe0bad114ce6f 100644 GIT binary patch literal 29375 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 literal 24766 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 From 7cbb2ad395f89b896b3bf283a97b026afaa4beb7 Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Thu, 27 Nov 2025 16:50:35 +0100 Subject: [PATCH 5/9] use sniffnet.app domain --- .design/README.md | 2 +- .well-known/funding-manifest-urls | 2 +- Cargo.toml | 2 +- README.md | 6 +++--- SECURITY.md | 2 +- giscus.json | 8 ++++++-- src/gui/pages/thumbnail_page.rs | 4 ++-- src/utils/formatted_strings.rs | 2 +- src/utils/types/web_page.rs | 8 ++++---- 9 files changed, 20 insertions(+), 16 deletions(-) diff --git a/.design/README.md b/.design/README.md index b7a89ff5..7ea55936 100644 --- a/.design/README.md +++ b/.design/README.md @@ -41,7 +41,7 @@ ## 🚢 How to contribute design ## 🚀 The Main Product -Sniffnet can be downloaded from [here](https://sniffnet.net/download/). +Sniffnet can be downloaded from [here](https://sniffnet.app/download/). ### Target audience diff --git a/.well-known/funding-manifest-urls b/.well-known/funding-manifest-urls index 9fa7bcf5..c2723b47 100644 --- a/.well-known/funding-manifest-urls +++ b/.well-known/funding-manifest-urls @@ -1 +1 @@ -https://sniffnet.net/funding.json \ No newline at end of file +https://sniffnet.app/funding.json \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 27d74ee7..df2bd2cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Giuliano Bellini "] edition = "2024" description = "Application to comfortably monitor your network traffic" readme = "README.md" -homepage = "https://sniffnet.net" +homepage = "https://sniffnet.app" repository = "https://github.com/GyulyVGC/sniffnet" documentation = "https://github.com/GyulyVGC/sniffnet/wiki" license = "MIT OR Apache-2.0" diff --git a/README.md b/README.md index c7463d75..fb9cba44 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ - + Application to comfortably monitor your Internet traffic.
@@ -172,10 +172,10 @@ ## Acknowledgements ## Stay in the loop Wait... there's more!
Sniffnet is rapidly evolving, and new features are added on a regular basis.
-Follow the news and Sniffnet socials to never miss an update. +Follow the news and Sniffnet socials to never miss an update.
- Bluesky  + Bluesky  LinkedIn  Mastodon  Telegram  diff --git a/SECURITY.md b/SECURITY.md index d5424e43..e92309e6 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -3,7 +3,7 @@ # Security Policy We consider the security of Sniffnet a top priority.
The application is developed with a **security-first approach**: it has always been designed to **protect users' data privacy and system integrity**, -as demonstrated by [security audits](https://sniffnet.net/news/security-audit/) assessing the application safety. +as demonstrated by [security audits](https://sniffnet.app/news/security-audit/) assessing the application safety. But no matter how much effort we put into securing the app, there can still be **vulnerabilities** present. diff --git a/giscus.json b/giscus.json index 80f1a31a..21ae364b 100644 --- a/giscus.json +++ b/giscus.json @@ -1,5 +1,9 @@ { - "origins": ["https://sniffnet.net"], - "originsRegex": ["http://localhost:[0-9]+"], + "origins": [ + "https://sniffnet.app" + ], + "originsRegex": [ + "http://localhost:[0-9]+" + ], "defaultCommentOrder": "oldest" } \ No newline at end of file diff --git a/src/gui/pages/thumbnail_page.rs b/src/gui/pages/thumbnail_page.rs index 69e8c929..45fd7a75 100644 --- a/src/gui/pages/thumbnail_page.rs +++ b/src/gui/pages/thumbnail_page.rs @@ -238,8 +238,8 @@ fn test_clip_text() { ); assert_eq!( - clip_text(" \n\t sniffnet.net ", MAX_CHARS_HOST), - "sniffnet.net" + clip_text(" \n\t sniffnet.app ", MAX_CHARS_HOST), + "sniffnet.app" ); assert_eq!( clip_text(" protocol90 23456 \n ", MAX_CHARS_SERVICE), diff --git a/src/utils/formatted_strings.rs b/src/utils/formatted_strings.rs index 8dcabc23..c7ea4261 100644 --- a/src/utils/formatted_strings.rs +++ b/src/utils/formatted_strings.rs @@ -28,7 +28,7 @@ pub fn print_cli_welcome_message() { │ │\n\ │ Sniffnet {ver} │\n\ │ │\n\ -│ → Website: https://sniffnet.net │\n\ +│ → Website: https://sniffnet.app │\n\ │ → GitHub: https://github.com/GyulyVGC/sniffnet │\n\ │ │\n\ ╰────────────────────────────────────────────────────────────────────╯\n\n" diff --git a/src/utils/types/web_page.rs b/src/utils/types/web_page.rs index 3795bc01..7e60357e 100644 --- a/src/utils/types/web_page.rs +++ b/src/utils/types/web_page.rs @@ -27,10 +27,10 @@ impl WebPage { pub fn get_url(&self) -> &str { match self { WebPage::Repo => "https://github.com/GyulyVGC/sniffnet", - // WebPage::Website => "https://www.sniffnet.net", - WebPage::WebsiteSponsor => "https://www.sniffnet.net/sponsor", - WebPage::WebsiteDownload => "https://www.sniffnet.net/download", - WebPage::WebsiteNews => "https://www.sniffnet.net/news", + // WebPage::Website => "https://www.sniffnet.app", + WebPage::WebsiteSponsor => "https://www.sniffnet.app/sponsor", + WebPage::WebsiteDownload => "https://www.sniffnet.app/download", + WebPage::WebsiteNews => "https://www.sniffnet.app/news", WebPage::Roadmap => "https://whimsical.com/sniffnet-roadmap-Damodrdfx22V9jGnpHSCGo", WebPage::Issues => "https://github.com/GyulyVGC/sniffnet/issues", WebPage::IssueLanguages => "https://github.com/GyulyVGC/sniffnet/issues/60", From da5ce20bdff579723c130b7a86221b341f976696 Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Thu, 27 Nov 2025 20:12:40 +0100 Subject: [PATCH 6/9] Revert "use sniffnet.app domain" This reverts commit 7cbb2ad395f89b896b3bf283a97b026afaa4beb7. --- .design/README.md | 2 +- .well-known/funding-manifest-urls | 2 +- Cargo.toml | 2 +- README.md | 6 +++--- SECURITY.md | 2 +- giscus.json | 8 ++------ src/gui/pages/thumbnail_page.rs | 4 ++-- src/utils/formatted_strings.rs | 2 +- src/utils/types/web_page.rs | 8 ++++---- 9 files changed, 16 insertions(+), 20 deletions(-) diff --git a/.design/README.md b/.design/README.md index 7ea55936..b7a89ff5 100644 --- a/.design/README.md +++ b/.design/README.md @@ -41,7 +41,7 @@ ## 🚢 How to contribute design ## 🚀 The Main Product -Sniffnet can be downloaded from [here](https://sniffnet.app/download/). +Sniffnet can be downloaded from [here](https://sniffnet.net/download/). ### Target audience diff --git a/.well-known/funding-manifest-urls b/.well-known/funding-manifest-urls index c2723b47..9fa7bcf5 100644 --- a/.well-known/funding-manifest-urls +++ b/.well-known/funding-manifest-urls @@ -1 +1 @@ -https://sniffnet.app/funding.json \ No newline at end of file +https://sniffnet.net/funding.json \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index df2bd2cb..27d74ee7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Giuliano Bellini "] edition = "2024" description = "Application to comfortably monitor your network traffic" readme = "README.md" -homepage = "https://sniffnet.app" +homepage = "https://sniffnet.net" repository = "https://github.com/GyulyVGC/sniffnet" documentation = "https://github.com/GyulyVGC/sniffnet/wiki" license = "MIT OR Apache-2.0" diff --git a/README.md b/README.md index fb9cba44..c7463d75 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ - + Application to comfortably monitor your Internet traffic.
@@ -172,10 +172,10 @@ ## Acknowledgements ## Stay in the loop Wait... there's more!
Sniffnet is rapidly evolving, and new features are added on a regular basis.
-Follow the news and Sniffnet socials to never miss an update. +Follow the news and Sniffnet socials to never miss an update.
- Bluesky  + Bluesky  LinkedIn  Mastodon  Telegram  diff --git a/SECURITY.md b/SECURITY.md index e92309e6..d5424e43 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -3,7 +3,7 @@ # Security Policy We consider the security of Sniffnet a top priority.
The application is developed with a **security-first approach**: it has always been designed to **protect users' data privacy and system integrity**, -as demonstrated by [security audits](https://sniffnet.app/news/security-audit/) assessing the application safety. +as demonstrated by [security audits](https://sniffnet.net/news/security-audit/) assessing the application safety. But no matter how much effort we put into securing the app, there can still be **vulnerabilities** present. diff --git a/giscus.json b/giscus.json index 21ae364b..80f1a31a 100644 --- a/giscus.json +++ b/giscus.json @@ -1,9 +1,5 @@ { - "origins": [ - "https://sniffnet.app" - ], - "originsRegex": [ - "http://localhost:[0-9]+" - ], + "origins": ["https://sniffnet.net"], + "originsRegex": ["http://localhost:[0-9]+"], "defaultCommentOrder": "oldest" } \ No newline at end of file diff --git a/src/gui/pages/thumbnail_page.rs b/src/gui/pages/thumbnail_page.rs index 45fd7a75..69e8c929 100644 --- a/src/gui/pages/thumbnail_page.rs +++ b/src/gui/pages/thumbnail_page.rs @@ -238,8 +238,8 @@ fn test_clip_text() { ); assert_eq!( - clip_text(" \n\t sniffnet.app ", MAX_CHARS_HOST), - "sniffnet.app" + clip_text(" \n\t sniffnet.net ", MAX_CHARS_HOST), + "sniffnet.net" ); assert_eq!( clip_text(" protocol90 23456 \n ", MAX_CHARS_SERVICE), diff --git a/src/utils/formatted_strings.rs b/src/utils/formatted_strings.rs index c7ea4261..8dcabc23 100644 --- a/src/utils/formatted_strings.rs +++ b/src/utils/formatted_strings.rs @@ -28,7 +28,7 @@ pub fn print_cli_welcome_message() { │ │\n\ │ Sniffnet {ver} │\n\ │ │\n\ -│ → Website: https://sniffnet.app │\n\ +│ → Website: https://sniffnet.net │\n\ │ → GitHub: https://github.com/GyulyVGC/sniffnet │\n\ │ │\n\ ╰────────────────────────────────────────────────────────────────────╯\n\n" diff --git a/src/utils/types/web_page.rs b/src/utils/types/web_page.rs index 7e60357e..3795bc01 100644 --- a/src/utils/types/web_page.rs +++ b/src/utils/types/web_page.rs @@ -27,10 +27,10 @@ impl WebPage { pub fn get_url(&self) -> &str { match self { WebPage::Repo => "https://github.com/GyulyVGC/sniffnet", - // WebPage::Website => "https://www.sniffnet.app", - WebPage::WebsiteSponsor => "https://www.sniffnet.app/sponsor", - WebPage::WebsiteDownload => "https://www.sniffnet.app/download", - WebPage::WebsiteNews => "https://www.sniffnet.app/news", + // WebPage::Website => "https://www.sniffnet.net", + WebPage::WebsiteSponsor => "https://www.sniffnet.net/sponsor", + WebPage::WebsiteDownload => "https://www.sniffnet.net/download", + WebPage::WebsiteNews => "https://www.sniffnet.net/news", WebPage::Roadmap => "https://whimsical.com/sniffnet-roadmap-Damodrdfx22V9jGnpHSCGo", WebPage::Issues => "https://github.com/GyulyVGC/sniffnet/issues", WebPage::IssueLanguages => "https://github.com/GyulyVGC/sniffnet/issues/60", From e33f1fd5994e26284e601bc783a84097aa28e3c8 Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Fri, 28 Nov 2025 17:27:08 +0100 Subject: [PATCH 7/9] update deps --- Cargo.lock | 412 ++++++++++++++++++++++++++++++----------------------- Cargo.toml | 6 +- 2 files changed, 236 insertions(+), 182 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b1b61a28..acc2e277 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,22 +159,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -350,7 +350,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -385,7 +385,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -514,7 +514,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -525,9 +525,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "calloop" @@ -543,23 +543,48 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "calloop" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" +dependencies = [ + "bitflags 2.10.0", + "polling", + "rustix 1.1.2", + "slab", + "tracing", +] + [[package]] name = "calloop-wayland-source" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ - "calloop", + "calloop 0.13.0", "rustix 0.38.44", "wayland-backend", "wayland-client", ] [[package]] -name = "cc" -version = "1.2.44" +name = "calloop-wayland-source" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.3", + "rustix 1.1.2", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" dependencies = [ "find-msvc-tools", "jobserver", @@ -599,7 +624,7 @@ checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ "iana-time-zone", "num-traits", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -633,7 +658,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -954,9 +979,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", @@ -1092,7 +1117,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -1196,9 +1221,9 @@ dependencies = [ [[package]] name = "endi" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" [[package]] name = "enumflags2" @@ -1218,7 +1243,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -1326,9 +1351,9 @@ dependencies = [ [[package]] name = "exr" -version = "1.73.0" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" dependencies = [ "bit_field", "half", @@ -1373,9 +1398,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "finl_unicode" @@ -1484,7 +1509,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -1578,7 +1603,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -1629,9 +1654,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.9" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -1644,7 +1669,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ "rustix 1.1.2", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -1841,9 +1866,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "hassle-rs" @@ -1901,12 +1926,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -1941,9 +1965,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", @@ -1996,9 +2020,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" dependencies = [ "base64", "bytes", @@ -2359,12 +2383,12 @@ checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" [[package]] name = "indexmap" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", ] [[package]] @@ -2390,9 +2414,9 @@ checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -2462,9 +2486,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -2552,7 +2576,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -2645,9 +2669,9 @@ dependencies = [ [[package]] name = "lyon_geom" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e16770d760c7848b0c1c2d209101e408207a65168109509f8483837a36cf2e7" +checksum = "e260b6de923e6e47adfedf6243013a7a874684165a6a277594ee3906021b2343" dependencies = [ "arrayvec", "euclid", @@ -2898,7 +2922,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -2960,7 +2984,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -3279,9 +3303,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.74" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ "bitflags 2.10.0", "cfg-if", @@ -3300,7 +3324,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -3311,9 +3335,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.110" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -3323,9 +3347,9 @@ dependencies = [ [[package]] name = "orbclient" -version = "0.3.48" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" dependencies = [ "libredox", ] @@ -3371,7 +3395,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -3404,7 +3428,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -3458,7 +3482,7 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3469,9 +3493,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pcap" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83cdabc34a80d9ec3563694cc31423fba6bb9bab4f31a9a5d5b85f29bd6d660a" +checksum = "bbd2eecc2ddc671ec563b5b39f846556aade68a65d1afb14d8fe6b30b0457d75" dependencies = [ "bitflags 1.3.2", "errno 0.2.8", @@ -3548,7 +3572,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -3592,7 +3616,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -3738,7 +3762,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "version_check", "yansi", ] @@ -3824,9 +3848,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -3904,9 +3928,9 @@ checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" [[package]] name = "rangemap" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" +checksum = "acbbbbea733ec66275512d0b9694f34102e7d5406fdbe2ad8d21b28dce92887c" [[package]] name = "raw-window-handle" @@ -4085,9 +4109,9 @@ dependencies = [ [[package]] name = "rfd" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" dependencies = [ "ashpd", "block2 0.6.2", @@ -4104,7 +4128,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -4173,7 +4197,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.108", + "syn 2.0.111", "unicode-ident", ] @@ -4236,9 +4260,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.34" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "once_cell", "ring", @@ -4250,9 +4274,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" dependencies = [ "web-time", "zeroize", @@ -4271,9 +4295,9 @@ dependencies = [ [[package]] name = "rustrict" -version = "0.7.36" +version = "0.7.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93719b9aa6a53f9beae62fe36f34ed88226be314aea6829031ed0f878ca493d" +checksum = "35dd76e4d0de668100c291a402c3ee627edcf4c622af8a36700f49ea88ffadd6" dependencies = [ "arrayvec", "bitflags 1.3.2", @@ -4362,7 +4386,7 @@ dependencies = [ "ab_glyph", "log", "memmap2", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "tiny-skia", ] @@ -4434,7 +4458,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -4459,7 +4483,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -4512,7 +4536,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -4534,9 +4558,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" dependencies = [ "libc", ] @@ -4600,8 +4624,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ "bitflags 2.10.0", - "calloop", - "calloop-wayland-source", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", "cursor-icon", "libc", "log", @@ -4619,13 +4643,40 @@ dependencies = [ ] [[package]] -name = "smithay-clipboard" -version = "0.7.2" +name = "smithay-client-toolkit" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.10.0", + "calloop 0.14.3", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.2", + "thiserror 2.0.17", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" dependencies = [ "libc", - "smithay-client-toolkit", + "smithay-client-toolkit 0.20.0", "wayland-backend", ] @@ -4853,9 +4904,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.108" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -4879,7 +4930,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -4960,7 +5011,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -4971,7 +5022,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -5072,7 +5123,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -5185,9 +5236,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" dependencies = [ "bitflags 2.10.0", "bytes", @@ -5215,10 +5266,11 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5226,20 +5278,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", ] @@ -5482,9 +5534,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -5495,9 +5547,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if", "js-sys", @@ -5508,9 +5560,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5518,22 +5570,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -5613,6 +5665,32 @@ dependencies = [ "wayland-scanner", ] +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfe33d551eb8bffd03ff067a8b44bb963919157841a99957151299a6307d19c" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + [[package]] name = "wayland-protocols-plasma" version = "0.3.9" @@ -5664,9 +5742,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -5693,9 +5771,9 @@ dependencies = [ [[package]] name = "weezl" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" @@ -5902,9 +5980,9 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.1", + "windows-link", "windows-result 0.4.1", - "windows-strings 0.5.1", + "windows-strings", ] [[package]] @@ -5915,7 +5993,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -5926,15 +6004,9 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -5943,13 +6015,13 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-registry" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-link", + "windows-result 0.4.1", + "windows-strings", ] [[package]] @@ -5961,31 +6033,13 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows-result" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -5994,7 +6048,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -6052,7 +6106,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -6092,7 +6146,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -6283,7 +6337,7 @@ dependencies = [ "bitflags 2.10.0", "block2 0.5.1", "bytemuck", - "calloop", + "calloop 0.13.0", "cfg_aliases 0.2.1", "concurrent-queue", "core-foundation 0.9.4", @@ -6305,7 +6359,7 @@ dependencies = [ "redox_syscall 0.4.1", "rustix 0.38.44", "sctk-adwaita", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "smol_str", "tracing", "unicode-segmentation", @@ -6325,9 +6379,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -6472,7 +6526,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "synstructure", ] @@ -6557,7 +6611,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "zvariant_utils 2.1.0", ] @@ -6570,7 +6624,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "zbus_names 4.2.0", "zvariant 5.8.0", "zvariant_utils 3.2.1", @@ -6607,22 +6661,22 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -6642,7 +6696,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "synstructure", ] @@ -6682,7 +6736,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -6731,7 +6785,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "zvariant_utils 2.1.0", ] @@ -6744,7 +6798,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", "zvariant_utils 3.2.1", ] @@ -6756,7 +6810,7 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.111", ] [[package]] @@ -6768,6 +6822,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.108", + "syn 2.0.111", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 27d74ee7..f81bcd9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ strip = true #═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ [dependencies] -pcap = "2.3.0" +pcap = "2.4.0" etherparse = "0.19.0" chrono = { version = "0.4.42", default-features = false, features = ["clock"] } plotters = { version = "0.3.7", default-features = false, features = ["area_series", "line_series"] } @@ -51,7 +51,7 @@ rodio = { version = "0.21.1", default-features = false, features = ["mp3", "play dns-lookup = "3.0.1" toml = "0.9.8" ctrlc = { version = "3.5.1", features = ["termination"] } -rfd = "0.15.4" +rfd = "0.16.0" phf = "0.13.1" phf_shared = "0.13.1" splines = "5.0.0" @@ -81,7 +81,7 @@ serial_test = { version = "3.2.0", default-features = false } [build-dependencies] phf_codegen = "0.13.1" phf_shared = "0.13.1" -rustrict = { version = "0.7.36", default-features = false, features = ["censor"] } +rustrict = { version = "0.7.37", default-features = false, features = ["censor"] } [target."cfg(windows)".build-dependencies] winres = "0.1.12" From 95db1b16ec81476ed62d5f4fce20cc3fbd72b24f Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Tue, 2 Dec 2025 12:34:40 +0100 Subject: [PATCH 8/9] update maxminddb to 0.27.0 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- src/mmdb/asn.rs | 2 +- src/mmdb/country.rs | 2 +- src/mmdb/types/mmdb_reader.rs | 13 +++++-------- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index acc2e277..da84ec22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2719,9 +2719,9 @@ dependencies = [ [[package]] name = "maxminddb" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a197e44322788858682406c74b0b59bf8d9b4954fe1f224d9a25147f1880bba" +checksum = "7ef0551fc3e7345a6c854c1026b0ddada1e443e51f4fb4cdcf86cc1a71d4b337" dependencies = [ "ipnetwork", "log", diff --git a/Cargo.toml b/Cargo.toml index f81bcd9c..fa0585e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ chrono = { version = "0.4.42", default-features = false, features = ["clock"] } plotters = { version = "0.3.7", default-features = false, features = ["area_series", "line_series"] } iced = { version = "0.13.1", features = ["tokio", "svg", "advanced", "lazy", "image"] } plotters-iced = "0.11.0" -maxminddb = "0.26.0" +maxminddb = "0.27.0" confy = "2.0.0" serde = { version = "1.0.228", default-features = false, features = ["derive"] } serde_json = { version = "1.0.145", features = ["preserve_order"] } diff --git a/src/mmdb/asn.rs b/src/mmdb/asn.rs index e120d2ee..c19c6074 100644 --- a/src/mmdb/asn.rs +++ b/src/mmdb/asn.rs @@ -7,7 +7,7 @@ #[allow(clippy::module_name_repetitions)] pub fn get_asn(address: &IpAddr, asn_db_reader: &MmdbReader) -> Asn { - if let Ok(Some(res)) = asn_db_reader.lookup::(*address) { + if let Some(res) = asn_db_reader.lookup::(*address) { return res.get_asn(); } Asn::default() diff --git a/src/mmdb/country.rs b/src/mmdb/country.rs index 9e5cd9a0..533163c1 100644 --- a/src/mmdb/country.rs +++ b/src/mmdb/country.rs @@ -7,7 +7,7 @@ #[allow(clippy::module_name_repetitions)] pub fn get_country(address: &IpAddr, country_db_reader: &MmdbReader) -> Country { - if let Ok(Some(res)) = country_db_reader.lookup::(*address) { + if let Some(res) = country_db_reader.lookup::(*address) { return res.get_country(); } Country::ZZ // unknown diff --git a/src/mmdb/types/mmdb_reader.rs b/src/mmdb/types/mmdb_reader.rs index d7e7e333..f67850c2 100644 --- a/src/mmdb/types/mmdb_reader.rs +++ b/src/mmdb/types/mmdb_reader.rs @@ -3,7 +3,7 @@ use crate::location; use crate::utils::error_logger::{ErrorLogger, Location}; -use maxminddb::{MaxMindDbError, Reader}; +use maxminddb::Reader; use serde::Deserialize; #[derive(Clone)] @@ -32,14 +32,11 @@ pub fn from(mmdb_path: &String, default_mmdb: &'static [u8]) -> MmdbReader { } } - pub fn lookup<'a, T: Deserialize<'a>>( - &'a self, - ip: IpAddr, - ) -> Result, MaxMindDbError> { + pub fn lookup<'a, T: Deserialize<'a>>(&'a self, ip: IpAddr) -> Option { match self { - MmdbReader::Default(reader) => reader.lookup(ip), - MmdbReader::Custom(reader) => reader.lookup(ip), - MmdbReader::Empty => Ok(None), + MmdbReader::Default(reader) => reader.lookup(ip).and_then(|lr| lr.decode()).ok()?, + MmdbReader::Custom(reader) => reader.lookup(ip).and_then(|lr| lr.decode()).ok()?, + MmdbReader::Empty => None, } } } From 42f32272090fb73deb9e7464d28500034edc2e1d Mon Sep 17 00:00:00 2001 From: GyulyVGC Date: Thu, 11 Dec 2025 23:26:20 +0100 Subject: [PATCH 9/9] fix new clippy lint on Rust 1.92 --- src/gui/sniffer.rs | 1 + src/networking/parse_packets.rs | 1 + src/utils/error_logger.rs | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/sniffer.rs b/src/gui/sniffer.rs index 44c5b5f4..3eaabe9c 100644 --- a/src/gui/sniffer.rs +++ b/src/gui/sniffer.rs @@ -264,6 +264,7 @@ fn window_subscription() -> Subscription { }) } + #[allow(clippy::too_many_lines)] pub fn update(&mut self, message: Message) -> Task { self.dots_pulse.1 = (self.dots_pulse.1 + 1) % 3; match message { diff --git a/src/networking/parse_packets.rs b/src/networking/parse_packets.rs index 8fb1e640..8d5109bf 100644 --- a/src/networking/parse_packets.rs +++ b/src/networking/parse_packets.rs @@ -36,6 +36,7 @@ use tokio::sync::broadcast::Receiver; /// The calling thread enters a loop in which it waits for network packets +#[allow(clippy::too_many_lines)] pub fn parse_packets( cap_id: usize, mut cs: CaptureSource, diff --git a/src/utils/error_logger.rs b/src/utils/error_logger.rs index f4c5e7e8..b12108ce 100644 --- a/src/utils/error_logger.rs +++ b/src/utils/error_logger.rs @@ -14,7 +14,9 @@ fn log_err(self, location: Location) -> Result { let line = location.line; eprintln!("Sniffnet error at [{file}:{line}]: {e}"); // in debug mode, panic on error - assert!(!cfg!(debug_assertions)); + const { + assert!(!cfg!(debug_assertions)); + } } self