Add workspace-hack (#27277)

Julia Ryan , Mikayla , and Mikayla Maki created

This adds a "workspace-hack" crate, see
[mozilla's](https://hg.mozilla.org/mozilla-central/file/3a265fdc9f33e5946f0ca0a04af73acd7e6d1a39/build/workspace-hack/Cargo.toml#l7)
for a concise explanation of why this is useful. For us in practice this
means that if I were to run all the tests (`cargo nextest r
--workspace`) and then `cargo r`, all the deps from the previous cargo
command will be reused. Before this PR it would rebuild many deps due to
resolving different sets of features for them. For me this frequently
caused long rebuilds when things "should" already be cached.

To avoid manually maintaining our workspace-hack crate, we will use
[cargo hakari](https://docs.rs/cargo-hakari) to update the build files
when there's a necessary change. I've added a step to CI that checks
whether the workspace-hack crate is up to date, and instructs you to
re-run `script/update-workspace-hack` when it fails.

Finally, to make sure that people can still depend on crates in our
workspace without pulling in all the workspace deps, we use a `[patch]`
section following [hakari's
instructions](https://docs.rs/cargo-hakari/0.9.36/cargo_hakari/patch_directive/index.html)

One possible followup task would be making guppy use our
`rust-toolchain.toml` instead of having to duplicate that list in its
config, I opened an issue for that upstream: guppy-rs/guppy#481.

TODO:
- [x] Fix the extension test failure
- [x] Ensure the dev dependencies aren't being unified by Hakari into
the main dependencies
- [x] Ensure that the remote-server binary continues to not depend on
LibSSL

Release Notes:

- N/A

---------

Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>

Change summary

.config/hakari.toml                            |  40 +
.github/workflows/ci.yml                       |  32 
Cargo.lock                                     | 302 +++++---
Cargo.toml                                     |   7 
crates/activity_indicator/Cargo.toml           |   1 
crates/agent/Cargo.toml                        |   1 
crates/anthropic/Cargo.toml                    |   1 
crates/askpass/Cargo.toml                      |   1 
crates/assets/Cargo.toml                       |   1 
crates/assistant/Cargo.toml                    |   1 
crates/assistant_context_editor/Cargo.toml     |   1 
crates/assistant_eval/Cargo.toml               |   1 
crates/assistant_settings/Cargo.toml           |   1 
crates/assistant_slash_command/Cargo.toml      |   1 
crates/assistant_slash_commands/Cargo.toml     |   1 
crates/assistant_tool/Cargo.toml               |   1 
crates/assistant_tools/Cargo.toml              |   1 
crates/audio/Cargo.toml                        |   1 
crates/auto_update/Cargo.toml                  |   1 
crates/auto_update_ui/Cargo.toml               |   1 
crates/aws_http_client/Cargo.toml              |   1 
crates/bedrock/Cargo.toml                      |   1 
crates/breadcrumbs/Cargo.toml                  |   1 
crates/buffer_diff/Cargo.toml                  |   1 
crates/call/Cargo.toml                         |   1 
crates/channel/Cargo.toml                      |   1 
crates/cli/Cargo.toml                          |   1 
crates/client/Cargo.toml                       |   1 
crates/clock/Cargo.toml                        |   1 
crates/collab/Cargo.toml                       |   1 
crates/collab_ui/Cargo.toml                    |   1 
crates/collections/Cargo.toml                  |   1 
crates/command_palette/Cargo.toml              |   1 
crates/command_palette_hooks/Cargo.toml        |   1 
crates/component/Cargo.toml                    |   1 
crates/component_preview/Cargo.toml            |   1 
crates/context_server/Cargo.toml               |   1 
crates/context_server_settings/Cargo.toml      |   1 
crates/copilot/Cargo.toml                      |   1 
crates/credentials_provider/Cargo.toml         |   1 
crates/dap/Cargo.toml                          |   1 
crates/dap_adapters/Cargo.toml                 |   1 
crates/db/Cargo.toml                           |   1 
crates/debugger_tools/Cargo.toml               |   1 
crates/debugger_ui/Cargo.toml                  |   1 
crates/deepseek/Cargo.toml                     |   1 
crates/diagnostics/Cargo.toml                  |   1 
crates/docs_preprocessor/Cargo.toml            |   1 
crates/editor/Cargo.toml                       |   1 
crates/evals/Cargo.toml                        |   1 
crates/evals/src/eval.rs                       |   4 
crates/extension/Cargo.toml                    |   1 
crates/extension_cli/Cargo.toml                |   1 
crates/extension_host/Cargo.toml               |   1 
crates/extensions_ui/Cargo.toml                |   1 
crates/feature_flags/Cargo.toml                |   1 
crates/feedback/Cargo.toml                     |   1 
crates/file_finder/Cargo.toml                  |   1 
crates/file_icons/Cargo.toml                   |   1 
crates/fs/Cargo.toml                           |   1 
crates/fsevent/Cargo.toml                      |   1 
crates/fuzzy/Cargo.toml                        |   1 
crates/git/Cargo.toml                          |   1 
crates/git_hosting_providers/Cargo.toml        |   1 
crates/git_ui/Cargo.toml                       |   1 
crates/go_to_line/Cargo.toml                   |   1 
crates/google_ai/Cargo.toml                    |   1 
crates/gpui/Cargo.toml                         |   1 
crates/gpui_macros/Cargo.toml                  |   1 
crates/gpui_tokio/Cargo.toml                   |   1 
crates/html_to_markdown/Cargo.toml             |   1 
crates/http_client/Cargo.toml                  |   1 
crates/http_client_tls/Cargo.toml              |   1 
crates/icons/Cargo.toml                        |   1 
crates/image_viewer/Cargo.toml                 |   1 
crates/indexed_docs/Cargo.toml                 |   1 
crates/inline_completion/Cargo.toml            |   1 
crates/inline_completion_button/Cargo.toml     |   1 
crates/install_cli/Cargo.toml                  |   1 
crates/journal/Cargo.toml                      |   1 
crates/language/Cargo.toml                     |   1 
crates/language_extension/Cargo.toml           |   1 
crates/language_model/Cargo.toml               |   1 
crates/language_model_selector/Cargo.toml      |   1 
crates/language_models/Cargo.toml              |   1 
crates/language_selector/Cargo.toml            |   1 
crates/language_tools/Cargo.toml               |   1 
crates/languages/Cargo.toml                    |   1 
crates/livekit_api/Cargo.toml                  |   1 
crates/livekit_client/Cargo.toml               |   1 
crates/lmstudio/Cargo.toml                     |   1 
crates/lsp/Cargo.toml                          |   1 
crates/markdown/Cargo.toml                     |   1 
crates/markdown_preview/Cargo.toml             |   1 
crates/media/Cargo.toml                        |   1 
crates/menu/Cargo.toml                         |   2 
crates/migrator/Cargo.toml                     |   1 
crates/mistral/Cargo.toml                      |   1 
crates/multi_buffer/Cargo.toml                 |   1 
crates/multi_buffer/src/multi_buffer_tests.rs  |  12 
crates/node_runtime/Cargo.toml                 |   1 
crates/notifications/Cargo.toml                |   1 
crates/ollama/Cargo.toml                       |   1 
crates/open_ai/Cargo.toml                      |   1 
crates/outline/Cargo.toml                      |   1 
crates/outline_panel/Cargo.toml                |   1 
crates/panel/Cargo.toml                        |   1 
crates/paths/Cargo.toml                        |   1 
crates/picker/Cargo.toml                       |   1 
crates/prettier/Cargo.toml                     |   1 
crates/project/Cargo.toml                      |   1 
crates/project_panel/Cargo.toml                |   1 
crates/project_symbols/Cargo.toml              |   1 
crates/prompt_library/Cargo.toml               |   1 
crates/prompt_store/Cargo.toml                 |   1 
crates/proto/Cargo.toml                        |   1 
crates/recent_projects/Cargo.toml              |   1 
crates/refineable/Cargo.toml                   |   1 
crates/refineable/derive_refineable/Cargo.toml |   1 
crates/release_channel/Cargo.toml              |   1 
crates/remote/Cargo.toml                       |   1 
crates/repl/Cargo.toml                         |   1 
crates/reqwest_client/Cargo.toml               |   1 
crates/rich_text/Cargo.toml                    |   1 
crates/rope/Cargo.toml                         |   1 
crates/rpc/Cargo.toml                          |   1 
crates/schema_generator/Cargo.toml             |   1 
crates/search/Cargo.toml                       |   1 
crates/semantic_index/Cargo.toml               |   1 
crates/semantic_version/Cargo.toml             |   1 
crates/session/Cargo.toml                      |   1 
crates/settings/Cargo.toml                     |   1 
crates/settings_ui/Cargo.toml                  |   1 
crates/snippet/Cargo.toml                      |   1 
crates/snippet_provider/Cargo.toml             |   1 
crates/snippets_ui/Cargo.toml                  |   1 
crates/sqlez/Cargo.toml                        |   1 
crates/sqlez_macros/Cargo.toml                 |   1 
crates/story/Cargo.toml                        |   1 
crates/storybook/Cargo.toml                    |   1 
crates/streaming_diff/Cargo.toml               |   1 
crates/sum_tree/Cargo.toml                     |   1 
crates/supermaven/Cargo.toml                   |   1 
crates/supermaven_api/Cargo.toml               |   1 
crates/tab_switcher/Cargo.toml                 |   1 
crates/task/Cargo.toml                         |   1 
crates/tasks_ui/Cargo.toml                     |   1 
crates/telemetry/Cargo.toml                    |   1 
crates/telemetry_events/Cargo.toml             |   1 
crates/terminal/Cargo.toml                     |   1 
crates/terminal_view/Cargo.toml                |   1 
crates/text/Cargo.toml                         |   1 
crates/theme/Cargo.toml                        |   1 
crates/theme_extension/Cargo.toml              |   1 
crates/theme_importer/Cargo.toml               |   1 
crates/theme_selector/Cargo.toml               |   1 
crates/time_format/Cargo.toml                  |   1 
crates/title_bar/Cargo.toml                    |   1 
crates/toolchain_selector/Cargo.toml           |   1 
crates/ui/Cargo.toml                           |   1 
crates/ui_input/Cargo.toml                     |   1 
crates/ui_macros/Cargo.toml                    |   1 
crates/ui_prompt/Cargo.toml                    |   1 
crates/util/Cargo.toml                         |   1 
crates/util_macros/Cargo.toml                  |   1 
crates/vim/Cargo.toml                          |   1 
crates/vim_mode_setting/Cargo.toml             |   1 
crates/welcome/Cargo.toml                      |   1 
crates/workspace/Cargo.toml                    |   1 
crates/worktree/Cargo.toml                     |   1 
crates/zed/Cargo.toml                          |   1 
crates/zed_actions/Cargo.toml                  |   1 
crates/zeta/Cargo.toml                         |   1 
crates/zlog/Cargo.toml                         |   1 
crates/zlog_settings/Cargo.toml                |   1 
nix/shell.nix                                  |   4 
script/licenses/zed-licenses.toml              |   1 
script/update-workspace-hack                   |  20 
tooling/workspace-hack/.gitattributes          |   4 
tooling/workspace-hack/.ignore                 |   2 
tooling/workspace-hack/Cargo.toml              | 670 ++++++++++++++++++++
tooling/workspace-hack/LICENSE-GPL             |   1 
tooling/workspace-hack/build.rs                |   2 
tooling/workspace-hack/src/lib.rs              |   1 
tooling/xtask/Cargo.toml                       |   1 
185 files changed, 1,135 insertions(+), 138 deletions(-)

Detailed changes

.config/hakari.toml 🔗

@@ -0,0 +1,40 @@
+# This file contains settings for `cargo hakari`.
+# See https://docs.rs/cargo-hakari/latest/cargo_hakari/config for a full list of options.
+
+hakari-package = "workspace-hack"
+
+resolver = "2"
+dep-format-version = "4"
+workspace-hack-line-style = "workspace-dotted"
+
+# this should be the same list as "targets" in ../rust-toolchain.toml
+platforms = [
+    "x86_64-apple-darwin",
+    "aarch64-apple-darwin",
+    "x86_64-unknown-linux-gnu",
+    "aarch64-unknown-linux-gnu",
+    "x86_64-pc-windows-msvc",
+    "x86_64-unknown-linux-musl", # remote server
+]
+
+[traversal-excludes]
+workspace-members = [
+    "remote_server",
+]
+
+[final-excludes]
+workspace-members = [
+    "zed_extension_api",
+
+    # exclude all extensions
+    "zed_emmet",
+    "zed_glsl",
+    "zed_html",
+    "perplexity",
+    "zed_proto",
+    "zed_ruff",
+    "slash_commands_example",
+    "zed_snippets",
+    "zed_test_extension",
+    "zed_toml",
+]

.github/workflows/ci.yml 🔗

@@ -110,6 +110,37 @@ jobs:
           input: "crates/proto/proto/"
           against: "https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/"
 
+  workspace_hack:
+    timeout-minutes: 60
+    name: Check workspace-hack crate
+    needs: [job_spec]
+    if: github.repository_owner == 'zed-industries'
+    runs-on:
+      - buildjet-8vcpu-ubuntu-2204
+    steps:
+      - name: Checkout repo
+        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+      - name: Add Rust to the PATH
+        run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
+      - name: Install cargo-hakari
+        uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386 # v2
+        with:
+          command: install
+          args: cargo-hakari@0.9.35
+
+      - name: Check workspace-hack Cargo.toml is up-to-date
+        run: |
+          cargo hakari generate --diff || {
+            echo "To fix, run script/update-workspace-hack";
+            false
+          }
+      - name: Check all crates depend on workspace-hack
+        run: |
+          cargo hakari manage-deps --dry-run || {
+            echo "To fix, run script/update-workspace-hack"
+            false
+          }
+
   style:
     timeout-minutes: 60
     name: Check formatting and spelling
@@ -432,6 +463,7 @@ jobs:
       - job_spec
       - style
       - migration_checks
+      - workspace_hack
       - linux_tests
       - build_remote_server
       - macos_tests

Cargo.lock 🔗

@@ -18,6 +18,7 @@ dependencies = [
  "ui",
  "util",
  "workspace",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -119,6 +120,7 @@ dependencies = [
  "uuid",
  "vim_mode_setting",
  "workspace",
+ "workspace-hack",
  "zed_actions",
 ]
 
@@ -173,7 +175,7 @@ dependencies = [
  "rustix-openpty",
  "serde",
  "signal-hook",
- "unicode-width",
+ "unicode-width 0.1.14",
  "vte",
  "windows-sys 0.59.0",
 ]
@@ -299,11 +301,12 @@ dependencies = [
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.6"
+version = "3.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
+checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
 dependencies = [
  "anstyle",
+ "once_cell",
  "windows-sys 0.59.0",
 ]
 
@@ -321,6 +324,7 @@ dependencies = [
  "strum",
  "thiserror 2.0.12",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -443,6 +447,7 @@ dependencies = [
  "tempfile",
  "util",
  "which 6.0.3",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -452,6 +457,7 @@ dependencies = [
  "anyhow",
  "gpui",
  "rust-embed",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -472,7 +478,7 @@ dependencies = [
  "ctor",
  "db",
  "editor",
- "env_logger 0.11.7",
+ "env_logger 0.11.8",
  "feature_flags",
  "fs",
  "futures 0.3.31",
@@ -513,6 +519,7 @@ dependencies = [
  "unindent",
  "util",
  "workspace",
+ "workspace-hack",
  "zed_actions",
 ]
 
@@ -567,6 +574,7 @@ dependencies = [
  "util",
  "uuid",
  "workspace",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -582,7 +590,7 @@ dependencies = [
  "collections",
  "context_server",
  "dap",
- "env_logger 0.11.7",
+ "env_logger 0.11.8",
  "fs",
  "futures 0.3.31",
  "gpui",
@@ -603,6 +611,7 @@ dependencies = [
  "settings",
  "smol",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -626,6 +635,7 @@ dependencies = [
  "serde",
  "serde_json_lenient",
  "settings",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -647,6 +657,7 @@ dependencies = [
  "serde_json",
  "ui",
  "workspace",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -660,7 +671,7 @@ dependencies = [
  "collections",
  "context_server",
  "editor",
- "env_logger 0.11.7",
+ "env_logger 0.11.8",
  "feature_flags",
  "fs",
  "futures 0.3.31",
@@ -685,6 +696,7 @@ dependencies = [
  "ui",
  "util",
  "workspace",
+ "workspace-hack",
  "worktree",
 ]
 
@@ -698,7 +710,7 @@ dependencies = [
  "collections",
  "ctor",
  "derive_more",
- "env_logger 0.11.7",
+ "env_logger 0.11.8",
  "futures 0.3.31",
  "gpui",
  "icons",
@@ -714,6 +726,7 @@ dependencies = [
  "settings",
  "text",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -748,6 +761,7 @@ dependencies = [
  "unindent",
  "util",
  "workspace",
+ "workspace-hack",
  "worktree",
 ]
 
@@ -767,7 +781,7 @@ version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
 dependencies = [
- "event-listener 5.3.1",
+ "event-listener 5.4.0",
  "event-listener-strategy",
  "futures-core",
  "pin-project-lite",
@@ -885,7 +899,7 @@ dependencies = [
  "futures-lite 2.6.0",
  "parking",
  "polling",
- "rustix",
+ "rustix 0.38.44",
  "slab",
  "tracing",
  "windows-sys 0.59.0",
@@ -897,7 +911,7 @@ version = "3.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
 dependencies = [
- "event-listener 5.3.1",
+ "event-listener 5.4.0",
  "event-listener-strategy",
  "pin-project-lite",
 ]
@@ -947,9 +961,9 @@ dependencies = [
  "async-task",
  "blocking",
  "cfg-if",
- "event-listener 5.3.1",
+ "event-listener 5.4.0",
  "futures-lite 2.6.0",
- "rustix",
+ "rustix 0.38.44",
  "tracing",
 ]
 
@@ -987,7 +1001,7 @@ dependencies = [
  "cfg-if",
  "futures-core",
  "futures-io",
- "rustix",
+ "rustix 0.38.44",
  "signal-hook-registry",
  "slab",
  "windows-sys 0.59.0",
@@ -1191,6 +1205,7 @@ dependencies = [
  "parking_lot",
  "rodio",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -1225,6 +1240,7 @@ dependencies = [
  "tempfile",
  "which 6.0.3",
  "workspace",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -1244,6 +1260,7 @@ dependencies = [
  "smol",
  "util",
  "workspace",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -1268,18 +1285,18 @@ dependencies = [
 
 [[package]]
 name = "avif-serialize"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62"
+checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e"
 dependencies = [
  "arrayvec",
 ]
 
 [[package]]
 name = "aws-config"
-version = "1.5.16"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50236e4d60fe8458de90a71c0922c761e41755adf091b1b03de1cef537179915"
+checksum = "8c39646d1a6b51240a1a23bb57ea4eebede7e16fbc237fdc876980233dcecb4f"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -1296,7 +1313,7 @@ dependencies = [
  "bytes 1.10.1",
  "fastrand 2.3.0",
  "hex",
- "http 0.2.12",
+ "http 1.3.1",
  "ring",
  "time",
  "tokio",
@@ -1307,9 +1324,9 @@ dependencies = [
 
 [[package]]
 name = "aws-credential-types"
-version = "1.2.1"
+version = "1.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da"
+checksum = "4471bef4c22a06d2c7a1b6492493d3fdf24a805323109d6874f9c94d5906ac14"
 dependencies = [
  "aws-smithy-async",
  "aws-smithy-runtime-api",
@@ -1319,9 +1336,9 @@ dependencies = [
 
 [[package]]
 name = "aws-lc-rs"
-version = "1.12.6"
+version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dabb68eb3a7aa08b46fddfd59a3d55c978243557a90ab804769f7e20e67d2b01"
+checksum = "19b756939cb2f8dc900aa6dcd505e6e2428e9cae7ff7b028c49e3946efa70878"
 dependencies = [
  "aws-lc-sys",
  "zeroize",
@@ -1329,9 +1346,9 @@ dependencies = [
 
 [[package]]
 name = "aws-lc-sys"
-version = "0.27.0"
+version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6bbe221bbf523b625a4dd8585c7f38166e31167ec2ca98051dbcb4c3b6e825d2"
+checksum = "b9f7720b74ed28ca77f90769a71fd8c637a0137f6fae4ae947e1050229cff57f"
 dependencies = [
  "bindgen 0.69.5",
  "cc",
@@ -1342,9 +1359,9 @@ dependencies = [
 
 [[package]]
 name = "aws-runtime"
-version = "1.5.5"
+version = "1.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad"
+checksum = "0aff45ffe35196e593ea3b9dd65b320e51e2dda95aff4390bc459e461d09c6ad"
 dependencies = [
  "aws-credential-types",
  "aws-sigv4",
@@ -1368,9 +1385,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-bedrockruntime"
-version = "1.74.0"
+version = "1.80.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6938541d1948a543bca23303fec4cff9c36bf0e63b8fa3ae1b337bcb9d5b81af"
+checksum = "39ee8ef191b908d013659ca2c0670215f0c920c781998e1dc55904d6bdb73b51"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -1392,13 +1409,14 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-kinesis"
-version = "1.61.0"
+version = "1.66.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89f2163d8704e8fdcd51ec6c2e0441c418471e422ee9690451b17a1c46344e1a"
+checksum = "e43e5fb05c78cdad4fef5be4503465e4b42292f472fc991823ea4c50078208e4"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
  "aws-smithy-async",
+ "aws-smithy-eventstream",
  "aws-smithy-http",
  "aws-smithy-json",
  "aws-smithy-runtime",
@@ -1406,6 +1424,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-types",
  "bytes 1.10.1",
+ "fastrand 2.3.0",
  "http 0.2.12",
  "once_cell",
  "regex-lite",
@@ -1414,9 +1433,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-s3"
-version = "1.76.0"
+version = "1.82.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66e83401ad7287ad15244d557e35502c2a94105ca5b41d656c391f1a4fc04ca2"
+checksum = "e6eab2900764411ab01c8e91a76fd11a63b4e12bc3da97d9e14a0ce1343d86d3"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -1436,6 +1455,7 @@ dependencies = [
  "hex",
  "hmac",
  "http 0.2.12",
+ "http 1.3.1",
  "http-body 0.4.6",
  "lru",
  "once_cell",
@@ -1448,9 +1468,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-sso"
-version = "1.58.0"
+version = "1.64.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16ff718c9ee45cc1ebd4774a0e086bb80a6ab752b4902edf1c9f56b86ee1f770"
+checksum = "02d4bdb0e5f80f0689e61c77ab678b2b9304af329616af38aef5b6b967b8e736"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -1462,6 +1482,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-types",
  "bytes 1.10.1",
+ "fastrand 2.3.0",
  "http 0.2.12",
  "once_cell",
  "regex-lite",
@@ -1470,9 +1491,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-ssooidc"
-version = "1.59.0"
+version = "1.65.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5183e088715cc135d8d396fdd3bc02f018f0da4c511f53cb8d795b6a31c55809"
+checksum = "acbbb3ce8da257aedbccdcb1aadafbbb6a5fe9adf445db0e1ea897bdc7e22d08"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -1484,6 +1505,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-types",
  "bytes 1.10.1",
+ "fastrand 2.3.0",
  "http 0.2.12",
  "once_cell",
  "regex-lite",
@@ -1492,9 +1514,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sdk-sts"
-version = "1.59.0"
+version = "1.65.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9f944ef032717596639cea4a2118a3a457268ef51bbb5fde9637e54c465da00"
+checksum = "96a78a8f50a1630db757b60f679c8226a8a70ee2ab5f5e6e51dc67f6c61c7cfd"
 dependencies = [
  "aws-credential-types",
  "aws-runtime",
@@ -1507,6 +1529,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-smithy-xml",
  "aws-types",
+ "fastrand 2.3.0",
  "http 0.2.12",
  "once_cell",
  "regex-lite",
@@ -1515,9 +1538,9 @@ dependencies = [
 
 [[package]]
 name = "aws-sigv4"
-version = "1.2.9"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9bfe75fad52793ce6dec0dc3d4b1f388f038b5eb866c8d4d7f3a8e21b5ea5051"
+checksum = "69d03c3c05ff80d54ff860fe38c726f6f494c639ae975203a101335f223386db"
 dependencies = [
  "aws-credential-types",
  "aws-smithy-eventstream",
@@ -1530,7 +1553,7 @@ dependencies = [
  "hex",
  "hmac",
  "http 0.2.12",
- "http 1.2.0",
+ "http 1.3.1",
  "once_cell",
  "p256",
  "percent-encoding",
@@ -1544,9 +1567,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-async"
-version = "1.2.4"
+version = "1.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa59d1327d8b5053c54bf2eaae63bf629ba9e904434d0835a28ed3c0ed0a614e"
+checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c"
 dependencies = [
  "futures-util",
  "pin-project-lite",
@@ -1555,9 +1578,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-checksums"
-version = "0.62.0"
+version = "0.63.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2f45a1c384d7a393026bc5f5c177105aa9fa68e4749653b985707ac27d77295"
+checksum = "b65d21e1ba6f2cdec92044f904356a19f5ad86961acf015741106cdfafd747c0"
 dependencies = [
  "aws-smithy-http",
  "aws-smithy-types",
@@ -1577,9 +1600,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-eventstream"
-version = "0.60.6"
+version = "0.60.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b18559a41e0c909b77625adf2b8c50de480a8041e5e4a3f5f7d177db70abc5a"
+checksum = "7c45d3dddac16c5c59d553ece225a88870cf81b7b813c9cc17b78cf4685eac7a"
 dependencies = [
  "aws-smithy-types",
  "bytes 1.10.1",
@@ -1588,9 +1611,9 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-http"
-version = "0.60.12"
+version = "0.62.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7809c27ad8da6a6a68c454e651d4962479e81472aa19ae99e59f9aba1f9713cc"
+checksum = "c5949124d11e538ca21142d1fba61ab0a2a2c1bc3ed323cdb3e4b878bfb83166"
 dependencies = [
  "aws-smithy-eventstream",
  "aws-smithy-runtime-api",
@@ -1599,6 +1622,7 @@ dependencies = [
  "bytes-utils",
  "futures-core",
  "http 0.2.12",
+ "http 1.3.1",
  "http-body 0.4.6",
  "once_cell",
  "percent-encoding",
@@ -1607,15 +1631,53 @@ dependencies = [
  "tracing",
 ]
 
+[[package]]
+name = "aws-smithy-http-client"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8aff1159006441d02e57204bf57a1b890ba68bedb6904ffd2873c1c4c11c546b"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "h2 0.4.8",
+ "http 0.2.12",
+ "http 1.3.1",
+ "http-body 0.4.6",
+ "hyper 0.14.32",
+ "hyper 1.6.0",
+ "hyper-rustls 0.24.2",
+ "hyper-rustls 0.27.5",
+ "hyper-util",
+ "pin-project-lite",
+ "rustls 0.21.12",
+ "rustls 0.23.25",
+ "rustls-native-certs 0.8.1",
+ "rustls-pki-types",
+ "tokio",
+ "tower 0.5.2",
+ "tracing",
+]
+
 [[package]]
 name = "aws-smithy-json"
-version = "0.61.2"
+version = "0.61.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "623a51127f24c30776c8b374295f2df78d92517386f77ba30773f15a30ce1422"
+checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07"
 dependencies = [
  "aws-smithy-types",
 ]
 
+[[package]]
+name = "aws-smithy-observability"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445d065e76bc1ef54963db400319f1dd3ebb3e0a74af20f7f7630625b0cc7cc0"
+dependencies = [
+ "aws-smithy-runtime-api",
+ "once_cell",
+]
+
 [[package]]
 name = "aws-smithy-query"
 version = "0.60.7"
@@ -1628,42 +1690,40 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-runtime"
-version = "1.7.8"
+version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92"
+checksum = "0152749e17ce4d1b47c7747bdfec09dac1ccafdcbc741ebf9daa2a373356730f"
 dependencies = [
  "aws-smithy-async",
  "aws-smithy-http",
+ "aws-smithy-http-client",
+ "aws-smithy-observability",
  "aws-smithy-runtime-api",
  "aws-smithy-types",
  "bytes 1.10.1",
  "fastrand 2.3.0",
- "h2 0.3.26",
  "http 0.2.12",
+ "http 1.3.1",
  "http-body 0.4.6",
  "http-body 1.0.1",
- "httparse",
- "hyper 0.14.32",
- "hyper-rustls 0.24.2",
  "once_cell",
  "pin-project-lite",
  "pin-utils",
- "rustls 0.21.12",
  "tokio",
  "tracing",
 ]
 
 [[package]]
 name = "aws-smithy-runtime-api"
-version = "1.7.3"
+version = "1.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92165296a47a812b267b4f41032ff8069ab7ff783696d217f0994a0d7ab585cd"
+checksum = "3da37cf5d57011cb1753456518ec76e31691f1f474b73934a284eb2a1c76510f"
 dependencies = [
  "aws-smithy-async",
  "aws-smithy-types",
  "bytes 1.10.1",
  "http 0.2.12",
- "http 1.2.0",
+ "http 1.3.1",
  "pin-project-lite",
  "tokio",
  "tracing",
@@ -1672,16 +1732,16 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-types"
-version = "1.2.13"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042"
+checksum = "836155caafba616c0ff9b07944324785de2ab016141c3550bd1c07882f8cee8f"
 dependencies = [
  "base64-simd",
  "bytes 1.10.1",
  "bytes-utils",
  "futures-core",
  "http 0.2.12",
- "http 1.2.0",
+ "http 1.3.1",
  "http-body 0.4.6",
  "http-body 1.0.1",
  "http-body-util",
@@ -1707,9 +1767,9 @@ dependencies = [
 
 [[package]]
 name = "aws-types"
-version = "1.3.5"
+version = "1.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f"
+checksum = "3873f8deed8927ce8d04487630dc9ff73193bab64742a61d050e57a68dec4125"
 dependencies = [
  "aws-credential-types",
  "aws-smithy-async",
@@ -1728,6 +1788,7 @@ dependencies = [
  "futures 0.3.31",
  "http_client",
  "tokio",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -1761,7 +1822,7 @@ dependencies = [
  "sync_wrapper 0.1.2",
  "tokio",
  "tokio-tungstenite 0.20.1",
- "tower",
+ "tower 0.4.13",
  "tower-layer",
  "tower-service",
 ]
@@ -1798,7 +1859,7 @@ dependencies = [
  "serde",
  "serde_json",
  "tokio",
- "tower",
+ "tower 0.4.13",
  "tower-http 0.3.5",
  "tower-layer",
  "tower-service",
@@ -1855,9 +1916,9 @@ dependencies = [
 
 [[package]]
 name = "base64ct"
-version = "1.6.0"
+version = "1.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
 
 [[package]]
 name = "bedrock"
@@ -1873,13 +1934,14 @@ dependencies = [
  "strum",
  "thiserror 2.0.12",
  "tokio",
+ "workspace-hack",
 ]
 
 [[package]]
 name = "bigdecimal"
-version = "0.4.7"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f31f3af01c5c65a07985c804d3366560e6fa7883d640a122819b14ec327482c"
+checksum = "1a22f228ab7a1b23027ccc6c350b72868017af7ea8356fbdf19f8d991c690013"
 dependencies = [
  "autocfg",
  "libm",
@@ -1930,7 +1992,7 @@ dependencies = [
  "bitflags 2.9.0",
  "cexpr",
  "clang-sys",
- "itertools 0.12.1",
+ "itertools 0.13.0",
  "proc-macro2",
  "quote",
  "regex",
@@ -1948,7 +2010,7 @@ dependencies = [
  "bitflags 2.9.0",
  "cexpr",
  "clang-sys",
- "itertools 0.12.1",
+ "itertools 0.13.0",
  "log",
  "prettyplease",
  "proc-macro2",
@@ -2037,7 +2099,7 @@ dependencies = [
  "ash-window",
  "bitflags 2.9.0",
  "bytemuck",
- "codespan-reporting",
+ "codespan-reporting 0.11.1",
  "glow",
  "gpu-alloc",
  "gpu-alloc-ash",
@@ -2083,9 +2145,9 @@ dependencies = [
 
 [[package]]
 name = "blake3"
-version = "1.7.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b17679a8d69b6d7fd9cd9801a536cec9fa5e5970b69f9d4747f70b39b031f5e7"
+checksum = "34a796731680be7931955498a16a10b2270c7762963d5d570fdbfe02dcbf314f"
 dependencies = [
  "arrayref",
  "arrayvec",
@@ -2142,9 +2204,9 @@ dependencies = [
 
 [[package]]
 name = "borsh"
-version = "1.5.3"
+version = "1.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03"
+checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce"
 dependencies = [
  "borsh-derive",
  "cfg_aliases 0.2.1",
@@ -2152,9 +2214,9 @@ dependencies = [
 
 [[package]]
 name = "borsh-derive"
-version = "1.5.3"
+version = "1.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244"
+checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3"
 dependencies = [
  "once_cell",
  "proc-macro-crate",
@@ -2173,14 +2235,15 @@ dependencies = [
  "theme",
  "ui",
  "workspace",
+ "workspace-hack",
  "zed_actions",
 ]
 
 [[package]]
 name = "bstr"
-version = "1.11.1"
+version = "1.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8"
+checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0"
 dependencies = [
  "memchr",
  "regex-automata 0.4.9",
@@ -2194,7 +2257,7 @@ dependencies = [
  "anyhow",
  "clock",
  "ctor",
- "env_logger 0.11.7",
+ "env_logger 0.11.8",
  "futures 0.3.31",
  "git2",
  "gpui",
@@ -2208,19 +2271,20 @@ dependencies = [
  "text",
  "unindent",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
 name = "built"
-version = "0.7.5"
+version = "0.7.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b"
+checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b"
 
 [[package]]
 name = "bumpalo"
-version = "3.16.0"
+version = "3.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
 dependencies = [
  "allocator-api2",
 ]
@@ -2255,18 +2319,18 @@ dependencies = [
 
 [[package]]
 name = "bytemuck"
-version = "1.21.0"
+version = "1.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
+checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
 dependencies = [
  "bytemuck_derive",
 ]
 
 [[package]]
 name = "bytemuck_derive"
-version = "1.8.0"
+version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec"
+checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2323,12 +2387,11 @@ dependencies = [
 
 [[package]]
 name = "bzip2-sys"
-version = "0.1.11+1.0.8"
+version = "0.1.13+1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
 dependencies = [
  "cc",
- "libc",
  "pkg-config",
 ]
 
@@ -2356,6 +2419,7 @@ dependencies = [
  "settings",
  "telemetry",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -2367,7 +2431,7 @@ dependencies = [
  "bitflags 2.9.0",
  "log",
  "polling",
- "rustix",
+ "rustix 0.38.44",
  "slab",
  "thiserror 1.0.69",
 ]
@@ -2379,7 +2443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20"
 dependencies = [
  "calloop",
- "rustix",
+ "rustix 0.38.44",
  "wayland-backend",
  "wayland-client",
 ]
@@ -2413,7 +2477,7 @@ checksum = "4ac68674a6042af2bcee1adad9f6abd432642cf03444ce3a5b36c3f39f23baf8"
 dependencies = [
  "cap-primitives",
  "cap-std",
- "rustix",
+ "rustix 0.38.44",
  "smallvec",
 ]
 
@@ -2429,7 +2493,7 @@ dependencies = [
  "io-lifetimes",
  "ipnet",
  "maybe-owned",
- "rustix",
+ "rustix 0.38.44",
  "windows-sys 0.59.0",
  "winx",
 ]
@@ -2453,7 +2517,7 @@ dependencies = [
  "cap-primitives",
  "io-extras",
  "io-lifetimes",
- "rustix",
+ "rustix 0.38.44",
 ]
 
 [[package]]
@@ -2466,7 +2530,7 @@ dependencies = [
  "cap-primitives",
  "iana-time-zone",
  "once_cell",
- "rustix",
+ "rustix 0.38.44",
  "winx",
 ]
 
@@ -2518,25 +2582,6 @@ dependencies = [
  "cipher",
 ]
 
-[[package]]
-name = "cbindgen"
-version = "0.27.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb"
-dependencies = [
- "clap",
- "heck 0.4.1",
- "indexmap",
- "log",
- "proc-macro2",
- "quote",
- "serde",
- "serde_json",
- "syn 2.0.100",
- "tempfile",
- "toml 0.8.20",
-]
-
 [[package]]
 name = "cbindgen"
 version = "0.28.0"
@@ -2557,9 +2602,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.2.12"
+version = "1.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2"
+checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
 dependencies = [
  "jobserver",
  "libc",
@@ -2639,6 +2684,7 @@ dependencies = [
  "text",
  "time",
  "util",
+ "workspace-hack",
 ]
 
 [[package]]
@@ -2702,9 +2748,9 @@ dependencies = [
 
 [[package]]
 name = "circular-buffer"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dacb91f972298e70fc507a2ffcaf1545807f1a36da586fb846646030adc542f"
+checksum = "23bdce1da528cadbac4654b5632bfcd8c6c63e25b1d42cea919a95958790b51d"
 
 [[package]]
 name = "clang-sys"
@@ -2719,9 +2765,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.34"
+version = "4.5.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff"
+checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -2729,9 +2775,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.34"
+version = "4.5.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489"
+checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9"
 dependencies = [
  "anstream",
  "anstyle",

Cargo.toml 🔗

@@ -192,6 +192,7 @@ members = [
     # Tooling
     #
 
+    "tooling/workspace-hack",
     "tooling/xtask",
 ]
 default-members = ["crates/zed"]
@@ -590,6 +591,7 @@ wasmtime = { version = "29", default-features = false, features = [
 wasmtime-wasi = "29"
 which = "6.0.0"
 wit-component = "0.221"
+workspace-hack = "0.1.0"
 zed_llm_client = "0.4"
 zstd = "0.11"
 metal = "0.29"
@@ -660,6 +662,9 @@ real-async-tls = { git = "https://github.com/zed-industries/async-tls", rev = "1
 notify = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
 notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
 
+# Makes the workspace hack crate refer to the local one, but only when you're building locally
+workspace-hack = { path = "tooling/workspace-hack" }
+
 [profile.dev]
 split-debuginfo = "unpacked"
 codegen-units = 16
@@ -771,4 +776,4 @@ let_underscore_future = "allow"
 too_many_arguments = "allow"
 
 [workspace.metadata.cargo-machete]
-ignored = ["bindgen", "cbindgen", "prost_build", "serde", "component", "linkme"]
+ignored = ["bindgen", "cbindgen", "prost_build", "serde", "component", "linkme", "workspace-hack"]

crates/activity_indicator/Cargo.toml 🔗

@@ -25,6 +25,7 @@ smallvec.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/agent/Cargo.toml 🔗

@@ -86,6 +86,7 @@ uuid.workspace = true
 vim_mode_setting.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 buffer_diff = { workspace = true, features = ["test-support"] }

crates/anthropic/Cargo.toml 🔗

@@ -26,3 +26,4 @@ serde_json.workspace = true
 strum.workspace = true
 thiserror.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/askpass/Cargo.toml 🔗

@@ -19,3 +19,4 @@ smol.workspace = true
 tempfile.workspace = true
 util.workspace = true
 which.workspace = true
+workspace-hack.workspace = true

crates/assets/Cargo.toml 🔗

@@ -15,3 +15,4 @@ workspace = true
 anyhow.workspace = true
 gpui.workspace = true
 rust-embed.workspace = true
+workspace-hack.workspace = true

crates/assistant/Cargo.toml 🔗

@@ -69,6 +69,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/assistant_context_editor/Cargo.toml 🔗

@@ -54,6 +54,7 @@ ui.workspace = true
 util.workspace = true
 uuid.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 language_model = { workspace = true, features = ["test-support"] }

crates/assistant_eval/Cargo.toml 🔗

@@ -43,3 +43,4 @@ serde_json_lenient.workspace = true
 settings.workspace = true
 smol.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/assistant_settings/Cargo.toml 🔗

@@ -26,6 +26,7 @@ deepseek = { workspace = true, features = ["schemars"] }
 schemars.workspace = true
 serde.workspace = true
 settings.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 fs.workspace = true

crates/assistant_slash_command/Cargo.toml 🔗

@@ -26,6 +26,7 @@ serde.workspace = true
 serde_json.workspace = true
 ui.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui = { workspace = true, features = ["test-support"] }

crates/assistant_slash_commands/Cargo.toml 🔗

@@ -42,6 +42,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 worktree.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 env_logger.workspace = true

crates/assistant_tool/Cargo.toml 🔗

@@ -28,6 +28,7 @@ serde.workspace = true
 serde_json.workspace = true
 text.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 buffer_diff = { workspace = true, features = ["test-support"] }

crates/assistant_tools/Cargo.toml 🔗

@@ -39,6 +39,7 @@ util.workspace = true
 workspace.workspace = true
 worktree.workspace = true
 open = { workspace = true }
+workspace-hack.workspace = true
 
 [dev-dependencies]
 collections = { workspace = true, features = ["test-support"] }

crates/audio/Cargo.toml 🔗

@@ -20,3 +20,4 @@ gpui.workspace = true
 parking_lot.workspace = true
 rodio = { version = "0.20.0", default-features = false, features = ["wav"] }
 util.workspace = true
+workspace-hack.workspace = true

crates/auto_update/Cargo.toml 🔗

@@ -29,3 +29,4 @@ smol.workspace = true
 tempfile.workspace = true
 which.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/auto_update_ui/Cargo.toml 🔗

@@ -25,3 +25,4 @@ serde_json.workspace = true
 smol.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/aws_http_client/Cargo.toml 🔗

@@ -20,3 +20,4 @@ aws-smithy-types.workspace = true
 futures.workspace = true
 http_client.workspace = true
 tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
+workspace-hack.workspace = true

crates/bedrock/Cargo.toml 🔗

@@ -26,3 +26,4 @@ serde_json.workspace = true
 strum.workspace = true
 thiserror.workspace = true
 tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
+workspace-hack.workspace = true

crates/breadcrumbs/Cargo.toml 🔗

@@ -20,6 +20,7 @@ theme.workspace = true
 ui.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/buffer_diff/Cargo.toml 🔗

@@ -27,6 +27,7 @@ rope.workspace = true
 sum_tree.workspace = true
 text.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/call/Cargo.toml 🔗

@@ -42,6 +42,7 @@ telemetry.workspace = true
 util.workspace = true
 gpui_tokio.workspace = true
 livekit_client.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/channel/Cargo.toml 🔗

@@ -32,6 +32,7 @@ sum_tree.workspace = true
 text.workspace = true
 time.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 collections = { workspace = true, features = ["test-support"] }

crates/cli/Cargo.toml 🔗

@@ -31,6 +31,7 @@ release_channel.workspace = true
 serde.workspace = true
 util.workspace = true
 tempfile.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
 exec.workspace = true

crates/client/Cargo.toml 🔗

@@ -51,6 +51,7 @@ url.workspace = true
 util.workspace = true
 worktree.workspace = true
 telemetry.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 clock = { workspace = true, features = ["test-support"] }

crates/clock/Cargo.toml 🔗

@@ -19,3 +19,4 @@ test-support = ["dep:parking_lot"]
 parking_lot = { workspace = true, optional = true }
 serde.workspace = true
 smallvec.workspace = true
+workspace-hack.workspace = true

crates/collab/Cargo.toml 🔗

@@ -76,6 +76,7 @@ tracing = "0.1.40"
 tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json", "registry", "tracing-log"] } # workaround for https://github.com/tokio-rs/tracing/issues/2927
 util.workspace = true
 uuid.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 assistant = { workspace = true, features = ["test-support"] }

crates/collab_ui/Cargo.toml 🔗

@@ -64,6 +64,7 @@ title_bar.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 call = { workspace = true, features = ["test-support"] }

crates/collections/Cargo.toml 🔗

@@ -18,3 +18,4 @@ test-support = []
 [dependencies]
 indexmap.workspace = true
 rustc-hash.workspace = true
+workspace-hack.workspace = true

crates/command_palette/Cargo.toml 🔗

@@ -31,6 +31,7 @@ util.workspace = true
 telemetry.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/component/Cargo.toml 🔗

@@ -17,6 +17,7 @@ gpui.workspace = true
 linkme.workspace = true
 parking_lot.workspace = true
 theme.workspace = true
+workspace-hack.workspace = true
 
 [features]
 default = []

crates/component_preview/Cargo.toml 🔗

@@ -24,3 +24,4 @@ ui.workspace = true
 workspace.workspace = true
 notifications.workspace = true
 collections.workspace = true
+workspace-hack.workspace = true

crates/context_server/Cargo.toml 🔗

@@ -33,3 +33,4 @@ settings.workspace = true
 smol.workspace = true
 url = { workspace = true, features = ["serde"] }
 util.workspace = true
+workspace-hack.workspace = true

crates/copilot/Cargo.toml 🔗

@@ -52,6 +52,7 @@ task.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 async-std = { version = "1.12.0", features = ["unstable"] }

crates/dap/Cargo.toml 🔗

@@ -48,6 +48,7 @@ smallvec.workspace = true
 smol.workspace = true
 task.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 async-pipe.workspace = true

crates/dap_adapters/Cargo.toml 🔗

@@ -32,6 +32,7 @@ serde.workspace = true
 serde_json.workspace = true
 task.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 dap = { workspace = true, features = ["test-support"] }

crates/db/Cargo.toml 🔗

@@ -26,6 +26,7 @@ smol.workspace = true
 sqlez.workspace = true
 sqlez_macros.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui = { workspace = true, features = ["test-support"] }

crates/debugger_tools/Cargo.toml 🔗

@@ -24,3 +24,4 @@ settings.workspace = true
 smol.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/debugger_ui/Cargo.toml 🔗

@@ -50,6 +50,7 @@ theme.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 dap = { workspace = true, features = ["test-support"] }

crates/deepseek/Cargo.toml 🔗

@@ -22,3 +22,4 @@ http_client.workspace = true
 schemars = { workspace = true, optional = true }
 serde.workspace = true
 serde_json.workspace = true
+workspace-hack.workspace = true

crates/diagnostics/Cargo.toml 🔗

@@ -30,6 +30,7 @@ theme.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/docs_preprocessor/Cargo.toml 🔗

@@ -14,6 +14,7 @@ serde_json.workspace = true
 settings.workspace = true
 regex.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [lints]
 workspace = true

crates/editor/Cargo.toml 🔗

@@ -87,6 +87,7 @@ util.workspace = true
 uuid.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/evals/Cargo.toml 🔗

@@ -37,3 +37,4 @@ serde_json.workspace = true
 settings.workspace = true
 smol.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/evals/src/eval.rs 🔗

@@ -483,8 +483,8 @@ async fn run_eval_project(
             for (ix, result) in results.iter().enumerate() {
                 if result.path.as_ref() == Path::new(&expected_result.file) {
                     file_matched = true;
-                    let start_matched = result.row_range.contains(&expected_result.lines.start());
-                    let end_matched = result.row_range.contains(&expected_result.lines.end());
+                    let start_matched = result.row_range.contains(expected_result.lines.start());
+                    let end_matched = result.row_range.contains(expected_result.lines.end());
 
                     if start_matched || end_matched {
                         range_overlapped = true;

crates/extension/Cargo.toml 🔗

@@ -34,3 +34,4 @@ util.workspace = true
 wasm-encoder.workspace = true
 wasmparser.workspace = true
 wit-component.workspace = true
+workspace-hack.workspace = true

crates/extension_cli/Cargo.toml 🔗

@@ -30,3 +30,4 @@ tokio = { workspace = true, features = ["full"] }
 toml.workspace = true
 tree-sitter.workspace = true
 wasmtime.workspace = true
+workspace-hack.workspace = true

crates/extension_host/Cargo.toml 🔗

@@ -51,6 +51,7 @@ util.workspace = true
 wasmparser.workspace = true
 wasmtime-wasi.workspace = true
 wasmtime.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/extensions_ui/Cargo.toml 🔗

@@ -38,6 +38,7 @@ util.workspace = true
 vim_mode_setting.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/feature_flags/Cargo.toml 🔗

@@ -15,3 +15,4 @@ path = "src/feature_flags.rs"
 futures.workspace = true
 gpui.workspace = true
 smol.workspace = true
+workspace-hack.workspace = true

crates/feedback/Cargo.toml 🔗

@@ -27,6 +27,7 @@ urlencoding.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/file_finder/Cargo.toml 🔗

@@ -32,6 +32,7 @@ theme.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/file_icons/Cargo.toml 🔗

@@ -18,3 +18,4 @@ serde.workspace = true
 settings.workspace = true
 theme.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/fs/Cargo.toml 🔗

@@ -33,6 +33,7 @@ tempfile.workspace = true
 text.workspace = true
 time.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(target_os = "macos")'.dependencies]
 fsevent.workspace = true

crates/fsevent/Cargo.toml 🔗

@@ -15,6 +15,7 @@ doctest = false
 [dependencies]
 bitflags.workspace = true
 parking_lot.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(target_os = "macos")'.dependencies]
 core-foundation.workspace = true

crates/fuzzy/Cargo.toml 🔗

@@ -16,3 +16,4 @@ doctest = false
 gpui.workspace = true
 util.workspace = true
 log.workspace = true
+workspace-hack.workspace = true

crates/git/Cargo.toml 🔗

@@ -38,6 +38,7 @@ url.workspace = true
 util.workspace = true
 uuid.workspace = true
 futures.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 pretty_assertions.workspace = true

crates/git_hosting_providers/Cargo.toml 🔗

@@ -25,6 +25,7 @@ serde_json.workspace = true
 settings.workspace = true
 url.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 indoc.workspace = true

crates/git_ui/Cargo.toml 🔗

@@ -59,6 +59,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 windows.workspace = true

crates/go_to_line/Cargo.toml 🔗

@@ -26,6 +26,7 @@ theme.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/google_ai/Cargo.toml 🔗

@@ -22,3 +22,4 @@ schemars = { workspace = true, optional = true }
 serde.workspace = true
 serde_json.workspace = true
 strum.workspace = true
+workspace-hack.workspace = true

crates/gpui/Cargo.toml 🔗

@@ -118,6 +118,7 @@ util.workspace = true
 uuid.workspace = true
 waker-fn = "1.2.0"
 lyon = "1.0"
+workspace-hack.workspace = true
 
 [target.'cfg(target_os = "macos")'.dependencies]
 block = "0.1"

crates/gpui_macros/Cargo.toml 🔗

@@ -17,6 +17,7 @@ doctest = true
 proc-macro2.workspace = true
 quote.workspace = true
 syn.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui.workspace = true

crates/gpui_tokio/Cargo.toml 🔗

@@ -16,3 +16,4 @@ doctest = false
 util.workspace = true
 gpui.workspace = true
 tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
+workspace-hack.workspace = true

crates/html_to_markdown/Cargo.toml 🔗

@@ -20,6 +20,7 @@ anyhow.workspace = true
 html5ever.workspace = true
 markup5ever_rcdom.workspace = true
 regex.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 indoc.workspace = true

crates/http_client/Cargo.toml 🔗

@@ -25,3 +25,4 @@ log.workspace = true
 serde.workspace = true
 serde_json.workspace = true
 url.workspace = true
+workspace-hack.workspace = true

crates/http_client_tls/Cargo.toml 🔗

@@ -18,3 +18,4 @@ doctest = true
 [dependencies]
 rustls.workspace = true
 rustls-platform-verifier.workspace = true
+workspace-hack.workspace = true

crates/icons/Cargo.toml 🔗

@@ -14,3 +14,4 @@ path = "src/icons.rs"
 [dependencies]
 serde.workspace = true
 strum.workspace = true
+workspace-hack.workspace = true

crates/image_viewer/Cargo.toml 🔗

@@ -29,6 +29,7 @@ theme.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/indexed_docs/Cargo.toml 🔗

@@ -31,6 +31,7 @@ paths.workspace = true
 serde.workspace = true
 strum.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 indoc.workspace = true

crates/inline_completion/Cargo.toml 🔗

@@ -15,3 +15,4 @@ path = "src/inline_completion.rs"
 gpui.workspace = true
 language.workspace = true
 project.workspace = true
+workspace-hack.workspace = true

crates/inline_completion_button/Cargo.toml 🔗

@@ -32,6 +32,7 @@ ui.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
 zeta.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 copilot = { workspace = true, features = ["test-support"] }

crates/install_cli/Cargo.toml 🔗

@@ -19,3 +19,4 @@ anyhow.workspace = true
 gpui.workspace = true
 smol.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/journal/Cargo.toml 🔗

@@ -23,6 +23,7 @@ serde.workspace = true
 settings.workspace = true
 shellexpand.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/language/Cargo.toml 🔗

@@ -63,6 +63,7 @@ tree-sitter-typescript = { workspace = true, optional = true }
 tree-sitter.workspace = true
 unicase = "2.6"
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 collections = { workspace = true, features = ["test-support"] }

crates/language_model/Cargo.toml 🔗

@@ -39,6 +39,7 @@ strum.workspace = true
 telemetry_events.workspace = true
 thiserror.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui = { workspace = true, features = ["test-support"] }

crates/language_models/Cargo.toml 🔗

@@ -51,6 +51,7 @@ tiktoken-rs.workspace = true
 tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
 ui.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/language_selector/Cargo.toml 🔗

@@ -26,6 +26,7 @@ settings.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/language_tools/Cargo.toml 🔗

@@ -30,6 +30,7 @@ tree-sitter.workspace = true
 ui.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/languages/Cargo.toml 🔗

@@ -83,6 +83,7 @@ tree-sitter-rust = { workspace = true, optional = true }
 tree-sitter-typescript = { workspace = true, optional = true }
 tree-sitter-yaml = { workspace = true, optional = true }
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 pretty_assertions.workspace = true

crates/livekit_api/Cargo.toml 🔗

@@ -22,6 +22,7 @@ prost.workspace = true
 prost-types.workspace = true
 reqwest.workspace = true
 serde.workspace = true
+workspace-hack.workspace = true
 
 [build-dependencies]
 prost-build.workspace = true

crates/livekit_client/Cargo.toml 🔗

@@ -37,6 +37,7 @@ postage.workspace = true
 smallvec.workspace = true
 tokio-tungstenite.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(not(all(target_os = "windows", target_env = "gnu")))'.dependencies]
 libwebrtc = { rev = "80bb8f4c9112789f7c24cc98d8423010977806a6", git = "https://github.com/zed-industries/livekit-rust-sdks" }

crates/lmstudio/Cargo.toml 🔗

@@ -22,3 +22,4 @@ http_client.workspace = true
 schemars = { workspace = true, optional = true }
 serde.workspace = true
 serde_json.workspace = true
+workspace-hack.workspace = true

crates/lsp/Cargo.toml 🔗

@@ -31,6 +31,7 @@ schemars.workspace = true
 smol.workspace = true
 util.workspace = true
 release_channel.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 async-pipe.workspace = true

crates/markdown/Cargo.toml 🔗

@@ -28,6 +28,7 @@ pulldown-cmark.workspace = true
 theme.workspace = true
 ui.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 assets.workspace = true

crates/markdown_preview/Cargo.toml 🔗

@@ -30,6 +30,7 @@ theme.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/media/Cargo.toml 🔗

@@ -14,6 +14,7 @@ doctest = false
 
 [dependencies]
 anyhow.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(target_os = "macos")'.dependencies]
 core-foundation.workspace = true

crates/menu/Cargo.toml 🔗

@@ -14,4 +14,4 @@ doctest = false
 
 [dependencies]
 gpui.workspace = true
-serde.workspace = true
+workspace-hack.workspace = true

crates/migrator/Cargo.toml 🔗

@@ -20,6 +20,7 @@ log.workspace = true
 streaming-iterator.workspace = true
 tree-sitter-json.workspace = true
 tree-sitter.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 pretty_assertions.workspace = true

crates/mistral/Cargo.toml 🔗

@@ -23,3 +23,4 @@ schemars = { workspace = true, optional = true }
 serde.workspace = true
 serde_json.workspace = true
 strum.workspace = true
+workspace-hack.workspace = true

crates/multi_buffer/Cargo.toml 🔗

@@ -45,6 +45,7 @@ text.workspace = true
 theme.workspace = true
 tree-sitter.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 buffer_diff = { workspace = true, features = ["test-support"] }

crates/multi_buffer/src/multi_buffer_tests.rs 🔗

@@ -204,12 +204,12 @@ fn test_excerpt_boundaries_and_clipping(cx: &mut App) {
             .collect::<Vec<_>>(),
         [Some(3)]
     );
-    assert_eq!(
+    assert!(
         snapshot
             .row_infos(MultiBufferRow(5))
             .map(|info| info.buffer_row)
-            .collect::<Vec<_>>(),
-        []
+            .collect::<Vec<_>>()
+            .is_empty()
     );
 
     assert_eq!(
@@ -870,12 +870,12 @@ fn test_empty_multibuffer(cx: &mut App) {
             .collect::<Vec<_>>(),
         &[Some(0)]
     );
-    assert_eq!(
+    assert!(
         snapshot
             .row_infos(MultiBufferRow(1))
             .map(|info| info.buffer_row)
-            .collect::<Vec<_>>(),
-        &[]
+            .collect::<Vec<_>>()
+            .is_empty(),
     );
 }
 

crates/node_runtime/Cargo.toml 🔗

@@ -34,6 +34,7 @@ tempfile = { workspace = true, optional = true }
 util.workspace = true
 walkdir = "2.5.0"
 which.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 async-std = { version = "1.12.0", features = ["unstable"] }

crates/notifications/Cargo.toml 🔗

@@ -35,6 +35,7 @@ time.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/ollama/Cargo.toml 🔗

@@ -22,3 +22,4 @@ http_client.workspace = true
 schemars = { workspace = true, optional = true }
 serde.workspace = true
 serde_json.workspace = true
+workspace-hack.workspace = true

crates/open_ai/Cargo.toml 🔗

@@ -23,3 +23,4 @@ schemars = { workspace = true, optional = true }
 serde.workspace = true
 serde_json.workspace = true
 strum.workspace = true
+workspace-hack.workspace = true

crates/outline/Cargo.toml 🔗

@@ -26,6 +26,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/outline_panel/Cargo.toml 🔗

@@ -39,6 +39,7 @@ util.workspace = true
 workspace.workspace = true
 worktree.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 search = { workspace = true, features = ["test-support"] }

crates/panel/Cargo.toml 🔗

@@ -18,3 +18,4 @@ settings.workspace = true
 theme.workspace = true
 ui.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/paths/Cargo.toml 🔗

@@ -14,3 +14,4 @@ path = "src/paths.rs"
 [dependencies]
 dirs.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/picker/Cargo.toml 🔗

@@ -25,6 +25,7 @@ serde.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/prettier/Cargo.toml 🔗

@@ -29,6 +29,7 @@ paths.workspace = true
 serde.workspace = true
 serde_json.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 fs = { workspace = true,  features = ["test-support"] }

crates/project/Cargo.toml 🔗

@@ -84,6 +84,7 @@ util.workspace = true
 which.workspace = true
 worktree.workspace = true
 zlog.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/project_panel/Cargo.toml 🔗

@@ -40,6 +40,7 @@ worktree.workspace = true
 workspace.workspace = true
 language.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/project_symbols/Cargo.toml 🔗

@@ -25,6 +25,7 @@ settings.workspace = true
 theme.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/prompt_library/Cargo.toml 🔗

@@ -31,3 +31,4 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true

crates/prompt_store/Cargo.toml 🔗

@@ -31,3 +31,4 @@ serde.workspace = true
 text.workspace = true
 util.workspace = true
 uuid.workspace = true
+workspace-hack.workspace = true

crates/proto/Cargo.toml 🔗

@@ -20,6 +20,7 @@ doctest = false
 anyhow.workspace = true
 prost.workspace = true
 serde.workspace = true
+workspace-hack.workspace = true
 
 [build-dependencies]
 prost-build.workspace = true

crates/recent_projects/Cargo.toml 🔗

@@ -42,6 +42,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 dap.workspace = true

crates/refineable/Cargo.toml 🔗

@@ -14,3 +14,4 @@ doctest = false
 
 [dependencies]
 derive_refineable = { path = "./derive_refineable" }
+workspace-hack.workspace = true

crates/remote/Cargo.toml 🔗

@@ -41,6 +41,7 @@ tempfile.workspace = true
 thiserror.workspace = true
 urlencoding.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui = { workspace = true, features = ["test-support"] }

crates/repl/Cargo.toml 🔗

@@ -52,6 +52,7 @@ util.workspace = true
 uuid.workspace = true
 workspace.workspace = true
 picker.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/reqwest_client/Cargo.toml 🔗

@@ -31,6 +31,7 @@ log.workspace = true
 tokio = { workspace = true, features = ["rt", "rt-multi-thread"] }
 regex.workspace = true
 reqwest.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui.workspace = true

crates/rich_text/Cargo.toml 🔗

@@ -27,3 +27,4 @@ pulldown-cmark.workspace = true
 theme.workspace = true
 ui.workspace = true
 util.workspace = true
+workspace-hack.workspace = true

crates/rope/Cargo.toml 🔗

@@ -19,6 +19,7 @@ smallvec.workspace = true
 sum_tree.workspace = true
 unicode-segmentation.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/rpc/Cargo.toml 🔗

@@ -36,6 +36,7 @@ strum.workspace = true
 tracing = { version = "0.1.34", features = ["log"] }
 util.workspace = true
 zstd.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 collections = { workspace = true, features = ["test-support"] }

crates/schema_generator/Cargo.toml 🔗

@@ -16,3 +16,4 @@ schemars = { workspace = true, features = ["indexmap2"] }
 serde.workspace = true
 serde_json.workspace = true
 theme.workspace = true
+workspace-hack.workspace = true

crates/search/Cargo.toml 🔗

@@ -41,6 +41,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/semantic_index/Cargo.toml 🔗

@@ -50,6 +50,7 @@ unindent.workspace = true
 util.workspace = true
 workspace.workspace = true
 worktree.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/session/Cargo.toml 🔗

@@ -23,3 +23,4 @@ gpui.workspace = true
 uuid.workspace = true
 util.workspace = true
 serde_json.workspace = true
+workspace-hack.workspace = true

crates/settings/Cargo.toml 🔗

@@ -37,6 +37,7 @@ streaming-iterator.workspace = true
 tree-sitter-json.workspace = true
 tree-sitter.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 fs = { workspace = true, features = ["test-support"] }

crates/settings_ui/Cargo.toml 🔗

@@ -20,3 +20,4 @@ settings.workspace = true
 theme.workspace = true
 ui.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/snippet/Cargo.toml 🔗

@@ -15,3 +15,4 @@ doctest = false
 [dependencies]
 anyhow.workspace = true
 smallvec.workspace = true
+workspace-hack.workspace = true

crates/snippet_provider/Cargo.toml 🔗

@@ -22,3 +22,4 @@ serde_json_lenient.workspace = true
 snippet.workspace = true
 util.workspace = true
 schemars.workspace = true
+workspace-hack.workspace = true

crates/snippets_ui/Cargo.toml 🔗

@@ -20,3 +20,4 @@ picker.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/sqlez/Cargo.toml 🔗

@@ -20,3 +20,4 @@ sqlformat.workspace = true
 thread_local = "1.1.4"
 util.workspace = true
 uuid.workspace = true
+workspace-hack.workspace = true

crates/sqlez_macros/Cargo.toml 🔗

@@ -17,3 +17,4 @@ doctest = false
 sqlez.workspace = true
 sqlformat.workspace = true
 syn.workspace = true
+workspace-hack.workspace = true

crates/story/Cargo.toml 🔗

@@ -15,3 +15,4 @@ workspace = true
 gpui.workspace = true
 itertools.workspace = true
 smallvec.workspace = true
+workspace-hack.workspace = true

crates/storybook/Cargo.toml 🔗

@@ -37,6 +37,7 @@ theme.workspace = true
 title_bar = { workspace = true, features = ["stories"] }
 ui = { workspace = true, features = ["stories"] }
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui = { workspace = true, features = ["test-support"] }

crates/streaming_diff/Cargo.toml 🔗

@@ -14,6 +14,7 @@ path = "src/streaming_diff.rs"
 [dependencies]
 ordered-float.workspace = true
 rope.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 rand.workspace = true

crates/sum_tree/Cargo.toml 🔗

@@ -16,6 +16,7 @@ doctest = false
 arrayvec = "0.7.1"
 rayon.workspace = true
 log.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 ctor.workspace = true

crates/supermaven/Cargo.toml 🔗

@@ -32,6 +32,7 @@ text.workspace = true
 ui.workspace = true
 unicode-segmentation.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/supermaven_api/Cargo.toml 🔗

@@ -20,3 +20,4 @@ paths.workspace = true
 serde.workspace = true
 serde_json.workspace = true
 smol.workspace = true
+workspace-hack.workspace = true

crates/tab_switcher/Cargo.toml 🔗

@@ -25,6 +25,7 @@ settings.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 anyhow.workspace = true

crates/task/Cargo.toml 🔗

@@ -30,6 +30,7 @@ sha2.workspace = true
 shellexpand.workspace = true
 util.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 gpui = { workspace = true, features = ["test-support"] }

crates/tasks_ui/Cargo.toml 🔗

@@ -29,6 +29,7 @@ util.workspace = true
 workspace.workspace = true
 language.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/telemetry/Cargo.toml 🔗

@@ -16,3 +16,4 @@ serde.workspace = true
 serde_json.workspace = true
 telemetry_events.workspace = true
 futures.workspace = true
+workspace-hack.workspace = true

crates/telemetry_events/Cargo.toml 🔗

@@ -15,3 +15,4 @@ path = "src/telemetry_events.rs"
 semantic_version.workspace = true
 serde.workspace = true
 serde_json.workspace = true
+workspace-hack.workspace = true

crates/terminal/Cargo.toml 🔗

@@ -32,6 +32,7 @@ theme.workspace = true
 thiserror.workspace = true
 util.workspace = true
 regex.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 windows.workspace = true

crates/terminal_view/Cargo.toml 🔗

@@ -43,6 +43,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 client = { workspace = true, features = ["test-support"] }

crates/text/Cargo.toml 🔗

@@ -28,6 +28,7 @@ rope.workspace = true
 smallvec.workspace = true
 sum_tree.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 collections = { workspace = true, features = ["test-support"] }

crates/theme/Cargo.toml 🔗

@@ -39,6 +39,7 @@ strum.workspace = true
 thiserror.workspace = true
 util.workspace = true
 uuid.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 fs = { workspace = true, features = ["test-support"] }

crates/theme_importer/Cargo.toml 🔗

@@ -23,3 +23,4 @@ simplelog.workspace= true
 strum = { workspace = true, features = ["derive"] }
 theme.workspace = true
 vscode_theme = "0.2.0"
+workspace-hack.workspace = true

crates/theme_selector/Cargo.toml 🔗

@@ -26,5 +26,6 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]

crates/time_format/Cargo.toml 🔗

@@ -15,6 +15,7 @@ doctest = false
 [dependencies]
 sys-locale.workspace = true
 time.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(target_os = "macos")'.dependencies]
 core-foundation.workspace = true

crates/title_bar/Cargo.toml 🔗

@@ -49,6 +49,7 @@ ui.workspace = true
 util.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 windows.workspace = true

crates/toolchain_selector/Cargo.toml 🔗

@@ -15,6 +15,7 @@ project.workspace = true
 ui.workspace = true
 util.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true
 
 [lints]
 workspace = true

crates/ui/Cargo.toml 🔗

@@ -28,6 +28,7 @@ strum.workspace = true
 theme.workspace = true
 ui_macros.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(windows)'.dependencies]
 windows.workspace = true

crates/ui_input/Cargo.toml 🔗

@@ -17,6 +17,7 @@ gpui.workspace = true
 settings.workspace = true
 theme.workspace = true
 ui.workspace = true
+workspace-hack.workspace = true
 
 [features]
 default = []

crates/ui_macros/Cargo.toml 🔗

@@ -18,3 +18,4 @@ linkme.workspace = true
 proc-macro2.workspace = true
 quote.workspace = true
 syn.workspace = true
+workspace-hack.workspace = true

crates/ui_prompt/Cargo.toml 🔗

@@ -22,3 +22,4 @@ settings.workspace = true
 theme.workspace = true
 ui.workspace = true
 workspace.workspace = true
+workspace-hack.workspace = true

crates/util/Cargo.toml 🔗

@@ -36,6 +36,7 @@ take-until.workspace = true
 tempfile = { workspace = true, optional = true }
 unicase.workspace = true
 util_macros = { workspace = true, optional = true }
+workspace-hack.workspace = true
 
 [target.'cfg(unix)'.dependencies]
 libc.workspace = true

crates/vim/Cargo.toml 🔗

@@ -50,6 +50,7 @@ util.workspace = true
 vim_mode_setting.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 assets.workspace = true

crates/vim_mode_setting/Cargo.toml 🔗

@@ -15,3 +15,4 @@ path = "src/vim_mode_setting.rs"
 anyhow.workspace = true
 gpui.workspace = true
 settings.workspace = true
+workspace-hack.workspace = true

crates/welcome/Cargo.toml 🔗

@@ -33,6 +33,7 @@ util.workspace = true
 vim_mode_setting.workspace = true
 workspace.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 editor = { workspace = true, features = ["test-support"] }

crates/workspace/Cargo.toml 🔗

@@ -65,6 +65,7 @@ ui.workspace = true
 util.workspace = true
 uuid.workspace = true
 zed_actions.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 call = { workspace = true, features = ["test-support"] }

crates/worktree/Cargo.toml 🔗

@@ -47,6 +47,7 @@ smol.workspace = true
 sum_tree.workspace = true
 text.workspace = true
 util.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 clock = { workspace = true, features = ["test-support"] }

crates/zed/Cargo.toml 🔗

@@ -139,6 +139,7 @@ workspace.workspace = true
 zed_actions.workspace = true
 zeta.workspace = true
 zlog_settings.workspace = true
+workspace-hack.workspace = true
 
 [target.'cfg(target_os = "windows")'.dependencies]
 windows.workspace = true

crates/zed_actions/Cargo.toml 🔗

@@ -12,3 +12,4 @@ workspace = true
 gpui.workspace = true
 schemars.workspace = true
 serde.workspace = true
+workspace-hack.workspace = true

crates/zeta/Cargo.toml 🔗

@@ -55,6 +55,7 @@ workspace.workspace = true
 worktree.workspace = true
 zed_actions.workspace = true
 zed_llm_client.workspace = true
+workspace-hack.workspace = true
 
 [dev-dependencies]
 collections = { workspace = true, features = ["test-support"] }

crates/zlog_settings/Cargo.toml 🔗

@@ -21,3 +21,4 @@ schemars.workspace = true
 serde.workspace = true
 settings.workspace = true
 zlog.workspace = true
+workspace-hack.workspace = true

nix/shell.nix 🔗

@@ -6,6 +6,8 @@
 
   rust-analyzer,
   cargo-nextest,
+  cargo-hakari,
+  cargo-machete,
   nixfmt-rfc-style,
   protobuf,
   nodejs_22,
@@ -15,6 +17,8 @@
   packages = [
     rust-analyzer
     cargo-nextest
+    cargo-hakari
+    cargo-machete
     nixfmt-rfc-style
     # TODO: package protobuf-language-server for editing zed.proto
     # TODO: add other tools used in our scripts

script/update-workspace-hack 🔗

@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+HAKARI_VERSION="0.9"
+
+cd "$(dirname "$0")/.." || exit 1
+
+if ! cargo hakari --version | grep "cargo-hakari $HAKARI_VERSION" >/dev/null; then
+    echo "Installing cargo-hakari@^$HAKARI_VERSION..."
+    cargo install "cargo-hakari@^$HAKARI_VERSION"
+else
+    echo "cargo-hakari@^$HAKARI_VERSION is already installed."
+fi
+
+# update the workspace-hack crate
+cargo hakari generate
+
+# make sure workspace-hack is added as a dep for all crates in the workspace
+cargo hakari manage-deps

tooling/workspace-hack/.gitattributes 🔗

@@ -0,0 +1,4 @@
+# Avoid putting conflict markers in the generated Cargo.toml file, since their presence breaks
+# Cargo.
+# Also do not check out the file as CRLF on Windows, as that's what hakari needs.
+Cargo.toml merge=binary -crlf

tooling/workspace-hack/Cargo.toml 🔗

@@ -0,0 +1,670 @@
+# This file is generated by `cargo hakari`.
+# To regenerate, run:
+#     cargo hakari generate
+
+[package]
+name = "workspace-hack"
+version = "0.1.0"
+edition = "2021"
+description = "workspace-hack package, managed by hakari"
+publish = false
+
+# The parts of the file between the BEGIN HAKARI SECTION and END HAKARI SECTION comments
+# are managed by hakari.
+
+### BEGIN HAKARI SECTION
+[dependencies]
+aho-corasick = { version = "1" }
+anstream = { version = "0.6" }
+arrayvec = { version = "0.7", features = ["serde"] }
+async-compression = { version = "0.4", default-features = false, features = ["deflate", "deflate64", "futures-io", "gzip"] }
+async-std = { version = "1", features = ["attributes", "unstable"] }
+async-tungstenite = { version = "0.28", features = ["async-std-runtime", "async-tls"] }
+aws-config = { version = "1", features = ["behavior-version-latest"] }
+aws-credential-types = { version = "1", default-features = false, features = ["hardcoded-credentials", "test-util"] }
+aws-runtime = { version = "1", default-features = false, features = ["event-stream", "http-02x", "sigv4a"] }
+aws-sigv4 = { version = "1", features = ["http0-compat", "sign-eventstream", "sigv4a"] }
+aws-smithy-async = { version = "1", default-features = false, features = ["rt-tokio"] }
+aws-smithy-http = { version = "0.62", default-features = false, features = ["event-stream"] }
+aws-smithy-runtime = { version = "1", default-features = false, features = ["client", "default-https-client", "rt-tokio", "tls-rustls"] }
+aws-smithy-runtime-api = { version = "1", features = ["client", "http-02x", "http-auth", "test-util"] }
+aws-smithy-types = { version = "1", default-features = false, features = ["byte-stream-poll-next", "http-body-0-4-x", "http-body-1-x", "rt-tokio", "test-util"] }
+base64 = { version = "0.22" }
+base64ct = { version = "1", default-features = false, features = ["std"] }
+bigdecimal = { version = "0.4", features = ["serde"] }
+bit-set = { version = "0.8" }
+bitflags = { version = "2", default-features = false, features = ["serde", "std"] }
+bstr = { version = "1" }
+bytemuck = { version = "1", default-features = false, features = ["aarch64_simd", "derive", "extern_crate_alloc"] }
+byteorder = { version = "1" }
+bytes = { version = "1" }
+chrono = { version = "0.4", features = ["serde"] }
+clap = { version = "4", features = ["cargo", "derive", "string", "wrap_help"] }
+clap_builder = { version = "4", default-features = false, features = ["cargo", "color", "std", "string", "suggestions", "usage", "wrap_help"] }
+concurrent-queue = { version = "2" }
+crc32fast = { version = "1" }
+crossbeam-utils = { version = "0.8" }
+deranged = { version = "0.4", default-features = false, features = ["powerfmt", "serde", "std"] }
+digest = { version = "0.10", features = ["mac", "oid", "std"] }
+either = { version = "1", features = ["serde", "use_std"] }
+euclid = { version = "0.22" }
+event-listener = { version = "5" }
+form_urlencoded = { version = "1" }
+futures = { version = "0.3", features = ["io-compat"] }
+futures-channel = { version = "0.3", features = ["sink"] }
+futures-core = { version = "0.3" }
+futures-executor = { version = "0.3" }
+futures-io = { version = "0.3" }
+futures-sink = { version = "0.3" }
+futures-task = { version = "0.3", default-features = false, features = ["std"] }
+futures-util = { version = "0.3", features = ["channel", "io-compat", "sink"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["std"] }
+hashbrown-3575ec1268b04181 = { package = "hashbrown", version = "0.15", features = ["serde"] }
+hashbrown-582f2526e08bb6a0 = { package = "hashbrown", version = "0.14", features = ["raw"] }
+hmac = { version = "0.12", default-features = false, features = ["reset"] }
+hyper = { version = "0.14", features = ["client", "http1", "http2", "runtime", "server", "stream"] }
+indexmap = { version = "2", features = ["serde"] }
+lazy_static = { version = "1", default-features = false, features = ["spin_no_std"] }
+libc = { version = "0.2", features = ["extra_traits"] }
+libsqlite3-sys = { version = "0.30", features = ["bundled", "unlock_notify"] }
+log = { version = "0.4", default-features = false, features = ["kv_unstable_serde"] }
+lyon = { version = "1", default-features = false, features = ["extra"] }
+lyon_path = { version = "1" }
+md-5 = { version = "0.10" }
+memchr = { version = "2" }
+miniz_oxide = { version = "0.8", features = ["simd"] }
+nom = { version = "7" }
+num-bigint = { version = "0.4" }
+num-integer = { version = "0.1", features = ["i128"] }
+num-traits = { version = "0.2", features = ["i128", "libm"] }
+once_cell = { version = "1" }
+percent-encoding = { version = "2" }
+phf = { version = "0.11", features = ["macros"] }
+phf_shared = { version = "0.11" }
+prost = { version = "0.9" }
+prost-types = { version = "0.9" }
+rand-c38e5c1d305a1b54 = { package = "rand", version = "0.8", features = ["small_rng"] }
+rand_core = { version = "0.6", default-features = false, features = ["std"] }
+regex = { version = "1" }
+regex-automata = { version = "0.4" }
+regex-syntax = { version = "0.8" }
+rust_decimal = { version = "1", default-features = false, features = ["maths", "serde", "std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["fs", "net"] }
+rustls-2b5c6dc72f624058 = { package = "rustls", version = "0.23", features = ["ring"] }
+rustls-webpki = { version = "0.103", default-features = false, features = ["aws-lc-rs", "ring", "std"] }
+sea-orm = { version = "1", features = ["runtime-tokio-rustls", "sqlx-postgres", "sqlx-sqlite"] }
+sea-query-binder = { version = "0.7", default-features = false, features = ["postgres-array", "sqlx-postgres", "sqlx-sqlite", "with-bigdecimal", "with-chrono", "with-json", "with-rust_decimal", "with-time", "with-uuid"] }
+semver = { version = "1", features = ["serde"] }
+serde = { version = "1", features = ["alloc", "derive", "rc"] }
+serde_json = { version = "1", features = ["preserve_order", "raw_value", "unbounded_depth"] }
+simd-adler32 = { version = "0.3" }
+smallvec = { version = "1", default-features = false, features = ["const_new", "serde", "union"] }
+spin = { version = "0.9" }
+sqlx = { version = "0.8", features = ["bigdecimal", "chrono", "postgres", "runtime-tokio-rustls", "rust_decimal", "sqlite", "time", "uuid"] }
+sqlx-postgres = { version = "0.8", default-features = false, features = ["any", "bigdecimal", "chrono", "json", "migrate", "offline", "rust_decimal", "time", "uuid"] }
+sqlx-sqlite = { version = "0.8", default-features = false, features = ["any", "bundled", "chrono", "json", "migrate", "offline", "time", "uuid"] }
+strum = { version = "0.26", features = ["derive"] }
+subtle = { version = "2" }
+thiserror = { version = "2" }
+time = { version = "0.3", features = ["local-offset", "macros", "serde-well-known"] }
+tokio = { version = "1", features = ["full"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["tls12"] }
+tokio-util = { version = "0.7", features = ["codec", "compat", "io"] }
+tracing = { version = "0.1", features = ["log"] }
+tracing-core = { version = "0.1" }
+unicode-properties = { version = "0.1" }
+url = { version = "2", features = ["serde"] }
+uuid = { version = "1", features = ["serde", "v4", "v5", "v7"] }
+wasm-encoder = { version = "0.221", features = ["wasmparser"] }
+wasmparser = { version = "0.221" }
+wasmtime = { version = "29", default-features = false, features = ["async", "component-model", "cranelift", "demangle", "gc-drc"] }
+wasmtime-cranelift = { version = "29", default-features = false, features = ["component-model", "gc-drc"] }
+wasmtime-environ = { version = "29", default-features = false, features = ["compile", "component-model", "demangle", "gc-drc"] }
+
+[build-dependencies]
+aho-corasick = { version = "1" }
+anstream = { version = "0.6" }
+arrayvec = { version = "0.7", features = ["serde"] }
+async-compression = { version = "0.4", default-features = false, features = ["deflate", "deflate64", "futures-io", "gzip"] }
+async-std = { version = "1", features = ["attributes", "unstable"] }
+async-tungstenite = { version = "0.28", features = ["async-std-runtime", "async-tls"] }
+aws-config = { version = "1", features = ["behavior-version-latest"] }
+aws-credential-types = { version = "1", default-features = false, features = ["hardcoded-credentials", "test-util"] }
+aws-runtime = { version = "1", default-features = false, features = ["event-stream", "http-02x", "sigv4a"] }
+aws-sigv4 = { version = "1", features = ["http0-compat", "sign-eventstream", "sigv4a"] }
+aws-smithy-async = { version = "1", default-features = false, features = ["rt-tokio"] }
+aws-smithy-http = { version = "0.62", default-features = false, features = ["event-stream"] }
+aws-smithy-runtime = { version = "1", default-features = false, features = ["client", "default-https-client", "rt-tokio", "tls-rustls"] }
+aws-smithy-runtime-api = { version = "1", features = ["client", "http-02x", "http-auth", "test-util"] }
+aws-smithy-types = { version = "1", default-features = false, features = ["byte-stream-poll-next", "http-body-0-4-x", "http-body-1-x", "rt-tokio", "test-util"] }
+base64 = { version = "0.22" }
+base64ct = { version = "1", default-features = false, features = ["std"] }
+bigdecimal = { version = "0.4", features = ["serde"] }
+bit-set = { version = "0.8" }
+bitflags = { version = "2", default-features = false, features = ["serde", "std"] }
+bstr = { version = "1" }
+bytemuck = { version = "1", default-features = false, features = ["aarch64_simd", "derive", "extern_crate_alloc"] }
+byteorder = { version = "1" }
+bytes = { version = "1" }
+cc = { version = "1", default-features = false, features = ["parallel"] }
+chrono = { version = "0.4", features = ["serde"] }
+clap = { version = "4", features = ["cargo", "derive", "string", "wrap_help"] }
+clap_builder = { version = "4", default-features = false, features = ["cargo", "color", "std", "string", "suggestions", "usage", "wrap_help"] }
+concurrent-queue = { version = "2" }
+crc32fast = { version = "1" }
+crossbeam-utils = { version = "0.8" }
+deranged = { version = "0.4", default-features = false, features = ["powerfmt", "serde", "std"] }
+digest = { version = "0.10", features = ["mac", "oid", "std"] }
+either = { version = "1", features = ["serde", "use_std"] }
+euclid = { version = "0.22" }
+event-listener = { version = "5" }
+form_urlencoded = { version = "1" }
+futures = { version = "0.3", features = ["io-compat"] }
+futures-channel = { version = "0.3", features = ["sink"] }
+futures-core = { version = "0.3" }
+futures-executor = { version = "0.3" }
+futures-io = { version = "0.3" }
+futures-sink = { version = "0.3" }
+futures-task = { version = "0.3", default-features = false, features = ["std"] }
+futures-util = { version = "0.3", features = ["channel", "io-compat", "sink"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["std"] }
+hashbrown-3575ec1268b04181 = { package = "hashbrown", version = "0.15", features = ["serde"] }
+hashbrown-582f2526e08bb6a0 = { package = "hashbrown", version = "0.14", features = ["raw"] }
+heck = { version = "0.4", features = ["unicode"] }
+hmac = { version = "0.12", default-features = false, features = ["reset"] }
+hyper = { version = "0.14", features = ["client", "http1", "http2", "runtime", "server", "stream"] }
+indexmap = { version = "2", features = ["serde"] }
+lazy_static = { version = "1", default-features = false, features = ["spin_no_std"] }
+libc = { version = "0.2", features = ["extra_traits"] }
+libsqlite3-sys = { version = "0.30", features = ["bundled", "unlock_notify"] }
+log = { version = "0.4", default-features = false, features = ["kv_unstable_serde"] }
+lyon = { version = "1", default-features = false, features = ["extra"] }
+lyon_path = { version = "1" }
+md-5 = { version = "0.10" }
+memchr = { version = "2" }
+miniz_oxide = { version = "0.8", features = ["simd"] }
+nom = { version = "7" }
+num-bigint = { version = "0.4" }
+num-integer = { version = "0.1", features = ["i128"] }
+num-traits = { version = "0.2", features = ["i128", "libm"] }
+once_cell = { version = "1" }
+percent-encoding = { version = "2" }
+phf = { version = "0.11", features = ["macros"] }
+phf_shared = { version = "0.11" }
+prettyplease = { version = "0.2", default-features = false, features = ["verbatim"] }
+proc-macro2 = { version = "1" }
+prost = { version = "0.9" }
+prost-types = { version = "0.9" }
+quote = { version = "1" }
+rand-c38e5c1d305a1b54 = { package = "rand", version = "0.8", features = ["small_rng"] }
+rand_core = { version = "0.6", default-features = false, features = ["std"] }
+regex = { version = "1" }
+regex-automata = { version = "0.4" }
+regex-syntax = { version = "0.8" }
+rust_decimal = { version = "1", default-features = false, features = ["maths", "serde", "std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", features = ["fs", "net"] }
+rustls-2b5c6dc72f624058 = { package = "rustls", version = "0.23", features = ["ring"] }
+rustls-webpki = { version = "0.103", default-features = false, features = ["aws-lc-rs", "ring", "std"] }
+sea-orm = { version = "1", features = ["runtime-tokio-rustls", "sqlx-postgres", "sqlx-sqlite"] }
+sea-query-binder = { version = "0.7", default-features = false, features = ["postgres-array", "sqlx-postgres", "sqlx-sqlite", "with-bigdecimal", "with-chrono", "with-json", "with-rust_decimal", "with-time", "with-uuid"] }
+semver = { version = "1", features = ["serde"] }
+serde = { version = "1", features = ["alloc", "derive", "rc"] }
+serde_derive = { version = "1", features = ["deserialize_in_place"] }
+serde_json = { version = "1", features = ["preserve_order", "raw_value", "unbounded_depth"] }
+simd-adler32 = { version = "0.3" }
+smallvec = { version = "1", default-features = false, features = ["const_new", "serde", "union"] }
+spin = { version = "0.9" }
+sqlx = { version = "0.8", features = ["bigdecimal", "chrono", "postgres", "runtime-tokio-rustls", "rust_decimal", "sqlite", "time", "uuid"] }
+sqlx-macros = { version = "0.8", features = ["_rt-tokio", "_tls-rustls-ring-webpki", "bigdecimal", "chrono", "derive", "json", "macros", "migrate", "postgres", "rust_decimal", "sqlite", "time", "uuid"] }
+sqlx-macros-core = { version = "0.8", features = ["_rt-tokio", "_tls-rustls-ring-webpki", "bigdecimal", "chrono", "derive", "json", "macros", "migrate", "postgres", "rust_decimal", "sqlite", "time", "uuid"] }
+sqlx-postgres = { version = "0.8", default-features = false, features = ["any", "bigdecimal", "chrono", "json", "migrate", "offline", "rust_decimal", "time", "uuid"] }
+sqlx-sqlite = { version = "0.8", default-features = false, features = ["any", "bundled", "chrono", "json", "migrate", "offline", "time", "uuid"] }
+strum = { version = "0.26", features = ["derive"] }
+subtle = { version = "2" }
+syn-dff4ba8e3ae991db = { package = "syn", version = "1", features = ["extra-traits", "full"] }
+syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
+thiserror = { version = "2" }
+time = { version = "0.3", features = ["local-offset", "macros", "serde-well-known"] }
+time-macros = { version = "0.2", default-features = false, features = ["formatting", "parsing", "serde"] }
+tokio = { version = "1", features = ["full"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["tls12"] }
+tokio-util = { version = "0.7", features = ["codec", "compat", "io"] }
+tracing = { version = "0.1", features = ["log"] }
+tracing-core = { version = "0.1" }
+unicode-properties = { version = "0.1" }
+url = { version = "2", features = ["serde"] }
+uuid = { version = "1", features = ["serde", "v4", "v5", "v7"] }
+wasm-encoder = { version = "0.221", features = ["wasmparser"] }
+wasmparser = { version = "0.221" }
+wasmtime = { version = "29", default-features = false, features = ["async", "component-model", "cranelift", "demangle", "gc-drc"] }
+wasmtime-cranelift = { version = "29", default-features = false, features = ["component-model", "gc-drc"] }
+wasmtime-environ = { version = "29", default-features = false, features = ["compile", "component-model", "demangle", "gc-drc"] }
+
+[target.x86_64-apple-darwin.dependencies]
+core-foundation = { version = "0.9" }
+core-foundation-sys = { version = "0.8" }
+coreaudio-sys = { version = "0.2", default-features = false, features = ["audio_toolbox", "audio_unit", "core_audio", "core_midi", "open_al"] }
+flate2 = { version = "1" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+itertools = { version = "0.12" }
+naga = { version = "23", features = ["msl-out", "wgsl-in"] }
+native-tls = { version = "0.2", default-features = false, features = ["alpn", "vendored"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+security-framework-7b89eefb6aaa9bf3 = { package = "security-framework", version = "3", features = ["OSX_10_14"] }
+security-framework-f595c2ba2a3f28df = { package = "security-framework", version = "2", features = ["alpn"] }
+security-framework-sys = { version = "2", features = ["OSX_10_14"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+
+[target.x86_64-apple-darwin.build-dependencies]
+clang-sys = { version = "1", default-features = false, features = ["clang_11_0", "runtime"] }
+core-foundation = { version = "0.9" }
+core-foundation-sys = { version = "0.8" }
+coreaudio-sys = { version = "0.2", default-features = false, features = ["audio_toolbox", "audio_unit", "core_audio", "core_midi", "open_al"] }
+flate2 = { version = "1" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+itertools = { version = "0.12" }
+naga = { version = "23", features = ["msl-out", "wgsl-in"] }
+native-tls = { version = "0.2", default-features = false, features = ["alpn", "vendored"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+security-framework-7b89eefb6aaa9bf3 = { package = "security-framework", version = "3", features = ["OSX_10_14"] }
+security-framework-f595c2ba2a3f28df = { package = "security-framework", version = "2", features = ["alpn"] }
+security-framework-sys = { version = "2", features = ["OSX_10_14"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+
+[target.aarch64-apple-darwin.dependencies]
+core-foundation = { version = "0.9" }
+core-foundation-sys = { version = "0.8" }
+coreaudio-sys = { version = "0.2", default-features = false, features = ["audio_toolbox", "audio_unit", "core_audio", "core_midi", "open_al"] }
+flate2 = { version = "1" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+itertools = { version = "0.12" }
+naga = { version = "23", features = ["msl-out", "wgsl-in"] }
+native-tls = { version = "0.2", default-features = false, features = ["alpn", "vendored"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+security-framework-7b89eefb6aaa9bf3 = { package = "security-framework", version = "3", features = ["OSX_10_14"] }
+security-framework-f595c2ba2a3f28df = { package = "security-framework", version = "2", features = ["alpn"] }
+security-framework-sys = { version = "2", features = ["OSX_10_14"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+
+[target.aarch64-apple-darwin.build-dependencies]
+clang-sys = { version = "1", default-features = false, features = ["clang_11_0", "runtime"] }
+core-foundation = { version = "0.9" }
+core-foundation-sys = { version = "0.8" }
+coreaudio-sys = { version = "0.2", default-features = false, features = ["audio_toolbox", "audio_unit", "core_audio", "core_midi", "open_al"] }
+flate2 = { version = "1" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+itertools = { version = "0.12" }
+naga = { version = "23", features = ["msl-out", "wgsl-in"] }
+native-tls = { version = "0.2", default-features = false, features = ["alpn", "vendored"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+security-framework-7b89eefb6aaa9bf3 = { package = "security-framework", version = "3", features = ["OSX_10_14"] }
+security-framework-f595c2ba2a3f28df = { package = "security-framework", version = "2", features = ["alpn"] }
+security-framework-sys = { version = "2", features = ["OSX_10_14"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+
+[target.x86_64-unknown-linux-gnu.dependencies]
+aes = { version = "0.8", default-features = false, features = ["zeroize"] }
+ahash = { version = "0.8", default-features = false, features = ["compile-time-rng", "std"] }
+bytemuck = { version = "1", default-features = false, features = ["min_const_generics"] }
+cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
+crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
+event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+inout = { version = "0.1", default-features = false, features = ["block-padding"] }
+itertools = { version = "0.12" }
+linux-raw-sys = { version = "0.4", default-features = false, features = ["elf", "errno", "general", "if_ether", "ioctl", "net", "netlink", "no_std", "prctl", "system", "xdp"] }
+mio = { version = "1", features = ["net", "os-ext"] }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal", "socket", "uio", "user"] }
+num-bigint-dig = { version = "0.8", features = ["i128", "prime", "zeroize"] }
+num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", features = ["span-locations"] }
+quote = { version = "1" }
+rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "pty", "shm", "stdio", "system", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+smallvec = { version = "1", default-features = false, features = ["write"] }
+syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
+zeroize = { version = "1", features = ["zeroize_derive"] }
+zvariant = { version = "5", default-features = false, features = ["enumflags2", "gvariant", "url"] }
+
+[target.x86_64-unknown-linux-gnu.build-dependencies]
+aes = { version = "0.8", default-features = false, features = ["zeroize"] }
+ahash = { version = "0.8", default-features = false, features = ["compile-time-rng", "std"] }
+bytemuck = { version = "1", default-features = false, features = ["min_const_generics"] }
+cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
+crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
+event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+inout = { version = "0.1", default-features = false, features = ["block-padding"] }
+itertools = { version = "0.12" }
+linux-raw-sys = { version = "0.4", default-features = false, features = ["elf", "errno", "general", "if_ether", "ioctl", "net", "netlink", "no_std", "prctl", "system", "xdp"] }
+mio = { version = "1", features = ["net", "os-ext"] }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal", "socket", "uio", "user"] }
+num-bigint-dig = { version = "0.8", features = ["i128", "prime", "zeroize"] }
+num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
+rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "pty", "shm", "stdio", "system", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+smallvec = { version = "1", default-features = false, features = ["write"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
+zeroize = { version = "1", features = ["zeroize_derive"] }
+zvariant = { version = "5", default-features = false, features = ["enumflags2", "gvariant", "url"] }
+
+[target.aarch64-unknown-linux-gnu.dependencies]
+aes = { version = "0.8", default-features = false, features = ["zeroize"] }
+ahash = { version = "0.8", default-features = false, features = ["compile-time-rng", "std"] }
+bytemuck = { version = "1", default-features = false, features = ["min_const_generics"] }
+cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
+crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
+event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+inout = { version = "0.1", default-features = false, features = ["block-padding"] }
+itertools = { version = "0.12" }
+linux-raw-sys = { version = "0.4", default-features = false, features = ["elf", "errno", "general", "if_ether", "ioctl", "net", "netlink", "no_std", "prctl", "system", "xdp"] }
+mio = { version = "1", features = ["net", "os-ext"] }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal", "socket", "uio", "user"] }
+num-bigint-dig = { version = "0.8", features = ["i128", "prime", "zeroize"] }
+num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", features = ["span-locations"] }
+quote = { version = "1" }
+rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "pty", "shm", "stdio", "system", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+smallvec = { version = "1", default-features = false, features = ["write"] }
+syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
+zeroize = { version = "1", features = ["zeroize_derive"] }
+zvariant = { version = "5", default-features = false, features = ["enumflags2", "gvariant", "url"] }
+
+[target.aarch64-unknown-linux-gnu.build-dependencies]
+aes = { version = "0.8", default-features = false, features = ["zeroize"] }
+ahash = { version = "0.8", default-features = false, features = ["compile-time-rng", "std"] }
+bytemuck = { version = "1", default-features = false, features = ["min_const_generics"] }
+cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
+crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
+event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+inout = { version = "0.1", default-features = false, features = ["block-padding"] }
+itertools = { version = "0.12" }
+linux-raw-sys = { version = "0.4", default-features = false, features = ["elf", "errno", "general", "if_ether", "ioctl", "net", "netlink", "no_std", "prctl", "system", "xdp"] }
+mio = { version = "1", features = ["net", "os-ext"] }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal", "socket", "uio", "user"] }
+num-bigint-dig = { version = "0.8", features = ["i128", "prime", "zeroize"] }
+num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
+rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "pty", "shm", "stdio", "system", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+smallvec = { version = "1", default-features = false, features = ["write"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
+zeroize = { version = "1", features = ["zeroize_derive"] }
+zvariant = { version = "5", default-features = false, features = ["enumflags2", "gvariant", "url"] }
+
+[target.x86_64-pc-windows-msvc.dependencies]
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+itertools = { version = "0.12" }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+winapi = { version = "0.3", default-features = false, features = ["cfg", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "in6addr", "inaddr", "knownfolders", "minwinbase", "ntsecapi", "objbase", "processenv", "processthreadsapi", "shlobj", "std", "sysinfoapi", "winbase", "windef", "winerror", "winioctl"] }
+windows-sys-73dcd821b1037cfd = { package = "windows-sys", version = "0.59", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Win32_NetworkManagement_IpHelper", "Win32_Networking_WinSock", "Win32_Security_Authentication_Identity", "Win32_Security_Credentials", "Win32_Security_Cryptography", "Win32_Storage_FileSystem", "Win32_System_Com", "Win32_System_Console", "Win32_System_Diagnostics_Debug", "Win32_System_IO", "Win32_System_Ioctl", "Win32_System_Kernel", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Performance", "Win32_System_Pipes", "Win32_System_SystemInformation", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Input_KeyboardAndMouse", "Win32_UI_Shell", "Win32_UI_WindowsAndMessaging"] }
+windows-sys-b21d60becc0929df = { package = "windows-sys", version = "0.52", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Wdk_System_IO", "Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming"] }
+windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", features = ["Win32_Foundation", "Win32_Globalization", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Com", "Win32_System_Diagnostics_Debug", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_Registry", "Win32_System_Threading", "Win32_System_Time", "Win32_UI_Shell"] }
+
+[target.x86_64-pc-windows-msvc.build-dependencies]
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+itertools = { version = "0.12" }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+winapi = { version = "0.3", default-features = false, features = ["cfg", "consoleapi", "errhandlingapi", "evntrace", "fileapi", "handleapi", "in6addr", "inaddr", "knownfolders", "minwinbase", "ntsecapi", "objbase", "processenv", "processthreadsapi", "shlobj", "std", "sysinfoapi", "winbase", "windef", "winerror", "winioctl"] }
+windows-sys-73dcd821b1037cfd = { package = "windows-sys", version = "0.59", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Win32_NetworkManagement_IpHelper", "Win32_Networking_WinSock", "Win32_Security_Authentication_Identity", "Win32_Security_Credentials", "Win32_Security_Cryptography", "Win32_Storage_FileSystem", "Win32_System_Com", "Win32_System_Console", "Win32_System_Diagnostics_Debug", "Win32_System_IO", "Win32_System_Ioctl", "Win32_System_Kernel", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Performance", "Win32_System_Pipes", "Win32_System_SystemInformation", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Input_KeyboardAndMouse", "Win32_UI_Shell", "Win32_UI_WindowsAndMessaging"] }
+windows-sys-b21d60becc0929df = { package = "windows-sys", version = "0.52", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Wdk_System_IO", "Win32_Foundation", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Console", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming"] }
+windows-sys-c8eced492e86ede7 = { package = "windows-sys", version = "0.48", features = ["Win32_Foundation", "Win32_Globalization", "Win32_Networking_WinSock", "Win32_Security", "Win32_Storage_FileSystem", "Win32_System_Com", "Win32_System_Diagnostics_Debug", "Win32_System_IO", "Win32_System_Pipes", "Win32_System_Registry", "Win32_System_Threading", "Win32_System_Time", "Win32_UI_Shell"] }
+
+[target.x86_64-unknown-linux-musl.dependencies]
+aes = { version = "0.8", default-features = false, features = ["zeroize"] }
+ahash = { version = "0.8", default-features = false, features = ["compile-time-rng", "std"] }
+bytemuck = { version = "1", default-features = false, features = ["min_const_generics"] }
+cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
+crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
+event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+inout = { version = "0.1", default-features = false, features = ["block-padding"] }
+itertools = { version = "0.12" }
+linux-raw-sys = { version = "0.4", default-features = false, features = ["elf", "errno", "general", "if_ether", "ioctl", "net", "netlink", "no_std", "prctl", "system", "xdp"] }
+mio = { version = "1", features = ["net", "os-ext"] }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal", "socket", "uio", "user"] }
+num-bigint-dig = { version = "0.8", features = ["i128", "prime", "zeroize"] }
+num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", features = ["span-locations"] }
+quote = { version = "1" }
+rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "pty", "shm", "stdio", "system", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+smallvec = { version = "1", default-features = false, features = ["write"] }
+syn-f595c2ba2a3f28df = { package = "syn", version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
+zeroize = { version = "1", features = ["zeroize_derive"] }
+zvariant = { version = "5", default-features = false, features = ["enumflags2", "gvariant", "url"] }
+
+[target.x86_64-unknown-linux-musl.build-dependencies]
+aes = { version = "0.8", default-features = false, features = ["zeroize"] }
+ahash = { version = "0.8", default-features = false, features = ["compile-time-rng", "std"] }
+bytemuck = { version = "1", default-features = false, features = ["min_const_generics"] }
+cipher = { version = "0.4", default-features = false, features = ["block-padding", "rand_core", "zeroize"] }
+crypto-common = { version = "0.1", default-features = false, features = ["rand_core", "std"] }
+event-listener-strategy = { version = "0.5" }
+flate2 = { version = "1" }
+flume = { version = "0.11" }
+foldhash = { version = "0.1", default-features = false, features = ["std"] }
+getrandom-468e82937335b1c9 = { package = "getrandom", version = "0.3", default-features = false, features = ["std"] }
+getrandom-6f8ce4dd05d13bba = { package = "getrandom", version = "0.2", default-features = false, features = ["js", "rdrand"] }
+gimli = { version = "0.31", default-features = false, features = ["read", "std", "write"] }
+hyper-rustls-754bda37e0fb3874 = { package = "hyper-rustls", version = "0.27", default-features = false, features = ["http1", "http2", "native-tokio", "ring", "tls12"] }
+hyper-rustls-adf3d7031871b0af = { package = "hyper-rustls", version = "0.24", features = ["http2"] }
+inout = { version = "0.1", default-features = false, features = ["block-padding"] }
+itertools = { version = "0.12" }
+linux-raw-sys = { version = "0.4", default-features = false, features = ["elf", "errno", "general", "if_ether", "ioctl", "net", "netlink", "no_std", "prctl", "system", "xdp"] }
+mio = { version = "1", features = ["net", "os-ext"] }
+naga = { version = "23", features = ["spv-out", "wgsl-in"] }
+nix = { version = "0.29", features = ["fs", "pthread", "signal", "socket", "uio", "user"] }
+num-bigint-dig = { version = "0.8", features = ["i128", "prime", "zeroize"] }
+num-iter = { version = "0.1", default-features = false, features = ["i128", "std"] }
+object = { version = "0.36", default-features = false, features = ["archive", "read_core", "unaligned", "write"] }
+proc-macro2 = { version = "1", default-features = false, features = ["span-locations"] }
+rand-274715c4dabd11b0 = { package = "rand", version = "0.9" }
+reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls-native-roots"] }
+ring = { version = "0.17", features = ["std"] }
+rustix-d585fab2519d2d1 = { package = "rustix", version = "0.38", default-features = false, features = ["event", "mm", "param", "pipe", "process", "procfs", "pty", "shm", "stdio", "system", "termios", "time"] }
+rustix-dff4ba8e3ae991db = { package = "rustix", version = "1", features = ["fs", "termios", "time"] }
+rustls-647d43efb71741da = { package = "rustls", version = "0.21", features = ["dangerous_configuration"] }
+scopeguard = { version = "1" }
+smallvec = { version = "1", default-features = false, features = ["write"] }
+tokio-rustls-2f80eeee3b1b6c7e = { package = "tokio-rustls", version = "0.26", default-features = false, features = ["ring"] }
+tokio-rustls-adf3d7031871b0af = { package = "tokio-rustls", version = "0.24" }
+tokio-socks = { version = "0.5", features = ["futures-io"] }
+tokio-stream = { version = "0.1", features = ["fs"] }
+toml_datetime = { version = "0.6", default-features = false, features = ["serde"] }
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
+zeroize = { version = "1", features = ["zeroize_derive"] }
+zvariant = { version = "5", default-features = false, features = ["enumflags2", "gvariant", "url"] }
+
+### END HAKARI SECTION

tooling/xtask/Cargo.toml 🔗

@@ -13,3 +13,4 @@ anyhow.workspace = true
 cargo_metadata.workspace = true
 cargo_toml.workspace = true
 clap = { workspace = true, features = ["derive"] }
+workspace-hack.workspace = true