diff --git a/.github/dependabot.yml.liquid b/.github/dependabot.yml.liquid new file mode 100644 index 0000000..34e730e --- /dev/null +++ b/.github/dependabot.yml.liquid @@ -0,0 +1,18 @@ +{% raw %} +version: 2 +updates: + - package-ecosystem: "cargo" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 5 + commit-message: + prefix: "deps" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 5 + commit-message: + prefix: "ci" +{% endraw %} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a46de1..819fb73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ permissions: # Cancel a still-running CI for a branch when a newer commit is pushed (faster feedback, # fewer minutes — the generated project's first git-gpui build is slow). concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: @@ -55,19 +55,19 @@ jobs: - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ${{ runner.temp }}/gen/deck-ci - # No --locked: the generated Cargo.lock's root entry is renamed at generate time, so - # cargo refreshes just that on first build (the git-gpui deps stay pinned). + # Cargo.lock is a processed template file, so the generated root entry already + # matches the generated crate name and every command can enforce reproducibility. - name: Build, lint, and test the generated project working-directory: ${{ runner.temp }}/gen/deck-ci run: | - cargo build - cargo build --features tray - cargo clippy --all-targets -- -D warnings - cargo clippy --all-targets --features tray -- -D warnings - cargo clippy --all-targets --features overlay -- -D warnings - cargo clippy --all-targets --features tray,overlay -- -D warnings - cargo test - cargo test --features overlay + cargo build --locked + cargo build --locked --features tray + cargo clippy --locked --all-targets -- -D warnings + cargo clippy --locked --all-targets --features tray -- -D warnings + cargo clippy --locked --all-targets --features overlay -- -D warnings + cargo clippy --locked --all-targets --features tray,overlay -- -D warnings + cargo test --locked + cargo test --locked --features overlay linux: runs-on: ubuntu-latest @@ -102,13 +102,14 @@ jobs: working-directory: ${{ runner.temp }}/gen/deck-ci run: | cargo fmt --all --check - cargo build - cargo build --features tray - cargo clippy --all-targets -- -D warnings - cargo clippy --all-targets --features tray -- -D warnings - cargo clippy --all-targets --features overlay -- -D warnings - cargo test - cargo test --features overlay + cargo build --locked + cargo build --locked --features tray + cargo clippy --locked --all-targets -- -D warnings + cargo clippy --locked --all-targets --features tray -- -D warnings + cargo clippy --locked --all-targets --features overlay -- -D warnings + cargo clippy --locked --all-targets --features tray,overlay -- -D warnings + cargo test --locked + cargo test --locked --features overlay # Supply-chain gate (advisories / bans / sources / licenses) via cargo-deny, run against # the GENERATED project (the raw template Cargo.toml has tokens and won't parse). REQUIRED: diff --git a/.github/workflows/ci.yml.liquid b/.github/workflows/ci.yml.liquid new file mode 100644 index 0000000..4b2e4cf --- /dev/null +++ b/.github/workflows/ci.yml.liquid @@ -0,0 +1,73 @@ +{% raw %} +name: CI + +on: + push: + branches: [main] + tags: ["v*"] + pull_request: + branches: [main] + workflow_dispatch: + +env: + CARGO_TERM_COLOR: always + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 + - name: Build, lint, and test + run: | + cargo build --locked + cargo build --locked --features tray + cargo clippy --locked --all-targets -- -D warnings + cargo clippy --locked --all-targets --features tray -- -D warnings + cargo clippy --locked --all-targets --features overlay -- -D warnings + cargo clippy --locked --all-targets --features tray,overlay -- -D warnings + cargo test --locked + cargo test --locked --features overlay + + linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + build-essential pkg-config \ + libxcb1-dev libxkbcommon-dev libxkbcommon-x11-dev \ + libwayland-dev libvulkan-dev \ + libfontconfig1-dev libfreetype6-dev libssl-dev \ + libgtk-3-dev libayatana-appindicator3-dev libxdo-dev + - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 + - name: Format-check, build, lint, and test + run: | + cargo fmt --all --check + cargo build --locked + cargo build --locked --features tray + cargo clippy --locked --all-targets -- -D warnings + cargo clippy --locked --all-targets --features tray -- -D warnings + cargo clippy --locked --all-targets --features overlay -- -D warnings + cargo clippy --locked --all-targets --features tray,overlay -- -D warnings + cargo test --locked + cargo test --locked --features overlay + + cargo-deny: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: taiki-e/install-action@7a79fe8c3a13344501c80d99cae481c1c9085912 # v2.81.10 + with: + tool: cargo-deny + - run: cargo deny check advisories bans sources licenses +{% endraw %} diff --git a/AGENTS.md b/AGENTS.md index 7cc3968..b36e98d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -29,15 +29,18 @@ GPUI stack is pinned in `Cargo.lock`; the toolchain is pinned in ## This repo is a cargo-generate template — don't break it Deck ships via `cargo generate gh:hellno/deck`. The files in `cargo-generate.toml`'s -`include` list (`Cargo.toml`, `Cargo.lock`, `src/main.rs`, `src/settings.rs`, -`src/overlay/mod.rs`, `scripts/make-app-icon.py`, `LICENSE`) hold `{{ }}` Liquid tokens, -so **the raw repo does not `cargo run` / `cargo build`** — render it first. +`include` list hold Liquid tokens, so **the raw repo does not `cargo run` / +`cargo build`** — render it first. The `.liquid` files are generated-project +overrides for README, agent guidance, recipes, and CI; cargo-generate strips the +suffix and lets them replace the maintainer-facing files in the rendered app. - Verify template changes with **`just check-template`** (renders a project, then clippy + test). `just run` / `just ci` only work *inside a generated fork*. - Renaming a new literal? Add its file to `include` **and** add the `{{ }}` token — a literal in a non-included file ships as "deck" to every fork. -- **Never** put a literal `{{` or `{%` in an included file (Liquid will try to parse it). +- In a normal included file, every `{{` / `{%` must be intentional Liquid. In a + `.liquid` override, wrap syntax owned by another tool (Just/GitHub Actions) in + `{% raw %}` / `{% endraw %}`. - CI renders a throwaway project and builds THAT (`.github/workflows/ci.yml`). ## The loop (verify and self-correct without a CI round-trip) diff --git a/AGENTS.md.liquid b/AGENTS.md.liquid new file mode 100644 index 0000000..e555046 --- /dev/null +++ b/AGENTS.md.liquid @@ -0,0 +1,55 @@ +# AGENTS.md + +Guidance for coding agents working in `{{project-name}}`. `CLAUDE.md` contains +the same rules. Rationale for the lint and CI policy lives in +`docs/AGENTIC-ENGINEERING.md`. + +## Project shape + +This is a single Rust crate generated from the Deck GPUI starter. It targets +macOS and Linux, with optional `tray` and `overlay` features. The git GPUI stack +is pinned in `Cargo.lock`, and `rust-toolchain.toml` matches Zed's toolchain. + +- `src/main.rs` opens the window and wires menus, shortcuts, and features. +- `src/shell.rs` is the root view and routing/state owner. +- `src/command_palette.rs` owns commands and fuzzy-match tests. +- `src/welcome.rs` is starter UI intended to be replaced. +- `src/settings.rs` and `src/settings_view.rs` own persisted preferences. +- `src/theme.rs` owns dark/light palettes and accents. +- `src/tray.rs` and `src/overlay/` are feature-gated platform surfaces. + +## Working loop + +- Use `cargo check` for fast type checking and `just run` to launch. +- Use `just fix` for machine-applicable clippy fixes plus formatting. +- Run `just ci` before declaring a change done. It checks formatting, clippy + with `-D warnings` on all four feature combinations, and tests. +- For UI changes, use `just screenshot` on macOS and inspect the actual image. + +## Definition of done + +1. `cargo fmt --all --check` is clean. +2. Clippy is green for default, `tray`, `overlay`, and `tray,overlay`. +3. Default and overlay tests pass. +4. Dependency changes are intentional, reviewed, and reflected in `Cargo.lock`. + +## Code constraints + +- No `todo!()` or `dbg!()`; both are denied. +- Never ignore a `Result`. Propagate it or handle it deliberately. +- `unsafe_code` is denied. A necessary escape hatch needs a scoped allow and a + reviewed `// SAFETY:` explanation. +- `.expect()` is acceptable for genuinely infallible GPUI handles; prefer + `Result` and `?` elsewhere. +- Keep I/O and network work off the UI thread. Update memory and notify first, + then persist on a background executor or at a coarse commit boundary. +- Keep volatile state in its own `Entity` so notifications repaint the + smallest useful subtree. +- Use `uniform_list` or `list` for large collections and filter in memory. + +## Dependencies + +Refresh the dependency lockfile with `just bump-gpui`, then run `just ci` and a +runtime smoke test. The script restores the previous lockfile when an update +does not build. Do not hand-edit git SHAs in `Cargo.lock`; see +`docs/UPGRADING.md` for known-green revision overrides. diff --git a/CLAUDE.md b/CLAUDE.md index fdb1f48..cd275b9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,15 +29,18 @@ GPUI stack is pinned in `Cargo.lock`; the toolchain is pinned in ## This repo is a cargo-generate template — don't break it Deck ships via `cargo generate gh:hellno/deck`. The files in `cargo-generate.toml`'s -`include` list (`Cargo.toml`, `Cargo.lock`, `src/main.rs`, `src/settings.rs`, -`src/overlay/mod.rs`, `scripts/make-app-icon.py`, `LICENSE`) hold `{{ }}` Liquid tokens, -so **the raw repo does not `cargo run` / `cargo build`** — render it first. +`include` list hold Liquid tokens, so **the raw repo does not `cargo run` / +`cargo build`** — render it first. The `.liquid` files are generated-project +overrides for README, agent guidance, recipes, and CI; cargo-generate strips the +suffix and lets them replace the maintainer-facing files in the rendered app. - Verify template changes with **`just check-template`** (renders a project, then clippy + test). `just run` / `just ci` only work *inside a generated fork*. - Renaming a new literal? Add its file to `include` **and** add the `{{ }}` token — a literal in a non-included file ships as "deck" to every fork. -- **Never** put a literal `{{` or `{%` in an included file (Liquid will try to parse it). +- In a normal included file, every `{{` / `{%` must be intentional Liquid. In a + `.liquid` override, wrap syntax owned by another tool (Just/GitHub Actions) in + `{% raw %}` / `{% endraw %}`. - CI renders a throwaway project and builds THAT (`.github/workflows/ci.yml`). ## The loop (verify and self-correct without a CI round-trip) diff --git a/CLAUDE.md.liquid b/CLAUDE.md.liquid new file mode 100644 index 0000000..e555046 --- /dev/null +++ b/CLAUDE.md.liquid @@ -0,0 +1,55 @@ +# AGENTS.md + +Guidance for coding agents working in `{{project-name}}`. `CLAUDE.md` contains +the same rules. Rationale for the lint and CI policy lives in +`docs/AGENTIC-ENGINEERING.md`. + +## Project shape + +This is a single Rust crate generated from the Deck GPUI starter. It targets +macOS and Linux, with optional `tray` and `overlay` features. The git GPUI stack +is pinned in `Cargo.lock`, and `rust-toolchain.toml` matches Zed's toolchain. + +- `src/main.rs` opens the window and wires menus, shortcuts, and features. +- `src/shell.rs` is the root view and routing/state owner. +- `src/command_palette.rs` owns commands and fuzzy-match tests. +- `src/welcome.rs` is starter UI intended to be replaced. +- `src/settings.rs` and `src/settings_view.rs` own persisted preferences. +- `src/theme.rs` owns dark/light palettes and accents. +- `src/tray.rs` and `src/overlay/` are feature-gated platform surfaces. + +## Working loop + +- Use `cargo check` for fast type checking and `just run` to launch. +- Use `just fix` for machine-applicable clippy fixes plus formatting. +- Run `just ci` before declaring a change done. It checks formatting, clippy + with `-D warnings` on all four feature combinations, and tests. +- For UI changes, use `just screenshot` on macOS and inspect the actual image. + +## Definition of done + +1. `cargo fmt --all --check` is clean. +2. Clippy is green for default, `tray`, `overlay`, and `tray,overlay`. +3. Default and overlay tests pass. +4. Dependency changes are intentional, reviewed, and reflected in `Cargo.lock`. + +## Code constraints + +- No `todo!()` or `dbg!()`; both are denied. +- Never ignore a `Result`. Propagate it or handle it deliberately. +- `unsafe_code` is denied. A necessary escape hatch needs a scoped allow and a + reviewed `// SAFETY:` explanation. +- `.expect()` is acceptable for genuinely infallible GPUI handles; prefer + `Result` and `?` elsewhere. +- Keep I/O and network work off the UI thread. Update memory and notify first, + then persist on a background executor or at a coarse commit boundary. +- Keep volatile state in its own `Entity` so notifications repaint the + smallest useful subtree. +- Use `uniform_list` or `list` for large collections and filter in memory. + +## Dependencies + +Refresh the dependency lockfile with `just bump-gpui`, then run `just ci` and a +runtime smoke test. The script restores the previous lockfile when an update +does not build. Do not hand-edit git SHAs in `Cargo.lock`; see +`docs/UPGRADING.md` for known-green revision overrides. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1017780..d78e5bc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,11 +67,11 @@ is pinned to exact commits in `Cargo.lock`. **Never hand-edit those pins.** Bump them only with: ```bash -just bump-gpui # cargo update on the four crates + rebuild +just bump-gpui # stage a full lockfile refresh, rebuild, then install it atomically ``` -then commit the updated `Cargo.lock` (and `rust-toolchain.toml` if the build -needed a newer toolchain). Full procedure and the crates.io fallback channel: +then run `just ci` and commit the updated `Cargo.lock` (and `rust-toolchain.toml` +if the build needed a newer toolchain). Full procedure and the crates.io fallback channel: [`docs/UPGRADING.md`](docs/UPGRADING.md). ## Submitting a PR diff --git a/Cargo.lock b/Cargo.lock index 58415f1..db1b3c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,10 +4,11 @@ version = 4 [[package]] name = "accesskit" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a" +checksum = "d3b7f7f85a7e5f68090000ed7622545829afd484d210358702ae4cb97dd0c320" dependencies = [ + "enumn", "uuid", ] @@ -27,9 +28,9 @@ dependencies = [ [[package]] name = "accesskit_consumer" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53cf47daed85312e763fbf85ceca136e0d7abc68e0a7e12abe11f48172bc3b10" +checksum = "25e0d7e25d06f4dc21d1774d67146e9e80d6789216cbd4d1e88185b0095dba60" dependencies = [ "accesskit", "hashbrown 0.16.1", @@ -37,9 +38,19 @@ dependencies = [ [[package]] name = "accesskit_consumer" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25e0d7e25d06f4dc21d1774d67146e9e80d6789216cbd4d1e88185b0095dba60" +checksum = "f950720ce064757a1b629caad3a408e8d2c63bb01f29b8a3ff8daa331053ffeb" +dependencies = [ + "accesskit", + "hashbrown 0.16.1", +] + +[[package]] +name = "accesskit_consumer" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d10a236f96f87d70732e44520046785431ef01d5bcd6b041317bfadd2f88245" dependencies = [ "accesskit", "hashbrown 0.16.1", @@ -47,12 +58,12 @@ dependencies = [ [[package]] name = "accesskit_macos" -version = "0.26.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c5c87e8d94f2ec10cce590aadff24c76f576dab5502d45d0aed9fc3065d4451" +checksum = "ce02dc63b43f0c9296af9ac946312a2dc8814427d7a64d2d600971dac55b6076" dependencies = [ "accesskit", - "accesskit_consumer 0.36.0", + "accesskit_consumer 0.38.0", "hashbrown 0.16.1", "objc2 0.5.2", "objc2-app-kit 0.2.2", @@ -67,11 +78,11 @@ checksum = "b016ca8db0ea0ea2ceff29a9d6240391492d960716aa471967c00e8cc8cb197c" dependencies = [ "accesskit", "accesskit_atspi_common", - "async-channel 2.5.0", + "async-channel", "async-executor", "async-task", "atspi", - "futures-lite 2.6.1", + "futures-lite", "futures-util", "serde", "zbus", @@ -79,12 +90,12 @@ dependencies = [ [[package]] name = "accesskit_windows" -version = "0.32.1" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff7009f1a532e917d66970a1e80c965140c6cfbbabbdde3d64e5431e6c78e21" +checksum = "36e93ac7bf50b964f1cbb75f741629a4e950571baa1ef1274457ab5a80d9bcc2" dependencies = [ "accesskit", - "accesskit_consumer 0.35.0", + "accesskit_consumer 0.37.0", "hashbrown 0.16.1", "static_assertions", "windows 0.62.2", @@ -114,15 +125,29 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", "zeroize", ] +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "const-random", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + [[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", ] @@ -153,27 +178,35 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[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", ] [[package]] -name = "anyhow" -version = "1.0.102" +name = "annotate-snippets" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f211a51805bc641f3ad5b7664c77d2547af685cc33b4cd8d31964027a46f13f1" +dependencies = [ + "anstyle", + "memchr", + "unicode-width", +] + +[[package]] +name = "anstyle" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] -name = "ar_archive_writer" -version = "0.5.1" +name = "anyhow" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb93bbb63b9c227414f6eb3a0adfddca591a8ce1e9b60661bb08969b87e340b" -dependencies = [ - "object", -] +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arbitrary" @@ -183,9 +216,9 @@ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -198,9 +231,15 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + [[package]] name = "arrayref" version = "0.3.9" @@ -209,9 +248,15 @@ 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" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" [[package]] name = "as-slice" @@ -233,14 +278,19 @@ dependencies = [ [[package]] name = "ashpd" -version = "0.13.11" +version = "0.13.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340e0f6bf7f9ee78549c61454f1460a3ed97c011902ee76b58301bbc6d502a32" +checksum = "fb8421aaa9644a5faf26735f258b669b15f063313ef8f8e2bdb28912a1a6f111" dependencies = [ "enumflags2", + "futures-channel", "futures-util", - "getrandom 0.4.2", + "getrandom 0.4.3", "serde", + "serde_repr", + "wayland-backend", + "wayland-client", + "wayland-protocols", "zbus", ] @@ -250,23 +300,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", ] -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - [[package]] name = "async-channel" version = "2.5.0" @@ -281,9 +320,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.42" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" +checksum = "515a1f282e33d55983c499d7e9e87082e81cbc32974825bf9032f928392d5844" dependencies = [ "compression-codecs", "compression-core", @@ -299,8 +338,8 @@ checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.4.1", - "futures-lite 2.6.1", + "fastrand", + "futures-lite", "pin-project-lite", "slab", ] @@ -313,22 +352,7 @@ checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ "async-lock", "blocking", - "futures-lite 2.6.1", -] - -[[package]] -name = "async-global-executor" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" -dependencies = [ - "async-channel 2.5.0", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite 2.6.1", - "once_cell", + "futures-lite", ] [[package]] @@ -341,10 +365,10 @@ dependencies = [ "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.6.1", + "futures-lite", "parking", "polling", - "rustix 1.1.4", + "rustix", "slab", "windows-sys 0.61.2", ] @@ -355,7 +379,7 @@ version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] @@ -368,7 +392,7 @@ checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" dependencies = [ "async-io", "blocking", - "futures-lite 2.6.1", + "futures-lite", ] [[package]] @@ -377,16 +401,16 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ - "async-channel 2.5.0", + "async-channel", "async-io", "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.1", - "futures-lite 2.6.1", - "rustix 1.1.4", + "event-listener", + "futures-lite", + "rustix", ] [[package]] @@ -397,7 +421,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -412,53 +436,12 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.4", + "rustix", "signal-hook-registry", "slab", "windows-sys 0.61.2", ] -[[package]] -name = "async-std" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" -dependencies = [ - "async-channel 1.9.0", - "async-global-executor", - "async-io", - "async-lock", - "async-process", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite 2.6.1", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-tar" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1937db2d56578aa3919b9bdb0e5100693fd7d1c0f145c53eb81fbb03e217550" -dependencies = [ - "async-std", - "filetime", - "libc", - "pin-project", - "redox_syscall 0.2.16", - "xattr", -] - [[package]] name = "async-task" version = "4.7.1" @@ -467,26 +450,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.117", -] - -[[package]] -name = "async_zip" -version = "0.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c50d65ce1b0e0cb65a785ff615f78860d7754290647d3b983208daa4f85e6" -dependencies = [ - "async-compression", - "crc32fast", - "futures-lite 2.6.1", - "pin-project", - "thiserror 2.0.18", + "syn 3.0.4", ] [[package]] @@ -582,7 +552,7 @@ dependencies = [ "num-traits", "pastey", "rayon", - "thiserror 2.0.18", + "thiserror 2.0.20", "v_frame", "y4m", ] @@ -619,7 +589,7 @@ dependencies = [ "addr2line", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.9", "object", "rustc-demangle", "windows-link 0.2.1", @@ -637,13 +607,22 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bindgen" version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "cexpr", "clang-sys", "itertools 0.13.0", @@ -652,9 +631,18 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "shlex 1.3.0", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -663,9 +651,15 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" dependencies = [ - "bit-vec", + "bit-vec 0.9.1", ] +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bit-vec" version = "0.9.1" @@ -686,9 +680,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.12.1" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ "serde_core", ] @@ -717,6 +711,15 @@ 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" @@ -746,22 +749,22 @@ dependencies = [ [[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 2.5.0", + "async-channel", "async-task", "futures-io", - "futures-lite 2.6.1", + "futures-lite", "piper", ] [[package]] name = "borsh" -version = "1.6.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +checksum = "553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a" dependencies = [ "bytes", "cfg_aliases", @@ -769,12 +772,12 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f" dependencies = [ "memchr", - "serde", + "serde_core", ] [[package]] @@ -791,22 +794,22 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.25.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.2" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] [[package]] @@ -823,9 +826,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "bzip2" @@ -842,7 +845,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "cairo-sys-rs", "glib", "libc", @@ -867,13 +870,25 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "polling", - "rustix 1.1.4", + "rustix", "slab", "tracing", ] +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop", + "rustix", + "wayland-backend", + "wayland-client", +] + [[package]] name = "cbc" version = "0.1.2" @@ -896,16 +911,16 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.117", + "syn 2.0.119", "tempfile", "toml 0.8.23", ] [[package]] name = "cc" -version = "1.2.63" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", "jobserver", @@ -940,9 +955,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[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" @@ -953,11 +968,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.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -973,16 +999,16 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", "zeroize", ] [[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", @@ -1011,10 +1037,10 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block", - "cocoa-foundation 0.2.0", - "core-foundation 0.10.0", + "cocoa-foundation 0.2.1", + "core-foundation 0.10.1", "core-graphics 0.24.0", "foreign-types", "libc", @@ -1037,15 +1063,14 @@ dependencies = [ [[package]] name = "cocoa-foundation" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics-types 0.2.0", - "libc", "objc", ] @@ -1063,11 +1088,11 @@ dependencies = [ [[package]] name = "collections" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "gpui_util", "indexmap", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", ] [[package]] @@ -1076,34 +1101,23 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "command-fds" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b60b5124979fccd9addd89d8b97a1d6eebb4950694520c75ddd722535ea443f" -dependencies = [ - "nix 0.31.3", - "thiserror 2.0.18", -] - [[package]] name = "compression-codecs" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" +checksum = "2fe67f2944eef52fc7b106b8c9450d243a88701a0c065f7f57235e76abaed7df" dependencies = [ "bzip2", "compression-core", - "deflate64", "flate2", "memchr", ] [[package]] name = "compression-core" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" +checksum = "6e8ccc4ea9f6acc32d102c0f6d471d11d913ad15f20c04de743374861fa1d414" [[package]] name = "concurrent-queue" @@ -1124,6 +1138,32 @@ dependencies = [ "wasm-bindgen", ] +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.17", + "once_cell", + "tiny-keccak", +] + [[package]] name = "convert_case" version = "0.10.0" @@ -1145,9 +1185,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -1178,8 +1218,8 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 2.12.1", - "core-foundation 0.10.0", + "bitflags 2.13.1", + "core-foundation 0.10.1", "core-graphics-types 0.2.0", "foreign-types", "libc", @@ -1191,7 +1231,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32eb7c354ae9f6d437a6039099ce7ecd049337a8109b23d73e48e8ffba8e9cd5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "core-foundation 0.9.4", "core-graphics-types 0.1.3", "foreign-types", @@ -1215,8 +1255,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.12.1", - "core-foundation 0.10.0", + "bitflags 2.13.1", + "core-foundation 0.10.1", "libc", ] @@ -1226,10 +1266,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4416167a69126e617f8d0a214af0e3c1dbdeffcb100ddf72dcd1a1ac9893c146" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block", "cfg-if", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "libc", ] @@ -1239,7 +1279,7 @@ version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a593227b66cbd4007b2a050dfdd9e1d1318311409c8d600dc82ba1b15ca9c130" dependencies = [ - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics 0.24.0", "foreign-types", "libc", @@ -1252,7 +1292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "139679cc63eb9504bdbe37e37874b0247136177655f0008588781e90863afa62" dependencies = [ "block", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics2", "io-surface", "libc", @@ -1274,15 +1314,15 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "fontdb", "harfrust", "linebender_resource_handle", "log", "rangemap", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "self_cell", - "skrifa", + "skrifa 0.40.0", "smol_str", "swash", "sys-locale", @@ -1301,29 +1341,38 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1331,27 +1380,27 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" @@ -1369,11 +1418,20 @@ dependencies = [ "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 = "ctor" -version = "1.0.7" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01334b89b69ff726750c5ce5073fc8bd860e99aa9a8fc5ca11b04730e3aee97a" +checksum = "914a755b7c2d4af2bdcff7ce1739e2db9a1b81a9b07123d8015786ae03c0980d" dependencies = [ "link-section", "linktime-proc-macro", @@ -1404,10 +1462,10 @@ dependencies = [ ] [[package]] -name = "deflate64" -version = "0.1.12" +name = "deranged" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" [[package]] name = "derive_more" @@ -1428,18 +1486,18 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.117", + "syn 2.0.119", "unicode-xid", ] [[package]] name = "derive_refineable" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1448,39 +1506,38 @@ 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 = "directories" -version = "5.0.1" +name = "digest" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "dirs-sys 0.4.1", + "block-buffer 0.12.1", + "const-oid", + "crypto-common 0.2.2", ] [[package]] -name = "dirs" +name = "directories" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ - "dirs-sys 0.5.0", + "dirs-sys", ] [[package]] -name = "dirs-sys" -version = "0.4.1" +name = "dirs" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "libc", - "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", + "dirs-sys", ] [[package]] @@ -1491,7 +1548,7 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users 0.5.2", + "redox_users", "windows-sys 0.61.2", ] @@ -1507,7 +1564,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -1515,13 +1572,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] [[package]] @@ -1542,6 +1599,12 @@ dependencies = [ "litrs", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "dpi" version = "0.1.2" @@ -1574,20 +1637,20 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.16.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" +checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" [[package]] name = "embed-resource" -version = "3.0.9" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a88c8d26de40ed18fe748c547845aa39de1db3afd958f8cb91579f3644bcb" +checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd" dependencies = [ "cc", "memchr", "rustc_version", - "toml 1.1.2+spec-1.1.0", + "toml 1.1.5+spec-1.1.0", "vswhom", "winreg", ] @@ -1601,6 +1664,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "encoding_rs_io" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba3fe847045ecff794b9c138293a80db914678c453ad63fbf0c6a9eb6e00b22" +dependencies = [ + "encoding_rs", +] + [[package]] name = "endi" version = "1.1.1" @@ -1624,7 +1696,7 @@ checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1645,7 +1717,18 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] @@ -1665,7 +1748,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1716,17 +1799,10 @@ dependencies = [ [[package]] name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[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", ] @@ -1737,39 +1813,46 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener", "pin-project-lite", ] [[package]] name = "exr" -version = "1.74.0" +version = "1.74.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" +checksum = "711fe42c9964295e01ee3fba3f9fe0e1d24b98886950d68efe81b1c76e21adf3" dependencies = [ "bit_field", "half", "lebe", - "miniz_oxide", + "miniz_oxide 0.8.9", + "num-complex", + "pulp", "rayon-core", "smallvec", "zune-inflate", ] [[package]] -name = "fastrand" -version = "1.9.0" +name = "fancy-regex" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f" dependencies = [ - "instant", -] + "bit-set 0.8.0", + "regex-automata", + "regex-syntax", +] [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" +dependencies = [ + "getrandom 0.4.3", +] [[package]] name = "fax" @@ -1796,6 +1879,17 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "filedescriptor" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d" +dependencies = [ + "libc", + "thiserror 1.0.69", + "winapi", +] + [[package]] name = "filetime" version = "0.2.29" @@ -1808,9 +1902,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "fixedbitset" @@ -1820,12 +1914,13 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.9.1", + "zlib-rs", ] [[package]] @@ -1857,14 +1952,14 @@ dependencies = [ [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ + "fastrand", "futures-core", "futures-sink", - "nanorand", - "spin 0.9.8", + "spin 0.9.9", ] [[package]] @@ -1894,13 +1989,22 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "font-types" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64eb721ca85a34323425f4041adc5d82704d3782d5f8f03793bc012419dce23" +dependencies = [ + "bytemuck", +] + [[package]] name = "fontconfig-parser" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" dependencies = [ - "roxmltree", + "roxmltree 0.20.0", ] [[package]] @@ -1929,13 +2033,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.117", + "syn 3.0.4", ] [[package]] @@ -1985,9 +2089,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -2000,9 +2104,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -2016,22 +2120,22 @@ checksum = "175cd8cca9e1d45b87f18ffa75088f2099e3c4fe5e2f83e42de112560bea8ea6" dependencies = [ "fixedbitset", "futures-core", - "futures-lite 2.6.1", + "futures-lite", "pin-project", "smallvec", ] [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" dependencies = [ "futures-core", "futures-task", @@ -2040,24 +2144,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-lite" -version = "1.13.0" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-lite" @@ -2065,7 +2154,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "fastrand 2.4.1", + "fastrand", "futures-core", "futures-io", "parking", @@ -2074,32 +2163,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -2180,6 +2269,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix", + "windows-link 0.2.1", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -2209,15 +2308,16 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", - "wasip2", - "wasip3", + "rand_core 0.10.1", + "wasm-bindgen", ] [[package]] @@ -2295,7 +2395,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "futures-channel", "futures-core", "futures-executor", @@ -2323,7 +2423,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2338,15 +2438,15 @@ 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 = "globset" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" +checksum = "07c34a9410465b45bd9787443bc7370f37735bad04b0f0cd57ff1a3186c98988" dependencies = [ "aho-corasick", "bstr", @@ -2366,18 +2466,6 @@ dependencies = [ "walkdir", ] -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "glow" version = "0.17.0" @@ -2420,8 +2508,8 @@ dependencies = [ "hashbrown 0.16.1", "log", "presser", - "thiserror 2.0.18", - "windows 0.57.0", + "thiserror 2.0.20", + "windows 0.62.2", ] [[package]] @@ -2430,7 +2518,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -2441,36 +2529,27 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", ] [[package]] name = "gpui" version = "0.2.2" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "accesskit", "anyhow", - "async-channel 2.5.0", + "async-channel", "async-task", "bindgen", - "bitflags 2.12.1", - "block", - "cbindgen", + "bitflags 2.13.1", "chrono", - "cocoa 0.26.0", - "cocoa-foundation 0.2.0", "collections", - "core-foundation 0.10.0", - "core-foundation-sys", - "core-graphics 0.24.0", - "core-text", "core-video", "ctor", "derive_more", "embed-resource", "etagere", - "foreign-types", "futures", "futures-concurrency", "getrandom 0.3.4", @@ -2484,23 +2563,18 @@ dependencies = [ "itertools 0.14.0", "log", "lyon", - "mach2", - "media", - "metal", "num_cpus", - "objc", "parking", "parking_lot", - "pathfinder_geometry", "pin-project", "pollster 0.4.0", "postage", "profiling", - "rand 0.9.4", + "rand 0.9.5", "raw-window-handle", "refineable", "regex", - "resvg", + "resvg 0.46.0", "scheduler", "schemars", "seahash", @@ -2508,15 +2582,15 @@ dependencies = [ "serde_json", "slotmap", "smallvec", - "spin 0.10.0", - "stacksafe", + "spin 0.10.1", "strum", "sum_tree", "taffy", - "thiserror 2.0.18", + "thiserror 2.0.20", + "tracing", "ttf-parser", "url", - "usvg", + "usvg 0.46.0", "util_macros", "uuid", "waker-fn", @@ -2524,36 +2598,73 @@ dependencies = [ "windows 0.61.3", "zed-font-kit", "zed-scap", + "ztracing", ] [[package]] -name = "gpui-component" +name = "gpui-base" version = "0.5.2" -source = "git+https://github.com/longbridge/gpui-component#dadfca97fec7221acf3ce7047bccdc1eac0506b9" +source = "git+https://github.com/longbridge/gpui-component#0c746dff2a70f19e3c348961326b502a0008417a" dependencies = [ "aho-corasick", "anyhow", - "async-channel 2.5.0", + "async-channel", + "chrono", + "futures", + "gpui", + "gpui_macros", + "gpui_platform", + "html5ever", + "instant", + "lsp-types", + "markdown", + "markup5ever_rcdom", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "raw-window-handle", + "regex", + "ropey", + "schemars", + "serde", + "serde_json", + "smallvec", + "smol", + "syntect", + "tracing", + "unicode-segmentation", + "web-time", + "zed-sum-tree", +] + +[[package]] +name = "gpui-component" +version = "0.5.2" +source = "git+https://github.com/longbridge/gpui-component#0c746dff2a70f19e3c348961326b502a0008417a" +dependencies = [ + "anyhow", "chrono", "core-text", "enum-iterator", - "futures", "gpui", + "gpui-base", "gpui-component-assets", "gpui-component-macros", "gpui_macros", - "html5ever", "instant", "itertools 0.13.0", "log", "lsp-types", "markdown", - "markup5ever_rcdom", "notify", "num-traits", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "once_cell", "paste", - "regex", + "raw-window-handle", + "resvg 0.45.1", "ropey", "rust-i18n", "schemars", @@ -2563,17 +2674,15 @@ dependencies = [ "smallvec", "smol", "tracing", - "tree-sitter", - "tree-sitter-json", - "unicode-segmentation", "uuid", + "windows 0.58.0", "zed-sum-tree", ] [[package]] name = "gpui-component-assets" version = "0.5.1" -source = "git+https://github.com/longbridge/gpui-component#dadfca97fec7221acf3ce7047bccdc1eac0506b9" +source = "git+https://github.com/longbridge/gpui-component#0c746dff2a70f19e3c348961326b502a0008417a" dependencies = [ "anyhow", "gpui", @@ -2587,71 +2696,106 @@ dependencies = [ [[package]] name = "gpui-component-macros" version = "0.5.1" -source = "git+https://github.com/longbridge/gpui-component#dadfca97fec7221acf3ce7047bccdc1eac0506b9" +source = "git+https://github.com/longbridge/gpui-component#0c746dff2a70f19e3c348961326b502a0008417a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "gpui_apple" +version = "0.1.0" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" +dependencies = [ + "anyhow", + "block", + "cbindgen", + "cocoa 0.26.0", + "collections", + "core-foundation 0.10.1", + "core-video", + "derive_more", + "etagere", + "foreign-types", + "gpui", + "image", + "log", + "metal", + "objc", + "parking_lot", ] [[package]] name = "gpui_linux" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "accesskit", "accesskit_unix", "anyhow", + "as-raw-xcb-connection", + "ashpd", + "bitflags 2.13.1", "bytemuck", "calloop", + "calloop-wayland-source", "collections", + "filedescriptor", "futures", "gpui", + "gpui_util", + "gpui_wgpu", "http_client", - "image", - "itertools 0.14.0", "libc", "log", + "notify-rust", "oo7", + "open", "parking_lot", - "pathfinder_geometry", - "pollster 0.4.0", - "profiling", "raw-window-handle", "smallvec", "smol", "strum", - "swash", "url", - "util", "uuid", + "wayland-backend", + "wayland-client", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-plasma", + "wayland-protocols-wlr", + "x11-clipboard", + "x11rb", + "xkbcommon", + "zed-scap", + "zed-xim", ] [[package]] name = "gpui_macos" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "accesskit", "accesskit_macos", "anyhow", "async-task", "block", - "cbindgen", + "block2 0.6.2", "cocoa 0.26.0", "collections", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "core-graphics 0.24.0", "core-text", - "core-video", "ctor", - "derive_more", "dispatch2", - "etagere", "foreign-types", "futures", "gpui", + "gpui_apple", + "gpui_util", "image", "itertools 0.14.0", "libc", @@ -2660,14 +2804,16 @@ dependencies = [ "media", "metal", "objc", + "objc2 0.6.4", "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "objc2-user-notifications", "parking_lot", "pathfinder_geometry", "raw-window-handle", "semver", "smallvec", "strum", - "util", "uuid", "zed-font-kit", ] @@ -2675,18 +2821,18 @@ dependencies = [ [[package]] name = "gpui_macros" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "gpui_platform" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "console_error_panic_hook", "gpui", @@ -2699,7 +2845,7 @@ dependencies = [ [[package]] name = "gpui_shared_string" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "schemars", "serde", @@ -2709,16 +2855,17 @@ dependencies = [ [[package]] name = "gpui_util" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "anyhow", "log", + "which", ] [[package]] name = "gpui_web" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "anyhow", "console_error_panic_hook", @@ -2730,7 +2877,7 @@ dependencies = [ "log", "parking_lot", "raw-window-handle", - "smallvec", + "scheduler", "uuid", "wasm-bindgen", "wasm-bindgen-futures", @@ -2742,7 +2889,7 @@ dependencies = [ [[package]] name = "gpui_wgpu" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "anyhow", "bytemuck", @@ -2752,41 +2899,40 @@ dependencies = [ "gpui", "gpui_util", "itertools 0.14.0", - "js-sys", "log", "parking_lot", - "pollster 0.4.0", "profiling", "raw-window-handle", "smallvec", "swash", + "unicode-bidi", "unicode-segmentation", - "wasm-bindgen", - "wasm-bindgen-futures", "web-sys", "wgpu", + "zed-font-kit", ] [[package]] name = "gpui_windows" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "accesskit", "accesskit_windows", "anyhow", "collections", + "dunce", "etagere", "futures", "gpui", + "gpui_util", "image", "itertools 0.14.0", "log", "parking_lot", - "rand 0.9.4", + "rand 0.9.5", "raw-window-handle", "smallvec", - "util", "uuid", "windows 0.61.3", "windows-core 0.61.2", @@ -2795,10 +2941,14 @@ dependencies = [ ] [[package]] -name = "grid" -version = "1.0.1" +name = "granit-parser" +version = "0.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5" +checksum = "d03f81ad4732830d85cfd417a9f62cde6dadda4354d37d078a6084a19560aa2d" +dependencies = [ + "arraydeque", + "smallvec", +] [[package]] name = "gtk" @@ -2849,14 +2999,14 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "h2" -version = "0.4.14" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" +checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" dependencies = [ "atomic-waker", "bytes", @@ -2889,10 +3039,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "bytemuck", "core_maths", - "read-fonts", + "read-fonts 0.37.0", "smallvec", ] @@ -2905,6 +3055,12 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.5" @@ -2955,9 +3111,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" @@ -2986,16 +3142,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", -] - -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", + "digest 0.10.7", ] [[package]] @@ -3009,14 +3156,14 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "http" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", "itoa", @@ -3024,9 +3171,9 @@ dependencies = [ [[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", @@ -3034,9 +3181,9 @@ dependencies = [ [[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", @@ -3048,12 +3195,10 @@ dependencies = [ [[package]] name = "http_client" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "anyhow", "async-compression", - "async-fs", - "async-tar", "bytes", "derive_more", "futures", @@ -3064,10 +3209,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sha2", - "tempfile", "url", - "util", ] [[package]] @@ -3076,11 +3218,20 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +[[package]] +name = "hybrid-array" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" dependencies = [ "atomic-waker", "bytes", @@ -3159,9 +3310,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" dependencies = [ "displaydoc", "potential_utf", @@ -3173,9 +3324,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" dependencies = [ "displaydoc", "litemap", @@ -3186,9 +3337,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -3200,16 +3351,17 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" [[package]] name = "icu_properties" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" dependencies = [ + "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", @@ -3220,15 +3372,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" dependencies = [ "displaydoc", "icu_locale_core", @@ -3239,12 +3391,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "idna" version = "1.1.0" @@ -3268,9 +3414,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.25" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" +checksum = "00b69833ed729dc5aa7d19541d96d6cf8e9137194207a04916d658e43168402f" dependencies = [ "crossbeam-deque", "globset", @@ -3300,9 +3446,8 @@ dependencies = [ "qoi", "ravif", "rayon", - "rgb", "tiff", - "zune-core 0.5.1", + "zune-core 0.5.3", "zune-jpeg 0.5.15", ] @@ -3322,17 +3467,23 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" +[[package]] +name = "imagesize" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c" + [[package]] name = "imgref" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2" +checksum = "6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f" [[package]] name = "indexmap" -version = "2.14.0" +version = "2.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" dependencies = [ "equivalent", "hashbrown 0.17.1", @@ -3353,9 +3504,9 @@ dependencies = [ [[package]] name = "inotify-sys" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +checksum = "c033f80b2c113cdf91ab7a33faa9cbc014726dcad99880c8609af2a370edf37d" dependencies = [ "libc", ] @@ -3390,7 +3541,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -3409,16 +3560,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "554b8c5d64ec09a3a520fe58e4d48a73e00ff32899cdcbe32a4877afd4968b8e" dependencies = [ "cgl", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "leaky-cow", ] [[package]] name = "ipnet" -version = "2.12.0" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] [[package]] name = "itertools" @@ -3478,28 +3648,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.117", + "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.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -3509,7 +3678,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "serde", "unicode-segmentation", ] @@ -3533,9 +3702,9 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kqueue" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5" +checksum = "8d763e5b24120b4ddf50de6c92308156765aabfbbccebf401da7cff2d70a41ea" dependencies = [ "kqueue-sys", "libc", @@ -3547,7 +3716,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "libc", ] @@ -3563,12 +3732,15 @@ dependencies = [ ] [[package]] -name = "kv-log-macro" -version = "1.0.7" +name = "kurbo" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2" dependencies = [ - "log", + "arrayvec", + "euclid", + "polycool", + "smallvec", ] [[package]] @@ -3592,12 +3764,6 @@ dependencies = [ "leak", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "lebe" version = "0.5.3" @@ -3636,15 +3802,15 @@ checksum = "34b357333733e8260735ba5894eb928c02ecc69c78715f01a8019e7fa7f2db4c" [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libfuzzer-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" dependencies = [ "arbitrary", "cc", @@ -3678,9 +3844,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "8d8f1ea3f21fd3405dcaf6c9b5c1630af9afc422d9073ea39c5f6d6c772e08ed" dependencies = [ "libc", ] @@ -3712,21 +3878,15 @@ checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" [[package]] name = "link-section" -version = "0.18.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "014e440054ce8170890229eeef5bcda955305e056ec713de40ed366944483f09" +checksum = "39c29a617ce3df32c08497bdc1ab6e2376e0b17948ac166a2fbe5977c5954cd9" [[package]] name = "linktime-proc-macro" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7b0a3383c2a1002d11349c92c85a666a5fb679e96c79d782cf0dbe557fd6ee" - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "7e57c38c1e860fd37c604281cdfb1dd2216977fd76a50f85ba2f388ef3219616" [[package]] name = "linux-raw-sys" @@ -3736,9 +3896,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] name = "litrs" @@ -3757,9 +3917,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.31" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" dependencies = [ "serde_core", "value-bag", @@ -3805,9 +3965,9 @@ dependencies = [ [[package]] name = "lyon_algorithms" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8575c0d003ae459399623c4def180c63b77f343b1a7fee64f249b349e7699a31" +checksum = "cdfa8785f95e57914ddb35e3b59994aeba6f5e79e9cfd03da1c269f010f36009" dependencies = [ "lyon_path", "num-traits", @@ -3836,9 +3996,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e43b7e44161571868f5c931d12583592c223c5583eef86b08aa02b7048a3552" +checksum = "dabea159dc6eea9171a541b458134b70ca95e3162d068132b2b3b9bc01aad06e" dependencies = [ "float_next_after", "lyon_path", @@ -3851,6 +4011,20 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" +[[package]] +name = "mac-notification-sys" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca" +dependencies = [ + "cc", + "log", + "objc2 0.6.4", + "objc2-foundation 0.3.2", + "time", + "uuid", +] + [[package]] name = "mach2" version = "0.5.0" @@ -3922,19 +4096,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest", + "digest 0.10.7", ] [[package]] name = "media" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "anyhow", "bindgen", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-video", - "ctor", "foreign-types", "metal", "objc", @@ -3942,15 +4115,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -3970,7 +4143,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block", "core-graphics-types 0.2.0", "foreign-types", @@ -4011,11 +4184,21 @@ 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 = "mio" -version = "1.2.1" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" dependencies = [ "libc", "log", @@ -4035,9 +4218,9 @@ dependencies = [ [[package]] name = "muda" -version = "0.19.2" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a2e3dff89cd322c66647942668faee0a2b1f88ea6cbb4d374b4a8d7e92528c" +checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" dependencies = [ "crossbeam-channel", "dpi", @@ -4050,18 +4233,19 @@ dependencies = [ "objc2-foundation 0.3.2", "once_cell", "png 0.18.1", - "thiserror 2.0.18", + "thiserror 2.0.20", "windows-sys 0.61.2", ] [[package]] name = "naga" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" dependencies = [ "arrayvec", - "bit-set", - "bitflags 2.12.1", + "bit-set 0.9.1", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -4075,19 +4259,10 @@ dependencies = [ "once_cell", "rustc-hash 1.1.0", "spirv", - "thiserror 2.0.18", + "thiserror 2.0.20", "unicode-ident", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.17", -] - [[package]] name = "ndk-sys" version = "0.6.0+11769913" @@ -4103,30 +4278,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.12.1", - "cfg-if", - "cfg_aliases", - "libc", -] - -[[package]] -name = "nix" -version = "0.31.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" -dependencies = [ - "bitflags 2.12.1", - "cfg-if", - "cfg_aliases", - "libc", -] - [[package]] name = "no_std_io2" version = "0.9.4" @@ -4136,6 +4287,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "7.1.3" @@ -4176,7 +4333,7 @@ version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "filetime", "fsevent-sys", "inotify", @@ -4189,6 +4346,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "notify-rust" +version = "4.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b4c1b4f2aa9f25f63a7a49d3dd0ed567b3670da15330a66b29434be899b891" +dependencies = [ + "futures-lite", + "log", + "mac-notification-sys", + "serde", + "tauri-winrt-notification", + "zbus", +] + [[package]] name = "notify-types" version = "1.0.1" @@ -4213,7 +4384,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4232,9 +4403,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", @@ -4251,7 +4422,7 @@ dependencies = [ "num-iter", "num-traits", "once_cell", - "rand 0.9.4", + "rand 0.9.5", "serde", "smallvec", "zeroize", @@ -4263,9 +4434,16 @@ 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.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + [[package]] name = "num-derive" version = "0.4.2" @@ -4274,25 +4452,24 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "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", ] [[package]] name = "num-iter" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -4380,7 +4557,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4396,7 +4573,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -4417,7 +4594,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -4428,7 +4605,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4440,7 +4617,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -4451,7 +4628,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", ] @@ -4462,7 +4639,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", "objc2-core-foundation", @@ -4491,13 +4668,23 @@ dependencies = [ "objc2-foundation 0.3.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.4", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-core-text" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -4509,7 +4696,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -4528,7 +4715,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -4540,7 +4727,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.6.2", "libc", "objc2 0.6.4", @@ -4553,7 +4740,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", ] @@ -4564,7 +4751,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4576,7 +4763,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.6.2", "objc2 0.6.4", "objc2-foundation 0.3.2", @@ -4588,7 +4775,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4601,13 +4788,26 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", ] +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "bitflags 2.13.1", + "block2 0.6.2", + "objc2 0.6.4", + "objc2-core-location", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -4655,11 +4855,11 @@ dependencies = [ "blocking", "cbc", "cipher", - "digest", + "digest 0.10.7", "endi", - "futures-lite 2.6.1", + "futures-lite", "futures-util", - "getrandom 0.4.2", + "getrandom 0.4.3", "hkdf", "hmac", "md-5", @@ -4668,7 +4868,7 @@ dependencies = [ "pbkdf2", "serde", "serde_bytes", - "sha2", + "sha2 0.10.9", "subtle", "zbus", "zbus_macros", @@ -4676,6 +4876,16 @@ dependencies = [ "zvariant", ] +[[package]] +name = "open" +version = "5.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c603ab8300cf18bc3b14146b19fe3dfcc4843ae5a400cd0e7a30b95aa366634" +dependencies = [ + "is-wsl", + "libc", +] + [[package]] name = "openssl-probe" version = "0.2.1" @@ -4690,9 +4900,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "5.3.0" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e" +checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" dependencies = [ "num-traits", ] @@ -4756,7 +4966,7 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.18", + "redox_syscall", "smallvec", "windows-link 0.2.1", ] @@ -4798,7 +5008,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest", + "digest 0.10.7", "hmac", ] @@ -4811,7 +5021,7 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "perf" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "collections", "serde", @@ -4855,7 +5065,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared 0.11.3", - "rand 0.8.6", + "rand 0.8.8", ] [[package]] @@ -4864,7 +5074,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ - "fastrand 2.4.1", + "fastrand", "phf_shared 0.13.1", ] @@ -4878,7 +5088,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -4922,7 +5132,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -4931,12 +5141,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "piper" version = "0.2.5" @@ -4944,15 +5148,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", - "fastrand 2.4.1", + "fastrand", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "png" @@ -4964,7 +5168,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -4973,11 +5177,11 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -4990,7 +5194,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.4", + "rustix", "windows-sys 0.61.2", ] @@ -5006,11 +5210,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" +[[package]] +name = "polycool" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6" +dependencies = [ + "arrayvec", +] + [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" @@ -5040,13 +5253,19 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -5075,7 +5294,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -5103,7 +5322,7 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.12+spec-1.1.0", + "toml_edit 0.25.13+spec-1.1.0", ] [[package]] @@ -5130,33 +5349,11 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -5177,24 +5374,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" dependencies = [ "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] -name = "psm" -version = "0.1.31" +name = "pulp" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645dbe486e346d9b5de3ef16ede18c26e6c70ad97418f4874b8b1889d6e761ea" +checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a" dependencies = [ - "ar_archive_writer", - "cc", + "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.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" [[package]] name = "qoi" @@ -5213,38 +5423,28 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" -dependencies = [ - "memchr", -] - -[[package]] -name = "quick-xml" -version = "0.39.4" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" dependencies = [ "memchr", - "serde", ] [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ "bytes", "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustls", "socket2", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tracing", "web-time", @@ -5252,20 +5452,21 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.14" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +checksum = "04759210543be93709136e28212294a659ef5001836ff4eab4d663e4529bba83" dependencies = [ "bytes", - "getrandom 0.3.4", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.4", + "rand 0.10.2", + "rand_pcg", "ring", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror 2.0.20", "tinyvec", "tracing", "web-time", @@ -5273,23 +5474,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -5308,9 +5509,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -5319,14 +5520,25 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -5365,6 +5577,21 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_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.5" @@ -5373,9 +5600,9 @@ checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" [[package]] name = "rangemap" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" +checksum = "a611d15b50743feb4c76b7d03edcb0e64f399c26961e4efe6975bc398be6aa3d" [[package]] name = "rav1e" @@ -5404,10 +5631,10 @@ dependencies = [ "num-traits", "paste", "profiling", - "rand 0.9.4", + "rand 0.9.5", "rand_chacha 0.9.0", "simd_helpers", - "thiserror 2.0.18", + "thiserror 2.0.20", "v_frame", "wasm-bindgen", ] @@ -5427,6 +5654,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.1", +] + [[package]] name = "raw-window-handle" version = "0.6.2" @@ -5473,36 +5709,33 @@ checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", "core_maths", - "font-types", + "font-types 0.11.3", ] [[package]] -name = "redox_syscall" -version = "0.2.16" +name = "read-fonts" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ - "bitflags 1.3.2", + "bytemuck", + "font-types 0.12.4", + "once_cell", ] [[package]] -name = "redox_syscall" -version = "0.5.18" +name = "reborrow" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.12.1", -] +checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" [[package]] -name = "redox_users" -version = "0.4.6" +name = "redox_syscall" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 1.0.69", + "bitflags 2.13.1", ] [[package]] @@ -5513,42 +5746,42 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] name = "ref-cast" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] [[package]] name = "refineable" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "derive_refineable", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -5558,9 +5791,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -5569,9 +5802,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "renderdoc-sys" @@ -5590,12 +5823,29 @@ dependencies = [ "log", "pico-args", "rgb", - "svgtypes", + "svgtypes 0.15.3", "tiny-skia", - "usvg", + "usvg 0.45.1", "zune-jpeg 0.4.21", ] +[[package]] +name = "resvg" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b563218631706d614e23059436526d005b50ab5f2d506b55a17eb65c5eb83419" +dependencies = [ + "gif 0.14.2", + "image-webp", + "log", + "pico-args", + "rgb", + "svgtypes 0.16.1", + "tiny-skia", + "usvg 0.46.0", + "zune-jpeg 0.5.15", +] + [[package]] name = "rgb" version = "0.8.53" @@ -5634,11 +5884,20 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" +[[package]] +name = "roxmltree" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb" +dependencies = [ + "memchr", +] + [[package]] name = "rust-embed" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" +checksum = "e9e7760e252aaba7b09f4be00e36476cf585bdb68a53552ac954cdf504ab4bc9" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -5647,34 +5906,35 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" +checksum = "3bcfc4d6f53af43755f7a723e4b6b8794fcce052a178dd8c6c1dadc5f5343097" dependencies = [ + "mime_guess", "proc-macro2", "quote", "rust-embed-utils", "shellexpand", - "syn 2.0.117", + "syn 2.0.119", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.11.0" +version = "8.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" +checksum = "42ffa149f6aa81b58a5b3011d01a857c4ed12c7a732d2c51947a4c7c692185f0" dependencies = [ "globset", - "sha2", + "sha2 0.11.0", "walkdir", ] [[package]] name = "rust-i18n" -version = "4.1.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55691a65892c33ee2de49c15ea5600c6f4a70e8eeb8e6c3cd96d2a231d230c40" +checksum = "f10cee36dd3b1f7929ea12b759de9eea9eff83bfccbc71f387ef4d41a57c64a4" dependencies = [ "globwalk", "regex", @@ -5685,9 +5945,9 @@ dependencies = [ [[package]] name = "rust-i18n-macro" -version = "4.1.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30de488acadcf767d97cd48518a8da8ea9777b1c9a5beca4eab78bbf77d07309" +checksum = "f0bb1ed4e04fe26c2a2652cad1c6595efaf7196f4445c0d6e13c67154347fb7e" dependencies = [ "glob", "proc-macro2", @@ -5695,15 +5955,14 @@ dependencies = [ "rust-i18n-support", "serde", "serde_json", - "serde_yaml", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "rust-i18n-support" -version = "4.1.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aea0fef8a93c06326b66392c95a115120e609674cb2132d37d276a6b05b545b4" +checksum = "ba1c083408a2733180ae0acf2897612f8ceec7b0c0dcd065a0a87103bfb3b1d9" dependencies = [ "arc-swap", "base62", @@ -5711,8 +5970,8 @@ dependencies = [ "itertools 0.11.0", "normpath", "serde", + "serde-saphyr", "serde_json", - "serde_yaml", "siphasher", "toml 0.8.23", "triomphe", @@ -5720,9 +5979,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" [[package]] name = "rustc-hash" @@ -5732,9 +5991,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -5747,35 +6006,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "errno", "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] -name = "rustix" -version = "1.1.4" +name = "rustls" +version = "0.23.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags 2.12.1", - "errno", - "libc", - "linux-raw-sys 0.12.1", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" dependencies = [ "once_cell", "ring", @@ -5808,9 +6054,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" dependencies = [ "web-time", "zeroize", @@ -5818,9 +6064,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "ring", "rustls-pki-types", @@ -5829,9 +6075,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" @@ -5839,7 +6085,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "bytemuck", "core_maths", "log", @@ -5878,7 +6124,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "async-task", "backtrace", @@ -5886,15 +6132,16 @@ dependencies = [ "flume", "futures", "parking_lot", - "rand 0.9.4", + "rand 0.9.5", + "wasm_thread", "web-time", ] [[package]] name = "schemars" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" dependencies = [ "dyn-clone", "indexmap", @@ -5906,16 +6153,22 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" +checksum = "d98c67716b46af2f0b8cf752abc930f6f9aecfbf671ecfb531db8a31dbe4e2ba" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.117", + "syn 3.0.4", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -5957,8 +6210,8 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.12.1", - "core-foundation 0.10.0", + "bitflags 2.13.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -5976,9 +6229,9 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.2.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" +checksum = "2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813" [[package]] name = "semver" @@ -5992,14 +6245,33 @@ 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", ] +[[package]] +name = "serde-saphyr" +version = "0.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd22781911de0ca6debda95f073c8f18bec65d1a94f1fa9573f3102e514cea4" +dependencies = [ + "ahash", + "annotate-snippets", + "base64", + "encoding_rs_io", + "getrandom 0.3.4", + "granit-parser", + "nohash-hasher", + "num-traits", + "serde_core", + "smallvec", + "zmij", +] + [[package]] name = "serde_bytes" version = "0.11.19" @@ -6012,33 +6284,33 @@ 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.117", + "syn 3.0.4", ] [[package]] name = "serde_derive_internals" -version = "0.29.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] [[package]] @@ -6052,9 +6324,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "indexmap", "itoa", @@ -6064,28 +6336,15 @@ dependencies = [ "zmij", ] -[[package]] -name = "serde_json_lenient" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e033097bf0d2b59a62b42c18ebbb797503839b26afdda2c4e1415cb6c813540" -dependencies = [ - "indexmap", - "itoa", - "memchr", - "ryu", - "serde", -] - [[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.117", + "syn 3.0.4", ] [[package]] @@ -6118,19 +6377,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "sha1_smol" version = "1.0.1" @@ -6144,8 +6390,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.1", + "digest 0.11.3", ] [[package]] @@ -6190,9 +6447,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "simd_helpers" @@ -6225,7 +6482,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.37.0", +] + +[[package]] +name = "skrifa" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819ab7d62b1d3e72d9d9dea5650bac30424f9111364bb94928dbf5ecad1baa68" +dependencies = [ + "bytemuck", + "read-fonts 0.41.0", ] [[package]] @@ -6245,9 +6512,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smol" @@ -6255,7 +6522,7 @@ version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ - "async-channel 2.5.0", + "async-channel", "async-executor", "async-fs", "async-io", @@ -6263,7 +6530,7 @@ dependencies = [ "async-net", "async-process", "blocking", - "futures-lite 2.6.1", + "futures-lite", ] [[package]] @@ -6278,9 +6545,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -6288,18 +6555,18 @@ 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", ] [[package]] name = "spin" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" dependencies = [ "lock_api", ] @@ -6310,7 +6577,7 @@ version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", ] [[package]] @@ -6319,40 +6586,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "stacker" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "640c8cdd92b6b12f5bcb1803ca3bbf5ab96e5e6b6b96b9ab77dabe9e880b3190" -dependencies = [ - "cc", - "cfg-if", - "libc", - "psm", - "windows-sys 0.61.2", -] - -[[package]] -name = "stacksafe" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9c1172965d317e87ddb6d364a040d958b40a1db82b6ef97da26253a8b3d090" -dependencies = [ - "stacker", - "stacksafe-macro", -] - -[[package]] -name = "stacksafe-macro" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172175341049678163e979d9107ca3508046d4d2a7c6682bee46ac541b17db69" -dependencies = [ - "proc-macro-error2", - "quote", - "syn 2.0.117", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -6365,12 +6598,6 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d08889ec5408683408db66ad89e0e1f93dff55c73a4ccc71c427d5b277ee47e6" -[[package]] -name = "streaming-iterator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" - [[package]] name = "strict-num" version = "0.1.1" @@ -6407,23 +6634,23 @@ dependencies = [ [[package]] name = "strum" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -6435,7 +6662,7 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sum_tree" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "heapless", "log", @@ -6446,34 +6673,35 @@ dependencies = [ [[package]] name = "sval" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb9efbae90f97301f4d25f3be63dfd99d6b7af9d088228a52ec960d649b2e7d" +checksum = "b81b254da21fe1fcc4e3a74fe39b46e25e3a863078f8b71c954d47f84889dbc6" [[package]] name = "sval_buffer" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5c0280ea0af40b3a1fd0b532680b5067482ffb81412ee66ec04b1d9952b49a" +checksum = "50be352d2822ffafb59e3e2ddac9d5ee60f2eeadbb7b5a2a951b9f3651e87a6f" dependencies = [ "sval", "sval_ref", + "zerocopy", ] [[package]] name = "sval_dynamic" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b9067f2e68f58e110cf8019a268057e3791cf74b0fdb1b3c7c6e49104f44e6" +checksum = "b048ca293b998d9a45659159f94a64063791e74cdc670164943dbb434405573d" dependencies = [ "sval", ] [[package]] name = "sval_fmt" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ebdbf0e4b175884aa587fcf551c16dabe245ea04235abdd8cbbd160b27ed5a" +checksum = "e6b5888e40f80568733217f27b7317b845f463400ced36c424b1a804730e53b2" dependencies = [ "itoa", "ryu", @@ -6482,9 +6710,9 @@ dependencies = [ [[package]] name = "sval_json" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e448d9fa216a6c16670b28d624fbbcf5c04e41eb187bd7c52e01222ffa72a12" +checksum = "e17664d6bb6b74947afaab9d7c991caa9bf5638d4dee16fcbef637f440796049" dependencies = [ "itoa", "ryu", @@ -6493,9 +6721,9 @@ dependencies = [ [[package]] name = "sval_nested" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021de5b5c26efd544c694cef9b8a9abe8633481bf3be1ea145a18a740818b291" +checksum = "07c059969ca5ca163ea7fef6c9661758973d17691aba92abdcf5c428f4ec122c" dependencies = [ "sval", "sval_buffer", @@ -6504,18 +6732,18 @@ dependencies = [ [[package]] name = "sval_ref" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ef5ffec8bc52ded04ee424ab8d959e25e64fd40a48a16d21f8991ce824c1bb" +checksum = "42d6b29ff568c85c87561807f51d2adfff4b6016c6363133f7cd1652a12548f3" dependencies = [ "sval", ] [[package]] name = "sval_serde" -version = "2.20.0" +version = "2.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b983833a8a2390f89ebcf9b9acd06883017014b4ffd72ee28e0c9de6852039f5" +checksum = "8f33ec9edc42b12764d5c90ca0a1d84189c6bde81ed27507f1e661c6e4e05853" dependencies = [ "serde_core", "sval", @@ -6534,17 +6762,27 @@ version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" dependencies = [ - "kurbo", + "kurbo 0.11.3", + "siphasher", +] + +[[package]] +name = "svgtypes" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d" +dependencies = [ + "kurbo 0.13.1", "siphasher", ] [[package]] name = "swash" -version = "0.2.7" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" +checksum = "6c2499c2d826531388872b2268718aed907a39bd785ab0dcfe57fab26283f92e" dependencies = [ - "skrifa", + "skrifa 0.44.0", "yazi", "zeno", ] @@ -6561,9 +6799,20 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f" dependencies = [ "proc-macro2", "quote", @@ -6587,7 +6836,25 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "syntect" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "656b45c05d95a5704399aeef6bd0ddec7b2b3531b7c9e900abbf7c4d2190c925" +dependencies = [ + "bincode", + "fancy-regex", + "flate2", + "fnv", + "once_cell", + "regex-syntax", + "serde", + "serde_derive", + "thiserror 2.0.20", + "walkdir", ] [[package]] @@ -6619,7 +6886,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6649,22 +6916,16 @@ dependencies = [ [[package]] name = "taffy" -version = "0.10.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aea22054047c16c3f34d3ac473a2170be1424b1115b2a3adcf28cfb067c88859" +checksum = "c034e05f6ee85a12daa63863c2245797715075c70649947aa0da54f3f2ab1d0f" dependencies = [ "arrayvec", - "grid", "serde", "slotmap", + "smallvec", ] -[[package]] -name = "take-until" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bdb6fa0dfa67b38c1e66b7041ba9dcf23b99d8121907cd31c807a332f7a0bbb" - [[package]] name = "tao-core-video-sys" version = "0.2.0" @@ -6683,16 +6944,27 @@ version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +[[package]] +name = "tauri-winrt-notification" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed071c670382e85fc2f48ae706492d8c338f4f89bf72520d32f8abfe880aade" +dependencies = [ + "thiserror 2.0.20", + "windows 0.61.3", + "windows-version", +] + [[package]] name = "tempfile" version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "fastrand 2.4.1", - "getrandom 0.4.2", + "fastrand", + "getrandom 0.4.3", "once_cell", - "rustix 1.1.4", + "rustix", "windows-sys 0.61.2", ] @@ -6727,11 +6999,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.20", ] [[package]] @@ -6742,25 +7014,25 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] [[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", ] @@ -6779,6 +7051,34 @@ dependencies = [ "zune-jpeg 0.5.15", ] +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -6807,9 +7107,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" dependencies = [ "displaydoc", "zerovec", @@ -6817,9 +7117,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" dependencies = [ "tinyvec_macros", ] @@ -6832,9 +7132,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -6868,13 +7168,14 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" dependencies = [ "bytes", "futures-core", "futures-sink", + "libc", "pin-project-lite", "tokio", ] @@ -6893,9 +7194,9 @@ dependencies = [ [[package]] name = "toml" -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 = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +checksum = "12c0ba9680044b4ce98d391a62094047eada0d64860b80166c39f4a6b5640785" dependencies = [ "indexmap", "serde_core", @@ -6903,7 +7204,7 @@ dependencies = [ "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -6962,23 +7263,23 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.12+spec-1.1.0" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ - "winnow 1.0.3", + "winnow 1.0.4", ] [[package]] @@ -6989,9 +7290,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "toml_writer" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "tower" @@ -7040,7 +7341,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -7080,9 +7381,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.24.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47e6d063cfe4ad2e416fcbb310be3a37c5fd85c745b62cb562bfa4a003df674" +checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e" dependencies = [ "crossbeam-channel", "dirs", @@ -7095,45 +7396,15 @@ dependencies = [ "objc2-foundation 0.3.2", "once_cell", "png 0.18.1", - "thiserror 2.0.18", + "thiserror 2.0.20", "windows-sys 0.61.2", ] -[[package]] -name = "tree-sitter" -version = "0.26.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dab76d0b724ba557954125188cf0633a1ca43199ced82d95c7b9c32cc3de1f3" -dependencies = [ - "cc", - "regex", - "regex-syntax", - "serde_json", - "streaming-iterator", - "tree-sitter-language", -] - -[[package]] -name = "tree-sitter-json" -version = "0.24.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d727acca406c0020cffc6cf35516764f36c8e3dc4408e5ebe2cb35a947ec471" -dependencies = [ - "cc", - "tree-sitter-language", -] - -[[package]] -name = "tree-sitter-language" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782" - [[package]] name = "triomphe" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" +checksum = "b40688ea6389c8171614b25491f71d4a27946e0c7ce2da1c6de27e25abf1a0ae" dependencies = [ "arc-swap", "serde", @@ -7256,12 +7527,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - [[package]] name = "untrusted" version = "0.9.0" @@ -7290,16 +7555,43 @@ dependencies = [ "data-url", "flate2", "fontdb", - "imagesize", - "kurbo", + "imagesize 0.13.0", + "kurbo 0.11.3", + "log", + "pico-args", + "roxmltree 0.20.0", + "rustybuzz", + "simplecss", + "siphasher", + "strict-num", + "svgtypes 0.15.3", + "tiny-skia-path", + "unicode-bidi", + "unicode-script", + "unicode-vo", + "xmlwriter", +] + +[[package]] +name = "usvg" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e419dff010bb12512b0ae9e3d2f318dfbdf0167fde7eb05465134d4e8756076f" +dependencies = [ + "base64", + "data-url", + "flate2", + "fontdb", + "imagesize 0.14.0", + "kurbo 0.13.1", "log", "pico-args", - "roxmltree", + "roxmltree 0.21.1", "rustybuzz", "simplecss", "siphasher", "strict-num", - "svgtypes", + "svgtypes 0.16.1", "tiny-skia-path", "unicode-bidi", "unicode-script", @@ -7319,62 +7611,23 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "util" -version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" -dependencies = [ - "anyhow", - "async-fs", - "async_zip", - "collections", - "command-fds", - "dirs", - "dunce", - "futures", - "futures-lite 1.13.0", - "globset", - "gpui_util", - "itertools 0.14.0", - "libc", - "log", - "mach2", - "nix 0.29.0", - "percent-encoding", - "regex", - "rust-embed", - "schemars", - "serde", - "serde_json", - "serde_json_lenient", - "shlex 1.3.0", - "smol", - "take-until", - "tempfile", - "tendril", - "unicase", - "url", - "walkdir", - "which", -] - [[package]] name = "util_macros" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "perf", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "uuid" -version = "1.23.2" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" +checksum = "b5772d71c9be8a8a6ac2117d949c5b224c1b72241bb611d9a3012edcf8af7812" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "serde_core", "sha1_smol", @@ -7400,9 +7653,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.12.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" +checksum = "2799ffb329a792ecfd902b71306c8a815a6ef1c0470fa9953a6aa4d4cecbe511" dependencies = [ "value-bag-serde1", "value-bag-sval2", @@ -7410,9 +7663,9 @@ dependencies = [ [[package]] name = "value-bag-serde1" -version = "1.12.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16530907bfe2999a1773ca5900a65101e092c70f642f25cc23ca0c43573262c5" +checksum = "0941feceafbe7a8f59ea1096d45b97002884a41306315ad797b3684b63a81d8c" dependencies = [ "erased-serde", "serde_core", @@ -7421,9 +7674,9 @@ dependencies = [ [[package]] name = "value-bag-sval2" -version = "1.12.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00ae130edd690eaa877e4f40605d534790d1cf1d651e7685bd6a144521b251f" +checksum = "839752af8179287d27eb2b94164641b1ede9e60ab7424163388dc21ebd0508cd" dependencies = [ "sval", "sval_buffer", @@ -7499,27 +7752,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", + "wit-bindgen", ] [[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +name = "wasm-bindgen" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.122" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", @@ -7530,9 +7774,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.72" +version = "0.4.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" dependencies = [ "js-sys", "wasm-bindgen", @@ -7540,9 +7784,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7550,48 +7794,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - [[package]] name = "wasm-streams" version = "0.4.2" @@ -7608,8 +7830,7 @@ dependencies = [ [[package]] name = "wasm_thread" version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7516db7f32decdadb1c3b8deb1b7d78b9df7606c5cc2f6241737c2ab3a0258e" +source = "git+https://github.com/zed-industries/wasm_thread?rev=0cf96c7708dfb97ccf3da50347e25edcf75d6937#0cf96c7708dfb97ccf3da50347e25edcf75d6937" dependencies = [ "futures", "js-sys", @@ -7618,15 +7839,90 @@ dependencies = [ ] [[package]] -name = "wasmparser" -version = "0.244.0" +name = "wayland-backend" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" dependencies = [ - "bitflags 2.12.1", - "hashbrown 0.15.5", - "indexmap", - "semver", + "cc", + "downcast-rs", + "log", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" +dependencies = [ + "bitflags 2.13.1", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" +dependencies = [ + "rustix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", ] [[package]] @@ -7643,9 +7939,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.99" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" dependencies = [ "js-sys", "wasm-bindgen", @@ -7669,11 +7965,12 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76e8840e1ba2881d4cbb18d2147627a56af426ff064c0401eb0c8410c6325d07" dependencies = [ "arrayvec", - "bitflags 2.12.1", + "bitflags 2.13.1", "bytemuck", "cfg-if", "cfg_aliases", @@ -7698,13 +7995,14 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f519832254e56965a9940c4af57dcb75f702b6f6fa4a0b172f685395843a4d7" dependencies = [ "arrayvec", - "bit-set", - "bit-vec", - "bitflags 2.12.1", + "bit-set 0.9.1", + "bit-vec 0.9.1", + "bitflags 2.13.1", "bytemuck", "cfg_aliases", "document-features", @@ -7719,9 +8017,10 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.20", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", + "wgpu-core-deps-wasm", "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-naga-bridge", @@ -7730,38 +8029,51 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e39e26c4c0e07589e67d18546cf79ff45383659fc72fca4dd293358a0347f3" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-emscripten" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e09be551dc939498bdd5f6b2c66e55ab275dad25825267a08605a80fc9f0af" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-wasm" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1fb1798be2a912497d4c224f72d39bb0cb34af50e8bcc29865bc339c943059" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e592c1bbef6ad047647ae6e666ebd8cee7a32bb4544d9700ec96cbf73230257" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ace1c17727311c22a46e4e3faf56ea6de81af99dcc839bdfb54857b94d448d" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bit-set", - "bitflags 2.12.1", + "bit-set 0.9.1", + "bitflags 2.13.1", "block2 0.6.2", "bytemuck", "cfg-if", @@ -7794,7 +8106,7 @@ dependencies = [ "raw-window-metal", "renderdoc-sys", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.20", "wasm-bindgen", "wayland-sys", "web-sys", @@ -7807,8 +8119,9 @@ dependencies = [ [[package]] name = "wgpu-naga-bridge" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95226013f547544b223281cd16a4fb549aa9dcb562adbda0faae4c73ffbbc161" dependencies = [ "naga", "wgpu-types", @@ -7816,10 +8129,11 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "29.0.3" -source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88" +version = "29.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84bf84cd9ca8ca45e2b223a3868f1adf9bfc0c66aeac212e76ee7e40fdadf8f5" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "bytemuck", "js-sys", "log", @@ -7829,14 +8143,11 @@ dependencies = [ [[package]] name = "which" -version = "6.0.3" +version = "8.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "bae2f2b2b816647a1cab1acc91f5bd20812d53cb344382635ec2181940c8034f" dependencies = [ - "either", - "home", - "rustix 0.38.44", - "winsafe", + "libc", ] [[package]] @@ -7880,6 +8191,16 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.61.3" @@ -7913,7 +8234,7 @@ checksum = "3a4df73e95feddb9ec1a7e9c2ca6323b8c97d5eeeff78d28f1eccdf19c882b24" dependencies = [ "parking_lot", "rayon", - "thiserror 2.0.18", + "thiserror 2.0.20", "windows 0.61.3", "windows-future 0.2.1", ] @@ -7948,6 +8269,19 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.61.2" @@ -8004,7 +8338,18 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] @@ -8015,7 +8360,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -8026,7 +8371,18 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] @@ -8037,7 +8393,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -8103,6 +8459,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.3.4" @@ -8121,6 +8486,16 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-strings" version = "0.3.1" @@ -8148,15 +8523,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -8175,15 +8541,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - [[package]] name = "windows-sys" version = "0.61.2" @@ -8193,21 +8550,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -8260,10 +8602,13 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" +name = "windows-version" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] [[package]] name = "windows_aarch64_gnullvm" @@ -8277,12 +8622,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -8295,12 +8634,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -8325,12 +8658,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -8343,12 +8670,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -8361,12 +8682,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -8379,12 +8694,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -8417,9 +8726,9 @@ dependencies = [ [[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", ] @@ -8434,12 +8743,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "winsafe" -version = "0.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" - [[package]] name = "wio" version = "0.2.2" @@ -8449,15 +8752,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" @@ -8465,132 +8759,114 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] -name = "wit-bindgen-core" -version = "0.51.0" +name = "workspace-hack" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] +checksum = "beffa227304dbaea3ad6a06ac674f9bc83a3dec3b7f63eeb442de37e7cb6bb01" [[package]] -name = "wit-bindgen-rust" -version = "0.51.0" +name = "writeable" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" +name = "x11" +version = "2.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", + "libc", + "pkg-config", ] [[package]] -name = "wit-component" -version = "0.244.0" +name = "x11-clipboard" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +checksum = "662d74b3d77e396b8e5beb00b9cad6a9eccf40b2ef68cc858784b14c41d535a3" dependencies = [ - "anyhow", - "bitflags 2.12.1", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", + "libc", + "x11rb", ] [[package]] -name = "wit-parser" -version = "0.244.0" +name = "x11rb" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", + "as-raw-xcb-connection", + "gethostname", + "libc", + "rustix", + "x11rb-protocol", + "xcursor", ] [[package]] -name = "workspace-hack" -version = "0.1.0" +name = "x11rb-protocol" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beffa227304dbaea3ad6a06ac674f9bc83a3dec3b7f63eeb442de37e7cb6bb01" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] -name = "writeable" -version = "0.6.3" +name = "xcb" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" +checksum = "a6c2ad15e0e922856ee89afe862b8992334bbe7953adad56cd1199358cb30566" +dependencies = [ + "bitflags 2.13.1", + "libc", + "quick-xml", + "x11", +] [[package]] -name = "x11" -version = "2.21.0" +name = "xcursor" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +checksum = "163b33ed8786455e2fa5d72f554057ce3f3182425434f756cd39c99839d88e23" + +[[package]] +name = "xim-ctext" +version = "0.3.0" +source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8" dependencies = [ - "libc", - "pkg-config", + "encoding_rs", ] [[package]] -name = "xattr" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +name = "xim-parser" +version = "0.2.1" +source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8" dependencies = [ - "libc", + "bitflags 2.13.1", ] [[package]] -name = "xcb" -version = "1.7.0" +name = "xkbcommon" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4c580d8205abb0a5cf4eb7e927bd664e425b6c3263f9c5310583da96970cf6" +checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" dependencies = [ - "bitflags 1.3.2", + "as-raw-xcb-connection", "libc", - "quick-xml 0.30.0", - "x11", + "memmap2", + "xkeysym", ] +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + [[package]] name = "xml-rs" -version = "0.8.28" +version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "xml5ever" @@ -8634,9 +8910,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -8651,15 +8927,15 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] [[package]] name = "zbus" -version = "5.16.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" +checksum = "5db4be7c075cb421e4b7ee645541604239bd243ba7c357511f4ff3a74b555907" dependencies = [ "async-broadcast", "async-executor", @@ -8671,20 +8947,20 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener 5.4.1", + "event-listener", "futures-core", - "futures-lite 2.6.1", + "futures-lite", "hex", "libc", "ordered-stream", - "rustix 1.1.4", + "rustix", "serde", "serde_repr", "tracing", "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 1.0.3", + "winnow 1.0.4", "zbus_macros", "zbus_names", "zvariant", @@ -8708,7 +8984,7 @@ checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "zbus-lockstep", "zbus_xml", "zvariant", @@ -8716,14 +8992,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.16.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" +checksum = "2990635d09ade6df1868f72f8cac69a876a90981e8bd3c40b1be413f8dc88f40" dependencies = [ "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", "zbus_names", "zvariant", "zvariant_utils", @@ -8731,35 +9007,44 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.2" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" +checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" dependencies = [ "serde", - "winnow 1.0.3", + "winnow 1.0.4", "zvariant", ] [[package]] name = "zbus_xml" -version = "5.1.1" +version = "5.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8067892e940ed1727dea64690378601603b31d62dfde019a5335fbb7c0e0ed9" +checksum = "d1586c021a01ca0a9216dcd874e546382e156a5cbab5fab6cb5f10087e22682a" dependencies = [ - "quick-xml 0.39.4", "serde", + "winnow 1.0.4", "zbus_names", "zvariant", ] +[[package]] +name = "zcheapstr" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1afec51604565183aeb5c54c20aeab286120d4e4460f7f76e3e8bb8c0d99473" +dependencies = [ + "serde", +] + [[package]] name = "zed-font-kit" version = "0.14.1-zed" source = "git+https://github.com/zed-industries/font-kit?rev=94b0f28166665e8fd2f53ff6d268a14955c82269#94b0f28166665e8fd2f53ff6d268a14955c82269" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.1", "byteorder", - "core-foundation 0.10.0", + "core-foundation 0.10.1", "core-graphics 0.24.0", "core-text", "dirs", @@ -8835,7 +9120,7 @@ dependencies = [ "core-graphics-helmer-fork", "log", "objc", - "rand 0.8.6", + "rand 0.8.8", "screencapturekit", "screencapturekit-sys", "sysinfo", @@ -8858,6 +9143,19 @@ dependencies = [ "workspace-hack", ] +[[package]] +name = "zed-xim" +version = "0.4.0-zed" +source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8" +dependencies = [ + "ahash", + "hashbrown 0.14.5", + "log", + "x11rb", + "xim-ctext", + "xim-parser", +] + [[package]] name = "zeno" version = "0.3.3" @@ -8866,22 +9164,22 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.50" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.50" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -8901,35 +9199,35 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "zerotrie" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" dependencies = [ "displaydoc", "yoke", @@ -8938,9 +9236,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" dependencies = [ "yoke", "zerofrom", @@ -8949,19 +9247,25 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", ] +[[package]] +name = "zlib-rs" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12" + [[package]] name = "zlog" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "anyhow", "chrono", @@ -8971,14 +9275,14 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "ztracing" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" dependencies = [ "tracing", "tracing-subscriber", @@ -8989,7 +9293,7 @@ dependencies = [ [[package]] name = "ztracing_macro" version = "0.1.0" -source = "git+https://github.com/zed-industries/zed#86effffd34634945a4971e1c6c65cd45b21ce6a9" +source = "git+https://github.com/zed-industries/zed#8514ce3ba1ee7a6786e35f6566c7cfeb3c42d3b7" [[package]] name = "zune-core" @@ -8999,9 +9303,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] name = "zune-core" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" +checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" [[package]] name = "zune-inflate" @@ -9027,46 +9331,47 @@ version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ - "zune-core 0.5.1", + "zune-core 0.5.3", ] [[package]] name = "zvariant" -version = "5.12.0" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" +checksum = "c1d34c27cc6cdd1f458427519dd6b8612f7b7e3f7b9a0b2355d041dda9869147" dependencies = [ "endi", "enumflags2", "serde", "serde_bytes", - "winnow 1.0.3", + "winnow 1.0.4", + "zcheapstr", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.12.0" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" +checksum = "864155e69b4352db0c7f374917bf45d1e0c8d17659c8b3dbf9795f3673f8c497" dependencies = [ "proc-macro-crate 3.5.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.4", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.4.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" +checksum = "bad0294361a320b694a328460dc73add56c306150f5cb6bfafc44446120008a3" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.117", - "winnow 1.0.3", + "syn 3.0.4", + "winnow 1.0.4", ] diff --git a/Cargo.toml b/Cargo.toml index b6f47aa..1b32cf7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ gpui-component-assets = { git = "https://github.com/longbridge/gpui-component" } # Preferences: serialize a Settings struct to the platform config dir. serde = { version = "1", features = ["derive"] } serde_json = "1" -directories = "5" +directories = "6" # --- Optional: menu-bar / tray apps (`--features tray`) — cross-platform --- # tray-icon draws a native status item on every OS: NSStatusItem (macOS), @@ -100,4 +100,4 @@ osx_minimum_system_version = "11.0" # notices to travel with redistributed binaries, so cargo-bundle copies these # into the .app / .deb. resources = ["NOTICE", "LICENSE"] -copyright = "Copyright (c) 2026 {{project-name | title_case}} contributors. 0BSD. Bundles Apache-2.0/ISC/GPL-3.0-or-later third-party code; see NOTICE." +copyright = "Copyright (c) 2026 {{project-name | title_case}} contributors. 0BSD. Bundles Apache-2.0/ISC third-party code; see NOTICE." diff --git a/NOTICE b/NOTICE index 7833bf9..1b30284 100644 --- a/NOTICE +++ b/NOTICE @@ -1,4 +1,4 @@ -Deck — third-party attributions +{{project-name | title_case}} — third-party attributions ==================================== This project is 0BSD licensed (see LICENSE) — you may use it with no attribution required. It bundles or depends on the @@ -25,39 +25,13 @@ GPUI and gpui-component The framework crates are pulled from git (pinned in Cargo.lock), not crates.io, and are all Apache-2.0: -- gpui, gpui_platform, sum_tree — from Zed (https://github.com/zed-industries/zed, - pinned at commit 86effffd). Apache-2.0, © Zed Industries. +- gpui, gpui_platform, sum_tree, zlog, ztracing, ztracing_macro — from Zed + (https://github.com/zed-industries/zed, pinned at commit 8514ce3b). + Apache-2.0, © Zed Industries. - gpui-component, gpui-component-assets — from - https://github.com/longbridge/gpui-component (pinned at commit dadfca97). + https://github.com/longbridge/gpui-component (pinned at commit 0c746dff). Apache-2.0, © Longbridge. -GPL-3.0-or-later components (matters mainly for closed-source binaries) -....................................................................... -Zed's logging/tracing crates — zlog, ztracing, ztracing_macro — are -GPL-3.0-or-later, and the git gpui stack links them into the binary via the -chain `gpui -> sum_tree -> ztracing -> zlog`. sum_tree itself is Apache-2.0; it -is simply the carrier whose unconditional `ztracing` dependency drags the three -GPL crates in. Deck did not add them — Zed wired ztracing into sum_tree in Dec -2025 (PR #44147), so they are present on Deck's pinned git commit and on current -gpui main, but NOT in the Oct-2025 crates.io 0.2.2 snapshot. At Deck's default -build they are compile-time no-ops (dormant Tracy instrumentation, active only -behind an env-var-gated `--cfg ztracing`). - -GPL obligations attach to DISTRIBUTION, not to building or running: - - - Local / internal-only use: no obligation, on any channel. - - Open-source fork (source already public): GPL-3.0's source-availability - requirement is satisfied trivially; nothing further to do. - - Closed-source / proprietary binary: you cannot statically link GPL-3.0 code - and keep the combined work proprietary. Build on the permissive crates.io - pair (`gpui = "0.2"`, `gpui-component = "0.5"`), whose `gpui_sum_tree` - carries none of Zed's git tracing crates, so the binary is free of the - GPL-3.0 chain. - -Deck's own source is 0BSD regardless. See deny.toml for the scoped license -exceptions covering exactly these three crates, and zed-industries/zed#55470 for -the upstream tracking issue. This is a summary, not legal advice. - tray-icon (optional, `--features tray`) --------------------------------------- - tray-icon, muda, objc2, objc2-app-kit — MIT/Apache-2.0 (Tauri / objc2 diff --git a/README.md b/README.md index 70cdaa4..a7fc407 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ cargo run The first build compiles GPUI + wgpu from source and takes roughly 5–15 minutes depending on the machine (once); after that, rebuilds are fast. You need **`rustup`** — the exact Rust version is pinned -in `rust-toolchain.toml` (currently `1.95.0`, matching Zed) and installed automatically on first build. +in `rust-toolchain.toml` (currently `1.97.1`, matching Zed) and installed automatically on first build. [`just`](https://github.com/casey/just) is recommended for the task recipes (`cargo install just`, or `brew install just` / your distro's package) — every recipe is plain `cargo` underneath, so it's optional. Plus: @@ -263,10 +263,8 @@ it's developed against Zed's gpui **HEAD** — so the matched git pair is the on with the component kit. Why not crates.io? Zed publishes `gpui` there only rarely (the `0.2.x` line shipped Oct 2025 and nothing since), so the published `gpui-component` is pinned to an ~8-month-old gpui snapshot. Deck takes the fresh path and bumps on a cadence (`just bump-gpui`, ~monthly); the plain-stable -crates.io pair (`gpui = "0.2"` + `gpui-component = "0.5"`) is documented as a zero-git **fallback** — -which also sidesteps the GPL-3.0 binary obligation noted under [license](#credits--license), since the -crates.io `gpui` pulls none of Zed's git-only logging crates. Full -rationale + bump/fallback procedures in [LEARNINGS §2](docs/LEARNINGS.md#dependencies) and +crates.io pair (`gpui = "0.2"` + `gpui-component = "0.5"`) is documented as a zero-git **fallback**. +Full rationale + bump/fallback procedures are in [LEARNINGS §2](docs/LEARNINGS.md#dependencies) and [UPGRADING.md](docs/UPGRADING.md). ## Credits & license @@ -276,21 +274,7 @@ Built on [Zed](https://github.com/zed-industries/zed) (GPUI) and [Lucide](https://lucide.dev) (ISC). Deck itself is 0BSD — zero-attribution, do whatever you want. See [NOTICE](NOTICE) for third-party attributions. -**On the GPL crates — read this only if you ship a _closed-source_ binary.** Deck's default (git) -channel links three of Zed's crates that are `GPL-3.0-or-later` — `zlog`, `ztracing`, `ztracing_macro` -— via the chain `gpui → sum_tree → ztracing → zlog`. Deck didn't add them; Zed wired them into -`sum_tree` ([PR #44147](https://github.com/zed-industries/zed/pull/44147), Dec 2025), and at Deck's -default build they're inert no-ops (dormant Tracy instrumentation). GPL obligations attach only when -you **distribute a binary**, so what this means depends on you: - -- **Build / run locally, or internal-only use** — nothing to do, on any channel. -- **Open-source fork** — nothing to do: if your source is public, GPL-3.0's source-availability - requirement is met trivially (0BSD lets you fold your code into the combined work). -- **Closed-source / proprietary binary** — you can't statically link GPL-3.0 code and keep the - result proprietary. Build on the permissive **crates.io pair** (`gpui = "0.2"`, - `gpui-component = "0.5"`) instead: its `gpui_sum_tree` carries none of Zed's git tracing crates, so - the binary is free of the GPL-3.0 chain. See [the dependency story](#tech-stack--the-dependency-story) - and [UPGRADING.md](docs/UPGRADING.md). - -Tracked upstream at [zed-industries/zed#55470](https://github.com/zed-industries/zed/issues/55470) -(likely to resolve at the source). This is a summary, not legal advice — details in [NOTICE](NOTICE). +The default git dependency tree is now permissive: Zed relicensed its `zlog`, `ztracing`, and +`ztracing_macro` crates to Apache-2.0 in +[PR #63573](https://github.com/zed-industries/zed/pull/63573). Deck's `cargo-deny` policy has no +copyleft exceptions; a future license regression fails CI. This is a summary, not legal advice. diff --git a/README.md.liquid b/README.md.liquid new file mode 100644 index 0000000..baeab52 --- /dev/null +++ b/README.md.liquid @@ -0,0 +1,61 @@ +# {{project-name | title_case}} + +A native desktop app for macOS and Linux, built with +[GPUI](https://www.gpui.rs/) and +[gpui-component](https://github.com/longbridge/gpui-component). + +This project was generated from the [Deck](https://github.com/hellno/deck) +starter. The crate name, display name, bundle identifier, config directory, and +license have already been personalized for `{{project-name}}`. + +## Run it + +```bash +cargo run +``` + +The first build compiles the git-pinned GPUI stack and can take several minutes. +The exact Rust version is pinned in `rust-toolchain.toml` and rustup installs it +automatically. + +Install the task runner once with `cargo install just` (or your package manager). +The bundle recipe also needs `cargo install cargo-bundle`. + +Useful recipes: + +```bash +just run # normal desktop window +just run-tray # menu-bar / tray mode +just run-overlay # floating overlay demo (macOS; Linux builds as a no-op) +just ci # format, lint every feature combination, and test +just bundle # distributable app/package via cargo-bundle +``` + +## What is included + +- Native window, title bar, menus, and portable keyboard shortcuts +- Command palette with fuzzy search, grouping, recents, and keyboard control +- Dark/light theme and six selectable brand accents +- Typed JSON settings in the platform config directory +- Optional tray mode and macOS floating overlay surfaces +- Reproducible git-pinned GPUI dependencies and cross-platform CI + +The app shell lives in `src/shell.rs`; replace `src/welcome.rs` with your product +UI and add routes there. `src/command_palette.rs` is the command registry and +`src/theme.rs` owns the visual tokens. + +## Make it yours + +1. Replace the welcome UI and starter copy. +2. Drop your artwork at `assets/icon-source.png`, install Pillow, and run + `just icon` on macOS. +3. Update `[package.metadata.bundle]` in `Cargo.toml` for your product category + and descriptions. +4. Install `cargo-bundle` if needed, then run `just ci` and `just bundle`. + +Deep implementation notes inherited from the starter live in `docs/`, including +GPUI patterns, background work, dependency upgrades, and overlay hardening. + +## License + +This generated project is 0BSD. Third-party notices are in [NOTICE](NOTICE). diff --git a/cargo-generate.toml b/cargo-generate.toml index 53308d2..0581fa7 100644 --- a/cargo-generate.toml +++ b/cargo-generate.toml @@ -11,12 +11,13 @@ [template] cargo_generate_version = ">=0.18.0" -# ALLOWLIST: ONLY these files are processed for Liquid `{{ }}` tokens. Every other -# file (justfile, README, .github/*, docs/*, the other src/*.rs) is copied verbatim, -# so their braces/`${{ }}`/code are never touched. +# ALLOWLIST: ONLY these files are processed for Liquid tokens. Every other file +# (docs/* and the other src/*.rs) is copied verbatim, so its braces/code are never +# touched. Maintainer-facing files with generated-project `.liquid` variants are +# listed by their destination names below. # # ⚠️ Maintaining this: to rename a new literal, add its file here AND add the token. -# NEVER put a literal `{{` or `{%` in an included file — Liquid would try to parse it. +# In `.liquid` overrides, wrap Just/GitHub `${{ }}` syntax in Liquid raw blocks. include = [ "Cargo.toml", # Cargo.lock's root [[package]] name must track Cargo.toml's, or `cargo --locked` @@ -27,6 +28,27 @@ include = [ "src/overlay/mod.rs", "scripts/make-app-icon.py", "LICENSE", + "NOTICE", + # Generated-project variants. cargo-generate strips `.liquid` and lets these + # overwrite the maintainer-facing files with fork-appropriate instructions. + # Match the destination names: cargo-generate strips `.liquid` before it + # applies this processing allow-list. + "README.md", + "AGENTS.md", + "CLAUDE.md", + "justfile", + ".github/workflows/ci.yml", + ".github/dependabot.yml", +] + +# Repository-governance files belong to the Deck template itself. A generated app +# starts without upstream issue links, contributor policy, or maintainer contacts. +ignore = [ + "CONTRIBUTING.md", + "CODE_OF_CONDUCT.md", + "SECURITY.md", + ".github/ISSUE_TEMPLATE", + ".github/PULL_REQUEST_TEMPLATE.md", ] [placeholders] diff --git a/clippy.toml b/clippy.toml index 4ab09b1..f6b68f9 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,6 +1,6 @@ # clippy knobs for Deck. why these (and why the wallet stuff is omitted): docs/AGENTIC-ENGINEERING.md -msrv = "1.95.0" # match rust-toolchain.toml +msrv = "1.97.1" # match rust-toolchain.toml # Deck is an APP, and the command_palette tests unwrap/expect/panic freely — keep them legal. allow-unwrap-in-tests = true diff --git a/deny.toml b/deny.toml index bc724fb..7a02c0c 100644 --- a/deny.toml +++ b/deny.toml @@ -8,9 +8,8 @@ # # Deck is a single-crate GPUI + Rust desktop-app starter (no [workspace]). Its own # crate is licensed 0BSD, so cargo-deny — which license-checks first-party crates too — -# must allow 0BSD in the main list below. A scoped [licenses] exceptions block (further -# down) whitelists GPL for ONLY three named Zed crates the git gpui stack drags in — see -# the ⚠️ note there before shipping a closed-source fork. +# must allow 0BSD in the main list below. The configuration is intentionally +# exception-free: every linked dependency must match the permissive allow-list. # --------------------------------------------------------------------------- # Advisories — RustSec security (vulnerability) + unmaintained-crate advisories. @@ -49,33 +48,17 @@ allow = [ "MPL-2.0", "Unlicense", "CC0-1.0", - "NCSA", # libfuzzer-sys — permissive (U. of Illinois/NCSA), pulled transitively "bzip2-1.0.6", # libbz2-rs-sys — permissive BSD-style bzip2 license ] -# ⚠️ COPYLEFT IN THE TREE — read this before shipping a closed-source fork. Zed's logging/tracing -# crates (zlog, ztracing, ztracing_macro) are GPL-3.0-or-later and are LINKED into the binary as a -# normal runtime dep: gpui -> sum_tree -> ztracing -> zlog. This is inherent to building on Zed's -# git gpui stack — Deck did not add it (Zed wired ztracing into sum_tree in PR #44147, Dec 2025). -# The exceptions below allow GPL ONLY for those three named crates (so the gate can go green); they -# do NOT open the whole tree to copyleft. If your product cannot take a GPL-3.0 obligation, the clean -# fix is to build on the permissive crates.io pair (gpui = "0.2", gpui-component = "0.5"), whose -# gpui_sum_tree carries none of these crates — not to delete these exceptions and ship the git stack -# anyway. Tracked upstream: zed-industries/zed#55470. Re-verify the crate list after every `just bump-gpui`. -exceptions = [ - { allow = ["GPL-3.0-or-later"], crate = "zlog" }, - { allow = ["GPL-3.0-or-later"], crate = "ztracing" }, - { allow = ["GPL-3.0-or-later"], crate = "ztracing_macro" }, -] - # --------------------------------------------------------------------------- # Bans — duplicate versions, wildcard requirements, and explicitly-denied crates. # --------------------------------------------------------------------------- [bans] -# warn, not deny: the git gpui stack legitimately pulls in multiple versions of -# some crates (e.g. objc2 0.5 + 0.6), so a hard deny would be permanently red. -# Surface the duplicates as a warning instead of blocking on them. -multiple-versions = "warn" +# allow, not deny: the cross-platform GPUI graph legitimately pulls many target- +# specific duplicate versions. The resulting warnings are thousands of lines and +# not actionable in this leaf crate; advisories remain denied across every version. +multiple-versions = "allow" # allow, not deny: Deck's gpui stack (gpui, gpui_platform, gpui-component, gpui-component-assets) # is pulled from git WITHOUT version requirements — reproducibility comes from the pinned # Cargo.lock, not semver. cargo-deny reads those unversioned git deps as wildcards, so `deny` is @@ -90,12 +73,14 @@ deny = [ # --------------------------------------------------------------------------- # Sources — only crates.io and the known git origins are allowed. # -# allow-git below is the SIX git origins Deck currently depends on (the Zed gpui -# stack + gpui-component), written in the EXACT form Cargo.lock records them — note -# the `.git` suffix on reqwest and wgpu, which Zed pins that way. (cargo-deny happens +# allow-git below is the six active git origins Deck currently depends on (the Zed +# GPUI stack + gpui-component), written in the EXACT form Cargo.lock records them — note +# the `.git` suffix on reqwest and xim-rs, which Zed pins that way. (cargo-deny happens # to normalize the suffix away when matching, but the exact form is match-proof if that -# ever changes.) Re-derive after every `just bump-gpui` — Zed may add or retire -# forks — with: grep "git+" Cargo.lock +# ever changes.) Cargo.lock also records GPUI's inactive optional `scap` source; +# cargo-deny correctly ignores that unreachable package and would warn if it were +# pre-allowed. After every `just bump-gpui`, let `cargo deny check sources` identify +# newly reachable origins rather than copying every source from the lockfile. # --------------------------------------------------------------------------- [sources] unknown-registry = "deny" @@ -104,7 +89,7 @@ allow-git = [ "https://github.com/zed-industries/zed", "https://github.com/zed-industries/font-kit", "https://github.com/zed-industries/reqwest.git", - "https://github.com/zed-industries/scap", - "https://github.com/zed-industries/wgpu.git", + "https://github.com/zed-industries/wasm_thread", + "https://github.com/zed-industries/xim-rs.git", "https://github.com/longbridge/gpui-component", ] diff --git a/docs/AGENTIC-ENGINEERING.md b/docs/AGENTIC-ENGINEERING.md index 2a98c16..9f927c1 100644 --- a/docs/AGENTIC-ENGINEERING.md +++ b/docs/AGENTIC-ENGINEERING.md @@ -77,7 +77,7 @@ gate is the reth/alloy convention. **What.** New file at the repo root. ```toml -msrv = "1.95.0" # match rust-toolchain.toml; governs which API suggestions clippy makes +msrv = "1.97.1" # match rust-toolchain.toml; governs which API suggestions clippy makes allow-unwrap-in-tests = true # the command_palette fuzzy-match tests unwrap() freely allow-expect-in-tests = true allow-panic-in-tests = true @@ -105,7 +105,7 @@ stricter crate-level restriction lints. ### 3. Deterministic formatting — `rustfmt.toml` -**What.** New file at the repo root. All keys are **stable-channel** (Deck's pinned 1.95.0 stable +**What.** New file at the repo root. All keys are **stable-channel** (Deck's pinned 1.97.1 stable `cargo fmt` honors them; nightly-only keys like `imports_granularity` / `group_imports` are deliberately excluded — stable silently ignores them, which is worse than not setting them). @@ -147,34 +147,34 @@ allow = ["MIT", "Apache-2.0", "Apache-2.0 WITH LLVM-exception", "BSD-2-Clause", "0BSD", "ISC", "Unicode-3.0", "Zlib", "MPL-2.0", "Unlicense", "CC0-1.0"] [bans] -multiple-versions = "warn" # the git gpui stack legitimately duplicates crates (objc2 0.5+0.6) — deny is permanently red -wildcards = "deny" +multiple-versions = "allow" # GPUI has many target-specific duplicates; advisories still cover every version +wildcards = "allow" # git GPUI deps omit versions; Cargo.lock supplies the reproducible pins deny = [{ crate = "openssl", reason = "prefer rustls/ring; avoid the OpenSSL CVE surface" }] [sources] unknown-registry = "deny" unknown-git = "deny" -# All SIX git origins, not two: Zed pins its own forks of font-kit/reqwest/scap/wgpu, pulled -# transitively by the gpui stack. These are the exact forms recorded in Cargo.lock (note the -# `.git` suffix on reqwest/wgpu). Re-derive with `grep 'git+' Cargo.lock` after every -# `just bump-gpui` — Zed may add or retire forks. +# All six active git origins, not two: Zed pins font-kit/reqwest/wasm_thread/xim-rs, pulled +# transitively by the GPUI stack. Cargo.lock also records the inactive optional `scap` source, +# which cargo-deny correctly ignores. After `just bump-gpui`, let `cargo deny check sources` +# identify newly reachable origins rather than copying every source from the lockfile. allow-git = ["https://github.com/zed-industries/zed", "https://github.com/zed-industries/font-kit", "https://github.com/zed-industries/reqwest.git", - "https://github.com/zed-industries/scap", - "https://github.com/zed-industries/wgpu.git", + "https://github.com/zed-industries/wasm_thread", + "https://github.com/zed-industries/xim-rs.git", "https://github.com/longbridge/gpui-component"] ``` **Why for an agent.** Three failure modes, gated at once: (a) pulling in a crate with a known RUSTSEC advisory, (b) adding a dep from a random git fork — the `[sources]` allow-list permits only -the known origins (the six Zed/longbridge ones the gpui stack pulls), so a typo-squat or malicious +the known origins (the six Zed/longbridge ones the GPUI stack pulls), so a typo-squat or malicious fork fails CI, (c) license drift. Cheap insurance for a project people fork and ship. **Tradeoff.** The license `allow` list must be **seeded locally first** (`cargo deny check -licenses`), and `multiple-versions` must stay `warn` because the git gpui tree legitimately -duplicates crates. So the CI job lands **non-blocking** and is promoted after one green run (see -Rollout). +licenses`). `multiple-versions` stays `allow` because the cross-platform git GPUI tree legitimately +contains many target-specific duplicates; printing them produces thousands of non-actionable lines, +while RustSec advisories still evaluate every locked version. ### 5. Close the CI gaps @@ -332,10 +332,10 @@ list, so keep the two in sync (they're short). All of it is zero new dependencie | `#![forbid(unsafe_code)]` at the crate root | No escape hatch if an `objc2` bump needs a raw `unsafe` in the tray path. Use `unsafe_code = "deny"` in the manifest instead (§6). | | `clippy::pedantic` / `clippy::nursery` globally | Too noisy for a small UI app; nursery lints are unstable → a toolchain bump can surface new warnings and break `-D warnings`. Cherry-pick instead. | | The full `clippy::restriction` group | Clippy's own docs say never enable it wholesale (it contains mutually contradictory lints). Pick individual ones. | -| Edition 2024 bump | Deck pins 1.95.0 in lockstep with gpui's git HEAD; an edition bump is orthogonal churn that risks the gpui pairing. | -| Nightly rustfmt keys / nightly build flags (`-Zthreads`, cranelift, `-Zshare-generics`) | The 1.95.0 stable pin is **mandatory** for the git gpui build — nightly flags in a committed config brick `cargo build` for everyone. | +| Edition 2024 bump | Deck pins 1.97.1 in lockstep with gpui's git HEAD; an edition bump is orthogonal churn that risks the gpui pairing. | +| Nightly rustfmt keys / nightly build flags (`-Zthreads`, cranelift, `-Zshare-generics`) | The 1.97.1 stable pin is **mandatory** for the git gpui build — nightly flags in a committed config brick `cargo build` for everyone. | | `panic = "abort"` | Deck's `command_palette` tests rely on unwinding; `abort` also loses the backtrace on a panic. Keep the default unwinding. | -| `multiple-versions = "deny"` in deny.toml | The git gpui stack pulls duplicate versions (objc2 0.5+0.6); permanently red. Keep `warn`. | +| `multiple-versions = "deny"` in deny.toml | The git GPUI stack pulls many target-specific duplicate versions; permanently red. Keep `allow` and rely on the advisory gate for vulnerable versions. | | mold/lld linker config | Not worth the per-machine setup churn for a starter: it forces every forker/CI runner to install and configure an alternate linker, and on macOS `lld` is a measured *regression* vs Apple's default `ld`/`ld-prime`. The stock toolchain links fine. Do nothing. | | deckard-core-style crate-level `#![deny(clippy::unwrap_used, expect_used, panic, indexing_slicing)]` + `#![forbid(unsafe_code)]` on a security core | Deck has **no** security/crypto core — that hardening is wallet-specific and intentionally not applied here (e.g. `expect_used` would red `src/main.rs` and `src/tray.rs`, where expecting an infallible GPUI handle is correct). If you fork Deck into something security-sensitive, add a headless, GPUI-free core crate and adopt that hardening there. See the [deckard PR](https://github.com/hellno/deckard/pull/8) for the full pattern (bounds-checked reader, `Zeroizing` secrets, `#[must_use]` on secret types). | diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index 6ab9505..b4d3e4e 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -12,15 +12,20 @@ on a cadence (monthly is plenty). ## Toolchain -The git channel needs a **recent Rust stable**, pinned in `rust-toolchain.toml` (currently `1.95.0`) to -match Zed's. Zed's gpui uses freshly-stabilized `std` APIs (e.g. `std::hint::cold_path`, stable as of -1.95.0), so an older stable fails with `use of unstable library feature …`. **When you bump gpui, also -check Zed's toolchain and match it:** +The git channel needs a **recent Rust stable**, pinned in `rust-toolchain.toml` (currently `1.97.1`) to +match Zed's. Zed's gpui regularly adopts freshly-stabilized `std` APIs, so an older stable can fail +with `use of unstable library feature …`. **When you bump gpui, also check Zed's toolchain and match +it:** ## The monthly bump (default git channel) -1. **`just bump-gpui`** — updates the four git crates to the latest upstream commits and rebuilds. +1. **`just bump-gpui`** — refreshes the full lockfile (git stack plus compatible registry updates) + and rebuilds. In this raw template it works in a generated staging project and copies + `Cargo.lock` back only after success; in a generated fork it restores the old lock on failure. 2. **Unstable-feature error?** Bump `rust-toolchain.toml`'s `channel` to match Zed's (link above), rebuild. + If an upstream `main` commit itself is red, retry with the newest green commit instead of patching + dependency source locally: `GPUI_COMPONENT_REV= just bump-gpui` or + `ZED_REV= just bump-gpui`. 3. **Fix any API drift.** It surfaces only in deck's small surface: - `src/main.rs` — the bootstrap (`gpui_platform::application()`, `with_assets`, `init`, menus, window) - `src/shell.rs` / `welcome.rs` / `settings_view.rs` — the views (`Button`, `Input`, `Switch`, flex, actions) @@ -28,9 +33,13 @@ check Zed's toolchain and match it:** For reference, the Oct-2025 → mid-2026 jump needed only: `Application::new()` → `gpui_platform::application()`, > a new `Menu { disabled: false, .. }` field, and a `cx` argument on `window.focus(&handle, cx)`. -4. **Smoke-test:** `cargo run`, then `cargo run --features tray`. Click the theme toggle, accent picker, - settings page, and menu bar — runtime contracts (init order, `Root` as top layer) aren't caught by `cargo build`. -5. **Commit** `Cargo.lock` (+ `rust-toolchain.toml` if you bumped it). Note what drifted — it speeds up next time. +4. **Run the full gate:** `just check-template` here, or `just ci` in a generated fork. +5. **Smoke-test.** In this raw template, run `just screenshot /tmp/deck-smoke.png` and + `just screenshot /tmp/deck-tray-smoke.png tray`; both recipes render a generated fork before launching it. + In a generated fork, run `cargo run`, then `cargo run --features tray`. Click the theme toggle, + accent picker, settings page, and menu bar — runtime contracts (init order, `Root` as top layer) + aren't caught by `cargo build`. +6. **Commit** `Cargo.lock` (+ `rust-toolchain.toml` if you bumped it). Note what drifted — it speeds up next time. ## Pinning to a specific commit (optional) @@ -60,11 +69,12 @@ publishes a new release. Bumping then is `cargo update` within the `0.x` ranges; ## If a bump goes bad -Revert and you're back on the last good lockfile: +The bump script does not install a failed lockfile. If later verification uncovers a problem, +restore the last committed dependency state: ``` git checkout -- Cargo.toml Cargo.lock rust-toolchain.toml src/ ``` -gpui-component yanks ~1 in 5 releases and gpui HEAD is pre-1.0, so an occasional bad bump is normal — -stay on the last green commit and try again next cycle. +Both projects are pre-1.0 and their main branches occasionally go red. Stay on the last green commit +and try again next cycle rather than carrying a local patch to dependency source. diff --git a/docs/overlay.md b/docs/overlay.md index 31459fd..77f4179 100644 --- a/docs/overlay.md +++ b/docs/overlay.md @@ -329,7 +329,12 @@ P2 and P3 are independent; fixing one does not fix the other. 2. With TextEdit foreground holding a caret, click a HUD **button** → assert TextEdit keeps focus (P2 fixed). 3. Focus a GPUI **text input** inside the HUD → determine whether it can receive typing at all. If not, **document "no in-HUD text input"** as a known limitation (the Wispr model is global-hotkey-driven, so this is acceptable) and proceed; if yes, great. -**Why NOT swizzle `canBecomeKeyWindow → NO`:** it's a class method on the shared `GPUIPanel` class (`gpui_macos/src/window.rs:125-129`), hitting every `PopUp`/`Floating`/`Dialog` window app-wide and brittle across `just bump-gpui`; it's also too strong (a never-key panel can never host text and never gets `keyDown:`). Per-instance is strictly safer. (Blast radius today is small — gpui-component opens only `WindowKind::Normal`, verified — but still.) +**Why NOT swizzle `canBecomeKeyWindow → NO`:** it's an instance method installed on the shared +`GPUIPanel` class (`gpui_macos/src/window.rs`, `build_window_class`), so replacing it hits every +`PopUp`/`Floating`/`Dialog` window app-wide and is brittle across `just bump-gpui`; it's also too +strong (a never-key panel can never host text and never gets `keyDown:`). Per-instance is strictly +safer. (Blast radius today is small — gpui-component opens only `WindowKind::Normal`, verified — +but still.) ### P3 — Click absorption / passthrough **`setIgnoresMouseEvents` is whole-window, all-or-nothing** — turn it on and the HUD's own buttons stop receiving clicks. So it is only a tool for fully passive overlays (cursor trails / screen-draw-idle, out of v1 scope), never the interactive HUD. @@ -419,20 +424,19 @@ inside a fixed-size window (GPUI has no atomic window move/bounds setter). ## §1 — Verified API quick-reference (don't re-research; all checked against the pinned source) -Pinned source (this machine): GPUI `~/.cargo/git/checkouts/zed-a70e2ad075855582/86effff/crates/{gpui,gpui_macos}`, -gpui-component `~/.cargo/git/checkouts/gpui-component-95ce574d8a0da8b8/dadfca9`. (GPUI rev `86effffd…`, -component rev `dadfca9…` from `Cargo.lock`; on another machine locate via `cargo metadata`.) +Pinned source (this update): GPUI `8514ce3b…`, gpui-component `0c746dff…` (from `Cargo.lock`; +locate the checkout on another machine via `cargo metadata`). Copyable examples live in `…/gpui/examples/`: `window_positioning.rs`, `animation.rs`, `opacity.rs`, `painting.rs`, `popover.rs`, `move_entity_between_windows.rs`. | Need | Symbol / call | Location | |---|---|---| -| Open a window | `cx.open_window(opts, \|window, cx\| …) -> WindowHandle` | `gpui app.rs:1136`; pattern `main.rs:134-138` | -| Always-on-top + non-activating + all-Spaces + hover-while-inactive | `WindowKind::PopUp` (NSPanel, `NSPopUpWindowLevel`=101, `CanJoinAllSpaces\|FullScreenAuxiliary`, `NSTrackingActiveAlways`) | `gpui_macos/src/window.rs:714-717,904-927,919` | -| Borderless | `titlebar: None` | `gpui_macos/src/window.rs:689-708` | -| Transparent bg | `WindowBackgroundAppearance::Transparent` | `gpui/src/platform.rs:1693` | -| Root wrap — **only** when you need tooltip/notification/modal layers (it paints an opaque `theme.background`, so the redesigned transparent surfaces skip it) | `Root::new(view, window, cx)` | gpui-component `root.rs:89,513-531`; `main.rs:135-137` | -| Active display + bounds (anchoring) | `cx.primary_display()`/`cx.displays()`; `PlatformDisplay::visible_bounds()` | `app.rs:1192,1197`; `platform.rs:262` | +| Open a window | `cx.open_window(opts, \|window, cx\| …) -> WindowHandle` | `gpui/src/app.rs:1266`; see `src/main.rs` | +| Always-on-top + non-activating + all-Spaces + hover-while-inactive | `WindowKind::PopUp` (NSPanel, `NSPopUpWindowLevel`=101, `CanJoinAllSpaces\|FullScreenAuxiliary`, `NSTrackingActiveAlways`) | `gpui_macos/src/window.rs:1144-1169` | +| Borderless | `titlebar: None` | `gpui_macos/src/window.rs` window creation | +| Transparent bg | `WindowBackgroundAppearance::Transparent` | `gpui/src/platform.rs:2223` | +| Root wrap — **only** when you need tooltip/notification/modal layers (it paints an opaque `theme.background`, so the redesigned transparent surfaces skip it) | `Root::new(view, window, cx)` | gpui-component `root.rs:98,577-593`; see `src/main.rs` | +| Active display + bounds (anchoring) | `cx.primary_display()`/`cx.displays()`; `PlatformDisplay::visible_bounds()` | `gpui/src/app.rs:1322-1327`; `platform.rs:358` | | Window move/bounds | **none** (`resize()` exists `window.rs:2217` but drifts — use fixed canvas) | `platform.rs:614-660` | | Run off UI thread (Send) | `cx.background_executor().spawn(fut)` | `executor.rs:89` | | Run async touching UI | `cx.spawn(async move \|cx\| …)` → `AsyncApp` | `async_context.rs:204` | diff --git a/docs/screenshot-palette.png b/docs/screenshot-palette.png index b7a947c..06ab502 100644 Binary files a/docs/screenshot-palette.png and b/docs/screenshot-palette.png differ diff --git a/docs/screenshot-settings.png b/docs/screenshot-settings.png index ef84a00..5df18b7 100644 Binary files a/docs/screenshot-settings.png and b/docs/screenshot-settings.png differ diff --git a/docs/screenshot.png b/docs/screenshot.png index 2a576d9..bf9df28 100644 Binary files a/docs/screenshot.png and b/docs/screenshot.png differ diff --git a/justfile b/justfile index 0c97c55..3c13948 100644 --- a/justfile +++ b/justfile @@ -32,7 +32,16 @@ run-overlay: # Overlay panels capture with transparency (leak-proof). Hover states still need a cursor # tool (e.g. `cliclick`) and are out of scope. screenshot out="docs/screenshot.png" features="" keys="": - bash scripts/screenshot.sh "{{out}}" "{{features}}" "{{keys}}" + #!/usr/bin/env bash + set -euo pipefail + mkdir -p "$(dirname "{{out}}")" + output_path="$(cd "$(dirname "{{out}}")" && pwd)/$(basename "{{out}}")" + shot_dir="$(mktemp -d "${TMPDIR:-/tmp}/deck-template-shot.XXXXXX")" + trap 'rm -rf -- "$shot_dir"' EXIT + cargo generate --path "{{justfile_directory()}}" --name deck --silent --vcs none --destination "$shot_dir" + cd "$shot_dir/deck" + export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-{{justfile_directory()}}/target/template-screenshot}" + bash scripts/screenshot.sh "$output_path" "{{features}}" "{{keys}}" # Format the code. fmt: @@ -60,9 +69,14 @@ ci: # directly, so render a throwaway project (outside the repo, like CI) and lint + test that. # Needs cargo-generate (`cargo install cargo-generate`). Inside a generated fork, use `just ci`. check-template: - rm -rf "${TMPDIR:-/tmp}/deck-template-check" - cargo generate --path "{{justfile_directory()}}" --name app --silent --vcs none --destination "${TMPDIR:-/tmp}/deck-template-check" - cd "${TMPDIR:-/tmp}/deck-template-check/app" && cargo clippy --all-targets --features tray,overlay -- -D warnings && cargo test && cargo test --features overlay + #!/usr/bin/env bash + set -euo pipefail + check_dir="$(mktemp -d "${TMPDIR:-/tmp}/deck-template-check.XXXXXX")" + trap 'rm -rf -- "$check_dir"' EXIT + cargo generate --path "{{justfile_directory()}}" --name app --silent --vcs none --destination "$check_dir" + cd "$check_dir/app" + export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-{{justfile_directory()}}/target/template-check}" + just ci # Auto-fix everything fixable: clippy's machine-applicable suggestions + formatting. # Re-run `just ci` afterwards to confirm green. (--allow-dirty so it works mid-edit.) @@ -73,15 +87,14 @@ fix: cargo clippy --fix --allow-dirty --allow-staged --all-targets --features tray,overlay cargo fmt -# Bump the git GPUI stack to the latest upstream commits, then rebuild. -# Reproducibility lives in Cargo.lock — commit it (and rust-toolchain.toml if you -# bumped it) after this succeeds. If the build fails on an unstable-feature error, -# match rust-toolchain.toml to Zed's: https://github.com/zed-industries/zed/blob/main/rust-toolchain.toml -# Full procedure + the crates.io fallback channel: docs/UPGRADING.md +# Refresh the full dependency lockfile (including the git GPUI stack), then rebuild. +# In this raw template repo the script stages the update in a generated project and +# copies Cargo.lock back only after a successful build. In a generated fork it updates +# in place and restores the old lockfile if the build fails. Optional escape hatches for +# a temporarily-red upstream HEAD: GPUI_COMPONENT_REV= and ZED_REV=. +# Full procedure + the crates.io fallback channel: docs/UPGRADING.md. bump-gpui: - cargo update -p gpui -p gpui_platform -p gpui-component -p gpui-component-assets - cargo build - @echo "→ Bumped. Run the app to smoke-test, then commit Cargo.lock (+ rust-toolchain.toml if changed)." + bash scripts/bump-gpui.sh # Build a distributable Deck.app (needs: cargo install cargo-bundle). # Output: target/release/bundle/osx/Deck.app diff --git a/justfile.liquid b/justfile.liquid new file mode 100644 index 0000000..f2ebe38 --- /dev/null +++ b/justfile.liquid @@ -0,0 +1,69 @@ +{% raw %} +# Generated-app task runner. Install with `cargo install just` or your package manager. + +default: + @just --list + +run: + cargo run + +run-release: + cargo run --release + +run-tray: + cargo run --features tray + +run-overlay: + cargo run --features overlay + +screenshot out="docs/screenshot.png" features="" keys="": + bash scripts/screenshot.sh "{{out}}" "{{features}}" "{{keys}}" + +fmt: + cargo fmt + +check: + cargo clippy --locked --all-targets -- -D warnings + cargo clippy --locked --all-targets --features tray -- -D warnings + cargo clippy --locked --all-targets --features overlay -- -D warnings + cargo clippy --locked --all-targets --features tray,overlay -- -D warnings + +ci: + cargo fmt --all --check + cargo clippy --locked --all-targets -- -D warnings + cargo clippy --locked --all-targets --features tray -- -D warnings + cargo clippy --locked --all-targets --features overlay -- -D warnings + cargo clippy --locked --all-targets --features tray,overlay -- -D warnings + cargo test --locked + cargo test --locked --features overlay + +fix: + cargo clippy --fix --allow-dirty --allow-staged --all-targets + cargo clippy --fix --allow-dirty --allow-staged --all-targets --features tray + cargo clippy --fix --allow-dirty --allow-staged --all-targets --features overlay + cargo clippy --fix --allow-dirty --allow-staged --all-targets --features tray,overlay + cargo fmt + +bump-gpui: + bash scripts/bump-gpui.sh + +bundle: + cargo bundle --release + @echo "→ Bundle written under target/release/bundle/" + +open: bundle + #!/usr/bin/env bash + set -euo pipefail + app_path="$(find target/release/bundle/osx -maxdepth 1 -type d -name '*.app' -print -quit)" + if [[ -z "$app_path" ]]; then + echo "No .app bundle found under target/release/bundle/osx" >&2 + exit 1 + fi + open "$app_path" + +icon: + python3 scripts/make-app-icon.py + +icon-linux: + python3 scripts/make-app-icon.py --linux --web +{% endraw %} diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 8bcda90..486c9c7 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,8 +1,8 @@ -# Pinned to match Zed's toolchain. Zed's gpui (git channel) tracks a recent stable — -# e.g. it uses `std::hint::cold_path`, stabilized in 1.95.0 — so building gpui from git -# needs at least this version. Bump in lockstep with Zed's rust-toolchain.toml when you -# bump the gpui revs (see docs/UPGRADING.md). The pure-crates.io channel builds on plain -# stable; this pin is only required by the default git channel. +# Pinned to match Zed's toolchain. Zed's gpui (git channel) tracks recent stable APIs, +# so building gpui from git needs the same version. Bump in lockstep with Zed's +# rust-toolchain.toml when you bump the gpui revs (see docs/UPGRADING.md). The +# pure-crates.io channel builds on plain stable; this pin is only required by the +# default git channel. [toolchain] -channel = "1.95.0" +channel = "1.97.1" components = ["rustfmt", "clippy"] diff --git a/rustfmt.toml b/rustfmt.toml index b778998..7aa373a 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -4,6 +4,6 @@ edition = "2021" max_width = 100 -# STABLE-channel keys ONLY. The pinned 1.95.0 stable `cargo fmt` SILENTLY ignores nightly-only +# STABLE-channel keys ONLY. The pinned 1.97.1 stable `cargo fmt` SILENTLY ignores nightly-only # keys (imports_granularity, group_imports, etc.) — setting them gives a false sense of config # that never runs, which is worse than not setting them at all. don't add nightly keys here. diff --git a/scripts/bump-gpui.sh b/scripts/bump-gpui.sh new file mode 100644 index 0000000..e016adb --- /dev/null +++ b/scripts/bump-gpui.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +# Refresh Deck's dependency lockfile without ever leaving a failed update behind. +# Works both in this raw cargo-generate template and in a generated fork. + +set -euo pipefail + +repo_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" +scratch="$(mktemp -d "${TMPDIR:-/tmp}/deck-gpui.XXXXXX")" +trap 'rm -rf -- "$scratch"' EXIT + +refresh_and_build() { + cargo update + + # gpui-component occasionally has a red main commit. These opt-in pins let a + # maintainer use the newest known-green revision without hand-editing Cargo.lock. + if [[ -n "${GPUI_COMPONENT_REV:-}" ]]; then + cargo update -p gpui-component --precise "$GPUI_COMPONENT_REV" + fi + if [[ -n "${ZED_REV:-}" ]]; then + cargo update -p gpui --precise "$ZED_REV" + fi + + cargo build +} + +if grep -Fq 'name = "{{project-name}}"' "$repo_root/Cargo.toml"; then + generated_name="deck-lock-refresh" + cargo generate \ + --path "$repo_root" \ + --name "$generated_name" \ + --silent \ + --vcs none \ + --destination "$scratch" + + ( + cd "$scratch/$generated_name" + refresh_and_build + ) + + # cargo-generate replaces the root package name in Cargo.lock. Put the Liquid + # token back before atomically installing the verified lockfile in the template. + awk -v generated_name="$generated_name" ' + !replaced && $0 == "name = \"" generated_name "\"" { + print "name = \"{{project-name}}\"" + replaced = 1 + next + } + { print } + END { if (!replaced) exit 1 } + ' "$scratch/$generated_name/Cargo.lock" > "$scratch/Cargo.lock.normalized" + mv "$scratch/Cargo.lock.normalized" "$repo_root/Cargo.lock" +else + cp "$repo_root/Cargo.lock" "$scratch/Cargo.lock.backup" + + # Run with errexit in a subshell while retaining control here so a failed + # dependency build can restore the caller's exact pre-existing lockfile. + set +e + ( + set -e + cd "$repo_root" + refresh_and_build + ) + status=$? + set -e + + if ((status != 0)); then + cp "$scratch/Cargo.lock.backup" "$repo_root/Cargo.lock" + echo "Dependency update failed; restored the previous Cargo.lock." >&2 + exit "$status" + fi +fi + +echo "→ Dependencies refreshed and the default build is green. Run just ci, then smoke-test the app." diff --git a/scripts/make-app-icon.py b/scripts/make-app-icon.py index 523479b..db315f6 100644 --- a/scripts/make-app-icon.py +++ b/scripts/make-app-icon.py @@ -26,6 +26,7 @@ import argparse import math import os +import shutil import subprocess import sys @@ -111,7 +112,7 @@ def write_icns(master, out_dir): master.resize((sz, sz), Image.LANCZOS).save(os.path.join(iconset, name)) icns = os.path.join(out_dir, "icon.icns") subprocess.run(["iconutil", "-c", "icns", iconset, "-o", icns], check=True) - subprocess.run(["rm", "-rf", iconset]) + shutil.rmtree(iconset) return icns @@ -155,9 +156,14 @@ def main(): master = art if a.no_mask else masked_tile(art, body=824, shadow=not a.no_shadow) master_png = os.path.join(a.out, "icon.png") master.save(master_png) - icns = write_icns(master, a.out) print(f"icon.png -> {master_png}") - print(f"icon.icns -> {icns}") + if sys.platform == "darwin": + icns = write_icns(master, a.out) + print(f"icon.icns -> {icns}") + elif a.linux or a.web: + print("icon.icns -> skipped (iconutil is macOS-only)") + else: + sys.exit("error: .icns generation needs macOS iconutil; pass --linux or --web here") if a.web or a.linux: fullbleed = art if a.no_mask else art.copy() diff --git a/scripts/screenshot.sh b/scripts/screenshot.sh index 89af0fd..cc17ee8 100755 --- a/scripts/screenshot.sh +++ b/scripts/screenshot.sh @@ -24,6 +24,7 @@ # (a blank editor) or crop the result. # # Env: SHOT_DELAY seconds to wait for first paint (default 3) +# SHOT_TIMEOUT maximum seconds to wait for the built app to launch (default 120) # SHOT_BACKDROP app to bring to front first, for a clean backdrop behind the tray # menu (e.g. "zed"); optional, tray mode only. set -euo pipefail @@ -32,6 +33,7 @@ OUT="${1:-docs/screenshot.png}" FEATURES="${2:-}" KEYS="${3:-}" DELAY="${SHOT_DELAY:-3}" +TIMEOUT="${SHOT_TIMEOUT:-120}" BACKDROP="${SHOT_BACKDROP:-}" [ "$(uname)" = "Darwin" ] || { echo "screenshot: macOS only (needs screencapture)"; exit 1; } @@ -41,22 +43,52 @@ BASE="${OUT%.*}"; EXT="${OUT##*.}" # Optional clean backdrop (e.g. a blank editor) behind floating panels / the tray menu. [ -n "$BACKDROP" ] && { osascript -e "tell application \"$BACKDROP\" to activate" 2>/dev/null || true; sleep 1; } -# Launch the app (debug build is fine; reuses the cargo cache). -run_args=(run) -[ -n "$FEATURES" ] && run_args+=(--features "$FEATURES") -cargo "${run_args[@]}" >/dev/null 2>&1 & +# Identify the app process by its binary target name. Do NOT use +# "frontmost": a `tray` build is a menu-bar accessory and never becomes frontmost. +PROC=$(cargo metadata --no-deps --format-version 1 2>/dev/null \ + | python3 -c 'import sys,json; p=json.load(sys.stdin)["packages"][0]; print(next(t["name"] for t in p["targets"] if "bin" in t["kind"]))' 2>/dev/null) +TARGET_DIR=$(cargo metadata --no-deps --format-version 1 2>/dev/null \ + | python3 -c 'import sys,json; print(json.load(sys.stdin)["target_directory"])' 2>/dev/null) + +# Build first, then launch the exact binary ourselves. `cargo run` may exec the +# binary or spawn it depending on Cargo/platform details, which makes PID-based +# window capture race-prone. +build_args=(build) +[ -n "$FEATURES" ] && build_args+=(--features "$FEATURES") +cargo "${build_args[@]}" +RUN_LOG=$(mktemp "${TMPDIR:-/tmp}/deck-screenshot-run.XXXXXX") +"$TARGET_DIR/debug/$PROC" >"$RUN_LOG" 2>&1 & APP_PID=$! +BINARY_PID=$APP_PID disown "$APP_PID" 2>/dev/null || true # keep the shell from printing "Terminated" on cleanup -cleanup() { pkill -P "$APP_PID" 2>/dev/null || true; kill "$APP_PID" 2>/dev/null || true; } +cleanup() { + pkill -P "$APP_PID" 2>/dev/null || true + kill "$APP_PID" 2>/dev/null || true + rm -f -- "$RUN_LOG" +} trap cleanup EXIT +ready=0 +for ((attempt = 0; attempt < TIMEOUT * 4; attempt++)); do + if osascript \ + -e "tell application \"System Events\" to exists (first process whose unix id is $BINARY_PID)" \ + 2>/dev/null | grep -q true; then + ready=1 + break + fi + if ! kill -0 "$APP_PID" 2>/dev/null; then + echo "screenshot: $PROC exited before its windows became available" >&2 + cat "$RUN_LOG" >&2 + exit 1 + fi + sleep 0.25 +done +[ "$ready" = 1 ] || { + echo "screenshot: timed out after ${TIMEOUT}s waiting for process $PROC" >&2 + cat "$RUN_LOG" >&2 + exit 1 +} sleep "$DELAY" -# Identify the app process by its binary name (== cargo package name). Do NOT use -# "frontmost": a `tray` build is a menu-bar accessory and never becomes frontmost. -PROC=$(cargo metadata --no-deps --format-version 1 2>/dev/null \ - | python3 -c 'import sys,json; print(json.load(sys.stdin)["packages"][0]["name"])' 2>/dev/null) -[ -n "$PROC" ] || PROC=$(osascript -e 'tell application "System Events" to get name of (first process whose frontmost is true)' 2>/dev/null) - SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" shot() { screencapture -x -o -R"$1" "$2" && echo "-> $2"; } @@ -79,10 +111,17 @@ capture_window() { fi sleep 0.7 fi - local b - b=$(osascript -e "tell application \"System Events\" to tell process \"$PROC\" to get {position, size} of front window" 2>/dev/null | tr -d ' ') - [ -n "$b" ] || { echo "screenshot: no front window found for process $PROC"; return 1; } - shot "$b" "$OUT" + local helper="$SCRIPT_DIR/winid.swift" id + { command -v swift >/dev/null && [ -f "$helper" ]; } || { + echo "screenshot: needs swift + scripts/winid.swift"; return 1; + } + # Window-id capture is exact on Retina/scaled displays; region capture mixes + # AppleScript points with screencapture pixels and can include the desktop. + id=$(swift "$helper" "$BINARY_PID" 2>/dev/null \ + | awk '$2 * $3 > area { area = $2 * $3; id = $1 } END { print id }') + [ -n "$id" ] || { echo "screenshot: no front window found for process $PROC"; return 1; } + screencapture -x -o -l"$id" "$OUT" + echo "-> $OUT" } capture_overlay() { @@ -105,20 +144,20 @@ im = Image.open(sys.argv[1]).convert("RGBA"); b = im.getbbox() if b: im.crop(b).save(sys.argv[1]) PY echo "-> $f"; got=1 - done < <(swift "$helper" "$PROC" 2>/dev/null) + done < <(swift "$helper" "$BINARY_PID" 2>/dev/null) [ "$got" = 1 ] || { echo "screenshot(overlay): no panels found for $PROC"; return 1; } } capture_tray() { # Menu-bar status item: find it, click to open its native menu, capture the corner. - local pos sx sy rx - pos=$(osascript -e "tell application \"System Events\" to tell process \"$PROC\" to get position of menu bar item 1 of menu bar 2" 2>/dev/null | tr -d ' ') + local pos sx rx + pos=$(osascript -e "tell application \"System Events\" to tell (first process whose unix id is $BINARY_PID) to get position of menu bar item 1 of menu bar 2" 2>/dev/null | tr -d ' ') [ -n "$pos" ] || { echo "screenshot(tray): no status item found for process $PROC"; return 1; } - IFS=',' read -r sx sy <<< "$pos" + IFS=',' read -r sx _ <<< "$pos" # NB: do NOT re-activate the backdrop here — bringing another app to the front # right before the click suppresses the status-item menu. Rely on the backdrop # already being frontmost (the overlay pass, or SHOT_BACKDROP before launch). - osascript -e "tell application \"System Events\" to tell process \"$PROC\" to click menu bar item 1 of menu bar 2" >/dev/null 2>&1 & + osascript -e "tell application \"System Events\" to tell (first process whose unix id is $BINARY_PID) to click menu bar item 1 of menu bar 2" >/dev/null 2>&1 & local click=$!; sleep 1.2 rx=$(( sx - 110 < 0 ? 0 : sx - 110 )) shot "${rx},0,300,170" "$OUT" diff --git a/scripts/winid.swift b/scripts/winid.swift index 68f34d2..ff5b223 100644 --- a/scripts/winid.swift +++ b/scripts/winid.swift @@ -1,18 +1,18 @@ -// Print the on-screen windows owned by a given app: " " +// Print the on-screen windows owned by a given process: " " // (one per line). Used by scripts/screenshot.sh to capture the floating overlay // panels by window id (`screencapture -l`), which yields the panel WITH its // alpha channel — a transparent background, so the shot can't leak whatever is -// behind it. Run: `swift scripts/winid.swift ` (macOS only). +// behind it. Run: `swift scripts/winid.swift ` (macOS only). import CoreGraphics import Foundation -let owner = CommandLine.arguments.count > 1 ? CommandLine.arguments[1] : "" -guard !owner.isEmpty, +let ownerPID = CommandLine.arguments.count > 1 ? Int(CommandLine.arguments[1]) : nil +guard let ownerPID, let list = CGWindowListCopyWindowInfo([.optionOnScreenOnly, .excludeDesktopElements], kCGNullWindowID) as? [[String: Any]] else { exit(1) } for info in list { - guard let o = info[kCGWindowOwnerName as String] as? String, o == owner, + guard let pid = info[kCGWindowOwnerPID as String] as? Int, pid == ownerPID, let num = info[kCGWindowNumber as String] as? Int, let b = info[kCGWindowBounds as String] as? [String: Any], let w = b["Width"] as? CGFloat, let h = b["Height"] as? CGFloat diff --git a/src/command_palette.rs b/src/command_palette.rs index 3c7af68..77c1d51 100644 --- a/src/command_palette.rs +++ b/src/command_palette.rs @@ -576,7 +576,7 @@ impl ListDelegate for PaletteDelegate { // =========================================================================== /// How far the panel floats from the top of the window. -const TOP_OFFSET: f32 = 112.0; +const TOP_OFFSET: f32 = 64.0; const PANEL_WIDTH: f32 = 620.0; impl Shell { @@ -813,4 +813,44 @@ mod tests { let (_, ranges) = score_command("set", &settings).unwrap(); assert!(!ranges.is_empty()); } + + #[test] + fn empty_recents_do_not_create_a_fake_recent_section() { + let delegate = PaletteDelegate::new(Vec::new()); + + assert!(delegate + .sections + .iter() + .all(|section| section.title != "Recent")); + assert_eq!( + delegate + .sections + .iter() + .map(|section| section.rows.len()) + .sum::(), + delegate.all.len() + ); + } + + #[test] + fn recent_commands_are_lifted_without_being_duplicated() { + let delegate = PaletteDelegate::new(vec!["settings"]); + let recent = delegate + .sections + .iter() + .find(|section| section.title == "Recent") + .expect("a known recent command creates the Recent section"); + + assert_eq!(recent.rows.len(), 1); + assert_eq!(recent.rows[0].cmd.id, "settings"); + assert_eq!( + delegate + .sections + .iter() + .flat_map(|section| §ion.rows) + .filter(|hit| hit.cmd.id == "settings") + .count(), + 1 + ); + } } diff --git a/src/main.rs b/src/main.rs index 0b9bfb4..818eb77 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,7 +22,10 @@ use gpui::{ px, size, App, AppContext, Bounds, KeyBinding, Menu, MenuItem, OsAction, WindowBounds, WindowOptions, }; -use gpui_component::{Root, TitleBar}; +use gpui_component::{ + input::{Copy, Cut, Paste, Redo, SelectAll, Undo}, + Root, TitleBar, +}; use settings::Settings; use shell::Shell; @@ -77,13 +80,11 @@ fn main() { KeyBinding::new("secondary-k", TogglePalette, None), ]); - // 4. Global action handlers. View-local actions (NewItem, OpenSettings, - // ToggleTheme, GoBack) are handled inside `Shell` so they can touch - // UI state and persist; only app-wide ones live here. + // 4. Global action handlers. View-local actions (About, NewItem, + // OpenSettings, ToggleTheme, GoBack) are handled inside `Shell` so + // they can touch the active window or UI state; only app-wide ones + // live here. cx.on_action(|_: &Quit, cx: &mut App| cx.quit()); - cx.on_action(|_: &About, _cx: &mut App| { - println!("{APP_NAME} — a GPUI app."); - }); // 5. The native macOS menu bar. cx.set_menus(vec![ @@ -107,12 +108,13 @@ fn main() { name: "Edit".into(), disabled: false, items: vec![ - MenuItem::os_action("Undo", NewItem, OsAction::Undo), + MenuItem::os_action("Undo", Undo, OsAction::Undo), + MenuItem::os_action("Redo", Redo, OsAction::Redo), MenuItem::separator(), - MenuItem::os_action("Cut", NewItem, OsAction::Cut), - MenuItem::os_action("Copy", NewItem, OsAction::Copy), - MenuItem::os_action("Paste", NewItem, OsAction::Paste), - MenuItem::os_action("Select All", NewItem, OsAction::SelectAll), + MenuItem::os_action("Cut", Cut, OsAction::Cut), + MenuItem::os_action("Copy", Copy, OsAction::Copy), + MenuItem::os_action("Paste", Paste, OsAction::Paste), + MenuItem::os_action("Select All", SelectAll, OsAction::SelectAll), ], }, Menu { @@ -133,7 +135,7 @@ fn main() { let options = WindowOptions { window_bounds: Some(WindowBounds::Windowed(bounds)), titlebar: Some(TitleBar::title_bar_options()), - window_min_size: Some(size(px(560.0), px(420.0))), + window_min_size: Some(size(px(640.0), px(520.0))), ..Default::default() }; diff --git a/src/settings.rs b/src/settings.rs index fefb45d..8657337 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -6,7 +6,7 @@ //! framework. See `docs/LEARNINGS.md` for how this compares to `confy` and to //! Zed's layered settings system. -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use directories::ProjectDirs; use gpui_component::ThemeMode; @@ -41,13 +41,12 @@ impl ThemeModePref { /// Everything the app remembers between launches. Add fields freely — the /// `#[serde(default)]` makes older config files forward-compatible (and lets serde /// silently ignore stale keys like a removed `overlay_anchor`). -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] #[serde(default)] pub struct Settings { pub theme_mode: ThemeModePref, pub accent: Accent, pub display_name: String, - pub launch_minimized: bool, /// Whether to open the floating overlay surface on launch. Defaults `true` so that /// compiling `--features overlay` shows it immediately (mirrors how `--features tray` /// just works); the feature flag is the only *build* gate. Override per-run without @@ -61,7 +60,6 @@ impl Default for Settings { theme_mode: ThemeModePref::Dark, accent: Accent::default(), display_name: String::new(), - launch_minimized: false, overlay_enabled: true, } } @@ -85,14 +83,19 @@ impl Settings { let Some(path) = Self::path() else { return Self::default(); }; - match std::fs::read_to_string(&path) { + Self::load_from(&path) + } + + fn load_from(path: &Path) -> Self { + match std::fs::read_to_string(path) { Ok(contents) => serde_json::from_str(&contents).unwrap_or_default(), Err(_) => Self::default(), } } - /// Write to disk, creating the config dir if needed. Returns the IO/serialize - /// error so a caller can actually handle it; UI call sites use `save_best_effort`. + /// Write to disk atomically, creating the config dir if needed. Returns the + /// IO/serialize error so a caller can actually handle it; UI call sites use + /// `save_best_effort`. /// /// Keep this OFF the UI hot path: it rewrites the whole file, cheap only because /// this struct is tiny. Persist at a coarse boundary (blur/commit) or on the @@ -102,11 +105,22 @@ impl Settings { let Some(path) = Self::path() else { return Ok(()); }; + self.save_to(&path) + } + + fn save_to(&self, path: &Path) -> std::io::Result<()> { if let Some(parent) = path.parent() { std::fs::create_dir_all(parent)?; } let json = serde_json::to_string_pretty(self).map_err(std::io::Error::other)?; - std::fs::write(&path, json) + let temporary_path = path.with_extension("json.tmp"); + std::fs::write(&temporary_path, json)?; + let rename_result = std::fs::rename(&temporary_path, path); + if rename_result.is_err() { + // Preserve the original rename error; cleanup is only best effort. + drop(std::fs::remove_file(&temporary_path)); + } + rename_result } /// Best-effort persist for UI call sites: a lost preference write should never @@ -118,3 +132,101 @@ impl Settings { } } } + +#[cfg(test)] +mod tests { + use std::{ + path::PathBuf, + time::{SystemTime, UNIX_EPOCH}, + }; + + use super::{Settings, ThemeModePref}; + use crate::theme::Accent; + + fn test_dir(name: &str) -> PathBuf { + let nonce = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("system clock is after the Unix epoch") + .as_nanos(); + std::env::temp_dir().join(format!( + "deck-settings-{name}-{}-{nonce}", + std::process::id() + )) + } + + #[test] + fn save_to_round_trips_atomically() { + let root = test_dir("round-trip"); + let path = root.join("nested/settings.json"); + let settings = Settings { + theme_mode: ThemeModePref::Light, + accent: Accent::Rose, + display_name: "Ada".to_string(), + overlay_enabled: false, + }; + + settings.save_to(&path).expect("settings save succeeds"); + + assert_eq!(Settings::load_from(&path), settings); + assert!(!path.with_extension("json.tmp").exists()); + std::fs::remove_dir_all(root).expect("test directory is removable"); + } + + #[test] + fn load_from_missing_or_corrupt_file_uses_defaults() { + let root = test_dir("fallback"); + let path = root.join("settings.json"); + + assert_eq!(Settings::load_from(&path), Settings::default()); + std::fs::create_dir_all(&root).expect("test directory is created"); + std::fs::write(&path, "not json").expect("corrupt fixture is written"); + assert_eq!(Settings::load_from(&path), Settings::default()); + + std::fs::remove_dir_all(root).expect("test directory is removable"); + } + + #[test] + fn load_from_ignores_removed_keys() { + let root = test_dir("legacy"); + let path = root.join("settings.json"); + std::fs::create_dir_all(&root).expect("test directory is created"); + std::fs::write(&path, r#"{"launch_minimized":true,"display_name":"Grace"}"#) + .expect("legacy fixture is written"); + + let settings = Settings::load_from(&path); + + assert_eq!(settings.display_name, "Grace"); + assert_eq!(settings.theme_mode, ThemeModePref::Dark); + assert!(settings.overlay_enabled); + std::fs::remove_dir_all(root).expect("test directory is removable"); + } + + #[test] + fn save_to_cleans_up_after_rename_failure() { + let root = test_dir("rename-failure"); + let path = root.join("settings.json"); + std::fs::create_dir_all(&path).expect("destination directory is created"); + + let error = Settings::default() + .save_to(&path) + .expect_err("renaming a file over a directory must fail"); + + assert_ne!(error.kind(), std::io::ErrorKind::NotFound); + assert!(!path.with_extension("json.tmp").exists()); + std::fs::remove_dir_all(root).expect("test directory is removable"); + } + + #[test] + fn save_to_propagates_parent_creation_errors() { + let root = test_dir("parent-failure"); + std::fs::create_dir_all(&root).expect("test directory is created"); + let parent_file = root.join("not-a-directory"); + std::fs::write(&parent_file, "occupied").expect("blocking file is written"); + + Settings::default() + .save_to(&parent_file.join("settings.json")) + .expect_err("a file cannot be used as a parent directory"); + + std::fs::remove_dir_all(root).expect("test directory is removable"); + } +} diff --git a/src/settings_view.rs b/src/settings_view.rs index 55c8d61..ec99d1b 100644 --- a/src/settings_view.rs +++ b/src/settings_view.rs @@ -5,15 +5,13 @@ //! field would persist on blur instead (see `shell.rs`). Template for your own. use gpui::{ - div, px, rgb, AnyElement, Context, FontWeight, InteractiveElement, IntoElement, ParentElement, - StatefulInteractiveElement, Styled, Window, + div, px, rgb, AnyElement, Context, FontWeight, IntoElement, ParentElement, Styled, Window, }; use gpui_component::{ button::{Button, ButtonVariants}, h_flex, input::Input, - switch::Switch, - v_flex, ActiveTheme, + v_flex, ActiveTheme, Selectable, }; use crate::settings::{Settings, ThemeModePref}; @@ -31,7 +29,6 @@ impl Shell { let muted = theme.muted_foreground; let border = theme.border; let surface = theme.secondary; - let ring = theme.ring; let mode = self.settings.theme_mode; let accent = self.settings.accent; @@ -86,31 +83,33 @@ impl Shell { .child(mode_button("mode-light", "Light", ThemeModePref::Light)) .into_any_element(); - // Accent: a row of clickable swatches; the active one gets a ring. + // Accent: semantic, keyboard-focusable buttons; the active one gets a + // foreground-colored ring that remains visible over every accent. let accent_control = h_flex() .gap_2() .children(Accent::ALL.iter().map(|&a| { let selected = a == accent; - div() - .id(a.label()) + Button::new(a.label()) + .ghost() .size(px(24.0)) .rounded_full() .bg(rgb(a.rgb())) .border_2() - .border_color(if selected { ring } else { ring.opacity(0.0) }) + .border_color(if selected { + foreground + } else { + foreground.opacity(0.0) + }) + .selected(selected) + .accessibility_label(format!("Use {} accent", a.label())) + .tooltip(a.label()) .on_click(cx.listener(move |this, _, _, cx| this.set_accent(a, cx))) })) .into_any_element(); - let name_control = Input::new(&self.name_input).w(px(220.0)).into_any_element(); - - let launch_control = Switch::new("launch-min") - .checked(self.settings.launch_minimized) - .on_click(cx.listener(|this, checked: &bool, _, cx| { - this.settings.launch_minimized = *checked; - this.settings.save_best_effort(); - cx.notify(); - })) + let name_control = Input::new(&self.name_input) + .aria_label("Display name") + .w(px(220.0)) .into_any_element(); v_flex().flex_1().items_center().p_8().child( @@ -125,20 +124,11 @@ impl Shell { .child(row("Accent", "Brand color across the app", accent_control)), ) .child(section_label("Profile", muted)) - .child( - card() - .child(row( - "Display name", - "Used to greet you on the home screen", - name_control, - )) - .child(divider(border)) - .child(row( - "Start in menu bar", - "Launch minimized (needs the `tray` feature)", - launch_control, - )), - ) + .child(card().child(row( + "Display name", + "Used to greet you on the home screen", + name_control, + ))) .child(div().pt_2().text_xs().text_color(muted).child(format!( "Preferences are stored at {}", Settings::config_path_display() diff --git a/src/shell.rs b/src/shell.rs index a391c45..2d5be12 100644 --- a/src/shell.rs +++ b/src/shell.rs @@ -8,7 +8,7 @@ use std::collections::VecDeque; use gpui::{ div, App, AppContext, Context, Entity, FocusHandle, Focusable, FontWeight, InteractiveElement, - IntoElement, ParentElement, Render, Styled, Subscription, Window, + IntoElement, ParentElement, PromptLevel, Render, Styled, Subscription, Window, }; use gpui_component::{ button::{Button, ButtonVariants}, @@ -21,7 +21,7 @@ use gpui_component::{ use crate::command_palette::PaletteDelegate; use crate::settings::{Settings, ThemeModePref}; use crate::theme::{self, Accent}; -use crate::{GoBack, NewItem, OpenSettings, ToggleTheme, APP_NAME}; +use crate::{About, GoBack, NewItem, OpenSettings, ToggleTheme, APP_NAME}; #[derive(Clone, Copy, PartialEq, Eq)] pub enum Route { @@ -77,8 +77,7 @@ impl Shell { created: 0, palette: None, palette_sub: None, - // Seed a few sensible "recents" so the palette is never blank on first open. - recents: ["settings", "new", "theme"].into_iter().collect(), + recents: VecDeque::new(), } } @@ -138,6 +137,16 @@ impl Shell { self.toggle_mode(cx); } + fn on_about(&mut self, _: &About, window: &mut Window, cx: &mut Context) { + drop(window.prompt( + PromptLevel::Info, + APP_NAME, + Some("A native desktop app built with GPUI and gpui-component."), + &["OK"], + cx, + )); + } + fn render_title_bar(&self, cx: &mut Context) -> impl IntoElement { let muted = cx.theme().muted_foreground; let is_settings = self.route == Route::Settings; @@ -160,6 +169,8 @@ impl Shell { Button::new("back") .ghost() .icon(IconName::ChevronLeft) + .accessibility_label("Back to welcome") + .tooltip("Back") .on_click( cx.listener(|this, _, _, cx| this.navigate(Route::Welcome, cx)), ) @@ -180,6 +191,8 @@ impl Shell { Button::new("open-settings") .ghost() .icon(IconName::Settings) + .accessibility_label("Open settings") + .tooltip("Settings") .on_click( cx.listener(|this, _, _, cx| { this.navigate(Route::Settings, cx) @@ -190,6 +203,8 @@ impl Shell { Button::new("toggle-theme") .ghost() .icon(theme_icon) + .accessibility_label("Toggle light or dark theme") + .tooltip("Toggle theme") .on_click(cx.listener(|this, _, _, cx| this.toggle_mode(cx))), ), ), @@ -223,6 +238,7 @@ impl Render for Shell { .bg(background) .track_focus(&self.focus_handle) .on_action(cx.listener(Self::on_new_item)) + .on_action(cx.listener(Self::on_about)) .on_action(cx.listener(Self::on_open_settings)) .on_action(cx.listener(Self::on_go_back)) .on_action(cx.listener(Self::on_toggle_theme)) diff --git a/src/theme.rs b/src/theme.rs index 0e65b01..cd6bc7c 100644 --- a/src/theme.rs +++ b/src/theme.rs @@ -50,24 +50,24 @@ impl Accent { /// `(base, hover, active)` hex for the accent. `base` is also the swatch color. fn ramp(self) -> (&'static str, &'static str, &'static str) { match self { - Accent::Indigo => ("#6E78F0", "#828AF2", "#5A64E0"), - Accent::Blue => ("#3B82F6", "#5A95F7", "#2F6FE0"), - Accent::Violet => ("#8B5CF6", "#9D74F7", "#7A47E6"), - Accent::Emerald => ("#10B981", "#2DC894", "#0E9E6F"), - Accent::Amber => ("#F59E0B", "#F7AE2F", "#DB8C06"), - Accent::Rose => ("#F43F5E", "#F65A75", "#E02A4A"), + Accent::Indigo => ("#4F46E5", "#4338CA", "#3730A3"), + Accent::Blue => ("#2563EB", "#1D4ED8", "#1E40AF"), + Accent::Violet => ("#7C3AED", "#6D28D9", "#5B21B6"), + Accent::Emerald => ("#047857", "#065F46", "#064E3B"), + Accent::Amber => ("#B45309", "#92400E", "#78350F"), + Accent::Rose => ("#E11D48", "#BE123C", "#9F1239"), } } /// The swatch / mark color as an `0xRRGGBB` value, for `gpui::rgb(..)` in the UI. pub fn rgb(self) -> u32 { match self { - Accent::Indigo => 0x6E78F0, - Accent::Blue => 0x3B82F6, - Accent::Violet => 0x8B5CF6, - Accent::Emerald => 0x10B981, - Accent::Amber => 0xF59E0B, - Accent::Rose => 0xF43F5E, + Accent::Indigo => 0x4F46E5, + Accent::Blue => 0x2563EB, + Accent::Violet => 0x7C3AED, + Accent::Emerald => 0x047857, + Accent::Amber => 0xB45309, + Accent::Rose => 0xE11D48, } } } @@ -140,3 +140,72 @@ fn refine(config: &mut ThemeConfig, accent: Accent, dark: bool) { set(&mut c.accent_foreground, "#16171D"); } } + +#[cfg(test)] +mod tests { + use gpui_component::ThemeConfig; + + use super::{refine, Accent}; + + fn contrast_with_white(hex: &str) -> f64 { + let value = u32::from_str_radix(hex.trim_start_matches('#'), 16) + .expect("theme ramps contain valid six-digit hex colors"); + let channel = |shift| { + let value = f64::from(((value >> shift) & 0xff_u32) as u8) / 255.0; + if value <= 0.04045 { + value / 12.92 + } else { + ((value + 0.055) / 1.055).powf(2.4) + } + }; + let luminance = 0.2126 * channel(16) + 0.7152 * channel(8) + 0.0722 * channel(0); + 1.05 / (luminance + 0.05) + } + + #[test] + fn every_primary_state_meets_aa_contrast_with_white_text() { + for accent in Accent::ALL { + for hex in [accent.ramp().0, accent.ramp().1, accent.ramp().2] { + let contrast = contrast_with_white(hex); + assert!( + contrast >= 4.5, + "{} {hex} has only {contrast:.2}:1 contrast", + accent.label() + ); + } + } + } + + #[test] + fn swatch_rgb_matches_the_primary_ramp_color() { + for accent in Accent::ALL { + let ramp_rgb = u32::from_str_radix(accent.ramp().0.trim_start_matches('#'), 16) + .expect("theme ramps contain valid six-digit hex colors"); + assert_eq!(accent.rgb(), ramp_rgb, "{} swatch drifted", accent.label()); + } + } + + #[test] + fn refine_applies_accessible_brand_tokens_in_both_modes() { + for dark in [false, true] { + for accent in Accent::ALL { + let mut config = ThemeConfig::default(); + refine(&mut config, accent, dark); + + assert_eq!(config.colors.primary.as_deref(), Some(accent.ramp().0)); + assert_eq!( + config.colors.primary_hover.as_deref(), + Some(accent.ramp().1) + ); + assert_eq!( + config.colors.primary_active.as_deref(), + Some(accent.ramp().2) + ); + assert_eq!(config.colors.primary_foreground.as_deref(), Some("#FFFFFF")); + assert_eq!(config.colors.ring.as_deref(), Some(accent.ramp().0)); + assert!(config.colors.background.is_some()); + assert!(config.colors.foreground.is_some()); + } + } + } +} diff --git a/src/welcome.rs b/src/welcome.rs index 832432f..76009de 100644 --- a/src/welcome.rs +++ b/src/welcome.rs @@ -123,7 +123,10 @@ impl Shell { Button::new("docs") .ghost() .label("Documentation") - .icon(IconName::BookOpen), + .icon(IconName::BookOpen) + .on_click(|_, _, cx| { + cx.open_url("https://github.com/hellno/deck#readme") + }), ), ) .child(if self.created > 0 {