From aa586d0ef997ad2e5c64c13b095303c769f0cffa Mon Sep 17 00:00:00 2001 From: iSweat-exe Date: Sat, 4 Jul 2026 11:20:43 +0200 Subject: [PATCH] chore(repo): standardize configuration and add community guidelines - Added standard community files (CODE_OF_CONDUCT.md, SECURITY.md, SUPPORT.md). - Configured .gitattributes to handle cross-OS line endings and exclude generated data from GitHub linguist stats. - Added Nix support (flake.nix, nix/default.nix, nix/shell.nix) for reproducible dev environments. - Created .vscode/settings.json to configure rust-analyzer and disable noisy markdown linting warnings. - Updated Cargo.toml with repository metadata, keywords, and disabled incremental builds. - Cleaned up Cross.toml by removing redundant amd64 architecture declarations and adding missing UI dependencies (libxkbcommon-dev, pkg-config). - Adjusted rustfmt.toml to strictly error on 100-character line width overflows. - Adjusted clippy nesting thresholds and applied formatting updates across source files. --- .cargo/config.toml | 3 + .editorconfig | 17 +- .gitattributes | 36 ++ .github/workflows/release.yml | 2 +- .github/workflows/rust-quality-check.yml | 2 +- .vscode/settings.json | 62 ++ CODE_OF_CONDUCT.md | 132 +++++ Cargo.lock | 688 ++++++++--------------- Cargo.toml | 6 + Cross.toml | 11 +- README.md | 2 +- SECURITY.md | 28 + SUPPORT.md | 31 + clippy.toml | 3 +- flake.nix | 22 + nix/default.nix | 33 ++ nix/shell.nix | 17 + rust-toolchain.toml | 6 +- rustfmt.toml | 6 +- src/filters/antichatter.rs | 284 +++++----- src/lib.rs | 2 +- src/ui/panels/release.rs | 574 +++++++++---------- 22 files changed, 1075 insertions(+), 892 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 .gitattributes create mode 100644 .vscode/settings.json create mode 100644 CODE_OF_CONDUCT.md create mode 100644 SECURITY.md create mode 100644 SUPPORT.md create mode 100644 flake.nix create mode 100644 nix/default.nix create mode 100644 nix/shell.nix diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..19e3af3 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,3 @@ +[alias] +verify = "clippy --all-targets --all-features -- -D warnings" +deploy = "build --release" diff --git a/.editorconfig b/.editorconfig index 37d257f..45978f5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,4 +12,19 @@ indent_size = 4 [*.toml] indent_style = space -indent_size = 2 \ No newline at end of file +indent_size = 2 + +[*.json] +indent_style = space +indent_size = 2 + +[*.{yml,yaml}] +indent_style = space +indent_size = 2 + +[*.{sh,bash,bat,ps1}] +indent_style = space +indent_size = 4 + +[*.md] +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b4f5304 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Force LF for certain files that must be consistent across OS +*.sh text eol=lf +*.bash text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.toml text eol=lf +*.json text eol=lf +*.rs text eol=lf +Makefile text eol=lf + +# Force CRLF for Windows specific scripts +*.bat text eol=crlf +*.ps1 text eol=crlf + +# ---------------------------------------------------------------------- +# GitHub Linguist settings for repository statistics +# ---------------------------------------------------------------------- + +# Mark dependencies and lock files as generated so they don't count towards repo stats +Cargo.lock linguist-generated=true + +# Mark tablet configurations as generated/data to not skew language stats towards JSON +tablets/** linguist-generated=true + +# Ignore IDE / editor configs +.editorconfig linguist-generated=true + +# Mark documentation files (doesn't count towards code percentage) +docs/** linguist-documentation=true +*.md linguist-documentation=true + +# Mark resources as vendored/generated +resources/** linguist-vendored=true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 87da3d2..9e3bc85 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ permissions: jobs: build-windows: - name: Build Windows EXE + name: Build Windows EXE (x64 & ARM64) runs-on: windows-latest steps: diff --git a/.github/workflows/rust-quality-check.yml b/.github/workflows/rust-quality-check.yml index a736308..59ad499 100644 --- a/.github/workflows/rust-quality-check.yml +++ b/.github/workflows/rust-quality-check.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] - rust: [1.95] + rust: [1.96.1] steps: - name: Checkout diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ae8e5bf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,62 @@ +{ + "editor.formatOnSave": true, + "editor.rulers": [80, 100], + + "[rust]": { + "editor.defaultFormatter": "rust-lang.rust-analyzer", + "editor.semanticHighlighting.enabled": true + }, + "rust-analyzer.check.command": "clippy", + "rust-analyzer.cargo.allFeatures": true, + "rust-analyzer.showUnlinkedFileNotification": false, + "rust-analyzer.check.extraArgs": [ + "--", + "-D", "clippy::unwrap_used", + "-D", "clippy::expect_used", + "-D", "clippy::panic", + "-D", "clippy::indexing_slicing" + ], + + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features", + "editor.tabSize": 2 + }, + "[toml]": { + "editor.defaultFormatter": "tamasfe.even-better-toml", + "editor.tabSize": 2 + }, + + // Markdown validation rules + "markdown.validate.enabled": false, + "[markdown]": { + "editor.formatOnSave": false, + "editor.wordWrap": "on", + "editor.quickSuggestions": { + "comments": "off", + "strings": "off", + "other": "off" + } + }, + + // Linter and spellcheck exceptions + "markdownlint.config": { + "default": true, + "MD009": false, + "MD013": false, + "MD024": false, + "MD033": false, + "MD041": false + }, + "cSpell.ignorePaths": [ + "**/*.md", + "tablets/**/*.json" + ], + + // Exclude target folder from explorer and search + "files.exclude": { + "**/target": true + }, + "search.exclude": { + "**/target": true + } +} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..8bbb53e --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,132 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement via GitHub +contact or direct message to the project maintainers. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/Cargo.lock b/Cargo.lock index 878acd0..b00ccf9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -134,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.11.1", + "bitflags 2.13.0", "cc", "jni", "libc", @@ -161,12 +161,6 @@ dependencies = [ "libc", ] -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - [[package]] name = "arboard" version = "3.6.1" @@ -195,9 +189,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-raw-xcb-connection" @@ -307,7 +301,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -342,7 +336,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -426,9 +420,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "base64" @@ -459,18 +453,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] [[package]] name = "bitvec" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" dependencies = [ "funty", "radium", @@ -526,9 +520,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" @@ -547,7 +541,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -564,9 +558,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "cairo-rs" @@ -574,7 +568,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cairo-sys-rs", "glib", "libc", @@ -599,7 +593,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "log", "polling", "rustix 0.38.44", @@ -613,7 +607,7 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "polling", "rustix 1.1.4", "slab", @@ -655,9 +649,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.60" +version = "1.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", "jobserver", @@ -698,9 +692,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -793,7 +787,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types", @@ -817,7 +811,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "libc", ] @@ -935,7 +929,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -964,13 +958,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1056,7 +1050,7 @@ checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3" dependencies = [ "accesskit", "ahash", - "bitflags 2.11.1", + "bitflags 2.13.0", "emath", "epaint", "log", @@ -1201,7 +1195,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1222,7 +1216,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1312,23 +1306,9 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fax" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" -dependencies = [ - "fax_derive", -] - -[[package]] -name = "fax_derive" -version = "0.2.0" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" [[package]] name = "fdeflate" @@ -1395,7 +1375,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1472,7 +1452,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1606,15 +1586,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", - "wasip2", - "wasip3", ] [[package]] @@ -1666,7 +1644,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "futures-channel", "futures-core", "futures-executor", @@ -1694,7 +1672,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1725,7 +1703,7 @@ version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg_aliases", "cgl", "dispatch2", @@ -1798,21 +1776,21 @@ dependencies = [ [[package]] name = "gpu-alloc" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +checksum = "45cf04b2726f02df5508c6de726acdc90cdf97ac771a9a0ffd8ba10a6e696bf9" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "gpu-alloc-types", ] [[package]] name = "gpu-alloc-types" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +checksum = "b2bbed164dd10ed526c2e4fe3e721ca4a71c61730e5aafac6844b417b3227058" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -1833,7 +1811,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -1844,7 +1822,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -1896,7 +1874,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1931,9 +1909,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "heck" @@ -1967,9 +1945,9 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "hidapi" -version = "2.6.5" +version = "2.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1b71e1f4791fb9e93b9d7ee03d70b501ab48f6151432fbcadeabc30fe15396e" +checksum = "c78dadfc12f865bc3fcac3897e64533b930737ceb9ef245c8277de98d0b010e9" dependencies = [ "cc", "cfg-if", @@ -1980,9 +1958,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ "bytes", "itoa", @@ -2100,12 +2078,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "idna" version = "1.1.0" @@ -2119,9 +2091,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -2167,9 +2139,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.0", - "serde", - "serde_core", + "hashbrown 0.17.1", ] [[package]] @@ -2205,7 +2175,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2233,7 +2203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2248,13 +2218,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -2264,7 +2233,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "serde", "unicode-segmentation", ] @@ -2286,12 +2255,6 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libappindicator" version = "0.9.0" @@ -2318,9 +2281,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.185" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libloading" @@ -2350,14 +2313,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "libc", "plain", - "redox_syscall 0.7.4", + "redox_syscall 0.9.0", ] [[package]] @@ -2414,9 +2377,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "malloc_buf" @@ -2429,15 +2392,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -2457,7 +2420,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -2533,7 +2496,7 @@ checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -2557,7 +2520,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "jni-sys 0.3.1", "log", "ndk-sys", @@ -2622,7 +2585,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "libc", @@ -2672,7 +2635,7 @@ dependencies = [ "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -2715,7 +2678,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -2731,7 +2694,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2752,7 +2715,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -2765,7 +2728,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -2787,7 +2750,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2799,7 +2762,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -2810,7 +2773,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "libc", @@ -2823,7 +2786,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "dispatch2", "libc", @@ -2873,7 +2836,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -2885,7 +2848,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -2904,7 +2867,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "dispatch", "libc", @@ -2917,7 +2880,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -2930,7 +2893,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", ] @@ -2953,7 +2916,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2965,7 +2928,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -2976,7 +2939,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2989,7 +2952,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -3010,7 +2973,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit 0.2.2", @@ -3042,7 +3005,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -3063,9 +3026,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.53" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12c6933ddbbd16539a7672e697bb8d41ac3a4e99ac43eeb40c07236bd7fcb2dd" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ "libc", "libredox", @@ -3073,9 +3036,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0218004a4aae742209bee9c3cef05672f6b2708be36a50add8eb613b1f2a4008" +checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e" dependencies = [ "num-traits", ] @@ -3195,7 +3158,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "unicase", ] @@ -3211,22 +3174,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.11" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.11" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3277,7 +3240,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "crc32fast", "fdeflate", "flate2", @@ -3343,16 +3306,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -3379,7 +3332,7 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.11+spec-1.1.0", + "toml_edit 0.25.12+spec-1.1.0", ] [[package]] @@ -3417,9 +3370,9 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" [[package]] name = "pxfm" @@ -3444,28 +3397,19 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.38.4" +version = "0.39.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" dependencies = [ "memchr", "serde", ] -[[package]] -name = "quick-xml" -version = "0.39.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d" -dependencies = [ - "memchr", -] - [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -3559,16 +3503,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] name = "redox_syscall" -version = "0.7.4" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" +checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -3637,9 +3581,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -3656,7 +3600,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3669,7 +3613,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.12.1", @@ -3678,9 +3622,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.38" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "log", "once_cell", @@ -3693,9 +3637,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "zeroize", ] @@ -3784,14 +3728,14 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -3808,7 +3752,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3844,9 +3788,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signal-hook-registry" @@ -3882,9 +3826,9 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" @@ -3903,9 +3847,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smithay-client-toolkit" @@ -3913,7 +3857,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "calloop 0.13.0", "calloop-wayland-source 0.3.0", "cursor-icon", @@ -3938,7 +3882,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "calloop 0.14.4", "calloop-wayland-source 0.4.1", "cursor-icon", @@ -3985,7 +3929,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", ] [[package]] @@ -4024,9 +3968,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -4041,7 +3985,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -4076,7 +4020,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix 1.1.4", "windows-sys 0.61.2", @@ -4117,7 +4061,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -4128,7 +4072,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -4245,14 +4189,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ "indexmap", "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow 1.0.1", + "winnow 1.0.3", ] [[package]] @@ -4261,7 +4205,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.1", + "winnow 1.0.3", ] [[package]] @@ -4284,7 +4228,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -4298,9 +4242,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.22.0" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93e1484378c343c5a9b291188fa58917c7184967683f8cfe4a05461986970553" +checksum = "76b42a907631429634f9f57ef72f9e7aec3e12e74050636138acb3752ecb8df3" dependencies = [ "crossbeam-channel", "dirs", @@ -4314,7 +4258,7 @@ dependencies = [ "once_cell", "png 0.18.1", "thiserror 2.0.18", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4345,14 +4289,14 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", ] [[package]] name = "typenum" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "uds_windows" @@ -4379,9 +4323,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -4389,12 +4333,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "untrusted" version = "0.9.0" @@ -4439,11 +4377,11 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "1.23.3" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "serde_core", "wasm-bindgen", @@ -4479,27 +4417,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -4510,9 +4439,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.68" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ "js-sys", "wasm-bindgen", @@ -4520,9 +4449,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4530,60 +4459,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "wayland-backend" version = "0.3.15" @@ -4604,7 +4499,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "rustix 1.1.4", "wayland-backend", "wayland-scanner", @@ -4616,7 +4511,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "cursor-icon", "wayland-backend", ] @@ -4634,11 +4529,11 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.12" +version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4650,7 +4545,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4663,7 +4558,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4676,7 +4571,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4689,7 +4584,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4703,7 +4598,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", - "quick-xml 0.39.2", + "quick-xml 0.39.4", "quote", ] @@ -4721,9 +4616,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.95" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -4761,14 +4656,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.7", + "webpki-roots 1.0.8", ] [[package]] name = "webpki-roots" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" +checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf" dependencies = [ "rustls-pki-types", ] @@ -4786,7 +4681,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "bitflags 2.11.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "document-features", @@ -4817,7 +4712,7 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "cfg_aliases", "document-features", @@ -4877,7 +4772,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.11.1", + "bitflags 2.13.0", "block", "bytemuck", "cfg-if", @@ -4922,7 +4817,7 @@ version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "bytemuck", "js-sys", "log", @@ -5089,7 +4984,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -5100,7 +4995,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -5111,7 +5006,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -5122,7 +5017,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -5404,7 +5299,7 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.11.1", + "bitflags 2.13.0", "block2 0.5.1", "bytemuck", "calloop 0.13.0", @@ -5458,18 +5353,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -5483,100 +5369,12 @@ dependencies = [ "toml 0.5.11", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "writeable" version = "0.6.3" @@ -5668,7 +5466,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.0", "dlib", "log", "once_cell", @@ -5689,9 +5487,9 @@ checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -5706,15 +5504,15 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "synstructure", ] [[package]] name = "zbus" -version = "5.14.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" +checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" dependencies = [ "async-broadcast", "async-executor", @@ -5739,7 +5537,7 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 0.7.15", + "winnow 1.0.3", "zbus_macros", "zbus_names", "zvariant", @@ -5763,7 +5561,7 @@ checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "zbus-lockstep", "zbus_xml", "zvariant", @@ -5771,14 +5569,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.14.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" +checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" dependencies = [ "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "zbus_names", "zvariant", "zvariant_utils", @@ -5786,22 +5584,22 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" +checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" dependencies = [ "serde", - "winnow 0.7.15", + "winnow 1.0.3", "zvariant", ] [[package]] name = "zbus_xml" -version = "5.1.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" +checksum = "a8067892e940ed1727dea64690378601603b31d62dfde019a5335fbb7c0e0ed9" dependencies = [ - "quick-xml 0.38.4", + "quick-xml 0.39.4", "serde", "zbus_names", "zvariant", @@ -5809,29 +5607,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] name = "zerofrom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] @@ -5844,15 +5642,15 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" @@ -5884,7 +5682,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -5910,40 +5708,40 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.10.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" +checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" dependencies = [ "endi", "enumflags2", "serde", - "winnow 0.7.15", + "winnow 1.0.3", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.10.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" +checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" dependencies = [ "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.118", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" +checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", - "winnow 0.7.15", + "syn 2.0.118", + "winnow 1.0.3", ] diff --git a/Cargo.toml b/Cargo.toml index 2e25e1d..4e73031 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,13 @@ name = "next_tablet_driver" authors = ["iSweat "] description = "Tablet Driver for Osu! and Drawing" +repository = "https://github.com/Next-Tablet-Driver/NextTabletDriver" version = "1.1.0" edition = "2024" +license = "MIT" +readme = "README.md" +keywords = ["tablet", "driver", "rust", "osu"] +categories = ["hardware-support", "gui"] rust-version = "1.96.1" [dependencies] @@ -53,6 +58,7 @@ codegen-units = 1 panic = "abort" strip = true # debug = true +incremental = false [lints.rust] dead_code = "deny" diff --git a/Cross.toml b/Cross.toml index bf365f7..729fe8a 100644 --- a/Cross.toml +++ b/Cross.toml @@ -1,6 +1,5 @@ -[target.x86_64-unknown-linux-gnu] -pre-build = [ - "dpkg --add-architecture amd64", - "apt-get update", - "apt-get install -y libxdo-dev:amd64 libglib2.0-dev:amd64 libgtk-3-dev:amd64 libusb-1.0-0-dev:amd64 libudev-dev:amd64" -] +[target.x86_64-unknown-linux-gnu] +pre-build = [ + "apt-get update", + "apt-get install -y pkg-config libxdo-dev libglib2.0-dev libgtk-3-dev libusb-1.0-0-dev libudev-dev libxkbcommon-dev" +] diff --git a/README.md b/README.md index c1da70f..213483d 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ More details are available in [`scripts/README-linux.md`](scripts/README-linux.m ### Requirements -- Rust 1.95 or newer +- Rust 1.96.1 or newer - `pkgconf` - `hidapi` - Linux only: `gtk3`, `libxkbcommon`, `libglvnd`, `wayland`, and `uinput` support diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..83deff8 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,28 @@ +# Security Policy + +## Supported Versions + +Currently, only the latest release of NextTabletDriver is actively supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 1.1.x | :white_check_mark: | +| < 1.1.0 | :x: | + +## Reporting a Vulnerability + +Security is a priority for NextTabletDriver. If you discover a security vulnerability, please report it privately. + +**Do not file a public issue.** + +Instead, please send an email to the repository owner or open a Draft Security Advisory on GitHub (if enabled for this repository) at: +[https://github.com/Next-Tablet-Driver/NextTabletDriver/security/advisories](https://github.com/Next-Tablet-Driver/NextTabletDriver/security/advisories) + +When reporting a vulnerability, please include: + +* A detailed description of the vulnerability. +* Steps to reproduce the issue. +* The operating system and version (Windows/Linux). +* Any potential impact. + +We will try our best to address the issue promptly and will keep you informed of our progress. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..e572b75 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,31 @@ +# Support + +Need help with NextTabletDriver? We're here to assist you! + +## Where to get help + +Before asking a question, please check if the issue has already been discussed or resolved: + +1. **[README](README.md)**: Check the main documentation. +2. **[GitHub Issues](https://github.com/Next-Tablet-Driver/NextTabletDriver/issues)**: Search through open and closed issues. Someone might have had the same problem. +3. **[GitHub Discussions](https://github.com/Next-Tablet-Driver/NextTabletDriver/discussions)**: Check the discussions tab for Q&A, general help, and community discussions. + +### Reporting a Bug + +If you found a bug or driver crash, please [open a new issue](https://github.com/Next-Tablet-Driver/NextTabletDriver/issues/new). + +Please include: + +- Your Operating System (Windows 10/11, Arch Linux, etc.). +- Your Tablet model. +- Steps to reproduce the issue. +- Any relevant logs or screenshots. + +### Requesting a Feature or New Tablet Support + +If you want to suggest a new feature or need support for a new tablet model, you can [open a feature request](https://github.com/Next-Tablet-Driver/NextTabletDriver/issues/new) or submit a Pull Request with the JSON configuration in the `tablets/` directory. +If submitting a tablet configuration, please ensure you include the device VID/PID and physical dimensions as mentioned in the README. + +### Community + +Feel free to connect with other users in the [GitHub Discussions](https://github.com/Next-Tablet-Driver/NextTabletDriver/discussions) section to share custom themes, tablet configurations, and usage tips. diff --git a/clippy.toml b/clippy.toml index b52c32d..3e3dbc7 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1 +1,2 @@ -excessive-nesting-threshold = 9999 \ No newline at end of file +excessive-nesting-threshold = 9999 +# excessive-nesting-threshold = 4 \ No newline at end of file diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..39b9567 --- /dev/null +++ b/flake.nix @@ -0,0 +1,22 @@ +{ + description = "Tablet Driver for Osu! and Drawing"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + }; + in + { + packages.default = import ./nix/default.nix { inherit pkgs; }; + + devShells.default = import ./nix/shell.nix { inherit pkgs; }; + } + ); +} diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..4f52ecf --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,33 @@ +{ pkgs ? import {} }: + +pkgs.rustPlatform.buildRustPackage rec { + pname = "next-tablet-driver"; + version = "1.26.0407.00"; # Version from lib.rs + + src = ../.; + + cargoLock = { + lockFile = ../Cargo.lock; + }; + + nativeBuildInputs = with pkgs; [ + pkg-config + wrapGAppsHook + ]; + + buildInputs = with pkgs; [ + gtk3 + glib + xdotool + systemd # provides libudev + libusb1 + libxkbcommon + ]; + + meta = with pkgs.lib; { + description = "Tablet Driver for Osu! and Drawing"; + homepage = "https://github.com/Next-Tablet-Driver/NextTabletDriver"; + license = licenses.mit; + mainProgram = "next_tablet_driver"; + }; +} diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 0000000..6c3d5bb --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,17 @@ +{ pkgs ? import {} }: + +let + package = import ./default.nix { inherit pkgs; }; +in +pkgs.mkShell { + inputsFrom = [ package ]; + + buildInputs = with pkgs; [ + cargo + rustc + rustfmt + rustPackages.clippy + ]; + + RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml index c5cf161..b295b0a 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ -[toolchain] -channel = "1.96.1" -targets = [ "x86_64-unknown-linux-gnu", "x86_64-pc-windows-gnu" ] +[toolchain] +channel = "1.96.1" +targets = [ "x86_64-unknown-linux-gnu", "x86_64-pc-windows-gnu" ] diff --git a/rustfmt.toml b/rustfmt.toml index f42b287..e38722f 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,4 +1,4 @@ -edition = "2024" -max_width = 100 -tab_spaces = 4 +edition = "2024" +max_width = 100 +tab_spaces = 4 newline_style = "Auto" \ No newline at end of file diff --git a/src/filters/antichatter.rs b/src/filters/antichatter.rs index 53f043b..7d0d9cf 100644 --- a/src/filters/antichatter.rs +++ b/src/filters/antichatter.rs @@ -1,142 +1,142 @@ -//! # Devocub Antichatter Filter -//! -//! An implementation of the popular "Devocub" smoothing algorithm. It uses a moving -//! average window (latency buffer) to eliminate high-frequency noise (chatter) -//! from hardware sensors, coupled with a linear prediction curve to compensate -//! for the latency introduced by the averaging. - -use crate::core::config::models::MappingConfig; -use crate::filters::Filter; -use std::collections::VecDeque; - -/// The Devocub hardware chatter reduction filter. -pub struct DevocubAntichatter { - /// A limited-length ring buffer of past coordinates. - history: VecDeque<(f32, f32)>, - last_x: f32, - last_y: f32, -} - -impl DevocubAntichatter { - #[must_use] - pub const fn new() -> Self { - Self { - history: VecDeque::new(), - last_x: 0.0, - last_y: 0.0, - } - } -} - -impl Default for DevocubAntichatter { - fn default() -> Self { - Self::new() - } -} - -impl Filter for DevocubAntichatter { - fn name(&self) -> &'static str { - "Devocub Antichatter" - } - - fn process(&mut self, x: f32, y: f32, config: &MappingConfig) -> (f32, f32) { - let conf = &config.antichatter; - if !conf.enabled { - return (x, y); - } - - // 1. Latency buffering - // We assume 1000Hz (1ms per sample) as per frequency setting - // Window size = latency (ms) / (1000 / frequency) - let window_size = (conf.latency * (conf.frequency / 1000.0)) as usize; - let window_size = window_size.max(1); - - self.history.push_back((x, y)); - while self.history.len() > window_size { - self.history.pop_front(); - } - - // 2. Simple averaging (Basic Antichatter) - let mut avg_x = 0.0; - let mut avg_y = 0.0; - for (hx, hy) in &self.history { - avg_x += hx; - avg_y += hy; - } - avg_x /= self.history.len() as f32; - avg_y /= self.history.len() as f32; - - // 3. Apply Multiplier and Offsets - let mut out_x = avg_x * conf.antichatter_multiplier + conf.antichatter_offset_x / 100.0; - let mut out_y = avg_y * conf.antichatter_multiplier + conf.antichatter_offset_y / 100.0; - - // 4. Prediction (Simplified) - if conf.prediction_enabled - && self.history.len() >= 2 - && let Some(&(px, py)) = self.history.iter().rev().nth(1) - { - let vx = x - px; - let vy = y - py; - - out_x = (vx * conf.prediction_strength).mul_add(conf.prediction_sharpness, out_x); - out_y = (vy * conf.prediction_strength).mul_add(conf.prediction_sharpness, out_y); - } - - self.last_x = out_x; - self.last_y = out_y; - - (out_x, out_y) - } - - fn reset(&mut self) { - self.history.clear(); - } -} - -#[cfg(test)] -#[allow( - clippy::unwrap_used, - clippy::expect_used, - clippy::panic, - clippy::float_cmp -)] -mod tests { - use super::*; - use crate::core::config::models::MappingConfig; - - fn create_test_config(enabled: bool, latency: f32) -> MappingConfig { - let mut config = MappingConfig::default(); - config.antichatter.enabled = enabled; - config.antichatter.latency = latency; - config.antichatter.frequency = 1000.0; - config.antichatter.antichatter_multiplier = 1.0; - config.antichatter.antichatter_offset_x = 0.0; - config.antichatter.antichatter_offset_y = 0.0; - config.antichatter.prediction_enabled = false; - config - } - - #[test] - fn test_antichatter_disabled_passthrough() { - let mut filter = DevocubAntichatter::new(); - let config = create_test_config(false, 10.0); - - let (x, y) = filter.process(0.5, 0.5, &config); - assert!((x - 0.5).abs() < f32::EPSILON); - assert!((y - 0.5).abs() < f32::EPSILON); - } - - #[test] - fn test_antichatter_averaging() { - let mut filter = DevocubAntichatter::new(); - // 2ms latency at 1000Hz = window of 2 - let config = create_test_config(true, 2.0); - - filter.process(0.0, 0.0, &config); - let (x, y) = filter.process(1.0, 1.0, &config); - - // Average of (0,0) and (1,1) should be (0.5, 0.5) - assert!((x - 0.5).abs() < f32::EPSILON); - assert!((y - 0.5).abs() < f32::EPSILON); - } -} +//! # Devocub Antichatter Filter +//! +//! An implementation of the popular "Devocub" smoothing algorithm. It uses a moving +//! average window (latency buffer) to eliminate high-frequency noise (chatter) +//! from hardware sensors, coupled with a linear prediction curve to compensate +//! for the latency introduced by the averaging. + +use crate::core::config::models::MappingConfig; +use crate::filters::Filter; +use std::collections::VecDeque; + +/// The Devocub hardware chatter reduction filter. +pub struct DevocubAntichatter { + /// A limited-length ring buffer of past coordinates. + history: VecDeque<(f32, f32)>, + last_x: f32, + last_y: f32, +} + +impl DevocubAntichatter { + #[must_use] + pub const fn new() -> Self { + Self { + history: VecDeque::new(), + last_x: 0.0, + last_y: 0.0, + } + } +} + +impl Default for DevocubAntichatter { + fn default() -> Self { + Self::new() + } +} + +impl Filter for DevocubAntichatter { + fn name(&self) -> &'static str { + "Devocub Antichatter" + } + + fn process(&mut self, x: f32, y: f32, config: &MappingConfig) -> (f32, f32) { + let conf = &config.antichatter; + if !conf.enabled { + return (x, y); + } + + // 1. Latency buffering + // We assume 1000Hz (1ms per sample) as per frequency setting + // Window size = latency (ms) / (1000 / frequency) + let window_size = (conf.latency * (conf.frequency / 1000.0)) as usize; + let window_size = window_size.max(1); + + self.history.push_back((x, y)); + while self.history.len() > window_size { + self.history.pop_front(); + } + + // 2. Simple averaging (Basic Antichatter) + let mut avg_x = 0.0; + let mut avg_y = 0.0; + for (hx, hy) in &self.history { + avg_x += hx; + avg_y += hy; + } + avg_x /= self.history.len() as f32; + avg_y /= self.history.len() as f32; + + // 3. Apply Multiplier and Offsets + let mut out_x = avg_x * conf.antichatter_multiplier + conf.antichatter_offset_x / 100.0; + let mut out_y = avg_y * conf.antichatter_multiplier + conf.antichatter_offset_y / 100.0; + + // 4. Prediction (Simplified) + if conf.prediction_enabled + && self.history.len() >= 2 + && let Some(&(px, py)) = self.history.iter().rev().nth(1) + { + let vx = x - px; + let vy = y - py; + + out_x = (vx * conf.prediction_strength).mul_add(conf.prediction_sharpness, out_x); + out_y = (vy * conf.prediction_strength).mul_add(conf.prediction_sharpness, out_y); + } + + self.last_x = out_x; + self.last_y = out_y; + + (out_x, out_y) + } + + fn reset(&mut self) { + self.history.clear(); + } +} + +#[cfg(test)] +#[allow( + clippy::unwrap_used, + clippy::expect_used, + clippy::panic, + clippy::float_cmp +)] +mod tests { + use super::*; + use crate::core::config::models::MappingConfig; + + fn create_test_config(enabled: bool, latency: f32) -> MappingConfig { + let mut config = MappingConfig::default(); + config.antichatter.enabled = enabled; + config.antichatter.latency = latency; + config.antichatter.frequency = 1000.0; + config.antichatter.antichatter_multiplier = 1.0; + config.antichatter.antichatter_offset_x = 0.0; + config.antichatter.antichatter_offset_y = 0.0; + config.antichatter.prediction_enabled = false; + config + } + + #[test] + fn test_antichatter_disabled_passthrough() { + let mut filter = DevocubAntichatter::new(); + let config = create_test_config(false, 10.0); + + let (x, y) = filter.process(0.5, 0.5, &config); + assert!((x - 0.5).abs() < f32::EPSILON); + assert!((y - 0.5).abs() < f32::EPSILON); + } + + #[test] + fn test_antichatter_averaging() { + let mut filter = DevocubAntichatter::new(); + // 2ms latency at 1000Hz = window of 2 + let config = create_test_config(true, 2.0); + + filter.process(0.0, 0.0, &config); + let (x, y) = filter.process(1.0, 1.0, &config); + + // Average of (0,0) and (1,1) should be (0.5, 0.5) + assert!((x - 0.5).abs() < f32::EPSILON); + assert!((y - 0.5).abs() < f32::EPSILON); + } +} diff --git a/src/lib.rs b/src/lib.rs index 423fb2f..43ab2c2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -50,4 +50,4 @@ pub mod startup; pub mod ui; /// Version. -pub const VERSION: &str = "1.26.2806.01"; +pub const VERSION: &str = "1.26.0407.00"; diff --git a/src/ui/panels/release.rs b/src/ui/panels/release.rs index 720d898..ff34446 100644 --- a/src/ui/panels/release.rs +++ b/src/ui/panels/release.rs @@ -1,287 +1,287 @@ -use eframe::egui; - -struct ReleaseEntry { - version: &'static str, - date: &'static str, - additions: &'static [&'static str], - removals: &'static [&'static str], - fixes: &'static [&'static str], - improvements: &'static [&'static str], -} - -const RELEASES: &[ReleaseEntry] = &[ - ReleaseEntry { - version: "1.26.0505.01", - date: "05/05/2026", - additions: &[ - "Add: Robust auto-updater with versioning, progress tracking, and SHA verification", - "Add: User presets options for customized configuration", - "Add: Dedicated 'Help' section and expanded logging groups", - "Add: Cross-compilation support via Cross.toml integration", - ], - removals: &[], - fixes: &[ - "Fix: Immediate 'Out of Range' detection for XP-PEN tablets", - "Fix: Panic safety by replacing all '.unwrap()' calls with robust error handling", - "Fix: Evdev syntax and auto-updater logic regression", - "Fix: Sidebar layout margins and UI theme inconsistencies", - "Fix: Pipeline execution errors and failing unit tests", - ], - improvements: &[ - "Improve: Decoupled UI from SharedState using the Snapshot pattern for better state management", - "Improve: Strict separation of domain logic from the presentation layer", - "Improve: Migration to Rust 1.96.1 toolchain for improved stability", - "Improve: Pipeline performance optimizations and Filters UI refinements", - "Improve: General codebase health through formatting and syntax standardisation", - ], - }, - ReleaseEntry { - version: "1.26.2004.01", - date: "20/04/2026", - additions: &[ - "Add: 'Developer' debug tab for real-time pipeline telemetry and HID packet inspection", - "Add: Extensive support for new tablet drivers (Acepen, Bosto, Floogoo, Genius, Lifetec, Robotpen, Tenmoon, UC-Logic, ViewSonic, and numerous Wacom models)", - ], - removals: &["Remove: Support panel"], - fixes: &[ - "Fix: Cursor teleportation bug occurring upon tablet connection", - "Fix: Input not registering at the exact [0, 0] coordinate", - "Fix: Pen hover distance detection (out-of-range) not properly clearing state on timeout", - ], - improvements: &[ - "Improve: Complete refactoring and modularization of tablet driver parsers", - "Improve: Debugger UI responsiveness with optimized 16ms temporal throttling", - "Improve: Codebase maintainability through comprehensive comment auditing and cleanup", - ], - }, - ReleaseEntry { - version: "1.26.2103.02", - date: "21/03/2026", - additions: &[], - removals: &[], - fixes: &[ - "Updated to Rust 2024 edition", - "Updated all dependencies to their latest versions", - "Fixed a security vulnerability detected in dependencies", - "Adapted codebase to new APIs introduced by dependency updates", - ], - improvements: &[], - }, - ReleaseEntry { - version: "1.26.2103.01", - date: "21/03/2026", - additions: &[ - "Add: Added 4 Catppuccin themes (Latte, Frappe, Macchiato, Mocha)", - "Add: Added Osu! Playfield preview in the mapping area", - ], - removals: &[], - fixes: &[ - "Fix: Cleaned up and modernized the default egui UI design (borders, rounding, and hover effects)", - ], - improvements: &["Improve: Improved theme-awareness for custom UI components"], - }, - ReleaseEntry { - version: "1.26.2003.01", - date: "20/03/2026", - additions: &["Add: 'Theme' settings in 'Settings' tab"], - removals: &[], - fixes: &[], - improvements: &["Improve: 'Theme' settings to allow changing the theme of the application"], - }, - ReleaseEntry { - version: "1.26.1903.03", - date: "19/03/2026", - additions: &[], - removals: &["Remove: Powershell files, Payload.json"], - fixes: &[], - improvements: &[ - "Next Tablet Driver now has a GitHub organization, the project has also been cleaned up for a better presentation in the future.", - ], - }, - ReleaseEntry { - version: "1.26.1303.03", - date: "13/03/2026", - additions: &[], - removals: &["Remove: Telemetry System"], - fixes: &[], - improvements: &["Internal Documentation"], - }, - ReleaseEntry { - version: "1.26.1203.01", - date: "12/03/2026", - additions: &[ - "Add: 'Relative Mode' for pen input", - "Add: 'Filters' tab and 'Devocub Antichatter' settings like Open Tablet Driver Filters and 'HandSpeed WebSocket' settings", - ], - removals: &["Remove: Crypto Donations", "Remove: 'Tools' tab"], - fixes: &["Nothing"], - improvements: &[ - "Improve: 'HandSpeed WebSocket' filter to send 'total_distance' in addition to 'handspeed'", - ], - }, - ReleaseEntry { - version: "1.26.0503.01", - date: "05/03/2026", - additions: &[ - "Add: Telemetry System for improvement (you can disable it in 'Settings' tab)", - "Add: 'Relative Mode' for pen input", - "Info: The telemetry doesn't collect any personally identifiable information; it’s only there to improve the driver. An example of the shared data is available to view on GitHub.", - ], - removals: &["Nothing"], - fixes: &["Change version format to European format instead of US format (MMDD -> DDMM)"], - improvements: &["Nothing"], - }, - ReleaseEntry { - version: "1.26.0303.03", - date: "03/03/2026", - additions: &[ - "New 'Release' tab to track changes", - "Added Support & Contribution panel with Crypto donations", - ], - removals: &["Nothing"], - fixes: &["Fix all 'cargo clippy' issues and warnings (as mentioned in ISSUE#2)"], - improvements: &[ - "Add 'CI/CD' pipeline for automated code quality checks (as mentioned in ISSUE#1)", - ], - }, - ReleaseEntry { - version: "1.26.0301.05", - date: "01/03/2026", - additions: &["New 'Websocket Server' settings in 'Settings' tab"], - removals: &["Nothing"], - fixes: &[ - "Improved 'Run At Startup' feature, before it was not working properly and flagged by Windows Defender", - "Improved HID API initialization performance", - ], - improvements: &["Event-driven architecture for reduced CPU usage"], - }, -]; - -pub fn render_release_panel(_app: &crate::app::state::TabletMapperApp, ui: &mut egui::Ui) { - ui.vertical_centered(|ui| { - ui.add_space(20.0); - ui.label(egui::RichText::new("Release History").size(24.0).strong()); - ui.add_space(15.0); - }); - - egui::ScrollArea::vertical() - .auto_shrink([false; 2]) - .show(ui, |ui| { - ui.add_space(10.0); - for release in RELEASES { - render_release_entry(ui, release); - ui.add_space(20.0); - } - ui.add_space(10.0); - }); -} - -fn render_release_entry(ui: &mut egui::Ui, entry: &ReleaseEntry) { - let visuals = ui.visuals(); - let card_bg = visuals.window_fill.gamma_multiply(0.6); - let border_color = visuals - .widgets - .noninteractive - .bg_stroke - .color - .gamma_multiply(0.4); - - egui::Frame::new() - .fill(card_bg) - .corner_radius(4.0) - .stroke(egui::Stroke::new(1.0, border_color)) - .inner_margin(egui::Margin::symmetric(20, 15)) - .show(ui, |ui| { - ui.set_width(ui.available_width()); - ui.vertical(|ui| { - ui.horizontal(|ui| { - ui.label( - egui::RichText::new(format!("Next Tablet Driver | v{}", entry.version)) - .size(16.0) - .strong(), - ); - ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { - ui.label(egui::RichText::new(entry.date).weak().size(12.0)); - }); - }); - - ui.add_space(12.0); - - let semantic = crate::ui::theme::semantic_colors(ui.ctx()); - render_category( - ui, - "NEW", - egui_phosphor::regular::PLUS_CIRCLE, - semantic.success, - entry.additions, - ); - render_category( - ui, - "FIX", - egui_phosphor::regular::WRENCH, - semantic.warning, - entry.fixes, - ); - render_category( - ui, - "IMP", - egui_phosphor::regular::CHART_LINE_UP, - semantic.info, - entry.improvements, - ); - render_category( - ui, - "DEL", - egui_phosphor::regular::MINUS_CIRCLE, - semantic.error, - entry.removals, - ); - }); - }); -} - -fn render_category( - ui: &mut egui::Ui, - label: &str, - icon: &str, - color: egui::Color32, - items: &[&str], -) { - if items.is_empty() { - return; - } - - ui.horizontal(|ui| { - egui::Frame::new() - .fill(color.gamma_multiply(0.1)) - .stroke(egui::Stroke::new(1.0, color.gamma_multiply(0.5))) - .corner_radius(4.0) - .inner_margin(egui::Margin::symmetric(6, 2)) - .show(ui, |ui| { - ui.label( - egui::RichText::new(format!("{icon} {label}")) - .color(color) - .size(10.0) - .strong(), - ); - }); - }); - - ui.add_space(4.0); - - for item in items { - ui.horizontal(|ui| { - ui.add_space(8.0); - ui.label(egui_phosphor::regular::CARET_RIGHT); - ui.add_space(4.0); - ui.label( - egui::RichText::new(*item) - .size(12.5) - .color(ui.visuals().text_color().gamma_multiply(0.8)), - ); - }); - ui.add_space(2.0); - } - - ui.add_space(10.0); -} +use eframe::egui; + +struct ReleaseEntry { + version: &'static str, + date: &'static str, + additions: &'static [&'static str], + removals: &'static [&'static str], + fixes: &'static [&'static str], + improvements: &'static [&'static str], +} + +const RELEASES: &[ReleaseEntry] = &[ + ReleaseEntry { + version: "1.26.0505.01", + date: "05/05/2026", + additions: &[ + "Add: Robust auto-updater with versioning, progress tracking, and SHA verification", + "Add: User presets options for customized configuration", + "Add: Dedicated 'Help' section and expanded logging groups", + "Add: Cross-compilation support via Cross.toml integration", + ], + removals: &[], + fixes: &[ + "Fix: Immediate 'Out of Range' detection for XP-PEN tablets", + "Fix: Panic safety by replacing all '.unwrap()' calls with robust error handling", + "Fix: Evdev syntax and auto-updater logic regression", + "Fix: Sidebar layout margins and UI theme inconsistencies", + "Fix: Pipeline execution errors and failing unit tests", + ], + improvements: &[ + "Improve: Decoupled UI from SharedState using the Snapshot pattern for better state management", + "Improve: Strict separation of domain logic from the presentation layer", + "Improve: Migration to Rust 1.96.1 toolchain for improved stability", + "Improve: Pipeline performance optimizations and Filters UI refinements", + "Improve: General codebase health through formatting and syntax standardisation", + ], + }, + ReleaseEntry { + version: "1.26.2004.01", + date: "20/04/2026", + additions: &[ + "Add: 'Developer' debug tab for real-time pipeline telemetry and HID packet inspection", + "Add: Extensive support for new tablet drivers (Acepen, Bosto, Floogoo, Genius, Lifetec, Robotpen, Tenmoon, UC-Logic, ViewSonic, and numerous Wacom models)", + ], + removals: &["Remove: Support panel"], + fixes: &[ + "Fix: Cursor teleportation bug occurring upon tablet connection", + "Fix: Input not registering at the exact [0, 0] coordinate", + "Fix: Pen hover distance detection (out-of-range) not properly clearing state on timeout", + ], + improvements: &[ + "Improve: Complete refactoring and modularization of tablet driver parsers", + "Improve: Debugger UI responsiveness with optimized 16ms temporal throttling", + "Improve: Codebase maintainability through comprehensive comment auditing and cleanup", + ], + }, + ReleaseEntry { + version: "1.26.2103.02", + date: "21/03/2026", + additions: &[], + removals: &[], + fixes: &[ + "Updated to Rust 2024 edition", + "Updated all dependencies to their latest versions", + "Fixed a security vulnerability detected in dependencies", + "Adapted codebase to new APIs introduced by dependency updates", + ], + improvements: &[], + }, + ReleaseEntry { + version: "1.26.2103.01", + date: "21/03/2026", + additions: &[ + "Add: Added 4 Catppuccin themes (Latte, Frappe, Macchiato, Mocha)", + "Add: Added Osu! Playfield preview in the mapping area", + ], + removals: &[], + fixes: &[ + "Fix: Cleaned up and modernized the default egui UI design (borders, rounding, and hover effects)", + ], + improvements: &["Improve: Improved theme-awareness for custom UI components"], + }, + ReleaseEntry { + version: "1.26.2003.01", + date: "20/03/2026", + additions: &["Add: 'Theme' settings in 'Settings' tab"], + removals: &[], + fixes: &[], + improvements: &["Improve: 'Theme' settings to allow changing the theme of the application"], + }, + ReleaseEntry { + version: "1.26.1903.03", + date: "19/03/2026", + additions: &[], + removals: &["Remove: Powershell files, Payload.json"], + fixes: &[], + improvements: &[ + "Next Tablet Driver now has a GitHub organization, the project has also been cleaned up for a better presentation in the future.", + ], + }, + ReleaseEntry { + version: "1.26.1303.03", + date: "13/03/2026", + additions: &[], + removals: &["Remove: Telemetry System"], + fixes: &[], + improvements: &["Internal Documentation"], + }, + ReleaseEntry { + version: "1.26.1203.01", + date: "12/03/2026", + additions: &[ + "Add: 'Relative Mode' for pen input", + "Add: 'Filters' tab and 'Devocub Antichatter' settings like Open Tablet Driver Filters and 'HandSpeed WebSocket' settings", + ], + removals: &["Remove: Crypto Donations", "Remove: 'Tools' tab"], + fixes: &["Nothing"], + improvements: &[ + "Improve: 'HandSpeed WebSocket' filter to send 'total_distance' in addition to 'handspeed'", + ], + }, + ReleaseEntry { + version: "1.26.0503.01", + date: "05/03/2026", + additions: &[ + "Add: Telemetry System for improvement (you can disable it in 'Settings' tab)", + "Add: 'Relative Mode' for pen input", + "Info: The telemetry doesn't collect any personally identifiable information; it’s only there to improve the driver. An example of the shared data is available to view on GitHub.", + ], + removals: &["Nothing"], + fixes: &["Change version format to European format instead of US format (MMDD -> DDMM)"], + improvements: &["Nothing"], + }, + ReleaseEntry { + version: "1.26.0303.03", + date: "03/03/2026", + additions: &[ + "New 'Release' tab to track changes", + "Added Support & Contribution panel with Crypto donations", + ], + removals: &["Nothing"], + fixes: &["Fix all 'cargo clippy' issues and warnings (as mentioned in ISSUE#2)"], + improvements: &[ + "Add 'CI/CD' pipeline for automated code quality checks (as mentioned in ISSUE#1)", + ], + }, + ReleaseEntry { + version: "1.26.0301.05", + date: "01/03/2026", + additions: &["New 'Websocket Server' settings in 'Settings' tab"], + removals: &["Nothing"], + fixes: &[ + "Improved 'Run At Startup' feature, before it was not working properly and flagged by Windows Defender", + "Improved HID API initialization performance", + ], + improvements: &["Event-driven architecture for reduced CPU usage"], + }, +]; + +pub fn render_release_panel(_app: &crate::app::state::TabletMapperApp, ui: &mut egui::Ui) { + ui.vertical_centered(|ui| { + ui.add_space(20.0); + ui.label(egui::RichText::new("Release History").size(24.0).strong()); + ui.add_space(15.0); + }); + + egui::ScrollArea::vertical() + .auto_shrink([false; 2]) + .show(ui, |ui| { + ui.add_space(10.0); + for release in RELEASES { + render_release_entry(ui, release); + ui.add_space(20.0); + } + ui.add_space(10.0); + }); +} + +fn render_release_entry(ui: &mut egui::Ui, entry: &ReleaseEntry) { + let visuals = ui.visuals(); + let card_bg = visuals.window_fill.gamma_multiply(0.6); + let border_color = visuals + .widgets + .noninteractive + .bg_stroke + .color + .gamma_multiply(0.4); + + egui::Frame::new() + .fill(card_bg) + .corner_radius(4.0) + .stroke(egui::Stroke::new(1.0, border_color)) + .inner_margin(egui::Margin::symmetric(20, 15)) + .show(ui, |ui| { + ui.set_width(ui.available_width()); + ui.vertical(|ui| { + ui.horizontal(|ui| { + ui.label( + egui::RichText::new(format!("Next Tablet Driver | v{}", entry.version)) + .size(16.0) + .strong(), + ); + ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { + ui.label(egui::RichText::new(entry.date).weak().size(12.0)); + }); + }); + + ui.add_space(12.0); + + let semantic = crate::ui::theme::semantic_colors(ui.ctx()); + render_category( + ui, + "NEW", + egui_phosphor::regular::PLUS_CIRCLE, + semantic.success, + entry.additions, + ); + render_category( + ui, + "FIX", + egui_phosphor::regular::WRENCH, + semantic.warning, + entry.fixes, + ); + render_category( + ui, + "IMP", + egui_phosphor::regular::CHART_LINE_UP, + semantic.info, + entry.improvements, + ); + render_category( + ui, + "DEL", + egui_phosphor::regular::MINUS_CIRCLE, + semantic.error, + entry.removals, + ); + }); + }); +} + +fn render_category( + ui: &mut egui::Ui, + label: &str, + icon: &str, + color: egui::Color32, + items: &[&str], +) { + if items.is_empty() { + return; + } + + ui.horizontal(|ui| { + egui::Frame::new() + .fill(color.gamma_multiply(0.1)) + .stroke(egui::Stroke::new(1.0, color.gamma_multiply(0.5))) + .corner_radius(4.0) + .inner_margin(egui::Margin::symmetric(6, 2)) + .show(ui, |ui| { + ui.label( + egui::RichText::new(format!("{icon} {label}")) + .color(color) + .size(10.0) + .strong(), + ); + }); + }); + + ui.add_space(4.0); + + for item in items { + ui.horizontal(|ui| { + ui.add_space(8.0); + ui.label(egui_phosphor::regular::CARET_RIGHT); + ui.add_space(4.0); + ui.label( + egui::RichText::new(*item) + .size(12.5) + .color(ui.visuals().text_color().gamma_multiply(0.8)), + ); + }); + ui.add_space(2.0); + } + + ui.add_space(10.0); +}