diff --git a/.cargo/ci-config.toml b/.cargo/ci-config.toml
index 09e1af5c18174f5b1024e223f4a0cd5dac256c6e..b31b79a59b262a5cc18cf1d2b32124a97bab4fc7 100644
--- a/.cargo/ci-config.toml
+++ b/.cargo/ci-config.toml
@@ -5,8 +5,24 @@
# Arrays are merged together though. See: https://doc.rust-lang.org/cargo/reference/config.html#hierarchical-structure
# The intent for this file is to configure CI build process with a divergance from Zed developers experience; for example, in this config file
# we use `-D warnings` for rustflags (which makes compilation fail in presence of warnings during build process). Placing that in developers `config.toml`
-# would be incovenient.
+# would be inconvenient.
# The reason for not using the RUSTFLAGS environment variable is that doing so would override all the settings in the config.toml file, even if the contents of the latter are completely nonsensical. See: https://github.com/rust-lang/cargo/issues/5376
# Here, we opted to use `[target.'cfg(all())']` instead of `[build]` because `[target.'**']` is guaranteed to be cumulative.
[target.'cfg(all())']
rustflags = ["-D", "warnings"]
+
+# We don't need fullest debug information for dev stuff (tests etc.) in CI.
+[profile.dev]
+debug = "limited"
+
+# Use Mold on Linux, because it's faster than GNU ld and LLD.
+#
+# We no longer set this in the default `config.toml` so that developers can opt in to Wild, which
+# is faster than Mold, in their own ~/.cargo/config.toml.
+[target.x86_64-unknown-linux-gnu]
+linker = "clang"
+rustflags = ["-C", "link-arg=-fuse-ld=mold"]
+
+[target.aarch64-unknown-linux-gnu]
+linker = "clang"
+rustflags = ["-C", "link-arg=-fuse-ld=mold"]
diff --git a/.cargo/config.toml b/.cargo/config.toml
index 8db58d238003c29df6dbc9fa733c6d5521340103..9b2e6f51c96e3ae98a54bbb11524210911d0e262 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -4,14 +4,9 @@ rustflags = ["-C", "symbol-mangling-version=v0", "--cfg", "tokio_unstable"]
[alias]
xtask = "run --package xtask --"
-
-[target.x86_64-unknown-linux-gnu]
-linker = "clang"
-rustflags = ["-C", "link-arg=-fuse-ld=mold"]
-
-[target.aarch64-unknown-linux-gnu]
-linker = "clang"
-rustflags = ["-C", "link-arg=-fuse-ld=mold"]
+perf-test = ["test", "--profile", "release-fast", "--lib", "--bins", "--tests", "--all-features", "--config", "target.'cfg(true)'.runner='cargo run -p perf --release'", "--config", "target.'cfg(true)'.rustflags=[\"--cfg\", \"perf_enabled\"]"]
+# Keep similar flags here to share some ccache
+perf-compare = ["run", "--profile", "release-fast", "-p", "perf", "--config", "target.'cfg(true)'.rustflags=[\"--cfg\", \"perf_enabled\"]", "--", "compare"]
[target.'cfg(target_os = "windows")']
rustflags = [
@@ -19,8 +14,6 @@ rustflags = [
"windows_slim_errors", # This cfg will reduce the size of `windows::core::Error` from 16 bytes to 4 bytes
"-C",
"target-feature=+crt-static", # This fixes the linking issue when compiling livekit on Windows
- "-C",
- "link-arg=-fuse-ld=lld",
]
[env]
diff --git a/.config/hakari.toml b/.config/hakari.toml
deleted file mode 100644
index 8ce0b77490482ab5ff2d781fb78fd86b56959a6a..0000000000000000000000000000000000000000
--- a/.config/hakari.toml
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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",
-]
-third-party = [
- { name = "reqwest", version = "0.11.27" },
- # build of remote_server should not include scap / its x11 dependency
- { name = "scap", git = "https://github.com/zed-industries/scap", rev = "808aa5c45b41e8f44729d02e38fd00a2fe2722e7" },
- # build of remote_server should not need to include on libalsa through rodio
- { name = "rodio" },
-]
-
-[final-excludes]
-workspace-members = [
- "zed_extension_api",
-
- # exclude all extensions
- "zed_glsl",
- "zed_html",
- "zed_proto",
- "zed_ruff",
- "slash_commands_example",
- "zed_snippets",
- "zed_test_extension",
- "zed_toml",
-]
diff --git a/.config/nextest.toml b/.config/nextest.toml
index b05d68911fb5f50afaa623649fd426f7eb1e7bbe..49fb4d01f794613e430953e4565923a784368836 100644
--- a/.config/nextest.toml
+++ b/.config/nextest.toml
@@ -4,3 +4,17 @@ sequential-db-tests = { max-threads = 1 }
[[profile.default.overrides]]
filter = 'package(db)'
test-group = 'sequential-db-tests'
+
+# Run slowest tests first.
+#
+[[profile.default.overrides]]
+filter = 'package(worktree) and test(test_random_worktree_changes)'
+priority = 100
+
+[[profile.default.overrides]]
+filter = 'package(collab) and (test(random_project_collaboration_tests) or test(random_channel_buffer_tests) or test(test_contact_requests) or test(test_basic_following))'
+priority = 99
+
+[[profile.default.overrides]]
+filter = 'package(extension_host) and test(test_extension_store_with_test_extension)'
+priority = 99
diff --git a/.gitattributes b/.gitattributes
index 9973cfb4db9ce8e9c79e84b9861a946f2f1c2f15..57afd4ea6942bd3985fb7395101800706d7b4ae6 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,5 @@
# Prevent GitHub from displaying comments within JSON files as errors.
*.json linguist-language=JSON-with-Comments
+
+# Ensure the WSL script always has LF line endings, even on Windows
+crates/zed/resources/windows/zed.sh text eol=lf
diff --git a/.github/ISSUE_TEMPLATE/06_bug_git.yml b/.github/ISSUE_TEMPLATE/06_bug_git.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7a01a728cd4592fb74144087110d475c9dd347a5
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/06_bug_git.yml
@@ -0,0 +1,35 @@
+name: Bug Report (Git)
+description: Zed Git Related Bugs
+type: "Bug"
+labels: ["git"]
+title: "Git: "
+body:
+ - type: textarea
+ attributes:
+ label: Summary
+ description: Describe the bug with a one-line summary, and provide detailed reproduction steps
+ value: |
+
+ SUMMARY_SENTENCE_HERE
+
+ ### Description
+
+ Steps to trigger the problem:
+ 1.
+ 2.
+ 3.
+
+ **Expected Behavior**:
+ **Actual Behavior**:
+
+ validations:
+ required: true
+ - type: textarea
+ id: environment
+ attributes:
+ label: Zed Version and System Specs
+ description: 'Open Zed, and in the command palette select "zed: copy system specs into clipboard"'
+ placeholder: |
+ Output of "zed: copy system specs into clipboard"
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/07_bug_windows_alpha.yml b/.github/ISSUE_TEMPLATE/07_bug_windows.yml
similarity index 86%
rename from .github/ISSUE_TEMPLATE/07_bug_windows_alpha.yml
rename to .github/ISSUE_TEMPLATE/07_bug_windows.yml
index 826c2b8027144d4b658108e09c79e40490c3005d..4e90c15dbde1b2727b9508cee69b5c7fd9304fc3 100644
--- a/.github/ISSUE_TEMPLATE/07_bug_windows_alpha.yml
+++ b/.github/ISSUE_TEMPLATE/07_bug_windows.yml
@@ -1,8 +1,8 @@
-name: Bug Report (Windows Alpha)
-description: Zed Windows Alpha Related Bugs
+name: Bug Report (Windows)
+description: Zed Windows Related Bugs
type: "Bug"
labels: ["windows"]
-title: "Windows Alpha: "
+title: "Windows: "
body:
- type: textarea
attributes:
diff --git a/.github/ISSUE_TEMPLATE/10_bug_report.yml b/.github/ISSUE_TEMPLATE/10_bug_report.yml
index e132eca1e52bc617f35fc2ec6e4e34fe3c796b11..1bf6c80e4073dafa90e736f995053c570f0ba2da 100644
--- a/.github/ISSUE_TEMPLATE/10_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/10_bug_report.yml
@@ -14,7 +14,7 @@ body:
### Description
diff --git a/.github/ISSUE_TEMPLATE/11_crash_report.yml b/.github/ISSUE_TEMPLATE/11_crash_report.yml
index aa736c75341512442720c202a4cadbf51bf253c8..97979308ae5ab4037c32db2660544c1299f2c750 100644
--- a/.github/ISSUE_TEMPLATE/11_crash_report.yml
+++ b/.github/ISSUE_TEMPLATE/11_crash_report.yml
@@ -33,11 +33,10 @@ body:
required: true
- type: textarea
attributes:
- label: If applicable, attach your `~/Library/Logs/Zed/Zed.log` file to this issue.
+ label: If applicable, attach your `Zed.log` file to this issue.
description: |
- macOS: `~/Library/Logs/Zed/Zed.log`
- Linux: `~/.local/share/zed/logs/Zed.log` or $XDG_DATA_HOME
- If you only need the most recent lines, you can run the `zed: open log` command palette action to see the last 1000.
+ From the command palette, run `zed: open log` to see the last 1000 lines.
+ Or run `zed: reveal log in file manager` to reveal the log file itself.
value: |
Zed.log
diff --git a/.github/actionlint.yml b/.github/actionlint.yml
index 0ee6af8a1d38e005f66b79f6c548d9f79396ea35..6d8e0107e9b42e71bb7266c0629393b9057e05bc 100644
--- a/.github/actionlint.yml
+++ b/.github/actionlint.yml
@@ -19,14 +19,27 @@ self-hosted-runner:
- namespace-profile-16x32-ubuntu-2004-arm
- namespace-profile-32x64-ubuntu-2004-arm
# Namespace Ubuntu 22.04 (Everything else)
- - namespace-profile-2x4-ubuntu-2204
- namespace-profile-4x8-ubuntu-2204
- namespace-profile-8x16-ubuntu-2204
- namespace-profile-16x32-ubuntu-2204
- namespace-profile-32x64-ubuntu-2204
+ # Namespace Ubuntu 24.04 (like ubuntu-latest)
+ - namespace-profile-2x4-ubuntu-2404
# Namespace Limited Preview
- namespace-profile-8x16-ubuntu-2004-arm-m4
- namespace-profile-8x32-ubuntu-2004-arm-m4
# Self Hosted Runners
- self-mini-macos
- self-32vcpu-windows-2022
+
+# Disable shellcheck because it doesn't like powershell
+# This should have been triggered with initial rollout of actionlint
+# but https://github.com/zed-industries/zed/pull/36693
+# somehow caused actionlint to actually check those windows jobs
+# where previously they were being skipped. Likely caused by an
+# unknown bug in actionlint where parsing of `runs-on: [ ]`
+# breaks something else. (yuck)
+paths:
+ .github/workflows/{ci,release_nightly}.yml:
+ ignore:
+ - "shellcheck"
diff --git a/.github/actions/run_tests/action.yml b/.github/actions/run_tests/action.yml
index e46bc26945e4b5f94ad9f98a882aaa51fc6189af..3bc28249f3b8b2a08a48be040177530c5ecfd407 100644
--- a/.github/actions/run_tests/action.yml
+++ b/.github/actions/run_tests/action.yml
@@ -15,9 +15,12 @@ runs:
node-version: "18"
- name: Limit target directory size
+ env:
+ MAX_SIZE: ${{ runner.os == 'macOS' && 300 || 100 }}
shell: bash -euxo pipefail {0}
- run: script/clear-target-dir-if-larger-than 100
+ # Use the variable in the run command
+ run: script/clear-target-dir-if-larger-than ${{ env.MAX_SIZE }}
- name: Run tests
shell: bash -euxo pipefail {0}
- run: cargo nextest run --workspace --no-fail-fast
+ run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
diff --git a/.github/actions/run_tests_windows/action.yml b/.github/actions/run_tests_windows/action.yml
index e3e3b7142e2223e2b5a7524205dbe21fb963ed86..d85d47cb969e22ca3c73c9ab8caca279a9b5ba88 100644
--- a/.github/actions/run_tests_windows/action.yml
+++ b/.github/actions/run_tests_windows/action.yml
@@ -20,168 +20,8 @@ runs:
with:
node-version: "18"
- - name: Configure crash dumps
- shell: powershell
- run: |
- # Record the start time for this CI run
- $runStartTime = Get-Date
- $runStartTimeStr = $runStartTime.ToString("yyyy-MM-dd HH:mm:ss")
- Write-Host "CI run started at: $runStartTimeStr"
-
- # Save the timestamp for later use
- echo "CI_RUN_START_TIME=$($runStartTime.Ticks)" >> $env:GITHUB_ENV
-
- # Create crash dump directory in workspace (non-persistent)
- $dumpPath = "$env:GITHUB_WORKSPACE\crash_dumps"
- New-Item -ItemType Directory -Force -Path $dumpPath | Out-Null
-
- Write-Host "Setting up crash dump detection..."
- Write-Host "Workspace dump path: $dumpPath"
-
- # Note: We're NOT modifying registry on stateful runners
- # Instead, we'll check default Windows crash locations after tests
-
- name: Run tests
shell: powershell
working-directory: ${{ inputs.working-directory }}
run: |
- $env:RUST_BACKTRACE = "full"
-
- # Enable Windows debugging features
- $env:_NT_SYMBOL_PATH = "srv*https://msdl.microsoft.com/download/symbols"
-
- # .NET crash dump environment variables (ephemeral)
- $env:COMPlus_DbgEnableMiniDump = "1"
- $env:COMPlus_DbgMiniDumpType = "4"
- $env:COMPlus_CreateDumpDiagnostics = "1"
-
- cargo nextest run --workspace --no-fail-fast
- continue-on-error: true
-
- - name: Analyze crash dumps
- if: always()
- shell: powershell
- run: |
- Write-Host "Checking for crash dumps..."
-
- # Get the CI run start time from the environment
- $runStartTime = [DateTime]::new([long]$env:CI_RUN_START_TIME)
- Write-Host "Only analyzing dumps created after: $($runStartTime.ToString('yyyy-MM-dd HH:mm:ss'))"
-
- # Check all possible crash dump locations
- $searchPaths = @(
- "$env:GITHUB_WORKSPACE\crash_dumps",
- "$env:LOCALAPPDATA\CrashDumps",
- "$env:TEMP",
- "$env:GITHUB_WORKSPACE",
- "$env:USERPROFILE\AppData\Local\CrashDumps",
- "C:\Windows\System32\config\systemprofile\AppData\Local\CrashDumps"
- )
-
- $dumps = @()
- foreach ($path in $searchPaths) {
- if (Test-Path $path) {
- Write-Host "Searching in: $path"
- $found = Get-ChildItem "$path\*.dmp" -ErrorAction SilentlyContinue | Where-Object {
- $_.CreationTime -gt $runStartTime
- }
- if ($found) {
- $dumps += $found
- Write-Host " Found $($found.Count) dump(s) from this CI run"
- }
- }
- }
-
- if ($dumps) {
- Write-Host "Found $($dumps.Count) crash dump(s)"
-
- # Install debugging tools if not present
- $cdbPath = "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe"
- if (-not (Test-Path $cdbPath)) {
- Write-Host "Installing Windows Debugging Tools..."
- $url = "https://go.microsoft.com/fwlink/?linkid=2237387"
- Invoke-WebRequest -Uri $url -OutFile winsdksetup.exe
- Start-Process -Wait winsdksetup.exe -ArgumentList "/features OptionId.WindowsDesktopDebuggers /quiet"
- }
-
- foreach ($dump in $dumps) {
- Write-Host "`n=================================="
- Write-Host "Analyzing crash dump: $($dump.Name)"
- Write-Host "Size: $([math]::Round($dump.Length / 1MB, 2)) MB"
- Write-Host "Time: $($dump.CreationTime)"
- Write-Host "=================================="
-
- # Set symbol path
- $env:_NT_SYMBOL_PATH = "srv*C:\symbols*https://msdl.microsoft.com/download/symbols"
-
- # Run analysis
- $analysisOutput = & $cdbPath -z $dump.FullName -c "!analyze -v; ~*k; lm; q" 2>&1 | Out-String
-
- # Extract key information
- if ($analysisOutput -match "ExceptionCode:\s*([\w]+)") {
- Write-Host "Exception Code: $($Matches[1])"
- if ($Matches[1] -eq "c0000005") {
- Write-Host "Exception Type: ACCESS VIOLATION"
- }
- }
-
- if ($analysisOutput -match "EXCEPTION_RECORD:\s*(.+)") {
- Write-Host "Exception Record: $($Matches[1])"
- }
-
- if ($analysisOutput -match "FAULTING_IP:\s*\n(.+)") {
- Write-Host "Faulting Instruction: $($Matches[1])"
- }
-
- # Save full analysis
- $analysisFile = "$($dump.FullName).analysis.txt"
- $analysisOutput | Out-File -FilePath $analysisFile
- Write-Host "`nFull analysis saved to: $analysisFile"
-
- # Print stack trace section
- Write-Host "`n--- Stack Trace Preview ---"
- $stackSection = $analysisOutput -split "STACK_TEXT:" | Select-Object -Last 1
- $stackLines = $stackSection -split "`n" | Select-Object -First 20
- $stackLines | ForEach-Object { Write-Host $_ }
- Write-Host "--- End Stack Trace Preview ---"
- }
-
- Write-Host "`n⚠️ Crash dumps detected! Download the 'crash-dumps' artifact for detailed analysis."
-
- # Copy dumps to workspace for artifact upload
- $artifactPath = "$env:GITHUB_WORKSPACE\crash_dumps_collected"
- New-Item -ItemType Directory -Force -Path $artifactPath | Out-Null
-
- foreach ($dump in $dumps) {
- $destName = "$($dump.Directory.Name)_$($dump.Name)"
- Copy-Item $dump.FullName -Destination "$artifactPath\$destName"
- if (Test-Path "$($dump.FullName).analysis.txt") {
- Copy-Item "$($dump.FullName).analysis.txt" -Destination "$artifactPath\$destName.analysis.txt"
- }
- }
-
- Write-Host "Copied $($dumps.Count) dump(s) to artifact directory"
- } else {
- Write-Host "No crash dumps from this CI run found"
- }
-
- - name: Upload crash dumps
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: crash-dumps-${{ github.run_id }}-${{ github.run_attempt }}
- path: |
- crash_dumps_collected/*.dmp
- crash_dumps_collected/*.txt
- if-no-files-found: ignore
- retention-days: 7
-
- - name: Check test results
- shell: powershell
- working-directory: ${{ inputs.working-directory }}
- run: |
- # Re-check test results to fail the job if tests failed
- if ($LASTEXITCODE -ne 0) {
- Write-Host "Tests failed with exit code: $LASTEXITCODE"
- exit $LASTEXITCODE
- }
+ cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
diff --git a/.github/workflows/bump_collab_staging.yml b/.github/workflows/bump_collab_staging.yml
index d8eaa6019ec29b5dd908564d05f430d3e7f01909..d400905b4da3304a8b916d3a38ae9d8a2855dbf5 100644
--- a/.github/workflows/bump_collab_staging.yml
+++ b/.github/workflows/bump_collab_staging.yml
@@ -8,7 +8,7 @@ on:
jobs:
update-collab-staging-tag:
if: github.repository_owner == 'zed-industries'
- runs-on: ubuntu-latest
+ runs-on: namespace-profile-2x4-ubuntu-2404
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f4ba227168fb9cec10e1b5e23223b48e7a4ca222..4e1d5d59c551976c94272b682250e100ed3957ed 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,16 +2,9 @@ name: CI
on:
push:
- branches:
- - main
- - "v[0-9]+.[0-9]+.x"
tags:
- "v*"
- pull_request:
- branches:
- - "**"
-
concurrency:
# Allow only one workflow per any non-`main` branch.
group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
@@ -37,7 +30,7 @@ jobs:
run_nix: ${{ steps.filter.outputs.run_nix }}
run_actionlint: ${{ steps.filter.outputs.run_actionlint }}
runs-on:
- - ubuntu-latest
+ - namespace-profile-2x4-ubuntu-2404
steps:
- name: Checkout repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
@@ -81,6 +74,7 @@ jobs:
echo "run_license=false" >> "$GITHUB_OUTPUT"
echo "$CHANGED_FILES" | grep -qP '^(nix/|flake\.|Cargo\.|rust-toolchain.toml|\.cargo/config.toml)' && \
+ echo "$GITHUB_REF_NAME" | grep -qvP '^v[0-9]+\.[0-9]+\.[0-9x](-pre)?$' && \
echo "run_nix=true" >> "$GITHUB_OUTPUT" || \
echo "run_nix=false" >> "$GITHUB_OUTPUT"
@@ -129,39 +123,6 @@ 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' &&
- needs.job_spec.outputs.run_tests == 'true'
- runs-on:
- - namespace-profile-8x16-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 or script/update-workspace-hack.ps1";
- false
- }
- - name: Check all crates depend on workspace-hack
- run: |
- cargo hakari manage-deps --dry-run || {
- echo "To fix, run script/update-workspace-hack or script/update-workspace-hack.ps1"
- false
- }
-
style:
timeout-minutes: 60
name: Check formatting and spelling
@@ -209,7 +170,7 @@ jobs:
uses: ./.github/actions/check_style
- name: Check for typos
- uses: crate-ci/typos@8e6a4285bcbde632c5d79900a7779746e8b7ea3f # v1.24.6
+ uses: crate-ci/typos@80c8a4945eec0f6d464eaf9e65ed98ef085283d1 # v1.38.1
with:
config: ./typos.toml
@@ -237,7 +198,7 @@ jobs:
uses: ./.github/actions/build_docs
actionlint:
- runs-on: ubuntu-latest
+ runs-on: namespace-profile-2x4-ubuntu-2404
if: github.repository_owner == 'zed-industries' && needs.job_spec.outputs.run_actionlint == 'true'
needs: [job_spec]
steps:
@@ -305,15 +266,12 @@ jobs:
uses: ./.github/actions/run_tests
- name: Build collab
+ # we should do this on a linux x86 machinge
run: cargo build -p collab
- name: Build other binaries and features
run: |
- cargo build --workspace --bins --all-features
- cargo check -p gpui --features "macos-blade"
- cargo check -p workspace
- cargo build -p remote_server
- cargo check -p gpui --examples
+ cargo build --workspace --bins --examples
# Since the macOS runners are stateful, so we need to remove the config file to prevent potential bug.
- name: Clean CI config file
@@ -372,6 +330,46 @@ jobs:
if: always()
run: rm -rf ./../.cargo
+ doctests:
+ # Nextest currently doesn't support doctests, so run them separately and in parallel.
+ timeout-minutes: 60
+ name: (Linux) Run doctests
+ needs: [job_spec]
+ if: |
+ github.repository_owner == 'zed-industries' &&
+ needs.job_spec.outputs.run_tests == 'true'
+ runs-on:
+ - namespace-profile-16x32-ubuntu-2204
+ steps:
+ - name: Add Rust to the PATH
+ run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
+
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ with:
+ clean: false
+
+ - name: Cache dependencies
+ uses: swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2
+ with:
+ save-if: ${{ github.ref == 'refs/heads/main' }}
+ # cache-provider: "buildjet"
+
+ - name: Install Linux dependencies
+ run: ./script/linux
+
+ - name: Configure CI
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+
+ - name: Run doctests
+ run: cargo test --workspace --doc --no-fail-fast
+
+ - name: Clean CI config file
+ if: always()
+ run: rm -rf ./../.cargo
+
build_remote_server:
timeout-minutes: 60
name: (Linux) Build Remote Server
@@ -418,7 +416,7 @@ jobs:
if: |
github.repository_owner == 'zed-industries' &&
needs.job_spec.outputs.run_tests == 'true'
- runs-on: [self-hosted, Windows, X64]
+ runs-on: [self-32vcpu-windows-2022]
steps:
- name: Environment Setup
run: |
@@ -458,7 +456,7 @@ jobs:
tests_pass:
name: Tests Pass
- runs-on: ubuntu-latest
+ runs-on: namespace-profile-2x4-ubuntu-2404
needs:
- job_spec
- style
@@ -466,7 +464,6 @@ jobs:
- actionlint
- migration_checks
# run_tests: If adding required tests, add them here and to script below.
- - workspace_hack
- linux_tests
- build_remote_server
- macos_tests
@@ -492,7 +489,6 @@ jobs:
# Only check test jobs if they were supposed to run
if [[ "${{ needs.job_spec.outputs.run_tests }}" == "true" ]]; then
- [[ "${{ needs.workspace_hack.result }}" != 'success' ]] && { RET_CODE=1; echo "Workspace Hack failed"; }
[[ "${{ needs.macos_tests.result }}" != 'success' ]] && { RET_CODE=1; echo "macOS tests failed"; }
[[ "${{ needs.linux_tests.result }}" != 'success' ]] && { RET_CODE=1; echo "Linux tests failed"; }
[[ "${{ needs.windows_tests.result }}" != 'success' ]] && { RET_CODE=1; echo "Windows tests failed"; }
@@ -510,9 +506,7 @@ jobs:
name: Create a macOS bundle
runs-on:
- self-mini-macos
- if: |
- ( startsWith(github.ref, 'refs/tags/v')
- || contains(github.event.pull_request.labels.*.name, 'run-bundling') )
+ if: startsWith(github.ref, 'refs/tags/v')
needs: [macos_tests]
env:
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
@@ -543,16 +537,14 @@ jobs:
ref: ${{ github.ref }}
- name: Limit target directory size
- run: script/clear-target-dir-if-larger-than 100
+ run: script/clear-target-dir-if-larger-than 300
- name: Determine version and release channel
- if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: |
# This exports RELEASE_CHANNEL into env (GITHUB_ENV)
script/determine-release-channel
- name: Draft release notes
- if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: |
mkdir -p target/
# Ignore any errors that occur while drafting release notes to not fail the build.
@@ -561,29 +553,17 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Create macOS app bundle
- run: script/bundle-mac
+ - name: Create macOS app bundle (aarch64)
+ run: script/bundle-mac aarch64-apple-darwin
+
+ - name: Create macOS app bundle (x64)
+ run: script/bundle-mac x86_64-apple-darwin
- name: Rename binaries
- if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }}
run: |
mv target/aarch64-apple-darwin/release/Zed.dmg target/aarch64-apple-darwin/release/Zed-aarch64.dmg
mv target/x86_64-apple-darwin/release/Zed.dmg target/x86_64-apple-darwin/release/Zed-x86_64.dmg
- - name: Upload app bundle (aarch64) to workflow run if main branch or specific label
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }}
- with:
- name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-aarch64.dmg
- path: target/aarch64-apple-darwin/release/Zed-aarch64.dmg
-
- - name: Upload app bundle (x86_64) to workflow run if main branch or specific label
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }}
- with:
- name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-x86_64.dmg
- path: target/x86_64-apple-darwin/release/Zed-x86_64.dmg
-
- uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
name: Upload app bundle to release
if: ${{ env.RELEASE_CHANNEL == 'preview' || env.RELEASE_CHANNEL == 'stable' }}
@@ -604,8 +584,7 @@ jobs:
runs-on:
- namespace-profile-16x32-ubuntu-2004 # ubuntu 20.04 for minimal glibc
if: |
- ( startsWith(github.ref, 'refs/tags/v')
- || contains(github.event.pull_request.labels.*.name, 'run-bundling') )
+ ( startsWith(github.ref, 'refs/tags/v') )
needs: [linux_tests]
steps:
- name: Checkout repo
@@ -622,7 +601,6 @@ jobs:
token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
- name: Determine version and release channel
- if: startsWith(github.ref, 'refs/tags/v')
run: |
# This exports RELEASE_CHANNEL into env (GITHUB_ENV)
script/determine-release-channel
@@ -630,23 +608,8 @@ jobs:
- name: Create Linux .tar.gz bundle
run: script/bundle-linux
- - name: Upload Artifact to Workflow - zed (run-bundling)
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
- with:
- name: zed-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz
- path: target/release/zed-*.tar.gz
-
- - name: Upload Artifact to Workflow - zed-remote-server (run-bundling)
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
- with:
- name: zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.gz
- path: target/zed-remote-server-linux-x86_64.gz
-
- name: Upload Artifacts to release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
- if: ${{ !(contains(github.event.pull_request.labels.*.name, 'run-bundling')) }}
with:
draft: true
prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
@@ -663,7 +626,6 @@ jobs:
- namespace-profile-8x32-ubuntu-2004-arm-m4 # ubuntu 20.04 for minimal glibc
if: |
startsWith(github.ref, 'refs/tags/v')
- || contains(github.event.pull_request.labels.*.name, 'run-bundling')
needs: [linux_tests]
steps:
- name: Checkout repo
@@ -680,7 +642,6 @@ jobs:
token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
- name: Determine version and release channel
- if: startsWith(github.ref, 'refs/tags/v')
run: |
# This exports RELEASE_CHANNEL into env (GITHUB_ENV)
script/determine-release-channel
@@ -688,23 +649,8 @@ jobs:
- name: Create and upload Linux .tar.gz bundles
run: script/bundle-linux
- - name: Upload Artifact to Workflow - zed (run-bundling)
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
- with:
- name: zed-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.tar.gz
- path: target/release/zed-*.tar.gz
-
- - name: Upload Artifact to Workflow - zed-remote-server (run-bundling)
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
- with:
- name: zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.gz
- path: target/zed-remote-server-linux-aarch64.gz
-
- name: Upload Artifacts to release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
- if: ${{ !(contains(github.event.pull_request.labels.*.name, 'run-bundling')) }}
with:
draft: true
prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
@@ -718,8 +664,7 @@ jobs:
timeout-minutes: 60
runs-on: github-8vcpu-ubuntu-2404
if: |
- false && ( startsWith(github.ref, 'refs/tags/v')
- || contains(github.event.pull_request.labels.*.name, 'run-bundling') )
+ false && ( startsWith(github.ref, 'refs/tags/v') )
needs: [linux_tests]
name: Build Zed on FreeBSD
steps:
@@ -770,23 +715,19 @@ jobs:
nix-build:
name: Build with Nix
- uses: ./.github/workflows/nix.yml
+ uses: ./.github/workflows/nix_build.yml
needs: [job_spec]
if: github.repository_owner == 'zed-industries' &&
(contains(github.event.pull_request.labels.*.name, 'run-nix') ||
needs.job_spec.outputs.run_nix == 'true')
secrets: inherit
- with:
- flake-output: debug
- # excludes the final package to only cache dependencies
- cachix-filter: "-zed-editor-[0-9.]*-nightly"
bundle-windows-x64:
timeout-minutes: 120
- name: Create a Windows installer
- runs-on: [self-hosted, Windows, X64]
- if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
- # if: (startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ name: Create a Windows installer for x86_64
+ runs-on: [self-32vcpu-windows-2022]
+ if: |
+ ( startsWith(github.ref, 'refs/tags/v') )
needs: [windows_tests]
env:
AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
@@ -811,7 +752,6 @@ jobs:
- name: Determine version and release channel
working-directory: ${{ env.ZED_WORKSPACE }}
- if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: |
# This exports RELEASE_CHANNEL into env (GITHUB_ENV)
script/determine-release-channel.ps1
@@ -820,17 +760,55 @@ jobs:
working-directory: ${{ env.ZED_WORKSPACE }}
run: script/bundle-windows.ps1
- - name: Upload installer (x86_64) to Workflow - zed (run-bundling)
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
- if: contains(github.event.pull_request.labels.*.name, 'run-bundling')
+ - name: Upload Artifacts to release
+ uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
+ with:
+ draft: true
+ prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
+ files: ${{ env.SETUP_PATH }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ bundle-windows-aarch64:
+ timeout-minutes: 120
+ name: Create a Windows installer for aarch64
+ runs-on: [self-32vcpu-windows-2022]
+ if: |
+ ( startsWith(github.ref, 'refs/tags/v') )
+ needs: [windows_tests]
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
+ ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
+ CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
+ ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
+ FILE_DIGEST: SHA256
+ TIMESTAMP_DIGEST: SHA256
+ TIMESTAMP_SERVER: "http://timestamp.acs.microsoft.com"
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
- name: ZedEditorUserSetup-x64-${{ github.event.pull_request.head.sha || github.sha }}.exe
- path: ${{ env.SETUP_PATH }}
+ clean: false
+
+ - name: Setup Sentry CLI
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b #v2
+ with:
+ token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
+
+ - name: Determine version and release channel
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ run: |
+ # This exports RELEASE_CHANNEL into env (GITHUB_ENV)
+ script/determine-release-channel.ps1
+
+ - name: Build Zed installer
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ run: script/bundle-windows.ps1 -Architecture aarch64
- name: Upload Artifacts to release
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
- # Re-enable when we are ready to publish windows preview releases
- if: ${{ !(contains(github.event.pull_request.labels.*.name, 'run-bundling')) && env.RELEASE_CHANNEL == 'preview' }} # upload only preview
with:
draft: true
prerelease: ${{ env.RELEASE_CHANNEL == 'preview' }}
@@ -841,9 +819,10 @@ jobs:
auto-release-preview:
name: Auto release preview
if: |
- startsWith(github.ref, 'refs/tags/v')
+ false
+ && startsWith(github.ref, 'refs/tags/v')
&& endsWith(github.ref, '-pre') && !endsWith(github.ref, '.0-pre')
- needs: [bundle-mac, bundle-linux-x86_x64, bundle-linux-aarch64, bundle-windows-x64]
+ needs: [bundle-mac, bundle-linux-x86_x64, bundle-linux-aarch64, bundle-windows-x64, bundle-windows-aarch64]
runs-on:
- self-mini-macos
steps:
diff --git a/.github/workflows/community_champion_auto_labeler.yml b/.github/workflows/community_champion_auto_labeler.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c525bf4738f888b5ca84230982ff1f4f5da2db2f
--- /dev/null
+++ b/.github/workflows/community_champion_auto_labeler.yml
@@ -0,0 +1,48 @@
+name: Community Champion Auto Labeler
+
+on:
+ issues:
+ types: [opened]
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ label_community_champion:
+ if: github.repository_owner == 'zed-industries'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check if author is a community champion and apply label
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const communityChampionBody = `${{ secrets.COMMUNITY_CHAMPIONS }}`;
+
+ const communityChampions = communityChampionBody
+ .split('\n')
+ .map(handle => handle.trim().toLowerCase());
+
+ let author;
+ if (context.eventName === 'issues') {
+ author = context.payload.issue.user.login;
+ } else if (context.eventName === 'pull_request_target') {
+ author = context.payload.pull_request.user.login;
+ }
+
+ if (!author || !communityChampions.includes(author.toLowerCase())) {
+ return;
+ }
+
+ const issueNumber = context.payload.issue?.number || context.payload.pull_request?.number;
+
+ try {
+ await github.rest.issues.addLabels({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: issueNumber,
+ labels: ['community champion']
+ });
+
+ console.log(`Applied 'community champion' label to #${issueNumber} by ${author}`);
+ } catch (error) {
+ console.error(`Failed to apply label: ${error.message}`);
+ }
diff --git a/.github/workflows/community_release_actions.yml b/.github/workflows/community_release_actions.yml
index 31dda1fa6d005ee16eb9d13aec6277ebf9a3ab94..7724aa2096cfa31c0586c9a43678a805443b259a 100644
--- a/.github/workflows/community_release_actions.yml
+++ b/.github/workflows/community_release_actions.yml
@@ -1,3 +1,6 @@
+# IF YOU UPDATE THE NAME OF ANY GITHUB SECRET, YOU MUST CHERRY PICK THE COMMIT
+# TO BOTH STABLE AND PREVIEW CHANNELS
+
name: Release Actions
on:
@@ -13,9 +16,9 @@ jobs:
id: get-release-url
run: |
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
- URL="https://zed.dev/releases/preview/latest"
+ URL="https://zed.dev/releases/preview"
else
- URL="https://zed.dev/releases/stable/latest"
+ URL="https://zed.dev/releases/stable"
fi
echo "URL=$URL" >> "$GITHUB_OUTPUT"
@@ -32,11 +35,31 @@ jobs:
- name: Discord Webhook Action
uses: tsickert/discord-webhook@c840d45a03a323fbc3f7507ac7769dbd91bfb164 # v5.3.0
with:
- webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
+ webhook-url: ${{ secrets.DISCORD_WEBHOOK_RELEASE_NOTES }}
content: ${{ steps.get-content.outputs.string }}
+ publish-winget:
+ runs-on:
+ - ubuntu-latest
+ steps:
+ - name: Set Package Name
+ id: set-package-name
+ run: |
+ if [ "${{ github.event.release.prerelease }}" == "true" ]; then
+ PACKAGE_NAME=ZedIndustries.Zed.Preview
+ else
+ PACKAGE_NAME=ZedIndustries.Zed
+ fi
+
+ echo "PACKAGE_NAME=$PACKAGE_NAME" >> "$GITHUB_OUTPUT"
+ - uses: vedantmgoyal9/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f # v2
+ with:
+ identifier: ${{ steps.set-package-name.outputs.PACKAGE_NAME }}
+ max-versions-to-keep: 5
+ token: ${{ secrets.WINGET_TOKEN }}
+
send_release_notes_email:
- if: github.repository_owner == 'zed-industries' && !github.event.release.prerelease
+ if: false && github.repository_owner == 'zed-industries' && !github.event.release.prerelease
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
diff --git a/.github/workflows/congrats.yml b/.github/workflows/congrats.yml
new file mode 100644
index 0000000000000000000000000000000000000000..efd9812d8070f48fb64c78440a9e1c934ee8cbde
--- /dev/null
+++ b/.github/workflows/congrats.yml
@@ -0,0 +1,57 @@
+name: Congratsbot
+
+on:
+ push:
+ branches: [main]
+
+jobs:
+ check-author:
+ if: ${{ github.repository_owner == 'zed-industries' }}
+ runs-on: ubuntu-latest
+ outputs:
+ should_congratulate: ${{ steps.check.outputs.should_congratulate }}
+ steps:
+ - name: Get PR info and check if author is external
+ id: check
+ uses: actions/github-script@v7
+ with:
+ github-token: ${{ secrets.CONGRATSBOT_GITHUB_TOKEN }}
+ script: |
+ const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ commit_sha: context.sha
+ });
+
+ if (prs.length === 0) {
+ core.setOutput('should_congratulate', 'false');
+ return;
+ }
+
+ const mergedPR = prs.find(pr => pr.merged_at !== null) || prs[0];
+ const prAuthor = mergedPR.user.login;
+
+ try {
+ await github.rest.teams.getMembershipForUserInOrg({
+ org: 'zed-industries',
+ team_slug: 'staff',
+ username: prAuthor
+ });
+ core.setOutput('should_congratulate', 'false');
+ } catch (error) {
+ if (error.status === 404) {
+ core.setOutput('should_congratulate', 'true');
+ } else {
+ console.error(`Error checking team membership: ${error.message}`);
+ core.setOutput('should_congratulate', 'false');
+ }
+ }
+
+ congrats:
+ needs: check-author
+ if: needs.check-author.outputs.should_congratulate == 'true'
+ uses: withastro/automation/.github/workflows/congratsbot.yml@main
+ with:
+ EMOJIS: 🎉,🎊,🧑🚀,🥳,🙌,🚀,🦀,🔥,🚢
+ secrets:
+ DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }}
diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml
index 15c82643aef1e14c85daaaf2c8c3c61f62f1b3aa..1134167e05e29ffebfcf176b4f8c6cfc1b9e862d 100644
--- a/.github/workflows/danger.yml
+++ b/.github/workflows/danger.yml
@@ -1,42 +1,40 @@
-name: Danger
-
+# Generated from xtask::workflows::danger
+# Rebuild with `cargo xtask workflows`.
+name: danger
on:
pull_request:
- branches: [main]
types:
- - opened
- - synchronize
- - reopened
- - edited
-
+ - opened
+ - synchronize
+ - reopened
+ - edited
+ branches:
+ - main
jobs:
danger:
if: github.repository_owner == 'zed-industries'
- runs-on: ubuntu-latest
-
+ runs-on: namespace-profile-2x4-ubuntu-2404
steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
-
- - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- with:
- version: 9
-
- - name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- with:
- node-version: "20"
- cache: "pnpm"
- cache-dependency-path: "script/danger/pnpm-lock.yaml"
-
- - run: pnpm install --dir script/danger
-
- - name: Run Danger
- run: pnpm run --dir script/danger danger ci
- env:
- # This GitHub token is not used, but the value needs to be here to prevent
- # Danger from throwing an error.
- GITHUB_TOKEN: "not_a_real_token"
- # All requests are instead proxied through an instance of
- # https://github.com/maxdeviant/danger-proxy that allows Danger to securely
- # authenticate with GitHub while still being able to run on PRs from forks.
- DANGER_GITHUB_API_BASE_URL: "https://danger-proxy.fly.dev/github"
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_pnpm
+ uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
+ with:
+ version: '9'
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ cache: pnpm
+ cache-dependency-path: script/danger/pnpm-lock.yaml
+ - name: danger::install_deps
+ run: pnpm install --dir script/danger
+ shell: bash -euxo pipefail {0}
+ - name: danger::run
+ run: pnpm run --dir script/danger danger ci
+ shell: bash -euxo pipefail {0}
+ env:
+ GITHUB_TOKEN: not_a_real_token
+ DANGER_GITHUB_API_BASE_URL: https://danger-proxy.fly.dev/github
diff --git a/.github/workflows/deploy_cloudflare.yml b/.github/workflows/deploy_cloudflare.yml
index df35d44ca9ceb00a0503e941110c472c0b418fa2..2650cce1406b16e691565077b95d07730845664b 100644
--- a/.github/workflows/deploy_cloudflare.yml
+++ b/.github/workflows/deploy_cloudflare.yml
@@ -22,6 +22,8 @@ jobs:
- name: Build docs
uses: ./.github/actions/build_docs
+ env:
+ DOCS_AMPLITUDE_API_KEY: ${{ secrets.DOCS_AMPLITUDE_API_KEY }}
- name: Deploy Docs
uses: cloudflare/wrangler-action@da0e0dfe58b7a431659754fdf3f186c529afbe65 # v3
diff --git a/.github/workflows/deploy_collab.yml b/.github/workflows/deploy_collab.yml
index ff2a3589e4c5482089536919618f1bbff982c63c..c61879faa8cd0a5dbdbed03a140f8e558f13322b 100644
--- a/.github/workflows/deploy_collab.yml
+++ b/.github/workflows/deploy_collab.yml
@@ -49,7 +49,7 @@ jobs:
- name: Limit target directory size
shell: bash -euxo pipefail {0}
- run: script/clear-target-dir-if-larger-than 100
+ run: script/clear-target-dir-if-larger-than 300
- name: Run tests
shell: bash -euxo pipefail {0}
diff --git a/.github/workflows/good_first_issue_notifier.yml b/.github/workflows/good_first_issue_notifier.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1db992502beb1256da065a54a30e146e3efa48b5
--- /dev/null
+++ b/.github/workflows/good_first_issue_notifier.yml
@@ -0,0 +1,36 @@
+name: Good First Issue Notifier
+
+on:
+ issues:
+ types: [labeled]
+
+jobs:
+ handle-good-first-issue:
+ if: github.event.label.name == 'good first issue' && github.repository_owner == 'zed-industries'
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+
+ - name: Prepare Discord message
+ id: prepare-message
+ env:
+ ISSUE_TITLE: ${{ github.event.issue.title }}
+ ISSUE_NUMBER: ${{ github.event.issue.number }}
+ ISSUE_URL: ${{ github.event.issue.html_url }}
+ ISSUE_AUTHOR: ${{ github.event.issue.user.login }}
+ run: |
+ MESSAGE="[${ISSUE_TITLE} (#${ISSUE_NUMBER})](<${ISSUE_URL}>)"
+
+ {
+ echo "message<> "$GITHUB_OUTPUT"
+
+ - name: Discord Webhook Action
+ uses: tsickert/discord-webhook@c840d45a03a323fbc3f7507ac7769dbd91bfb164 # v5.3.0
+ with:
+ webhook-url: ${{ secrets.DISCORD_WEBHOOK_GOOD_FIRST_ISSUE }}
+ content: ${{ steps.prepare-message.outputs.message }}
diff --git a/.github/workflows/issue_response.yml b/.github/workflows/issue_response.yml
deleted file mode 100644
index f084b9ba9dfc4aba46a766986bafcffa3e9fd0ce..0000000000000000000000000000000000000000
--- a/.github/workflows/issue_response.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Issue Response
-
-on:
- schedule:
- - cron: "0 12 * * 2"
- workflow_dispatch:
-
-jobs:
- issue-response:
- if: github.repository_owner == 'zed-industries'
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
-
- - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
- with:
- version: 9
-
- - name: Setup Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- with:
- node-version: "20"
- cache: "pnpm"
- cache-dependency-path: "script/issue_response/pnpm-lock.yaml"
-
- - run: pnpm install --dir script/issue_response
-
- - name: Run Issue Response
- run: pnpm run --dir script/issue_response start
- env:
- ISSUE_RESPONSE_GITHUB_TOKEN: ${{ secrets.ISSUE_RESPONSE_GITHUB_TOKEN }}
- SLACK_ISSUE_RESPONSE_WEBHOOK_URL: ${{ secrets.SLACK_ISSUE_RESPONSE_WEBHOOK_URL }}
diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml
deleted file mode 100644
index e682ce5890b86e8a3cf181be2d302d66025572c2..0000000000000000000000000000000000000000
--- a/.github/workflows/nix.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: "Nix build"
-
-on:
- workflow_call:
- inputs:
- flake-output:
- type: string
- default: "default"
- cachix-filter:
- type: string
- default: ""
-
-jobs:
- nix-build:
- timeout-minutes: 60
- name: (${{ matrix.system.os }}) Nix Build
- continue-on-error: true # TODO: remove when we want this to start blocking CI
- strategy:
- fail-fast: false
- matrix:
- system:
- - os: x86 Linux
- runner: namespace-profile-16x32-ubuntu-2204
- install_nix: true
- - os: arm Mac
- runner: [macOS, ARM64, test]
- install_nix: false
- if: github.repository_owner == 'zed-industries'
- runs-on: ${{ matrix.system.runner }}
- env:
- ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
- ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
- ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
- GIT_LFS_SKIP_SMUDGE: 1 # breaks the livekit rust sdk examples which we don't actually depend on
- steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- # on our macs we manually install nix. for some reason the cachix action is running
- # under a non-login /bin/bash shell which doesn't source the proper script to add the
- # nix profile to PATH, so we manually add them here
- - name: Set path
- if: ${{ ! matrix.system.install_nix }}
- run: |
- echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
- echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
-
- - uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f # v31
- if: ${{ matrix.system.install_nix }}
- with:
- github_access_token: ${{ secrets.GITHUB_TOKEN }}
-
- - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
- with:
- name: zed
- authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- pushFilter: "${{ inputs.cachix-filter }}"
- cachixArgs: "-v"
-
- - run: nix build .#${{ inputs.flake-output }} -L --accept-flake-config
-
- - name: Limit /nix/store to 50GB on macs
- if: ${{ ! matrix.system.install_nix }}
- run: |
- if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
- nix-collect-garbage -d || true
- fi
diff --git a/.github/workflows/nix_build.yml b/.github/workflows/nix_build.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4dd45bd3a740a43785e0284f0b86b2cdef50c1c7
--- /dev/null
+++ b/.github/workflows/nix_build.yml
@@ -0,0 +1,97 @@
+# Generated from xtask::workflows::nix_build
+# Rebuild with `cargo xtask workflows`.
+name: nix_build
+env:
+ CARGO_TERM_COLOR: always
+ RUST_BACKTRACE: '1'
+ CARGO_INCREMENTAL: '0'
+on:
+ pull_request:
+ branches:
+ - '**'
+ paths:
+ - nix/**
+ - flake.*
+ - Cargo.*
+ - rust-toolchain.toml
+ - .cargo/config.toml
+ push:
+ branches:
+ - main
+ - v[0-9]+.[0-9]+.x
+ paths:
+ - nix/**
+ - flake.*
+ - Cargo.*
+ - rust-toolchain.toml
+ - .cargo/config.toml
+ workflow_call: {}
+jobs:
+ build_nix_linux_x86_64:
+ if: github.repository_owner == 'zed-industries'
+ runs-on: namespace-profile-32x64-ubuntu-2004
+ env:
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+ ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
+ GIT_LFS_SKIP_SMUDGE: '1'
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: nix_build::install_nix
+ uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
+ with:
+ github_access_token: ${{ secrets.GITHUB_TOKEN }}
+ - name: nix_build::cachix_action
+ uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
+ with:
+ name: zed
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+ cachixArgs: -v
+ pushFilter: -zed-editor-[0-9.]*-nightly
+ - name: nix_build::build
+ run: nix build .#debug -L --accept-flake-config
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ continue-on-error: true
+ build_nix_mac_aarch64:
+ if: github.repository_owner == 'zed-industries'
+ runs-on: self-mini-macos
+ env:
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+ ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
+ GIT_LFS_SKIP_SMUDGE: '1'
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: nix_build::set_path
+ run: |
+ echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
+ echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
+ shell: bash -euxo pipefail {0}
+ - name: nix_build::cachix_action
+ uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
+ with:
+ name: zed
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+ cachixArgs: -v
+ pushFilter: -zed-editor-[0-9.]*-nightly
+ - name: nix_build::build
+ run: nix build .#debug -L --accept-flake-config
+ shell: bash -euxo pipefail {0}
+ - name: nix_build::limit_store
+ run: |-
+ if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
+ nix-collect-garbage -d || true
+ fi
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ continue-on-error: true
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
+ cancel-in-progress: true
diff --git a/.github/workflows/release_nightly.yml b/.github/workflows/release_nightly.yml
index 0cc6737a45106713021c769b75dbbb180008dffe..80e6534e70e8f7169514fb8cc569f7b11488cd88 100644
--- a/.github/workflows/release_nightly.yml
+++ b/.github/workflows/release_nightly.yml
@@ -1,93 +1,155 @@
-name: Release Nightly
-
-on:
- schedule:
- # Fire every day at 7:00am UTC (Roughly before EU workday and after US workday)
- - cron: "0 7 * * *"
- push:
- tags:
- - "nightly"
-
+# Generated from xtask::workflows::release_nightly
+# Rebuild with `cargo xtask workflows`.
+name: release_nightly
env:
CARGO_TERM_COLOR: always
- CARGO_INCREMENTAL: 0
- RUST_BACKTRACE: 1
+ CARGO_INCREMENTAL: '0'
+ RUST_BACKTRACE: '1'
ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }}
DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }}
-
+on:
+ push:
+ tags:
+ - nightly
+ schedule:
+ - cron: 0 7 * * *
jobs:
- style:
+ check_style:
+ if: github.repository_owner == 'zed-industries'
+ runs-on: self-mini-macos
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ fetch-depth: 0
+ - name: steps::cargo_fmt
+ run: cargo fmt --all -- --check
+ shell: bash -euxo pipefail {0}
+ - name: ./script/clippy
+ run: ./script/clippy
+ shell: bash -euxo pipefail {0}
timeout-minutes: 60
- name: Check formatting and Clippy lints
+ run_tests_mac:
if: github.repository_owner == 'zed-industries'
- runs-on:
- - self-hosted
- - macOS
+ runs-on: self-mini-macos
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
- fetch-depth: 0
-
- - name: Run style checks
- uses: ./.github/actions/check_style
-
- - name: Run clippy
- run: ./script/clippy
-
- tests:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+ shell: bash -euxo pipefail {0}
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::clippy
+ run: ./script/clippy
+ shell: bash -euxo pipefail {0}
+ - name: steps::cargo_install_nextest
+ run: cargo install cargo-nextest --locked
+ shell: bash -euxo pipefail {0}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 300
+ shell: bash -euxo pipefail {0}
+ - name: steps::cargo_nextest
+ run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
+ shell: bash -euxo pipefail {0}
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ rm -rf ./../.cargo
+ shell: bash -euxo pipefail {0}
timeout-minutes: 60
- name: Run tests
+ run_tests_windows:
if: github.repository_owner == 'zed-industries'
- runs-on:
- - self-hosted
- - macOS
- needs: style
+ runs-on: self-32vcpu-windows-2022
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- - name: Run tests
- uses: ./.github/actions/run_tests
-
- windows-tests:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ New-Item -ItemType Directory -Path "./../.cargo" -Force
+ Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
+ shell: pwsh
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::clippy
+ run: ./script/clippy.ps1
+ shell: pwsh
+ - name: steps::cargo_install_nextest
+ run: cargo install cargo-nextest --locked
+ shell: pwsh
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than.ps1 250
+ shell: pwsh
+ - name: steps::cargo_nextest
+ run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
+ shell: pwsh
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
+ shell: pwsh
timeout-minutes: 60
- name: Run tests on Windows
+ bundle_mac_nightly_x86_64:
+ needs:
+ - check_style
+ - run_tests_mac
if: github.repository_owner == 'zed-industries'
- runs-on: [self-hosted, Windows, X64]
+ runs-on: self-mini-macos
+ env:
+ MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
+ MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
+ APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
+ APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
+ APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- - name: Configure CI
- run: |
- New-Item -ItemType Directory -Path "./../.cargo" -Force
- Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
-
- - name: Run tests
- uses: ./.github/actions/run_tests_windows
-
- - name: Limit target directory size
- run: ./script/clear-target-dir-if-larger-than.ps1 1024
-
- - name: Clean CI config file
- if: always()
- run: Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
-
- bundle-mac:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 300
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::set_release_channel_to_nightly
+ run: |
+ set -eu
+ version=$(git rev-parse --short HEAD)
+ echo "Publishing version: ${version} on release channel nightly"
+ echo "nightly" > crates/zed/RELEASE_CHANNEL
+ shell: bash -euxo pipefail {0}
+ - name: run_bundling::bundle_mac
+ run: ./script/bundle-mac x86_64-apple-darwin
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::upload_zed_nightly
+ run: script/upload-nightly macos x86_64
+ shell: bash -euxo pipefail {0}
timeout-minutes: 60
- name: Create a macOS bundle
+ bundle_mac_nightly_aarch64:
+ needs:
+ - check_style
+ - run_tests_mac
if: github.repository_owner == 'zed-industries'
- runs-on:
- - self-mini-macos
- needs: tests
+ runs-on: self-mini-macos
env:
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
@@ -95,165 +157,162 @@ jobs:
APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
steps:
- - name: Install Node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- with:
- node-version: "18"
-
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- - name: Set release channel to nightly
- run: |
- set -eu
- version=$(git rev-parse --short HEAD)
- echo "Publishing version: ${version} on release channel nightly"
- echo "nightly" > crates/zed/RELEASE_CHANNEL
-
- - name: Setup Sentry CLI
- uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b #v2
- with:
- token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
-
- - name: Create macOS app bundle
- run: script/bundle-mac
-
- - name: Upload Zed Nightly
- run: script/upload-nightly macos
-
- bundle-linux-x86:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 300
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::set_release_channel_to_nightly
+ run: |
+ set -eu
+ version=$(git rev-parse --short HEAD)
+ echo "Publishing version: ${version} on release channel nightly"
+ echo "nightly" > crates/zed/RELEASE_CHANNEL
+ shell: bash -euxo pipefail {0}
+ - name: run_bundling::bundle_mac
+ run: ./script/bundle-mac aarch64-apple-darwin
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::upload_zed_nightly
+ run: script/upload-nightly macos aarch64
+ shell: bash -euxo pipefail {0}
timeout-minutes: 60
- name: Create a Linux *.tar.gz bundle for x86
+ bundle_linux_nightly_x86_64:
+ needs:
+ - check_style
+ - run_tests_mac
if: github.repository_owner == 'zed-industries'
- runs-on:
- - namespace-profile-16x32-ubuntu-2004 # ubuntu 20.04 for minimal glibc
- needs: tests
+ runs-on: namespace-profile-32x64-ubuntu-2004
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- - name: Add Rust to the PATH
- run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
-
- - name: Install Linux dependencies
- run: ./script/linux && ./script/install-mold 2.34.0
-
- - name: Setup Sentry CLI
- uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b #v2
- with:
- token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
-
- - name: Limit target directory size
- run: script/clear-target-dir-if-larger-than 100
-
- - name: Set release channel to nightly
- run: |
- set -euo pipefail
- version=$(git rev-parse --short HEAD)
- echo "Publishing version: ${version} on release channel nightly"
- echo "nightly" > crates/zed/RELEASE_CHANNEL
-
- - name: Create Linux .tar.gz bundle
- run: script/bundle-linux
-
- - name: Upload Zed Nightly
- run: script/upload-nightly linux-targz
-
- bundle-linux-arm:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: release_nightly::add_rust_to_path
+ run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
+ shell: bash -euxo pipefail {0}
+ - name: ./script/linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: ./script/install-mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 100
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::set_release_channel_to_nightly
+ run: |
+ set -eu
+ version=$(git rev-parse --short HEAD)
+ echo "Publishing version: ${version} on release channel nightly"
+ echo "nightly" > crates/zed/RELEASE_CHANNEL
+ shell: bash -euxo pipefail {0}
+ - name: ./script/bundle-linux
+ run: ./script/bundle-linux
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::upload_zed_nightly
+ run: script/upload-nightly linux-targz x86_64
+ shell: bash -euxo pipefail {0}
timeout-minutes: 60
- name: Create a Linux *.tar.gz bundle for ARM
+ bundle_linux_nightly_aarch64:
+ needs:
+ - check_style
+ - run_tests_mac
if: github.repository_owner == 'zed-industries'
- runs-on:
- - namespace-profile-8x32-ubuntu-2004-arm-m4 # ubuntu 20.04 for minimal glibc
- needs: tests
+ runs-on: namespace-profile-8x32-ubuntu-2004-arm-m4
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- - name: Install Linux dependencies
- run: ./script/linux
-
- - name: Setup Sentry CLI
- uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b #v2
- with:
- token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
-
- - name: Limit target directory size
- run: script/clear-target-dir-if-larger-than 100
-
- - name: Set release channel to nightly
- run: |
- set -euo pipefail
- version=$(git rev-parse --short HEAD)
- echo "Publishing version: ${version} on release channel nightly"
- echo "nightly" > crates/zed/RELEASE_CHANNEL
-
- - name: Create Linux .tar.gz bundle
- run: script/bundle-linux
-
- - name: Upload Zed Nightly
- run: script/upload-nightly linux-targz
-
- freebsd:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: release_nightly::add_rust_to_path
+ run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
+ shell: bash -euxo pipefail {0}
+ - name: ./script/linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 100
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::set_release_channel_to_nightly
+ run: |
+ set -eu
+ version=$(git rev-parse --short HEAD)
+ echo "Publishing version: ${version} on release channel nightly"
+ echo "nightly" > crates/zed/RELEASE_CHANNEL
+ shell: bash -euxo pipefail {0}
+ - name: ./script/bundle-linux
+ run: ./script/bundle-linux
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::upload_zed_nightly
+ run: script/upload-nightly linux-targz aarch64
+ shell: bash -euxo pipefail {0}
timeout-minutes: 60
- if: false && github.repository_owner == 'zed-industries'
- runs-on: github-8vcpu-ubuntu-2404
- needs: tests
- name: Build Zed on FreeBSD
- # env:
- # MYTOKEN : ${{ secrets.MYTOKEN }}
- # MYTOKEN2: "value2"
+ bundle_windows_nightly_x86_64:
+ needs:
+ - check_style
+ - run_tests_windows
+ if: github.repository_owner == 'zed-industries'
+ runs-on: self-32vcpu-windows-2022
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
+ ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
+ CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
+ ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
+ FILE_DIGEST: SHA256
+ TIMESTAMP_DIGEST: SHA256
+ TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
steps:
- - uses: actions/checkout@v4
- - name: Build FreeBSD remote-server
- id: freebsd-build
- uses: vmactions/freebsd-vm@c3ae29a132c8ef1924775414107a97cac042aad5 # v1.2.0
- with:
- # envs: "MYTOKEN MYTOKEN2"
- usesh: true
- release: 13.5
- copyback: true
- prepare: |
- pkg install -y \
- bash curl jq git \
- rustup-init cmake-core llvm-devel-lite pkgconf protobuf # ibx11 alsa-lib rust-bindgen-cli
- run: |
- freebsd-version
- sysctl hw.model
- sysctl hw.ncpu
- sysctl hw.physmem
- sysctl hw.usermem
- git config --global --add safe.directory /home/runner/work/zed/zed
- rustup-init --profile minimal --default-toolchain none -y
- . "$HOME/.cargo/env"
- ./script/bundle-freebsd
- mkdir -p out/
- mv "target/zed-remote-server-freebsd-x86_64.gz" out/
- rm -rf target/
- cargo clean
-
- - name: Upload Zed Nightly
- run: script/upload-nightly freebsd
-
- bundle-nix:
- name: Build and cache Nix package
- if: false
- needs: tests
- secrets: inherit
- uses: ./.github/workflows/nix.yml
-
- bundle-windows-x64:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: release_nightly::set_release_channel_to_nightly
+ run: |
+ $ErrorActionPreference = "Stop"
+ $version = git rev-parse --short HEAD
+ Write-Host "Publishing version: $version on release channel nightly"
+ "nightly" | Set-Content -Path "crates/zed/RELEASE_CHANNEL"
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ - name: release_nightly::build_zed_installer
+ run: script/bundle-windows.ps1 -Architecture x86_64
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ - name: release_nightly::upload_zed_nightly_windows
+ run: script/upload-nightly.ps1 -Architecture x86_64
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
timeout-minutes: 60
- name: Create a Windows installer
+ bundle_windows_nightly_aarch64:
+ needs:
+ - check_style
+ - run_tests_windows
if: github.repository_owner == 'zed-industries'
- runs-on: [self-hosted, Windows, X64]
- needs: windows-tests
+ runs-on: self-32vcpu-windows-2022
env:
AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
@@ -263,65 +322,135 @@ jobs:
ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
FILE_DIGEST: SHA256
TIMESTAMP_DIGEST: SHA256
- TIMESTAMP_SERVER: "http://timestamp.acs.microsoft.com"
+ TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: release_nightly::set_release_channel_to_nightly
+ run: |
+ $ErrorActionPreference = "Stop"
+ $version = git rev-parse --short HEAD
+ Write-Host "Publishing version: $version on release channel nightly"
+ "nightly" | Set-Content -Path "crates/zed/RELEASE_CHANNEL"
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ - name: release_nightly::build_zed_installer
+ run: script/bundle-windows.ps1 -Architecture aarch64
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ - name: release_nightly::upload_zed_nightly_windows
+ run: script/upload-nightly.ps1 -Architecture aarch64
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ timeout-minutes: 60
+ build_nix_linux_x86_64:
+ needs:
+ - check_style
+ - run_tests_mac
+ if: github.repository_owner == 'zed-industries'
+ runs-on: namespace-profile-32x64-ubuntu-2004
+ env:
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+ ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
+ GIT_LFS_SKIP_SMUDGE: '1'
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- clean: false
-
- - name: Set release channel to nightly
- working-directory: ${{ env.ZED_WORKSPACE }}
- run: |
- $ErrorActionPreference = "Stop"
- $version = git rev-parse --short HEAD
- Write-Host "Publishing version: $version on release channel nightly"
- "nightly" | Set-Content -Path "crates/zed/RELEASE_CHANNEL"
-
- - name: Setup Sentry CLI
- uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b #v2
- with:
- token: ${{ SECRETS.SENTRY_AUTH_TOKEN }}
-
- - name: Build Zed installer
- working-directory: ${{ env.ZED_WORKSPACE }}
- run: script/bundle-windows.ps1
-
- - name: Upload Zed Nightly
- working-directory: ${{ env.ZED_WORKSPACE }}
- run: script/upload-nightly.ps1 windows
-
- update-nightly-tag:
- name: Update nightly tag
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: nix_build::install_nix
+ uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
+ with:
+ github_access_token: ${{ secrets.GITHUB_TOKEN }}
+ - name: nix_build::cachix_action
+ uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
+ with:
+ name: zed
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+ cachixArgs: -v
+ - name: nix_build::build
+ run: nix build .#default -L --accept-flake-config
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ continue-on-error: true
+ build_nix_mac_aarch64:
+ needs:
+ - check_style
+ - run_tests_mac
if: github.repository_owner == 'zed-industries'
- runs-on: ubuntu-latest
+ runs-on: self-mini-macos
+ env:
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+ ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
+ GIT_LFS_SKIP_SMUDGE: '1'
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: nix_build::set_path
+ run: |
+ echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
+ echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
+ shell: bash -euxo pipefail {0}
+ - name: nix_build::cachix_action
+ uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
+ with:
+ name: zed
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+ cachixArgs: -v
+ - name: nix_build::build
+ run: nix build .#default -L --accept-flake-config
+ shell: bash -euxo pipefail {0}
+ - name: nix_build::limit_store
+ run: |-
+ if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
+ nix-collect-garbage -d || true
+ fi
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ continue-on-error: true
+ update_nightly_tag:
needs:
- - bundle-mac
- - bundle-linux-x86
- - bundle-linux-arm
- - bundle-windows-x64
+ - bundle_mac_nightly_x86_64
+ - bundle_mac_nightly_aarch64
+ - bundle_linux_nightly_x86_64
+ - bundle_linux_nightly_aarch64
+ - bundle_windows_nightly_x86_64
+ - bundle_windows_nightly_aarch64
+ if: github.repository_owner == 'zed-industries'
+ runs-on: namespace-profile-2x4-ubuntu-2404
steps:
- - name: Checkout repo
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- with:
- fetch-depth: 0
-
- - name: Update nightly tag
- run: |
- if [ "$(git rev-parse nightly)" = "$(git rev-parse HEAD)" ]; then
- echo "Nightly tag already points to current commit. Skipping tagging."
- exit 0
- fi
- git config user.name github-actions
- git config user.email github-actions@github.com
- git tag -f nightly
- git push origin nightly --force
-
- - name: Create Sentry release
- uses: getsentry/action-release@526942b68292201ac6bbb99b9a0747d4abee354c # v3
- env:
- SENTRY_ORG: zed-dev
- SENTRY_PROJECT: zed
- SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
- with:
- environment: production
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ fetch-depth: 0
+ - name: release_nightly::update_nightly_tag
+ run: |
+ if [ "$(git rev-parse nightly)" = "$(git rev-parse HEAD)" ]; then
+ echo "Nightly tag already points to current commit. Skipping tagging."
+ exit 0
+ fi
+ git config user.name github-actions
+ git config user.email github-actions@github.com
+ git tag -f nightly
+ git push origin nightly --force
+ shell: bash -euxo pipefail {0}
+ - name: release_nightly::create_sentry_release
+ uses: getsentry/action-release@526942b68292201ac6bbb99b9a0747d4abee354c
+ with:
+ environment: production
+ env:
+ SENTRY_ORG: zed-dev
+ SENTRY_PROJECT: zed
+ SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ timeout-minutes: 60
diff --git a/.github/workflows/run_bundling.yml b/.github/workflows/run_bundling.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9766c7c14b64007692cfb1c68efead5b23382426
--- /dev/null
+++ b/.github/workflows/run_bundling.yml
@@ -0,0 +1,236 @@
+# Generated from xtask::workflows::run_bundling
+# Rebuild with `cargo xtask workflows`.
+name: run_bundling
+env:
+ CARGO_TERM_COLOR: always
+ CARGO_INCREMENTAL: '0'
+ RUST_BACKTRACE: '1'
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+on:
+ pull_request:
+ types:
+ - labeled
+ - synchronize
+jobs:
+ bundle_mac_x86_64:
+ if: |-
+ (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
+ (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ runs-on: self-mini-macos
+ env:
+ MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
+ MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
+ APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
+ APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
+ APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 300
+ shell: bash -euxo pipefail {0}
+ - name: run_bundling::bundle_mac
+ run: ./script/bundle-mac x86_64-apple-darwin
+ shell: bash -euxo pipefail {0}
+ - name: '@actions/upload-artifact Zed_${{ github.event.pull_request.head.sha || github.sha }}-x86_64.dmg'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-x86_64.dmg
+ path: target/x86_64-apple-darwin/release/Zed.dmg
+ - name: '@actions/upload-artifact zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-macos-x86_64.gz'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-macos-x86_64.gz
+ path: target/zed-remote-server-macos-x86_64.gz
+ timeout-minutes: 60
+ bundle_mac_arm64:
+ if: |-
+ (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
+ (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ runs-on: self-mini-macos
+ env:
+ MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
+ MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
+ APPLE_NOTARIZATION_KEY: ${{ secrets.APPLE_NOTARIZATION_KEY }}
+ APPLE_NOTARIZATION_KEY_ID: ${{ secrets.APPLE_NOTARIZATION_KEY_ID }}
+ APPLE_NOTARIZATION_ISSUER_ID: ${{ secrets.APPLE_NOTARIZATION_ISSUER_ID }}
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 300
+ shell: bash -euxo pipefail {0}
+ - name: run_bundling::bundle_mac
+ run: ./script/bundle-mac aarch64-apple-darwin
+ shell: bash -euxo pipefail {0}
+ - name: '@actions/upload-artifact Zed_${{ github.event.pull_request.head.sha || github.sha }}-aarch64.dmg'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-aarch64.dmg
+ path: target/aarch64-apple-darwin/release/Zed.dmg
+ - name: '@actions/upload-artifact zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-macos-aarch64.gz'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-macos-aarch64.gz
+ path: target/zed-remote-server-macos-aarch64.gz
+ timeout-minutes: 60
+ bundle_linux_x86_64:
+ if: |-
+ (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
+ (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ runs-on: namespace-profile-32x64-ubuntu-2004
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: steps::setup_linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::install_mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: ./script/bundle-linux
+ run: ./script/bundle-linux
+ shell: bash -euxo pipefail {0}
+ - name: '@actions/upload-artifact zed-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: zed-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz
+ path: target/release/zed-*.tar.gz
+ - name: '@actions/upload-artifact zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz
+ path: target/release/zed-remote-server-*.tar.gz
+ timeout-minutes: 60
+ bundle_linux_arm64:
+ if: |-
+ (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
+ (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ runs-on: namespace-profile-8x32-ubuntu-2004-arm-m4
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: steps::setup_linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::install_mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: ./script/bundle-linux
+ run: ./script/bundle-linux
+ shell: bash -euxo pipefail {0}
+ - name: '@actions/upload-artifact zed-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.tar.gz'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: zed-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.tar.gz
+ path: target/release/zed-*.tar.gz
+ - name: '@actions/upload-artifact zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.tar.gz'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: zed-remote-server-${{ github.event.pull_request.head.sha || github.sha }}-aarch64-unknown-linux-gnu.tar.gz
+ path: target/release/zed-remote-server-*.tar.gz
+ timeout-minutes: 60
+ bundle_windows_x86_64:
+ if: |-
+ (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
+ (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ runs-on: self-32vcpu-windows-2022
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
+ ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
+ CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
+ ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
+ FILE_DIGEST: SHA256
+ TIMESTAMP_DIGEST: SHA256
+ TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: run_bundling::bundle_windows
+ run: script/bundle-windows.ps1 -Architecture x86_64
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ - name: '@actions/upload-artifact Zed_${{ github.event.pull_request.head.sha || github.sha }}-x86_64.exe'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-x86_64.exe
+ path: ${{ env.SETUP_PATH }}
+ timeout-minutes: 60
+ bundle_windows_arm64:
+ if: |-
+ (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
+ (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
+ runs-on: self-32vcpu-windows-2022
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
+ ACCOUNT_NAME: ${{ vars.AZURE_SIGNING_ACCOUNT_NAME }}
+ CERT_PROFILE_NAME: ${{ vars.AZURE_SIGNING_CERT_PROFILE_NAME }}
+ ENDPOINT: ${{ vars.AZURE_SIGNING_ENDPOINT }}
+ FILE_DIGEST: SHA256
+ TIMESTAMP_DIGEST: SHA256
+ TIMESTAMP_SERVER: http://timestamp.acs.microsoft.com
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_sentry
+ uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
+ with:
+ token: ${{ secrets.SENTRY_AUTH_TOKEN }}
+ - name: run_bundling::bundle_windows
+ run: script/bundle-windows.ps1 -Architecture aarch64
+ shell: pwsh
+ working-directory: ${{ env.ZED_WORKSPACE }}
+ - name: '@actions/upload-artifact Zed_${{ github.event.pull_request.head.sha || github.sha }}-aarch64.exe'
+ uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
+ with:
+ name: Zed_${{ github.event.pull_request.head.sha || github.sha }}-aarch64.exe
+ path: ${{ env.SETUP_PATH }}
+ timeout-minutes: 60
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
+ cancel-in-progress: true
diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml
new file mode 100644
index 0000000000000000000000000000000000000000..63c882bf7b0cf447bfd641002bcf67667bbea8b6
--- /dev/null
+++ b/.github/workflows/run_tests.yml
@@ -0,0 +1,549 @@
+# Generated from xtask::workflows::run_tests
+# Rebuild with `cargo xtask workflows`.
+name: run_tests
+env:
+ CARGO_TERM_COLOR: always
+ RUST_BACKTRACE: '1'
+ CARGO_INCREMENTAL: '0'
+on:
+ pull_request:
+ branches:
+ - '**'
+ push:
+ branches:
+ - main
+ - v[0-9]+.[0-9]+.x
+jobs:
+ orchestrate:
+ if: github.repository_owner == 'zed-industries'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ fetch-depth: ${{ github.ref == 'refs/heads/main' && 2 || 350 }}
+ - id: filter
+ name: filter
+ run: |
+ if [ -z "$GITHUB_BASE_REF" ]; then
+ echo "Not in a PR context (i.e., push to main/stable/preview)"
+ COMPARE_REV="$(git rev-parse HEAD~1)"
+ else
+ echo "In a PR context comparing to pull_request.base.ref"
+ git fetch origin "$GITHUB_BASE_REF" --depth=350
+ COMPARE_REV="$(git merge-base "origin/${GITHUB_BASE_REF}" HEAD)"
+ fi
+ CHANGED_FILES="$(git diff --name-only "$COMPARE_REV" ${{ github.sha }})"
+
+ check_pattern() {
+ local output_name="$1"
+ local pattern="$2"
+ local grep_arg="$3"
+
+ echo "$CHANGED_FILES" | grep "$grep_arg" "$pattern" && \
+ echo "${output_name}=true" >> "$GITHUB_OUTPUT" || \
+ echo "${output_name}=false" >> "$GITHUB_OUTPUT"
+ }
+
+ check_pattern "run_action_checks" '^\.github/(workflows/|actions/|actionlint.yml)|tooling/xtask|script/' -qP
+ check_pattern "run_docs" '^docs/' -qP
+ check_pattern "run_licenses" '^(Cargo.lock|script/.*licenses)' -qP
+ check_pattern "run_nix" '^(nix/|flake\.|Cargo\.|rust-toolchain.toml|\.cargo/config.toml)' -qP
+ check_pattern "run_tests" '^(docs/|script/update_top_ranking_issues/|\.github/(ISSUE_TEMPLATE|workflows/(?!run_tests)))' -qvP
+ shell: bash -euxo pipefail {0}
+ outputs:
+ run_action_checks: ${{ steps.filter.outputs.run_action_checks }}
+ run_docs: ${{ steps.filter.outputs.run_docs }}
+ run_licenses: ${{ steps.filter.outputs.run_licenses }}
+ run_nix: ${{ steps.filter.outputs.run_nix }}
+ run_tests: ${{ steps.filter.outputs.run_tests }}
+ check_style:
+ if: github.repository_owner == 'zed-industries'
+ runs-on: namespace-profile-4x8-ubuntu-2204
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_pnpm
+ uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
+ with:
+ version: '9'
+ - name: ./script/prettier
+ run: ./script/prettier
+ shell: bash -euxo pipefail {0}
+ - name: ./script/check-todos
+ run: ./script/check-todos
+ shell: bash -euxo pipefail {0}
+ - name: ./script/check-keymaps
+ run: ./script/check-keymaps
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_style::check_for_typos
+ uses: crate-ci/typos@80c8a4945eec0f6d464eaf9e65ed98ef085283d1
+ with:
+ config: ./typos.toml
+ - name: steps::cargo_fmt
+ run: cargo fmt --all -- --check
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ run_tests_windows:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: self-32vcpu-windows-2022
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ New-Item -ItemType Directory -Path "./../.cargo" -Force
+ Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
+ shell: pwsh
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::clippy
+ run: ./script/clippy.ps1
+ shell: pwsh
+ - name: steps::cargo_install_nextest
+ run: cargo install cargo-nextest --locked
+ shell: pwsh
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than.ps1 250
+ shell: pwsh
+ - name: steps::cargo_nextest
+ run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
+ shell: pwsh
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
+ shell: pwsh
+ timeout-minutes: 60
+ run_tests_linux:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: namespace-profile-16x32-ubuntu-2204
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+ shell: bash -euxo pipefail {0}
+ - name: steps::setup_linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::install_mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::clippy
+ run: ./script/clippy
+ shell: bash -euxo pipefail {0}
+ - name: steps::cargo_install_nextest
+ run: cargo install cargo-nextest --locked
+ shell: bash -euxo pipefail {0}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 100
+ shell: bash -euxo pipefail {0}
+ - name: steps::cargo_nextest
+ run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
+ shell: bash -euxo pipefail {0}
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ rm -rf ./../.cargo
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ run_tests_mac:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: self-mini-macos
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+ shell: bash -euxo pipefail {0}
+ - name: steps::setup_node
+ uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ with:
+ node-version: '20'
+ - name: steps::clippy
+ run: ./script/clippy
+ shell: bash -euxo pipefail {0}
+ - name: steps::cargo_install_nextest
+ run: cargo install cargo-nextest --locked
+ shell: bash -euxo pipefail {0}
+ - name: steps::clear_target_dir_if_large
+ run: ./script/clear-target-dir-if-larger-than 300
+ shell: bash -euxo pipefail {0}
+ - name: steps::cargo_nextest
+ run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
+ shell: bash -euxo pipefail {0}
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ rm -rf ./../.cargo
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ doctests:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: namespace-profile-16x32-ubuntu-2204
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::cache_rust_dependencies
+ uses: swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6
+ with:
+ save-if: ${{ github.ref == 'refs/heads/main' }}
+ - name: steps::setup_linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::install_mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: steps::setup_cargo_config
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+ shell: bash -euxo pipefail {0}
+ - id: run_doctests
+ name: run_tests::doctests::run_doctests
+ run: |
+ cargo test --workspace --doc --no-fail-fast
+ shell: bash -euxo pipefail {0}
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ rm -rf ./../.cargo
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ check_workspace_binaries:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: namespace-profile-8x16-ubuntu-2204
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+ shell: bash -euxo pipefail {0}
+ - name: steps::setup_linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::install_mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: cargo build -p collab
+ run: cargo build -p collab
+ shell: bash -euxo pipefail {0}
+ - name: cargo build --workspace --bins --examples
+ run: cargo build --workspace --bins --examples
+ shell: bash -euxo pipefail {0}
+ - name: steps::cleanup_cargo_config
+ if: always()
+ run: |
+ rm -rf ./../.cargo
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ check_postgres_and_protobuf_migrations:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: self-mini-macos
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ fetch-depth: 0
+ - name: run_tests::check_postgres_and_protobuf_migrations::remove_untracked_files
+ run: git clean -df
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_postgres_and_protobuf_migrations::ensure_fresh_merge
+ run: |
+ if [ -z "$GITHUB_BASE_REF" ];
+ then
+ echo "BUF_BASE_BRANCH=$(git merge-base origin/main HEAD)" >> "$GITHUB_ENV"
+ else
+ git checkout -B temp
+ git merge -q "origin/$GITHUB_BASE_REF" -m "merge main into temp"
+ echo "BUF_BASE_BRANCH=$GITHUB_BASE_REF" >> "$GITHUB_ENV"
+ fi
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_setup_action
+ uses: bufbuild/buf-setup-action@v1
+ with:
+ version: v1.29.0
+ - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_breaking_action
+ uses: bufbuild/buf-breaking-action@v1
+ with:
+ input: crates/proto/proto/
+ against: https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/
+ timeout-minutes: 60
+ check_dependencies:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_tests == 'true'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: run_tests::check_dependencies::install_cargo_machete
+ uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
+ with:
+ command: install
+ args: cargo-machete@0.7.0
+ - name: run_tests::check_dependencies::run_cargo_machete
+ uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
+ with:
+ command: machete
+ - name: run_tests::check_dependencies::check_cargo_lock
+ run: cargo update --locked --workspace
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_dependencies::check_vulnerable_dependencies
+ if: github.event_name == 'pull_request'
+ uses: actions/dependency-review-action@67d4f4bd7a9b17a0db54d2a7519187c65e339de8
+ with:
+ license-check: false
+ timeout-minutes: 60
+ check_docs:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_docs == 'true'
+ runs-on: namespace-profile-8x16-ubuntu-2204
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: steps::setup_cargo_config
+ run: |
+ mkdir -p ./../.cargo
+ cp ./.cargo/ci-config.toml ./../.cargo/config.toml
+ shell: bash -euxo pipefail {0}
+ - name: steps::cache_rust_dependencies
+ uses: swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6
+ with:
+ save-if: ${{ github.ref == 'refs/heads/main' }}
+ - name: run_tests::check_docs::lychee_link_check
+ uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
+ with:
+ args: --no-progress --exclude '^http' './docs/src/**/*'
+ fail: true
+ jobSummary: false
+ - name: steps::setup_linux
+ run: ./script/linux
+ shell: bash -euxo pipefail {0}
+ - name: steps::install_mold
+ run: ./script/install-mold
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_docs::install_mdbook
+ uses: peaceiris/actions-mdbook@ee69d230fe19748b7abf22df32acaa93833fad08
+ with:
+ mdbook-version: 0.4.37
+ - name: run_tests::check_docs::build_docs
+ run: |
+ mkdir -p target/deploy
+ mdbook build ./docs --dest-dir=../target/deploy/docs/
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_docs::lychee_link_check
+ uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
+ with:
+ args: --no-progress --exclude '^http' 'target/deploy/docs'
+ fail: true
+ jobSummary: false
+ timeout-minutes: 60
+ check_licenses:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_licenses == 'true'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: ./script/check-licenses
+ run: ./script/check-licenses
+ shell: bash -euxo pipefail {0}
+ - name: ./script/generate-licenses
+ run: ./script/generate-licenses
+ shell: bash -euxo pipefail {0}
+ check_scripts:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_action_checks == 'true'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: run_tests::check_scripts::run_shellcheck
+ run: ./script/shellcheck-scripts error
+ shell: bash -euxo pipefail {0}
+ - id: get_actionlint
+ name: run_tests::check_scripts::download_actionlint
+ run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_scripts::run_actionlint
+ run: |
+ ${{ steps.get_actionlint.outputs.executable }} -color
+ shell: bash -euxo pipefail {0}
+ - name: run_tests::check_scripts::check_xtask_workflows
+ run: |
+ cargo xtask workflows
+ if ! git diff --exit-code .github; then
+ echo "Error: .github directory has uncommitted changes after running 'cargo xtask workflows'"
+ echo "Please run 'cargo xtask workflows' locally and commit the changes"
+ exit 1
+ fi
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ build_nix_linux_x86_64:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_nix == 'true'
+ runs-on: namespace-profile-32x64-ubuntu-2004
+ env:
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+ ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
+ GIT_LFS_SKIP_SMUDGE: '1'
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: nix_build::install_nix
+ uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
+ with:
+ github_access_token: ${{ secrets.GITHUB_TOKEN }}
+ - name: nix_build::cachix_action
+ uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
+ with:
+ name: zed
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+ cachixArgs: -v
+ pushFilter: -zed-editor-[0-9.]*-nightly
+ - name: nix_build::build
+ run: nix build .#debug -L --accept-flake-config
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ continue-on-error: true
+ build_nix_mac_aarch64:
+ needs:
+ - orchestrate
+ if: needs.orchestrate.outputs.run_nix == 'true'
+ runs-on: self-mini-macos
+ env:
+ ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
+ ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
+ ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
+ GIT_LFS_SKIP_SMUDGE: '1'
+ steps:
+ - name: steps::checkout_repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
+ with:
+ clean: false
+ - name: nix_build::set_path
+ run: |
+ echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
+ echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
+ shell: bash -euxo pipefail {0}
+ - name: nix_build::cachix_action
+ uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
+ with:
+ name: zed
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
+ cachixArgs: -v
+ pushFilter: -zed-editor-[0-9.]*-nightly
+ - name: nix_build::build
+ run: nix build .#debug -L --accept-flake-config
+ shell: bash -euxo pipefail {0}
+ - name: nix_build::limit_store
+ run: |-
+ if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
+ nix-collect-garbage -d || true
+ fi
+ shell: bash -euxo pipefail {0}
+ timeout-minutes: 60
+ continue-on-error: true
+ tests_pass:
+ needs:
+ - orchestrate
+ - check_style
+ - run_tests_windows
+ - run_tests_linux
+ - run_tests_mac
+ - doctests
+ - check_workspace_binaries
+ - check_postgres_and_protobuf_migrations
+ - check_dependencies
+ - check_docs
+ - check_licenses
+ - check_scripts
+ - build_nix_linux_x86_64
+ - build_nix_mac_aarch64
+ if: github.repository_owner == 'zed-industries' && always()
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ steps:
+ - name: run_tests::tests_pass
+ run: |
+ set +x
+ EXIT_CODE=0
+
+ check_result() {
+ echo "* $1: $2"
+ if [[ "$2" != "skipped" && "$2" != "success" ]]; then EXIT_CODE=1; fi
+ }
+
+ check_result "orchestrate" "${{ needs.orchestrate.result }}"
+ check_result "check_style" "${{ needs.check_style.result }}"
+ check_result "run_tests_windows" "${{ needs.run_tests_windows.result }}"
+ check_result "run_tests_linux" "${{ needs.run_tests_linux.result }}"
+ check_result "run_tests_mac" "${{ needs.run_tests_mac.result }}"
+ check_result "doctests" "${{ needs.doctests.result }}"
+ check_result "check_workspace_binaries" "${{ needs.check_workspace_binaries.result }}"
+ check_result "check_postgres_and_protobuf_migrations" "${{ needs.check_postgres_and_protobuf_migrations.result }}"
+ check_result "check_dependencies" "${{ needs.check_dependencies.result }}"
+ check_result "check_docs" "${{ needs.check_docs.result }}"
+ check_result "check_licenses" "${{ needs.check_licenses.result }}"
+ check_result "check_scripts" "${{ needs.check_scripts.result }}"
+ check_result "build_nix_linux_x86_64" "${{ needs.build_nix_linux_x86_64.result }}"
+ check_result "build_nix_mac_aarch64" "${{ needs.build_nix_mac_aarch64.result }}"
+
+ exit $EXIT_CODE
+ shell: bash -euxo pipefail {0}
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
+ cancel-in-progress: true
diff --git a/.github/workflows/script_checks.yml b/.github/workflows/script_checks.yml
deleted file mode 100644
index c32a433e46a6fc5381fa1abbe19b2814fe423c1d..0000000000000000000000000000000000000000
--- a/.github/workflows/script_checks.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Script
-
-on:
- pull_request:
- paths:
- - "script/**"
- push:
- branches:
- - main
-
-jobs:
- shellcheck:
- name: "ShellCheck Scripts"
- if: github.repository_owner == 'zed-industries'
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- - name: Shellcheck ./scripts
- run: |
- ./script/shellcheck-scripts error
diff --git a/.github/workflows/unit_evals.yml b/.github/workflows/unit_evals.yml
index c03cf8b087188f3e10a298e52a8278e63765c4f0..53ed33a1af300d6b641b3b9430de0bb6846b27cc 100644
--- a/.github/workflows/unit_evals.yml
+++ b/.github/workflows/unit_evals.yml
@@ -63,7 +63,7 @@ jobs:
- name: Run unit evals
shell: bash -euxo pipefail {0}
- run: cargo nextest run --workspace --no-fail-fast --features eval --no-capture -E 'test(::eval_)'
+ run: cargo nextest run --workspace --no-fail-fast --features unit-eval --no-capture -E 'test(::eval_)'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
diff --git a/.gitignore b/.gitignore
index 7b40c45adf614eb91f1676144e7b70a7b2a373f2..2a91a65b6eaef906681bf3f6e315de07b094c4b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,10 +20,12 @@
.venv
.vscode
.wrangler
+.perf-runs
/assets/*licenses.*
/crates/collab/seed.json
/crates/theme/schemas/theme.json
/crates/zed/resources/flatpak/flatpak-cargo-sources.json
+/crates/project_panel/benches/linux_repo_snapshot.txt
/dev.zed.Zed*.json
/node_modules/
/plugins/bin
diff --git a/.rules b/.rules
index da009f1877b4c6ef2f0613995391852d4bf1dc8a..82d15eb9e88299ee7c7fe6c717b2da2646e676a7 100644
--- a/.rules
+++ b/.rules
@@ -12,6 +12,19 @@
- Example: avoid `let _ = client.request(...).await?;` - use `client.request(...).await?;` instead
* When implementing async operations that may fail, ensure errors propagate to the UI layer so users get meaningful feedback.
* Never create files with `mod.rs` paths - prefer `src/some_module.rs` instead of `src/some_module/mod.rs`.
+* When creating new crates, prefer specifying the library root path in `Cargo.toml` using `[lib] path = "...rs"` instead of the default `lib.rs`, to maintain consistent and descriptive naming (e.g., `gpui.rs` or `main.rs`).
+* Avoid creative additions unless explicitly requested
+* Use full words for variable names (no abbreviations like "q" for "queue")
+* Use variable shadowing to scope clones in async contexts for clarity, minimizing the lifetime of borrowed references.
+ Example:
+ ```rust
+ executor.spawn({
+ let task_ran = task_ran.clone();
+ async move {
+ *task_ran.borrow_mut() = true;
+ }
+ });
+ ```
# GPUI
@@ -46,7 +59,7 @@ Trying to update an entity while it's already being updated must be avoided as t
When `read_with`, `update`, or `update_in` are used with an async context, the closure's return value is wrapped in an `anyhow::Result`.
-`WeakEntity` is a weak handle. It has `read_with`, `update`, and `update_in` methods that work the same, but always return an `anyhow::Result` so that they can fail if the entity no longer exists. This can be useful to avoid memory leaks - if entities have mutually recursive handles to eachother they will never be dropped.
+`WeakEntity` is a weak handle. It has `read_with`, `update`, and `update_in` methods that work the same, but always return an `anyhow::Result` so that they can fail if the entity no longer exists. This can be useful to avoid memory leaks - if entities have mutually recursive handles to each other they will never be dropped.
## Concurrency
diff --git a/.zed/settings.json b/.zed/settings.json
index 68e05a426f2474cb663aa5ff843905f375170e0f..2760be95819e9340acf55f60616a9c22105ff52a 100644
--- a/.zed/settings.json
+++ b/.zed/settings.json
@@ -48,7 +48,7 @@
"remove_trailing_whitespace_on_save": true,
"ensure_final_newline_on_save": true,
"file_scan_exclusions": [
- "crates/assistant_tools/src/edit_agent/evals/fixtures",
+ "crates/agent/src/edit_agent/evals/fixtures",
"crates/eval/worktrees/",
"crates/eval/repos/",
"**/.git",
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 91b1b75f8292f37b122c152d71fe1e38eeccf817..9cbac4af2b57f0350fa9f5665e110e0d6e7f6341 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,54 +1,76 @@
# Contributing to Zed
-Thanks for your interest in contributing to Zed, the collaborative platform that is also a code editor!
+Thank you for helping us make Zed better!
-All activity in Zed forums is subject to our [Code of Conduct](https://zed.dev/code-of-conduct). Additionally, contributors must sign our [Contributor License Agreement](https://zed.dev/cla) before their contributions can be merged.
+All activity in Zed forums is subject to our [Code of
+Conduct](https://zed.dev/code-of-conduct). Additionally, contributors must sign
+our [Contributor License Agreement](https://zed.dev/cla) before their
+contributions can be merged.
## Contribution ideas
-If you're looking for ideas about what to work on, check out:
+Zed is a large project with a number of priorities. We spend most of
+our time working on what we believe the product needs, but we also love working
+with the community to improve the product in ways we haven't thought of (or had time to get to yet!)
-- Our [public roadmap](https://zed.dev/roadmap) contains a rough outline of our near-term priorities for Zed.
-- Our [top-ranking issues](https://github.com/zed-industries/zed/issues/5393) based on votes by the community.
+In particular we love PRs that are:
-For adding themes or support for a new language to Zed, check out our [docs on developing extensions](https://zed.dev/docs/extensions/developing-extensions).
+- Fixes to existing bugs and issues.
+- Small enhancements to existing features, particularly to make them work for more people.
+- Small extra features, like keybindings or actions you miss from other editors or extensions.
+- Work towards shipping larger features on our roadmap.
-## Proposing changes
+If you're looking for concrete ideas:
-The best way to propose a change is to [start a discussion on our GitHub repository](https://github.com/zed-industries/zed/discussions).
+- Our [top-ranking issues](https://github.com/zed-industries/zed/issues/5393) based on votes by the community.
+- Our [public roadmap](https://zed.dev/roadmap) contains a rough outline of our near-term priorities for Zed.
-First, write a short **problem statement**, which _clearly_ and _briefly_ describes the problem you want to solve independently from any specific solution. It doesn't need to be long or formal, but it's difficult to consider a solution in absence of a clear understanding of the problem.
+## Sending changes
-Next, write a short **solution proposal**. How can the problem (or set of problems) you have stated above be addressed? What are the pros and cons of your approach? Again, keep it brief and informal. This isn't a specification, but rather a starting point for a conversation.
+The Zed culture values working code and synchronous conversations over long
+discussion threads.
-By effectively engaging with the Zed team and community early in your process, we're better positioned to give you feedback and understand your pull request once you open it. If the first thing we see from you is a big changeset, we're much less likely to respond to it in a timely manner.
+The best way to get us to take a look at a proposed change is to send a pull
+request. We will get back to you (though this sometimes takes longer than we'd
+like, sorry).
-## Pair programming
+Although we will take a look, we tend to only merge about half the PRs that are
+submitted. If you'd like your PR to have the best chance of being merged:
-We plan to set aside time each week to pair program with contributors on promising pull requests in Zed. This will be an experiment. We tend to prefer pairing over async code review on our team, and we'd like to see how well it works in an open source setting. If we're finding it difficult to get on the same page with async review, we may ask you to pair with us if you're open to it. The closer a contribution is to the goals outlined in our roadmap, the more likely we'll be to spend time pairing on it.
+- Include a clear description of what you're solving, and why it's important to you.
+- Include tests.
+- If it changes the UI, attach screenshots or screen recordings.
-## Tips to improve the chances of your PR getting reviewed and merged
+The internal advice for reviewers is as follows:
-- Discuss your plans ahead of time with the team
-- Small, focused, incremental pull requests are much easier to review
-- Spend time explaining your changes in the pull request body
-- Add test coverage and documentation
-- Choose tasks that align with our roadmap
-- Pair with us and watch us code to learn the codebase
-- Low effort PRs, such as those that just re-arrange syntax, won't be merged without a compelling justification
+- If the fix/feature is obviously great, and the code is great. Hit merge.
+- If the fix/feature is obviously great, and the code is nearly great. Send PR comments, or offer to pair to get things perfect.
+- If the fix/feature is not obviously great, or the code needs rewriting from scratch. Close the PR with a thank you and some explanation.
-## File icons
+If you need more feedback from us: the best way is to be responsive to
+Github comments, or to offer up time to pair with us.
-Zed's default icon theme consists of icons that are hand-designed to fit together in a cohesive manner.
+If you are making a larger change, or need advice on how to finish the change
+you're making, please open the PR early. We would love to help you get
+things right, and it's often easier to see how to solve a problem before the
+diff gets too big.
-We do not accept PRs for file icons that are just an off-the-shelf SVG taken from somewhere else.
+## Things we will (probably) not merge
-### Adding new icons to the Zed icon theme
+Although there are few hard and fast rules, typically we don't merge:
-If you would like to add a new icon to the Zed icon theme, [open a Discussion](https://github.com/zed-industries/zed/discussions/new?category=ux-and-design) and we can work with you on getting an icon designed and added to Zed.
+- Anything that can be provided by an extension. For example a new language, or theme. For adding themes or support for a new language to Zed, check out our [docs on developing extensions](https://zed.dev/docs/extensions/developing-extensions).
+- New file icons. Zed's default icon theme consists of icons that are hand-designed to fit together in a cohesive manner, please don't submit PRs with off-the-shelf SVGs.
+- Giant refactorings.
+- Non-trivial changes with no tests.
+- Stylistic code changes that do not alter any app logic. Reducing allocations, removing `.unwrap()`s, fixing typos is great; making code "more readable" — maybe not so much.
+- Features where (in our subjective opinion) the extra complexity isn't worth it for the number of people who will benefit.
+- Anything that seems completely AI generated.
## Bird's-eye view of Zed
+We suggest you keep the [Zed glossary](docs/src/development/glossary.md) at your side when starting out. It lists and explains some of the structures and terms you will see throughout the codebase.
+
Zed is made up of several smaller crates - let's go over those you're most likely to interact with:
- [`gpui`](/crates/gpui) is a GPU-accelerated UI framework which provides all of the building blocks for Zed. **We recommend familiarizing yourself with the root level GPUI documentation.**
diff --git a/Cargo.lock b/Cargo.lock
index a4f8c521a1e46b6c312069102bb184e6a5ecbae7..78c972865a4e01ba66357142ff8737b634639b27 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -7,8 +7,8 @@ name = "acp_thread"
version = "0.1.0"
dependencies = [
"action_log",
- "agent",
"agent-client-protocol",
+ "agent_settings",
"anyhow",
"buffer_diff",
"collections",
@@ -20,15 +20,18 @@ dependencies = [
"indoc",
"itertools 0.14.0",
"language",
+ "language_model",
"markdown",
"parking_lot",
+ "portable-pty",
"project",
"prompt_store",
- "rand 0.8.5",
+ "rand 0.9.2",
"serde",
"serde_json",
"settings",
"smol",
+ "task",
"tempfile",
"terminal",
"ui",
@@ -36,7 +39,25 @@ dependencies = [
"util",
"uuid",
"watch",
- "workspace-hack",
+]
+
+[[package]]
+name = "acp_tools"
+version = "0.1.0"
+dependencies = [
+ "agent-client-protocol",
+ "collections",
+ "gpui",
+ "language",
+ "markdown",
+ "project",
+ "serde",
+ "serde_json",
+ "settings",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
]
[[package]]
@@ -55,13 +76,12 @@ dependencies = [
"log",
"pretty_assertions",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"serde_json",
"settings",
"text",
"util",
"watch",
- "workspace-hack",
"zlog",
]
@@ -83,23 +103,22 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
name = "addr2line"
-version = "0.24.2"
+version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
+checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
dependencies = [
- "gimli",
+ "gimli 0.32.3",
]
[[package]]
name = "adler2"
-version = "2.0.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "aes"
@@ -116,78 +135,6 @@ dependencies = [
[[package]]
name = "agent"
version = "0.1.0"
-dependencies = [
- "action_log",
- "agent_settings",
- "anyhow",
- "assistant_context",
- "assistant_tool",
- "assistant_tools",
- "chrono",
- "client",
- "cloud_llm_client",
- "collections",
- "component",
- "context_server",
- "convert_case 0.8.0",
- "feature_flags",
- "fs",
- "futures 0.3.31",
- "git",
- "gpui",
- "heed",
- "http_client",
- "icons",
- "indoc",
- "itertools 0.14.0",
- "language",
- "language_model",
- "log",
- "parking_lot",
- "paths",
- "postage",
- "pretty_assertions",
- "project",
- "prompt_store",
- "rand 0.8.5",
- "ref-cast",
- "rope",
- "schemars",
- "serde",
- "serde_json",
- "settings",
- "smol",
- "sqlez",
- "telemetry",
- "text",
- "theme",
- "thiserror 2.0.12",
- "time",
- "util",
- "uuid",
- "workspace",
- "workspace-hack",
- "zstd",
-]
-
-[[package]]
-name = "agent-client-protocol"
-version = "0.0.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "160971bb53ca0b2e70ebc857c21e24eb448745f1396371015f4c59e9a9e51ed0"
-dependencies = [
- "anyhow",
- "futures 0.3.31",
- "log",
- "parking_lot",
- "schemars",
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "agent2"
-version = "0.1.0"
dependencies = [
"acp_thread",
"action_log",
@@ -195,8 +142,7 @@ dependencies = [
"agent_servers",
"agent_settings",
"anyhow",
- "assistant_tool",
- "assistant_tools",
+ "assistant_text_thread",
"chrono",
"client",
"clock",
@@ -204,10 +150,13 @@ dependencies = [
"collections",
"context_server",
"ctor",
+ "db",
+ "derive_more 0.99.20",
"editor",
"env_logger 0.11.8",
"fs",
"futures 0.3.31",
+ "git",
"gpui",
"gpui_tokio",
"handlebars 4.5.0",
@@ -221,23 +170,31 @@ dependencies = [
"log",
"lsp",
"open",
+ "parking_lot",
"paths",
- "portable-pty",
"pretty_assertions",
"project",
"prompt_store",
+ "rand 0.9.2",
+ "regex",
"reqwest_client",
"rust-embed",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
+ "smallvec",
"smol",
+ "sqlez",
+ "streaming_diff",
+ "strsim",
"task",
+ "telemetry",
"tempfile",
"terminal",
"text",
"theme",
+ "thiserror 2.0.17",
"tree-sitter-rust",
"ui",
"unindent",
@@ -245,10 +202,41 @@ dependencies = [
"uuid",
"watch",
"web_search",
- "which 6.0.3",
- "workspace-hack",
"worktree",
+ "zed_env_vars",
"zlog",
+ "zstd 0.11.2+zstd.1.5.2",
+]
+
+[[package]]
+name = "agent-client-protocol"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525705e39c11cd73f7bc784e3681a9386aa30c8d0630808d3dc2237eb4f9cb1b"
+dependencies = [
+ "agent-client-protocol-schema",
+ "anyhow",
+ "async-broadcast",
+ "async-trait",
+ "derive_more 2.0.1",
+ "futures 0.3.31",
+ "log",
+ "parking_lot",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "agent-client-protocol-schema"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecf16c18fea41282d6bbadd1549a06be6836bddb1893f44a6235f340fa24e2af"
+dependencies = [
+ "anyhow",
+ "derive_more 2.0.1",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
]
[[package]]
@@ -256,37 +244,42 @@ name = "agent_servers"
version = "0.1.0"
dependencies = [
"acp_thread",
+ "acp_tools",
+ "action_log",
"agent-client-protocol",
- "agentic-coding-protocol",
+ "agent_settings",
"anyhow",
+ "async-trait",
+ "client",
"collections",
- "context_server",
"env_logger 0.11.8",
+ "fs",
"futures 0.3.31",
"gpui",
+ "gpui_tokio",
+ "http_client",
"indoc",
- "itertools 0.14.0",
"language",
+ "language_model",
+ "language_models",
"libc",
"log",
"nix 0.29.0",
- "paths",
"project",
- "rand 0.8.5",
- "schemars",
+ "release_channel",
+ "reqwest_client",
"serde",
"serde_json",
"settings",
"smol",
- "strum 0.27.1",
+ "task",
"tempfile",
- "thiserror 2.0.12",
+ "terminal",
+ "thiserror 2.0.17",
"ui",
"util",
"uuid",
"watch",
- "which 6.0.3",
- "workspace-hack",
]
[[package]]
@@ -296,16 +289,18 @@ dependencies = [
"anyhow",
"cloud_llm_client",
"collections",
+ "convert_case 0.8.0",
"fs",
"gpui",
"language_model",
"paths",
- "schemars",
+ "project",
+ "schemars 1.0.4",
"serde",
"serde_json",
"serde_json_lenient",
"settings",
- "workspace-hack",
+ "util",
]
[[package]]
@@ -316,16 +311,14 @@ dependencies = [
"action_log",
"agent",
"agent-client-protocol",
- "agent2",
"agent_servers",
"agent_settings",
"ai_onboarding",
"anyhow",
- "assistant_context",
+ "arrayvec",
"assistant_slash_command",
"assistant_slash_commands",
- "assistant_tool",
- "assistant_tools",
+ "assistant_text_thread",
"audio",
"buffer_diff",
"chrono",
@@ -348,7 +341,6 @@ dependencies = [
"html_to_markdown",
"http_client",
"indoc",
- "inventory",
"itertools 0.14.0",
"jsonschema",
"language",
@@ -365,15 +357,17 @@ dependencies = [
"parking_lot",
"paths",
"picker",
+ "postage",
"pretty_assertions",
"project",
"prompt_store",
"proto",
- "rand 0.8.5",
+ "rand 0.9.2",
+ "ref-cast",
"release_channel",
"rope",
"rules_library",
- "schemars",
+ "schemars 1.0.4",
"search",
"serde",
"serde_json",
@@ -397,55 +391,35 @@ dependencies = [
"url",
"urlencoding",
"util",
- "uuid",
"watch",
"workspace",
- "workspace-hack",
"zed_actions",
]
-[[package]]
-name = "agentic-coding-protocol"
-version = "0.0.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e6ae951b36fa2f8d9dd6e1af6da2fcaba13d7c866cf6a9e65deda9dc6c5fe4"
-dependencies = [
- "anyhow",
- "chrono",
- "derive_more 2.0.1",
- "futures 0.3.31",
- "log",
- "parking_lot",
- "schemars",
- "semver",
- "serde",
- "serde_json",
-]
-
[[package]]
name = "ahash"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"once_cell",
"version_check",
]
[[package]]
name = "ahash"
-version = "0.8.11"
+version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if",
"const-random",
- "getrandom 0.2.15",
+ "getrandom 0.3.4",
"once_cell",
"serde",
"version_check",
- "zerocopy 0.7.35",
+ "zerocopy",
]
[[package]]
@@ -470,17 +444,17 @@ dependencies = [
"smallvec",
"telemetry",
"ui",
- "workspace-hack",
"zed_actions",
]
[[package]]
name = "alacritty_terminal"
-version = "0.25.1-dev"
-source = "git+https://github.com/zed-industries/alacritty.git?branch=add-hush-login-flag#828457c9ff1f7ea0a0469337cc8a37ee3a1b0590"
+version = "0.25.1-rc1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cb5f4f1ef69bdb8b2095ddd14b09dd74ee0303aae8bd5372667a54cff689a1b"
dependencies = [
"base64 0.22.1",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"home",
"libc",
"log",
@@ -488,11 +462,12 @@ dependencies = [
"parking_lot",
"piper",
"polling",
- "regex-automata 0.4.9",
+ "regex-automata",
+ "rustix 1.1.2",
"rustix-openpty",
"serde",
"signal-hook",
- "unicode-width 0.1.14",
+ "unicode-width",
"vte",
"windows-sys 0.59.0",
]
@@ -505,9 +480,27 @@ checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
[[package]]
name = "aligned-vec"
-version = "0.5.0"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b"
+dependencies = [
+ "equator",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
[[package]]
name = "allocator-api2"
@@ -522,7 +515,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43"
dependencies = [
"alsa-sys",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cfg-if",
"libc",
]
@@ -545,23 +538,17 @@ checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b"
[[package]]
name = "ammonia"
-version = "4.1.0"
+version = "4.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ada2ee439075a3e70b6992fce18ac4e407cd05aea9ca3f75d2c0b0c20bbb364"
+checksum = "17e913097e1a2124b46746c980134e8c954bc17a6a59bb3fde96f088d126dde6"
dependencies = [
"cssparser",
- "html5ever 0.31.0",
+ "html5ever 0.35.0",
"maplit",
"tendril",
"url",
]
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
[[package]]
name = "android_system_properties"
version = "0.1.5"
@@ -579,9 +566,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
[[package]]
name = "anstream"
-version = "0.6.18"
+version = "0.6.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -594,37 +581,37 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.10"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
[[package]]
name = "anstyle-parse"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.1.2"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.7"
+version = "3.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
+checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a"
dependencies = [
"anstyle",
- "once_cell",
- "windows-sys 0.59.0",
+ "once_cell_polyfill",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -635,12 +622,12 @@ dependencies = [
"chrono",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "strum 0.27.1",
- "thiserror 2.0.12",
- "workspace-hack",
+ "settings",
+ "strum 0.27.2",
+ "thiserror 2.0.17",
]
[[package]]
@@ -651,9 +638,9 @@ checksum = "34cd60c5e3152cef0a592f1b296f1cc93715d89d2551d85315828c3a09575ff4"
[[package]]
name = "anyhow"
-version = "1.0.98"
+version = "1.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
[[package]]
name = "approx"
@@ -666,15 +653,12 @@ dependencies = [
[[package]]
name = "arbitrary"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
-
-[[package]]
-name = "arc-swap"
-version = "1.7.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
+checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
+dependencies = [
+ "derive_arbitrary",
+]
[[package]]
name = "arg_enum_proc_macro"
@@ -684,9 +668,24 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "argminmax"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70f13d10a41ac8d2ec79ee34178d61e6f47a29c2edfe7ef1721c7383b0359e65"
+dependencies = [
+ "num-traits",
]
+[[package]]
+name = "array-init-cursor"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed51fe0f224d1d4ea768be38c51f9f831dee9d05c163c11fba0b8c44387b1fc3"
+
[[package]]
name = "arraydeque"
version = "0.5.1"
@@ -751,7 +750,28 @@ dependencies = [
"enumflags2",
"futures-channel",
"futures-util",
- "rand 0.9.1",
+ "rand 0.9.2",
+ "serde",
+ "serde_repr",
+ "url",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols 0.32.9",
+ "zbus",
+]
+
+[[package]]
+name = "ashpd"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0986d5b4f0802160191ad75f8d33ada000558757db3defb70299ca95d9fcbd"
+dependencies = [
+ "async-fs",
+ "async-net",
+ "enumflags2",
+ "futures-channel",
+ "futures-util",
+ "rand 0.9.2",
"serde",
"serde_repr",
"url",
@@ -765,12 +785,13 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"gpui",
+ "log",
"net",
- "parking_lot",
"smol",
"tempfile",
"util",
- "workspace-hack",
+ "windows 0.61.3",
+ "zeroize",
]
[[package]]
@@ -780,76 +801,28 @@ dependencies = [
"anyhow",
"gpui",
"rust-embed",
- "workspace-hack",
]
[[package]]
-name = "assistant_context"
+name = "assistant_slash_command"
version = "0.1.0"
dependencies = [
- "agent_settings",
"anyhow",
- "assistant_slash_command",
- "assistant_slash_commands",
- "chrono",
- "client",
- "clock",
- "cloud_llm_client",
+ "async-trait",
"collections",
- "context_server",
- "fs",
+ "derive_more 0.99.20",
+ "extension",
"futures 0.3.31",
- "fuzzy",
"gpui",
- "indoc",
"language",
"language_model",
- "log",
- "open_ai",
"parking_lot",
- "paths",
"pretty_assertions",
- "project",
- "prompt_store",
- "proto",
- "rand 0.8.5",
- "regex",
- "rpc",
"serde",
"serde_json",
- "settings",
- "smallvec",
- "smol",
- "telemetry_events",
- "text",
"ui",
- "unindent",
"util",
- "uuid",
- "workspace",
- "workspace-hack",
-]
-
-[[package]]
-name = "assistant_slash_command"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "async-trait",
- "collections",
- "derive_more 0.99.19",
- "extension",
- "futures 0.3.31",
- "gpui",
- "language",
- "language_model",
- "parking_lot",
- "pretty_assertions",
- "serde",
- "serde_json",
- "ui",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -858,7 +831,6 @@ version = "0.1.0"
dependencies = [
"anyhow",
"assistant_slash_command",
- "cargo_toml",
"chrono",
"collections",
"context_server",
@@ -881,114 +853,58 @@ dependencies = [
"settings",
"smol",
"text",
- "toml 0.8.20",
"ui",
"util",
"workspace",
- "workspace-hack",
"worktree",
"zlog",
]
[[package]]
-name = "assistant_tool"
-version = "0.1.0"
-dependencies = [
- "action_log",
- "anyhow",
- "buffer_diff",
- "clock",
- "collections",
- "ctor",
- "derive_more 0.99.19",
- "gpui",
- "icons",
- "indoc",
- "language",
- "language_model",
- "log",
- "parking_lot",
- "pretty_assertions",
- "project",
- "rand 0.8.5",
- "regex",
- "serde",
- "serde_json",
- "settings",
- "text",
- "util",
- "workspace",
- "workspace-hack",
- "zlog",
-]
-
-[[package]]
-name = "assistant_tools"
+name = "assistant_text_thread"
version = "0.1.0"
dependencies = [
- "action_log",
"agent_settings",
"anyhow",
- "assistant_tool",
- "buffer_diff",
+ "assistant_slash_command",
+ "assistant_slash_commands",
"chrono",
"client",
"clock",
"cloud_llm_client",
"collections",
- "component",
- "derive_more 0.99.19",
- "diffy",
- "editor",
- "feature_flags",
+ "context_server",
"fs",
"futures 0.3.31",
+ "fuzzy",
"gpui",
- "gpui_tokio",
- "handlebars 4.5.0",
- "html_to_markdown",
- "http_client",
"indoc",
- "itertools 0.14.0",
"language",
"language_model",
- "language_models",
"log",
- "lsp",
- "markdown",
- "open",
+ "open_ai",
+ "parking_lot",
"paths",
- "portable-pty",
"pretty_assertions",
"project",
"prompt_store",
- "rand 0.8.5",
+ "proto",
+ "rand 0.9.2",
"regex",
- "reqwest_client",
- "rust-embed",
- "schemars",
+ "rpc",
"serde",
"serde_json",
"settings",
"smallvec",
"smol",
- "streaming_diff",
- "strsim",
- "task",
- "tempfile",
- "terminal",
- "terminal_view",
- "theme",
- "tree-sitter-rust",
+ "telemetry_events",
+ "text",
"ui",
"unindent",
"util",
- "watch",
- "web_search",
- "which 6.0.3",
+ "uuid",
"workspace",
- "workspace-hack",
- "zlog",
+ "zed_env_vars",
]
[[package]]
@@ -1007,7 +923,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
dependencies = [
- "event-listener 5.4.0",
+ "event-listener 5.4.1",
"event-listener-strategy",
"futures-core",
"pin-project-lite",
@@ -1026,9 +942,9 @@ dependencies = [
[[package]]
name = "async-channel"
-version = "2.3.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
dependencies = [
"concurrent-queue",
"event-listener-strategy",
@@ -1038,9 +954,9 @@ dependencies = [
[[package]]
name = "async-compat"
-version = "0.2.4"
+version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7bab94bde396a3f7b4962e396fdad640e241ed797d4d8d77fc8c237d14c58fc0"
+checksum = "a1ba85bc55464dcbf728b56d97e119d673f4cf9062be330a9a26f3acf504a590"
dependencies = [
"futures-core",
"futures-io",
@@ -1051,15 +967,14 @@ dependencies = [
[[package]]
name = "async-compression"
-version = "0.4.22"
+version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64"
+checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0"
dependencies = [
- "deflate64",
- "flate2",
+ "compression-codecs",
+ "compression-core",
"futures-core",
"futures-io",
- "memchr",
"pin-project-lite",
]
@@ -1075,26 +990,27 @@ dependencies = [
[[package]]
name = "async-executor"
-version = "1.13.1"
+version = "1.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
+checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
dependencies = [
"async-task",
"concurrent-queue",
"fastrand 2.3.0",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
+ "pin-project-lite",
"slab",
]
[[package]]
name = "async-fs"
-version = "2.1.2"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a"
+checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5"
dependencies = [
- "async-lock",
+ "async-lock 3.4.1",
"blocking",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
]
[[package]]
@@ -1103,41 +1019,49 @@ version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c"
dependencies = [
- "async-channel 2.3.1",
+ "async-channel 2.5.0",
"async-executor",
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"blocking",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"once_cell",
]
[[package]]
name = "async-io"
-version = "2.4.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059"
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
dependencies = [
- "async-lock",
+ "autocfg",
"cfg-if",
"concurrent-queue",
"futures-io",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"parking",
"polling",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"slab",
- "tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "async-lock"
-version = "3.4.0"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+dependencies = [
+ "event-listener 2.5.3",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc"
dependencies = [
- "event-listener 5.4.0",
+ "event-listener 5.4.1",
"event-listener-strategy",
"pin-project-lite",
]
@@ -1150,7 +1074,7 @@ checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7"
dependencies = [
"async-io",
"blocking",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
]
[[package]]
@@ -1164,21 +1088,20 @@ dependencies = [
[[package]]
name = "async-process"
-version = "2.3.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb"
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
dependencies = [
- "async-channel 2.3.1",
+ "async-channel 2.5.0",
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"async-signal",
"async-task",
"blocking",
"cfg-if",
- "event-listener 5.4.0",
- "futures-lite 2.6.0",
- "rustix 0.38.44",
- "tracing",
+ "event-listener 5.4.1",
+ "futures-lite 2.6.1",
+ "rustix 1.1.2",
]
[[package]]
@@ -1189,44 +1112,44 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "async-signal"
-version = "0.2.10"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3"
+checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
dependencies = [
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"atomic-waker",
"cfg-if",
"futures-core",
"futures-io",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"signal-hook-registry",
"slab",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "async-std"
-version = "1.13.1"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24"
+checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b"
dependencies = [
"async-attributes",
"async-channel 1.9.0",
"async-global-executor",
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"async-process",
"crossbeam-utils",
"futures-channel",
"futures-core",
"futures-io",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"gloo-timers",
"kv-log-macro",
"log",
@@ -1257,14 +1180,14 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "async-tar"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a42f905d4f623faf634bbd1e001e84e0efc24694afa64be9ad239bf6ca49e1f8"
+checksum = "d1937db2d56578aa3919b9bdb0e5100693fd7d1c0f145c53eb81fbb03e217550"
dependencies = [
"async-std",
"filetime",
@@ -1288,14 +1211,14 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "async-tungstenite"
-version = "0.29.1"
+version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef0f7efedeac57d9b26170f72965ecfd31473ca52ca7a64e925b0b6f5f079886"
+checksum = "ee88b4c88ac8c9ea446ad43498955750a4bbe64c4392f21ccfe5d952865e318f"
dependencies = [
"atomic-waker",
"futures-core",
@@ -1307,7 +1230,7 @@ dependencies = [
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.2",
- "tungstenite 0.26.2",
+ "tungstenite 0.27.0",
]
[[package]]
@@ -1318,7 +1241,7 @@ checksum = "00b9f7252833d5ed4b00aa9604b563529dd5e11de9c23615de2dcdf91eb87b52"
dependencies = [
"async-compression",
"crc32fast",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"pin-project",
"thiserror 1.0.69",
]
@@ -1345,6 +1268,15 @@ dependencies = [
"num-traits",
]
+[[package]]
+name = "atoi_simd"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a49e05797ca52e312a0c658938b7d00693ef037799ef7187678f212d7684cf"
+dependencies = [
+ "debug_unsafe",
+]
+
[[package]]
name = "atomic"
version = "0.5.3"
@@ -1362,13 +1294,20 @@ name = "audio"
version = "0.1.0"
dependencies = [
"anyhow",
+ "async-tar",
"collections",
- "derive_more 0.99.19",
+ "crossbeam",
+ "denoise",
"gpui",
+ "libwebrtc",
+ "log",
"parking_lot",
"rodio",
+ "serde",
+ "settings",
+ "smol",
+ "thiserror 2.0.17",
"util",
- "workspace-hack",
]
[[package]]
@@ -1395,7 +1334,6 @@ dependencies = [
"log",
"paths",
"release_channel",
- "schemars",
"serde",
"serde_json",
"settings",
@@ -1403,7 +1341,6 @@ dependencies = [
"tempfile",
"which 6.0.3",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -1413,9 +1350,8 @@ dependencies = [
"anyhow",
"log",
"simplelog",
- "windows 0.61.1",
+ "windows 0.61.3",
"winresource",
- "workspace-hack",
]
[[package]]
@@ -1435,20 +1371,19 @@ dependencies = [
"smol",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
name = "autocfg"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "av1-grain"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
+checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8"
dependencies = [
"anyhow",
"arrayvec",
@@ -1460,18 +1395,18 @@ dependencies = [
[[package]]
name = "avif-serialize"
-version = "0.8.3"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e"
+checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f"
dependencies = [
"arrayvec",
]
[[package]]
name = "aws-config"
-version = "1.6.1"
+version = "1.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c39646d1a6b51240a1a23bb57ea4eebede7e16fbc237fdc876980233dcecb4f"
+checksum = "37cf2b6af2a95a20e266782b4f76f1a5e12bf412a9db2de9c1e9123b9d8c0ad8"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1499,9 +1434,9 @@ dependencies = [
[[package]]
name = "aws-credential-types"
-version = "1.2.2"
+version = "1.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4471bef4c22a06d2c7a1b6492493d3fdf24a805323109d6874f9c94d5906ac14"
+checksum = "faf26925f4a5b59eb76722b63c2892b1d70d06fa053c72e4a100ec308c1d47bc"
dependencies = [
"aws-smithy-async",
"aws-smithy-runtime-api",
@@ -1511,9 +1446,9 @@ dependencies = [
[[package]]
name = "aws-lc-rs"
-version = "1.13.1"
+version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7"
+checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d"
dependencies = [
"aws-lc-sys",
"zeroize",
@@ -1521,11 +1456,11 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
-version = "0.29.0"
+version = "0.32.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079"
+checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c"
dependencies = [
- "bindgen 0.69.5",
+ "bindgen 0.72.1",
"cc",
"cmake",
"dunce",
@@ -1534,9 +1469,9 @@ dependencies = [
[[package]]
name = "aws-runtime"
-version = "1.5.6"
+version = "1.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0aff45ffe35196e593ea3b9dd65b320e51e2dda95aff4390bc459e461d09c6ad"
+checksum = "bfa006bb32360ed90ac51203feafb9d02e3d21046e1fd3a450a404b90ea73e5d"
dependencies = [
"aws-credential-types",
"aws-sigv4",
@@ -1551,7 +1486,6 @@ dependencies = [
"fastrand 2.3.0",
"http 0.2.12",
"http-body 0.4.6",
- "once_cell",
"percent-encoding",
"pin-project-lite",
"tracing",
@@ -1560,9 +1494,9 @@ dependencies = [
[[package]]
name = "aws-sdk-bedrockruntime"
-version = "1.82.0"
+version = "1.109.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cb95f77abd4321348dd2f52a25e1de199732f54d2a35860ad20f5df21c66b44"
+checksum = "fbfdfd941dcb253c17bf70baddbf1e5b22f19e29d313d2e049bad4b1dadb2011"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1579,16 +1513,15 @@ dependencies = [
"fastrand 2.3.0",
"http 0.2.12",
"hyper 0.14.32",
- "once_cell",
"regex-lite",
"tracing",
]
[[package]]
name = "aws-sdk-kinesis"
-version = "1.66.0"
+version = "1.91.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e43e5fb05c78cdad4fef5be4503465e4b42292f472fc991823ea4c50078208e4"
+checksum = "699a3d645a2ab5cb12ca02eb23979753953414429fd6584ea8841af6bc4e0516"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1603,16 +1536,15 @@ dependencies = [
"bytes 1.10.1",
"fastrand 2.3.0",
"http 0.2.12",
- "once_cell",
"regex-lite",
"tracing",
]
[[package]]
name = "aws-sdk-s3"
-version = "1.82.0"
+version = "1.108.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6eab2900764411ab01c8e91a76fd11a63b4e12bc3da97d9e14a0ce1343d86d3"
+checksum = "200be4aed61e3c0669f7268bacb768f283f1c32a7014ce57225e1160be2f6ccb"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1635,7 +1567,6 @@ dependencies = [
"http 1.3.1",
"http-body 0.4.6",
"lru",
- "once_cell",
"percent-encoding",
"regex-lite",
"sha2",
@@ -1645,9 +1576,9 @@ dependencies = [
[[package]]
name = "aws-sdk-sso"
-version = "1.64.0"
+version = "1.86.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02d4bdb0e5f80f0689e61c77ab678b2b9304af329616af38aef5b6b967b8e736"
+checksum = "4a0abbfab841446cce6e87af853a3ba2cc1bc9afcd3f3550dd556c43d434c86d"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1661,16 +1592,15 @@ dependencies = [
"bytes 1.10.1",
"fastrand 2.3.0",
"http 0.2.12",
- "once_cell",
"regex-lite",
"tracing",
]
[[package]]
name = "aws-sdk-ssooidc"
-version = "1.65.0"
+version = "1.88.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbbb3ce8da257aedbccdcb1aadafbbb6a5fe9adf445db0e1ea897bdc7e22d08"
+checksum = "9a68d675582afea0e94d38b6ca9c5aaae4ca14f1d36faa6edb19b42e687e70d7"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1684,16 +1614,15 @@ dependencies = [
"bytes 1.10.1",
"fastrand 2.3.0",
"http 0.2.12",
- "once_cell",
"regex-lite",
"tracing",
]
[[package]]
name = "aws-sdk-sts"
-version = "1.65.0"
+version = "1.88.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a78a8f50a1630db757b60f679c8226a8a70ee2ab5f5e6e51dc67f6c61c7cfd"
+checksum = "d30990923f4f675523c51eb1c0dec9b752fb267b36a61e83cbc219c9d86da715"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -1708,16 +1637,15 @@ dependencies = [
"aws-types",
"fastrand 2.3.0",
"http 0.2.12",
- "once_cell",
"regex-lite",
"tracing",
]
[[package]]
name = "aws-sigv4"
-version = "1.3.0"
+version = "1.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69d03c3c05ff80d54ff860fe38c726f6f494c639ae975203a101335f223386db"
+checksum = "bffc03068fbb9c8dd5ce1c6fb240678a5cffb86fb2b7b1985c999c4b83c8df68"
dependencies = [
"aws-credential-types",
"aws-smithy-eventstream",
@@ -1731,7 +1659,6 @@ dependencies = [
"hmac",
"http 0.2.12",
"http 1.3.1",
- "once_cell",
"p256",
"percent-encoding",
"ring",
@@ -1744,9 +1671,9 @@ dependencies = [
[[package]]
name = "aws-smithy-async"
-version = "1.2.5"
+version = "1.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c"
+checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c"
dependencies = [
"futures-util",
"pin-project-lite",
@@ -1755,16 +1682,14 @@ dependencies = [
[[package]]
name = "aws-smithy-checksums"
-version = "0.63.1"
+version = "0.63.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b65d21e1ba6f2cdec92044f904356a19f5ad86961acf015741106cdfafd747c0"
+checksum = "165d8583d8d906e2fb5511d29201d447cc710864f075debcdd9c31c265412806"
dependencies = [
"aws-smithy-http",
"aws-smithy-types",
"bytes 1.10.1",
- "crc32c",
- "crc32fast",
- "crc64fast-nvme",
+ "crc-fast",
"hex",
"http 0.2.12",
"http-body 0.4.6",
@@ -1777,9 +1702,9 @@ dependencies = [
[[package]]
name = "aws-smithy-eventstream"
-version = "0.60.8"
+version = "0.60.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c45d3dddac16c5c59d553ece225a88870cf81b7b813c9cc17b78cf4685eac7a"
+checksum = "9656b85088f8d9dc7ad40f9a6c7228e1e8447cdf4b046c87e152e0805dea02fa"
dependencies = [
"aws-smithy-types",
"bytes 1.10.1",
@@ -1788,9 +1713,9 @@ dependencies = [
[[package]]
name = "aws-smithy-http"
-version = "0.62.0"
+version = "0.62.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5949124d11e538ca21142d1fba61ab0a2a2c1bc3ed323cdb3e4b878bfb83166"
+checksum = "3feafd437c763db26aa04e0cc7591185d0961e64c61885bece0fb9d50ceac671"
dependencies = [
"aws-smithy-eventstream",
"aws-smithy-runtime-api",
@@ -1801,7 +1726,6 @@ dependencies = [
"http 0.2.12",
"http 1.3.1",
"http-body 0.4.6",
- "once_cell",
"percent-encoding",
"pin-project-lite",
"pin-utils",
@@ -1810,56 +1734,57 @@ dependencies = [
[[package]]
name = "aws-smithy-http-client"
-version = "1.0.1"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8aff1159006441d02e57204bf57a1b890ba68bedb6904ffd2873c1c4c11c546b"
+checksum = "1053b5e587e6fa40ce5a79ea27957b04ba660baa02b28b7436f64850152234f1"
dependencies = [
"aws-smithy-async",
"aws-smithy-runtime-api",
"aws-smithy-types",
- "h2 0.4.9",
+ "h2 0.3.27",
+ "h2 0.4.12",
"http 0.2.12",
"http 1.3.1",
"http-body 0.4.6",
"hyper 0.14.32",
- "hyper 1.6.0",
+ "hyper 1.7.0",
"hyper-rustls 0.24.2",
- "hyper-rustls 0.27.5",
+ "hyper-rustls 0.27.7",
"hyper-util",
"pin-project-lite",
"rustls 0.21.12",
- "rustls 0.23.26",
- "rustls-native-certs 0.8.1",
+ "rustls 0.23.33",
+ "rustls-native-certs 0.8.2",
"rustls-pki-types",
"tokio",
+ "tokio-rustls 0.26.2",
"tower 0.5.2",
"tracing",
]
[[package]]
name = "aws-smithy-json"
-version = "0.61.3"
+version = "0.61.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92144e45819cae7dc62af23eac5a038a58aa544432d2102609654376a900bd07"
+checksum = "cff418fc8ec5cadf8173b10125f05c2e7e1d46771406187b2c878557d4503390"
dependencies = [
"aws-smithy-types",
]
[[package]]
name = "aws-smithy-observability"
-version = "0.1.2"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445d065e76bc1ef54963db400319f1dd3ebb3e0a74af20f7f7630625b0cc7cc0"
+checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc"
dependencies = [
"aws-smithy-runtime-api",
- "once_cell",
]
[[package]]
name = "aws-smithy-query"
-version = "0.60.7"
+version = "0.60.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb"
+checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9"
dependencies = [
"aws-smithy-types",
"urlencoding",
@@ -1867,9 +1792,9 @@ dependencies = [
[[package]]
name = "aws-smithy-runtime"
-version = "1.8.1"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0152749e17ce4d1b47c7747bdfec09dac1ccafdcbc741ebf9daa2a373356730f"
+checksum = "40ab99739082da5347660c556689256438defae3bcefd66c52b095905730e404"
dependencies = [
"aws-smithy-async",
"aws-smithy-http",
@@ -1883,7 +1808,6 @@ dependencies = [
"http 1.3.1",
"http-body 0.4.6",
"http-body 1.0.1",
- "once_cell",
"pin-project-lite",
"pin-utils",
"tokio",
@@ -1892,9 +1816,9 @@ dependencies = [
[[package]]
name = "aws-smithy-runtime-api"
-version = "1.7.4"
+version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3da37cf5d57011cb1753456518ec76e31691f1f474b73934a284eb2a1c76510f"
+checksum = "3683c5b152d2ad753607179ed71988e8cfd52964443b4f74fd8e552d0bbfeb46"
dependencies = [
"aws-smithy-async",
"aws-smithy-types",
@@ -1909,9 +1833,9 @@ dependencies = [
[[package]]
name = "aws-smithy-types"
-version = "1.3.0"
+version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836155caafba616c0ff9b07944324785de2ab016141c3550bd1c07882f8cee8f"
+checksum = "9f5b3a7486f6690ba25952cabf1e7d75e34d69eaff5081904a47bc79074d6457"
dependencies = [
"base64-simd",
"bytes 1.10.1",
@@ -1935,18 +1859,18 @@ dependencies = [
[[package]]
name = "aws-smithy-xml"
-version = "0.60.9"
+version = "0.60.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc"
+checksum = "e9c34127e8c624bc2999f3b657e749c1393bedc9cd97b92a804db8ced4d2e163"
dependencies = [
"xmlparser",
]
[[package]]
name = "aws-types"
-version = "1.3.6"
+version = "1.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3873f8deed8927ce8d04487630dc9ff73193bab64742a61d050e57a68dec4125"
+checksum = "e2fd329bf0e901ff3f60425691410c69094dc2a1f34b331f37bfc4e9ac1565a1"
dependencies = [
"aws-credential-types",
"aws-smithy-async",
@@ -1963,7 +1887,6 @@ dependencies = [
"aws-smithy-runtime-api",
"aws-smithy-types",
"http_client",
- "workspace-hack",
]
[[package]]
@@ -2042,17 +1965,17 @@ dependencies = [
[[package]]
name = "backtrace"
-version = "0.3.74"
+version = "0.3.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
dependencies = [
"addr2line",
"cfg-if",
"libc",
"miniz_oxide",
- "object",
+ "object 0.37.3",
"rustc-demangle",
- "windows-targets 0.52.6",
+ "windows-link 0.2.1",
]
[[package]]
@@ -2085,9 +2008,9 @@ dependencies = [
[[package]]
name = "base64ct"
-version = "1.7.3"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
+checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
[[package]]
name = "bedrock"
@@ -2097,20 +2020,13 @@ dependencies = [
"aws-sdk-bedrockruntime",
"aws-smithy-types",
"futures 0.3.31",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "strum 0.27.1",
- "thiserror 2.0.12",
- "workspace-hack",
+ "strum 0.27.2",
+ "thiserror 2.0.17",
]
-[[package]]
-name = "beef"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1"
-
[[package]]
name = "bigdecimal"
version = "0.4.8"
@@ -2135,56 +2051,55 @@ dependencies = [
]
[[package]]
-name = "bindgen"
-version = "0.69.5"
+name = "bincode"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
+checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740"
dependencies = [
- "bitflags 2.9.0",
- "cexpr",
- "clang-sys",
- "itertools 0.12.1",
- "lazy_static",
- "lazycell",
- "log",
- "prettyplease",
- "proc-macro2",
- "quote",
- "regex",
- "rustc-hash 1.1.0",
- "shlex",
- "syn 2.0.101",
- "which 4.4.2",
+ "bincode_derive",
+ "serde",
+ "unty",
+]
+
+[[package]]
+name = "bincode_derive"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09"
+dependencies = [
+ "virtue",
]
[[package]]
name = "bindgen"
-version = "0.70.1"
+version = "0.71.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
+checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cexpr",
"clang-sys",
- "itertools 0.13.0",
+ "itertools 0.12.1",
+ "log",
+ "prettyplease",
"proc-macro2",
"quote",
"regex",
- "rustc-hash 1.1.0",
+ "rustc-hash 2.1.1",
"shlex",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "bindgen"
-version = "0.71.1"
+version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
+checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cexpr",
"clang-sys",
- "itertools 0.13.0",
+ "itertools 0.12.1",
"log",
"prettyplease",
"proc-macro2",
@@ -2192,7 +2107,7 @@ dependencies = [
"regex",
"rustc-hash 2.1.1",
"shlex",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -2227,9 +2142,9 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
[[package]]
name = "bit_field"
-version = "0.10.2"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
+checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
[[package]]
name = "bitflags"
@@ -2239,9 +2154,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.9.0"
+version = "2.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
dependencies = [
"serde",
]
@@ -2266,14 +2181,15 @@ dependencies = [
[[package]]
name = "blade-graphics"
-version = "0.6.0"
-source = "git+https://github.com/kvark/blade?rev=e0ec4e720957edd51b945b64dd85605ea54bcfe5#e0ec4e720957edd51b945b64dd85605ea54bcfe5"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4deb8f595ce7f00dee3543ebf6fd9a20ea86fc421ab79600dac30876250bdae"
dependencies = [
"ash",
"ash-window",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"bytemuck",
- "codespan-reporting 0.11.1",
+ "codespan-reporting 0.12.0",
"glow",
"gpu-alloc",
"gpu-alloc-ash",
@@ -2291,6 +2207,7 @@ dependencies = [
"objc2-metal",
"objc2-quartz-core",
"objc2-ui-kit",
+ "once_cell",
"raw-window-handle",
"slab",
"wasm-bindgen",
@@ -2300,17 +2217,19 @@ dependencies = [
[[package]]
name = "blade-macros"
version = "0.3.0"
-source = "git+https://github.com/kvark/blade?rev=e0ec4e720957edd51b945b64dd85605ea54bcfe5#e0ec4e720957edd51b945b64dd85605ea54bcfe5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27142319e2f4c264581067eaccb9f80acccdde60d8b4bf57cc50cd3152f109ca"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "blade-util"
-version = "0.2.0"
-source = "git+https://github.com/kvark/blade?rev=e0ec4e720957edd51b945b64dd85605ea54bcfe5#e0ec4e720957edd51b945b64dd85605ea54bcfe5"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a6be3a82c001ba7a17b6f8e413ede5d1004e6047213f8efaf0ffc15b5c4904c"
dependencies = [
"blade-graphics",
"bytemuck",
@@ -2318,15 +2237,6 @@ dependencies = [
"profiling",
]
-[[package]]
-name = "blake2"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
-dependencies = [
- "digest",
-]
-
[[package]]
name = "blake3"
version = "1.8.2"
@@ -2366,26 +2276,40 @@ dependencies = [
[[package]]
name = "block2"
-version = "0.6.1"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2"
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
dependencies = [
"objc2",
]
[[package]]
name = "blocking"
-version = "1.6.1"
+version = "1.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
+checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"
dependencies = [
- "async-channel 2.3.1",
+ "async-channel 2.5.0",
"async-task",
"futures-io",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"piper",
]
+[[package]]
+name = "bm25"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cbd8ffdfb7b4c2ff038726178a780a94f90525ed0ad264c0afaa75dd8c18a64"
+dependencies = [
+ "cached",
+ "deunicode",
+ "fxhash",
+ "rust-stemmers",
+ "stop-words",
+ "unicode-segmentation",
+]
+
[[package]]
name = "borrow-or-share"
version = "0.2.2"
@@ -2412,9 +2336,15 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
+[[package]]
+name = "boxcar"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f64beae40a84da1b4b26ff2761a5b895c12adc41dc25aaee1c4f2bbfe97a6e"
+
[[package]]
name = "breadcrumbs"
version = "0.1.0"
@@ -2426,19 +2356,39 @@ dependencies = [
"theme",
"ui",
"workspace",
- "workspace-hack",
"zed_actions",
]
[[package]]
-name = "bstr"
-version = "1.12.0"
+name = "brotli"
+version = "8.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4"
+checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
dependencies = [
- "memchr",
- "regex-automata 0.4.9",
- "serde",
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bstr"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
]
[[package]]
@@ -2454,14 +2404,13 @@ dependencies = [
"language",
"log",
"pretty_assertions",
- "rand 0.8.5",
+ "rand 0.9.2",
"rope",
"serde_json",
"sum_tree",
"text",
"unindent",
"util",
- "workspace-hack",
"zlog",
]
@@ -2473,9 +2422,9 @@ checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b"
[[package]]
name = "bumpalo"
-version = "3.17.0"
+version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
dependencies = [
"allocator-api2",
]
@@ -2510,28 +2459,28 @@ dependencies = [
[[package]]
name = "bytecount"
-version = "0.6.8"
+version = "0.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
+checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
[[package]]
name = "bytemuck"
-version = "1.22.0"
+version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
+checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
dependencies = [
"bytemuck_derive",
]
[[package]]
name = "bytemuck_derive"
-version = "1.9.3"
+version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1"
+checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -2561,6 +2510,9 @@ name = "bytes"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+dependencies = [
+ "serde",
+]
[[package]]
name = "bytes-utils"
@@ -2592,6 +2544,39 @@ dependencies = [
"pkg-config",
]
+[[package]]
+name = "cached"
+version = "0.56.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "801927ee168e17809ab8901d9f01f700cd7d8d6a6527997fee44e4b0327a253c"
+dependencies = [
+ "ahash 0.8.12",
+ "cached_proc_macro",
+ "cached_proc_macro_types",
+ "hashbrown 0.15.5",
+ "once_cell",
+ "thiserror 2.0.17",
+ "web-time",
+]
+
+[[package]]
+name = "cached_proc_macro"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9225bdcf4e4a9a4c08bf16607908eb2fbf746828d5e0b5e019726dbf6571f201"
+dependencies = [
+ "darling 0.20.11",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "cached_proc_macro_types"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0"
+
[[package]]
name = "call"
version = "0.1.0"
@@ -2600,6 +2585,7 @@ dependencies = [
"audio",
"client",
"collections",
+ "feature_flags",
"fs",
"futures 0.3.31",
"gpui",
@@ -2610,13 +2596,10 @@ dependencies = [
"log",
"postage",
"project",
- "schemars",
"serde",
- "serde_derive",
"settings",
"telemetry",
"util",
- "workspace-hack",
]
[[package]]
@@ -2625,7 +2608,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"log",
"polling",
"rustix 0.38.44",
@@ -2647,11 +2630,58 @@ dependencies = [
[[package]]
name = "camino"
-version = "1.1.9"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "candle-core"
+version = "0.9.1"
+source = "git+https://github.com/zed-industries/candle?branch=9.1-patched#724d75eb3deebefe83f2a7381a45d4fac6eda383"
+dependencies = [
+ "byteorder",
+ "float8",
+ "gemm 0.17.1",
+ "half",
+ "memmap2",
+ "num-traits",
+ "num_cpus",
+ "rand 0.9.2",
+ "rand_distr",
+ "rayon",
+ "safetensors",
+ "thiserror 1.0.69",
+ "ug",
+ "yoke 0.7.5",
+ "zip 1.1.4",
+]
+
+[[package]]
+name = "candle-nn"
+version = "0.9.1"
+source = "git+https://github.com/zed-industries/candle?branch=9.1-patched#724d75eb3deebefe83f2a7381a45d4fac6eda383"
dependencies = [
+ "candle-core",
+ "half",
+ "libc",
+ "num-traits",
+ "rayon",
+ "safetensors",
"serde",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "candle-onnx"
+version = "0.9.1"
+source = "git+https://github.com/zed-industries/candle?branch=9.1-patched#724d75eb3deebefe83f2a7381a45d4fac6eda383"
+dependencies = [
+ "candle-core",
+ "candle-nn",
+ "prost 0.12.6",
]
[[package]]
@@ -2674,7 +2704,7 @@ checksum = "9f83833816c66c986e913b22ac887cec216ea09301802054316fc5301809702c"
dependencies = [
"cap-primitives",
"cap-std",
- "rustix 1.0.7",
+ "rustix 1.1.2",
"smallvec",
]
@@ -2690,7 +2720,7 @@ dependencies = [
"io-lifetimes",
"ipnet",
"maybe-owned",
- "rustix 1.0.7",
+ "rustix 1.1.2",
"rustix-linux-procfs",
"windows-sys 0.59.0",
"winx",
@@ -2715,7 +2745,7 @@ dependencies = [
"cap-primitives",
"io-extras",
"io-lifetimes",
- "rustix 1.0.7",
+ "rustix 1.1.2",
]
[[package]]
@@ -2728,7 +2758,7 @@ dependencies = [
"cap-primitives",
"iana-time-zone",
"once_cell",
- "rustix 1.0.7",
+ "rustix 1.1.2",
"winx",
]
@@ -2752,7 +2782,7 @@ dependencies = [
"semver",
"serde",
"serde_json",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
@@ -2762,7 +2792,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fbd1fe9db3ebf71b89060adaf7b0504c2d6a425cf061313099547e382c2e472"
dependencies = [
"serde",
- "toml 0.8.20",
+ "toml 0.8.23",
]
[[package]]
@@ -2771,6 +2801,15 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+[[package]]
+name = "castaway"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
+dependencies = [
+ "rustversion",
+]
+
[[package]]
name = "cbc"
version = "0.1.2"
@@ -2787,23 +2826,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff"
dependencies = [
"heck 0.4.1",
- "indexmap",
+ "indexmap 2.11.4",
"log",
"proc-macro2",
"quote",
"serde",
"serde_json",
- "syn 2.0.101",
+ "syn 2.0.106",
"tempfile",
- "toml 0.8.20",
+ "toml 0.8.23",
]
[[package]]
name = "cc"
-version = "1.2.19"
+version = "1.2.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362"
+checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7"
dependencies = [
+ "find-msvc-tools",
"jobserver",
"libc",
"shlex",
@@ -2836,9 +2876,9 @@ dependencies = [
[[package]]
name = "cfg-if"
-version = "1.0.0"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "cfg_aliases"
@@ -2875,30 +2915,36 @@ dependencies = [
"language",
"log",
"postage",
- "rand 0.8.5",
"release_channel",
"rpc",
"settings",
- "sum_tree",
"text",
"time",
"util",
- "workspace-hack",
]
[[package]]
name = "chrono"
-version = "0.4.41"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
+checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
dependencies = [
- "android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"serde",
"wasm-bindgen",
- "windows-link",
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "chrono-tz"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3"
+dependencies = [
+ "chrono",
+ "phf 0.12.1",
]
[[package]]
@@ -2947,9 +2993,9 @@ dependencies = [
[[package]]
name = "circular-buffer"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23bdce1da528cadbac4654b5632bfcd8c6c63e25b1d42cea919a95958790b51d"
+checksum = "14c638459986b83c2b885179bd4ea6a2cbb05697b001501a56adb3a3d230803b"
[[package]]
name = "clang-sys"
@@ -2964,9 +3010,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.37"
+version = "4.5.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071"
+checksum = "f4512b90fa68d3a9932cea5184017c5d200f5921df706d45e853537dea51508f"
dependencies = [
"clap_builder",
"clap_derive",
@@ -2974,9 +3020,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.37"
+version = "4.5.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2"
+checksum = "0025e98baa12e766c67ba13ff4695a887a1eba19569aad00a472546795bd6730"
dependencies = [
"anstream",
"anstyle",
@@ -2987,36 +3033,37 @@ dependencies = [
[[package]]
name = "clap_complete"
-version = "4.5.47"
+version = "4.5.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06f5378ea264ad4f82bbc826628b5aad714a75abf6ece087e923010eb937fb6"
+checksum = "2348487adcd4631696ced64ccdb40d38ac4d31cae7f2eec8817fcea1b9d1c43c"
dependencies = [
"clap",
]
[[package]]
name = "clap_derive"
-version = "4.5.32"
+version = "4.5.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
+checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "clap_lex"
-version = "0.7.4"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
+checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
[[package]]
name = "cli"
version = "0.1.0"
dependencies = [
"anyhow",
+ "askpass",
"clap",
"collections",
"core-foundation 0.10.0",
@@ -3027,12 +3074,12 @@ dependencies = [
"parking_lot",
"paths",
"plist",
+ "rayon",
"release_channel",
"serde",
"tempfile",
"util",
- "windows 0.61.1",
- "workspace-hack",
+ "windows 0.61.3",
]
[[package]]
@@ -3046,10 +3093,9 @@ dependencies = [
"clock",
"cloud_api_client",
"cloud_llm_client",
- "cocoa 0.26.0",
"collections",
"credentials_provider",
- "derive_more 0.99.19",
+ "derive_more 0.99.20",
"feature_flags",
"fs",
"futures 0.3.31",
@@ -3059,24 +3105,25 @@ dependencies = [
"http_client_tls",
"httparse",
"log",
+ "objc2-foundation",
"parking_lot",
"paths",
"postage",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"release_channel",
"rpc",
"rustls-pki-types",
- "schemars",
"serde",
"serde_json",
+ "serde_urlencoded",
"settings",
"sha2",
"smol",
"telemetry",
"telemetry_events",
"text",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tiny_http",
"tokio",
@@ -3085,8 +3132,7 @@ dependencies = [
"tokio-socks",
"url",
"util",
- "windows 0.61.1",
- "workspace-hack",
+ "windows 0.61.3",
"worktree",
]
@@ -3097,7 +3143,6 @@ dependencies = [
"parking_lot",
"serde",
"smallvec",
- "workspace-hack",
]
[[package]]
@@ -3112,7 +3157,6 @@ dependencies = [
"http_client",
"parking_lot",
"serde_json",
- "workspace-hack",
"yawc",
]
@@ -3127,7 +3171,6 @@ dependencies = [
"pretty_assertions",
"serde",
"serde_json",
- "workspace-hack",
]
[[package]]
@@ -3135,19 +3178,27 @@ name = "cloud_llm_client"
version = "0.1.0"
dependencies = [
"anyhow",
+ "chrono",
+ "indoc",
"pretty_assertions",
"serde",
"serde_json",
- "strum 0.27.1",
+ "strum 0.27.2",
"uuid",
- "workspace-hack",
]
[[package]]
-name = "clru"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59"
+name = "cloud_zeta2_prompt"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "cloud_llm_client",
+ "indoc",
+ "ordered-float 2.10.1",
+ "rustc-hash 2.1.1",
+ "serde",
+ "strum 0.27.2",
+]
[[package]]
name = "cmake"
@@ -3160,9 +3211,12 @@ dependencies = [
[[package]]
name = "cobs"
-version = "0.2.3"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1"
+dependencies = [
+ "thiserror 2.0.17",
+]
[[package]]
name = "cocoa"
@@ -3186,7 +3240,7 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"block",
"cocoa-foundation 0.2.0",
"core-foundation 0.10.0",
@@ -3216,7 +3270,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"block",
"core-foundation 0.10.0",
"core-graphics-types 0.2.0",
@@ -3226,23 +3280,44 @@ dependencies = [
[[package]]
name = "codespan-reporting"
-version = "0.11.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
dependencies = [
+ "serde",
"termcolor",
- "unicode-width 0.1.14",
+ "unicode-width",
]
[[package]]
name = "codespan-reporting"
-version = "0.12.0"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
+checksum = "ba7a06c0b31fff5ff2e1e7d37dbf940864e2a974b336e1a2938d10af6e8fb283"
dependencies = [
"serde",
"termcolor",
- "unicode-width 0.2.0",
+ "unicode-width",
+]
+
+[[package]]
+name = "codestral"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "edit_prediction",
+ "edit_prediction_context",
+ "futures 0.3.31",
+ "gpui",
+ "http_client",
+ "language",
+ "language_models",
+ "log",
+ "mistral",
+ "serde",
+ "serde_json",
+ "smol",
+ "text",
]
[[package]]
@@ -3251,8 +3326,8 @@ version = "0.44.0"
dependencies = [
"agent_settings",
"anyhow",
- "assistant_context",
"assistant_slash_command",
+ "assistant_text_thread",
"async-trait",
"async-tungstenite",
"audio",
@@ -3310,7 +3385,7 @@ dependencies = [
"prometheus",
"prompt_store",
"prost 0.9.0",
- "rand 0.8.5",
+ "rand 0.9.2",
"recent_projects",
"release_channel",
"remote",
@@ -3318,20 +3393,19 @@ dependencies = [
"reqwest 0.11.27",
"reqwest_client",
"rpc",
- "rustc-demangle",
"scrypt",
"sea-orm",
+ "sea-orm-macros",
"semantic_version",
"semver",
"serde",
- "serde_derive",
"serde_json",
"session",
"settings",
"sha2",
"smol",
"sqlx",
- "strum 0.27.1",
+ "strum 0.27.2",
"subtle",
"supermaven_api",
"task",
@@ -3340,7 +3414,7 @@ dependencies = [
"theme",
"time",
"tokio",
- "toml 0.8.20",
+ "toml 0.8.23",
"tower 0.4.13",
"tower-http 0.4.4",
"tracing",
@@ -3349,7 +3423,6 @@ dependencies = [
"util",
"uuid",
"workspace",
- "workspace-hack",
"worktree",
"zlog",
]
@@ -3366,12 +3439,10 @@ dependencies = [
"collections",
"db",
"editor",
- "emojis",
"futures 0.3.31",
"fuzzy",
"gpui",
"http_client",
- "language",
"log",
"menu",
"notifications",
@@ -3379,11 +3450,8 @@ dependencies = [
"pretty_assertions",
"project",
"release_channel",
- "rich_text",
"rpc",
- "schemars",
"serde",
- "serde_derive",
"serde_json",
"settings",
"smallvec",
@@ -3397,16 +3465,14 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
name = "collections"
version = "0.1.0"
dependencies = [
- "indexmap",
+ "indexmap 2.11.4",
"rustc-hash 2.1.1",
- "workspace-hack",
]
[[package]]
@@ -3417,9 +3483,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "colorchoice"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
[[package]]
name = "combine"
@@ -3431,14 +3497,25 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "comfy-table"
+version = "7.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b"
+dependencies = [
+ "crossterm",
+ "unicode-segmentation",
+ "unicode-width",
+]
+
[[package]]
name = "command-fds"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ec1052629a80c28594777d1252efc8a6b005d13f9edfd8c3fc0f44d5b32489a"
+checksum = "f849b92c694fe237ecd8fafd1ba0df7ae0d45c1df6daeb7f68ed4220d51640bd"
dependencies = [
"nix 0.30.1",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
@@ -3471,7 +3548,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -3480,9 +3556,24 @@ name = "command_palette_hooks"
version = "0.1.0"
dependencies = [
"collections",
- "derive_more 0.99.19",
+ "derive_more 0.99.20",
"gpui",
- "workspace-hack",
+ "workspace",
+]
+
+[[package]]
+name = "compact_str"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "rustversion",
+ "ryu",
+ "serde",
+ "static_assertions",
]
[[package]]
@@ -3490,14 +3581,32 @@ name = "component"
version = "0.1.0"
dependencies = [
"collections",
+ "documented",
"gpui",
"inventory",
"parking_lot",
- "strum 0.27.1",
+ "strum 0.27.2",
"theme",
- "workspace-hack",
]
+[[package]]
+name = "compression-codecs"
+version = "0.4.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23"
+dependencies = [
+ "compression-core",
+ "deflate64",
+ "flate2",
+ "memchr",
+]
+
+[[package]]
+name = "compression-core"
+version = "0.4.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb"
+
[[package]]
name = "concurrent-queue"
version = "2.5.0"
@@ -3516,7 +3625,7 @@ dependencies = [
"encode_unicode",
"libc",
"once_cell",
- "unicode-width 0.2.0",
+ "unicode-width",
"windows-sys 0.59.0",
]
@@ -3541,7 +3650,7 @@ version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"once_cell",
"tiny-keccak",
]
@@ -3571,14 +3680,14 @@ dependencies = [
"net",
"parking_lot",
"postage",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
+ "settings",
"smol",
"tempfile",
"url",
"util",
- "workspace-hack",
]
[[package]]
@@ -3587,15 +3696,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-[[package]]
-name = "convert_case"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
-dependencies = [
- "unicode-segmentation",
-]
-
[[package]]
name = "convert_case"
version = "0.8.0"
@@ -3635,6 +3735,7 @@ dependencies = [
"paths",
"project",
"rpc",
+ "semver",
"serde",
"serde_json",
"settings",
@@ -3644,7 +3745,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zlog",
]
@@ -3693,7 +3793,7 @@ version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.10.0",
"core-graphics-types 0.2.0",
"foreign-types 0.5.0",
@@ -3706,7 +3806,7 @@ version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32eb7c354ae9f6d437a6039099ce7ecd049337a8109b23d73e48e8ffba8e9cd5"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.9.4",
"core-graphics-types 0.1.3",
"foreign-types 0.5.0",
@@ -3730,7 +3830,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.10.0",
"libc",
]
@@ -3741,7 +3841,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e4583956b9806b69f73fcb23aee05eb3620efc282972f08f6a6db7504f8334d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"block",
"cfg-if",
"core-foundation 0.10.0",
@@ -3819,20 +3919,20 @@ dependencies = [
[[package]]
name = "coreaudio-sys"
-version = "0.2.16"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b"
+checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6"
dependencies = [
- "bindgen 0.70.1",
+ "bindgen 0.72.1",
]
[[package]]
name = "cosmic-text"
-version = "0.14.0"
+version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e1ecbb5db9a4c2ee642df67bcfa8f044dd867dbbaa21bfab139cbc204ffbf67"
+checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"fontdb 0.16.2",
"log",
"rangemap",
@@ -3861,7 +3961,7 @@ dependencies = [
"jni",
"js-sys",
"libc",
- "mach2",
+ "mach2 0.4.3",
"ndk",
"ndk-context",
"num-derive",
@@ -3877,9 +3977,9 @@ dependencies = [
[[package]]
name = "cpp_demangle"
-version = "0.4.4"
+version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d"
+checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253"
dependencies = [
"cfg-if",
]
@@ -3926,7 +4026,7 @@ dependencies = [
"cranelift-control",
"cranelift-entity",
"cranelift-isle",
- "gimli",
+ "gimli 0.31.1",
"hashbrown 0.14.5",
"log",
"postcard",
@@ -3936,7 +4036,7 @@ dependencies = [
"serde_derive",
"sha2",
"smallvec",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
]
[[package]]
@@ -3983,7 +4083,7 @@ dependencies = [
"cranelift-codegen",
"log",
"smallvec",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
]
[[package]]
@@ -4000,7 +4100,7 @@ checksum = "b8dee82f3f1f2c4cba9177f1cc5e350fe98764379bcd29340caa7b01f85076c7"
dependencies = [
"cranelift-codegen",
"libc",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
]
[[package]]
@@ -4011,7 +4111,7 @@ checksum = "031ed29858d90cfdf27fe49fae28028a1f20466db97962fa2f4ea34809aeebf3"
dependencies = [
"cfg-if",
"libc",
- "mach2",
+ "mach2 0.4.3",
]
[[package]]
@@ -4023,7 +4123,7 @@ dependencies = [
"cfg-if",
"crash-context",
"libc",
- "mach2",
+ "mach2 0.4.3",
"parking_lot",
]
@@ -4031,22 +4131,27 @@ dependencies = [
name = "crashes"
version = "0.1.0"
dependencies = [
+ "bincode 1.3.3",
+ "cfg-if",
"crash-handler",
+ "extension_host",
"log",
+ "mach2 0.5.0",
"minidumper",
"paths",
"release_channel",
"serde",
"serde_json",
"smol",
- "workspace-hack",
+ "system_specs",
+ "zstd 0.11.2+zstd.1.5.2",
]
[[package]]
name = "crc"
-version = "3.2.1"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
+checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675"
dependencies = [
"crc-catalog",
]
@@ -4058,32 +4163,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
-name = "crc32c"
-version = "0.6.8"
+name = "crc-fast"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47"
+checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f"
dependencies = [
- "rustc_version",
+ "crc",
+ "digest",
+ "libc",
+ "rand 0.9.2",
+ "regex",
]
[[package]]
name = "crc32fast"
-version = "1.4.2"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
-[[package]]
-name = "crc64fast-nvme"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4955638f00a809894c947f85a024020a20815b65a5eea633798ea7924edab2b3"
-dependencies = [
- "crc",
-]
-
[[package]]
name = "credentials_provider"
version = "0.1.0"
@@ -4095,7 +4195,6 @@ dependencies = [
"release_channel",
"serde",
"serde_json",
- "workspace-hack",
]
[[package]]
@@ -4134,6 +4233,19 @@ dependencies = [
"itertools 0.10.5",
]
+[[package]]
+name = "crossbeam"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
+ "crossbeam-queue",
+ "crossbeam-utils",
+]
+
[[package]]
name = "crossbeam-channel"
version = "0.5.15"
@@ -4177,11 +4289,34 @@ version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+[[package]]
+name = "crossterm"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
+dependencies = [
+ "bitflags 2.9.4",
+ "crossterm_winapi",
+ "document-features",
+ "parking_lot",
+ "rustix 1.1.2",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
[[package]]
name = "crunchy"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
[[package]]
name = "crypto-bigint"
@@ -4225,7 +4360,7 @@ dependencies = [
"cssparser-macros",
"dtoa-short",
"itoa",
- "phf",
+ "phf 0.11.3",
"smallvec",
]
@@ -4236,14 +4371,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "ctor"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4735f265ba6a1188052ca32d461028a7d1125868be18e287e756019da7607b5"
+checksum = "ec09e802f5081de6157da9a75701d6c713d8dc3ba52571fd4bd25f412644e8a6"
dependencies = [
"ctor-proc-macro",
"dtor",
@@ -4251,83 +4386,87 @@ dependencies = [
[[package]]
name = "ctor-proc-macro"
-version = "0.0.5"
+version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f211af61d8efdd104f96e57adf5e426ba1bc3ed7a4ead616e15e5881fd79c4d"
+checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2"
[[package]]
name = "ctrlc"
-version = "3.4.6"
+version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c"
+checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3"
dependencies = [
- "nix 0.29.0",
- "windows-sys 0.59.0",
+ "dispatch",
+ "nix 0.30.1",
+ "windows-sys 0.61.2",
]
[[package]]
name = "cursor-icon"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
+checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f"
[[package]]
name = "cxx"
-version = "1.0.157"
+version = "1.0.187"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6354e975ea4ec28033ec3a36fa9baa1a02e3eb22ad740eeb4929370d4f5ba8"
+checksum = "d8465678d499296e2cbf9d3acf14307458fd69b471a31b65b3c519efe8b5e187"
dependencies = [
"cc",
+ "cxx-build",
"cxxbridge-cmd",
"cxxbridge-flags",
"cxxbridge-macro",
- "foldhash",
+ "foldhash 0.2.0",
"link-cplusplus",
]
[[package]]
name = "cxx-build"
-version = "1.0.157"
+version = "1.0.187"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b4400e26ea4b99417e4263b1ce2d8452404d750ba0809a7bd043072593d430d"
+checksum = "d74b6bcf49ebbd91f1b1875b706ea46545032a14003b5557b7dfa4bbeba6766e"
dependencies = [
"cc",
- "codespan-reporting 0.12.0",
+ "codespan-reporting 0.13.0",
+ "indexmap 2.11.4",
"proc-macro2",
"quote",
"scratch",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "cxxbridge-cmd"
-version = "1.0.157"
+version = "1.0.187"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31860c98f69fc14da5742c5deaf78983e846c7b27804ca8c8319e32eef421bde"
+checksum = "94ca2ad69673c4b35585edfa379617ac364bccd0ba0adf319811ba3a74ffa48a"
dependencies = [
"clap",
- "codespan-reporting 0.12.0",
+ "codespan-reporting 0.13.0",
+ "indexmap 2.11.4",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "cxxbridge-flags"
-version = "1.0.157"
+version = "1.0.187"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0402a66013f3b8d3d9f2d7c9994656cc81e671054822b0728d7454d9231892f"
+checksum = "d29b52102aa395386d77d322b3a0522f2035e716171c2c60aa87cc5e9466e523"
[[package]]
name = "cxxbridge-macro"
-version = "1.0.157"
+version = "1.0.187"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64c0b38f32d68f3324a981645ee39b2d686af36d03c98a386df3716108c9feae"
+checksum = "2a8ebf0b6138325af3ec73324cb3a48b64d57721f17291b151206782e61f66cd"
dependencies = [
+ "indexmap 2.11.4",
"proc-macro2",
"quote",
- "rustversion",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -4353,7 +4492,7 @@ dependencies = [
"parking_lot",
"paths",
"proto",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
@@ -4364,7 +4503,6 @@ dependencies = [
"tree-sitter",
"tree-sitter-go",
"util",
- "workspace-hack",
"zlog",
]
@@ -4373,7 +4511,7 @@ name = "dap-types"
version = "0.0.1"
source = "git+https://github.com/zed-industries/dap-types?rev=1b461b310481d01e02b2603c16d7144b926339f8#1b461b310481d01e02b2603c16d7144b926339f8"
dependencies = [
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
]
@@ -4396,11 +4534,79 @@ dependencies = [
"paths",
"serde",
"serde_json",
- "shlex",
"smol",
"task",
"util",
- "workspace-hack",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
+dependencies = [
+ "darling_core 0.20.11",
+ "darling_macro 0.20.11",
+]
+
+[[package]]
+name = "darling"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
+dependencies = [
+ "darling_core 0.21.3",
+ "darling_macro 0.21.3",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
+dependencies = [
+ "darling_core 0.20.11",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
+dependencies = [
+ "darling_core 0.21.3",
+ "quote",
+ "syn 2.0.106",
]
[[package]]
@@ -4444,9 +4650,9 @@ checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
[[package]]
name = "data-url"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
+checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
[[package]]
name = "db"
@@ -4463,18 +4669,18 @@ dependencies = [
"sqlez_macros",
"tempfile",
"util",
- "workspace-hack",
+ "zed_env_vars",
]
[[package]]
name = "dbus"
-version = "0.9.7"
+version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
+checksum = "190b6255e8ab55a7b568df5a883e9497edc3e4821c06396612048b430e5ad1e9"
dependencies = [
"libc",
"libdbus-sys",
- "winapi",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -4483,15 +4689,21 @@ version = "0.1.0"
dependencies = [
"anyhow",
"async-trait",
+ "collections",
"dap",
"extension",
"gpui",
"serde_json",
"task",
"util",
- "workspace-hack",
]
+[[package]]
+name = "debug_unsafe"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85d3cef41d236720ed453e102153a53e4cc3d2fde848c0078a50cf249e8e3e5b"
+
[[package]]
name = "debugger_tools"
version = "0.1.0"
@@ -4507,7 +4719,6 @@ dependencies = [
"smol",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -4516,7 +4727,7 @@ version = "0.1.0"
dependencies = [
"alacritty_terminal",
"anyhow",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"client",
"collections",
"command_palette_hooks",
@@ -4543,13 +4754,12 @@ dependencies = [
"pretty_assertions",
"project",
"rpc",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"serde_json_lenient",
"settings",
- "shlex",
- "sysinfo",
+ "sysinfo 0.37.2",
"task",
"tasks_ui",
"telemetry",
@@ -4563,7 +4773,6 @@ dependencies = [
"unindent",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
"zlog",
]
@@ -4584,17 +4793,29 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "workspace-hack",
]
[[package]]
name = "deflate64"
-version = "0.1.9"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b"
+checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204"
+
+[[package]]
+name = "denoise"
+version = "0.1.0"
+dependencies = [
+ "candle-core",
+ "candle-onnx",
+ "log",
+ "realfft",
+ "rodio",
+ "rustfft",
+ "thiserror 2.0.17",
+]
[[package]]
name = "der"
@@ -4619,25 +4840,36 @@ dependencies = [
[[package]]
name = "deranged"
-version = "0.4.0"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
+checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071"
dependencies = [
"powerfmt",
- "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "derive_arbitrary"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
]
[[package]]
name = "derive_more"
-version = "0.99.19"
+version = "0.99.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f"
+checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
dependencies = [
"convert_case 0.4.0",
"proc-macro2",
"quote",
"rustc_version",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -4657,7 +4889,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"unicode-xid",
]
@@ -4667,10 +4899,27 @@ version = "0.1.0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
- "workspace-hack",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "derive_setters"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae5c625eda104c228c06ecaf988d1c60e542176bd7a490e60eeda3493244c0c9"
+dependencies = [
+ "darling 0.20.11",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
]
+[[package]]
+name = "deunicode"
+version = "1.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04"
+
[[package]]
name = "diagnostics"
version = "0.1.0"
@@ -4681,7 +4930,6 @@ dependencies = [
"component",
"ctor",
"editor",
- "futures 0.3.31",
"gpui",
"indoc",
"language",
@@ -4690,7 +4938,7 @@ dependencies = [
"markdown",
"pretty_assertions",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"serde",
"serde_json",
"settings",
@@ -4700,7 +4948,6 @@ dependencies = [
"unindent",
"util",
"workspace",
- "workspace-hack",
"zlog",
]
@@ -4730,7 +4977,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b545b8c50194bdd008283985ab0b31dba153cfd5b3066a92770634fbc0d7d291"
dependencies = [
- "nu-ansi-term 0.50.1",
+ "nu-ansi-term",
]
[[package]]
@@ -4803,8 +5050,8 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [
"libc",
"option-ext",
- "redox_users 0.5.0",
- "windows-sys 0.59.0",
+ "redox_users 0.5.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -4819,7 +5066,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"objc2",
]
@@ -4831,7 +5078,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -4855,36 +5102,46 @@ dependencies = [
"serde",
"serde_json",
"settings",
+ "task",
+ "theme",
"util",
- "workspace-hack",
"zed",
"zlog",
]
+[[package]]
+name = "document-features"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
+dependencies = [
+ "litrs",
+]
+
[[package]]
name = "documented"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc6db32f0995bc4553d2de888999075acd0dbeef75ba923503f6a724263dc6f3"
+checksum = "ed6b3e31251e87acd1b74911aed84071c8364fc9087972748ade2f1094ccce34"
dependencies = [
"documented-macros",
- "phf",
- "thiserror 1.0.69",
+ "phf 0.12.1",
+ "thiserror 2.0.17",
]
[[package]]
name = "documented-macros"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a394bb35929b58f9a5fd418f7c6b17a4b616efcc1e53e6995ca123948f87e5fa"
+checksum = "1149cf7462e5e79e17a3c05fd5b1f9055092bbfa95e04c319395c3beacc9370f"
dependencies = [
- "convert_case 0.6.0",
- "itertools 0.13.0",
+ "convert_case 0.8.0",
+ "itertools 0.14.0",
"optfield",
"proc-macro2",
"quote",
- "strum 0.26.3",
- "syn 2.0.101",
+ "strum 0.27.2",
+ "syn 2.0.106",
]
[[package]]
@@ -4905,7 +5162,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "415b6ec780d34dcf624666747194393603d0373b7141eef01d12ee58881507d9"
dependencies = [
- "phf",
+ "phf 0.11.3",
]
[[package]]
@@ -4946,9 +5203,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
[[package]]
name = "dwrote"
-version = "0.11.3"
+version = "0.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfe1f192fcce01590bd8d839aca53ce0d11d803bf291b2a6c4ad925a8f0024be"
+checksum = "9e1b35532432acc8b19ceed096e35dfa088d3ea037fe4f3c085f1f97f33b4d02"
dependencies = [
"lazy_static",
"libc",
@@ -4958,9 +5215,35 @@ dependencies = [
[[package]]
name = "dyn-clone"
-version = "1.0.19"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
+
+[[package]]
+name = "dyn-stack"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e53799688f5632f364f8fb387488dd05db9fe45db7011be066fc20e7027f8b"
+dependencies = [
+ "bytemuck",
+ "reborrow",
+]
+
+[[package]]
+name = "dyn-stack"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
+checksum = "1c4713e43e2886ba72b8271aa66c93d722116acf7a75555cce11dcde84388fe8"
+dependencies = [
+ "bytemuck",
+ "dyn-stack-macros",
+]
+
+[[package]]
+name = "dyn-stack-macros"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d926b4d407d372f141f93bb444696142c29d32962ccbd3531117cf3aa0bfa9"
[[package]]
name = "ec4rs"
@@ -4987,8 +5270,6 @@ dependencies = [
"client",
"gpui",
"language",
- "project",
- "workspace-hack",
]
[[package]]
@@ -4998,6 +5279,7 @@ dependencies = [
"anyhow",
"client",
"cloud_llm_client",
+ "codestral",
"copilot",
"edit_prediction",
"editor",
@@ -5018,11 +5300,45 @@ dependencies = [
"theme",
"ui",
"workspace",
- "workspace-hack",
"zed_actions",
"zeta",
]
+[[package]]
+name = "edit_prediction_context"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "arrayvec",
+ "clap",
+ "cloud_llm_client",
+ "collections",
+ "futures 0.3.31",
+ "gpui",
+ "hashbrown 0.15.5",
+ "indoc",
+ "itertools 0.14.0",
+ "language",
+ "log",
+ "ordered-float 2.10.1",
+ "postage",
+ "pretty_assertions",
+ "project",
+ "regex",
+ "serde",
+ "serde_json",
+ "settings",
+ "slotmap",
+ "strum 0.27.2",
+ "text",
+ "tree-sitter",
+ "tree-sitter-c",
+ "tree-sitter-cpp",
+ "tree-sitter-go",
+ "util",
+ "zlog",
+]
+
[[package]]
name = "editor"
version = "0.1.0"
@@ -5035,6 +5351,7 @@ dependencies = [
"clock",
"collections",
"convert_case 0.8.0",
+ "criterion",
"ctor",
"dap",
"db",
@@ -5061,11 +5378,12 @@ dependencies = [
"parking_lot",
"pretty_assertions",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"release_channel",
+ "rope",
"rpc",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
@@ -5093,8 +5411,8 @@ dependencies = [
"url",
"util",
"uuid",
+ "vim_mode_setting",
"workspace",
- "workspace-hack",
"zed_actions",
"zlog",
]
@@ -5151,16 +5469,16 @@ dependencies = [
[[package]]
name = "embed-resource"
-version = "3.0.2"
+version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fbc6e0d8e0c03a655b53ca813f0463d2c956bc4db8138dbc89f120b066551e3"
+checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
dependencies = [
"cc",
"memchr",
"rustc_version",
- "toml 0.8.20",
+ "toml 0.9.8",
"vswhom",
- "winreg 0.52.0",
+ "winreg 0.55.0",
]
[[package]]
@@ -5181,7 +5499,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99e1f1df1f181f2539bac8bf027d31ca5ffbf9e559e3f2d09413b9107b5c02f4"
dependencies = [
- "phf",
+ "phf 0.11.3",
]
[[package]]
@@ -5205,11 +5523,23 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
+[[package]]
+name = "enum-as-inner"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
[[package]]
name = "enumflags2"
-version = "0.7.11"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147"
+checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
dependencies = [
"enumflags2_derive",
"serde",
@@ -5217,20 +5547,20 @@ dependencies = [
[[package]]
name = "enumflags2_derive"
-version = "0.7.11"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79"
+checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "env_filter"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0"
+checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2"
dependencies = [
"log",
"regex",
@@ -5271,6 +5601,26 @@ dependencies = [
"serde",
]
+[[package]]
+name = "equator"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc"
+dependencies = [
+ "equator-macro",
+]
+
+[[package]]
+name = "equator-macro"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
[[package]]
name = "equivalent"
version = "1.0.2"
@@ -5279,11 +5629,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "erased-serde"
-version = "0.4.6"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
+checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b"
dependencies = [
"serde",
+ "serde_core",
"typeid",
]
@@ -5300,12 +5651,12 @@ dependencies = [
[[package]]
name = "errno"
-version = "0.3.11"
+version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -5339,6 +5690,12 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "ethnum"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca81e6b4777c89fd810c25a4be2b1bd93ea034fbe58e6a75216a34c6b82c539b"
+
[[package]]
name = "euclid"
version = "0.22.11"
@@ -5352,18 +5709,17 @@ dependencies = [
name = "eval"
version = "0.1.0"
dependencies = [
+ "acp_thread",
"agent",
+ "agent-client-protocol",
"agent_settings",
"agent_ui",
"anyhow",
- "assistant_tool",
- "assistant_tools",
"async-trait",
"buffer_diff",
"chrono",
"clap",
"client",
- "cloud_llm_client",
"collections",
"debug_adapter_extension",
"dirs 4.0.0",
@@ -5387,6 +5743,7 @@ dependencies = [
"pretty_assertions",
"project",
"prompt_store",
+ "rand 0.9.2",
"regex",
"release_channel",
"reqwest_client",
@@ -5394,15 +5751,13 @@ dependencies = [
"serde_json",
"settings",
"shellexpand 2.1.2",
- "smol",
"telemetry",
"terminal_view",
- "toml 0.8.20",
+ "toml 0.8.23",
"unindent",
"util",
"uuid",
"watch",
- "workspace-hack",
]
[[package]]
@@ -5413,9 +5768,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
-version = "5.4.0"
+version = "5.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
dependencies = [
"concurrent-queue",
"parking",
@@ -5428,7 +5783,7 @@ version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
dependencies = [
- "event-listener 5.4.0",
+ "event-listener 5.4.1",
"pin-project-lite",
]
@@ -5446,10 +5801,9 @@ dependencies = [
name = "explorer_command_injector"
version = "0.1.0"
dependencies = [
- "windows 0.61.1",
- "windows-core 0.61.0",
- "windows-registry 0.5.1",
- "workspace-hack",
+ "windows 0.61.3",
+ "windows-core 0.61.2",
+ "windows-registry 0.5.3",
]
[[package]]
@@ -5497,12 +5851,11 @@ dependencies = [
"serde",
"serde_json",
"task",
- "toml 0.8.20",
+ "toml 0.8.23",
"url",
"util",
"wasm-encoder 0.221.3",
"wasmparser 0.221.3",
- "workspace-hack",
]
[[package]]
@@ -5523,10 +5876,9 @@ dependencies = [
"serde_json",
"theme",
"tokio",
- "toml 0.8.20",
+ "toml 0.8.23",
"tree-sitter",
"wasmtime",
- "workspace-hack",
]
[[package]]
@@ -5546,6 +5898,7 @@ dependencies = [
"fs",
"futures 0.3.31",
"gpui",
+ "gpui_tokio",
"http_client",
"language",
"language_extension",
@@ -5556,11 +5909,10 @@ dependencies = [
"parking_lot",
"paths",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"release_channel",
"remote",
"reqwest_client",
- "schemars",
"semantic_version",
"serde",
"serde_json",
@@ -5571,13 +5923,12 @@ dependencies = [
"tempfile",
"theme",
"theme_extension",
- "toml 0.8.20",
+ "toml 0.8.23",
"url",
"util",
"wasmparser 0.221.3",
"wasmtime",
"wasmtime-wasi",
- "workspace-hack",
"zlog",
]
@@ -5605,14 +5956,13 @@ dependencies = [
"serde",
"settings",
"smallvec",
- "strum 0.27.1",
+ "strum 0.27.2",
"telemetry",
"theme",
"ui",
"util",
"vim_mode_setting",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -5622,6 +5972,12 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
+[[package]]
+name = "fallible-streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+
[[package]]
name = "fancy-regex"
version = "0.13.0"
@@ -5629,8 +5985,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2"
dependencies = [
"bit-set 0.5.3",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
@@ -5640,10 +5996,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298"
dependencies = [
"bit-set 0.8.0",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
+ "regex-automata",
+ "regex-syntax",
]
+[[package]]
+name = "fast-float2"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55"
+
[[package]]
name = "fast-srgb8"
version = "1.0.0"
@@ -5651,38 +6013,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
[[package]]
-name = "faster-hex"
-version = "0.9.0"
+name = "fastrand"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
dependencies = [
- "serde",
+ "instant",
]
[[package]]
-name = "faster-hex"
-version = "0.10.0"
+name = "fastrand"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73"
-dependencies = [
- "heapless",
- "serde",
-]
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
-name = "fastrand"
-version = "1.9.0"
+name = "fax"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
dependencies = [
- "instant",
+ "fax_derive",
]
[[package]]
-name = "fastrand"
-version = "2.3.0"
+name = "fax_derive"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
[[package]]
name = "fd-lock"
@@ -5691,7 +6054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78"
dependencies = [
"cfg-if",
- "rustix 1.0.7",
+ "rustix 1.1.2",
"windows-sys 0.59.0",
]
@@ -5711,26 +6074,18 @@ dependencies = [
"futures 0.3.31",
"gpui",
"smol",
- "workspace-hack",
]
[[package]]
name = "feedback"
version = "0.1.0"
dependencies = [
- "client",
"editor",
"gpui",
- "human_bytes",
- "menu",
- "release_channel",
- "serde",
- "sysinfo",
- "ui",
+ "system_specs",
"urlencoding",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -5761,10 +6116,9 @@ dependencies = [
"picker",
"pretty_assertions",
"project",
- "schemars",
+ "schemars 1.0.4",
"search",
"serde",
- "serde_derive",
"serde_json",
"settings",
"text",
@@ -5772,7 +6126,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zlog",
]
@@ -5782,10 +6135,8 @@ version = "0.1.0"
dependencies = [
"gpui",
"serde",
- "settings",
"theme",
"util",
- "workspace-hack",
]
[[package]]
@@ -5801,16 +6152,22 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.25"
+version = "0.2.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
+checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
dependencies = [
"cfg-if",
"libc",
"libredox",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
+
[[package]]
name = "fixedbitset"
version = "0.4.2"
@@ -5819,9 +6176,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "flate2"
-version = "1.1.1"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece"
+checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9"
dependencies = [
"crc32fast",
"libz-rs-sys",
@@ -5841,10 +6198,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ce81f49ae8a0482e4c55ea62ebbd7e5a686af544c00b9d090bba3ff9be97b3d"
[[package]]
-name = "float_next_after"
-version = "1.0.0"
+name = "float8"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8"
+checksum = "4203231de188ebbdfb85c11f3c20ca2b063945710de04e7b59268731e728b462"
+dependencies = [
+ "half",
+ "num-traits",
+ "rand 0.9.2",
+ "rand_distr",
+]
+
+[[package]]
+name = "float_next_after"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8"
[[package]]
name = "fluent-uri"
@@ -5882,43 +6251,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
-name = "font-kit"
-version = "0.14.1"
-source = "git+https://github.com/zed-industries/font-kit?rev=5474cfad4b719a72ec8ed2cb7327b2b01fd10568#5474cfad4b719a72ec8ed2cb7327b2b01fd10568"
-dependencies = [
- "bitflags 2.9.0",
- "byteorder",
- "core-foundation 0.10.0",
- "core-graphics 0.24.0",
- "core-text",
- "dirs 5.0.1",
- "dwrote",
- "float-ord",
- "freetype-sys",
- "lazy_static",
- "libc",
- "log",
- "pathfinder_geometry",
- "pathfinder_simd",
- "walkdir",
- "winapi",
- "yeslogic-fontconfig-sys",
-]
+name = "foldhash"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]]
name = "font-types"
-version = "0.8.4"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fa6a5e5a77b5f3f7f9e32879f484aa5b3632ddfbe568a16266c904a6f32cdaf"
+checksum = "511e2c18a516c666d27867d2f9821f76e7d591f762e9fc41dd6cc5c90fe54b0b"
dependencies = [
"bytemuck",
]
[[package]]
name = "fontconfig-parser"
-version = "0.5.7"
+version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7"
+checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646"
dependencies = [
"roxmltree",
]
@@ -5978,7 +6329,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -6004,9 +6355,9 @@ dependencies = [
[[package]]
name = "form_urlencoded"
-version = "1.2.1"
+version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
dependencies = [
"percent-encoding",
]
@@ -6037,7 +6388,7 @@ name = "fs"
version = "0.1.0"
dependencies = [
"anyhow",
- "ashpd",
+ "ashpd 0.11.0",
"async-tar",
"async-trait",
"cocoa 0.26.0",
@@ -6062,8 +6413,7 @@ dependencies = [
"text",
"time",
"util",
- "windows 0.61.1",
- "workspace-hack",
+ "windows 0.61.3",
]
[[package]]
@@ -6073,7 +6423,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94e7099f6313ecacbe1256e8ff9d617b75d1bcb16a6fddef94866d225a01a14a"
dependencies = [
"io-lifetimes",
- "rustix 1.0.7",
+ "rustix 1.1.2",
"windows-sys 0.59.0",
]
@@ -6087,6 +6437,24 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "fs4"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4"
+dependencies = [
+ "rustix 1.1.2",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "fs_benchmarks"
+version = "0.1.0"
+dependencies = [
+ "fs",
+ "gpui",
+]
+
[[package]]
name = "fs_extra"
version = "1.3.0"
@@ -6097,12 +6465,12 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
name = "fsevent"
version = "0.1.0"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.10.0",
"fsevent-sys 3.1.0",
+ "log",
"parking_lot",
"tempfile",
- "workspace-hack",
]
[[package]]
@@ -6160,17 +6528,6 @@ dependencies = [
"futures-util",
]
-[[package]]
-name = "futures-batch"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f444c45a1cb86f2a7e301469fd50a82084a60dadc25d94529a8312276ecb71a"
-dependencies = [
- "futures 0.3.31",
- "futures-timer",
- "pin-utils",
-]
-
[[package]]
name = "futures-channel"
version = "0.3.31"
@@ -6232,9 +6589,9 @@ dependencies = [
[[package]]
name = "futures-lite"
-version = "2.6.0"
+version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
dependencies = [
"fastrand 2.3.0",
"futures-core",
@@ -6251,7 +6608,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -6266,12 +6623,6 @@ version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
-[[package]]
-name = "futures-timer"
-version = "3.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
-
[[package]]
name = "futures-util"
version = "0.3.31"
@@ -6299,7 +6650,6 @@ dependencies = [
"gpui",
"log",
"util",
- "workspace-hack",
]
[[package]]
@@ -6312,17 +6662,249 @@ dependencies = [
]
[[package]]
-name = "generator"
-version = "0.8.5"
+name = "fxhash"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827"
+checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
dependencies = [
- "cc",
- "cfg-if",
- "libc",
- "log",
- "rustversion",
- "windows 0.61.1",
+ "byteorder",
+]
+
+[[package]]
+name = "gemm"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ab24cc62135b40090e31a76a9b2766a501979f3070fa27f689c27ec04377d32"
+dependencies = [
+ "dyn-stack 0.10.0",
+ "gemm-c32 0.17.1",
+ "gemm-c64 0.17.1",
+ "gemm-common 0.17.1",
+ "gemm-f16 0.17.1",
+ "gemm-f32 0.17.1",
+ "gemm-f64 0.17.1",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab96b703d31950f1aeddded248bc95543c9efc7ac9c4a21fda8703a83ee35451"
+dependencies = [
+ "dyn-stack 0.13.2",
+ "gemm-c32 0.18.2",
+ "gemm-c64 0.18.2",
+ "gemm-common 0.18.2",
+ "gemm-f16 0.18.2",
+ "gemm-f32 0.18.2",
+ "gemm-f64 0.18.2",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 11.6.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-c32"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9c030d0b983d1e34a546b86e08f600c11696fde16199f971cd46c12e67512c0"
+dependencies = [
+ "dyn-stack 0.10.0",
+ "gemm-common 0.17.1",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-c32"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6db9fd9f40421d00eea9dd0770045a5603b8d684654816637732463f4073847"
+dependencies = [
+ "dyn-stack 0.13.2",
+ "gemm-common 0.18.2",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 11.6.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-c64"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb5f2e79fefb9693d18e1066a557b4546cd334b226beadc68b11a8f9431852a"
+dependencies = [
+ "dyn-stack 0.10.0",
+ "gemm-common 0.17.1",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-c64"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfcad8a3d35a43758330b635d02edad980c1e143dc2f21e6fd25f9e4eada8edf"
+dependencies = [
+ "dyn-stack 0.13.2",
+ "gemm-common 0.18.2",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 11.6.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-common"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2e7ea062c987abcd8db95db917b4ffb4ecdfd0668471d8dc54734fdff2354e8"
+dependencies = [
+ "bytemuck",
+ "dyn-stack 0.10.0",
+ "half",
+ "num-complex",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "pulp 0.18.22",
+ "raw-cpuid 10.7.0",
+ "rayon",
+ "seq-macro",
+ "sysctl 0.5.5",
+]
+
+[[package]]
+name = "gemm-common"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a352d4a69cbe938b9e2a9cb7a3a63b7e72f9349174a2752a558a8a563510d0f3"
+dependencies = [
+ "bytemuck",
+ "dyn-stack 0.13.2",
+ "half",
+ "libm",
+ "num-complex",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "pulp 0.21.5",
+ "raw-cpuid 11.6.0",
+ "rayon",
+ "seq-macro",
+ "sysctl 0.6.0",
+]
+
+[[package]]
+name = "gemm-f16"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ca4c06b9b11952071d317604acb332e924e817bd891bec8dfb494168c7cedd4"
+dependencies = [
+ "dyn-stack 0.10.0",
+ "gemm-common 0.17.1",
+ "gemm-f32 0.17.1",
+ "half",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "rayon",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f16"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cff95ae3259432f3c3410eaa919033cd03791d81cebd18018393dc147952e109"
+dependencies = [
+ "dyn-stack 0.13.2",
+ "gemm-common 0.18.2",
+ "gemm-f32 0.18.2",
+ "half",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 11.6.0",
+ "rayon",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f32"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9a69f51aaefbd9cf12d18faf273d3e982d9d711f60775645ed5c8047b4ae113"
+dependencies = [
+ "dyn-stack 0.10.0",
+ "gemm-common 0.17.1",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f32"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc8d3d4385393304f407392f754cd2dc4b315d05063f62cf09f47b58de276864"
+dependencies = [
+ "dyn-stack 0.13.2",
+ "gemm-common 0.18.2",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 11.6.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f64"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa397a48544fadf0b81ec8741e5c0fba0043008113f71f2034def1935645d2b0"
+dependencies = [
+ "dyn-stack 0.10.0",
+ "gemm-common 0.17.1",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 10.7.0",
+ "seq-macro",
+]
+
+[[package]]
+name = "gemm-f64"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35b2a4f76ce4b8b16eadc11ccf2e083252d8237c1b589558a49b0183545015bd"
+dependencies = [
+ "dyn-stack 0.13.2",
+ "gemm-common 0.18.2",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "raw-cpuid 11.6.0",
+ "seq-macro",
]
[[package]]
@@ -6337,46 +6919,73 @@ dependencies = [
[[package]]
name = "gethostname"
-version = "0.4.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
dependencies = [
- "libc",
- "windows-targets 0.48.5",
+ "rustix 1.1.2",
+ "windows-link 0.2.1",
]
[[package]]
name = "getrandom"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
dependencies = [
"cfg-if",
"js-sys",
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
"wasm-bindgen",
]
[[package]]
name = "getrandom"
-version = "0.3.2"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
"js-sys",
"libc",
"r-efi",
- "wasi 0.14.2+wasi-0.2.4",
+ "wasip2",
"wasm-bindgen",
]
+[[package]]
+name = "gh-workflow"
+version = "0.8.0"
+source = "git+https://github.com/zed-industries/gh-workflow?rev=0090c6b6ef82fff02bc8616645953e778d1acc08#0090c6b6ef82fff02bc8616645953e778d1acc08"
+dependencies = [
+ "async-trait",
+ "derive_more 2.0.1",
+ "derive_setters",
+ "gh-workflow-macros",
+ "indexmap 2.11.4",
+ "merge",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "strum_macros 0.27.2",
+]
+
+[[package]]
+name = "gh-workflow-macros"
+version = "0.8.0"
+source = "git+https://github.com/zed-industries/gh-workflow?rev=0090c6b6ef82fff02bc8616645953e778d1acc08#0090c6b6ef82fff02bc8616645953e778d1acc08"
+dependencies = [
+ "heck 0.5.0",
+ "quote",
+ "syn 2.0.106",
+]
+
[[package]]
name = "gif"
-version = "0.13.1"
+version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2"
+checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b"
dependencies = [
"color_quant",
"weezl",
@@ -6389,10 +6998,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
dependencies = [
"fallible-iterator",
- "indexmap",
+ "indexmap 2.11.4",
"stable_deref_trait",
]
+[[package]]
+name = "gimli"
+version = "0.32.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
+
[[package]]
name = "git"
version = "0.1.0"
@@ -6401,40 +7016,41 @@ dependencies = [
"askpass",
"async-trait",
"collections",
- "derive_more 0.99.19",
+ "derive_more 0.99.20",
"futures 0.3.31",
"git2",
"gpui",
"http_client",
+ "itertools 0.14.0",
"log",
"parking_lot",
"pretty_assertions",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"rope",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"smol",
"sum_tree",
"tempfile",
"text",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"unindent",
"url",
+ "urlencoding",
"util",
"uuid",
- "workspace-hack",
]
[[package]]
name = "git2"
-version = "0.20.1"
+version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5220b8ba44c68a9a7f7a7659e864dd73692e417ef0211bea133c7b74e031eeb9"
+checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"libc",
"libgit2-sys",
"log",
@@ -6454,13 +7070,11 @@ dependencies = [
"indoc",
"pretty_assertions",
"regex",
- "schemars",
"serde",
"serde_json",
"settings",
"url",
"util",
- "workspace-hack",
]
[[package]]
@@ -6496,15 +7110,13 @@ dependencies = [
"notifications",
"panel",
"picker",
- "postage",
"pretty_assertions",
"project",
- "schemars",
+ "schemars 1.0.4",
"serde",
- "serde_derive",
"serde_json",
"settings",
- "strum 0.27.1",
+ "strum 0.27.2",
"telemetry",
"theme",
"time",
@@ -6513,809 +7125,49 @@ dependencies = [
"unindent",
"util",
"watch",
- "windows 0.61.1",
+ "windows 0.61.3",
"workspace",
- "workspace-hack",
"zed_actions",
+ "zeroize",
"zlog",
]
[[package]]
-name = "gix"
-version = "0.71.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a61e71ec6817fc3c9f12f812682cfe51ee6ea0d2e27e02fc3849c35524617435"
-dependencies = [
- "gix-actor",
- "gix-attributes",
- "gix-command",
- "gix-commitgraph",
- "gix-config",
- "gix-date",
- "gix-diff",
- "gix-discover",
- "gix-features 0.41.1",
- "gix-filter",
- "gix-fs 0.14.0",
- "gix-glob",
- "gix-hash 0.17.0",
- "gix-hashtable",
- "gix-ignore",
- "gix-index",
- "gix-lock",
- "gix-object",
- "gix-odb",
- "gix-pack",
- "gix-path",
- "gix-pathspec",
- "gix-protocol",
- "gix-ref",
- "gix-refspec",
- "gix-revision",
- "gix-revwalk",
- "gix-sec",
- "gix-shallow",
- "gix-submodule",
- "gix-tempfile",
- "gix-trace",
- "gix-traverse",
- "gix-url",
- "gix-utils 0.2.0",
- "gix-validate 0.9.4",
- "gix-worktree",
- "once_cell",
- "smallvec",
- "thiserror 2.0.12",
-]
+name = "glob"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]]
-name = "gix-actor"
-version = "0.34.0"
+name = "globset"
+version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f438c87d4028aca4b82f82ba8d8ab1569823cfb3e5bc5fa8456a71678b2a20e7"
+checksum = "eab69130804d941f8075cfd713bf8848a2c3b3f201a9457a11e6f87e1ab62305"
dependencies = [
+ "aho-corasick",
"bstr",
- "gix-date",
- "gix-utils 0.2.0",
- "itoa",
- "thiserror 2.0.12",
- "winnow",
+ "log",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
-name = "gix-attributes"
-version = "0.25.0"
+name = "gloo-timers"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4e25825e0430aa11096f8b65ced6780d4a96a133f81904edceebb5344c8dd7f"
+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
dependencies = [
- "bstr",
- "gix-glob",
- "gix-path",
- "gix-quote",
- "gix-trace",
- "kstring",
- "smallvec",
- "thiserror 2.0.12",
- "unicode-bom",
-]
-
-[[package]]
-name = "gix-bitmap"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1db9765c69502650da68f0804e3dc2b5f8ccc6a2d104ca6c85bc40700d37540"
-dependencies = [
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-chunk"
-version = "0.4.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b1f1d8764958699dc764e3f727cef280ff4d1bd92c107bbf8acd85b30c1bd6f"
-dependencies = [
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-command"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0378995847773a697f8e157fe2963ecf3462fe64be05b7b3da000b3b472def8"
-dependencies = [
- "bstr",
- "gix-path",
- "gix-quote",
- "gix-trace",
- "shell-words",
-]
-
-[[package]]
-name = "gix-commitgraph"
-version = "0.27.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "043cbe49b7a7505150db975f3cb7c15833335ac1e26781f615454d9d640a28fe"
-dependencies = [
- "bstr",
- "gix-chunk",
- "gix-hash 0.17.0",
- "memmap2",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-config"
-version = "0.44.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c6f830bf746604940261b49abf7f655d2c19cadc9f4142ae9379e3a316e8cfa"
-dependencies = [
- "bstr",
- "gix-config-value",
- "gix-features 0.41.1",
- "gix-glob",
- "gix-path",
- "gix-ref",
- "gix-sec",
- "memchr",
- "once_cell",
- "smallvec",
- "thiserror 2.0.12",
- "unicode-bom",
- "winnow",
-]
-
-[[package]]
-name = "gix-config-value"
-version = "0.14.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8dc2c844c4cf141884678cabef736fd91dd73068b9146e6f004ba1a0457944b6"
-dependencies = [
- "bitflags 2.9.0",
- "bstr",
- "gix-path",
- "libc",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-date"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daa30058ec7d3511fbc229e4f9e696a35abd07ec5b82e635eff864a2726217e4"
-dependencies = [
- "bstr",
- "itoa",
- "jiff",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-diff"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2c975dad2afc85e4e233f444d1efbe436c3cdcf3a07173984509c436d00a3f8"
-dependencies = [
- "bstr",
- "gix-command",
- "gix-filter",
- "gix-fs 0.14.0",
- "gix-hash 0.17.0",
- "gix-object",
- "gix-path",
- "gix-tempfile",
- "gix-trace",
- "gix-traverse",
- "gix-worktree",
- "imara-diff",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-discover"
-version = "0.39.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7fb8a4349b854506a3915de18d3341e5f1daa6b489c8affc9ca0d69efe86781"
-dependencies = [
- "bstr",
- "dunce",
- "gix-fs 0.14.0",
- "gix-hash 0.17.0",
- "gix-path",
- "gix-ref",
- "gix-sec",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-features"
-version = "0.41.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "016d6050219458d14520fe22bdfdeb9cb71631dec9bc2724767c983f60109634"
-dependencies = [
- "crc32fast",
- "crossbeam-channel",
- "flate2",
- "gix-path",
- "gix-trace",
- "gix-utils 0.2.0",
- "libc",
- "once_cell",
- "parking_lot",
- "prodash",
- "thiserror 2.0.12",
- "walkdir",
-]
-
-[[package]]
-name = "gix-features"
-version = "0.42.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56f4399af6ec4fd9db84dd4cf9656c5c785ab492ab40a7c27ea92b4241923fed"
-dependencies = [
- "gix-trace",
- "gix-utils 0.3.0",
- "libc",
- "prodash",
-]
-
-[[package]]
-name = "gix-filter"
-version = "0.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb2b2bbffdc5cc9b2b82fc82da1b98163c9b423ac2b45348baa83a947ac9ab89"
-dependencies = [
- "bstr",
- "encoding_rs",
- "gix-attributes",
- "gix-command",
- "gix-hash 0.17.0",
- "gix-object",
- "gix-packetline-blocking",
- "gix-path",
- "gix-quote",
- "gix-trace",
- "gix-utils 0.2.0",
- "smallvec",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-fs"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "951e886120dc5fa8cac053e5e5c89443f12368ca36811b2e43d1539081f9c111"
-dependencies = [
- "bstr",
- "fastrand 2.3.0",
- "gix-features 0.41.1",
- "gix-path",
- "gix-utils 0.2.0",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-fs"
-version = "0.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67a0637149b4ef24d3ea55f81f77231401c8463fae6da27331c987957eb597c7"
-dependencies = [
- "bstr",
- "fastrand 2.3.0",
- "gix-features 0.42.1",
- "gix-path",
- "gix-utils 0.3.0",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-glob"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20972499c03473e773a2099e5fd0c695b9b72465837797a51a43391a1635a030"
-dependencies = [
- "bitflags 2.9.0",
- "bstr",
- "gix-features 0.41.1",
- "gix-path",
-]
-
-[[package]]
-name = "gix-hash"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "834e79722063958b03342edaa1e17595cd2939bb2b3306b3225d0815566dcb49"
-dependencies = [
- "faster-hex 0.9.0",
- "gix-features 0.41.1",
- "sha1-checked",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-hash"
-version = "0.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d4900562c662852a6b42e2ef03442eccebf24f047d8eab4f23bc12ef0d785d8"
-dependencies = [
- "faster-hex 0.10.0",
- "gix-features 0.42.1",
- "sha1-checked",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-hashtable"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5b5cb3c308b4144f2612ff64e32130e641279fcf1a84d8d40dad843b4f64904"
-dependencies = [
- "gix-hash 0.18.0",
- "hashbrown 0.14.5",
- "parking_lot",
-]
-
-[[package]]
-name = "gix-ignore"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a27c8380f493a10d1457f756a3f81924d578fc08d6535e304dfcafbf0261d18"
-dependencies = [
- "bstr",
- "gix-glob",
- "gix-path",
- "gix-trace",
- "unicode-bom",
-]
-
-[[package]]
-name = "gix-index"
-version = "0.39.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "855bece2d4153453aa5d0a80d51deea1ce8cd6a3b4cf213da85ac344ccb908a7"
-dependencies = [
- "bitflags 2.9.0",
- "bstr",
- "filetime",
- "fnv",
- "gix-bitmap",
- "gix-features 0.41.1",
- "gix-fs 0.14.0",
- "gix-hash 0.17.0",
- "gix-lock",
- "gix-object",
- "gix-traverse",
- "gix-utils 0.2.0",
- "gix-validate 0.9.4",
- "hashbrown 0.14.5",
- "itoa",
- "libc",
- "memmap2",
- "rustix 0.38.44",
- "smallvec",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-lock"
-version = "17.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "570f8b034659f256366dc90f1a24924902f20acccd6a15be96d44d1269e7a796"
-dependencies = [
- "gix-tempfile",
- "gix-utils 0.3.0",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-object"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4943fcdae6ffc135920c9ea71e0362ed539182924ab7a85dd9dac8d89b0dd69a"
-dependencies = [
- "bstr",
- "gix-actor",
- "gix-date",
- "gix-features 0.41.1",
- "gix-hash 0.17.0",
- "gix-hashtable",
- "gix-path",
- "gix-utils 0.2.0",
- "gix-validate 0.9.4",
- "itoa",
- "smallvec",
- "thiserror 2.0.12",
- "winnow",
-]
-
-[[package]]
-name = "gix-odb"
-version = "0.68.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50306d40dcc982eb6b7593103f066ea6289c7b094cb9db14f3cd2be0b9f5e610"
-dependencies = [
- "arc-swap",
- "gix-date",
- "gix-features 0.41.1",
- "gix-fs 0.14.0",
- "gix-hash 0.17.0",
- "gix-hashtable",
- "gix-object",
- "gix-pack",
- "gix-path",
- "gix-quote",
- "parking_lot",
- "tempfile",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-pack"
-version = "0.58.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b65fffb09393c26624ca408d32cfe8776fb94cd0a5cdf984905e1d2f39779cb"
-dependencies = [
- "clru",
- "gix-chunk",
- "gix-features 0.41.1",
- "gix-hash 0.17.0",
- "gix-hashtable",
- "gix-object",
- "gix-path",
- "memmap2",
- "smallvec",
- "thiserror 2.0.12",
- "uluru",
-]
-
-[[package]]
-name = "gix-packetline"
-version = "0.18.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "123844a70cf4d5352441dc06bab0da8aef61be94ec239cb631e0ba01dc6d3a04"
-dependencies = [
- "bstr",
- "faster-hex 0.9.0",
- "gix-trace",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-packetline-blocking"
-version = "0.18.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ecf3ea2e105c7e45587bac04099824301262a6c43357fad5205da36dbb233b3"
-dependencies = [
- "bstr",
- "faster-hex 0.9.0",
- "gix-trace",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-path"
-version = "0.10.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567f65fec4ef10dfab97ae71f26a27fd4d7fe7b8e3f90c8a58551c41ff3fb65b"
-dependencies = [
- "bstr",
- "gix-trace",
- "gix-validate 0.10.0",
- "home",
- "once_cell",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-pathspec"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fef8422c3c9066d649074b24025125963f85232bfad32d6d16aea9453b82ec14"
-dependencies = [
- "bitflags 2.9.0",
- "bstr",
- "gix-attributes",
- "gix-config-value",
- "gix-glob",
- "gix-path",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-protocol"
-version = "0.49.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5678ddae1d62880bc30e2200be1b9387af3372e0e88e21f81b4e7f8367355b5a"
-dependencies = [
- "bstr",
- "gix-date",
- "gix-features 0.41.1",
- "gix-hash 0.17.0",
- "gix-ref",
- "gix-shallow",
- "gix-transport",
- "gix-utils 0.2.0",
- "maybe-async",
- "thiserror 2.0.12",
- "winnow",
-]
-
-[[package]]
-name = "gix-quote"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b005c550bf84de3b24aa5e540a23e6146a1c01c7d30470e35d75a12f827f969"
-dependencies = [
- "bstr",
- "gix-utils 0.2.0",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-ref"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2e1f7eb6b7ce82d2d19961f74bd637bab3ea79b1bc7bfb23dbefc67b0415d8b"
-dependencies = [
- "gix-actor",
- "gix-features 0.41.1",
- "gix-fs 0.14.0",
- "gix-hash 0.17.0",
- "gix-lock",
- "gix-object",
- "gix-path",
- "gix-tempfile",
- "gix-utils 0.2.0",
- "gix-validate 0.9.4",
- "memmap2",
- "thiserror 2.0.12",
- "winnow",
-]
-
-[[package]]
-name = "gix-refspec"
-version = "0.29.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d8587b21e2264a6e8938d940c5c99662779c13a10741a5737b15fc85c252ffc"
-dependencies = [
- "bstr",
- "gix-hash 0.17.0",
- "gix-revision",
- "gix-validate 0.9.4",
- "smallvec",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-revision"
-version = "0.33.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "342caa4e158df3020cadf62f656307c3948fe4eacfdf67171d7212811860c3e9"
-dependencies = [
- "bstr",
- "gix-commitgraph",
- "gix-date",
- "gix-hash 0.17.0",
- "gix-object",
- "gix-revwalk",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-revwalk"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dc7c3d7e5cdc1ab8d35130106e4af0a4f9f9eca0c81f4312b690780e92bde0d"
-dependencies = [
- "gix-commitgraph",
- "gix-date",
- "gix-hash 0.17.0",
- "gix-hashtable",
- "gix-object",
- "smallvec",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-sec"
-version = "0.10.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47aeb0f13de9ef2f3033f5ff218de30f44db827ac9f1286f9ef050aacddd5888"
-dependencies = [
- "bitflags 2.9.0",
- "gix-path",
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "gix-shallow"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc0598aacfe1d52575a21c9492fee086edbb21e228ec36c819c42ab923f434c3"
-dependencies = [
- "bstr",
- "gix-hash 0.17.0",
- "gix-lock",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-submodule"
-version = "0.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78c7390c2059505c365e9548016d4edc9f35749c6a9112b7b1214400bbc68da2"
-dependencies = [
- "bstr",
- "gix-config",
- "gix-path",
- "gix-pathspec",
- "gix-refspec",
- "gix-url",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-tempfile"
-version = "17.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c750e8c008453a2dba67a2b0d928b7716e05da31173a3f5e351d5457ad4470aa"
-dependencies = [
- "dashmap 6.1.0",
- "gix-fs 0.15.0",
- "libc",
- "once_cell",
- "parking_lot",
- "tempfile",
-]
-
-[[package]]
-name = "gix-trace"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c396a2036920c69695f760a65e7f2677267ccf483f25046977d87e4cb2665f7"
-
-[[package]]
-name = "gix-transport"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3f68c2870bfca8278389d2484a7f2215b67d0b0cc5277d3c72ad72acf41787e"
-dependencies = [
- "bstr",
- "gix-command",
- "gix-features 0.41.1",
- "gix-packetline",
- "gix-quote",
- "gix-sec",
- "gix-url",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-traverse"
-version = "0.45.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36c0b049f8bdb61b20016694102f7b507f2e1727e83e9c5e6dad4f7d84ff7384"
-dependencies = [
- "bitflags 2.9.0",
- "gix-commitgraph",
- "gix-date",
- "gix-hash 0.17.0",
- "gix-hashtable",
- "gix-object",
- "gix-revwalk",
- "smallvec",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-url"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48dfe23f93f1ddb84977d80bb0dd7aa09d1bf5d5afc0c9b6820cccacc25ae860"
-dependencies = [
- "bstr",
- "gix-features 0.41.1",
- "gix-path",
- "percent-encoding",
- "thiserror 2.0.12",
- "url",
-]
-
-[[package]]
-name = "gix-utils"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "189f8724cf903e7fd57cfe0b7bc209db255cacdcb22c781a022f52c3a774f8d0"
-dependencies = [
- "fastrand 2.3.0",
- "unicode-normalization",
-]
-
-[[package]]
-name = "gix-utils"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5351af2b172caf41a3728eb4455326d84e0d70fe26fc4de74ab0bd37df4191c5"
-dependencies = [
- "fastrand 2.3.0",
- "unicode-normalization",
-]
-
-[[package]]
-name = "gix-validate"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34b5f1253109da6c79ed7cf6e1e38437080bb6d704c76af14c93e2f255234084"
-dependencies = [
- "bstr",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-validate"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77b9e00cacde5b51388d28ed746c493b18a6add1f19b5e01d686b3b9ece66d4d"
-dependencies = [
- "bstr",
- "thiserror 2.0.12",
-]
-
-[[package]]
-name = "gix-worktree"
-version = "0.40.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7760dbc4b79aa274fed30adc0d41dca6b917641f26e7867c4071b1fb4dc727b"
-dependencies = [
- "bstr",
- "gix-attributes",
- "gix-features 0.41.1",
- "gix-fs 0.14.0",
- "gix-glob",
- "gix-hash 0.17.0",
- "gix-ignore",
- "gix-index",
- "gix-object",
- "gix-path",
- "gix-validate 0.9.4",
-]
-
-[[package]]
-name = "glob"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
-
-[[package]]
-name = "globset"
-version = "0.4.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5"
-dependencies = [
- "aho-corasick",
- "bstr",
- "log",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
-]
-
-[[package]]
-name = "gloo-timers"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"
-dependencies = [
- "futures-channel",
- "futures-core",
- "js-sys",
- "wasm-bindgen",
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
]
[[package]]
name = "glow"
-version = "0.14.2"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483"
+checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08"
dependencies = [
"js-sys",
"slotmap",
@@ -7327,7 +7179,6 @@ dependencies = [
name = "go_to_line"
version = "0.1.0"
dependencies = [
- "anyhow",
"editor",
"gpui",
"indoc",
@@ -7335,7 +7186,6 @@ dependencies = [
"menu",
"project",
"rope",
- "schemars",
"serde",
"serde_json",
"settings",
@@ -7346,7 +7196,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -7367,11 +7216,11 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "strum 0.27.1",
- "workspace-hack",
+ "settings",
+ "strum 0.27.2",
]
[[package]]
@@ -7380,7 +7229,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"gpu-alloc-types",
]
@@ -7401,19 +7250,20 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
]
[[package]]
name = "gpui"
-version = "0.1.0"
+version = "0.2.2"
dependencies = [
"anyhow",
"as-raw-xcb-connection",
- "ashpd",
+ "ashpd 0.11.0",
"async-task",
"backtrace",
"bindgen 0.71.1",
+ "bitflags 2.9.4",
"blade-graphics",
"blade-macros",
"blade-util",
@@ -7423,6 +7273,7 @@ dependencies = [
"calloop-wayland-source",
"cbindgen",
"cocoa 0.26.0",
+ "cocoa-foundation 0.2.0",
"collections",
"core-foundation 0.10.0",
"core-foundation-sys",
@@ -7431,13 +7282,12 @@ dependencies = [
"core-video",
"cosmic-text",
"ctor",
- "derive_more 0.99.19",
+ "derive_more 0.99.20",
"embed-resource",
"env_logger 0.11.8",
"etagere",
"filedescriptor",
"flume",
- "font-kit",
"foreign-types 0.5.0",
"futures 0.3.31",
"gpui_macros",
@@ -7460,46 +7310,50 @@ dependencies = [
"parking",
"parking_lot",
"pathfinder_geometry",
+ "pin-project",
"postage",
+ "pretty_assertions",
"profiling",
- "rand 0.8.5",
+ "rand 0.9.2",
"raw-window-handle",
"refineable",
"reqwest_client",
"resvg",
- "scap",
- "schemars",
+ "schemars 1.0.4",
"seahash",
"semantic_version",
"serde",
- "serde_derive",
"serde_json",
"slotmap",
"smallvec",
"smol",
- "strum 0.27.1",
+ "stacksafe",
+ "strum 0.27.2",
"sum_tree",
"taffy",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"unicode-segmentation",
"usvg",
"util",
+ "util_macros",
"uuid",
"waker-fn",
"wayland-backend",
"wayland-client",
"wayland-cursor",
- "wayland-protocols",
+ "wayland-protocols 0.31.2",
"wayland-protocols-plasma",
- "windows 0.61.1",
- "windows-core 0.61.0",
+ "wayland-protocols-wlr",
+ "windows 0.61.3",
+ "windows-core 0.61.2",
"windows-numerics",
- "windows-registry 0.5.1",
- "workspace-hack",
+ "windows-registry 0.5.3",
"x11-clipboard",
"x11rb",
- "xim",
"xkbcommon",
+ "zed-font-kit",
+ "zed-scap",
+ "zed-xim",
]
[[package]]
@@ -7510,18 +7364,17 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.101",
- "workspace-hack",
+ "syn 2.0.106",
]
[[package]]
name = "gpui_tokio"
version = "0.1.0"
dependencies = [
+ "anyhow",
"gpui",
"tokio",
"util",
- "workspace-hack",
]
[[package]]
@@ -7543,9 +7396,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.3.26"
+version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
dependencies = [
"bytes 1.10.1",
"fnv",
@@ -7553,7 +7406,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http 0.2.12",
- "indexmap",
+ "indexmap 2.11.4",
"slab",
"tokio",
"tokio-util",
@@ -7562,9 +7415,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.4.9"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633"
+checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
dependencies = [
"atomic-waker",
"bytes 1.10.1",
@@ -7572,7 +7425,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http 1.3.1",
- "indexmap",
+ "indexmap 2.11.4",
"slab",
"tokio",
"tokio-util",
@@ -7581,13 +7434,17 @@ dependencies = [
[[package]]
name = "half"
-version = "2.6.0"
+version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9"
+checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
dependencies = [
+ "bytemuck",
"cfg-if",
"crunchy",
"num-traits",
+ "rand 0.9.2",
+ "rand_distr",
+ "zerocopy",
]
[[package]]
@@ -7619,15 +7476,6 @@ dependencies = [
"thiserror 1.0.69",
]
-[[package]]
-name = "hash32"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
-dependencies = [
- "byteorder",
-]
-
[[package]]
name = "hashbrown"
version = "0.12.3"
@@ -7643,19 +7491,20 @@ version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [
- "ahash 0.8.11",
+ "ahash 0.8.12",
"allocator-api2",
]
[[package]]
name = "hashbrown"
-version = "0.15.3"
+version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
dependencies = [
"allocator-api2",
"equivalent",
- "foldhash",
+ "foldhash 0.1.5",
+ "rayon",
"serde",
]
@@ -7674,7 +7523,7 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
dependencies = [
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
]
[[package]]
@@ -7701,16 +7550,6 @@ dependencies = [
"http 0.2.12",
]
-[[package]]
-name = "heapless"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
-dependencies = [
- "hash32",
- "stable_deref_trait",
-]
-
[[package]]
name = "heck"
version = "0.3.3"
@@ -7741,7 +7580,7 @@ version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd54745cfacb7b97dee45e8fdb91814b62bccddb481debb7de0f9ee6b7bf5b43"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"byteorder",
"heed-traits",
"heed-types",
@@ -7766,7 +7605,7 @@ version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c255bdf46e07fb840d120a36dcc81f385140d7191c76a7391672675c01a55d"
dependencies = [
- "bincode",
+ "bincode 1.3.3",
"byteorder",
"heed-traits",
"serde",
@@ -7775,21 +7614,9 @@ dependencies = [
[[package]]
name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "hermit-abi"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
-
-[[package]]
-name = "hermit-abi"
-version = "0.5.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e"
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
[[package]]
name = "hex"
@@ -7858,18 +7685,17 @@ dependencies = [
"markup5ever 0.12.1",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "html5ever"
-version = "0.31.0"
+version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "953cbbe631aae7fc0a112702ad5d3aaf09da38beaf45ea84610d6e1c358f569c"
+checksum = "55d958c2f74b664487a2035fe1dadb032c48718a03b63f3ab0b8537db8549ed4"
dependencies = [
"log",
- "mac",
- "markup5ever 0.16.1",
+ "markup5ever 0.35.0",
"match_token",
]
@@ -7883,7 +7709,6 @@ dependencies = [
"markup5ever_rcdom",
"pretty_assertions",
"regex",
- "workspace-hack",
]
[[package]]
@@ -7953,27 +7778,31 @@ name = "http_client"
version = "0.1.0"
dependencies = [
"anyhow",
+ "async-compression",
+ "async-fs",
+ "async-tar",
"bytes 1.10.1",
- "derive_more 0.99.19",
+ "derive_more 0.99.20",
"futures 0.3.31",
"http 1.3.1",
"http-body 1.0.1",
"log",
"parking_lot",
- "reqwest 0.12.15 (git+https://github.com/zed-industries/reqwest.git?rev=951c770a32f1998d6e999cef3e59e0013e6c4415)",
"serde",
"serde_json",
+ "sha2",
+ "tempfile",
"url",
- "workspace-hack",
+ "util",
+ "zed-reqwest",
]
[[package]]
name = "http_client_tls"
version = "0.1.0"
dependencies = [
- "rustls 0.23.26",
+ "rustls 0.23.33",
"rustls-platform-verifier",
- "workspace-hack",
]
[[package]]
@@ -7996,9 +7825,9 @@ checksum = "91f255a4535024abf7640cb288260811fc14794f62b063652ed349f9a6c2348e"
[[package]]
name = "humantime"
-version = "2.2.0"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f"
+checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
[[package]]
name = "hyper"
@@ -8010,14 +7839,14 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.3.26",
+ "h2 0.3.27",
"http 0.2.12",
"http-body 0.4.6",
"httparse",
"httpdate",
"itoa",
"pin-project-lite",
- "socket2",
+ "socket2 0.5.10",
"tokio",
"tower-service",
"tracing",
@@ -8026,19 +7855,21 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.6.0"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
+checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
dependencies = [
+ "atomic-waker",
"bytes 1.10.1",
"futures-channel",
- "futures-util",
- "h2 0.4.9",
+ "futures-core",
+ "h2 0.4.12",
"http 1.3.1",
"http-body 1.0.1",
"httparse",
"itoa",
"pin-project-lite",
+ "pin-utils",
"smallvec",
"tokio",
"want",
@@ -8062,16 +7893,15 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.27.5"
+version = "0.27.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
dependencies = [
- "futures-util",
"http 1.3.1",
- "hyper 1.6.0",
+ "hyper 1.7.0",
"hyper-util",
- "rustls 0.23.26",
- "rustls-native-certs 0.8.1",
+ "rustls 0.23.33",
+ "rustls-native-certs 0.8.2",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.2",
@@ -8093,19 +7923,23 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.11"
+version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2"
+checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
dependencies = [
+ "base64 0.22.1",
"bytes 1.10.1",
"futures-channel",
+ "futures-core",
"futures-util",
"http 1.3.1",
"http-body 1.0.1",
- "hyper 1.6.0",
+ "hyper 1.7.0",
+ "ipnet",
"libc",
+ "percent-encoding",
"pin-project-lite",
- "socket2",
+ "socket2 0.6.1",
"tokio",
"tower-service",
"tracing",
@@ -8113,9 +7947,9 @@ dependencies = [
[[package]]
name = "iana-time-zone"
-version = "0.1.63"
+version = "0.1.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
+checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
dependencies = [
"android_system_properties",
"core-foundation-sys",
@@ -8123,7 +7957,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
- "windows-core 0.61.0",
+ "windows-core 0.62.2",
]
[[package]]
@@ -8140,60 +7974,40 @@ name = "icons"
version = "0.1.0"
dependencies = [
"serde",
- "strum 0.27.1",
- "workspace-hack",
+ "strum 0.27.2",
]
[[package]]
name = "icu_collections"
-version = "1.5.0"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
dependencies = [
"displaydoc",
- "yoke",
+ "potential_utf",
+ "yoke 0.8.0",
"zerofrom",
"zerovec",
]
[[package]]
-name = "icu_locid"
-version = "1.5.0"
+name = "icu_locale_core"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
dependencies = [
"displaydoc",
"litemap",
"tinystr",
"writeable",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid_transform"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
-dependencies = [
- "displaydoc",
- "icu_locid",
- "icu_locid_transform_data",
- "icu_provider",
- "tinystr",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid_transform_data"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d"
+ "zerovec",
+]
[[package]]
name = "icu_normalizer"
-version = "1.5.0"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
dependencies = [
"displaydoc",
"icu_collections",
@@ -8201,78 +8015,71 @@ dependencies = [
"icu_properties",
"icu_provider",
"smallvec",
- "utf16_iter",
- "utf8_iter",
- "write16",
"zerovec",
]
[[package]]
name = "icu_normalizer_data"
-version = "1.5.1"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7"
+checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
[[package]]
name = "icu_properties"
-version = "1.5.1"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
+checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
dependencies = [
"displaydoc",
"icu_collections",
- "icu_locid_transform",
+ "icu_locale_core",
"icu_properties_data",
"icu_provider",
- "tinystr",
+ "potential_utf",
+ "zerotrie",
"zerovec",
]
[[package]]
name = "icu_properties_data"
-version = "1.5.1"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2"
+checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
[[package]]
name = "icu_provider"
-version = "1.5.0"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
dependencies = [
"displaydoc",
- "icu_locid",
- "icu_provider_macros",
+ "icu_locale_core",
"stable_deref_trait",
"tinystr",
"writeable",
- "yoke",
+ "yoke 0.8.0",
"zerofrom",
+ "zerotrie",
"zerovec",
]
-[[package]]
-name = "icu_provider_macros"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
[[package]]
name = "id-arena"
version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
[[package]]
name = "idna"
-version = "1.0.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
dependencies = [
"idna_adapter",
"smallvec",
@@ -8281,9 +8088,9 @@ dependencies = [
[[package]]
name = "idna_adapter"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
dependencies = [
"icu_normalizer",
"icu_properties",
@@ -8291,15 +8098,15 @@ dependencies = [
[[package]]
name = "ignore"
-version = "0.4.23"
+version = "0.4.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b"
+checksum = "81776e6f9464432afcc28d03e52eb101c93b6f0566f52aef2427663e700f0403"
dependencies = [
"crossbeam-deque",
"globset",
"log",
"memchr",
- "regex-automata 0.4.9",
+ "regex-automata",
"same-file",
"walkdir",
"winapi-util",
@@ -8307,9 +8114,9 @@ dependencies = [
[[package]]
name = "image"
-version = "0.25.6"
+version = "0.25.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a"
+checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
dependencies = [
"bytemuck",
"byteorder-lite",
@@ -8317,8 +8124,9 @@ dependencies = [
"exr",
"gif",
"image-webp",
+ "moxcms",
"num-traits",
- "png",
+ "png 0.18.0",
"qoi",
"ravif",
"rayon",
@@ -8330,9 +8138,9 @@ dependencies = [
[[package]]
name = "image-webp"
-version = "0.2.1"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f"
+checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
dependencies = [
"byteorder-lite",
"quick-error",
@@ -8350,14 +8158,12 @@ dependencies = [
"language",
"log",
"project",
- "schemars",
"serde",
"settings",
"theme",
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -8372,24 +8178,36 @@ version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2"
dependencies = [
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
]
[[package]]
name = "imgref"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
+checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
[[package]]
name = "indexmap"
-version = "2.9.0"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
+checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
dependencies = [
"equivalent",
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
"serde",
+ "serde_core",
]
[[package]]
@@ -8400,13 +8218,13 @@ checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
[[package]]
name = "inherent"
-version = "1.0.12"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c38228f24186d9cc68c729accb4d413be9eaed6ad07ff79e0270d9e56f3de13"
+checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -8426,7 +8244,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"inotify-sys",
"libc",
]
@@ -8464,10 +8282,11 @@ dependencies = [
"serde_json",
"serde_json_lenient",
"theme",
+ "title_bar",
"ui",
"util",
+ "util_macros",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -8482,7 +8301,6 @@ dependencies = [
"smol",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -8494,16 +8312,6 @@ dependencies = [
"cfg-if",
]
-[[package]]
-name = "interim"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9ce9099a85f468663d3225bf87e85d0548968441e1db12248b996b24f0f5b5a"
-dependencies = [
- "chrono",
- "logos",
-]
-
[[package]]
name = "interpolate_name"
version = "0.2.4"
@@ -8512,14 +8320,14 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "inventory"
-version = "0.3.20"
+version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab08d7cd2c5897f2c949e5383ea7c7db03fb19130ffcfbf7eda795137ae3cb83"
+checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e"
dependencies = [
"rustversion",
]
@@ -8542,15 +8350,14 @@ checksum = "06432fb54d3be7964ecd3649233cddf80db2832f47fec34c01f65b3d9d774983"
[[package]]
name = "io-surface"
-version = "0.16.0"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8283575d5f0b2e7447ec0840363879d71c0fa325d4c699d5b45208ea4a51f45e"
+checksum = "554b8c5d64ec09a3a520fe58e4d48a73e00ff32899cdcbe32a4877afd4968b8e"
dependencies = [
"cgl",
"core-foundation 0.10.0",
"core-foundation-sys",
"leaky-cow",
- "libc",
]
[[package]]
@@ -8568,12 +8375,12 @@ version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea"
dependencies = [
- "bincode",
+ "bincode 1.3.3",
"crossbeam-channel",
"fnv",
"lazy_static",
"libc",
- "mio 1.0.3",
+ "mio 1.1.0",
"rand 0.8.5",
"serde",
"tempfile",
@@ -8587,6 +8394,16 @@ version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
+[[package]]
+name = "iri-string"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
[[package]]
name = "is-docker"
version = "0.2.0"
@@ -8602,7 +8419,7 @@ version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
dependencies = [
- "hermit-abi 0.5.0",
+ "hermit-abi",
"libc",
"windows-sys 0.59.0",
]
@@ -8650,15 +8467,6 @@ dependencies = [
"either",
]
-[[package]]
-name = "itertools"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
-dependencies = [
- "either",
-]
-
[[package]]
name = "itertools"
version = "0.14.0"
@@ -8676,128 +8484,26 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "jiff"
-version = "0.2.10"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a064218214dc6a10fbae5ec5fa888d80c45d611aba169222fc272072bf7aef6"
+checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
dependencies = [
"jiff-static",
- "jiff-tzdb-platform",
"log",
"portable-atomic",
"portable-atomic-util",
"serde",
- "windows-sys 0.59.0",
]
[[package]]
name = "jiff-static"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "199b7932d97e325aff3a7030e141eafe7f2c6268e1d1b24859b753a627f45254"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "jiff-tzdb"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524"
-
-[[package]]
-name = "jiff-tzdb-platform"
-version = "0.1.3"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8"
-dependencies = [
- "jiff-tzdb",
-]
-
-[[package]]
-name = "jj"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "gpui",
- "jj-lib",
- "workspace-hack",
-]
-
-[[package]]
-name = "jj-lib"
-version = "0.29.0"
-source = "git+https://github.com/jj-vcs/jj?rev=e18eb8e05efaa153fad5ef46576af145bba1807f#e18eb8e05efaa153fad5ef46576af145bba1807f"
-dependencies = [
- "async-trait",
- "blake2",
- "bstr",
- "chrono",
- "clru",
- "digest",
- "dunce",
- "either",
- "futures 0.3.31",
- "gix",
- "glob",
- "hashbrown 0.15.3",
- "hex",
- "ignore",
- "indexmap",
- "interim",
- "itertools 0.14.0",
- "jj-lib-proc-macros",
- "maplit",
- "once_cell",
- "pest",
- "pest_derive",
- "pollster 0.4.0",
- "prost 0.13.5",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
- "rayon",
- "ref-cast",
- "regex",
- "rustix 1.0.7",
- "same-file",
- "serde",
- "serde_json",
- "smallvec",
- "strsim",
- "tempfile",
- "thiserror 2.0.12",
- "toml_edit",
- "tracing",
- "version_check",
- "winreg 0.52.0",
-]
-
-[[package]]
-name = "jj-lib-proc-macros"
-version = "0.29.0"
-source = "git+https://github.com/jj-vcs/jj?rev=e18eb8e05efaa153fad5ef46576af145bba1807f#e18eb8e05efaa153fad5ef46576af145bba1807f"
+checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "jj_ui"
-version = "0.1.0"
-dependencies = [
- "command_palette_hooks",
- "feature_flags",
- "fuzzy",
- "gpui",
- "jj",
- "picker",
- "ui",
- "util",
- "workspace",
- "workspace-hack",
- "zed_actions",
+ "syn 2.0.106",
]
[[package]]
@@ -8824,11 +8530,11 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
[[package]]
name = "jobserver"
-version = "0.1.33"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a"
+checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"libc",
]
@@ -8841,25 +8547,17 @@ dependencies = [
"editor",
"gpui",
"log",
- "schemars",
"serde",
"settings",
"shellexpand 2.1.2",
"workspace",
- "workspace-hack",
]
-[[package]]
-name = "jpeg-decoder"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
-
[[package]]
name = "js-sys"
-version = "0.3.77"
+version = "0.3.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -8877,13 +8575,34 @@ dependencies = [
"thiserror 1.0.69",
]
+[[package]]
+name = "json_schema_store"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "dap",
+ "extension",
+ "gpui",
+ "language",
+ "paths",
+ "project",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
+ "settings",
+ "snippet_provider",
+ "task",
+ "theme",
+ "util",
+]
+
[[package]]
name = "jsonschema"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1b46a0365a611fbf1d2143104dcf910aada96fafd295bab16c60b802bf6fa1d"
dependencies = [
- "ahash 0.8.11",
+ "ahash 0.8.12",
"base64 0.22.1",
"bytecount",
"email_address",
@@ -8897,8 +8616,8 @@ dependencies = [
"percent-encoding",
"referencing",
"regex",
- "regex-syntax 0.8.5",
- "reqwest 0.12.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax",
+ "reqwest 0.12.24",
"serde",
"serde_json",
"uuid-simd",
@@ -8950,6 +8669,44 @@ dependencies = [
"uuid",
]
+[[package]]
+name = "keymap_editor"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "command_palette",
+ "component",
+ "db",
+ "editor",
+ "fs",
+ "fuzzy",
+ "gpui",
+ "itertools 0.14.0",
+ "json_schema_store",
+ "language",
+ "log",
+ "menu",
+ "notifications",
+ "paths",
+ "project",
+ "search",
+ "serde",
+ "serde_json",
+ "settings",
+ "telemetry",
+ "tempfile",
+ "theme",
+ "tree-sitter-json",
+ "tree-sitter-rust",
+ "ui",
+ "ui_input",
+ "util",
+ "vim",
+ "workspace",
+ "zed_actions",
+]
+
[[package]]
name = "khronos-egl"
version = "6.0.0"
@@ -8962,9 +8719,9 @@ dependencies = [
[[package]]
name = "kqueue"
-version = "1.0.8"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
+checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a"
dependencies = [
"kqueue-sys",
"libc",
@@ -8980,22 +8737,14 @@ dependencies = [
"libc",
]
-[[package]]
-name = "kstring"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1"
-dependencies = [
- "static_assertions",
-]
-
[[package]]
name = "kurbo"
-version = "0.11.1"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89234b2cc610a7dd927ebde6b41dd1a5d4214cffaef4cf1fb2195d592f92518f"
+checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62"
dependencies = [
"arrayvec",
+ "euclid",
"smallvec",
]
@@ -9027,17 +8776,16 @@ dependencies = [
"http_client",
"imara-diff",
"indoc",
- "inventory",
"itertools 0.14.0",
"log",
"lsp",
"parking_lot",
"postage",
"pretty_assertions",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"rpc",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
@@ -9050,7 +8798,7 @@ dependencies = [
"task",
"text",
"theme",
- "toml 0.8.20",
+ "toml 0.8.23",
"tree-sitter",
"tree-sitter-elixir",
"tree-sitter-embedded-template",
@@ -9066,7 +8814,6 @@ dependencies = [
"unindent",
"util",
"watch",
- "workspace-hack",
"zlog",
]
@@ -9082,12 +8829,12 @@ dependencies = [
"futures 0.3.31",
"gpui",
"language",
+ "log",
"lsp",
"project",
"serde",
"serde_json",
"util",
- "workspace-hack",
]
[[package]]
@@ -9107,16 +8854,16 @@ dependencies = [
"icons",
"image",
"log",
+ "open_router",
"parking_lot",
"proto",
- "schemars",
"serde",
"serde_json",
+ "settings",
"smol",
"telemetry_events",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"util",
- "workspace-hack",
]
[[package]]
@@ -9140,6 +8887,7 @@ dependencies = [
"credentials_provider",
"deepseek",
"editor",
+ "fs",
"futures 0.3.31",
"google_ai",
"gpui",
@@ -9157,22 +8905,33 @@ dependencies = [
"partial-json-fixer",
"project",
"release_channel",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
"smol",
- "strum 0.27.1",
- "theme",
- "thiserror 2.0.12",
+ "strum 0.27.2",
+ "thiserror 2.0.17",
"tiktoken-rs",
"tokio",
"ui",
"ui_input",
"util",
"vercel",
- "workspace-hack",
"x_ai",
+ "zed_env_vars",
+]
+
+[[package]]
+name = "language_onboarding"
+version = "0.1.0"
+dependencies = [
+ "db",
+ "editor",
+ "gpui",
+ "project",
+ "ui",
+ "workspace",
]
[[package]]
@@ -9192,7 +8951,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -9202,6 +8960,7 @@ dependencies = [
"anyhow",
"client",
"collections",
+ "command_palette_hooks",
"copilot",
"editor",
"futures 0.3.31",
@@ -9210,6 +8969,7 @@ dependencies = [
"language",
"lsp",
"project",
+ "proto",
"release_channel",
"serde_json",
"settings",
@@ -9218,7 +8978,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
"zlog",
]
@@ -9234,41 +8993,37 @@ dependencies = [
"async-trait",
"chrono",
"collections",
- "dap",
- "feature_flags",
"futures 0.3.31",
"gpui",
"http_client",
+ "itertools 0.14.0",
+ "json_schema_store",
"language",
"log",
"lsp",
"node_runtime",
"parking_lot",
- "paths",
"pet",
"pet-conda",
"pet-core",
"pet-fs",
"pet-poetry",
"pet-reporter",
+ "pet-virtualenv",
"pretty_assertions",
"project",
"regex",
"rope",
"rust-embed",
- "schemars",
"serde",
"serde_json",
"serde_json_lenient",
"settings",
- "sha2",
"smol",
- "snippet_provider",
"task",
- "tempfile",
"text",
"theme",
- "toml 0.8.20",
+ "toml 0.8.23",
"tree-sitter",
"tree-sitter-bash",
"tree-sitter-c",
@@ -9288,9 +9043,9 @@ dependencies = [
"tree-sitter-typescript",
"tree-sitter-yaml",
"unindent",
+ "url",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -9302,12 +9057,6 @@ dependencies = [
"spin",
]
-[[package]]
-name = "lazycell"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
-
[[package]]
name = "leak"
version = "0.1.2"
@@ -9337,21 +9086,21 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lebe"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
[[package]]
name = "libc"
-version = "0.2.172"
+version = "0.2.177"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
[[package]]
name = "libdbus-sys"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72"
+checksum = "5cbe856efeb50e4681f010e9aaa2bf0a644e10139e54cde10fc83a307c23bd9f"
dependencies = [
"cc",
"pkg-config",
@@ -9359,9 +9108,9 @@ dependencies = [
[[package]]
name = "libfuzzer-sys"
-version = "0.4.9"
+version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75"
+checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404"
dependencies = [
"arbitrary",
"cc",
@@ -9369,9 +9118,9 @@ dependencies = [
[[package]]
name = "libgit2-sys"
-version = "0.18.1+1.9.0"
+version = "0.18.2+1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1dcb20f84ffcdd825c7a311ae347cce604a6f084a767dec4a4929829645290e"
+checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222"
dependencies = [
"cc",
"libc",
@@ -9381,25 +9130,25 @@ dependencies = [
[[package]]
name = "libloading"
-version = "0.8.6"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
dependencies = [
"cfg-if",
- "windows-targets 0.52.6",
+ "windows-link 0.2.1",
]
[[package]]
name = "libm"
-version = "0.2.11"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
+checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
[[package]]
name = "libmimalloc-sys"
-version = "0.1.42"
+version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec9d6fac27761dabcd4ee73571cdb06b7022dc99089acbe5435691edffaac0f4"
+checksum = "667f4fec20f29dfc6bc7357c582d91796c169ad7e2fce709468aefeb2c099870"
dependencies = [
"cc",
"libc",
@@ -9407,13 +9156,13 @@ dependencies = [
[[package]]
name = "libredox"
-version = "0.1.3"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"libc",
- "redox_syscall 0.5.11",
+ "redox_syscall 0.5.18",
]
[[package]]
@@ -9452,9 +9201,9 @@ dependencies = [
[[package]]
name = "libz-rs-sys"
-version = "0.5.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a"
+checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd"
dependencies = [
"zlib-rs",
]
@@ -9471,11 +9220,25 @@ dependencies = [
"vcpkg",
]
+[[package]]
+name = "line_ending_selector"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "gpui",
+ "language",
+ "picker",
+ "project",
+ "ui",
+ "util",
+ "workspace",
+]
+
[[package]]
name = "link-cplusplus"
-version = "1.0.10"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a6f6da007f968f9def0d65a05b187e2960183de70c160204ecfccf0ee330212"
+checksum = "7f78c730aaa7d0b9336a299029ea49f9ee53b0ed06e9202e8cb7db9bae7b8c82"
dependencies = [
"cc",
]
@@ -9497,15 +9260,21 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
-version = "0.9.4"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
[[package]]
name = "litemap"
-version = "0.7.5"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
+
+[[package]]
+name = "litrs"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
+checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
[[package]]
name = "livekit"
@@ -9543,7 +9312,7 @@ dependencies = [
"parking_lot",
"pbjson-types",
"prost 0.12.6",
- "rand 0.9.1",
+ "rand 0.9.2",
"reqwest 0.11.27",
"scopeguard",
"serde",
@@ -9591,9 +9360,8 @@ dependencies = [
"prost 0.9.0",
"prost-build 0.9.0",
"prost-types 0.9.0",
- "reqwest 0.12.15 (git+https://github.com/zed-industries/reqwest.git?rev=951c770a32f1998d6e999cef3e59e0013e6c4415)",
"serde",
- "workspace-hack",
+ "zed-reqwest",
]
[[package]]
@@ -9602,6 +9370,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"async-trait",
+ "audio",
"collections",
"core-foundation 0.10.0",
"core-video",
@@ -9621,15 +9390,17 @@ dependencies = [
"parking_lot",
"postage",
"rodio",
- "scap",
"serde",
"serde_json",
+ "serde_urlencoded",
+ "settings",
"sha2",
"simplelog",
"smallvec",
"tokio-tungstenite 0.26.2",
+ "ui",
"util",
- "workspace-hack",
+ "zed-scap",
]
[[package]]
@@ -9650,79 +9421,30 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "workspace-hack",
]
[[package]]
name = "lock_api"
-version = "0.4.13"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
dependencies = [
- "autocfg",
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.27"
+version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
dependencies = [
"serde",
"value-bag",
]
-[[package]]
-name = "logos"
-version = "0.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab6f536c1af4c7cc81edf73da1f8029896e7e1e16a219ef09b184e76a296f3db"
-dependencies = [
- "logos-derive",
-]
-
-[[package]]
-name = "logos-codegen"
-version = "0.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "189bbfd0b61330abea797e5e9276408f2edbe4f822d7ad08685d67419aafb34e"
-dependencies = [
- "beef",
- "fnv",
- "lazy_static",
- "proc-macro2",
- "quote",
- "regex-syntax 0.8.5",
- "rustc_version",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "logos-derive"
-version = "0.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebfe8e1a19049ddbfccbd14ac834b215e11b85b90bab0c2dba7c7b92fb5d5cba"
-dependencies = [
- "logos-codegen",
-]
-
-[[package]]
-name = "loom"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
-dependencies = [
- "cfg-if",
- "generator",
- "scoped-tls",
- "tracing",
- "tracing-subscriber",
-]
-
[[package]]
name = "loop9"
version = "0.1.5"
@@ -9738,9 +9460,15 @@ version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
dependencies = [
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
]
+[[package]]
+name = "lru-slab"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
+
[[package]]
name = "lsp"
version = "0.1.0"
@@ -9756,19 +9484,18 @@ dependencies = [
"parking_lot",
"postage",
"release_channel",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"smol",
"util",
- "workspace-hack",
"zlog",
]
[[package]]
name = "lsp-types"
version = "0.95.1"
-source = "git+https://github.com/zed-industries/lsp-types?rev=39f629bdd03d59abd786ed9fc27e8bca02c0c0ec#39f629bdd03d59abd786ed9fc27e8bca02c0c0ec"
+source = "git+https://github.com/zed-industries/lsp-types?rev=b71ab4eeb27d9758be8092020a46fe33fbca4e33#b71ab4eeb27d9758be8092020a46fe33fbca4e33"
dependencies = [
"bitflags 1.3.2",
"serde",
@@ -9778,9 +9505,9 @@ dependencies = [
[[package]]
name = "lyon"
-version = "1.0.1"
+version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e7f9cda98b5430809e63ca5197b06c7d191bf7e26dfc467d5a3f0290e2a74f"
+checksum = "dbcb7d54d54c8937364c9d41902d066656817dce1e03a44e5533afebd1ef4352"
dependencies = [
"lyon_algorithms",
"lyon_extra",
@@ -9789,9 +9516,9 @@ dependencies = [
[[package]]
name = "lyon_algorithms"
-version = "1.0.5"
+version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f13c9be19d257c7d37e70608ed858e8eab4b2afcea2e3c9a622e892acbf43c08"
+checksum = "f4c0829e28c4f336396f250d850c3987e16ce6db057ffe047ce0dd54aab6b647"
dependencies = [
"lyon_path",
"num-traits",
@@ -9809,9 +9536,9 @@ dependencies = [
[[package]]
name = "lyon_geom"
-version = "1.0.6"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8af69edc087272df438b3ee436c4bb6d7c04aa8af665cfd398feae627dbd8570"
+checksum = "4e16770d760c7848b0c1c2d209101e408207a65168109509f8483837a36cf2e7"
dependencies = [
"arrayvec",
"euclid",
@@ -9820,9 +9547,9 @@ dependencies = [
[[package]]
name = "lyon_path"
-version = "1.0.7"
+version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0047f508cd7a85ad6bad9518f68cce7b1bf6b943fb71f6da0ee3bc1e8cb75f25"
+checksum = "1aeca86bcfd632a15984ba029b539ffb811e0a70bf55e814ef8b0f54f506fdeb"
dependencies = [
"lyon_geom",
"num-traits",
@@ -9830,15 +9557,34 @@ dependencies = [
[[package]]
name = "lyon_tessellation"
-version = "1.0.15"
+version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579d42360a4b09846eff2feef28f538696c7d6c7439bfa65874ff3cbe0951b2c"
+checksum = "f3f586142e1280335b1bc89539f7c97dd80f08fc43e9ab1b74ef0a42b04aa353"
dependencies = [
"float_next_after",
"lyon_path",
"num-traits",
]
+[[package]]
+name = "lz4"
+version = "1.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4"
+dependencies = [
+ "lz4-sys",
+]
+
+[[package]]
+name = "lz4-sys"
+version = "1.11.1+lz4-1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6"
+dependencies = [
+ "cc",
+ "libc",
+]
+
[[package]]
name = "mac"
version = "0.1.1"
@@ -9847,9 +9593,18 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
[[package]]
name = "mach2"
-version = "0.4.2"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "mach2"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea"
dependencies = [
"libc",
]
@@ -9875,7 +9630,9 @@ version = "0.1.0"
dependencies = [
"assets",
"base64 0.22.1",
+ "collections",
"env_logger 0.11.8",
+ "fs",
"futures 0.3.31",
"gpui",
"language",
@@ -9889,7 +9646,6 @@ dependencies = [
"theme",
"ui",
"util",
- "workspace-hack",
]
[[package]]
@@ -9902,9 +9658,11 @@ dependencies = [
"editor",
"fs",
"gpui",
+ "html5ever 0.27.0",
"language",
"linkify",
"log",
+ "markup5ever_rcdom",
"pretty_assertions",
"pulldown-cmark 0.12.2",
"settings",
@@ -9912,7 +9670,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -9922,7 +9679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45"
dependencies = [
"log",
- "phf",
+ "phf 0.11.3",
"phf_codegen",
"string_cache",
"string_cache_codegen",
@@ -9931,9 +9688,9 @@ dependencies = [
[[package]]
name = "markup5ever"
-version = "0.16.1"
+version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0a8096766c229e8c88a3900c9b44b7e06aa7f7343cc229158c3e58ef8f9973a"
+checksum = "311fe69c934650f8f19652b3946075f0fc41ad8757dbb68f1ca14e7900ecc1c3"
dependencies = [
"log",
"tendril",
@@ -9954,22 +9711,22 @@ dependencies = [
[[package]]
name = "match_token"
-version = "0.1.0"
+version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
+checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "matchers"
-version = "0.1.0"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
dependencies = [
- "regex-automata 0.1.10",
+ "regex-automata",
]
[[package]]
@@ -9978,17 +9735,6 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
-[[package]]
-name = "maybe-async"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
[[package]]
name = "maybe-owned"
version = "0.3.4"
@@ -10063,31 +9809,31 @@ dependencies = [
"foreign-types 0.5.0",
"metal",
"objc",
- "workspace-hack",
]
[[package]]
name = "memchr"
-version = "2.7.4"
+version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "memfd"
-version = "0.6.4"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64"
+checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227"
dependencies = [
- "rustix 0.38.44",
+ "rustix 1.1.2",
]
[[package]]
name = "memmap2"
-version = "0.9.5"
+version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f"
+checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7"
dependencies = [
"libc",
+ "stable_deref_trait",
]
[[package]]
@@ -10104,7 +9850,28 @@ name = "menu"
version = "0.1.0"
dependencies = [
"gpui",
- "workspace-hack",
+]
+
+[[package]]
+name = "merge"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10bbef93abb1da61525bbc45eeaff6473a41907d19f8f9aa5168d214e10693e9"
+dependencies = [
+ "merge_derive",
+ "num-traits",
+]
+
+[[package]]
+name = "merge_derive"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "209d075476da2e63b4b29e72a2ef627b840589588e71400a25e3565c4f849d07"
+dependencies = [
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
]
[[package]]
@@ -10113,7 +9880,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"block",
"core-graphics-types 0.1.3",
"foreign-types 0.5.0",
@@ -10131,17 +9898,20 @@ dependencies = [
"convert_case 0.8.0",
"log",
"pretty_assertions",
+ "serde_json",
+ "serde_json_lenient",
+ "settings_json",
"streaming-iterator",
"tree-sitter",
"tree-sitter-json",
- "workspace-hack",
+ "unindent",
]
[[package]]
name = "mimalloc"
-version = "0.1.46"
+version = "0.1.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "995942f432bbb4822a7e9c3faa87a695185b0d09273ba85f097b54f4e458f2af"
+checksum = "e1ee66a4b64c74f4ef288bcbb9192ad9c3feaad75193129ac8509af543894fd8"
dependencies = [
"libmimalloc-sys",
]
@@ -10168,7 +9938,7 @@ version = "0.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c4d14bcca0fd3ed165a03000480aaa364c6860c34e900cb2dafdf3b95340e77"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"debugid",
"num-derive",
"num-traits",
@@ -10183,14 +9953,14 @@ version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abcd9c8a1e6e1e9d56ce3627851f39a17ea83e17c96bc510f29d7e43d78a7d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"byteorder",
"cfg-if",
"crash-context",
"goblin",
"libc",
"log",
- "mach2",
+ "mach2 0.4.3",
"memmap2",
"memoffset",
"minidump-common",
@@ -10227,9 +9997,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
-version = "0.8.8"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
"simd-adler32",
@@ -10249,29 +10019,29 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
dependencies = [
"libc",
"log",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
"windows-sys 0.48.0",
]
[[package]]
name = "mio"
-version = "1.0.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
dependencies = [
"libc",
"log",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys 0.52.0",
+ "wasi",
+ "windows-sys 0.61.2",
]
[[package]]
name = "miow"
-version = "0.6.0"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044"
+checksum = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08"
dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -10281,32 +10051,40 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "strum 0.27.1",
- "workspace-hack",
+ "strum 0.27.2",
]
[[package]]
name = "moka"
-version = "0.12.10"
+version = "0.12.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926"
+checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077"
dependencies = [
"crossbeam-channel",
"crossbeam-epoch",
"crossbeam-utils",
- "loom",
+ "equivalent",
"parking_lot",
"portable-atomic",
"rustc_version",
"smallvec",
"tagptr",
- "thiserror 1.0.69",
"uuid",
]
+[[package]]
+name = "moxcms"
+version = "0.7.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c588e11a3082784af229e23e8e4ecf5bcc6fbe4f69101e0421ce8d79da7f0b40"
+dependencies = [
+ "num-traits",
+ "pxfm",
+]
+
[[package]]
name = "msvc_spectre_libs"
version = "0.1.3"
@@ -10333,7 +10111,7 @@ dependencies = [
"parking_lot",
"pretty_assertions",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"rope",
"serde",
"settings",
@@ -10344,7 +10122,6 @@ dependencies = [
"theme",
"tree-sitter",
"util",
- "workspace-hack",
"zlog",
]
@@ -10356,9 +10133,9 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
[[package]]
name = "multimap"
-version = "0.10.0"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
[[package]]
name = "naga"
@@ -10368,20 +10145,20 @@ checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632"
dependencies = [
"arrayvec",
"bit-set 0.8.0",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cfg_aliases 0.2.1",
"codespan-reporting 0.12.0",
"half",
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
"hexf-parse",
- "indexmap",
+ "indexmap 2.11.4",
"log",
"num-traits",
"once_cell",
"rustc-hash 1.1.0",
"spirv",
"strum 0.26.3",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"unicode-ident",
]
@@ -10400,7 +10177,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
]
[[package]]
@@ -10442,7 +10219,6 @@ dependencies = [
"futures 0.3.31",
"net",
"smol",
- "workspace-hack",
]
[[package]]
@@ -10451,7 +10227,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"jni-sys",
"log",
"ndk-sys",
@@ -10482,8 +10258,7 @@ dependencies = [
"async-io",
"smol",
"tempfile",
- "windows 0.61.1",
- "workspace-hack",
+ "windows 0.61.3",
]
[[package]]
@@ -10498,7 +10273,7 @@ version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cfg-if",
"cfg_aliases 0.1.1",
"libc",
@@ -10510,11 +10285,10 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cfg-if",
"cfg_aliases 0.2.1",
"libc",
- "memoffset",
]
[[package]]
@@ -10523,10 +10297,11 @@ version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cfg-if",
"cfg_aliases 0.2.1",
"libc",
+ "memoffset",
]
[[package]]
@@ -10549,7 +10324,6 @@ dependencies = [
"util",
"watch",
"which 6.0.3",
- "workspace-hack",
]
[[package]]
@@ -10579,11 +10353,11 @@ checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
[[package]]
name = "normpath"
-version = "1.3.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed"
+checksum = "bf23ab2b905654b4cb177e30b629937b3868311d4e1cba859f899c041046e69b"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -10604,7 +10378,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -10614,7 +10387,7 @@ version = "6.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"crossbeam-channel",
"filetime",
"fsevent-sys 4.1.0",
@@ -10632,14 +10405,14 @@ name = "notify"
version = "8.0.0"
source = "git+https://github.com/zed-industries/notify.git?rev=bbb9ea5ae52b253e095737847e367c30653a2e96#bbb9ea5ae52b253e095737847e367c30653a2e96"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"filetime",
"fsevent-sys 4.1.0",
"inotify 0.11.0",
"kqueue",
"libc",
"log",
- "mio 1.0.3",
+ "mio 1.1.0",
"notify-types",
"walkdir",
"windows-sys 0.59.0",
@@ -10662,31 +10435,30 @@ version = "2.0.0"
source = "git+https://github.com/zed-industries/notify.git?rev=bbb9ea5ae52b253e095737847e367c30653a2e96#bbb9ea5ae52b253e095737847e367c30653a2e96"
[[package]]
-name = "ntapi"
-version = "0.4.1"
+name = "now"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0"
dependencies = [
- "winapi",
+ "chrono",
]
[[package]]
-name = "nu-ansi-term"
-version = "0.46.0"
+name = "ntapi"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
dependencies = [
- "overload",
"winapi",
]
[[package]]
name = "nu-ansi-term"
-version = "0.50.1"
+version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
- "windows-sys 0.52.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -10743,6 +10515,7 @@ version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
dependencies = [
+ "bytemuck",
"num-traits",
]
@@ -10760,7 +10533,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -10816,33 +10589,34 @@ dependencies = [
[[package]]
name = "num_cpus"
-version = "1.16.0"
+version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
dependencies = [
- "hermit-abi 0.3.9",
+ "hermit-abi",
"libc",
]
[[package]]
name = "num_enum"
-version = "0.7.3"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
+checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a"
dependencies = [
"num_enum_derive",
+ "rustversion",
]
[[package]]
name = "num_enum_derive"
-version = "0.7.3"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
+checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d"
dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -10891,9 +10665,9 @@ dependencies = [
[[package]]
name = "objc2"
-version = "0.6.1"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551"
+checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
dependencies = [
"objc2-encode",
]
@@ -10904,7 +10678,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"objc2",
"objc2-core-foundation",
"objc2-foundation",
@@ -10917,7 +10691,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10cbe18d879e20a4aea544f8befe38bcf52255eb63d3f23eca2842f3319e4c07"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"libc",
"objc2",
"objc2-core-audio",
@@ -10928,9 +10702,9 @@ dependencies = [
[[package]]
name = "objc2-core-audio"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca44961e888e19313b808f23497073e3f6b3c22bb485056674c8b49f3b025c82"
+checksum = "e1eebcea8b0dbff5f7c8504f3107c68fc061a3eb44932051c8cf8a68d969c3b2"
dependencies = [
"dispatch2",
"objc2",
@@ -10940,21 +10714,21 @@ dependencies = [
[[package]]
name = "objc2-core-audio-types"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0f1cc99bb07ad2ddb6527ddf83db6a15271bb036b3eb94b801cd44fdc666ee1"
+checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"objc2",
]
[[package]]
name = "objc2-core-foundation"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"dispatch2",
"objc2",
]
@@ -10971,18 +10745,28 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"objc2",
"objc2-core-foundation",
]
+[[package]]
+name = "objc2-io-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15"
+dependencies = [
+ "libc",
+ "objc2-core-foundation",
+]
+
[[package]]
name = "objc2-metal"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f246c183239540aab1782457b35ab2040d4259175bd1d0c58e46ada7b47a874"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"block2",
"dispatch2",
"objc2",
@@ -10996,7 +10780,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"objc2",
"objc2-core-foundation",
"objc2-foundation",
@@ -11009,7 +10793,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"objc2",
"objc2-core-foundation",
"objc2-foundation",
@@ -11041,11 +10825,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
dependencies = [
"crc32fast",
- "hashbrown 0.15.3",
- "indexmap",
+ "hashbrown 0.15.5",
+ "indexmap 2.11.4",
+ "memchr",
+]
+
+[[package]]
+name = "object"
+version = "0.37.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
+dependencies = [
"memchr",
]
+[[package]]
+name = "object_store"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c1be0c6c22ec0817cdc77d3842f721a17fd30ab6965001415b5402a74e6b740"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "bytes 1.10.1",
+ "chrono",
+ "form_urlencoded",
+ "futures 0.3.31",
+ "http 1.3.1",
+ "http-body-util",
+ "humantime",
+ "hyper 1.7.0",
+ "itertools 0.14.0",
+ "parking_lot",
+ "percent-encoding",
+ "quick-xml 0.38.3",
+ "rand 0.9.2",
+ "reqwest 0.12.24",
+ "ring",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "thiserror 2.0.17",
+ "tokio",
+ "tracing",
+ "url",
+ "walkdir",
+ "wasm-bindgen-futures",
+ "web-time",
+]
+
[[package]]
name = "ollama"
version = "0.1.0"
@@ -11053,35 +10881,30 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "workspace-hack",
+ "settings",
]
[[package]]
name = "onboarding"
version = "0.1.0"
dependencies = [
- "ai_onboarding",
"anyhow",
"client",
"component",
"db",
"documented",
- "editor",
"fs",
"fuzzy",
"git",
"gpui",
- "itertools 0.14.0",
- "language",
- "language_model",
"menu",
"notifications",
"picker",
"project",
- "schemars",
+ "schemars 1.0.4",
"serde",
"settings",
"telemetry",
@@ -11090,7 +10913,6 @@ dependencies = [
"util",
"vim_mode_setting",
"workspace",
- "workspace-hack",
"zed_actions",
"zlog",
]
@@ -11101,32 +10923,38 @@ version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+[[package]]
+name = "once_cell_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
+
[[package]]
name = "oo7"
-version = "0.4.3"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6cb23d3ec3527d65a83be1c1795cb883c52cfa57147d42acc797127df56fc489"
+checksum = "e3299dd401feaf1d45afd8fd1c0586f10fcfb22f244bb9afa942cec73503b89d"
dependencies = [
"aes",
- "ashpd",
+ "ashpd 0.12.0",
"async-fs",
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"blocking",
"cbc",
"cipher",
"digest",
"endi",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"futures-util",
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"hkdf",
"hmac",
"md-5",
"num",
"num-bigint-dig",
"pbkdf2 0.12.2",
- "rand 0.9.1",
+ "rand 0.9.2",
"serde",
"sha2",
"subtle",
@@ -11161,11 +10989,11 @@ dependencies = [
"futures 0.3.31",
"http_client",
"log",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "strum 0.27.1",
- "workspace-hack",
+ "settings",
+ "strum 0.27.2",
]
[[package]]
@@ -11175,10 +11003,12 @@ dependencies = [
"anyhow",
"futures 0.3.31",
"http_client",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "workspace-hack",
+ "settings",
+ "strum 0.27.2",
+ "thiserror 2.0.17",
]
[[package]]
@@ -11195,11 +11025,11 @@ dependencies = [
[[package]]
name = "openssl"
-version = "0.10.72"
+version = "0.10.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
+checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cfg-if",
"foreign-types 0.3.2",
"libc",
@@ -11216,7 +11046,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -11227,9 +11057,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-sys"
-version = "0.9.107"
+version = "0.9.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
+checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
dependencies = [
"cc",
"libc",
@@ -11239,13 +11069,13 @@ dependencies = [
[[package]]
name = "optfield"
-version = "0.3.0"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa59f025cde9c698fcb4fcb3533db4621795374065bee908215263488f2d2a1d"
+checksum = "969ccca8ffc4fb105bd131a228107d5c9dd89d9d627edf3295cbe979156f9712"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -11303,7 +11133,7 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -11329,7 +11159,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -11351,7 +11180,6 @@ dependencies = [
"outline",
"pretty_assertions",
"project",
- "schemars",
"search",
"serde",
"serde_json",
@@ -11362,7 +11190,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"worktree",
"zed_actions",
]
@@ -11373,12 +11200,6 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
[[package]]
name = "p256"
version = "0.11.1"
@@ -11420,7 +11241,7 @@ dependencies = [
"by_address",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -11433,7 +11254,6 @@ dependencies = [
"theme",
"ui",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -11444,9 +11264,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
-version = "0.12.4"
+version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
dependencies = [
"lock_api",
"parking_lot_core",
@@ -11454,15 +11274,15 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.11"
+version = "0.9.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.5.11",
+ "redox_syscall 0.5.18",
"smallvec",
- "windows-targets 0.52.6",
+ "windows-link 0.2.1",
]
[[package]]
@@ -11538,8 +11358,8 @@ name = "paths"
version = "0.1.0"
dependencies = [
"dirs 4.0.0",
+ "ignore",
"util",
- "workspace-hack",
]
[[package]]
@@ -11601,14 +11421,20 @@ dependencies = [
"hmac",
]
+[[package]]
+name = "pciid-parser"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0008e816fcdaf229cdd540e9b6ca2dc4a10d65c31624abb546c6420a02846e61"
+
[[package]]
name = "pem"
-version = "3.0.5"
+version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3"
+checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be"
dependencies = [
"base64 0.22.1",
- "serde",
+ "serde_core",
]
[[package]]
@@ -11622,26 +11448,34 @@ dependencies = [
[[package]]
name = "percent-encoding"
-version = "2.3.1"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "perf"
+version = "0.1.0"
+dependencies = [
+ "collections",
+ "serde",
+ "serde_json",
+]
[[package]]
name = "pest"
-version = "2.8.0"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6"
+checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4"
dependencies = [
"memchr",
- "thiserror 2.0.12",
"ucd-trie",
]
[[package]]
name = "pest_derive"
-version = "2.8.0"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5"
+checksum = "187da9a3030dbafabbbfb20cb323b976dc7b7ce91fcd84f2f74d6e31d378e2de"
dependencies = [
"pest",
"pest_generator",
@@ -11649,24 +11483,23 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.8.0"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841"
+checksum = "49b401d98f5757ebe97a26085998d6c0eecec4995cad6ab7fc30ffdf4b052843"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "pest_meta"
-version = "2.8.0"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0"
+checksum = "72f27a2cfee9f9039c4d86faa5af122a0ac3851441a34865b8a043b46be0065a"
dependencies = [
- "once_cell",
"pest",
"sha2",
]
@@ -11674,7 +11507,7 @@ dependencies = [
[[package]]
name = "pet"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"clap",
"env_logger 0.10.2",
@@ -11711,7 +11544,7 @@ dependencies = [
[[package]]
name = "pet-conda"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"env_logger 0.10.2",
"lazy_static",
@@ -11730,7 +11563,7 @@ dependencies = [
[[package]]
name = "pet-core"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"clap",
"lazy_static",
@@ -11745,7 +11578,7 @@ dependencies = [
[[package]]
name = "pet-env-var-path"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"lazy_static",
"log",
@@ -11761,7 +11594,7 @@ dependencies = [
[[package]]
name = "pet-fs"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11770,7 +11603,7 @@ dependencies = [
[[package]]
name = "pet-global-virtualenvs"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11783,7 +11616,7 @@ dependencies = [
[[package]]
name = "pet-homebrew"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"lazy_static",
"log",
@@ -11801,7 +11634,7 @@ dependencies = [
[[package]]
name = "pet-jsonrpc"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"env_logger 0.10.2",
"log",
@@ -11814,7 +11647,7 @@ dependencies = [
[[package]]
name = "pet-linux-global-python"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11827,7 +11660,7 @@ dependencies = [
[[package]]
name = "pet-mac-commandlinetools"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11840,7 +11673,7 @@ dependencies = [
[[package]]
name = "pet-mac-python-org"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11853,7 +11686,7 @@ dependencies = [
[[package]]
name = "pet-mac-xcode"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11866,7 +11699,7 @@ dependencies = [
[[package]]
name = "pet-pipenv"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11879,7 +11712,7 @@ dependencies = [
[[package]]
name = "pet-pixi"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11891,7 +11724,7 @@ dependencies = [
[[package]]
name = "pet-poetry"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"base64 0.22.1",
"lazy_static",
@@ -11906,13 +11739,13 @@ dependencies = [
"serde",
"serde_json",
"sha2",
- "toml 0.8.20",
+ "toml 0.8.23",
]
[[package]]
name = "pet-pyenv"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"lazy_static",
"log",
@@ -11930,7 +11763,7 @@ dependencies = [
[[package]]
name = "pet-python-utils"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"env_logger 0.10.2",
"lazy_static",
@@ -11947,7 +11780,7 @@ dependencies = [
[[package]]
name = "pet-reporter"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"env_logger 0.10.2",
"log",
@@ -11961,7 +11794,7 @@ dependencies = [
[[package]]
name = "pet-telemetry"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"env_logger 0.10.2",
"lazy_static",
@@ -11976,7 +11809,7 @@ dependencies = [
[[package]]
name = "pet-venv"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -11988,7 +11821,7 @@ dependencies = [
[[package]]
name = "pet-virtualenv"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -12000,7 +11833,7 @@ dependencies = [
[[package]]
name = "pet-virtualenvwrapper"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"log",
"msvc_spectre_libs",
@@ -12013,7 +11846,7 @@ dependencies = [
[[package]]
name = "pet-windows-registry"
version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
dependencies = [
"lazy_static",
"log",
@@ -12029,270 +11862,847 @@ dependencies = [
]
[[package]]
-name = "pet-windows-store"
-version = "0.1.0"
-source = "git+https://github.com/microsoft/python-environment-tools.git?rev=845945b830297a50de0e24020b980a65e4820559#845945b830297a50de0e24020b980a65e4820559"
+name = "pet-windows-store"
+version = "0.1.0"
+source = "git+https://github.com/microsoft/python-environment-tools.git?rev=e97b9508befa0062929da65a01054d25c4be861c#e97b9508befa0062929da65a01054d25c4be861c"
+dependencies = [
+ "lazy_static",
+ "log",
+ "msvc_spectre_libs",
+ "pet-core",
+ "pet-fs",
+ "pet-python-utils",
+ "pet-virtualenv",
+ "regex",
+ "winreg 0.55.0",
+]
+
+[[package]]
+name = "petgraph"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+dependencies = [
+ "fixedbitset",
+ "indexmap 2.11.4",
+]
+
+[[package]]
+name = "pgvector"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc58e2d255979a31caa7cabfa7aac654af0354220719ab7a68520ae7a91e8c0b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+dependencies = [
+ "phf_macros 0.11.3",
+ "phf_shared 0.11.3",
+]
+
+[[package]]
+name = "phf"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7"
+dependencies = [
+ "phf_macros 0.12.1",
+ "phf_shared 0.12.1",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
+dependencies = [
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
+dependencies = [
+ "phf_shared 0.11.3",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cbb1126afed61dd6368748dae63b1ee7dc480191c6262a3b4ff1e29d86a6c5b"
+dependencies = [
+ "fastrand 2.3.0",
+ "phf_shared 0.12.1",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
+dependencies = [
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d713258393a82f091ead52047ca779d37e5766226d009de21696c4e667044368"
+dependencies = [
+ "phf_generator 0.12.1",
+ "phf_shared 0.12.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "picker"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "ctor",
+ "editor",
+ "env_logger 0.11.8",
+ "gpui",
+ "menu",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
+ "theme",
+ "ui",
+ "workspace",
+]
+
+[[package]]
+name = "pico-args"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
+
+[[package]]
+name = "pin-project"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
+dependencies = [
+ "atomic-waker",
+ "fastrand 2.3.0",
+ "futures-io",
+]
+
+[[package]]
+name = "pkcs1"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
+dependencies = [
+ "der 0.7.10",
+ "pkcs8 0.10.2",
+ "spki 0.7.3",
+]
+
+[[package]]
+name = "pkcs8"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
+dependencies = [
+ "der 0.6.1",
+ "spki 0.6.0",
+]
+
+[[package]]
+name = "pkcs8"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+dependencies = [
+ "der 0.7.10",
+ "spki 0.7.3",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "plain"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
+
+[[package]]
+name = "planus"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3daf8e3d4b712abe1d690838f6e29fb76b76ea19589c4afa39ec30e12f62af71"
+dependencies = [
+ "array-init-cursor",
+ "hashbrown 0.15.5",
+]
+
+[[package]]
+name = "plist"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
+dependencies = [
+ "base64 0.22.1",
+ "indexmap 2.11.4",
+ "quick-xml 0.38.3",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
dependencies = [
- "lazy_static",
- "log",
- "msvc_spectre_libs",
- "pet-core",
- "pet-fs",
- "pet-python-utils",
- "pet-virtualenv",
- "regex",
- "winreg 0.55.0",
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
]
[[package]]
-name = "petgraph"
-version = "0.6.5"
+name = "plotters-backend"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
dependencies = [
- "fixedbitset",
- "indexmap",
+ "plotters-backend",
]
[[package]]
-name = "pgvector"
-version = "0.4.0"
+name = "png"
+version = "0.17.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0e8871b6d7ca78348c6cd29b911b94851f3429f0cd403130ca17f26c1fb91a6"
+checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
dependencies = [
- "serde",
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
]
[[package]]
-name = "phf"
-version = "0.11.3"
+name = "png"
+version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
dependencies = [
- "phf_macros",
- "phf_shared",
+ "bitflags 2.9.4",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
]
[[package]]
-name = "phf_codegen"
-version = "0.11.3"
+name = "polars"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
-dependencies = [
- "phf_generator",
- "phf_shared",
+checksum = "a5f7feb5d56b954e691dff22a8b2d78d77433dcc93c35fe21c3777fdc121b697"
+dependencies = [
+ "getrandom 0.2.16",
+ "getrandom 0.3.4",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-io",
+ "polars-lazy",
+ "polars-ops",
+ "polars-parquet",
+ "polars-sql",
+ "polars-time",
+ "polars-utils",
+ "version_check",
]
[[package]]
-name = "phf_generator"
-version = "0.11.3"
+name = "polars-arrow"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
+checksum = "32b4fed2343961b3eea3db2cee165540c3e1ad9d5782350cc55a9e76cf440148"
dependencies = [
- "phf_shared",
- "rand 0.8.5",
+ "atoi_simd",
+ "bitflags 2.9.4",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "dyn-clone",
+ "either",
+ "ethnum",
+ "getrandom 0.2.16",
+ "getrandom 0.3.4",
+ "hashbrown 0.15.5",
+ "itoa",
+ "lz4",
+ "num-traits",
+ "polars-arrow-format",
+ "polars-error",
+ "polars-schema",
+ "polars-utils",
+ "serde",
+ "simdutf8",
+ "streaming-iterator",
+ "strum_macros 0.27.2",
+ "version_check",
+ "zstd 0.13.3",
]
[[package]]
-name = "phf_macros"
-version = "0.11.3"
+name = "polars-arrow-format"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
+checksum = "a556ac0ee744e61e167f34c1eb0013ce740e0ee6cd8c158b2ec0b518f10e6675"
dependencies = [
- "phf_generator",
- "phf_shared",
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "planus",
+ "serde",
]
[[package]]
-name = "phf_shared"
-version = "0.11.3"
+name = "polars-compute"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+checksum = "138785beda4e4a90a025219f09d0d15a671b2be9091513ede58e05db6ad4413f"
dependencies = [
- "siphasher",
+ "atoi_simd",
+ "bytemuck",
+ "chrono",
+ "either",
+ "fast-float2",
+ "hashbrown 0.15.5",
+ "itoa",
+ "num-traits",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+ "rand 0.9.2",
+ "ryu",
+ "serde",
+ "skiplist",
+ "strength_reduce",
+ "strum_macros 0.27.2",
+ "version_check",
]
[[package]]
-name = "picker"
-version = "0.1.0"
+name = "polars-core"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e77b1f08ef6dbb032bb1d0d3365464be950df9905f6827a95b24c4ca5518901d"
dependencies = [
- "anyhow",
- "ctor",
- "editor",
- "env_logger 0.11.8",
- "gpui",
- "menu",
- "schemars",
+ "bitflags 2.9.4",
+ "boxcar",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "comfy-table",
+ "either",
+ "hashbrown 0.15.5",
+ "indexmap 2.11.4",
+ "itoa",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-dtype",
+ "polars-error",
+ "polars-row",
+ "polars-schema",
+ "polars-utils",
+ "rand 0.9.2",
+ "rand_distr",
+ "rayon",
+ "regex",
"serde",
"serde_json",
- "ui",
- "util",
- "workspace",
- "workspace-hack",
+ "strum_macros 0.27.2",
+ "uuid",
+ "version_check",
+ "xxhash-rust",
]
[[package]]
-name = "pico-args"
-version = "0.5.0"
+name = "polars-dtype"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
+checksum = "89c43d0ea57168be4546c4d8064479ed8b29a9c79c31a0c7c367ee734b9b7158"
+dependencies = [
+ "boxcar",
+ "hashbrown 0.15.5",
+ "polars-arrow",
+ "polars-error",
+ "polars-utils",
+ "serde",
+ "uuid",
+]
[[package]]
-name = "pin-project"
-version = "1.1.10"
+name = "polars-error"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
+checksum = "b9cb5d98f59f8b94673ee391840440ad9f0d2170afced95fc98aa86f895563c0"
dependencies = [
- "pin-project-internal",
+ "object_store",
+ "parking_lot",
+ "polars-arrow-format",
+ "regex",
+ "signal-hook",
+ "simdutf8",
]
[[package]]
-name = "pin-project-internal"
-version = "1.1.10"
+name = "polars-expr"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
+checksum = "343931b818cf136349135ba11dbc18c27683b52c3477b1ba8ca606cf5ab1965c"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "bitflags 2.9.4",
+ "hashbrown 0.15.5",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-io",
+ "polars-ops",
+ "polars-plan",
+ "polars-row",
+ "polars-time",
+ "polars-utils",
+ "rand 0.9.2",
+ "rayon",
+ "recursive",
]
[[package]]
-name = "pin-project-lite"
-version = "0.2.16"
+name = "polars-io"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+checksum = "10388c64b8155122488229a881d1c6f4fdc393bc988e764ab51b182fcb2307e4"
+dependencies = [
+ "async-trait",
+ "atoi_simd",
+ "blake3",
+ "bytes 1.10.1",
+ "chrono",
+ "fast-float2",
+ "fs4",
+ "futures 0.3.31",
+ "glob",
+ "hashbrown 0.15.5",
+ "home",
+ "itoa",
+ "memchr",
+ "memmap2",
+ "num-traits",
+ "object_store",
+ "percent-encoding",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-parquet",
+ "polars-schema",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "reqwest 0.12.24",
+ "ryu",
+ "serde",
+ "serde_json",
+ "simdutf8",
+ "tokio",
+ "tokio-util",
+ "url",
+]
[[package]]
-name = "pin-utils"
-version = "0.1.0"
+name = "polars-lazy"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+checksum = "0fb6e2c6c2fa4ea0c660df1c06cf56960c81e7c2683877995bae3d4e3d408147"
+dependencies = [
+ "bitflags 2.9.4",
+ "chrono",
+ "either",
+ "memchr",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-expr",
+ "polars-io",
+ "polars-mem-engine",
+ "polars-ops",
+ "polars-plan",
+ "polars-stream",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "version_check",
+]
[[package]]
-name = "piper"
-version = "0.2.4"
+name = "polars-mem-engine"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
+checksum = "20a856e98e253587c28d8132a5e7e5a75cb2c44731ca090f1481d45f1d123771"
dependencies = [
- "atomic-waker",
- "fastrand 2.3.0",
- "futures-io",
+ "futures 0.3.31",
+ "memmap2",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-expr",
+ "polars-io",
+ "polars-ops",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "recursive",
+ "tokio",
]
[[package]]
-name = "pkcs1"
-version = "0.7.5"
+name = "polars-ops"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
+checksum = "acf6062173fdc9ba05775548beb66e76643a148d9aeadc9984ed712bc4babd76"
dependencies = [
- "der 0.7.10",
- "pkcs8 0.10.2",
- "spki 0.7.3",
+ "argminmax",
+ "base64 0.22.1",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "either",
+ "hashbrown 0.15.5",
+ "hex",
+ "indexmap 2.11.4",
+ "libm",
+ "memchr",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-schema",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "regex-syntax",
+ "strum_macros 0.27.2",
+ "unicode-normalization",
+ "unicode-reverse",
+ "version_check",
]
[[package]]
-name = "pkcs8"
-version = "0.9.0"
+name = "polars-parquet"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
+checksum = "cc1d769180dec070df0dc4b89299b364bf2cfe32b218ecc4ddd8f1a49ae60669"
dependencies = [
- "der 0.6.1",
- "spki 0.6.0",
+ "async-stream",
+ "base64 0.22.1",
+ "brotli",
+ "bytemuck",
+ "ethnum",
+ "flate2",
+ "futures 0.3.31",
+ "hashbrown 0.15.5",
+ "lz4",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-error",
+ "polars-parquet-format",
+ "polars-utils",
+ "serde",
+ "simdutf8",
+ "snap",
+ "streaming-decompression",
+ "zstd 0.13.3",
]
[[package]]
-name = "pkcs8"
-version = "0.10.2"
+name = "polars-parquet-format"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "c025243dcfe8dbc57e94d9f82eb3bef10b565ab180d5b99bed87fd8aea319ce1"
dependencies = [
- "der 0.7.10",
- "spki 0.7.3",
+ "async-trait",
+ "futures 0.3.31",
]
[[package]]
-name = "pkg-config"
-version = "0.3.32"
+name = "polars-plan"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+checksum = "1cd3a2e33ae4484fe407ab2d2ba5684f0889d1ccf3ad6b844103c03638e6d0a0"
+dependencies = [
+ "bitflags 2.9.4",
+ "bytemuck",
+ "bytes 1.10.1",
+ "chrono",
+ "chrono-tz",
+ "either",
+ "futures 0.3.31",
+ "hashbrown 0.15.5",
+ "memmap2",
+ "num-traits",
+ "percent-encoding",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-io",
+ "polars-ops",
+ "polars-parquet",
+ "polars-time",
+ "polars-utils",
+ "rayon",
+ "recursive",
+ "regex",
+ "sha2",
+ "strum_macros 0.27.2",
+ "version_check",
+]
[[package]]
-name = "plain"
-version = "0.2.3"
+name = "polars-row"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
+checksum = "18734f17e0e348724df3ae65f3ee744c681117c04b041cac969dfceb05edabc0"
+dependencies = [
+ "bitflags 2.9.4",
+ "bytemuck",
+ "polars-arrow",
+ "polars-compute",
+ "polars-dtype",
+ "polars-error",
+ "polars-utils",
+]
[[package]]
-name = "plist"
-version = "1.7.1"
+name = "polars-schema"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d"
+checksum = "8e6c1ab13e04d5167661a9854ed1ea0482b2ed9b8a0f1118dabed7cd994a85e3"
dependencies = [
- "base64 0.22.1",
- "indexmap",
- "quick-xml 0.32.0",
+ "indexmap 2.11.4",
+ "polars-error",
+ "polars-utils",
"serde",
- "time",
+ "version_check",
]
[[package]]
-name = "plotters"
-version = "0.3.7"
+name = "polars-sql"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+checksum = "c4e7766da02cc1d464994404d3e88a7a0ccd4933df3627c325480fbd9bbc0a11"
dependencies = [
- "num-traits",
- "plotters-backend",
- "plotters-svg",
- "wasm-bindgen",
- "web-sys",
+ "bitflags 2.9.4",
+ "hex",
+ "polars-core",
+ "polars-error",
+ "polars-lazy",
+ "polars-ops",
+ "polars-plan",
+ "polars-time",
+ "polars-utils",
+ "rand 0.9.2",
+ "regex",
+ "serde",
+ "sqlparser",
]
[[package]]
-name = "plotters-backend"
-version = "0.3.7"
+name = "polars-stream"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+checksum = "31f6c6ca1ea01f9dea424d167e4f33f5ec44cd67fbfac9efd40575ed20521f14"
+dependencies = [
+ "async-channel 2.5.0",
+ "async-trait",
+ "atomic-waker",
+ "bitflags 2.9.4",
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-queue",
+ "crossbeam-utils",
+ "futures 0.3.31",
+ "memmap2",
+ "parking_lot",
+ "percent-encoding",
+ "pin-project-lite",
+ "polars-arrow",
+ "polars-core",
+ "polars-error",
+ "polars-expr",
+ "polars-io",
+ "polars-mem-engine",
+ "polars-ops",
+ "polars-parquet",
+ "polars-plan",
+ "polars-utils",
+ "rand 0.9.2",
+ "rayon",
+ "recursive",
+ "slotmap",
+ "tokio",
+ "tokio-util",
+ "version_check",
+]
[[package]]
-name = "plotters-svg"
-version = "0.3.7"
+name = "polars-time"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+checksum = "f6a3a6e279a7a984a0b83715660f9e880590c6129ec2104396bfa710bcd76dee"
dependencies = [
- "plotters-backend",
+ "atoi_simd",
+ "bytemuck",
+ "chrono",
+ "chrono-tz",
+ "now",
+ "num-traits",
+ "polars-arrow",
+ "polars-compute",
+ "polars-core",
+ "polars-error",
+ "polars-ops",
+ "polars-utils",
+ "rayon",
+ "regex",
+ "strum_macros 0.27.2",
]
[[package]]
-name = "png"
-version = "0.17.16"
+name = "polars-utils"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
+checksum = "57b267021b0e5422d7fbc70fd79e51b9f9a8466c585779373a18b0199e973f29"
dependencies = [
- "bitflags 1.3.2",
- "crc32fast",
- "fdeflate",
+ "bincode 2.0.1",
+ "bytemuck",
+ "bytes 1.10.1",
+ "compact_str",
+ "either",
"flate2",
- "miniz_oxide",
+ "foldhash 0.1.5",
+ "hashbrown 0.15.5",
+ "indexmap 2.11.4",
+ "libc",
+ "memmap2",
+ "num-traits",
+ "polars-error",
+ "rand 0.9.2",
+ "raw-cpuid 11.6.0",
+ "rayon",
+ "regex",
+ "rmp-serde",
+ "serde",
+ "serde_json",
+ "serde_stacker",
+ "slotmap",
+ "stacker",
+ "uuid",
+ "version_check",
]
[[package]]
name = "polling"
-version = "3.7.4"
+version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
dependencies = [
"cfg-if",
"concurrent-queue",
- "hermit-abi 0.4.0",
+ "hermit-abi",
"pin-project-lite",
- "rustix 0.38.44",
- "tracing",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -12301,17 +12711,11 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7"
-[[package]]
-name = "pollster"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
-
[[package]]
name = "portable-atomic"
-version = "1.11.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
+checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
[[package]]
name = "portable-atomic-util"
@@ -12355,16 +12759,16 @@ dependencies = [
"log",
"parking_lot",
"pin-project",
- "pollster 0.2.5",
+ "pollster",
"static_assertions",
"thiserror 1.0.69",
]
[[package]]
name = "postcard"
-version = "1.1.1"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
+checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24"
dependencies = [
"cobs",
"embedded-io 0.4.0",
@@ -12372,6 +12776,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "potential_utf"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a"
+dependencies = [
+ "zerovec",
+]
+
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -12384,7 +12797,7 @@ version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
- "zerocopy 0.8.24",
+ "zerocopy",
]
[[package]]
@@ -12410,7 +12823,6 @@ dependencies = [
"serde",
"serde_json",
"util",
- "workspace-hack",
]
[[package]]
@@ -12425,21 +12837,54 @@ dependencies = [
[[package]]
name = "prettyplease"
-version = "0.2.32"
+version = "0.2.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
dependencies = [
"proc-macro2",
- "syn 2.0.101",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "primal-check"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08"
+dependencies = [
+ "num-integer",
]
[[package]]
name = "proc-macro-crate"
-version = "3.3.0"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
+dependencies = [
+ "toml_edit 0.23.7",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
- "toml_edit",
+ "proc-macro2",
+ "quote",
+ "version_check",
]
[[package]]
@@ -12461,14 +12906,14 @@ dependencies = [
"proc-macro-error-attr2",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "proc-macro2"
-version = "1.0.95"
+version = "1.0.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
dependencies = [
"unicode-ident",
]
@@ -12481,7 +12926,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"version_check",
"yansi",
]
@@ -12492,37 +12937,27 @@ version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"hex",
]
-[[package]]
-name = "prodash"
-version = "29.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f04bb108f648884c23b98a0e940ebc2c93c0c3b89f04dbaf7eb8256ce617d1bc"
-dependencies = [
- "log",
- "parking_lot",
-]
-
[[package]]
name = "profiling"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d"
+checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
dependencies = [
"profiling-procmacros",
]
[[package]]
name = "profiling-procmacros"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
+checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
dependencies = [
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -12554,7 +12989,7 @@ dependencies = [
"gpui",
"http_client",
"image",
- "indexmap",
+ "indexmap 2.11.4",
"itertools 0.14.0",
"language",
"log",
@@ -12562,23 +12997,22 @@ dependencies = [
"markdown",
"node_runtime",
"parking_lot",
- "pathdiff",
"paths",
"postage",
"prettier",
"pretty_assertions",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"release_channel",
"remote",
"rpc",
- "schemars",
+ "schemars 1.0.4",
+ "semver",
"serde",
"serde_json",
"settings",
"sha2",
"shellexpand 2.1.2",
- "shlex",
"smallvec",
"smol",
"snippet",
@@ -12588,13 +13022,14 @@ dependencies = [
"tempfile",
"terminal",
"text",
- "toml 0.8.20",
+ "toml 0.8.23",
"unindent",
"url",
"util",
+ "watch",
"which 6.0.3",
- "workspace-hack",
"worktree",
+ "zeroize",
"zlog",
]
@@ -12606,21 +13041,21 @@ dependencies = [
"client",
"collections",
"command_palette_hooks",
+ "criterion",
"db",
"editor",
"file_icons",
"git",
"git_ui",
"gpui",
- "indexmap",
"language",
"menu",
"pretty_assertions",
"project",
- "schemars",
+ "rayon",
+ "schemars 1.0.4",
"search",
"serde",
- "serde_derive",
"serde_json",
"settings",
"smallvec",
@@ -12629,7 +13064,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"worktree",
"zed_actions",
]
@@ -12654,7 +13088,6 @@ dependencies = [
"theme",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -12669,7 +13102,7 @@ dependencies = [
"memchr",
"parking_lot",
"protobuf",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
@@ -12692,11 +13125,9 @@ dependencies = [
"paths",
"rope",
"serde",
- "serde_json",
"text",
"util",
"uuid",
- "workspace-hack",
]
[[package]]
@@ -12719,16 +13150,6 @@ dependencies = [
"prost-derive 0.12.6",
]
-[[package]]
-name = "prost"
-version = "0.13.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
-dependencies = [
- "bytes 1.10.1",
- "prost-derive 0.13.5",
-]
-
[[package]]
name = "prost-build"
version = "0.9.0"
@@ -12759,14 +13180,14 @@ dependencies = [
"heck 0.5.0",
"itertools 0.12.1",
"log",
- "multimap 0.10.0",
+ "multimap 0.10.1",
"once_cell",
"petgraph",
"prettyplease",
"prost 0.12.6",
"prost-types 0.12.6",
"regex",
- "syn 2.0.101",
+ "syn 2.0.106",
"tempfile",
]
@@ -12793,20 +13214,7 @@ dependencies = [
"itertools 0.12.1",
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "prost-derive"
-version = "0.13.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
-dependencies = [
- "anyhow",
- "itertools 0.14.0",
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -12838,7 +13246,6 @@ dependencies = [
"prost-build 0.9.0",
"serde",
"typed-path",
- "workspace-hack",
]
[[package]]
@@ -12863,9 +13270,9 @@ dependencies = [
[[package]]
name = "psm"
-version = "0.1.25"
+version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f58e5423e24c18cc840e1c98370b3993c6649cd1678b4d24318bcf0a083cbe88"
+checksum = "e66fcd288453b748497d8fb18bccc83a16b0518e3906d4b8df0a8d42d93dbb1c"
dependencies = [
"cc",
]
@@ -12896,7 +13303,7 @@ version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"memchr",
"pulldown-cmark-escape",
"unicase",
@@ -12908,7 +13315,7 @@ version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"memchr",
"unicase",
]
@@ -12931,6 +13338,41 @@ dependencies = [
"wasmtime-math",
]
+[[package]]
+name = "pulp"
+version = "0.18.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0a01a0dc67cf4558d279f0c25b0962bd08fc6dec0137699eae304103e882fe6"
+dependencies = [
+ "bytemuck",
+ "libm",
+ "num-complex",
+ "reborrow",
+]
+
+[[package]]
+name = "pulp"
+version = "0.21.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96b86df24f0a7ddd5e4b95c94fc9ed8a98f1ca94d3b01bdce2824097e7835907"
+dependencies = [
+ "bytemuck",
+ "cfg-if",
+ "libm",
+ "num-complex",
+ "reborrow",
+ "version_check",
+]
+
+[[package]]
+name = "pxfm"
+version = "0.1.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "qoi"
version = "0.4.1"
@@ -12957,27 +13399,28 @@ dependencies = [
[[package]]
name = "quick-xml"
-version = "0.32.0"
+version = "0.37.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2"
+checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
dependencies = [
"memchr",
]
[[package]]
name = "quick-xml"
-version = "0.37.4"
+version = "0.38.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4ce8c88de324ff838700f36fb6ab86c96df0e3c4ab6ef3a9b2044465cce1369"
+checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
dependencies = [
"memchr",
+ "serde",
]
[[package]]
name = "quinn"
-version = "0.11.7"
+version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012"
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
dependencies = [
"bytes 1.10.1",
"cfg_aliases 0.2.1",
@@ -12985,9 +13428,9 @@ dependencies = [
"quinn-proto",
"quinn-udp",
"rustc-hash 2.1.1",
- "rustls 0.23.26",
- "socket2",
- "thiserror 2.0.12",
+ "rustls 0.23.33",
+ "socket2 0.6.1",
+ "thiserror 2.0.17",
"tokio",
"tracing",
"web-time",
@@ -12995,19 +13438,20 @@ dependencies = [
[[package]]
name = "quinn-proto"
-version = "0.11.10"
+version = "0.11.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc"
+checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
dependencies = [
"bytes 1.10.1",
- "getrandom 0.3.2",
- "rand 0.9.1",
+ "getrandom 0.3.4",
+ "lru-slab",
+ "rand 0.9.2",
"ring",
"rustc-hash 2.1.1",
- "rustls 0.23.26",
+ "rustls 0.23.33",
"rustls-pki-types",
"slab",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tinyvec",
"tracing",
"web-time",
@@ -13015,32 +13459,32 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.11"
+version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "541d0f57c6ec747a90738a52741d3221f7960e8ac2f0ff4b1a63680e033b4ab5"
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
dependencies = [
"cfg_aliases 0.2.1",
"libc",
"once_cell",
- "socket2",
+ "socket2 0.6.1",
"tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
name = "quote"
-version = "1.0.40"
+version = "1.0.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r-efi"
-version = "5.2.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "radium"
@@ -13061,9 +13505,9 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.3",
@@ -13095,7 +13539,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
]
[[package]]
@@ -13104,7 +13548,17 @@ version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
+]
+
+[[package]]
+name = "rand_distr"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463"
+dependencies = [
+ "num-traits",
+ "rand 0.9.2",
]
[[package]]
@@ -13118,9 +13572,9 @@ dependencies = [
[[package]]
name = "rangemap"
-version = "1.5.1"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684"
+checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223"
[[package]]
name = "rav1e"
@@ -13159,9 +13613,9 @@ dependencies = [
[[package]]
name = "ravif"
-version = "0.11.12"
+version = "0.11.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6a5f31fcf7500f9401fea858ea4ab5525c99f2322cfcee732c0e6c74208c0c6"
+checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b"
dependencies = [
"avif-serialize",
"imgref",
@@ -13172,6 +13626,24 @@ dependencies = [
"rgb",
]
+[[package]]
+name = "raw-cpuid"
+version = "10.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "raw-cpuid"
+version = "11.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186"
+dependencies = [
+ "bitflags 2.9.4",
+]
+
[[package]]
name = "raw-window-handle"
version = "0.6.2"
@@ -13192,9 +13664,9 @@ dependencies = [
[[package]]
name = "rayon"
-version = "1.10.0"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
dependencies = [
"either",
"rayon-core",
@@ -13202,9 +13674,9 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.12.1"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
@@ -13212,19 +13684,35 @@ dependencies = [
[[package]]
name = "read-fonts"
-version = "0.25.3"
+version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f9e8a4f503e5c8750e4cd3b32a4e090035c46374b305a15c70bad833dca05f"
+checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358"
dependencies = [
"bytemuck",
"font-types",
]
+[[package]]
+name = "realfft"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f821338fddb99d089116342c46e9f1fbf3828dba077674613e734e01d6ea8677"
+dependencies = [
+ "rustfft",
+]
+
+[[package]]
+name = "reborrow"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430"
+
[[package]]
name = "recent_projects"
version = "0.1.0"
dependencies = [
"anyhow",
+ "askpass",
"auto_update",
"dap",
"editor",
@@ -13233,6 +13721,7 @@ dependencies = [
"futures 0.3.31",
"fuzzy",
"gpui",
+ "indoc",
"language",
"log",
"markdown",
@@ -13243,7 +13732,6 @@ dependencies = [
"project",
"release_channel",
"remote",
- "schemars",
"serde",
"serde_json",
"settings",
@@ -13253,11 +13741,31 @@ dependencies = [
"theme",
"ui",
"util",
+ "windows-registry 0.6.1",
"workspace",
- "workspace-hack",
"zed_actions",
]
+[[package]]
+name = "recursive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0786a43debb760f491b1bc0269fe5e84155353c67482b9e60d0cfb596054b43e"
+dependencies = [
+ "recursive-proc-macro-impl",
+ "stacker",
+]
+
+[[package]]
+name = "recursive-proc-macro-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b"
+dependencies = [
+ "quote",
+ "syn 2.0.106",
+]
+
[[package]]
name = "redox_syscall"
version = "0.2.16"
@@ -13269,11 +13777,11 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.5.11"
+version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
]
[[package]]
@@ -13282,40 +13790,40 @@ version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"libredox",
"thiserror 1.0.69",
]
[[package]]
name = "redox_users"
-version = "0.5.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"libredox",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
name = "ref-cast"
-version = "1.0.24"
+version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
+checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
-version = "1.0.24"
+version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
+checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -13324,7 +13832,7 @@ version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8eff4fa778b5c2a57e85c5f2fe3a709c52f0e60d23146e2151cbef5893f420e"
dependencies = [
- "ahash 0.8.11",
+ "ahash 0.8.12",
"fluent-uri",
"once_cell",
"parking_lot",
@@ -13337,7 +13845,6 @@ name = "refineable"
version = "0.1.0"
dependencies = [
"derive_refineable",
- "workspace-hack",
]
[[package]]
@@ -13348,7 +13855,7 @@ checksum = "dc06e6b318142614e4a48bc725abbf08ff166694835c43c9dae5a9009704639a"
dependencies = [
"allocator-api2",
"bumpalo",
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
"log",
"rustc-hash 2.1.1",
"serde",
@@ -13357,60 +13864,44 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.11.1"
+version = "1.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-dependencies = [
- "regex-syntax 0.6.29",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.9"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
dependencies = [
"aho-corasick",
"memchr",
- "regex-syntax 0.8.5",
+ "regex-syntax",
]
[[package]]
name = "regex-lite"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.29"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da"
[[package]]
name = "regex-syntax"
-version = "0.8.5"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
[[package]]
name = "release_channel"
version = "0.1.0"
dependencies = [
"gpui",
- "workspace-hack",
]
[[package]]
@@ -13424,24 +13915,22 @@ dependencies = [
"fs",
"futures 0.3.31",
"gpui",
- "itertools 0.14.0",
"log",
"parking_lot",
"paths",
"prost 0.9.0",
"release_channel",
"rpc",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
- "shlex",
+ "settings",
"smol",
"tempfile",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"urlencoding",
"util",
"which 6.0.3",
- "workspace-hack",
]
[[package]]
@@ -13449,16 +13938,14 @@ name = "remote_server"
version = "0.1.0"
dependencies = [
"action_log",
+ "agent",
"anyhow",
"askpass",
- "assistant_tool",
- "assistant_tools",
- "backtrace",
"cargo_toml",
- "chrono",
"clap",
"client",
"clock",
+ "collections",
"crash-handler",
"crashes",
"dap",
@@ -13477,6 +13964,7 @@ dependencies = [
"gpui",
"gpui_tokio",
"http_client",
+ "json_schema_store",
"language",
"language_extension",
"language_model",
@@ -13487,8 +13975,10 @@ dependencies = [
"minidumper",
"node_runtime",
"paths",
+ "pretty_assertions",
"project",
"proto",
+ "rayon",
"release_channel",
"remote",
"reqwest_client",
@@ -13499,9 +13989,10 @@ dependencies = [
"settings",
"shellexpand 2.1.2",
"smol",
- "sysinfo",
- "telemetry_events",
- "toml 0.8.20",
+ "sysinfo 0.37.2",
+ "task",
+ "thiserror 2.0.17",
+ "toml 0.8.23",
"unindent",
"util",
"watch",
@@ -13552,7 +14043,6 @@ dependencies = [
"picker",
"project",
"runtimelib",
- "schemars",
"serde",
"serde_json",
"settings",
@@ -13568,7 +14058,6 @@ dependencies = [
"util",
"uuid",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -13582,7 +14071,7 @@ dependencies = [
"encoding_rs",
"futures-core",
"futures-util",
- "h2 0.3.26",
+ "h2 0.3.27",
"http 0.2.12",
"http-body 0.4.6",
"hyper 0.14.32",
@@ -13617,88 +14106,45 @@ dependencies = [
[[package]]
name = "reqwest"
-version = "0.12.15"
+version = "0.12.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb"
+checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
dependencies = [
"base64 0.22.1",
"bytes 1.10.1",
"futures-channel",
"futures-core",
"futures-util",
+ "h2 0.4.12",
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
- "hyper 1.6.0",
- "hyper-util",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper 1.0.2",
- "tokio",
- "tower 0.5.2",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "windows-registry 0.4.0",
-]
-
-[[package]]
-name = "reqwest"
-version = "0.12.15"
-source = "git+https://github.com/zed-industries/reqwest.git?rev=951c770a32f1998d6e999cef3e59e0013e6c4415#951c770a32f1998d6e999cef3e59e0013e6c4415"
-dependencies = [
- "base64 0.22.1",
- "bytes 1.10.1",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2 0.4.9",
- "http 1.3.1",
- "http-body 1.0.1",
- "http-body-util",
- "hyper 1.6.0",
- "hyper-rustls 0.27.5",
+ "hyper 1.7.0",
+ "hyper-rustls 0.27.7",
"hyper-util",
- "ipnet",
"js-sys",
"log",
- "mime",
- "mime_guess",
- "once_cell",
"percent-encoding",
"pin-project-lite",
"quinn",
- "rustls 0.23.26",
- "rustls-native-certs 0.8.1",
- "rustls-pemfile 2.2.0",
+ "rustls 0.23.33",
+ "rustls-native-certs 0.8.2",
"rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper 1.0.2",
- "system-configuration 0.6.1",
"tokio",
"tokio-rustls 0.26.2",
- "tokio-socks",
"tokio-util",
"tower 0.5.2",
+ "tower-http 0.6.6",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"wasm-streams",
"web-sys",
- "windows-registry 0.4.0",
]
[[package]]
@@ -13713,11 +14159,9 @@ dependencies = [
"http_client_tls",
"log",
"regex",
- "reqwest 0.12.15 (git+https://github.com/zed-industries/reqwest.git?rev=951c770a32f1998d6e999cef3e59e0013e6c4415)",
"serde",
- "smol",
"tokio",
- "workspace-hack",
+ "zed-reqwest",
]
[[package]]
@@ -13747,9 +14191,9 @@ dependencies = [
[[package]]
name = "rgb"
-version = "0.8.50"
+version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a"
+checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce"
dependencies = [
"bytemuck",
]
@@ -13766,7 +14210,6 @@ dependencies = [
"theme",
"ui",
"util",
- "workspace-hack",
]
[[package]]
@@ -13777,7 +14220,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
dependencies = [
"cc",
"cfg-if",
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"libc",
"untrusted",
"windows-sys 0.52.0",
@@ -13823,6 +14266,17 @@ dependencies = [
"paste",
]
+[[package]]
+name = "rmp-serde"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
+dependencies = [
+ "byteorder",
+ "rmp",
+ "serde",
+]
+
[[package]]
name = "rmpv"
version = "1.3.0"
@@ -13836,15 +14290,15 @@ dependencies = [
[[package]]
name = "rodio"
version = "0.21.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e40ecf59e742e03336be6a3d53755e789fd05a059fa22dfa0ed624722319e183"
+source = "git+https://github.com/RustAudio/rodio?rev=e2074c6c2acf07b57cf717e076bdda7a9ac6e70b#e2074c6c2acf07b57cf717e076bdda7a9ac6e70b"
dependencies = [
"cpal",
"dasp_sample",
"hound",
"num-rational",
+ "rtrb",
"symphonia",
- "tracing",
+ "thiserror 2.0.17",
]
[[package]]
@@ -13856,13 +14310,11 @@ dependencies = [
"ctor",
"gpui",
"log",
- "rand 0.8.5",
+ "rand 0.9.2",
"rayon",
- "smallvec",
"sum_tree",
"unicode-segmentation",
"util",
- "workspace-hack",
"zlog",
]
@@ -13885,17 +14337,16 @@ dependencies = [
"gpui",
"parking_lot",
"proto",
- "rand 0.8.5",
+ "rand 0.9.2",
"rsa",
"serde",
"serde_json",
"sha2",
- "strum 0.27.1",
+ "strum 0.27.2",
"tracing",
"util",
- "workspace-hack",
"zlog",
- "zstd",
+ "zstd 0.11.2+zstd.1.5.2",
]
[[package]]
@@ -13918,6 +14369,12 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "rtrb"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8388ea1a9e0ea807e442e8263a699e7edcb320ecbcd21b4fa8ff859acce3ba"
+
[[package]]
name = "rules_library"
version = "0.1.0"
@@ -13941,7 +14398,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -13972,9 +14428,9 @@ dependencies = [
[[package]]
name = "rust-embed"
-version = "8.7.0"
+version = "8.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5fbc0ee50fcb99af7cebb442e5df7b5b45e9460ffa3f8f549cd26b862bec49d"
+checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a"
dependencies = [
"rust-embed-impl",
"rust-embed-utils",
@@ -13983,33 +14439,43 @@ dependencies = [
[[package]]
name = "rust-embed-impl"
-version = "8.7.0"
+version = "8.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6bf418c9a2e3f6663ca38b8a7134cc2c2167c9d69688860e8961e3faa731702e"
+checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c"
dependencies = [
"proc-macro2",
"quote",
"rust-embed-utils",
- "syn 2.0.101",
+ "syn 2.0.106",
"walkdir",
]
[[package]]
name = "rust-embed-utils"
-version = "8.7.0"
+version = "8.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08d55b95147fe01265d06b3955db798bdaed52e60e2211c41137701b3aba8e21"
+checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594"
dependencies = [
"globset",
"sha2",
"walkdir",
]
+[[package]]
+name = "rust-stemmers"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
[[package]]
name = "rust_decimal"
-version = "1.37.1"
+version = "1.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50"
+checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282"
dependencies = [
"arrayvec",
"borsh",
@@ -14023,9 +14489,9 @@ dependencies = [
[[package]]
name = "rustc-demangle"
-version = "0.1.24"
+version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
[[package]]
name = "rustc-hash"
@@ -14048,15 +14514,28 @@ dependencies = [
"semver",
]
+[[package]]
+name = "rustfft"
+version = "6.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89"
+dependencies = [
+ "num-complex",
+ "num-integer",
+ "num-traits",
+ "primal-check",
+ "strength_reduce",
+ "transpose",
+]
+
[[package]]
name = "rustix"
version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
- "bitflags 2.9.0",
- "errno 0.3.11",
- "itoa",
+ "bitflags 2.9.4",
+ "errno 0.3.14",
"libc",
"linux-raw-sys 0.4.15",
"windows-sys 0.59.0",
@@ -14064,15 +14543,15 @@ dependencies = [
[[package]]
name = "rustix"
-version = "1.0.7"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
dependencies = [
- "bitflags 2.9.0",
- "errno 0.3.11",
+ "bitflags 2.9.4",
+ "errno 0.3.14",
"libc",
- "linux-raw-sys 0.9.4",
- "windows-sys 0.59.0",
+ "linux-raw-sys 0.11.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -14082,18 +14561,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fc84bf7e9aa16c4f2c758f27412dc9841341e16aa682d9c7ac308fe3ee12056"
dependencies = [
"once_cell",
- "rustix 1.0.7",
+ "rustix 1.1.2",
]
[[package]]
name = "rustix-openpty"
-version = "0.1.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25c3aad9fc1424eb82c88087789a7d938e1829724f3e4043163baf0d13cfc12"
+checksum = "1de16c7c59892b870a6336f185dc10943517f1327447096bbb7bb32cd85e2393"
dependencies = [
- "errno 0.3.11",
+ "errno 0.3.14",
"libc",
- "rustix 0.38.44",
+ "rustix 1.1.2",
]
[[package]]
@@ -14110,16 +14589,16 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.26"
+version = "0.23.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0"
+checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c"
dependencies = [
"aws-lc-rs",
"log",
"once_cell",
"ring",
"rustls-pki-types",
- "rustls-webpki 0.103.1",
+ "rustls-webpki 0.103.7",
"subtle",
"zeroize",
]
@@ -14138,14 +14617,14 @@ dependencies = [
[[package]]
name = "rustls-native-certs"
-version = "0.8.1"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3"
+checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923"
dependencies = [
"openssl-probe",
"rustls-pki-types",
"schannel",
- "security-framework 3.2.0",
+ "security-framework 3.5.1",
]
[[package]]
@@ -14178,20 +14657,20 @@ dependencies = [
[[package]]
name = "rustls-platform-verifier"
-version = "0.5.1"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a5467026f437b4cb2a533865eaa73eb840019a0916f4b9ec563c6e617e086c9"
+checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1"
dependencies = [
"core-foundation 0.10.0",
"core-foundation-sys",
"jni",
"log",
"once_cell",
- "rustls 0.23.26",
- "rustls-native-certs 0.8.1",
+ "rustls 0.23.33",
+ "rustls-native-certs 0.8.2",
"rustls-platform-verifier-android",
- "rustls-webpki 0.103.1",
- "security-framework 3.2.0",
+ "rustls-webpki 0.103.7",
+ "security-framework 3.5.1",
"security-framework-sys",
"webpki-root-certs",
"windows-sys 0.59.0",
@@ -14215,9 +14694,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
-version = "0.103.1"
+version = "0.103.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03"
+checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf"
dependencies = [
"aws-lc-rs",
"ring",
@@ -14227,9 +14706,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.20"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "rustybuzz"
@@ -14237,7 +14716,7 @@ version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"bytemuck",
"libm",
"smallvec",
@@ -14254,7 +14733,7 @@ version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"bytemuck",
"core_maths",
"log",
@@ -14272,6 +14751,16 @@ version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+[[package]]
+name = "safetensors"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44560c11236a6130a46ce36c836a62936dc81ebf8c36a37947423571be0e55b6"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
[[package]]
name = "salsa20"
version = "0.10.2"
@@ -14291,33 +14780,24 @@ dependencies = [
]
[[package]]
-name = "scap"
-version = "0.0.8"
-source = "git+https://github.com/zed-industries/scap?rev=808aa5c45b41e8f44729d02e38fd00a2fe2722e7#808aa5c45b41e8f44729d02e38fd00a2fe2722e7"
+name = "schannel"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
dependencies = [
- "anyhow",
- "cocoa 0.25.0",
- "core-graphics-helmer-fork",
- "log",
- "objc",
- "rand 0.8.5",
- "screencapturekit",
- "screencapturekit-sys",
- "sysinfo",
- "tao-core-video-sys",
- "windows 0.61.1",
- "windows-capture",
- "x11",
- "xcb",
+ "windows-sys 0.61.2",
]
[[package]]
-name = "schannel"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
+name = "scheduler"
+version = "0.1.0"
dependencies = [
- "windows-sys 0.59.0",
+ "async-task",
+ "backtrace",
+ "chrono",
+ "futures 0.3.31",
+ "parking_lot",
+ "rand 0.9.2",
]
[[package]]
@@ -14327,39 +14807,48 @@ dependencies = [
"anyhow",
"clap",
"env_logger 0.11.8",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"theme",
- "workspace-hack",
]
[[package]]
name = "schemars"
-version = "1.0.1"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe8c9d1c68d67dd9f97ecbc6f932b60eb289c5dbddd8aa1405484a8fd2fcd984"
+checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
dependencies = [
- "chrono",
"dyn-clone",
- "indexmap",
+ "indexmap 2.11.4",
"ref-cast",
"schemars_derive",
- "semver",
"serde",
"serde_json",
]
[[package]]
name = "schemars_derive"
-version = "1.0.1"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ca9fcb757952f8e8629b9ab066fc62da523c46c2b247b1708a3be06dd82530b"
+checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80"
dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -14376,9 +14865,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "scratch"
-version = "1.0.8"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f6280af86e5f559536da57a45ebc84948833b3bee313a7dd25232e09c878a52"
+checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2"
[[package]]
name = "screencapturekit"
@@ -14420,7 +14909,7 @@ checksum = "1783eabc414609e28a5ba76aee5ddd52199f7107a0b24c2e9746a1ecc34a683d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -14455,7 +14944,7 @@ dependencies = [
"proc-macro-error2",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -14480,7 +14969,7 @@ dependencies = [
"serde_json",
"sqlx",
"strum 0.26.3",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tracing",
"url",
@@ -14497,15 +14986,15 @@ dependencies = [
"proc-macro2",
"quote",
"sea-bae",
- "syn 2.0.101",
+ "syn 2.0.106",
"unicode-ident",
]
[[package]]
name = "sea-query"
-version = "0.32.4"
+version = "0.32.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d99447c24da0cded00089e2021e1624af90878c65f7534319448d01da3df869d"
+checksum = "8a5d1c518eaf5eda38e5773f902b26ab6d5e9e9e2bb2349ca6c64cf96f80448c"
dependencies = [
"bigdecimal",
"chrono",
@@ -14545,16 +15034,17 @@ version = "0.1.0"
dependencies = [
"any_vec",
"anyhow",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"client",
"collections",
"editor",
"futures 0.3.31",
"gpui",
"language",
+ "lsp",
"menu",
"project",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
@@ -14563,8 +15053,8 @@ dependencies = [
"ui",
"unindent",
"util",
+ "util_macros",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -14588,7 +15078,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.9.4",
"core-foundation-sys",
"libc",
@@ -14597,11 +15087,11 @@ dependencies = [
[[package]]
name = "security-framework"
-version = "3.2.0"
+version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316"
+checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.10.0",
"core-foundation-sys",
"libc",
@@ -14610,9 +15100,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.14.0"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
dependencies = [
"core-foundation-sys",
"libc",
@@ -14625,84 +15115,57 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749"
[[package]]
-name = "semantic_index"
+name = "semantic_version"
version = "0.1.0"
dependencies = [
"anyhow",
- "arrayvec",
- "blake3",
- "client",
- "clock",
- "collections",
- "feature_flags",
- "fs",
- "futures 0.3.31",
- "futures-batch",
- "gpui",
- "heed",
- "http_client",
- "language",
- "language_model",
- "languages",
- "log",
- "open_ai",
- "parking_lot",
- "project",
- "reqwest_client",
"serde",
- "serde_json",
- "settings",
- "sha2",
- "smol",
- "streaming-iterator",
- "tempfile",
- "theme",
- "tree-sitter",
- "ui",
- "unindent",
- "util",
- "workspace",
- "workspace-hack",
- "worktree",
- "zlog",
]
[[package]]
-name = "semantic_version"
-version = "0.1.0"
+name = "semver"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
dependencies = [
- "anyhow",
"serde",
- "workspace-hack",
+ "serde_core",
]
[[package]]
-name = "semver"
-version = "1.0.26"
+name = "seq-macro"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
+
+[[package]]
+name = "serde"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
- "serde",
+ "serde_core",
+ "serde_derive",
]
[[package]]
-name = "serde"
-version = "1.0.219"
+name = "serde_core"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.219"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -14713,7 +15176,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -14727,15 +15190,16 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.140"
+version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
dependencies = [
- "indexmap",
+ "indexmap 2.11.4",
"itoa",
"memchr",
"ryu",
"serde",
+ "serde_core",
]
[[package]]
@@ -14744,7 +15208,7 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e033097bf0d2b59a62b42c18ebbb797503839b26afdda2c4e1415cb6c813540"
dependencies = [
- "indexmap",
+ "indexmap 2.11.4",
"itoa",
"memchr",
"ryu",
@@ -14753,12 +15217,13 @@ dependencies = [
[[package]]
name = "serde_path_to_error"
-version = "0.1.17"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a"
+checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
dependencies = [
"itoa",
"serde",
+ "serde_core",
]
[[package]]
@@ -14769,16 +15234,36 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+dependencies = [
+ "serde",
]
[[package]]
name = "serde_spanned"
-version = "0.6.8"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "serde_stacker"
+version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
+checksum = "d4936375d50c4be7eff22293a9344f8e46f323ed2b3c243e52f89138d9bb0f4a"
dependencies = [
"serde",
+ "serde_core",
+ "stacker",
]
[[package]]
@@ -14793,11 +15278,55 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_with"
+version = "3.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5"
+dependencies = [
+ "base64 0.22.1",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.11.4",
+ "schemars 0.9.0",
+ "schemars 1.0.4",
+ "serde_core",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27"
+dependencies = [
+ "darling 0.21.3",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.34+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
+dependencies = [
+ "indexmap 2.11.4",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
[[package]]
name = "serial2"
-version = "0.2.29"
+version = "0.2.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7d1d08630509d69f90eff4afcd02c3bd974d979225cbd815ff5942351b14375"
+checksum = "8cc76fa68e25e771492ca1e3c53d447ef0be3093e05cd3b47f4b712ba10c6f3c"
dependencies = [
"cfg-if",
"libc",
@@ -14813,7 +15342,6 @@ dependencies = [
"serde_json",
"util",
"uuid",
- "workspace-hack",
]
[[package]]
@@ -14822,6 +15350,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"collections",
+ "derive_more 0.99.20",
"ec4rs",
"fs",
"futures 0.3.31",
@@ -14829,22 +15358,49 @@ dependencies = [
"indoc",
"inventory",
"log",
+ "migrator",
"paths",
"pretty_assertions",
- "release_channel",
- "rust-embed",
- "schemars",
+ "release_channel",
+ "rust-embed",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
+ "serde_json_lenient",
+ "serde_repr",
+ "serde_with",
+ "settings_json",
+ "settings_macros",
+ "smallvec",
+ "strum 0.27.2",
+ "unindent",
+ "util",
+ "zlog",
+]
+
+[[package]]
+name = "settings_json"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "pretty_assertions",
"serde",
- "serde_derive",
"serde_json",
"serde_json_lenient",
- "smallvec",
+ "serde_path_to_error",
"tree-sitter",
"tree-sitter-json",
"unindent",
"util",
- "workspace-hack",
- "zlog",
+]
+
+[[package]]
+name = "settings_macros"
+version = "0.1.0"
+dependencies = [
+ "quote",
+ "settings",
+ "syn 2.0.106",
]
[[package]]
@@ -14864,7 +15420,6 @@ dependencies = [
"theme",
"ui",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -14873,39 +15428,40 @@ name = "settings_ui"
version = "0.1.0"
dependencies = [
"anyhow",
- "collections",
- "command_palette",
- "command_palette_hooks",
- "component",
- "db",
+ "assets",
+ "bm25",
+ "client",
"editor",
"feature_flags",
"fs",
+ "futures 0.3.31",
"fuzzy",
"gpui",
- "itertools 0.14.0",
+ "heck 0.5.0",
"language",
"log",
"menu",
- "notifications",
+ "node_runtime",
"paths",
+ "picker",
+ "pretty_assertions",
"project",
+ "release_channel",
+ "schemars 1.0.4",
"search",
"serde",
- "serde_json",
+ "session",
"settings",
+ "strum 0.27.2",
"telemetry",
- "tempfile",
"theme",
- "tree-sitter-json",
- "tree-sitter-rust",
+ "title_bar",
"ui",
"ui_input",
"util",
- "vim",
"workspace",
- "workspace-hack",
"zed_actions",
+ "zlog",
]
[[package]]
@@ -14919,16 +15475,6 @@ dependencies = [
"digest",
]
-[[package]]
-name = "sha1-checked"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423"
-dependencies = [
- "digest",
- "sha1",
-]
-
[[package]]
name = "sha1_smol"
version = "1.0.1"
@@ -14937,9 +15483,9 @@ checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d"
[[package]]
name = "sha2"
-version = "0.10.8"
+version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
dependencies = [
"cfg-if",
"cpufeatures",
@@ -14997,9 +15543,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "signal-hook"
-version = "0.3.17"
+version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
dependencies = [
"libc",
"signal-hook-registry",
@@ -15007,9 +15553,9 @@ dependencies = [
[[package]]
name = "signal-hook-registry"
-version = "1.4.5"
+version = "1.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
+checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
dependencies = [
"libc",
]
@@ -15063,7 +15609,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb"
dependencies = [
"num-bigint",
"num-traits",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
]
@@ -15093,11 +15639,21 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+[[package]]
+name = "skiplist"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f354fd282d3177c2951004953e2fdc4cb342fa159bbee8b829852b6a081c8ea1"
+dependencies = [
+ "rand 0.9.2",
+ "thiserror 2.0.17",
+]
+
[[package]]
name = "skrifa"
-version = "0.26.6"
+version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cc1aa86c26dbb1b63875a7180aa0819709b33348eb5b1491e4321fae388179d"
+checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841"
dependencies = [
"bytemuck",
"read-fonts",
@@ -15105,12 +15661,9 @@ dependencies = [
[[package]]
name = "slab"
-version = "0.4.9"
+version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
[[package]]
name = "slash_commands_example"
@@ -15130,9 +15683,9 @@ dependencies = [
[[package]]
name = "smallvec"
-version = "1.15.0"
+version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
dependencies = [
"serde",
]
@@ -15145,7 +15698,7 @@ checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -15154,15 +15707,15 @@ version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f"
dependencies = [
- "async-channel 2.3.1",
+ "async-channel 2.5.0",
"async-executor",
"async-fs",
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"async-net",
"async-process",
"blocking",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
]
[[package]]
@@ -15171,13 +15724,18 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"
+[[package]]
+name = "snap"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b"
+
[[package]]
name = "snippet"
version = "0.1.0"
dependencies = [
"anyhow",
"smallvec",
- "workspace-hack",
]
[[package]]
@@ -15193,12 +15751,12 @@ dependencies = [
"indoc",
"parking_lot",
"paths",
- "schemars",
+ "schemars 1.0.4",
"serde",
+ "serde_json",
"serde_json_lenient",
"snippet",
"util",
- "workspace-hack",
]
[[package]]
@@ -15216,24 +15774,53 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
+]
+
+[[package]]
+name = "soa-rs"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b75ae4668062b095fda87ba54118697bed601f07f6c68bf50289a25ca0c8c935"
+dependencies = [
+ "soa-rs-derive",
+]
+
+[[package]]
+name = "soa-rs-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c09121507da587d3434e5929ce3321162f36bd3eff403873cb163c06b176913"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
]
[[package]]
name = "socket2"
-version = "0.5.9"
+version = "0.5.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
+checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
dependencies = [
"libc",
"windows-sys 0.52.0",
]
+[[package]]
+name = "socket2"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
[[package]]
name = "spdx"
-version = "0.10.8"
+version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58b69356da67e2fc1f542c71ea7e654a361a79c938e4424392ecf4fa065d2193"
+checksum = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3"
dependencies = [
"smallvec",
]
@@ -15253,7 +15840,7 @@ version = "0.3.0+sdk-1.3.268.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
]
[[package]]
@@ -15291,13 +15878,13 @@ dependencies = [
"futures 0.3.31",
"indoc",
"libsqlite3-sys",
+ "log",
"parking_lot",
"smol",
"sqlformat",
"thread_local",
"util",
"uuid",
- "workspace-hack",
]
[[package]]
@@ -15306,8 +15893,7 @@ version = "0.1.0"
dependencies = [
"sqlez",
"sqlformat",
- "syn 2.0.101",
- "workspace-hack",
+ "syn 2.0.106",
]
[[package]]
@@ -15320,11 +15906,20 @@ dependencies = [
"unicode_categories",
]
+[[package]]
+name = "sqlparser"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05a528114c392209b3264855ad491fcce534b94a38771b0a0b97a79379275ce8"
+dependencies = [
+ "log",
+]
+
[[package]]
name = "sqlx"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3c3a85280daca669cfd3bcb68a337882a8bc57ec882f72c5d13a430613a738e"
+checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc"
dependencies = [
"sqlx-core",
"sqlx-macros",
@@ -15335,9 +15930,9 @@ dependencies = [
[[package]]
name = "sqlx-core"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f743f2a3cea30a58cd479013f75550e879009e3a02f616f18ca699335aa248c3"
+checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6"
dependencies = [
"base64 0.22.1",
"bigdecimal",
@@ -15346,25 +15941,25 @@ dependencies = [
"crc",
"crossbeam-queue",
"either",
- "event-listener 5.4.0",
+ "event-listener 5.4.1",
"futures-core",
"futures-intrusive",
"futures-io",
"futures-util",
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
"hashlink 0.10.0",
- "indexmap",
+ "indexmap 2.11.4",
"log",
"memchr",
"once_cell",
"percent-encoding",
"rust_decimal",
- "rustls 0.23.26",
+ "rustls 0.23.33",
"serde",
"serde_json",
"sha2",
"smallvec",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tokio",
"tokio-stream",
@@ -15376,22 +15971,22 @@ dependencies = [
[[package]]
name = "sqlx-macros"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4200e0fde19834956d4252347c12a083bdcb237d7a1a1446bffd8768417dce"
+checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d"
dependencies = [
"proc-macro2",
"quote",
"sqlx-core",
"sqlx-macros-core",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "sqlx-macros-core"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "882ceaa29cade31beca7129b6beeb05737f44f82dbe2a9806ecea5a7093d00b7"
+checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b"
dependencies = [
"dotenvy",
"either",
@@ -15407,22 +16002,21 @@ dependencies = [
"sqlx-mysql",
"sqlx-postgres",
"sqlx-sqlite",
- "syn 2.0.101",
- "tempfile",
+ "syn 2.0.106",
"tokio",
"url",
]
[[package]]
name = "sqlx-mysql"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0afdd3aa7a629683c2d750c2df343025545087081ab5942593a5288855b1b7a7"
+checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526"
dependencies = [
"atoi",
"base64 0.22.1",
"bigdecimal",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"byteorder",
"bytes 1.10.1",
"chrono",
@@ -15453,7 +16047,7 @@ dependencies = [
"smallvec",
"sqlx-core",
"stringprep",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tracing",
"uuid",
@@ -15462,14 +16056,14 @@ dependencies = [
[[package]]
name = "sqlx-postgres"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0bedbe1bbb5e2615ef347a5e9d8cd7680fb63e77d9dafc0f29be15e53f1ebe6"
+checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46"
dependencies = [
"atoi",
"base64 0.22.1",
"bigdecimal",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"byteorder",
"chrono",
"crc",
@@ -15496,7 +16090,7 @@ dependencies = [
"smallvec",
"sqlx-core",
"stringprep",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tracing",
"uuid",
@@ -15505,9 +16099,9 @@ dependencies = [
[[package]]
name = "sqlx-sqlite"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c26083e9a520e8eb87a06b12347679b142dc2ea29e6e409f805644a7a979a5bc"
+checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea"
dependencies = [
"atoi",
"chrono",
@@ -15523,7 +16117,7 @@ dependencies = [
"serde",
"serde_urlencoded",
"sqlx-core",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tracing",
"url",
@@ -15532,9 +16126,43 @@ dependencies = [
[[package]]
name = "stable_deref_trait"
-version = "1.2.0"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "stacker"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1f8b29fb42aafcea4edeeb6b2f2d7ecd0d969c48b4cf0d2e64aafc471dd6e59"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "libc",
+ "psm",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "stacksafe"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d9c1172965d317e87ddb6d364a040d958b40a1db82b6ef97da26253a8b3d090"
+dependencies = [
+ "stacker",
+ "stacksafe-macro",
+]
+
+[[package]]
+name = "stacksafe-macro"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+checksum = "172175341049678163e979d9107ca3508046d4d2a7c6682bee46ac541b17db69"
+dependencies = [
+ "proc-macro-error2",
+ "quote",
+ "syn 2.0.106",
+]
[[package]]
name = "static_assertions"
@@ -15542,6 +16170,15 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+[[package]]
+name = "stop-words"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645a3d441ccf4bf47f2e4b7681461986681a6eeea9937d4c3bc9febd61d17c71"
+dependencies = [
+ "serde_json",
+]
+
[[package]]
name = "story"
version = "0.1.0"
@@ -15549,7 +16186,6 @@ dependencies = [
"gpui",
"itertools 0.14.0",
"smallvec",
- "workspace-hack",
]
[[package]]
@@ -15575,12 +16211,20 @@ dependencies = [
"settings",
"simplelog",
"story",
- "strum 0.27.1",
+ "strum 0.27.2",
"theme",
"title_bar",
"ui",
"workspace",
- "workspace-hack",
+]
+
+[[package]]
+name = "streaming-decompression"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf6cc3b19bfb128a8ad11026086e31d3ce9ad23f8ea37354b31383a187c44cf3"
+dependencies = [
+ "fallible-streaming-iterator",
]
[[package]]
@@ -15594,12 +16238,17 @@ name = "streaming_diff"
version = "0.1.0"
dependencies = [
"ordered-float 2.10.1",
- "rand 0.8.5",
+ "rand 0.9.2",
"rope",
"util",
- "workspace-hack",
]
+[[package]]
+name = "strength_reduce"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
+
[[package]]
name = "strict-num"
version = "0.1.1"
@@ -15617,7 +16266,7 @@ checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
dependencies = [
"new_debug_unreachable",
"parking_lot",
- "phf_shared",
+ "phf_shared 0.11.3",
"precomputed-hash",
"serde",
]
@@ -15628,8 +16277,8 @@ version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0"
dependencies = [
- "phf_generator",
- "phf_shared",
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
"proc-macro2",
"quote",
]
@@ -15662,11 +16311,11 @@ dependencies = [
[[package]]
name = "strum"
-version = "0.27.1"
+version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32"
+checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
dependencies = [
- "strum_macros 0.27.1",
+ "strum_macros 0.27.2",
]
[[package]]
@@ -15679,20 +16328,19 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "strum_macros"
-version = "0.27.1"
+version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8"
+checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "rustversion",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -15708,9 +16356,8 @@ dependencies = [
"arrayvec",
"ctor",
"log",
- "rand 0.8.5",
+ "rand 0.9.2",
"rayon",
- "workspace-hack",
"zlog",
]
@@ -15741,7 +16388,6 @@ dependencies = [
"ui",
"unicode-segmentation",
"util",
- "workspace-hack",
]
[[package]]
@@ -15756,20 +16402,19 @@ dependencies = [
"serde_json",
"smol",
"util",
- "workspace-hack",
]
[[package]]
name = "sval"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cc9739f56c5d0c44a5ed45473ec868af02eb896af8c05f616673a31e1d1bb09"
+checksum = "d94c4464e595f0284970fd9c7e9013804d035d4a61ab74b113242c874c05814d"
[[package]]
name = "sval_buffer"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f39b07436a8c271b34dad5070c634d1d3d76d6776e938ee97b4a66a5e8003d0b"
+checksum = "a0f46e34b20a39e6a2bf02b926983149b3af6609fd1ee8a6e63f6f340f3e2164"
dependencies = [
"sval",
"sval_ref",
@@ -15777,18 +16422,18 @@ dependencies = [
[[package]]
name = "sval_dynamic"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffcb072d857431bf885580dacecf05ed987bac931230736739a79051dbf3499b"
+checksum = "03d0970e53c92ab5381d3b2db1828da8af945954d4234225f6dd9c3afbcef3f5"
dependencies = [
"sval",
]
[[package]]
name = "sval_fmt"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f214f427ad94a553e5ca5514c95c6be84667cbc5568cce957f03f3477d03d5c"
+checksum = "43e5e6e1613e1e7fc2e1a9fdd709622e54c122ceb067a60d170d75efd491a839"
dependencies = [
"itoa",
"ryu",
@@ -15797,9 +16442,9 @@ dependencies = [
[[package]]
name = "sval_json"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "389ed34b32e638dec9a99c8ac92d0aa1220d40041026b625474c2b6a4d6f4feb"
+checksum = "aec382f7bfa6e367b23c9611f129b94eb7daaf3d8fae45a8d0a0211eb4d4c8e6"
dependencies = [
"itoa",
"ryu",
@@ -15808,9 +16453,9 @@ dependencies = [
[[package]]
name = "sval_nested"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14bae8fcb2f24fee2c42c1f19037707f7c9a29a0cda936d2188d48a961c4bb2a"
+checksum = "3049d0f99ce6297f8f7d9953b35a0103b7584d8f638de40e64edb7105fa578ae"
dependencies = [
"sval",
"sval_buffer",
@@ -15819,20 +16464,20 @@ dependencies = [
[[package]]
name = "sval_ref"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a4eaea3821d3046dcba81d4b8489421da42961889902342691fb7eab491d79e"
+checksum = "f88913e77506085c0a8bf6912bb6558591a960faf5317df6c1d9b227224ca6e1"
dependencies = [
"sval",
]
[[package]]
name = "sval_serde"
-version = "2.14.1"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "172dd4aa8cb3b45c8ac8f3b4111d644cd26938b0643ede8f93070812b87fb339"
+checksum = "f579fd7254f4be6cd7b450034f856b78523404655848789c451bacc6aa8b387d"
dependencies = [
- "serde",
+ "serde_core",
"sval",
"sval_nested",
]
@@ -15850,9 +16495,9 @@ dependencies = [
"editor",
"file_icons",
"gpui",
+ "language",
"ui",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -15867,9 +16512,9 @@ dependencies = [
[[package]]
name = "swash"
-version = "0.2.2"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fae9a562c7b46107d9c78cd78b75bbe1e991c16734c0aee8ff0ee711fb8b620a"
+checksum = "47846491253e976bdd07d0f9cc24b7daf24720d11309302ccbbc6e6b6e53550a"
dependencies = [
"skrifa",
"yazi",
@@ -15878,32 +16523,84 @@ dependencies = [
[[package]]
name = "symphonia"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9"
+checksum = "5773a4c030a19d9bfaa090f49746ff35c75dfddfa700df7a5939d5e076a57039"
dependencies = [
"lazy_static",
+ "symphonia-bundle-flac",
+ "symphonia-bundle-mp3",
+ "symphonia-codec-aac",
"symphonia-codec-pcm",
+ "symphonia-codec-vorbis",
"symphonia-core",
+ "symphonia-format-isomp4",
+ "symphonia-format-ogg",
"symphonia-format-riff",
"symphonia-metadata",
]
+[[package]]
+name = "symphonia-bundle-flac"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c91565e180aea25d9b80a910c546802526ffd0072d0b8974e3ebe59b686c9976"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-bundle-mp3"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4872dd6bb56bf5eac799e3e957aa1981086c3e613b27e0ac23b176054f7c57ed"
+dependencies = [
+ "lazy_static",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "symphonia-codec-aac"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c263845aa86881416849c1729a54c7f55164f8b96111dba59de46849e73a790"
+dependencies = [
+ "lazy_static",
+ "log",
+ "symphonia-core",
+]
+
[[package]]
name = "symphonia-codec-pcm"
-version = "0.5.4"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e89d716c01541ad3ebe7c91ce4c8d38a7cf266a3f7b2f090b108fb0cb031d95"
+dependencies = [
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-codec-vorbis"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f395a67057c2ebc5e84d7bb1be71cce1a7ba99f64e0f0f0e303a03f79116f89b"
+checksum = "f025837c309cd69ffef572750b4a2257b59552c5399a5e49707cc5b1b85d1c73"
dependencies = [
"log",
"symphonia-core",
+ "symphonia-utils-xiph",
]
[[package]]
name = "symphonia-core"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3"
+checksum = "ea00cc4f79b7f6bb7ff87eddc065a1066f3a43fe1875979056672c9ef948c2af"
dependencies = [
"arrayvec",
"bitflags 1.3.2",
@@ -15912,11 +16609,36 @@ dependencies = [
"log",
]
+[[package]]
+name = "symphonia-format-isomp4"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "243739585d11f81daf8dac8d9f3d18cc7898f6c09a259675fc364b382c30e0a5"
+dependencies = [
+ "encoding_rs",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-format-ogg"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b4955c67c1ed3aa8ae8428d04ca8397fbef6a19b2b051e73b5da8b1435639cb"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
[[package]]
name = "symphonia-format-riff"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f7be232f962f937f4b7115cbe62c330929345434c834359425e043bfd15f50"
+checksum = "c2d7c3df0e7d94efb68401d81906eae73c02b40d5ec1a141962c592d0f11a96f"
dependencies = [
"extended",
"log",
@@ -15926,9 +16648,9 @@ dependencies = [
[[package]]
name = "symphonia-metadata"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c"
+checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16"
dependencies = [
"encoding_rs",
"lazy_static",
@@ -15936,6 +16658,16 @@ dependencies = [
"symphonia-core",
]
+[[package]]
+name = "symphonia-utils-xiph"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee27c85ab799a338446b68eec77abf42e1a6f1bb490656e121c6e27bfbab9f16"
+dependencies = [
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
[[package]]
name = "syn"
version = "1.0.109"
@@ -15949,9 +16681,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.101"
+version = "2.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
dependencies = [
"proc-macro2",
"quote",
@@ -15979,27 +16711,55 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3dbc01390fc626ce8d1cffe3376ded2b72a11bb70e1c75f404a210e4daa4def2"
dependencies = [
- "crossbeam-queue",
+ "crossbeam-queue",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "sys-locale"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"
+dependencies = [
+ "libc",
]
[[package]]
-name = "synstructure"
-version = "0.13.1"
+name = "sysctl"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "bitflags 2.9.4",
+ "byteorder",
+ "enum-as-inner",
+ "libc",
+ "thiserror 1.0.69",
+ "walkdir",
]
[[package]]
-name = "sys-locale"
-version = "0.3.2"
+name = "sysctl"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"
+checksum = "01198a2debb237c62b6826ec7081082d951f46dbb64b0e8c7649a452230d1dfc"
dependencies = [
+ "bitflags 2.9.4",
+ "byteorder",
+ "enum-as-inner",
"libc",
+ "thiserror 1.0.69",
+ "walkdir",
]
[[package]]
@@ -16016,6 +16776,20 @@ dependencies = [
"windows 0.57.0",
]
+[[package]]
+name = "sysinfo"
+version = "0.37.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f"
+dependencies = [
+ "libc",
+ "memchr",
+ "ntapi",
+ "objc2-core-foundation",
+ "objc2-io-kit",
+ "windows 0.61.3",
+]
+
[[package]]
name = "system-configuration"
version = "0.5.1"
@@ -16033,7 +16807,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"core-foundation 0.9.4",
"system-configuration-sys 0.6.0",
]
@@ -16067,7 +16841,7 @@ dependencies = [
"cfg-expr",
"heck 0.5.0",
"pkg-config",
- "toml 0.8.20",
+ "toml 0.8.23",
"version-compare",
]
@@ -16077,7 +16851,7 @@ version = "0.27.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc4592f674ce18521c2a81483873a49596655b179f71c5e05d10c1fe66c78745"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cap-fs-ext",
"cap-std",
"fd-lock",
@@ -16087,6 +16861,20 @@ dependencies = [
"winx",
]
+[[package]]
+name = "system_specs"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "gpui",
+ "human_bytes",
+ "pciid-parser",
+ "release_channel",
+ "serde",
+ "sysinfo 0.37.2",
+]
+
[[package]]
name = "tab_switcher"
version = "0.1.0"
@@ -16101,7 +16889,7 @@ dependencies = [
"menu",
"picker",
"project",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"settings",
@@ -16110,7 +16898,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zlog",
]
@@ -16164,9 +16951,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "target-lexicon"
-version = "0.13.2"
+version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
+checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
[[package]]
name = "task"
@@ -16181,14 +16968,13 @@ dependencies = [
"parking_lot",
"pretty_assertions",
"proto",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"serde_json_lenient",
"sha2",
"shellexpand 2.1.2",
"util",
- "workspace-hack",
"zed_actions",
]
@@ -16215,7 +17001,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -16227,7 +17012,6 @@ dependencies = [
"serde",
"serde_json",
"telemetry_events",
- "workspace-hack",
]
[[package]]
@@ -16237,20 +17021,19 @@ dependencies = [
"semantic_version",
"serde",
"serde_json",
- "workspace-hack",
]
[[package]]
name = "tempfile"
-version = "3.20.0"
+version = "3.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
dependencies = [
"fastrand 2.3.0",
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"once_cell",
- "rustix 1.0.7",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -16280,37 +17063,36 @@ dependencies = [
"alacritty_terminal",
"anyhow",
"collections",
- "dirs 4.0.0",
"futures 0.3.31",
"gpui",
+ "itertools 0.14.0",
"libc",
- "rand 0.8.5",
+ "log",
+ "rand 0.9.2",
"regex",
"release_channel",
- "schemars",
+ "schemars 1.0.4",
"serde",
- "serde_derive",
"settings",
"smol",
- "sysinfo",
+ "sysinfo 0.37.2",
"task",
"theme",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"url",
"urlencoding",
"util",
- "windows 0.61.1",
- "workspace-hack",
+ "windows 0.61.3",
]
[[package]]
name = "terminal_size"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed"
+checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0"
dependencies = [
- "rustix 1.0.7",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -16331,10 +17113,11 @@ dependencies = [
"itertools 0.14.0",
"language",
"log",
+ "pretty_assertions",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
- "schemars",
+ "schemars 1.0.4",
"search",
"serde",
"serde_json",
@@ -16347,7 +17130,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -16364,13 +17146,12 @@ dependencies = [
"log",
"parking_lot",
"postage",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"rope",
"smallvec",
"sum_tree",
"util",
- "workspace-hack",
"zlog",
]
@@ -16380,28 +17161,23 @@ version = "0.1.0"
dependencies = [
"anyhow",
"collections",
- "derive_more 0.99.19",
+ "derive_more 0.99.20",
"fs",
"futures 0.3.31",
"gpui",
- "indexmap",
- "inventory",
"log",
"palette",
"parking_lot",
"refineable",
- "schemars",
+ "schemars 1.0.4",
"serde",
- "serde_derive",
"serde_json",
"serde_json_lenient",
- "serde_repr",
"settings",
- "strum 0.27.1",
- "thiserror 2.0.12",
+ "strum 0.27.2",
+ "thiserror 2.0.17",
"util",
"uuid",
- "workspace-hack",
]
[[package]]
@@ -16413,7 +17189,6 @@ dependencies = [
"fs",
"gpui",
"theme",
- "workspace-hack",
]
[[package]]
@@ -16422,18 +17197,18 @@ version = "0.1.0"
dependencies = [
"anyhow",
"clap",
+ "collections",
"gpui",
- "indexmap",
+ "indexmap 2.11.4",
"log",
"palette",
"serde",
"serde_json",
"serde_json_lenient",
"simplelog",
- "strum 0.27.1",
+ "strum 0.27.2",
"theme",
"vscode_theme",
- "workspace-hack",
]
[[package]]
@@ -16452,7 +17227,6 @@ dependencies = [
"ui",
"util",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -16467,11 +17241,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.12"
+version = "2.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
+checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
dependencies = [
- "thiserror-impl 2.0.12",
+ "thiserror-impl 2.0.17",
]
[[package]]
@@ -16482,39 +17256,41 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.12"
+version = "2.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
+checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "thread_local"
-version = "1.1.8"
+version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
- "once_cell",
]
[[package]]
name = "tiff"
-version = "0.9.1"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
+checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
dependencies = [
+ "fax",
"flate2",
- "jpeg-decoder",
+ "half",
+ "quick-error",
"weezl",
+ "zune-jpeg",
]
[[package]]
@@ -16533,9 +17309,9 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.41"
+version = "0.3.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
+checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
dependencies = [
"deranged",
"itoa",
@@ -16550,15 +17326,15 @@ dependencies = [
[[package]]
name = "time-core"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
+checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
[[package]]
name = "time-macros"
-version = "0.2.22"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
+checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
dependencies = [
"num-conv",
"time-core",
@@ -16572,7 +17348,6 @@ dependencies = [
"core-foundation-sys",
"sys-locale",
"time",
- "workspace-hack",
]
[[package]]
@@ -16595,7 +17370,7 @@ dependencies = [
"bytemuck",
"cfg-if",
"log",
- "png",
+ "png 0.17.16",
"tiny-skia-path",
]
@@ -16625,9 +17400,9 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.7.6"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
dependencies = [
"displaydoc",
"zerovec",
@@ -16645,9 +17420,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
dependencies = [
"tinyvec_macros",
]
@@ -16665,6 +17440,7 @@ dependencies = [
"anyhow",
"auto_update",
"call",
+ "channel",
"chrono",
"client",
"cloud_llm_client",
@@ -16677,10 +17453,9 @@ dependencies = [
"project",
"remote",
"rpc",
- "schemars",
+ "schemars 1.0.4",
"serde",
"settings",
- "settings_ui",
"smallvec",
"story",
"telemetry",
@@ -16688,28 +17463,26 @@ dependencies = [
"tree-sitter-md",
"ui",
"util",
- "windows 0.61.1",
+ "windows 0.61.3",
"workspace",
- "workspace-hack",
"zed_actions",
]
[[package]]
name = "tokio"
-version = "1.44.2"
+version = "1.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
dependencies = [
- "backtrace",
"bytes 1.10.1",
"libc",
- "mio 1.0.3",
+ "mio 1.1.0",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
- "socket2",
+ "socket2 0.6.1",
"tokio-macros",
- "windows-sys 0.52.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -16725,13 +17498,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "2.5.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -16760,7 +17533,7 @@ version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
dependencies = [
- "rustls 0.23.26",
+ "rustls 0.23.33",
"tokio",
]
@@ -16820,7 +17593,7 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084"
dependencies = [
"futures-util",
"log",
- "rustls 0.23.26",
+ "rustls 0.23.33",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.2",
@@ -16829,14 +17602,15 @@ dependencies = [
[[package]]
name = "tokio-util"
-version = "0.7.14"
+version = "0.7.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034"
+checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5"
dependencies = [
"bytes 1.10.1",
"futures-core",
"futures-io",
"futures-sink",
+ "futures-util",
"pin-project-lite",
"tokio",
]
@@ -16852,59 +17626,114 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.20"
+version = "0.8.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
+checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [
"serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.11",
+ "toml_edit 0.22.27",
+]
+
+[[package]]
+name = "toml"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
+dependencies = [
+ "indexmap 2.11.4",
+ "serde_core",
+ "serde_spanned 1.0.3",
+ "toml_datetime 0.7.3",
+ "toml_parser",
+ "toml_writer",
+ "winnow",
]
[[package]]
name = "toml_datetime"
-version = "0.6.9"
+version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3"
+checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
dependencies = [
"serde",
]
+[[package]]
+name = "toml_datetime"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
+dependencies = [
+ "serde_core",
+]
+
[[package]]
name = "toml_edit"
-version = "0.22.26"
+version = "0.22.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
+checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
- "indexmap",
+ "indexmap 2.11.4",
"serde",
- "serde_spanned",
- "toml_datetime",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.11",
"toml_write",
"winnow",
]
+[[package]]
+name = "toml_edit"
+version = "0.23.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
+dependencies = [
+ "indexmap 2.11.4",
+ "toml_datetime 0.7.3",
+ "toml_parser",
+ "winnow",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
+dependencies = [
+ "winnow",
+]
+
[[package]]
name = "toml_write"
-version = "0.1.1"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
+
+[[package]]
+name = "toml_writer"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076"
+checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
[[package]]
name = "toolchain_selector"
version = "0.1.0"
dependencies = [
+ "anyhow",
+ "convert_case 0.8.0",
"editor",
+ "file_finder",
+ "futures 0.3.31",
"fuzzy",
"gpui",
"language",
+ "menu",
"picker",
"project",
"ui",
"util",
"workspace",
- "workspace-hack",
]
[[package]]
@@ -16968,7 +17797,7 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"bytes 1.10.1",
"futures-core",
"futures-util",
@@ -16981,6 +17810,24 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "tower-http"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
+dependencies = [
+ "bitflags 2.9.4",
+ "bytes 1.10.1",
+ "futures-util",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "iri-string",
+ "pin-project-lite",
+ "tower 0.5.2",
+ "tower-layer",
+ "tower-service",
+]
+
[[package]]
name = "tower-layer"
version = "0.3.3"
@@ -17007,20 +17854,20 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.28"
+version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
+checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "tracing-core"
-version = "0.1.33"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
+checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
dependencies = [
"once_cell",
"valuable",
@@ -17049,14 +17896,14 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.19"
+version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
+checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
dependencies = [
"matchers",
- "nu-ansi-term 0.46.0",
+ "nu-ansi-term",
"once_cell",
- "regex",
+ "regex-automata",
"serde",
"serde_json",
"sharded-slab",
@@ -17076,18 +17923,28 @@ checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
+]
+
+[[package]]
+name = "transpose"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e"
+dependencies = [
+ "num-integer",
+ "strength_reduce",
]
[[package]]
name = "tree-sitter"
-version = "0.25.6"
+version = "0.25.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7cf18d43cbf0bfca51f657132cc616a5097edc4424d538bae6fa60142eaf9f0"
+checksum = "78f873475d258561b06f1c595d93308a7ed124d9977cb26b148c2084a4a3cc87"
dependencies = [
"cc",
"regex",
- "regex-syntax 0.8.5",
+ "regex-syntax",
"serde_json",
"streaming-iterator",
"tree-sitter-language",
@@ -17117,8 +17974,7 @@ dependencies = [
[[package]]
name = "tree-sitter-cpp"
version = "0.23.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df2196ea9d47b4ab4a31b9297eaa5a5d19a0b121dceb9f118f6790ad0ab94743"
+source = "git+https://github.com/tree-sitter/tree-sitter-cpp?rev=5cb9b693cfd7bfacab1d9ff4acac1a4150700609#5cb9b693cfd7bfacab1d9ff4acac1a4150700609"
dependencies = [
"cc",
"tree-sitter-language",
@@ -17257,8 +18113,9 @@ dependencies = [
[[package]]
name = "tree-sitter-python"
-version = "0.23.6"
-source = "git+https://github.com/zed-industries/tree-sitter-python?rev=218fcbf3fda3d029225f3dec005cb497d111b35e#218fcbf3fda3d029225f3dec005cb497d111b35e"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bf85fd39652e740bf60f46f4cda9492c3a9ad75880575bf14960f775cb74a1c"
dependencies = [
"cc",
"tree-sitter-language",
@@ -17297,8 +18154,7 @@ dependencies = [
[[package]]
name = "tree-sitter-typescript"
version = "0.23.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c5f76ed8d947a75cc446d5fccd8b602ebf0cde64ccf2ffa434d873d7a575eff"
+source = "git+https://github.com/zed-industries/tree-sitter-typescript?rev=e2c53597d6a5d9cf7bbe8dccde576fe1e46c5899#e2c53597d6a5d9cf7bbe8dccde576fe1e46c5899"
dependencies = [
"cc",
"tree-sitter-language",
@@ -17389,11 +18245,30 @@ dependencies = [
"http 1.3.1",
"httparse",
"log",
- "rand 0.9.1",
- "rustls 0.23.26",
+ "rand 0.9.2",
+ "rustls 0.23.33",
+ "rustls-pki-types",
+ "sha1",
+ "thiserror 2.0.17",
+ "utf-8",
+]
+
+[[package]]
+name = "tungstenite"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d"
+dependencies = [
+ "bytes 1.10.1",
+ "data-encoding",
+ "http 1.3.1",
+ "httparse",
+ "log",
+ "rand 0.9.2",
+ "rustls 0.23.33",
"rustls-pki-types",
"sha1",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"utf-8",
]
@@ -17411,9 +18286,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
[[package]]
name = "typenum"
-version = "1.18.0"
+version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
name = "ucd-trie"
@@ -17441,6 +18316,27 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "ug"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90b70b37e9074642bc5f60bb23247fd072a84314ca9e71cdf8527593406a0dd3"
+dependencies = [
+ "gemm 0.18.2",
+ "half",
+ "libloading",
+ "memmap2",
+ "num",
+ "num-traits",
+ "num_cpus",
+ "rayon",
+ "safetensors",
+ "serde",
+ "thiserror 1.0.69",
+ "tracing",
+ "yoke 0.7.5",
+]
+
[[package]]
name = "ui"
version = "0.1.0"
@@ -17453,16 +18349,16 @@ dependencies = [
"icons",
"itertools 0.14.0",
"menu",
+ "schemars 1.0.4",
"serde",
"settings",
"smallvec",
"story",
- "strum 0.27.1",
+ "strum 0.27.2",
"theme",
"ui_macros",
"util",
- "windows 0.61.1",
- "workspace-hack",
+ "windows 0.61.3",
]
[[package]]
@@ -17472,19 +18368,20 @@ dependencies = [
"component",
"editor",
"gpui",
+ "menu",
"settings",
"theme",
"ui",
- "workspace-hack",
]
[[package]]
name = "ui_macros"
version = "0.1.0"
dependencies = [
+ "component",
"quote",
- "syn 2.0.101",
- "workspace-hack",
+ "syn 2.0.106",
+ "ui",
]
[[package]]
@@ -17498,16 +18395,6 @@ dependencies = [
"theme",
"ui",
"workspace",
- "workspace-hack",
-]
-
-[[package]]
-name = "uluru"
-version = "3.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da"
-dependencies = [
- "arrayvec",
]
[[package]]
@@ -17534,12 +18421,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe"
-[[package]]
-name = "unicode-bom"
-version = "2.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217"
-
[[package]]
name = "unicode-ccc"
version = "0.2.0"
@@ -17554,9 +18435,9 @@ checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e"
[[package]]
name = "unicode-ident"
-version = "1.0.18"
+version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
[[package]]
name = "unicode-linebreak"
@@ -17579,6 +18460,15 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
+[[package]]
+name = "unicode-reverse"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b6f4888ebc23094adfb574fdca9fdc891826287a6397d2cd28802ffd6f20c76"
+dependencies = [
+ "unicode-segmentation",
+]
+
[[package]]
name = "unicode-script"
version = "0.5.7"
@@ -17599,15 +18489,9 @@ checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94"
[[package]]
name = "unicode-width"
-version = "0.1.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
-
-[[package]]
-name = "unicode-width"
-version = "0.2.0"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
[[package]]
name = "unicode-xid"
@@ -17627,17 +18511,29 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
+
[[package]]
name = "untrusted"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+[[package]]
+name = "unty"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae"
+
[[package]]
name = "url"
-version = "2.5.4"
+version = "2.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
dependencies = [
"form_urlencoded",
"idna",
@@ -17684,12 +18580,6 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
-[[package]]
-name = "utf16_iter"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
-
[[package]]
name = "utf8_iter"
version = "1.0.4"
@@ -17722,10 +18612,11 @@ dependencies = [
"libc",
"log",
"nix 0.29.0",
- "rand 0.8.5",
+ "pretty_assertions",
+ "rand 0.9.2",
"regex",
"rust-embed",
- "schemars",
+ "schemars 1.0.4",
"serde",
"serde_json",
"serde_json_lenient",
@@ -17737,27 +18628,29 @@ dependencies = [
"unicase",
"util_macros",
"walkdir",
- "workspace-hack",
+ "which 6.0.3",
]
[[package]]
name = "util_macros"
version = "0.1.0"
dependencies = [
+ "perf",
"quote",
- "syn 2.0.101",
- "workspace-hack",
+ "syn 2.0.106",
]
[[package]]
name = "uuid"
-version = "1.16.0"
+version = "1.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
+ "js-sys",
"serde",
"sha1_smol",
+ "wasm-bindgen",
]
[[package]]
@@ -17773,9 +18666,9 @@ dependencies = [
[[package]]
name = "v_frame"
-version = "0.3.8"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b"
+checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2"
dependencies = [
"aligned-vec",
"num-traits",
@@ -17835,10 +18728,9 @@ name = "vercel"
version = "0.1.0"
dependencies = [
"anyhow",
- "schemars",
+ "schemars 1.0.4",
"serde",
- "strum 0.27.1",
- "workspace-hack",
+ "strum 0.27.2",
]
[[package]]
@@ -17868,6 +18760,7 @@ dependencies = [
"editor",
"env_logger 0.11.8",
"futures 0.3.31",
+ "fuzzy",
"git_ui",
"gpui",
"indoc",
@@ -17875,29 +18768,31 @@ dependencies = [
"language",
"log",
"lsp",
+ "menu",
"multi_buffer",
"nvim-rs",
"parking_lot",
+ "perf",
"picker",
"project",
"project_panel",
"regex",
"release_channel",
- "schemars",
+ "schemars 1.0.4",
"search",
"serde",
- "serde_derive",
"serde_json",
"settings",
+ "settings_ui",
"task",
"text",
"theme",
"tokio",
"ui",
"util",
+ "util_macros",
"vim_mode_setting",
"workspace",
- "workspace-hack",
"zed_actions",
]
@@ -17905,12 +18800,16 @@ dependencies = [
name = "vim_mode_setting"
version = "0.1.0"
dependencies = [
- "anyhow",
"gpui",
"settings",
- "workspace-hack",
]
+[[package]]
+name = "virtue"
+version = "0.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1"
+
[[package]]
name = "vscode_theme"
version = "0.2.0"
@@ -17953,7 +18852,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5924018406ce0063cd67f8e008104968b74b563ee1b85dde3ed1f7cb87d3dbd"
dependencies = [
"arrayvec",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"cursor-icon",
"log",
"memchr",
@@ -18015,17 +18914,17 @@ dependencies = [
[[package]]
name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
-name = "wasi"
-version = "0.14.2+wasi-0.2.4"
+name = "wasip2"
+version = "1.0.1+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
dependencies = [
- "wit-bindgen-rt 0.39.0",
+ "wit-bindgen 0.46.0",
]
[[package]]
@@ -18036,35 +18935,36 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
[[package]]
name = "wasm-bindgen"
-version = "0.2.100"
+version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
+ "wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.100"
+version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19"
dependencies = [
"bumpalo",
"log",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.50"
+version = "0.4.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
+checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c"
dependencies = [
"cfg-if",
"js-sys",
@@ -18075,9 +18975,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.100"
+version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -18085,22 +18985,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.100"
+version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.100"
+version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1"
dependencies = [
"unicode-ident",
]
@@ -18141,7 +19041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fd83062c17b9f4985d438603cde0a5e8c5c8198201a6937f778b607924c7da2"
dependencies = [
"anyhow",
- "indexmap",
+ "indexmap 2.11.4",
"serde",
"serde_derive",
"serde_json",
@@ -18159,7 +19059,7 @@ dependencies = [
"anyhow",
"auditable-serde",
"flate2",
- "indexmap",
+ "indexmap 2.11.4",
"serde",
"serde_derive",
"serde_json",
@@ -18188,8 +19088,8 @@ version = "0.201.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84e5df6dba6c0d7fafc63a450f1738451ed7a0b52295d83e868218fa286bf708"
dependencies = [
- "bitflags 2.9.0",
- "indexmap",
+ "bitflags 2.9.4",
+ "indexmap 2.11.4",
"semver",
]
@@ -18199,9 +19099,9 @@ version = "0.221.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d06bfa36ab3ac2be0dee563380147a5b81ba10dd8885d7fbbc9eb574be67d185"
dependencies = [
- "bitflags 2.9.0",
- "hashbrown 0.15.3",
- "indexmap",
+ "bitflags 2.9.4",
+ "hashbrown 0.15.5",
+ "indexmap 2.11.4",
"semver",
"serde",
]
@@ -18212,9 +19112,9 @@ version = "0.227.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f51cad774fb3c9461ab9bccc9c62dfb7388397b5deda31bf40e8108ccd678b2"
dependencies = [
- "bitflags 2.9.0",
- "hashbrown 0.15.3",
- "indexmap",
+ "bitflags 2.9.4",
+ "hashbrown 0.15.5",
+ "indexmap 2.11.4",
"semver",
]
@@ -18237,18 +19137,18 @@ checksum = "11976a250672556d1c4c04c6d5d7656ac9192ac9edc42a4587d6c21460010e69"
dependencies = [
"anyhow",
"async-trait",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"bumpalo",
"cc",
"cfg-if",
"encoding_rs",
"hashbrown 0.14.5",
- "indexmap",
+ "indexmap 2.11.4",
"libc",
"log",
- "mach2",
+ "mach2 0.4.3",
"memfd",
- "object",
+ "object 0.36.7",
"once_cell",
"paste",
"postcard",
@@ -18261,7 +19161,7 @@ dependencies = [
"serde_derive",
"smallvec",
"sptr",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
"trait-variant",
"wasmparser 0.221.3",
"wasmtime-asm-macros",
@@ -18319,7 +19219,7 @@ dependencies = [
"anyhow",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"wasmtime-component-util",
"wasmtime-wit-bindgen",
"wit-parser 0.221.3",
@@ -18344,12 +19244,12 @@ dependencies = [
"cranelift-entity",
"cranelift-frontend",
"cranelift-native",
- "gimli",
+ "gimli 0.31.1",
"itertools 0.12.1",
"log",
- "object",
+ "object 0.36.7",
"smallvec",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
"thiserror 1.0.69",
"wasmparser 0.221.3",
"wasmtime-environ",
@@ -18366,17 +19266,17 @@ dependencies = [
"cpp_demangle",
"cranelift-bitset",
"cranelift-entity",
- "gimli",
- "indexmap",
+ "gimli 0.31.1",
+ "indexmap 2.11.4",
"log",
- "object",
+ "object 0.36.7",
"postcard",
"rustc-demangle",
"semver",
"serde",
"serde_derive",
"smallvec",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
"wasm-encoder 0.221.3",
"wasmparser 0.221.3",
"wasmprinter",
@@ -18433,7 +19333,7 @@ checksum = "86ff86db216dc0240462de40c8290887a613dddf9685508eb39479037ba97b5b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -18444,7 +19344,7 @@ checksum = "8d1be69bfcab1bdac74daa7a1f9695ab992b9c8e21b9b061e7d66434097e0ca4"
dependencies = [
"anyhow",
"async-trait",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"bytes 1.10.1",
"cap-fs-ext",
"cap-net-ext",
@@ -18475,9 +19375,9 @@ checksum = "fdbabfb8f20502d5e1d81092b9ead3682ae59988487aafcd7567387b7a43cf8f"
dependencies = [
"anyhow",
"cranelift-codegen",
- "gimli",
- "object",
- "target-lexicon 0.13.2",
+ "gimli 0.31.1",
+ "object 0.36.7",
+ "target-lexicon 0.13.3",
"wasmparser 0.221.3",
"wasmtime-cranelift",
"wasmtime-environ",
@@ -18492,7 +19392,7 @@ checksum = "8358319c2dd1e4db79e3c1c5d3a5af84956615343f9f89f4e4996a36816e06e6"
dependencies = [
"anyhow",
"heck 0.5.0",
- "indexmap",
+ "indexmap 2.11.4",
"wit-parser 0.221.3",
]
@@ -18513,20 +19413,19 @@ dependencies = [
"futures 0.3.31",
"gpui",
"parking_lot",
- "rand 0.8.5",
- "workspace-hack",
+ "rand 0.9.2",
"zlog",
]
[[package]]
name = "wayland-backend"
-version = "0.3.8"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf"
+checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35"
dependencies = [
"cc",
"downcast-rs",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"scoped-tls",
"smallvec",
"wayland-sys",
@@ -18534,23 +19433,23 @@ dependencies = [
[[package]]
name = "wayland-client"
-version = "0.31.8"
+version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f"
+checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d"
dependencies = [
- "bitflags 2.9.0",
- "rustix 0.38.44",
+ "bitflags 2.9.4",
+ "rustix 1.1.2",
"wayland-backend",
"wayland-scanner",
]
[[package]]
name = "wayland-cursor"
-version = "0.31.8"
+version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a93029cbb6650748881a00e4922b076092a6a08c11e7fbdb923f064b23968c5d"
+checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29"
dependencies = [
- "rustix 0.38.44",
+ "rustix 1.1.2",
"wayland-client",
"xcursor",
]
@@ -18559,43 +19458,68 @@ dependencies = [
name = "wayland-protocols"
version = "0.31.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
+checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
+dependencies = [
+ "bitflags 2.9.4",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.32.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901"
+dependencies = [
+ "bitflags 2.9.4",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols-plasma"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"wayland-backend",
"wayland-client",
+ "wayland-protocols 0.31.2",
"wayland-scanner",
]
[[package]]
-name = "wayland-protocols-plasma"
-version = "0.2.0"
+name = "wayland-protocols-wlr"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
+checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"wayland-backend",
"wayland-client",
- "wayland-protocols",
+ "wayland-protocols 0.32.9",
"wayland-scanner",
]
[[package]]
name = "wayland-scanner"
-version = "0.31.6"
+version = "0.31.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484"
+checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3"
dependencies = [
"proc-macro2",
- "quick-xml 0.37.4",
+ "quick-xml 0.37.5",
"quote",
]
[[package]]
name = "wayland-sys"
-version = "0.31.6"
+version = "0.31.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615"
+checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142"
dependencies = [
"dlib",
"log",
@@ -18605,9 +19529,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.77"
+version = "0.3.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -18625,11 +19549,11 @@ dependencies = [
[[package]]
name = "web_atoms"
-version = "0.1.0"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "954c5a41f2bcb7314344079d0891505458cc2f4b422bdea1d5bfbe6d1a04903b"
+checksum = "57ffde1dc01240bdf9992e3205668b235e59421fd085e8a317ed98da0178d414"
dependencies = [
- "phf",
+ "phf 0.11.3",
"phf_codegen",
"string_cache",
"string_cache_codegen",
@@ -18644,7 +19568,6 @@ dependencies = [
"collections",
"gpui",
"serde",
- "workspace-hack",
]
[[package]]
@@ -18661,7 +19584,6 @@ dependencies = [
"serde",
"serde_json",
"web_search",
- "workspace-hack",
]
[[package]]
@@ -18705,14 +19627,14 @@ dependencies = [
"reqwest 0.11.27",
"scratch",
"semver",
- "zip",
+ "zip 0.6.6",
]
[[package]]
name = "weezl"
-version = "0.1.8"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
+checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
[[package]]
name = "which"
@@ -18740,11 +19662,11 @@ dependencies = [
[[package]]
name = "whoami"
-version = "1.6.0"
+version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7"
+checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d"
dependencies = [
- "redox_syscall 0.5.11",
+ "libredox",
"wasite",
]
@@ -18756,7 +19678,7 @@ checksum = "4b9af35bc9629c52c261465320a9a07959164928b4241980ba1cf923b9e6751d"
dependencies = [
"anyhow",
"async-trait",
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"thiserror 1.0.69",
"tracing",
"wasmtime",
@@ -18774,7 +19696,7 @@ dependencies = [
"proc-macro2",
"quote",
"shellexpand 2.1.2",
- "syn 2.0.101",
+ "syn 2.0.106",
"witx",
]
@@ -18786,7 +19708,7 @@ checksum = "08c5c473d4198e6c2d377f3809f713ff0c110cab88a0805ae099a82119ee250c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"wiggle-generate",
]
@@ -18808,11 +19730,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.9"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -18829,10 +19751,10 @@ checksum = "2f849ef2c5f46cb0a20af4b4487aaa239846e52e2c03f13fa3c784684552859c"
dependencies = [
"anyhow",
"cranelift-codegen",
- "gimli",
+ "gimli 0.31.1",
"regalloc2",
"smallvec",
- "target-lexicon 0.13.2",
+ "target-lexicon 0.13.3",
"thiserror 1.0.69",
"wasmparser 0.221.3",
"wasmtime-cranelift",
@@ -18871,14 +19793,14 @@ dependencies = [
[[package]]
name = "windows"
-version = "0.61.1"
+version = "0.61.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419"
+checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
dependencies = [
"windows-collections",
- "windows-core 0.61.0",
+ "windows-core 0.61.2",
"windows-future",
- "windows-link",
+ "windows-link 0.1.3",
"windows-numerics",
]
@@ -18891,8 +19813,8 @@ dependencies = [
"ctrlc",
"parking_lot",
"rayon",
- "thiserror 2.0.12",
- "windows 0.61.1",
+ "thiserror 2.0.17",
+ "windows 0.61.3",
"windows-future",
]
@@ -18902,7 +19824,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
dependencies = [
- "windows-core 0.61.0",
+ "windows-core 0.61.2",
]
[[package]]
@@ -18942,25 +19864,39 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.61.0"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
+dependencies = [
+ "windows-implement 0.60.2",
+ "windows-interface 0.59.3",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
- "windows-implement 0.60.0",
- "windows-interface 0.59.1",
- "windows-link",
- "windows-result 0.3.2",
- "windows-strings 0.4.0",
+ "windows-implement 0.60.2",
+ "windows-interface 0.59.3",
+ "windows-link 0.2.1",
+ "windows-result 0.4.1",
+ "windows-strings 0.5.1",
]
[[package]]
name = "windows-future"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32"
+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
dependencies = [
- "windows-core 0.61.0",
- "windows-link",
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
+ "windows-threading",
]
[[package]]
@@ -18971,7 +19907,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -18982,18 +19918,18 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "windows-implement"
-version = "0.60.0"
+version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -19004,7 +19940,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -19015,25 +19951,31 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "windows-interface"
-version = "0.59.1"
+version = "0.59.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
name = "windows-link"
-version = "0.1.1"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-numerics"
@@ -19041,8 +19983,8 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
dependencies = [
- "windows-core 0.61.0",
- "windows-link",
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
]
[[package]]
@@ -19051,20 +19993,31 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
dependencies = [
- "windows-result 0.3.2",
+ "windows-result 0.3.4",
"windows-strings 0.3.1",
- "windows-targets 0.53.0",
+ "windows-targets 0.53.5",
]
[[package]]
name = "windows-registry"
-version = "0.5.1"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
+dependencies = [
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
+]
+
+[[package]]
+name = "windows-registry"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad1da3e436dc7653dfdf3da67332e22bff09bb0e28b0239e1624499c7830842e"
+checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
dependencies = [
- "windows-link",
- "windows-result 0.3.2",
- "windows-strings 0.4.0",
+ "windows-link 0.2.1",
+ "windows-result 0.4.1",
+ "windows-strings 0.5.1",
]
[[package]]
@@ -19087,11 +20040,20 @@ dependencies = [
[[package]]
name = "windows-result"
-version = "0.3.2"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -19110,16 +20072,25 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
name = "windows-strings"
-version = "0.4.0"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -19158,6 +20129,24 @@ dependencies = [
"windows-targets 0.52.6",
]
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
[[package]]
name = "windows-targets"
version = "0.42.2"
@@ -19206,18 +20195,28 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.53.0"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link 0.2.1",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
+
+[[package]]
+name = "windows-threading"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
dependencies = [
- "windows_aarch64_gnullvm 0.53.0",
- "windows_aarch64_msvc 0.53.0",
- "windows_i686_gnu 0.53.0",
- "windows_i686_gnullvm 0.53.0",
- "windows_i686_msvc 0.53.0",
- "windows_x86_64_gnu 0.53.0",
- "windows_x86_64_gnullvm 0.53.0",
- "windows_x86_64_msvc 0.53.0",
+ "windows-link 0.1.3",
]
[[package]]
@@ -19240,9 +20239,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
@@ -19264,9 +20263,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
@@ -19288,9 +20287,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
[[package]]
name = "windows_i686_gnullvm"
@@ -19300,9 +20299,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_gnullvm"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
@@ -19324,9 +20323,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
@@ -19348,9 +20347,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -19372,9 +20371,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
@@ -19396,15 +20395,15 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
[[package]]
name = "winnow"
-version = "0.7.6"
+version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10"
+checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
dependencies = [
"memchr",
]
@@ -19428,16 +20427,6 @@ dependencies = [
"windows-sys 0.48.0",
]
-[[package]]
-name = "winreg"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
-dependencies = [
- "cfg-if",
- "windows-sys 0.48.0",
-]
-
[[package]]
name = "winreg"
version = "0.55.0"
@@ -19450,11 +20439,11 @@ dependencies = [
[[package]]
name = "winresource"
-version = "0.1.20"
+version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba4a67c78ee5782c0c1cb41bebc7e12c6e79644daa1650ebbc1de5d5b08593f7"
+checksum = "edcacf11b6f48dd21b9ba002f991bdd5de29b2da8cc2800412f4b80f677e4957"
dependencies = [
- "toml 0.8.20",
+ "toml 0.8.23",
"version_check",
]
@@ -19470,7 +20459,7 @@ version = "0.36.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f3fd376f71958b862e7afb20cfe5a22830e1963462f3a17f49d82a6c1d1f42d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"windows-sys 0.59.0",
]
@@ -19489,7 +20478,7 @@ version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "288f992ea30e6b5c531b52cdd5f3be81c148554b09ea416f058d16556ba92c27"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"wit-bindgen-rt 0.22.0",
"wit-bindgen-rust-macro 0.22.0",
]
@@ -19504,6 +20493,12 @@ dependencies = [
"wit-bindgen-rust-macro 0.41.0",
]
+[[package]]
+name = "wit-bindgen"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
+
[[package]]
name = "wit-bindgen-core"
version = "0.22.0"
@@ -19531,22 +20526,13 @@ version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb8738270f32a2d6739973cbbb7c1b6dd8959ce515578a6e19165853272ee64"
-[[package]]
-name = "wit-bindgen-rt"
-version = "0.39.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
-dependencies = [
- "bitflags 2.9.0",
-]
-
[[package]]
name = "wit-bindgen-rt"
version = "0.41.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4db52a11d4dfb0a59f194c064055794ee6564eb1ced88c25da2cf76e50c5621"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
"futures 0.3.31",
"once_cell",
]
@@ -19559,7 +20545,7 @@ checksum = "d8a39a15d1ae2077688213611209849cad40e9e5cccf6e61951a425850677ff3"
dependencies = [
"anyhow",
"heck 0.4.1",
- "indexmap",
+ "indexmap 2.11.4",
"wasm-metadata 0.201.0",
"wit-bindgen-core 0.22.0",
"wit-component 0.201.0",
@@ -19573,9 +20559,9 @@ checksum = "9d0809dc5ba19e2e98661bf32fc0addc5a3ca5bf3a6a7083aa6ba484085ff3ce"
dependencies = [
"anyhow",
"heck 0.5.0",
- "indexmap",
+ "indexmap 2.11.4",
"prettyplease",
- "syn 2.0.101",
+ "syn 2.0.106",
"wasm-metadata 0.227.1",
"wit-bindgen-core 0.41.0",
"wit-component 0.227.1",
@@ -19590,7 +20576,7 @@ dependencies = [
"anyhow",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"wit-bindgen-core 0.22.0",
"wit-bindgen-rust 0.22.0",
]
@@ -19605,7 +20591,7 @@ dependencies = [
"prettyplease",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"wit-bindgen-core 0.41.0",
"wit-bindgen-rust 0.41.0",
]
@@ -19617,8 +20603,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "421c0c848a0660a8c22e2fd217929a0191f14476b68962afd2af89fd22e39825"
dependencies = [
"anyhow",
- "bitflags 2.9.0",
- "indexmap",
+ "bitflags 2.9.4",
+ "indexmap 2.11.4",
"log",
"serde",
"serde_derive",
@@ -19636,8 +20622,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "635c3adc595422cbf2341a17fb73a319669cc8d33deed3a48368a841df86b676"
dependencies = [
"anyhow",
- "bitflags 2.9.0",
- "indexmap",
+ "bitflags 2.9.4",
+ "indexmap 2.11.4",
"log",
"serde",
"serde_derive",
@@ -19656,7 +20642,7 @@ checksum = "196d3ecfc4b759a8573bf86a9b3f8996b304b3732e4c7de81655f875f6efdca6"
dependencies = [
"anyhow",
"id-arena",
- "indexmap",
+ "indexmap 2.11.4",
"log",
"semver",
"serde",
@@ -19674,7 +20660,7 @@ checksum = "896112579ed56b4a538b07a3d16e562d101ff6265c46b515ce0c701eef16b2ac"
dependencies = [
"anyhow",
"id-arena",
- "indexmap",
+ "indexmap 2.11.4",
"log",
"semver",
"serde",
@@ -19682,274 +20668,84 @@ dependencies = [
"serde_json",
"unicode-xid",
"wasmparser 0.221.3",
-]
-
-[[package]]
-name = "wit-parser"
-version = "0.227.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddf445ed5157046e4baf56f9138c124a0824d4d1657e7204d71886ad8ce2fc11"
-dependencies = [
- "anyhow",
- "id-arena",
- "indexmap",
- "log",
- "semver",
- "serde",
- "serde_derive",
- "serde_json",
- "unicode-xid",
- "wasmparser 0.227.1",
-]
-
-[[package]]
-name = "witx"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b"
-dependencies = [
- "anyhow",
- "log",
- "thiserror 1.0.69",
- "wast",
-]
-
-[[package]]
-name = "workspace"
-version = "0.1.0"
-dependencies = [
- "any_vec",
- "anyhow",
- "async-recursion",
- "bincode",
- "call",
- "client",
- "clock",
- "collections",
- "component",
- "dap",
- "db",
- "fs",
- "futures 0.3.31",
- "gpui",
- "http_client",
- "itertools 0.14.0",
- "language",
- "log",
- "menu",
- "node_runtime",
- "parking_lot",
- "postage",
- "project",
- "remote",
- "schemars",
- "serde",
- "serde_json",
- "session",
- "settings",
- "smallvec",
- "sqlez",
- "strum 0.27.1",
- "task",
- "telemetry",
- "tempfile",
- "theme",
- "ui",
- "util",
- "uuid",
- "windows 0.61.1",
- "workspace-hack",
- "zed_actions",
- "zlog",
-]
-
-[[package]]
-name = "workspace-hack"
-version = "0.1.0"
-dependencies = [
- "aes",
- "ahash 0.8.11",
- "aho-corasick",
- "anstream",
- "arrayvec",
- "async-compression",
- "async-std",
- "async-tungstenite",
- "aws-config",
- "aws-credential-types",
- "aws-runtime",
- "aws-sigv4",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "base64 0.22.1",
- "base64ct",
- "bigdecimal",
- "bit-set 0.8.0",
- "bit-vec 0.8.0",
- "bitflags 2.9.0",
- "bstr",
- "bytemuck",
- "byteorder",
- "bytes 1.10.1",
- "cc",
- "chrono",
- "cipher",
- "clap",
- "clap_builder",
- "codespan-reporting 0.12.0",
- "concurrent-queue",
- "core-foundation 0.9.4",
- "core-foundation-sys",
- "cranelift-codegen",
- "crc32fast",
- "crossbeam-epoch",
- "crossbeam-utils",
- "crypto-common",
- "deranged",
- "digest",
- "either",
- "euclid",
- "event-listener 5.4.0",
- "event-listener-strategy",
- "flate2",
- "flume",
- "foldhash",
- "form_urlencoded",
- "futures 0.3.31",
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
- "getrandom 0.2.15",
- "getrandom 0.3.2",
- "gimli",
- "half",
- "handlebars 4.5.0",
- "hashbrown 0.14.5",
- "hashbrown 0.15.3",
- "heck 0.4.1",
- "hmac",
- "hyper 0.14.32",
- "hyper-rustls 0.27.5",
- "idna",
- "indexmap",
- "inout",
- "itertools 0.12.1",
- "itertools 0.13.0",
- "jiff",
- "lazy_static",
- "libc",
- "libsqlite3-sys",
- "linux-raw-sys 0.4.15",
- "linux-raw-sys 0.9.4",
+]
+
+[[package]]
+name = "wit-parser"
+version = "0.227.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddf445ed5157046e4baf56f9138c124a0824d4d1657e7204d71886ad8ce2fc11"
+dependencies = [
+ "anyhow",
+ "id-arena",
+ "indexmap 2.11.4",
"log",
- "lyon",
- "lyon_path",
- "md-5",
- "memchr",
- "mime_guess",
- "miniz_oxide",
- "mio 1.0.3",
- "naga",
- "nix 0.28.0",
- "nix 0.29.0",
- "nom 7.1.3",
- "num-bigint",
- "num-bigint-dig",
- "num-integer",
- "num-iter",
- "num-rational",
- "num-traits",
- "objc2",
- "objc2-core-foundation",
- "objc2-foundation",
- "objc2-metal",
- "object",
- "once_cell",
- "percent-encoding",
- "phf",
- "phf_shared",
- "prettyplease",
- "proc-macro2",
- "prost 0.9.0",
- "prost-types 0.9.0",
- "quote",
- "rand 0.8.5",
- "rand 0.9.1",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
- "regalloc2",
- "regex",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
- "ring",
- "rust_decimal",
- "rustc-hash 1.1.0",
- "rustix 0.38.44",
- "rustix 1.0.7",
- "rustls 0.23.26",
- "rustls-webpki 0.103.1",
- "schemars",
- "scopeguard",
- "sea-orm",
- "sea-query-binder",
- "security-framework 3.2.0",
- "security-framework-sys",
"semver",
"serde",
"serde_derive",
"serde_json",
- "sha1",
- "simd-adler32",
+ "unicode-xid",
+ "wasmparser 0.227.1",
+]
+
+[[package]]
+name = "witx"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b"
+dependencies = [
+ "anyhow",
+ "log",
+ "thiserror 1.0.69",
+ "wast",
+]
+
+[[package]]
+name = "workspace"
+version = "0.1.0"
+dependencies = [
+ "any_vec",
+ "anyhow",
+ "async-recursion",
+ "call",
+ "client",
+ "clock",
+ "collections",
+ "component",
+ "dap",
+ "db",
+ "fs",
+ "futures 0.3.31",
+ "gpui",
+ "http_client",
+ "itertools 0.14.0",
+ "language",
+ "log",
+ "menu",
+ "node_runtime",
+ "parking_lot",
+ "postage",
+ "pretty_assertions",
+ "project",
+ "remote",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
+ "session",
+ "settings",
"smallvec",
- "spin",
- "sqlx",
- "sqlx-macros",
- "sqlx-macros-core",
- "sqlx-postgres",
- "sqlx-sqlite",
- "strum 0.26.3",
- "subtle",
- "syn 1.0.109",
- "syn 2.0.101",
- "sync_wrapper 1.0.2",
- "thiserror 2.0.12",
- "time",
- "time-macros",
- "tokio",
- "tokio-rustls 0.26.2",
- "tokio-socks",
- "tokio-stream",
- "tokio-util",
- "toml_datetime",
- "toml_edit",
- "tower 0.5.2",
- "tracing",
- "tracing-core",
- "tungstenite 0.26.2",
- "unicode-normalization",
- "unicode-properties",
- "url",
+ "sqlez",
+ "strum 0.27.2",
+ "task",
+ "telemetry",
+ "tempfile",
+ "theme",
+ "ui",
+ "util",
"uuid",
- "wasmparser 0.221.3",
- "wasmtime",
- "wasmtime-cranelift",
- "wasmtime-environ",
- "winapi",
- "windows-core 0.61.0",
- "windows-numerics",
- "windows-sys 0.48.0",
- "windows-sys 0.52.0",
- "windows-sys 0.59.0",
- "winnow",
- "zeroize",
- "zvariant",
+ "windows 0.61.3",
+ "zed_actions",
+ "zlog",
]
[[package]]
@@ -19957,6 +20753,7 @@ name = "worktree"
version = "0.1.0"
dependencies = [
"anyhow",
+ "async-lock 2.8.0",
"clock",
"collections",
"fs",
@@ -19973,9 +20770,8 @@ dependencies = [
"paths",
"postage",
"pretty_assertions",
- "rand 0.8.5",
+ "rand 0.9.2",
"rpc",
- "schemars",
"serde",
"serde_json",
"settings",
@@ -19984,21 +20780,14 @@ dependencies = [
"sum_tree",
"text",
"util",
- "workspace-hack",
"zlog",
]
-[[package]]
-name = "write16"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
-
[[package]]
name = "writeable"
-version = "0.5.5"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
[[package]]
name = "wyz"
@@ -20031,32 +20820,32 @@ dependencies = [
[[package]]
name = "x11rb"
-version = "0.13.1"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12"
+checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
dependencies = [
"as-raw-xcb-connection",
"gethostname",
"libc",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"x11rb-protocol",
+ "xcursor",
]
[[package]]
name = "x11rb-protocol"
-version = "0.13.1"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d"
+checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
[[package]]
name = "x_ai"
version = "0.1.0"
dependencies = [
"anyhow",
- "schemars",
+ "schemars 1.0.4",
"serde",
- "strum 0.27.1",
- "workspace-hack",
+ "strum 0.27.2",
]
[[package]]
@@ -20070,9 +20859,9 @@ dependencies = [
[[package]]
name = "xcb"
-version = "1.5.0"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1e2f212bb1a92cd8caac8051b829a6582ede155ccb60b5d5908b81b100952be"
+checksum = "f07c123b796139bfe0603e654eaf08e132e52387ba95b252c78bad3640ba37ea"
dependencies = [
"bitflags 1.3.2",
"libc",
@@ -20082,37 +20871,14 @@ dependencies = [
[[package]]
name = "xcursor"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61"
-
-[[package]]
-name = "xdg-home"
-version = "1.3.0"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
-dependencies = [
- "libc",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "xim"
-version = "0.4.0"
-source = "git+https://github.com/zed-industries/xim-rs?rev=c0a70c1bd2ce197364216e5e818a2cb3adb99a8d#c0a70c1bd2ce197364216e5e818a2cb3adb99a8d"
-dependencies = [
- "ahash 0.8.11",
- "hashbrown 0.14.5",
- "log",
- "x11rb",
- "xim-ctext",
- "xim-parser",
-]
+checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b"
[[package]]
name = "xim-ctext"
version = "0.3.0"
-source = "git+https://github.com/zed-industries/xim-rs?rev=c0a70c1bd2ce197364216e5e818a2cb3adb99a8d#c0a70c1bd2ce197364216e5e818a2cb3adb99a8d"
+source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
dependencies = [
"encoding_rs",
]
@@ -20120,9 +20886,9 @@ dependencies = [
[[package]]
name = "xim-parser"
version = "0.2.1"
-source = "git+https://github.com/zed-industries/xim-rs?rev=c0a70c1bd2ce197364216e5e818a2cb3adb99a8d#c0a70c1bd2ce197364216e5e818a2cb3adb99a8d"
+source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.9.4",
]
[[package]]
@@ -20171,12 +20937,23 @@ name = "xtask"
version = "0.1.0"
dependencies = [
"anyhow",
+ "backtrace",
"cargo_metadata",
"cargo_toml",
"clap",
- "workspace-hack",
+ "gh-workflow",
+ "indexmap 2.11.4",
+ "indoc",
+ "toml 0.8.23",
+ "toml_edit 0.22.27",
]
+[[package]]
+name = "xxhash-rust"
+version = "0.8.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3"
+
[[package]]
name = "yaml-rust2"
version = "0.8.1"
@@ -20196,15 +20973,16 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
[[package]]
name = "yawc"
-version = "0.2.4"
-source = "git+https://github.com/deviant-forks/yawc?rev=1899688f3e69ace4545aceb97b2a13881cf26142#1899688f3e69ace4545aceb97b2a13881cf26142"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19a5d82922135b4ae73a079a4ffb5501e9aadb4d785b8c660eaa0a8b899028c5"
dependencies = [
"base64 0.22.1",
"bytes 1.10.1",
"flate2",
"futures 0.3.31",
"http-body-util",
- "hyper 1.6.0",
+ "hyper 1.7.0",
"hyper-util",
"js-sys",
"nom 8.0.0",
@@ -20247,7 +21025,19 @@ checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
dependencies = [
"serde",
"stable_deref_trait",
- "yoke-derive",
+ "yoke-derive 0.7.5",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive 0.8.0",
"zerofrom",
]
@@ -20259,41 +21049,51 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
+ "synstructure",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.106",
"synstructure",
]
[[package]]
name = "zbus"
-version = "5.5.0"
+version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236"
+checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
dependencies = [
"async-broadcast",
"async-executor",
- "async-fs",
"async-io",
- "async-lock",
+ "async-lock 3.4.1",
"async-process",
"async-recursion",
"async-task",
"async-trait",
"blocking",
"enumflags2",
- "event-listener 5.4.0",
+ "event-listener 5.4.1",
"futures-core",
- "futures-lite 2.6.0",
+ "futures-lite 2.6.1",
"hex",
- "nix 0.29.0",
+ "nix 0.30.1",
"ordered-stream",
"serde",
"serde_repr",
- "static_assertions",
"tracing",
"uds_windows",
- "windows-sys 0.59.0",
+ "uuid",
+ "windows-sys 0.61.2",
"winnow",
- "xdg-home",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -20301,14 +21101,14 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "5.5.0"
+version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0"
+checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"zbus_names",
"zvariant",
"zvariant_utils",
@@ -20328,30 +21128,28 @@ dependencies = [
[[package]]
name = "zed"
-version = "0.201.0"
+version = "0.212.0"
dependencies = [
+ "acp_tools",
"activity_indicator",
- "agent",
- "agent_servers",
"agent_settings",
"agent_ui",
"anyhow",
- "ashpd",
+ "ashpd 0.11.0",
"askpass",
"assets",
- "assistant_tool",
- "assistant_tools",
"audio",
"auto_update",
"auto_update_ui",
"backtrace",
+ "bincode 1.3.3",
"breadcrumbs",
"call",
"channel",
- "chrono",
"clap",
"cli",
"client",
+ "codestral",
"collab_ui",
"collections",
"command_palette",
@@ -20384,21 +21182,21 @@ dependencies = [
"gpui_tokio",
"http_client",
"image_viewer",
- "indoc",
"inspector_ui",
"install_cli",
"itertools 0.14.0",
- "jj_ui",
"journal",
+ "json_schema_store",
+ "keymap_editor",
"language",
"language_extension",
"language_model",
"language_models",
+ "language_onboarding",
"language_selector",
"language_tools",
"languages",
- "libc",
- "livekit_client",
+ "line_ending_selector",
"log",
"markdown",
"markdown_preview",
@@ -20426,7 +21224,6 @@ dependencies = [
"release_channel",
"remote",
"repl",
- "reqwest 0.12.15 (git+https://github.com/zed-industries/reqwest.git?rev=951c770a32f1998d6e999cef3e59e0013e6c4415)",
"reqwest_client",
"rope",
"search",
@@ -20442,7 +21239,8 @@ dependencies = [
"snippets_ui",
"supermaven",
"svg_preview",
- "sysinfo",
+ "sysinfo 0.37.2",
+ "system_specs",
"tab_switcher",
"task",
"tasks_ui",
@@ -20461,22 +21259,132 @@ dependencies = [
"ui_input",
"ui_prompt",
"url",
- "urlencoding",
- "util",
- "uuid",
- "vim",
- "vim_mode_setting",
- "watch",
- "web_search",
- "web_search_providers",
- "windows 0.61.1",
- "winresource",
- "workspace",
- "workspace-hack",
- "zed_actions",
- "zeta",
- "zlog",
- "zlog_settings",
+ "urlencoding",
+ "util",
+ "uuid",
+ "vim",
+ "vim_mode_setting",
+ "watch",
+ "web_search",
+ "web_search_providers",
+ "windows 0.61.3",
+ "winresource",
+ "workspace",
+ "zed-reqwest",
+ "zed_actions",
+ "zed_env_vars",
+ "zeta",
+ "zeta2",
+ "zeta2_tools",
+ "zlog",
+ "zlog_settings",
+]
+
+[[package]]
+name = "zed-font-kit"
+version = "0.14.1-zed"
+source = "git+https://github.com/zed-industries/font-kit?rev=110523127440aefb11ce0cf280ae7c5071337ec5#110523127440aefb11ce0cf280ae7c5071337ec5"
+dependencies = [
+ "bitflags 2.9.4",
+ "byteorder",
+ "core-foundation 0.10.0",
+ "core-graphics 0.24.0",
+ "core-text",
+ "dirs 5.0.1",
+ "dwrote",
+ "float-ord",
+ "freetype-sys",
+ "lazy_static",
+ "libc",
+ "log",
+ "pathfinder_geometry",
+ "pathfinder_simd",
+ "walkdir",
+ "winapi",
+ "yeslogic-fontconfig-sys",
+]
+
+[[package]]
+name = "zed-reqwest"
+version = "0.12.15-zed"
+source = "git+https://github.com/zed-industries/reqwest.git?rev=c15662463bda39148ba154100dd44d3fba5873a4#c15662463bda39148ba154100dd44d3fba5873a4"
+dependencies = [
+ "base64 0.22.1",
+ "bytes 1.10.1",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2 0.4.12",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.7.0",
+ "hyper-rustls 0.27.7",
+ "hyper-util",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "quinn",
+ "rustls 0.23.33",
+ "rustls-native-certs 0.8.2",
+ "rustls-pemfile 2.2.0",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper 1.0.2",
+ "system-configuration 0.6.1",
+ "tokio",
+ "tokio-rustls 0.26.2",
+ "tokio-socks",
+ "tokio-util",
+ "tower 0.5.2",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "windows-registry 0.4.0",
+]
+
+[[package]]
+name = "zed-scap"
+version = "0.0.8-zed"
+source = "git+https://github.com/zed-industries/scap?rev=4afea48c3b002197176fb19cd0f9b180dd36eaac#4afea48c3b002197176fb19cd0f9b180dd36eaac"
+dependencies = [
+ "anyhow",
+ "cocoa 0.25.0",
+ "core-graphics-helmer-fork",
+ "log",
+ "objc",
+ "rand 0.8.5",
+ "screencapturekit",
+ "screencapturekit-sys",
+ "sysinfo 0.31.4",
+ "tao-core-video-sys",
+ "windows 0.61.3",
+ "windows-capture",
+ "x11",
+ "xcb",
+]
+
+[[package]]
+name = "zed-xim"
+version = "0.4.0-zed"
+source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
+dependencies = [
+ "ahash 0.8.12",
+ "hashbrown 0.14.5",
+ "log",
+ "x11rb",
+ "xim-ctext",
+ "xim-parser",
]
[[package]]
@@ -20484,10 +21392,16 @@ name = "zed_actions"
version = "0.1.0"
dependencies = [
"gpui",
- "schemars",
+ "schemars 1.0.4",
"serde",
"uuid",
- "workspace-hack",
+]
+
+[[package]]
+name = "zed_env_vars"
+version = "0.1.0"
+dependencies = [
+ "gpui",
]
[[package]]
@@ -20503,7 +21417,18 @@ dependencies = [
[[package]]
name = "zed_extension_api"
-version = "0.6.0"
+version = "0.7.0"
+dependencies = [
+ "serde",
+ "serde_json",
+ "wit-bindgen 0.41.0",
+]
+
+[[package]]
+name = "zed_extension_api"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0729d50b4ca0a7e28e590bbe32e3ca0194d97ef654961451a424c661a366fca0"
dependencies = [
"serde",
"serde_json",
@@ -20519,9 +21444,9 @@ dependencies = [
[[package]]
name = "zed_html"
-version = "0.2.1"
+version = "0.2.3"
dependencies = [
- "zed_extension_api 0.1.0",
+ "zed_extension_api 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -20531,79 +21456,37 @@ dependencies = [
"zed_extension_api 0.1.0",
]
-[[package]]
-name = "zed_ruff"
-version = "0.1.1"
-dependencies = [
- "zed_extension_api 0.1.0",
-]
-
-[[package]]
-name = "zed_snippets"
-version = "0.0.5"
-dependencies = [
- "serde_json",
- "zed_extension_api 0.1.0",
-]
-
[[package]]
name = "zed_test_extension"
version = "0.1.0"
dependencies = [
- "zed_extension_api 0.6.0",
-]
-
-[[package]]
-name = "zed_toml"
-version = "0.1.4"
-dependencies = [
- "zed_extension_api 0.1.0",
+ "zed_extension_api 0.7.0",
]
[[package]]
name = "zeno"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc0de2315dc13d00e5df3cd6b8d2124a6eaec6a2d4b6a1c5f37b7efad17fcc17"
-
-[[package]]
-name = "zerocopy"
-version = "0.7.35"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
-dependencies = [
- "zerocopy-derive 0.7.35",
-]
+checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524"
[[package]]
name = "zerocopy"
-version = "0.8.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
-dependencies = [
- "zerocopy-derive 0.8.24",
-]
-
-[[package]]
-name = "zerocopy-derive"
-version = "0.7.35"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.24"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
+checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -20623,15 +21506,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"synstructure",
]
[[package]]
name = "zeroize"
-version = "1.8.1"
+version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
dependencies = [
"zeroize_derive",
]
@@ -20644,7 +21527,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -20671,26 +21554,37 @@ dependencies = [
"uuid",
]
+[[package]]
+name = "zerotrie"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
+dependencies = [
+ "displaydoc",
+ "yoke 0.8.0",
+ "zerofrom",
+]
+
[[package]]
name = "zerovec"
-version = "0.10.4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
dependencies = [
- "yoke",
+ "yoke 0.8.0",
"zerofrom",
"zerovec-derive",
]
[[package]]
name = "zerovec-derive"
-version = "0.10.3"
+version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
]
[[package]]
@@ -20718,13 +21612,15 @@ dependencies = [
"gpui",
"http_client",
"indoc",
+ "itertools 0.14.0",
"language",
"language_model",
"log",
"menu",
+ "parking_lot",
"postage",
"project",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"release_channel",
"reqwest_client",
@@ -20732,31 +21628,107 @@ dependencies = [
"serde",
"serde_json",
"settings",
+ "strum 0.27.2",
"telemetry",
"telemetry_events",
"theme",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tree-sitter-go",
"tree-sitter-rust",
"ui",
- "unindent",
"util",
"uuid",
"workspace",
- "workspace-hack",
"worktree",
"zed_actions",
"zlog",
]
+[[package]]
+name = "zeta2"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "arrayvec",
+ "chrono",
+ "client",
+ "clock",
+ "cloud_llm_client",
+ "cloud_zeta2_prompt",
+ "collections",
+ "edit_prediction",
+ "edit_prediction_context",
+ "feature_flags",
+ "futures 0.3.31",
+ "gpui",
+ "indoc",
+ "language",
+ "language_model",
+ "log",
+ "lsp",
+ "pretty_assertions",
+ "project",
+ "release_channel",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
+ "settings",
+ "thiserror 2.0.17",
+ "util",
+ "uuid",
+ "workspace",
+ "worktree",
+]
+
+[[package]]
+name = "zeta2_tools"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "chrono",
+ "clap",
+ "client",
+ "cloud_llm_client",
+ "collections",
+ "edit_prediction_context",
+ "editor",
+ "feature_flags",
+ "futures 0.3.31",
+ "gpui",
+ "indoc",
+ "language",
+ "log",
+ "multi_buffer",
+ "ordered-float 2.10.1",
+ "pretty_assertions",
+ "project",
+ "regex-syntax",
+ "serde",
+ "serde_json",
+ "settings",
+ "telemetry",
+ "text",
+ "ui",
+ "ui_input",
+ "util",
+ "workspace",
+ "zeta2",
+ "zlog",
+]
+
[[package]]
name = "zeta_cli"
version = "0.1.0"
dependencies = [
"anyhow",
+ "chrono",
"clap",
"client",
+ "cloud_llm_client",
+ "cloud_zeta2_prompt",
+ "collections",
"debug_adapter_extension",
+ "edit_prediction_context",
"extension",
"fs",
"futures 0.3.31",
@@ -20767,8 +21739,11 @@ dependencies = [
"language_model",
"language_models",
"languages",
+ "log",
"node_runtime",
+ "ordered-float 2.10.1",
"paths",
+ "polars",
"project",
"prompt_store",
"release_channel",
@@ -20778,11 +21753,13 @@ dependencies = [
"settings",
"shellexpand 2.1.2",
"smol",
+ "soa-rs",
"terminal_view",
"util",
"watch",
- "workspace-hack",
"zeta",
+ "zeta2",
+ "zlog",
]
[[package]]
@@ -20802,14 +21779,29 @@ dependencies = [
"pbkdf2 0.11.0",
"sha1",
"time",
- "zstd",
+ "zstd 0.11.2+zstd.1.5.2",
+]
+
+[[package]]
+name = "zip"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164"
+dependencies = [
+ "arbitrary",
+ "crc32fast",
+ "crossbeam-utils",
+ "displaydoc",
+ "indexmap 2.11.4",
+ "num_enum",
+ "thiserror 1.0.69",
]
[[package]]
name = "zlib-rs"
-version = "0.5.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8"
+checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2"
[[package]]
name = "zlog"
@@ -20817,21 +21809,18 @@ version = "0.1.0"
dependencies = [
"anyhow",
"chrono",
+ "collections",
"log",
"tempfile",
- "workspace-hack",
]
[[package]]
name = "zlog_settings"
version = "0.1.0"
dependencies = [
- "anyhow",
+ "collections",
"gpui",
- "schemars",
- "serde",
"settings",
- "workspace-hack",
"zlog",
]
@@ -20841,7 +21830,16 @@ version = "0.11.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
dependencies = [
- "zstd-safe",
+ "zstd-safe 5.0.2+zstd.1.5.2",
+]
+
+[[package]]
+name = "zstd"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
+dependencies = [
+ "zstd-safe 7.2.4",
]
[[package]]
@@ -20854,11 +21852,20 @@ dependencies = [
"zstd-sys",
]
+[[package]]
+name = "zstd-safe"
+version = "7.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
+dependencies = [
+ "zstd-sys",
+]
+
[[package]]
name = "zstd-sys"
-version = "2.0.15+zstd.1.5.7"
+version = "2.0.16+zstd.1.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
+checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748"
dependencies = [
"cc",
"pkg-config",
@@ -20881,23 +21888,22 @@ dependencies = [
[[package]]
name = "zune-jpeg"
-version = "0.4.14"
+version = "0.4.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028"
+checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
dependencies = [
"zune-core",
]
[[package]]
name = "zvariant"
-version = "5.4.0"
+version = "5.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac"
+checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
dependencies = [
"endi",
"enumflags2",
"serde",
- "static_assertions",
"url",
"winnow",
"zvariant_derive",
@@ -20906,27 +21912,26 @@ dependencies = [
[[package]]
name = "zvariant_derive"
-version = "5.4.0"
+version = "5.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f"
+checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.106",
"zvariant_utils",
]
[[package]]
name = "zvariant_utils"
-version = "3.2.0"
+version = "3.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34"
+checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
dependencies = [
"proc-macro2",
"quote",
"serde",
- "static_assertions",
- "syn 2.0.101",
+ "syn 2.0.106",
"winnow",
]
diff --git a/Cargo.toml b/Cargo.toml
index 14691cf8a4f3d723e99710b72807ff931c8b7da2..369082ff16736f9f682ad8c5bd09634c03434609 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,11 +1,11 @@
[workspace]
resolver = "2"
members = [
+ "crates/acp_tools",
"crates/acp_thread",
"crates/action_log",
"crates/activity_indicator",
"crates/agent",
- "crates/agent2",
"crates/agent_servers",
"crates/agent_settings",
"crates/agent_ui",
@@ -13,11 +13,9 @@ members = [
"crates/anthropic",
"crates/askpass",
"crates/assets",
- "crates/assistant_context",
+ "crates/assistant_text_thread",
"crates/assistant_slash_command",
"crates/assistant_slash_commands",
- "crates/assistant_tool",
- "crates/assistant_tools",
"crates/audio",
"crates/auto_update",
"crates/auto_update_helper",
@@ -34,6 +32,7 @@ members = [
"crates/cloud_api_client",
"crates/cloud_api_types",
"crates/cloud_llm_client",
+ "crates/cloud_zeta2_prompt",
"crates/collab",
"crates/collab_ui",
"crates/collections",
@@ -51,8 +50,13 @@ members = [
"crates/debugger_tools",
"crates/debugger_ui",
"crates/deepseek",
+ "crates/denoise",
"crates/diagnostics",
"crates/docs_preprocessor",
+ "crates/edit_prediction",
+ "crates/edit_prediction_button",
+ "crates/edit_prediction_context",
+ "crates/zeta2_tools",
"crates/editor",
"crates/eval",
"crates/explorer_command_injector",
@@ -66,6 +70,7 @@ members = [
"crates/file_finder",
"crates/file_icons",
"crates/fs",
+ "crates/fs_benchmarks",
"crates/fsevent",
"crates/fuzzy",
"crates/git",
@@ -81,20 +86,20 @@ members = [
"crates/http_client_tls",
"crates/icons",
"crates/image_viewer",
- "crates/edit_prediction",
- "crates/edit_prediction_button",
"crates/inspector_ui",
"crates/install_cli",
- "crates/jj",
- "crates/jj_ui",
"crates/journal",
+ "crates/json_schema_store",
+ "crates/keymap_editor",
"crates/language",
"crates/language_extension",
"crates/language_model",
"crates/language_models",
+ "crates/language_onboarding",
"crates/language_selector",
"crates/language_tools",
"crates/languages",
+ "crates/line_ending_selector",
"crates/livekit_api",
"crates/livekit_client",
"crates/lmstudio",
@@ -129,6 +134,7 @@ members = [
"crates/refineable",
"crates/refineable/derive_refineable",
"crates/release_channel",
+ "crates/scheduler",
"crates/remote",
"crates/remote_server",
"crates/repl",
@@ -139,10 +145,11 @@ members = [
"crates/rules_library",
"crates/schema_generator",
"crates/search",
- "crates/semantic_index",
"crates/semantic_version",
"crates/session",
"crates/settings",
+ "crates/settings_json",
+ "crates/settings_macros",
"crates/settings_profile_selector",
"crates/settings_ui",
"crates/snippet",
@@ -156,7 +163,9 @@ members = [
"crates/sum_tree",
"crates/supermaven",
"crates/supermaven_api",
+ "crates/codestral",
"crates/svg_preview",
+ "crates/system_specs",
"crates/tab_switcher",
"crates/task",
"crates/tasks_ui",
@@ -189,7 +198,9 @@ members = [
"crates/x_ai",
"crates/zed",
"crates/zed_actions",
+ "crates/zed_env_vars",
"crates/zeta",
+ "crates/zeta2",
"crates/zeta_cli",
"crates/zlog",
"crates/zlog_settings",
@@ -201,17 +212,14 @@ members = [
"extensions/glsl",
"extensions/html",
"extensions/proto",
- "extensions/ruff",
"extensions/slash-commands-example",
- "extensions/snippets",
"extensions/test-extension",
- "extensions/toml",
#
# Tooling
#
- "tooling/workspace-hack",
+ "tooling/perf",
"tooling/xtask",
]
default-members = ["crates/zed"]
@@ -226,10 +234,10 @@ edition = "2024"
# Workspace member crates
#
+acp_tools = { path = "crates/acp_tools" }
acp_thread = { path = "crates/acp_thread" }
action_log = { path = "crates/action_log" }
agent = { path = "crates/agent" }
-agent2 = { path = "crates/agent2" }
activity_indicator = { path = "crates/activity_indicator" }
agent_ui = { path = "crates/agent_ui" }
agent_settings = { path = "crates/agent_settings" }
@@ -239,11 +247,9 @@ ai_onboarding = { path = "crates/ai_onboarding" }
anthropic = { path = "crates/anthropic" }
askpass = { path = "crates/askpass" }
assets = { path = "crates/assets" }
-assistant_context = { path = "crates/assistant_context" }
+assistant_text_thread = { path = "crates/assistant_text_thread" }
assistant_slash_command = { path = "crates/assistant_slash_command" }
assistant_slash_commands = { path = "crates/assistant_slash_commands" }
-assistant_tool = { path = "crates/assistant_tool" }
-assistant_tools = { path = "crates/assistant_tools" }
audio = { path = "crates/audio" }
auto_update = { path = "crates/auto_update" }
auto_update_helper = { path = "crates/auto_update_helper" }
@@ -260,9 +266,10 @@ clock = { path = "crates/clock" }
cloud_api_client = { path = "crates/cloud_api_client" }
cloud_api_types = { path = "crates/cloud_api_types" }
cloud_llm_client = { path = "crates/cloud_llm_client" }
+cloud_zeta2_prompt = { path = "crates/cloud_zeta2_prompt" }
collab = { path = "crates/collab" }
collab_ui = { path = "crates/collab_ui" }
-collections = { path = "crates/collections" }
+collections = { path = "crates/collections", version = "0.1.0" }
command_palette = { path = "crates/command_palette" }
command_palette_hooks = { path = "crates/command_palette_hooks" }
component = { path = "crates/component" }
@@ -270,6 +277,7 @@ context_server = { path = "crates/context_server" }
copilot = { path = "crates/copilot" }
crashes = { path = "crates/crashes" }
credentials_provider = { path = "crates/credentials_provider" }
+crossbeam = "0.8.4"
dap = { path = "crates/dap" }
dap_adapters = { path = "crates/dap_adapters" }
db = { path = "crates/db" }
@@ -277,6 +285,7 @@ debug_adapter_extension = { path = "crates/debug_adapter_extension" }
debugger_tools = { path = "crates/debugger_tools" }
debugger_ui = { path = "crates/debugger_ui" }
deepseek = { path = "crates/deepseek" }
+derive_refineable = { path = "crates/refineable/derive_refineable" }
diagnostics = { path = "crates/diagnostics" }
editor = { path = "crates/editor" }
extension = { path = "crates/extension" }
@@ -294,9 +303,7 @@ git_hosting_providers = { path = "crates/git_hosting_providers" }
git_ui = { path = "crates/git_ui" }
go_to_line = { path = "crates/go_to_line" }
google_ai = { path = "crates/google_ai" }
-gpui = { path = "crates/gpui", default-features = false, features = [
- "http_client",
-] }
+gpui = { path = "crates/gpui", default-features = false }
gpui_macros = { path = "crates/gpui_macros" }
gpui_tokio = { path = "crates/gpui_tokio" }
html_to_markdown = { path = "crates/html_to_markdown" }
@@ -306,18 +313,22 @@ icons = { path = "crates/icons" }
image_viewer = { path = "crates/image_viewer" }
edit_prediction = { path = "crates/edit_prediction" }
edit_prediction_button = { path = "crates/edit_prediction_button" }
+edit_prediction_context = { path = "crates/edit_prediction_context" }
+zeta2_tools = { path = "crates/zeta2_tools" }
inspector_ui = { path = "crates/inspector_ui" }
install_cli = { path = "crates/install_cli" }
-jj = { path = "crates/jj" }
-jj_ui = { path = "crates/jj_ui" }
journal = { path = "crates/journal" }
+json_schema_store = { path = "crates/json_schema_store" }
+keymap_editor = { path = "crates/keymap_editor" }
language = { path = "crates/language" }
language_extension = { path = "crates/language_extension" }
language_model = { path = "crates/language_model" }
language_models = { path = "crates/language_models" }
+language_onboarding = { path = "crates/language_onboarding" }
language_selector = { path = "crates/language_selector" }
language_tools = { path = "crates/language_tools" }
languages = { path = "crates/languages" }
+line_ending_selector = { path = "crates/line_ending_selector" }
livekit_api = { path = "crates/livekit_api" }
livekit_client = { path = "crates/livekit_client" }
lmstudio = { path = "crates/lmstudio" }
@@ -342,6 +353,7 @@ outline = { path = "crates/outline" }
outline_panel = { path = "crates/outline_panel" }
panel = { path = "crates/panel" }
paths = { path = "crates/paths" }
+perf = { path = "tooling/perf" }
picker = { path = "crates/picker" }
plugin = { path = "crates/plugin" }
plugin_macros = { path = "crates/plugin_macros" }
@@ -355,20 +367,22 @@ proto = { path = "crates/proto" }
recent_projects = { path = "crates/recent_projects" }
refineable = { path = "crates/refineable" }
release_channel = { path = "crates/release_channel" }
+scheduler = { path = "crates/scheduler" }
remote = { path = "crates/remote" }
remote_server = { path = "crates/remote_server" }
repl = { path = "crates/repl" }
reqwest_client = { path = "crates/reqwest_client" }
rich_text = { path = "crates/rich_text" }
-rodio = { version = "0.21.1", default-features = false }
+rodio = { git = "https://github.com/RustAudio/rodio", rev ="e2074c6c2acf07b57cf717e076bdda7a9ac6e70b", features = ["wav", "playback", "wav_output", "recording"] }
rope = { path = "crates/rope" }
rpc = { path = "crates/rpc" }
rules_library = { path = "crates/rules_library" }
search = { path = "crates/search" }
-semantic_index = { path = "crates/semantic_index" }
semantic_version = { path = "crates/semantic_version" }
session = { path = "crates/session" }
settings = { path = "crates/settings" }
+settings_json = { path = "crates/settings_json" }
+settings_macros = { path = "crates/settings_macros" }
settings_ui = { path = "crates/settings_ui" }
snippet = { path = "crates/snippet" }
snippet_provider = { path = "crates/snippet_provider" }
@@ -381,6 +395,8 @@ streaming_diff = { path = "crates/streaming_diff" }
sum_tree = { path = "crates/sum_tree" }
supermaven = { path = "crates/supermaven" }
supermaven_api = { path = "crates/supermaven_api" }
+codestral = { path = "crates/codestral" }
+system_specs = { path = "crates/system_specs" }
tab_switcher = { path = "crates/tab_switcher" }
task = { path = "crates/task" }
tasks_ui = { path = "crates/tasks_ui" }
@@ -414,7 +430,9 @@ worktree = { path = "crates/worktree" }
x_ai = { path = "crates/x_ai" }
zed = { path = "crates/zed" }
zed_actions = { path = "crates/zed_actions" }
+zed_env_vars = { path = "crates/zed_env_vars" }
zeta = { path = "crates/zeta" }
+zeta2 = { path = "crates/zeta2" }
zlog = { path = "crates/zlog" }
zlog_settings = { path = "crates/zlog_settings" }
@@ -422,10 +440,9 @@ zlog_settings = { path = "crates/zlog_settings" }
# External crates
#
-agentic-coding-protocol = "0.0.10"
-agent-client-protocol = "0.0.26"
+agent-client-protocol = { version = "0.7.0", features = ["unstable"] }
aho-corasick = "1.1"
-alacritty_terminal = { git = "https://github.com/zed-industries/alacritty.git", branch = "add-hush-login-flag" }
+alacritty_terminal = "0.25.1-rc1"
any_vec = "0.14"
anyhow = "1.0.86"
arrayvec = { version = "0.7.4", features = ["serde"] }
@@ -434,11 +451,13 @@ async-compat = "0.2.1"
async-compression = { version = "0.4", features = ["gzip", "futures-io"] }
async-dispatcher = "0.1"
async-fs = "2.1"
+async-lock = "2.1"
async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
async-recursion = "1.0.0"
-async-tar = "0.5.0"
+async-tar = "0.5.1"
+async-task = "4.7"
async-trait = "0.1"
-async-tungstenite = "0.29.1"
+async-tungstenite = "0.31.0"
async_zip = { version = "0.0.17", features = ["deflate", "deflate64"] }
aws-config = { version = "1.6.1", features = ["behavior-version-latest"] }
aws-credential-types = { version = "1.2.2", features = [
@@ -449,23 +468,25 @@ aws-sdk-bedrockruntime = { version = "1.80.0", features = [
] }
aws-smithy-runtime-api = { version = "1.7.4", features = ["http-1x", "client"] }
aws-smithy-types = { version = "1.3.0", features = ["http-body-1-x"] }
+backtrace = "0.3"
base64 = "0.22"
+bincode = "1.2.1"
bitflags = "2.6.0"
-blade-graphics = { git = "https://github.com/kvark/blade", rev = "e0ec4e720957edd51b945b64dd85605ea54bcfe5" }
-blade-macros = { git = "https://github.com/kvark/blade", rev = "e0ec4e720957edd51b945b64dd85605ea54bcfe5" }
-blade-util = { git = "https://github.com/kvark/blade", rev = "e0ec4e720957edd51b945b64dd85605ea54bcfe5" }
-blake3 = "1.5.3"
+blade-graphics = { version = "0.7.0" }
+blade-macros = { version = "0.3.0" }
+blade-util = { version = "0.3.0" }
bytes = "1.0"
cargo_metadata = "0.19"
cargo_toml = "0.21"
+cfg-if = "1.0.3"
chrono = { version = "0.4", features = ["serde"] }
ciborium = "0.2"
circular-buffer = "1.0"
clap = { version = "4.4", features = ["derive"] }
-cocoa = "0.26"
-cocoa-foundation = "0.2.0"
+cocoa = "=0.26.0"
+cocoa-foundation = "=0.2.0"
convert_case = "0.8.0"
-core-foundation = "0.10.0"
+core-foundation = "=0.10.0"
core-foundation-sys = "0.8.6"
core-video = { version = "0.4.3", features = ["metal"] }
cpal = "0.16"
@@ -487,12 +508,15 @@ fork = "0.2.0"
futures = "0.3"
futures-batch = "0.6.1"
futures-lite = "1.13"
+gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "0090c6b6ef82fff02bc8616645953e778d1acc08" }
git2 = { version = "0.20.1", default-features = false }
globset = "0.4"
handlebars = "4.3"
+hashbrown = "0.15.3"
heck = "0.5"
heed = { version = "0.21.0", features = ["read-txn-no-tls"] }
hex = "0.4.3"
+human_bytes = "0.4.1"
html5ever = "0.27.0"
http = "1.1"
http-body = "1.0"
@@ -504,7 +528,6 @@ indexmap = { version = "2.7.0", features = ["serde"] }
indoc = "2"
inventory = "0.3.19"
itertools = "0.14.0"
-jj-lib = { git = "https://github.com/jj-vcs/jj", rev = "e18eb8e05efaa153fad5ef46576af145bba1807f" }
json_dotpath = "1.1"
jsonschema = "0.30.0"
jsonwebtoken = "9.3"
@@ -514,7 +537,8 @@ libc = "0.2"
libsqlite3-sys = { version = "0.30.1", features = ["bundled"] }
linkify = "0.10.0"
log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] }
-lsp-types = { git = "https://github.com/zed-industries/lsp-types", rev = "39f629bdd03d59abd786ed9fc27e8bca02c0c0ec" }
+lsp-types = { git = "https://github.com/zed-industries/lsp-types", rev = "b71ab4eeb27d9758be8092020a46fe33fbca4e33" }
+mach2 = "0.5"
markup5ever_rcdom = "0.3.0"
metal = "0.29"
minidumper = "0.8"
@@ -524,21 +548,49 @@ nanoid = "0.4"
nbformat = { git = "https://github.com/ConradIrwin/runtimed", rev = "7130c804216b6914355d15d0b91ea91f6babd734" }
nix = "0.29"
num-format = "0.4.4"
+num-traits = "0.2"
objc = "0.2"
+objc2-foundation = { version = "=0.3.1", default-features = false, features = [
+ "NSArray",
+ "NSAttributedString",
+ "NSBundle",
+ "NSCoder",
+ "NSData",
+ "NSDate",
+ "NSDictionary",
+ "NSEnumerator",
+ "NSError",
+ "NSGeometry",
+ "NSNotification",
+ "NSNull",
+ "NSObjCRuntime",
+ "NSObject",
+ "NSProcessInfo",
+ "NSRange",
+ "NSRunLoop",
+ "NSString",
+ "NSURL",
+ "NSUndoManager",
+ "NSValue",
+ "objc2-core-foundation",
+ "std"
+] }
open = "5.0.0"
ordered-float = "2.1.1"
palette = { version = "0.7.5", default-features = false, features = ["std"] }
parking_lot = "0.12.1"
partial-json-fixer = "0.5.3"
parse_int = "0.9"
+pciid-parser = "0.8.0"
pathdiff = "0.2"
-pet = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
-pet-conda = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
-pet-core = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
-pet-fs = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
-pet-pixi = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
-pet-poetry = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
-pet-reporter = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
+pet = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-conda = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-core = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-fs = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-pixi = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-poetry = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-reporter = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
+pet-virtualenv = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "e97b9508befa0062929da65a01054d25c4be861c" }
portable-pty = "0.9.0"
postage = { version = "0.5", features = ["futures-traits"] }
pretty_assertions = { version = "1.3.0", features = ["unstable"] }
@@ -549,11 +601,12 @@ prost-build = "0.9"
prost-types = "0.9"
pulldown-cmark = { version = "0.12.0", default-features = false }
quote = "1.0.9"
-rand = "0.8.5"
+rand = "0.9"
rayon = "1.8"
ref-cast = "1.0.24"
regex = "1.5"
-reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "951c770a32f1998d6e999cef3e59e0013e6c4415", default-features = false, features = [
+# WARNING: If you change this, you must also publish a new version of zed-reqwest to crates.io
+reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662463bda39148ba154100dd44d3fba5873a4", default-features = false, features = [
"charset",
"http2",
"macos-system-configuration",
@@ -561,41 +614,45 @@ reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "951c77
"rustls-tls-native-roots",
"socks",
"stream",
-] }
+], package = "zed-reqwest", version = "0.12.15-zed" }
rsa = "0.9.6"
runtimelib = { git = "https://github.com/ConradIrwin/runtimed", rev = "7130c804216b6914355d15d0b91ea91f6babd734", default-features = false, features = [
"async-dispatcher-runtime",
] }
rust-embed = { version = "8.4", features = ["include-exclude"] }
-rustc-demangle = "0.1.23"
rustc-hash = "2.1.0"
rustls = { version = "0.23.26" }
rustls-platform-verifier = "0.5.0"
-scap = { git = "https://github.com/zed-industries/scap", rev = "808aa5c45b41e8f44729d02e38fd00a2fe2722e7", default-features = false }
+# WARNING: If you change this, you must also publish a new version of zed-scap to crates.io
+scap = { git = "https://github.com/zed-industries/scap", rev = "4afea48c3b002197176fb19cd0f9b180dd36eaac", default-features = false, package = "zed-scap", version = "0.0.8-zed" }
schemars = { version = "1.0", features = ["indexmap2"] }
semver = "1.0"
-serde = { version = "1.0", features = ["derive", "rc"] }
-serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
-serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
+serde = { version = "1.0.221", features = ["derive", "rc"] }
+serde_json = { version = "1.0.144", features = ["preserve_order", "raw_value"] }
serde_json_lenient = { version = "0.2", features = [
"preserve_order",
"raw_value",
] }
+serde_path_to_error = "0.1.17"
serde_repr = "0.1"
+serde_urlencoded = "0.7"
+serde_with = "3.4.0"
sha2 = "0.10"
shellexpand = "2.1.0"
shlex = "1.3.0"
simplelog = "0.12.2"
+slotmap = "1.0.6"
smallvec = { version = "1.6", features = ["union"] }
smol = "2.0"
sqlformat = "0.2"
+stacksafe = "0.1"
streaming-iterator = "0.1"
strsim = "0.11"
-strum = { version = "0.27.0", features = ["derive"] }
+strum = { version = "0.27.2", features = ["derive"] }
subtle = "2.5.0"
-syn = { version = "2.0.101", features = ["full", "extra-traits"] }
+syn = { version = "2.0.101", features = ["full", "extra-traits", "visit-mut"] }
sys-locale = "0.3.1"
-sysinfo = "0.31.0"
+sysinfo = "0.37.0"
take-until = "0.2.0"
tempfile = "3.20.0"
thiserror = "2.0.12"
@@ -611,11 +668,12 @@ tiny_http = "0.8"
tokio = { version = "1" }
tokio-tungstenite = { version = "0.26", features = ["__rustls-tls"] }
toml = "0.8"
+toml_edit = { version = "0.22", default-features = false, features = ["display", "parse", "serde"] }
tower-http = "0.4.4"
-tree-sitter = { version = "0.25.6", features = ["wasm"] }
+tree-sitter = { version = "0.25.10", features = ["wasm"] }
tree-sitter-bash = "0.25.0"
tree-sitter-c = "0.23"
-tree-sitter-cpp = "0.23"
+tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "5cb9b693cfd7bfacab1d9ff4acac1a4150700609" }
tree-sitter-css = "0.23"
tree-sitter-diff = "0.1.0"
tree-sitter-elixir = "0.3"
@@ -629,11 +687,11 @@ tree-sitter-html = "0.23"
tree-sitter-jsdoc = "0.23"
tree-sitter-json = "0.24"
tree-sitter-md = { git = "https://github.com/tree-sitter-grammars/tree-sitter-markdown", rev = "9a23c1a96c0513d8fc6520972beedd419a973539" }
-tree-sitter-python = { git = "https://github.com/zed-industries/tree-sitter-python", rev = "218fcbf3fda3d029225f3dec005cb497d111b35e" }
+tree-sitter-python = "0.25"
tree-sitter-regex = "0.24"
tree-sitter-ruby = "0.23"
tree-sitter-rust = "0.24"
-tree-sitter-typescript = "0.23"
+tree-sitter-typescript = { git = "https://github.com/zed-industries/tree-sitter-typescript", rev = "e2c53597d6a5d9cf7bbe8dccde576fe1e46c5899" } # https://github.com/tree-sitter/tree-sitter-typescript/pull/347
tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a" }
unicase = "2.6"
unicode-script = "0.5.7"
@@ -658,10 +716,8 @@ wasmtime-wasi = "29"
which = "6.0.0"
windows-core = "0.61"
wit-component = "0.221"
-workspace-hack = "0.1.0"
-# We can switch back to the published version once https://github.com/infinitefield/yawc/pull/16 is merged and a new
-# version is released.
-yawc = { git = "https://github.com/deviant-forks/yawc", rev = "1899688f3e69ace4545aceb97b2a13881cf26142" }
+yawc = "0.2.5"
+zeroize = "1.8"
zstd = "0.11"
[workspace.dependencies.windows]
@@ -684,9 +740,11 @@ features = [
"Win32_Graphics_Dxgi_Common",
"Win32_Graphics_Gdi",
"Win32_Graphics_Imaging",
+ "Win32_Graphics_Hlsl",
"Win32_Networking_WinSock",
"Win32_Security",
"Win32_Security_Credentials",
+ "Win32_Security_Cryptography",
"Win32_Storage_FileSystem",
"Win32_System_Com",
"Win32_System_Com_StructuredStorage",
@@ -718,11 +776,10 @@ notify = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5a
notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
windows-capture = { git = "https://github.com/zed-industries/windows-capture.git", rev = "f0d6c1b6691db75461b732f6d5ff56eed002eeb9" }
-# 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"
+# https://github.com/rust-lang/cargo/issues/16104
+incremental = false
codegen-units = 16
# mirror configuration for crates compiled for the build platform
@@ -755,6 +812,7 @@ image_viewer = { codegen-units = 1 }
edit_prediction_button = { codegen-units = 1 }
install_cli = { codegen-units = 1 }
journal = { codegen-units = 1 }
+json_schema_store = { codegen-units = 1 }
lmstudio = { codegen-units = 1 }
menu = { codegen-units = 1 }
notifications = { codegen-units = 1 }
@@ -801,39 +859,34 @@ unexpected_cfgs = { level = "allow" }
dbg_macro = "deny"
todo = "deny"
-# Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so
-# warning on this rule produces a lot of noise.
-single_range_in_vec_init = "allow"
+# This is not a style lint, see https://github.com/rust-lang/rust-clippy/pull/15454
+# Remove when the lint gets promoted to `suspicious`.
+declare_interior_mutable_const = "deny"
+
+redundant_clone = "deny"
+disallowed_methods = "deny"
-# These are all of the rules that currently have violations in the Zed
-# codebase.
+# We currently do not restrict any style rules
+# as it slows down shipping code to Zed.
#
-# We'll want to drive this list down by either:
-# 1. fixing violations of the rule and begin enforcing it
-# 2. deciding we want to allow the rule permanently, at which point
-# we should codify that separately above.
+# Running ./script/clippy can take several minutes, and so it's
+# common to skip that step and let CI do it. Any unexpected failures
+# (which also take minutes to discover) thus require switching back
+# to an old branch, manual fixing, and re-pushing.
#
-# This list shouldn't be added to; it should only get shorter.
-# =============================================================================
-
-# There are a bunch of rules currently failing in the `style` group, so
-# allow all of those, for now.
+# In the future we could improve this by either making sure
+# Zed can surface clippy errors in diagnostics (in addition to the
+# rust-analyzer errors), or by having CI fix style nits automatically.
style = { level = "allow", priority = -1 }
-# Temporary list of style lints that we've fixed so far.
-module_inception = { level = "deny" }
-question_mark = { level = "deny" }
-redundant_closure = { level = "deny" }
-declare_interior_mutable_const = { level = "deny" }
# Individual rules that have violations in the codebase:
type_complexity = "allow"
-# We often return trait objects from `new` functions.
-new_ret_no_self = { level = "allow" }
-# We have a few `next` functions that differ in lifetimes
-# compared to Iterator::next. Yet, clippy complains about those.
-should_implement_trait = { level = "allow" }
let_underscore_future = "allow"
+# Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so
+# warning on this rule produces a lot of noise.
+single_range_in_vec_init = "allow"
+
# in Rust it can be very tedious to reduce argument count without
# running afoul of the borrow checker.
too_many_arguments = "allow"
@@ -841,6 +894,9 @@ too_many_arguments = "allow"
# We often have large enum variants yet we rarely actually bother with splitting them up.
large_enum_variant = "allow"
+# Boolean expressions can be hard to read, requiring only the minimal form gets in the way
+nonminimal_bool = "allow"
+
[workspace.metadata.cargo-machete]
ignored = [
"bindgen",
@@ -849,5 +905,5 @@ ignored = [
"serde",
"component",
"documented",
- "workspace-hack",
+ "sea-orm-macros",
]
diff --git a/Cross.toml b/Cross.toml
deleted file mode 100644
index b5f0f1103af2ba6956c7910a7196ddd13788bf46..0000000000000000000000000000000000000000
--- a/Cross.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[build]
-dockerfile = "Dockerfile-cross"
diff --git a/Dockerfile-collab b/Dockerfile-collab
index c1621d6ee67e42117315ea49eac99f6f6260f4b7..a85fe93f198475534cb7396abe594f9d02eeb57b 100644
--- a/Dockerfile-collab
+++ b/Dockerfile-collab
@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.2
-FROM rust:1.89-bookworm as builder
+FROM rust:1.90-bookworm as builder
WORKDIR app
COPY . .
diff --git a/Dockerfile-cross b/Dockerfile-cross
deleted file mode 100644
index 488309641caed52c4b15d7367fd42bfab1a14418..0000000000000000000000000000000000000000
--- a/Dockerfile-cross
+++ /dev/null
@@ -1,17 +0,0 @@
-# syntax=docker/dockerfile:1
-
-ARG CROSS_BASE_IMAGE
-FROM ${CROSS_BASE_IMAGE}
-WORKDIR /app
-ARG TZ=Etc/UTC \
- LANG=C.UTF-8 \
- LC_ALL=C.UTF-8 \
- DEBIAN_FRONTEND=noninteractive
-ENV CARGO_TERM_COLOR=always
-
-COPY script/install-mold script/
-RUN ./script/install-mold "2.34.0"
-COPY script/remote-server script/
-RUN ./script/remote-server
-
-COPY . .
diff --git a/GEMINI.md b/GEMINI.md
new file mode 120000
index 0000000000000000000000000000000000000000..8a63b64bdb0afcda986ba715cb39849ac574e096
--- /dev/null
+++ b/GEMINI.md
@@ -0,0 +1 @@
+.rules
\ No newline at end of file
diff --git a/Procfile.postgrest b/Procfile.postgrest
deleted file mode 100644
index acab58e086ca15426b58529e2055b4126f65467a..0000000000000000000000000000000000000000
--- a/Procfile.postgrest
+++ /dev/null
@@ -1,2 +0,0 @@
-app: postgrest crates/collab/postgrest_app.conf
-llm: postgrest crates/collab/postgrest_llm.conf
diff --git a/Procfile.web b/Procfile.web
new file mode 100644
index 0000000000000000000000000000000000000000..63190fc2ee1f57b3576236fafa08554b9e67b575
--- /dev/null
+++ b/Procfile.web
@@ -0,0 +1 @@
+website: cd ../zed.dev; npm run dev -- --port=3000
diff --git a/README.md b/README.md
index 38547c1ca441b918b773d8b1a884a1e3f48c785f..adc152b7af163b3c90c73a23e0f45bab1120bddc 100644
--- a/README.md
+++ b/README.md
@@ -9,11 +9,10 @@ Welcome to Zed, a high-performance, multiplayer code editor from the creators of
### Installation
-On macOS and Linux you can [download Zed directly](https://zed.dev/download) or [install Zed via your local package manager](https://zed.dev/docs/linux#installing-via-a-package-manager).
+On macOS, Linux, and Windows you can [download Zed directly](https://zed.dev/download) or [install Zed via your local package manager](https://zed.dev/docs/linux#installing-via-a-package-manager).
Other platforms are not yet available:
-- Windows ([tracking issue](https://github.com/zed-industries/zed/issues/5394))
- Web ([tracking issue](https://github.com/zed-industries/zed/issues/5396))
### Developing Zed
diff --git a/REVIEWERS.conl b/REVIEWERS.conl
new file mode 100644
index 0000000000000000000000000000000000000000..78563fe466f38c644cd6a19c76ffe231a086fd56
--- /dev/null
+++ b/REVIEWERS.conl
@@ -0,0 +1,112 @@
+; This file contains a list of people who're interested in reviewing pull requests
+; to certain parts of the code-base.
+;
+; This is mostly used internally for PR assignment, and may change over time.
+;
+; If you have permission to merge PRs (mostly equivalent to "do you work at Zed Industries"),
+; we strongly encourage you to put your name in the "all" bucket, but you can also add yourself
+; to other areas too.
+
+
+ = @ConradIrwin
+ = @maxdeviant
+ = @SomeoneToIgnore
+ = @probably-neb
+ = @danilo-leal
+ = @Veykril
+ = @kubkon
+ = @p1n3appl3
+ = @dinocosta
+ = @smitbarmase
+ = @cole-miller
+
+vim
+ = @ConradIrwin
+ = @probably-neb
+ = @p1n3appl3
+ = @dinocosta
+
+gpui
+ = @mikayla-maki
+
+git
+ = @cole-miller
+ = @danilo-leal
+
+linux
+ = @dvdsk
+ = @smitbarmase
+ = @p1n3appl3
+ = @cole-miller
+ = @probably-neb
+
+windows
+ = @reflectronic
+ = @localcc
+
+pickers
+ = @p1n3appl3
+ = @dvdsk
+ = @SomeoneToIgnore
+
+audio
+ = @dvdsk
+
+helix
+ = @kubkon
+
+terminal
+ = @kubkon
+ = @Veykril
+
+debugger
+ = @kubkon
+ = @osiewicz
+ = @Anthony-Eid
+
+extension
+ = @kubkon
+
+settings_ui
+ = @probably-neb
+ = @danilo-leal
+ = @Anthony-Eid
+
+crashes
+ = @p1n3appl3
+ = @Veykril
+
+ai
+ = @rtfeldman
+ = @danilo-leal
+ = @benbrandt
+
+design
+ = @danilo-leal
+
+multi_buffer
+ = @Veykril
+ = @SomeoneToIgnore
+
+lsp
+ = @osiewicz
+ = @Veykril
+ = @smitbarmase
+ = @SomeoneToIgnore
+
+languages
+ = @osiewicz
+ = @Veykril
+ = @smitbarmase
+ = @SomeoneToIgnore
+ = @probably-neb
+
+project_panel
+ = @smitbarmase
+
+tasks
+ = @SomeoneToIgnore
+ = @Veykril
+
+docs
+ = @probably-neb
diff --git a/assets/icons/attach.svg b/assets/icons/attach.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f923a3c7c8841fd358cf940d99e7371f010a6f4d
--- /dev/null
+++ b/assets/icons/attach.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/copy.svg b/assets/icons/copy.svg
index bca13f8d56a1b644051c5be2f17c0e4cc1cdb43b..aba193930bd1e93062b1e7eef3e4a0de2e7f4ab6 100644
--- a/assets/icons/copy.svg
+++ b/assets/icons/copy.svg
@@ -1 +1,4 @@
-
+
diff --git a/assets/icons/editor_cursor.svg b/assets/icons/editor_cursor.svg
index 338697be8a621e80099c308b3dda0a4e11fcfd61..e20013917d3c8b9d28f4fab631ae2fbd99b9297f 100644
--- a/assets/icons/editor_cursor.svg
+++ b/assets/icons/editor_cursor.svg
@@ -1,9 +1,3 @@
diff --git a/assets/icons/link.svg b/assets/icons/link.svg
new file mode 100644
index 0000000000000000000000000000000000000000..739d41b231f0e01945fc1fd526632964f921a938
--- /dev/null
+++ b/assets/icons/link.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/linux.svg b/assets/icons/linux.svg
new file mode 100644
index 0000000000000000000000000000000000000000..fc76742a3f236650cb8c514c8263ec2c3b2d4521
--- /dev/null
+++ b/assets/icons/linux.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/icons/list_filter.svg b/assets/icons/list_filter.svg
new file mode 100644
index 0000000000000000000000000000000000000000..82f41f5f6832a8cb35e2703e0f8ce36d148454dd
--- /dev/null
+++ b/assets/icons/list_filter.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/menu_alt.svg b/assets/icons/menu_alt.svg
index f73102e286c51e5c52fcec40cb976a3bd6a981cf..b9cc19e22febe045ca9ccf4a7e86d69b258f875c 100644
--- a/assets/icons/menu_alt.svg
+++ b/assets/icons/menu_alt.svg
@@ -1 +1,3 @@
-
+
diff --git a/assets/icons/menu_alt_temp.svg b/assets/icons/menu_alt_temp.svg
new file mode 100644
index 0000000000000000000000000000000000000000..87add13216d9eb8c4c3d8f345ff1695e98be2d5d
--- /dev/null
+++ b/assets/icons/menu_alt_temp.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/paperclip.svg b/assets/icons/paperclip.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7a864103c013823096b523f3e0f56db2d7e76009
--- /dev/null
+++ b/assets/icons/paperclip.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/pencil_unavailable.svg b/assets/icons/pencil_unavailable.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4241d766ace9ec5873553e0c1d77b8c19f6caa79
--- /dev/null
+++ b/assets/icons/pencil_unavailable.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/terminal_ghost.svg b/assets/icons/terminal_ghost.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7d0d0e068e8a6f01837e860e8223690a95541769
--- /dev/null
+++ b/assets/icons/terminal_ghost.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/tool_think.svg b/assets/icons/tool_think.svg
index efd5908a907b21c573ebc69fc13f5a210ab5d848..773f5e7fa7795d7bc56bba061d808418897f9287 100644
--- a/assets/icons/tool_think.svg
+++ b/assets/icons/tool_think.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/undo.svg b/assets/icons/undo.svg
index c714b58747e950ab75d3a02be7eebfe7cd83eda1..ccd45e246c6911c57cb2659764db6e1dc11bf0cb 100644
--- a/assets/icons/undo.svg
+++ b/assets/icons/undo.svg
@@ -1 +1,4 @@
-
+
diff --git a/assets/icons/x_circle_filled.svg b/assets/icons/x_circle_filled.svg
new file mode 100644
index 0000000000000000000000000000000000000000..52215acda8a6b7fc57820fa90f6ed405e6af637c
--- /dev/null
+++ b/assets/icons/x_circle_filled.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/zed_agent.svg b/assets/icons/zed_agent.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0c80e22c51233fff40b7605d0835b463786b4e84
--- /dev/null
+++ b/assets/icons/zed_agent.svg
@@ -0,0 +1,27 @@
+
diff --git a/assets/icons/zed_assistant.svg b/assets/icons/zed_assistant.svg
index 470eb0fedeab7535287db64b601b5dfd99b6c05d..812277a100b7e6e4ad44de357fc3556b686a90a0 100644
--- a/assets/icons/zed_assistant.svg
+++ b/assets/icons/zed_assistant.svg
@@ -1,5 +1,5 @@
diff --git a/assets/images/acp_grid.svg b/assets/images/acp_grid.svg
new file mode 100644
index 0000000000000000000000000000000000000000..8ebff8e1bc87b17e536c7f97dfa2118130233258
--- /dev/null
+++ b/assets/images/acp_grid.svg
@@ -0,0 +1,1257 @@
+
diff --git a/assets/images/acp_logo.svg b/assets/images/acp_logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..efaa46707be0a893917c3fc072a14b9c7b6b0c9b
--- /dev/null
+++ b/assets/images/acp_logo.svg
@@ -0,0 +1 @@
+
diff --git a/assets/images/acp_logo_serif.svg b/assets/images/acp_logo_serif.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a04d32e51c43acf358baa733f03284dbb6de1369
--- /dev/null
+++ b/assets/images/acp_logo_serif.svg
@@ -0,0 +1,46 @@
+
diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json
index 01c0b4e9696f3ee31d599f171acd27f4c00fdf3c..979e5a6ccc1d4520db65981fb3b8a01094f9c625 100644
--- a/assets/keymaps/default-linux.json
+++ b/assets/keymaps/default-linux.json
@@ -31,6 +31,7 @@
"ctrl--": ["zed::DecreaseBufferFontSize", { "persist": false }],
"ctrl-0": ["zed::ResetBufferFontSize", { "persist": false }],
"ctrl-,": "zed::OpenSettings",
+ "ctrl-alt-,": "zed::OpenSettingsFile",
"ctrl-q": "zed::Quit",
"f4": "debugger::Start",
"shift-f5": "debugger::Stop",
@@ -41,7 +42,7 @@
"shift-f11": "debugger::StepOut",
"f11": "zed::ToggleFullScreen",
"ctrl-alt-z": "edit_prediction::RateCompletions",
- "ctrl-shift-i": "edit_prediction::ToggleMenu",
+ "ctrl-alt-shift-i": "edit_prediction::ToggleMenu",
"ctrl-alt-l": "lsp_tool::ToggleMenu"
}
},
@@ -64,8 +65,8 @@
"ctrl-k": "editor::CutToEndOfLine",
"ctrl-k ctrl-q": "editor::Rewrap",
"ctrl-k q": "editor::Rewrap",
- "ctrl-backspace": "editor::DeleteToPreviousWordStart",
- "ctrl-delete": "editor::DeleteToNextWordEnd",
+ "ctrl-backspace": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "ctrl-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
"cut": "editor::Cut",
"shift-delete": "editor::Cut",
"ctrl-x": "editor::Cut",
@@ -121,7 +122,7 @@
"alt-g m": "git::OpenModifiedFiles",
"menu": "editor::OpenContextMenu",
"shift-f10": "editor::OpenContextMenu",
- "ctrl-shift-e": "editor::ToggleEditPrediction",
+ "ctrl-alt-shift-e": "editor::ToggleEditPrediction",
"f9": "editor::ToggleBreakpoint",
"shift-f9": "editor::EditLogBreakpoint"
}
@@ -131,14 +132,14 @@
"bindings": {
"shift-enter": "editor::Newline",
"enter": "editor::Newline",
- "ctrl-enter": "editor::NewlineAbove",
- "ctrl-shift-enter": "editor::NewlineBelow",
+ "ctrl-enter": "editor::NewlineBelow",
+ "ctrl-shift-enter": "editor::NewlineAbove",
"ctrl-k ctrl-z": "editor::ToggleSoftWrap",
"ctrl-k z": "editor::ToggleSoftWrap",
"find": "buffer_search::Deploy",
"ctrl-f": "buffer_search::Deploy",
"ctrl-h": "buffer_search::DeployReplace",
- "ctrl->": "assistant::QuoteSelection",
+ "ctrl->": "agent::AddSelectionToThread",
"ctrl-<": "assistant::InsertIntoEditor",
"ctrl-alt-e": "editor::SelectEnclosingSymbol",
"ctrl-shift-backspace": "editor::GoToPreviousChange",
@@ -171,6 +172,7 @@
"context": "Markdown",
"bindings": {
"copy": "markdown::Copy",
+ "ctrl-insert": "markdown::Copy",
"ctrl-c": "markdown::Copy"
}
},
@@ -241,12 +243,15 @@
"ctrl-shift-i": "agent::ToggleOptionsMenu",
"ctrl-alt-shift-n": "agent::ToggleNewThreadMenu",
"shift-alt-escape": "agent::ExpandMessageEditor",
- "ctrl->": "assistant::QuoteSelection",
+ "ctrl->": "agent::AddSelectionToThread",
"ctrl-alt-e": "agent::RemoveAllContext",
"ctrl-shift-e": "project_panel::ToggleFocus",
"ctrl-shift-enter": "agent::ContinueThread",
"super-ctrl-b": "agent::ToggleBurnMode",
- "alt-enter": "agent::ContinueWithBurnMode"
+ "alt-enter": "agent::ContinueWithBurnMode",
+ "ctrl-y": "agent::AllowOnce",
+ "ctrl-alt-y": "agent::AllowAlways",
+ "ctrl-alt-z": "agent::RejectOnce"
}
},
{
@@ -259,18 +264,19 @@
"context": "AgentPanel > Markdown",
"bindings": {
"copy": "markdown::CopyAsMarkdown",
+ "ctrl-insert": "markdown::CopyAsMarkdown",
"ctrl-c": "markdown::CopyAsMarkdown"
}
},
{
- "context": "AgentPanel && prompt_editor",
+ "context": "AgentPanel && text_thread",
"bindings": {
"ctrl-n": "agent::NewTextThread",
"ctrl-alt-t": "agent::NewThread"
}
},
{
- "context": "AgentPanel && external_agent_thread",
+ "context": "AgentPanel && acp_thread",
"use_key_equivalents": true,
"bindings": {
"ctrl-n": "agent::NewExternalAgentThread",
@@ -327,7 +333,13 @@
}
},
{
- "context": "AcpThread > Editor",
+ "context": "AcpThread > ModeSelector",
+ "bindings": {
+ "ctrl-enter": "menu::Confirm"
+ }
+ },
+ {
+ "context": "AcpThread > Editor && !use_modifier_to_send",
"use_key_equivalents": true,
"bindings": {
"enter": "agent::Chat",
@@ -336,6 +348,17 @@
"ctrl-shift-n": "agent::RejectAll"
}
},
+ {
+ "context": "AcpThread > Editor && use_modifier_to_send",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "agent::Chat",
+ "shift-ctrl-r": "agent::OpenAgentDiff",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll",
+ "shift-tab": "agent::CycleModeSelector"
+ }
+ },
{
"context": "ThreadHistory",
"bindings": {
@@ -343,11 +366,12 @@
}
},
{
- "context": "PromptLibrary",
+ "context": "RulesLibrary",
"bindings": {
"new": "rules_library::NewRule",
"ctrl-n": "rules_library::NewRule",
- "ctrl-shift-s": "rules_library::ToggleDefaultRule"
+ "ctrl-shift-s": "rules_library::ToggleDefaultRule",
+ "ctrl-w": "workspace::CloseWindow"
}
},
{
@@ -440,8 +464,8 @@
"ctrl-k ctrl-w": "workspace::CloseAllItemsAndPanes",
"back": "pane::GoBack",
"ctrl-alt--": "pane::GoBack",
- "ctrl-alt-_": "pane::GoForward",
"forward": "pane::GoForward",
+ "ctrl-alt-_": "pane::GoForward",
"ctrl-alt-g": "search::SelectNextMatch",
"f3": "search::SelectNextMatch",
"ctrl-alt-shift-g": "search::SelectPreviousMatch",
@@ -467,15 +491,15 @@
"bindings": {
"ctrl-[": "editor::Outdent",
"ctrl-]": "editor::Indent",
- "shift-alt-up": "editor::AddSelectionAbove", // Insert Cursor Above
- "shift-alt-down": "editor::AddSelectionBelow", // Insert Cursor Below
+ "shift-alt-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": true }], // Insert Cursor Above
+ "shift-alt-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": true }], // Insert Cursor Below
"ctrl-shift-k": "editor::DeleteLine",
"alt-up": "editor::MoveLineUp",
"alt-down": "editor::MoveLineDown",
"ctrl-alt-shift-up": "editor::DuplicateLineUp",
"ctrl-alt-shift-down": "editor::DuplicateLineDown",
- "alt-shift-right": "editor::SelectLargerSyntaxNode", // Expand Selection
- "alt-shift-left": "editor::SelectSmallerSyntaxNode", // Shrink Selection
+ "alt-shift-right": "editor::SelectLargerSyntaxNode", // Expand selection
+ "alt-shift-left": "editor::SelectSmallerSyntaxNode", // Shrink selection
"ctrl-shift-l": "editor::SelectAllMatches", // Select all occurrences of current selection
"ctrl-f2": "editor::SelectAllMatches", // Select all occurrences of current word
"ctrl-d": ["editor::SelectNext", { "replace_newest": false }], // editor.action.addSelectionToNextFindMatch / find_under_expand
@@ -503,15 +527,15 @@
"ctrl-k ctrl-l": "editor::ToggleFold",
"ctrl-k ctrl-[": "editor::FoldRecursive",
"ctrl-k ctrl-]": "editor::UnfoldRecursive",
- "ctrl-k ctrl-1": ["editor::FoldAtLevel", 1],
- "ctrl-k ctrl-2": ["editor::FoldAtLevel", 2],
- "ctrl-k ctrl-3": ["editor::FoldAtLevel", 3],
- "ctrl-k ctrl-4": ["editor::FoldAtLevel", 4],
- "ctrl-k ctrl-5": ["editor::FoldAtLevel", 5],
- "ctrl-k ctrl-6": ["editor::FoldAtLevel", 6],
- "ctrl-k ctrl-7": ["editor::FoldAtLevel", 7],
- "ctrl-k ctrl-8": ["editor::FoldAtLevel", 8],
- "ctrl-k ctrl-9": ["editor::FoldAtLevel", 9],
+ "ctrl-k ctrl-1": "editor::FoldAtLevel_1",
+ "ctrl-k ctrl-2": "editor::FoldAtLevel_2",
+ "ctrl-k ctrl-3": "editor::FoldAtLevel_3",
+ "ctrl-k ctrl-4": "editor::FoldAtLevel_4",
+ "ctrl-k ctrl-5": "editor::FoldAtLevel_5",
+ "ctrl-k ctrl-6": "editor::FoldAtLevel_6",
+ "ctrl-k ctrl-7": "editor::FoldAtLevel_7",
+ "ctrl-k ctrl-8": "editor::FoldAtLevel_8",
+ "ctrl-k ctrl-9": "editor::FoldAtLevel_9",
"ctrl-k ctrl-0": "editor::FoldAll",
"ctrl-k ctrl-j": "editor::UnfoldAll",
"ctrl-space": "editor::ShowCompletions",
@@ -571,7 +595,7 @@
"ctrl-n": "workspace::NewFile",
"shift-new": "workspace::NewWindow",
"ctrl-shift-n": "workspace::NewWindow",
- "ctrl-`": "terminal_panel::ToggleFocus",
+ "ctrl-`": "terminal_panel::Toggle",
"f10": ["app_menu::OpenApplicationMenu", "Zed"],
"alt-1": ["workspace::ActivatePane", 0],
"alt-2": ["workspace::ActivatePane", 1],
@@ -585,7 +609,7 @@
"ctrl-alt-b": "workspace::ToggleRightDock",
"ctrl-b": "workspace::ToggleLeftDock",
"ctrl-j": "workspace::ToggleBottomDock",
- "ctrl-alt-y": "workspace::CloseAllDocks",
+ "ctrl-alt-y": "workspace::ToggleAllDocks",
"ctrl-alt-0": "workspace::ResetActiveDockSize",
// For 0px parameter, uses UI font size value.
"ctrl-alt--": ["workspace::DecreaseActiveDockSize", { "px": 0 }],
@@ -597,7 +621,7 @@
"ctrl-shift-f": "pane::DeploySearch",
"ctrl-shift-h": ["pane::DeploySearch", { "replace_enabled": true }],
"ctrl-shift-t": "pane::ReopenClosedItem",
- "ctrl-k ctrl-s": "zed::OpenKeymapEditor",
+ "ctrl-k ctrl-s": "zed::OpenKeymap",
"ctrl-k ctrl-t": "theme_selector::Toggle",
"ctrl-alt-super-p": "settings_profile_selector::Toggle",
"ctrl-t": "project_symbols::Toggle",
@@ -616,6 +640,7 @@
"alt-save": "workspace::SaveAll",
"ctrl-alt-s": "workspace::SaveAll",
"ctrl-k m": "language_selector::Toggle",
+ "ctrl-k ctrl-m": "toolchain::AddToolchain",
"escape": "workspace::Unfollow",
"ctrl-k ctrl-left": "workspace::ActivatePaneLeft",
"ctrl-k ctrl-right": "workspace::ActivatePaneRight",
@@ -626,7 +651,9 @@
"ctrl-k shift-up": "workspace::SwapPaneUp",
"ctrl-k shift-down": "workspace::SwapPaneDown",
"ctrl-shift-x": "zed::Extensions",
- "ctrl-shift-r": "task::Rerun",
+ // All task parameters are captured and unchanged between reruns by default.
+ // Use the `"reevaluate_context"` parameter to control this.
+ "ctrl-shift-r": ["task::Rerun", { "reevaluate_context": false }],
"ctrl-alt-r": "task::Rerun",
"alt-t": "task::Rerun",
"alt-shift-t": "task::Spawn",
@@ -704,6 +731,14 @@
"tab": "editor::ComposeCompletion"
}
},
+ {
+ "context": "Editor && in_snippet",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-right": "editor::NextSnippetTabstop",
+ "alt-left": "editor::PreviousSnippetTabstop"
+ }
+ },
// Bindings for accepting edit predictions
//
// alt-l is provided as an alternative to tab/alt-tab. and will be displayed in the UI. This is
@@ -846,7 +881,7 @@
"ctrl-backspace": ["project_panel::Delete", { "skip_prompt": false }],
"ctrl-delete": ["project_panel::Delete", { "skip_prompt": false }],
"alt-ctrl-r": "project_panel::RevealInFileManager",
- "ctrl-shift-enter": "project_panel::OpenWithSystem",
+ "ctrl-shift-enter": "workspace::OpenWithSystem",
"alt-d": "project_panel::CompareMarkedFiles",
"shift-find": "project_panel::NewSearchInDirectory",
"ctrl-alt-shift-f": "project_panel::NewSearchInDirectory",
@@ -985,7 +1020,8 @@
"context": "CollabPanel",
"bindings": {
"alt-up": "collab_panel::MoveChannelUp",
- "alt-down": "collab_panel::MoveChannelDown"
+ "alt-down": "collab_panel::MoveChannelDown",
+ "alt-enter": "collab_panel::OpenSelectedChannelNotes"
}
},
{
@@ -1016,6 +1052,13 @@
"tab": "channel_modal::ToggleMode"
}
},
+ {
+ "context": "ToolchainSelector",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-a": "toolchain::AddToolchain"
+ }
+ },
{
"context": "FileFinder || (FileFinder > Picker > Editor)",
"bindings": {
@@ -1043,6 +1086,13 @@
"ctrl-backspace": "tab_switcher::CloseSelectedItem"
}
},
+ {
+ "context": "StashList || (StashList > Picker > Editor)",
+ "bindings": {
+ "ctrl-shift-backspace": "stash_picker::DropStashItem",
+ "ctrl-shift-v": "stash_picker::ShowStashItem"
+ }
+ },
{
"context": "Terminal",
"bindings": {
@@ -1085,7 +1135,8 @@
"ctrl-shift-space": "terminal::ToggleViMode",
"ctrl-shift-r": "terminal::RerunTask",
"ctrl-alt-r": "terminal::RerunTask",
- "alt-t": "terminal::RerunTask"
+ "alt-t": "terminal::RerunTask",
+ "ctrl-shift-5": "pane::SplitRight"
}
},
{
@@ -1102,6 +1153,13 @@
"ctrl-enter": "menu::Confirm"
}
},
+ {
+ "context": "ContextServerToolsModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel"
+ }
+ },
{
"context": "OnboardingAiConfigurationModal",
"use_key_equivalents": true,
@@ -1182,12 +1240,80 @@
"context": "Onboarding",
"use_key_equivalents": true,
"bindings": {
- "ctrl-1": "onboarding::ActivateBasicsPage",
- "ctrl-2": "onboarding::ActivateEditingPage",
- "ctrl-3": "onboarding::ActivateAISetupPage",
- "ctrl-escape": "onboarding::Finish",
- "alt-tab": "onboarding::SignIn",
+ "ctrl-enter": "onboarding::Finish",
+ "alt-shift-l": "onboarding::SignIn",
"alt-shift-a": "onboarding::OpenAccount"
}
+ },
+ {
+ "context": "InvalidBuffer",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-enter": "workspace::OpenWithSystem"
+ }
+ },
+ {
+ "context": "SettingsWindow",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-w": "workspace::CloseWindow",
+ "escape": "workspace::CloseWindow",
+ "ctrl-m": "settings_editor::Minimize",
+ "ctrl-f": "search::FocusSearch",
+ "left": "settings_editor::ToggleFocusNav",
+ "ctrl-shift-e": "settings_editor::ToggleFocusNav",
+ // todo(settings_ui): cut this down based on the max files and overflow UI
+ "ctrl-1": ["settings_editor::FocusFile", 0],
+ "ctrl-2": ["settings_editor::FocusFile", 1],
+ "ctrl-3": ["settings_editor::FocusFile", 2],
+ "ctrl-4": ["settings_editor::FocusFile", 3],
+ "ctrl-5": ["settings_editor::FocusFile", 4],
+ "ctrl-6": ["settings_editor::FocusFile", 5],
+ "ctrl-7": ["settings_editor::FocusFile", 6],
+ "ctrl-8": ["settings_editor::FocusFile", 7],
+ "ctrl-9": ["settings_editor::FocusFile", 8],
+ "ctrl-0": ["settings_editor::FocusFile", 9],
+ "ctrl-pageup": "settings_editor::FocusPreviousFile",
+ "ctrl-pagedown": "settings_editor::FocusNextFile"
+ }
+ },
+ {
+ "context": "StashDiff > Editor",
+ "bindings": {
+ "ctrl-space": "git::ApplyCurrentStash",
+ "ctrl-shift-space": "git::PopCurrentStash",
+ "ctrl-shift-backspace": "git::DropCurrentStash"
+ }
+ },
+ {
+ "context": "SettingsWindow > NavigationMenu",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "settings_editor::FocusPreviousNavEntry",
+ "shift-tab": "settings_editor::FocusPreviousNavEntry",
+ "down": "settings_editor::FocusNextNavEntry",
+ "tab": "settings_editor::FocusNextNavEntry",
+ "right": "settings_editor::ExpandNavEntry",
+ "left": "settings_editor::CollapseNavEntry",
+ "pageup": "settings_editor::FocusPreviousRootNavEntry",
+ "pagedown": "settings_editor::FocusNextRootNavEntry",
+ "home": "settings_editor::FocusFirstNavEntry",
+ "end": "settings_editor::FocusLastNavEntry"
+ }
+ },
+ {
+ "context": "Zeta2Feedback > Editor",
+ "bindings": {
+ "enter": "editor::Newline",
+ "ctrl-enter up": "dev::Zeta2RatePredictionPositive",
+ "ctrl-enter down": "dev::Zeta2RatePredictionNegative"
+ }
+ },
+ {
+ "context": "Zeta2Context > Editor",
+ "bindings": {
+ "alt-left": "dev::Zeta2ContextGoBack",
+ "alt-right": "dev::Zeta2ContextGoForward"
+ }
}
]
diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json
index e5b7fff9e1ce269f4f1c2f630f6bd41d790ffd21..4f9b85ff03790a8c9a59a657a3e0ca0710d41e25 100644
--- a/assets/keymaps/default-macos.json
+++ b/assets/keymaps/default-macos.json
@@ -40,6 +40,7 @@
"cmd--": ["zed::DecreaseBufferFontSize", { "persist": false }],
"cmd-0": ["zed::ResetBufferFontSize", { "persist": false }],
"cmd-,": "zed::OpenSettings",
+ "cmd-alt-,": "zed::OpenSettingsFile",
"cmd-q": "zed::Quit",
"cmd-h": "zed::Hide",
"alt-cmd-h": "zed::HideOthers",
@@ -70,9 +71,9 @@
"cmd-k q": "editor::Rewrap",
"cmd-backspace": "editor::DeleteToBeginningOfLine",
"cmd-delete": "editor::DeleteToEndOfLine",
- "alt-backspace": "editor::DeleteToPreviousWordStart",
- "ctrl-w": "editor::DeleteToPreviousWordStart",
- "alt-delete": "editor::DeleteToNextWordEnd",
+ "alt-backspace": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "ctrl-w": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "alt-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
"cmd-x": "editor::Cut",
"cmd-c": "editor::Copy",
"cmd-v": "editor::Paste",
@@ -162,7 +163,7 @@
"cmd-alt-f": "buffer_search::DeployReplace",
"cmd-alt-l": ["buffer_search::Deploy", { "selection_search_enabled": true }],
"cmd-e": ["buffer_search::Deploy", { "focus": false }],
- "cmd->": "assistant::QuoteSelection",
+ "cmd->": "agent::AddSelectionToThread",
"cmd-<": "assistant::InsertIntoEditor",
"cmd-alt-e": "editor::SelectEnclosingSymbol",
"alt-enter": "editor::OpenSelectionsInMultibuffer"
@@ -218,7 +219,7 @@
}
},
{
- "context": "Editor && !agent_diff",
+ "context": "Editor && !agent_diff && !AgentPanel",
"use_key_equivalents": true,
"bindings": {
"cmd-alt-z": "git::Restore",
@@ -281,12 +282,15 @@
"cmd-shift-i": "agent::ToggleOptionsMenu",
"cmd-alt-shift-n": "agent::ToggleNewThreadMenu",
"shift-alt-escape": "agent::ExpandMessageEditor",
- "cmd->": "assistant::QuoteSelection",
+ "cmd->": "agent::AddSelectionToThread",
"cmd-alt-e": "agent::RemoveAllContext",
"cmd-shift-e": "project_panel::ToggleFocus",
"cmd-ctrl-b": "agent::ToggleBurnMode",
"cmd-shift-enter": "agent::ContinueThread",
- "alt-enter": "agent::ContinueWithBurnMode"
+ "alt-enter": "agent::ContinueWithBurnMode",
+ "cmd-y": "agent::AllowOnce",
+ "cmd-alt-y": "agent::AllowAlways",
+ "cmd-alt-z": "agent::RejectOnce"
}
},
{
@@ -303,7 +307,7 @@
}
},
{
- "context": "AgentPanel && prompt_editor",
+ "context": "AgentPanel && text_thread",
"use_key_equivalents": true,
"bindings": {
"cmd-n": "agent::NewTextThread",
@@ -311,7 +315,7 @@
}
},
{
- "context": "AgentPanel && external_agent_thread",
+ "context": "AgentPanel && acp_thread",
"use_key_equivalents": true,
"bindings": {
"cmd-n": "agent::NewExternalAgentThread",
@@ -379,13 +383,31 @@
}
},
{
- "context": "AcpThread > Editor",
+ "context": "AcpThread > ModeSelector",
+ "bindings": {
+ "cmd-enter": "menu::Confirm"
+ }
+ },
+ {
+ "context": "AcpThread > Editor && !use_modifier_to_send",
"use_key_equivalents": true,
"bindings": {
"enter": "agent::Chat",
"shift-ctrl-r": "agent::OpenAgentDiff",
"cmd-shift-y": "agent::KeepAll",
- "cmd-shift-n": "agent::RejectAll"
+ "cmd-shift-n": "agent::RejectAll",
+ "shift-tab": "agent::CycleModeSelector"
+ }
+ },
+ {
+ "context": "AcpThread > Editor && use_modifier_to_send",
+ "use_key_equivalents": true,
+ "bindings": {
+ "cmd-enter": "agent::Chat",
+ "shift-ctrl-r": "agent::OpenAgentDiff",
+ "cmd-shift-y": "agent::KeepAll",
+ "cmd-shift-n": "agent::RejectAll",
+ "shift-tab": "agent::CycleModeSelector"
}
},
{
@@ -401,7 +423,7 @@
}
},
{
- "context": "PromptLibrary",
+ "context": "RulesLibrary",
"use_key_equivalents": true,
"bindings": {
"cmd-n": "rules_library::NewRule",
@@ -517,17 +539,21 @@
"bindings": {
"cmd-[": "editor::Outdent",
"cmd-]": "editor::Indent",
- "cmd-ctrl-p": "editor::AddSelectionAbove", // Insert cursor above
- "cmd-alt-up": "editor::AddSelectionAbove",
- "cmd-ctrl-n": "editor::AddSelectionBelow", // Insert cursor below
- "cmd-alt-down": "editor::AddSelectionBelow",
+ "cmd-ctrl-p": ["editor::AddSelectionAbove", { "skip_soft_wrap": false }], // Insert cursor above
+ "cmd-alt-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": true }],
+ "cmd-ctrl-n": ["editor::AddSelectionBelow", { "skip_soft_wrap": false }], // Insert cursor below
+ "cmd-alt-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": true }],
"cmd-shift-k": "editor::DeleteLine",
"alt-up": "editor::MoveLineUp",
"alt-down": "editor::MoveLineDown",
"alt-shift-up": "editor::DuplicateLineUp",
"alt-shift-down": "editor::DuplicateLineDown",
- "ctrl-shift-right": "editor::SelectLargerSyntaxNode", // Expand Selection
- "ctrl-shift-left": "editor::SelectSmallerSyntaxNode", // Shrink Selection
+ "cmd-ctrl-left": "editor::SelectSmallerSyntaxNode", // Shrink selection
+ "cmd-ctrl-right": "editor::SelectLargerSyntaxNode", // Expand selection
+ "cmd-ctrl-up": "editor::SelectPreviousSyntaxNode", // Move selection up
+ "ctrl-shift-right": "editor::SelectLargerSyntaxNode", // Expand selection (VSCode version)
+ "ctrl-shift-left": "editor::SelectSmallerSyntaxNode", // Shrink selection (VSCode version)
+ "cmd-ctrl-down": "editor::SelectNextSyntaxNode", // Move selection down
"cmd-d": ["editor::SelectNext", { "replace_newest": false }], // editor.action.addSelectionToNextFindMatch / find_under_expand
"cmd-shift-l": "editor::SelectAllMatches", // Select all occurrences of current selection
"cmd-f2": "editor::SelectAllMatches", // Select all occurrences of current word
@@ -556,15 +582,15 @@
"cmd-k cmd-l": "editor::ToggleFold",
"cmd-k cmd-[": "editor::FoldRecursive",
"cmd-k cmd-]": "editor::UnfoldRecursive",
- "cmd-k cmd-1": ["editor::FoldAtLevel", 1],
- "cmd-k cmd-2": ["editor::FoldAtLevel", 2],
- "cmd-k cmd-3": ["editor::FoldAtLevel", 3],
- "cmd-k cmd-4": ["editor::FoldAtLevel", 4],
- "cmd-k cmd-5": ["editor::FoldAtLevel", 5],
- "cmd-k cmd-6": ["editor::FoldAtLevel", 6],
- "cmd-k cmd-7": ["editor::FoldAtLevel", 7],
- "cmd-k cmd-8": ["editor::FoldAtLevel", 8],
- "cmd-k cmd-9": ["editor::FoldAtLevel", 9],
+ "cmd-k cmd-1": "editor::FoldAtLevel_1",
+ "cmd-k cmd-2": "editor::FoldAtLevel_2",
+ "cmd-k cmd-3": "editor::FoldAtLevel_3",
+ "cmd-k cmd-4": "editor::FoldAtLevel_4",
+ "cmd-k cmd-5": "editor::FoldAtLevel_5",
+ "cmd-k cmd-6": "editor::FoldAtLevel_6",
+ "cmd-k cmd-7": "editor::FoldAtLevel_7",
+ "cmd-k cmd-8": "editor::FoldAtLevel_8",
+ "cmd-k cmd-9": "editor::FoldAtLevel_9",
"cmd-k cmd-0": "editor::FoldAll",
"cmd-k cmd-j": "editor::UnfoldAll",
// Using `ctrl-space` / `ctrl-shift-space` in Zed requires disabling the macOS global shortcut.
@@ -639,7 +665,7 @@
"alt-shift-enter": "toast::RunAction",
"cmd-shift-s": "workspace::SaveAs",
"cmd-shift-n": "workspace::NewWindow",
- "ctrl-`": "terminal_panel::ToggleFocus",
+ "ctrl-`": "terminal_panel::Toggle",
"cmd-1": ["workspace::ActivatePane", 0],
"cmd-2": ["workspace::ActivatePane", 1],
"cmd-3": ["workspace::ActivatePane", 2],
@@ -653,7 +679,7 @@
"cmd-alt-b": "workspace::ToggleRightDock",
"cmd-r": "workspace::ToggleRightDock",
"cmd-j": "workspace::ToggleBottomDock",
- "alt-cmd-y": "workspace::CloseAllDocks",
+ "alt-cmd-y": "workspace::ToggleAllDocks",
// For 0px parameter, uses UI font size value.
"ctrl-alt-0": "workspace::ResetActiveDockSize",
"ctrl-alt--": ["workspace::DecreaseActiveDockSize", { "px": 0 }],
@@ -664,7 +690,7 @@
"cmd-shift-f": "pane::DeploySearch",
"cmd-shift-h": ["pane::DeploySearch", { "replace_enabled": true }],
"cmd-shift-t": "pane::ReopenClosedItem",
- "cmd-k cmd-s": "zed::OpenKeymapEditor",
+ "cmd-k cmd-s": "zed::OpenKeymap",
"cmd-k cmd-t": "theme_selector::Toggle",
"ctrl-alt-cmd-p": "settings_profile_selector::Toggle",
"cmd-t": "project_symbols::Toggle",
@@ -680,6 +706,7 @@
"cmd-?": "agent::ToggleFocus",
"cmd-alt-s": "workspace::SaveAll",
"cmd-k m": "language_selector::Toggle",
+ "cmd-k cmd-m": "toolchain::AddToolchain",
"escape": "workspace::Unfollow",
"cmd-k cmd-left": "workspace::ActivatePaneLeft",
"cmd-k cmd-right": "workspace::ActivatePaneRight",
@@ -700,7 +727,9 @@
"bindings": {
"cmd-n": "workspace::NewFile",
"cmd-shift-r": "task::Spawn",
- "cmd-alt-r": "task::Rerun",
+ // All task parameters are captured and unchanged between reruns by default.
+ // Use the `"reevaluate_context"` parameter to control this.
+ "cmd-alt-r": ["task::Rerun", { "reevaluate_context": false }],
"ctrl-alt-shift-r": ["task::Spawn", { "reveal_target": "center" }]
// also possible to spawn tasks by name:
// "foo-bar": ["task::Spawn", { "task_name": "MyTask", "reveal_target": "dock" }]
@@ -772,6 +801,14 @@
"tab": "editor::ComposeCompletion"
}
},
+ {
+ "context": "Editor && in_snippet",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-right": "editor::NextSnippetTabstop",
+ "alt-left": "editor::PreviousSnippetTabstop"
+ }
+ },
{
"context": "Editor && edit_prediction",
"bindings": {
@@ -905,7 +942,7 @@
"cmd-backspace": ["project_panel::Trash", { "skip_prompt": true }],
"cmd-delete": ["project_panel::Delete", { "skip_prompt": false }],
"alt-cmd-r": "project_panel::RevealInFileManager",
- "ctrl-shift-enter": "project_panel::OpenWithSystem",
+ "ctrl-shift-enter": "workspace::OpenWithSystem",
"alt-d": "project_panel::CompareMarkedFiles",
"cmd-alt-backspace": ["project_panel::Delete", { "skip_prompt": false }],
"cmd-alt-shift-f": "project_panel::NewSearchInDirectory",
@@ -1048,7 +1085,8 @@
"use_key_equivalents": true,
"bindings": {
"alt-up": "collab_panel::MoveChannelUp",
- "alt-down": "collab_panel::MoveChannelDown"
+ "alt-down": "collab_panel::MoveChannelDown",
+ "alt-enter": "collab_panel::OpenSelectedChannelNotes"
}
},
{
@@ -1084,6 +1122,13 @@
"tab": "channel_modal::ToggleMode"
}
},
+ {
+ "context": "ToolchainSelector",
+ "use_key_equivalents": true,
+ "bindings": {
+ "cmd-shift-a": "toolchain::AddToolchain"
+ }
+ },
{
"context": "FileFinder || (FileFinder > Picker > Editor)",
"use_key_equivalents": true,
@@ -1113,6 +1158,14 @@
"ctrl-backspace": "tab_switcher::CloseSelectedItem"
}
},
+ {
+ "context": "StashList || (StashList > Picker > Editor)",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-backspace": "stash_picker::DropStashItem",
+ "ctrl-shift-v": "stash_picker::ShowStashItem"
+ }
+ },
{
"context": "Terminal",
"use_key_equivalents": true,
@@ -1165,6 +1218,7 @@
"ctrl-alt-down": "pane::SplitDown",
"ctrl-alt-left": "pane::SplitLeft",
"ctrl-alt-right": "pane::SplitRight",
+ "cmd-d": "pane::SplitRight",
"cmd-alt-r": "terminal::RerunTask"
}
},
@@ -1204,6 +1258,13 @@
"cmd-enter": "menu::Confirm"
}
},
+ {
+ "context": "ContextServerToolsModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel"
+ }
+ },
{
"context": "OnboardingAiConfigurationModal",
"use_key_equivalents": true,
@@ -1284,12 +1345,81 @@
"context": "Onboarding",
"use_key_equivalents": true,
"bindings": {
- "cmd-1": "onboarding::ActivateBasicsPage",
- "cmd-2": "onboarding::ActivateEditingPage",
- "cmd-3": "onboarding::ActivateAISetupPage",
- "cmd-escape": "onboarding::Finish",
+ "cmd-enter": "onboarding::Finish",
"alt-tab": "onboarding::SignIn",
"alt-shift-a": "onboarding::OpenAccount"
}
+ },
+ {
+ "context": "InvalidBuffer",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-enter": "workspace::OpenWithSystem"
+ }
+ },
+ {
+ "context": "SettingsWindow",
+ "use_key_equivalents": true,
+ "bindings": {
+ "cmd-w": "workspace::CloseWindow",
+ "escape": "workspace::CloseWindow",
+ "cmd-m": "settings_editor::Minimize",
+ "cmd-f": "search::FocusSearch",
+ "left": "settings_editor::ToggleFocusNav",
+ "cmd-shift-e": "settings_editor::ToggleFocusNav",
+ // todo(settings_ui): cut this down based on the max files and overflow UI
+ "ctrl-1": ["settings_editor::FocusFile", 0],
+ "ctrl-2": ["settings_editor::FocusFile", 1],
+ "ctrl-3": ["settings_editor::FocusFile", 2],
+ "ctrl-4": ["settings_editor::FocusFile", 3],
+ "ctrl-5": ["settings_editor::FocusFile", 4],
+ "ctrl-6": ["settings_editor::FocusFile", 5],
+ "ctrl-7": ["settings_editor::FocusFile", 6],
+ "ctrl-8": ["settings_editor::FocusFile", 7],
+ "ctrl-9": ["settings_editor::FocusFile", 8],
+ "ctrl-0": ["settings_editor::FocusFile", 9],
+ "cmd-{": "settings_editor::FocusPreviousFile",
+ "cmd-}": "settings_editor::FocusNextFile"
+ }
+ },
+ {
+ "context": "StashDiff > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-space": "git::ApplyCurrentStash",
+ "ctrl-shift-space": "git::PopCurrentStash",
+ "ctrl-shift-backspace": "git::DropCurrentStash"
+ }
+ },
+ {
+ "context": "SettingsWindow > NavigationMenu",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "settings_editor::FocusPreviousNavEntry",
+ "shift-tab": "settings_editor::FocusPreviousNavEntry",
+ "down": "settings_editor::FocusNextNavEntry",
+ "tab": "settings_editor::FocusNextNavEntry",
+ "right": "settings_editor::ExpandNavEntry",
+ "left": "settings_editor::CollapseNavEntry",
+ "pageup": "settings_editor::FocusPreviousRootNavEntry",
+ "pagedown": "settings_editor::FocusNextRootNavEntry",
+ "home": "settings_editor::FocusFirstNavEntry",
+ "end": "settings_editor::FocusLastNavEntry"
+ }
+ },
+ {
+ "context": "Zeta2Feedback > Editor",
+ "bindings": {
+ "enter": "editor::Newline",
+ "cmd-enter up": "dev::Zeta2RatePredictionPositive",
+ "cmd-enter down": "dev::Zeta2RatePredictionNegative"
+ }
+ },
+ {
+ "context": "Zeta2Context > Editor",
+ "bindings": {
+ "alt-left": "dev::Zeta2ContextGoBack",
+ "alt-right": "dev::Zeta2ContextGoForward"
+ }
}
]
diff --git a/assets/keymaps/default-windows.json b/assets/keymaps/default-windows.json
new file mode 100644
index 0000000000000000000000000000000000000000..29146f3080d6ecad75bb9754503bb93c6710ff30
--- /dev/null
+++ b/assets/keymaps/default-windows.json
@@ -0,0 +1,1348 @@
+[
+ // Standard Windows bindings
+ {
+ "use_key_equivalents": true,
+ "bindings": {
+ "home": "menu::SelectFirst",
+ "shift-pageup": "menu::SelectFirst",
+ "pageup": "menu::SelectFirst",
+ "end": "menu::SelectLast",
+ "shift-pagedown": "menu::SelectLast",
+ "pagedown": "menu::SelectLast",
+ "ctrl-n": "menu::SelectNext",
+ "tab": "menu::SelectNext",
+ "down": "menu::SelectNext",
+ "ctrl-p": "menu::SelectPrevious",
+ "shift-tab": "menu::SelectPrevious",
+ "up": "menu::SelectPrevious",
+ "enter": "menu::Confirm",
+ "ctrl-enter": "menu::SecondaryConfirm",
+ "ctrl-c": "menu::Cancel",
+ "escape": "menu::Cancel",
+ "shift-alt-enter": "menu::Restart",
+ "alt-enter": ["picker::ConfirmInput", { "secondary": false }],
+ "ctrl-alt-enter": ["picker::ConfirmInput", { "secondary": true }],
+ "ctrl-shift-w": "workspace::CloseWindow",
+ "shift-escape": "workspace::ToggleZoom",
+ "ctrl-o": "workspace::Open",
+ "ctrl-=": ["zed::IncreaseBufferFontSize", { "persist": false }],
+ "ctrl-shift-=": ["zed::IncreaseBufferFontSize", { "persist": false }],
+ "ctrl--": ["zed::DecreaseBufferFontSize", { "persist": false }],
+ "ctrl-0": ["zed::ResetBufferFontSize", { "persist": false }],
+ "ctrl-,": "zed::OpenSettings",
+ "ctrl-alt-,": "zed::OpenSettingsFile",
+ "ctrl-q": "zed::Quit",
+ "f4": "debugger::Start",
+ "shift-f5": "debugger::Stop",
+ "ctrl-shift-f5": "debugger::RerunSession",
+ "f6": "debugger::Pause",
+ "f7": "debugger::StepOver",
+ "ctrl-f11": "debugger::StepInto",
+ "shift-f11": "debugger::StepOut",
+ "f11": "zed::ToggleFullScreen",
+ "ctrl-shift-i": "edit_prediction::ToggleMenu",
+ "shift-alt-l": "lsp_tool::ToggleMenu"
+ }
+ },
+ {
+ "context": "Picker || menu",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "menu::SelectPrevious",
+ "down": "menu::SelectNext"
+ }
+ },
+ {
+ "context": "Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "editor::Cancel",
+ "shift-backspace": "editor::Backspace",
+ "backspace": "editor::Backspace",
+ "delete": "editor::Delete",
+ "tab": "editor::Tab",
+ "shift-tab": "editor::Backtab",
+ "ctrl-k": "editor::CutToEndOfLine",
+ "ctrl-k ctrl-q": "editor::Rewrap",
+ "ctrl-k q": "editor::Rewrap",
+ "ctrl-backspace": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "ctrl-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
+ "shift-delete": "editor::Cut",
+ "ctrl-x": "editor::Cut",
+ "ctrl-insert": "editor::Copy",
+ "ctrl-c": "editor::Copy",
+ "shift-insert": "editor::Paste",
+ "ctrl-v": "editor::Paste",
+ "ctrl-z": "editor::Undo",
+ "ctrl-y": "editor::Redo",
+ "ctrl-shift-z": "editor::Redo",
+ "up": "editor::MoveUp",
+ "ctrl-up": "editor::LineUp",
+ "ctrl-down": "editor::LineDown",
+ "pageup": "editor::MovePageUp",
+ "alt-pageup": "editor::PageUp",
+ "shift-pageup": "editor::SelectPageUp",
+ "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
+ "down": "editor::MoveDown",
+ "pagedown": "editor::MovePageDown",
+ "alt-pagedown": "editor::PageDown",
+ "shift-pagedown": "editor::SelectPageDown",
+ "end": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": true }],
+ "left": "editor::MoveLeft",
+ "right": "editor::MoveRight",
+ "ctrl-left": "editor::MoveToPreviousWordStart",
+ "ctrl-right": "editor::MoveToNextWordEnd",
+ "ctrl-home": "editor::MoveToBeginning",
+ "ctrl-end": "editor::MoveToEnd",
+ "shift-up": "editor::SelectUp",
+ "shift-down": "editor::SelectDown",
+ "shift-left": "editor::SelectLeft",
+ "shift-right": "editor::SelectRight",
+ "ctrl-shift-left": "editor::SelectToPreviousWordStart",
+ "ctrl-shift-right": "editor::SelectToNextWordEnd",
+ "ctrl-shift-home": "editor::SelectToBeginning",
+ "ctrl-shift-end": "editor::SelectToEnd",
+ "ctrl-a": "editor::SelectAll",
+ "ctrl-l": "editor::SelectLine",
+ "shift-alt-f": "editor::Format",
+ "shift-alt-o": "editor::OrganizeImports",
+ "shift-home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": true, "stop_at_indent": true }],
+ "shift-end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": true }],
+ "ctrl-alt-space": "editor::ShowCharacterPalette",
+ "ctrl-;": "editor::ToggleLineNumbers",
+ "ctrl-'": "editor::ToggleSelectedDiffHunks",
+ "ctrl-\"": "editor::ExpandAllDiffHunks",
+ "ctrl-i": "editor::ShowSignatureHelp",
+ "alt-g b": "git::Blame",
+ "alt-g m": "git::OpenModifiedFiles",
+ "menu": "editor::OpenContextMenu",
+ "shift-f10": "editor::OpenContextMenu",
+ "ctrl-shift-e": "editor::ToggleEditPrediction",
+ "f9": "editor::ToggleBreakpoint",
+ "shift-f9": "editor::EditLogBreakpoint"
+ }
+ },
+ {
+ "context": "Editor && mode == full",
+ "use_key_equivalents": true,
+ "bindings": {
+ "shift-enter": "editor::Newline",
+ "enter": "editor::Newline",
+ "ctrl-enter": "editor::NewlineBelow",
+ "ctrl-shift-enter": "editor::NewlineAbove",
+ "ctrl-k ctrl-z": "editor::ToggleSoftWrap",
+ "ctrl-k z": "editor::ToggleSoftWrap",
+ "ctrl-f": "buffer_search::Deploy",
+ "ctrl-h": "buffer_search::DeployReplace",
+ "ctrl-shift-.": "agent::AddSelectionToThread",
+ "ctrl-shift-,": "assistant::InsertIntoEditor",
+ "shift-alt-e": "editor::SelectEnclosingSymbol",
+ "ctrl-shift-backspace": "editor::GoToPreviousChange",
+ "ctrl-shift-alt-backspace": "editor::GoToNextChange",
+ "alt-enter": "editor::OpenSelectionsInMultibuffer"
+ }
+ },
+ {
+ "context": "Editor && mode == full && edit_prediction",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-]": "editor::NextEditPrediction",
+ "alt-[": "editor::PreviousEditPrediction"
+ }
+ },
+ {
+ "context": "Editor && !edit_prediction",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-\\": "editor::ShowEditPrediction"
+ }
+ },
+ {
+ "context": "Editor && mode == auto_height",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "editor::Newline",
+ "shift-enter": "editor::Newline",
+ "ctrl-shift-enter": "editor::NewlineBelow"
+ }
+ },
+ {
+ "context": "Markdown",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-c": "markdown::Copy"
+ }
+ },
+ {
+ "context": "Editor && jupyter && !ContextEditor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-enter": "repl::Run",
+ "ctrl-alt-enter": "repl::RunInPlace"
+ }
+ },
+ {
+ "context": "Editor && !agent_diff",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-k ctrl-r": "git::Restore",
+ "alt-y": "git::StageAndNext",
+ "shift-alt-y": "git::UnstageAndNext"
+ }
+ },
+ {
+ "context": "Editor && editor_agent_diff",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-y": "agent::Keep",
+ "ctrl-n": "agent::Reject",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll",
+ "ctrl-shift-r": "agent::OpenAgentDiff"
+ }
+ },
+ {
+ "context": "AgentDiff",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-y": "agent::Keep",
+ "ctrl-n": "agent::Reject",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll"
+ }
+ },
+ {
+ "context": "ContextEditor > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "assistant::Assist",
+ "ctrl-s": "workspace::Save",
+ "ctrl-shift-,": "assistant::InsertIntoEditor",
+ "shift-enter": "assistant::Split",
+ "ctrl-r": "assistant::CycleMessageRole",
+ "enter": "assistant::ConfirmCommand",
+ "alt-enter": "editor::Newline",
+ "ctrl-k c": "assistant::CopyCode",
+ "ctrl-g": "search::SelectNextMatch",
+ "ctrl-shift-g": "search::SelectPreviousMatch",
+ "ctrl-k l": "agent::OpenRulesLibrary"
+ }
+ },
+ {
+ "context": "AgentPanel",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-n": "agent::NewThread",
+ "shift-alt-n": "agent::NewTextThread",
+ "ctrl-shift-h": "agent::OpenHistory",
+ "shift-alt-c": "agent::OpenSettings",
+ "shift-alt-p": "agent::OpenRulesLibrary",
+ "ctrl-i": "agent::ToggleProfileSelector",
+ "shift-alt-/": "agent::ToggleModelSelector",
+ "ctrl-shift-a": "agent::ToggleContextPicker",
+ "ctrl-shift-j": "agent::ToggleNavigationMenu",
+ "ctrl-shift-i": "agent::ToggleOptionsMenu",
+ // "ctrl-shift-alt-n": "agent::ToggleNewThreadMenu",
+ "shift-alt-escape": "agent::ExpandMessageEditor",
+ "ctrl-shift-.": "agent::AddSelectionToThread",
+ "shift-alt-e": "agent::RemoveAllContext",
+ "ctrl-shift-e": "project_panel::ToggleFocus",
+ "ctrl-shift-enter": "agent::ContinueThread",
+ "super-ctrl-b": "agent::ToggleBurnMode",
+ "alt-enter": "agent::ContinueWithBurnMode",
+ "ctrl-y": "agent::AllowOnce",
+ "ctrl-alt-y": "agent::AllowAlways",
+ "ctrl-alt-z": "agent::RejectOnce"
+ }
+ },
+ {
+ "context": "AgentPanel > NavigationMenu",
+ "use_key_equivalents": true,
+ "bindings": {
+ "shift-backspace": "agent::DeleteRecentlyOpenThread"
+ }
+ },
+ {
+ "context": "AgentPanel > Markdown",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-c": "markdown::CopyAsMarkdown"
+ }
+ },
+ {
+ "context": "AgentPanel && text_thread",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-n": "agent::NewTextThread",
+ "ctrl-alt-t": "agent::NewThread"
+ }
+ },
+ {
+ "context": "AgentPanel && acp_thread",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-n": "agent::NewExternalAgentThread",
+ "ctrl-alt-t": "agent::NewThread"
+ }
+ },
+ {
+ "context": "MessageEditor && !Picker > Editor && !use_modifier_to_send",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "agent::Chat",
+ "ctrl-enter": "agent::ChatWithFollow",
+ "ctrl-i": "agent::ToggleProfileSelector",
+ "ctrl-shift-r": "agent::OpenAgentDiff",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll"
+ }
+ },
+ {
+ "context": "MessageEditor && !Picker > Editor && use_modifier_to_send",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "agent::Chat",
+ "enter": "editor::Newline",
+ "ctrl-i": "agent::ToggleProfileSelector",
+ "ctrl-shift-r": "agent::OpenAgentDiff",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll"
+ }
+ },
+ {
+ "context": "EditMessageEditor > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel",
+ "enter": "menu::Confirm",
+ "alt-enter": "editor::Newline"
+ }
+ },
+ {
+ "context": "AgentFeedbackMessageEditor > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel",
+ "enter": "menu::Confirm",
+ "alt-enter": "editor::Newline"
+ }
+ },
+ {
+ "context": "ContextStrip",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "agent::FocusUp",
+ "right": "agent::FocusRight",
+ "left": "agent::FocusLeft",
+ "down": "agent::FocusDown",
+ "backspace": "agent::RemoveFocusedContext",
+ "enter": "agent::AcceptSuggestedContext"
+ }
+ },
+ {
+ "context": "AcpThread > ModeSelector",
+ "bindings": {
+ "ctrl-enter": "menu::Confirm"
+ }
+ },
+ {
+ "context": "AcpThread > Editor && !use_modifier_to_send",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "agent::Chat",
+ "ctrl-shift-r": "agent::OpenAgentDiff",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll",
+ "shift-tab": "agent::CycleModeSelector"
+ }
+ },
+ {
+ "context": "AcpThread > Editor && use_modifier_to_send",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "agent::Chat",
+ "ctrl-shift-r": "agent::OpenAgentDiff",
+ "ctrl-shift-y": "agent::KeepAll",
+ "ctrl-shift-n": "agent::RejectAll",
+ "shift-tab": "agent::CycleModeSelector"
+ }
+ },
+ {
+ "context": "ThreadHistory",
+ "use_key_equivalents": true,
+ "bindings": {
+ "backspace": "agent::RemoveSelectedThread"
+ }
+ },
+ {
+ "context": "RulesLibrary",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-n": "rules_library::NewRule",
+ "ctrl-shift-s": "rules_library::ToggleDefaultRule",
+ "ctrl-w": "workspace::CloseWindow"
+ }
+ },
+ {
+ "context": "BufferSearchBar",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "buffer_search::Dismiss",
+ "tab": "buffer_search::FocusEditor",
+ "enter": "search::SelectNextMatch",
+ "shift-enter": "search::SelectPreviousMatch",
+ "alt-enter": "search::SelectAllMatches",
+ "ctrl-f": "search::FocusSearch",
+ "ctrl-h": "search::ToggleReplace",
+ "ctrl-l": "search::ToggleSelection"
+ }
+ },
+ {
+ "context": "BufferSearchBar && in_replace > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "search::ReplaceNext",
+ "ctrl-enter": "search::ReplaceAll"
+ }
+ },
+ {
+ "context": "BufferSearchBar && !in_replace > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "search::PreviousHistoryQuery",
+ "down": "search::NextHistoryQuery"
+ }
+ },
+ {
+ "context": "ProjectSearchBar",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "project_search::ToggleFocus",
+ "ctrl-shift-f": "search::FocusSearch",
+ "ctrl-shift-h": "search::ToggleReplace",
+ "alt-r": "search::ToggleRegex" // vscode
+ }
+ },
+ {
+ "context": "ProjectSearchBar > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "search::PreviousHistoryQuery",
+ "down": "search::NextHistoryQuery"
+ }
+ },
+ {
+ "context": "ProjectSearchBar && in_replace > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "search::ReplaceNext",
+ "ctrl-alt-enter": "search::ReplaceAll"
+ }
+ },
+ {
+ "context": "ProjectSearchView",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "project_search::ToggleFocus",
+ "ctrl-shift-h": "search::ToggleReplace",
+ "alt-r": "search::ToggleRegex" // vscode
+ }
+ },
+ {
+ "context": "Pane",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-1": ["pane::ActivateItem", 0],
+ "alt-2": ["pane::ActivateItem", 1],
+ "alt-3": ["pane::ActivateItem", 2],
+ "alt-4": ["pane::ActivateItem", 3],
+ "alt-5": ["pane::ActivateItem", 4],
+ "alt-6": ["pane::ActivateItem", 5],
+ "alt-7": ["pane::ActivateItem", 6],
+ "alt-8": ["pane::ActivateItem", 7],
+ "alt-9": ["pane::ActivateItem", 8],
+ "alt-0": "pane::ActivateLastItem",
+ "ctrl-pageup": "pane::ActivatePreviousItem",
+ "ctrl-pagedown": "pane::ActivateNextItem",
+ "ctrl-shift-pageup": "pane::SwapItemLeft",
+ "ctrl-shift-pagedown": "pane::SwapItemRight",
+ "ctrl-f4": ["pane::CloseActiveItem", { "close_pinned": false }],
+ "ctrl-w": ["pane::CloseActiveItem", { "close_pinned": false }],
+ "ctrl-shift-alt-t": ["pane::CloseOtherItems", { "close_pinned": false }],
+ "ctrl-shift-alt-w": "workspace::CloseInactiveTabsAndPanes",
+ "ctrl-k e": ["pane::CloseItemsToTheLeft", { "close_pinned": false }],
+ "ctrl-k t": ["pane::CloseItemsToTheRight", { "close_pinned": false }],
+ "ctrl-k u": ["pane::CloseCleanItems", { "close_pinned": false }],
+ "ctrl-k w": ["pane::CloseAllItems", { "close_pinned": false }],
+ "ctrl-k ctrl-w": "workspace::CloseAllItemsAndPanes",
+ "back": "pane::GoBack",
+ "alt--": "pane::GoBack",
+ "forward": "pane::GoForward",
+ "alt-=": "pane::GoForward",
+ "f3": "search::SelectNextMatch",
+ "shift-f3": "search::SelectPreviousMatch",
+ "ctrl-shift-f": "project_search::ToggleFocus",
+ "shift-alt-h": "search::ToggleReplace",
+ "alt-l": "search::ToggleSelection",
+ "alt-enter": "search::SelectAllMatches",
+ "alt-c": "search::ToggleCaseSensitive",
+ "alt-w": "search::ToggleWholeWord",
+ "alt-f": "project_search::ToggleFilters",
+ "alt-r": "search::ToggleRegex",
+ // "ctrl-shift-alt-x": "search::ToggleRegex",
+ "ctrl-k shift-enter": "pane::TogglePinTab"
+ }
+ },
+ // Bindings from VS Code
+ {
+ "context": "Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-[": "editor::Outdent",
+ "ctrl-]": "editor::Indent",
+ "ctrl-shift-alt-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": true }], // Insert Cursor Above
+ "ctrl-shift-alt-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": true }], // Insert Cursor Below
+ "ctrl-shift-k": "editor::DeleteLine",
+ "alt-up": "editor::MoveLineUp",
+ "alt-down": "editor::MoveLineDown",
+ "shift-alt-up": "editor::DuplicateLineUp",
+ "shift-alt-down": "editor::DuplicateLineDown",
+ "shift-alt-right": "editor::SelectLargerSyntaxNode", // Expand selection
+ "shift-alt-left": "editor::SelectSmallerSyntaxNode", // Shrink selection
+ "ctrl-shift-l": "editor::SelectAllMatches", // Select all occurrences of current selection
+ "ctrl-f2": "editor::SelectAllMatches", // Select all occurrences of current word
+ "ctrl-d": ["editor::SelectNext", { "replace_newest": false }], // editor.action.addSelectionToNextFindMatch / find_under_expand
+ "ctrl-shift-down": ["editor::SelectNext", { "replace_newest": false }], // editor.action.addSelectionToNextFindMatch
+ "ctrl-shift-up": ["editor::SelectPrevious", { "replace_newest": false }], // editor.action.addSelectionToPreviousFindMatch
+ "ctrl-k ctrl-d": ["editor::SelectNext", { "replace_newest": true }], // editor.action.moveSelectionToNextFindMatch / find_under_expand_skip
+ "ctrl-k ctrl-shift-d": ["editor::SelectPrevious", { "replace_newest": true }], // editor.action.moveSelectionToPreviousFindMatch
+ "ctrl-k ctrl-i": "editor::Hover",
+ "ctrl-k ctrl-b": "editor::BlameHover",
+ "ctrl-/": ["editor::ToggleComments", { "advance_downwards": false }],
+ "f8": ["editor::GoToDiagnostic", { "severity": { "min": "hint", "max": "error" } }],
+ "shift-f8": ["editor::GoToPreviousDiagnostic", { "severity": { "min": "hint", "max": "error" } }],
+ "f2": "editor::Rename",
+ "f12": "editor::GoToDefinition",
+ "alt-f12": "editor::GoToDefinitionSplit",
+ "ctrl-shift-f10": "editor::GoToDefinitionSplit",
+ "ctrl-f12": "editor::GoToImplementation",
+ "shift-f12": "editor::GoToTypeDefinition",
+ "ctrl-alt-f12": "editor::GoToTypeDefinitionSplit",
+ "shift-alt-f12": "editor::FindAllReferences",
+ "ctrl-m": "editor::MoveToEnclosingBracket", // from jetbrains
+ "ctrl-shift-\\": "editor::MoveToEnclosingBracket",
+ "ctrl-shift-[": "editor::Fold",
+ "ctrl-shift-]": "editor::UnfoldLines",
+ "ctrl-k ctrl-l": "editor::ToggleFold",
+ "ctrl-k ctrl-[": "editor::FoldRecursive",
+ "ctrl-k ctrl-]": "editor::UnfoldRecursive",
+ "ctrl-k ctrl-1": "editor::FoldAtLevel_1",
+ "ctrl-k ctrl-2": "editor::FoldAtLevel_2",
+ "ctrl-k ctrl-3": "editor::FoldAtLevel_3",
+ "ctrl-k ctrl-4": "editor::FoldAtLevel_4",
+ "ctrl-k ctrl-5": "editor::FoldAtLevel_5",
+ "ctrl-k ctrl-6": "editor::FoldAtLevel_6",
+ "ctrl-k ctrl-7": "editor::FoldAtLevel_7",
+ "ctrl-k ctrl-8": "editor::FoldAtLevel_8",
+ "ctrl-k ctrl-9": "editor::FoldAtLevel_9",
+ "ctrl-k ctrl-0": "editor::FoldAll",
+ "ctrl-k ctrl-j": "editor::UnfoldAll",
+ "ctrl-space": "editor::ShowCompletions",
+ "ctrl-shift-space": "editor::ShowWordCompletions",
+ "ctrl-.": "editor::ToggleCodeActions",
+ "ctrl-k r": "editor::RevealInFileManager",
+ "ctrl-k p": "editor::CopyPath",
+ "ctrl-\\": "pane::SplitRight",
+ "ctrl-shift-alt-c": "editor::DisplayCursorNames",
+ "alt-.": "editor::GoToHunk",
+ "alt-,": "editor::GoToPreviousHunk"
+ }
+ },
+ {
+ "context": "Editor && extension == md",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-k v": "markdown::OpenPreviewToTheSide",
+ "ctrl-shift-v": "markdown::OpenPreview"
+ }
+ },
+ {
+ "context": "Editor && extension == svg",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-k v": "svg::OpenPreviewToTheSide",
+ "ctrl-shift-v": "svg::OpenPreview"
+ }
+ },
+ {
+ "context": "Editor && mode == full",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-o": "outline::Toggle",
+ "ctrl-g": "go_to_line::Toggle"
+ }
+ },
+ {
+ "context": "Workspace",
+ "use_key_equivalents": true,
+ "bindings": {
+ // Change the default action on `menu::Confirm` by setting the parameter
+ // "ctrl-alt-o": ["projects::OpenRecent", { "create_new_window": true }],
+ "ctrl-r": ["projects::OpenRecent", { "create_new_window": false }],
+ // Change to open path modal for existing remote connection by setting the parameter
+ // "ctrl-shift-alt-o": "["projects::OpenRemote", { "from_existing_connection": true }]",
+ "ctrl-shift-alt-o": ["projects::OpenRemote", { "from_existing_connection": false, "create_new_window": false }],
+ "shift-alt-b": "branches::OpenRecent",
+ "shift-alt-enter": "toast::RunAction",
+ "ctrl-shift-`": "workspace::NewTerminal",
+ "ctrl-s": "workspace::Save",
+ "ctrl-k ctrl-shift-s": "workspace::SaveWithoutFormat",
+ "ctrl-shift-s": "workspace::SaveAs",
+ "ctrl-n": "workspace::NewFile",
+ "ctrl-shift-n": "workspace::NewWindow",
+ "ctrl-`": "terminal_panel::Toggle",
+ "f10": ["app_menu::OpenApplicationMenu", "Zed"],
+ "alt-1": ["workspace::ActivatePane", 0],
+ "alt-2": ["workspace::ActivatePane", 1],
+ "alt-3": ["workspace::ActivatePane", 2],
+ "alt-4": ["workspace::ActivatePane", 3],
+ "alt-5": ["workspace::ActivatePane", 4],
+ "alt-6": ["workspace::ActivatePane", 5],
+ "alt-7": ["workspace::ActivatePane", 6],
+ "alt-8": ["workspace::ActivatePane", 7],
+ "alt-9": ["workspace::ActivatePane", 8],
+ "ctrl-alt-b": "workspace::ToggleRightDock",
+ "ctrl-b": "workspace::ToggleLeftDock",
+ "ctrl-j": "workspace::ToggleBottomDock",
+ "ctrl-shift-y": "workspace::ToggleAllDocks",
+ "alt-r": "workspace::ResetActiveDockSize",
+ // For 0px parameter, uses UI font size value.
+ "shift-alt--": ["workspace::DecreaseActiveDockSize", { "px": 0 }],
+ "shift-alt-=": ["workspace::IncreaseActiveDockSize", { "px": 0 }],
+ "shift-alt-0": "workspace::ResetOpenDocksSize",
+ "ctrl-shift-f": "pane::DeploySearch",
+ "ctrl-shift-h": ["pane::DeploySearch", { "replace_enabled": true }],
+ "ctrl-shift-t": "pane::ReopenClosedItem",
+ "ctrl-k ctrl-s": "zed::OpenKeymap",
+ "ctrl-k ctrl-t": "theme_selector::Toggle",
+ "ctrl-alt-super-p": "settings_profile_selector::Toggle",
+ "ctrl-t": "project_symbols::Toggle",
+ "ctrl-p": "file_finder::Toggle",
+ "ctrl-tab": "tab_switcher::Toggle",
+ "ctrl-shift-tab": ["tab_switcher::Toggle", { "select_last": true }],
+ "ctrl-e": "file_finder::Toggle",
+ "f1": "command_palette::Toggle",
+ "ctrl-shift-p": "command_palette::Toggle",
+ "ctrl-shift-m": "diagnostics::Deploy",
+ "ctrl-shift-e": "project_panel::ToggleFocus",
+ "ctrl-shift-b": "outline_panel::ToggleFocus",
+ "ctrl-shift-g": "git_panel::ToggleFocus",
+ "ctrl-shift-d": "debug_panel::ToggleFocus",
+ "ctrl-shift-/": "agent::ToggleFocus",
+ "ctrl-k s": "workspace::SaveAll",
+ "ctrl-k m": "language_selector::Toggle",
+ "ctrl-m ctrl-m": "toolchain::AddToolchain",
+ "escape": "workspace::Unfollow",
+ "ctrl-k ctrl-left": "workspace::ActivatePaneLeft",
+ "ctrl-k ctrl-right": "workspace::ActivatePaneRight",
+ "ctrl-k ctrl-up": "workspace::ActivatePaneUp",
+ "ctrl-k ctrl-down": "workspace::ActivatePaneDown",
+ "ctrl-k shift-left": "workspace::SwapPaneLeft",
+ "ctrl-k shift-right": "workspace::SwapPaneRight",
+ "ctrl-k shift-up": "workspace::SwapPaneUp",
+ "ctrl-k shift-down": "workspace::SwapPaneDown",
+ "ctrl-shift-x": "zed::Extensions",
+ // All task parameters are captured and unchanged between reruns by default.
+ // Use the `"reevaluate_context"` parameter to control this.
+ "ctrl-shift-r": ["task::Rerun", { "reevaluate_context": false }],
+ "alt-t": "task::Rerun",
+ "shift-alt-t": "task::Spawn",
+ "shift-alt-r": ["task::Spawn", { "reveal_target": "center" }],
+ // also possible to spawn tasks by name:
+ // "foo-bar": ["task::Spawn", { "task_name": "MyTask", "reveal_target": "dock" }]
+ // or by tag:
+ // "foo-bar": ["task::Spawn", { "task_tag": "MyTag" }],
+ "f5": "debugger::Rerun",
+ "ctrl-f4": "workspace::CloseActiveDock",
+ "ctrl-w": "workspace::CloseActiveDock"
+ }
+ },
+ {
+ "context": "Workspace && debugger_running",
+ "use_key_equivalents": true,
+ "bindings": {
+ "f5": "zed::NoAction"
+ }
+ },
+ {
+ "context": "Workspace && debugger_stopped",
+ "use_key_equivalents": true,
+ "bindings": {
+ "f5": "debugger::Continue"
+ }
+ },
+ {
+ "context": "ApplicationMenu",
+ "use_key_equivalents": true,
+ "bindings": {
+ "f10": "menu::Cancel",
+ "left": "app_menu::ActivateMenuLeft",
+ "right": "app_menu::ActivateMenuRight"
+ }
+ },
+ // Bindings from Sublime Text
+ {
+ "context": "Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-u": "editor::UndoSelection",
+ "ctrl-shift-u": "editor::RedoSelection",
+ "ctrl-shift-j": "editor::JoinLines",
+ "ctrl-alt-backspace": "editor::DeleteToPreviousSubwordStart",
+ "shift-alt-h": "editor::DeleteToPreviousSubwordStart",
+ "ctrl-alt-delete": "editor::DeleteToNextSubwordEnd",
+ "shift-alt-d": "editor::DeleteToNextSubwordEnd",
+ "ctrl-alt-left": "editor::MoveToPreviousSubwordStart",
+ "ctrl-alt-right": "editor::MoveToNextSubwordEnd",
+ "ctrl-shift-alt-left": "editor::SelectToPreviousSubwordStart",
+ "ctrl-shift-alt-right": "editor::SelectToNextSubwordEnd"
+ }
+ },
+ // Bindings from Atom
+ {
+ "context": "Pane",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-k up": "pane::SplitUp",
+ "ctrl-k down": "pane::SplitDown",
+ "ctrl-k left": "pane::SplitLeft",
+ "ctrl-k right": "pane::SplitRight"
+ }
+ },
+ // Bindings that should be unified with bindings for more general actions
+ {
+ "context": "Editor && renaming",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "editor::ConfirmRename"
+ }
+ },
+ {
+ "context": "Editor && showing_completions",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "editor::ConfirmCompletion",
+ "shift-enter": "editor::ConfirmCompletionReplace",
+ "tab": "editor::ComposeCompletion"
+ }
+ },
+ {
+ "context": "Editor && in_snippet",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-right": "editor::NextSnippetTabstop",
+ "alt-left": "editor::PreviousSnippetTabstop"
+ }
+ },
+ // Bindings for accepting edit predictions
+ //
+ // alt-l is provided as an alternative to tab/alt-tab. and will be displayed in the UI. This is
+ // because alt-tab may not be available, as it is often used for window switching.
+ {
+ "context": "Editor && edit_prediction",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-tab": "editor::AcceptEditPrediction",
+ "alt-l": "editor::AcceptEditPrediction",
+ "tab": "editor::AcceptEditPrediction",
+ "alt-right": "editor::AcceptPartialEditPrediction"
+ }
+ },
+ {
+ "context": "Editor && edit_prediction_conflict",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-tab": "editor::AcceptEditPrediction",
+ "alt-l": "editor::AcceptEditPrediction",
+ "alt-right": "editor::AcceptPartialEditPrediction"
+ }
+ },
+ {
+ "context": "Editor && showing_code_actions",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "editor::ConfirmCodeAction"
+ }
+ },
+ {
+ "context": "Editor && (showing_code_actions || showing_completions)",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-p": "editor::ContextMenuPrevious",
+ "up": "editor::ContextMenuPrevious",
+ "ctrl-n": "editor::ContextMenuNext",
+ "down": "editor::ContextMenuNext",
+ "pageup": "editor::ContextMenuFirst",
+ "pagedown": "editor::ContextMenuLast"
+ }
+ },
+ {
+ "context": "Editor && showing_signature_help && !showing_completions",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "editor::SignatureHelpPrevious",
+ "down": "editor::SignatureHelpNext"
+ }
+ },
+ // Custom bindings
+ {
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-alt-f": "workspace::FollowNextCollaborator",
+ // Only available in debug builds: opens an element inspector for development.
+ "shift-alt-i": "dev::ToggleInspector"
+ }
+ },
+ {
+ "context": "!Terminal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-c": "collab_panel::ToggleFocus"
+ }
+ },
+ {
+ "context": "!ContextEditor > Editor && mode == full",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-enter": "editor::OpenExcerpts",
+ "shift-enter": "editor::ExpandExcerpts",
+ "ctrl-alt-enter": "editor::OpenExcerptsSplit",
+ "ctrl-shift-e": "pane::RevealInProjectPanel",
+ "ctrl-f8": "editor::GoToHunk",
+ "ctrl-shift-f8": "editor::GoToPreviousHunk",
+ "ctrl-enter": "assistant::InlineAssist",
+ "ctrl-shift-;": "editor::ToggleInlayHints"
+ }
+ },
+ {
+ "context": "PromptEditor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-[": "agent::CyclePreviousInlineAssist",
+ "ctrl-]": "agent::CycleNextInlineAssist",
+ "shift-alt-e": "agent::RemoveAllContext"
+ }
+ },
+ {
+ "context": "Prompt",
+ "use_key_equivalents": true,
+ "bindings": {
+ "left": "menu::SelectPrevious",
+ "right": "menu::SelectNext",
+ "h": "menu::SelectPrevious",
+ "l": "menu::SelectNext"
+ }
+ },
+ {
+ "context": "ProjectSearchBar && !in_replace",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "project_search::SearchInNew"
+ }
+ },
+ {
+ "context": "OutlinePanel && not_editing",
+ "use_key_equivalents": true,
+ "bindings": {
+ "left": "outline_panel::CollapseSelectedEntry",
+ "right": "outline_panel::ExpandSelectedEntry",
+ "shift-alt-c": "outline_panel::CopyPath",
+ "ctrl-shift-alt-c": "workspace::CopyRelativePath",
+ "ctrl-alt-r": "outline_panel::RevealInFileManager",
+ "space": "outline_panel::OpenSelectedEntry",
+ "shift-down": "menu::SelectNext",
+ "shift-up": "menu::SelectPrevious",
+ "alt-enter": "editor::OpenExcerpts",
+ "ctrl-alt-enter": "editor::OpenExcerptsSplit"
+ }
+ },
+ {
+ "context": "ProjectPanel",
+ "use_key_equivalents": true,
+ "bindings": {
+ "left": "project_panel::CollapseSelectedEntry",
+ "right": "project_panel::ExpandSelectedEntry",
+ "ctrl-n": "project_panel::NewFile",
+ "alt-n": "project_panel::NewDirectory",
+ "ctrl-x": "project_panel::Cut",
+ "ctrl-insert": "project_panel::Copy",
+ "ctrl-c": "project_panel::Copy",
+ "shift-insert": "project_panel::Paste",
+ "ctrl-v": "project_panel::Paste",
+ "shift-alt-c": "project_panel::CopyPath",
+ "ctrl-k ctrl-shift-c": "workspace::CopyRelativePath",
+ "enter": "project_panel::Rename",
+ "f2": "project_panel::Rename",
+ "backspace": ["project_panel::Trash", { "skip_prompt": false }],
+ "delete": ["project_panel::Trash", { "skip_prompt": false }],
+ "shift-delete": ["project_panel::Delete", { "skip_prompt": false }],
+ "ctrl-backspace": ["project_panel::Delete", { "skip_prompt": false }],
+ "ctrl-delete": ["project_panel::Delete", { "skip_prompt": false }],
+ "ctrl-alt-r": "project_panel::RevealInFileManager",
+ "ctrl-shift-enter": "project_panel::OpenWithSystem",
+ "alt-d": "project_panel::CompareMarkedFiles",
+ "ctrl-k ctrl-shift-f": "project_panel::NewSearchInDirectory",
+ "shift-down": "menu::SelectNext",
+ "shift-up": "menu::SelectPrevious",
+ "escape": "menu::Cancel"
+ }
+ },
+ {
+ "context": "ProjectPanel && not_editing",
+ "use_key_equivalents": true,
+ "bindings": {
+ "space": "project_panel::Open"
+ }
+ },
+ {
+ "context": "GitPanel && ChangesList",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "menu::SelectPrevious",
+ "down": "menu::SelectNext",
+ "enter": "menu::Confirm",
+ "alt-y": "git::StageFile",
+ "shift-alt-y": "git::UnstageFile",
+ "space": "git::ToggleStaged",
+ "shift-space": "git::StageRange",
+ "tab": "git_panel::FocusEditor",
+ "shift-tab": "git_panel::FocusEditor",
+ "escape": "git_panel::ToggleFocus",
+ "alt-enter": "menu::SecondaryConfirm",
+ "delete": ["git::RestoreFile", { "skip_prompt": false }],
+ "backspace": ["git::RestoreFile", { "skip_prompt": false }],
+ "shift-delete": ["git::RestoreFile", { "skip_prompt": false }],
+ "ctrl-backspace": ["git::RestoreFile", { "skip_prompt": false }],
+ "ctrl-delete": ["git::RestoreFile", { "skip_prompt": false }]
+ }
+ },
+ {
+ "context": "GitPanel && CommitEditor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "git::Cancel"
+ }
+ },
+ {
+ "context": "GitCommit > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel",
+ "enter": "editor::Newline",
+ "ctrl-enter": "git::Commit",
+ "ctrl-shift-enter": "git::Amend",
+ "alt-l": "git::GenerateCommitMessage"
+ }
+ },
+ {
+ "context": "GitPanel",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-g ctrl-g": "git::Fetch",
+ "ctrl-g up": "git::Push",
+ "ctrl-g down": "git::Pull",
+ "ctrl-g shift-up": "git::ForcePush",
+ "ctrl-g d": "git::Diff",
+ "ctrl-g backspace": "git::RestoreTrackedFiles",
+ "ctrl-g shift-backspace": "git::TrashUntrackedFiles",
+ "ctrl-space": "git::StageAll",
+ "ctrl-shift-space": "git::UnstageAll",
+ "ctrl-enter": "git::Commit",
+ "ctrl-shift-enter": "git::Amend"
+ }
+ },
+ {
+ "context": "GitDiff > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "git::Commit",
+ "ctrl-shift-enter": "git::Amend",
+ "ctrl-space": "git::StageAll",
+ "ctrl-shift-space": "git::UnstageAll"
+ }
+ },
+ {
+ "context": "AskPass > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "menu::Confirm"
+ }
+ },
+ {
+ "context": "CommitEditor > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "git_panel::FocusChanges",
+ "tab": "git_panel::FocusChanges",
+ "shift-tab": "git_panel::FocusChanges",
+ "enter": "editor::Newline",
+ "ctrl-enter": "git::Commit",
+ "ctrl-shift-enter": "git::Amend",
+ "alt-up": "git_panel::FocusChanges",
+ "alt-l": "git::GenerateCommitMessage"
+ }
+ },
+ {
+ "context": "DebugPanel",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-t": "debugger::ToggleThreadPicker",
+ "ctrl-i": "debugger::ToggleSessionPicker",
+ "shift-alt-escape": "debugger::ToggleExpandItem"
+ }
+ },
+ {
+ "context": "VariableList",
+ "use_key_equivalents": true,
+ "bindings": {
+ "left": "variable_list::CollapseSelectedEntry",
+ "right": "variable_list::ExpandSelectedEntry",
+ "enter": "variable_list::EditVariable",
+ "ctrl-c": "variable_list::CopyVariableValue",
+ "ctrl-alt-c": "variable_list::CopyVariableName",
+ "delete": "variable_list::RemoveWatch",
+ "backspace": "variable_list::RemoveWatch",
+ "alt-enter": "variable_list::AddWatch"
+ }
+ },
+ {
+ "context": "BreakpointList",
+ "use_key_equivalents": true,
+ "bindings": {
+ "space": "debugger::ToggleEnableBreakpoint",
+ "backspace": "debugger::UnsetBreakpoint",
+ "left": "debugger::PreviousBreakpointProperty",
+ "right": "debugger::NextBreakpointProperty"
+ }
+ },
+ {
+ "context": "CollabPanel && not_editing",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-backspace": "collab_panel::Remove",
+ "space": "menu::Confirm"
+ }
+ },
+ {
+ "context": "CollabPanel",
+ "use_key_equivalents": true,
+ "bindings": {
+ "alt-up": "collab_panel::MoveChannelUp",
+ "alt-down": "collab_panel::MoveChannelDown",
+ "alt-enter": "collab_panel::OpenSelectedChannelNotes"
+ }
+ },
+ {
+ "context": "(CollabPanel && editing) > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "space": "collab_panel::InsertSpace"
+ }
+ },
+ {
+ "context": "ChannelModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "tab": "channel_modal::ToggleMode"
+ }
+ },
+ {
+ "context": "Picker > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel",
+ "up": "menu::SelectPrevious",
+ "down": "menu::SelectNext",
+ "tab": "picker::ConfirmCompletion",
+ "alt-enter": ["picker::ConfirmInput", { "secondary": false }]
+ }
+ },
+ {
+ "context": "ChannelModal > Picker > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "tab": "channel_modal::ToggleMode"
+ }
+ },
+ {
+ "context": "ToolchainSelector",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-a": "toolchain::AddToolchain"
+ }
+ },
+ {
+ "context": "FileFinder || (FileFinder > Picker > Editor)",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-p": "file_finder::Toggle",
+ "ctrl-shift-a": "file_finder::ToggleSplitMenu",
+ "ctrl-shift-i": "file_finder::ToggleFilterMenu"
+ }
+ },
+ {
+ "context": "FileFinder || (FileFinder > Picker > Editor) || (FileFinder > Picker > menu)",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-p": "file_finder::SelectPrevious",
+ "ctrl-j": "pane::SplitDown",
+ "ctrl-k": "pane::SplitUp",
+ "ctrl-h": "pane::SplitLeft",
+ "ctrl-l": "pane::SplitRight"
+ }
+ },
+ {
+ "context": "TabSwitcher",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-tab": "menu::SelectPrevious",
+ "ctrl-up": "menu::SelectPrevious",
+ "ctrl-down": "menu::SelectNext",
+ "ctrl-backspace": "tab_switcher::CloseSelectedItem"
+ }
+ },
+ {
+ "context": "StashList || (StashList > Picker > Editor)",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-shift-backspace": "stash_picker::DropStashItem",
+ "ctrl-shift-v": "stash_picker::ShowStashItem"
+ }
+ },
+ {
+ "context": "Terminal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-alt-space": "terminal::ShowCharacterPalette",
+ "ctrl-insert": "terminal::Copy",
+ "ctrl-shift-c": "terminal::Copy",
+ "shift-insert": "terminal::Paste",
+ "ctrl-v": "terminal::Paste",
+ "ctrl-shift-v": "terminal::Paste",
+ "ctrl-enter": "assistant::InlineAssist",
+ "alt-b": ["terminal::SendText", "\u001bb"],
+ "alt-f": ["terminal::SendText", "\u001bf"],
+ "alt-.": ["terminal::SendText", "\u001b."],
+ "ctrl-delete": ["terminal::SendText", "\u001bd"],
+ "ctrl-n": "workspace::NewTerminal",
+ // Overrides for conflicting keybindings
+ "ctrl-b": ["terminal::SendKeystroke", "ctrl-b"],
+ "ctrl-c": ["terminal::SendKeystroke", "ctrl-c"],
+ "ctrl-e": ["terminal::SendKeystroke", "ctrl-e"],
+ "ctrl-o": ["terminal::SendKeystroke", "ctrl-o"],
+ "ctrl-w": ["terminal::SendKeystroke", "ctrl-w"],
+ "ctrl-backspace": ["terminal::SendKeystroke", "ctrl-w"],
+ "ctrl-shift-a": "editor::SelectAll",
+ "ctrl-shift-f": "buffer_search::Deploy",
+ "ctrl-shift-l": "terminal::Clear",
+ "ctrl-shift-w": "pane::CloseActiveItem",
+ "up": ["terminal::SendKeystroke", "up"],
+ "pageup": ["terminal::SendKeystroke", "pageup"],
+ "down": ["terminal::SendKeystroke", "down"],
+ "pagedown": ["terminal::SendKeystroke", "pagedown"],
+ "escape": ["terminal::SendKeystroke", "escape"],
+ "enter": ["terminal::SendKeystroke", "enter"],
+ "shift-pageup": "terminal::ScrollPageUp",
+ "shift-pagedown": "terminal::ScrollPageDown",
+ "shift-up": "terminal::ScrollLineUp",
+ "shift-down": "terminal::ScrollLineDown",
+ "shift-home": "terminal::ScrollToTop",
+ "shift-end": "terminal::ScrollToBottom",
+ "ctrl-shift-space": "terminal::ToggleViMode",
+ "ctrl-shift-r": "terminal::RerunTask",
+ "ctrl-alt-r": "terminal::RerunTask",
+ "alt-t": "terminal::RerunTask",
+ "ctrl-shift-5": "pane::SplitRight"
+ }
+ },
+ {
+ "context": "Terminal && selection",
+ "bindings": {
+ "ctrl-c": "terminal::Copy"
+ }
+ },
+ {
+ "context": "ZedPredictModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel"
+ }
+ },
+ {
+ "context": "ConfigureContextServerModal > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel",
+ "enter": "editor::Newline",
+ "ctrl-enter": "menu::Confirm"
+ }
+ },
+ {
+ "context": "ContextServerToolsModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel"
+ }
+ },
+ {
+ "context": "OnboardingAiConfigurationModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "escape": "menu::Cancel"
+ }
+ },
+ {
+ "context": "Diagnostics",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh"
+ }
+ },
+ {
+ "context": "DebugConsole > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "menu::Confirm",
+ "alt-enter": "console::WatchExpression"
+ }
+ },
+ {
+ "context": "RunModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-tab": "pane::ActivateNextItem",
+ "ctrl-shift-tab": "pane::ActivatePreviousItem"
+ }
+ },
+ {
+ "context": "MarkdownPreview",
+ "use_key_equivalents": true,
+ "bindings": {
+ "pageup": "markdown::MovePageUp",
+ "pagedown": "markdown::MovePageDown"
+ }
+ },
+ {
+ "context": "KeymapEditor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-f": "search::FocusSearch",
+ "alt-f": "keymap_editor::ToggleKeystrokeSearch",
+ "alt-c": "keymap_editor::ToggleConflictFilter",
+ "enter": "keymap_editor::EditBinding",
+ "alt-enter": "keymap_editor::CreateBinding",
+ "ctrl-c": "keymap_editor::CopyAction",
+ "ctrl-shift-c": "keymap_editor::CopyContext",
+ "ctrl-t": "keymap_editor::ShowMatchingKeybinds"
+ }
+ },
+ {
+ "context": "KeystrokeInput",
+ "use_key_equivalents": true,
+ "bindings": {
+ "enter": "keystroke_input::StartRecording",
+ "escape escape escape": "keystroke_input::StopRecording",
+ "delete": "keystroke_input::ClearKeystrokes"
+ }
+ },
+ {
+ "context": "KeybindEditorModal",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "menu::Confirm",
+ "escape": "menu::Cancel"
+ }
+ },
+ {
+ "context": "KeybindEditorModal > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "menu::SelectPrevious",
+ "down": "menu::SelectNext"
+ }
+ },
+ {
+ "context": "Onboarding",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-enter": "onboarding::Finish",
+ "alt-shift-l": "onboarding::SignIn",
+ "shift-alt-a": "onboarding::OpenAccount"
+ }
+ },
+ {
+ "context": "SettingsWindow",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-w": "workspace::CloseWindow",
+ "escape": "workspace::CloseWindow",
+ "ctrl-m": "settings_editor::Minimize",
+ "ctrl-f": "search::FocusSearch",
+ "left": "settings_editor::ToggleFocusNav",
+ "ctrl-shift-e": "settings_editor::ToggleFocusNav",
+ // todo(settings_ui): cut this down based on the max files and overflow UI
+ "ctrl-1": ["settings_editor::FocusFile", 0],
+ "ctrl-2": ["settings_editor::FocusFile", 1],
+ "ctrl-3": ["settings_editor::FocusFile", 2],
+ "ctrl-4": ["settings_editor::FocusFile", 3],
+ "ctrl-5": ["settings_editor::FocusFile", 4],
+ "ctrl-6": ["settings_editor::FocusFile", 5],
+ "ctrl-7": ["settings_editor::FocusFile", 6],
+ "ctrl-8": ["settings_editor::FocusFile", 7],
+ "ctrl-9": ["settings_editor::FocusFile", 8],
+ "ctrl-0": ["settings_editor::FocusFile", 9],
+ "ctrl-pageup": "settings_editor::FocusPreviousFile",
+ "ctrl-pagedown": "settings_editor::FocusNextFile"
+ }
+ },
+ {
+ "context": "StashDiff > Editor",
+ "use_key_equivalents": true,
+ "bindings": {
+ "ctrl-space": "git::ApplyCurrentStash",
+ "ctrl-shift-space": "git::PopCurrentStash",
+ "ctrl-shift-backspace": "git::DropCurrentStash"
+ }
+ },
+ {
+ "context": "SettingsWindow > NavigationMenu",
+ "use_key_equivalents": true,
+ "bindings": {
+ "up": "settings_editor::FocusPreviousNavEntry",
+ "shift-tab": "settings_editor::FocusPreviousNavEntry",
+ "down": "settings_editor::FocusNextNavEntry",
+ "tab": "settings_editor::FocusNextNavEntry",
+ "right": "settings_editor::ExpandNavEntry",
+ "left": "settings_editor::CollapseNavEntry",
+ "pageup": "settings_editor::FocusPreviousRootNavEntry",
+ "pagedown": "settings_editor::FocusNextRootNavEntry",
+ "home": "settings_editor::FocusFirstNavEntry",
+ "end": "settings_editor::FocusLastNavEntry"
+ }
+ },
+ {
+ "context": "Zeta2Feedback > Editor",
+ "bindings": {
+ "enter": "editor::Newline",
+ "ctrl-enter up": "dev::Zeta2RatePredictionPositive",
+ "ctrl-enter down": "dev::Zeta2RatePredictionNegative"
+ }
+ },
+ {
+ "context": "Zeta2Context > Editor",
+ "bindings": {
+ "alt-left": "dev::Zeta2ContextGoBack",
+ "alt-right": "dev::Zeta2ContextGoForward"
+ }
+ }
+]
diff --git a/assets/keymaps/linux/atom.json b/assets/keymaps/linux/atom.json
index 86ee068b06ef38ccec8215e4296c718dd873c824..98992b19fac72055807063edae8b7b23652062d3 100644
--- a/assets/keymaps/linux/atom.json
+++ b/assets/keymaps/linux/atom.json
@@ -24,8 +24,8 @@
"ctrl-<": "editor::ScrollCursorCenter", // editor:scroll-to-cursor
"f3": ["editor::SelectNext", { "replace_newest": true }], // find-and-replace:find-next
"shift-f3": ["editor::SelectPrevious", { "replace_newest": true }], //find-and-replace:find-previous
- "alt-shift-down": "editor::AddSelectionBelow", // editor:add-selection-below
- "alt-shift-up": "editor::AddSelectionAbove", // editor:add-selection-above
+ "alt-shift-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": true }], // editor:add-selection-below
+ "alt-shift-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": true }], // editor:add-selection-above
"ctrl-j": "editor::JoinLines", // editor:join-lines
"ctrl-shift-d": "editor::DuplicateLineDown", // editor:duplicate-lines
"ctrl-up": "editor::MoveLineUp", // editor:move-line-up
diff --git a/assets/keymaps/linux/cursor.json b/assets/keymaps/linux/cursor.json
index 1c381b0cf05531e7fd5743d71be1b4d662bb4c0d..4d2d13a90d96c31f72b1bb0ccc74608f81004eda 100644
--- a/assets/keymaps/linux/cursor.json
+++ b/assets/keymaps/linux/cursor.json
@@ -17,8 +17,8 @@
"bindings": {
"ctrl-i": "agent::ToggleFocus",
"ctrl-shift-i": "agent::ToggleFocus",
- "ctrl-shift-l": "assistant::QuoteSelection", // In cursor uses "Ask" mode
- "ctrl-l": "assistant::QuoteSelection", // In cursor uses "Agent" mode
+ "ctrl-shift-l": "agent::AddSelectionToThread", // In cursor uses "Ask" mode
+ "ctrl-l": "agent::AddSelectionToThread", // In cursor uses "Agent" mode
"ctrl-k": "assistant::InlineAssist",
"ctrl-shift-k": "assistant::InsertIntoEditor"
}
diff --git a/assets/keymaps/linux/emacs.json b/assets/keymaps/linux/emacs.json
index 0ff3796f03d85affdae88d009e88e73516ba385a..c5cf22c81220bf286187252394f8fde26bdd6509 100755
--- a/assets/keymaps/linux/emacs.json
+++ b/assets/keymaps/linux/emacs.json
@@ -8,11 +8,23 @@
"ctrl-g": "menu::Cancel"
}
},
+ {
+ // Workaround to avoid falling back to default bindings.
+ // Unbind so Zed ignores these keys and lets emacs handle them.
+ // NOTE: must be declared before the `Editor` override.
+ // NOTE: in macos the 'ctrl-x' 'ctrl-p' and 'ctrl-n' rebindings are not needed, since they default to 'cmd'.
+ "context": "Editor",
+ "bindings": {
+ "ctrl-g": null, // currently activates `go_to_line::Toggle` when there is nothing to cancel
+ "ctrl-x": null, // currently activates `editor::Cut` if no following key is pressed for 1 second
+ "ctrl-p": null, // currently activates `file_finder::Toggle` when the cursor is on the first character of the buffer
+ "ctrl-n": null // currently activates `workspace::NewFile` when the cursor is on the last character of the buffer
+ }
+ },
{
"context": "Editor",
"bindings": {
"ctrl-g": "editor::Cancel",
- "ctrl-x b": "tab_switcher::Toggle", // switch-to-buffer
"alt-g g": "go_to_line::Toggle", // goto-line
"alt-g alt-g": "go_to_line::Toggle", // goto-line
"ctrl-space": "editor::SetMark", // set-mark
@@ -29,8 +41,10 @@
"shift-home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": false }], // move-beginning-of-line
"shift-end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": false }], // move-end-of-line
"alt-m": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": false, "stop_at_indent": true }], // back-to-indentation
- "alt-f": "editor::MoveToNextSubwordEnd", // forward-word
- "alt-b": "editor::MoveToPreviousSubwordStart", // backward-word
+ "alt-left": "editor::MoveToPreviousWordStart", // left-word
+ "alt-right": "editor::MoveToNextWordEnd", // right-word
+ "alt-f": "editor::MoveToNextWordEnd", // forward-word
+ "alt-b": "editor::MoveToPreviousWordStart", // backward-word
"alt-u": "editor::ConvertToUpperCase", // upcase-word
"alt-l": "editor::ConvertToLowerCase", // downcase-word
"alt-c": "editor::ConvertToUpperCamelCase", // capitalize-word
@@ -38,10 +52,13 @@
"alt-;": ["editor::ToggleComments", { "advance_downwards": false }],
"ctrl-x ctrl-;": "editor::ToggleComments",
"alt-.": "editor::GoToDefinition", // xref-find-definitions
+ "alt-?": "editor::FindAllReferences", // xref-find-references
"alt-,": "pane::GoBack", // xref-pop-marker-stack
"ctrl-x h": "editor::SelectAll", // mark-whole-buffer
"ctrl-d": "editor::Delete", // delete-char
- "alt-d": "editor::DeleteToNextWordEnd", // kill-word
+ "alt-d": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }], // kill-word
+ "alt-backspace": "editor::DeleteToPreviousWordStart", // backward-kill-word
+ "alt-delete": "editor::DeleteToPreviousWordStart", // backward-kill-word
"ctrl-k": "editor::KillRingCut", // kill-line
"ctrl-w": "editor::Cut", // kill-region
"alt-w": "editor::Copy", // kill-ring-save
@@ -51,14 +68,19 @@
"ctrl-x u": "editor::Undo", // undo
"alt-{": "editor::MoveToStartOfParagraph", // backward-paragraph
"alt-}": "editor::MoveToEndOfParagraph", // forward-paragraph
+ "ctrl-up": "editor::MoveToStartOfParagraph", // backward-paragraph
+ "ctrl-down": "editor::MoveToEndOfParagraph", // forward-paragraph
"ctrl-v": "editor::MovePageDown", // scroll-up
"alt-v": "editor::MovePageUp", // scroll-down
"ctrl-x [": "editor::MoveToBeginning", // beginning-of-buffer
"ctrl-x ]": "editor::MoveToEnd", // end-of-buffer
"alt-<": "editor::MoveToBeginning", // beginning-of-buffer
"alt->": "editor::MoveToEnd", // end-of-buffer
+ "ctrl-home": "editor::MoveToBeginning", // beginning-of-buffer
+ "ctrl-end": "editor::MoveToEnd", // end-of-buffer
"ctrl-l": "editor::ScrollCursorCenterTopBottom", // recenter-top-bottom
"ctrl-s": "buffer_search::Deploy", // isearch-forward
+ "ctrl-r": "buffer_search::Deploy", // isearch-backward
"alt-^": "editor::JoinLines", // join-line
"alt-q": "editor::Rewrap" // fill-paragraph
}
@@ -84,10 +106,19 @@
"end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": false }],
"ctrl-a": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": false }],
"ctrl-e": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": false }],
+ "alt-m": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": false, "stop_at_indent": true }],
"alt-f": "editor::SelectToNextWordEnd",
- "alt-b": "editor::SelectToPreviousSubwordStart",
+ "alt-b": "editor::SelectToPreviousWordStart",
+ "alt-{": "editor::SelectToStartOfParagraph",
+ "alt-}": "editor::SelectToEndOfParagraph",
+ "ctrl-up": "editor::SelectToStartOfParagraph",
+ "ctrl-down": "editor::SelectToEndOfParagraph",
+ "ctrl-x [": "editor::SelectToBeginning",
+ "ctrl-x ]": "editor::SelectToEnd",
"alt-<": "editor::SelectToBeginning",
"alt->": "editor::SelectToEnd",
+ "ctrl-home": "editor::SelectToBeginning",
+ "ctrl-end": "editor::SelectToEnd",
"ctrl-g": "editor::Cancel"
}
},
@@ -105,15 +136,28 @@
"ctrl-n": "editor::SignatureHelpNext"
}
},
+ // Example setting for using emacs-style tab
+ // (i.e. indent the current line / selection or perform symbol completion depending on context)
+ // {
+ // "context": "Editor && !showing_code_actions && !showing_completions",
+ // "bindings": {
+ // "tab": "editor::AutoIndent" // indent-for-tab-command
+ // }
+ // },
{
"context": "Workspace",
"bindings": {
+ "alt-x": "command_palette::Toggle", // execute-extended-command
+ "ctrl-x b": "tab_switcher::Toggle", // switch-to-buffer
+ "ctrl-x ctrl-b": "tab_switcher::Toggle", // list-buffers
+ // "ctrl-x ctrl-c": "workspace::CloseWindow" // in case you only want to exit the current Zed instance
"ctrl-x ctrl-c": "zed::Quit", // save-buffers-kill-terminal
"ctrl-x 5 0": "workspace::CloseWindow", // delete-frame
"ctrl-x 5 2": "workspace::NewWindow", // make-frame-command
"ctrl-x o": "workspace::ActivateNextPane", // other-window
"ctrl-x k": "pane::CloseActiveItem", // kill-buffer
"ctrl-x 0": "pane::CloseActiveItem", // delete-window
+ // "ctrl-x 1": "pane::JoinAll", // in case you prefer to delete the splits but keep the buffers open
"ctrl-x 1": "pane::CloseOtherItems", // delete-other-windows
"ctrl-x 2": "pane::SplitDown", // split-window-below
"ctrl-x 3": "pane::SplitRight", // split-window-right
@@ -124,10 +168,19 @@
}
},
{
- // Workaround to enable using emacs in the Zed terminal.
+ // Workaround to enable using native emacs from the Zed terminal.
// Unbind so Zed ignores these keys and lets emacs handle them.
+ // NOTE:
+ // "terminal::SendKeystroke" only works for a single key stroke (e.g. ctrl-x),
+ // so override with null for compound sequences (e.g. ctrl-x ctrl-c).
"context": "Terminal",
"bindings": {
+ // If you want to perfect your emacs-in-zed setup, also consider the following.
+ // You may need to enable "option_as_meta" from the Zed settings for "alt-x" to work.
+ // "alt-x": ["terminal::SendKeystroke", "alt-x"],
+ // "ctrl-x": ["terminal::SendKeystroke", "ctrl-x"],
+ // "ctrl-n": ["terminal::SendKeystroke", "ctrl-n"],
+ // ...
"ctrl-x ctrl-c": null, // save-buffers-kill-terminal
"ctrl-x ctrl-f": null, // find-file
"ctrl-x ctrl-s": null, // save-buffer
diff --git a/assets/keymaps/linux/jetbrains.json b/assets/keymaps/linux/jetbrains.json
index 3df1243feda88680a4ce03cd0b25ab9ea9a36edd..cf28c43dbd7f8335f30ef7702e584bea5c0ba5e0 100644
--- a/assets/keymaps/linux/jetbrains.json
+++ b/assets/keymaps/linux/jetbrains.json
@@ -1,7 +1,7 @@
[
{
"bindings": {
- "ctrl-alt-s": "zed::OpenSettings",
+ "ctrl-alt-s": "zed::OpenSettingsFile",
"ctrl-{": "pane::ActivatePreviousItem",
"ctrl-}": "pane::ActivateNextItem",
"shift-escape": null, // Unmap workspace::zoom
@@ -91,7 +91,7 @@
{
"context": "Workspace",
"bindings": {
- "ctrl-shift-f12": "workspace::CloseAllDocks",
+ "ctrl-shift-f12": "workspace::ToggleAllDocks",
"ctrl-shift-r": ["pane::DeploySearch", { "replace_enabled": true }],
"alt-shift-f10": "task::Spawn",
"ctrl-e": "file_finder::Toggle",
@@ -125,7 +125,7 @@
{
"context": "Workspace || Editor",
"bindings": {
- "alt-f12": "terminal_panel::ToggleFocus",
+ "alt-f12": "terminal_panel::Toggle",
"ctrl-shift-k": "git::Push"
}
},
diff --git a/assets/keymaps/linux/sublime_text.json b/assets/keymaps/linux/sublime_text.json
index ece9d69dd102c019072678373e9328f302d4cb07..eefd59e5bd1aa48125d0c6e3d662f3cb4e270be7 100644
--- a/assets/keymaps/linux/sublime_text.json
+++ b/assets/keymaps/linux/sublime_text.json
@@ -28,8 +28,8 @@
{
"context": "Editor",
"bindings": {
- "ctrl-alt-up": "editor::AddSelectionAbove",
- "ctrl-alt-down": "editor::AddSelectionBelow",
+ "ctrl-alt-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": false }],
+ "ctrl-alt-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": false }],
"ctrl-shift-up": "editor::MoveLineUp",
"ctrl-shift-down": "editor::MoveLineDown",
"ctrl-shift-m": "editor::SelectLargerSyntaxNode",
@@ -50,8 +50,8 @@
"ctrl-k ctrl-u": "editor::ConvertToUpperCase",
"ctrl-k ctrl-l": "editor::ConvertToLowerCase",
"shift-alt-m": "markdown::OpenPreviewToTheSide",
- "ctrl-backspace": "editor::DeleteToPreviousWordStart",
- "ctrl-delete": "editor::DeleteToNextWordEnd",
+ "ctrl-backspace": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "ctrl-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
"alt-right": "editor::MoveToNextSubwordEnd",
"alt-left": "editor::MoveToPreviousSubwordStart",
"alt-shift-right": "editor::SelectToNextSubwordEnd",
diff --git a/assets/keymaps/macos/atom.json b/assets/keymaps/macos/atom.json
index df48e51767e54524c6645630d1fcb6b1cdeba599..ca015b667faa05db53d8fdc3bd82352d9bcc62aa 100644
--- a/assets/keymaps/macos/atom.json
+++ b/assets/keymaps/macos/atom.json
@@ -25,8 +25,8 @@
"cmd-<": "editor::ScrollCursorCenter",
"cmd-g": ["editor::SelectNext", { "replace_newest": true }],
"cmd-shift-g": ["editor::SelectPrevious", { "replace_newest": true }],
- "ctrl-shift-down": "editor::AddSelectionBelow",
- "ctrl-shift-up": "editor::AddSelectionAbove",
+ "ctrl-shift-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": true }],
+ "ctrl-shift-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": true }],
"alt-enter": "editor::Newline",
"cmd-shift-d": "editor::DuplicateLineDown",
"ctrl-cmd-up": "editor::MoveLineUp",
diff --git a/assets/keymaps/macos/cursor.json b/assets/keymaps/macos/cursor.json
index fdf9c437cf395c074e42ae9c9dc53c1aa6ff66c2..97abc7dd819485850107eca6762fc1ed60ec0515 100644
--- a/assets/keymaps/macos/cursor.json
+++ b/assets/keymaps/macos/cursor.json
@@ -17,8 +17,8 @@
"bindings": {
"cmd-i": "agent::ToggleFocus",
"cmd-shift-i": "agent::ToggleFocus",
- "cmd-shift-l": "assistant::QuoteSelection", // In cursor uses "Ask" mode
- "cmd-l": "assistant::QuoteSelection", // In cursor uses "Agent" mode
+ "cmd-shift-l": "agent::AddSelectionToThread", // In cursor uses "Ask" mode
+ "cmd-l": "agent::AddSelectionToThread", // In cursor uses "Agent" mode
"cmd-k": "assistant::InlineAssist",
"cmd-shift-k": "assistant::InsertIntoEditor"
}
diff --git a/assets/keymaps/macos/emacs.json b/assets/keymaps/macos/emacs.json
index 0ff3796f03d85affdae88d009e88e73516ba385a..ea831c0c059ea082d002f3af01b8d97be9e86616 100755
--- a/assets/keymaps/macos/emacs.json
+++ b/assets/keymaps/macos/emacs.json
@@ -4,15 +4,24 @@
// from the command palette.
[
{
+ "context": "!GitPanel",
"bindings": {
"ctrl-g": "menu::Cancel"
}
},
+ {
+ // Workaround to avoid falling back to default bindings.
+ // Unbind so Zed ignores these keys and lets emacs handle them.
+ // NOTE: must be declared before the `Editor` override.
+ "context": "Editor",
+ "bindings": {
+ "ctrl-g": null // currently activates `go_to_line::Toggle` when there is nothing to cancel
+ }
+ },
{
"context": "Editor",
"bindings": {
"ctrl-g": "editor::Cancel",
- "ctrl-x b": "tab_switcher::Toggle", // switch-to-buffer
"alt-g g": "go_to_line::Toggle", // goto-line
"alt-g alt-g": "go_to_line::Toggle", // goto-line
"ctrl-space": "editor::SetMark", // set-mark
@@ -29,8 +38,10 @@
"shift-home": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": false }], // move-beginning-of-line
"shift-end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": false }], // move-end-of-line
"alt-m": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": false, "stop_at_indent": true }], // back-to-indentation
- "alt-f": "editor::MoveToNextSubwordEnd", // forward-word
- "alt-b": "editor::MoveToPreviousSubwordStart", // backward-word
+ "alt-left": "editor::MoveToPreviousWordStart", // left-word
+ "alt-right": "editor::MoveToNextWordEnd", // right-word
+ "alt-f": "editor::MoveToNextWordEnd", // forward-word
+ "alt-b": "editor::MoveToPreviousWordStart", // backward-word
"alt-u": "editor::ConvertToUpperCase", // upcase-word
"alt-l": "editor::ConvertToLowerCase", // downcase-word
"alt-c": "editor::ConvertToUpperCamelCase", // capitalize-word
@@ -38,10 +49,13 @@
"alt-;": ["editor::ToggleComments", { "advance_downwards": false }],
"ctrl-x ctrl-;": "editor::ToggleComments",
"alt-.": "editor::GoToDefinition", // xref-find-definitions
+ "alt-?": "editor::FindAllReferences", // xref-find-references
"alt-,": "pane::GoBack", // xref-pop-marker-stack
"ctrl-x h": "editor::SelectAll", // mark-whole-buffer
"ctrl-d": "editor::Delete", // delete-char
- "alt-d": "editor::DeleteToNextWordEnd", // kill-word
+ "alt-d": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }], // kill-word
+ "alt-backspace": "editor::DeleteToPreviousWordStart", // backward-kill-word
+ "alt-delete": "editor::DeleteToPreviousWordStart", // backward-kill-word
"ctrl-k": "editor::KillRingCut", // kill-line
"ctrl-w": "editor::Cut", // kill-region
"alt-w": "editor::Copy", // kill-ring-save
@@ -51,14 +65,19 @@
"ctrl-x u": "editor::Undo", // undo
"alt-{": "editor::MoveToStartOfParagraph", // backward-paragraph
"alt-}": "editor::MoveToEndOfParagraph", // forward-paragraph
+ "ctrl-up": "editor::MoveToStartOfParagraph", // backward-paragraph
+ "ctrl-down": "editor::MoveToEndOfParagraph", // forward-paragraph
"ctrl-v": "editor::MovePageDown", // scroll-up
"alt-v": "editor::MovePageUp", // scroll-down
"ctrl-x [": "editor::MoveToBeginning", // beginning-of-buffer
"ctrl-x ]": "editor::MoveToEnd", // end-of-buffer
"alt-<": "editor::MoveToBeginning", // beginning-of-buffer
"alt->": "editor::MoveToEnd", // end-of-buffer
+ "ctrl-home": "editor::MoveToBeginning", // beginning-of-buffer
+ "ctrl-end": "editor::MoveToEnd", // end-of-buffer
"ctrl-l": "editor::ScrollCursorCenterTopBottom", // recenter-top-bottom
"ctrl-s": "buffer_search::Deploy", // isearch-forward
+ "ctrl-r": "buffer_search::Deploy", // isearch-backward
"alt-^": "editor::JoinLines", // join-line
"alt-q": "editor::Rewrap" // fill-paragraph
}
@@ -84,10 +103,19 @@
"end": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": false }],
"ctrl-a": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": false }],
"ctrl-e": ["editor::SelectToEndOfLine", { "stop_at_soft_wraps": false }],
+ "alt-m": ["editor::SelectToBeginningOfLine", { "stop_at_soft_wraps": false, "stop_at_indent": true }],
"alt-f": "editor::SelectToNextWordEnd",
- "alt-b": "editor::SelectToPreviousSubwordStart",
+ "alt-b": "editor::SelectToPreviousWordStart",
+ "alt-{": "editor::SelectToStartOfParagraph",
+ "alt-}": "editor::SelectToEndOfParagraph",
+ "ctrl-up": "editor::SelectToStartOfParagraph",
+ "ctrl-down": "editor::SelectToEndOfParagraph",
+ "ctrl-x [": "editor::SelectToBeginning",
+ "ctrl-x ]": "editor::SelectToEnd",
"alt-<": "editor::SelectToBeginning",
"alt->": "editor::SelectToEnd",
+ "ctrl-home": "editor::SelectToBeginning",
+ "ctrl-end": "editor::SelectToEnd",
"ctrl-g": "editor::Cancel"
}
},
@@ -105,15 +133,28 @@
"ctrl-n": "editor::SignatureHelpNext"
}
},
+ // Example setting for using emacs-style tab
+ // (i.e. indent the current line / selection or perform symbol completion depending on context)
+ // {
+ // "context": "Editor && !showing_code_actions && !showing_completions",
+ // "bindings": {
+ // "tab": "editor::AutoIndent" // indent-for-tab-command
+ // }
+ // },
{
"context": "Workspace",
"bindings": {
+ "alt-x": "command_palette::Toggle", // execute-extended-command
+ "ctrl-x b": "tab_switcher::Toggle", // switch-to-buffer
+ "ctrl-x ctrl-b": "tab_switcher::Toggle", // list-buffers
+ // "ctrl-x ctrl-c": "workspace::CloseWindow" // in case you only want to exit the current Zed instance
"ctrl-x ctrl-c": "zed::Quit", // save-buffers-kill-terminal
"ctrl-x 5 0": "workspace::CloseWindow", // delete-frame
"ctrl-x 5 2": "workspace::NewWindow", // make-frame-command
"ctrl-x o": "workspace::ActivateNextPane", // other-window
"ctrl-x k": "pane::CloseActiveItem", // kill-buffer
"ctrl-x 0": "pane::CloseActiveItem", // delete-window
+ // "ctrl-x 1": "pane::JoinAll", // in case you prefer to delete the splits but keep the buffers open
"ctrl-x 1": "pane::CloseOtherItems", // delete-other-windows
"ctrl-x 2": "pane::SplitDown", // split-window-below
"ctrl-x 3": "pane::SplitRight", // split-window-right
@@ -124,10 +165,19 @@
}
},
{
- // Workaround to enable using emacs in the Zed terminal.
+ // Workaround to enable using native emacs from the Zed terminal.
// Unbind so Zed ignores these keys and lets emacs handle them.
+ // NOTE:
+ // "terminal::SendKeystroke" only works for a single key stroke (e.g. ctrl-x),
+ // so override with null for compound sequences (e.g. ctrl-x ctrl-c).
"context": "Terminal",
"bindings": {
+ // If you want to perfect your emacs-in-zed setup, also consider the following.
+ // You may need to enable "option_as_meta" from the Zed settings for "alt-x" to work.
+ // "alt-x": ["terminal::SendKeystroke", "alt-x"],
+ // "ctrl-x": ["terminal::SendKeystroke", "ctrl-x"],
+ // "ctrl-n": ["terminal::SendKeystroke", "ctrl-n"],
+ // ...
"ctrl-x ctrl-c": null, // save-buffers-kill-terminal
"ctrl-x ctrl-f": null, // find-file
"ctrl-x ctrl-s": null, // save-buffer
diff --git a/assets/keymaps/macos/jetbrains.json b/assets/keymaps/macos/jetbrains.json
index 66962811f48a429f2f5d036241c64d6549f60334..e5e5aeb0b8516285136438d40b57fb17fc9a9777 100644
--- a/assets/keymaps/macos/jetbrains.json
+++ b/assets/keymaps/macos/jetbrains.json
@@ -93,7 +93,7 @@
{
"context": "Workspace",
"bindings": {
- "cmd-shift-f12": "workspace::CloseAllDocks",
+ "cmd-shift-f12": "workspace::ToggleAllDocks",
"cmd-shift-r": ["pane::DeploySearch", { "replace_enabled": true }],
"ctrl-alt-r": "task::Spawn",
"cmd-e": "file_finder::Toggle",
@@ -127,7 +127,7 @@
{
"context": "Workspace || Editor",
"bindings": {
- "alt-f12": "terminal_panel::ToggleFocus",
+ "alt-f12": "terminal_panel::Toggle",
"cmd-shift-k": "git::Push"
}
},
diff --git a/assets/keymaps/macos/sublime_text.json b/assets/keymaps/macos/sublime_text.json
index 9fa528c75fa75061c34d767c3e9f9082c9eb2a81..d1bffca755b611d9046d4b7e794d2303835227a2 100644
--- a/assets/keymaps/macos/sublime_text.json
+++ b/assets/keymaps/macos/sublime_text.json
@@ -28,8 +28,8 @@
{
"context": "Editor",
"bindings": {
- "ctrl-shift-up": "editor::AddSelectionAbove",
- "ctrl-shift-down": "editor::AddSelectionBelow",
+ "ctrl-shift-up": ["editor::AddSelectionAbove", { "skip_soft_wrap": false }],
+ "ctrl-shift-down": ["editor::AddSelectionBelow", { "skip_soft_wrap": false }],
"cmd-ctrl-up": "editor::MoveLineUp",
"cmd-ctrl-down": "editor::MoveLineDown",
"cmd-shift-space": "editor::SelectAll",
@@ -52,8 +52,8 @@
"cmd-k cmd-l": "editor::ConvertToLowerCase",
"cmd-shift-j": "editor::JoinLines",
"shift-alt-m": "markdown::OpenPreviewToTheSide",
- "ctrl-backspace": "editor::DeleteToPreviousWordStart",
- "ctrl-delete": "editor::DeleteToNextWordEnd",
+ "ctrl-backspace": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "ctrl-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
"ctrl-right": "editor::MoveToNextSubwordEnd",
"ctrl-left": "editor::MoveToPreviousSubwordStart",
"ctrl-shift-right": "editor::SelectToNextSubwordEnd",
diff --git a/assets/keymaps/macos/textmate.json b/assets/keymaps/macos/textmate.json
index 0bd8873b1749d2423d97df480b1aadeb28fe9bab..f91f39b7f5c079f81b5fcf8e28e2092a33ff1aa4 100644
--- a/assets/keymaps/macos/textmate.json
+++ b/assets/keymaps/macos/textmate.json
@@ -21,10 +21,10 @@
{
"context": "Editor",
"bindings": {
- "alt-backspace": "editor::DeleteToPreviousWordStart",
- "alt-shift-backspace": "editor::DeleteToNextWordEnd",
- "alt-delete": "editor::DeleteToNextWordEnd",
- "alt-shift-delete": "editor::DeleteToNextWordEnd",
+ "alt-backspace": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
+ "alt-shift-backspace": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
+ "alt-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
+ "alt-shift-delete": ["editor::DeleteToNextWordEnd", { "ignore_newlines": false, "ignore_brackets": false }],
"ctrl-backspace": "editor::DeleteToPreviousSubwordStart",
"ctrl-delete": "editor::DeleteToNextSubwordEnd",
"alt-left": ["editor::MoveToPreviousWordStart", { "stop_at_soft_wraps": true }],
diff --git a/assets/keymaps/vim.json b/assets/keymaps/vim.json
index be6d34a1342b6fabe0561643c74034d3c99a04b6..d6bdff1cd02fcd0bfb31fb48d2c47a321c54de2c 100644
--- a/assets/keymaps/vim.json
+++ b/assets/keymaps/vim.json
@@ -32,34 +32,6 @@
"(": "vim::SentenceBackward",
")": "vim::SentenceForward",
"|": "vim::GoToColumn",
- "] ]": "vim::NextSectionStart",
- "] [": "vim::NextSectionEnd",
- "[ [": "vim::PreviousSectionStart",
- "[ ]": "vim::PreviousSectionEnd",
- "] m": "vim::NextMethodStart",
- "] shift-m": "vim::NextMethodEnd",
- "[ m": "vim::PreviousMethodStart",
- "[ shift-m": "vim::PreviousMethodEnd",
- "[ *": "vim::PreviousComment",
- "[ /": "vim::PreviousComment",
- "] *": "vim::NextComment",
- "] /": "vim::NextComment",
- "[ -": "vim::PreviousLesserIndent",
- "[ +": "vim::PreviousGreaterIndent",
- "[ =": "vim::PreviousSameIndent",
- "] -": "vim::NextLesserIndent",
- "] +": "vim::NextGreaterIndent",
- "] =": "vim::NextSameIndent",
- "] b": "pane::ActivateNextItem",
- "[ b": "pane::ActivatePreviousItem",
- "] shift-b": "pane::ActivateLastItem",
- "[ shift-b": ["pane::ActivateItem", 0],
- "] space": "vim::InsertEmptyLineBelow",
- "[ space": "vim::InsertEmptyLineAbove",
- "[ e": "editor::MoveLineUp",
- "] e": "editor::MoveLineDown",
- "[ f": "workspace::FollowNextCollaborator",
- "] f": "workspace::FollowNextCollaborator",
// Word motions
"w": "vim::NextWordStart",
@@ -83,10 +55,6 @@
"n": "vim::MoveToNextMatch",
"shift-n": "vim::MoveToPreviousMatch",
"%": "vim::Matching",
- "] }": ["vim::UnmatchedForward", { "char": "}" }],
- "[ {": ["vim::UnmatchedBackward", { "char": "{" }],
- "] )": ["vim::UnmatchedForward", { "char": ")" }],
- "[ (": ["vim::UnmatchedBackward", { "char": "(" }],
"f": ["vim::PushFindForward", { "before": false, "multiline": false }],
"t": ["vim::PushFindForward", { "before": true, "multiline": false }],
"shift-f": ["vim::PushFindBackward", { "after": false, "multiline": false }],
@@ -127,8 +95,6 @@
"g g": "vim::StartOfDocument",
"g h": "editor::Hover",
"g B": "editor::BlameHover",
- "g t": "pane::ActivateNextItem",
- "g shift-t": "pane::ActivatePreviousItem",
"g d": "editor::GoToDefinition",
"g shift-d": "editor::GoToDeclaration",
"g y": "editor::GoToTypeDefinition",
@@ -219,6 +185,48 @@
".": "vim::Repeat"
}
},
+ {
+ "context": "vim_mode == normal || vim_mode == visual || vim_mode == operator",
+ "bindings": {
+ "] ]": "vim::NextSectionStart",
+ "] [": "vim::NextSectionEnd",
+ "[ [": "vim::PreviousSectionStart",
+ "[ ]": "vim::PreviousSectionEnd",
+ "] m": "vim::NextMethodStart",
+ "] shift-m": "vim::NextMethodEnd",
+ "[ m": "vim::PreviousMethodStart",
+ "[ shift-m": "vim::PreviousMethodEnd",
+ "[ *": "vim::PreviousComment",
+ "[ /": "vim::PreviousComment",
+ "] *": "vim::NextComment",
+ "] /": "vim::NextComment",
+ "[ -": "vim::PreviousLesserIndent",
+ "[ +": "vim::PreviousGreaterIndent",
+ "[ =": "vim::PreviousSameIndent",
+ "] -": "vim::NextLesserIndent",
+ "] +": "vim::NextGreaterIndent",
+ "] =": "vim::NextSameIndent",
+ "] b": "pane::ActivateNextItem",
+ "[ b": "pane::ActivatePreviousItem",
+ "] shift-b": "pane::ActivateLastItem",
+ "[ shift-b": ["pane::ActivateItem", 0],
+ "] space": "vim::InsertEmptyLineBelow",
+ "[ space": "vim::InsertEmptyLineAbove",
+ "[ e": "editor::MoveLineUp",
+ "] e": "editor::MoveLineDown",
+ "[ f": "workspace::FollowNextCollaborator",
+ "] f": "workspace::FollowNextCollaborator",
+ "] }": ["vim::UnmatchedForward", { "char": "}" }],
+ "[ {": ["vim::UnmatchedBackward", { "char": "{" }],
+ "] )": ["vim::UnmatchedForward", { "char": ")" }],
+ "[ (": ["vim::UnmatchedBackward", { "char": "(" }],
+ "[ r": "vim::GoToPreviousReference",
+ "] r": "vim::GoToNextReference",
+ // tree-sitter related commands
+ "[ x": "vim::SelectLargerSyntaxNode",
+ "] x": "vim::SelectSmallerSyntaxNode"
+ }
+ },
{
"context": "vim_mode == normal",
"bindings": {
@@ -232,6 +240,7 @@
"delete": "vim::DeleteRight",
"g shift-j": "vim::JoinLinesNoWhitespace",
"y": "vim::PushYank",
+ "shift-y": "vim::YankLine",
"x": "vim::DeleteRight",
"shift-x": "vim::DeleteLeft",
"ctrl-a": "vim::Increment",
@@ -249,9 +258,6 @@
"g w": "vim::PushRewrap",
"g q": "vim::PushRewrap",
"insert": "vim::InsertBefore",
- // tree-sitter related commands
- "[ x": "vim::SelectLargerSyntaxNode",
- "] x": "vim::SelectSmallerSyntaxNode",
"] d": "editor::GoToDiagnostic",
"[ d": "editor::GoToPreviousDiagnostic",
"] c": "editor::GoToHunk",
@@ -317,10 +323,28 @@
"g w": "vim::Rewrap",
"g ?": "vim::ConvertToRot13",
// "g ?": "vim::ConvertToRot47",
- "\"": "vim::PushRegister",
- // tree-sitter related commands
- "[ x": "editor::SelectLargerSyntaxNode",
- "] x": "editor::SelectSmallerSyntaxNode"
+ "\"": "vim::PushRegister"
+ }
+ },
+ {
+ "context": "vim_mode == helix_select",
+ "bindings": {
+ "v": "vim::NormalBefore",
+ ";": "vim::HelixCollapseSelection",
+ "~": "vim::ChangeCase",
+ "ctrl-a": "vim::Increment",
+ "ctrl-x": "vim::Decrement",
+ "shift-j": "vim::JoinLines",
+ "i": "vim::InsertBefore",
+ "a": "vim::InsertAfter",
+ "p": "vim::Paste",
+ "u": "vim::Undo",
+ "r": "vim::PushReplace",
+ "s": "vim::Substitute",
+ "ctrl-pageup": "pane::ActivatePreviousItem",
+ "ctrl-pagedown": "pane::ActivateNextItem",
+ ".": "vim::Repeat",
+ "alt-.": "vim::RepeatFind"
}
},
{
@@ -337,7 +361,7 @@
"ctrl-x ctrl-z": "editor::Cancel",
"ctrl-x ctrl-e": "vim::LineDown",
"ctrl-x ctrl-y": "vim::LineUp",
- "ctrl-w": "editor::DeleteToPreviousWordStart",
+ "ctrl-w": ["editor::DeleteToPreviousWordStart", { "ignore_newlines": false, "ignore_brackets": false }],
"ctrl-u": "editor::DeleteToBeginningOfLine",
"ctrl-t": "vim::Indent",
"ctrl-d": "vim::Outdent",
@@ -354,6 +378,15 @@
"ctrl-s": "editor::ShowSignatureHelp"
}
},
+ {
+ "context": "showing_completions",
+ "bindings": {
+ "ctrl-d": "vim::ScrollDown",
+ "ctrl-u": "vim::ScrollUp",
+ "ctrl-e": "vim::LineDown",
+ "ctrl-y": "vim::LineUp"
+ }
+ },
{
"context": "(vim_mode == normal || vim_mode == helix_normal) && !menu",
"bindings": {
@@ -385,57 +418,72 @@
"bindings": {
"i": "vim::HelixInsert",
"a": "vim::HelixAppend",
- "ctrl-[": "editor::Cancel",
- ";": "vim::HelixCollapseSelection",
- ":": "command_palette::Toggle",
- "left": "vim::WrappingLeft",
- "right": "vim::WrappingRight",
+ "ctrl-[": "editor::Cancel"
+ }
+ },
+ {
+ "context": "(vim_mode == helix_normal || vim_mode == helix_select) && !menu",
+ "bindings": {
+ // Movement
"h": "vim::WrappingLeft",
+ "left": "vim::WrappingLeft",
"l": "vim::WrappingRight",
- "y": "vim::HelixYank",
- "alt-;": "vim::OtherEnd",
- "ctrl-r": "vim::Redo",
- "f": ["vim::PushFindForward", { "before": false, "multiline": true }],
+ "right": "vim::WrappingRight",
"t": ["vim::PushFindForward", { "before": true, "multiline": true }],
- "shift-f": ["vim::PushFindBackward", { "after": false, "multiline": true }],
+ "f": ["vim::PushFindForward", { "before": false, "multiline": true }],
"shift-t": ["vim::PushFindBackward", { "after": true, "multiline": true }],
+ "shift-f": ["vim::PushFindBackward", { "after": false, "multiline": true }],
+ "alt-.": "vim::RepeatFind",
+
+ // Changes
+ "shift-r": "editor::Paste",
+ "`": "vim::ConvertToLowerCase",
+ "alt-`": "vim::ConvertToUpperCase",
+ "insert": "vim::InsertBefore",
+ "shift-u": "editor::Redo",
+ "ctrl-r": "vim::Redo",
+ "y": "vim::HelixYank",
+ "p": "vim::HelixPaste",
+ "shift-p": ["vim::HelixPaste", { "before": true }],
">": "vim::Indent",
"<": "vim::Outdent",
"=": "vim::AutoIndent",
- "g u": "vim::PushLowercase",
- "g shift-u": "vim::PushUppercase",
- "g ~": "vim::PushOppositeCase",
- "g q": "vim::PushRewrap",
- "g w": "vim::PushRewrap",
- "insert": "vim::InsertBefore",
- "alt-.": "vim::RepeatFind",
+ "d": "vim::HelixDelete",
+ "c": "vim::HelixSubstitute",
+ "alt-c": "vim::HelixSubstituteNoYank",
+
+ // Selection manipulation
+ "s": "vim::HelixSelectRegex",
"alt-s": ["editor::SplitSelectionIntoLines", { "keep_selections": true }],
- // tree-sitter related commands
- "[ x": "editor::SelectLargerSyntaxNode",
- "] x": "editor::SelectSmallerSyntaxNode",
- "] d": "editor::GoToDiagnostic",
- "[ d": "editor::GoToPreviousDiagnostic",
- "] c": "editor::GoToHunk",
- "[ c": "editor::GoToPreviousHunk",
+ ";": "vim::HelixCollapseSelection",
+ "alt-;": "vim::OtherEnd",
+ ",": "vim::HelixKeepNewestSelection",
+ "shift-c": "vim::HelixDuplicateBelow",
+ "alt-shift-c": "vim::HelixDuplicateAbove",
+ "%": "editor::SelectAll",
+ "x": "vim::HelixSelectLine",
+ "shift-x": "editor::SelectLine",
+ "ctrl-c": "editor::ToggleComments",
+ "alt-o": "editor::SelectLargerSyntaxNode",
+ "alt-i": "editor::SelectSmallerSyntaxNode",
+ "alt-p": "editor::SelectPreviousSyntaxNode",
+ "alt-n": "editor::SelectNextSyntaxNode",
+
// Goto mode
- "g n": "pane::ActivateNextItem",
- "g p": "pane::ActivatePreviousItem",
- // "tab": "pane::ActivateNextItem",
- // "shift-tab": "pane::ActivatePrevItem",
- "shift-h": "pane::ActivatePreviousItem",
- "shift-l": "pane::ActivateNextItem",
- "g l": "vim::EndOfLine",
+ "g e": "vim::EndOfDocument",
"g h": "vim::StartOfLine",
+ "g l": "vim::EndOfLine",
"g s": "vim::FirstNonWhitespace", // "g s" default behavior is "space s"
- "g e": "vim::EndOfDocument",
- "g r": "editor::FindAllReferences", // zed specific
"g t": "vim::WindowTop",
"g c": "vim::WindowMiddle",
"g b": "vim::WindowBottom",
+ "g r": "editor::FindAllReferences", // zed specific
+ "g n": "pane::ActivateNextItem",
+ "shift-l": "pane::ActivateNextItem",
+ "g p": "pane::ActivatePreviousItem",
+ "shift-h": "pane::ActivatePreviousItem",
+ "g .": "vim::HelixGotoLastModification", // go to last modification
- "x": "editor::SelectLine",
- "shift-x": "editor::SelectLine",
- "%": "editor::SelectAll",
// Window mode
"space w h": "workspace::ActivatePaneLeft",
"space w l": "workspace::ActivatePaneRight",
@@ -446,6 +494,7 @@
"space w r": "pane::SplitRight",
"space w v": "pane::SplitDown",
"space w d": "pane::SplitDown",
+
// Space mode
"space f": "file_finder::Toggle",
"space k": "editor::Hover",
@@ -456,17 +505,18 @@
"space a": "editor::ToggleCodeActions",
"space h": "editor::SelectAllMatches",
"space c": "editor::ToggleComments",
- "space y": "editor::Copy",
"space p": "editor::Paste",
- // Match mode
- "m m": "vim::Matching",
- "m i w": ["workspace::SendKeystrokes", "v i w"],
- "shift-u": "editor::Redo",
- "ctrl-c": "editor::ToggleComments",
- "d": "vim::HelixDelete",
- "c": "vim::Substitute",
- "shift-c": "editor::AddSelectionBelow",
- "alt-shift-c": "editor::AddSelectionAbove"
+ "space y": "editor::Copy",
+
+ // Other
+ ":": "command_palette::Toggle",
+ "m": "vim::PushHelixMatch",
+ "]": ["vim::PushHelixNext", { "around": true }],
+ "[": ["vim::PushHelixPrevious", { "around": true }],
+ "g q": "vim::PushRewrap",
+ "g w": "vim::PushRewrap"
+ // "tab": "pane::ActivateNextItem",
+ // "shift-tab": "pane::ActivatePrevItem",
}
},
{
@@ -529,7 +579,7 @@
}
},
{
- "context": "vim_operator == a || vim_operator == i || vim_operator == cs",
+ "context": "vim_operator == a || vim_operator == i || vim_operator == cs || vim_operator == helix_next || vim_operator == helix_previous",
"bindings": {
"w": "vim::Word",
"shift-w": ["vim::Word", { "ignore_punctuation": true }],
@@ -545,18 +595,18 @@
// "q": "vim::AnyQuotes",
"q": "vim::MiniQuotes",
"|": "vim::VerticalBars",
- "(": "vim::Parentheses",
+ "(": ["vim::Parentheses", { "opening": true }],
")": "vim::Parentheses",
"b": "vim::Parentheses",
// "b": "vim::AnyBrackets",
// "b": "vim::MiniBrackets",
- "[": "vim::SquareBrackets",
+ "[": ["vim::SquareBrackets", { "opening": true }],
"]": "vim::SquareBrackets",
"r": "vim::SquareBrackets",
- "{": "vim::CurlyBrackets",
+ "{": ["vim::CurlyBrackets", { "opening": true }],
"}": "vim::CurlyBrackets",
"shift-b": "vim::CurlyBrackets",
- "<": "vim::AngleBrackets",
+ "<": ["vim::AngleBrackets", { "opening": true }],
">": "vim::AngleBrackets",
"a": "vim::Argument",
"i": "vim::IndentObj",
@@ -566,6 +616,48 @@
"e": "vim::EntireFile"
}
},
+ {
+ "context": "vim_operator == helix_m",
+ "bindings": {
+ "m": "vim::Matching"
+ }
+ },
+ {
+ "context": "vim_operator == helix_next",
+ "bindings": {
+ "z": "vim::NextSectionStart",
+ "shift-z": "vim::NextSectionEnd",
+ "*": "vim::NextComment",
+ "/": "vim::NextComment",
+ "-": "vim::NextLesserIndent",
+ "+": "vim::NextGreaterIndent",
+ "=": "vim::NextSameIndent",
+ "b": "pane::ActivateNextItem",
+ "shift-b": "pane::ActivateLastItem",
+ "x": "editor::SelectSmallerSyntaxNode",
+ "d": "editor::GoToDiagnostic",
+ "c": "editor::GoToHunk",
+ "space": "vim::InsertEmptyLineBelow"
+ }
+ },
+ {
+ "context": "vim_operator == helix_previous",
+ "bindings": {
+ "z": "vim::PreviousSectionStart",
+ "shift-z": "vim::PreviousSectionEnd",
+ "*": "vim::PreviousComment",
+ "/": "vim::PreviousComment",
+ "-": "vim::PreviousLesserIndent",
+ "+": "vim::PreviousGreaterIndent",
+ "=": "vim::PreviousSameIndent",
+ "b": "pane::ActivatePreviousItem",
+ "shift-b": ["pane::ActivateItem", 0],
+ "x": "editor::SelectLargerSyntaxNode",
+ "d": "editor::GoToPreviousDiagnostic",
+ "c": "editor::GoToPreviousHunk",
+ "space": "vim::InsertEmptyLineAbove"
+ }
+ },
{
"context": "vim_operator == c",
"bindings": {
@@ -734,7 +826,7 @@
}
},
{
- "context": "VimControl || !Editor && !Terminal",
+ "context": "VimControl && !menu || !Editor && !Terminal",
"bindings": {
// window related commands (ctrl-w X)
"ctrl-w": null,
@@ -754,10 +846,10 @@
"ctrl-w shift-right": "workspace::SwapPaneRight",
"ctrl-w shift-up": "workspace::SwapPaneUp",
"ctrl-w shift-down": "workspace::SwapPaneDown",
- "ctrl-w shift-h": "workspace::SwapPaneLeft",
- "ctrl-w shift-l": "workspace::SwapPaneRight",
- "ctrl-w shift-k": "workspace::SwapPaneUp",
- "ctrl-w shift-j": "workspace::SwapPaneDown",
+ "ctrl-w shift-h": "workspace::MovePaneLeft",
+ "ctrl-w shift-l": "workspace::MovePaneRight",
+ "ctrl-w shift-k": "workspace::MovePaneUp",
+ "ctrl-w shift-j": "workspace::MovePaneDown",
"ctrl-w >": "vim::ResizePaneRight",
"ctrl-w <": "vim::ResizePaneLeft",
"ctrl-w -": "vim::ResizePaneDown",
@@ -788,7 +880,9 @@
"ctrl-w ctrl-o": "workspace::CloseInactiveTabsAndPanes",
"ctrl-w o": "workspace::CloseInactiveTabsAndPanes",
"ctrl-w ctrl-n": "workspace::NewFileSplitHorizontal",
- "ctrl-w n": "workspace::NewFileSplitHorizontal"
+ "ctrl-w n": "workspace::NewFileSplitHorizontal",
+ "g t": "vim::GoToTab",
+ "g shift-t": "vim::GoToPreviousTab"
}
},
{
@@ -807,19 +901,21 @@
"/": "project_panel::NewSearchInDirectory",
"d": "project_panel::NewDirectory",
"enter": "project_panel::OpenPermanent",
- "escape": "project_panel::ToggleFocus",
+ "escape": "vim::ToggleProjectPanelFocus",
"h": "project_panel::CollapseSelectedEntry",
- "j": "menu::SelectNext",
- "k": "menu::SelectPrevious",
+ "j": "vim::MenuSelectNext",
+ "k": "vim::MenuSelectPrevious",
+ "down": "vim::MenuSelectNext",
+ "up": "vim::MenuSelectPrevious",
"l": "project_panel::ExpandSelectedEntry",
- "o": "project_panel::OpenPermanent",
"shift-d": "project_panel::Delete",
"shift-r": "project_panel::Rename",
"t": "project_panel::OpenPermanent",
- "v": "project_panel::OpenPermanent",
+ "v": "project_panel::OpenSplitVertical",
+ "o": "project_panel::OpenSplitHorizontal",
"p": "project_panel::Open",
"x": "project_panel::RevealInFileManager",
- "s": "project_panel::OpenWithSystem",
+ "s": "workspace::OpenWithSystem",
"z d": "project_panel::CompareMarkedFiles",
"] c": "project_panel::SelectNextGitEntry",
"[ c": "project_panel::SelectPrevGitEntry",
@@ -829,7 +925,22 @@
"{": "project_panel::SelectPrevDirectory",
"shift-g": "menu::SelectLast",
"g g": "menu::SelectFirst",
- "-": "project_panel::SelectParent"
+ "-": "project_panel::SelectParent",
+ "ctrl-u": "project_panel::ScrollUp",
+ "ctrl-d": "project_panel::ScrollDown",
+ "z t": "project_panel::ScrollCursorTop",
+ "z z": "project_panel::ScrollCursorCenter",
+ "z b": "project_panel::ScrollCursorBottom",
+ "0": ["vim::Number", 0],
+ "1": ["vim::Number", 1],
+ "2": ["vim::Number", 2],
+ "3": ["vim::Number", 3],
+ "4": ["vim::Number", 4],
+ "5": ["vim::Number", 5],
+ "6": ["vim::Number", 6],
+ "7": ["vim::Number", 7],
+ "8": ["vim::Number", 8],
+ "9": ["vim::Number", 9]
}
},
{
@@ -874,7 +985,9 @@
"bindings": {
"ctrl-h": "editor::Backspace",
"ctrl-u": "editor::DeleteToBeginningOfLine",
- "ctrl-w": "editor::DeleteToPreviousWordStart"
+ "ctrl-w": "editor::DeleteToPreviousWordStart",
+ "ctrl-p": "menu::SelectPrevious",
+ "ctrl-n": "menu::SelectNext"
}
},
{
@@ -906,5 +1019,16 @@
// and Windows.
"alt-l": "editor::AcceptEditPrediction"
}
+ },
+ {
+ "context": "SettingsWindow > NavigationMenu && !search",
+ "bindings": {
+ "l": "settings_editor::ExpandNavEntry",
+ "h": "settings_editor::CollapseNavEntry",
+ "k": "settings_editor::FocusPreviousNavEntry",
+ "j": "settings_editor::FocusNextNavEntry",
+ "g g": "settings_editor::FocusFirstNavEntry",
+ "shift-g": "settings_editor::FocusLastNavEntry"
+ }
}
]
diff --git a/assets/prompts/assistant_system_prompt.hbs b/assets/prompts/assistant_system_prompt.hbs
deleted file mode 100644
index b4545f5a7449bf8c562ea15d722ae8199c42e97a..0000000000000000000000000000000000000000
--- a/assets/prompts/assistant_system_prompt.hbs
+++ /dev/null
@@ -1,179 +0,0 @@
-You are a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.
-
-## Communication
-
-1. Be conversational but professional.
-2. Refer to the user in the second person and yourself in the first person.
-3. Format your responses in markdown. Use backticks to format file, directory, function, and class names.
-4. NEVER lie or make things up.
-5. Refrain from apologizing all the time when results are unexpected. Instead, just try your best to proceed or explain the circumstances to the user without apologizing.
-
-{{#if has_tools}}
-## Tool Use
-
-1. Make sure to adhere to the tools schema.
-2. Provide every required argument.
-3. DO NOT use tools to access items that are already available in the context section.
-4. Use only the tools that are currently available.
-5. DO NOT use a tool that is not available just because it appears in the conversation. This means the user turned it off.
-6. NEVER run commands that don't terminate on their own such as web servers (like `npm run start`, `npm run dev`, `python -m http.server`, etc) or file watchers.
-7. Avoid HTML entity escaping - use plain characters instead.
-
-## Searching and Reading
-
-If you are unsure how to fulfill the user's request, gather more information with tool calls and/or clarifying questions.
-
-{{! TODO: If there are files, we should mention it but otherwise omit that fact }}
-If appropriate, use tool calls to explore the current project, which contains the following root directories:
-
-{{#each worktrees}}
-- `{{abs_path}}`
-{{/each}}
-
-- Bias towards not asking the user for help if you can find the answer yourself.
-- When providing paths to tools, the path should always start with the name of a project root directory listed above.
-- Before you read or edit a file, you must first find the full path. DO NOT ever guess a file path!
-{{# if (has_tool 'grep') }}
-- When looking for symbols in the project, prefer the `grep` tool.
-- As you learn about the structure of the project, use that information to scope `grep` searches to targeted subtrees of the project.
-- The user might specify a partial file path. If you don't know the full path, use `find_path` (not `grep`) before you read the file.
-{{/if}}
-{{else}}
-You are being tasked with providing a response, but you have no ability to use tools or to read or write any aspect of the user's system (other than any context the user might have provided to you).
-
-As such, if you need the user to perform any actions for you, you must request them explicitly. Bias towards giving a response to the best of your ability, and then making requests for the user to take action (e.g. to give you more context) only optionally.
-
-The one exception to this is if the user references something you don't know about - for example, the name of a source code file, function, type, or other piece of code that you have no awareness of. In this case, you MUST NOT MAKE SOMETHING UP, or assume you know what that thing is or how it works. Instead, you must ask the user for clarification rather than giving a response.
-{{/if}}
-
-## Code Block Formatting
-
-Whenever you mention a code block, you MUST use ONLY use the following format:
-```path/to/Something.blah#L123-456
-(code goes here)
-```
-The `#L123-456` means the line number range 123 through 456, and the path/to/Something.blah
-is a path in the project. (If there is no valid path in the project, then you can use
-/dev/null/path.extension for its path.) This is the ONLY valid way to format code blocks, because the Markdown parser
-does not understand the more common ```language syntax, or bare ``` blocks. It only
-understands this path-based syntax, and if the path is missing, then it will error and you will have to do it over again.
-Just to be really clear about this, if you ever find yourself writing three backticks followed by a language name, STOP!
-You have made a mistake. You can only ever put paths after triple backticks!
-
-Based on all the information I've gathered, here's a summary of how this system works:
-1. The README file is loaded into the system.
-2. The system finds the first two headers, including everything in between. In this case, that would be:
-```path/to/README.md#L8-12
-# First Header
-This is the info under the first header.
-## Sub-header
-```
-3. Then the system finds the last header in the README:
-```path/to/README.md#L27-29
-## Last Header
-This is the last header in the README.
-```
-4. Finally, it passes this information on to the next process.
-
-
-In Markdown, hash marks signify headings. For example:
-```/dev/null/example.md#L1-3
-# Level 1 heading
-## Level 2 heading
-### Level 3 heading
-```
-
-Here are examples of ways you must never render code blocks:
-
-In Markdown, hash marks signify headings. For example:
-```
-# Level 1 heading
-## Level 2 heading
-### Level 3 heading
-```
-
-This example is unacceptable because it does not include the path.
-
-In Markdown, hash marks signify headings. For example:
-```markdown
-# Level 1 heading
-## Level 2 heading
-### Level 3 heading
-```
-
-This example is unacceptable because it has the language instead of the path.
-
-In Markdown, hash marks signify headings. For example:
- # Level 1 heading
- ## Level 2 heading
- ### Level 3 heading
-
-This example is unacceptable because it uses indentation to mark the code block
-instead of backticks with a path.
-
-In Markdown, hash marks signify headings. For example:
-```markdown
-/dev/null/example.md#L1-3
-# Level 1 heading
-## Level 2 heading
-### Level 3 heading
-```
-
-This example is unacceptable because the path is in the wrong place. The path must be directly after the opening backticks.
-
-{{#if has_tools}}
-## Fixing Diagnostics
-
-1. Make 1-2 attempts at fixing diagnostics, then defer to the user.
-2. Never simplify code you've written just to solve diagnostics. Complete, mostly correct code is more valuable than perfect code that doesn't solve the problem.
-
-## Debugging
-
-When debugging, only make code changes if you are certain that you can solve the problem.
-Otherwise, follow debugging best practices:
-1. Address the root cause instead of the symptoms.
-2. Add descriptive logging statements and error messages to track variable and code state.
-3. Add test functions and statements to isolate the problem.
-
-{{/if}}
-## Calling External APIs
-
-1. Unless explicitly requested by the user, use the best suited external APIs and packages to solve the task. There is no need to ask the user for permission.
-2. When selecting which version of an API or package to use, choose one that is compatible with the user's dependency management file(s). If no such file exists or if the package is not present, use the latest version that is in your training data.
-3. If an external API requires an API Key, be sure to point this out to the user. Adhere to best security practices (e.g. DO NOT hardcode an API key in a place where it can be exposed)
-
-## System Information
-
-Operating System: {{os}}
-Default Shell: {{shell}}
-
-{{#if (or has_rules has_user_rules)}}
-## User's Custom Instructions
-
-The following additional instructions are provided by the user, and should be followed to the best of your ability{{#if has_tools}} without interfering with the tool use guidelines{{/if}}.
-
-{{#if has_rules}}
-There are project rules that apply to these root directories:
-{{#each worktrees}}
-{{#if rules_file}}
-`{{root_name}}/{{rules_file.path_in_worktree}}`:
-``````
-{{{rules_file.text}}}
-``````
-{{/if}}
-{{/each}}
-{{/if}}
-
-{{#if has_user_rules}}
-The user has specified the following rules that should be applied:
-{{#each user_rules}}
-
-{{#if title}}
-Rules title: {{title}}
-{{/if}}
-``````
-{{contents}}}
-``````
-{{/each}}
-{{/if}}
-{{/if}}
diff --git a/assets/prompts/content_prompt.hbs b/assets/prompts/content_prompt.hbs
index e601e6dc63376af54e6e1a9bfa53cdbd57190e22..6db53ff48ff251b90f9120398852a9160ca41755 100644
--- a/assets/prompts/content_prompt.hbs
+++ b/assets/prompts/content_prompt.hbs
@@ -29,7 +29,9 @@ Generate {{content_type}} based on the following prompt:
Match the indentation in the original file in the inserted {{content_type}}, don't include any indentation on blank lines.
-Immediately start with the following format with no remarks:
+Return ONLY the {{content_type}} to insert. Do NOT include any XML tags like , , or any surrounding markup from the input.
+
+Respond with a code block containing the {{content_type}} to insert. Replace \{{INSERTED_CODE}} with your actual {{content_type}}:
```
\{{INSERTED_CODE}}
@@ -66,7 +68,9 @@ Only make changes that are necessary to fulfill the prompt, leave everything els
Start at the indentation level in the original file in the rewritten {{content_type}}. Don't stop until you've rewritten the entire section, even if you have no more changes to make, always write out the whole section with no unnecessary elisions.
-Immediately start with the following format with no remarks:
+Return ONLY the rewritten {{content_type}}. Do NOT include any XML tags like , , or any surrounding markup from the input.
+
+Respond with a code block containing the rewritten {{content_type}}. Replace \{{REWRITTEN_CODE}} with your actual rewritten {{content_type}}:
```
\{{REWRITTEN_CODE}}
diff --git a/assets/settings/default.json b/assets/settings/default.json
index 6a8b034268d39c14d3f57273f1cb80a025e3cf5e..f62cc1844732db2a49dc835a155e861f4268632f 100644
--- a/assets/settings/default.json
+++ b/assets/settings/default.json
@@ -1,4 +1,8 @@
{
+ "$schema": "zed://schemas/settings",
+ /// The displayed name of this project. If not set or null, the root directory name
+ /// will be displayed.
+ "project_name": null,
// The name of the Zed theme to use for the UI.
//
// `mode` is one of:
@@ -71,8 +75,10 @@
"ui_font_weight": 400,
// The default font size for text in the UI
"ui_font_size": 16,
- // The default font size for text in the agent panel. Falls back to the UI font size if unset.
- "agent_font_size": null,
+ // The default font size for agent responses in the agent panel. Falls back to the UI font size if unset.
+ "agent_ui_font_size": null,
+ // The default font size for user messages in the agent panel.
+ "agent_buffer_font_size": 12,
// How much to fade out unused code.
"unnecessary_code_fade": 0.3,
// Active pane styling settings.
@@ -114,6 +120,7 @@
// Whether to enable vim modes and key bindings.
"vim_mode": false,
// Whether to enable helix mode and key bindings.
+ // Enabling this mode will automatically enable vim mode.
"helix_mode": false,
// Whether to show the informational hover box when moving the mouse
// over symbols in the editor.
@@ -162,6 +169,12 @@
// 2. Always quit the application
// "on_last_window_closed": "quit_app",
"on_last_window_closed": "platform_default",
+ // Whether to show padding for zoomed panels.
+ // When enabled, zoomed center panels (e.g. code editor) will have padding all around,
+ // while zoomed bottom/left/right panels will have padding to the top/right/left (respectively).
+ //
+ // Default: true
+ "zoomed_padding": true,
// Whether to use the system provided dialogs for Open and Save As.
// When set to false, Zed will use the built-in keyboard-first pickers.
"use_system_path_prompts": true,
@@ -182,8 +195,8 @@
// 4. A box drawn around the following character
// "hollow"
//
- // Default: not set, defaults to "bar"
- "cursor_shape": null,
+ // Default: "bar"
+ "cursor_shape": "bar",
// Determines when the mouse cursor should be hidden in an editor or input box.
//
// 1. Never hide the mouse cursor:
@@ -217,9 +230,25 @@
"current_line_highlight": "all",
// Whether to highlight all occurrences of the selected text in an editor.
"selection_highlight": true,
+ // Whether the text selection should have rounded corners.
+ "rounded_selection": true,
// The debounce delay before querying highlights from the language
// server based on the current cursor location.
"lsp_highlight_debounce": 75,
+ // The minimum APCA perceptual contrast between foreground and background colors.
+ // APCA (Accessible Perceptual Contrast Algorithm) is more accurate than WCAG 2.x,
+ // especially for dark mode. Values range from 0 to 106.
+ //
+ // Based on APCA Readability Criterion (ARC) Bronze Simple Mode:
+ // https://readtech.org/ARC/tests/bronze-simple-mode/
+ // - 0: No contrast adjustment
+ // - 45: Minimum for large fluent text (36px+)
+ // - 60: Minimum for other content text
+ // - 75: Minimum for body text
+ // - 90: Preferred for body text
+ //
+ // This only affects text drawn over highlight backgrounds in the editor.
+ "minimum_contrast_for_highlights": 45,
// Whether to pop the completions menu while typing in an editor without
// explicitly requesting it.
"show_completions_on_input": true,
@@ -260,8 +289,8 @@
// - "warning"
// - "info"
// - "hint"
- // - null — allow all diagnostics (default)
- "diagnostics_max_severity": null,
+ // - "all" — allow all diagnostics (default)
+ "diagnostics_max_severity": "all",
// Whether to show wrap guides (vertical rulers) in the editor.
// Setting this to true will show a guide at the 'preferred_line_length' value
// if 'soft_wrap' is set to 'preferred_line_length', and will show any
@@ -273,6 +302,8 @@
"redact_private_values": false,
// The default number of lines to expand excerpts in the multibuffer by.
"expand_excerpt_lines": 5,
+ // The default number of context lines shown in multibuffer excerpts.
+ "excerpt_context_lines": 2,
// Globs to match against file paths to determine if a file is private.
"private_files": ["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"],
// Whether to use additional LSP queries to format (and amend) the code after
@@ -280,12 +311,14 @@
"use_on_type_format": true,
// Whether to automatically add matching closing characters when typing
// opening parenthesis, bracket, brace, single or double quote characters.
- // For example, when you type (, Zed will add a closing ) at the correct position.
+ // For example, when you type '(', Zed will add a closing ) at the correct position.
"use_autoclose": true,
// Whether to automatically surround selected text when typing opening parenthesis,
// bracket, brace, single or double quote characters.
- // For example, when you select text and type (, Zed will surround the text with ().
+ // For example, when you select text and type '(', Zed will surround the text with ().
"use_auto_surround": true,
+ // Whether indentation should be adjusted based on the context whilst typing.
+ "auto_indent": true,
// Whether indentation of pasted content should be adjusted based on the context.
"auto_indent_on_paste": true,
// Controls how the editor handles the autoclosed characters.
@@ -335,6 +368,11 @@
// - It is adjacent to an edge (start or end)
// - It is adjacent to a whitespace (left or right)
"show_whitespaces": "selection",
+ // Visible characters used to render whitespace when show_whitespaces is enabled.
+ "whitespace_map": {
+ "space": "•",
+ "tab": "→"
+ },
// Settings related to calls in Zed
"calls": {
// Join calls with the microphone live by default
@@ -355,6 +393,8 @@
// Whether to show code action buttons in the editor toolbar.
"code_actions": false
},
+ // Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
+ "use_system_window_tabs": false,
// Titlebar related settings
"title_bar": {
// Whether to show the branch icon beside branch switcher in the titlebar.
@@ -372,6 +412,39 @@
// Whether to show the menus in the titlebar.
"show_menus": false
},
+ "audio": {
+ // Opt into the new audio system.
+ "experimental.rodio_audio": false,
+ // Requires 'rodio_audio: true'
+ //
+ // Automatically increase or decrease you microphone's volume. This affects how
+ // loud you sound to others.
+ //
+ // Recommended: off (default)
+ // Microphones are too quite in zed, until everyone is on experimental
+ // audio and has auto speaker volume on this will make you very loud
+ // compared to other speakers.
+ "experimental.auto_microphone_volume": false,
+ // Requires 'rodio_audio: true'
+ //
+ // Automatically increate or decrease the volume of other call members.
+ // This only affects how things sound for you.
+ "experimental.auto_speaker_volume": true,
+ // Requires 'rodio_audio: true'
+ //
+ // Remove background noises. Works great for typing, cars, dogs, AC. Does
+ // not work well on music.
+ "experimental.denoise": true,
+ // Requires 'rodio_audio: true'
+ //
+ // Use audio parameters compatible with the previous versions of
+ // experimental audio and non-experimental audio. When this is false you
+ // will sound strange to anyone not on the latest experimental audio. In
+ // the future we will migrate by setting this to false
+ //
+ // You need to rejoin a call for this setting to apply
+ "experimental.legacy_audio_compatible": true
+ },
// Scrollbar related settings
"scrollbar": {
// When to show the scrollbar in the editor.
@@ -552,6 +625,7 @@
// Toggle certain types of hints on and off, all switched on by default.
"show_type_hints": true,
"show_parameter_hints": true,
+ "show_value_hints": true,
// Corresponds to null/None LSP hint type value.
"show_other_hints": true,
// Whether to show a background for inlay hints.
@@ -645,8 +719,14 @@
// "never"
"show": "always"
},
+ // Whether to enable drag-and-drop operations in the project panel.
+ "drag_and_drop": true,
// Whether to hide the root entry when only one folder is open in the window.
- "hide_root": false
+ "hide_root": false,
+ // Whether to hide the hidden entries in the project panel.
+ "hide_hidden": false,
+ // Whether to automatically open files when pasting them in the project panel.
+ "open_file_on_paste": true
},
"outline_panel": {
// Whether to show the outline panel button in the status bar
@@ -710,20 +790,10 @@
// Default width of the collaboration panel.
"default_width": 240
},
- "chat_panel": {
- // When to show the chat panel button in the status bar.
- // Can be 'never', 'always', or 'when_in_call',
- // or a boolean (interpreted as 'never'/'always').
- "button": "when_in_call",
- // Where to the chat panel. Can be 'left' or 'right'.
- "dock": "right",
- // Default width of the chat panel.
- "default_width": 240
- },
"git_panel": {
// Whether to show the git panel button in the status bar.
"button": true,
- // Where to show the git panel. Can be 'left' or 'right'.
+ // Where to dock the git panel. Can be 'left' or 'right'.
"dock": "left",
// Default width of the git panel.
"default_width": 360,
@@ -768,7 +838,7 @@
"agent": {
// Whether the agent is enabled.
"enabled": true,
- /// What completion mode to start new threads in, if available. Can be 'normal' or 'burn'.
+ // What completion mode to start new threads in, if available. Can be 'normal' or 'burn'.
"preferred_completion_mode": "normal",
// Whether to show the agent panel button in the status bar.
"button": true,
@@ -778,6 +848,8 @@
"default_width": 640,
// Default height when the agent panel is docked to the bottom.
"default_height": 320,
+ // The view to use by default (thread, or text_thread)
+ "default_view": "thread",
// The default model to use when creating new threads.
"default_model": {
// The provider to use.
@@ -808,9 +880,10 @@
// }
],
// When enabled, the agent can run potentially destructive actions without asking for your confirmation.
+ //
+ // Note: This setting has no effect on external agents that support permission modes, such as Claude Code.
+ // You can set `agent_servers.claude.default_mode` to `bypassPermissions` to skip all permission requests.
"always_allow_tool_actions": false,
- // When enabled, the agent will stream edits.
- "stream_edits": false,
// When enabled, agent edits will be displayed in single-file editors for review
"single_file_review": true,
// When enabled, show voting thumbs for feedback on agent edits.
@@ -833,6 +906,7 @@
"now": true,
"find_path": true,
"read_file": true,
+ "open": true,
"grep": true,
"terminal": true,
"thinking": true,
@@ -844,7 +918,6 @@
// We don't know which of the context server tools are safe for the "Ask" profile, so we don't enable them by default.
// "enable_all_context_servers": true,
"tools": {
- "contents": true,
"diagnostics": true,
"fetch": true,
"list_directory": true,
@@ -876,22 +949,22 @@
// Default: false
"play_sound_when_agent_done": false,
- /// Whether to have edit cards in the agent panel expanded, showing a preview of the full diff.
- ///
- /// Default: true
+ // Whether to have edit cards in the agent panel expanded, showing a preview of the full diff.
+ //
+ // Default: true
"expand_edit_card": true,
- /// Whether to have terminal cards in the agent panel expanded, showing the whole command output.
- ///
- /// Default: true
- "expand_terminal_card": true
- },
- // The settings for slash commands.
- "slash_commands": {
- // Settings for the `/project` slash command.
- "project": {
- // Whether `/project` is enabled.
- "enabled": false
- }
+ // Whether to have terminal cards in the agent panel expanded, showing the whole command output.
+ //
+ // Default: true
+ "expand_terminal_card": true,
+ // Whether to always use cmd-enter (or ctrl-enter on Linux or Windows) to send messages in the agent panel.
+ //
+ // Default: false
+ "use_modifier_to_send": false,
+ // Minimum number of lines to display in the agent message editor.
+ //
+ // Default: 4
+ "message_editor_min_lines": 4
},
// Whether the screen sharing icon is shown in the os status bar.
"show_call_status_icon": true,
@@ -904,6 +977,7 @@
//
// This is typically customized on a per-language basis.
"language_servers": ["..."],
+
// When to automatically save edited buffers. This setting can
// take four values.
//
@@ -932,7 +1006,7 @@
// Show git status colors in the editor tabs.
"git_status": false,
// Position of the close button on the editor tabs.
- // One of: ["right", "left", "hidden"]
+ // One of: ["right", "left"]
"close_position": "right",
// Whether to show the file icon for a tab.
"file_icons": false,
@@ -1017,10 +1091,10 @@
// Only the file Zed had indexed will be used, not necessary all the gitignored files.
//
// Can accept 3 values:
- // * `true`: Use all gitignored files
- // * `false`: Use only the files Zed had indexed
- // * `null`: Be smart and search for ignored when called from a gitignored worktree
- "include_ignored": null
+ // * "all": Use all gitignored files
+ // * "indexed": Use only the files Zed had indexed
+ // * "smart": Be smart and search for ignored when called from a gitignored worktree
+ "include_ignored": "smart"
},
// Whether or not to remove any trailing whitespace from lines of a buffer
// before saving it.
@@ -1030,25 +1104,31 @@
// Removes any lines containing only whitespace at the end of the file and
// ensures just one newline at the end.
"ensure_final_newline_on_save": true,
- // Whether or not to perform a buffer format before saving: [on, off, prettier, language_server]
+ // Whether or not to perform a buffer format before saving: [on, off]
// Keep in mind, if the autosave with delay is enabled, format_on_save will be ignored
"format_on_save": "on",
- // How to perform a buffer format. This setting can take 4 values:
+ // How to perform a buffer format. This setting can take multiple values:
//
- // 1. Format code using the current language server:
+ // 1. Default. Format files using Zed's Prettier integration (if applicable),
+ // or falling back to formatting via language server:
+ // "formatter": "auto"
+ // 2. Format code using the current language server:
// "formatter": "language_server"
- // 2. Format code using an external command:
+ // 3. Format code using a specific language server:
+ // "formatter": {"language_server": {"name": "ruff"}}
+ // 4. Format code using an external command:
// "formatter": {
// "external": {
// "command": "prettier",
// "arguments": ["--stdin-filepath", "{buffer_path}"]
// }
// }
- // 3. Format code using Zed's Prettier integration:
+ // 5. Format code using Zed's Prettier integration:
// "formatter": "prettier"
- // 4. Default. Format files using Zed's Prettier integration (if applicable),
- // or falling back to formatting via language server:
- // "formatter": "auto"
+ // 6. Format code using a code action
+ // "formatter": {"code_action": "source.fixAll.eslint"}
+ // 7. An array of any format step specified above to apply in order
+ // "formatter": [{"code_action": "source.fixAll.eslint"}, "prettier"]
"formatter": "auto",
// How to soft-wrap long lines of text.
// Possible values:
@@ -1131,11 +1211,6 @@
// The minimum severity of the diagnostics to show inline.
// Inherits editor's diagnostics' max severity settings when `null`.
"max_severity": null
- },
- "cargo": {
- // When enabled, Zed disables rust-analyzer's check on save and starts to query
- // Cargo diagnostics separately.
- "fetch_cargo_diagnostics": false
}
},
// Files or globs of files that will be excluded by Zed entirely. They will be skipped during file
@@ -1165,6 +1240,10 @@
// 2. Hide the gutter
// "git_gutter": "hide"
"git_gutter": "tracked_files",
+ /// Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
+ ///
+ /// Default: 0
+ "gutter_debounce": 0,
// Control whether the git blame information is shown inline,
// in the currently focused line.
"inline_blame": {
@@ -1180,6 +1259,13 @@
// The minimum column number to show the inline blame information at
"min_column": 0
},
+ "blame": {
+ "show_avatar": true
+ },
+ // Control which information is shown in the branch picker.
+ "branch_picker": {
+ "show_author_name": true
+ },
// How git hunks are displayed visually in the editor.
// This setting can take two values:
//
@@ -1234,7 +1320,16 @@
// "proxy": "",
// "proxy_no_verify": false
// },
- // Whether edit predictions are enabled when editing text threads.
+ "copilot": {
+ "enterprise_uri": null,
+ "proxy": null,
+ "proxy_no_verify": null
+ },
+ "codestral": {
+ "model": null,
+ "max_tokens": null
+ },
+ // Whether edit predictions are enabled when editing text threads in the agent panel.
// This setting has no effect if globally disabled.
"enabled_in_text_threads": true
},
@@ -1250,10 +1345,14 @@
},
// Status bar-related settings.
"status_bar": {
+ // Whether to show the status bar.
+ "experimental.show": true,
// Whether to show the active language button in the status bar.
"active_language_button": true,
// Whether to show the cursor position button in the status bar.
- "cursor_position_button": true
+ "cursor_position_button": true,
+ // Whether to show active line endings button in the status bar.
+ "line_endings_button": false
},
// Settings specific to the terminal
"terminal": {
@@ -1316,8 +1415,8 @@
// 4. A box drawn around the following character
// "hollow"
//
- // Default: not set, defaults to "block"
- "cursor_shape": null,
+ // Default: "block"
+ "cursor_shape": "block",
// Set whether Alternate Scroll mode (code: ?1007) is active by default.
// Alternate Scroll mode converts mouse scroll events into up / down key
// presses when in the alternate screen (e.g. when running applications
@@ -1339,8 +1438,8 @@
// Whether or not selecting text in the terminal will automatically
// copy to the system clipboard.
"copy_on_select": false,
- // Whether to keep the text selection after copying it to the clipboard
- "keep_selection_on_copy": false,
+ // Whether to keep the text selection after copying it to the clipboard.
+ "keep_selection_on_copy": true,
// Whether to show the terminal button in the status bar
"button": true,
// Any key-value pairs added to this list will be added to the terminal's
@@ -1359,7 +1458,7 @@
// "line_height": {
// "custom": 2
// },
- "line_height": "comfortable",
+ "line_height": "standard",
// Activate the python virtual environment, if one is found, in the
// terminal's working directory (as resolved by the working_directory
// setting). Set this to "off" to disable this behavior.
@@ -1379,7 +1478,7 @@
//
// The shell running in the terminal needs to be configured to emit the title.
// Example: `echo -e "\e]2;New Title\007";`
- "breadcrumbs": true
+ "breadcrumbs": false
},
// Scrollbar-related settings
"scrollbar": {
@@ -1459,7 +1558,8 @@
// }
//
"file_types": {
- "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
+ "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json", "tsconfig*.json"],
+ "Markdown": [".rules", ".cursorrules", ".windsurfrules", ".clinerules"],
"Shell Script": [".env.*"]
},
// Settings for which version of Node.js and NPM to use when installing
@@ -1485,6 +1585,14 @@
"auto_install_extensions": {
"html": true
},
+ // The capabilities granted to extensions.
+ //
+ // This list can be customized to restrict what extensions are able to do.
+ "granted_extension_capabilities": [
+ { "kind": "process:exec", "command": "*", "args": ["**"] },
+ { "kind": "download_file", "host": "*", "path": ["**"] },
+ { "kind": "npm:install", "package": "*" }
+ ],
// Controls how completions are processed for this language.
"completions": {
// Controls how words are completed.
@@ -1501,6 +1609,11 @@
//
// Default: fallback
"words": "fallback",
+ // Minimum number of characters required to automatically trigger word-based completions.
+ // Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
+ //
+ // Default: 3
+ "words_min_length": 3,
// Whether to fetch LSP completions or not.
//
// Default: true
@@ -1573,7 +1686,7 @@
"ensure_final_newline_on_save": false
},
"Elixir": {
- "language_servers": ["elixir-ls", "!next-ls", "!lexical", "..."]
+ "language_servers": ["elixir-ls", "!expert", "!next-ls", "!lexical", "..."]
},
"Elm": {
"tab_size": 4
@@ -1587,6 +1700,7 @@
"preferred_line_length": 72
},
"Go": {
+ "hard_tabs": true,
"code_actions_on_format": {
"source.organizeImports": true
},
@@ -1598,7 +1712,7 @@
}
},
"HEEX": {
- "language_servers": ["elixir-ls", "!next-ls", "!lexical", "..."]
+ "language_servers": ["elixir-ls", "!expert", "!next-ls", "!lexical", "..."]
},
"HTML": {
"prettier": {
@@ -1627,6 +1741,9 @@
"allowed": true
}
},
+ "Kotlin": {
+ "language_servers": ["!kotlin-language-server", "kotlin-lsp", "..."]
+ },
"LaTeX": {
"formatter": "language_server",
"language_servers": ["texlab", "..."],
@@ -1640,9 +1757,6 @@
"use_on_type_format": false,
"allow_rewrap": "anywhere",
"soft_wrap": "editor_width",
- "completions": {
- "words": "disabled"
- },
"prettier": {
"allowed": true
}
@@ -1656,13 +1770,20 @@
}
},
"Plain Text": {
- "completions": {
- "words": "disabled"
- },
- "allow_rewrap": "anywhere"
+ "allow_rewrap": "anywhere",
+ "soft_wrap": "editor_width"
},
"Python": {
- "debuggers": ["Debugpy"]
+ "code_actions_on_format": {
+ "source.organizeImports.ruff": true
+ },
+ "formatter": {
+ "language_server": {
+ "name": "ruff"
+ }
+ },
+ "debuggers": ["Debugpy"],
+ "language_servers": ["basedpyright", "ruff", "!ty", "!pyrefly", "!pyright", "!pylsp", "..."]
},
"Ruby": {
"language_servers": ["solargraph", "!ruby-lsp", "!rubocop", "!sorbet", "!steep", "..."]
@@ -1704,10 +1825,11 @@
},
"SystemVerilog": {
"format_on_save": "off",
+ "language_servers": ["!slang", "..."],
"use_on_type_format": false
},
"Vue.js": {
- "language_servers": ["vue-language-server", "..."],
+ "language_servers": ["vue-language-server", "vtsls", "..."],
"prettier": {
"allowed": true
}
@@ -1732,6 +1854,7 @@
"anthropic": {
"api_url": "https://api.anthropic.com"
},
+ "bedrock": {},
"google": {
"api_url": "https://generativelanguage.googleapis.com"
},
@@ -1749,31 +1872,45 @@
"api_url": "http://localhost:1234/api/v0"
},
"deepseek": {
- "api_url": "https://api.deepseek.com"
+ "api_url": "https://api.deepseek.com/v1"
},
"mistral": {
"api_url": "https://api.mistral.ai/v1"
- }
+ },
+ "vercel": {
+ "api_url": "https://api.v0.dev/v1"
+ },
+ "x_ai": {
+ "api_url": "https://api.x.ai/v1"
+ },
+ "zed.dev": {}
+ },
+ "session": {
+ // Whether or not to restore unsaved buffers on restart.
+ //
+ // If this is true, user won't be prompted whether to save/discard
+ // dirty files when closing the application.
+ //
+ // Default: true
+ "restore_unsaved_buffers": true
},
// Zed's Prettier integration settings.
// Allows to enable/disable formatting with Prettier
// and configure default Prettier, used when no project-level Prettier installation is found.
"prettier": {
- // // Whether to consider prettier formatter or not when attempting to format a file.
- // "allowed": false,
- //
- // // Use regular Prettier json configuration.
- // // If Prettier is allowed, Zed will use this for its Prettier instance for any applicable file, if
- // // the project has no other Prettier installed.
- // "plugins": [],
- //
- // // Use regular Prettier json configuration.
- // // If Prettier is allowed, Zed will use this for its Prettier instance for any applicable file, if
- // // the project has no other Prettier installed.
+ // Enables or disables formatting with Prettier for any given language.
+ "allowed": false,
+ // Forces Prettier integration to use a specific parser name when formatting files with the language.
+ "plugins": [],
+ // Default Prettier options, in the format as in package.json section for Prettier.
+ // If project installs Prettier via its package.json, these options will be ignored.
// "trailingComma": "es5",
// "tabWidth": 4,
// "semi": false,
// "singleQuote": true
+ // Forces Prettier integration to use a specific parser name when formatting files with the language
+ // when set to a non-empty string.
+ "parser": ""
},
// Settings for auto-closing of JSX tags.
"jsx_tag_auto_close": {
@@ -1793,6 +1930,15 @@
// }
// }
},
+ // DAP Specific settings.
+ "dap": {
+ // Specify the DAP name as a key here.
+ "CodeLLDB": {
+ "env": {
+ "RUST_LOG": "info"
+ }
+ }
+ },
// Common language server settings.
"global_lsp_settings": {
// Whether to show the LSP servers button in the status bar.
@@ -1800,13 +1946,23 @@
},
// Jupyter settings
"jupyter": {
- "enabled": true
+ "enabled": true,
+ "kernel_selections": {}
// Specify the language name as the key and the kernel name as the value.
// "kernel_selections": {
// "python": "conda-base"
// "typescript": "deno"
// }
},
+ // REPL settings.
+ "repl": {
+ // Maximum number of columns to keep in REPL's scrollback buffer.
+ // Clamped with [20, 512] range.
+ "max_columns": 128,
+ // Maximum number of lines to keep in REPL's scrollback buffer.
+ // Clamped with [4, 256] range.
+ "max_lines": 32
+ },
// Vim settings
"vim": {
"default_mode": "normal",
@@ -1897,7 +2053,10 @@
"debugger": {
"stepping_granularity": "line",
"save_breakpoints": true,
+ "timeout": 2000,
"dock": "bottom",
+ "log_dap_communications": true,
+ "format_dap_log_messages": true,
"button": true
},
// Configures any number of settings profiles that are temporarily applied on
@@ -1906,7 +2065,7 @@
// Examples:
// "profiles": {
// "Presenting": {
- // "agent_font_size": 20.0,
+ // "agent_ui_font_size": 20.0,
// "buffer_font_size": 20.0,
// "theme": "One Light",
// "ui_font_size": 20.0
@@ -1919,5 +2078,11 @@
// }
// }
// }
- "profiles": []
+ "profiles": {},
+
+ // A map of log scopes to the desired log level.
+ // Useful for filtering out noisy logs or enabling more verbose logging.
+ //
+ // Example: {"log": {"client": "warn"}}
+ "log": {}
}
diff --git a/assets/settings/initial_tasks.json b/assets/settings/initial_tasks.json
index a79c550671f85d7b107db5e85883caa28fe41411..a79e98063237ca297a89b0d151bd48149061b7bb 100644
--- a/assets/settings/initial_tasks.json
+++ b/assets/settings/initial_tasks.json
@@ -44,7 +44,11 @@
// }
// }
"shell": "system",
+ // Whether to show the task line in the output of the spawned task, defaults to `true`.
+ "show_summary": true,
+ // Whether to show the command line in the output of the spawned task, defaults to `true`.
+ "show_command": true
// Represents the tags for inline runnable indicators, or spawning multiple tasks at once.
- "tags": []
+ // "tags": []
}
]
diff --git a/assets/sounds/guest_joined_call.wav b/assets/sounds/guest_joined_call.wav
new file mode 100644
index 0000000000000000000000000000000000000000..336a6ca754b09c408f63c411193157a20c14bb78
Binary files /dev/null and b/assets/sounds/guest_joined_call.wav differ
diff --git a/assets/themes/ayu/ayu.json b/assets/themes/ayu/ayu.json
index f9f8720729008efb9a17cf45bd23ce51df7d3657..7c84c603bda7fd7590067ec9f566f3582ba6aefd 100644
--- a/assets/themes/ayu/ayu.json
+++ b/assets/themes/ayu/ayu.json
@@ -93,7 +93,7 @@
"terminal.ansi.bright_cyan": "#4c806fff",
"terminal.ansi.dim_cyan": "#cbf2e4ff",
"terminal.ansi.white": "#bfbdb6ff",
- "terminal.ansi.bright_white": "#bfbdb6ff",
+ "terminal.ansi.bright_white": "#fafafaff",
"terminal.ansi.dim_white": "#787876ff",
"link_text.hover": "#5ac1feff",
"conflict": "#feb454ff",
@@ -192,7 +192,7 @@
"font_weight": null
},
"comment": {
- "color": "#abb5be8c",
+ "color": "#5c6773ff",
"font_style": null,
"font_weight": null
},
@@ -239,7 +239,7 @@
"hint": {
"color": "#628b80ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#ff8f3fff",
@@ -316,6 +316,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#a6a5a0ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#d2a6ffff",
"font_style": null,
@@ -479,7 +484,7 @@
"terminal.ansi.bright_cyan": "#ace0cbff",
"terminal.ansi.dim_cyan": "#2a5f4aff",
"terminal.ansi.white": "#fcfcfcff",
- "terminal.ansi.bright_white": "#fcfcfcff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#bcbec0ff",
"link_text.hover": "#3b9ee5ff",
"conflict": "#f1ad49ff",
@@ -578,7 +583,7 @@
"font_weight": null
},
"comment": {
- "color": "#787b8099",
+ "color": "#abb0b6ff",
"font_style": null,
"font_weight": null
},
@@ -625,7 +630,7 @@
"hint": {
"color": "#8ca7c2ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#fa8d3eff",
@@ -702,6 +707,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#73777bff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#a37accff",
"font_style": null,
@@ -865,7 +875,7 @@
"terminal.ansi.bright_cyan": "#4c806fff",
"terminal.ansi.dim_cyan": "#cbf2e4ff",
"terminal.ansi.white": "#cccac2ff",
- "terminal.ansi.bright_white": "#cccac2ff",
+ "terminal.ansi.bright_white": "#fafafaff",
"terminal.ansi.dim_white": "#898a8aff",
"link_text.hover": "#72cffeff",
"conflict": "#fecf72ff",
@@ -964,7 +974,7 @@
"font_weight": null
},
"comment": {
- "color": "#b8cfe680",
+ "color": "#5c6773ff",
"font_style": null,
"font_weight": null
},
@@ -1011,7 +1021,7 @@
"hint": {
"color": "#7399a3ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#ffad65ff",
@@ -1088,6 +1098,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#b4b3aeff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#dfbfffff",
"font_style": null,
diff --git a/assets/themes/gruvbox/gruvbox.json b/assets/themes/gruvbox/gruvbox.json
index 459825c733dbf2eae1e5269885b1b2c135bd72c4..a0f0a3ad637a4d212c8bf38f95f2e8424919d6bf 100644
--- a/assets/themes/gruvbox/gruvbox.json
+++ b/assets/themes/gruvbox/gruvbox.json
@@ -6,8 +6,8 @@
{
"name": "Gruvbox Dark",
"appearance": "dark",
- "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"style": {
+ "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"border": "#5b534dff",
"border.variant": "#494340ff",
"border.focused": "#303a36ff",
@@ -49,8 +49,9 @@
"panel.background": "#3a3735ff",
"panel.focused_border": "#83a598ff",
"pane.focused_border": null,
- "scrollbar.thumb.background": "#fbf1c74c",
- "scrollbar.thumb.hover_background": "#494340ff",
+ "scrollbar.thumb.active_background": "#83a598ac",
+ "scrollbar.thumb.hover_background": "#fbf1c74c",
+ "scrollbar.thumb.background": "#a899844c",
"scrollbar.thumb.border": "#494340ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#373432ff",
@@ -94,7 +95,7 @@
"terminal.ansi.bright_cyan": "#45603eff",
"terminal.ansi.dim_cyan": "#c7dfbdff",
"terminal.ansi.white": "#fbf1c7ff",
- "terminal.ansi.bright_white": "#fbf1c7ff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#b0a189ff",
"link_text.hover": "#83a598ff",
"version_control.added": "#b7bb26ff",
@@ -248,7 +249,7 @@
"hint": {
"color": "#8c957dff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#fb4833ff",
@@ -325,6 +326,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#83a598ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#e5d5adff",
"font_style": null,
@@ -406,8 +412,8 @@
{
"name": "Gruvbox Dark Hard",
"appearance": "dark",
- "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"style": {
+ "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"border": "#5b534dff",
"border.variant": "#494340ff",
"border.focused": "#303a36ff",
@@ -449,8 +455,9 @@
"panel.background": "#393634ff",
"panel.focused_border": "#83a598ff",
"pane.focused_border": null,
- "scrollbar.thumb.background": "#fbf1c74c",
- "scrollbar.thumb.hover_background": "#494340ff",
+ "scrollbar.thumb.active_background": "#83a598ac",
+ "scrollbar.thumb.hover_background": "#fbf1c74c",
+ "scrollbar.thumb.background": "#a899844c",
"scrollbar.thumb.border": "#494340ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#343130ff",
@@ -494,7 +501,7 @@
"terminal.ansi.bright_cyan": "#45603eff",
"terminal.ansi.dim_cyan": "#c7dfbdff",
"terminal.ansi.white": "#fbf1c7ff",
- "terminal.ansi.bright_white": "#fbf1c7ff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#b0a189ff",
"link_text.hover": "#83a598ff",
"version_control.added": "#b7bb26ff",
@@ -648,7 +655,7 @@
"hint": {
"color": "#8c957dff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#fb4833ff",
@@ -725,6 +732,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#83a598ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#e5d5adff",
"font_style": null,
@@ -806,8 +818,8 @@
{
"name": "Gruvbox Dark Soft",
"appearance": "dark",
- "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"style": {
+ "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"border": "#5b534dff",
"border.variant": "#494340ff",
"border.focused": "#303a36ff",
@@ -849,8 +861,9 @@
"panel.background": "#3b3735ff",
"panel.focused_border": null,
"pane.focused_border": null,
- "scrollbar.thumb.background": "#fbf1c74c",
- "scrollbar.thumb.hover_background": "#494340ff",
+ "scrollbar.thumb.active_background": "#83a598ac",
+ "scrollbar.thumb.hover_background": "#fbf1c74c",
+ "scrollbar.thumb.background": "#a899844c",
"scrollbar.thumb.border": "#494340ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#393634ff",
@@ -894,7 +907,7 @@
"terminal.ansi.bright_cyan": "#45603eff",
"terminal.ansi.dim_cyan": "#c7dfbdff",
"terminal.ansi.white": "#fbf1c7ff",
- "terminal.ansi.bright_white": "#fbf1c7ff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#b0a189ff",
"link_text.hover": "#83a598ff",
"version_control.added": "#b7bb26ff",
@@ -1048,7 +1061,7 @@
"hint": {
"color": "#8c957dff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#fb4833ff",
@@ -1125,6 +1138,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#83a598ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#e5d5adff",
"font_style": null,
@@ -1206,8 +1224,8 @@
{
"name": "Gruvbox Light",
"appearance": "light",
- "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"style": {
+ "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"border": "#c8b899ff",
"border.variant": "#ddcca7ff",
"border.focused": "#adc5ccff",
@@ -1249,8 +1267,9 @@
"panel.background": "#ecddb4ff",
"panel.focused_border": null,
"pane.focused_border": null,
- "scrollbar.thumb.background": "#2828284c",
- "scrollbar.thumb.hover_background": "#ddcca7ff",
+ "scrollbar.thumb.active_background": "#458588ac",
+ "scrollbar.thumb.hover_background": "#2828284c",
+ "scrollbar.thumb.background": "#7c6f644c",
"scrollbar.thumb.border": "#ddcca7ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#eee0b7ff",
@@ -1294,7 +1313,7 @@
"terminal.ansi.bright_cyan": "#9fbca8ff",
"terminal.ansi.dim_cyan": "#253e2eff",
"terminal.ansi.white": "#fbf1c7ff",
- "terminal.ansi.bright_white": "#fbf1c7ff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#b0a189ff",
"link_text.hover": "#0b6678ff",
"version_control.added": "#797410ff",
@@ -1448,7 +1467,7 @@
"hint": {
"color": "#677562ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#9d0006ff",
@@ -1525,6 +1544,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#066578ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#413d3aff",
"font_style": null,
@@ -1606,8 +1630,8 @@
{
"name": "Gruvbox Light Hard",
"appearance": "light",
- "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"style": {
+ "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"border": "#c8b899ff",
"border.variant": "#ddcca7ff",
"border.focused": "#adc5ccff",
@@ -1649,8 +1673,9 @@
"panel.background": "#ecddb5ff",
"panel.focused_border": null,
"pane.focused_border": null,
- "scrollbar.thumb.background": "#2828284c",
- "scrollbar.thumb.hover_background": "#ddcca7ff",
+ "scrollbar.thumb.active_background": "#458588ac",
+ "scrollbar.thumb.hover_background": "#2828284c",
+ "scrollbar.thumb.background": "#7c6f644c",
"scrollbar.thumb.border": "#ddcca7ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#eee1bbff",
@@ -1694,7 +1719,7 @@
"terminal.ansi.bright_cyan": "#9fbca8ff",
"terminal.ansi.dim_cyan": "#253e2eff",
"terminal.ansi.white": "#f9f5d7ff",
- "terminal.ansi.bright_white": "#f9f5d7ff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#b0a189ff",
"link_text.hover": "#0b6678ff",
"version_control.added": "#797410ff",
@@ -1848,7 +1873,7 @@
"hint": {
"color": "#677562ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#9d0006ff",
@@ -1925,6 +1950,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#066578ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#413d3aff",
"font_style": null,
@@ -2006,8 +2036,8 @@
{
"name": "Gruvbox Light Soft",
"appearance": "light",
- "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"style": {
+ "accents": ["#cc241dff", "#98971aff", "#d79921ff", "#458588ff", "#b16286ff", "#689d6aff", "#d65d0eff"],
"border": "#c8b899ff",
"border.variant": "#ddcca7ff",
"border.focused": "#adc5ccff",
@@ -2049,8 +2079,9 @@
"panel.background": "#ecdcb3ff",
"panel.focused_border": null,
"pane.focused_border": null,
- "scrollbar.thumb.background": "#2828284c",
- "scrollbar.thumb.hover_background": "#ddcca7ff",
+ "scrollbar.thumb.active_background": "#458588ac",
+ "scrollbar.thumb.hover_background": "#2828284c",
+ "scrollbar.thumb.background": "#7c6f644c",
"scrollbar.thumb.border": "#ddcca7ff",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#eddeb5ff",
@@ -2094,7 +2125,7 @@
"terminal.ansi.bright_cyan": "#9fbca8ff",
"terminal.ansi.dim_cyan": "#253e2eff",
"terminal.ansi.white": "#f2e5bcff",
- "terminal.ansi.bright_white": "#f2e5bcff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#b0a189ff",
"link_text.hover": "#0b6678ff",
"version_control.added": "#797410ff",
@@ -2248,7 +2279,7 @@
"hint": {
"color": "#677562ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#9d0006ff",
@@ -2325,6 +2356,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#066578ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#413d3aff",
"font_style": null,
diff --git a/assets/themes/one/one.json b/assets/themes/one/one.json
index 23ebbcc67efaa9ca45748a5726ac1fd72488c451..6849cd05dc70752216789ae04e81fad232f7b14b 100644
--- a/assets/themes/one/one.json
+++ b/assets/themes/one/one.json
@@ -93,7 +93,7 @@
"terminal.ansi.bright_cyan": "#3a565bff",
"terminal.ansi.dim_cyan": "#b9d9dfff",
"terminal.ansi.white": "#dce0e5ff",
- "terminal.ansi.bright_white": "#dce0e5ff",
+ "terminal.ansi.bright_white": "#fafafaff",
"terminal.ansi.dim_white": "#575d65ff",
"link_text.hover": "#74ade8ff",
"version_control.added": "#27a657ff",
@@ -244,7 +244,7 @@
"hint": {
"color": "#788ca6ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#b477cfff",
@@ -321,6 +321,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#d07277ff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#b1574bff",
"font_style": null,
@@ -468,7 +473,7 @@
"terminal.bright_foreground": "#242529ff",
"terminal.dim_foreground": "#fafafaff",
"terminal.ansi.black": "#242529ff",
- "terminal.ansi.bright_black": "#242529ff",
+ "terminal.ansi.bright_black": "#747579ff",
"terminal.ansi.dim_black": "#97979aff",
"terminal.ansi.red": "#d36151ff",
"terminal.ansi.bright_red": "#f0b0a4ff",
@@ -489,7 +494,7 @@
"terminal.ansi.bright_cyan": "#a3bedaff",
"terminal.ansi.dim_cyan": "#254058ff",
"terminal.ansi.white": "#fafafaff",
- "terminal.ansi.bright_white": "#fafafaff",
+ "terminal.ansi.bright_white": "#ffffffff",
"terminal.ansi.dim_white": "#aaaaaaff",
"link_text.hover": "#5c78e2ff",
"version_control.added": "#27a657ff",
@@ -638,7 +643,7 @@
"hint": {
"color": "#7274a7ff",
"font_style": null,
- "font_weight": 700
+ "font_weight": null
},
"keyword": {
"color": "#a449abff",
@@ -715,6 +720,11 @@
"font_style": null,
"font_weight": null
},
+ "punctuation.markup": {
+ "color": "#d3604fff",
+ "font_style": null,
+ "font_weight": null
+ },
"punctuation.special": {
"color": "#b92b46ff",
"font_style": null,
diff --git a/ci/Dockerfile.namespace b/ci/Dockerfile.namespace
new file mode 100644
index 0000000000000000000000000000000000000000..f370dae194a0a3e614354ba70f65237e27c3382e
--- /dev/null
+++ b/ci/Dockerfile.namespace
@@ -0,0 +1,21 @@
+ARG NAMESPACE_BASE_IMAGE_REF=""
+
+# Your image must build FROM NAMESPACE_BASE_IMAGE_REF
+FROM ${NAMESPACE_BASE_IMAGE_REF} AS base
+
+# Remove problematic git-lfs packagecloud source
+RUN sudo rm -f /etc/apt/sources.list.d/*git-lfs*.list
+# Install git and SSH for cloning private repositories
+RUN sudo apt-get update && \
+ sudo apt-get install -y git openssh-client
+
+# Clone the Zed repository
+RUN git clone https://github.com/zed-industries/zed.git ~/zed
+
+# Run the Linux installation script
+WORKDIR /home/runner/zed
+RUN ./script/linux
+
+# Clean up unnecessary files to reduce image size
+RUN sudo apt-get clean && sudo rm -rf \
+ /home/runner/zed
diff --git a/clippy.toml b/clippy.toml
index e606ad4c79b5cfe289b1f8460b1f46715103fe1b..0ce7a6cd68d4e8210788eb7a67aa06c742cc8274 100644
--- a/clippy.toml
+++ b/clippy.toml
@@ -3,5 +3,21 @@ avoid-breaking-exported-api = false
ignore-interior-mutability = [
# Suppresses clippy::mutable_key_type, which is a false positive as the Eq
# and Hash impls do not use fields with interior mutability.
- "agent::context::AgentContextKey"
+ "agent_ui::context::AgentContextKey"
+]
+disallowed-methods = [
+ { path = "std::process::Command::spawn", reason = "Spawning `std::process::Command` can block the current thread for an unknown duration", replacement = "smol::process::Command::spawn" },
+ { path = "std::process::Command::output", reason = "Spawning `std::process::Command` can block the current thread for an unknown duration", replacement = "smol::process::Command::output" },
+ { path = "std::process::Command::status", reason = "Spawning `std::process::Command` can block the current thread for an unknown duration", replacement = "smol::process::Command::status" },
+ { path = "std::process::Command::stdin", reason = "`smol::process::Command::from()` does not preserve stdio configuration", replacement = "smol::process::Command::stdin" },
+ { path = "std::process::Command::stdout", reason = "`smol::process::Command::from()` does not preserve stdio configuration", replacement = "smol::process::Command::stdout" },
+ { path = "std::process::Command::stderr", reason = "`smol::process::Command::from()` does not preserve stdio configuration", replacement = "smol::process::Command::stderr" },
+ { path = "serde_json::from_reader", reason = "Parsing from a buffer is much slower than first reading the buffer into a Vec/String, see https://github.com/serde-rs/json/issues/160#issuecomment-253446892. Use `serde_json::from_slice` instead." },
+ { path = "serde_json_lenient::from_reader", reason = "Parsing from a buffer is much slower than first reading the buffer into a Vec/String, see https://github.com/serde-rs/json/issues/160#issuecomment-253446892, Use `serde_json_lenient::from_slice` instead." },
+]
+disallowed-types = [
+ # { path = "std::collections::HashMap", replacement = "collections::HashMap" },
+ # { path = "std::collections::HashSet", replacement = "collections::HashSet" },
+ # { path = "indexmap::IndexSet", replacement = "collections::IndexSet" },
+ # { path = "indexmap::IndexMap", replacement = "collections::IndexMap" },
]
diff --git a/compose.yml b/compose.yml
index d0d9bac425356687bfb33efab9ee24e76d1b30a0..cee63e968b2153235bd47dec1429ccbc5a55db8e 100644
--- a/compose.yml
+++ b/compose.yml
@@ -1,6 +1,6 @@
services:
postgres:
- image: postgres:15
+ image: docker.io/library/postgres:15
container_name: zed_postgres
ports:
- 5432:5432
@@ -23,7 +23,7 @@ services:
- ./.blob_store:/data
livekit_server:
- image: livekit/livekit-server
+ image: docker.io/livekit/livekit-server
container_name: livekit_server
entrypoint: /livekit-server --config /livekit.yaml
ports:
@@ -33,34 +33,8 @@ services:
volumes:
- ./livekit.yaml:/livekit.yaml
- postgrest_app:
- image: postgrest/postgrest
- container_name: postgrest_app
- ports:
- - 8081:8081
- environment:
- PGRST_DB_URI: postgres://postgres@postgres:5432/zed
- volumes:
- - ./crates/collab/postgrest_app.conf:/etc/postgrest.conf
- command: postgrest /etc/postgrest.conf
- depends_on:
- - postgres
-
- postgrest_llm:
- image: postgrest/postgrest
- container_name: postgrest_llm
- ports:
- - 8082:8082
- environment:
- PGRST_DB_URI: postgres://postgres@postgres:5432/zed_llm
- volumes:
- - ./crates/collab/postgrest_llm.conf:/etc/postgrest.conf
- command: postgrest /etc/postgrest.conf
- depends_on:
- - postgres
-
stripe-mock:
- image: stripe/stripe-mock:v0.178.0
+ image: docker.io/stripe/stripe-mock:v0.178.0
ports:
- 12111:12111
- 12112:12112
diff --git a/crates/acp_thread/Cargo.toml b/crates/acp_thread/Cargo.toml
index 2b9a6513c8e91a165bbc51aae3e5b2e831cfb234..09202dc57cb96f5f258e64063f5d61169fa7a045 100644
--- a/crates/acp_thread/Cargo.toml
+++ b/crates/acp_thread/Cargo.toml
@@ -18,7 +18,7 @@ test-support = ["gpui/test-support", "project/test-support", "dep:parking_lot"]
[dependencies]
action_log.workspace = true
agent-client-protocol.workspace = true
-agent.workspace = true
+agent_settings.workspace = true
anyhow.workspace = true
buffer_diff.workspace = true
collections.workspace = true
@@ -28,21 +28,23 @@ futures.workspace = true
gpui.workspace = true
itertools.workspace = true
language.workspace = true
+language_model.workspace = true
markdown.workspace = true
parking_lot = { workspace = true, optional = true }
+portable-pty.workspace = true
project.workspace = true
prompt_store.workspace = true
serde.workspace = true
serde_json.workspace = true
settings.workspace = true
smol.workspace = true
+task.workspace = true
terminal.workspace = true
ui.workspace = true
url.workspace = true
util.workspace = true
uuid.workspace = true
watch.workspace = true
-workspace-hack.workspace = true
[dev-dependencies]
env_logger.workspace = true
diff --git a/crates/acp_thread/src/acp_thread.rs b/crates/acp_thread/src/acp_thread.rs
index fb312653265a408f9ab98a06449d572ab5063714..5ecf2be445ecf8afc6a93e2961302758ea0037ae 100644
--- a/crates/acp_thread/src/acp_thread.rs
+++ b/crates/acp_thread/src/acp_thread.rs
@@ -3,13 +3,21 @@ mod diff;
mod mention;
mod terminal;
+use ::terminal::terminal_settings::TerminalSettings;
+use agent_settings::AgentSettings;
+use collections::HashSet;
pub use connection::*;
pub use diff::*;
+use language::language_settings::FormatOnSave;
pub use mention::*;
+use project::lsp_store::{FormatTrigger, LspFormatTarget};
+use serde::{Deserialize, Serialize};
+use settings::{Settings as _, SettingsLocation};
+use task::{Shell, ShellBuilder};
pub use terminal::*;
use action_log::ActionLog;
-use agent_client_protocol as acp;
+use agent_client_protocol::{self as acp};
use anyhow::{Context as _, Result, anyhow};
use editor::Bias;
use futures::{FutureExt, channel::oneshot, future::BoxFuture};
@@ -24,9 +32,11 @@ use std::fmt::{Formatter, Write};
use std::ops::Range;
use std::process::ExitStatus;
use std::rc::Rc;
+use std::time::{Duration, Instant};
use std::{fmt::Display, mem, path::PathBuf, sync::Arc};
use ui::App;
-use util::ResultExt;
+use util::{ResultExt, get_default_system_shell_preferring_bash, paths::PathStyle};
+use uuid::Uuid;
#[derive(Debug)]
pub struct UserMessage {
@@ -48,7 +58,7 @@ impl UserMessage {
if self
.checkpoint
.as_ref()
- .map_or(false, |checkpoint| checkpoint.show)
+ .is_some_and(|checkpoint| checkpoint.show)
{
writeln!(markdown, "## User (checkpoint)").unwrap();
} else {
@@ -85,9 +95,14 @@ pub enum AssistantMessageChunk {
}
impl AssistantMessageChunk {
- pub fn from_str(chunk: &str, language_registry: &Arc, cx: &mut App) -> Self {
+ pub fn from_str(
+ chunk: &str,
+ language_registry: &Arc,
+ path_style: PathStyle,
+ cx: &mut App,
+ ) -> Self {
Self::Message {
- block: ContentBlock::new(chunk.into(), language_registry, cx),
+ block: ContentBlock::new(chunk.into(), language_registry, path_style, cx),
}
}
@@ -176,38 +191,49 @@ impl ToolCall {
tool_call: acp::ToolCall,
status: ToolCallStatus,
language_registry: Arc,
+ path_style: PathStyle,
+ terminals: &HashMap>,
cx: &mut App,
- ) -> Self {
- Self {
+ ) -> Result {
+ let title = if let Some((first_line, _)) = tool_call.title.split_once("\n") {
+ first_line.to_owned() + "…"
+ } else {
+ tool_call.title
+ };
+ let mut content = Vec::with_capacity(tool_call.content.len());
+ for item in tool_call.content {
+ content.push(ToolCallContent::from_acp(
+ item,
+ language_registry.clone(),
+ path_style,
+ terminals,
+ cx,
+ )?);
+ }
+
+ let result = Self {
id: tool_call.id,
- label: cx.new(|cx| {
- Markdown::new(
- tool_call.title.into(),
- Some(language_registry.clone()),
- None,
- cx,
- )
- }),
+ label: cx
+ .new(|cx| Markdown::new(title.into(), Some(language_registry.clone()), None, cx)),
kind: tool_call.kind,
- content: tool_call
- .content
- .into_iter()
- .map(|content| ToolCallContent::from_acp(content, language_registry.clone(), cx))
- .collect(),
+ content,
locations: tool_call.locations,
resolved_locations: Vec::default(),
status,
raw_input: tool_call.raw_input,
raw_output: tool_call.raw_output,
- }
+ };
+ Ok(result)
}
fn update_fields(
&mut self,
fields: acp::ToolCallUpdateFields,
language_registry: Arc,
+ path_style: PathStyle,
+ terminals: &HashMap>,
cx: &mut App,
- ) {
+ ) -> Result<()> {
let acp::ToolCallUpdateFields {
kind,
status,
@@ -228,15 +254,32 @@ impl ToolCall {
if let Some(title) = title {
self.label.update(cx, |label, cx| {
- label.replace(title, cx);
+ if let Some((first_line, _)) = title.split_once("\n") {
+ label.replace(first_line.to_owned() + "…", cx)
+ } else {
+ label.replace(title, cx);
+ }
});
}
if let Some(content) = content {
- self.content = content
- .into_iter()
- .map(|chunk| ToolCallContent::from_acp(chunk, language_registry.clone(), cx))
- .collect();
+ let new_content_len = content.len();
+ let mut content = content.into_iter();
+
+ // Reuse existing content if we can
+ for (old, new) in self.content.iter_mut().zip(content.by_ref()) {
+ old.update_from_acp(new, language_registry.clone(), path_style, terminals, cx)?;
+ }
+ for new in content {
+ self.content.push(ToolCallContent::from_acp(
+ new,
+ language_registry.clone(),
+ path_style,
+ terminals,
+ cx,
+ )?)
+ }
+ self.content.truncate(new_content_len);
}
if let Some(locations) = locations {
@@ -248,17 +291,17 @@ impl ToolCall {
}
if let Some(raw_output) = raw_output {
- if self.content.is_empty() {
- if let Some(markdown) = markdown_for_raw_output(&raw_output, &language_registry, cx)
- {
- self.content
- .push(ToolCallContent::ContentBlock(ContentBlock::Markdown {
- markdown,
- }));
- }
+ if self.content.is_empty()
+ && let Some(markdown) = markdown_for_raw_output(&raw_output, &language_registry, cx)
+ {
+ self.content
+ .push(ToolCallContent::ContentBlock(ContentBlock::Markdown {
+ markdown,
+ }));
}
self.raw_output = Some(raw_output);
}
+ Ok(())
}
pub fn diffs(&self) -> impl Iterator- > {
@@ -294,14 +337,12 @@ impl ToolCall {
location: acp::ToolCallLocation,
project: WeakEntity,
cx: &mut AsyncApp,
- ) -> Option {
+ ) -> Option {
let buffer = project
.update(cx, |project, cx| {
- if let Some(path) = project.project_path_for_absolute_path(&location.path, cx) {
- Some(project.open_buffer(path, cx))
- } else {
- None
- }
+ project
+ .project_path_for_absolute_path(&location.path, cx)
+ .map(|path| project.open_buffer(path, cx))
})
.ok()??;
let buffer = buffer.await.log_err()?;
@@ -318,17 +359,14 @@ impl ToolCall {
})
.ok()?;
- Some(AgentLocation {
- buffer: buffer.downgrade(),
- position,
- })
+ Some(ResolvedLocation { buffer, position })
}
fn resolve_locations(
&self,
project: Entity,
cx: &mut App,
- ) -> Task>> {
+ ) -> Task>> {
let locations = self.locations.clone();
project.update(cx, |_, cx| {
cx.spawn(async move |project, cx| {
@@ -342,6 +380,23 @@ impl ToolCall {
}
}
+// Separate so we can hold a strong reference to the buffer
+// for saving on the thread
+#[derive(Clone, Debug, PartialEq, Eq)]
+struct ResolvedLocation {
+ buffer: Entity,
+ position: Anchor,
+}
+
+impl From<&ResolvedLocation> for AgentLocation {
+ fn from(value: &ResolvedLocation) -> Self {
+ Self {
+ buffer: value.buffer.downgrade(),
+ position: value.position,
+ }
+ }
+}
+
#[derive(Debug)]
pub enum ToolCallStatus {
/// The tool call hasn't started running yet, but we start showing it to
@@ -404,21 +459,23 @@ impl ContentBlock {
pub fn new(
block: acp::ContentBlock,
language_registry: &Arc,
+ path_style: PathStyle,
cx: &mut App,
) -> Self {
let mut this = Self::Empty;
- this.append(block, language_registry, cx);
+ this.append(block, language_registry, path_style, cx);
this
}
pub fn new_combined(
blocks: impl IntoIterator
- ,
language_registry: Arc,
+ path_style: PathStyle,
cx: &mut App,
) -> Self {
let mut this = Self::Empty;
for block in blocks {
- this.append(block, &language_registry, cx);
+ this.append(block, &language_registry, path_style, cx);
}
this
}
@@ -427,16 +484,17 @@ impl ContentBlock {
&mut self,
block: acp::ContentBlock,
language_registry: &Arc,
+ path_style: PathStyle,
cx: &mut App,
) {
- if matches!(self, ContentBlock::Empty) {
- if let acp::ContentBlock::ResourceLink(resource_link) = block {
- *self = ContentBlock::ResourceLink { resource_link };
- return;
- }
+ if matches!(self, ContentBlock::Empty)
+ && let acp::ContentBlock::ResourceLink(resource_link) = block
+ {
+ *self = ContentBlock::ResourceLink { resource_link };
+ return;
}
- let new_content = self.block_string_contents(block);
+ let new_content = self.block_string_contents(block, path_style);
match self {
ContentBlock::Empty => {
@@ -446,7 +504,7 @@ impl ContentBlock {
markdown.update(cx, |markdown, cx| markdown.append(&new_content, cx));
}
ContentBlock::ResourceLink { resource_link } => {
- let existing_content = Self::resource_link_md(&resource_link.uri);
+ let existing_content = Self::resource_link_md(&resource_link.uri, path_style);
let combined = format!("{}\n{}", existing_content, new_content);
*self = Self::create_markdown_block(combined, language_registry, cx);
@@ -465,11 +523,11 @@ impl ContentBlock {
}
}
- fn block_string_contents(&self, block: acp::ContentBlock) -> String {
+ fn block_string_contents(&self, block: acp::ContentBlock, path_style: PathStyle) -> String {
match block {
- acp::ContentBlock::Text(text_content) => text_content.text.clone(),
+ acp::ContentBlock::Text(text_content) => text_content.text,
acp::ContentBlock::ResourceLink(resource_link) => {
- Self::resource_link_md(&resource_link.uri)
+ Self::resource_link_md(&resource_link.uri, path_style)
}
acp::ContentBlock::Resource(acp::EmbeddedResource {
resource:
@@ -478,14 +536,14 @@ impl ContentBlock {
..
}),
..
- }) => Self::resource_link_md(&uri),
+ }) => Self::resource_link_md(&uri, path_style),
acp::ContentBlock::Image(image) => Self::image_md(&image),
acp::ContentBlock::Audio(_) | acp::ContentBlock::Resource(_) => String::new(),
}
}
- fn resource_link_md(uri: &str) -> String {
- if let Some(uri) = MentionUri::parse(&uri).log_err() {
+ fn resource_link_md(uri: &str, path_style: PathStyle) -> String {
+ if let Some(uri) = MentionUri::parse(uri, path_style).log_err() {
uri.as_link().to_string()
} else {
uri.to_string()
@@ -496,7 +554,7 @@ impl ContentBlock {
"`Image`".into()
}
- fn to_markdown<'a>(&'a self, cx: &'a App) -> &'a str {
+ pub fn to_markdown<'a>(&'a self, cx: &'a App) -> &'a str {
match self {
ContentBlock::Empty => "",
ContentBlock::Markdown { markdown } => markdown.read(cx).source(),
@@ -531,16 +589,57 @@ impl ToolCallContent {
pub fn from_acp(
content: acp::ToolCallContent,
language_registry: Arc,
+ path_style: PathStyle,
+ terminals: &HashMap>,
cx: &mut App,
- ) -> Self {
+ ) -> Result {
match content {
- acp::ToolCallContent::Content { content } => {
- Self::ContentBlock(ContentBlock::new(content, &language_registry, cx))
- }
- acp::ToolCallContent::Diff { diff } => {
- Self::Diff(cx.new(|cx| Diff::from_acp(diff, language_registry, cx)))
+ acp::ToolCallContent::Content { content } => Ok(Self::ContentBlock(ContentBlock::new(
+ content,
+ &language_registry,
+ path_style,
+ cx,
+ ))),
+ acp::ToolCallContent::Diff { diff } => Ok(Self::Diff(cx.new(|cx| {
+ Diff::finalized(
+ diff.path.to_string_lossy().into_owned(),
+ diff.old_text,
+ diff.new_text,
+ language_registry,
+ cx,
+ )
+ }))),
+ acp::ToolCallContent::Terminal { terminal_id } => terminals
+ .get(&terminal_id)
+ .cloned()
+ .map(Self::Terminal)
+ .ok_or_else(|| anyhow::anyhow!("Terminal with id `{}` not found", terminal_id)),
+ }
+ }
+
+ pub fn update_from_acp(
+ &mut self,
+ new: acp::ToolCallContent,
+ language_registry: Arc,
+ path_style: PathStyle,
+ terminals: &HashMap>,
+ cx: &mut App,
+ ) -> Result<()> {
+ let needs_update = match (&self, &new) {
+ (Self::Diff(old_diff), acp::ToolCallContent::Diff { diff: new_diff }) => {
+ old_diff.read(cx).needs_update(
+ new_diff.old_text.as_deref().unwrap_or(""),
+ &new_diff.new_text,
+ cx,
+ )
}
+ _ => true,
+ };
+
+ if needs_update {
+ *self = Self::from_acp(new, language_registry, path_style, terminals, cx)?;
}
+ Ok(())
}
pub fn to_markdown(&self, cx: &App) -> String {
@@ -658,6 +757,52 @@ impl PlanEntry {
}
}
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub struct TokenUsage {
+ pub max_tokens: u64,
+ pub used_tokens: u64,
+}
+
+impl TokenUsage {
+ pub fn ratio(&self) -> TokenUsageRatio {
+ #[cfg(debug_assertions)]
+ let warning_threshold: f32 = std::env::var("ZED_THREAD_WARNING_THRESHOLD")
+ .unwrap_or("0.8".to_string())
+ .parse()
+ .unwrap();
+ #[cfg(not(debug_assertions))]
+ let warning_threshold: f32 = 0.8;
+
+ // When the maximum is unknown because there is no selected model,
+ // avoid showing the token limit warning.
+ if self.max_tokens == 0 {
+ TokenUsageRatio::Normal
+ } else if self.used_tokens >= self.max_tokens {
+ TokenUsageRatio::Exceeded
+ } else if self.used_tokens as f32 / self.max_tokens as f32 >= warning_threshold {
+ TokenUsageRatio::Warning
+ } else {
+ TokenUsageRatio::Normal
+ }
+ }
+}
+
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub enum TokenUsageRatio {
+ Normal,
+ Warning,
+ Exceeded,
+}
+
+#[derive(Debug, Clone)]
+pub struct RetryStatus {
+ pub last_error: SharedString,
+ pub attempt: usize,
+ pub max_attempts: usize,
+ pub started_at: Instant,
+ pub duration: Duration,
+}
+
pub struct AcpThread {
title: SharedString,
entries: Vec,
@@ -668,44 +813,190 @@ pub struct AcpThread {
send_task: Option>,
connection: Rc,
session_id: acp::SessionId,
+ token_usage: Option,
+ prompt_capabilities: acp::PromptCapabilities,
+ _observe_prompt_capabilities: Task>,
+ terminals: HashMap>,
+ pending_terminal_output: HashMap>>,
+ pending_terminal_exit: HashMap,
}
+#[derive(Debug)]
pub enum AcpThreadEvent {
NewEntry,
+ TitleUpdated,
+ TokenUsageUpdated,
EntryUpdated(usize),
EntriesRemoved(Range),
ToolAuthorizationRequired,
+ Retry(RetryStatus),
Stopped,
Error,
- ServerExited(ExitStatus),
+ LoadError(LoadError),
+ PromptCapabilitiesUpdated,
+ Refusal,
+ AvailableCommandsUpdated(Vec),
+ ModeUpdated(acp::SessionModeId),
}
impl EventEmitter for AcpThread {}
-#[derive(PartialEq, Eq)]
+#[derive(Debug, Clone)]
+pub enum TerminalProviderEvent {
+ Created {
+ terminal_id: acp::TerminalId,
+ label: String,
+ cwd: Option,
+ output_byte_limit: Option,
+ terminal: Entity<::terminal::Terminal>,
+ },
+ Output {
+ terminal_id: acp::TerminalId,
+ data: Vec,
+ },
+ TitleChanged {
+ terminal_id: acp::TerminalId,
+ title: String,
+ },
+ Exit {
+ terminal_id: acp::TerminalId,
+ status: acp::TerminalExitStatus,
+ },
+}
+
+#[derive(Debug, Clone)]
+pub enum TerminalProviderCommand {
+ WriteInput {
+ terminal_id: acp::TerminalId,
+ bytes: Vec,
+ },
+ Resize {
+ terminal_id: acp::TerminalId,
+ cols: u16,
+ rows: u16,
+ },
+ Close {
+ terminal_id: acp::TerminalId,
+ },
+}
+
+impl AcpThread {
+ pub fn on_terminal_provider_event(
+ &mut self,
+ event: TerminalProviderEvent,
+ cx: &mut Context,
+ ) {
+ match event {
+ TerminalProviderEvent::Created {
+ terminal_id,
+ label,
+ cwd,
+ output_byte_limit,
+ terminal,
+ } => {
+ let entity = self.register_terminal_created(
+ terminal_id.clone(),
+ label,
+ cwd,
+ output_byte_limit,
+ terminal,
+ cx,
+ );
+
+ if let Some(mut chunks) = self.pending_terminal_output.remove(&terminal_id) {
+ for data in chunks.drain(..) {
+ entity.update(cx, |term, cx| {
+ term.inner().update(cx, |inner, cx| {
+ inner.write_output(&data, cx);
+ })
+ });
+ }
+ }
+
+ if let Some(_status) = self.pending_terminal_exit.remove(&terminal_id) {
+ entity.update(cx, |_term, cx| {
+ cx.notify();
+ });
+ }
+
+ cx.notify();
+ }
+ TerminalProviderEvent::Output { terminal_id, data } => {
+ if let Some(entity) = self.terminals.get(&terminal_id) {
+ entity.update(cx, |term, cx| {
+ term.inner().update(cx, |inner, cx| {
+ inner.write_output(&data, cx);
+ })
+ });
+ } else {
+ self.pending_terminal_output
+ .entry(terminal_id)
+ .or_default()
+ .push(data);
+ }
+ }
+ TerminalProviderEvent::TitleChanged { terminal_id, title } => {
+ if let Some(entity) = self.terminals.get(&terminal_id) {
+ entity.update(cx, |term, cx| {
+ term.inner().update(cx, |inner, cx| {
+ inner.breadcrumb_text = title;
+ cx.emit(::terminal::Event::BreadcrumbsChanged);
+ })
+ });
+ }
+ }
+ TerminalProviderEvent::Exit {
+ terminal_id,
+ status,
+ } => {
+ if let Some(entity) = self.terminals.get(&terminal_id) {
+ entity.update(cx, |_term, cx| {
+ cx.notify();
+ });
+ } else {
+ self.pending_terminal_exit.insert(terminal_id, status);
+ }
+ }
+ }
+ }
+}
+
+#[derive(PartialEq, Eq, Debug)]
pub enum ThreadStatus {
Idle,
- WaitingForToolConfirmation,
Generating,
}
#[derive(Debug, Clone)]
pub enum LoadError {
Unsupported {
- error_message: SharedString,
- upgrade_message: SharedString,
- upgrade_command: String,
+ command: SharedString,
+ current_version: SharedString,
+ minimum_version: SharedString,
+ },
+ FailedToInstall(SharedString),
+ Exited {
+ status: ExitStatus,
},
- Exited(i32),
Other(SharedString),
}
impl Display for LoadError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
- LoadError::Unsupported { error_message, .. } => write!(f, "{}", error_message),
- LoadError::Exited(status) => write!(f, "Server exited with status {}", status),
- LoadError::Other(msg) => write!(f, "{}", msg),
+ LoadError::Unsupported {
+ command: path,
+ current_version,
+ minimum_version,
+ } => {
+ write!(
+ f,
+ "version {current_version} from {path} is not supported (need at least {minimum_version})"
+ )
+ }
+ LoadError::FailedToInstall(msg) => write!(f, "Failed to install: {msg}"),
+ LoadError::Exited { status } => write!(f, "Server exited with status {status}"),
+ LoadError::Other(msg) => write!(f, "{msg}"),
}
}
}
@@ -717,10 +1008,21 @@ impl AcpThread {
title: impl Into,
connection: Rc,
project: Entity,
+ action_log: Entity,
session_id: acp::SessionId,
+ mut prompt_capabilities_rx: watch::Receiver,
cx: &mut Context,
) -> Self {
- let action_log = cx.new(|_| ActionLog::new(project.clone()));
+ let prompt_capabilities = prompt_capabilities_rx.borrow().clone();
+ let task = cx.spawn::<_, anyhow::Result<()>>(async move |this, cx| {
+ loop {
+ let caps = prompt_capabilities_rx.recv().await?;
+ this.update(cx, |this, cx| {
+ this.prompt_capabilities = caps;
+ cx.emit(AcpThreadEvent::PromptCapabilitiesUpdated);
+ })?;
+ }
+ });
Self {
action_log,
@@ -732,9 +1034,19 @@ impl AcpThread {
send_task: None,
connection,
session_id,
+ token_usage: None,
+ prompt_capabilities,
+ _observe_prompt_capabilities: task,
+ terminals: HashMap::default(),
+ pending_terminal_output: HashMap::default(),
+ pending_terminal_exit: HashMap::default(),
}
}
+ pub fn prompt_capabilities(&self) -> acp::PromptCapabilities {
+ self.prompt_capabilities.clone()
+ }
+
pub fn connection(&self) -> &Rc {
&self.connection
}
@@ -761,16 +1073,16 @@ impl AcpThread {
pub fn status(&self) -> ThreadStatus {
if self.send_task.is_some() {
- if self.waiting_for_tool_confirmation() {
- ThreadStatus::WaitingForToolConfirmation
- } else {
- ThreadStatus::Generating
- }
+ ThreadStatus::Generating
} else {
ThreadStatus::Idle
}
}
+ pub fn token_usage(&self) -> Option<&TokenUsage> {
+ self.token_usage.as_ref()
+ }
+
pub fn has_pending_edit_tool_calls(&self) -> bool {
for entry in self.entries.iter().rev() {
match entry {
@@ -808,13 +1120,13 @@ impl AcpThread {
cx: &mut Context,
) -> Result<(), acp::Error> {
match update {
- acp::SessionUpdate::UserMessageChunk { content } => {
+ acp::SessionUpdate::UserMessageChunk(acp::ContentChunk { content, .. }) => {
self.push_user_content_block(None, content, cx);
}
- acp::SessionUpdate::AgentMessageChunk { content } => {
+ acp::SessionUpdate::AgentMessageChunk(acp::ContentChunk { content, .. }) => {
self.push_assistant_content_block(content, false, cx);
}
- acp::SessionUpdate::AgentThoughtChunk { content } => {
+ acp::SessionUpdate::AgentThoughtChunk(acp::ContentChunk { content, .. }) => {
self.push_assistant_content_block(content, true, cx);
}
acp::SessionUpdate::ToolCall(tool_call) => {
@@ -826,6 +1138,14 @@ impl AcpThread {
acp::SessionUpdate::Plan(plan) => {
self.update_plan(plan, cx);
}
+ acp::SessionUpdate::AvailableCommandsUpdate(acp::AvailableCommandsUpdate {
+ available_commands,
+ ..
+ }) => cx.emit(AcpThreadEvent::AvailableCommandsUpdated(available_commands)),
+ acp::SessionUpdate::CurrentModeUpdate(acp::CurrentModeUpdate {
+ current_mode_id,
+ ..
+ }) => cx.emit(AcpThreadEvent::ModeUpdated(current_mode_id)),
}
Ok(())
}
@@ -837,6 +1157,7 @@ impl AcpThread {
cx: &mut Context,
) {
let language_registry = self.project.read(cx).languages().clone();
+ let path_style = self.project.read(cx).path_style(cx);
let entries_len = self.entries.len();
if let Some(last_entry) = self.entries.last_mut()
@@ -848,12 +1169,12 @@ impl AcpThread {
}) = last_entry
{
*id = message_id.or(id.take());
- content.append(chunk.clone(), &language_registry, cx);
+ content.append(chunk.clone(), &language_registry, path_style, cx);
chunks.push(chunk);
let idx = entries_len - 1;
cx.emit(AcpThreadEvent::EntryUpdated(idx));
} else {
- let content = ContentBlock::new(chunk.clone(), &language_registry, cx);
+ let content = ContentBlock::new(chunk.clone(), &language_registry, path_style, cx);
self.push_entry(
AgentThreadEntry::UserMessage(UserMessage {
id: message_id,
@@ -873,6 +1194,7 @@ impl AcpThread {
cx: &mut Context,
) {
let language_registry = self.project.read(cx).languages().clone();
+ let path_style = self.project.read(cx).path_style(cx);
let entries_len = self.entries.len();
if let Some(last_entry) = self.entries.last_mut()
&& let AgentThreadEntry::AssistantMessage(AssistantMessage { chunks }) = last_entry
@@ -882,10 +1204,10 @@ impl AcpThread {
match (chunks.last_mut(), is_thought) {
(Some(AssistantMessageChunk::Message { block }), false)
| (Some(AssistantMessageChunk::Thought { block }), true) => {
- block.append(chunk, &language_registry, cx)
+ block.append(chunk, &language_registry, path_style, cx)
}
_ => {
- let block = ContentBlock::new(chunk, &language_registry, cx);
+ let block = ContentBlock::new(chunk, &language_registry, path_style, cx);
if is_thought {
chunks.push(AssistantMessageChunk::Thought { block })
} else {
@@ -894,7 +1216,7 @@ impl AcpThread {
}
}
} else {
- let block = ContentBlock::new(chunk, &language_registry, cx);
+ let block = ContentBlock::new(chunk, &language_registry, path_style, cx);
let chunk = if is_thought {
AssistantMessageChunk::Thought { block }
} else {
@@ -915,6 +1237,30 @@ impl AcpThread {
cx.emit(AcpThreadEvent::NewEntry);
}
+ pub fn can_set_title(&mut self, cx: &mut Context) -> bool {
+ self.connection.set_title(&self.session_id, cx).is_some()
+ }
+
+ pub fn set_title(&mut self, title: SharedString, cx: &mut Context) -> Task> {
+ if title != self.title {
+ self.title = title.clone();
+ cx.emit(AcpThreadEvent::TitleUpdated);
+ if let Some(set_title) = self.connection.set_title(&self.session_id, cx) {
+ return set_title.run(title, cx);
+ }
+ }
+ Task::ready(Ok(()))
+ }
+
+ pub fn update_token_usage(&mut self, usage: Option, cx: &mut Context) {
+ self.token_usage = usage;
+ cx.emit(AcpThreadEvent::TokenUsageUpdated);
+ }
+
+ pub fn update_retry_status(&mut self, status: RetryStatus, cx: &mut Context) {
+ cx.emit(AcpThreadEvent::Retry(status));
+ }
+
pub fn update_tool_call(
&mut self,
update: impl Into,
@@ -922,28 +1268,55 @@ impl AcpThread {
) -> Result<()> {
let update = update.into();
let languages = self.project.read(cx).languages().clone();
+ let path_style = self.project.read(cx).path_style(cx);
+
+ let ix = match self.index_for_tool_call(update.id()) {
+ Some(ix) => ix,
+ None => {
+ // Tool call not found - create a failed tool call entry
+ let failed_tool_call = ToolCall {
+ id: update.id().clone(),
+ label: cx.new(|cx| Markdown::new("Tool call not found".into(), None, None, cx)),
+ kind: acp::ToolKind::Fetch,
+ content: vec![ToolCallContent::ContentBlock(ContentBlock::new(
+ acp::ContentBlock::Text(acp::TextContent {
+ text: "Tool call not found".to_string(),
+ annotations: None,
+ meta: None,
+ }),
+ &languages,
+ path_style,
+ cx,
+ ))],
+ status: ToolCallStatus::Failed,
+ locations: Vec::new(),
+ resolved_locations: Vec::new(),
+ raw_input: None,
+ raw_output: None,
+ };
+ self.push_entry(AgentThreadEntry::ToolCall(failed_tool_call), cx);
+ return Ok(());
+ }
+ };
+ let AgentThreadEntry::ToolCall(call) = &mut self.entries[ix] else {
+ unreachable!()
+ };
- let (ix, current_call) = self
- .tool_call_mut(update.id())
- .context("Tool call not found")?;
match update {
ToolCallUpdate::UpdateFields(update) => {
let location_updated = update.fields.locations.is_some();
- current_call.update_fields(update.fields, languages, cx);
+ call.update_fields(update.fields, languages, path_style, &self.terminals, cx)?;
if location_updated {
- self.resolve_locations(update.id.clone(), cx);
+ self.resolve_locations(update.id, cx);
}
}
ToolCallUpdate::UpdateDiff(update) => {
- current_call.content.clear();
- current_call
- .content
- .push(ToolCallContent::Diff(update.diff));
+ call.content.clear();
+ call.content.push(ToolCallContent::Diff(update.diff));
}
ToolCallUpdate::UpdateTerminal(update) => {
- current_call.content.clear();
- current_call
- .content
+ call.content.clear();
+ call.content
.push(ToolCallContent::Terminal(update.terminal));
}
}
@@ -966,21 +1339,38 @@ impl AcpThread {
/// Fails if id does not match an existing entry.
pub fn upsert_tool_call_inner(
&mut self,
- tool_call_update: acp::ToolCallUpdate,
+ update: acp::ToolCallUpdate,
status: ToolCallStatus,
cx: &mut Context,
) -> Result<(), acp::Error> {
let language_registry = self.project.read(cx).languages().clone();
- let id = tool_call_update.id.clone();
+ let path_style = self.project.read(cx).path_style(cx);
+ let id = update.id.clone();
+
+ if let Some(ix) = self.index_for_tool_call(&id) {
+ let AgentThreadEntry::ToolCall(call) = &mut self.entries[ix] else {
+ unreachable!()
+ };
- if let Some((ix, current_call)) = self.tool_call_mut(&id) {
- current_call.update_fields(tool_call_update.fields, language_registry, cx);
- current_call.status = status;
+ call.update_fields(
+ update.fields,
+ language_registry,
+ path_style,
+ &self.terminals,
+ cx,
+ )?;
+ call.status = status;
cx.emit(AcpThreadEvent::EntryUpdated(ix));
} else {
- let call =
- ToolCall::from_acp(tool_call_update.try_into()?, status, language_registry, cx);
+ let call = ToolCall::from_acp(
+ update.try_into()?,
+ status,
+ language_registry,
+ self.project.read(cx).path_style(cx),
+ &self.terminals,
+ cx,
+ )?;
self.push_entry(AgentThreadEntry::ToolCall(call), cx);
};
@@ -988,6 +1378,22 @@ impl AcpThread {
Ok(())
}
+ fn index_for_tool_call(&self, id: &acp::ToolCallId) -> Option {
+ self.entries
+ .iter()
+ .enumerate()
+ .rev()
+ .find_map(|(index, entry)| {
+ if let AgentThreadEntry::ToolCall(tool_call) = entry
+ && &tool_call.id == id
+ {
+ Some(index)
+ } else {
+ None
+ }
+ })
+ }
+
fn tool_call_mut(&mut self, id: &acp::ToolCallId) -> Option<(usize, &mut ToolCall)> {
// The tool call we are looking for is typically the last one, or very close to the end.
// At the moment, it doesn't seem like a hashmap would be a good fit for this use case.
@@ -1006,6 +1412,22 @@ impl AcpThread {
})
}
+ pub fn tool_call(&mut self, id: &acp::ToolCallId) -> Option<(usize, &ToolCall)> {
+ self.entries
+ .iter()
+ .enumerate()
+ .rev()
+ .find_map(|(index, tool_call)| {
+ if let AgentThreadEntry::ToolCall(tool_call) = tool_call
+ && &tool_call.id == id
+ {
+ Some((index, tool_call))
+ } else {
+ None
+ }
+ })
+ }
+
pub fn resolve_locations(&mut self, id: acp::ToolCallId, cx: &mut Context) {
let project = self.project.clone();
let Some((_, tool_call)) = self.tool_call_mut(&id) else {
@@ -1014,35 +1436,46 @@ impl AcpThread {
let task = tool_call.resolve_locations(project, cx);
cx.spawn(async move |this, cx| {
let resolved_locations = task.await;
+
this.update(cx, |this, cx| {
let project = this.project.clone();
+
+ for location in resolved_locations.iter().flatten() {
+ this.shared_buffers
+ .insert(location.buffer.clone(), location.buffer.read(cx).snapshot());
+ }
let Some((ix, tool_call)) = this.tool_call_mut(&id) else {
return;
};
+
if let Some(Some(location)) = resolved_locations.last() {
project.update(cx, |project, cx| {
- if let Some(agent_location) = project.agent_location() {
- let should_ignore = agent_location.buffer == location.buffer
- && location
- .buffer
- .update(cx, |buffer, _| {
- let snapshot = buffer.snapshot();
- let old_position =
- agent_location.position.to_point(&snapshot);
- let new_position = location.position.to_point(&snapshot);
- // ignore this so that when we get updates from the edit tool
- // the position doesn't reset to the startof line
- old_position.row == new_position.row
- && old_position.column > new_position.column
- })
- .ok()
- .unwrap_or_default();
- if !should_ignore {
- project.set_agent_location(Some(location.clone()), cx);
- }
+ let should_ignore = if let Some(agent_location) = project
+ .agent_location()
+ .filter(|agent_location| agent_location.buffer == location.buffer)
+ {
+ let snapshot = location.buffer.read(cx).snapshot();
+ let old_position = agent_location.position.to_point(&snapshot);
+ let new_position = location.position.to_point(&snapshot);
+
+ // ignore this so that when we get updates from the edit tool
+ // the position doesn't reset to the startof line
+ old_position.row == new_position.row
+ && old_position.column > new_position.column
+ } else {
+ false
+ };
+ if !should_ignore {
+ project.set_agent_location(Some(location.into()), cx);
}
});
}
+
+ let resolved_locations = resolved_locations
+ .iter()
+ .map(|l| l.as_ref().map(|l| AgentLocation::from(l)))
+ .collect::>();
+
if tool_call.resolved_locations != resolved_locations {
tool_call.resolved_locations = resolved_locations;
cx.emit(AcpThreadEvent::EntryUpdated(ix));
@@ -1056,10 +1489,31 @@ impl AcpThread {
&mut self,
tool_call: acp::ToolCallUpdate,
options: Vec,
+ respect_always_allow_setting: bool,
cx: &mut Context,
- ) -> Result, acp::Error> {
+ ) -> Result> {
let (tx, rx) = oneshot::channel();
+ if respect_always_allow_setting && AgentSettings::get_global(cx).always_allow_tool_actions {
+ // Don't use AllowAlways, because then if you were to turn off always_allow_tool_actions,
+ // some tools would (incorrectly) continue to auto-accept.
+ if let Some(allow_once_option) = options.iter().find_map(|option| {
+ if matches!(option.kind, acp::PermissionOptionKind::AllowOnce) {
+ Some(option.id.clone())
+ } else {
+ None
+ }
+ }) {
+ self.upsert_tool_call_inner(tool_call, ToolCallStatus::Pending, cx)?;
+ return Ok(async {
+ acp::RequestPermissionOutcome::Selected {
+ option_id: allow_once_option,
+ }
+ }
+ .boxed());
+ }
+ }
+
let status = ToolCallStatus::WaitingForConfirmation {
options,
respond_tx: tx,
@@ -1067,7 +1521,16 @@ impl AcpThread {
self.upsert_tool_call_inner(tool_call, status, cx)?;
cx.emit(AcpThreadEvent::ToolAuthorizationRequired);
- Ok(rx)
+
+ let fut = async {
+ match rx.await {
+ Ok(option) => acp::RequestPermissionOutcome::Selected { option_id: option },
+ Err(oneshot::Canceled) => acp::RequestPermissionOutcome::Cancelled,
+ }
+ }
+ .boxed();
+
+ Ok(fut)
}
pub fn authorize_tool_call(
@@ -1101,26 +1564,27 @@ impl AcpThread {
cx.emit(AcpThreadEvent::EntryUpdated(ix));
}
- /// Returns true if the last turn is awaiting tool authorization
- pub fn waiting_for_tool_confirmation(&self) -> bool {
+ pub fn first_tool_awaiting_confirmation(&self) -> Option<&ToolCall> {
+ let mut first_tool_call = None;
+
for entry in self.entries.iter().rev() {
match &entry {
- AgentThreadEntry::ToolCall(call) => match call.status {
- ToolCallStatus::WaitingForConfirmation { .. } => return true,
- ToolCallStatus::Pending
- | ToolCallStatus::InProgress
- | ToolCallStatus::Completed
- | ToolCallStatus::Failed
- | ToolCallStatus::Rejected
- | ToolCallStatus::Canceled => continue,
- },
+ AgentThreadEntry::ToolCall(call) => {
+ if let ToolCallStatus::WaitingForConfirmation { .. } = call.status {
+ first_tool_call = Some(call);
+ } else {
+ continue;
+ }
+ }
AgentThreadEntry::UserMessage(_) | AgentThreadEntry::AssistantMessage(_) => {
- // Reached the beginning of the turn
- return false;
+ // Reached the beginning of the turn.
+ // If we had pending permission requests in the previous turn, they have been cancelled.
+ break;
}
}
}
- false
+
+ first_tool_call
}
pub fn plan(&self) -> &Plan {
@@ -1169,6 +1633,7 @@ impl AcpThread {
vec![acp::ContentBlock::Text(acp::TextContent {
text: message.to_string(),
annotations: None,
+ meta: None,
})],
cx,
)
@@ -1182,34 +1647,36 @@ impl AcpThread {
let block = ContentBlock::new_combined(
message.clone(),
self.project.read(cx).languages().clone(),
+ self.project.read(cx).path_style(cx),
cx,
);
let request = acp::PromptRequest {
prompt: message.clone(),
session_id: self.session_id.clone(),
+ meta: None,
};
let git_store = self.project.read(cx).git_store().clone();
- let message_id = if self
- .connection
- .session_editor(&self.session_id, cx)
- .is_some()
- {
+ let message_id = if self.connection.truncate(&self.session_id, cx).is_some() {
Some(UserMessageId::new())
} else {
None
};
- self.push_entry(
- AgentThreadEntry::UserMessage(UserMessage {
- id: message_id.clone(),
- content: block,
- chunks: message,
- checkpoint: None,
- }),
- cx,
- );
self.run_turn(cx, async move |this, cx| {
+ this.update(cx, |this, cx| {
+ this.push_entry(
+ AgentThreadEntry::UserMessage(UserMessage {
+ id: message_id.clone(),
+ content: block,
+ chunks: message,
+ checkpoint: None,
+ }),
+ cx,
+ );
+ })
+ .ok();
+
let old_checkpoint = git_store
.update(cx, |git, cx| git.checkpoint(cx))?
.await
@@ -1228,6 +1695,10 @@ impl AcpThread {
})
}
+ pub fn can_resume(&self, cx: &App) -> bool {
+ self.connection.resume(&self.session_id, cx).is_some()
+ }
+
pub fn resume(&mut self, cx: &mut Context) -> BoxFuture<'static, Result<()>> {
self.run_turn(cx, async move |this, cx| {
this.update(cx, |this, cx| {
@@ -1262,6 +1733,8 @@ impl AcpThread {
.await?;
this.update(cx, |this, cx| {
+ this.project
+ .update(cx, |project, cx| project.set_agent_location(None, cx));
match response {
Ok(Err(e)) => {
this.send_task.take();
@@ -1272,7 +1745,8 @@ impl AcpThread {
let canceled = matches!(
result,
Ok(Ok(acp::PromptResponse {
- stop_reason: acp::StopReason::Canceled
+ stop_reason: acp::StopReason::Cancelled,
+ meta: None,
}))
);
@@ -1285,6 +1759,45 @@ impl AcpThread {
this.send_task.take();
}
+ // Handle refusal - distinguish between user prompt and tool call refusals
+ if let Ok(Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::Refusal,
+ meta: _,
+ })) = result
+ {
+ if let Some((user_msg_ix, _)) = this.last_user_message() {
+ // Check if there's a completed tool call with results after the last user message
+ // This indicates the refusal is in response to tool output, not the user's prompt
+ let has_completed_tool_call_after_user_msg =
+ this.entries.iter().skip(user_msg_ix + 1).any(|entry| {
+ if let AgentThreadEntry::ToolCall(tool_call) = entry {
+ // Check if the tool call has completed and has output
+ matches!(tool_call.status, ToolCallStatus::Completed)
+ && tool_call.raw_output.is_some()
+ } else {
+ false
+ }
+ });
+
+ if has_completed_tool_call_after_user_msg {
+ // Refusal is due to tool output - don't truncate, just notify
+ // The model refused based on what the tool returned
+ cx.emit(AcpThreadEvent::Refusal);
+ } else {
+ // User prompt was refused - truncate back to before the user message
+ let range = user_msg_ix..this.entries.len();
+ if range.start < range.end {
+ this.entries.truncate(user_msg_ix);
+ cx.emit(AcpThreadEvent::EntriesRemoved(range));
+ }
+ cx.emit(AcpThreadEvent::Refusal);
+ }
+ } else {
+ // No user message found, treat as general refusal
+ cx.emit(AcpThreadEvent::Refusal);
+ }
+ }
+
cx.emit(AcpThreadEvent::Stopped);
Ok(())
}
@@ -1320,13 +1833,13 @@ impl AcpThread {
cx.foreground_executor().spawn(send_task)
}
- /// Rewinds this thread to before the entry at `index`, removing it and all
- /// subsequent entries while reverting any changes made from that point.
- pub fn rewind(&mut self, id: UserMessageId, cx: &mut Context) -> Task> {
- let Some(session_editor) = self.connection.session_editor(&self.session_id, cx) else {
- return Task::ready(Err(anyhow!("not supported")));
- };
- let Some(message) = self.user_message(&id) else {
+ /// Restores the git working tree to the state at the given checkpoint (if one exists)
+ pub fn restore_checkpoint(
+ &mut self,
+ id: UserMessageId,
+ cx: &mut Context,
+ ) -> Task> {
+ let Some((_, message)) = self.user_message_mut(&id) else {
return Task::ready(Err(anyhow!("message not found")));
};
@@ -1334,24 +1847,42 @@ impl AcpThread {
.checkpoint
.as_ref()
.map(|c| c.git_checkpoint.clone());
-
+ let rewind = self.rewind(id.clone(), cx);
let git_store = self.project.read(cx).git_store().clone();
- cx.spawn(async move |this, cx| {
+
+ cx.spawn(async move |_, cx| {
+ rewind.await?;
if let Some(checkpoint) = checkpoint {
git_store
.update(cx, |git, cx| git.restore_checkpoint(checkpoint, cx))?
.await?;
}
- cx.update(|cx| session_editor.truncate(id.clone(), cx))?
- .await?;
+ Ok(())
+ })
+ }
+
+ /// Rewinds this thread to before the entry at `index`, removing it and all
+ /// subsequent entries while rejecting any action_log changes made from that point.
+ /// Unlike `restore_checkpoint`, this method does not restore from git.
+ pub fn rewind(&mut self, id: UserMessageId, cx: &mut Context) -> Task> {
+ let Some(truncate) = self.connection.truncate(&self.session_id, cx) else {
+ return Task::ready(Err(anyhow!("not supported")));
+ };
+
+ cx.spawn(async move |this, cx| {
+ cx.update(|cx| truncate.run(id.clone(), cx))?.await?;
this.update(cx, |this, cx| {
if let Some((ix, _)) = this.user_message_mut(&id) {
let range = ix..this.entries.len();
this.entries.truncate(ix);
cx.emit(AcpThreadEvent::EntriesRemoved(range));
}
- })
+ this.action_log()
+ .update(cx, |action_log, cx| action_log.reject_all_edits(cx))
+ })?
+ .await;
+ Ok(())
})
}
@@ -1408,24 +1939,10 @@ impl AcpThread {
})
}
- fn user_message(&self, id: &UserMessageId) -> Option<&UserMessage> {
- self.entries.iter().find_map(|entry| {
- if let AgentThreadEntry::UserMessage(message) = entry {
- if message.id.as_ref() == Some(&id) {
- Some(message)
- } else {
- None
- }
- } else {
- None
- }
- })
- }
-
fn user_message_mut(&mut self, id: &UserMessageId) -> Option<(usize, &mut UserMessage)> {
self.entries.iter_mut().enumerate().find_map(|(ix, entry)| {
if let AgentThreadEntry::UserMessage(message) = entry {
- if message.id.as_ref() == Some(&id) {
+ if message.id.as_ref() == Some(id) {
Some((ix, message))
} else {
None
@@ -1443,17 +1960,26 @@ impl AcpThread {
limit: Option,
reuse_shared_snapshot: bool,
cx: &mut Context,
- ) -> Task> {
+ ) -> Task> {
+ // Args are 1-based, move to 0-based
+ let line = line.unwrap_or_default().saturating_sub(1);
+ let limit = limit.unwrap_or(u32::MAX);
let project = self.project.clone();
let action_log = self.action_log.clone();
cx.spawn(async move |this, cx| {
- let load = project.update(cx, |project, cx| {
- let path = project
- .project_path_for_absolute_path(&path, cx)
- .context("invalid path")?;
- anyhow::Ok(project.open_buffer(path, cx))
- });
- let buffer = load??.await?;
+ let load = project
+ .update(cx, |project, cx| {
+ let path = project
+ .project_path_for_absolute_path(&path, cx)
+ .ok_or_else(|| {
+ acp::Error::resource_not_found(Some(path.display().to_string()))
+ })?;
+ Ok(project.open_buffer(path, cx))
+ })
+ .map_err(|e| acp::Error::internal_error().with_data(e.to_string()))
+ .flatten()?;
+
+ let buffer = load.await?;
let snapshot = if reuse_shared_snapshot {
this.read_with(cx, |this, _| {
@@ -1471,44 +1997,39 @@ impl AcpThread {
action_log.update(cx, |action_log, cx| {
action_log.buffer_read(buffer.clone(), cx);
})?;
- project.update(cx, |project, cx| {
- let position = buffer
- .read(cx)
- .snapshot()
- .anchor_before(Point::new(line.unwrap_or_default(), 0));
- project.set_agent_location(
- Some(AgentLocation {
- buffer: buffer.downgrade(),
- position,
- }),
- cx,
- );
- })?;
- buffer.update(cx, |buffer, _| buffer.snapshot())?
+ let snapshot = buffer.update(cx, |buffer, _| buffer.snapshot())?;
+ this.update(cx, |this, _| {
+ this.shared_buffers.insert(buffer.clone(), snapshot.clone());
+ })?;
+ snapshot
};
- this.update(cx, |this, _| {
- let text = snapshot.text();
- this.shared_buffers.insert(buffer.clone(), snapshot);
- if line.is_none() && limit.is_none() {
- return Ok(text);
- }
- let limit = limit.unwrap_or(u32::MAX) as usize;
- let Some(line) = line else {
- return Ok(text.lines().take(limit).collect::());
- };
+ let max_point = snapshot.max_point();
+ let start_position = Point::new(line, 0);
- let count = text.lines().count();
- if count < line as usize {
- anyhow::bail!("There are only {} lines", count);
- }
- Ok(text
- .lines()
- .skip(line as usize + 1)
- .take(limit)
- .collect::())
- })?
+ if start_position > max_point {
+ return Err(acp::Error::invalid_params().with_data(format!(
+ "Attempting to read beyond the end of the file, line {}:{}",
+ max_point.row + 1,
+ max_point.column
+ )));
+ }
+
+ let start = snapshot.anchor_before(start_position);
+ let end = snapshot.anchor_before(Point::new(line.saturating_add(limit), 0));
+
+ project.update(cx, |project, cx| {
+ project.set_agent_location(
+ Some(AgentLocation {
+ buffer: buffer.downgrade(),
+ position: start,
+ }),
+ cx,
+ );
+ })?;
+
+ Ok(snapshot.text_for_range(start..end).collect::())
})
}
@@ -1550,42 +2071,227 @@ impl AcpThread {
.collect::>()
})
.await;
- cx.update(|cx| {
- project.update(cx, |project, cx| {
- project.set_agent_location(
- Some(AgentLocation {
- buffer: buffer.downgrade(),
- position: edits
- .last()
- .map(|(range, _)| range.end)
- .unwrap_or(Anchor::MIN),
- }),
- cx,
- );
- });
+ project.update(cx, |project, cx| {
+ project.set_agent_location(
+ Some(AgentLocation {
+ buffer: buffer.downgrade(),
+ position: edits
+ .last()
+ .map(|(range, _)| range.end)
+ .unwrap_or(Anchor::MIN),
+ }),
+ cx,
+ );
+ })?;
+
+ let format_on_save = cx.update(|cx| {
action_log.update(cx, |action_log, cx| {
action_log.buffer_read(buffer.clone(), cx);
});
- buffer.update(cx, |buffer, cx| {
+
+ let format_on_save = buffer.update(cx, |buffer, cx| {
buffer.edit(edits, None, cx);
+
+ let settings = language::language_settings::language_settings(
+ buffer.language().map(|l| l.name()),
+ buffer.file(),
+ cx,
+ );
+
+ settings.format_on_save != FormatOnSave::Off
});
action_log.update(cx, |action_log, cx| {
action_log.buffer_edited(buffer.clone(), cx);
});
+ format_on_save
})?;
+
+ if format_on_save {
+ let format_task = project.update(cx, |project, cx| {
+ project.format(
+ HashSet::from_iter([buffer.clone()]),
+ LspFormatTarget::Buffers,
+ false,
+ FormatTrigger::Save,
+ cx,
+ )
+ })?;
+ format_task.await.log_err();
+
+ action_log.update(cx, |action_log, cx| {
+ action_log.buffer_edited(buffer.clone(), cx);
+ })?;
+ }
+
project
.update(cx, |project, cx| project.save_buffer(buffer, cx))?
.await
})
}
+ pub fn create_terminal(
+ &self,
+ command: String,
+ args: Vec,
+ extra_env: Vec,
+ cwd: Option,
+ output_byte_limit: Option,
+ cx: &mut Context,
+ ) -> Task>> {
+ let env = match &cwd {
+ Some(dir) => self.project.update(cx, |project, cx| {
+ let worktree = project.find_worktree(dir.as_path(), cx);
+ let shell = TerminalSettings::get(
+ worktree.as_ref().map(|(worktree, path)| SettingsLocation {
+ worktree_id: worktree.read(cx).id(),
+ path: &path,
+ }),
+ cx,
+ )
+ .shell
+ .clone();
+ project.directory_environment(&shell, dir.as_path().into(), cx)
+ }),
+ None => Task::ready(None).shared(),
+ };
+ let env = cx.spawn(async move |_, _| {
+ let mut env = env.await.unwrap_or_default();
+ // Disables paging for `git` and hopefully other commands
+ env.insert("PAGER".into(), "".into());
+ for var in extra_env {
+ env.insert(var.name, var.value);
+ }
+ env
+ });
+
+ let project = self.project.clone();
+ let language_registry = project.read(cx).languages().clone();
+ let is_windows = project.read(cx).path_style(cx).is_windows();
+
+ let terminal_id = acp::TerminalId(Uuid::new_v4().to_string().into());
+ let terminal_task = cx.spawn({
+ let terminal_id = terminal_id.clone();
+ async move |_this, cx| {
+ let env = env.await;
+ let shell = project
+ .update(cx, |project, cx| {
+ project
+ .remote_client()
+ .and_then(|r| r.read(cx).default_system_shell())
+ })?
+ .unwrap_or_else(|| get_default_system_shell_preferring_bash());
+ let (task_command, task_args) =
+ ShellBuilder::new(&Shell::Program(shell), is_windows)
+ .redirect_stdin_to_dev_null()
+ .build(Some(command.clone()), &args);
+ let terminal = project
+ .update(cx, |project, cx| {
+ project.create_terminal_task(
+ task::SpawnInTerminal {
+ command: Some(task_command),
+ args: task_args,
+ cwd: cwd.clone(),
+ env,
+ ..Default::default()
+ },
+ cx,
+ )
+ })?
+ .await?;
+
+ cx.new(|cx| {
+ Terminal::new(
+ terminal_id,
+ &format!("{} {}", command, args.join(" ")),
+ cwd,
+ output_byte_limit.map(|l| l as usize),
+ terminal,
+ language_registry,
+ cx,
+ )
+ })
+ }
+ });
+
+ cx.spawn(async move |this, cx| {
+ let terminal = terminal_task.await?;
+ this.update(cx, |this, _cx| {
+ this.terminals.insert(terminal_id, terminal.clone());
+ terminal
+ })
+ })
+ }
+
+ pub fn kill_terminal(
+ &mut self,
+ terminal_id: acp::TerminalId,
+ cx: &mut Context,
+ ) -> Result<()> {
+ self.terminals
+ .get(&terminal_id)
+ .context("Terminal not found")?
+ .update(cx, |terminal, cx| {
+ terminal.kill(cx);
+ });
+
+ Ok(())
+ }
+
+ pub fn release_terminal(
+ &mut self,
+ terminal_id: acp::TerminalId,
+ cx: &mut Context,
+ ) -> Result<()> {
+ self.terminals
+ .remove(&terminal_id)
+ .context("Terminal not found")?
+ .update(cx, |terminal, cx| {
+ terminal.kill(cx);
+ });
+
+ Ok(())
+ }
+
+ pub fn terminal(&self, terminal_id: acp::TerminalId) -> Result> {
+ self.terminals
+ .get(&terminal_id)
+ .context("Terminal not found")
+ .cloned()
+ }
+
pub fn to_markdown(&self, cx: &App) -> String {
self.entries.iter().map(|e| e.to_markdown(cx)).collect()
}
- pub fn emit_server_exited(&mut self, status: ExitStatus, cx: &mut Context) {
- cx.emit(AcpThreadEvent::ServerExited(status));
+ pub fn emit_load_error(&mut self, error: LoadError, cx: &mut Context) {
+ cx.emit(AcpThreadEvent::LoadError(error));
+ }
+
+ pub fn register_terminal_created(
+ &mut self,
+ terminal_id: acp::TerminalId,
+ command_label: String,
+ working_dir: Option,
+ output_byte_limit: Option,
+ terminal: Entity<::terminal::Terminal>,
+ cx: &mut Context,
+ ) -> Entity {
+ let language_registry = self.project.read(cx).languages().clone();
+
+ let entity = cx.new(|cx| {
+ Terminal::new(
+ terminal_id.clone(),
+ &command_label,
+ working_dir.clone(),
+ output_byte_limit.map(|l| l as usize),
+ terminal,
+ language_registry,
+ cx,
+ )
+ });
+ self.terminals.insert(terminal_id.clone(), entity.clone());
+ entity
}
}
@@ -1636,10 +2342,10 @@ mod tests {
use super::*;
use anyhow::anyhow;
use futures::{channel::mpsc, future::LocalBoxFuture, select};
- use gpui::{AsyncApp, TestAppContext, WeakEntity};
+ use gpui::{App, AsyncApp, TestAppContext, WeakEntity};
use indoc::indoc;
use project::{FakeFs, Fs};
- use rand::Rng as _;
+ use rand::{distr, prelude::*};
use serde_json::json;
use settings::SettingsStore;
use smol::stream::StreamExt as _;
@@ -1663,6 +2369,145 @@ mod tests {
});
}
+ #[gpui::test]
+ async fn test_terminal_output_buffered_before_created_renders(cx: &mut gpui::TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ let project = Project::test(fs, [], cx).await;
+ let connection = Rc::new(FakeAgentConnection::new());
+ let thread = cx
+ .update(|cx| connection.new_thread(project, std::path::Path::new(path!("/test")), cx))
+ .await
+ .unwrap();
+
+ let terminal_id = acp::TerminalId(uuid::Uuid::new_v4().to_string().into());
+
+ // Send Output BEFORE Created - should be buffered by acp_thread
+ thread.update(cx, |thread, cx| {
+ thread.on_terminal_provider_event(
+ TerminalProviderEvent::Output {
+ terminal_id: terminal_id.clone(),
+ data: b"hello buffered".to_vec(),
+ },
+ cx,
+ );
+ });
+
+ // Create a display-only terminal and then send Created
+ let lower = cx.new(|cx| {
+ let builder = ::terminal::TerminalBuilder::new_display_only(
+ ::terminal::terminal_settings::CursorShape::default(),
+ ::terminal::terminal_settings::AlternateScroll::On,
+ None,
+ 0,
+ )
+ .unwrap();
+ builder.subscribe(cx)
+ });
+
+ thread.update(cx, |thread, cx| {
+ thread.on_terminal_provider_event(
+ TerminalProviderEvent::Created {
+ terminal_id: terminal_id.clone(),
+ label: "Buffered Test".to_string(),
+ cwd: None,
+ output_byte_limit: None,
+ terminal: lower.clone(),
+ },
+ cx,
+ );
+ });
+
+ // After Created, buffered Output should have been flushed into the renderer
+ let content = thread.read_with(cx, |thread, cx| {
+ let term = thread.terminal(terminal_id.clone()).unwrap();
+ term.read_with(cx, |t, cx| t.inner().read(cx).get_content())
+ });
+
+ assert!(
+ content.contains("hello buffered"),
+ "expected buffered output to render, got: {content}"
+ );
+ }
+
+ #[gpui::test]
+ async fn test_terminal_output_and_exit_buffered_before_created(cx: &mut gpui::TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ let project = Project::test(fs, [], cx).await;
+ let connection = Rc::new(FakeAgentConnection::new());
+ let thread = cx
+ .update(|cx| connection.new_thread(project, std::path::Path::new(path!("/test")), cx))
+ .await
+ .unwrap();
+
+ let terminal_id = acp::TerminalId(uuid::Uuid::new_v4().to_string().into());
+
+ // Send Output BEFORE Created
+ thread.update(cx, |thread, cx| {
+ thread.on_terminal_provider_event(
+ TerminalProviderEvent::Output {
+ terminal_id: terminal_id.clone(),
+ data: b"pre-exit data".to_vec(),
+ },
+ cx,
+ );
+ });
+
+ // Send Exit BEFORE Created
+ thread.update(cx, |thread, cx| {
+ thread.on_terminal_provider_event(
+ TerminalProviderEvent::Exit {
+ terminal_id: terminal_id.clone(),
+ status: acp::TerminalExitStatus {
+ exit_code: Some(0),
+ signal: None,
+ meta: None,
+ },
+ },
+ cx,
+ );
+ });
+
+ // Now create a display-only lower-level terminal and send Created
+ let lower = cx.new(|cx| {
+ let builder = ::terminal::TerminalBuilder::new_display_only(
+ ::terminal::terminal_settings::CursorShape::default(),
+ ::terminal::terminal_settings::AlternateScroll::On,
+ None,
+ 0,
+ )
+ .unwrap();
+ builder.subscribe(cx)
+ });
+
+ thread.update(cx, |thread, cx| {
+ thread.on_terminal_provider_event(
+ TerminalProviderEvent::Created {
+ terminal_id: terminal_id.clone(),
+ label: "Buffered Exit Test".to_string(),
+ cwd: None,
+ output_byte_limit: None,
+ terminal: lower.clone(),
+ },
+ cx,
+ );
+ });
+
+ // Output should be present after Created (flushed from buffer)
+ let content = thread.read_with(cx, |thread, cx| {
+ let term = thread.terminal(terminal_id.clone()).unwrap();
+ term.read_with(cx, |t, cx| t.inner().read(cx).get_content())
+ });
+
+ assert!(
+ content.contains("pre-exit data"),
+ "expected pre-exit data to render, got: {content}"
+ );
+ }
+
#[gpui::test]
async fn test_push_user_content_block(cx: &mut gpui::TestAppContext) {
init_test(cx);
@@ -1682,6 +2527,7 @@ mod tests {
acp::ContentBlock::Text(acp::TextContent {
annotations: None,
text: "Hello, ".to_string(),
+ meta: None,
}),
cx,
);
@@ -1705,6 +2551,7 @@ mod tests {
acp::ContentBlock::Text(acp::TextContent {
annotations: None,
text: "world!".to_string(),
+ meta: None,
}),
cx,
);
@@ -1726,6 +2573,7 @@ mod tests {
acp::ContentBlock::Text(acp::TextContent {
annotations: None,
text: "Assistant response".to_string(),
+ meta: None,
}),
false,
cx,
@@ -1739,6 +2587,7 @@ mod tests {
acp::ContentBlock::Text(acp::TextContent {
annotations: None,
text: "New user message".to_string(),
+ meta: None,
}),
cx,
);
@@ -1767,23 +2616,26 @@ mod tests {
thread.update(&mut cx, |thread, cx| {
thread
.handle_session_update(
- acp::SessionUpdate::AgentThoughtChunk {
+ acp::SessionUpdate::AgentThoughtChunk(acp::ContentChunk {
content: "Thinking ".into(),
- },
+ meta: None,
+ }),
cx,
)
.unwrap();
thread
.handle_session_update(
- acp::SessionUpdate::AgentThoughtChunk {
+ acp::SessionUpdate::AgentThoughtChunk(acp::ContentChunk {
content: "hard!".into(),
- },
+ meta: None,
+ }),
cx,
)
.unwrap();
})?;
Ok(acp::PromptResponse {
stop_reason: acp::StopReason::EndTurn,
+ meta: None,
})
}
.boxed_local()
@@ -1854,6 +2706,7 @@ mod tests {
.unwrap();
Ok(acp::PromptResponse {
stop_reason: acp::StopReason::EndTurn,
+ meta: None,
})
}
.boxed_local()
@@ -1897,6 +2750,188 @@ mod tests {
request.await.unwrap();
}
+ #[gpui::test]
+ async fn test_reading_from_line(cx: &mut TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ fs.insert_tree(path!("/tmp"), json!({"foo": "one\ntwo\nthree\nfour\n"}))
+ .await;
+ let project = Project::test(fs.clone(), [], cx).await;
+ project
+ .update(cx, |project, cx| {
+ project.find_or_create_worktree(path!("/tmp/foo"), true, cx)
+ })
+ .await
+ .unwrap();
+
+ let connection = Rc::new(FakeAgentConnection::new());
+
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/tmp")), cx))
+ .await
+ .unwrap();
+
+ // Whole file
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), None, None, false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "one\ntwo\nthree\nfour\n");
+
+ // Only start line
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), Some(3), None, false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "three\nfour\n");
+
+ // Only limit
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), None, Some(2), false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "one\ntwo\n");
+
+ // Range
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), Some(2), Some(2), false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "two\nthree\n");
+
+ // Invalid
+ let err = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), Some(6), Some(2), false, cx)
+ })
+ .await
+ .unwrap_err();
+
+ assert_eq!(
+ err.to_string(),
+ "Invalid params: \"Attempting to read beyond the end of the file, line 5:0\""
+ );
+ }
+
+ #[gpui::test]
+ async fn test_reading_empty_file(cx: &mut TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ fs.insert_tree(path!("/tmp"), json!({"foo": ""})).await;
+ let project = Project::test(fs.clone(), [], cx).await;
+ project
+ .update(cx, |project, cx| {
+ project.find_or_create_worktree(path!("/tmp/foo"), true, cx)
+ })
+ .await
+ .unwrap();
+
+ let connection = Rc::new(FakeAgentConnection::new());
+
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/tmp")), cx))
+ .await
+ .unwrap();
+
+ // Whole file
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), None, None, false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "");
+
+ // Only start line
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), Some(1), None, false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "");
+
+ // Only limit
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), None, Some(2), false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "");
+
+ // Range
+ let content = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), Some(1), Some(1), false, cx)
+ })
+ .await
+ .unwrap();
+
+ assert_eq!(content, "");
+
+ // Invalid
+ let err = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/tmp/foo").into(), Some(5), Some(2), false, cx)
+ })
+ .await
+ .unwrap_err();
+
+ assert_eq!(
+ err.to_string(),
+ "Invalid params: \"Attempting to read beyond the end of the file, line 1:0\""
+ );
+ }
+ #[gpui::test]
+ async fn test_reading_non_existing_file(cx: &mut TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ fs.insert_tree(path!("/tmp"), json!({})).await;
+ let project = Project::test(fs.clone(), [], cx).await;
+ project
+ .update(cx, |project, cx| {
+ project.find_or_create_worktree(path!("/tmp"), true, cx)
+ })
+ .await
+ .unwrap();
+
+ let connection = Rc::new(FakeAgentConnection::new());
+
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/tmp")), cx))
+ .await
+ .unwrap();
+
+ // Out of project file
+ let err = thread
+ .update(cx, |thread, cx| {
+ thread.read_text_file(path!("/foo").into(), None, None, false, cx)
+ })
+ .await
+ .unwrap_err();
+
+ assert_eq!(err.code, acp::ErrorCode::RESOURCE_NOT_FOUND.code);
+ }
+
#[gpui::test]
async fn test_succeeding_canceled_toolcall(cx: &mut TestAppContext) {
init_test(cx);
@@ -1922,6 +2957,7 @@ mod tests {
locations: vec![],
raw_input: None,
raw_output: None,
+ meta: None,
}),
cx,
)
@@ -1930,6 +2966,7 @@ mod tests {
.unwrap();
Ok(acp::PromptResponse {
stop_reason: acp::StopReason::EndTurn,
+ meta: None,
})
}
.boxed_local()
@@ -1978,6 +3015,7 @@ mod tests {
status: Some(acp::ToolCallStatus::Completed),
..Default::default()
},
+ meta: None,
}),
cx,
)
@@ -2020,11 +3058,13 @@ mod tests {
path: "/test/test.txt".into(),
old_text: None,
new_text: "foo".into(),
+ meta: None,
},
}],
locations: vec![],
raw_input: None,
raw_output: None,
+ meta: None,
}),
cx,
)
@@ -2033,6 +3073,7 @@ mod tests {
.unwrap();
Ok(acp::PromptResponse {
stop_reason: acp::StopReason::EndTurn,
+ meta: None,
})
}
.boxed_local()
@@ -2086,15 +3127,17 @@ mod tests {
thread.update(&mut cx, |thread, cx| {
thread
.handle_session_update(
- acp::SessionUpdate::AgentMessageChunk {
+ acp::SessionUpdate::AgentMessageChunk(acp::ContentChunk {
content: content.text.to_uppercase().into(),
- },
+ meta: None,
+ }),
cx,
)
.unwrap();
})?;
Ok(acp::PromptResponse {
stop_reason: acp::StopReason::EndTurn,
+ meta: None,
})
}
.boxed_local()
@@ -2123,7 +3166,7 @@ mod tests {
"}
);
});
- assert_eq!(fs.files(), vec![Path::new("/test/file-0")]);
+ assert_eq!(fs.files(), vec![Path::new(path!("/test/file-0"))]);
cx.update(|cx| thread.update(cx, |thread, cx| thread.send(vec!["ipsum".into()], cx)))
.await
@@ -2153,7 +3196,10 @@ mod tests {
});
assert_eq!(
fs.files(),
- vec![Path::new("/test/file-0"), Path::new("/test/file-1")]
+ vec![
+ Path::new(path!("/test/file-0")),
+ Path::new(path!("/test/file-1"))
+ ]
);
// Checkpoint isn't stored when there are no changes.
@@ -2194,7 +3240,10 @@ mod tests {
});
assert_eq!(
fs.files(),
- vec![Path::new("/test/file-0"), Path::new("/test/file-1")]
+ vec![
+ Path::new(path!("/test/file-0")),
+ Path::new(path!("/test/file-1"))
+ ]
);
// Rewinding the conversation truncates the history and restores the checkpoint.
@@ -2203,7 +3252,7 @@ mod tests {
let AgentThreadEntry::UserMessage(message) = &thread.entries[2] else {
panic!("unexpected entries {:?}", thread.entries)
};
- thread.rewind(message.id.clone().unwrap(), cx)
+ thread.restore_checkpoint(message.id.clone().unwrap(), cx)
})
.await
.unwrap();
@@ -2222,7 +3271,283 @@ mod tests {
"}
);
});
- assert_eq!(fs.files(), vec![Path::new("/test/file-0")]);
+ assert_eq!(fs.files(), vec![Path::new(path!("/test/file-0"))]);
+ }
+
+ #[gpui::test]
+ async fn test_tool_result_refusal(cx: &mut TestAppContext) {
+ use std::sync::atomic::AtomicUsize;
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ let project = Project::test(fs, None, cx).await;
+
+ // Create a connection that simulates refusal after tool result
+ let prompt_count = Arc::new(AtomicUsize::new(0));
+ let connection = Rc::new(FakeAgentConnection::new().on_user_message({
+ let prompt_count = prompt_count.clone();
+ move |_request, thread, mut cx| {
+ let count = prompt_count.fetch_add(1, SeqCst);
+ async move {
+ if count == 0 {
+ // First prompt: Generate a tool call with result
+ thread.update(&mut cx, |thread, cx| {
+ thread
+ .handle_session_update(
+ acp::SessionUpdate::ToolCall(acp::ToolCall {
+ id: acp::ToolCallId("tool1".into()),
+ title: "Test Tool".into(),
+ kind: acp::ToolKind::Fetch,
+ status: acp::ToolCallStatus::Completed,
+ content: vec![],
+ locations: vec![],
+ raw_input: Some(serde_json::json!({"query": "test"})),
+ raw_output: Some(
+ serde_json::json!({"result": "inappropriate content"}),
+ ),
+ meta: None,
+ }),
+ cx,
+ )
+ .unwrap();
+ })?;
+
+ // Now return refusal because of the tool result
+ Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::Refusal,
+ meta: None,
+ })
+ } else {
+ Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::EndTurn,
+ meta: None,
+ })
+ }
+ }
+ .boxed_local()
+ }
+ }));
+
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/test")), cx))
+ .await
+ .unwrap();
+
+ // Track if we see a Refusal event
+ let saw_refusal_event = Arc::new(std::sync::Mutex::new(false));
+ let saw_refusal_event_captured = saw_refusal_event.clone();
+ thread.update(cx, |_thread, cx| {
+ cx.subscribe(
+ &thread,
+ move |_thread, _event_thread, event: &AcpThreadEvent, _cx| {
+ if matches!(event, AcpThreadEvent::Refusal) {
+ *saw_refusal_event_captured.lock().unwrap() = true;
+ }
+ },
+ )
+ .detach();
+ });
+
+ // Send a user message - this will trigger tool call and then refusal
+ let send_task = thread.update(cx, |thread, cx| {
+ thread.send(
+ vec![acp::ContentBlock::Text(acp::TextContent {
+ text: "Hello".into(),
+ annotations: None,
+ meta: None,
+ })],
+ cx,
+ )
+ });
+ cx.background_executor.spawn(send_task).detach();
+ cx.run_until_parked();
+
+ // Verify that:
+ // 1. A Refusal event WAS emitted (because it's a tool result refusal, not user prompt)
+ // 2. The user message was NOT truncated
+ assert!(
+ *saw_refusal_event.lock().unwrap(),
+ "Refusal event should be emitted for tool result refusals"
+ );
+
+ thread.read_with(cx, |thread, _| {
+ let entries = thread.entries();
+ assert!(entries.len() >= 2, "Should have user message and tool call");
+
+ // Verify user message is still there
+ assert!(
+ matches!(entries[0], AgentThreadEntry::UserMessage(_)),
+ "User message should not be truncated"
+ );
+
+ // Verify tool call is there with result
+ if let AgentThreadEntry::ToolCall(tool_call) = &entries[1] {
+ assert!(
+ tool_call.raw_output.is_some(),
+ "Tool call should have output"
+ );
+ } else {
+ panic!("Expected tool call at index 1");
+ }
+ });
+ }
+
+ #[gpui::test]
+ async fn test_user_prompt_refusal_emits_event(cx: &mut TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ let project = Project::test(fs, None, cx).await;
+
+ let refuse_next = Arc::new(AtomicBool::new(false));
+ let connection = Rc::new(FakeAgentConnection::new().on_user_message({
+ let refuse_next = refuse_next.clone();
+ move |_request, _thread, _cx| {
+ if refuse_next.load(SeqCst) {
+ async move {
+ Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::Refusal,
+ meta: None,
+ })
+ }
+ .boxed_local()
+ } else {
+ async move {
+ Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::EndTurn,
+ meta: None,
+ })
+ }
+ .boxed_local()
+ }
+ }
+ }));
+
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/test")), cx))
+ .await
+ .unwrap();
+
+ // Track if we see a Refusal event
+ let saw_refusal_event = Arc::new(std::sync::Mutex::new(false));
+ let saw_refusal_event_captured = saw_refusal_event.clone();
+ thread.update(cx, |_thread, cx| {
+ cx.subscribe(
+ &thread,
+ move |_thread, _event_thread, event: &AcpThreadEvent, _cx| {
+ if matches!(event, AcpThreadEvent::Refusal) {
+ *saw_refusal_event_captured.lock().unwrap() = true;
+ }
+ },
+ )
+ .detach();
+ });
+
+ // Send a message that will be refused
+ refuse_next.store(true, SeqCst);
+ cx.update(|cx| thread.update(cx, |thread, cx| thread.send(vec!["hello".into()], cx)))
+ .await
+ .unwrap();
+
+ // Verify that a Refusal event WAS emitted for user prompt refusal
+ assert!(
+ *saw_refusal_event.lock().unwrap(),
+ "Refusal event should be emitted for user prompt refusals"
+ );
+
+ // Verify the message was truncated (user prompt refusal)
+ thread.read_with(cx, |thread, cx| {
+ assert_eq!(thread.to_markdown(cx), "");
+ });
+ }
+
+ #[gpui::test]
+ async fn test_refusal(cx: &mut TestAppContext) {
+ init_test(cx);
+ let fs = FakeFs::new(cx.background_executor.clone());
+ fs.insert_tree(path!("/"), json!({})).await;
+ let project = Project::test(fs.clone(), [path!("/").as_ref()], cx).await;
+
+ let refuse_next = Arc::new(AtomicBool::new(false));
+ let connection = Rc::new(FakeAgentConnection::new().on_user_message({
+ let refuse_next = refuse_next.clone();
+ move |request, thread, mut cx| {
+ let refuse_next = refuse_next.clone();
+ async move {
+ if refuse_next.load(SeqCst) {
+ return Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::Refusal,
+ meta: None,
+ });
+ }
+
+ let acp::ContentBlock::Text(content) = &request.prompt[0] else {
+ panic!("expected text content block");
+ };
+ thread.update(&mut cx, |thread, cx| {
+ thread
+ .handle_session_update(
+ acp::SessionUpdate::AgentMessageChunk(acp::ContentChunk {
+ content: content.text.to_uppercase().into(),
+ meta: None,
+ }),
+ cx,
+ )
+ .unwrap();
+ })?;
+ Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::EndTurn,
+ meta: None,
+ })
+ }
+ .boxed_local()
+ }
+ }));
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/test")), cx))
+ .await
+ .unwrap();
+
+ cx.update(|cx| thread.update(cx, |thread, cx| thread.send(vec!["hello".into()], cx)))
+ .await
+ .unwrap();
+ thread.read_with(cx, |thread, cx| {
+ assert_eq!(
+ thread.to_markdown(cx),
+ indoc! {"
+ ## User
+
+ hello
+
+ ## Assistant
+
+ HELLO
+
+ "}
+ );
+ });
+
+ // Simulate refusing the second message. The message should be truncated
+ // when a user prompt is refused.
+ refuse_next.store(true, SeqCst);
+ cx.update(|cx| thread.update(cx, |thread, cx| thread.send(vec!["world".into()], cx)))
+ .await
+ .unwrap();
+ thread.read_with(cx, |thread, cx| {
+ assert_eq!(
+ thread.to_markdown(cx),
+ indoc! {"
+ ## User
+
+ hello
+
+ ## Assistant
+
+ HELLO
+
+ "}
+ );
+ });
}
async fn run_until_first_tool_call(
@@ -2306,18 +3631,33 @@ mod tests {
self: Rc,
project: Entity,
_cwd: &Path,
- cx: &mut gpui::App,
+ cx: &mut App,
) -> Task>> {
let session_id = acp::SessionId(
- rand::thread_rng()
- .sample_iter(&rand::distributions::Alphanumeric)
+ rand::rng()
+ .sample_iter(&distr::Alphanumeric)
.take(7)
.map(char::from)
.collect::()
.into(),
);
- let thread =
- cx.new(|cx| AcpThread::new("Test", self.clone(), project, session_id.clone(), cx));
+ let action_log = cx.new(|_| ActionLog::new(project.clone()));
+ let thread = cx.new(|cx| {
+ AcpThread::new(
+ "Test",
+ self.clone(),
+ project,
+ action_log,
+ session_id.clone(),
+ watch::Receiver::constant(acp::PromptCapabilities {
+ image: true,
+ audio: true,
+ embedded_context: true,
+ meta: None,
+ }),
+ cx,
+ )
+ });
self.sessions.lock().insert(session_id, thread.downgrade());
Task::ready(Ok(thread))
}
@@ -2345,13 +3685,14 @@ mod tests {
} else {
Task::ready(Ok(acp::PromptResponse {
stop_reason: acp::StopReason::EndTurn,
+ meta: None,
}))
}
}
fn cancel(&self, session_id: &acp::SessionId, cx: &mut App) {
let sessions = self.sessions.lock();
- let thread = sessions.get(&session_id).unwrap().clone();
+ let thread = sessions.get(session_id).unwrap().clone();
cx.spawn(async move |cx| {
thread
@@ -2362,11 +3703,11 @@ mod tests {
.detach();
}
- fn session_editor(
+ fn truncate(
&self,
session_id: &acp::SessionId,
- _cx: &mut App,
- ) -> Option> {
+ _cx: &App,
+ ) -> Option> {
Some(Rc::new(FakeAgentSessionEditor {
_session_id: session_id.clone(),
}))
@@ -2381,9 +3722,70 @@ mod tests {
_session_id: acp::SessionId,
}
- impl AgentSessionEditor for FakeAgentSessionEditor {
- fn truncate(&self, _message_id: UserMessageId, _cx: &mut App) -> Task> {
+ impl AgentSessionTruncate for FakeAgentSessionEditor {
+ fn run(&self, _message_id: UserMessageId, _cx: &mut App) -> Task> {
Task::ready(Ok(()))
}
}
+
+ #[gpui::test]
+ async fn test_tool_call_not_found_creates_failed_entry(cx: &mut TestAppContext) {
+ init_test(cx);
+
+ let fs = FakeFs::new(cx.executor());
+ let project = Project::test(fs, [], cx).await;
+ let connection = Rc::new(FakeAgentConnection::new());
+ let thread = cx
+ .update(|cx| connection.new_thread(project, Path::new(path!("/test")), cx))
+ .await
+ .unwrap();
+
+ // Try to update a tool call that doesn't exist
+ let nonexistent_id = acp::ToolCallId("nonexistent-tool-call".into());
+ thread.update(cx, |thread, cx| {
+ let result = thread.handle_session_update(
+ acp::SessionUpdate::ToolCallUpdate(acp::ToolCallUpdate {
+ id: nonexistent_id.clone(),
+ fields: acp::ToolCallUpdateFields {
+ status: Some(acp::ToolCallStatus::Completed),
+ ..Default::default()
+ },
+ meta: None,
+ }),
+ cx,
+ );
+
+ // The update should succeed (not return an error)
+ assert!(result.is_ok());
+
+ // There should now be exactly one entry in the thread
+ assert_eq!(thread.entries.len(), 1);
+
+ // The entry should be a failed tool call
+ if let AgentThreadEntry::ToolCall(tool_call) = &thread.entries[0] {
+ assert_eq!(tool_call.id, nonexistent_id);
+ assert!(matches!(tool_call.status, ToolCallStatus::Failed));
+ assert_eq!(tool_call.kind, acp::ToolKind::Fetch);
+
+ // Check that the content contains the error message
+ assert_eq!(tool_call.content.len(), 1);
+ if let ToolCallContent::ContentBlock(content_block) = &tool_call.content[0] {
+ match content_block {
+ ContentBlock::Markdown { markdown } => {
+ let markdown_text = markdown.read(cx).source();
+ assert!(markdown_text.contains("Tool call not found"));
+ }
+ ContentBlock::Empty => panic!("Expected markdown content, got empty"),
+ ContentBlock::ResourceLink { .. } => {
+ panic!("Expected markdown content, got resource link")
+ }
+ }
+ } else {
+ panic!("Expected ContentBlock, got: {:?}", tool_call.content[0]);
+ }
+ } else {
+ panic!("Expected ToolCall entry, got: {:?}", thread.entries[0]);
+ }
+ });
+ }
}
diff --git a/crates/acp_thread/src/connection.rs b/crates/acp_thread/src/connection.rs
index 7497d2309f1de72186c23773429cc6e8c57de2d2..fe66f954370f8118d054ee56f1e9f68f2de7e6f4 100644
--- a/crates/acp_thread/src/connection.rs
+++ b/crates/acp_thread/src/connection.rs
@@ -3,12 +3,14 @@ use agent_client_protocol::{self as acp};
use anyhow::Result;
use collections::IndexMap;
use gpui::{Entity, SharedString, Task};
+use language_model::LanguageModelProviderId;
use project::Project;
+use serde::{Deserialize, Serialize};
use std::{any::Any, error::Error, fmt, path::Path, rc::Rc, sync::Arc};
use ui::{App, IconName};
use uuid::Uuid;
-#[derive(Clone, Debug, Eq, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
pub struct UserMessageId(Arc);
impl UserMessageId {
@@ -39,18 +41,26 @@ pub trait AgentConnection {
fn resume(
&self,
_session_id: &acp::SessionId,
- _cx: &mut App,
+ _cx: &App,
) -> Option> {
None
}
fn cancel(&self, session_id: &acp::SessionId, cx: &mut App);
- fn session_editor(
+ fn truncate(
&self,
_session_id: &acp::SessionId,
- _cx: &mut App,
- ) -> Option> {
+ _cx: &App,
+ ) -> Option> {
+ None
+ }
+
+ fn set_title(
+ &self,
+ _session_id: &acp::SessionId,
+ _cx: &App,
+ ) -> Option> {
None
}
@@ -58,7 +68,19 @@ pub trait AgentConnection {
///
/// If the agent does not support model selection, returns [None].
/// This allows sharing the selector in UI components.
- fn model_selector(&self) -> Option> {
+ fn model_selector(&self, _session_id: &acp::SessionId) -> Option> {
+ None
+ }
+
+ fn telemetry(&self) -> Option> {
+ None
+ }
+
+ fn session_modes(
+ &self,
+ _session_id: &acp::SessionId,
+ _cx: &App,
+ ) -> Option> {
None
}
@@ -71,21 +93,68 @@ impl dyn AgentConnection {
}
}
-pub trait AgentSessionEditor {
- fn truncate(&self, message_id: UserMessageId, cx: &mut App) -> Task>;
+pub trait AgentSessionTruncate {
+ fn run(&self, message_id: UserMessageId, cx: &mut App) -> Task>;
}
pub trait AgentSessionResume {
fn run(&self, cx: &mut App) -> Task>;
}
+pub trait AgentSessionSetTitle {
+ fn run(&self, title: SharedString, cx: &mut App) -> Task>;
+}
+
+pub trait AgentTelemetry {
+ /// The name of the agent used for telemetry.
+ fn agent_name(&self) -> String;
+
+ /// A representation of the current thread state that can be serialized for
+ /// storage with telemetry events.
+ fn thread_data(
+ &self,
+ session_id: &acp::SessionId,
+ cx: &mut App,
+ ) -> Task>;
+}
+
+pub trait AgentSessionModes {
+ fn current_mode(&self) -> acp::SessionModeId;
+
+ fn all_modes(&self) -> Vec;
+
+ fn set_mode(&self, mode: acp::SessionModeId, cx: &mut App) -> Task>;
+}
+
#[derive(Debug)]
-pub struct AuthRequired;
+pub struct AuthRequired {
+ pub description: Option,
+ pub provider_id: Option,
+}
+
+impl AuthRequired {
+ pub fn new() -> Self {
+ Self {
+ description: None,
+ provider_id: None,
+ }
+ }
+
+ pub fn with_description(mut self, description: String) -> Self {
+ self.description = Some(description);
+ self
+ }
+
+ pub fn with_language_model_provider(mut self, provider_id: LanguageModelProviderId) -> Self {
+ self.provider_id = Some(provider_id);
+ self
+ }
+}
impl Error for AuthRequired {}
impl fmt::Display for AuthRequired {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- write!(f, "AuthRequired")
+ write!(f, "Authentication required")
}
}
@@ -108,61 +177,48 @@ pub trait AgentModelSelector: 'static {
/// If the session doesn't exist or the model is invalid, it returns an error.
///
/// # Parameters
- /// - `session_id`: The ID of the session (thread) to apply the model to.
/// - `model`: The model to select (should be one from [list_models]).
/// - `cx`: The GPUI app context.
///
/// # Returns
/// A task resolving to `Ok(())` on success or an error.
- fn select_model(
- &self,
- session_id: acp::SessionId,
- model_id: AgentModelId,
- cx: &mut App,
- ) -> Task>;
+ fn select_model(&self, model_id: acp::ModelId, cx: &mut App) -> Task>;
/// Retrieves the currently selected model for a specific session (thread).
///
/// # Parameters
- /// - `session_id`: The ID of the session (thread) to query.
/// - `cx`: The GPUI app context.
///
/// # Returns
/// A task resolving to the selected model (always set) or an error (e.g., session not found).
- fn selected_model(
- &self,
- session_id: &acp::SessionId,
- cx: &mut App,
- ) -> Task>;
+ fn selected_model(&self, cx: &mut App) -> Task>;
/// Whenever the model list is updated the receiver will be notified.
- fn watch(&self, cx: &mut App) -> watch::Receiver<()>;
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct AgentModelId(pub SharedString);
-
-impl std::ops::Deref for AgentModelId {
- type Target = SharedString;
-
- fn deref(&self) -> &Self::Target {
- &self.0
- }
-}
-
-impl fmt::Display for AgentModelId {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- self.0.fmt(f)
+ /// Optional for agents that don't update their model list.
+ fn watch(&self, _cx: &mut App) -> Option> {
+ None
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct AgentModelInfo {
- pub id: AgentModelId,
+ pub id: acp::ModelId,
pub name: SharedString,
+ pub description: Option,
pub icon: Option,
}
+impl From for AgentModelInfo {
+ fn from(info: acp::ModelInfo) -> Self {
+ Self {
+ id: info.model_id,
+ name: info.name.into(),
+ description: info.description.map(|desc| desc.into()),
+ icon: None,
+ }
+ }
+}
+
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct AgentModelGroupName(pub SharedString);
@@ -185,8 +241,9 @@ impl AgentModelList {
mod test_support {
use std::sync::Arc;
+ use action_log::ActionLog;
use collections::HashMap;
- use futures::future::try_join_all;
+ use futures::{channel::oneshot, future::try_join_all};
use gpui::{AppContext as _, WeakEntity};
use parking_lot::Mutex;
@@ -194,11 +251,16 @@ mod test_support {
#[derive(Clone, Default)]
pub struct StubAgentConnection {
- sessions: Arc>>>,
+ sessions: Arc>>,
permission_requests: HashMap>,
next_prompt_updates: Arc>>,
}
+ struct Session {
+ thread: WeakEntity,
+ response_tx: Option>,
+ }
+
impl StubAgentConnection {
pub fn new() -> Self {
Self {
@@ -226,15 +288,33 @@ mod test_support {
update: acp::SessionUpdate,
cx: &mut App,
) {
+ assert!(
+ self.next_prompt_updates.lock().is_empty(),
+ "Use either send_update or set_next_prompt_updates"
+ );
+
self.sessions
.lock()
.get(&session_id)
.unwrap()
+ .thread
.update(cx, |thread, cx| {
- thread.handle_session_update(update.clone(), cx).unwrap();
+ thread.handle_session_update(update, cx).unwrap();
})
.unwrap();
}
+
+ pub fn end_turn(&self, session_id: acp::SessionId, stop_reason: acp::StopReason) {
+ self.sessions
+ .lock()
+ .get_mut(&session_id)
+ .unwrap()
+ .response_tx
+ .take()
+ .expect("No pending turn")
+ .send(stop_reason)
+ .unwrap();
+ }
}
impl AgentConnection for StubAgentConnection {
@@ -249,9 +329,30 @@ mod test_support {
cx: &mut gpui::App,
) -> Task>> {
let session_id = acp::SessionId(self.sessions.lock().len().to_string().into());
- let thread =
- cx.new(|cx| AcpThread::new("Test", self.clone(), project, session_id.clone(), cx));
- self.sessions.lock().insert(session_id, thread.downgrade());
+ let action_log = cx.new(|_| ActionLog::new(project.clone()));
+ let thread = cx.new(|cx| {
+ AcpThread::new(
+ "Test",
+ self.clone(),
+ project,
+ action_log,
+ session_id.clone(),
+ watch::Receiver::constant(acp::PromptCapabilities {
+ image: true,
+ audio: true,
+ embedded_context: true,
+ meta: None,
+ }),
+ cx,
+ )
+ });
+ self.sessions.lock().insert(
+ session_id,
+ Session {
+ thread: thread.downgrade(),
+ response_tx: None,
+ },
+ );
Task::ready(Ok(thread))
}
@@ -269,54 +370,83 @@ mod test_support {
params: acp::PromptRequest,
cx: &mut App,
) -> Task> {
- let sessions = self.sessions.lock();
- let thread = sessions.get(¶ms.session_id).unwrap();
+ let mut sessions = self.sessions.lock();
+ let Session {
+ thread,
+ response_tx,
+ } = sessions.get_mut(¶ms.session_id).unwrap();
let mut tasks = vec![];
- for update in self.next_prompt_updates.lock().drain(..) {
- let thread = thread.clone();
- let update = update.clone();
- let permission_request = if let acp::SessionUpdate::ToolCall(tool_call) = &update
- && let Some(options) = self.permission_requests.get(&tool_call.id)
- {
- Some((tool_call.clone(), options.clone()))
- } else {
- None
- };
- let task = cx.spawn(async move |cx| {
- if let Some((tool_call, options)) = permission_request {
- let permission = thread.update(cx, |thread, cx| {
- thread.request_tool_call_authorization(
- tool_call.clone().into(),
- options.clone(),
- cx,
- )
+ if self.next_prompt_updates.lock().is_empty() {
+ let (tx, rx) = oneshot::channel();
+ response_tx.replace(tx);
+ cx.spawn(async move |_| {
+ let stop_reason = rx.await?;
+ Ok(acp::PromptResponse {
+ stop_reason,
+ meta: None,
+ })
+ })
+ } else {
+ for update in self.next_prompt_updates.lock().drain(..) {
+ let thread = thread.clone();
+ let update = update.clone();
+ let permission_request = if let acp::SessionUpdate::ToolCall(tool_call) =
+ &update
+ && let Some(options) = self.permission_requests.get(&tool_call.id)
+ {
+ Some((tool_call.clone(), options.clone()))
+ } else {
+ None
+ };
+ let task = cx.spawn(async move |cx| {
+ if let Some((tool_call, options)) = permission_request {
+ thread
+ .update(cx, |thread, cx| {
+ thread.request_tool_call_authorization(
+ tool_call.clone().into(),
+ options.clone(),
+ false,
+ cx,
+ )
+ })??
+ .await;
+ }
+ thread.update(cx, |thread, cx| {
+ thread.handle_session_update(update.clone(), cx).unwrap();
})?;
- permission?.await?;
- }
- thread.update(cx, |thread, cx| {
- thread.handle_session_update(update.clone(), cx).unwrap();
- })?;
- anyhow::Ok(())
- });
- tasks.push(task);
- }
- cx.spawn(async move |_| {
- try_join_all(tasks).await?;
- Ok(acp::PromptResponse {
- stop_reason: acp::StopReason::EndTurn,
+ anyhow::Ok(())
+ });
+ tasks.push(task);
+ }
+
+ cx.spawn(async move |_| {
+ try_join_all(tasks).await?;
+ Ok(acp::PromptResponse {
+ stop_reason: acp::StopReason::EndTurn,
+ meta: None,
+ })
})
- })
+ }
}
- fn cancel(&self, _session_id: &acp::SessionId, _cx: &mut App) {
- unimplemented!()
+ fn cancel(&self, session_id: &acp::SessionId, _cx: &mut App) {
+ if let Some(end_turn_tx) = self
+ .sessions
+ .lock()
+ .get_mut(session_id)
+ .unwrap()
+ .response_tx
+ .take()
+ {
+ end_turn_tx.send(acp::StopReason::Cancelled).unwrap();
+ }
}
- fn session_editor(
+ fn truncate(
&self,
_session_id: &agent_client_protocol::SessionId,
- _cx: &mut App,
- ) -> Option> {
+ _cx: &App,
+ ) -> Option> {
Some(Rc::new(StubAgentSessionEditor))
}
@@ -327,8 +457,8 @@ mod test_support {
struct StubAgentSessionEditor;
- impl AgentSessionEditor for StubAgentSessionEditor {
- fn truncate(&self, _: UserMessageId, _: &mut App) -> Task> {
+ impl AgentSessionTruncate for StubAgentSessionEditor {
+ fn run(&self, _: UserMessageId, _: &mut App) -> Task> {
Task::ready(Ok(()))
}
}
diff --git a/crates/acp_thread/src/diff.rs b/crates/acp_thread/src/diff.rs
index a2c2d6c3229ae96bf45dfc870e8600a5f778a6f0..055b2f7fb86ffe9d7f12459b6b16405ce77815a0 100644
--- a/crates/acp_thread/src/diff.rs
+++ b/crates/acp_thread/src/diff.rs
@@ -1,18 +1,12 @@
-use agent_client_protocol as acp;
use anyhow::Result;
use buffer_diff::{BufferDiff, BufferDiffSnapshot};
-use editor::{MultiBuffer, PathKey};
+use editor::{MultiBuffer, PathKey, multibuffer_context_lines};
use gpui::{App, AppContext, AsyncApp, Context, Entity, Subscription, Task};
use itertools::Itertools;
use language::{
Anchor, Buffer, Capability, LanguageRegistry, OffsetRangeExt as _, Point, Rope, TextBuffer,
};
-use std::{
- cmp::Reverse,
- ops::Range,
- path::{Path, PathBuf},
- sync::Arc,
-};
+use std::{cmp::Reverse, ops::Range, path::Path, sync::Arc};
use util::ResultExt;
pub enum Diff {
@@ -21,69 +15,54 @@ pub enum Diff {
}
impl Diff {
- pub fn from_acp(
- diff: acp::Diff,
+ pub fn finalized(
+ path: String,
+ old_text: Option,
+ new_text: String,
language_registry: Arc,
cx: &mut Context,
) -> Self {
- let acp::Diff {
- path,
- old_text,
- new_text,
- } = diff;
-
let multibuffer = cx.new(|_cx| MultiBuffer::without_headers(Capability::ReadOnly));
-
let new_buffer = cx.new(|cx| Buffer::local(new_text, cx));
- let old_buffer = cx.new(|cx| Buffer::local(old_text.unwrap_or("".into()), cx));
- let new_buffer_snapshot = new_buffer.read(cx).text_snapshot();
- let buffer_diff = cx.new(|cx| BufferDiff::new(&new_buffer_snapshot, cx));
-
+ let base_text = old_text.clone().unwrap_or(String::new()).into();
let task = cx.spawn({
let multibuffer = multibuffer.clone();
let path = path.clone();
+ let buffer = new_buffer.clone();
async move |_, cx| {
let language = language_registry
- .language_for_file_path(&path)
+ .load_language_for_file_path(Path::new(&path))
.await
.log_err();
- new_buffer.update(cx, |buffer, cx| buffer.set_language(language.clone(), cx))?;
-
- let old_buffer_snapshot = old_buffer.update(cx, |buffer, cx| {
- buffer.set_language(language, cx);
- buffer.snapshot()
- })?;
+ buffer.update(cx, |buffer, cx| buffer.set_language(language.clone(), cx))?;
- buffer_diff
- .update(cx, |diff, cx| {
- diff.set_base_text(
- old_buffer_snapshot,
- Some(language_registry),
- new_buffer_snapshot,
- cx,
- )
- })?
- .await?;
+ let diff = build_buffer_diff(
+ old_text.unwrap_or("".into()).into(),
+ &buffer,
+ Some(language_registry.clone()),
+ cx,
+ )
+ .await?;
multibuffer
.update(cx, |multibuffer, cx| {
let hunk_ranges = {
- let buffer = new_buffer.read(cx);
- let diff = buffer_diff.read(cx);
- diff.hunks_intersecting_range(Anchor::MIN..Anchor::MAX, &buffer, cx)
- .map(|diff_hunk| diff_hunk.buffer_range.to_point(&buffer))
+ let buffer = buffer.read(cx);
+ let diff = diff.read(cx);
+ diff.hunks_intersecting_range(Anchor::MIN..Anchor::MAX, buffer, cx)
+ .map(|diff_hunk| diff_hunk.buffer_range.to_point(buffer))
.collect::>()
};
multibuffer.set_excerpts_for_path(
- PathKey::for_buffer(&new_buffer, cx),
- new_buffer.clone(),
+ PathKey::for_buffer(&buffer, cx),
+ buffer.clone(),
hunk_ranges,
- editor::DEFAULT_MULTIBUFFER_CONTEXT,
+ multibuffer_context_lines(cx),
cx,
);
- multibuffer.add_diff(buffer_diff, cx);
+ multibuffer.add_diff(diff, cx);
})
.log_err();
@@ -94,23 +73,26 @@ impl Diff {
Self::Finalized(FinalizedDiff {
multibuffer,
path,
+ base_text,
+ new_buffer,
_update_diff: task,
})
}
pub fn new(buffer: Entity, cx: &mut Context) -> Self {
- let buffer_snapshot = buffer.read(cx).snapshot();
- let base_text = buffer_snapshot.text();
- let language_registry = buffer.read(cx).language_registry();
- let text_snapshot = buffer.read(cx).text_snapshot();
+ let buffer_text_snapshot = buffer.read(cx).text_snapshot();
+ let base_text_snapshot = buffer.read(cx).snapshot();
+ let base_text = base_text_snapshot.text();
+ debug_assert_eq!(buffer_text_snapshot.text(), base_text);
let buffer_diff = cx.new(|cx| {
- let mut diff = BufferDiff::new(&text_snapshot, cx);
- let _ = diff.set_base_text(
- buffer_snapshot.clone(),
- language_registry,
- text_snapshot,
- cx,
- );
+ let mut diff = BufferDiff::new_unchanged(&buffer_text_snapshot, base_text_snapshot);
+ let snapshot = diff.snapshot(cx);
+ let secondary_diff = cx.new(|cx| {
+ let mut diff = BufferDiff::new(&buffer_text_snapshot, cx);
+ diff.set_snapshot(snapshot, &buffer_text_snapshot, cx);
+ diff
+ });
+ diff.set_secondary_diff(secondary_diff);
diff
});
@@ -128,7 +110,7 @@ impl Diff {
diff.update(cx);
}
}),
- buffer,
+ new_buffer: buffer,
diff: buffer_diff,
revealed_ranges: Vec::new(),
update_diff: Task::ready(Ok(())),
@@ -163,14 +145,17 @@ impl Diff {
.map(|buffer| buffer.read(cx).text())
.join("\n");
let path = match self {
- Diff::Pending(PendingDiff { buffer, .. }) => {
- buffer.read(cx).file().map(|file| file.path().as_ref())
- }
- Diff::Finalized(FinalizedDiff { path, .. }) => Some(path.as_path()),
+ Diff::Pending(PendingDiff {
+ new_buffer: buffer, ..
+ }) => buffer
+ .read(cx)
+ .file()
+ .map(|file| file.path().display(file.path_style(cx))),
+ Diff::Finalized(FinalizedDiff { path, .. }) => Some(path.as_str().into()),
};
format!(
"Diff: {}\n```\n{}\n```\n",
- path.unwrap_or(Path::new("untitled")).display(),
+ path.unwrap_or("untitled".into()),
buffer_text
)
}
@@ -178,12 +163,33 @@ impl Diff {
pub fn has_revealed_range(&self, cx: &App) -> bool {
self.multibuffer().read(cx).excerpt_paths().next().is_some()
}
+
+ pub fn needs_update(&self, old_text: &str, new_text: &str, cx: &App) -> bool {
+ match self {
+ Diff::Pending(PendingDiff {
+ base_text,
+ new_buffer,
+ ..
+ }) => {
+ base_text.as_str() != old_text
+ || !new_buffer.read(cx).as_rope().chunks().equals_str(new_text)
+ }
+ Diff::Finalized(FinalizedDiff {
+ base_text,
+ new_buffer,
+ ..
+ }) => {
+ base_text.as_str() != old_text
+ || !new_buffer.read(cx).as_rope().chunks().equals_str(new_text)
+ }
+ }
+ }
}
pub struct PendingDiff {
multibuffer: Entity,
base_text: Arc,
- buffer: Entity,
+ new_buffer: Entity,
diff: Entity,
revealed_ranges: Vec>,
_subscription: Subscription,
@@ -192,7 +198,7 @@ pub struct PendingDiff {
impl PendingDiff {
pub fn update(&mut self, cx: &mut Context) {
- let buffer = self.buffer.clone();
+ let buffer = self.new_buffer.clone();
let buffer_diff = self.diff.clone();
let base_text = self.base_text.clone();
self.update_diff = cx.spawn(async move |diff, cx| {
@@ -209,7 +215,10 @@ impl PendingDiff {
)
.await?;
buffer_diff.update(cx, |diff, cx| {
- diff.set_snapshot(diff_snapshot, &text_snapshot, cx)
+ diff.set_snapshot(diff_snapshot.clone(), &text_snapshot, cx);
+ diff.secondary_diff().unwrap().update(cx, |diff, cx| {
+ diff.set_snapshot(diff_snapshot.clone(), &text_snapshot, cx);
+ });
})?;
diff.update(cx, |diff, cx| {
if let Diff::Pending(diff) = diff {
@@ -227,24 +236,24 @@ impl PendingDiff {
fn finalize(&self, cx: &mut Context) -> FinalizedDiff {
let ranges = self.excerpt_ranges(cx);
let base_text = self.base_text.clone();
- let language_registry = self.buffer.read(cx).language_registry().clone();
+ let new_buffer = self.new_buffer.read(cx);
+ let language_registry = new_buffer.language_registry();
- let path = self
- .buffer
- .read(cx)
+ let path = new_buffer
.file()
- .map(|file| file.path().as_ref())
- .unwrap_or(Path::new("untitled"))
+ .map(|file| file.path().display(file.path_style(cx)))
+ .unwrap_or("untitled".into())
.into();
+ let replica_id = new_buffer.replica_id();
// Replace the buffer in the multibuffer with the snapshot
let buffer = cx.new(|cx| {
- let language = self.buffer.read(cx).language().cloned();
+ let language = self.new_buffer.read(cx).language().cloned();
let buffer = TextBuffer::new_normalized(
- 0,
+ replica_id,
cx.entity_id().as_non_zero_u64().into(),
- self.buffer.read(cx).line_ending(),
- self.buffer.read(cx).as_rope().clone(),
+ self.new_buffer.read(cx).line_ending(),
+ self.new_buffer.read(cx).as_rope().clone(),
);
let mut buffer = Buffer::build(buffer, None, Capability::ReadWrite);
buffer.set_language(language, cx);
@@ -253,7 +262,6 @@ impl PendingDiff {
let buffer_diff = cx.spawn({
let buffer = buffer.clone();
- let language_registry = language_registry.clone();
async move |_this, cx| {
build_buffer_diff(base_text, &buffer, language_registry, cx).await
}
@@ -269,7 +277,7 @@ impl PendingDiff {
path_key,
buffer,
ranges,
- editor::DEFAULT_MULTIBUFFER_CONTEXT,
+ multibuffer_context_lines(cx),
cx,
);
multibuffer.add_diff(buffer_diff.clone(), cx);
@@ -281,7 +289,9 @@ impl PendingDiff {
FinalizedDiff {
path,
+ base_text: self.base_text.clone(),
multibuffer: self.multibuffer.clone(),
+ new_buffer: self.new_buffer.clone(),
_update_diff: update_diff,
}
}
@@ -290,10 +300,10 @@ impl PendingDiff {
let ranges = self.excerpt_ranges(cx);
self.multibuffer.update(cx, |multibuffer, cx| {
multibuffer.set_excerpts_for_path(
- PathKey::for_buffer(&self.buffer, cx),
- self.buffer.clone(),
+ PathKey::for_buffer(&self.new_buffer, cx),
+ self.new_buffer.clone(),
ranges,
- editor::DEFAULT_MULTIBUFFER_CONTEXT,
+ multibuffer_context_lines(cx),
cx,
);
let end = multibuffer.len(cx);
@@ -303,16 +313,16 @@ impl PendingDiff {
}
fn excerpt_ranges(&self, cx: &App) -> Vec> {
- let buffer = self.buffer.read(cx);
+ let buffer = self.new_buffer.read(cx);
let diff = self.diff.read(cx);
let mut ranges = diff
- .hunks_intersecting_range(Anchor::MIN..Anchor::MAX, &buffer, cx)
- .map(|diff_hunk| diff_hunk.buffer_range.to_point(&buffer))
+ .hunks_intersecting_range(Anchor::MIN..Anchor::MAX, buffer, cx)
+ .map(|diff_hunk| diff_hunk.buffer_range.to_point(buffer))
.collect::>();
ranges.extend(
self.revealed_ranges
.iter()
- .map(|range| range.to_point(&buffer)),
+ .map(|range| range.to_point(buffer)),
);
ranges.sort_unstable_by_key(|range| (range.start, Reverse(range.end)));
@@ -336,7 +346,9 @@ impl PendingDiff {
}
pub struct FinalizedDiff {
- path: PathBuf,
+ path: String,
+ base_text: Arc,
+ new_buffer: Entity,
multibuffer: Entity,
_update_diff: Task>,
}
@@ -390,3 +402,21 @@ async fn build_buffer_diff(
diff
})
}
+
+#[cfg(test)]
+mod tests {
+ use gpui::{AppContext as _, TestAppContext};
+ use language::Buffer;
+
+ use crate::Diff;
+
+ #[gpui::test]
+ async fn test_pending_diff(cx: &mut TestAppContext) {
+ let buffer = cx.new(|cx| Buffer::local("hello!", cx));
+ let _diff = cx.new(|cx| Diff::new(buffer.clone(), cx));
+ buffer.update(cx, |buffer, cx| {
+ buffer.set_text("HELLO!", cx);
+ });
+ cx.run_until_parked();
+ }
+}
diff --git a/crates/acp_thread/src/mention.rs b/crates/acp_thread/src/mention.rs
index b9b021c4ca1f728ba82e7df111456ace656bb3bc..b78eac4903a259a1044892fb2c8233f7e973f025 100644
--- a/crates/acp_thread/src/mention.rs
+++ b/crates/acp_thread/src/mention.rs
@@ -1,29 +1,33 @@
-use agent::ThreadId;
+use agent_client_protocol as acp;
use anyhow::{Context as _, Result, bail};
use file_icons::FileIcons;
use prompt_store::{PromptId, UserPromptId};
+use serde::{Deserialize, Serialize};
use std::{
fmt,
- ops::Range,
+ ops::RangeInclusive,
path::{Path, PathBuf},
- str::FromStr,
};
use ui::{App, IconName, SharedString};
use url::Url;
+use util::paths::PathStyle;
-#[derive(Clone, Debug, PartialEq, Eq)]
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, Hash)]
pub enum MentionUri {
File {
abs_path: PathBuf,
- is_directory: bool,
+ },
+ PastedImage,
+ Directory {
+ abs_path: PathBuf,
},
Symbol {
- path: PathBuf,
+ abs_path: PathBuf,
name: String,
- line_range: Range,
+ line_range: RangeInclusive,
},
Thread {
- id: ThreadId,
+ id: acp::SessionId,
name: String,
},
TextThread {
@@ -35,8 +39,9 @@ pub enum MentionUri {
name: String,
},
Selection {
- path: PathBuf,
- line_range: Range,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ abs_path: Option,
+ line_range: RangeInclusive,
},
Fetch {
url: Url,
@@ -44,48 +49,58 @@ pub enum MentionUri {
}
impl MentionUri {
- pub fn parse(input: &str) -> Result {
+ pub fn parse(input: &str, path_style: PathStyle) -> Result {
+ fn parse_line_range(fragment: &str) -> Result> {
+ let range = fragment
+ .strip_prefix("L")
+ .context("Line range must start with \"L\"")?;
+ let (start, end) = range
+ .split_once(":")
+ .context("Line range must use colon as separator")?;
+ let range = start
+ .parse::()
+ .context("Parsing line range start")?
+ .checked_sub(1)
+ .context("Line numbers should be 1-based")?
+ ..=end
+ .parse::()
+ .context("Parsing line range end")?
+ .checked_sub(1)
+ .context("Line numbers should be 1-based")?;
+ Ok(range)
+ }
+
let url = url::Url::parse(input)?;
let path = url.path();
match url.scheme() {
"file" => {
+ let path = if path_style.is_windows() {
+ path.trim_start_matches("/")
+ } else {
+ path
+ };
+
if let Some(fragment) = url.fragment() {
- let range = fragment
- .strip_prefix("L")
- .context("Line range must start with \"L\"")?;
- let (start, end) = range
- .split_once(":")
- .context("Line range must use colon as separator")?;
- let line_range = start
- .parse::()
- .context("Parsing line range start")?
- .checked_sub(1)
- .context("Line numbers should be 1-based")?
- ..end
- .parse::()
- .context("Parsing line range end")?
- .checked_sub(1)
- .context("Line numbers should be 1-based")?;
+ let line_range = parse_line_range(fragment)?;
if let Some(name) = single_query_param(&url, "symbol")? {
Ok(Self::Symbol {
name,
- path: path.into(),
+ abs_path: path.into(),
line_range,
})
} else {
Ok(Self::Selection {
- path: path.into(),
+ abs_path: Some(path.into()),
line_range,
})
}
+ } else if input.ends_with("/") {
+ Ok(Self::Directory {
+ abs_path: path.into(),
+ })
} else {
- let file_path =
- PathBuf::from(format!("{}{}", url.host_str().unwrap_or(""), path));
- let is_directory = input.ends_with("/");
-
Ok(Self::File {
- abs_path: file_path,
- is_directory,
+ abs_path: path.into(),
})
}
}
@@ -93,7 +108,7 @@ impl MentionUri {
if let Some(thread_id) = path.strip_prefix("/agent/thread/") {
let name = single_query_param(&url, "name")?.context("Missing thread name")?;
Ok(Self::Thread {
- id: thread_id.into(),
+ id: acp::SessionId(thread_id.into()),
name,
})
} else if let Some(path) = path.strip_prefix("/agent/text-thread/") {
@@ -109,6 +124,50 @@ impl MentionUri {
id: rule_id.into(),
name,
})
+ } else if path.starts_with("/agent/pasted-image") {
+ Ok(Self::PastedImage)
+ } else if path.starts_with("/agent/untitled-buffer") {
+ let fragment = url
+ .fragment()
+ .context("Missing fragment for untitled buffer selection")?;
+ let line_range = parse_line_range(fragment)?;
+ Ok(Self::Selection {
+ abs_path: None,
+ line_range,
+ })
+ } else if let Some(name) = path.strip_prefix("/agent/symbol/") {
+ let fragment = url
+ .fragment()
+ .context("Missing fragment for untitled buffer selection")?;
+ let line_range = parse_line_range(fragment)?;
+ let path =
+ single_query_param(&url, "path")?.context("Missing path for symbol")?;
+ Ok(Self::Symbol {
+ name: name.to_string(),
+ abs_path: path.into(),
+ line_range,
+ })
+ } else if path.starts_with("/agent/file") {
+ let path =
+ single_query_param(&url, "path")?.context("Missing path for file")?;
+ Ok(Self::File {
+ abs_path: path.into(),
+ })
+ } else if path.starts_with("/agent/directory") {
+ let path =
+ single_query_param(&url, "path")?.context("Missing path for directory")?;
+ Ok(Self::Directory {
+ abs_path: path.into(),
+ })
+ } else if path.starts_with("/agent/selection") {
+ let fragment = url.fragment().context("Missing fragment for selection")?;
+ let line_range = parse_line_range(fragment)?;
+ let path =
+ single_query_param(&url, "path")?.context("Missing path for selection")?;
+ Ok(Self::Selection {
+ abs_path: Some(path.into()),
+ line_range,
+ })
} else {
bail!("invalid zed url: {:?}", input);
}
@@ -120,36 +179,33 @@ impl MentionUri {
pub fn name(&self) -> String {
match self {
- MentionUri::File { abs_path, .. } => abs_path
+ MentionUri::File { abs_path, .. } | MentionUri::Directory { abs_path, .. } => abs_path
.file_name()
.unwrap_or_default()
.to_string_lossy()
.into_owned(),
+ MentionUri::PastedImage => "Image".to_string(),
MentionUri::Symbol { name, .. } => name.clone(),
MentionUri::Thread { name, .. } => name.clone(),
MentionUri::TextThread { name, .. } => name.clone(),
MentionUri::Rule { name, .. } => name.clone(),
MentionUri::Selection {
- path, line_range, ..
- } => selection_name(path, line_range),
+ abs_path: path,
+ line_range,
+ ..
+ } => selection_name(path.as_deref(), line_range),
MentionUri::Fetch { url } => url.to_string(),
}
}
pub fn icon_path(&self, cx: &mut App) -> SharedString {
match self {
- MentionUri::File {
- abs_path,
- is_directory,
- } => {
- if *is_directory {
- FileIcons::get_folder_icon(false, cx)
- .unwrap_or_else(|| IconName::Folder.path().into())
- } else {
- FileIcons::get_icon(&abs_path, cx)
- .unwrap_or_else(|| IconName::File.path().into())
- }
+ MentionUri::File { abs_path } => {
+ FileIcons::get_icon(abs_path, cx).unwrap_or_else(|| IconName::File.path().into())
}
+ MentionUri::PastedImage => IconName::Image.path().into(),
+ MentionUri::Directory { abs_path } => FileIcons::get_folder_icon(false, abs_path, cx)
+ .unwrap_or_else(|| IconName::Folder.path().into()),
MentionUri::Symbol { .. } => IconName::Code.path().into(),
MentionUri::Thread { .. } => IconName::Thread.path().into(),
MentionUri::TextThread { .. } => IconName::Thread.path().into(),
@@ -165,40 +221,49 @@ impl MentionUri {
pub fn to_uri(&self) -> Url {
match self {
- MentionUri::File {
- abs_path,
- is_directory,
- } => {
+ MentionUri::File { abs_path } => {
let mut url = Url::parse("file:///").unwrap();
- let mut path = abs_path.to_string_lossy().to_string();
- if *is_directory && !path.ends_with("/") {
- path.push_str("/");
- }
- url.set_path(&path);
+ url.set_path(&abs_path.to_string_lossy());
+ url
+ }
+ MentionUri::PastedImage => Url::parse("zed:///agent/pasted-image").unwrap(),
+ MentionUri::Directory { abs_path } => {
+ let mut url = Url::parse("file:///").unwrap();
+ url.set_path(&abs_path.to_string_lossy());
url
}
MentionUri::Symbol {
- path,
+ abs_path,
name,
line_range,
} => {
let mut url = Url::parse("file:///").unwrap();
- url.set_path(&path.to_string_lossy());
+ url.set_path(&abs_path.to_string_lossy());
url.query_pairs_mut().append_pair("symbol", name);
url.set_fragment(Some(&format!(
"L{}:{}",
- line_range.start + 1,
- line_range.end + 1
+ line_range.start() + 1,
+ line_range.end() + 1
)));
url
}
- MentionUri::Selection { path, line_range } => {
- let mut url = Url::parse("file:///").unwrap();
- url.set_path(&path.to_string_lossy());
+ MentionUri::Selection {
+ abs_path,
+ line_range,
+ } => {
+ let mut url = if let Some(path) = abs_path {
+ let mut url = Url::parse("file:///").unwrap();
+ url.set_path(&path.to_string_lossy());
+ url
+ } else {
+ let mut url = Url::parse("zed:///").unwrap();
+ url.set_path("/agent/untitled-buffer");
+ url
+ };
url.set_fragment(Some(&format!(
"L{}:{}",
- line_range.start + 1,
- line_range.end + 1
+ line_range.start() + 1,
+ line_range.end() + 1
)));
url
}
@@ -210,7 +275,10 @@ impl MentionUri {
}
MentionUri::TextThread { path, name } => {
let mut url = Url::parse("zed:///").unwrap();
- url.set_path(&format!("/agent/text-thread/{}", path.to_string_lossy()));
+ url.set_path(&format!(
+ "/agent/text-thread/{}",
+ path.to_string_lossy().trim_start_matches('/')
+ ));
url.query_pairs_mut().append_pair("name", name);
url
}
@@ -225,14 +293,6 @@ impl MentionUri {
}
}
-impl FromStr for MentionUri {
- type Err = anyhow::Error;
-
- fn from_str(s: &str) -> anyhow::Result {
- Self::parse(s)
- }
-}
-
pub struct MentionLink<'a>(&'a MentionUri);
impl fmt::Display for MentionLink<'_> {
@@ -256,30 +316,30 @@ fn single_query_param(url: &Url, name: &'static str) -> Result