diff --git a/.github/actions/setup-js/action.yml b/.github/actions/setup-js/action.yml index 668db7ebacc..3a7589c7508 100644 --- a/.github/actions/setup-js/action.yml +++ b/.github/actions/setup-js/action.yml @@ -1,5 +1,5 @@ name: Setup JS (Bun & Node) -description: Sets up Bun 1.4.0 and Node with frozen dependencies and caching +description: Sets up Bun 1.4.3 and Node with frozen dependencies and caching runs: using: "composite" steps: @@ -11,7 +11,7 @@ runs: - name: Setup Bun uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 with: - bun-version: 1.4.0 + bun-version: 1.4.3 # Saved from main only: a cache saved on a PR ref is invisible to every # other PR and still counts against the repository cache quota. @@ -20,9 +20,9 @@ runs: uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 with: path: ${{ runner.temp }}/bun-cache - key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-${{ hashFiles('bun.lock') }} + key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.3-${{ hashFiles('bun.lock') }} restore-keys: | - ${{ runner.os }}-${{ runner.arch }}-bun-1.4.0- + ${{ runner.os }}-${{ runner.arch }}-bun-1.4.3- - name: Install frontend dependencies shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43d79ddaa7a..26f4b7901f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -181,7 +181,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@1.88.0 + - uses: dtolnay/rust-toolchain@1.99.0 with: components: rustfmt @@ -207,7 +207,7 @@ jobs: uses: actions/checkout@v4 - name: Rust setup - uses: dtolnay/rust-toolchain@1.88.0 + uses: dtolnay/rust-toolchain@1.99.0 with: targets: ${{ matrix.settings.target }} components: clippy @@ -319,7 +319,7 @@ jobs: uses: ./.github/actions/install-desktop-deps - name: Rust setup - uses: dtolnay/rust-toolchain@1.95.0 + uses: dtolnay/rust-toolchain@1.99.0 with: targets: ${{ matrix.settings.target }} @@ -359,11 +359,11 @@ jobs: fi if [[ "$RUNNER_OS" == "Linux" ]]; then xvfb-run -a --server-args="-screen 0 1920x1080x24 -noreset" \ - cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} --bin cap-gpui + cargo +1.99.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} --bin cap-gpui else - cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} --bin cap-gpui + cargo +1.99.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} --bin cap-gpui fi - cargo +1.95.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} -p cap-gpui-kernels + cargo +1.99.0 test --manifest-path apps/desktop-gpui/Cargo.toml --locked --target ${{ matrix.settings.target }} -p cap-gpui-kernels tauri-plugins: name: Verify Tauri plugin versions diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index db087d09bc3..5f3fc389f7e 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -252,7 +252,7 @@ jobs: run: security find-identity -v -p codesigning ${{ runner.temp }}/build.keychain - name: Rust setup - uses: dtolnay/rust-toolchain@1.88.0 + uses: dtolnay/rust-toolchain@1.99.0 with: targets: ${{ matrix.settings.target }} diff --git a/.github/workflows/performance-regressions.yml b/.github/workflows/performance-regressions.yml index 946e12feafd..6f9f6c1f24b 100644 --- a/.github/workflows/performance-regressions.yml +++ b/.github/workflows/performance-regressions.yml @@ -25,7 +25,7 @@ jobs: path: performance-fixtures - name: Rust setup - uses: dtolnay/rust-toolchain@1.88.0 + uses: dtolnay/rust-toolchain@1.99.0 - name: Rust cache uses: ./.github/actions/setup-rust-cache diff --git a/.github/workflows/status.yml b/.github/workflows/status.yml index a22fc67fc82..9a2b29083c6 100644 --- a/.github/workflows/status.yml +++ b/.github/workflows/status.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: - bun-version: "1.4.0" + bun-version: "1.4.3" - run: bun install --frozen-lockfile - run: bun run --cwd apps/status test - run: bun run --cwd apps/status build diff --git a/.github/workflows/sync-tests.yml b/.github/workflows/sync-tests.yml index 25560b00842..2403ded2540 100644 --- a/.github/workflows/sync-tests.yml +++ b/.github/workflows/sync-tests.yml @@ -59,7 +59,7 @@ jobs: uses: actions/checkout@v4 - name: Rust setup - uses: dtolnay/rust-toolchain@1.88.0 + uses: dtolnay/rust-toolchain@1.99.0 - name: Rust cache uses: ./.github/actions/setup-rust-cache diff --git a/AGENTS.md b/AGENTS.md index af1f3b7fe8a..16a155e9019 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -68,10 +68,16 @@ Additionally, `unused_must_use = "deny"` applies to all Rust code: every `Result - TypeScript / JS / JSON / CSS: **tab indent** and **double-quoted** strings, enforced by Biome (see `biome.json`). Do not configure per-file overrides. - Rust: `rustfmt` default style + the denied clippy lints in the Pre-Generation Invariants above. - Naming: files kebab‑case (`user-menu.tsx`); React/Solid components PascalCase; hooks `useX`; Rust modules snake_case; crates kebab‑case. -- Runtime: Node 20, Bun 1.4.0, Rust 1.88+, Docker for MySQL/MinIO. +- Runtime: Node 20.12+, Bun 1.4.3, Rust 1.99+, Docker for MySQL/MinIO. (See **Pre-Generation Invariants** at the top of this file for the comments policy and the denied clippy/Biome patterns. Those are the source of truth — do not duplicate or weaken them here.) +## Desktop Design Tokens +- `apps/desktop-gpui/CSS.md` holds the desktop app's design tokens and the rules for using them. Read it before any desktop UI work and always follow it. +- `apps/desktop-gpui/platform.css` is compiled into GPUI light/dark colors, radii and shadows by the desktop build script. Some legacy UI styling remains; for new and migrated UI, take colors, radii and shadows from its semantic tokens, never hardcode values or derive ad-hoc tints. Do not invent more CSS or tokens; raise missing roles for a design decision. +- Keep `platform.css` and the Theme CSS block in `CSS.md` identical. +- These rules cover the desktop app only; `apps/web` and `apps/desktop` keep their own styles. + ## Testing - TS/JS: Vitest where present (e.g., desktop). Name tests `*.test.ts(x)` near sources. - Rust: `cargo test` per crate; tests in `src` or `tests`. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4237220a0c4..9cab2ae7a84 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,9 +26,9 @@ There are many ways to contribute to Cap. You can: Before anything else, make sure you have the following installed: -- Node Version 20+ -- Rust 1.88.0+ -- Bun 1.4.0 +- Node Version 20.12+ +- Rust 1.99.0+ +- Bun 1.4.3 - Docker ([OrbStack](https://orbstack.dev/) recommended) ### General Setup diff --git a/Cargo.lock b/Cargo.lock index f059b7eff1e..6431c6a99f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,11 +26,11 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "actix-codec" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +checksum = "4c13df95297bcf9014dc89162b0cc69431e192e34e3b419612fc124cfcd45dbf" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytes", "futures-core", "futures-sink", @@ -43,33 +43,28 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.11.1" +version = "3.18.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cceded2fb55f3c4b67068fa64962e2ca59614edc5b03167de9ff82ae803da0" +checksum = "a3f290edc569ad10c07287eebb96629686b37f1e55283a093569151d3adde0c7" dependencies = [ "actix-codec", - "actix-rt", "actix-service", "actix-utils", - "base64 0.22.1", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytes", "bytestring", - "derive_more 2.0.1", + "derive_more 2.1.1", "encoding_rs", - "foldhash", + "foldhash 0.2.0", "futures-core", "http 0.2.12", "httparse", "httpdate", "itoa", "language-tags", - "local-channel", "mime", "percent-encoding", "pin-project-lite", - "rand 0.9.2", - "sha1", "smallvec", "tokio", "tokio-util", @@ -78,9 +73,9 @@ dependencies = [ [[package]] name = "actix-router" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +checksum = "14f8c75c51892f18d9c46150c5ac7beb81c95f78c8b83a634d49f4ca32551fe7" dependencies = [ "bytestring", "cfg-if", @@ -92,9 +87,9 @@ dependencies = [ [[package]] name = "actix-rt" -version = "2.11.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +checksum = "e5f794807f82bbd36430c12cd600c73bbab0f52fdde4f0ed49978df113f4807f" dependencies = [ "futures-core", "tokio", @@ -102,17 +97,16 @@ dependencies = [ [[package]] name = "actix-server" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +checksum = "5e296908c4d6f3a191e6b9873dbdfec8023350a89129d2b470f61d17233931ee" dependencies = [ "actix-rt", "actix-service", - "actix-utils", "futures-core", "futures-util", - "mio 1.0.4", - "socket2 0.5.10", + "mio 1.2.4", + "socket2", "tokio", "tracing", ] @@ -129,9 +123,9 @@ dependencies = [ [[package]] name = "actix-utils" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +checksum = "0128396dd7313f697ad05b21b1a7be7d4cbb81888704f55996e4a27db196bb4d" dependencies = [ "local-waker", "pin-project-lite", @@ -139,9 +133,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.11.0" +version = "4.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +checksum = "824c7250d7e468feb7903e41efc5d6883cb1f3957e8db2c3d2402a9ff430b886" dependencies = [ "actix-codec", "actix-http", @@ -153,9 +147,9 @@ dependencies = [ "bytes", "bytestring", "cfg-if", - "derive_more 2.0.1", + "derive_more 2.1.1", "encoding_rs", - "foldhash", + "foldhash 0.2.0", "futures-core", "futures-util", "impl-more", @@ -170,17 +164,18 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.5.10", + "socket2", "time", + "tokio", "tracing", "url", ] [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -193,13 +188,13 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" -version = "0.8.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "35f0f96ce78e38c3dc6d8948aa8163d06385be74000f3c7a95bf1eef35d3ea32" dependencies = [ - "cfg-if", "cipher", - "cpufeatures 0.2.17", + "cpubits", + "cpufeatures 0.3.1", ] [[package]] @@ -209,7 +204,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "serde", "version_check", @@ -218,13 +213,22 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] +[[package]] +name = "aligned" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" +dependencies = [ + "as-slice", +] + [[package]] name = "aligned-vec" version = "0.6.4" @@ -236,15 +240,15 @@ dependencies = [ [[package]] name = "alloc-no-stdlib" -version = "2.0.4" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" +checksum = "c2fb6cfd47bf496ff64095c20eaba0c201404ee38714d4142fcfa1dc334fcc7a" [[package]] name = "alloc-stdlib" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +checksum = "0b5c1865780388bfa186411ab5f247819487fc4864c6e9c3106611fa347586e1" dependencies = [ "alloc-no-stdlib", ] @@ -262,7 +266,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" dependencies = [ "alsa-sys", - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", "libc", ] @@ -284,7 +288,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.13.1", + "bitflags 2.13.2", "cc", "jni 0.22.4", "libc", @@ -293,7 +297,7 @@ dependencies = [ "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] @@ -304,9 +308,9 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] @@ -318,14 +322,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" dependencies = [ "anstyle", - "unicode-width 0.2.1", + "unicode-width 0.2.2", ] [[package]] name = "anstream" -version = "0.6.20" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -338,37 +342,37 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -378,31 +382,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41058deaa38c9d9dd933d6d238d825227cffa668e2839b52879f6619c63eee3b" dependencies = [ "futures", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "apple-native-keyring-store" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "797f94b6a53d7d10b56dc18290e0d40a2158352f108bb4ff32350825081a9f29" +checksum = "2b350bfd03649e07aa05c0a81b3e15934374e585c98204a57e20b9d49f49bb9a" dependencies = [ "keyring-core", "log", - "security-framework 3.7.0", + "security-framework", ] [[package]] name = "arbitrary" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +checksum = "3bc62ac97cc33321f50863d514c3bc38a453947a8f9e781137e47c7401020aed" dependencies = [ "derive_arbitrary", ] @@ -414,13 +418,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ "clipboard-win", - "image 0.25.8", + "image 0.25.10", "log", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", "windows-sys 0.60.2", @@ -436,7 +440,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -447,9 +451,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" @@ -457,33 +461,38 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "ash" version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.8.8", + "libloading 0.8.9", ] [[package]] name = "ashpd" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" +checksum = "d2f3f79755c74fd155000314eb349864caa787c6592eace6c6882dad873d9c39" dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", - "raw-window-handle", + "rand 0.9.5", "serde", "serde_repr", "tokio", "url", - "wayland-backend", - "wayland-client", - "wayland-protocols", "zbus", ] @@ -513,9 +522,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", @@ -538,16 +547,16 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.2", + "rustix 1.1.5", "slab", "windows-sys 0.61.2", ] [[package]] name = "async-lock" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ "event-listener", "event-listener-strategy", @@ -569,25 +578,25 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 1.1.2", + "rustix 1.1.5", ] [[package]] name = "async-recursion" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +checksum = "4f8abc12baad266b1c8cec146854c195b5864b4221d4b2ca7296a7ae82d9e451" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] name = "async-signal" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" dependencies = [ "async-io", "async-lock", @@ -595,7 +604,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.2", + "rustix 1.1.5", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -620,7 +629,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -631,13 +640,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -671,29 +680,49 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "av-scenechange" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey 0.1.1", + "rayon", + "thiserror 2.0.21", + "v_frame", + "y4m", +] [[package]] name = "av1-grain" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" dependencies = [ "anyhow", "arrayvec", "log", - "nom 7.1.3", + "nom 8.0.0", "num-rational", "v_frame", ] [[package]] name = "avif-serialize" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" dependencies = [ "arrayvec", ] @@ -709,7 +738,7 @@ dependencies = [ "base64 0.22.1", "bytes", "futures-util", - "http 1.3.1", + "http 1.5.0", "http-body", "http-body-util", "hyper", @@ -747,7 +776,7 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http 1.3.1", + "http 1.5.0", "http-body", "http-body-util", "hyper", @@ -781,7 +810,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.3.1", + "http 1.5.0", "http-body", "http-body-util", "mime", @@ -801,7 +830,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.5.0", "http-body", "http-body-util", "mime", @@ -820,22 +849,22 @@ checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.9", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -856,11 +885,17 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" + [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] name = "bezier_easing" @@ -906,8 +941,8 @@ dependencies = [ "quote", "regex", "rustc-hash 1.1.0", - "shlex", - "syn 2.0.106", + "shlex 1.3.0", + "syn 2.0.119", "which", ] @@ -917,7 +952,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cexpr", "clang-sys", "itertools 0.12.1", @@ -929,8 +964,8 @@ dependencies = [ "quote", "regex", "rustc-hash 1.1.0", - "shlex", - "syn 2.0.106", + "shlex 1.3.0", + "syn 2.0.119", "which", ] @@ -940,7 +975,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cexpr", "clang-sys", "itertools 0.13.0", @@ -948,8 +983,8 @@ dependencies = [ "quote", "regex", "rustc-hash 1.1.0", - "shlex", - "syn 2.0.106", + "shlex 1.3.0", + "syn 2.0.119", ] [[package]] @@ -958,7 +993,7 @@ version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cexpr", "clang-sys", "itertools 0.13.0", @@ -967,9 +1002,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", - "shlex", - "syn 2.0.106", + "rustc-hash 2.1.3", + "shlex 1.3.0", + "syn 2.0.119", ] [[package]] @@ -979,16 +1014,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "annotate-snippets", - "bitflags 2.13.1", + "bitflags 2.13.2", "cexpr", "clang-sys", "itertools 0.13.0", "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", - "shlex", - "syn 2.0.106", + "rustc-hash 2.1.3", + "shlex 1.3.0", + "syn 2.0.119", ] [[package]] @@ -1020,18 +1055,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.1" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" dependencies = [ "serde_core", ] [[package]] name = "bitstream-io" -version = "2.6.0" +version = "4.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" +dependencies = [ + "no_std_io2", +] [[package]] name = "blake3" @@ -1061,13 +1099,22 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block-padding" -version = "0.3.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +checksum = "710f1dd022ef4e93f8a438b4ba958de7f64308434fa6a87104481645cc30068b" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -1076,23 +1123,23 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", + "objc2 0.5.3", ] [[package]] name = "block2" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.2", + "objc2 0.6.5", ] [[package]] name = "blocking" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +checksum = "a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa" dependencies = [ "async-channel", "async-task", @@ -1103,9 +1150,9 @@ dependencies = [ [[package]] name = "brotli" -version = "8.0.2" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +checksum = "f8b851b75c23ca7873623d612fe49bd1989aeb03d08fb9432187eb253d3d4c6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1114,14 +1161,23 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.0" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +checksum = "941cd9bd4ddab83cb46fa5a2d428f1c857b24ac78cb876cf7beb710840934bd7" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + [[package]] name = "build-time" version = "0.1.3" @@ -1132,39 +1188,39 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "built" -version = "0.7.7" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -1181,18 +1237,18 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.10.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" dependencies = [ "serde", ] [[package]] name = "bytestring" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +checksum = "86566c496f2f47d9b8147a4c8b02ffdb69c919fe0c2b2e7195d22cbba0e635c9" dependencies = [ "bytes", ] @@ -1203,7 +1259,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cairo-sys-rs", "glib", "libc", @@ -1228,7 +1284,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "log", "polling", "rustix 0.38.44", @@ -1250,9 +1306,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.0" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" +checksum = "bbbad30e4b4c14a39e3cc8aed085a12a327257c316619c93581e017bc52be591" dependencies = [ "serde_core", ] @@ -1281,21 +1337,21 @@ dependencies = [ "ffmpeg-next", "flume", "futures", - "image 0.25.8", + "image 0.25.10", "include_dir", "kameo", "keyring", "libc", "open", "relative-path", - "reqwest", + "reqwest 0.12.24", "rmcp", "rpassword", "scap-screencapturekit", "scap-targets", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "softbuffer", "tempfile", "tokio", @@ -1315,7 +1371,7 @@ dependencies = [ name = "cap-api" version = "0.0.0" dependencies = [ - "reqwest", + "reqwest 0.12.24", "workspace-hack", ] @@ -1493,10 +1549,10 @@ name = "cap-cursor-info" version = "0.0.0" dependencies = [ "hex", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "serde", - "sha2", + "sha2 0.10.9", "specta", "strum 0.27.2", "windows 0.60.0", @@ -1522,7 +1578,7 @@ dependencies = [ "async-stream", "axum 0.8.9", "base64 0.22.1", - "block2 0.6.1", + "block2 0.6.2", "bytemuck", "bytes", "cap-audio", @@ -1558,9 +1614,9 @@ dependencies = [ "futures", "futures-intrusive", "gdkwayland-sys", - "global-hotkey", + "global-hotkey 0.7.0", "gtk", - "image 0.25.8", + "image 0.25.10", "kameo", "keyed_priority_queue", "lazy_static", @@ -1571,19 +1627,19 @@ dependencies = [ "nix 0.29.0", "notify-rust", "objc", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "opentelemetry", "opentelemetry-otlp", "opentelemetry_sdk", "parakeet-rs", "png 0.17.16", "pollster", - "rand 0.8.5", + "rand 0.8.8", "regex", "relative-path", - "reqwest", + "reqwest 0.12.24", "rodio", "sanitize-filename", "scap-direct3d", @@ -1632,13 +1688,13 @@ dependencies = [ "tracing-subscriber", "uuid", "wayland-sys", - "webview2-com", + "webview2-com 0.38.2", "wgpu", "whisper-rs", "windows 0.60.0", "windows-core 0.61.2", "windows-sys 0.59.0", - "winreg", + "winreg 0.55.0", "workspace-hack", ] @@ -1658,7 +1714,7 @@ dependencies = [ "ffmpeg-next", "flume", "futures", - "image 0.25.8", + "image 0.25.10", "lru", "ringbuf", "sentry", @@ -1755,7 +1811,7 @@ dependencies = [ "ffmpeg-next", "futures", "gifski", - "image 0.25.8", + "image 0.25.10", "imgref", "inquire", "mp4", @@ -1945,15 +2001,15 @@ dependencies = [ "foreign-types-shared 0.3.1", "futures", "hex", - "image 0.25.8", - "indexmap 2.11.4", + "image 0.25.10", + "indexmap 2.14.2", "inquire", "kameo", "libc", "libproc", "objc", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "parking_lot", "pipewire", "relative-path", @@ -1968,7 +2024,7 @@ dependencies = [ "screencapturekit", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "specta", "sysinfo 0.35.2", "tempfile", @@ -2029,11 +2085,11 @@ dependencies = [ "futures", "futures-intrusive", "glyphon", - "image 0.25.8", - "libloading 0.8.8", + "image 0.25.10", + "libloading 0.8.9", "log", "metal 0.31.0", - "objc2 0.6.2", + "objc2 0.6.5", "pollster", "pretty_assertions", "rayon", @@ -2162,7 +2218,7 @@ dependencies = [ "ffmpeg-next", "num_cpus", "serde_json", - "sha2", + "sha2 0.10.9", "tempfile", "tokio", "tracing", @@ -2190,17 +2246,18 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "cargo_toml" -version = "0.22.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +checksum = "82f4b26e751e711a5302649417f2da046dce6391b2ea30a4820f37462314f0b9" dependencies = [ + "semver", "serde", - "toml 0.9.7", + "toml 1.1.8+spec-1.1.0", ] [[package]] @@ -2214,23 +2271,23 @@ dependencies = [ [[package]] name = "cbc" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +checksum = "ce2dc9ee5f88d11e0beb842c88b33c8a5cf0d1329c4b19494af42b07dbfe8896" dependencies = [ "cipher", ] [[package]] name = "cc" -version = "1.2.37" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +checksum = "6651c9ed80effdc7db0ff72512157f901af5e3549e341e24b1dd4887d836d838" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -2250,13 +2307,13 @@ dependencies = [ [[package]] name = "cfb" -version = "0.7.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +checksum = "a347dcabdae9c31b0825fd6a8bed285ec9c2acb89c47827126d52fa4f59cece3" dependencies = [ - "byteorder", "fnv", "uuid", + "web-time", ] [[package]] @@ -2271,9 +2328,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb693542bcafa528e198be0ebd9d3632ca5b7c93dbe7237460e199910835997c" +checksum = "9ba9e9ec16c447027685b1f897b720e18e9a8afd00bd7332c483537e38086c9f" dependencies = [ "smallvec", "target-lexicon 0.13.5", @@ -2281,9 +2338,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "cfg_aliases" @@ -2293,9 +2350,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "cgl" @@ -2306,11 +2363,22 @@ dependencies = [ "libc", ] +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "rand_core 0.10.1", +] + [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -2337,30 +2405,30 @@ checksum = "82bc2f84c0baaa09299da3a03864491549685912c1e338a54211e00589dc1e4c" [[package]] name = "cipher" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ - "crypto-common", + "crypto-common 0.2.2", "inout", ] [[package]] name = "clang-sys" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" dependencies = [ "glob", "libc", - "libloading 0.8.8", + "libloading 0.8.9", ] [[package]] name = "clap" -version = "4.5.47" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -2368,9 +2436,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.47" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -2380,30 +2448,30 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.6.5" +version = "4.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" +checksum = "037e2a1a92236d0aff7e845093f64661d6df4c02c9fcc61a60e9e1d736fa392f" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] name = "claxon" @@ -2418,10 +2486,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afede46921767868c5c7f8f55202bdd8bec0bab6bc9605174200f45924f93c62" dependencies = [ "clipboard-win", - "image 0.25.8", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", + "image 0.25.10", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "windows 0.59.0", "x11rb", ] @@ -2438,20 +2506,26 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "cocoa" version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad36507aeb7e16159dfe68db81ccc27571c3ccd4b76fb2fb72fc59e7a4b1b64c" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block", "cocoa-foundation", "core-foundation 0.10.1", @@ -2467,7 +2541,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block", "core-foundation 0.10.1", "core-graphics-types 0.2.0", @@ -2482,7 +2556,7 @@ checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ "serde", "termcolor", - "unicode-width 0.2.1", + "unicode-width 0.2.2", ] [[package]] @@ -2493,9 +2567,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "colored" @@ -2508,9 +2582,9 @@ dependencies = [ [[package]] name = "combine" -version = "4.6.7" +version = "4.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" dependencies = [ "bytes", "memchr", @@ -2518,9 +2592,9 @@ dependencies = [ [[package]] name = "compact_str" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a" +checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" dependencies = [ "castaway", "cfg-if", @@ -2549,10 +2623,16 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "windows-sys 0.59.0", ] +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "const-random" version = "0.1.18" @@ -2568,7 +2648,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "tiny-keccak", ] @@ -2585,11 +2665,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "cookie" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +checksum = "1a373e3602691c3cdea496d2f0ee5935151e6168fe87739483c463db1b2f2f87" dependencies = [ "percent-encoding", "time", @@ -2674,7 +2763,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types 0.5.0", @@ -2687,7 +2776,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types 0.5.0", @@ -2711,7 +2800,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "core-foundation 0.10.1", "libc", ] @@ -2726,7 +2815,7 @@ dependencies = [ "core-foundation 0.10.1", "core-utils-rs", "core-video-rs", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] @@ -2749,9 +2838,15 @@ dependencies = [ "core-graphics 0.24.0", "core-utils-rs", "io-surface", - "thiserror 2.0.16", + "thiserror 2.0.21", ] +[[package]] +name = "core_detect" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48" + [[package]] name = "core_maths" version = "0.1.1" @@ -2774,9 +2869,9 @@ dependencies = [ [[package]] name = "coreaudio-sys" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" +checksum = "b9b4739a805a62757a83e5654fa3faabec0442666b263bb2287d5a8185bfd953" dependencies = [ "bindgen 0.72.1", ] @@ -2787,7 +2882,7 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "fontdb 0.16.2", "log", "rangemap", @@ -2849,6 +2944,12 @@ dependencies = [ "windows 0.54.0", ] +[[package]] +name = "cpubits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -2893,27 +2994,27 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "98b0cc327b5bc766e7fda9c9260cc0fa81b43a8e240440422dff70788e3f9ef1" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -2921,18 +3022,18 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" [[package]] name = "crossterm" @@ -2967,21 +3068,30 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "cssparser" version = "0.29.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" dependencies = [ - "cssparser-macros", + "cssparser-macros 0.6.1", "dtoa-short", "itoa", "matches", @@ -2992,6 +3102,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "cssparser" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98" +dependencies = [ + "cssparser-macros 0.7.1", + "dtoa-short", + "itoa", + "phf 0.13.1", + "smallvec", +] + [[package]] name = "cssparser-macros" version = "0.6.1" @@ -2999,17 +3122,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] -name = "ctor" -version = "0.2.9" +name = "cssparser-macros" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +checksum = "d045de693cb712d0b22c6a64be5b953f67b3ce00ab5ad3dd5d8b441886ab8e1a" dependencies = [ "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -3021,12 +3144,33 @@ dependencies = [ "dtor", ] +[[package]] +name = "ctor" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914a755b7c2d4af2bdcff7ce1739e2db9a1b81a9b07123d8015786ae03c0980d" + +[[package]] +name = "ctutils" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03bb0e1cc970d482d121d9a1744999169b69a07470b3d644a7894e53fcaf4574" +dependencies = [ + "cmov", +] + [[package]] name = "cursor-icon" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" +[[package]] +name = "daachorse" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5614204febbc33cc07a2806aa6440b904ac012b68eecc37f4493ea4a76455a3d" + [[package]] name = "darling" version = "0.20.11" @@ -3047,6 +3191,16 @@ dependencies = [ "darling_macro 0.23.0", ] +[[package]] +name = "darling" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" +dependencies = [ + "darling_core 0.24.1", + "darling_macro 0.24.1", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -3058,7 +3212,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -3071,7 +3225,20 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.119", +] + +[[package]] +name = "darling_core" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 3.0.9", ] [[package]] @@ -3082,7 +3249,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -3093,14 +3260,25 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn 2.0.106", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" +dependencies = [ + "darling_core 0.24.1", + "quote", + "syn 3.0.9", ] [[package]] name = "dary_heap" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04" +checksum = "8b1e3a325bc115f096c8b77bbf027a7c2592230e70be2d985be950d3d5e60ebe" dependencies = [ "serde", ] @@ -3113,9 +3291,9 @@ checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" [[package]] name = "data-url" @@ -3123,6 +3301,17 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" +[[package]] +name = "dbus" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e" +dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", +] + [[package]] name = "debugid" version = "0.8.0" @@ -3134,34 +3323,65 @@ dependencies = [ ] [[package]] -name = "der" -version = "0.7.10" +name = "defmt" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ - "pem-rfc7468", - "zeroize", + "bitflags 1.3.2", + "defmt-macros", ] [[package]] -name = "deranged" -version = "0.5.3" +name = "defmt-macros" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ - "powerfmt", - "serde", -] + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.21", +] + +[[package]] +name = "der" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" +dependencies = [ + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e9de72ce2ad1f90dc62fa25f0f430ef85eb4b0d8fa0be4f30373bc40a21d28e" +dependencies = [ + "powerfmt", + "serde_core", +] [[package]] name = "derive_arbitrary" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +checksum = "1b034bd7d5f032402a2479444dcc6f74e36a03f31854d41680fb240ef682a1ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -3182,7 +3402,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -3192,7 +3412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -3201,31 +3421,33 @@ version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ - "convert_case", + "convert_case 0.4.0", "proc-macro2", "quote", "rustc_version", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ + "convert_case 0.10.0", "proc-macro2", "quote", - "syn 2.0.106", + "rustc_version", + "syn 2.0.119", "unicode-xid", ] @@ -3271,11 +3493,23 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "crypto-common", + "block-buffer 0.10.4", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "const-oid", + "crypto-common 0.2.2", + "ctutils", +] + [[package]] name = "directories" version = "5.0.1" @@ -3312,6 +3546,15 @@ dependencies = [ "dirs-sys 0.5.0", ] +[[package]] +name = "dirs" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f" +dependencies = [ + "dirs-sys 0.5.0", +] + [[package]] name = "dirs-sys" version = "0.4.1" @@ -3332,7 +3575,7 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users 0.5.2", + "redox_users 0.5.3", "windows-sys 0.61.2", ] @@ -3344,41 +3587,41 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dispatch2" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.13.1", - "block2 0.6.1", + "bitflags 2.13.2", + "block2 0.6.2", "libc", - "objc2 0.6.2", + "objc2 0.6.5", ] [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] name = "dlib" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" dependencies = [ - "libloading 0.8.8", + "libloading 0.8.9", ] [[package]] name = "dlopen2" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b54f373ccf864bf587a89e880fb7610f8d73f3045f13580948ccbcaff26febff" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" dependencies = [ "dlopen2_derive", "libc", @@ -3388,13 +3631,13 @@ dependencies = [ [[package]] name = "dlopen2_derive" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -3408,13 +3651,28 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" dependencies = [ "litrs", ] +[[package]] +name = "dom_query" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac5fca71e65e94cc718a6e2af65d6e0f9c6027751c2aa562fbb5087fda639bc" +dependencies = [ + "bit-set", + "cssparser 0.37.0", + "foldhash 0.2.0", + "html5ever 0.39.0", + "precomputed-hash", + "selectors 0.38.0", + "tendril 0.5.1", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -3456,25 +3714,26 @@ dependencies = [ [[package]] name = "drm" -version = "0.12.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98888c4bbd601524c11a7ed63f814b8825f420514f78e96f752c437ae9cbb5d1" +checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "drm-ffi", "drm-fourcc", + "libc", "rustix 0.38.44", ] [[package]] name = "drm-ffi" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97c98727e48b7ccb4f4aea8cfe881e5b07f702d17b7875991881b41af7278d53" +checksum = "51a91c9b32ac4e8105dec255e849e0d66e27d7c34d184364fb93e469db08f690" dependencies = [ "drm-sys", - "rustix 0.38.44", + "rustix 1.1.5", ] [[package]] @@ -3485,19 +3744,19 @@ checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" [[package]] name = "drm-sys" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd39dde40b6e196c2e8763f23d119ddb1a8714534bf7d77fa97a65b0feda3986" +checksum = "ecc8e1361066d91f5ffccff060a3c3be9c3ecde15be2959c1937595f7a82a9f8" dependencies = [ "libc", - "linux-raw-sys 0.6.5", + "linux-raw-sys 0.9.4", ] [[package]] name = "dtoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" [[package]] name = "dtoa-short" @@ -3528,22 +3787,22 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.15.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" [[package]] name = "embed-resource" -version = "3.0.5" +version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6d81016d6c977deefb2ef8d8290da019e27cc26167e102185da528e6c0ab38" +checksum = "6168487b5e7eb2673e6efe1200b1848016e436a6ca0b8031bf04bd9d493a249f" dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.9.7", + "toml 1.1.8+spec-1.1.0", "vswhom", - "winreg", + "winreg 0.56.0", ] [[package]] @@ -3560,18 +3819,23 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.35" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "8e985e0451871ad22fb8d2b6b076e2028a502a0d3950998c2c5c0a4f9b5d9679" dependencies = [ "cfg-if", + "core_detect", + "multiversion_no_op", + "rustversion", + "scopeguard", + "simdutf8", ] [[package]] name = "endi" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" [[package]] name = "enumflags2" @@ -3591,7 +3855,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -3611,20 +3875,20 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "equivalent" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", "serde_core", @@ -3643,9 +3907,9 @@ dependencies = [ [[package]] name = "error-code" -version = "3.3.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" +checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" [[package]] name = "esaxx-rs" @@ -3665,20 +3929,19 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.11" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" dependencies = [ "num-traits", ] [[package]] name = "event-listener" -version = "5.4.1" +version = "5.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" dependencies = [ - "concurrent-queue", "parking", "pin-project-lite", ] @@ -3695,14 +3958,16 @@ dependencies = [ [[package]] name = "exr" -version = "1.73.0" +version = "1.74.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" dependencies = [ "bit_field", "half", "lebe", - "miniz_oxide", + "miniz_oxide 0.8.9", + "num-complex", + "pulp", "rayon-core", "smallvec", "zune-inflate", @@ -3710,39 +3975,26 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.12" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" dependencies = [ + "autocfg", "indenter", "once_cell", ] [[package]] name = "fastrand" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[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.106", -] +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" [[package]] name = "fdeflate" @@ -3767,7 +4019,7 @@ name = "ffmpeg-next" version = "7.1.0" source = "git+https://github.com/CapSoftware/rust-ffmpeg?rev=49db1fede112#49db1fede1123029670728bd6e3fcbb07b0f5716" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "ffmpeg-sys-next", "libc", ] @@ -3798,21 +4050,19 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.26" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" dependencies = [ "cfg-if", "libc", - "libredox", - "windows-sys 0.60.2", ] [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" [[package]] name = "findshlibs" @@ -3828,19 +4078,19 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.4.2" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ "crc32fast", - "libz-rs-sys", - "miniz_oxide", + "miniz_oxide 0.9.1", + "zlib-rs", ] [[package]] @@ -3873,11 +4123,17 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "font-types" -version = "0.9.0" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a596f5713680923a2080d86de50fe472fb290693cf0f701187a1c8b36996b7" +checksum = "6c92d9081c7ab3bd83ef1eecdfad090f3d966e3ce74106779664114cfe1a6274" dependencies = [ "bytemuck", ] @@ -3940,13 +4196,13 @@ dependencies = [ [[package]] name = "foreign-types-macros" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -3994,9 +4250,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -4009,9 +4265,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -4019,15 +4275,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" dependencies = [ "futures-core", "futures-task", @@ -4047,9 +4303,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-lite" @@ -4066,32 +4322,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -4101,7 +4357,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -4234,12 +4489,12 @@ dependencies = [ [[package]] name = "gethostname" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.2", - "windows-targets 0.52.6", + "rustix 1.1.5", + "windows-link 0.2.1", ] [[package]] @@ -4255,9 +4510,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -4268,15 +4523,27 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "r-efi 6.0.0", + "rand_core 0.10.1", "wasm-bindgen", ] @@ -4290,13 +4557,23 @@ dependencies = [ "weezl", ] +[[package]] +name = "gif" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gif-dispose" version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1aa07391f3d9c279f388cea6faf291555dd891df59bed01d4378583df946ac" dependencies = [ - "gif", + "gif 0.13.3", "imgref", "rgb", ] @@ -4311,7 +4588,7 @@ dependencies = [ "crossbeam-channel", "crossbeam-utils", "dunce", - "gif", + "gif 0.13.3", "gif-dispose", "imagequant", "imgref", @@ -4331,9 +4608,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "gio" @@ -4384,7 +4661,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "futures-channel", "futures-core", "futures-executor", @@ -4412,7 +4689,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -4427,9 +4704,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" [[package]] name = "global-hotkey" @@ -4438,12 +4715,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9247516746aa8e53411a0db9b62b0e24efbcf6a76e0ba73e5a91b512ddabed7" dependencies = [ "crossbeam-channel", - "keyboard-types", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "keyboard-types 0.7.0", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "once_cell", + "thiserror 2.0.21", + "windows-sys 0.59.0", + "x11rb", + "xkeysym", +] + +[[package]] +name = "global-hotkey" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c386b0a4a70cb2d39fffd74480f985b6f0bfbcb934b6a6b6b7e630e448f242e" +dependencies = [ + "crossbeam-channel", + "keyboard-types 0.7.0", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "once_cell", "serde", - "thiserror 2.0.16", + "thiserror 2.0.21", "windows-sys 0.59.0", "x11rb", "xkeysym", @@ -4479,7 +4773,7 @@ dependencies = [ "cosmic-text", "etagere", "lru", - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", "wgpu", ] @@ -4507,21 +4801,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.13.1", + "bitflags 2.13.2", "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.13.1", + "bitflags 2.13.2", ] [[package]] @@ -4542,7 +4836,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -4553,7 +4847,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", ] [[package]] @@ -4605,7 +4899,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -4616,17 +4910,17 @@ checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" [[package]] name = "h2" -version = "0.4.12" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "7d29020232d6aa3fb1daca64c1127cf662cf97f254ae16c18c05b8ab635fc118" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.3.1", - "indexmap 2.11.4", + "http 1.5.0", + "indexmap 2.14.2", "slab", "tokio", "tokio-util", @@ -4635,13 +4929,14 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", "num-traits", + "zerocopy", ] [[package]] @@ -4664,9 +4959,15 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", ] +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "heck" version = "0.4.1" @@ -4681,9 +4982,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" [[package]] name = "hex" @@ -4699,46 +5000,46 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ - "digest", + "digest 0.11.3", ] [[package]] name = "hmac-sha256" -version = "1.1.14" +version = "1.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9d92d097f4749b64e8cc33d924d9f40a2d4eb91402b458014b781f5733d60f" +checksum = "1ad320b3b96fb2a455a0726d16efe0a5afdbd34b71dea5bc53b05ea057714d4e" [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "hostname" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" +checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd" dependencies = [ "cfg-if", "libc", - "windows-link 0.1.3", + "windows-link 0.2.1", ] [[package]] @@ -4755,10 +5056,20 @@ checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" dependencies = [ "log", "mac", - "markup5ever", + "markup5ever 0.14.1", "match_token", ] +[[package]] +name = "html5ever" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8" +dependencies = [ + "log", + "markup5ever 0.39.0", +] + [[package]] name = "http" version = "0.2.12" @@ -4772,34 +5083,33 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", - "fnv", "itoa", ] [[package]] name = "http-body" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" dependencies = [ "bytes", - "http 1.3.1", + "http 1.5.0", ] [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.5.0", "http-body", "pin-project-lite", ] @@ -4822,24 +5132,32 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "hybrid-array" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" -version = "1.7.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2c3e324da4c95177d6291d4c8730197c0d1822f8a9766814a4a44fa5ab797c9c" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", "h2", - "http 1.3.1", + "http 1.5.0", "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -4847,15 +5165,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.7" +version = "0.27.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "dfa8e654703247911e29c23fbeaa261834bd9bb74efba2f9acddc37bfb127f53" dependencies = [ - "http 1.3.1", + "http 1.5.0", "hyper", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -4880,23 +5197,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.17" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "bytes", "futures-channel", - "futures-core", "futures-util", - "http 1.3.1", + "http 1.5.0", "http-body", + "httparse", "hyper", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2", "system-configuration", "tokio", "tower-service", @@ -4906,9 +5223,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4916,7 +5233,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.62.2", ] [[package]] @@ -4930,9 +5247,9 @@ dependencies = [ [[package]] name = "ico" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" dependencies = [ "byteorder", "png 0.17.16", @@ -4940,12 +5257,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -4953,9 +5271,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" dependencies = [ "displaydoc", "litemap", @@ -4966,11 +5284,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4981,42 +5298,39 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" dependencies = [ "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -5043,9 +5357,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", @@ -5061,7 +5375,7 @@ dependencies = [ "byteorder", "color_quant", "exr", - "gif", + "gif 0.13.3", "jpeg-decoder", "num-traits", "png 0.17.16", @@ -5071,25 +5385,25 @@ dependencies = [ [[package]] name = "image" -version = "0.25.8" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", "color_quant", "exr", - "gif", + "gif 0.14.2", "image-webp", "moxcms", "num-traits", - "png 0.18.0", + "png 0.18.1", "qoi", "ravif", "rayon", - "tiff 0.10.3", - "zune-core", - "zune-jpeg", + "tiff 0.11.3", + "zune-core 0.5.3", + "zune-jpeg 0.5.15", ] [[package]] @@ -5123,15 +5437,15 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imgref" -version = "1.11.0" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" +checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" [[package]] name = "impl-more" -version = "0.1.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" +checksum = "2d3a73c82a0b0747dba739b380c046a140b5ae747234bf701df3460282da7193" [[package]] name = "include_dir" @@ -5171,12 +5485,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -5190,27 +5504,27 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "web-time", ] [[package]] name = "infer" -version = "0.19.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +checksum = "f4200d433cbd5178df7797c9c2e75b348b728e39631cf14520d1e2fc424201f4" dependencies = [ "cfb", ] [[package]] name = "inout" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" dependencies = [ "block-padding", - "generic-array", + "hybrid-array", ] [[package]] @@ -5219,7 +5533,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "crossterm", "dyn-clone", "fuzzy-matcher", @@ -5238,14 +5552,14 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "inventory" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +checksum = "6928282826c822ad91bf1c9a1cb90a30ba1c26770749929b4656cd6be829cd7c" dependencies = [ "rustversion", ] @@ -5262,32 +5576,11 @@ dependencies = [ "leaky-cow", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.13.1", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.8" +version = "2.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" -dependencies = [ - "memchr", - "serde", -] +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" [[package]] name = "is-docker" @@ -5310,9 +5603,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -5343,9 +5636,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "javascriptcore-rs" @@ -5371,15 +5664,69 @@ dependencies = [ ] [[package]] -name = "jni" -version = "0.21.1" +name = "jiff" +version = "0.2.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b005715dcbeb0089a3c0dab99f2ff1cc3b2525323552703d648585d342a383" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-link 0.2.1", +] + +[[package]] +name = "jiff-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e52fe76043ccecc9005d2305ebaadf7d7fc0cc89ca6baa10a94d6bc68c7128c" +dependencies = [ + "defmt", + "log", +] + +[[package]] +name = "jiff-static" +version = "0.2.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc9817253cf7c7ee4684451bd327e88d6f3658014e54a29198625590650695c" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8377070c6bae868759445e5a77f66d84f0b72f3a054bfb00e6d038b8282da7" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jni" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys 0.3.0", + "jni-sys 0.3.1", "log", "thiserror 1.0.69", "walkdir", @@ -5398,7 +5745,7 @@ dependencies = [ "jni-sys 0.4.1", "log", "simd_cesu8", - "thiserror 2.0.16", + "thiserror 2.0.21", "walkdir", "windows-link 0.2.1", ] @@ -5413,14 +5760,17 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] [[package]] name = "jni-sys" @@ -5438,16 +5788,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.4.3", "libc", ] @@ -5462,31 +5812,32 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.80" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] [[package]] name = "json-patch" -version = "3.0.1" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +checksum = "7421438de105a0827e44fadd05377727847d717c80ce29a229f85fd04c427b72" dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.21", ] [[package]] name = "jsonptr" -version = "0.6.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe" dependencies = [ "serde", "serde_json", @@ -5517,7 +5868,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", "uuid", ] @@ -5527,25 +5878,35 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "serde", "unicode-segmentation", ] +[[package]] +name = "keyboard-types" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" +dependencies = [ + "bitflags 2.13.2", + "serde", +] + [[package]] name = "keyed_priority_queue" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.2", ] [[package]] name = "keyring" -version = "4.1.5" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0298a59b384c540e408a600c8b375a09b49c3f97debc080e2c30675d79a6368a" +checksum = "2270074a3d26bcac93c1dc5d2845eb4c089e8d761ccf6e0ea266a16004640627" dependencies = [ "apple-native-keyring-store", "keyring-core", @@ -5555,9 +5916,9 @@ dependencies = [ [[package]] name = "keyring-core" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1e621458ca9c51aa110bd0339d4751a056b9576bf1253aee1aa560dda0fc9d" +checksum = "29fbf4b551298c67925f38cf341a1ada797a75f1837bdf8ae1fc8e2ebc6efb59" dependencies = [ "log", ] @@ -5569,7 +5930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.8", + "libloading 0.8.9", "pkg-config", ] @@ -5585,10 +5946,10 @@ version = "0.8.8-speedreader" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" dependencies = [ - "cssparser", - "html5ever", - "indexmap 2.11.4", - "selectors", + "cssparser 0.29.6", + "html5ever 0.29.1", + "indexmap 2.14.2", + "selectors 0.24.0", ] [[package]] @@ -5610,9 +5971,9 @@ checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" [[package]] name = "lazycell" @@ -5678,15 +6039,24 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.175" +version = "0.2.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78" + +[[package]] +name = "libdbus-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" +dependencies = [ + "pkg-config", +] [[package]] name = "libfuzzer-sys" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" dependencies = [ "arbitrary", "cc", @@ -5704,12 +6074,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link 0.2.1", ] [[package]] @@ -5724,68 +6094,60 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libproc" -version = "0.14.10" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78a09b56be5adbcad5aa1197371688dc6bb249a26da3bca2011ee2fb987ebfb" +checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" dependencies = [ - "bindgen 0.70.1", + "bindgen 0.72.1", "errno", "libc", ] [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "61ff90caf6077a803a240f62fdbe88645a890bbca49ef8174c3cb0404362171d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", - "redox_syscall 0.5.17", + "plain", + "redox_syscall 0.9.4", ] [[package]] name = "libspa" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2909f3be29d674e7f10604aff18d1bbe1bb03c4cd61c8a8ba19c0b1d162f7d4e" +checksum = "882f7427e7989dcc9d388b7f05c4630390a1d7696f9ffa469cd4a7a48f0b4c40" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cc", "cookie-factory", "libc", "libspa-sys", "nom 8.0.0", - "rustix 1.1.2", + "rustix 1.1.5", "system-deps 7.0.8", ] [[package]] name = "libspa-sys" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ad52764fca54818486f3cf75afec844d1f1a1568c24dcee25d41b1ab007dda" +checksum = "3b6e17bdaf63ed0d5e4144022624032b41fd9733112e8c74ac26fc9bf1291924" dependencies = [ "bindgen 0.72.1", "cc", "system-deps 7.0.8", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" -dependencies = [ - "zlib-rs", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -5794,9 +6156,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.6.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "linux-raw-sys" @@ -5805,27 +6167,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] -name = "litemap" -version = "0.8.0" +name = "linux-raw-sys" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] -name = "litrs" -version = "0.4.2" +name = "litemap" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] -name = "local-channel" -version = "0.1.5" +name = "litrs" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" -dependencies = [ - "futures-core", - "futures-sink", - "local-waker", -] +checksum = "4744e383959f0db86ede514b809b1c53251889093803c05267acc7d4e7030d70" [[package]] name = "local-waker" @@ -5835,19 +6192,18 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "lodepng" -version = "3.12.1" +version = "3.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a32335d22e44238e2bb0b4d726964d18952ce1f1279ec3305305d2c61539eb" +checksum = "fe7982db11054edc023a1b424dddcc65be18f71fa46ec6bde2efcfc1fb6b22da" dependencies = [ "crc32fast", "flate2", @@ -5857,9 +6213,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "loop9" @@ -5881,24 +6237,24 @@ dependencies = [ [[package]] name = "lru-slab" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +checksum = "4050469837a6ff301cd14c1f8f24f88549e6d548f24f64e2148eb0f72cebc51f" [[package]] name = "lz4_flex" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" +checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a" dependencies = [ "twox-hash", ] [[package]] name = "lzma-rust2" -version = "0.15.7" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1670343e58806300d87950e3401e820b519b9384281bbabfb15e3636689ffd69" +checksum = "e20f57f9918e5bd7bc58c22cdd70a6afc7375d4dd9683af5f2b34bd3d2bba619" [[package]] name = "mac" @@ -5908,14 +6264,16 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "mac-notification-sys" -version = "0.6.6" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119c8490084af61b44c9eda9d626475847a186737c0378c85e32d77c33a01cd4" +checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca" dependencies = [ "cc", - "objc2 0.6.2", - "objc2-foundation 0.3.1", + "log", + "objc2 0.6.5", + "objc2-foundation 0.3.2", "time", + "uuid", ] [[package]] @@ -5939,19 +6297,19 @@ dependencies = [ [[package]] name = "macro_rules_attribute" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520" +checksum = "b3ae8f6d608c795738406608304d30a2dfbdc8e58e44f7ba43236da5208ded3c" dependencies = [ "macro_rules_attribute-proc_macro", - "paste", + "pastey 0.2.3", ] [[package]] name = "macro_rules_attribute-proc_macro" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30" +checksum = "fc04a4c58212d57930a24bf47d3fa87485264a3a054e9c10e042eb373573ad3c" [[package]] name = "malloc_buf" @@ -5971,9 +6329,20 @@ dependencies = [ "log", "phf 0.11.3", "phf_codegen 0.11.3", - "string_cache", - "string_cache_codegen", - "tendril", + "string_cache 0.8.9", + "string_cache_codegen 0.5.4", + "tendril 0.4.3", +] + +[[package]] +name = "markup5ever" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de" +dependencies = [ + "log", + "tendril 0.5.1", + "web_atoms", ] [[package]] @@ -5984,7 +6353,7 @@ checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -6016,9 +6385,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "matrixmultiply" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" dependencies = [ "autocfg", "rawpointer", @@ -6042,15 +6411,15 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.5" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -6070,7 +6439,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block", "core-graphics-types 0.1.3", "foreign-types 0.5.0", @@ -6085,7 +6454,7 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block", "core-graphics-types 0.1.3", "foreign-types 0.5.0", @@ -6116,7 +6485,7 @@ version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c4d14bcca0fd3ed165a03000480aaa364c6860c34e900cb2dafdf3b95340e77" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "debugid", "num-derive", "num-traits", @@ -6131,7 +6500,7 @@ version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abcd9c8a1e6e1e9d56ce3627851f39a17ea83e17c96bc510f29d7e43d78a7d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "byteorder", "cfg-if", "crash-context", @@ -6187,9 +6556,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "minisign-verify" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e856fdd13623a2f5f2f54676a4ee49502a96a80ef4a62bcedd23d52427c44d43" +checksum = "871285dc19d8d0ebe0eef3d0e99a205f2a71363b122632cbbfa4a6c370a960ce" [[package]] name = "miniz_oxide" @@ -6201,6 +6570,16 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" +dependencies = [ + "adler2", + "simd-adler32", +] + [[package]] name = "mintex" version = "0.1.4" @@ -6221,14 +6600,14 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.4" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "1788edb87fdc09c7e26304471e2f5be8cdefb1b6930d6e3985fc02ff53bf86ee" dependencies = [ "libc", "log", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6250,14 +6629,14 @@ checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "moxcms" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -6279,25 +6658,31 @@ dependencies = [ [[package]] name = "muda" -version = "0.17.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a" +checksum = "cca139e57da4383727f189e43e66e84fa372347027fc996f9f1a007ec0a37996" dependencies = [ "crossbeam-channel", "dpi", "gtk", - "keyboard-types", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "keyboard-types 0.8.3", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "once_cell", - "png 0.17.16", + "png 0.18.1", "serde", - "thiserror 2.0.16", - "windows-sys 0.60.2", + "thiserror 2.0.21", + "windows-sys 0.61.2", ] +[[package]] +name = "multiversion_no_op" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743fb55ba31b18fb1ecef6bdc9aa2743314978ac084044301a7eee33fb99a20d" + [[package]] name = "naga" version = "25.0.1" @@ -6306,20 +6691,20 @@ checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.13.1", - "cfg_aliases 0.2.1", + "bitflags 2.13.2", + "cfg_aliases 0.2.2", "codespan-reporting", "half", "hashbrown 0.15.5", "hexf-parse", - "indexmap 2.11.4", + "indexmap 2.14.2", "log", "num-traits", "once_cell", "rustc-hash 1.1.0", "spirv", "strum 0.26.3", - "thiserror 2.0.16", + "thiserror 2.0.21", "unicode-ident", ] @@ -6329,14 +6714,14 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "native-tls" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" dependencies = [ "libc", "log", @@ -6344,7 +6729,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework 2.11.1", + "security-framework", "security-framework-sys", "tempfile", ] @@ -6391,8 +6776,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 2.13.1", - "jni-sys 0.3.0", + "bitflags 2.13.2", + "jni-sys 0.3.1", "log", "ndk-sys 0.5.0+25.2.9519653", "num_enum", @@ -6405,8 +6790,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.13.1", - "jni-sys 0.3.0", + "bitflags 2.13.2", + "jni-sys 0.3.1", "log", "ndk-sys 0.6.0+11769913", "num_enum", @@ -6426,7 +6811,7 @@ version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ - "jni-sys 0.3.0", + "jni-sys 0.3.1", ] [[package]] @@ -6435,7 +6820,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys 0.3.0", + "jni-sys 0.3.1", ] [[package]] @@ -6459,7 +6844,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -6471,12 +6856,33 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases 0.2.2", "libc", ] +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags 2.13.2", + "cfg-if", + "cfg_aliases 0.2.2", + "libc", +] + +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + [[package]] name = "nodrop" version = "0.1.14" @@ -6510,9 +6916,9 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "notify-rust" -version = "4.11.7" +version = "4.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6442248665a5aa2514e794af3b39661a8e73033b1cc5e59899e1276117ee4400" +checksum = "4587364a9a0074333429b3df75a30a205340c56a536ca3eb6ca0e59b87bbf8af" dependencies = [ "futures-lite", "log", @@ -6524,20 +6930,20 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" +checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" dependencies = [ "winapi", ] [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -6556,9 +6962,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" dependencies = [ "num-integer", "num-traits", @@ -6570,14 +6976,15 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ + "bytemuck", "num-traits", ] [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-derive" @@ -6587,14 +6994,14 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "num-integer" -version = "0.1.46" +version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" dependencies = [ "num-traits", ] @@ -6643,9 +7050,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -6653,14 +7060,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -6698,9 +7105,9 @@ checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +checksum = "19d5490aaf8f1d7cf7688dfa9b0ce07900e168852c45cd2c03f534dfd27cfd0b" dependencies = [ "objc-sys", "objc2-encode", @@ -6708,9 +7115,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561f357ba7f3a2a61563a186a163d0a3a5247e1089524a3981d49adb775078bc" +checksum = "08849bbd4767dfae9457696856ae1c84fe4e0281bbe4a7abff2d0e06fb7981f8" dependencies = [ "objc2-encode", "objc2-exception-helper", @@ -6722,10 +7129,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", "libc", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-core-data 0.2.2", "objc2-core-image 0.2.2", "objc2-foundation 0.2.2", @@ -6734,51 +7141,56 @@ dependencies = [ [[package]] name = "objc2-app-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.13.1", - "block2 0.6.1", + "bitflags 2.13.2", + "block2 0.6.2", "libc", - "objc2 0.6.2", - "objc2-cloud-kit 0.3.1", - "objc2-core-data 0.3.1", + "objc2 0.6.5", + "objc2-cloud-kit 0.3.2", + "objc2-core-data 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-core-image 0.3.1", - "objc2-foundation 0.3.1", - "objc2-quartz-core 0.3.1", + "objc2-core-image 0.3.2", + "objc2-core-text", + "objc2-core-video", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", ] [[package]] name = "objc2-av-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e085a2e16c61dadbad7a808fc9d5b5f8472b1b825b53d529c9f64ccac78e722" +checksum = "478ae33fcac9df0a18db8302387c666b8ef08a3e2d62b510ca4fc278a384b6c0" dependencies = [ - "bitflags 2.13.1", - "block2 0.6.1", + "bitflags 2.13.2", + "block2 0.6.2", "dispatch2", - "objc2 0.6.2", + "objc2 0.6.5", "objc2-avf-audio", + "objc2-core-audio-types", "objc2-core-foundation", "objc2-core-graphics", - "objc2-core-image 0.3.1", + "objc2-core-image 0.3.2", "objc2-core-media", "objc2-core-video", - "objc2-foundation 0.3.1", - "objc2-quartz-core 0.3.1", + "objc2-foundation 0.3.2", + "objc2-image-io", + "objc2-media-toolbox", + "objc2-quartz-core 0.3.2", ] [[package]] name = "objc2-avf-audio" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfc1d11521c211a7ebe17739fc806719da41f56c6b3f949d9861b459188ce910" +checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" dependencies = [ - "objc2 0.6.2", - "objc2-foundation 0.3.1", + "objc2 0.6.5", + "objc2-foundation 0.3.2", ] [[package]] @@ -6787,22 +7199,22 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", - "objc2-core-location", + "objc2 0.5.3", + "objc2-core-location 0.2.2", "objc2-foundation 0.2.2", ] [[package]] name = "objc2-cloud-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", - "objc2-foundation 0.3.1", + "bitflags 2.13.2", + "objc2 0.6.5", + "objc2-foundation 0.3.2", ] [[package]] @@ -6812,30 +7224,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] [[package]] name = "objc2-core-audio" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca44961e888e19313b808f23497073e3f6b3c22bb485056674c8b49f3b025c82" +checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2" dependencies = [ "dispatch2", - "objc2 0.6.2", + "objc2 0.6.5", "objc2-core-audio-types", "objc2-core-foundation", ] [[package]] name = "objc2-core-audio-types" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f1cc99bb07ad2ddb6527ddf83db6a15271bb036b3eb94b801cd44fdc666ee1" +checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", + "bitflags 2.13.2", + "objc2 0.6.5", ] [[package]] @@ -6844,43 +7256,43 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] [[package]] name = "objc2-core-data" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", - "objc2-foundation 0.3.1", + "bitflags 2.13.2", + "objc2 0.6.5", + "objc2-foundation 0.3.2", ] [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "dispatch2", - "objc2 0.6.2", + "objc2 0.6.5", ] [[package]] name = "objc2-core-graphics" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "dispatch2", - "objc2 0.6.2", + "objc2 0.6.5", "objc2-core-foundation", "objc2-io-surface", ] @@ -6892,19 +7304,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal", ] [[package]] name = "objc2-core-image" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" dependencies = [ - "objc2 0.6.2", - "objc2-foundation 0.3.1", + "objc2 0.6.5", + "objc2-foundation 0.3.2", ] [[package]] @@ -6914,34 +7326,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-contacts", "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2 0.6.5", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-core-media" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b7afa6822e2fa20dfc88d10186b2432bf8560b5ed73ec9d31efd78277bc878" +checksum = "05ec576860167a15dd9fce7fbee7512beb4e31f532159d3482d1f9c6caedf31d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "dispatch2", - "objc2 0.6.2", + "objc2 0.6.5", "objc2-core-audio", "objc2-core-audio-types", "objc2-core-foundation", "objc2-core-video", ] +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.13.2", + "objc2 0.6.5", + "objc2-core-foundation", + "objc2-core-graphics", +] + [[package]] name = "objc2-core-video" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1989c3e76c7e978cab0ba9e6f4961cd00ed14ca21121444cc26877403bfb6303" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", + "bitflags 2.13.2", + "objc2 0.6.5", "objc2-core-foundation", "objc2-core-graphics", "objc2-io-surface", @@ -6968,54 +7402,55 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", "dispatch", "libc", - "objc2 0.5.2", + "objc2 0.5.3", ] [[package]] name = "objc2-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.13.1", - "block2 0.6.1", + "bitflags 2.13.2", + "block2 0.6.2", "libc", - "objc2 0.6.2", + "objc2 0.6.5", "objc2-core-foundation", ] [[package]] -name = "objc2-io-kit" -version = "0.3.1" +name = "objc2-image-io" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a" +checksum = "32b0446e98cf4a784cc7a0177715ff317eeaa8463841c616cfc78aa4f953c4ea" dependencies = [ - "libc", + "objc2 0.6.5", "objc2-core-foundation", + "objc2-core-graphics", ] [[package]] -name = "objc2-io-surface" -version = "0.3.1" +name = "objc2-io-kit" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", + "libc", "objc2-core-foundation", ] [[package]] -name = "objc2-javascript-core" -version = "0.3.1" +name = "objc2-io-surface" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9052cb1bb50a4c161d934befcf879526fb87ae9a68858f241e693ca46225cf5a" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "objc2 0.6.2", + "bitflags 2.13.2", + "objc2 0.6.5", "objc2-core-foundation", ] @@ -7026,33 +7461,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-media-toolbox" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd9fdde720df3da7046bb9097811000c1e7ab5cd579fa89d96b27d56781fb30" +dependencies = [ + "objc2 0.6.5", + "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-core-media", +] + [[package]] name = "objc2-metal" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] [[package]] name = "objc2-osa-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bb88504b5a050dbba515d2414607bf5e57dd56b107bc5f0351197a3e7bdc5d" +checksum = "f112d1746737b0da274ef79a23aac283376f335f4095a083a267a082f21db0c0" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", + "bitflags 2.13.2", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", ] [[package]] @@ -7061,33 +7508,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal", ] [[package]] name = "objc2-quartz-core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" -dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-security" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1f8e0ef3ab66b08c42644dcb34dba6ec0a574bbd8adbb8bdbdc7a2779731a44" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", + "bitflags 2.13.2", + "objc2 0.6.5", "objc2-core-foundation", + "objc2-foundation 0.3.2", ] [[package]] @@ -7096,7 +7533,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -7106,31 +7543,40 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-cloud-kit 0.2.2", "objc2-core-data 0.2.2", "objc2-core-image 0.2.2", - "objc2-core-location", + "objc2-core-location 0.2.2", "objc2-foundation 0.2.2", "objc2-link-presentation", "objc2-quartz-core 0.2.2", "objc2-symbols", "objc2-uniform-type-identifiers", - "objc2-user-notifications", + "objc2-user-notifications 0.2.2", ] [[package]] name = "objc2-ui-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.13.1", - "objc2 0.6.2", + "bitflags 2.13.2", + "block2 0.6.2", + "objc2 0.6.5", + "objc2-cloud-kit 0.3.2", + "objc2-core-data 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-core-graphics", + "objc2-core-image 0.3.2", + "objc2-core-location 0.3.2", + "objc2-core-text", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", + "objc2-user-notifications 0.3.2", ] [[package]] @@ -7140,7 +7586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ "block2 0.5.1", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -7150,27 +7596,35 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", - "objc2 0.5.2", - "objc2-core-location", + "objc2 0.5.3", + "objc2-core-location 0.2.2", "objc2-foundation 0.2.2", ] +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2 0.6.5", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-web-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" dependencies = [ - "bitflags 2.13.1", - "block2 0.6.1", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "bitflags 2.13.2", + "block2 0.6.2", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", - "objc2-javascript-core", - "objc2-security", + "objc2-foundation 0.3.2", ] [[package]] @@ -7193,9 +7647,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -7234,23 +7688,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "onig" -version = "6.5.1" +version = "6.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" +checksum = "0cc3cbf698f9438986c11a880c90a6d04b9de27575afd28bbf45b154b6c709e2" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", "once_cell", "onig_sys", @@ -7258,9 +7712,9 @@ dependencies = [ [[package]] name = "onig_sys" -version = "69.9.1" +version = "69.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc" +checksum = "1e68317604e77e53b85896388e1a803c1d21b74c899ec9e5e1112db90735edd7" dependencies = [ "cc", "pkg-config", @@ -7268,9 +7722,9 @@ dependencies = [ [[package]] name = "open" -version = "5.4.0" +version = "5.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b3d059e795d52b8a72fef45658620edd4d9c359b338564aa14391ffa511ed5" +checksum = "aa576c76302b7b808eecc68061e67336c47833ef9d22caa74dda10fa9675eebc" dependencies = [ "dunce", "is-wsl", @@ -7279,15 +7733,14 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cfg-if", "foreign-types 0.3.2", "libc", - "once_cell", "openssl-macros", "openssl-sys", ] @@ -7300,20 +7753,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" dependencies = [ "cc", "libc", @@ -7331,7 +7784,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.16", + "thiserror 2.0.21", "tracing", ] @@ -7343,25 +7796,25 @@ checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" dependencies = [ "async-trait", "bytes", - "http 1.3.1", + "http 1.5.0", "opentelemetry", - "reqwest", + "reqwest 0.12.24", ] [[package]] name = "opentelemetry-otlp" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" +checksum = "1f69cd6acbb9af919df949cd1ec9e5e7fdc2ef15d234b6b795aaa525cc02f71f" dependencies = [ - "http 1.3.1", + "http 1.5.0", "opentelemetry", "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", "prost", - "reqwest", - "thiserror 2.0.16", + "reqwest 0.12.24", + "thiserror 2.0.21", "tracing", ] @@ -7389,8 +7842,8 @@ dependencies = [ "futures-util", "opentelemetry", "percent-encoding", - "rand 0.9.2", - "thiserror 2.0.16", + "rand 0.9.5", + "thiserror 2.0.21", "tokio", "tokio-stream", ] @@ -7482,24 +7935,28 @@ dependencies = [ [[package]] name = "os_info" -version = "3.12.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e1ac5fde8d43c34139135df8ea9ee9465394b2d8d20f032d38998f64afffc3" +checksum = "9cf20a545b305cf1da722b236b5155c9bb35f1d5ceb28c048bd96ca842f41b5b" dependencies = [ + "android_system_properties", "log", - "plist", + "nix 0.31.3", + "objc2 0.6.5", + "objc2-foundation 0.3.2", + "objc2-ui-kit 0.3.2", "serde", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "os_pipe" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7508,12 +7965,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "732c71caeaa72c065bb69d7ea08717bd3f4863a4f451402fc9513e29dbd5261b" dependencies = [ - "objc2 0.6.2", - "objc2-foundation 0.3.1", + "objc2 0.6.5", + "objc2-foundation 0.3.2", "objc2-osa-kit", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] @@ -7552,9 +8009,9 @@ dependencies = [ [[package]] name = "parakeet-rs" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2c29bb70e3b63ddfa9af7cbb66f87a200550a5f6a5ac82fabf527b270c6615" +checksum = "63f887c35960ee3e101563a384021d9555ad9d693fe696f85119fa39537669df" dependencies = [ "eyre", "hound", @@ -7574,9 +8031,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -7584,15 +8041,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -7601,6 +8058,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "pastey" version = "0.2.3" @@ -7626,9 +8089,9 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "pem-rfc7468" -version = "0.7.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" dependencies = [ "base64ct", ] @@ -7641,12 +8104,13 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" -version = "0.6.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", - "indexmap 2.11.4", + "hashbrown 0.15.5", + "indexmap 2.14.2", ] [[package]] @@ -7675,10 +8139,20 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_macros 0.11.3", "phf_shared 0.11.3", ] +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros 0.13.1", + "phf_shared 0.13.1", + "serde", +] + [[package]] name = "phf_codegen" version = "0.8.0" @@ -7699,6 +8173,16 @@ dependencies = [ "phf_shared 0.11.3", ] +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", +] + [[package]] name = "phf_generator" version = "0.8.0" @@ -7716,7 +8200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" dependencies = [ "phf_shared 0.10.0", - "rand 0.8.5", + "rand 0.8.8", ] [[package]] @@ -7726,7 +8210,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared 0.11.3", - "rand 0.8.5", + "rand 0.8.8", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared 0.13.1", ] [[package]] @@ -7745,15 +8239,15 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", + "phf_generator 0.13.1", + "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -7780,7 +8274,16 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher 1.0.1", + "siphasher 1.0.4", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher 1.0.4", ] [[package]] @@ -7791,41 +8294,35 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", "fastrand", @@ -7834,23 +8331,23 @@ dependencies = [ [[package]] name = "pipewire" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8585aba8a52ad74ccc633b8e293c1dc4277976bd5d510b925533f34fd6685f38" +checksum = "bde71084c4e25959d68f1ea54daa75e5ecdb338e5caf0b5510143b79baa32d5c" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "libc", "libspa", "libspa-sys", "pipewire-sys", - "rustix 1.1.2", + "rustix 1.1.5", ] [[package]] name = "pipewire-sys" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2089f245b548723e60325773c27f586b7a2372c79ea941b246cd0d654706adc" +checksum = "9ce653f53e63e5b93853218092ee9a8906a5d082c92f3f1db26316955dd63ce0" dependencies = [ "bindgen 0.72.1", "libspa-sys", @@ -7859,9 +8356,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "plain" @@ -7871,13 +8368,13 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plist" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +checksum = "2896bade328c13f7042a297ea5ac5b0951f6cf989dea5f32c2fd98da398195cb" dependencies = [ - "base64 0.22.1", - "indexmap 2.11.4", - "quick-xml 0.38.3", + "base64 0.23.1", + "indexmap 2.14.2", + "quick-xml 0.42.0", "serde", "time", ] @@ -7892,20 +8389,20 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] name = "png" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -7918,7 +8415,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.2", + "rustix 1.1.5", "windows-sys 0.61.2", ] @@ -7930,33 +8427,33 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715" dependencies = [ "portable-atomic", ] [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ "zerovec", ] [[package]] name = "powerfmt" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "4a6394b9e965e73d0a289ee54f589087e2c676aedf60885baf52c76b771e4958" [[package]] name = "ppv-lite86" @@ -7996,7 +8493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -8030,11 +8527,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit 0.25.17+spec-1.1.0", ] [[package]] @@ -8069,9 +8566,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -8082,34 +8579,34 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "hex", ] [[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" dependencies = [ "profiling-procmacros", ] [[package]] name = "profiling-procmacros" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "prost" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" dependencies = [ "bytes", "prost-derive", @@ -8117,15 +8614,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -8145,14 +8642,34 @@ dependencies = [ ] [[package]] -name = "pxfm" -version = "0.1.23" +name = "pulp" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55f4fedc84ed39cb7a489322318976425e42a147e2be79d8f878e2884f94e84" +checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" dependencies = [ - "num-traits", + "bytemuck", + "cfg-if", + "libm", + "num-complex", + "paste", + "pulp-wasm-simd-flag", + "raw-cpuid", + "reborrow", + "version_check", ] +[[package]] +name = "pulp-wasm-simd-flag" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740" + +[[package]] +name = "pxfm" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" + [[package]] name = "qoi" version = "0.4.1" @@ -8170,37 +8687,37 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.37.5" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" dependencies = [ "memchr", ] [[package]] name = "quick-xml" -version = "0.38.3" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" +checksum = "41b1177fdf999d2321d3fb46ff47159d9c1fb9ad66a4879f8c50a0b504615e9b" dependencies = [ "memchr", ] [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "4051e23e9185c255a7e33ef59cdbca87a22d359052eecd22fc6b901fb37d9d11" dependencies = [ "bytes", - "cfg_aliases 0.2.1", + "cfg_aliases 0.2.2", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", "rustls", - "socket2 0.6.0", - "thiserror 2.0.16", + "socket2", + "thiserror 2.0.21", "tokio", "tracing", "web-time", @@ -8208,20 +8725,21 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.2", + "rand 0.10.3", + "rand_pcg 0.10.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror 2.0.21", "tinyvec", "tracing", "web-time", @@ -8229,23 +8747,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "af66907df18639dcf4db56ca65490cabc4b27a97dbadd96f2926cca73298f016" dependencies = [ - "cfg_aliases 0.2.1", + "cfg_aliases 0.2.2", "libc", "once_cell", - "socket2 0.6.0", + "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -8256,6 +8774,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.7.3" @@ -8267,14 +8791,14 @@ dependencies = [ "rand_chacha 0.2.2", "rand_core 0.5.1", "rand_hc", - "rand_pcg", + "rand_pcg 0.2.1", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -8283,12 +8807,23 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", +] + +[[package]] +name = "rand" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", ] [[package]] @@ -8318,7 +8853,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -8336,18 +8871,24 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_hc" version = "0.2.0" @@ -8366,11 +8907,20 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "range-alloc" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" +checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" [[package]] name = "range-map" @@ -8383,25 +8933,27 @@ dependencies = [ [[package]] name = "rangemap" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" +checksum = "a611d15b50743feb4c76b7d03edcb0e64f399c26961e4efe6975bc398be6aa3d" [[package]] name = "rav1e" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" dependencies = [ + "aligned-vec", "arbitrary", "arg_enum_proc_macro", "arrayvec", + "av-scenechange", "av1-grain", "bitstream-io", "built", "cfg-if", "interpolate_name", - "itertools 0.12.1", + "itertools 0.14.0", "libc", "libfuzzer-sys", "log", @@ -8410,23 +8962,21 @@ dependencies = [ "noop_proc_macro", "num-derive", "num-traits", - "once_cell", "paste", "profiling", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.5", + "rand_chacha 0.9.0", "simd_helpers", - "system-deps 6.2.2", - "thiserror 1.0.69", + "thiserror 2.0.21", "v_frame", "wasm-bindgen", ] [[package]] name = "ravif" -version = "0.11.20" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" dependencies = [ "avif-serialize", "imgref", @@ -8437,6 +8987,15 @@ dependencies = [ "rgb", ] +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.13.2", +] + [[package]] name = "raw-window-handle" version = "0.6.2" @@ -8451,9 +9010,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -8492,21 +9051,22 @@ dependencies = [ "guardian", "or_poisoned", "pin-project-lite", - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", "send_wrapper", "slotmap", - "thiserror 2.0.16", + "thiserror 2.0.21", "web-sys", ] [[package]] name = "read-fonts" -version = "0.29.3" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ca636dac446b5664bd16c069c00a9621806895b8bb02c2dc68542b23b8f25d" +checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ "bytemuck", "font-types", + "once_cell", ] [[package]] @@ -8530,6 +9090,12 @@ dependencies = [ "rustfft", ] +[[package]] +name = "reborrow" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" + [[package]] name = "redox_syscall" version = "0.4.1" @@ -8541,11 +9107,20 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.2", +] + +[[package]] +name = "redox_syscall" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "737970939a87c6fa31e7acad13307bccbb017a073b695b6089a2c484f929e20e" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", ] [[package]] @@ -8554,47 +9129,46 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "libredox", "thiserror 1.0.69", ] [[package]] name = "redox_users" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +checksum = "60dc65c0ff1a7ae1294b0c67b9f14baf70b644404010370171787bfac1038fc0" dependencies = [ - "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -8604,9 +9178,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -8615,15 +9189,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "relative-path" @@ -8660,7 +9234,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 1.3.1", + "http 1.5.0", "http-body", "http-body-util", "hyper", @@ -8691,16 +9265,55 @@ dependencies = [ "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", + "wasm-streams 0.4.2", "web-sys", "webpki-roots", ] +[[package]] +name = "reqwest" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029" +dependencies = [ + "base64 0.23.1", + "bytes", + "futures-core", + "futures-util", + "http 1.5.0", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.5.0", + "web-sys", +] + [[package]] name = "resize" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87a103d0b47e783f4579149402f7499397ab25540c7a57b2f70487a5d2d20ef0" +checksum = "71725ecd5e0197b54fe859055b108688472ab6a358f8fbe5cee4a556b1b5bfea" dependencies = [ "rayon", "rgb", @@ -8712,7 +9325,7 @@ version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" dependencies = [ - "gif", + "gif 0.13.3", "image-webp", "log", "pico-args", @@ -8720,48 +9333,47 @@ dependencies = [ "svgtypes", "tiny-skia", "usvg", - "zune-jpeg", + "zune-jpeg 0.4.21", ] [[package]] name = "retry" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e211f878258887b3e65dd3c8ff9f530fe109f441a117ee0cdc27f341355032" +checksum = "1cab9bd343c737660e523ee69f788018f3db686d537d2fd0f99c9f747c1bda4f" dependencies = [ - "rand 0.9.2", + "rand 0.9.5", ] [[package]] name = "rfd" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" dependencies = [ - "ashpd", - "block2 0.6.1", + "block2 0.6.2", "dispatch2", "glib-sys", "gobject-sys", "gtk-sys", "js-sys", "log", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" dependencies = [ "bytemuck", ] @@ -8774,7 +9386,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -8801,13 +9413,13 @@ dependencies = [ "base64 0.22.1", "chrono", "futures", - "pastey", + "pastey 0.2.3", "pin-project-lite", "rmcp-macros", - "schemars 1.0.4", + "schemars 1.2.3", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.21", "tokio", "tokio-util", "tracing", @@ -8823,7 +9435,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -8859,12 +9471,12 @@ dependencies = [ [[package]] name = "rtoolbox" -version = "0.0.5" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50a0e551c1e27e1731aba276dbeaeac73f53c7cd34d1bda485d02bd1e0f36844" +checksum = "9a1efe12a1469752d0e6ff5ebec0b6ef4924cc5c4c71046b0ec730040535819d" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -8879,9 +9491,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" [[package]] name = "rustc-hash" @@ -8891,9 +9503,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -8924,7 +9536,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "errno", "libc", "linux-raw-sys 0.4.15", @@ -8933,22 +9545,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.31" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "once_cell", "ring", @@ -8959,29 +9571,59 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-native-certs" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "4a073f5dc7469f984c52ad2752b63b0807745133b6de880b7b64c1ac4c48aec4" dependencies = [ + "openssl-probe", "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" dependencies = [ "web-time", "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1167586491e2b18b8bfbb293e8180ec17c201c4f076d7cb3070ca964e7598f98" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni 0.22.4", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eec689c0bc40ff2458a5977b6619cb718087084a18e02a131c599b62d05e1a5f" + [[package]] name = "rustls-webpki" -version = "0.103.6" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "ring", "rustls-pki-types", @@ -8990,9 +9632,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "rustybuzz" @@ -9000,7 +9642,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "libm", "smallvec", @@ -9017,7 +9659,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "core_maths", "log", @@ -9031,9 +9673,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -9102,9 +9744,9 @@ dependencies = [ "clap", "futures", "inquire", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "scap-targets", "tokio", "tracing", @@ -9121,7 +9763,7 @@ dependencies = [ "core-graphics 0.24.0", "image 0.24.9", "objc", - "rustix 1.1.2", + "rustix 1.1.5", "serde", "specta", "tokio", @@ -9136,9 +9778,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -9172,14 +9814,14 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "ab508826f74a77ca9d5aba6ff19b522583ee3eaf28a19384ff3d0e5835fadf6e" dependencies = [ "chrono", "dyn-clone", "ref-cast", - "schemars_derive 1.0.4", + "schemars_derive 1.2.3", "serde", "serde_json", ] @@ -9192,20 +9834,20 @@ checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", - "serde_derive_internals", - "syn 2.0.106", + "serde_derive_internals 0.29.1", + "syn 2.0.119", ] [[package]] name = "schemars_derive" -version = "1.0.4" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80" +checksum = "e1c3a92094fa7d61aa124645844facb6b554dfc797136d0f5fd1f890e2bffc69" dependencies = [ "proc-macro2", "quote", - "serde_derive_internals", - "syn 2.0.106", + "serde_derive_internals 0.30.0", + "syn 3.0.9", ] [[package]] @@ -9226,7 +9868,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c62ae379564f834110c5b020cc731a7c14b8ec4879b4367579a467a0a704c21" dependencies = [ - "block2 0.6.1", + "block2 0.6.2", "core-foundation 0.10.1", "core-graphics 0.25.0", "core-media-rs", @@ -9253,7 +9895,7 @@ checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -9271,43 +9913,30 @@ dependencies = [ [[package]] name = "secret-service" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a62d7f86047af0077255a29494136b9aaaf697c76ff70b8e49cded4e2623c14" +checksum = "5107b24b91445dd2aa449a258a1807b63240942157292354dc5bfdbeb8bc6db8" dependencies = [ "aes", "cbc", "futures-util", - "generic-array", - "getrandom 0.2.16", + "getrandom 0.4.3", "hkdf", + "hybrid-array", "num", "once_cell", "serde", - "sha2", + "sha2 0.11.1", "zbus", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.13.1", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -9331,28 +9960,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" dependencies = [ "bitflags 1.3.2", - "cssparser", + "cssparser 0.29.6", "derive_more 0.99.20", "fxhash", "log", "phf 0.8.0", "phf_codegen 0.8.0", "precomputed-hash", - "servo_arc", + "servo_arc 0.2.0", + "smallvec", +] + +[[package]] +name = "selectors" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8adfa1c298912827b8a28b223b3b874357397ae706e6190acd9bf28cee99114d" +dependencies = [ + "bitflags 2.13.2", + "cssparser 0.37.0", + "derive_more 2.1.1", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen 0.13.1", + "precomputed-hash", + "rustc-hash 2.1.3", + "servo_arc 0.4.3", "smallvec", ] [[package]] name = "self_cell" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" +checksum = "2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813" [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", "serde_core", @@ -9375,7 +10023,7 @@ checksum = "989425268ab5c011e06400187eed6c298272f8ef913e49fcadc3fda788b45030" dependencies = [ "httpdate", "native-tls", - "reqwest", + "reqwest 0.12.24", "sentry-actix", "sentry-anyhow", "sentry-backtrace", @@ -9443,7 +10091,7 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deaa38b94e70820ff3f1f9db3c8b0aef053b667be130f618e615e0ff2492cbcc" dependencies = [ - "rand 0.9.2", + "rand 0.9.5", "sentry-types", "serde", "serde_json", @@ -9478,7 +10126,7 @@ checksum = "63964525bf74b16233dbcfb307e11485ebd8ff8f87f6ae212b07ca7937cd2db1" dependencies = [ "minidumper-child", "sentry", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] @@ -9487,7 +10135,7 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fac841c7050aa73fc2bec8f7d8e9cb1159af0b3095757b99820823f3e54e5080" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "sentry-backtrace", "sentry-core", "tracing-core", @@ -9502,10 +10150,10 @@ checksum = "e477f4d4db08ddb4ab553717a8d3a511bc9e81dde0c808c680feacbb8105c412" dependencies = [ "debugid", "hex", - "rand 0.9.2", + "rand 0.9.5", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.21", "time", "url", "uuid", @@ -9513,9 +10161,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -9535,22 +10183,22 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -9561,20 +10209,31 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", +] + +[[package]] +name = "serde_derive_internals" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.9", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -9590,13 +10249,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -9610,9 +10269,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876ac351060d4f882bb1032b6369eb0aef79ad9df1ea8bc404874d8cc3d0cd98" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" dependencies = [ "serde_core", ] @@ -9631,19 +10290,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "df9adc193c780ef8f159aee8b61e2d5801aaa555e6eb0947fe45530ec506296f" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", + "bs58", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.14.2", + "jiff", "schemars 0.9.0", - "schemars 1.0.4", - "serde", - "serde_derive", + "schemars 1.2.3", + "serde_core", "serde_json", "serde_with_macros", "time", @@ -9651,14 +10311,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "3e17bbc68e28663bbbb90df47e058aa7eda4fb445b89fe70457bb94fbccf6e49" dependencies = [ - "darling 0.20.11", + "darling 0.24.1", "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -9680,7 +10340,7 @@ checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -9693,15 +10353,24 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "sha1" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", ] [[package]] @@ -9718,7 +10387,18 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "digest 0.11.3", ] [[package]] @@ -9732,13 +10412,12 @@ dependencies = [ [[package]] name = "shared_child" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7" +checksum = "607549934f6cc26b89cfecfdc46fa90f1e5d1536a68349b0c3a4f9d1c0d37959" dependencies = [ "libc", - "sigchld", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -9748,15 +10427,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "sigchld" -version = "0.2.4" +name = "shlex" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1" -dependencies = [ - "libc", - "os_pipe", - "signal-hook", -] +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signal-hook" @@ -9770,9 +10444,9 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" dependencies = [ "libc", "mio 0.8.11", @@ -9781,24 +10455,25 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "simd_cesu8" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" dependencies = [ "rustc_version", "simdutf8", @@ -9836,9 +10511,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256" [[package]] name = "skia-bindings" @@ -9863,16 +10538,16 @@ version = "0.86.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e372258f52414e04de007326fa497581617c9fa872a3225dca5e42212723c426" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "lazy_static", "skia-bindings", ] [[package]] name = "skrifa" -version = "0.31.3" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbeb4ca4399663735553a09dd17ce7e49a0a0203f03b706b39628c4d913a8607" +checksum = "819ab7d62b1d3e72d9d9dea5650bac30424f9111364bb94928dbf5ecad1baa68" dependencies = [ "bytemuck", "read-fonts", @@ -9880,24 +10555,24 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slotmap" -version = "1.0.7" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" dependencies = [ "version_check", ] [[package]] name = "smallvec" -version = "1.15.1" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b" [[package]] name = "smart-default" @@ -9907,7 +10582,7 @@ checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -9916,7 +10591,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "calloop", "calloop-wayland-source", "cursor-icon", @@ -9946,22 +10621,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.0" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -9977,33 +10642,33 @@ dependencies = [ [[package]] name = "softbuffer" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" dependencies = [ "as-raw-xcb-connection", "bytemuck", - "cfg_aliases 0.2.1", - "core-graphics 0.24.0", "drm", "fastrand", - "foreign-types 0.5.0", "js-sys", - "log", "memmap2", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", + "ndk 0.9.0", + "objc2 0.6.5", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", "raw-window-handle", - "redox_syscall 0.5.17", - "rustix 0.38.44", + "redox_syscall 0.5.18", + "rustix 1.1.5", "tiny-xlib", + "tracing", "wasm-bindgen", "wayland-backend", "wayland-client", "wayland-sys", "web-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", "x11rb", ] @@ -10056,7 +10721,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -10082,9 +10747,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" dependencies = [ "lock_api", ] @@ -10095,7 +10760,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.13.1", + "bitflags 2.13.2", ] [[package]] @@ -10112,9 +10777,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -10150,6 +10815,18 @@ dependencies = [ "serde", ] +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.13.1", + "precomputed-hash", +] + [[package]] name = "string_cache_codegen" version = "0.5.4" @@ -10162,6 +10839,18 @@ dependencies = [ "quote", ] +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", +] + [[package]] name = "strsim" version = "0.11.1" @@ -10196,7 +10885,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -10208,7 +10897,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -10230,14 +10919,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" dependencies = [ "kurbo", - "siphasher 1.0.1", + "siphasher 1.0.4", ] [[package]] name = "swash" -version = "0.2.5" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f745de914febc7c9ab4388dfaf94bbc87e69f57bb41133a9b0c84d4be49856f3" +checksum = "6c2499c2d826531388872b2268718aed907a39bd785ab0dcfe57fab26283f92e" dependencies = [ "skrifa", "yazi", @@ -10246,20 +10935,26 @@ dependencies = [ [[package]] name = "swift-rs" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +checksum = "cefd87076fd385308ee4aff597256c902f1fbb4d031de1558efc12f8ffefadd9" dependencies = [ "base64 0.21.7", "serde", "serde_json", ] +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + [[package]] name = "symphonia" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9" +checksum = "5773a4c030a19d9bfaa090f49746ff35c75dfddfa700df7a5939d5e076a57039" dependencies = [ "lazy_static", "symphonia-bundle-mp3", @@ -10269,9 +10964,9 @@ dependencies = [ [[package]] name = "symphonia-bundle-mp3" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01c2aae70f0f1fb096b6f0ff112a930b1fb3626178fba3ae68b09dce71706d4" +checksum = "4872dd6bb56bf5eac799e3e957aa1981086c3e613b27e0ac23b176054f7c57ed" dependencies = [ "lazy_static", "log", @@ -10281,9 +10976,9 @@ dependencies = [ [[package]] name = "symphonia-core" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3" +checksum = "ea00cc4f79b7f6bb7ff87eddc065a1066f3a43fe1875979056672c9ef948c2af" dependencies = [ "arrayvec", "bitflags 1.3.2", @@ -10294,9 +10989,9 @@ dependencies = [ [[package]] name = "symphonia-metadata" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c" +checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16" dependencies = [ "encoding_rs", "lazy_static", @@ -10317,9 +11012,20 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" dependencies = [ "proc-macro2", "quote", @@ -10337,13 +11043,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -10366,7 +11072,7 @@ dependencies = [ "memchr", "ntapi", "rayon", - "windows 0.54.0", + "windows 0.57.0", ] [[package]] @@ -10385,11 +11091,11 @@ dependencies = [ [[package]] name = "system-configuration" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -10423,67 +11129,67 @@ version = "7.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396a35feb67335377e0251fcbc1092fc85c484bd4e3a7a54319399da127796e7" dependencies = [ - "cfg-expr 0.20.8", + "cfg-expr 0.20.10", "heck 0.5.0", "pkg-config", - "toml 1.1.0+spec-1.1.0", + "toml 1.1.8+spec-1.1.0", "version-compare", ] [[package]] name = "tao" -version = "0.34.3" +version = "0.37.1" dependencies = [ - "bitflags 2.13.1", - "block2 0.6.1", + "bitflags 2.13.2", + "block2 0.6.2", "core-foundation 0.10.1", - "core-graphics 0.24.0", + "core-graphics 0.25.0", "crossbeam-channel", - "dispatch", + "dbus", + "dispatch2", "dlopen2", "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", "jni 0.21.1", - "lazy_static", "libc", "log", "ndk 0.9.0", "ndk-context", "ndk-sys 0.6.0+11769913", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", - "once_cell", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "objc2-ui-kit 0.3.2", "parking_lot", + "percent-encoding", "raw-window-handle", - "scopeguard", "tao-macros", "unicode-segmentation", "url", - "windows 0.61.3", - "windows-core 0.61.2", + "windows 0.62.2", + "windows-core 0.62.2", "windows-version", "x11-dl", ] [[package]] name = "tao-macros" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +checksum = "5f7eeb6d99155545da6150a1795945f16ac9c178deb2a5f2e74d776107bd5849" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "tar" -version = "0.4.44" +version = "0.4.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" dependencies = [ "filetime", "libc", @@ -10504,37 +11210,37 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "tauri" -version = "2.8.5" +version = "2.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d1d3b3dc4c101ac989fd7db77e045cc6d91a25349cd410455cb5c57d510c1c" +checksum = "c404ecf956ff241bf6b39dd688614724e1bf1f63255abb4fc46d1c40371672ea" dependencies = [ "anyhow", "bytes", "cookie", - "dirs 6.0.0", + "dirs 7.0.0", "dunce", "embed_plist", - "getrandom 0.3.3", + "getrandom 0.3.4", "glob", "gtk", "heck 0.5.0", - "http 1.3.1", + "http 1.5.0", "http-range", - "image 0.25.8", + "image 0.25.10", "jni 0.21.1", "libc", "log", "mime", "muda", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", - "objc2-ui-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "objc2-ui-kit 0.3.2", "objc2-web-kit", "percent-encoding", "plist", "raw-window-handle", - "reqwest", + "reqwest 0.13.5", "serde", "serde_json", "serde_repr", @@ -10546,26 +11252,25 @@ dependencies = [ "tauri-runtime", "tauri-runtime-wry", "tauri-utils", - "thiserror 2.0.16", + "thiserror 2.0.21", "tokio", "tray-icon", "url", - "urlpattern", "webkit2gtk", - "webview2-com", + "webview2-com 0.39.1", "window-vibrancy", - "windows 0.61.3", + "windows 0.62.2", ] [[package]] name = "tauri-build" -version = "2.4.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c432ccc9ff661803dab74c6cd78de11026a578a9307610bbc39d3c55be7943f" +checksum = "2eea0b6302f82c574b21af6fc6ae6e86183b9280853c22621d0abf0936911ffc" dependencies = [ "anyhow", "cargo_toml", - "dirs 6.0.0", + "dirs 7.0.0", "glob", "heck 0.5.0", "json-patch", @@ -10575,31 +11280,30 @@ dependencies = [ "serde_json", "tauri-utils", "tauri-winres", - "toml 0.9.7", "walkdir", ] [[package]] name = "tauri-codegen" -version = "2.4.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab3a62cf2e6253936a8b267c2e95839674e7439f104fa96ad0025e149d54d8a" +checksum = "02f468f9a9bcd404f57e5c191d91024e3de953d4b610f78c2907e7110615cb1c" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "brotli", "ico", "json-patch", "plist", - "png 0.17.16", + "png 0.18.1", "proc-macro2", "quote", "semver", "serde", "serde_json", - "sha2", - "syn 2.0.106", + "sha2 0.10.9", + "syn 2.0.119", "tauri-utils", - "thiserror 2.0.16", + "thiserror 2.0.21", "time", "url", "uuid", @@ -10608,14 +11312,14 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.4.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4368ea8094e7045217edb690f493b55b30caf9f3e61f79b4c24b6db91f07995e" +checksum = "131bffec939b20642380317f8403a33c8888489925e14bb965ceaff0d949b1cb" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", "tauri-codegen", "tauri-utils", ] @@ -10624,7 +11328,7 @@ dependencies = [ name = "tauri-nspanel" version = "2.0.1" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "block", "cocoa", "core-foundation 0.10.1", @@ -10638,9 +11342,9 @@ dependencies = [ [[package]] name = "tauri-plugin" -version = "2.4.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9946a3cede302eac0c6eb6c6070ac47b1768e326092d32efbb91f21ed58d978f" +checksum = "1140cf34a3b3b836a13103dcab17f18831d5cc3534cbd435dc01a5c6daa65aa2" dependencies = [ "anyhow", "glob", @@ -10649,15 +11353,14 @@ dependencies = [ "serde", "serde_json", "tauri-utils", - "toml 0.9.7", "walkdir", ] [[package]] name = "tauri-plugin-clipboard-manager" -version = "2.3.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adddd9e9275b20e77af3061d100a25a884cced3c4c9ef680bd94dd0f7e26c1ca" +checksum = "640d0789c9db02265a800fded60520df5a3baa4a1b5f40715b83d58842c24fcb" dependencies = [ "arboard", "log", @@ -10665,14 +11368,14 @@ dependencies = [ "serde_json", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "tauri-plugin-deep-link" -version = "2.4.3" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd67112fb1131834c2a7398ffcba520dbbf62c17de3b10329acd1a3554b1a9bb" +checksum = "4ac7a92a46ab5c88f44532ca50906d6e448a948d4ddf8c5376ab125e3260f736" dependencies = [ "dunce", "plist", @@ -10682,18 +11385,18 @@ dependencies = [ "tauri", "tauri-plugin", "tauri-utils", - "thiserror 2.0.16", + "thiserror 2.0.21", "tracing", "url", "windows-registry", - "windows-result 0.3.4", + "windows-result 0.4.1", ] [[package]] name = "tauri-plugin-dialog" -version = "2.4.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beee42a4002bc695550599b011728d9dfabf82f767f134754ed6655e434824e" +checksum = "3dca325d6e66e9170f2e1b9631722e4e544bcbc51781575d266abdaba697bd51" dependencies = [ "log", "raw-window-handle", @@ -10703,19 +11406,21 @@ dependencies = [ "tauri", "tauri-plugin", "tauri-plugin-fs", - "thiserror 2.0.16", + "thiserror 2.0.21", "url", ] [[package]] name = "tauri-plugin-fs" -version = "2.4.2" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "315784ec4be45e90a987687bae7235e6be3d6e9e350d2b75c16b8a4bf22c1db7" +checksum = "213fae2d85d4b76b06de5915d1862db9fa74541171f9d2c15da6ac9bd6e788c6" dependencies = [ "anyhow", "dunce", "glob", + "log", + "objc2-foundation 0.3.2", "percent-encoding", "schemars 0.8.22", "serde", @@ -10724,24 +11429,24 @@ dependencies = [ "tauri", "tauri-plugin", "tauri-utils", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.21", + "toml 1.1.8+spec-1.1.0", "url", ] [[package]] name = "tauri-plugin-global-shortcut" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6df9f0f7bf2fe768b85fee4951c2505a35b72c44df1f6403e74e110bc13c5f58" +checksum = "93ff17919fe09852d269bd37b1d3d2e993b9dbb514afe7acbf3346c1d3627e2d" dependencies = [ - "global-hotkey", + "global-hotkey 0.8.0", "log", "serde", "serde_json", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] @@ -10753,81 +11458,82 @@ dependencies = [ "bytes", "cookie_store", "data-url", - "http 1.3.1", + "http 1.5.0", "regex", - "reqwest", + "reqwest 0.12.24", "schemars 0.8.22", "serde", "serde_json", "tauri", "tauri-plugin", "tauri-plugin-fs", - "thiserror 2.0.16", + "thiserror 2.0.21", "tokio", "url", - "urlpattern", + "urlpattern 0.3.0", ] [[package]] name = "tauri-plugin-notification" -version = "2.3.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fbc86b929b5376ab84b25c060f966d146b2fbd59b6af8264027b343c82c219" +checksum = "8cf3cce3ea492b3a8a7f431a4e5dd5d31dc41b2a4a243faa660cbe8095a577bd" dependencies = [ "log", "notify-rust", - "rand 0.9.2", + "rand 0.9.5", "serde", "serde_json", "serde_repr", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", "time", "url", + "zbus", ] [[package]] name = "tauri-plugin-oauth" -version = "2.0.0" -source = "git+https://github.com/FabianLars/tauri-plugin-oauth?branch=v2#f941c99c3ed528a55db7fe05c931480a8255041d" +version = "2.1.0" +source = "git+https://github.com/FabianLars/tauri-plugin-oauth?branch=v2#6d90800ae93268d5cafa4a266faeae4f916dd2aa" dependencies = [ "httparse", "log", "serde", "tauri", "tauri-plugin", - "thiserror 1.0.69", + "thiserror 2.0.21", "url", ] [[package]] name = "tauri-plugin-opener" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786156aa8e89e03d271fbd3fe642207da8e65f3c961baa9e2930f332bf80a1f5" +checksum = "85dead674ee41937d042ee855d785f07ee67206f19402200c12b9255964d5ac8" dependencies = [ "dunce", "glob", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "open", "schemars 0.8.22", "serde", "serde_json", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", "url", - "windows 0.61.3", + "windows 0.62.2", "zbus", ] [[package]] name = "tauri-plugin-os" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1c77ebf6f20417ab2a74e8c310820ba52151406d0c80fbcea7df232e3f6ba" +checksum = "4bd69d272ab772b30462779de12a40f837616831c794c71531bea91474e1061f" dependencies = [ "gethostname", "log", @@ -10838,14 +11544,14 @@ dependencies = [ "sys-locale", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "tauri-plugin-positioner" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a01e373ea3f3f5f46d40f434ba13bd12fa4833aabab50dfc09f6362bad27c95" +checksum = "bcad1d07c6cd206c249976c3dbb57eda7f1fc62a25b25099c74345ab2d2e3ef6" dependencies = [ "log", "serde", @@ -10853,14 +11559,14 @@ dependencies = [ "serde_repr", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "tauri-plugin-process" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7461c622a5ea00eb9cd9f7a08dbd3bf79484499fd5c21aa2964677f64ca651ab" +checksum = "74ae3d8549ae564c0397377373e262f340908eb23a5b9fbe03f2a00007dc0038" dependencies = [ "tauri", "tauri-plugin", @@ -10879,16 +11585,17 @@ dependencies = [ "serde", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "tauri-plugin-shell" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54777d0c0d8add34eea3ced84378619ef5b97996bd967d3038c668feefd21071" +checksum = "8567d42b2c7264355daa1df415ec77f52aa42e885924c86a969be2e920e05521" dependencies = [ "encoding_rs", + "libc", "log", "open", "os_pipe", @@ -10899,59 +11606,63 @@ dependencies = [ "shared_child", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", "tokio", + "windows-sys 0.60.2", ] [[package]] name = "tauri-plugin-single-instance" -version = "2.3.4" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb9cac815bf11c4a80fb498666bcdad66d65b89e3ae24669e47806febb76389c" +checksum = "3c142ed88deee222bd2d979269d35c73b6c1c0f6ebd5b79b4ff80066fcad6af1" dependencies = [ "serde", "serde_json", "tauri", "tauri-plugin-deep-link", - "thiserror 2.0.16", + "thiserror 2.0.21", + "tokio", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", "zbus", ] [[package]] name = "tauri-plugin-store" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85dd80d60a76ee2c2fdce09e9ef30877b239c2a6bb76e6d7d03708aa5f13a19" +checksum = "e3c6fdaac41e60f2313a440fa1776f3a5fdd16800ff967915e9800985b680822" dependencies = [ "dunce", "serde", "serde_json", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", "tokio", "tracing", ] [[package]] name = "tauri-plugin-updater" -version = "2.9.0" +version = "2.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27cbc31740f4d507712550694749572ec0e43bdd66992db7599b89fbfd6b167b" +checksum = "855a336eb389d2c1502244fd48fa2d8cb487a430f691bbaed025195f99a04489" dependencies = [ "base64 0.22.1", - "dirs 6.0.0", + "dirs 7.0.0", "flate2", "futures-util", - "http 1.3.1", + "http 1.5.0", "infer", + "libc", "log", "minisign-verify", "osakit", "percent-encoding", - "reqwest", + "reqwest 0.13.5", + "rustls", "semver", "serde", "serde_json", @@ -10959,67 +11670,66 @@ dependencies = [ "tauri", "tauri-plugin", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.21", "time", "tokio", "url", - "windows-sys 0.60.2", + "windows-sys 0.61.2", "zip", ] [[package]] name = "tauri-plugin-window-state" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5f6fe3291bfa609c7e0b0ee3bedac294d94c7018934086ce782c1d0f2a468e" +checksum = "5d6815cab7b212f9cfe16a9d79d8d22f9e14159e4a9460f7dec1467167a008e3" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "log", "serde", "serde_json", "tauri", "tauri-plugin", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "tauri-runtime" -version = "2.8.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4cfc9ad45b487d3fded5a4731a567872a4812e9552e3964161b08edabf93846" +checksum = "c2a57a2a9b8c8b7fc00d35b510fe808ded7f9f1b44fc1cdda6aee38632ea5413" dependencies = [ "cookie", "dpi", "gtk", - "http 1.3.1", + "http 1.5.0", "jni 0.21.1", - "objc2 0.6.2", - "objc2-ui-kit 0.3.1", + "objc2 0.6.5", + "objc2-ui-kit 0.3.2", "objc2-web-kit", "raw-window-handle", "serde", "serde_json", "tauri-utils", - "thiserror 2.0.16", + "thiserror 2.0.21", "url", "webkit2gtk", - "webview2-com", - "windows 0.61.3", + "webview2-com 0.39.1", + "windows 0.62.2", ] [[package]] name = "tauri-runtime-wry" -version = "2.8.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fe9d48bd122ff002064e88cfcd7027090d789c4302714e68fcccba0f4b7807" +checksum = "7f9e7e0c9f80a5130773cfabb6df4dc924518fb1b2c923726966804634b57d22" dependencies = [ "gtk", - "http 1.3.1", + "http 1.5.0", "jni 0.21.1", "log", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", - "objc2-foundation 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "once_cell", "percent-encoding", "raw-window-handle", @@ -11029,8 +11739,8 @@ dependencies = [ "tauri-utils", "url", "webkit2gtk", - "webview2-com", - "windows 0.61.3", + "webview2-com 0.39.1", + "windows 0.62.2", "wry", ] @@ -11059,29 +11769,31 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "tauri-utils" -version = "2.7.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a3852fdf9a4f8fbeaa63dc3e9a85284dd6ef7200751f0bd66ceee30c93f212" +checksum = "2ff55a614843b9a3f010f211df637c94df2607175b8d0f6e0f4a7c19e18621ee" dependencies = [ "anyhow", "brotli", "cargo_metadata", - "ctor 0.2.9", + "ctor 1.0.13", + "dom_query", "dunce", "glob", - "html5ever", - "http 1.3.1", + "html5ever 0.29.1", + "http 1.5.0", "infer", "json-patch", "kuchikiki", "log", "memchr", - "phf 0.11.3", + "phf 0.13.1", + "plist", "proc-macro2", "quote", "regex", @@ -11092,46 +11804,46 @@ dependencies = [ "serde_json", "serde_with", "swift-rs", - "thiserror 2.0.16", - "toml 0.9.7", + "thiserror 2.0.21", + "toml 1.1.8+spec-1.1.0", "url", - "urlpattern", + "urlpattern 0.6.0", "uuid", "walkdir", ] [[package]] name = "tauri-winres" -version = "0.3.3" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074" +checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" dependencies = [ + "dunce", "embed-resource", - "toml 0.9.7", + "toml 1.1.8+spec-1.1.0", ] [[package]] name = "tauri-winrt-notification" -version = "0.7.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" +checksum = "f37a6c354fd28fc9e322ed9bd47e3959576dad28c9d58ea1cf888cce1c7ccb36" dependencies = [ - "quick-xml 0.37.5", - "thiserror 2.0.16", - "windows 0.61.3", + "thiserror 2.0.21", + "windows 0.62.2", "windows-version", ] [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.4.3", "once_cell", - "rustix 1.1.2", + "rustix 1.1.5", "windows-sys 0.61.2", ] @@ -11146,6 +11858,15 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tendril" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" +dependencies = [ + "new_debug_unreachable", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -11166,11 +11887,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.21", ] [[package]] @@ -11181,18 +11902,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -11203,9 +11924,9 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] @@ -11223,43 +11944,43 @@ dependencies = [ [[package]] name = "tiff" -version = "0.10.3" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ "fax", "flate2", "half", "quick-error", "weezl", - "zune-jpeg", + "zune-jpeg 0.5.15", ] [[package]] name = "time" -version = "0.3.43" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ "deranged", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -11308,16 +12029,16 @@ checksum = "a90a0ca3ee6a69f2ad28fd11621a4c3f03b371f366be500b64df260c4ffbafb4" dependencies = [ "as-raw-xcb-connection", "ctor 0.10.1", - "libloading 0.8.8", + "libloading 0.8.9", "pkg-config", "tracing", ] [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" dependencies = [ "displaydoc", "zerovec", @@ -11325,39 +12046,30 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" [[package]] name = "tokenizers" -version = "0.22.2" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b238e22d44a15349529690fb07bd645cf58149a1b1e44d6cb5bd1641ff1a6223" +checksum = "7afbf6e88718afcc138bad01d6ccc3051dbbc3b2ce9793d8b8a3aeb610969cfc" dependencies = [ "ahash", - "aho-corasick", "compact_str", + "daachorse", "dary_heap", "derive_builder", "esaxx-rs", - "getrandom 0.3.3", + "getrandom 0.3.4", "itertools 0.14.0", "log", "macro_rules_attribute", "monostate", "onig", "paste", - "rand 0.9.2", + "rand 0.9.5", "rayon", "rayon-cond", "regex", @@ -11365,7 +12077,7 @@ dependencies = [ "serde", "serde_json", "spm_precompiled", - "thiserror 2.0.16", + "thiserror 2.0.21", "unicode-normalization-alignments", "unicode-segmentation", "unicode_categories", @@ -11373,34 +12085,31 @@ dependencies = [ [[package]] name = "tokio" -version = "1.47.1" +version = "1.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ce3335fa71841cda333a58d7615b03901380ecf09d59b3296d21f8bbac0dde4e" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.4", + "mio 1.2.4", "parking_lot", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2", "tokio-macros", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -11415,9 +12124,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.3" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f63835928ca123f1bef57abbcd23bb2ba0ac9ae1235f1e65bda0d06e7786bd" +checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db" dependencies = [ "rustls", "tokio", @@ -11425,9 +12134,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" dependencies = [ "futures-core", "pin-project-lite", @@ -11461,13 +12170,14 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "e464cf451ba96ebfc6f9b6542f17ee8b8956e33f1e40d9690624e59d7a7f8a4b" dependencies = [ "bytes", "futures-core", "futures-sink", + "libc", "pin-project-lite", "tokio", ] @@ -11486,32 +12196,17 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" -dependencies = [ - "indexmap 2.11.4", - "serde_core", - "serde_spanned 1.1.0", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 0.7.13", -] - -[[package]] -name = "toml" -version = "1.1.0+spec-1.1.0" +version = "1.1.8+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8195ca05e4eb728f4ba94f3e3291661320af739c4e43779cbdfae82ab239fcc" +checksum = "20489e00e4d8741d6be680764cc12e270655e375a20d1011e844a9c3379e678d" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.2", "serde_core", - "serde_spanned 1.1.0", - "toml_datetime 1.1.0+spec-1.1.0", + "serde_spanned 1.1.2", + "toml_datetime 1.1.2+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -11534,9 +12229,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.1.0+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" +checksum = "2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053" dependencies = [ "serde_core", ] @@ -11547,7 +12242,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.2", "toml_datetime 0.6.3", "winnow 0.5.40", ] @@ -11558,7 +12253,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.2", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.3", @@ -11571,38 +12266,50 @@ version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.2", "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 0.7.13", + "winnow 0.7.15", +] + +[[package]] +name = "toml_edit" +version = "0.25.17+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3641d5bbb5349a79e1020a242d251efbc546ad8048d133958323ce9c40a9c9c" +dependencies = [ + "indexmap 2.14.2", + "toml_datetime 1.1.2+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", ] [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c" dependencies = [ - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] name = "toml_writer" -version = "1.1.1+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" +checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770" [[package]] name = "tonic" -version = "0.14.2" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" dependencies = [ "async-trait", "base64 0.22.1", "bytes", - "http 1.3.1", + "http 1.5.0", "http-body", "http-body-util", "percent-encoding", @@ -11616,9 +12323,9 @@ dependencies = [ [[package]] name = "tonic-prost" -version = "0.14.2" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0" dependencies = [ "bytes", "prost", @@ -11627,9 +12334,9 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", @@ -11643,20 +12350,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytes", "futures-util", - "http 1.3.1", + "http 1.5.0", "http-body", - "iri-string", "pin-project-lite", "tower", "tower-layer", "tower-service", + "url", ] [[package]] @@ -11673,9 +12380,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -11685,32 +12392,33 @@ dependencies = [ [[package]] name = "tracing-appender" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" dependencies = [ "crossbeam-channel", - "thiserror 1.0.69", + "symlink", + "thiserror 2.0.21", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -11741,16 +12449,13 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.32.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6e5658463dd88089aba75c7791e1d3120633b1bfde22478b28f625a9bb1b8e" +checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" dependencies = [ "js-sys", "opentelemetry", - "opentelemetry_sdk", - "rustversion", "smallvec", - "thiserror 2.0.16", "tracing", "tracing-core", "tracing-log", @@ -11760,9 +12465,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -11788,35 +12493,34 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.21.1" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2" +checksum = "b2b9c52859a94554803ccd4a24b98f74148ebc73b90676d783f3490b1bff9d72" dependencies = [ "crossbeam-channel", - "dirs 6.0.0", + "dirs 7.0.0", "libappindicator", "muda", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "once_cell", - "png 0.17.16", + "png 0.18.1", "serde", - "thiserror 2.0.16", - "windows-sys 0.59.0", + "thiserror 2.0.21", + "windows-sys 0.61.2", ] [[package]] name = "tree_magic_mini" -version = "3.2.0" +version = "3.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f943391d896cdfe8eec03a04d7110332d445be7df856db382dd96a730667562c" +checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" dependencies = [ "memchr", - "nom 7.1.3", - "once_cell", + "nom 8.0.0", "petgraph", ] @@ -11856,10 +12560,10 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.3.1", + "http 1.5.0", "httparse", "log", - "rand 0.8.5", + "rand 0.8.8", "sha1", "thiserror 1.0.69", "utf-8", @@ -11873,19 +12577,19 @@ checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" dependencies = [ "bytes", "data-encoding", - "http 1.3.1", + "http 1.5.0", "httparse", "log", - "rand 0.9.2", + "rand 0.9.5", "sha1", - "thiserror 2.0.16", + "thiserror 2.0.21", ] [[package]] name = "twox-hash" -version = "2.1.2" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +checksum = "86a801b3cea342a06d468c8710662aa29e5e05e4f5c0d62f00bbb7f2ad7941c2" [[package]] name = "typeid" @@ -11895,9 +12599,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.18.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "uds" @@ -11910,13 +12614,13 @@ dependencies = [ [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -11971,9 +12675,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.8.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +checksum = "357cc3acc6a036009fd6c973ed009037c732d60d0b4f6c673e9041497482a28f" [[package]] name = "unicode-bidi" @@ -12007,9 +12711,9 @@ checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563" [[package]] name = "unicode-linebreak" @@ -12028,21 +12732,21 @@ dependencies = [ [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-script" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" +checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-vo" @@ -12058,9 +12762,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -12088,56 +12792,68 @@ checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" [[package]] name = "ureq" -version = "3.1.0" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00432f493971db5d8e47a65aeb3b02f8226b9b11f1450ff86bb772776ebadd70" +checksum = "9a7ac20be9b7726e0bbdbf974c059676d9acb1cd414961f570a4e8231cacd7fc" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "der", "log", "native-tls", "percent-encoding", - "rustls-pemfile", "rustls-pki-types", "socks", "ureq-proto", - "utf-8", + "utf8-zero", "webpki-root-certs", ] [[package]] name = "ureq-proto" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b6cabebbecc4c45189ab06b52f956206cea7d8c8a20851c35a85cb169224cc" +checksum = "f86fd172ccca569e458f61b6bdd6220965a9ef36e672a6852953b51a0e1583be" dependencies = [ - "base64 0.22.1", - "http 1.3.1", + "base64 0.23.1", + "http 1.5.0", "httparse", "log", ] [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] name = "urlpattern" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "urlpattern" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df16f50ef4cc145211879a3867ba757076b25dfee812040dcb0658bd9ae7904b" dependencies = [ + "icu_properties", "regex", "serde", - "unic-ucd-ident", "url", ] @@ -12158,7 +12874,7 @@ dependencies = [ "roxmltree", "rustybuzz 0.20.1", "simplecss", - "siphasher 1.0.1", + "siphasher 1.0.4", "strict-num", "svgtypes", "tiny-skia-path", @@ -12174,6 +12890,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8-zero" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -12188,13 +12910,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.1" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.4.3", "js-sys", - "serde", + "serde_core", "sha1_smol", "wasm-bindgen", ] @@ -12244,9 +12966,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version-compare" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" [[package]] name = "version_check" @@ -12292,9 +13014,9 @@ dependencies = [ [[package]] name = "want" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +checksum = "ec4cdd0dd910afe868b7ef477227d8d538b46b3075031afee8a9f2acb0a2ed0b" dependencies = [ "try-lock", ] @@ -12311,29 +13033,20 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.103" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ "cfg-if", "once_cell", @@ -12342,38 +13055,22 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.53" +version = "0.4.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67" +checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" dependencies = [ - "cfg-if", "js-sys", - "once_cell", + "tokio", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.103" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -12381,22 +13078,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.103" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 3.0.9", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.103" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" dependencies = [ "unicode-ident", ] @@ -12414,15 +13111,28 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wayland-backend" -version = "0.3.11" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" dependencies = [ "cc", "downcast-rs 1.2.1", - "rustix 1.1.2", + "rustix 1.1.5", "scoped-tls", "smallvec", "wayland-sys", @@ -12430,12 +13140,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.11" +version = "0.31.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" dependencies = [ - "bitflags 2.13.1", - "rustix 1.1.2", + "bitflags 2.13.2", + "rustix 1.1.5", "wayland-backend", "wayland-scanner", ] @@ -12446,29 +13156,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.11" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.5", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.9" +version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-scanner", @@ -12476,11 +13186,11 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -12489,11 +13199,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "wayland-backend", "wayland-client", "wayland-protocols", @@ -12502,20 +13212,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.7" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" dependencies = [ "proc-macro2", - "quick-xml 0.37.5", + "quick-xml 0.41.0", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.7" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ "dlib", "log", @@ -12525,9 +13235,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.80" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc" +checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4" dependencies = [ "js-sys", "wasm-bindgen", @@ -12543,11 +13253,23 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web_atoms" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba8b815c1b593dc0baf78dd0f4fc8fdb2de53198fb1163738093e9a311c33fb3" +dependencies = [ + "phf 0.13.1", + "phf_codegen 0.13.1", + "string_cache 0.9.0", + "string_cache_codegen 0.6.1", +] + [[package]] name = "webkit2gtk" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -12569,9 +13291,9 @@ dependencies = [ [[package]] name = "webkit2gtk-sys" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" dependencies = [ "bitflags 1.3.2", "cairo-sys-rs", @@ -12589,36 +13311,48 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.2" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a" +checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" dependencies = [ "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.38.0" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" dependencies = [ "webview2-com-macros", - "webview2-com-sys", + "webview2-com-sys 0.38.2", "windows 0.61.3", "windows-core 0.61.2", "windows-implement 0.60.2", "windows-interface 0.59.3", ] +[[package]] +name = "webview2-com" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f89fca7a704cee10dcb3654c1dbb8941d1783132f1917358af75bec37a7d7e6" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys 0.39.1", + "windows 0.62.2", + "windows-core 0.62.2", +] + [[package]] name = "webview2-com-macros" version = "0.8.1" @@ -12627,25 +13361,36 @@ checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "webview2-com-sys" -version = "0.38.0" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" dependencies = [ - "thiserror 2.0.16", + "thiserror 2.0.21", "windows 0.61.3", "windows-core 0.61.2", ] +[[package]] +name = "webview2-com-sys" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a07132775117d6065853d9d1178157b8c90e228de47129d6bce2c7edebedfb" +dependencies = [ + "thiserror 2.0.21", + "windows 0.62.2", + "windows-core 0.62.2", +] + [[package]] name = "weezl" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" @@ -12654,8 +13399,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" dependencies = [ "arrayvec", - "bitflags 2.13.1", - "cfg_aliases 0.2.1", + "bitflags 2.13.2", + "cfg_aliases 0.2.2", "document-features", "hashbrown 0.15.5", "js-sys", @@ -12684,11 +13429,11 @@ dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.13.1", - "cfg_aliases 0.2.1", + "bitflags 2.13.2", + "cfg_aliases 0.2.2", "document-features", "hashbrown 0.15.5", - "indexmap 2.11.4", + "indexmap 2.14.2", "log", "naga", "once_cell", @@ -12698,7 +13443,7 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.21", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", @@ -12741,11 +13486,11 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.13.1", + "bitflags 2.13.2", "block", "bytemuck", "cfg-if", - "cfg_aliases 0.2.1", + "cfg_aliases 0.2.2", "core-graphics-types 0.1.3", "glow", "glutin_wgl_sys", @@ -12756,7 +13501,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "log", "metal 0.31.0", "naga", @@ -12770,7 +13515,7 @@ dependencies = [ "raw-window-handle", "renderdoc-sys", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.21", "wasm-bindgen", "web-sys", "wgpu-types", @@ -12784,11 +13529,11 @@ version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "js-sys", "log", - "thiserror 2.0.16", + "thiserror 2.0.21", "web-sys", ] @@ -12867,16 +13612,17 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window-vibrancy" -version = "0.6.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +checksum = "111e51caca442cafd9bab396628ac4d814880eaea4e63dfd76a12e9f342b5580" dependencies = [ - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", "raw-window-handle", - "windows-sys 0.59.0", + "windows-sys 0.61.2", "windows-version", ] @@ -12899,6 +13645,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.58.0" @@ -12916,7 +13672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" dependencies = [ "windows-core 0.59.0", - "windows-targets 0.53.3", + "windows-targets 0.53.5", ] [[package]] @@ -12945,6 +13701,18 @@ dependencies = [ "windows-numerics 0.2.0", ] +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", +] + [[package]] name = "windows-collections" version = "0.1.1" @@ -12963,6 +13731,15 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" version = "0.54.0" @@ -12973,6 +13750,18 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.58.0" @@ -12996,7 +13785,7 @@ dependencies = [ "windows-interface 0.59.3", "windows-result 0.3.4", "windows-strings 0.3.1", - "windows-targets 0.53.3", + "windows-targets 0.53.5", ] [[package]] @@ -13025,6 +13814,19 @@ dependencies = [ "windows-strings 0.4.2", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + [[package]] name = "windows-future" version = "0.1.1" @@ -13043,7 +13845,29 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", "windows-link 0.1.3", - "windows-threading", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] @@ -13054,7 +13878,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -13065,7 +13889,7 @@ checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -13076,7 +13900,18 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] @@ -13087,7 +13922,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -13098,7 +13933,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] @@ -13146,15 +13981,25 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + [[package]] name = "windows-registry" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] @@ -13184,6 +14029,15 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-strings" version = "0.1.0" @@ -13212,6 +14066,15 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -13254,7 +14117,7 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.5", ] [[package]] @@ -13314,19 +14177,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.1.3", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -13338,11 +14201,20 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-version" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e061eb0a22b4a1d778ad70f7575ec7845490abb35b08fa320df7895882cacb" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" dependencies = [ "windows-link 0.2.1", ] @@ -13376,9 +14248,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -13400,9 +14272,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -13424,9 +14296,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -13436,9 +14308,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -13460,9 +14332,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -13484,9 +14356,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -13508,9 +14380,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -13532,9 +14404,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" @@ -13545,11 +14417,11 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.13.1", + "bitflags 2.13.2", "block2 0.5.1", "bytemuck", "calloop", - "cfg_aliases 0.2.1", + "cfg_aliases 0.2.2", "concurrent-queue", "core-foundation 0.9.4", "core-graphics 0.23.2", @@ -13559,7 +14431,7 @@ dependencies = [ "libc", "memmap2", "ndk 0.9.0", - "objc2 0.5.2", + "objc2 0.5.3", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", "objc2-ui-kit 0.2.2", @@ -13599,18 +14471,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] [[package]] name = "winnow" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] @@ -13625,24 +14497,33 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "winreg" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d6f32a0ff4a9f6f01231eb2059cc85479330739333e0e58cadf03b6af2cca10" +dependencies = [ + "cfg-if", + "windows-sys 0.61.2", +] + [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "wl-clipboard-rs" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5ff8d0e60065f549fafd9d6cb626203ea64a798186c80d8e7df4f8af56baeb" +checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" dependencies = [ "libc", "log", "os_pipe", - "rustix 0.38.44", - "tempfile", - "thiserror 2.0.16", + "rustix 1.1.5", + "thiserror 2.0.21", "tree_magic_mini", "wayland-backend", "wayland-client", @@ -13656,7 +14537,7 @@ version = "0.1.0" dependencies = [ "ahash", "arrayvec", - "bitflags 2.13.1", + "bitflags 2.13.2", "bytemuck", "chrono", "clang-sys", @@ -13664,7 +14545,7 @@ dependencies = [ "clap_builder", "concurrent-queue", "deranged", - "digest", + "digest 0.10.7", "dispatch2", "dpi", "either", @@ -13677,20 +14558,20 @@ dependencies = [ "futures-sink", "futures-task", "futures-util", - "gif", + "gif 0.13.3", "idna", "libc", "linux-raw-sys 0.11.0", "linux-raw-sys 0.4.15", "log", "memchr", - "miniz_oxide", + "miniz_oxide 0.8.9", "ndarray 0.17.2", "nom 7.1.3", "num-complex", "num-integer", "num-rational", - "objc2 0.6.2", + "objc2 0.6.5", "objc2-core-foundation", "objc2-core-graphics", "open", @@ -13701,15 +14582,15 @@ dependencies = [ "proc-macro2", "profiling", "quote", - "rand 0.8.5", + "rand 0.8.8", "regex", "regex-automata", "regex-syntax", - "reqwest", + "reqwest 0.12.24", "rgb", "rustc-hash 1.1.0", "rustix 0.38.44", - "rustix 1.1.2", + "rustix 1.1.5", "schemars 0.8.22", "scopeguard", "semver", @@ -13721,7 +14602,7 @@ dependencies = [ "specta-macros", "stable_deref_trait", "tauri-utils", - "thiserror 2.0.16", + "thiserror 2.0.21", "time", "toml_datetime 0.7.5+spec-1.1.0", "toml_edit 0.23.10+spec-1.0.0", @@ -13743,58 +14624,57 @@ dependencies = [ "windows-sys 0.59.0", "windows-sys 0.60.2", "windows-sys 0.61.2", - "winnow 0.7.13", + "winnow 0.7.15", "x11rb", "x11rb-protocol", ] [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] name = "wry" -version = "0.53.3" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f0e9642a0d061f6236c54ccae64c2722a7879ad4ec7dff59bd376d446d8e90" +checksum = "a819957a01b3119af85e638a38d242af76dbc87d130dca67bfd0441072e21ff0" dependencies = [ "base64 0.22.1", - "block2 0.6.1", + "block2 0.6.2", "cookie", "crossbeam-channel", - "dirs 6.0.0", + "dirs 7.0.0", + "dom_query", "dpi", "dunce", "gdkx11", "gtk", - "html5ever", - "http 1.3.1", + "http 1.5.0", "javascriptcore-rs", "jni 0.21.1", - "kuchikiki", "libc", "ndk 0.9.0", - "objc2 0.6.2", - "objc2-app-kit 0.3.1", + "objc2 0.6.5", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", - "objc2-ui-kit 0.3.1", + "objc2-foundation 0.3.2", + "objc2-ui-kit 0.3.2", "objc2-web-kit", "once_cell", "percent-encoding", "raw-window-handle", - "sha2", + "sha2 0.10.9", "soup3", "tao-macros", - "thiserror 2.0.16", + "thiserror 2.0.21", "url", "webkit2gtk", "webkit2gtk-sys", - "webview2-com", - "windows 0.61.3", - "windows-core 0.61.2", + "webview2-com 0.39.1", + "windows 0.62.2", + "windows-core 0.62.2", "windows-version", "x11-dl", ] @@ -13829,9 +14709,9 @@ dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "once_cell", - "rustix 1.1.2", + "rustix 1.1.5", "x11rb-protocol", ] @@ -13843,19 +14723,19 @@ checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] name = "xattr" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.2", + "rustix 1.1.5", ] [[package]] name = "xcursor" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" +checksum = "163b33ed8786455e2fa5d72f554057ce3f3182425434f756cd39c99839d88e23" [[package]] name = "xkbcommon-dl" @@ -13863,7 +14743,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.13.1", + "bitflags 2.13.2", "dlib", "log", "once_cell", @@ -13878,9 +14758,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.27" +version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" +checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "xmlwriter" @@ -13908,11 +14788,10 @@ checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -13920,21 +14799,21 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", "synstructure", ] [[package]] name = "yuv" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cbe2d856acbe6d86c0fa6f458b73e962834061ca2f7f94c6e4633afc9efd4d4" +checksum = "adb00ec278d3f05b635a766c22205efb5825592d93c955c8021e1dfe21de5a6d" dependencies = [ "num-traits", "rgb", @@ -13942,9 +14821,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.18.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe18fb60dc696039e738717b76eaea21e7a4489bbb1885020b43c94236d7e98a" +checksum = "5db4be7c075cb421e4b7ee645541604239bd243ba7c357511f4ff3a74b555907" dependencies = [ "async-broadcast", "async-executor", @@ -13962,7 +14841,7 @@ dependencies = [ "hex", "libc", "ordered-stream", - "rustix 1.1.2", + "rustix 1.1.5", "serde", "serde_repr", "tokio", @@ -13970,7 +14849,7 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 1.0.3", + "winnow 1.0.4", "zbus_macros", "zbus_names", "zvariant", @@ -13978,9 +14857,9 @@ dependencies = [ [[package]] name = "zbus-secret-service-keyring-store" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ccede190ba363386a24e8021c7f3848393976609ec9f5d1f8c6c09ef37075b4" +checksum = "74801d001b9e7729adb4f1825b67b398185fed424749aa3d8bacf70417137d9a" dependencies = [ "keyring-core", "secret-service", @@ -13989,14 +14868,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.18.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe96480bed92df2b442a1a30df364e12d08eed03aeb061f2b8dc6afb2be91119" +checksum = "2990635d09ade6df1868f72f8cac69a876a90981e8bd3c40b1be413f8dc88f40" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", "zbus_names", "zvariant", "zvariant_utils", @@ -14009,10 +14888,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" dependencies = [ "serde", - "winnow 1.0.3", + "winnow 1.0.4", "zvariant", ] +[[package]] +name = "zcheapstr" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1afec51604565183aeb5c54c20aeab286120d4e4460f7f76e3e8bb8c0d99473" +dependencies = [ + "serde", +] + [[package]] name = "zeno" version = "0.3.3" @@ -14021,56 +14909,56 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "e5fe1f8f1b06191a00962174c61aa5005e0bb391a6d80d07e24d115c01a92ed8" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "863ad3ac83293fb4d740aedbfdc9240dd8d1a50c1099acd76ce80ce7c7230c7f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.119", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879" [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" dependencies = [ "displaydoc", "yoke", @@ -14079,9 +14967,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" dependencies = [ "yoke", "zerofrom", @@ -14090,13 +14978,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", ] [[package]] @@ -14107,15 +14995,21 @@ checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" dependencies = [ "arbitrary", "crc32fast", - "indexmap 2.11.4", + "indexmap 2.14.2", "memchr", ] [[package]] name = "zlib-rs" -version = "0.5.2" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zune-core" @@ -14123,6 +15017,12 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +[[package]] +name = "zune-core" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" + [[package]] name = "zune-inflate" version = "0.2.54" @@ -14138,46 +15038,56 @@ version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" dependencies = [ - "zune-core", + "zune-core 0.4.12", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core 0.5.3", ] [[package]] name = "zvariant" -version = "5.13.1" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee2a0bcd2a907786a456fff45aaaaf54c9ba5f50b71ae9ec1a4edd200c94911" +checksum = "c1d34c27cc6cdd1f458427519dd6b8612f7b7e3f7b9a0b2355d041dda9869147" dependencies = [ "endi", "enumflags2", "serde", "url", - "winnow 1.0.3", + "winnow 1.0.4", + "zcheapstr", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.13.1" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a708216a18780796770bfe3f4739c7c83a3e8f789b755534bbbc06e4e23e12" +checksum = "864155e69b4352db0c7f374917bf45d1e0c8d17659c8b3dbf9795f3673f8c497" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 3.0.9", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.5.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" +checksum = "bad0294361a320b694a328460dc73add56c306150f5cb6bfafc44446120008a3" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.106", - "winnow 1.0.3", + "syn 3.0.9", + "winnow 1.0.4", ] diff --git a/README.md b/README.md index 42532769551..362205dc323 100644 --- a/README.md +++ b/README.md @@ -116,9 +116,9 @@ Cap is a Turborepo monorepo with Rust, TypeScript, Tauri, SolidStart, Next.js, D Requirements: -- Node.js 20 or newer -- Bun 1.4.0 -- Rust 1.88 or newer +- Node.js 20.12 or newer +- Bun 1.4.3 +- Rust 1.99 or newer - Docker for MySQL, MinIO, and local services Install and set up the repo: diff --git a/apps/chrome-extension/package.json b/apps/chrome-extension/package.json index 51e4d378813..62f4cc44b65 100644 --- a/apps/chrome-extension/package.json +++ b/apps/chrome-extension/package.json @@ -16,27 +16,28 @@ "@cap/recorder-core": "workspace:*", "@cap/web-domain": "workspace:*", "@radix-ui/colors": "^3.0.0", - "@radix-ui/react-select": "^2.2.5", - "@radix-ui/react-switch": "^1.1.0", - "class-variance-authority": "^0.7.0", + "@radix-ui/react-select": "^2.4.1", + "@radix-ui/react-switch": "^1.4.1", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "lucide-react": "^0.525.0", - "react": "19.2.4", - "react-dom": "19.2.4", - "tailwind-merge": "^2.6.0" + "lucide-react": "^1.57.0", + "react": "19.3.0", + "react-dom": "19.3.0", + "tailwind-merge": "^3.7.0" }, "devDependencies": { "@cap/ui": "workspace:*", - "@playwright/test": "^1.51.1", - "@types/chrome": "^0.0.323", - "@types/react": "19.2.14", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "4.4.1", - "autoprefixer": "^10.4.16", - "postcss": "^8.4.31", - "tailwindcss": "^3.4.0", - "typescript": "^5.8.3", - "vite": "6.3.5", - "vitest": "^3.2.0" + "@playwright/test": "^1.64.0", + "@tailwindcss/postcss": "^4.3.3", + "@types/chrome": "^0.3.5", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "@vitejs/plugin-react": "6.1.2", + "autoprefixer": "^10.6.1", + "postcss": "^8.5.30", + "tailwindcss": "^4.3.3", + "typescript": "^7.0.2", + "vite": "8.3.4", + "vitest": "^5.0.4" } } diff --git a/apps/chrome-extension/postcss.config.cjs b/apps/chrome-extension/postcss.config.cjs index e873f1a4f23..eebbe271c7d 100644 --- a/apps/chrome-extension/postcss.config.cjs +++ b/apps/chrome-extension/postcss.config.cjs @@ -1,6 +1,6 @@ module.exports = { plugins: { - tailwindcss: {}, + "@tailwindcss/postcss": {}, autoprefixer: {}, }, }; diff --git a/apps/chrome-extension/src/popup/styles.css b/apps/chrome-extension/src/popup/styles.css index 21cc017989c..f6643d50c1e 100644 --- a/apps/chrome-extension/src/popup/styles.css +++ b/apps/chrome-extension/src/popup/styles.css @@ -7,9 +7,8 @@ @import "@radix-ui/colors/green.css"; @import "@radix-ui/colors/purple.css"; -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; +@config "../../tailwind.config.cjs"; @font-face { font-family: "Neue Montreal"; @@ -77,8 +76,8 @@ --text-secondary: #ffffff; color-scheme: light; font-family: - "Neue Montreal", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, - "Segoe UI", sans-serif; + "Neue Montreal", ui-sans-serif, system-ui, -apple-system, + BlinkMacSystemFont, "Segoe UI", sans-serif; } @layer base { diff --git a/apps/cli/skill/cap-demo/package-lock.json b/apps/cli/skill/cap-demo/package-lock.json index d7c425d8949..0eca94e3c22 100644 --- a/apps/cli/skill/cap-demo/package-lock.json +++ b/apps/cli/skill/cap-demo/package-lock.json @@ -1,30 +1,30 @@ { - "name": "cap-demo", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cap-demo", - "version": "1.0.0", - "dependencies": { - "playwright-core": "^1.62.1" - }, - "bin": { - "cap-demo": "cap-demo.mjs" - } - }, - "node_modules/playwright-core": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", - "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=20" - } - } - } + "name": "cap-demo", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "cap-demo", + "version": "1.0.0", + "dependencies": { + "playwright-core": "^1.64.0" + }, + "bin": { + "cap-demo": "cap-demo.mjs" + } + }, + "node_modules/playwright-core": { + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.0.tgz", + "integrity": "sha512-T9r+MZkTECl2+oUcZ26YgZzTrYidTsIhYYkJix+6iDOymOb1FB2RLLSOxRGnZGv5DStt+aduIVbt+E8WygXYpg==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + } + } } diff --git a/apps/cli/skill/cap-demo/package.json b/apps/cli/skill/cap-demo/package.json index 95915db47c6..77e625a60f7 100644 --- a/apps/cli/skill/cap-demo/package.json +++ b/apps/cli/skill/cap-demo/package.json @@ -7,6 +7,6 @@ "cap-demo": "./cap-demo.mjs" }, "dependencies": { - "playwright-core": "^1.62.1" + "playwright-core": "^1.64.0" } } diff --git a/apps/desktop-gpui/CSS.md b/apps/desktop-gpui/CSS.md new file mode 100644 index 00000000000..b8298a11d7a --- /dev/null +++ b/apps/desktop-gpui/CSS.md @@ -0,0 +1,291 @@ +# CSS + +The target design system for Cap's GPUI desktop app (`apps/desktop-gpui`) only. The **Theme CSS** +block below is an exact copy of `platform.css`, formatted by Biome. This is the supplied palette, +not an extension of the web or Tauri styles. Read these rules before desktop UI work. + +`build.rs` compiles `platform.css` into Rust light/dark colors, radii and shadows. The desktop +theme carries only these tokens: the legacy Radix scales and the editor palette are gone, and app +chrome takes its colors, radii and shadows from them. Literal colors remain only where this theme +defines nothing: the macOS window materials, overlays drawn over screen or video content (crop, +target selection, camera preview), platform window controls (traffic lights, the Windows close +button), illustrations, recording-state reds and user content. +`scripts/migrate-theme-tokens.ts` migrates legacy field references and literal corner radii, while +`scripts/sync-hugeicons.ts` regenerates the generic SVG assets from the pinned free icon package. + +## Rules + +- **For new and migrated UI, use these tokens, not literal colors, alpha tints, radii or shadows.** + Resolve CSS `var(...)` and `color-mix(...)` definitions when mapping them into Rust; do not + substitute new shades. Never derive a UI state by mixing colors or changing alpha at a call site. +- **Do not invent more CSS, token names or component-specific palettes.** If the supplied theme + does not cover a required UI state, surface the gap for a design decision before changing the + theme. Keep `platform.css` and the Theme CSS block here identical in the same change. +- Use semantic names in the eventual Rust theme mapping: CSS `--surface-raised` corresponds to + `surface_raised`. Select by role, not by a visually similar hex value. +- Light values are in `:root`, dark values in `.dark`. Resolve the chosen set using Cap's existing + appearance preference and system appearance handling. Radii and shadows are shared. +- Use tokens for what they name: + - **Surfaces:** `surface` for the window and panel base, `surface-secondary` / `surface-subtle` for + recessed areas, `surface-raised` for cards and raised controls, `surface-inverse` for inverted + chips. `surface-overlay` is the modal dialog scrim and nothing else. + - **Borders:** `border` by default, `border-subtle` / `border-softer` for dividers inside a surface, + `border-strong` for outlines that must stand out, `border-inverse` on `surface-inverse`. + - **Text:** `text-primary` for headings and key values, `text-default` for body text, + `text-secondary` for supporting text, `text-muted` for placeholders and disabled text. + `text-positive` / `text-negative` / `text-danger` / `text-warning` for status text only. + - **Interactive text and icons:** `text-interactive` with `icon` at rest; `text-hover` / + `text-active` with `icon-active` on hover, press or selection. Keep text and icon in step, as the + CSS comment requires; never point one token at the other. + - **Interaction fills:** `hover-bg` for hover and selected rows, `active-bg` for a toggle or + trigger that is on (selected, open), `disabled-bg` for disabled fills. No control paints a press + state: hover is the only pointer feedback, and a click shows itself by changing the control's + state, never by flashing a second fill over the hover one. + - **Status:** `positive`, `negative`, `warning`, `indigo`, `purple`, each paired with its `-subtle` + fill for badges and banners when that status is relevant. + - **Primary action:** `primary` fill with `primary-foreground` text, `primary-hover` / + `primary-active` for hover and press, `primary-disabled` + `primary-disabled-foreground` when + disabled, `primary-subtle` for a selected tint. + - **Destructive action:** `danger` fill with `danger-foreground` text, `danger-hover` on hover, + `danger-disabled` + `danger-disabled-foreground` when disabled, `danger-ring` for an invalid + field's error ring. Use destructive colors for actions such as delete; recording state needs + a separate review rather than assuming a trading-style negative status. + - **Neutral button:** `button-fill` with `button-fill-foreground`, `button-fill-hover` / + `button-fill-active` for hover and press, `button-fill-subtle` for its quiet variant. +- **Focus:** use `ring-primary` for the focus indicator; do not improvise a new focus color. +- **Radii** come from the five radius tokens only: `radius-small` (4), `radius-compact` (6), + `radius-default` (8), `radius-medium` (12) and `radius-large` (999, pills and circles). +- **Shadows** come from `shadow-1`, `shadow-2`, `shadow-3` or `shadow-dialog` (dialogs only). +- **Font family:** the bundled Inter face is the default for all UI text, and the bundled Faculty + Glyphic face is for display headings and brand text only. Take them from `theme::ui_font()` and + `theme::display_font()`, which fall back to the system UI font when a bundled face fails to + load. Set the family on every window root and on anything GPUI lays out outside it (tooltips, + prompts). +- **User content is not UI.** Colors the user picks or that come from media (wallpapers, gradient + and color presets, annotation colors, the color picker's swatches, camera and video frames) are + data, not theme tokens. The controls around them still use tokens. + +## Not defined by this theme + +These have no supplied token. Preserve existing behavior until the missing rules are decided; +do not silently make up values or claim the strict-token migration is complete. + +- Border width. +- Typography: font family, sizes, weights and line heights. +- Spacing and control sizes. +- Window materials (macOS glass, Windows Mica or Acrylic). +- Transitions and animations. + +## Components + +Put shared controls in `src/ui`; the component owns its colors, border, radius, shadow and +interaction states. Callers choose the existing component variant by meaning and supply layout, +not per-window paint overrides. Migrate the remaining `plain`, `body`, `settings` and `glass` +styling deliberately rather than reintroducing material-specific colors. Do not copy Aeris's +trading-specific variants. + +Map neutral filled buttons to `button-fill` / `button-fill-hover` / `button-fill-active` / +`button-fill-foreground`, brand actions to the `primary-*` set, destructive actions to +`danger-*`, and quiet controls to the surface, border, text and interaction tokens. Keep the +matching disabled foreground with each disabled fill. Audit Cap's existing `ButtonVariant` +names before changing their meanings: its current `Primary` is neutral and `Blue` is the brand +action. Use `surface-overlay` only when a modal actually has a dimming scrim, and +`shadow-dialog` for dialogs. + +## Changing a value + +Change `platform.css` and the Theme CSS block below together, in the same commit. The two must stay +identical. Format the CSS with `bun run biome check --write apps/desktop-gpui/platform.css`, +then copy the formatted result here. + +## Theme CSS + +```css +:root { + /* Surfaces */ + --surface: #ffffff; + --surface-secondary: #fafafa; + --surface-subtle: #fafafa; + --surface-raised: #f0f0f0; + --surface-overlay: color-mix(in srgb, #000000 50%, transparent); + --surface-inverse: #222222; + + /* Borders */ + --border: #e5e5e5; + --border-secondary: var(--border); + --border-subtle: #f0f0f0; + --border-softer: #f5f5f5; + --border-strong: #c2c2c2; + --border-inverse: #222222; + + /* Text */ + --text-primary: #222222; + --text-default: #404040; + --text-secondary: #646465; + --text-muted: #c2c2c2; + --text-positive: var(--positive); + --text-negative: var(--negative); + --text-danger: var(--danger); + --text-warning: #ff6900; + /* Text on interactive items (buttons, tabs, links). Keep these values in + step with --icon / --icon-active: normal text = normal icon colour, + hover/active text = active icon colour. They are separate tokens on + purpose, never point one at the other. */ + --text-interactive: #646465; + --text-hover: #404040; + --text-active: #404040; + + /* Interaction states — hover / selected fill, pressed fill, disabled fill. */ + --hover-bg: #f0f0f0; + --active-bg: #e5e5e5; + --disabled-bg: #e5e5e5; + + /* Icons — normal and hovered/pressed/selected */ + --icon: #646465; + --icon-active: #404040; + + /* Status — gains / losses, success / failure. Shared with the main platform. */ + --positive: #089981; + --positive-subtle: #dcf5f0; + --negative: #f7525f; + --negative-subtle: #ffe2e2; + --warning: #ff6900; + --warning-subtle: #ffedd4; + --indigo: #615fff; + --indigo-subtle: #e0e7ff; + --purple: #ad46ff; + --purple-subtle: #f3e8ff; + + /* Actions */ + --primary: #0182fb; + --primary-hover: color-mix(in srgb, var(--primary) 80%, transparent); + --primary-active: #006bd6; + --primary-disabled: color-mix(in srgb, var(--primary) 30%, var(--surface)); + --primary-disabled-foreground: color-mix( + in srgb, + var(--primary) 65%, + var(--surface) + ); + --primary-subtle: color-mix(in srgb, var(--primary) 12%, var(--surface)); + --primary-foreground: #ffffff; + --danger: #f7525f; + --danger-hover: #e5404d; + --danger-disabled: #ffc9c9; + --danger-disabled-foreground: #ffa2a2; + --danger-ring: #ffc9c9; + --danger-foreground: #ffffff; + + /* Buttons — neutral default button */ + --button-fill: #333333; + --button-fill-hover: #404040; + --button-fill-active: #222222; + --button-fill-foreground: #ffffff; + --button-fill-subtle: #f5f5f5; + + /* Focus */ + --ring-primary: var(--primary); + + /* Radius */ + --radius-default: 8px; + --radius-medium: 12px; + --radius-small: 4px; + --radius-large: 999px; + --radius-compact: 6px; + + /* Shadows */ + --shadow-1: + 0 0 1px 0 color-mix(in srgb, #000000 20%, transparent), + 0 1px 2px 0 color-mix(in srgb, #000000 5%, transparent), + 0 1px 1px 0 color-mix(in srgb, #000000 1%, transparent); + --shadow-2: 0 1px 6px 0 color-mix(in srgb, #000000 10%, transparent); + --shadow-3: 0 2.75px 5.5px 0 color-mix(in srgb, #000000 10%, transparent); + --shadow-dialog: + 0 4px 6px -4px color-mix(in srgb, #101828 10%, transparent), + 0 10px 15px -3px color-mix(in srgb, #000000 10%, transparent); + + /* Chart */ + --bullish: var(--positive); + --bearish: var(--negative); +} + +.dark { + /* Surfaces */ + --surface: #1f1f1f; + --surface-secondary: #222222; + --surface-subtle: #2b2b2b; + --surface-raised: #333333; + --surface-overlay: color-mix(in srgb, #000000 60%, transparent); + --surface-inverse: #ffffff; + + /* Borders */ + --border: #333333; + --border-secondary: var(--border); + --border-subtle: #333333; + --border-softer: #2b2b2b; + --border-strong: #404040; + --border-inverse: #ffffff; + + /* Text */ + --text-primary: #f5f5f5; + --text-default: #f0f0f0; + --text-secondary: #c2c2c2; + --text-muted: #808080; + --text-positive: var(--positive); + --text-negative: var(--negative); + --text-danger: #ffa2a2; + --text-warning: #ffb86a; + --text-interactive: #c2c2c2; + --text-hover: #f0f0f0; + --text-active: #f0f0f0; + + /* Interaction states */ + --hover-bg: #333333; + --active-bg: #404040; + --disabled-bg: #404040; + + /* Icons */ + --icon: #c2c2c2; + --icon-active: #f0f0f0; + + /* Status — gains / losses, success / failure. Shared with the main platform. */ + --positive: #089981; + --positive-subtle: #193c37; + --negative: #f7525f; + --negative-subtle: #532b2e; + --warning: #ff6900; + --warning-subtle: #7e2a0c; + --indigo: #615fff; + --indigo-subtle: #312c85; + --purple: #ad46ff; + --purple-subtle: #59168b; + + /* Actions */ + --primary: #0182fb; + --primary-hover: color-mix(in srgb, var(--primary) 80%, transparent); + --primary-active: #006bd6; + --primary-disabled: color-mix(in srgb, var(--primary) 35%, var(--surface)); + --primary-disabled-foreground: color-mix(in srgb, var(--primary) 65%, white); + --primary-subtle: color-mix(in srgb, var(--primary) 22%, var(--surface)); + --primary-foreground: #ffffff; + --danger: #f7525f; + --danger-hover: #f96a75; + --danger-disabled: #6b3135; + --danger-disabled-foreground: #d0646c; + --danger-ring: #c10007; + --danger-foreground: #ffffff; + + /* Buttons — neutral default button */ + --button-fill: #f5f5f5; + --button-fill-hover: #e0e0e0; + --button-fill-active: #d4d4d4; + --button-fill-foreground: #404040; + --button-fill-subtle: #222222; + + /* Focus */ + --ring-primary: var(--primary); + + /* Chart */ + --bullish: var(--positive); + --bearish: var(--negative); +} +``` diff --git a/apps/desktop-gpui/Cargo.toml b/apps/desktop-gpui/Cargo.toml index f0823efa081..f09c18e1ff4 100644 --- a/apps/desktop-gpui/Cargo.toml +++ b/apps/desktop-gpui/Cargo.toml @@ -29,14 +29,14 @@ cap-gpui-kernels = { path = "kernels" } # gpui — the wingleeio/zed fork Comet ships. The pinned rev carries f596cde # ("destination alpha on transparent windows: Porter-Duff OVER, not additive"), # which our transparent rounded main-window shell depends on. -gpui = { git = "https://github.com/wingleeio/zed", rev = "5d1f83d9f27a19bec1fb241dc33b42238af9cf8d" } -gpui_platform = { git = "https://github.com/wingleeio/zed", rev = "5d1f83d9f27a19bec1fb241dc33b42238af9cf8d", features = [ +gpui = { git = "https://github.com/wingleeio/zed", rev = "f8d8a90d914d26b68fb126040386fb08c2ada78a" } +gpui_platform = { git = "https://github.com/wingleeio/zed", rev = "f8d8a90d914d26b68fb126040386fb08c2ada78a", features = [ "wayland", "x11", "font-kit", "runtime_shaders", ] } -gpui_tokio = { git = "https://github.com/wingleeio/zed", rev = "5d1f83d9f27a19bec1fb241dc33b42238af9cf8d" } +gpui_tokio = { git = "https://github.com/wingleeio/zed", rev = "f8d8a90d914d26b68fb126040386fb08c2ada78a" } # Device enumeration reuses the same crates the Tauri app records with, so the # device identities here are byte-identical to the ones cap-recording expects. @@ -239,9 +239,8 @@ parakeet-rs = "0.3.4" [patch.crates-io] wgpu-hal = { path = "../../vendor/wgpu-hal" } -# Local checkout of the pinned wingleeio/zed rev plus one commit: paint_surface -# accepts 32BGRA CVPixelBuffers, which the editor preview's zero-copy path -# hands it (see cap-rendering's RgbaToBgraSurfaceConverter). +# The local checkout prepared by scripts/prepare-gpui-dependency.sh carries +# platform fixes, including 32BGRA CVPixelBuffers for the zero-copy editor preview. [patch."https://github.com/wingleeio/zed"] gpui = { path = "../../../zed-cap/crates/gpui" } gpui_platform = { path = "../../../zed-cap/crates/gpui_platform" } diff --git a/apps/desktop-gpui/README.md b/apps/desktop-gpui/README.md index 492f4a547d3..8ab3bdda8fd 100644 --- a/apps/desktop-gpui/README.md +++ b/apps/desktop-gpui/README.md @@ -73,9 +73,7 @@ only for the Tauri app and that gpui's tree does not want. Nesting a second workspace here leaves the root `Cargo.lock`, the `cargo hakari` workspace-hack and CI completely untouched. -`rust-toolchain.toml` pins `stable` rather than the root's 1.88.0, because -gpui's dependencies need 1.89+ (`smol_str` 0.3.6, `cosmic-text` 0.19). The -nearest toolchain file wins, so the Tauri app is unaffected. +`rust-toolchain.toml` pins Rust 1.99.0, matching the root toolchain. ## Shipping and updates diff --git a/apps/desktop-gpui/assets/fonts/FACULTY-GLYPHIC-OFL.txt b/apps/desktop-gpui/assets/fonts/FACULTY-GLYPHIC-OFL.txt new file mode 100644 index 00000000000..a1166fec14d --- /dev/null +++ b/apps/desktop-gpui/assets/fonts/FACULTY-GLYPHIC-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2024 The Faculty Glyphic Project Authors (https://github.com/DylanYoungKoto/FacultyGlyphic) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/apps/desktop-gpui/assets/fonts/FacultyGlyphic-Regular.ttf b/apps/desktop-gpui/assets/fonts/FacultyGlyphic-Regular.ttf new file mode 100644 index 00000000000..7092da81ccf Binary files /dev/null and b/apps/desktop-gpui/assets/fonts/FacultyGlyphic-Regular.ttf differ diff --git a/apps/desktop-gpui/assets/fonts/INTER-OFL.txt b/apps/desktop-gpui/assets/fonts/INTER-OFL.txt new file mode 100644 index 00000000000..21f6aff9610 --- /dev/null +++ b/apps/desktop-gpui/assets/fonts/INTER-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/apps/desktop-gpui/assets/fonts/Inter.ttf b/apps/desktop-gpui/assets/fonts/Inter.ttf new file mode 100644 index 00000000000..047c92f6e22 Binary files /dev/null and b/apps/desktop-gpui/assets/fonts/Inter.ttf differ diff --git a/apps/desktop-gpui/assets/icons/HUGEICONS-LICENSE.md b/apps/desktop-gpui/assets/icons/HUGEICONS-LICENSE.md new file mode 100644 index 00000000000..302d211baae --- /dev/null +++ b/apps/desktop-gpui/assets/icons/HUGEICONS-LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Hugeicons + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/desktop-gpui/assets/icons/align-center.svg b/apps/desktop-gpui/assets/icons/align-center.svg index 4a16909159d..2629f7c8d28 100644 --- a/apps/desktop-gpui/assets/icons/align-center.svg +++ b/apps/desktop-gpui/assets/icons/align-center.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/align-left.svg b/apps/desktop-gpui/assets/icons/align-left.svg index 41f688a1bf0..a41b7f2c6e5 100644 --- a/apps/desktop-gpui/assets/icons/align-left.svg +++ b/apps/desktop-gpui/assets/icons/align-left.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/align-right.svg b/apps/desktop-gpui/assets/icons/align-right.svg index b68921bedf5..942a1954273 100644 --- a/apps/desktop-gpui/assets/icons/align-right.svg +++ b/apps/desktop-gpui/assets/icons/align-right.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/app-window-mac.svg b/apps/desktop-gpui/assets/icons/app-window-mac.svg index 5c193616e3b..be8566742df 100644 --- a/apps/desktop-gpui/assets/icons/app-window-mac.svg +++ b/apps/desktop-gpui/assets/icons/app-window-mac.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/app-window.svg b/apps/desktop-gpui/assets/icons/app-window.svg index a0fabfa160c..7fe0ee8319d 100644 --- a/apps/desktop-gpui/assets/icons/app-window.svg +++ b/apps/desktop-gpui/assets/icons/app-window.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/area.svg b/apps/desktop-gpui/assets/icons/area.svg index b366042250d..fbcd3f28ad6 100644 --- a/apps/desktop-gpui/assets/icons/area.svg +++ b/apps/desktop-gpui/assets/icons/area.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/arrow-left-right.svg b/apps/desktop-gpui/assets/icons/arrow-left-right.svg index e50b25fa07f..f57009ae8b9 100644 --- a/apps/desktop-gpui/assets/icons/arrow-left-right.svg +++ b/apps/desktop-gpui/assets/icons/arrow-left-right.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/arrow-left-to-line.svg b/apps/desktop-gpui/assets/icons/arrow-left-to-line.svg index acacb0348d7..99585dcce90 100644 --- a/apps/desktop-gpui/assets/icons/arrow-left-to-line.svg +++ b/apps/desktop-gpui/assets/icons/arrow-left-to-line.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/arrow-left.svg b/apps/desktop-gpui/assets/icons/arrow-left.svg index a32807fcaf2..65bac1eb329 100644 --- a/apps/desktop-gpui/assets/icons/arrow-left.svg +++ b/apps/desktop-gpui/assets/icons/arrow-left.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/arrow-right-to-line.svg b/apps/desktop-gpui/assets/icons/arrow-right-to-line.svg index 5f334654ece..81525674cae 100644 --- a/apps/desktop-gpui/assets/icons/arrow-right-to-line.svg +++ b/apps/desktop-gpui/assets/icons/arrow-right-to-line.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/arrow-up-right.svg b/apps/desktop-gpui/assets/icons/arrow-up-right.svg index 9324aa55450..571e75c47f5 100644 --- a/apps/desktop-gpui/assets/icons/arrow-up-right.svg +++ b/apps/desktop-gpui/assets/icons/arrow-up-right.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/arrows.svg b/apps/desktop-gpui/assets/icons/arrows.svg index ba8fa161337..900491983cf 100644 --- a/apps/desktop-gpui/assets/icons/arrows.svg +++ b/apps/desktop-gpui/assets/icons/arrows.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/audio-on.svg b/apps/desktop-gpui/assets/icons/audio-on.svg index 6ff46ed48ff..8ff5b857449 100644 --- a/apps/desktop-gpui/assets/icons/audio-on.svg +++ b/apps/desktop-gpui/assets/icons/audio-on.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/ban.svg b/apps/desktop-gpui/assets/icons/ban.svg index 07d5ba3a65e..30a1cd504c7 100644 --- a/apps/desktop-gpui/assets/icons/ban.svg +++ b/apps/desktop-gpui/assets/icons/ban.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/bell.svg b/apps/desktop-gpui/assets/icons/bell.svg index 87683d13490..080b6c21a41 100644 --- a/apps/desktop-gpui/assets/icons/bell.svg +++ b/apps/desktop-gpui/assets/icons/bell.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/bg-blur.svg b/apps/desktop-gpui/assets/icons/bg-blur.svg index 4068228ae86..c640514b54e 100644 --- a/apps/desktop-gpui/assets/icons/bg-blur.svg +++ b/apps/desktop-gpui/assets/icons/bg-blur.svg @@ -1,13 +1 @@ - - - - - - - - - - - - - + diff --git a/apps/desktop-gpui/assets/icons/box-select.svg b/apps/desktop-gpui/assets/icons/box-select.svg index 7cae089d851..fbcd3f28ad6 100644 --- a/apps/desktop-gpui/assets/icons/box-select.svg +++ b/apps/desktop-gpui/assets/icons/box-select.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/brush.svg b/apps/desktop-gpui/assets/icons/brush.svg new file mode 100644 index 00000000000..a9816e70c84 --- /dev/null +++ b/apps/desktop-gpui/assets/icons/brush.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/desktop-gpui/assets/icons/camera.svg b/apps/desktop-gpui/assets/icons/camera.svg index 33da47edc5e..4df20c1551e 100644 --- a/apps/desktop-gpui/assets/icons/camera.svg +++ b/apps/desktop-gpui/assets/icons/camera.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/captions.svg b/apps/desktop-gpui/assets/icons/captions.svg index 16b2c91d23c..8a13e83e4b5 100644 --- a/apps/desktop-gpui/assets/icons/captions.svg +++ b/apps/desktop-gpui/assets/icons/captions.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/caret-down.svg b/apps/desktop-gpui/assets/icons/caret-down.svg index 0a4bb6787a2..a2596ee2e82 100644 --- a/apps/desktop-gpui/assets/icons/caret-down.svg +++ b/apps/desktop-gpui/assets/icons/caret-down.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/check.svg b/apps/desktop-gpui/assets/icons/check.svg index 6e390aaca89..a5dd959fdf1 100644 --- a/apps/desktop-gpui/assets/icons/check.svg +++ b/apps/desktop-gpui/assets/icons/check.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/chevron-down.svg b/apps/desktop-gpui/assets/icons/chevron-down.svg index 55f0688ceae..a2596ee2e82 100644 --- a/apps/desktop-gpui/assets/icons/chevron-down.svg +++ b/apps/desktop-gpui/assets/icons/chevron-down.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/chevron-left.svg b/apps/desktop-gpui/assets/icons/chevron-left.svg index 00b99544367..d024172202f 100644 --- a/apps/desktop-gpui/assets/icons/chevron-left.svg +++ b/apps/desktop-gpui/assets/icons/chevron-left.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/chevron-right.svg b/apps/desktop-gpui/assets/icons/chevron-right.svg index 425636459c6..07ea7e50a00 100644 --- a/apps/desktop-gpui/assets/icons/chevron-right.svg +++ b/apps/desktop-gpui/assets/icons/chevron-right.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/chevron-up.svg b/apps/desktop-gpui/assets/icons/chevron-up.svg index 34047a53a8c..107401980c5 100644 --- a/apps/desktop-gpui/assets/icons/chevron-up.svg +++ b/apps/desktop-gpui/assets/icons/chevron-up.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/circle-check.svg b/apps/desktop-gpui/assets/icons/circle-check.svg index 5fcb31af7a4..d88edd339c6 100644 --- a/apps/desktop-gpui/assets/icons/circle-check.svg +++ b/apps/desktop-gpui/assets/icons/circle-check.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/circle-help.svg b/apps/desktop-gpui/assets/icons/circle-help.svg index 957e4f73b48..67f6e5833ff 100644 --- a/apps/desktop-gpui/assets/icons/circle-help.svg +++ b/apps/desktop-gpui/assets/icons/circle-help.svg @@ -1,5 +1 @@ - - - - - + diff --git a/apps/desktop-gpui/assets/icons/circle-plus.svg b/apps/desktop-gpui/assets/icons/circle-plus.svg index d54cc0b3691..2a3489638d1 100644 --- a/apps/desktop-gpui/assets/icons/circle-plus.svg +++ b/apps/desktop-gpui/assets/icons/circle-plus.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/circle-x.svg b/apps/desktop-gpui/assets/icons/circle-x.svg index 1af8ef0d58e..05131374722 100644 --- a/apps/desktop-gpui/assets/icons/circle-x.svg +++ b/apps/desktop-gpui/assets/icons/circle-x.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/circle.svg b/apps/desktop-gpui/assets/icons/circle.svg index 97038813742..03131470a96 100644 --- a/apps/desktop-gpui/assets/icons/circle.svg +++ b/apps/desktop-gpui/assets/icons/circle.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/clapperboard.svg b/apps/desktop-gpui/assets/icons/clapperboard.svg index 123a0e55a7a..de47097044c 100644 --- a/apps/desktop-gpui/assets/icons/clapperboard.svg +++ b/apps/desktop-gpui/assets/icons/clapperboard.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/clock.svg b/apps/desktop-gpui/assets/icons/clock.svg index be0c96f268e..2176c006657 100644 --- a/apps/desktop-gpui/assets/icons/clock.svg +++ b/apps/desktop-gpui/assets/icons/clock.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/cloud-upload.svg b/apps/desktop-gpui/assets/icons/cloud-upload.svg index b29348cd1cb..44086259759 100644 --- a/apps/desktop-gpui/assets/icons/cloud-upload.svg +++ b/apps/desktop-gpui/assets/icons/cloud-upload.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/columns-2.svg b/apps/desktop-gpui/assets/icons/columns-2.svg index 5e6acbcfc3d..3fcfe5ab522 100644 --- a/apps/desktop-gpui/assets/icons/columns-2.svg +++ b/apps/desktop-gpui/assets/icons/columns-2.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/copy.svg b/apps/desktop-gpui/assets/icons/copy.svg index 4fb0db9f4cd..6cedd69d37f 100644 --- a/apps/desktop-gpui/assets/icons/copy.svg +++ b/apps/desktop-gpui/assets/icons/copy.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/corners.svg b/apps/desktop-gpui/assets/icons/corners.svg index 53b0ef92da3..fbb95451364 100644 --- a/apps/desktop-gpui/assets/icons/corners.svg +++ b/apps/desktop-gpui/assets/icons/corners.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/crop.svg b/apps/desktop-gpui/assets/icons/crop.svg index 94783d581c5..440fb2aae82 100644 --- a/apps/desktop-gpui/assets/icons/crop.svg +++ b/apps/desktop-gpui/assets/icons/crop.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/cursor.svg b/apps/desktop-gpui/assets/icons/cursor.svg index 4875142d2d8..4982ceb09f1 100644 --- a/apps/desktop-gpui/assets/icons/cursor.svg +++ b/apps/desktop-gpui/assets/icons/cursor.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/database.svg b/apps/desktop-gpui/assets/icons/database.svg index b470e6d4ed6..87e0965134d 100644 --- a/apps/desktop-gpui/assets/icons/database.svg +++ b/apps/desktop-gpui/assets/icons/database.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/download.svg b/apps/desktop-gpui/assets/icons/download.svg index 2bb04737583..9975964ce38 100644 --- a/apps/desktop-gpui/assets/icons/download.svg +++ b/apps/desktop-gpui/assets/icons/download.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/ease-curve.svg b/apps/desktop-gpui/assets/icons/ease-curve.svg index d62167a9c6f..95cff6099e0 100644 --- a/apps/desktop-gpui/assets/icons/ease-curve.svg +++ b/apps/desktop-gpui/assets/icons/ease-curve.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/edit.svg b/apps/desktop-gpui/assets/icons/edit.svg index 56ca1e39bc6..ef165197837 100644 --- a/apps/desktop-gpui/assets/icons/edit.svg +++ b/apps/desktop-gpui/assets/icons/edit.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/enlarge.svg b/apps/desktop-gpui/assets/icons/enlarge.svg index 04d21e32028..0a1a7e4d845 100644 --- a/apps/desktop-gpui/assets/icons/enlarge.svg +++ b/apps/desktop-gpui/assets/icons/enlarge.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/eye-off.svg b/apps/desktop-gpui/assets/icons/eye-off.svg index 047d10b3169..894f0230a8f 100644 --- a/apps/desktop-gpui/assets/icons/eye-off.svg +++ b/apps/desktop-gpui/assets/icons/eye-off.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/fast-forward.svg b/apps/desktop-gpui/assets/icons/fast-forward.svg index 693d5ea3077..6b50c8cfc77 100644 --- a/apps/desktop-gpui/assets/icons/fast-forward.svg +++ b/apps/desktop-gpui/assets/icons/fast-forward.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/film-cut.svg b/apps/desktop-gpui/assets/icons/film-cut.svg index 6759fce2981..de47097044c 100644 --- a/apps/desktop-gpui/assets/icons/film-cut.svg +++ b/apps/desktop-gpui/assets/icons/film-cut.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/film.svg b/apps/desktop-gpui/assets/icons/film.svg index 11e108a222e..65734cd3fc8 100644 --- a/apps/desktop-gpui/assets/icons/film.svg +++ b/apps/desktop-gpui/assets/icons/film.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/flip-horizontal-2.svg b/apps/desktop-gpui/assets/icons/flip-horizontal-2.svg index 3b3e8a29b0c..900491983cf 100644 --- a/apps/desktop-gpui/assets/icons/flip-horizontal-2.svg +++ b/apps/desktop-gpui/assets/icons/flip-horizontal-2.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/flip-vertical-2.svg b/apps/desktop-gpui/assets/icons/flip-vertical-2.svg index 91f5c75bcdf..5a59cf2900b 100644 --- a/apps/desktop-gpui/assets/icons/flip-vertical-2.svg +++ b/apps/desktop-gpui/assets/icons/flip-vertical-2.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/folder-down.svg b/apps/desktop-gpui/assets/icons/folder-down.svg index a687b74658e..3bdcf5168b2 100644 --- a/apps/desktop-gpui/assets/icons/folder-down.svg +++ b/apps/desktop-gpui/assets/icons/folder-down.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/folder-open.svg b/apps/desktop-gpui/assets/icons/folder-open.svg index 19de366a8c1..095c1db06fe 100644 --- a/apps/desktop-gpui/assets/icons/folder-open.svg +++ b/apps/desktop-gpui/assets/icons/folder-open.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/folder.svg b/apps/desktop-gpui/assets/icons/folder.svg index b73f75ea592..44a8c42183c 100644 --- a/apps/desktop-gpui/assets/icons/folder.svg +++ b/apps/desktop-gpui/assets/icons/folder.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/gauge.svg b/apps/desktop-gpui/assets/icons/gauge.svg index 6cefa058d77..008200b2fbc 100644 --- a/apps/desktop-gpui/assets/icons/gauge.svg +++ b/apps/desktop-gpui/assets/icons/gauge.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/gear.svg b/apps/desktop-gpui/assets/icons/gear.svg index 152b22dd61c..207986cf213 100644 --- a/apps/desktop-gpui/assets/icons/gear.svg +++ b/apps/desktop-gpui/assets/icons/gear.svg @@ -1,12 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/gem.svg b/apps/desktop-gpui/assets/icons/gem.svg index a69fafa6503..20d88f7f1dd 100644 --- a/apps/desktop-gpui/assets/icons/gem.svg +++ b/apps/desktop-gpui/assets/icons/gem.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/gift.svg b/apps/desktop-gpui/assets/icons/gift.svg index 04d155c78e8..87d7e74424e 100644 --- a/apps/desktop-gpui/assets/icons/gift.svg +++ b/apps/desktop-gpui/assets/icons/gift.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/globe.svg b/apps/desktop-gpui/assets/icons/globe.svg index 57b0dfc7687..a353868a7af 100644 --- a/apps/desktop-gpui/assets/icons/globe.svg +++ b/apps/desktop-gpui/assets/icons/globe.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/grid.svg b/apps/desktop-gpui/assets/icons/grid.svg index 6705f76583b..c26ac7cf1ab 100644 --- a/apps/desktop-gpui/assets/icons/grid.svg +++ b/apps/desktop-gpui/assets/icons/grid.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/grip-vertical.svg b/apps/desktop-gpui/assets/icons/grip-vertical.svg index ee6447f7389..b560d1cdb87 100644 --- a/apps/desktop-gpui/assets/icons/grip-vertical.svg +++ b/apps/desktop-gpui/assets/icons/grip-vertical.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/grip.svg b/apps/desktop-gpui/assets/icons/grip.svg index e0f4b552eee..af0f0c5c9aa 100644 --- a/apps/desktop-gpui/assets/icons/grip.svg +++ b/apps/desktop-gpui/assets/icons/grip.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/hotkeys.svg b/apps/desktop-gpui/assets/icons/hotkeys.svg index 020521815d0..3215fbead02 100644 --- a/apps/desktop-gpui/assets/icons/hotkeys.svg +++ b/apps/desktop-gpui/assets/icons/hotkeys.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/image-off.svg b/apps/desktop-gpui/assets/icons/image-off.svg index f996e25b93e..70720208a50 100644 --- a/apps/desktop-gpui/assets/icons/image-off.svg +++ b/apps/desktop-gpui/assets/icons/image-off.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/image.svg b/apps/desktop-gpui/assets/icons/image.svg index 0b527cf6c4a..2984f761199 100644 --- a/apps/desktop-gpui/assets/icons/image.svg +++ b/apps/desktop-gpui/assets/icons/image.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/import.svg b/apps/desktop-gpui/assets/icons/import.svg index 120882b1c2f..6df07401856 100644 --- a/apps/desktop-gpui/assets/icons/import.svg +++ b/apps/desktop-gpui/assets/icons/import.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/info.svg b/apps/desktop-gpui/assets/icons/info.svg index 90b18769f91..ebe07ceb4e6 100644 --- a/apps/desktop-gpui/assets/icons/info.svg +++ b/apps/desktop-gpui/assets/icons/info.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/instant.svg b/apps/desktop-gpui/assets/icons/instant.svg index 052084d59c2..a220e90160a 100644 --- a/apps/desktop-gpui/assets/icons/instant.svg +++ b/apps/desktop-gpui/assets/icons/instant.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/keyboard.svg b/apps/desktop-gpui/assets/icons/keyboard.svg index bf93f642536..3215fbead02 100644 --- a/apps/desktop-gpui/assets/icons/keyboard.svg +++ b/apps/desktop-gpui/assets/icons/keyboard.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/laptop.svg b/apps/desktop-gpui/assets/icons/laptop.svg index bda54fdc290..e8e2891ca09 100644 --- a/apps/desktop-gpui/assets/icons/laptop.svg +++ b/apps/desktop-gpui/assets/icons/laptop.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/layers.svg b/apps/desktop-gpui/assets/icons/layers.svg index d1ff99acb3f..01af2f2d993 100644 --- a/apps/desktop-gpui/assets/icons/layers.svg +++ b/apps/desktop-gpui/assets/icons/layers.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/layout.svg b/apps/desktop-gpui/assets/icons/layout.svg index ee155d7a535..5ab1707e8ea 100644 --- a/apps/desktop-gpui/assets/icons/layout.svg +++ b/apps/desktop-gpui/assets/icons/layout.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/link.svg b/apps/desktop-gpui/assets/icons/link.svg index 9d699e586d2..aac5dbd2dfa 100644 --- a/apps/desktop-gpui/assets/icons/link.svg +++ b/apps/desktop-gpui/assets/icons/link.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/lock.svg b/apps/desktop-gpui/assets/icons/lock.svg index 0be852f44c8..532dbc00e39 100644 --- a/apps/desktop-gpui/assets/icons/lock.svg +++ b/apps/desktop-gpui/assets/icons/lock.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/maximize.svg b/apps/desktop-gpui/assets/icons/maximize.svg index fbfc7b3356a..165dc57b121 100644 --- a/apps/desktop-gpui/assets/icons/maximize.svg +++ b/apps/desktop-gpui/assets/icons/maximize.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/message-bubble.svg b/apps/desktop-gpui/assets/icons/message-bubble.svg index ad11fd562e6..9968337a60a 100644 --- a/apps/desktop-gpui/assets/icons/message-bubble.svg +++ b/apps/desktop-gpui/assets/icons/message-bubble.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/message-square-plus.svg b/apps/desktop-gpui/assets/icons/message-square-plus.svg index 664a7c964cc..bdf930e9630 100644 --- a/apps/desktop-gpui/assets/icons/message-square-plus.svg +++ b/apps/desktop-gpui/assets/icons/message-square-plus.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/mic-off.svg b/apps/desktop-gpui/assets/icons/mic-off.svg index 50f0449340d..53b83fcc210 100644 --- a/apps/desktop-gpui/assets/icons/mic-off.svg +++ b/apps/desktop-gpui/assets/icons/mic-off.svg @@ -1,8 +1 @@ - - - - - - - - + diff --git a/apps/desktop-gpui/assets/icons/microphone.svg b/apps/desktop-gpui/assets/icons/microphone.svg index 4c3f63582eb..b2be0470cb9 100644 --- a/apps/desktop-gpui/assets/icons/microphone.svg +++ b/apps/desktop-gpui/assets/icons/microphone.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/minus.svg b/apps/desktop-gpui/assets/icons/minus.svg index 39316d686e7..81821ff6c20 100644 --- a/apps/desktop-gpui/assets/icons/minus.svg +++ b/apps/desktop-gpui/assets/icons/minus.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/monitor-outline.svg b/apps/desktop-gpui/assets/icons/monitor-outline.svg index 449433dffd9..a1afdf7dc63 100644 --- a/apps/desktop-gpui/assets/icons/monitor-outline.svg +++ b/apps/desktop-gpui/assets/icons/monitor-outline.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/monitor.svg b/apps/desktop-gpui/assets/icons/monitor.svg index 3687f88b1ac..a1afdf7dc63 100644 --- a/apps/desktop-gpui/assets/icons/monitor.svg +++ b/apps/desktop-gpui/assets/icons/monitor.svg @@ -1,45 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/moon.svg b/apps/desktop-gpui/assets/icons/moon.svg index d94c9b18397..39eb45b54c6 100644 --- a/apps/desktop-gpui/assets/icons/moon.svg +++ b/apps/desktop-gpui/assets/icons/moon.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/more-horizontal.svg b/apps/desktop-gpui/assets/icons/more-horizontal.svg index a2d9eaab1b9..42dbe36511a 100644 --- a/apps/desktop-gpui/assets/icons/more-horizontal.svg +++ b/apps/desktop-gpui/assets/icons/more-horizontal.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/more-vertical.svg b/apps/desktop-gpui/assets/icons/more-vertical.svg index f045c01828f..6be710cf354 100644 --- a/apps/desktop-gpui/assets/icons/more-vertical.svg +++ b/apps/desktop-gpui/assets/icons/more-vertical.svg @@ -1,5 +1 @@ - - - - - + diff --git a/apps/desktop-gpui/assets/icons/mouse-pointer-2.svg b/apps/desktop-gpui/assets/icons/mouse-pointer-2.svg index ef415444efb..2fac1e4613f 100644 --- a/apps/desktop-gpui/assets/icons/mouse-pointer-2.svg +++ b/apps/desktop-gpui/assets/icons/mouse-pointer-2.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/mouse-pointer-ban.svg b/apps/desktop-gpui/assets/icons/mouse-pointer-ban.svg index d3e6a7126e1..1a37b4287d5 100644 --- a/apps/desktop-gpui/assets/icons/mouse-pointer-ban.svg +++ b/apps/desktop-gpui/assets/icons/mouse-pointer-ban.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/mouse-pointer-click.svg b/apps/desktop-gpui/assets/icons/mouse-pointer-click.svg index 0d67529c872..9a88eb450e3 100644 --- a/apps/desktop-gpui/assets/icons/mouse-pointer-click.svg +++ b/apps/desktop-gpui/assets/icons/mouse-pointer-click.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/move-left.svg b/apps/desktop-gpui/assets/icons/move-left.svg index 6fc9e50d283..f4f82a0be71 100644 --- a/apps/desktop-gpui/assets/icons/move-left.svg +++ b/apps/desktop-gpui/assets/icons/move-left.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/move-right.svg b/apps/desktop-gpui/assets/icons/move-right.svg index 5091f2c4474..2f87dccdb72 100644 --- a/apps/desktop-gpui/assets/icons/move-right.svg +++ b/apps/desktop-gpui/assets/icons/move-right.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/move.svg b/apps/desktop-gpui/assets/icons/move.svg index 8be4f8abd04..c0e274113cf 100644 --- a/apps/desktop-gpui/assets/icons/move.svg +++ b/apps/desktop-gpui/assets/icons/move.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/music.svg b/apps/desktop-gpui/assets/icons/music.svg index 8a73bccacc6..7d3fc8355ad 100644 --- a/apps/desktop-gpui/assets/icons/music.svg +++ b/apps/desktop-gpui/assets/icons/music.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/next.svg b/apps/desktop-gpui/assets/icons/next.svg index a79924ad48f..000d7e455af 100644 --- a/apps/desktop-gpui/assets/icons/next.svg +++ b/apps/desktop-gpui/assets/icons/next.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/padding.svg b/apps/desktop-gpui/assets/icons/padding.svg index 25536d903d9..9d10f59c627 100644 --- a/apps/desktop-gpui/assets/icons/padding.svg +++ b/apps/desktop-gpui/assets/icons/padding.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/palette.svg b/apps/desktop-gpui/assets/icons/palette.svg index 2d537dc92e6..e3bd0dcc895 100644 --- a/apps/desktop-gpui/assets/icons/palette.svg +++ b/apps/desktop-gpui/assets/icons/palette.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/panel-right.svg b/apps/desktop-gpui/assets/icons/panel-right.svg index c438d4d1a2e..ce11b9988f4 100644 --- a/apps/desktop-gpui/assets/icons/panel-right.svg +++ b/apps/desktop-gpui/assets/icons/panel-right.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/pause-circle.svg b/apps/desktop-gpui/assets/icons/pause-circle.svg index 9c1412c604b..9c3a044cedd 100644 --- a/apps/desktop-gpui/assets/icons/pause-circle.svg +++ b/apps/desktop-gpui/assets/icons/pause-circle.svg @@ -1,5 +1 @@ - - - - - + diff --git a/apps/desktop-gpui/assets/icons/pause.svg b/apps/desktop-gpui/assets/icons/pause.svg index 774e98e7baa..510d15f3f64 100644 --- a/apps/desktop-gpui/assets/icons/pause.svg +++ b/apps/desktop-gpui/assets/icons/pause.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/pencil.svg b/apps/desktop-gpui/assets/icons/pencil.svg index 946f7f1989f..d600e9846bf 100644 --- a/apps/desktop-gpui/assets/icons/pencil.svg +++ b/apps/desktop-gpui/assets/icons/pencil.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/person-standing.svg b/apps/desktop-gpui/assets/icons/person-standing.svg index da2fc8edaea..88e622f74aa 100644 --- a/apps/desktop-gpui/assets/icons/person-standing.svg +++ b/apps/desktop-gpui/assets/icons/person-standing.svg @@ -1,6 +1 @@ - - - - - - + diff --git a/apps/desktop-gpui/assets/icons/play-circle.svg b/apps/desktop-gpui/assets/icons/play-circle.svg index be76bcd810e..5544188466b 100644 --- a/apps/desktop-gpui/assets/icons/play-circle.svg +++ b/apps/desktop-gpui/assets/icons/play-circle.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/play.svg b/apps/desktop-gpui/assets/icons/play.svg index 1ec83983813..0ae4539388a 100644 --- a/apps/desktop-gpui/assets/icons/play.svg +++ b/apps/desktop-gpui/assets/icons/play.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/plus.svg b/apps/desktop-gpui/assets/icons/plus.svg index e4c60061be1..aeea445280c 100644 --- a/apps/desktop-gpui/assets/icons/plus.svg +++ b/apps/desktop-gpui/assets/icons/plus.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/presets.svg b/apps/desktop-gpui/assets/icons/presets.svg index 97a644ca648..0bb69cfc008 100644 --- a/apps/desktop-gpui/assets/icons/presets.svg +++ b/apps/desktop-gpui/assets/icons/presets.svg @@ -1,6 +1 @@ - - - - - - + diff --git a/apps/desktop-gpui/assets/icons/prev.svg b/apps/desktop-gpui/assets/icons/prev.svg index 0415b4a3da7..b7226727c8e 100644 --- a/apps/desktop-gpui/assets/icons/prev.svg +++ b/apps/desktop-gpui/assets/icons/prev.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/rabbit.svg b/apps/desktop-gpui/assets/icons/rabbit.svg index 4ac2515376b..d9a94f99938 100644 --- a/apps/desktop-gpui/assets/icons/rabbit.svg +++ b/apps/desktop-gpui/assets/icons/rabbit.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/ratio.svg b/apps/desktop-gpui/assets/icons/ratio.svg index b1b4d63ffb5..77f39bc5997 100644 --- a/apps/desktop-gpui/assets/icons/ratio.svg +++ b/apps/desktop-gpui/assets/icons/ratio.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/record-fill.svg b/apps/desktop-gpui/assets/icons/record-fill.svg index 70099d01dcb..e9d11afb88f 100644 --- a/apps/desktop-gpui/assets/icons/record-fill.svg +++ b/apps/desktop-gpui/assets/icons/record-fill.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/rectangle-horizontal.svg b/apps/desktop-gpui/assets/icons/rectangle-horizontal.svg index 76789fd515c..9c0a1f30798 100644 --- a/apps/desktop-gpui/assets/icons/rectangle-horizontal.svg +++ b/apps/desktop-gpui/assets/icons/rectangle-horizontal.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/redo.svg b/apps/desktop-gpui/assets/icons/redo.svg index f0fce87c946..7ddf1a4d797 100644 --- a/apps/desktop-gpui/assets/icons/redo.svg +++ b/apps/desktop-gpui/assets/icons/redo.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/refresh-cw.svg b/apps/desktop-gpui/assets/icons/refresh-cw.svg index 28811cc1a36..f5accf2ede5 100644 --- a/apps/desktop-gpui/assets/icons/refresh-cw.svg +++ b/apps/desktop-gpui/assets/icons/refresh-cw.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/reset.svg b/apps/desktop-gpui/assets/icons/reset.svg new file mode 100644 index 00000000000..82e3104c434 --- /dev/null +++ b/apps/desktop-gpui/assets/icons/reset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/desktop-gpui/assets/icons/restart.svg b/apps/desktop-gpui/assets/icons/restart.svg index 49b9015377d..f5accf2ede5 100644 --- a/apps/desktop-gpui/assets/icons/restart.svg +++ b/apps/desktop-gpui/assets/icons/restart.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/rotate-3d.svg b/apps/desktop-gpui/assets/icons/rotate-3d.svg index af35ba99e53..27b3aadaadd 100644 --- a/apps/desktop-gpui/assets/icons/rotate-3d.svg +++ b/apps/desktop-gpui/assets/icons/rotate-3d.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/rotate-ccw.svg b/apps/desktop-gpui/assets/icons/rotate-ccw.svg index fb6e42dc723..6717d49d929 100644 --- a/apps/desktop-gpui/assets/icons/rotate-ccw.svg +++ b/apps/desktop-gpui/assets/icons/rotate-ccw.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/rotate-cw.svg b/apps/desktop-gpui/assets/icons/rotate-cw.svg index ae11d08c3e7..e2d15eb51ba 100644 --- a/apps/desktop-gpui/assets/icons/rotate-cw.svg +++ b/apps/desktop-gpui/assets/icons/rotate-cw.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/save.svg b/apps/desktop-gpui/assets/icons/save.svg index 99e83001bae..514299a39b2 100644 --- a/apps/desktop-gpui/assets/icons/save.svg +++ b/apps/desktop-gpui/assets/icons/save.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/scan-text.svg b/apps/desktop-gpui/assets/icons/scan-text.svg index 8fce79adc47..4733cb62b9d 100644 --- a/apps/desktop-gpui/assets/icons/scan-text.svg +++ b/apps/desktop-gpui/assets/icons/scan-text.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/scissors.svg b/apps/desktop-gpui/assets/icons/scissors.svg index cfe93d78689..73c7f793b0b 100644 --- a/apps/desktop-gpui/assets/icons/scissors.svg +++ b/apps/desktop-gpui/assets/icons/scissors.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/screen.svg b/apps/desktop-gpui/assets/icons/screen.svg index 9b95db12edd..a1afdf7dc63 100644 --- a/apps/desktop-gpui/assets/icons/screen.svg +++ b/apps/desktop-gpui/assets/icons/screen.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/screenshot.svg b/apps/desktop-gpui/assets/icons/screenshot.svg index f5a9956bbdd..57908383ec9 100644 --- a/apps/desktop-gpui/assets/icons/screenshot.svg +++ b/apps/desktop-gpui/assets/icons/screenshot.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/search.svg b/apps/desktop-gpui/assets/icons/search.svg index 1412eddae82..5a1da81620a 100644 --- a/apps/desktop-gpui/assets/icons/search.svg +++ b/apps/desktop-gpui/assets/icons/search.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/settings-2.svg b/apps/desktop-gpui/assets/icons/settings-2.svg index 8fed6fe1542..58f89fa4530 100644 --- a/apps/desktop-gpui/assets/icons/settings-2.svg +++ b/apps/desktop-gpui/assets/icons/settings-2.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/settings.svg b/apps/desktop-gpui/assets/icons/settings.svg index 5a7dfe5ad09..207986cf213 100644 --- a/apps/desktop-gpui/assets/icons/settings.svg +++ b/apps/desktop-gpui/assets/icons/settings.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/shadow.svg b/apps/desktop-gpui/assets/icons/shadow.svg index 88b1e77a278..76ca28b8b21 100644 --- a/apps/desktop-gpui/assets/icons/shadow.svg +++ b/apps/desktop-gpui/assets/icons/shadow.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/shield.svg b/apps/desktop-gpui/assets/icons/shield.svg index 7cbaa4b7b0c..1b82f634717 100644 --- a/apps/desktop-gpui/assets/icons/shield.svg +++ b/apps/desktop-gpui/assets/icons/shield.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/shuffle.svg b/apps/desktop-gpui/assets/icons/shuffle.svg index e9b189f5ff1..6fb46d0229d 100644 --- a/apps/desktop-gpui/assets/icons/shuffle.svg +++ b/apps/desktop-gpui/assets/icons/shuffle.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/sliders-horizontal.svg b/apps/desktop-gpui/assets/icons/sliders-horizontal.svg index 8b3daeefeb7..cdbc3af9743 100644 --- a/apps/desktop-gpui/assets/icons/sliders-horizontal.svg +++ b/apps/desktop-gpui/assets/icons/sliders-horizontal.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/sparkles.svg b/apps/desktop-gpui/assets/icons/sparkles.svg index 89b31d25120..8410b258322 100644 --- a/apps/desktop-gpui/assets/icons/sparkles.svg +++ b/apps/desktop-gpui/assets/icons/sparkles.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/square-play.svg b/apps/desktop-gpui/assets/icons/square-play.svg index 20d65f1a162..60f7f9e2b87 100644 --- a/apps/desktop-gpui/assets/icons/square-play.svg +++ b/apps/desktop-gpui/assets/icons/square-play.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/square.svg b/apps/desktop-gpui/assets/icons/square.svg index 978299fc2c3..5fe5baee08f 100644 --- a/apps/desktop-gpui/assets/icons/square.svg +++ b/apps/desktop-gpui/assets/icons/square.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/stop-circle.svg b/apps/desktop-gpui/assets/icons/stop-circle.svg index 9597148f3ec..969f3e06e5a 100644 --- a/apps/desktop-gpui/assets/icons/stop-circle.svg +++ b/apps/desktop-gpui/assets/icons/stop-circle.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/terminal.svg b/apps/desktop-gpui/assets/icons/terminal.svg index d8b48e4ba8b..9d298e339bc 100644 --- a/apps/desktop-gpui/assets/icons/terminal.svg +++ b/apps/desktop-gpui/assets/icons/terminal.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/timer.svg b/apps/desktop-gpui/assets/icons/timer.svg index 1a8a0a082b7..1c264b28b32 100644 --- a/apps/desktop-gpui/assets/icons/timer.svg +++ b/apps/desktop-gpui/assets/icons/timer.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/trash.svg b/apps/desktop-gpui/assets/icons/trash.svg index fd943094cfc..38b9db37b80 100644 --- a/apps/desktop-gpui/assets/icons/trash.svg +++ b/apps/desktop-gpui/assets/icons/trash.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/triangle-alert.svg b/apps/desktop-gpui/assets/icons/triangle-alert.svg index 588b1b364af..6d5b4bccb55 100644 --- a/apps/desktop-gpui/assets/icons/triangle-alert.svg +++ b/apps/desktop-gpui/assets/icons/triangle-alert.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/type.svg b/apps/desktop-gpui/assets/icons/type.svg index e98c7e9c24b..85bf4e795ef 100644 --- a/apps/desktop-gpui/assets/icons/type.svg +++ b/apps/desktop-gpui/assets/icons/type.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/undo.svg b/apps/desktop-gpui/assets/icons/undo.svg index 9e3504dc47f..fa24e014e8e 100644 --- a/apps/desktop-gpui/assets/icons/undo.svg +++ b/apps/desktop-gpui/assets/icons/undo.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/unplug.svg b/apps/desktop-gpui/assets/icons/unplug.svg index feb42b16bc2..957f04abfa3 100644 --- a/apps/desktop-gpui/assets/icons/unplug.svg +++ b/apps/desktop-gpui/assets/icons/unplug.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/upload-arrow.svg b/apps/desktop-gpui/assets/icons/upload-arrow.svg index f8dd72b3b5c..530410755ad 100644 --- a/apps/desktop-gpui/assets/icons/upload-arrow.svg +++ b/apps/desktop-gpui/assets/icons/upload-arrow.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/user-round.svg b/apps/desktop-gpui/assets/icons/user-round.svg index c0ae694ea79..40aaede02f8 100644 --- a/apps/desktop-gpui/assets/icons/user-round.svg +++ b/apps/desktop-gpui/assets/icons/user-round.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/video.svg b/apps/desktop-gpui/assets/icons/video.svg index 53aa5a112cc..60360d12e99 100644 --- a/apps/desktop-gpui/assets/icons/video.svg +++ b/apps/desktop-gpui/assets/icons/video.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/volume-2.svg b/apps/desktop-gpui/assets/icons/volume-2.svg index c2996a47ab3..8ff5b857449 100644 --- a/apps/desktop-gpui/assets/icons/volume-2.svg +++ b/apps/desktop-gpui/assets/icons/volume-2.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/volume-x.svg b/apps/desktop-gpui/assets/icons/volume-x.svg index cc5d6bf8822..7e03b8c9094 100644 --- a/apps/desktop-gpui/assets/icons/volume-x.svg +++ b/apps/desktop-gpui/assets/icons/volume-x.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/warning-bold.svg b/apps/desktop-gpui/assets/icons/warning-bold.svg index 3060b986f6d..08418f69553 100644 --- a/apps/desktop-gpui/assets/icons/warning-bold.svg +++ b/apps/desktop-gpui/assets/icons/warning-bold.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/webhook.svg b/apps/desktop-gpui/assets/icons/webhook.svg index 5a4ab3103eb..2fd6419e43e 100644 --- a/apps/desktop-gpui/assets/icons/webhook.svg +++ b/apps/desktop-gpui/assets/icons/webhook.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/wind.svg b/apps/desktop-gpui/assets/icons/wind.svg index 1ab2ae86f39..a45c007da08 100644 --- a/apps/desktop-gpui/assets/icons/wind.svg +++ b/apps/desktop-gpui/assets/icons/wind.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/window.svg b/apps/desktop-gpui/assets/icons/window.svg index 8bb0c4fc445..7fe0ee8319d 100644 --- a/apps/desktop-gpui/assets/icons/window.svg +++ b/apps/desktop-gpui/assets/icons/window.svg @@ -1,4 +1 @@ - - - - + diff --git a/apps/desktop-gpui/assets/icons/x-mark.svg b/apps/desktop-gpui/assets/icons/x-mark.svg index 4354dbf7bff..5c46ac682e9 100644 --- a/apps/desktop-gpui/assets/icons/x-mark.svg +++ b/apps/desktop-gpui/assets/icons/x-mark.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/x.svg b/apps/desktop-gpui/assets/icons/x.svg index ebb57ec9bea..5c46ac682e9 100644 --- a/apps/desktop-gpui/assets/icons/x.svg +++ b/apps/desktop-gpui/assets/icons/x.svg @@ -1,3 +1 @@ - - - + diff --git a/apps/desktop-gpui/assets/icons/zap.svg b/apps/desktop-gpui/assets/icons/zap.svg index 4555a4c96f0..a220e90160a 100644 --- a/apps/desktop-gpui/assets/icons/zap.svg +++ b/apps/desktop-gpui/assets/icons/zap.svg @@ -1 +1 @@ - + diff --git a/apps/desktop-gpui/assets/icons/zoom-in.svg b/apps/desktop-gpui/assets/icons/zoom-in.svg index deaf81253f8..d4b3a5fdf14 100644 --- a/apps/desktop-gpui/assets/icons/zoom-in.svg +++ b/apps/desktop-gpui/assets/icons/zoom-in.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/icons/zoom-out.svg b/apps/desktop-gpui/assets/icons/zoom-out.svg index 0dab38198c1..09100c62d1c 100644 --- a/apps/desktop-gpui/assets/icons/zoom-out.svg +++ b/apps/desktop-gpui/assets/icons/zoom-out.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/desktop-gpui/assets/solar/ATTRIBUTION.md b/apps/desktop-gpui/assets/solar/ATTRIBUTION.md new file mode 100644 index 00000000000..05d578b3098 --- /dev/null +++ b/apps/desktop-gpui/assets/solar/ATTRIBUTION.md @@ -0,0 +1,7 @@ +Solar Bold settings and bell icons by 480 Design, from the Solar Icon Set. +Licensed under Creative Commons Attribution 4.0 International (CC BY 4.0): +https://creativecommons.org/licenses/by/4.0/ + +Source: https://github.com/480-Design/Solar-Icon-Set +The SVG paths were extracted from the supplied Theme_System component examples; +the surrounding HTML attributes were removed for GPUI embedding. diff --git a/apps/desktop-gpui/assets/solar/bell-bold.svg b/apps/desktop-gpui/assets/solar/bell-bold.svg new file mode 100644 index 00000000000..1b983af1acb --- /dev/null +++ b/apps/desktop-gpui/assets/solar/bell-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/desktop-gpui/assets/solar/settings-bold.svg b/apps/desktop-gpui/assets/solar/settings-bold.svg new file mode 100644 index 00000000000..64e69212c10 --- /dev/null +++ b/apps/desktop-gpui/assets/solar/settings-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/desktop-gpui/assets/ui/tooltip-pointer.svg b/apps/desktop-gpui/assets/ui/tooltip-pointer.svg new file mode 100644 index 00000000000..db6b4277c21 --- /dev/null +++ b/apps/desktop-gpui/assets/ui/tooltip-pointer.svg @@ -0,0 +1 @@ + diff --git a/apps/desktop-gpui/build.rs b/apps/desktop-gpui/build.rs index b4885b3e50b..14db35d86ea 100644 --- a/apps/desktop-gpui/build.rs +++ b/apps/desktop-gpui/build.rs @@ -1,8 +1,131 @@ #[path = "../../scripts/diagnostic-build.rs"] mod diagnostic_build; +mod token_compiler; + +use std::{collections::BTreeSet, fmt::Write, path::PathBuf}; + +const COLORS: &str = " +surface surface-secondary surface-subtle surface-raised surface-overlay surface-inverse +border border-secondary border-subtle border-softer border-strong border-inverse +text-primary text-default text-secondary text-muted text-positive text-negative +text-danger text-warning text-interactive text-hover text-active +hover-bg active-bg disabled-bg icon icon-active +positive positive-subtle negative negative-subtle warning warning-subtle +indigo indigo-subtle purple purple-subtle +primary primary-hover primary-active primary-disabled primary-disabled-foreground +primary-subtle primary-foreground danger danger-hover danger-disabled +danger-disabled-foreground danger-ring danger-foreground +button-fill button-fill-hover button-fill-active button-fill-foreground button-fill-subtle +ring-primary bullish bearish"; + +const RADII: &[(&str, &str)] = &[ + ("Small", "radius-small"), + ("Compact", "radius-compact"), + ("Default", "radius-default"), + ("Medium", "radius-medium"), + ("Large", "radius-large"), +]; +const SHADOWS: &[(&str, &str)] = &[ + ("One", "shadow-1"), + ("Two", "shadow-2"), + ("Three", "shadow-3"), + ("Dialog", "shadow-dialog"), +]; + +fn rgba(value: [u8; 4]) -> String { + format!( + "gpui::Rgba {{ r: {}f32 / 255., g: {}f32 / 255., b: {}f32 / 255., a: {}f32 / 255. }}", + value[0], value[1], value[2], value[3] + ) +} + +fn compile_tokens() -> Result<(), String> { + use token_compiler::{color, parse, pixels, resolve, shadow}; + + println!("cargo:rerun-if-changed=platform.css"); + let css = std::fs::read_to_string("platform.css") + .map_err(|error| format!("reading platform.css: {error}"))?; + let (root, dark) = parse(&css)?; + let color_names: BTreeSet<&str> = COLORS.split_whitespace().collect(); + let expected: BTreeSet<&str> = color_names + .iter() + .copied() + .chain(RADII.iter().map(|(_, name)| *name)) + .chain(SHADOWS.iter().map(|(_, name)| *name)) + .collect(); + let actual: BTreeSet<&str> = root.keys().map(String::as_str).collect(); + if actual != expected { + return Err(format!( + "platform.css token mismatch: missing {:?}, unknown {:?}", + expected.difference(&actual).collect::>(), + actual.difference(&expected).collect::>() + )); + } + let dark_names: BTreeSet<&str> = dark.keys().map(String::as_str).collect(); + if dark_names != color_names { + return Err(format!( + ".dark token mismatch: missing {:?}, unknown {:?}", + color_names.difference(&dark_names).collect::>(), + dark_names.difference(&color_names).collect::>() + )); + } + let mut output = String::from("#[derive(Debug, Clone, Copy)]\npub struct PlatformColors {\n"); + for name in &color_names { + writeln!(output, "pub {}: gpui::Rgba,", name.replace('-', "_")) + .map_err(|error| error.to_string())?; + } + output.push_str("}\n"); + for (variant, values) in [("light", &root), ("dark", &dark)] { + writeln!( + output, + "pub fn {variant}_colors() -> PlatformColors {{ PlatformColors {{" + ) + .map_err(|error| error.to_string())?; + for name in &color_names { + let resolved = resolve(values, name)?; + let parsed = color(&resolved).map_err(|error| format!("--{name}: {error}"))?; + writeln!(output, "{}: {},", name.replace('-', "_"), rgba(parsed)) + .map_err(|error| error.to_string())?; + } + output.push_str("} }\n"); + } + output.push_str( + "#[derive(Debug, Clone, Copy, PartialEq, Eq)]\npub enum RadiusToken { Small, Compact, Default, Medium, Large }\n", + ); + output.push_str("pub fn radius(token: RadiusToken) -> gpui::Pixels { gpui::px(match token {\n"); + for (variant, name) in RADII { + let value = pixels(root.get(*name).ok_or(format!("missing --{name}"))?)?; + writeln!(output, "RadiusToken::{variant} => {value:?},") + .map_err(|error| error.to_string())?; + } + output.push_str("}) }\n"); + output.push_str( + "#[derive(Debug, Clone, Copy, PartialEq, Eq)]\npub enum ShadowToken { One, Two, Three, Dialog }\n", + ); + output.push_str("pub fn shadow(token: ShadowToken) -> Vec { match token {\n"); + for (variant, name) in SHADOWS { + let layers = shadow(root.get(*name).ok_or(format!("missing --{name}"))?) + .map_err(|error| format!("--{name}: {error}"))?; + writeln!(output, "ShadowToken::{variant} => vec![").map_err(|error| error.to_string())?; + for (dims, shade) in layers { + writeln!( + output, + "gpui::BoxShadow {{ offset: gpui::point(gpui::px({:?}), gpui::px({:?})), blur_radius: gpui::px({:?}), spread_radius: gpui::px({:?}), color: {}.into(), inset: false }},", + dims[0], dims[1], dims[2], dims[3], rgba(shade) + ) + .map_err(|error| error.to_string())?; + } + output.push_str("],\n"); + } + output.push_str("} }\n"); + let out = PathBuf::from(std::env::var_os("OUT_DIR").ok_or("missing OUT_DIR")?); + std::fs::write(out.join("platform_tokens.rs"), output) + .map_err(|error| format!("writing generated tokens: {error}")) +} fn main() { diagnostic_build::emit(); + compile_tokens().expect("invalid platform.css design tokens"); if std::env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") { return; } diff --git a/apps/desktop-gpui/open-windows.ps1 b/apps/desktop-gpui/open-windows.ps1 new file mode 100644 index 00000000000..500f4769749 --- /dev/null +++ b/apps/desktop-gpui/open-windows.ps1 @@ -0,0 +1,111 @@ +<# +.SYNOPSIS +Launches the debug build with every window open, without recording or taking a screenshot. + +.EXAMPLE +./open-windows.ps1 +./open-windows.ps1 -Windows editor,settings -Settings hotkeys +./open-windows.ps1 -Build -Windows all,camera +#> +[CmdletBinding()] +param( + [ValidateSet("all", "main", "settings", "editor", "screenshot-editor", "mode-select", "teleprompter", "onboarding", "camera", "overlay")] + [string[]]$Windows = @("all"), + [string]$Settings = "general", + [string]$Editor = "1", + [string]$Screenshot = "1", + [ValidateSet("display", "window", "area", "camera")] + [string]$Overlay = "display", + [string]$DataDir = "", + [switch]$Build +) + +$ErrorActionPreference = "Stop" +$appDir = $PSScriptRoot +$repoRoot = Resolve-Path (Join-Path $appDir "../..") +$exe = Join-Path $appDir "target/debug/cap-gpui.exe" + +if ($Build) { + Push-Location $appDir + try { + cargo build --bin cap-gpui + if ($LASTEXITCODE -ne 0) { throw "cargo build failed" } + } finally { + Pop-Location + } +} +if (-not (Test-Path $exe)) { throw "No debug build at $exe. Run with -Build." } + +$selected = [System.Collections.Generic.HashSet[string]]::new() +foreach ($name in $Windows) { + if ($name -eq "all") { + "main", "settings", "editor", "screenshot-editor", "mode-select", "teleprompter", "onboarding" | + ForEach-Object { [void]$selected.Add($_) } + } else { + [void]$selected.Add($name) + } +} + +$hooks = [ordered]@{} +if ($selected.Contains("main")) { $hooks["CAP_GPUI_AUTO_SHOW_MAIN"] = "1" } +if ($selected.Contains("settings")) { $hooks["CAP_GPUI_AUTO_SETTINGS"] = $Settings } +if ($selected.Contains("editor")) { $hooks["CAP_GPUI_AUTO_EDITOR"] = $Editor } +if ($selected.Contains("screenshot-editor")) { $hooks["CAP_GPUI_AUTO_SCREENSHOT_EDITOR"] = $Screenshot } +if ($selected.Contains("mode-select")) { $hooks["CAP_GPUI_AUTO_MODE_SELECT"] = "1" } +if ($selected.Contains("teleprompter")) { $hooks["CAP_GPUI_AUTO_TELEPROMPTER"] = "1" } +if ($selected.Contains("onboarding")) { $hooks["CAP_GPUI_AUTO_PERMISSIONS"] = "1" } +if ($selected.Contains("camera")) { $hooks["CAP_GPUI_AUTO_CAMERA"] = "1" } +if ($selected.Contains("overlay")) { $hooks["CAP_GPUI_AUTO_OVERLAY"] = $Overlay } + +$running = Get-Process cap-gpui -ErrorAction SilentlyContinue | + Where-Object { $_.Path -and $_.Path.StartsWith($appDir, [StringComparison]::OrdinalIgnoreCase) } +foreach ($process in $running) { + Write-Host "Stopping running debug build (PID $($process.Id)) so the new launch is not handed to it." + Stop-Process -Id $process.Id + $process.WaitForExit(5000) | Out-Null +} + +$start = New-Object System.Diagnostics.ProcessStartInfo $exe +$start.UseShellExecute = $false +$start.WorkingDirectory = $appDir +$start.Environment["PATH"] = (Join-Path $repoRoot "target/debug") + ";" + $env:PATH +if ($DataDir) { + $data = [IO.Path]::GetFullPath($DataDir) + $start.Environment["CAP_GPUI_APP_DATA_DIR"] = $data + $start.Environment["CAP_GPUI_RECORDINGS_DIR"] = Join-Path $data "recordings" + $start.Environment["CAP_GPUI_LOG_DIR"] = Join-Path $data "logs" +} +foreach ($key in $hooks.Keys) { $start.Environment[$key] = $hooks[$key] } + +$app = [System.Diagnostics.Process]::Start($start) +Write-Host "Launched Cap (PID $($app.Id)) opening: $(($selected | Sort-Object) -join ', ')" + +Add-Type -Namespace CapDev -Name Windows -MemberDefinition @" +public delegate bool EnumProc(System.IntPtr h, System.IntPtr l); +[System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool EnumWindows(EnumProc cb, System.IntPtr l); +[System.Runtime.InteropServices.DllImport("user32.dll")] public static extern uint GetWindowThreadProcessId(System.IntPtr h, out uint pid); +[System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool IsWindowVisible(System.IntPtr h); +[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode)] public static extern int GetWindowText(System.IntPtr h, System.Text.StringBuilder s, int n); +public static System.Collections.Generic.List Titles(uint pid) { + var titles = new System.Collections.Generic.List(); + EnumWindows((h, l) => { + uint owner; GetWindowThreadProcessId(h, out owner); + if (owner != pid || !IsWindowVisible(h)) return true; + var text = new System.Text.StringBuilder(128); GetWindowText(h, text, 128); + if (text.Length > 0) titles.Add(text.ToString()); + return true; + }, System.IntPtr.Zero); + return titles; +} +"@ + +$expected = $selected.Count +$deadline = (Get-Date).AddSeconds(20) +$titles = @() +while ((Get-Date) -lt $deadline -and -not $app.HasExited) { + Start-Sleep -Milliseconds 500 + $titles = @([CapDev.Windows]::Titles([uint32]$app.Id) | Sort-Object -Unique) + if ($titles.Count -ge $expected) { break } +} +if ($app.HasExited) { throw "Cap exited during startup (exit code $($app.ExitCode))." } +Write-Host "Visible windows: $($titles -join ', ')" diff --git a/apps/desktop-gpui/patches/zed-gpui.patch b/apps/desktop-gpui/patches/zed-gpui.patch index 5b79c8bb848..c663c6a0264 100644 --- a/apps/desktop-gpui/patches/zed-gpui.patch +++ b/apps/desktop-gpui/patches/zed-gpui.patch @@ -1215,10 +1215,10 @@ index 1d2fea90b477..c2e070e721fe 100644 #[cfg(not(target_os = "macos"))] diff --git a/crates/gpui_wgpu/src/wgpu_renderer.rs b/crates/gpui_wgpu/src/wgpu_renderer.rs -index 587315debfa8..e58084906c1f 100644 +index 82fae99..c0cbc3f 100644 --- a/crates/gpui_wgpu/src/wgpu_renderer.rs +++ b/crates/gpui_wgpu/src/wgpu_renderer.rs -@@ -108,7 +108,7 @@ +@@ -172,7 +172,7 @@ const BACKDROP_MAX_BLURS: usize = 32; struct WgpuResources { device: Arc, queue: Arc, @@ -1227,7 +1227,7 @@ index 587315debfa8..e58084906c1f 100644 pipelines: WgpuPipelines, bind_group_layouts: WgpuBindGroupLayouts, atlas_sampler: wgpu::Sampler, -@@ -449,7 +449,7 @@ +@@ -561,7 +561,7 @@ impl WgpuRenderer { let resources = WgpuResources { device, queue, @@ -1236,7 +1236,7 @@ index 587315debfa8..e58084906c1f 100644 pipelines, bind_group_layouts, atlas_sampler, -@@ -982,9 +982,9 @@ +@@ -1168,9 +1168,9 @@ impl WgpuRenderer { texture.destroy(); } @@ -1249,7 +1249,7 @@ index 587315debfa8..e58084906c1f 100644 // Invalidate intermediate textures - they will be lazily recreated // in draw() after we confirm the surface is healthy. This avoids -@@ -1040,9 +1040,9 @@ +@@ -1578,9 +1578,9 @@ impl WgpuRenderer { let Some(resources) = self.resources.as_mut() else { return; }; @@ -1262,9 +1262,9 @@ index 587315debfa8..e58084906c1f 100644 resources.pipelines = Self::create_pipelines( &resources.device, &resources.bind_group_layouts, -@@ -1118,24 +1118,30 @@ - - self.atlas.before_frame(); +@@ -1668,24 +1668,30 @@ impl WgpuRenderer { + self.blur_free_frames = 0; + } - let frame = match self.resources().surface.get_current_texture() { + let frame = match self @@ -1300,7 +1300,7 @@ index 587315debfa8..e58084906c1f 100644 return false; } wgpu::CurrentSurfaceTexture::Timeout | wgpu::CurrentSurfaceTexture::Occluded => { -@@ -1687,6 +1693,15 @@ +@@ -2261,6 +2267,15 @@ impl WgpuRenderer { }) } @@ -1316,7 +1316,7 @@ index 587315debfa8..e58084906c1f 100644 /// Mark the surface as unconfigured so rendering is skipped until a new /// surface is provided via [`replace_surface`](Self::replace_surface). /// -@@ -1745,7 +1760,7 @@ +@@ -2319,7 +2334,7 @@ impl WgpuRenderer { .as_mut() .expect("GPU resources not available"); surface.configure(&res.device, &self.surface_config); diff --git a/apps/desktop-gpui/patches/zed-linux.patch b/apps/desktop-gpui/patches/zed-linux.patch index 8229cb96232..62ce894e4b3 100644 --- a/apps/desktop-gpui/patches/zed-linux.patch +++ b/apps/desktop-gpui/patches/zed-linux.patch @@ -1885,23 +1885,12 @@ new file mode 100644 diff --git a/crates/gpui_wgpu/src/wgpu_renderer.rs b/crates/gpui_wgpu/src/wgpu_renderer.rs --- a/crates/gpui_wgpu/src/wgpu_renderer.rs +++ b/crates/gpui_wgpu/src/wgpu_renderer.rs -@@ -1,3 +1,4 @@ +@@ -0,0 +1 @@ +use crate::surface_frame::SurfaceFrame; - use crate::{CompositorGpuHint, WgpuAtlas, WgpuContext}; - use bytemuck::{Pod, Zeroable}; - use gpui::{ -@@ -1118,24 +1119,15 @@ - - self.atlas.before_frame(); - +@@ -1671 +1672 @@ - let frame = match self + let (frame, suboptimal) = match self - .resources() - .surface - .as_ref() - .expect("Configured surface missing") - .get_current_texture() - { +@@ -1678,11 +1679,2 @@ - wgpu::CurrentSurfaceTexture::Success(frame) => frame, - wgpu::CurrentSurfaceTexture::Suboptimal(frame) => { - // Textures must be destroyed before the surface can be reconfigured. @@ -1915,32 +1904,17 @@ diff --git a/crates/gpui_wgpu/src/wgpu_renderer.rs b/crates/gpui_wgpu/src/wgpu_r - } + wgpu::CurrentSurfaceTexture::Success(frame) => (SurfaceFrame::new(frame), false), + wgpu::CurrentSurfaceTexture::Suboptimal(frame) => (SurfaceFrame::new(frame), true), - wgpu::CurrentSurfaceTexture::Lost | wgpu::CurrentSurfaceTexture::Outdated => { - let surface_config = self.surface_config.clone(); - let resources = self.resources_mut(); -@@ -1158,7 +1150,7 @@ - self.ensure_intermediate_textures(); - - let frame_view = frame +@@ -1711 +1703 @@ - .texture + .texture() - .create_view(&wgpu::TextureViewDescriptor::default()); - - let gamma_params = GammaParams { -@@ -1330,8 +1322,7 @@ - "instance buffer size grew too large: {}", - self.instance_buffer_capacity - ); +@@ -1806 +1798 @@ +- self.process_backdrop_blur(&mut encoder, &frame.texture, blur, blur_index); ++ self.process_backdrop_blur(&mut encoder, frame.texture(), blur, blur_index); +@@ -1907,2 +1899 @@ - frame.present(); - return true; + return self.present_frame(frame, suboptimal); - } - self.grow_instance_buffer(); - continue; -@@ -1340,9 +1331,22 @@ - self.resources() - .queue - .submit(std::iter::once(encoder.finish())); +@@ -1917,3 +1908,16 @@ - frame.present(); - return true; - } @@ -1960,6 +1934,3 @@ diff --git a/crates/gpui_wgpu/src/wgpu_renderer.rs b/crates/gpui_wgpu/src/wgpu_r + } + } + true - } - - fn draw_quads( diff --git a/apps/desktop-gpui/platform.css b/apps/desktop-gpui/platform.css new file mode 100644 index 00000000000..a3d51f55e53 --- /dev/null +++ b/apps/desktop-gpui/platform.css @@ -0,0 +1,187 @@ +:root { + /* Surfaces */ + --surface: #ffffff; + --surface-secondary: #fafafa; + --surface-subtle: #fafafa; + --surface-raised: #f0f0f0; + --surface-overlay: color-mix(in srgb, #000000 50%, transparent); + --surface-inverse: #222222; + + /* Borders */ + --border: #e5e5e5; + --border-secondary: var(--border); + --border-subtle: #f0f0f0; + --border-softer: #f5f5f5; + --border-strong: #c2c2c2; + --border-inverse: #222222; + + /* Text */ + --text-primary: #222222; + --text-default: #404040; + --text-secondary: #646465; + --text-muted: #c2c2c2; + --text-positive: var(--positive); + --text-negative: var(--negative); + --text-danger: var(--danger); + --text-warning: #ff6900; + /* Text on interactive items (buttons, tabs, links). Keep these values in + step with --icon / --icon-active: normal text = normal icon colour, + hover/active text = active icon colour. They are separate tokens on + purpose, never point one at the other. */ + --text-interactive: #646465; + --text-hover: #404040; + --text-active: #404040; + + /* Interaction states — hover / selected fill, pressed fill, disabled fill. */ + --hover-bg: #f0f0f0; + --active-bg: #e5e5e5; + --disabled-bg: #e5e5e5; + + /* Icons — normal and hovered/pressed/selected */ + --icon: #646465; + --icon-active: #404040; + + /* Status — gains / losses, success / failure. Shared with the main platform. */ + --positive: #089981; + --positive-subtle: #dcf5f0; + --negative: #f7525f; + --negative-subtle: #ffe2e2; + --warning: #ff6900; + --warning-subtle: #ffedd4; + --indigo: #615fff; + --indigo-subtle: #e0e7ff; + --purple: #ad46ff; + --purple-subtle: #f3e8ff; + + /* Actions */ + --primary: #0182fb; + --primary-hover: color-mix(in srgb, var(--primary) 80%, transparent); + --primary-active: #006bd6; + --primary-disabled: color-mix(in srgb, var(--primary) 30%, var(--surface)); + --primary-disabled-foreground: color-mix( + in srgb, + var(--primary) 65%, + var(--surface) + ); + --primary-subtle: color-mix(in srgb, var(--primary) 12%, var(--surface)); + --primary-foreground: #ffffff; + --danger: #f7525f; + --danger-hover: #e5404d; + --danger-disabled: #ffc9c9; + --danger-disabled-foreground: #ffa2a2; + --danger-ring: #ffc9c9; + --danger-foreground: #ffffff; + + /* Buttons — neutral default button */ + --button-fill: #333333; + --button-fill-hover: #404040; + --button-fill-active: #222222; + --button-fill-foreground: #ffffff; + --button-fill-subtle: #f5f5f5; + + /* Focus */ + --ring-primary: var(--primary); + + /* Radius */ + --radius-default: 8px; + --radius-medium: 12px; + --radius-small: 4px; + --radius-large: 999px; + --radius-compact: 6px; + + /* Shadows */ + --shadow-1: + 0 0 1px 0 color-mix(in srgb, #000000 20%, transparent), + 0 1px 2px 0 color-mix(in srgb, #000000 5%, transparent), + 0 1px 1px 0 color-mix(in srgb, #000000 1%, transparent); + --shadow-2: 0 1px 6px 0 color-mix(in srgb, #000000 10%, transparent); + --shadow-3: 0 2.75px 5.5px 0 color-mix(in srgb, #000000 10%, transparent); + --shadow-dialog: + 0 4px 6px -4px color-mix(in srgb, #101828 10%, transparent), + 0 10px 15px -3px color-mix(in srgb, #000000 10%, transparent); + + /* Chart */ + --bullish: var(--positive); + --bearish: var(--negative); +} + +.dark { + /* Surfaces */ + --surface: #1f1f1f; + --surface-secondary: #222222; + --surface-subtle: #2b2b2b; + --surface-raised: #333333; + --surface-overlay: color-mix(in srgb, #000000 60%, transparent); + --surface-inverse: #ffffff; + + /* Borders */ + --border: #333333; + --border-secondary: var(--border); + --border-subtle: #333333; + --border-softer: #2b2b2b; + --border-strong: #404040; + --border-inverse: #ffffff; + + /* Text */ + --text-primary: #f5f5f5; + --text-default: #f0f0f0; + --text-secondary: #c2c2c2; + --text-muted: #808080; + --text-positive: var(--positive); + --text-negative: var(--negative); + --text-danger: #ffa2a2; + --text-warning: #ffb86a; + --text-interactive: #c2c2c2; + --text-hover: #f0f0f0; + --text-active: #f0f0f0; + + /* Interaction states */ + --hover-bg: #333333; + --active-bg: #404040; + --disabled-bg: #404040; + + /* Icons */ + --icon: #c2c2c2; + --icon-active: #f0f0f0; + + /* Status — gains / losses, success / failure. Shared with the main platform. */ + --positive: #089981; + --positive-subtle: #193c37; + --negative: #f7525f; + --negative-subtle: #532b2e; + --warning: #ff6900; + --warning-subtle: #7e2a0c; + --indigo: #615fff; + --indigo-subtle: #312c85; + --purple: #ad46ff; + --purple-subtle: #59168b; + + /* Actions */ + --primary: #0182fb; + --primary-hover: color-mix(in srgb, var(--primary) 80%, transparent); + --primary-active: #006bd6; + --primary-disabled: color-mix(in srgb, var(--primary) 35%, var(--surface)); + --primary-disabled-foreground: color-mix(in srgb, var(--primary) 65%, white); + --primary-subtle: color-mix(in srgb, var(--primary) 22%, var(--surface)); + --primary-foreground: #ffffff; + --danger: #f7525f; + --danger-hover: #f96a75; + --danger-disabled: #6b3135; + --danger-disabled-foreground: #d0646c; + --danger-ring: #c10007; + --danger-foreground: #ffffff; + + /* Buttons — neutral default button */ + --button-fill: #f5f5f5; + --button-fill-hover: #e0e0e0; + --button-fill-active: #d4d4d4; + --button-fill-foreground: #404040; + --button-fill-subtle: #222222; + + /* Focus */ + --ring-primary: var(--primary); + + /* Chart */ + --bullish: var(--positive); + --bearish: var(--negative); +} diff --git a/apps/desktop-gpui/rust-toolchain.toml b/apps/desktop-gpui/rust-toolchain.toml index 97b41dac9af..099ed62f9ef 100644 --- a/apps/desktop-gpui/rust-toolchain.toml +++ b/apps/desktop-gpui/rust-toolchain.toml @@ -1,6 +1,3 @@ -# The root repo pins 1.88.0 for the Tauri app; gpui's dependency tree needs -# newer (smol_str 0.3.6 / cosmic-text 0.19 declare rust-version 1.89). The -# nearest toolchain file wins, so this only affects apps/desktop-gpui. [toolchain] -channel = "stable" +channel = "1.99.0" components = ["rustfmt", "clippy"] diff --git a/apps/desktop-gpui/scripts/migrate-theme-tokens.ts b/apps/desktop-gpui/scripts/migrate-theme-tokens.ts new file mode 100644 index 00000000000..8001d00d2e2 --- /dev/null +++ b/apps/desktop-gpui/scripts/migrate-theme-tokens.ts @@ -0,0 +1,137 @@ +import { readdir, readFile, writeFile } from "node:fs/promises"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; + +const source = fileURLToPath(new URL("../src/", import.meta.url)); +const legacy: Record = { + gray_1: "surface", + gray_2: "surface_secondary", + gray_3: "surface_subtle", + gray_4: "hover_bg", + gray_5: "active_bg", + gray_6: "border", + gray_7: "border_strong", + gray_8: "border_strong", + gray_9: "text_muted", + gray_10: "text_secondary", + gray_11: "text_secondary", + gray_12: "text_primary", + gray_200_legacy: "surface_subtle", + gray_300_legacy: "border", + gray_400_legacy: "border_strong", + gray_500_legacy: "text_primary", + blue_3: "primary_subtle", + blue_4: "primary_subtle", + blue_5: "primary_subtle", + blue_6: "primary_subtle", + blue_8: "primary_hover", + blue_9: "primary", + blue_10: "primary_hover", + blue_11: "text_interactive", + blue_12: "text_interactive", + blue_100: "primary_subtle", + blue_500: "primary", + red_2: "negative_subtle", + red_3: "negative_subtle", + red_4: "negative_subtle", + red_9: "danger", + red_10: "danger_hover", + red_11: "text_danger", + red_300: "danger", + amber_3: "warning_subtle", + amber_6: "warning", + amber_11: "text_warning", +}; +const editorChrome: Record = { + window: "surface", + card: "surface_raised", + card_2: "surface_secondary", + line: "border_subtle", + line_strong: "border", + text_1: "text_primary", + text_2: "text_secondary", + text_3: "text_muted", + ctl: "surface_subtle", + ctl_hover: "hover_bg", + ctl_active: "active_bg", + accent: "primary", + accent_2: "primary_hover", +}; + +async function rustFiles(directory: string): Promise { + const entries = await readdir(directory, { withFileTypes: true }); + const nested = await Promise.all( + entries.map(async (entry) => { + const path = join(directory, entry.name); + if (entry.isDirectory()) return rustFiles(path); + return entry.isFile() && + entry.name.endsWith(".rs") && + entry.name !== "theme.rs" + ? [path] + : []; + }), + ); + return nested.flat(); +} + +function radius(value: number): string { + if (value <= 4) return "Small"; + if (value <= 6.5) return "Compact"; + if (value <= 9) return "Default"; + if (value <= 24) return "Medium"; + return "Large"; +} + +const files = await rustFiles(source); +const check = process.argv.includes("--check"); +let legacyCount = 0; +let radiusCount = 0; +const changed: string[] = []; +for (const file of files) { + const input = await readFile(file, "utf8"); + const output = input + .split("\n") + .map((line) => { + if (line.trimStart().startsWith("//") || line.trimStart().startsWith("*")) + return line; + let next = line.replace( + /\btheme\.(gray_[\w]+|blue_[\w]+|red_[\w]+|amber_[\w]+)/g, + (_full, field: string) => { + const token = legacy[field]; + if (!token) throw new Error(`Unmapped ${field} in ${file}`); + legacyCount++; + return `theme.${token}`; + }, + ); + next = next.replace( + /\btheme\.editor\.([a-z_0-9]+)/g, + (full, field: string) => { + const token = editorChrome[field]; + if (!token) return full; + legacyCount++; + return `theme.${token}`; + }, + ); + next = next.replace( + /(\.rounded(?:_(?:t|b|l|r|tl|tr|bl|br))?)\(px\((\d+(?:\.\d*)?)\)\)/g, + (_full, method: string, value: string) => { + radiusCount++; + return `${method}(crate::theme::radius(crate::theme::RadiusToken::${radius(Number(value))}))`; + }, + ); + next = next.replace(/\.rounded_full\(\)/g, () => { + radiusCount++; + return ".rounded(crate::theme::radius(crate::theme::RadiusToken::Large))"; + }); + return next; + }) + .join("\n"); + if (output === input) continue; + changed.push(file); + if (!check) await writeFile(file, output); +} +if (check && changed.length) + throw new Error(`Unmigrated files: ${changed.join(", ")}`); +console.log( + `${legacyCount} legacy fields and ${radiusCount} literal radii ${check ? "remaining" : "rewritten"} in ${changed.length} files`, +); diff --git a/apps/desktop-gpui/scripts/sync-hugeicons.ts b/apps/desktop-gpui/scripts/sync-hugeicons.ts new file mode 100644 index 00000000000..ceab22ce20d --- /dev/null +++ b/apps/desktop-gpui/scripts/sync-hugeicons.ts @@ -0,0 +1,156 @@ +import { readdir, readFile, writeFile } from "node:fs/promises"; +import { fileURLToPath } from "node:url"; +import * as icons from "@hugeicons/core-free-icons"; + +const directory = fileURLToPath(new URL("../assets/icons/", import.meta.url)); +const preserved = new Set([ + "logo-full.svg", + "logo-full-dark.svg", + "google-drive.svg", + "caption-close-windows.svg", + "caption-maximize-windows.svg", + "caption-minimize-windows.svg", + "caption-restore-windows.svg", + "traffic-close.svg", +]); + +const aliases: Record = { + "align-center": "TextAlignCenterIcon", + "align-left": "TextAlignLeftIcon", + "align-right": "TextAlignRightIcon", + "app-window-mac": "AppWindowMacIcon", + "app-window": "AppWindowIcon", + area: "CursorRectangleSelection01Icon", + "arrow-left-right": "ArrowLeftRightIcon", + "arrow-left-to-line": "ArrowLeftToLineIcon", + "arrow-right-to-line": "ArrowRightToLineIcon", + arrows: "FlipHorizontalIcon", + "audio-on": "VolumeHighIcon", + "bg-blur": "BlurIcon", + "box-select": "CursorRectangleSelection01Icon", + captions: "SubtitleIcon", + "caret-down": "ArrowDown01Icon", + "circle-check": "CheckmarkCircle01Icon", + "circle-help": "HelpCircleIcon", + "circle-plus": "AddCircleIcon", + "circle-x": "CancelCircleIcon", + clapperboard: "ClapperboardIcon", + "columns-2": "LayoutTwoColumnIcon", + corners: "SquareRoundCornerIcon", + cursor: "Cursor01Icon", + "ease-curve": "EaseCurveControlPointsIcon", + enlarge: "ArrowExpandIcon", + "eye-off": "ViewOffIcon", + "fast-forward": "Forward01Icon", + "film-cut": "ClapperboardIcon", + "flip-horizontal-2": "FlipHorizontalIcon", + "flip-vertical-2": "FlipVerticalIcon", + "folder-down": "FolderDownloadIcon", + "folder-open": "FolderOpenIcon", + gear: "Settings01Icon", + "grip-vertical": "DragDropVerticalIcon", + hotkeys: "KeyboardIcon", + "image-off": "ImageNotFound01Icon", + instant: "ZapIcon", + layout: "Layout01Icon", + "message-bubble": "BubbleChatIcon", + "message-square-plus": "MessageAdd01Icon", + "mic-off": "MicOff01Icon", + microphone: "Mic01Icon", + "monitor-outline": "MonitorIcon", + "more-horizontal": "MoreHorizontalIcon", + "more-vertical": "MoreVerticalIcon", + "mouse-pointer-2": "Cursor02Icon", + "mouse-pointer-ban": "CursorDisabled01Icon", + "mouse-pointer-click": "MousePointerClickIcon", + next: "NextIcon", + "panel-right": "SidebarRightIcon", + padding: "SquareSquareIcon", + "pause-circle": "PauseCircleIcon", + "person-standing": "PersonStandingIcon", + "play-circle": "PlayCircleIcon", + presets: "WandSparklesIcon", + prev: "PreviousIcon", + "record-fill": "RecordIcon", + "rectangle-horizontal": "RectangleHorizontalIcon", + "refresh-cw": "RefreshIcon", + restart: "RefreshIcon", + "rotate-3d": "Rotate360Icon", + "rotate-ccw": "RotateLeft01Icon", + "rotate-cw": "RotateRight01Icon", + "scan-text": "ScanTextIcon", + screen: "MonitorIcon", + screenshot: "ScissorRectangleIcon", + "settings-2": "Settings02Icon", + shadow: "SquareStackIcon", + "sliders-horizontal": "Settings03Icon", + "square-play": "PlaySquareIcon", + "stop-circle": "StopCircleIcon", + "triangle-alert": "Alert02Icon", + "upload-arrow": "Upload01Icon", + "user-round": "UserRoundIcon", + "volume-2": "VolumeHighIcon", + "volume-x": "VolumeOffIcon", + "warning-bold": "Alert01Icon", + window: "AppWindowIcon", + "x-mark": "Cancel01Icon", + x: "Cancel01Icon", + "zoom-in": "ZoomInIcon", + "zoom-out": "ZoomOutIcon", +}; + +type IconNode = [string, Record, ...IconNode[][]]; + +function xml(node: IconNode): string { + const [tag, attributes, children] = node; + const props = Object.entries(attributes) + .filter(([name]) => name !== "key") + .map(([name, value]) => { + const attribute = name.replace( + /[A-Z]/g, + (letter) => `-${letter.toLowerCase()}`, + ); + return ` ${attribute}="${value.replaceAll("&", "&").replaceAll('"', """)}"`; + }) + .join(""); + return children?.length + ? `<${tag}${props}>${children.map(xml).join("")}` + : `<${tag}${props}/>`; +} + +const filenames = (await readdir(directory)) + .filter((name) => name.endsWith(".svg") && !preserved.has(name)) + .sort(); +const resolved = filenames.map((filename) => { + const stem = filename.slice(0, -4); + const guessed = `${stem.replace(/(^|-)([a-z0-9])/g, (_, _separator, letter: string) => letter.toUpperCase())}Icon`; + const name = aliases[stem] ?? guessed; + const icon = (icons as Record)[name]; + return { filename, name, icon }; +}); +const missing = resolved.filter(({ icon }) => !Array.isArray(icon)); +if (missing.length) { + throw new Error( + `Unmapped Hugeicons: ${missing.map(({ filename, name }) => `${filename} -> ${name}`).join(", ")}`, + ); +} + +const check = process.argv.includes("--check"); +const dryRun = process.argv.includes("--dry-run"); +const mismatches: string[] = []; +for (const { filename, icon } of resolved) { + const content = `${icon.map(xml).join("")}\n`; + const path = fileURLToPath( + new URL(`../assets/icons/${filename}`, import.meta.url), + ); + if (check) { + if ((await readFile(path, "utf8")) !== content) mismatches.push(filename); + } else if (!dryRun) { + await writeFile(path, content); + } +} +if (mismatches.length) + throw new Error(`Outdated Hugeicons: ${mismatches.join(", ")}`); +console.log( + `${resolved.length} official free Stroke Rounded icons ${check ? "verified" : dryRun ? "mapped" : "generated"}`, +); diff --git a/apps/desktop-gpui/src/app_windows.rs b/apps/desktop-gpui/src/app_windows.rs index ae2ecce7976..3f00065641e 100644 --- a/apps/desktop-gpui/src/app_windows.rs +++ b/apps/desktop-gpui/src/app_windows.rs @@ -1210,7 +1210,7 @@ pub fn open_settings(page: Page, cx: &mut App) { // deactivates. kind: WindowKind::Normal, focus: true, - show: true, + show: !cfg!(target_os = "macos"), // `.resizable(true).maximized(false)`, and `min_inner_size`. is_resizable: true, is_minimizable: true, @@ -1284,6 +1284,7 @@ pub fn open_settings(page: Page, cx: &mut App) { } handle .update(cx, |_, window, cx| { + crate::theme::apply_native(window, cx); // The unit-3 macOS 26 display-link repair, once the window is // actually on screen. platform::kick_display_link(window); @@ -1291,6 +1292,11 @@ pub fn open_settings(page: Page, cx: &mut App) { window.refresh(); }) .ok(); + if cfg!(target_os = "macos") + && let Some(native) = &native + { + platform::show_native(native); + } }) .detach(); @@ -1372,14 +1378,26 @@ pub fn open_onboarding(cx: &mut App) { WindowOptions { window_bounds: Some(WindowBounds::Windowed(bounds)), display_id, + #[cfg(target_os = "windows")] + titlebar: Some(gpui::TitlebarOptions { + title: Some("Welcome to Cap".into()), + appears_transparent: true, + ..Default::default() + }), + #[cfg(not(target_os = "windows"))] titlebar: None, + app_owns_titlebar_drag: true, kind: WindowKind::Normal, focus: true, - show: true, + show: !cfg!(target_os = "macos"), is_resizable: false, is_minimizable: true, window_min_size: Some(bounds.size), - window_background: gpui::WindowBackgroundAppearance::Transparent, + window_background: if cfg!(target_os = "windows") { + gpui::WindowBackgroundAppearance::Opaque + } else { + gpui::WindowBackgroundAppearance::Transparent + }, ..Default::default() }, |window, cx| { @@ -1405,9 +1423,18 @@ pub fn open_onboarding(cx: &mut App) { }) .ok() .flatten(); - cx.spawn(async move |_| { + cx.spawn(async move |cx| { if let Some(native) = &native { - let _ = platform::install_window_material(native, 16.); + let _ = platform::install_window_material(native, 12.); + cx.update(|cx| { + handle + .update(cx, |_, window, cx| { + crate::theme::apply_native(window, cx); + cx.notify(); + window.refresh(); + }) + .ok(); + }); platform::show_native(native); } }) @@ -1666,8 +1693,14 @@ pub fn open_teleprompter(cx: &mut App) { bounds, )), // `transparent: true`, `shadow: true`: the shell paints a tint and - // the material shows through. - window_background: gpui::WindowBackgroundAppearance::Transparent, + // the material shows through. Windows has no material and keeps + // its native frame, so a transparent backdrop only leaves see-through + // gaps where DWM's corner radius differs from the painted one. + window_background: if cfg!(target_os = "windows") { + gpui::WindowBackgroundAppearance::Opaque + } else { + gpui::WindowBackgroundAppearance::Transparent + }, ..Default::default() }, |window, cx| cx.new(|cx| TeleprompterWindow::new(window, cx)), @@ -5037,10 +5070,20 @@ fn load_editor_project_candidate( preparing_joins.push(joined); } cx.spawn(async move |cx| { + let startup = std::time::Instant::now(); let finalized = match finalization { Some(finalization) => finalization.wait().await, None => Ok(()), }; + tracing::info!(elapsed_ms = startup.elapsed().as_secs_f64() * 1000.0, "editor finalization wait complete"); + let preflight = if finalized.is_ok() && handle.update(cx, |_, _, _| ()).is_ok() { + let preflight_path = path.clone(); + Some(cx.background_executor().spawn(async move { + editor_window::preflight(&preflight_path) + })) + } else { + None + }; let mut completed_audio = None; let mut live_handoff = None; for joined in &preparing_joins { @@ -5088,6 +5131,7 @@ fn load_editor_project_candidate( .preparing_cleanup .prune_completed() }); + tracing::info!(elapsed_ms = startup.elapsed().as_secs_f64() * 1000.0, "editor preparing ownership settled"); if let Err(message) = finalized { handle .update(cx, |view, window, cx| view.set_error(message, window, cx)) @@ -5097,11 +5141,9 @@ fn load_editor_project_candidate( if handle.update(cx, |_, _, _| ()).is_err() { return; } - let preflight_path = path.clone(); - let summary = cx - .background_executor() - .spawn(async move { editor_window::preflight(&preflight_path) }) - .await; + let Some(preflight) = preflight else { return }; + let summary = preflight.await; + tracing::info!(elapsed_ms = startup.elapsed().as_secs_f64() * 1000.0, "editor media preflight complete"); let summary = match summary { Ok(summary) => summary, @@ -5205,7 +5247,7 @@ fn load_editor_project_candidate( } }; - tracing::info!(path = %path.display(), "editor instance ready"); + tracing::info!(path = %path.display(), elapsed_ms = startup.elapsed().as_secs_f64() * 1000.0, "editor instance ready"); let (total, config) = { let config = instance.project_config.1.borrow().clone(); let total = config @@ -5240,6 +5282,7 @@ fn load_editor_project_candidate( instance.dispose().await; return; } + tracing::info!(elapsed_ms = startup.elapsed().as_secs_f64() * 1000.0, "editor state published"); // The pump: convert on the background executor (un-padding plus the // BGRA swap is a few megabytes per frame), deliver on the main one. diff --git a/apps/desktop-gpui/src/assets.rs b/apps/desktop-gpui/src/assets.rs index 73e89942082..9755341d9f9 100644 --- a/apps/desktop-gpui/src/assets.rs +++ b/apps/desktop-gpui/src/assets.rs @@ -20,23 +20,23 @@ macro_rules! assets { }; } -/// Exactly the three faces the webview loads -- `unplugin-fonts` is configured -/// for `weights: [400, 500, 700]` (`packages/ui-solid/vite.js:31-33`) and -/// nothing else. Deliberately *not* four: there is no SemiBold here because -/// there is none over there, so a Tailwind `font-semibold` (600) finds no 600 -/// face and CSS font-matching resolves it up to 700. Embedding a real 600 would -/// let this app render a weight the original cannot, which is how the two -/// drift apart. const FONTS: &[(&str, &[u8])] = assets!("fonts": - "Geist.ttf", - "Geist-Medium.ttf", - "Geist-Bold.ttf", + "Inter.ttf", + "FacultyGlyphic-Regular.ttf", ); -/// Mostly Cap's own icon set, lifted from `packages/ui-solid/icons`. gpui -/// rasterises an SVG and keeps only its alpha, tinting the result with the -/// element's text colour, so these must be single-colour glyphs -- a full-colour -/// illustration would come out as a filled silhouette. +const UI_ASSETS: &[(&str, &[u8])] = assets!("ui": + "tooltip-pointer.svg", +); + +const SOLAR_ICONS: &[(&str, &[u8])] = assets!("solar": + "settings-bold.svg", + "bell-bold.svg", +); + +/// The generic glyphs are generated from the MIT-licensed Hugeicons free +/// Stroke Rounded package. GPUI uses each SVG's alpha as a tintable glyph; +/// brand art and native window controls are left in their original form. const ICONS: &[(&str, &[u8])] = assets!("icons": "app-window-mac.svg", "app-window.svg", @@ -46,6 +46,7 @@ const ICONS: &[(&str, &[u8])] = assets!("icons": "arrows.svg", "audio-on.svg", "bell.svg", + "brush.svg", "camera.svg", "caret-down.svg", "captions.svg", @@ -71,13 +72,6 @@ const ICONS: &[(&str, &[u8])] = assets!("icons": "folder.svg", "gauge.svg", "gear.svg", - // The config sidebar's field glyphs. Four are Cap's own - // (`packages/ui-solid/icons/{padding,corners,shadow,bg-blur}.svg`); the - // rest of the background section's are Lucide, drawn here from the same - // 24x24 originals `~icons/lucide/*` resolves to -- laptop (MacBook notch), - // wind (motion blur), image-off (the "None" source tile). `shuffle` is the - // gradient editor's own inline randomise glyph (`GradientEditor.tsx:237-253`), - // which is Lucide `shuffle` with its paths spelled out in the TSX. "padding.svg", "corners.svg", "shadow.svg", @@ -101,13 +95,7 @@ const ICONS: &[(&str, &[u8])] = assets!("icons": "minus.svg", "monitor.svg", "more-vertical.svg", - "move-left.svg", "next.svg", - // The timeline's track glyphs. `trackIcons` (`TL/index.tsx:70-80`) and - // `getSceneIcon` (`TL/SceneTrack.tsx:80-96`) are Lucide, and the app has - // no Cap equivalent for most of them, so these nine are the Lucide 24x24 - // originals: type, box-select (an alias of square-dashed since Lucide - // 0.5xx), music, video, rotate-3d, clock, monitor, columns-2, panel-right. "box-select.svg", "columns-2.svg", "monitor-outline.svg", @@ -136,7 +124,6 @@ const ICONS: &[(&str, &[u8])] = assets!("icons": "scan-text.svg", "screen.svg", "screenshot.svg", - // The onboarding permissions surface's header badge. "shield.svg", "stop-circle.svg", "search.svg", @@ -148,10 +135,6 @@ const ICONS: &[(&str, &[u8])] = assets!("icons": "user-round.svg", "window.svg", "x.svg", - // E5b's field glyphs: the rest of the sidebar's Lucide set, drawn from the - // same 24x24 originals `~icons/lucide/*` resolves to. `ease-curve` stands - // in for `~icons/hugeicons/ease-curve-control-points`, which is the one - // non-Lucide glyph in the sidebar (Smooth Movement's header). "align-center.svg", "align-left.svg", "align-right.svg", @@ -167,37 +150,22 @@ const ICONS: &[(&str, &[u8])] = assets!("icons": "ratio.svg", "refresh-cw.svg", "rotate-ccw.svg", + "reset.svg", "volume-x.svg", "gem.svg", "sliders-horizontal.svg", "zap.svg", "zoom-in.svg", "zoom-out.svg", - // The settings Recordings page. `link` is Cap's own - // (`packages/ui-solid/icons/link.svg`, which is Lucide's glyph); `import` - // and `edit` are the Lucide 24x24 originals `~icons/lucide/*` resolves to; - // `record-fill` and `warning-bold` are Phosphor's 256x256 originals, which - // is what `IconPhRecordFill` / `IconPhWarningBold` are in `recordings.tsx`. "link.svg", "import.svg", "edit.svg", "copy.svg", "record-fill.svg", "warning-bold.svg", - // The main window's hand-drawn traffic lights: the x and expand glyphs - // `CaptionControlsMacOS.tsx` inlines, shown while the group is hovered. "traffic-close.svg", - // The remaining settings pages (`settings_pages.rs`). `circle-check` is - // Cap's own (`packages/ui-solid/icons/circle-check.svg`, hotkeys.tsx's - // IconCapCircleCheck); the rest are the Lucide 24x24 originals the pages' - // `~icons/lucide/*` imports resolve to, except `google-drive`, which is - // integrations/index.tsx's inline multi-colour logo flattened to one fill - // (gpui's `svg()` keeps only the alpha). "circle-check.svg", "lock.svg", - // The screenshot editor's annotation toolbar, layers panel and header - // (`AnnotationTools.tsx`, `LayersPanel.tsx`, `Header.tsx`). Lucide 24x24 - // originals, matching the `~icons/lucide/*` imports over there. "pencil.svg", "arrow-up-right.svg", "more-horizontal.svg", @@ -244,6 +212,8 @@ impl Assets { fn all() -> impl Iterator { FONTS .iter() + .chain(UI_ASSETS.iter()) + .chain(SOLAR_ICONS.iter()) .chain(ICONS.iter()) .chain(IMAGES.iter()) .chain(ONBOARDING.iter()) @@ -266,11 +236,6 @@ impl AssetSource for Assets { } impl Assets { - /// Register the embedded Geist faces with the text system. - /// - /// gpui resolves `.font_family("Geist")` against whatever the platform text - /// system knows about, so this has to run before the first window renders or - /// text silently falls back to the system UI font. pub fn load_fonts(&self, cx: &App) -> Result<()> { cx.text_system().add_fonts( FONTS @@ -428,7 +393,13 @@ mod tests { #[test] fn fonts_and_icons_resolve() { - assert!(Assets.load("fonts/Geist.ttf").unwrap().is_some()); + assert!(Assets.load("fonts/Inter.ttf").unwrap().is_some()); + assert!( + Assets + .load("fonts/FacultyGlyphic-Regular.ttf") + .unwrap() + .is_some() + ); assert!(Assets.load("icons/camera.svg").unwrap().is_some()); assert!(Assets.load("icons/nope.svg").unwrap().is_none()); assert!(Assets.load("images/auto.jpg").unwrap().is_some()); @@ -436,4 +407,35 @@ mod tests { assert_eq!(Assets.list("icons").unwrap().len(), ICONS.len()); assert_eq!(Assets.list("images").unwrap().len(), IMAGES.len()); } + + #[test] + fn generated_hugeicons_are_valid_tintable_svgs() { + let preserved = [ + "icons/logo-full.svg", + "icons/logo-full-dark.svg", + "icons/google-drive.svg", + "icons/caption-close-windows.svg", + "icons/caption-maximize-windows.svg", + "icons/caption-minimize-windows.svg", + "icons/caption-restore-windows.svg", + "icons/traffic-close.svg", + // Aeris's drawing-tool brush, kept at its own 28px grid. + "icons/brush.svg", + // Aeris's filled Solar reset glyph. + "icons/reset.svg", + ]; + let mut count = 0; + for (path, bytes) in ICONS { + if preserved.contains(path) { + continue; + } + let svg = std::str::from_utf8(bytes).unwrap(); + assert!(svg.contains("viewBox=\"0 0 24 24\""), "{path}"); + assert!(svg.contains("currentColor"), "{path}"); + resvg::usvg::Tree::from_str(svg, &resvg::usvg::Options::default()) + .unwrap_or_else(|error| panic!("{path}: {error}")); + count += 1; + } + assert_eq!(count, 134); + } } diff --git a/apps/desktop-gpui/src/camera_window.rs b/apps/desktop-gpui/src/camera_window.rs index c76750e37de..e1647b365ea 100644 --- a/apps/desktop-gpui/src/camera_window.rs +++ b/apps/desktop-gpui/src/camera_window.rs @@ -1193,8 +1193,8 @@ impl Render for CameraPreviewView { .size_full() .overflow_hidden() .rounded(px(radius)) - .when(radius > 0., |this| this.bg(theme.gray_1)) - .text_color(theme.gray_12); + .when(radius > 0., |this| this.bg(theme.surface)) + .text_color(theme.text_primary); #[cfg(target_os = "macos")] if let Some(buffer) = self @@ -2130,7 +2130,7 @@ impl CameraWindow { .p(px(8. * scale)) .rounded(px(8. * scale)) .when(pressed, |this| { - this.bg(theme.gray_3).text_color(theme.gray_12) + this.bg(theme.surface_subtle).text_color(theme.text_primary) }) // No `.occlude()` here: an occluding hitbox breaks gpui's hit // test at the button (`hit_test` stops at `BlockMouse`), which @@ -2158,9 +2158,9 @@ impl CameraWindow { .path(icon) .size(px(22. * scale)) .text_color(if pressed { - theme.gray_12.into() + theme.text_primary.into() } else { - gpui::Hsla::from(theme.gray_10) + gpui::Hsla::from(theme.text_secondary) }), ) .when_some(label, |this, label| { @@ -2174,7 +2174,7 @@ impl CameraWindow { .justify_center() .text_size(px(7. * scale)) .font_weight(gpui::FontWeight::BOLD) - .text_color(theme.gray_12) + .text_color(theme.text_primary) .child(label), ) }), @@ -2209,10 +2209,10 @@ impl CameraWindow { .gap(px(4. * scale)) .p(px(4. * scale)) .rounded(px(12. * scale)) - .bg(theme.gray_1) + .bg(theme.surface) .border_1() .border_color(gpui::hsla(0., 0., 1., 0.2)) - .text_color(theme.gray_10) + .text_color(theme.text_secondary) .when(!self.chrome_visible && self.resizing.is_none(), |this| { this.invisible() }) @@ -2339,13 +2339,13 @@ impl CameraWindow { .left(px(5.)) .border_t_4() .border_l_4() - .rounded_tl(px(7.)), + .rounded_tl(crate::theme::radius(crate::theme::RadiusToken::Default)), bracket .top(px(6.)) .left(px(6.)) .border_t_2() .border_l_2() - .rounded_tl(px(6.)), + .rounded_tl(crate::theme::radius(crate::theme::RadiusToken::Compact)), ), ResizeCorner::NorthEast => ( outline @@ -2353,13 +2353,13 @@ impl CameraWindow { .right(px(5.)) .border_t_4() .border_r_4() - .rounded_tr(px(7.)), + .rounded_tr(crate::theme::radius(crate::theme::RadiusToken::Default)), bracket .top(px(6.)) .right(px(6.)) .border_t_2() .border_r_2() - .rounded_tr(px(6.)), + .rounded_tr(crate::theme::radius(crate::theme::RadiusToken::Compact)), ), ResizeCorner::SouthWest => ( outline @@ -2367,13 +2367,13 @@ impl CameraWindow { .left(px(5.)) .border_b_4() .border_l_4() - .rounded_bl(px(7.)), + .rounded_bl(crate::theme::radius(crate::theme::RadiusToken::Default)), bracket .bottom(px(6.)) .left(px(6.)) .border_b_2() .border_l_2() - .rounded_bl(px(6.)), + .rounded_bl(crate::theme::radius(crate::theme::RadiusToken::Compact)), ), ResizeCorner::SouthEast => ( outline @@ -2381,13 +2381,13 @@ impl CameraWindow { .right(px(5.)) .border_b_4() .border_r_4() - .rounded_br(px(7.)), + .rounded_br(crate::theme::radius(crate::theme::RadiusToken::Default)), bracket .bottom(px(6.)) .right(px(6.)) .border_b_2() .border_r_2() - .rounded_br(px(6.)), + .rounded_br(crate::theme::radius(crate::theme::RadiusToken::Compact)), ), }; let glyph = div() @@ -2525,7 +2525,7 @@ impl Render for CameraWindow { .size_full() .flex() .flex_col() - .font_family(crate::theme::UI_FONT) + .font_family(crate::theme::ui_font()) // `body { font-weight: 500 }` (`ui-solid/src/main.css:189-192`). .font_weight(FontWeight::MEDIUM) // One hover region for the whole window -- bubble, toolbar and diff --git a/apps/desktop-gpui/src/controls_window.rs b/apps/desktop-gpui/src/controls_window.rs index acb02cbc8b1..0b4e39a3c8a 100644 --- a/apps/desktop-gpui/src/controls_window.rs +++ b/apps/desktop-gpui/src/controls_window.rs @@ -111,15 +111,14 @@ impl ControlsWindow { .flex() .items_center() .justify_center() - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .when(!disabled, |this| { - this.hover(|style| style.bg(Theme::with_alpha(theme.gray_12, 0.06))) - .active(|style| style.bg(Theme::with_alpha(theme.gray_12, 0.10))) + this.hover(|style| style.bg(theme.hover_bg)) }) .child(svg().path(icon).size(px(20.)).text_color(if disabled { - Theme::with_alpha(theme.gray_11, 0.5) + theme.text_muted } else { - theme.gray_11.into() + theme.icon })) } @@ -159,13 +158,12 @@ impl ControlsWindow { .flex_row() .items_center() .gap(px(4.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .py(px(4.)) .px(px(6.)) - .text_color(theme.red_300) + .text_color(theme.danger) .when(can_stop, |this| { - this.hover(|style| style.bg(Theme::with_alpha(theme.red_300, 0.08))) - .active(|style| style.bg(Theme::with_alpha(theme.red_300, 0.12))) + this.hover(|style| style.bg(theme.hover_bg)) .on_click(cx.listener(|this, _, _, cx| { this.session.update(cx, |session, cx| session.stop(cx)); })) @@ -176,7 +174,7 @@ impl ControlsWindow { .path("icons/stop-circle.svg") .size(px(20.)) .flex_shrink_0() - .text_color(theme.red_300), + .text_color(theme.danger), ) .child( div() @@ -208,12 +206,11 @@ impl ControlsWindow { "icons/microphone.svg" }; let icon_color: gpui::Hsla = if muted { - theme.red_9.into() + theme.danger.into() } else if self.has_microphone { - theme.gray_12.into() + theme.text_primary.into() } else { - // `IconLucideMicOff text-gray-7`. - Theme::with_alpha(theme.gray_12, 0.35) + theme.text_muted.into() }; div() @@ -226,9 +223,8 @@ impl ControlsWindow { .items_center() .justify_center() .when(can_mute, |this| { - this.rounded(px(8.)) - .hover(|style| style.bg(Theme::with_alpha(theme.gray_12, 0.06))) - .active(|style| style.bg(Theme::with_alpha(theme.gray_12, 0.10))) + this.rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) + .hover(|style| style.bg(theme.hover_bg)) .on_click(cx.listener(|this, _, _, cx| { this.session .update(cx, |session, cx| session.toggle_mic_mute(cx)); @@ -243,9 +239,9 @@ impl ControlsWindow { .left(px(4.)) .right(px(4.)) .h(px(2.)) - .rounded_full() + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) .overflow_hidden() - .bg(theme.gray_10) + .bg(theme.text_secondary) .child( div() .absolute() @@ -253,7 +249,7 @@ impl ControlsWindow { .top_0() .bottom_0() .w(gpui::relative(level as f32)) - .bg(theme.blue_9), + .bg(theme.primary), ), ) }) @@ -363,18 +359,12 @@ impl ControlsWindow { .flex_row() .items_stretch() .overflow_hidden() - .rounded(px(16.)) - .bg(theme.gray_1) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(theme.surface) .border_1() - .border_color(theme.gray_5) - .when(paused, |this| this.border_color(theme.amber_6)) - .shadow(vec![gpui::BoxShadow { - color: gpui::hsla(0., 0., 0., 0.1), - offset: gpui::point(px(0.), px(1.)), - blur_radius: px(3.), - spread_radius: px(0.), - inset: false, - }]) + .border_color(theme.border_strong) + .when(paused, |this| this.border_color(theme.warning)) + .shadow(crate::theme::shadow(crate::theme::ShadowToken::Two)) .child( div() .flex() @@ -405,21 +395,20 @@ impl ControlsWindow { busy, ) .when(paused, |this| { - this.bg(theme.amber_3) + this.bg(theme.warning_subtle) .border_1() - .border_color(theme.amber_6) + .border_color(theme.warning) }) .when(pause_pending, |this| this.opacity(0.5)) + .tooltip_show_delay(ui::TOOLTIP_SHOW_DELAY) .tooltip(move |_, cx| { ui::Tooltip::new(&theme, pause_tooltip).view(cx) }) .when(!busy, |this| { - this.active(|style| style.bg(theme.amber_6)).on_click( - cx.listener(|this, _, _, cx| { - this.session - .update(cx, |session, cx| session.toggle_pause(cx)); - }), - ) + this.on_click(cx.listener(|this, _, _, cx| { + this.session + .update(cx, |session, cx| session.toggle_pause(cx)); + })) }), ) .child( @@ -455,11 +444,11 @@ impl ControlsWindow { .flex() .items_center() .justify_center() - .rounded_r(px(15.)) + .rounded_r(crate::theme::radius(crate::theme::RadiusToken::Medium)) .border_l_1() - .border_color(theme.gray_5) + .border_color(theme.border) .p(px(4.)) - .hover(|style| style.bg(Theme::with_alpha(theme.gray_12, 0.04))) + .hover(|style| style.bg(theme.hover_bg)) .on_mouse_down(MouseButton::Left, |_, window, _| { window.start_window_move(); }) @@ -467,7 +456,7 @@ impl ControlsWindow { svg() .path("icons/more-vertical.svg") .size(px(16.)) - .text_color(theme.gray_10), + .text_color(theme.text_secondary), ), ) } @@ -489,7 +478,7 @@ impl Render for ControlsWindow { .flex_col() .justify_end() .p(px(12.)) - .font_family(crate::theme::UI_FONT) + .font_family(crate::theme::ui_font()) // `body { font-weight: 500 }` (`ui-solid/src/main.css:189-192`). .font_weight(FontWeight::MEDIUM) .when_some(issue, |this, issue| { @@ -501,19 +490,19 @@ impl Render for ControlsWindow { .items_start() .gap(px(8.)) .mb(px(8.)) - .rounded(px(12.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .border_1() - .border_color(Theme::with_alpha(self.theme.red_9, 0.4)) - .bg(self.theme.gray_1) + .border_color(Theme::with_alpha(self.theme.danger, 0.4)) + .bg(self.theme.surface) .p(px(8.)) .text_size(px(12.)) - .text_color(self.theme.red_11) + .text_color(self.theme.text_danger) .child( svg() .path("icons/triangle-alert.svg") .size(px(20.)) .flex_shrink_0() - .text_color(self.theme.red_9), + .text_color(self.theme.danger), ) .child(recording_issue_text(issue)), ) diff --git a/apps/desktop-gpui/src/editor_audio.rs b/apps/desktop-gpui/src/editor_audio.rs index 3279b2efe9a..8ebe05922c5 100644 --- a/apps/desktop-gpui/src/editor_audio.rs +++ b/apps/desktop-gpui/src/editor_audio.rs @@ -198,7 +198,7 @@ impl EditorWindow { .child( div() .text_size(px(14.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .child(if is_replace { "Change audio" } else { @@ -209,7 +209,7 @@ impl EditorWindow { .child( div() .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .child(if is_replace { "Pick a different track for this segment" } else { @@ -253,13 +253,13 @@ fn render_library_row( .gap(px(12.)) .px(px(12.)) .py(px(10.)) - .rounded(px(12.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .border_1() - .border_color(Hsla::from(theme.gray_3)) - .bg(Hsla::from(theme.gray_2)) + .border_color(Hsla::from(theme.surface_subtle)) + .bg(Hsla::from(theme.surface_secondary)) .when(!importing, |row| { row.cursor_pointer() - .hover(|this| this.bg(Hsla::from(theme.gray_3))) + .hover(|this| this.bg(Hsla::from(theme.surface_subtle))) .on_click(cx.listener(move |this, _, window, cx| { this.add_library_track(id, name, window, cx); })) @@ -274,13 +274,13 @@ fn render_library_row( div() .text_size(px(13.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child(name), ) .child( div() .text_size(px(11.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .child("Lo-Fi"), ), ) @@ -288,7 +288,7 @@ fn render_library_row( svg() .path("icons/plus.svg") .size(px(16.)) - .text_color(Hsla::from(theme.gray_11)), + .text_color(Hsla::from(theme.text_secondary)), ) .into_any_element() } diff --git a/apps/desktop-gpui/src/editor_canvas.rs b/apps/desktop-gpui/src/editor_canvas.rs index 14618f7bea7..789b8e74da8 100644 --- a/apps/desktop-gpui/src/editor_canvas.rs +++ b/apps/desktop-gpui/src/editor_canvas.rs @@ -1485,9 +1485,9 @@ impl EditorWindow { let box_id = id.clone(); let border = if selected { - Hsla::from(theme.blue_9) + Hsla::from(theme.primary) } else if hovered || dragging { - Hsla::from(theme.blue_6) + Hsla::from(theme.primary_subtle) } else { gpui::transparent_black() }; @@ -1508,7 +1508,7 @@ impl EditorWindow { div() .absolute() .inset_0() - .rounded(px(6.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Compact)) .border_2() .border_color(border), ) @@ -1536,8 +1536,8 @@ impl EditorWindow { .top(px(label_top)) .px(px(6.)) .py(px(2.)) - .rounded(px(4.)) - .bg(Hsla::from(theme.blue_9)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Small)) + .bg(Hsla::from(theme.primary)) .text_size(px(11.)) .font_weight(FontWeight::MEDIUM) .text_color(gpui::white()) @@ -1558,7 +1558,7 @@ impl EditorWindow { .gap(px(8.)) .px(px(12.)) .py(px(6.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .bg(gpui::hsla(0., 0., 0., 0.8)) .text_size(px(12.)) .text_color(gpui::white()) @@ -1568,7 +1568,7 @@ impl EditorWindow { .id(SharedString::from(format!("{id}-edit-zoom"))) .px(px(8.)) .py(px(2.)) - .rounded(px(6.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Compact)) .bg(gpui::hsla(0., 0., 1., 0.15)) .font_weight(FontWeight::SEMIBOLD) .child("Edit zoom") @@ -1634,13 +1634,13 @@ impl EditorWindow { .child( div() .size_full() - .rounded_full() + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) .border_1() .border_color(gpui::white()) .bg(if resizable { - Hsla::from(theme.blue_9) + Hsla::from(theme.primary) } else { - with_alpha(theme.gray_8, 0.6) + with_alpha(theme.border_strong, 0.6) }), ) .on_mouse_down( @@ -2279,7 +2279,7 @@ impl EditorWindow { let size = (f64::from(canvas.0), f64::from(canvas.1)); let corners = image_corners(rect, size, rotation); let show = self.canvas_selection == Some(element) || self.hovered_canvas == Some(element); - let color = Hsla::from(self.theme.blue_9); + let color = Hsla::from(self.theme.primary); let mut layer = div() .id(element.element_id()) .absolute() @@ -2349,7 +2349,7 @@ impl EditorWindow { .left(px(x as f32 - 6.)) .top(px(y as f32 - 6.)) .size(px(12.)) - .rounded_full() + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) .border_1() .border_color(gpui::white()) .bg(color) diff --git a/apps/desktop-gpui/src/editor_clips.rs b/apps/desktop-gpui/src/editor_clips.rs index a69618ab8ef..2740f9b20d9 100644 --- a/apps/desktop-gpui/src/editor_clips.rs +++ b/apps/desktop-gpui/src/editor_clips.rs @@ -393,33 +393,20 @@ impl Drop for ClipsState { } } -/// `hover:bg-red-3 hover:text-red-11` (`ClipsSidebar.tsx:953`): the theme -/// carries only the red steps the settings pages use, so these two are the -/// stock Radix values `theme.css` leaves untouched. fn red_3(theme: &Theme) -> Hsla { - if theme.is_dark() { - gpui::rgb(0x3b1219) - } else { - gpui::rgb(0xfeebec) - } - .into() + theme.negative_subtle.into() } fn red_11(theme: &Theme) -> Hsla { - if theme.is_dark() { - gpui::rgb(0xff9592) - } else { - gpui::rgb(0xce2c31) - } - .into() + theme.text_danger.into() } /// `bg-gray-2 dark:bg-gray-3` -- the card and the drag ghost (`:877, 1228`). fn card_bg(theme: &Theme) -> Hsla { if theme.is_dark() { - theme.gray_3 + theme.surface_subtle } else { - theme.gray_2 + theme.surface_secondary } .into() } @@ -770,11 +757,11 @@ impl EditorWindow { .flex_1() .min_h_0() .overflow_hidden() - .rounded(px(12.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .border_1() .border_color(self.card_line()) .bg(self.panel_bg()) - .shadow(self.theme.editor.card_shadow()) + .shadow(crate::theme::shadow(crate::theme::ShadowToken::One)) .child(self.render_clips_back_header(cx)) .child(self.render_clips_body(cx)), ) @@ -794,20 +781,20 @@ impl EditorWindow { .px(px(12.)) .w_full() .h(px(crate::editor_window::SIDEBAR_TAB_BAR_HEIGHT)) - .rounded_t(px(11.)) + .rounded_t(crate::theme::radius(crate::theme::RadiusToken::Medium)) .border_b_1() - .border_color(Hsla::from(theme.editor.line)) + .border_color(Hsla::from(theme.border_subtle)) .text_size(px(13.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .cursor_pointer() - .hover(move |style| style.bg(Hsla::from(theme.editor.ctl))) + .hover(move |style| style.bg(Hsla::from(theme.surface_subtle))) .child( svg() - .path("icons/move-left.svg") + .path("icons/arrow-left.svg") .size(px(16.)) .flex_shrink_0() - .text_color(Hsla::from(theme.editor.text_2)), + .text_color(Hsla::from(theme.text_secondary)), ) .child("Back to editor") .on_click(cx.listener(|this, _, window, cx| this.close_clips(window, cx))) @@ -904,18 +891,18 @@ impl EditorWindow { div() .text_size(px(14.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child("Clips"), ) .children((recorded_clip_count > 0).then(|| { div() - .rounded(px(6.)) - .bg(Hsla::from(theme.gray_3)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Compact)) + .bg(Hsla::from(theme.surface_subtle)) .px(px(6.)) .py(px(2.)) .text_size(px(10.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .child(recorded_clip_count.to_string()) })), ) @@ -955,27 +942,27 @@ impl EditorWindow { .justify_center() .items_center() .size(px(40.)) - .rounded_full() - .bg(Hsla::from(theme.gray_3)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) + .bg(Hsla::from(theme.surface_subtle)) .child( svg() .path("icons/clapperboard.svg") .size(px(20.)) - .text_color(Hsla::from(theme.gray_9)), + .text_color(Hsla::from(theme.text_muted)), ), ) .child( div() .text_size(px(14.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child("No clips yet"), ) .child( div() .max_w(px(200.)) .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .child("Record or import a clip and it will show up here."), ) } @@ -1047,8 +1034,8 @@ impl EditorWindow { .right_0() .top(px(-4.)) .h(px(2.)) - .rounded_full() - .bg(Hsla::from(theme.blue_9)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) + .bg(Hsla::from(theme.primary)) })) .children(show_bottom_bar.then(|| { div() @@ -1057,8 +1044,8 @@ impl EditorWindow { .right_0() .bottom(px(-4.)) .h(px(2.)) - .rounded_full() - .bg(Hsla::from(theme.blue_9)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) + .bg(Hsla::from(theme.primary)) })) .child( // The card (`:873-879`). @@ -1070,9 +1057,9 @@ impl EditorWindow { .flex_row() .items_center() .gap(px(12.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(theme.gray_4)) + .border_color(Hsla::from(theme.hover_bg)) .p(px(8.)) .bg(card_bg(&theme)) .cursor(if dragging { @@ -1080,7 +1067,7 @@ impl EditorWindow { } else { CursorStyle::OpenHand }) - .hover(move |style| style.border_color(Hsla::from(theme.gray_7))) + .hover(move |style| style.border_color(Hsla::from(theme.border_strong))) .when(is_dragged, |this| this.opacity(0.4)) .child(probe) .on_mouse_down( @@ -1098,9 +1085,9 @@ impl EditorWindow { .overflow_hidden() .w(px(96.)) .h(px(54.)) - .rounded(px(6.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Compact)) .flex_shrink_0() - .bg(Hsla::from(theme.gray_4)) + .bg(Hsla::from(theme.hover_bg)) .child( div() .absolute() @@ -1109,13 +1096,13 @@ impl EditorWindow { .justify_center() .items_center() .bg(if theme.is_dark() { - Hsla::from(theme.gray_4) + Hsla::from(theme.hover_bg) } else { - Hsla::from(theme.gray_3) + Hsla::from(theme.surface_subtle) }) .text_size(px(14.)) .font_weight(FontWeight::SEMIBOLD) - .text_color(Hsla::from(theme.gray_9)) + .text_color(Hsla::from(theme.text_muted)) .child((index + 1).to_string()), ) .children(thumb.map(|image| { @@ -1144,11 +1131,11 @@ impl EditorWindow { .padding_x(px(6.)) .radius(px(4.)) .bg(if theme.is_dark() { - Hsla::from(theme.gray_4) + Hsla::from(theme.hover_bg) } else { - Hsla::from(theme.gray_1) + Hsla::from(theme.surface) }) - .border(Hsla::from(theme.gray_6)) + .border(Hsla::from(theme.border)) .flex(true) .into_any_element(), None => div().into_any_element(), @@ -1159,7 +1146,7 @@ impl EditorWindow { .text_size(px(14.)) .font_weight(FontWeight::MEDIUM) .truncate() - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child(title) .on_mouse_down( MouseButton::Left, @@ -1177,7 +1164,7 @@ impl EditorWindow { .child( div() .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .child(subtitle), ), ) @@ -1196,15 +1183,17 @@ impl EditorWindow { .flex_none() .justify_center() .items_center() - .rounded(px(6.)) + .rounded(crate::theme::radius( + crate::theme::RadiusToken::Compact, + )) .size(px(28.)) .opacity(0.) .group_hover(group.clone(), |style| style.opacity(1.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .hover(move |style| { style - .bg(Hsla::from(theme.gray_5)) - .text_color(Hsla::from(theme.gray_12)) + .bg(Hsla::from(theme.active_bg)) + .text_color(Hsla::from(theme.text_primary)) }) .child(svg().path("icons/edit.svg").size(px(14.))) .on_mouse_down(MouseButton::Left, |_, _, cx| { @@ -1221,11 +1210,13 @@ impl EditorWindow { .flex_none() .justify_center() .items_center() - .rounded(px(6.)) + .rounded(crate::theme::radius( + crate::theme::RadiusToken::Compact, + )) .size(px(28.)) .opacity(0.) .group_hover(group.clone(), |style| style.opacity(1.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .hover(move |style| { style.bg(red_3(&theme)).text_color(red_11(&theme)) }) @@ -1389,7 +1380,7 @@ impl EditorWindow { .gap(px(6.)) .h(px(24.)) .px(px(6.)) - .rounded(px(4.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Small)) .child(div().w(px(12.)).flex_shrink_0()) .child(div().flex_1().min_w_0().truncate().child(label)) }; @@ -1423,15 +1414,17 @@ impl EditorWindow { .flex_col() .min_w(px(180.)) .p(px(4.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(theme.gray_3)) - .bg(Hsla::from(theme.gray_1)) + .border_color(Hsla::from(theme.surface_subtle)) + .bg(Hsla::from(theme.surface)) .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child( row("clips-import-existing", "Existing recording") - .hover(move |style| style.bg(Hsla::from(theme.gray_3))) + .hover(move |style| { + style.bg(Hsla::from(theme.surface_subtle)) + }) .on_click(cx.listener(|this, _, window, cx| { this.clips.import_menu = None; cx.notify(); @@ -1440,7 +1433,9 @@ impl EditorWindow { ) .child( row("clips-import-mp4", "MP4 Video…") - .hover(move |style| style.bg(Hsla::from(theme.gray_3))) + .hover(move |style| { + style.bg(Hsla::from(theme.surface_subtle)) + }) .on_click(cx.listener(|this, _, window, cx| { this.clips.import_menu = None; cx.notify(); @@ -1471,14 +1466,14 @@ impl EditorWindow { .items_center() .px(px(12.)) .py(px(8.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(theme.gray_6)) + .border_color(Hsla::from(theme.border)) .shadow_lg() .bg(card_bg(&theme)) .text_size(px(14.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child(display_name_at(segments, drag.index)) }); diff --git a/apps/desktop-gpui/src/editor_color.rs b/apps/desktop-gpui/src/editor_color.rs index a3948bee9ed..1559ea61a1b 100644 --- a/apps/desktop-gpui/src/editor_color.rs +++ b/apps/desktop-gpui/src/editor_color.rs @@ -548,7 +548,7 @@ impl EditorWindow { .flex_col() .gap(px(6.)) .p(px(6.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) // The card is opaque so the `ring` below shows as a // ring rather than filling it: gpui paints a box shadow // behind the whole element. @@ -557,14 +557,14 @@ impl EditorWindow { // `border-blue-9 ring-1 ring-blue-9`, which on a 1px // border reads as a 2px edge. .border_color(if selected { - Hsla::from(theme.blue_9) + Hsla::from(theme.primary) } else { - Hsla::from(theme.gray_3) + Hsla::from(theme.surface_subtle) }) .when(selected, |this| { // `ring-1 ring-blue-9`: a 1px spread with no blur. this.shadow(vec![gpui::BoxShadow { - color: Hsla::from(theme.blue_9), + color: Hsla::from(theme.primary), offset: gpui::point(px(0.), px(0.)), blur_radius: px(0.), spread_radius: px(1.), @@ -575,7 +575,7 @@ impl EditorWindow { div() .w_full() .h(px(60.75)) - .rounded(px(6.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Compact)) .overflow_hidden() .children(self.preset_image(index).map(|image| { img(image).size_full().object_fit(gpui::ObjectFit::Fill) @@ -586,9 +586,10 @@ impl EditorWindow { .px(px(2.)) .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child(preset.label), ) + .tooltip_show_delay(ui::TOOLTIP_SHOW_DELAY) .tooltip({ let description = SharedString::from(preset.description); move |_window, cx| { diff --git a/apps/desktop-gpui/src/editor_crop.rs b/apps/desktop-gpui/src/editor_crop.rs index 412b8f20c91..ecfd0ae00de 100644 --- a/apps/desktop-gpui/src/editor_crop.rs +++ b/apps/desktop-gpui/src/editor_crop.rs @@ -2346,7 +2346,6 @@ impl EditorWindow { pub(crate) fn render_crop_dialog(&self, cx: &mut Context) -> Option { let state = self.crop.as_ref()?; let theme = self.theme; - let editor = theme.editor; Some( div() @@ -2367,8 +2366,6 @@ impl EditorWindow { })), ) .child( - // `rounded-[1.25rem] overflow-hidden border-0 bg-ed-card - // shadow-ed-pop` (`ui.tsx:272-275`). div() // The modal's own hit shield. Without it the backdrop's // click handler is still "hovered" under the card -- @@ -2384,11 +2381,13 @@ impl EditorWindow { .flex() .flex_col() .max_w(px(CROP_DIALOG_MAX_WIDTH)) - .rounded(px(20.)) - .bg(Hsla::from(editor.card)) - .shadow(editor.pop_shadow()) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .border_1() + .border_color(Hsla::from(theme.border_secondary)) + .bg(Hsla::from(theme.surface)) + .shadow(crate::theme::shadow(crate::theme::ShadowToken::Dialog)) .overflow_hidden() - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child(self.render_crop_header(cx)) .child(self.render_crop_body(state, cx)) .child(self.render_crop_hint()) @@ -2414,7 +2413,7 @@ impl EditorWindow { div() .text_size(px(14.)) .font_weight(FontWeight::SEMIBOLD) - .text_color(Hsla::from(theme.editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child("Crop"), ) .child( @@ -2462,7 +2461,6 @@ impl EditorWindow { /// the three actions. fn render_crop_inspector(&self, state: &CropState, cx: &mut Context) -> AnyElement { let theme = self.theme; - let editor = theme.editor; let real = state.real(); let target = state.target_vec(); let full = real.width >= target.x && real.height >= target.y; @@ -2475,14 +2473,19 @@ impl EditorWindow { div() .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child(text) }; - let hairline = || div().h(px(1.)).flex_none().bg(Hsla::from(editor.line)); + let hairline = || { + div() + .h(px(1.)) + .flex_none() + .bg(Hsla::from(theme.border_subtle)) + }; let row_label = |text: &'static str| { div() .text_size(px(12.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child(text) }; let row = || { @@ -2525,8 +2528,8 @@ impl EditorWindow { .w(px(INSPECTOR_WIDTH)) .gap(px(12.)) .p(px(INSPECTOR_PADDING)) - .rounded(px(12.)) - .bg(Hsla::from(editor.card_2)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(Hsla::from(theme.surface_secondary)) .child(label("Preview")) .child(self.render_crop_preview(px(preview_width), px(preview_height))) .child(hairline()) @@ -2553,7 +2556,7 @@ impl EditorWindow { div() .w(px(8.)) .text_size(px(12.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child("×"), ) .child(self.render_crop_field(CropField::Height)), @@ -2637,7 +2640,7 @@ impl EditorWindow { selected: bool, cx: &mut Context, ) -> AnyElement { - let editor = self.theme.editor; + let theme = self.theme; let label = match ratio { Some((a, b)) => SharedString::from(format!("{a}:{b}")), None => SharedString::from("Free"), @@ -2649,22 +2652,22 @@ impl EditorWindow { .items_center() .justify_center() .h(px(INSPECTOR_CONTROL_HEIGHT)) - .rounded(px(7.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) .cursor_pointer() .when(selected, |chip| { - chip.bg(Hsla::from(crate::theme::rgba_alpha(editor.accent, 0.12))) + chip.bg(Hsla::from(theme.primary_subtle)) .border_1() - .border_color(Hsla::from(editor.accent)) - .text_color(Hsla::from(editor.accent)) + .border_color(Hsla::from(theme.primary)) + .text_color(Hsla::from(theme.primary)) }) .when(!selected, |chip| { - chip.bg(Hsla::from(editor.ctl)) - .text_color(Hsla::from(editor.text_2)) + chip.bg(Hsla::from(theme.surface_subtle)) + .text_color(Hsla::from(theme.text_secondary)) .hover(move |chip| { - chip.bg(Hsla::from(editor.ctl_hover)) - .text_color(Hsla::from(editor.text_1)) + chip.bg(Hsla::from(theme.hover_bg)) + .text_color(Hsla::from(theme.text_primary)) }) }) .child(label) @@ -2682,7 +2685,7 @@ impl EditorWindow { disabled: bool, on_click: impl Fn(&gpui::ClickEvent, &mut Window, &mut gpui::App) + 'static, ) -> AnyElement { - let editor = self.theme.editor; + let theme = self.theme; div() .id(id) .flex() @@ -2690,17 +2693,16 @@ impl EditorWindow { .items_center() .justify_center() .h(px(INSPECTOR_CONTROL_HEIGHT)) - .rounded(px(7.)) - .bg(Hsla::from(editor.ctl)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) + .bg(Hsla::from(theme.surface_subtle)) .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .when(disabled, |button| button.opacity(0.45)) .when(!disabled, |button| { button .cursor_pointer() - .hover(move |button| button.bg(Hsla::from(editor.ctl_hover))) - .active(move |button| button.bg(Hsla::from(editor.ctl_active))) + .hover(move |button| button.bg(Hsla::from(theme.hover_bg))) .on_click(on_click) }) .child(label) @@ -2717,8 +2719,8 @@ impl EditorWindow { .items_center() .justify_center() .p(px(16.)) - .rounded(px(12.)) - .bg(Hsla::from(self.theme.editor.stage)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(Hsla::from(self.theme.surface_secondary)) .child(self.render_crop_area(state)) .on_mouse_down(MouseButton::Left, cx.listener(Self::crop_mouse_down)) // `onContextMenu={(e) => showCropOptionsMenu(e, true)}` -- anchored @@ -2783,7 +2785,7 @@ impl EditorWindow { div() .h(px(18.)) .w(px(44.)) - .rounded_full() + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) .flex() .items_center() .justify_center() @@ -2795,7 +2797,7 @@ impl EditorWindow { gpui::hsla(0., 0., 1., 0.5) }) .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_12)) + .text_color(Hsla::from(theme.text_primary)) .child(SharedString::from(format!("{}:{}", ratio.0, ratio.1))), ) }), @@ -2834,8 +2836,8 @@ impl EditorWindow { .w(px(box_w)) .h(px(box_h)) .border_1() - .border_color(Hsla::from(theme.editor.stage)) - .bg(Hsla::from(theme.editor.stage)) + .border_color(Hsla::from(theme.surface_secondary)) + .bg(Hsla::from(theme.surface_secondary)) .cursor(base_cursor) // The box's painted origin, so a pointer position can be made // container-local. gpui has no `getBoundingClientRect`; this is @@ -2883,10 +2885,10 @@ impl EditorWindow { .flex() .items_center() .justify_center() - .bg(Hsla::from(theme.editor.stage)) + .bg(Hsla::from(theme.surface_secondary)) .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child("Loading frame…") })) .into_any_element() @@ -2899,7 +2901,7 @@ impl EditorWindow { /// The inspector's preview: the live composited frame, which is the same /// `latestFrame` the player draws, `object-contain` inside the box. fn render_crop_preview(&self, w: Pixels, h: Pixels) -> AnyElement { - let editor = self.theme.editor; + let theme = self.theme; let frame_size = self .frame_layout .map(|layout| (layout.output_size[0] as f32, layout.output_size[1] as f32)) @@ -2914,8 +2916,8 @@ impl EditorWindow { .flex_none() .items_center() .justify_center() - .rounded(px(8.)) - .bg(Hsla::from(editor.stage)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) + .bg(Hsla::from(theme.surface_secondary)) .overflow_hidden() .children(match self.latest_frame.clone() { Some(frame) => Some( @@ -2931,7 +2933,7 @@ impl EditorWindow { div() .text_size(px(11.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child("Rendering preview…") .into_any_element(), ), @@ -2941,7 +2943,7 @@ impl EditorWindow { /// The one-line hint under the stage. fn render_crop_hint(&self) -> AnyElement { - let editor = self.theme.editor; + let theme = self.theme; div() .flex() .flex_row() @@ -2952,14 +2954,14 @@ impl EditorWindow { .pt(px(12.)) .pb(px(DIALOG_PADDING_X)) .text_size(px(12.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child("Drag to move · Arrow keys nudge · Hold") .child( div() .px(px(4.)) - .rounded(px(4.)) - .bg(Hsla::from(editor.ctl)) - .text_color(Hsla::from(editor.text_2)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Small)) + .bg(Hsla::from(theme.surface_subtle)) + .text_color(Hsla::from(theme.text_secondary)) .child("⇧"), ) .child("to skip snapping") @@ -2970,9 +2972,11 @@ impl EditorWindow { /// Save on the right. fn render_crop_footer(&self, state: &CropState, cx: &mut Context) -> AnyElement { let theme = self.theme; - let editor = theme.editor; let note: Option<(SharedString, Hsla)> = match (&state.error, &state.style_target) { - (Some(error), _) => Some((SharedString::from(error.clone()), Hsla::from(theme.red_11))), + (Some(error), _) => Some(( + SharedString::from(error.clone()), + Hsla::from(theme.text_danger), + )), (None, Some(target)) => Some(( SharedString::from(if target.opting_in { format!( @@ -2982,7 +2986,7 @@ impl EditorWindow { } else { format!("Editing Style {} only", target.index + 1) }), - Hsla::from(editor.text_2), + Hsla::from(theme.text_secondary), )), (None, None) => None, }; @@ -3001,7 +3005,7 @@ impl EditorWindow { .px(px(DIALOG_PADDING_X)) .flex_none() .border_t_1() - .border_color(Hsla::from(editor.line)) + .border_color(Hsla::from(theme.border_subtle)) .child( div().min_w(px(0.)).text_size(px(12.)).children( note.map(|(text, color)| div().truncate().text_color(color).child(text)), @@ -3028,58 +3032,17 @@ impl EditorWindow { /// The accent-gradient primary, the same one the header's Export uses. fn render_crop_save_button(&self, enabled: bool, cx: &mut Context) -> AnyElement { - let editor = self.theme.editor; - let gradient = |top: gpui::Rgba, bottom: gpui::Rgba| { - gpui::linear_gradient( - 180., - gpui::linear_color_stop(top, 0.), - gpui::linear_color_stop(bottom, 1.), - ) - }; - div() - .id("crop-save") - .relative() - .flex() - .items_center() - .justify_center() - .px(px(14.)) - .h(px(30.)) - .flex_none() - .overflow_hidden() - .rounded(px(8.)) - .bg(gradient(editor.accent_2, editor.accent)) - .text_size(px(13.)) - .font_weight(FontWeight::MEDIUM) - .text_color(gpui::white()) - .when(!enabled, |button| button.opacity(0.45)) - .when(enabled, |button| { - button - .cursor_pointer() - .hover(move |style| { - style.bg(gradient( - crate::theme::mix(editor.accent_2, gpui::rgb(0xffffff), 0.10), - crate::theme::mix(editor.accent, gpui::rgb(0xffffff), 0.10), - )) - }) - .active(move |style| { - style.bg(gradient( - crate::theme::mix(editor.accent_2, gpui::rgb(0x000000), 0.06), - crate::theme::mix(editor.accent, gpui::rgb(0x000000), 0.06), - )) - }) - .on_click(cx.listener(|this, _, window, cx| this.save_crop(window, cx))) - }) - .child( - div() - .absolute() - .top_0() - .left_0() - .right_0() - .h(px(1.)) - .bg(gpui::hsla(0., 0., 1., 0.22)), - ) - .child("Save") - .into_any_element() + ui::Button::plain( + &self.theme, + "crop-save", + ui::ButtonVariant::Blue, + ui::ButtonSize::Sm, + ) + .height(px(30.)) + .label("Save") + .disabled(!enabled) + .on_click(cx.listener(|this, _, window, cx| this.save_crop(window, cx))) + .into_any_element() } fn render_crop_menu(&self, cx: &mut Context) -> Option { @@ -3087,7 +3050,7 @@ impl EditorWindow { let menu = state.menu.as_ref()?; let items = crop_menu_items(state.aspect, self.crop_snap_to_ratio); Some( - ui::Menu::editor(&self.theme, "crop-menu", items, menu) + ui::Menu::new(&self.theme, "crop-menu", items, menu) .on_select(cx.listener(|this, index: &usize, window, cx| { this.choose_crop_menu(*index, window, cx); })) @@ -3313,7 +3276,7 @@ fn editor_handle_glyph(handle: Handle, bounds: CropBounds) -> gpui::Div { .top(px(y as f32 - h / 2.)) .w(px(w)) .h(px(h)) - .rounded(px(3.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Small)) .border_1() .border_color(outline) .bg(gpui::rgb(0xffffff)) diff --git a/apps/desktop-gpui/src/editor_export.rs b/apps/desktop-gpui/src/editor_export.rs index abbf6d98e15..1a9f43b256e 100644 --- a/apps/desktop-gpui/src/editor_export.rs +++ b/apps/desktop-gpui/src/editor_export.rs @@ -19,9 +19,9 @@ use cap_utils::export_resources::{ DiskBudget, ExportResources, estimated_working_bytes, is_resource_stop, }; use gpui::{ - Context, FontWeight, Hsla, InteractiveElement, IntoElement, MouseDownEvent, MouseMoveEvent, - MouseUpEvent, ParentElement, RenderImage, StatefulInteractiveElement, Styled, Window, div, img, - prelude::FluentBuilder, px, svg, + Animation, AnimationExt, Context, FontWeight, Hsla, InteractiveElement, IntoElement, + MouseDownEvent, MouseMoveEvent, MouseUpEvent, ParentElement, RenderImage, + StatefulInteractiveElement, Styled, Window, div, img, prelude::FluentBuilder, px, svg, }; use crate::editor_window::EditorWindow; @@ -441,10 +441,10 @@ fn decode_jpeg_bytes(bytes: &[u8]) -> Option> { impl EditorWindow { pub(crate) fn render_reupload_button(&self, cx: &mut Context) -> impl IntoElement { div() - .rounded(px(8.)) - .bg(Hsla::from(self.theme.blue_3)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) + .bg(Hsla::from(self.theme.primary_subtle)) .border_1() - .border_color(Hsla::from(self.theme.blue_5)) + .border_color(Hsla::from(self.theme.primary_subtle)) .child( ui::EditorButton::plain(&self.theme, "editor-reupload") .left_icon("icons/cloud-upload.svg") @@ -1330,7 +1330,6 @@ impl EditorWindow { cx: &mut Context, ) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; let Some(ui) = self.export.as_ref() else { return div().into_any_element(); }; @@ -1345,7 +1344,7 @@ impl EditorWindow { .pl(px(if cfg!(target_os = "macos") { 92. } else { 12. })) .pr(px(12.)) .border_b_1() - .border_color(Hsla::from(editor.line)) + .border_color(Hsla::from(theme.border_subtle)) .when(cfg!(target_os = "windows"), |header| { header.window_control_area(gpui::WindowControlArea::Drag) }) @@ -1371,21 +1370,21 @@ impl EditorWindow { .h(px(28.)) .pl(px(8.)) .pr(px(10.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .cursor_pointer() .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .hover(move |style| { style - .bg(Hsla::from(editor.ctl)) - .text_color(Hsla::from(editor.text_1)) + .bg(Hsla::from(theme.surface_subtle)) + .text_color(Hsla::from(theme.text_primary)) }) .child( svg() - .path("icons/move-left.svg") + .path("icons/arrow-left.svg") .size(px(14.)) - .text_color(Hsla::from(editor.text_2)), + .text_color(Hsla::from(theme.text_secondary)), ) .child("Back to editor") .on_click(cx.listener(|this, _, window, cx| { @@ -1398,7 +1397,7 @@ impl EditorWindow { .flex_none() .text_size(px(13.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child("Export"), ) .child(div().flex_1()); @@ -1465,7 +1464,6 @@ impl EditorWindow { preview_box: (f32, f32), ) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; let stats = ui.preview_stats.as_ref(); let duration = stats .map(|stats| { @@ -1484,23 +1482,23 @@ impl EditorWindow { div() .w(px(box_w)) .h(px(box_h)) - .rounded(px(10.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .overflow_hidden() - .shadow(crate::theme::preview_shadow()) + .shadow(crate::theme::shadow(crate::theme::ShadowToken::Two)) .child(img(image).object_fit(gpui::ObjectFit::Contain).size_full()) .into_any_element() } None => div() .w(px(box_w)) .h(px(box_h)) - .rounded(px(10.)) - .bg(Hsla::from(editor.ctl)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(Hsla::from(theme.surface_subtle)) .flex() .items_center() .justify_center() .px(px(24.)) .text_size(px(12.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .text_center() .child( ui.preview_error @@ -1515,7 +1513,7 @@ impl EditorWindow { .flex_col() .flex_1() .min_w_0() - .bg(Hsla::from(editor.stage)) + .bg(Hsla::from(theme.surface_secondary)) .pt(px(16.)) .px(px(STAGE_PADDING_X)) .pb(px(20.)) @@ -1530,7 +1528,7 @@ impl EditorWindow { div() .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child("Preview"), ) .child( @@ -1538,6 +1536,7 @@ impl EditorWindow { .id("export-preview-info") .flex() .items_center() + .tooltip_show_delay(crate::ui::TOOLTIP_SHOW_DELAY) .tooltip(move |_window, cx| { crate::ui::Tooltip::new( &theme, @@ -1550,7 +1549,7 @@ impl EditorWindow { svg() .path("icons/info.svg") .size(px(13.)) - .text_color(Hsla::from(editor.text_3)), + .text_color(Hsla::from(theme.text_muted)), ), ), ) @@ -1572,9 +1571,9 @@ impl EditorWindow { .min_w(px(520.)) .flex() .flex_row() - .rounded(px(10.)) - .bg(Hsla::from(editor.card)) - .shadow(editor.card_shadow()) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(Hsla::from(theme.surface_raised)) + .shadow(crate::theme::shadow(crate::theme::ShadowToken::One)) .child(export_stat( &theme, "Duration", @@ -1641,7 +1640,6 @@ impl EditorWindow { fn render_export_sidebar(&self, ui: &ExportUi, cx: &mut Context) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; let transparent = has_transparent_background(&self.project); let link_disabled = transparent || ui.cursor_only; let format_locked = transparent || ui.cursor_only; @@ -1654,9 +1652,9 @@ impl EditorWindow { .h_full() .flex() .flex_col() - .bg(Hsla::from(editor.card)) + .bg(Hsla::from(theme.surface)) .border_l_1() - .border_color(Hsla::from(editor.line)) + .border_color(Hsla::from(theme.border)) .child( div() .id("export-settings") @@ -1675,7 +1673,12 @@ impl EditorWindow { ui.format == ExportFormatKind::Mp4 && !ui.cursor_only, |this| this.child(self.export_quality_field(ui, cx)), ) - .child(div().h(px(1.)).flex_none().bg(Hsla::from(editor.line))) + .child( + div() + .h(px(1.)) + .flex_none() + .bg(Hsla::from(theme.border_subtle)), + ) .child(self.export_advanced(ui, cx)), ) .child( @@ -1684,14 +1687,13 @@ impl EditorWindow { .pt(px(12.)) .pb(px(16.)) .border_t_1() - .border_color(Hsla::from(editor.line)) + .border_color(Hsla::from(theme.border_subtle)) .child(self.export_cta(ui, cx)), ) } fn export_cta(&self, ui: &ExportUi, cx: &mut Context) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; let signed_in = store::auth_snapshot().signed_in(); let (label, icon, primary) = match ui.destination { ExportDestination::File => ("Export to File", Some("icons/folder.svg"), true), @@ -1713,15 +1715,15 @@ impl EditorWindow { let busy = ui.phase.is_busy(); let (bg, hover_bg, text) = if primary { ( - Hsla::from(editor.accent), - Hsla::from(editor.accent_2), + Hsla::from(theme.primary), + Hsla::from(theme.primary_hover), gpui::white(), ) } else { ( - Hsla::from(editor.ctl), - Hsla::from(editor.ctl_hover), - Hsla::from(editor.text_1), + Hsla::from(theme.surface_subtle), + Hsla::from(theme.hover_bg), + Hsla::from(theme.text_primary), ) }; @@ -1735,20 +1737,11 @@ impl EditorWindow { .items_center() .justify_center() .gap(px(8.)) - .rounded(px(10.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .bg(bg) .text_size(px(13.)) .font_weight(FontWeight::MEDIUM) .text_color(text) - .when(primary, |this| { - this.shadow(vec![gpui::BoxShadow { - color: gpui::hsla(0., 0., 1., 0.18), - offset: gpui::point(px(0.), px(1.)), - blur_radius: px(0.), - spread_radius: px(0.), - inset: true, - }]) - }) .when(busy, |this| this.opacity(0.5)) .when(!busy, |this| { this.cursor_pointer() @@ -1773,7 +1766,6 @@ impl EditorWindow { cx: &mut Context, ) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; self.export_section("Destination", "icons/upload-arrow.svg") .child( ui::SegmentedControl::editor( @@ -1823,7 +1815,7 @@ impl EditorWindow { field.child( div() .text_size(px(11.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child(if ui.cursor_only { "Cursor-only exports can only be saved to a file or clipboard." } else { @@ -1840,8 +1832,8 @@ impl EditorWindow { field.child( div() .p(px(12.)) - .rounded(px(10.)) - .bg(Hsla::from(editor.card_2)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(Hsla::from(theme.surface_secondary)) .flex() .flex_col() .gap(px(4.)) @@ -1849,21 +1841,21 @@ impl EditorWindow { div() .text_size(px(12.5)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child("Update your existing link"), ) .child( div() .text_size(px(11.5)) .line_height(px(15.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child("Reupload replaces the video at this link with your latest edit. Everyone with the link will see the updated version."), ) .child( div() .id("reupload-existing-link") .text_size(px(11.5)) - .text_color(Hsla::from(editor.accent)) + .text_color(Hsla::from(theme.primary)) .truncate() .cursor_pointer() .child(link.clone()) @@ -1897,10 +1889,10 @@ impl EditorWindow { .justify_between() .h(px(30.)) .px(px(10.)) - .rounded(px(7.)) - .bg(Hsla::from(editor.ctl)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) + .bg(Hsla::from(theme.surface_subtle)) .cursor_pointer() - .hover(move |style| style.bg(Hsla::from(editor.ctl_hover))) + .hover(move |style| style.bg(Hsla::from(theme.hover_bg))) .on_click(cx.listener(move |this, _, _, cx| { let orgs = store::auth_snapshot().organizations; if orgs.is_empty() { @@ -1924,7 +1916,7 @@ impl EditorWindow { .child( div() .text_size(px(12.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child("Organization"), ) .child( @@ -1934,13 +1926,13 @@ impl EditorWindow { .items_center() .gap(px(4.)) .text_size(px(12.)) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child(label) .child( svg() .path("icons/caret-down.svg") .size(px(14.)) - .text_color(Hsla::from(editor.text_3)), + .text_color(Hsla::from(theme.text_muted)), ), ), ) @@ -2069,7 +2061,6 @@ impl EditorWindow { fn export_quality_field(&self, ui: &ExportUi, cx: &mut Context) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; self.export_section("Quality", "icons/gem.svg") .child( ui::SegmentedControl::editor( @@ -2107,7 +2098,7 @@ impl EditorWindow { .justify_between() .px(px(2.)) .text_size(px(10.5)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child("Smaller file") .child("Larger file"), ) @@ -2122,7 +2113,7 @@ impl EditorWindow { checked: bool, on_click: impl Fn(&gpui::ClickEvent, &mut Window, &mut gpui::App) + 'static, ) -> impl IntoElement { - let editor = self.theme.editor; + let theme = self.theme; div() .flex() .flex_row() @@ -2140,14 +2131,14 @@ impl EditorWindow { div() .text_size(px(12.5)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child(title), ) .child( div() .text_size(px(11.)) .line_height(px(14.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child(description), ), ) @@ -2173,7 +2164,6 @@ impl EditorWindow { fn export_advanced(&self, ui: &ExportUi, cx: &mut Context) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; let show_bpp = ui.format == ExportFormatKind::Mp4 && !ui.cursor_only; div() .flex() @@ -2189,15 +2179,15 @@ impl EditorWindow { .h(px(30.)) .mx(px(-6.)) .px(px(6.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .cursor_pointer() .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .hover(move |style| { style - .bg(Hsla::from(editor.ctl)) - .text_color(Hsla::from(editor.text_1)) + .bg(Hsla::from(theme.surface_subtle)) + .text_color(Hsla::from(theme.text_primary)) }) .on_click(cx.listener(|this, _, _window, cx| { if let Some(ui) = this.export.as_mut() { @@ -2210,7 +2200,7 @@ impl EditorWindow { svg() .path("icons/sliders-horizontal.svg") .size(px(14.)) - .text_color(Hsla::from(editor.text_2)), + .text_color(Hsla::from(theme.text_secondary)), ) .child("Advanced") .child( @@ -2222,7 +2212,7 @@ impl EditorWindow { }) .size(px(14.)) .ml_auto() - .text_color(Hsla::from(editor.text_3)), + .text_color(Hsla::from(theme.text_muted)), ), ) .when(ui.advanced_open, |this| { @@ -2248,8 +2238,8 @@ impl EditorWindow { div() .mt(px(4.)) .p(px(12.)) - .rounded(px(10.)) - .bg(Hsla::from(editor.card_2)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) + .bg(Hsla::from(theme.surface_secondary)) .flex() .flex_row() .items_start() @@ -2260,13 +2250,13 @@ impl EditorWindow { .size(px(14.)) .flex_shrink_0() .mt(px(1.)) - .text_color(Hsla::from(editor.text_2)), + .text_color(Hsla::from(theme.text_secondary)), ) .child( div() .text_size(px(11.5)) .line_height(px(15.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child( "Exports as a transparent MOV. Files are large and best for compositing or editing.", ), @@ -2287,7 +2277,7 @@ impl EditorWindow { .flex_none() .min_w(px(96.)) .text_size(px(13.)) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .child("Bits per pixel"), ) .child( @@ -2308,12 +2298,12 @@ impl EditorWindow { ) .flex() .row_height(px(28.)) - .track(px(3.), Hsla::from(editor.ctl_active)) - .fill(Hsla::from(editor.accent)) + .track(px(3.), Hsla::from(theme.active_bg)) + .fill(Hsla::from(theme.primary)) .thumb( px(14.), - Hsla::from(editor.thumb), - Some(gpui::hsla(0., 0., 0., 0.12)), + Hsla::from(theme.primary_foreground), + Some(Hsla::from(theme.border)), ) .thumb_shadow() .on_drag_start(cx.listener( @@ -2329,7 +2319,7 @@ impl EditorWindow { .min_w(px(36.)) .text_right() .text_size(px(11.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child(format!("{:.2}", ui.bpp())), ), ) @@ -2337,7 +2327,7 @@ impl EditorWindow { this.child( div() .text_size(px(11.)) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child("Using a custom bitrate"), ) }) @@ -2413,7 +2403,6 @@ impl EditorWindow { fn render_export_overlay(&self, ui: &ExportUi, cx: &mut Context) -> impl IntoElement { let theme = self.theme; - let editor = theme.editor; let fraction = if ui.phase == ExportPhase::Uploading { Some(ui.upload_progress.clamp(0.0, 1.0)) } else if ui.total_frames == 0 { @@ -2447,7 +2436,7 @@ impl EditorWindow { ExportPhase::Idle | ExportPhase::ChoosingFile => "", }; - let mut wash: Hsla = editor.window.into(); + let mut wash: Hsla = theme.surface.into(); wash.a = 0.94; div() @@ -2460,20 +2449,23 @@ impl EditorWindow { .justify_center() .gap(px(16.)) .bg(wash) - .text_color(Hsla::from(editor.text_1)) - .child({ + .text_color(Hsla::from(theme.text_primary)) + .when(ui.phase == ExportPhase::Done, |this| { + this.child(export_success_badge(&theme)) + }) + .when(ui.phase != ExportPhase::Done, |this| { let ring = ui::CircularProgress::new( px(80.), px(6.), - Hsla::from(editor.ctl_active), - Hsla::from(editor.accent), + Hsla::from(theme.active_bg), + Hsla::from(theme.primary), ) - .label(Hsla::from(editor.text_1), px(14.)); - if let Some(fraction) = fraction { + .label(Hsla::from(theme.text_primary), px(14.)); + this.child(if let Some(fraction) = fraction { ring.progress(fraction) } else { ring.indeterminate() - } + }) }) .child( div() @@ -2494,7 +2486,7 @@ impl EditorWindow { this.child( div() .text_size(px(12.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child(if ui.reuploading { "Your latest edit is ready at the same link" } else { @@ -2508,7 +2500,7 @@ impl EditorWindow { this.child( div() .text_size(px(12.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .child(format!("{} / {} frames", ui.rendered, ui.total_frames)), ) }) @@ -2517,7 +2509,7 @@ impl EditorWindow { div() .max_w(px(360.)) .text_size(px(12.)) - .text_color(Hsla::from(theme.red_9)) + .text_color(Hsla::from(theme.danger)) .text_center() .child(error), ) @@ -2578,7 +2570,7 @@ impl EditorWindow { div() .max_w(px(320.)) .text_size(px(12.)) - .text_color(Hsla::from(editor.text_2)) + .text_color(Hsla::from(theme.text_secondary)) .text_center() .child( "Use Instant Mode for your next recording if you want a link the moment you stop.", @@ -2586,7 +2578,15 @@ impl EditorWindow { ) }) .when(ui.phase == ExportPhase::Done || ui.phase == ExportPhase::Failed, |this| { - this.when(ui.clipboard_retry_path().is_some(), |this| { + this.child( + div() + .flex() + .flex_row() + .flex_wrap() + .items_center() + .justify_center() + .gap(px(8.)) + .when(ui.clipboard_retry_path().is_some(), |this| { this.child( ui::Button::plain( &theme, @@ -2610,9 +2610,10 @@ impl EditorWindow { ui::Button::plain( &theme, "export-open-file", - ui::ButtonVariant::Gray, + ui::ButtonVariant::Blue, ui::ButtonSize::Md, ) + .radius(crate::theme::radius(crate::theme::RadiusToken::Large)) .label("Open File") .on_click(move |_, _, _| { if let Some(path) = &path { @@ -2665,16 +2666,74 @@ impl EditorWindow { ui::Button::plain( &theme, "export-back-done", - ui::ButtonVariant::Gray, + ui::ButtonVariant::Outline, ui::ButtonSize::Md, ) + .radius(crate::theme::radius(crate::theme::RadiusToken::Large)) .label("Back to editor") .on_click(cx.listener(|this, _, window, cx| this.close_export(window, cx))), + ), ) }) } } +const EXPORT_SUCCESS_SIZE: f32 = 80.; +const EXPORT_SUCCESS_STROKE: f32 = 6.; +const EXPORT_SUCCESS_CHECK: f32 = 36.; +const EXPORT_SUCCESS_DURATION: Duration = Duration::from_millis(560); + +fn ease_out_back(t: f32) -> f32 { + let overshoot = 1.70158; + let t = t - 1.; + 1. + (overshoot + 1.) * t * t * t + overshoot * t * t +} + +/// Takes the progress ring's place once an export finishes: the badge pops in +/// and the check lands just after it. +fn export_success_badge(theme: &crate::theme::Theme) -> impl IntoElement { + let positive = Hsla::from(theme.positive); + div() + .size(px(EXPORT_SUCCESS_SIZE)) + .flex() + .items_center() + .justify_center() + .child( + div() + .flex() + .flex_none() + .items_center() + .justify_center() + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) + .bg(Hsla::from(theme.positive_subtle)) + .border(px(EXPORT_SUCCESS_STROKE)) + .border_color(positive) + .child( + svg() + .path("icons/check.svg") + .text_color(positive) + .with_animation( + "export-success-check", + Animation::new(EXPORT_SUCCESS_DURATION), + |check, t| { + let landed = ease_out_back(((t - 0.35) / 0.65).clamp(0., 1.)); + check.size(px(EXPORT_SUCCESS_CHECK * landed.max(0.))) + }, + ), + ) + .with_animation( + "export-success-badge", + Animation::new(EXPORT_SUCCESS_DURATION), + |badge, t| { + let popped = ease_out_back((t / 0.6).clamp(0., 1.)); + badge + .size(px(EXPORT_SUCCESS_SIZE * (0.6 + 0.4 * popped))) + .opacity((t / 0.3).clamp(0., 1.)) + }, + ), + ) +} + /// The largest box of the preview's aspect that fits the stage, so the frame's /// rounded corners and shadow hug the picture instead of a letterboxed pane. fn preview_fit(avail_w: f32, avail_h: f32, image: Option<(f32, f32)>) -> (f32, f32) { @@ -2823,7 +2882,6 @@ fn export_stat( value: Option, divided: bool, ) -> impl IntoElement { - let editor = theme.editor; div() .flex() .flex_1() @@ -2832,20 +2890,21 @@ fn export_stat( .px(px(16.)) .gap(px(1.)) .when(divided, |this| { - this.border_l_1().border_color(Hsla::from(editor.line)) + this.border_l_1() + .border_color(Hsla::from(theme.border_subtle)) }) .child( div() .text_size(px(10.5)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_3)) + .text_color(Hsla::from(theme.text_muted)) .child(label), ) .child(match value { Some(value) => div() .text_size(px(12.5)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(editor.text_1)) + .text_color(Hsla::from(theme.text_primary)) .whitespace_nowrap() .child(value) .into_any_element(), @@ -2853,8 +2912,8 @@ fn export_stat( .my(px(3.)) .h(px(12.)) .w(px(56.)) - .rounded(px(4.)) - .bg(Hsla::from(editor.ctl_active)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Small)) + .bg(Hsla::from(theme.active_bg)) .into_any_element(), }) } diff --git a/apps/desktop-gpui/src/editor_modal.rs b/apps/desktop-gpui/src/editor_modal.rs index 245bbef6254..462f4883fdc 100644 --- a/apps/desktop-gpui/src/editor_modal.rs +++ b/apps/desktop-gpui/src/editor_modal.rs @@ -229,7 +229,8 @@ impl Render for EditorModal { .flex() .items_center() .justify_center() - .bg(gpui::hsla(0., 0., 0., 0.5)) + .bg(theme.surface_overlay) + .font_family(crate::theme::ui_font()) .on_any_mouse_down(|_, _, cx| cx.stop_propagation()) .map(|this| { MouseButton::all().into_iter().fold(this, |this, button| { @@ -259,11 +260,11 @@ impl Render for EditorModal { .flex_col() .gap(px(padding.min(12.))) .p(px(padding)) - .rounded(px(12.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .border_1() - .border_color(Hsla::from(theme.gray_3)) - .bg(Hsla::from(theme.gray_1)) - .text_color(Hsla::from(theme.gray_12)) + .border_color(Hsla::from(theme.surface_subtle)) + .bg(Hsla::from(theme.surface)) + .text_color(Hsla::from(theme.text_primary)) .shadow_lg() .child( div() @@ -286,7 +287,7 @@ impl Render for EditorModal { div() .flex_shrink_0() .text_size(px(13.)) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .child(self.detail.clone()), ), ) @@ -301,12 +302,14 @@ impl Render for EditorModal { .id(("editor-modal-action", index)) .flex_1() .min_w(px(0.)) - .rounded(px(10.)) + .rounded(crate::theme::radius( + crate::theme::RadiusToken::Medium, + )) .p(px(2.)) .border_1() - .border_color(Hsla::from(theme.gray_3)) + .border_color(Hsla::from(theme.surface_subtle)) .when(self.interaction.selected == index, |this| { - this.border_color(Hsla::from(theme.gray_12)) + this.border_color(Hsla::from(theme.text_primary)) }) .child( ui::Button::plain( diff --git a/apps/desktop-gpui/src/editor_panels.rs b/apps/desktop-gpui/src/editor_panels.rs index 4ad482e3035..0de0255dcb5 100644 --- a/apps/desktop-gpui/src/editor_panels.rs +++ b/apps/desktop-gpui/src/editor_panels.rs @@ -788,11 +788,11 @@ pub fn font_picker_options() -> Vec<(String, String)> { /// through family by family; gpui takes one name, so this is the same /// [`pick_font_family`] resolution the applied value uses, with the generics /// mapped onto the app's own face -- gpui's text system has no `serif` / -/// `monospace` aliases, so a stack that resolves to a generic draws in Geist. +/// `monospace` aliases, so a stack that resolves to a generic draws in the UI face. fn preset_font_family(stack: &[&str], installed: &[String]) -> SharedString { let picked = pick_font_family(stack, installed); if matches!(picked.as_str(), "sans-serif" | "serif" | "monospace") { - return SharedString::from("Geist"); + return SharedString::from(crate::theme::ui_font()); } SharedString::from(picked) } @@ -3982,9 +3982,9 @@ impl EditorWindow { fn panel_card(&self, content: AnyElement) -> AnyElement { div() .p(px(16.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(self.theme.editor.line)) + .border_color(Hsla::from(self.theme.border_subtle)) .child(content) .into_any_element() } @@ -4101,11 +4101,11 @@ impl EditorWindow { div() .px(px(6.)) .py(px(2.)) - .rounded_full() - .bg(Hsla::from(theme.gray_3)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) + .bg(Hsla::from(theme.surface_subtle)) .text_size(px(10.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .child(label) .into_any_element() }; @@ -4121,9 +4121,9 @@ impl EditorWindow { .flex_col() .gap(px(14.)) .p(px(16.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(theme.editor.line)) + .border_color(Hsla::from(theme.border_subtle)) .child({ let mut field = self.slider_field( "Zoom Amount", @@ -4159,7 +4159,7 @@ impl EditorWindow { .children(positions_mixed.then(|| { div() .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_10)) + .text_color(Hsla::from(theme.text_secondary)) .child( "Segments zoom into different spots. Drag \ to move them all to the same one.", @@ -4192,14 +4192,14 @@ impl EditorWindow { .items_center() .justify_between() .p(px(10.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(theme.gray_4)) - .bg(Hsla::from(theme.gray_3)) + .border_color(Hsla::from(theme.hover_bg)) + .bg(Hsla::from(theme.surface_subtle)) .child( div() .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .child(SharedString::from(format!("Zoom {}", index + 1))), ) .child( @@ -4209,13 +4209,13 @@ impl EditorWindow { .justify_center() .items_center() .size(px(20.)) - .rounded_full() - .bg(Hsla::from(theme.gray_5)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Large)) + .bg(Hsla::from(theme.active_bg)) .child( svg() .path("icons/x.svg") .size(px(12.)) - .text_color(Hsla::from(theme.gray_11)), + .text_color(Hsla::from(theme.text_secondary)), ) .on_click(cx.listener(move |this, _, _window, cx| { this.remove_from_zoom_selection(index, cx); @@ -4254,14 +4254,14 @@ impl EditorWindow { .flex() .justify_center() .py(px(10.)) - .rounded(px(9.6)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Medium)) .text_color(if selected { - Hsla::from(theme.gray_12) + Hsla::from(theme.text_primary) } else { - Hsla::from(theme.gray_11) + Hsla::from(theme.text_secondary) }) .when(locked, |this| this.opacity(0.5)) - .when(selected, |this| this.bg(Hsla::from(theme.gray_3))) + .when(selected, |this| this.bg(Hsla::from(theme.surface_subtle))) .child(label) .when(!locked, |this| { this.on_click(cx.listener(move |this, _, window, cx| { @@ -4279,9 +4279,9 @@ impl EditorWindow { .flex() .flex_row() .items_center() - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .border_1() - .border_color(Hsla::from(theme.gray_12)) + .border_color(Hsla::from(theme.text_primary)) .p(px(1.)) .child(tab("Auto", "zoom-mode-auto", !manual, false, auto_locked)) .child(tab("Manual", "zoom-mode-manual", manual, true, false)), @@ -4290,7 +4290,7 @@ impl EditorWindow { .children(auto_locked.then(|| { div() .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .child( "Auto mode needs cursor capture. Enable \"Custom cursor capture \ (Studio)\" in Settings \u{2192} General.", @@ -4321,13 +4321,13 @@ impl EditorWindow { .w_full() .text_size(px(12.)) .font_weight(FontWeight::MEDIUM) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .cursor_pointer() .child( svg() .path("icons/info.svg") .size(px(14.)) - .text_color(Hsla::from(theme.gray_11)), + .text_color(Hsla::from(theme.text_secondary)), ) .child("How does it work?") .child( @@ -4339,7 +4339,7 @@ impl EditorWindow { "icons/chevron-right.svg" }) .size(px(14.)) - .text_color(Hsla::from(theme.gray_11)), + .text_color(Hsla::from(theme.text_secondary)), ), ) .on_click(cx.listener(|this, _, window, cx| { @@ -4359,11 +4359,11 @@ impl EditorWindow { .relative() .w_full() .h(px(88.)) - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .overflow_hidden() .border_1() - .border_color(Hsla::from(theme.gray_4)) - .bg(Hsla::from(theme.gray_3)) + .border_color(Hsla::from(theme.hover_bg)) + .bg(Hsla::from(theme.surface_subtle)) .child( div() .absolute() @@ -4373,13 +4373,12 @@ impl EditorWindow { .mt(px(-24.)) .w(px(160.)) .h(px(48.)) - .rounded(px(6.)) - .border_2() - .border_color(crate::editor_sidebar::with_alpha( - theme.blue_9, - 0.6, + .rounded(crate::theme::radius( + crate::theme::RadiusToken::Compact, )) - .bg(crate::editor_sidebar::with_alpha(theme.blue_9, 0.1)), + .border_2() + .border_color(Hsla::from(theme.primary)) + .bg(Hsla::from(theme.primary_subtle)), ) .child( div() @@ -4390,14 +4389,14 @@ impl EditorWindow { svg() .path("icons/cursor.svg") .size(px(14.)) - .text_color(Hsla::from(theme.gray_12)), + .text_color(Hsla::from(theme.text_primary)), ), ), ) .child( div() .text_size(px(12.)) - .text_color(Hsla::from(theme.gray_11)) + .text_color(Hsla::from(theme.text_secondary)) .child(if manual { "Manual zoom stays on a fixed spot you pick below." } else { @@ -4515,7 +4514,7 @@ impl EditorWindow { // `size-[2rem] rounded-[0.5rem]` with an inset 1px ring. .size(px(32.)) .flex_none() - .rounded(px(8.)) + .rounded(crate::theme::radius(crate::theme::RadiusToken::Default)) .bg(crate::editor_sidebar::color_to_hsla(rgb)) .border_1() .border_color(crate::editor_sidebar::preview_border_color(rgb)) @@ -4540,10 +4539,10 @@ impl EditorWindow { .height(px(30.)) .radius(px(7.)) .text_size(px(12.)) - .bg(Hsla::from(theme.editor.ctl)) + .bg(Hsla::from(theme.surface_subtle)) .border(gpui::transparent_black()) - .text_color(Hsla::from(theme.editor.text_1)) - .caret_color(Hsla::from(theme.editor.accent)), + .text_color(Hsla::from(theme.text_primary)) + .caret_color(Hsla::from(theme.primary)), ), ); } @@ -4562,8 +4561,8 @@ impl EditorWindow { .flex(true) .padding_x(px(12.)) .text_size(px(14.)) - .bg(Hsla::from(theme.gray_2)) - .border(Hsla::from(theme.editor.line)); + .bg(Hsla::from(theme.surface_secondary)) + .border(Hsla::from(theme.border_subtle)); // A `