diff --git a/.agents/skills/lint-creator/SKILL.md b/.agents/skills/lint-creator/SKILL.md
new file mode 100644
index 00000000000000..e72e83a9abaf1e
--- /dev/null
+++ b/.agents/skills/lint-creator/SKILL.md
@@ -0,0 +1,17 @@
+---
+name: lint-creator
+description: An auxiliary skill to add more dylints to `tooling/lints`
+disable-model-invocation: false
+---
+
+# Lint RULES
+
+1. Every lint MUST have accompanying `ui` tests
+2. `ui` tests MUST be in the `ui` folder
+3. Every lint MUST be in a separate module
+4. Every lint MUST have negative `ui` tests
+5. Lints should be as simple as possible.
+6. Reporting is fine if it's simple, it does not need to be elaborate or lengthy code.
+7. Do NOT suggest how to fix the lint, only flag it.
+8. Do NOT make lints machine applicable.
+9. Detect if lints are redundant vs clippy's capabilities.
diff --git a/.cloudflare/docs-proxy/src/worker.js b/.cloudflare/docs-proxy/src/worker.js
index 08b0265fafbbb0..99fca0c7116614 100644
--- a/.cloudflare/docs-proxy/src/worker.js
+++ b/.cloudflare/docs-proxy/src/worker.js
@@ -1,6 +1,11 @@
export default {
async fetch(request, _env, _ctx) {
const url = new URL(request.url);
+ const acceptHeader = request.headers.get("Accept") || "";
+ const wantsMarkdown = acceptHeader
+ .split(",")
+ .map((mediaType) => mediaType.split(";")[0].trim().toLowerCase())
+ .includes("text/markdown");
if (url.pathname === "/docs/nightly") {
url.hostname = "docs-nightly.pages.dev";
@@ -18,6 +23,14 @@ export default {
url.hostname = "docs-anw.pages.dev";
}
+ if (url.pathname === "/docs.md") {
+ url.pathname = "/docs/getting-started.md";
+ }
+
+ if (wantsMarkdown) {
+ url.pathname = markdownPathFor(url.pathname);
+ }
+
let res = await fetch(url, request);
if (res.status === 404) {
@@ -27,3 +40,31 @@ export default {
return res;
},
};
+
+function markdownPathFor(pathname) {
+ if (pathname === "/docs" || pathname === "/docs/") {
+ return "/docs/getting-started.md";
+ }
+
+ if (pathname.endsWith("/index.md")) {
+ return pathname.replace(/\/index\.md$/, "/getting-started.md");
+ }
+
+ if (pathname.endsWith(".md")) {
+ return pathname;
+ }
+
+ if (pathname.endsWith(".html")) {
+ return pathname.replace(/\.html$/, ".md");
+ }
+
+ if (pathname.split("/").pop().includes(".")) {
+ return pathname;
+ }
+
+ if (pathname.endsWith("/")) {
+ return `${pathname}getting-started.md`;
+ }
+
+ return `${pathname}.md`;
+}
diff --git a/.github/CODEOWNERS.hold b/.github/CODEOWNERS.hold
index 0e6ab04228d43c..fea437d4ff9206 100644
--- a/.github/CODEOWNERS.hold
+++ b/.github/CODEOWNERS.hold
@@ -304,7 +304,6 @@
/crates/picker/ @zed-industries/ui-team
/crates/refineable/ @zed-industries/ui-team
/crates/story/ @zed-industries/ui-team
-/crates/storybook/ @zed-industries/ui-team
/crates/svg_preview/ @zed-industries/ui-team
/crates/tab_switcher/ @zed-industries/ui-team
/crates/theme/ @zed-industries/ui-team
diff --git a/.github/actions/run_tests/action.yml b/.github/actions/run_tests/action.yml
index 9448dfebb0e1a2..49022915ee4207 100644
--- a/.github/actions/run_tests/action.yml
+++ b/.github/actions/run_tests/action.yml
@@ -5,7 +5,9 @@ runs:
using: "composite"
steps:
- name: Install nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c # nextest
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9 # 2.84.0
+ with:
+ tool: nextest
- name: Install Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
diff --git a/.github/actions/run_tests_windows/action.yml b/.github/actions/run_tests_windows/action.yml
index 3752cbb50d5384..d1a5219144e89f 100644
--- a/.github/actions/run_tests_windows/action.yml
+++ b/.github/actions/run_tests_windows/action.yml
@@ -12,7 +12,9 @@ runs:
steps:
- name: Install test runner
working-directory: ${{ inputs.working-directory }}
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c # nextest
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9 # 2.84.0
+ with:
+ tool: nextest
- name: Install Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
diff --git a/.github/cherry-pick-bot.yml b/.github/cherry-pick-bot.yml
deleted file mode 100644
index 1f62315d79dcac..00000000000000
--- a/.github/cherry-pick-bot.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-enabled: true
-preservePullRequestTitle: true
diff --git a/.github/workflows/add_commented_closed_issue_to_project.yml b/.github/workflows/add_commented_closed_issue_to_project.yml
index 46b9f5079756e5..5924e04ff78350 100644
--- a/.github/workflows/add_commented_closed_issue_to_project.yml
+++ b/.github/workflows/add_commented_closed_issue_to_project.yml
@@ -40,6 +40,9 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-members: read
+ permission-organization-projects: write
- if: steps.is-post-close-comment.outputs.result == 'true'
id: check-staff
diff --git a/.github/workflows/after_release.yml b/.github/workflows/after_release.yml
index 7d78af925f4124..77c3bd8507c058 100644
--- a/.github/workflows/after_release.yml
+++ b/.github/workflows/after_release.yml
@@ -22,6 +22,8 @@ on:
description: body
type: string
default: ''
+permissions:
+ contents: read
jobs:
rebuild_releases_page:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
diff --git a/.github/workflows/autofix_pr.yml b/.github/workflows/autofix_pr.yml
index 9918f6be0fc933..1b05da608571a6 100644
--- a/.github/workflows/autofix_pr.yml
+++ b/.github/workflows/autofix_pr.yml
@@ -13,9 +13,14 @@ on:
description: run_clippy
type: boolean
default: 'true'
+permissions:
+ contents: read
jobs:
run_autofix:
runs-on: namespace-profile-16x32-ubuntu-2204
+ permissions:
+ contents: read
+ pull-requests: read
env:
CC: clang
CXX: clang++
@@ -43,12 +48,12 @@ jobs:
- name: steps::download_wasi_sdk
run: ./script/download-wasi-sdk
- name: steps::setup_pnpm
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
+ uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: '9'
- name: autofix_pr::run_autofix::install_cargo_machete
if: ${{ inputs.run_clippy }}
- uses: taiki-e/install-action@02cc5f8ca9f2301050c0c099055816a41ee05507
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
with:
tool: cargo-machete@0.7.0
- name: autofix_pr::run_autofix::run_cargo_fix
@@ -99,6 +104,8 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
permission-contents: write
permission-workflows: write
- name: steps::checkout_repo
diff --git a/.github/workflows/bump_collab_staging.yml b/.github/workflows/bump_collab_staging.yml
index 4f9724439f37b2..be39f41b6e54e5 100644
--- a/.github/workflows/bump_collab_staging.yml
+++ b/.github/workflows/bump_collab_staging.yml
@@ -5,10 +5,15 @@ on:
# Fire every day at 16:00 UTC (At the start of the US workday)
- cron: "0 16 * * *"
+permissions:
+ contents: read
+
jobs:
update-collab-staging-tag:
if: github.repository_owner == 'zed-industries'
runs-on: namespace-profile-2x4-ubuntu-2404
+ permissions:
+ contents: write
steps:
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
diff --git a/.github/workflows/bump_patch_version.yml b/.github/workflows/bump_patch_version.yml
index 3618d7230f79b4..b2ef7349f4b221 100644
--- a/.github/workflows/bump_patch_version.yml
+++ b/.github/workflows/bump_patch_version.yml
@@ -8,10 +8,14 @@ on:
description: Branch name to run on
required: true
type: string
+permissions:
+ contents: read
jobs:
run_bump_patch_version:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
runs-on: namespace-profile-16x32-ubuntu-2204
+ permissions:
+ contents: write
steps:
- id: generate-token
name: steps::authenticate_as_zippy
@@ -19,6 +23,10 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
+ permission-workflows: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -51,7 +59,7 @@ jobs:
echo "tag_suffix=$tag_suffix"
} >> "$GITHUB_OUTPUT"
- name: steps::install_cargo_edit
- uses: taiki-e/install-action@02cc5f8ca9f2301050c0c099055816a41ee05507
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
with:
tool: cargo-edit
- id: bump-version
diff --git a/.github/workflows/bump_zed_version.yml b/.github/workflows/bump_zed_version.yml
index f8fae3de7afc0a..f5b72cccf190a8 100644
--- a/.github/workflows/bump_zed_version.yml
+++ b/.github/workflows/bump_zed_version.yml
@@ -8,6 +8,8 @@ on:
description: 'Which channels to bump: all, main, preview, or stable'
type: string
default: all
+permissions:
+ contents: read
jobs:
resolve_versions:
if: github.repository_owner == 'zed-industries'
@@ -19,6 +21,9 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: read
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -86,6 +91,9 @@ jobs:
- resolve_versions
if: inputs.target == 'all' || inputs.target == 'main'
runs-on: namespace-profile-16x32-ubuntu-2204
+ permissions:
+ contents: write
+ pull-requests: write
steps:
- id: generate-token
name: steps::authenticate_as_zippy
@@ -93,6 +101,10 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
+ permission-pull-requests: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -100,7 +112,7 @@ jobs:
ref: main
token: ${{ steps.generate-token.outputs.token }}
- name: steps::install_cargo_edit
- uses: taiki-e/install-action@02cc5f8ca9f2301050c0c099055816a41ee05507
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
with:
tool: cargo-edit
- name: bump_zed_version::bump_main::bump_version
@@ -127,6 +139,8 @@ jobs:
- resolve_versions
if: inputs.target == 'all' || inputs.target == 'preview'
runs-on: namespace-profile-16x32-ubuntu-2204
+ permissions:
+ contents: write
steps:
- id: generate-token
name: steps::authenticate_as_zippy
@@ -134,6 +148,10 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
+ permission-workflows: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -180,6 +198,8 @@ jobs:
- resolve_versions
if: inputs.target == 'all' || inputs.target == 'stable'
runs-on: namespace-profile-16x32-ubuntu-2204
+ permissions:
+ contents: write
steps:
- id: generate-token
name: steps::authenticate_as_zippy
@@ -187,6 +207,10 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
+ permission-workflows: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
diff --git a/.github/workflows/catch_blank_issues.yml b/.github/workflows/catch_blank_issues.yml
index 6d6f414d8350fa..7b993d23a7aa2e 100644
--- a/.github/workflows/catch_blank_issues.yml
+++ b/.github/workflows/catch_blank_issues.yml
@@ -21,6 +21,9 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-members: read
+ permission-issues: write
- id: check-staff
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
diff --git a/.github/workflows/cherry_pick.yml b/.github/workflows/cherry_pick.yml
index 82dc9fb545d027..4ff5b9bcf80b7d 100644
--- a/.github/workflows/cherry_pick.yml
+++ b/.github/workflows/cherry_pick.yml
@@ -21,23 +21,28 @@ on:
description: pr_number
required: true
type: string
+permissions:
+ contents: read
jobs:
run_cherry_pick:
runs-on: namespace-profile-2x4-ubuntu-2404
steps:
- - name: steps::checkout_repo
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
- with:
- clean: false
- id: generate-token
name: steps::authenticate_as_zippy
uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
permission-contents: write
permission-workflows: write
permission-pull-requests: write
+ - name: steps::checkout_repo
+ uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
+ with:
+ clean: false
+ token: ${{ steps.generate-token.outputs.token }}
- name: cherry_pick::run_cherry_pick::cherry_pick
run: ./script/cherry-pick "$BRANCH" "$COMMIT" "$CHANNEL"
env:
diff --git a/.github/workflows/comment_on_potential_duplicate_issues.yml b/.github/workflows/comment_on_potential_duplicate_issues.yml
index 0d7ce3aad3ce9d..498aafb434a8ed 100644
--- a/.github/workflows/comment_on_potential_duplicate_issues.yml
+++ b/.github/workflows/comment_on_potential_duplicate_issues.yml
@@ -14,6 +14,8 @@ concurrency:
group: potential-duplicate-check-${{ github.event.issue.number || inputs.issue_number }}
cancel-in-progress: true
+permissions: {}
+
jobs:
identify-duplicates:
# For manual testing, allow running on any branch; for automatic runs, only on main repo
@@ -39,6 +41,8 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-issues: write
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
diff --git a/.github/workflows/community_close_stale_issues.yml b/.github/workflows/community_close_stale_issues.yml
index be1d8e66d046ae..f309dd589b7d20 100644
--- a/.github/workflows/community_close_stale_issues.yml
+++ b/.github/workflows/community_close_stale_issues.yml
@@ -13,10 +13,15 @@ on:
type: number
default: 1000
+permissions:
+ contents: read
+
jobs:
stale:
if: github.repository_owner == 'zed-industries'
runs-on: namespace-profile-2x4-ubuntu-2404
+ permissions:
+ issues: write
steps:
- uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10
with:
diff --git a/.github/workflows/community_pr_board.yml b/.github/workflows/community_pr_board.yml
index d155cf8275dbb5..16d4a4f8f733b6 100644
--- a/.github/workflows/community_pr_board.yml
+++ b/.github/workflows/community_pr_board.yml
@@ -12,6 +12,9 @@
name: Community PR Board
on:
+ # zizmor: ignore[dangerous-triggers]
+ # Fork PRs must be supported, but this workflow only reads event metadata and
+ # checks out scripts from the trusted default branch; it never executes PR code.
pull_request_target:
types: [labeled, unlabeled, assigned, review_requested, edited]
issue_comment:
@@ -50,6 +53,10 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-issues: read
+ permission-organization-projects: write
+ permission-pull-requests: read
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
diff --git a/.github/workflows/community_pr_board_refresh.yml b/.github/workflows/community_pr_board_refresh.yml
index 1d77638c82d381..f4b0c293cf657a 100644
--- a/.github/workflows/community_pr_board_refresh.yml
+++ b/.github/workflows/community_pr_board_refresh.yml
@@ -32,6 +32,10 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-issues: read
+ permission-organization-projects: write
+ permission-pull-requests: read
- name: Checkout repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
diff --git a/.github/workflows/community_update_all_top_ranking_issues.yml b/.github/workflows/community_update_all_top_ranking_issues.yml
index f088b8147b64fd..b381370e3e9c60 100644
--- a/.github/workflows/community_update_all_top_ranking_issues.yml
+++ b/.github/workflows/community_update_all_top_ranking_issues.yml
@@ -5,10 +5,16 @@ on:
- cron: "0 */12 * * *"
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
update_top_ranking_issues:
runs-on: namespace-profile-2x4-ubuntu-2404
if: github.repository == 'zed-industries/zed'
+ permissions:
+ contents: read
+ issues: write
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up uv
diff --git a/.github/workflows/community_update_weekly_top_ranking_issues.yml b/.github/workflows/community_update_weekly_top_ranking_issues.yml
index 8b3585e3c1c50b..491b1656460225 100644
--- a/.github/workflows/community_update_weekly_top_ranking_issues.yml
+++ b/.github/workflows/community_update_weekly_top_ranking_issues.yml
@@ -5,10 +5,16 @@ on:
- cron: "0 15 * * *"
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
update_top_ranking_issues:
runs-on: namespace-profile-2x4-ubuntu-2404
if: github.repository == 'zed-industries/zed'
+ permissions:
+ contents: read
+ issues: write
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
- name: Set up uv
diff --git a/.github/workflows/compliance_check.yml b/.github/workflows/compliance_check.yml
index 2cf27fea8b0652..a701371d76ea40 100644
--- a/.github/workflows/compliance_check.yml
+++ b/.github/workflows/compliance_check.yml
@@ -7,6 +7,8 @@ on:
schedule:
- cron: 30 17 * * 2
workflow_dispatch: {}
+permissions:
+ contents: read
jobs:
scheduled_compliance_check:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
diff --git a/.github/workflows/congrats.yml b/.github/workflows/congrats.yml
index 4866b3c33bc6ba..f6d04265975451 100644
--- a/.github/workflows/congrats.yml
+++ b/.github/workflows/congrats.yml
@@ -4,6 +4,9 @@ on:
push:
branches: [main]
+permissions:
+ contents: read
+
jobs:
check-author:
if: ${{ github.repository_owner == 'zed-industries' }}
diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml
index 4cb0df5735a5c8..22ffdc6f34552a 100644
--- a/.github/workflows/danger.yml
+++ b/.github/workflows/danger.yml
@@ -11,6 +11,8 @@ on:
- edited
branches:
- main
+permissions:
+ contents: read
jobs:
danger:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -21,13 +23,15 @@ jobs:
with:
clean: false
- name: steps::setup_pnpm
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
+ uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: '9'
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
cache: pnpm
cache-dependency-path: script/danger/pnpm-lock.yaml
- name: danger::danger_job::install_deps
diff --git a/.github/workflows/deploy_collab.yml b/.github/workflows/deploy_collab.yml
index ef6cb399a761ce..d14394954ba211 100644
--- a/.github/workflows/deploy_collab.yml
+++ b/.github/workflows/deploy_collab.yml
@@ -7,6 +7,8 @@ on:
push:
tags:
- collab-production
+permissions:
+ contents: read
jobs:
style:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -64,7 +66,9 @@ jobs:
- name: steps::download_wasi_sdk
run: ./script/download-wasi-sdk
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than 350 200
- name: deploy_collab::tests::run_collab_tests
diff --git a/.github/workflows/deploy_docs.yml b/.github/workflows/deploy_docs.yml
index 6c492135ea6c3d..ace3c0729e7f2a 100644
--- a/.github/workflows/deploy_docs.yml
+++ b/.github/workflows/deploy_docs.yml
@@ -35,6 +35,8 @@ on:
description: Git ref to checkout and deploy. Defaults to event SHA when omitted.
type: string
default: ''
+permissions:
+ contents: read
jobs:
deploy_docs:
if: github.repository_owner == 'zed-industries'
diff --git a/.github/workflows/deploy_nightly_docs.yml b/.github/workflows/deploy_nightly_docs.yml
index acd904841bb33c..12d10f10b26161 100644
--- a/.github/workflows/deploy_nightly_docs.yml
+++ b/.github/workflows/deploy_nightly_docs.yml
@@ -5,6 +5,7 @@ on:
push:
branches:
- main
+permissions: {}
jobs:
deploy_docs:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
diff --git a/.github/workflows/docs_suggestions.yml b/.github/workflows/docs_suggestions.yml
index c3d04d5780b290..1509e79ad92ac7 100644
--- a/.github/workflows/docs_suggestions.yml
+++ b/.github/workflows/docs_suggestions.yml
@@ -9,32 +9,25 @@ name: Documentation Suggestions
# 5. Keep this workflow focused on suggestions only until that stable workflow is added.
on:
- # Run when PRs are merged to main
+ # Analyze merged PRs on main and cherry-picks to release branches. Each job
+ # further restricts the event actions and target branch that it handles.
pull_request:
- types: [closed]
- branches: [main]
- paths:
- - 'crates/**/*.rs'
- - '!crates/**/*_test.rs'
- - '!crates/**/tests/**'
-
- # Run on cherry-picks to release branches
- pull_request_target:
- types: [opened, synchronize]
+ types: [closed, opened, synchronize]
branches:
- - 'v0.*'
+ - main
+ - "v0.*"
paths:
- - 'crates/**/*.rs'
+ - "crates/**/*.rs"
# Manual trigger for testing
workflow_dispatch:
inputs:
pr_number:
- description: 'PR number to analyze'
+ description: "PR number to analyze"
required: true
type: string
mode:
- description: 'Output mode'
+ description: "Output mode"
required: true
type: choice
options:
@@ -42,6 +35,10 @@ on:
- immediate
default: batch
+# Both jobs below declare their own `permissions:` blocks, so no job uses this
+# top-level default. Least privilege therefore grants nothing here.
+permissions: {}
+
env:
DROID_MODEL: claude-sonnet-4-5-20250929
SUGGESTIONS_BRANCH: docs/suggestions-pending
@@ -85,7 +82,6 @@ jobs:
fi
sleep $((i * 5))
done
- echo "${HOME}/.local/bin" >> "$GITHUB_PATH"
env:
FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
@@ -121,6 +117,8 @@ jobs:
FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
run: |
+ export PATH="${HOME}/.local/bin:${PATH}"
+
# Ensure gh CLI is authenticated (GH_TOKEN may not be auto-detected)
# Unset GH_TOKEN first to allow gh auth login to store credentials
echo "$GH_TOKEN" | (unset GH_TOKEN && gh auth login --with-token)
@@ -288,8 +286,10 @@ jobs:
group: docs-suggestions-${{ github.event.pull_request.number || inputs.pr_number || 'manual' }}
cancel-in-progress: true
if: |
- (github.event_name == 'pull_request_target' &&
+ (github.event_name == 'pull_request' &&
+ contains(fromJSON('["opened","synchronize"]'), github.event.action) &&
startsWith(github.event.pull_request.base.ref, 'v0.') &&
+ github.event.pull_request.head.repo.full_name == github.repository &&
contains(fromJSON('["MEMBER","OWNER"]'),
github.event.pull_request.author_association)) ||
(github.event_name == 'workflow_dispatch' && inputs.mode == 'immediate')
@@ -299,7 +299,7 @@ jobs:
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
fetch-depth: 0
- ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.base.ref || '' }}
+ ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || '' }}
persist-credentials: false
- name: Install Droid CLI
@@ -318,7 +318,6 @@ jobs:
fi
sleep $((i * 5))
done
- echo "${HOME}/.local/bin" >> "$GITHUB_PATH"
env:
FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
@@ -346,6 +345,8 @@ jobs:
FACTORY_API_KEY: ${{ secrets.FACTORY_API_KEY }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
run: |
+ export PATH="${HOME}/.local/bin:${PATH}"
+
# Ensure gh CLI is authenticated (GH_TOKEN may not be auto-detected)
# Unset GH_TOKEN first to allow gh auth login to store credentials
echo "$GH_TOKEN" | (unset GH_TOKEN && gh auth login --with-token)
diff --git a/.github/workflows/extension_auto_bump.yml b/.github/workflows/extension_auto_bump.yml
index e48ccdb082a362..df9fcc986937a0 100644
--- a/.github/workflows/extension_auto_bump.yml
+++ b/.github/workflows/extension_auto_bump.yml
@@ -10,6 +10,8 @@ on:
- '!extensions/test-extension/**'
- '!extensions/workflows/**'
- '!extensions/*.md'
+permissions:
+ contents: read
jobs:
detect_changed_extensions:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
diff --git a/.github/workflows/extension_bump.yml b/.github/workflows/extension_bump.yml
index 6e68db7af0f274..0b611bfdafb5a1 100644
--- a/.github/workflows/extension_bump.yml
+++ b/.github/workflows/extension_bump.yml
@@ -28,6 +28,8 @@ on:
app-secret:
description: The app secret for the corresponding app ID
required: true
+permissions:
+ contents: read
jobs:
check_version_changed:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -79,6 +81,10 @@ jobs:
with:
app-id: ${{ secrets.app-id }}
private-key: ${{ secrets.app-secret }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
+ permission-pull-requests: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -168,6 +174,9 @@ jobs:
with:
app-id: ${{ secrets.app-id }}
private-key: ${{ secrets.app-secret }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -220,6 +229,10 @@ jobs:
private-key: ${{ secrets.app-secret }}
owner: zed-industries
repositories: extensions
+ permission-contents: write
+ permission-issues: write
+ permission-members: read
+ permission-pull-requests: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
diff --git a/.github/workflows/extension_tests.yml b/.github/workflows/extension_tests.yml
index 23efa368d17653..885ef12b3d2015 100644
--- a/.github/workflows/extension_tests.yml
+++ b/.github/workflows/extension_tests.yml
@@ -15,6 +15,8 @@ on:
description: working-directory
type: string
default: .
+permissions:
+ contents: read
jobs:
orchestrate:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -97,7 +99,9 @@ jobs:
env:
PACKAGE_NAME: ${{ steps.get-package-name.outputs.package_name }}
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: extension_tests::run_nextest
run: 'cargo nextest run -p "$PACKAGE_NAME" --no-fail-fast --no-tests=warn --target "$(rustc -vV | sed -n ''s|host: ||p'')"'
env:
diff --git a/.github/workflows/extension_workflow_rollout.yml b/.github/workflows/extension_workflow_rollout.yml
index c1e61822df6b23..a295c20ddbcb8e 100644
--- a/.github/workflows/extension_workflow_rollout.yml
+++ b/.github/workflows/extension_workflow_rollout.yml
@@ -14,9 +14,11 @@ on:
description: Description for the changes to be expected with this rollout
type: string
default: ''
+permissions:
+ contents: read
jobs:
fetch_extension_repos:
- if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions') && github.ref == 'refs/heads/main'
+ if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions') && (github.ref == 'refs/tags/extension-workflows' || github.ref == 'refs/heads/main')
runs-on: namespace-profile-2x4-ubuntu-2404
steps:
- name: checkout_zed_repo
@@ -70,7 +72,7 @@ jobs:
.filter(repo => !repo.archived)
.map(repo => repo.name);
- const filterInput = `${{ inputs.filter-repos }}`.trim();
+ const filterInput = process.env.FILTER_REPOS.trim();
if (filterInput.length > 0) {
const allowedNames = filterInput.split(',').map(s => s.trim()).filter(s => s.length > 0);
filteredRepos = filteredRepos.filter(name => allowedNames.includes(name));
@@ -80,6 +82,8 @@ jobs:
console.log(`Found ${filteredRepos.length} extension repos`);
return filteredRepos;
result-encoding: json
+ env:
+ FILTER_REPOS: ${{ inputs.filter-repos }}
- name: steps::cache_rust_dependencies_namespace
uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
with:
@@ -213,6 +217,8 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
permission-contents: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
@@ -220,21 +226,18 @@ jobs:
clean: false
fetch-depth: 0
token: ${{ steps.generate-token.outputs.token }}
- - name: extension_workflow_rollout::create_rollout_tag::update_rollout_tag
- run: |
- if git rev-parse "extension-workflows" >/dev/null 2>&1; then
- git tag -d "extension-workflows"
- git push origin ":refs/tags/extension-workflows" || true
- fi
-
- echo "Creating new tag 'extension-workflows' at $(git rev-parse --short HEAD)"
- git tag "extension-workflows"
- git push origin "extension-workflows"
- env:
- GIT_AUTHOR_NAME: zed-zippy[bot]
- GIT_AUTHOR_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
- GIT_COMMITTER_NAME: zed-zippy[bot]
- GIT_COMMITTER_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
+ - name: steps::update_tag
+ uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b
+ with:
+ script: |
+ github.rest.git.updateRef({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ ref: 'tags/extension-workflows',
+ sha: context.sha,
+ force: true
+ })
+ github-token: ${{ steps.generate-token.outputs.token }}
timeout-minutes: 1
defaults:
run:
diff --git a/.github/workflows/good_first_issue_notifier.yml b/.github/workflows/good_first_issue_notifier.yml
index fc1b49424dce24..9e86118dd0ab24 100644
--- a/.github/workflows/good_first_issue_notifier.yml
+++ b/.github/workflows/good_first_issue_notifier.yml
@@ -4,6 +4,9 @@ on:
issues:
types: [labeled]
+permissions:
+ contents: read
+
jobs:
handle-good-first-issue:
if: github.event.label.name == '.contrib/good first issue' && github.repository_owner == 'zed-industries'
diff --git a/.github/workflows/guild_assignment_status.yml b/.github/workflows/guild_assignment_status.yml
new file mode 100644
index 00000000000000..c91c05bb544291
--- /dev/null
+++ b/.github/workflows/guild_assignment_status.yml
@@ -0,0 +1,64 @@
+# Guild board (https://github.com/orgs/zed-industries/projects/74) reactions to issue events:
+# assigned guild member -> Status "In Progress" (or Slack if off-board)
+# unassigned guild member -> move back to a To-Do column by Type + Slack
+# commented guild assignee comments after a check-in -> Slack (each comment)
+
+name: Guild Assignment Status
+
+on:
+ issues:
+ types: [assigned, unassigned]
+ issue_comment:
+ types: [created]
+
+permissions:
+ contents: read
+
+concurrency:
+ group: guild-assignment-status-${{ github.event.issue.number || github.run_id }}
+ cancel-in-progress: false
+
+jobs:
+ handle-event:
+ if: >-
+ github.repository == 'zed-industries/zed' &&
+ (github.event_name != 'issue_comment' || github.event.issue.pull_request == null)
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ timeout-minutes: 5
+
+ steps:
+ - name: Generate app token
+ id: app-token
+ uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
+ with:
+ app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
+ private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
+ owner: zed-industries
+ repositories: zed
+ permission-issues: write
+ permission-members: read
+ permission-organization-projects: write
+ permission-pull-requests: read
+
+ - name: Checkout repository
+ uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
+ with:
+ sparse-checkout: |
+ script/github-guild-board.py
+ sparse-checkout-cone-mode: false
+
+ - name: Set up Python
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
+ with:
+ python-version: "3.12"
+
+ - name: Install dependencies
+ run: pip install requests
+
+ - name: Handle issue event
+ env:
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
+ PROJECT_NUMBER: "74"
+ GUILD_MODE: event
+ SLACK_WEBHOOK_GUILD_INTERNAL: ${{ secrets.SLACK_WEBHOOK_GUILD_INTERNAL }}
+ run: python script/github-guild-board.py
diff --git a/.github/workflows/guild_new_pr_notify.yml b/.github/workflows/guild_new_pr_notify.yml
new file mode 100644
index 00000000000000..52b4107bb255d4
--- /dev/null
+++ b/.github/workflows/guild_new_pr_notify.yml
@@ -0,0 +1,64 @@
+# When a guild member opens a PR, react on the Guild board (#74):
+# - if the PR will close an open board issue, set that issue to In Progress
+# (covers starting work without self-assigning), and
+# - if they already have another open PR opened since the cohort started, post
+# a gentle heads-up to #zed-guild-internal.
+
+name: Guild New PR Notification
+
+on:
+ # zizmor: ignore[dangerous-triggers]
+ # Fork PRs must be supported, but this workflow only reads event metadata and
+ # checks out scripts from the trusted default branch; it never executes PR code.
+ pull_request_target:
+ types: [opened]
+
+permissions:
+ contents: read
+
+concurrency:
+ group: guild-new-pr-notify-${{ github.event.pull_request.number }}
+ cancel-in-progress: false
+
+jobs:
+ react:
+ if: github.repository == 'zed-industries/zed'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ timeout-minutes: 5
+
+ steps:
+ - name: Generate app token
+ id: app-token
+ uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
+ with:
+ app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
+ private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
+ owner: zed-industries
+ repositories: zed
+ permission-issues: write
+ permission-members: read
+ permission-organization-projects: write
+ permission-pull-requests: read
+
+ - name: Checkout repository
+ uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
+ with:
+ sparse-checkout: |
+ script/github-guild-board.py
+ sparse-checkout-cone-mode: false
+
+ - name: Set up Python
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
+ with:
+ python-version: "3.12"
+
+ - name: Install dependencies
+ run: pip install requests
+
+ - name: React to the new PR
+ env:
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
+ PROJECT_NUMBER: "74"
+ GUILD_MODE: event
+ SLACK_WEBHOOK_GUILD_INTERNAL: ${{ secrets.SLACK_WEBHOOK_GUILD_INTERNAL }}
+ run: python script/github-guild-board.py
diff --git a/.github/workflows/guild_stale_assignments.yml b/.github/workflows/guild_stale_assignments.yml
new file mode 100644
index 00000000000000..81a7f0c0ff3931
--- /dev/null
+++ b/.github/workflows/guild_stale_assignments.yml
@@ -0,0 +1,62 @@
+# Scheduled sweep of the Guild board (https://github.com/orgs/zed-industries/projects/74).
+# For an "In Progress" issue assigned to a guild member with no linked PR: post a
+# check-in comment once the assignee goes quiet, re-nudging after any renewed
+# silence, and clear the assignment (moving the issue back to a To-Do column by
+# Type) if a check-in goes unanswered. The "guild hold" label pauses the sweep.
+
+name: Guild Stale Assignments
+
+on:
+ schedule:
+ - cron: "0 8 * * *"
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: guild-stale-assignments
+ cancel-in-progress: true
+
+jobs:
+ sweep:
+ if: github.repository == 'zed-industries/zed'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ timeout-minutes: 15
+
+ steps:
+ - name: Generate app token
+ id: app-token
+ uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
+ with:
+ app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
+ private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
+ owner: zed-industries
+ repositories: zed
+ permission-issues: write
+ permission-members: read
+ permission-organization-projects: write
+ permission-pull-requests: read
+
+ - name: Checkout repository
+ uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
+ with:
+ sparse-checkout: |
+ script/github-guild-board.py
+ sparse-checkout-cone-mode: false
+
+ - name: Set up Python
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
+ with:
+ python-version: "3.12"
+
+ - name: Install dependencies
+ run: pip install requests
+
+ - name: Sweep stale assignments
+ env:
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
+ PROJECT_NUMBER: "74"
+ GUILD_MODE: stale
+ SLACK_WEBHOOK_GUILD_INTERNAL: ${{ secrets.SLACK_WEBHOOK_GUILD_INTERNAL }}
+ run: python script/github-guild-board.py
diff --git a/.github/workflows/guild_weekly_shipped.yml b/.github/workflows/guild_weekly_shipped.yml
new file mode 100644
index 00000000000000..1f3bf71feaf67c
--- /dev/null
+++ b/.github/workflows/guild_weekly_shipped.yml
@@ -0,0 +1,60 @@
+# Scheduled Slack digest of Guild board
+# (https://github.com/orgs/zed-industries/projects/74) issues recently closed by
+# a merged PR authored by a guild member.
+
+name: Guild Weekly Shipped
+
+on:
+ schedule:
+ - cron: "0 7 * * 3"
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: guild-weekly-shipped
+ cancel-in-progress: true
+
+jobs:
+ digest:
+ if: github.repository == 'zed-industries/zed'
+ runs-on: namespace-profile-2x4-ubuntu-2404
+ timeout-minutes: 15
+
+ steps:
+ - name: Generate app token
+ id: app-token
+ uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
+ with:
+ app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
+ private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
+ owner: zed-industries
+ repositories: zed
+ permission-issues: read
+ permission-members: read
+ permission-organization-projects: read
+ permission-pull-requests: read
+
+ - name: Checkout repository
+ uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
+ with:
+ sparse-checkout: |
+ script/github-guild-board.py
+ sparse-checkout-cone-mode: false
+
+ - name: Set up Python
+ uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
+ with:
+ python-version: "3.12"
+
+ - name: Install dependencies
+ run: pip install requests
+
+ - name: Build and send digest
+ env:
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
+ PROJECT_NUMBER: "74"
+ GUILD_MODE: weekly
+ SLACK_WEBHOOK_GUILD_INTERNAL: ${{ secrets.SLACK_WEBHOOK_GUILD_INTERNAL }}
+ run: python script/github-guild-board.py
diff --git a/.github/workflows/nix_build.yml b/.github/workflows/nix_build.yml
index f658634c06c166..3ddd6bdd5c6e16 100644
--- a/.github/workflows/nix_build.yml
+++ b/.github/workflows/nix_build.yml
@@ -9,6 +9,8 @@ on:
types:
- labeled
- synchronize
+permissions:
+ contents: read
jobs:
build_nix_linux_x86_64:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions') && ((github.event.action == 'labeled' && (github.event.label.name == 'run-nix' || github.event.label.name == 'run-bundling')) || (github.event.action == 'synchronize' && (contains(github.event.pull_request.labels.*.name, 'run-nix') || contains(github.event.pull_request.labels.*.name, 'run-bundling'))))
diff --git a/.github/workflows/pr_issue_labeler.yml b/.github/workflows/pr_issue_labeler.yml
index fbba166a2446d9..27e4dc86a98bd8 100644
--- a/.github/workflows/pr_issue_labeler.yml
+++ b/.github/workflows/pr_issue_labeler.yml
@@ -12,6 +12,9 @@ name: PR Issue Labeler
on:
issues:
types: [opened]
+ # zizmor: ignore[dangerous-triggers]
+ # Fork PRs must be labeled, but this workflow only passes GitHub-provided event
+ # metadata to a pinned action; it never checks out or executes PR code.
pull_request_target:
types: [opened]
@@ -30,6 +33,10 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-issues: write
+ permission-members: read
+ permission-pull-requests: write
- id: apply-authorship-label
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
@@ -41,47 +48,9 @@ jobs:
const STAFF_TEAM_SLUG = 'staff';
const FIRST_CONTRIBUTION_LABEL = 'first contribution';
const GUILD_LABEL = 'guild';
- const GUILD_MEMBERS = [
- '11happy',
- 'AidanV',
- 'alanpjohn',
- 'AmaanBilwar',
- 'arjunkomath',
- 'austincummings',
- 'ayushk-1801',
- 'criticic',
- 'dongdong867',
- 'emamulandalib',
- 'eureka928',
- 'feitreim',
- 'iam-liam',
- 'iksuddle',
- 'ishaksebsib',
- 'lingyaochu',
- 'loadingalias',
- 'marcocondrache',
- 'mchisolm0',
- 'MostlyKIGuess',
- 'nairadithya',
- 'nihalxkumar',
- 'notJoon',
- 'OmChillure',
- 'Palanikannan1437',
- 'polyesterswing',
- 'prayanshchh',
- 'razeghi71',
- 'sarmadgulzar',
- 'seanstrom',
- 'Shivansh-25',
- 'SkandaBhat',
- 'th0jensen',
- 'tommyming',
- 'transitoryangel',
- 'TwistingTwists',
- 'virajbhartiya',
- 'YEDASAVG',
- 'Ziqi-Yang',
- ];
+ // Guild cohort members are outside collaborators holding this custom
+ // repository role, not members of an org team.
+ const GUILD_ROLE_NAME = 'Guild Assign issues/PRs';
const COMMUNITY_CHAMPION_LABEL = 'community champion';
const COMMUNITY_CHAMPIONS = [
'0x2CA',
@@ -161,11 +130,11 @@ jobs:
return members.some((member) => member.toLowerCase() === authorLower);
};
- const isStaffMember = async (author) => {
+ const isTeamMember = async (teamSlug, author) => {
try {
const response = await github.rest.teams.getMembershipForUserInOrg({
org: 'zed-industries',
- team_slug: STAFF_TEAM_SLUG,
+ team_slug: teamSlug,
username: author
});
return response.data.state === 'active';
@@ -177,6 +146,27 @@ jobs:
}
};
+ const isStaffMember = (author) => isTeamMember(STAFF_TEAM_SLUG, author);
+
+ const isGuildMember = async (author) => {
+ try {
+ const response = await github.rest.repos.getCollaboratorPermissionLevel({
+ owner: 'zed-industries',
+ repo: 'zed',
+ username: author
+ });
+ // role_name is the effective (highest) role; for cohort outside
+ // collaborators that is the custom role. Built-in roles come back
+ // lowercased and won't match.
+ return (response.data.role_name || '').toLowerCase() === GUILD_ROLE_NAME.toLowerCase();
+ } catch (error) {
+ if (error.status !== 404) {
+ throw error;
+ }
+ return false;
+ }
+ };
+
const getIssueLabels = () => {
if (listIncludesAuthor(COMMUNITY_CHAMPIONS, author)) {
return [COMMUNITY_CHAMPION_LABEL];
@@ -202,7 +192,7 @@ jobs:
labelsToAdd.push(COMMUNITY_CHAMPION_LABEL);
}
- if (listIncludesAuthor(GUILD_MEMBERS, author)) {
+ if (await isGuildMember(author)) {
labelsToAdd.push(GUILD_LABEL);
}
diff --git a/.github/workflows/publish_extension_cli.yml b/.github/workflows/publish_extension_cli.yml
index 5bef991887cdba..40dfbac974ffcd 100644
--- a/.github/workflows/publish_extension_cli.yml
+++ b/.github/workflows/publish_extension_cli.yml
@@ -11,6 +11,8 @@ on:
description: Describe why the extension CLI is being bumped and/or what changes are included.
required: true
type: string
+permissions:
+ contents: read
jobs:
publish_job:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions') && github.ref == 'refs/heads/main'
@@ -40,6 +42,8 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
permission-contents: write
- name: steps::update_tag
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b
@@ -65,6 +69,11 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
+ permission-pull-requests: write
+ permission-workflows: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
@@ -119,6 +128,9 @@ jobs:
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
owner: zed-industries
repositories: extensions
+ permission-contents: write
+ permission-pull-requests: write
+ permission-workflows: write
- id: short-sha
name: publish_extension_cli::get_short_sha
run: |
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ea968386a117b8..0e59362fddc7ae 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -8,6 +8,8 @@ on:
push:
tags:
- v*
+permissions:
+ contents: read
jobs:
run_tests_mac:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -27,11 +29,15 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than 350 200
- name: steps::setup_sccache
@@ -75,11 +81,15 @@ jobs:
- name: steps::download_wasi_sdk
run: ./script/download-wasi-sdk
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than 350 200
- name: steps::setup_sccache
@@ -120,9 +130,11 @@ jobs:
Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
shell: pwsh
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than.ps1 350 200
shell: pwsh
@@ -249,13 +261,6 @@ jobs:
clean: false
- name: run_tests::check_scripts::run_shellcheck
run: ./script/shellcheck-scripts error
- - id: get_actionlint
- name: run_tests::check_scripts::download_actionlint
- run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
- - name: run_tests::check_scripts::run_actionlint
- run: '"$ACTIONLINT_BIN" -color'
- env:
- ACTIONLINT_BIN: ${{ steps.get_actionlint.outputs.executable }}
- name: steps::cache_rust_dependencies_namespace
uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
with:
@@ -269,6 +274,19 @@ jobs:
echo "Please run 'cargo xtask workflows' locally and commit the changes"
exit 1
fi
+ - id: get_actionlint
+ name: run_tests::check_scripts::download_actionlint
+ run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
+ - name: run_tests::check_scripts::run_actionlint
+ run: '"$ACTIONLINT_BIN" -color'
+ env:
+ ACTIONLINT_BIN: ${{ steps.get_actionlint.outputs.executable }}
+ - name: run_tests::check_scripts::run_zizmor
+ uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02
+ with:
+ advanced-security: false
+ min-severity: high
+ version: latest
timeout-minutes: 60
create_draft_release:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -280,6 +298,8 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
permission-contents: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
@@ -536,9 +556,11 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::setup_sentry
uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
with:
@@ -586,9 +608,11 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::setup_sentry
uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
with:
@@ -718,6 +742,8 @@ jobs:
- bundle_windows_aarch64
- bundle_windows_x86_64
runs-on: namespace-profile-4x8-ubuntu-2204
+ permissions:
+ contents: write
steps:
- name: release::download_workflow_artifacts
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
@@ -751,6 +777,8 @@ jobs:
needs:
- upload_release_assets
runs-on: namespace-profile-2x4-ubuntu-2404
+ permissions:
+ contents: write
steps:
- name: release::validate_release_assets
run: |
@@ -834,6 +862,9 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
+ permission-contents: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
with:
diff --git a/.github/workflows/release_nightly.yml b/.github/workflows/release_nightly.yml
index 17760bae3c69bf..75f5708fe1f0b5 100644
--- a/.github/workflows/release_nightly.yml
+++ b/.github/workflows/release_nightly.yml
@@ -8,6 +8,8 @@ on:
schedule:
- cron: 0 */4 * * *
workflow_dispatch: {}
+permissions:
+ contents: read
jobs:
check_nightly_tag:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -58,11 +60,15 @@ jobs:
- name: steps::download_wasi_sdk
run: ./script/download-wasi-sdk
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than 350 200
- name: steps::setup_sccache
@@ -283,9 +289,11 @@ jobs:
echo "Publishing version: ${version} on release channel nightly"
echo "nightly" > crates/zed/RELEASE_CHANNEL
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::setup_sentry
uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
with:
@@ -337,9 +345,11 @@ jobs:
echo "Publishing version: ${version} on release channel nightly"
echo "nightly" > crates/zed/RELEASE_CHANNEL
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::setup_sentry
uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
with:
@@ -569,6 +579,8 @@ jobs:
with:
app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
+ owner: ${{ github.repository_owner }}
+ repositories: ${{ github.event.repository.name }}
permission-contents: write
- name: steps::checkout_repo
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
diff --git a/.github/workflows/run_bundling.yml b/.github/workflows/run_bundling.yml
index 37d1936232f31b..1912927baf6ab3 100644
--- a/.github/workflows/run_bundling.yml
+++ b/.github/workflows/run_bundling.yml
@@ -9,6 +9,8 @@ on:
types:
- labeled
- synchronize
+permissions:
+ contents: read
jobs:
bundle_linux_aarch64:
if: |-
@@ -99,6 +101,9 @@ jobs:
if-no-files-found: error
timeout-minutes: 60
build_static_bwrap_linux_aarch64:
+ 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::cache_nix_dependencies_namespace
@@ -130,6 +135,9 @@ jobs:
if-no-files-found: error
timeout-minutes: 60
build_static_bwrap_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::cache_nix_dependencies_namespace
@@ -185,9 +193,11 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::setup_sentry
uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
with:
@@ -234,9 +244,11 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::setup_sentry
uses: matbour/setup-sentry-cli@3e938c54b3018bdd019973689ef984e033b0454b
with:
diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml
index 9c0812f4a51d24..ebe8b577146613 100644
--- a/.github/workflows/run_tests.yml
+++ b/.github/workflows/run_tests.yml
@@ -14,6 +14,8 @@ on:
branches:
- main
- v[0-9]+.[0-9]+.x
+permissions:
+ contents: read
jobs:
orchestrate:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
@@ -73,12 +75,17 @@ jobs:
# Map directory names to package names
FILE_CHANGED_PKGS=""
for dir in $CHANGED_DIRS; do
- pkg=$(echo "$DIR_TO_PKG" | grep "^${dir}=" | cut -d= -f2 | head -1)
+ pkg=$(echo "$DIR_TO_PKG" | grep "^${dir}=" | cut -d= -f2 | head -1 || true)
+ # Only add directories that map to a real root-workspace package.
+ # Some directories (e.g. tooling/lints) belong to a separate workspace
+ # and are not root members, so they have no mapping here. Previously we
+ # fell back to the raw directory name, which fabricated a bogus package
+ # (e.g. "lints") and produced a nextest filter like rdeps(lints) that
+ # hard-errors ("operator didn't match any packages"). Skipping such
+ # directories leaves the package set empty, which falls through to the
+ # "run all tests" path below.
if [ -n "$pkg" ]; then
FILE_CHANGED_PKGS=$(printf '%s\n%s' "$FILE_CHANGED_PKGS" "$pkg")
- else
- # Fall back to directory name if no mapping found
- FILE_CHANGED_PKGS=$(printf '%s\n%s' "$FILE_CHANGED_PKGS" "$dir")
fi
done
FILE_CHANGED_PKGS=$(echo "$FILE_CHANGED_PKGS" | grep -v '^$' | sort -u || true)
@@ -150,7 +157,7 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_pnpm
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
+ uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: '9'
- name: steps::prettier
@@ -333,9 +340,11 @@ jobs:
Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
shell: pwsh
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than.ps1 350 200
shell: pwsh
@@ -390,11 +399,15 @@ jobs:
- name: steps::download_wasi_sdk
run: ./script/download-wasi-sdk
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than 350 200
- name: steps::setup_sccache
@@ -441,11 +454,15 @@ jobs:
cache: rust
path: ~/.rustup
- name: steps::setup_node
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
- node-version: '20'
+ node-version: '24'
+ check-latest: true
+ package-manager-cache: false
- name: steps::cargo_install_nextest
- uses: taiki-e/install-action@921e2c9f7148d7ba14cd819f417db338f63e733c
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
+ with:
+ tool: nextest
- name: steps::clear_target_dir_if_large
run: ./script/clear-target-dir-if-larger-than 350 200
- name: steps::setup_sccache
@@ -650,7 +667,7 @@ jobs:
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
SCCACHE_BUCKET: sccache-zed
- name: run_tests::check_wasm::cargo_check_wasm
- run: cargo -Zbuild-std=std,panic_abort check --target wasm32-unknown-unknown -p gpui_platform
+ run: cargo -Zbuild-std=std,panic_abort check --target wasm32-unknown-unknown -p gpui_platform -p cloud_api_client
env:
CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUSTFLAGS: -C target-feature=+atomics,+bulk-memory,+mutable-globals
RUSTC_BOOTSTRAP: '1'
@@ -684,7 +701,7 @@ jobs:
cache: rust
path: ~/.rustup
- name: run_tests::check_dependencies::install_cargo_machete
- uses: taiki-e/install-action@02cc5f8ca9f2301050c0c099055816a41ee05507
+ uses: taiki-e/install-action@a6b2e2dcd845ddd7f509ce4f3ed3d922b80cc5d9
with:
tool: cargo-machete@0.7.0
- name: run_tests::check_dependencies::run_cargo_machete
@@ -794,13 +811,6 @@ jobs:
clean: false
- name: run_tests::check_scripts::run_shellcheck
run: ./script/shellcheck-scripts error
- - id: get_actionlint
- name: run_tests::check_scripts::download_actionlint
- run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
- - name: run_tests::check_scripts::run_actionlint
- run: '"$ACTIONLINT_BIN" -color'
- env:
- ACTIONLINT_BIN: ${{ steps.get_actionlint.outputs.executable }}
- name: steps::cache_rust_dependencies_namespace
uses: namespacelabs/nscloud-cache-action@a90bb5d4b27522ce881c6e98eebd7d7e6d1653f9
with:
@@ -814,6 +824,19 @@ jobs:
echo "Please run 'cargo xtask workflows' locally and commit the changes"
exit 1
fi
+ - id: get_actionlint
+ name: run_tests::check_scripts::download_actionlint
+ run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
+ - name: run_tests::check_scripts::run_actionlint
+ run: '"$ACTIONLINT_BIN" -color'
+ env:
+ ACTIONLINT_BIN: ${{ steps.get_actionlint.outputs.executable }}
+ - name: run_tests::check_scripts::run_zizmor
+ uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02
+ with:
+ advanced-security: false
+ min-severity: high
+ version: latest
timeout-minutes: 60
check_postgres_and_protobuf_migrations:
needs:
diff --git a/.github/workflows/slack_notify_community_automation_failure.yml b/.github/workflows/slack_notify_community_automation_failure.yml
index 688cfdded83a76..71e490cd02ae18 100644
--- a/.github/workflows/slack_notify_community_automation_failure.yml
+++ b/.github/workflows/slack_notify_community_automation_failure.yml
@@ -5,6 +5,9 @@
name: Notify Slack on community automation failure
on:
+ # zizmor: ignore[dangerous-triggers]
+ # The job validates that the completed run came from this repository, was
+ # started by an expected event, and failed before exposing the Slack secret.
workflow_run:
workflows:
- "Comment on potential duplicate bug/crash reports"
@@ -12,12 +15,21 @@ on:
- "Community PR Board"
- "PR Board Meta Fields Refresh"
- "PR Issue Labeler"
+ - "Guild Assignment Status"
+ - "Guild Stale Assignments"
+ - "Guild Weekly Shipped"
+ - "Guild New PR Notification"
types: [completed]
+permissions:
+ contents: read
+
jobs:
notify-slack:
if: >-
- github.repository_owner == 'zed-industries'
+ github.repository == 'zed-industries/zed'
+ && github.event.workflow_run.head_repository.full_name == github.repository
+ && contains(fromJSON('["issues","issue_comment","pull_request","pull_request_target","schedule","workflow_dispatch"]'), github.event.workflow_run.event)
&& github.event.workflow_run.conclusion == 'failure'
runs-on: namespace-profile-2x4-ubuntu-2404
diff --git a/.github/workflows/slack_notify_first_responders.yml b/.github/workflows/slack_notify_first_responders.yml
index 3dd9ffeabae1b7..a15c7b9c0f04ee 100644
--- a/.github/workflows/slack_notify_first_responders.yml
+++ b/.github/workflows/slack_notify_first_responders.yml
@@ -4,37 +4,53 @@ on:
issues:
types: [labeled]
+permissions:
+ contents: read
+
env:
- PRIORITY_LABELS: '["priority:P0", "priority:P1"]'
+ SEVERITY_LABELS: '["severity:S0", "severity:S1"]'
REPRODUCIBLE_LABEL: 'state:reproducible'
- FREQUENCY_LABELS: '["frequency:always", "frequency:common"]'
+ REACH_LABELS: '["reach:all users", "reach:many users"]'
+ MARKER_REACTION: 'eyes'
jobs:
notify-slack:
if: github.repository_owner == 'zed-industries' && github.event.issue.state == 'open'
runs-on: namespace-profile-2x4-ubuntu-2404
- # Serialize per-issue so concurrent `labeled` events can't both observe
- # the trifecta and double-notify.
+ permissions:
+ contents: read
+ # For the issue reaction used to dedupe notifications.
+ issues: write
+ # Serialize per issue so the reaction claim below can't race.
concurrency:
group: slack-notify-first-responders-${{ github.event.issue.number }}
cancel-in-progress: false
steps:
- - name: Check if label combination requires first responder notification
+ - name: Check label combination and claim the notification
id: check-label
env:
+ GH_TOKEN: ${{ github.token }}
+ GH_REPO: ${{ github.repository }}
LABEL_NAME: ${{ github.event.label.name }}
- ISSUE_LABELS_JSON: ${{ toJson(github.event.issue.labels.*.name) }}
+ ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
set -euo pipefail
- # Gate on the just-added label so unrelated labeling on an
- # already-qualifying issue doesn't re-fire the notification.
+ api() {
+ curl -sS \
+ -H "Authorization: Bearer $GH_TOKEN" \
+ -H "Accept: application/vnd.github+json" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ "$@"
+ }
+
+ # Ignore labels outside the trifecta so unrelated later edits don't re-fire.
TRIGGER_LABELS=$(jq -cn \
- --argjson priority "$PRIORITY_LABELS" \
+ --argjson severity "$SEVERITY_LABELS" \
--arg repro "$REPRODUCIBLE_LABEL" \
- --argjson freq "$FREQUENCY_LABELS" \
- '$priority + [$repro] + $freq')
+ --argjson reach "$REACH_LABELS" \
+ '$severity + [$repro] + $reach')
if ! echo "$TRIGGER_LABELS" | jq -e --arg l "$LABEL_NAME" 'index($l) != null' > /dev/null; then
echo "Added label '$LABEL_NAME' is not in the trigger set, skipping"
@@ -42,19 +58,52 @@ jobs:
exit 0
fi
- MATCHED_PRIORITY=$(echo "$ISSUE_LABELS_JSON" | jq -r --argjson priority "$PRIORITY_LABELS" 'map(select(. as $x | $priority | index($x) != null)) | first // ""')
+ # The webhook's issue.labels snapshot is racy under bulk apply; read live.
+ ISSUE_LABELS_JSON=$(api -f "https://api.github.com/repos/$GH_REPO/issues/$ISSUE_NUMBER/labels?per_page=100" | jq '[.[].name]')
+
+ MATCHED_SEVERITY=$(echo "$ISSUE_LABELS_JSON" | jq -r --argjson severity "$SEVERITY_LABELS" 'map(select(. as $x | $severity | index($x) != null)) | first // ""')
HAS_REPRO=$(echo "$ISSUE_LABELS_JSON" | jq --arg l "$REPRODUCIBLE_LABEL" 'index($l) != null')
- HAS_FREQ=$(echo "$ISSUE_LABELS_JSON" | jq --argjson freq "$FREQUENCY_LABELS" 'any(.[]; . as $x | $freq | index($x) != null)')
-
- if [ -n "$MATCHED_PRIORITY" ] && [ "$HAS_REPRO" = "true" ] && [ "$HAS_FREQ" = "true" ]; then
- echo "Confirmed high-frequency $MATCHED_PRIORITY, notifying"
- echo "notify_reason=confirmed $MATCHED_PRIORITY" >> "$GITHUB_OUTPUT"
- echo "should_notify=true" >> "$GITHUB_OUTPUT"
- else
- echo "Combination not yet satisfied (priority=$MATCHED_PRIORITY, reproducible=$HAS_REPRO, frequency=$HAS_FREQ), skipping"
+ HAS_REACH=$(echo "$ISSUE_LABELS_JSON" | jq --argjson reach "$REACH_LABELS" 'any(.[]; . as $x | $reach | index($x) != null)')
+
+ if [ -z "$MATCHED_SEVERITY" ] || [ "$HAS_REPRO" != "true" ] || [ "$HAS_REACH" != "true" ]; then
+ echo "Combination not yet satisfied (severity=$MATCHED_SEVERITY, reproducible=$HAS_REPRO, reach=$HAS_REACH), skipping"
+ echo "should_notify=false" >> "$GITHUB_OUTPUT"
+ exit 0
+ fi
+
+ # A bulk label apply emits one `labeled` event per label, so several
+ # runs reach this point. Creating the reaction is our atomic claim:
+ # one run gets 201 and notifies, the rest get 200. It's scoped to our
+ # own reaction, so a human's reaction can't suppress it.
+ REACTION_PAYLOAD=$(jq -cn --arg content "$MARKER_REACTION" '{content: $content}')
+ REACTION_RESPONSE=$(api -w "\n%{http_code}" -X POST \
+ "https://api.github.com/repos/$GH_REPO/issues/$ISSUE_NUMBER/reactions" \
+ -d "$REACTION_PAYLOAD")
+ REACTION_BODY=$(echo "$REACTION_RESPONSE" | sed '$d')
+ REACTION_STATUS=$(echo "$REACTION_RESPONSE" | tail -n1)
+
+ if [ "$REACTION_STATUS" = "200" ]; then
+ echo "First responders already notified for this issue (reaction present), skipping"
echo "should_notify=false" >> "$GITHUB_OUTPUT"
+ exit 0
+ fi
+
+ if [ "$REACTION_STATUS" != "201" ]; then
+ echo "::error::Unexpected status $REACTION_STATUS creating reaction: $REACTION_BODY"
+ exit 1
fi
+ REACTION_ID=$(echo "$REACTION_BODY" | jq -r '.id')
+ LABELS=$(echo "$ISSUE_LABELS_JSON" | jq -r 'join(", ")')
+
+ echo "Confirmed high-reach $MATCHED_SEVERITY, notifying"
+ {
+ echo "notify_reason=confirmed $MATCHED_SEVERITY"
+ echo "issue_labels=$LABELS"
+ echo "reaction_id=$REACTION_ID"
+ echo "should_notify=true"
+ } >> "$GITHUB_OUTPUT"
+
- name: Build Slack message payload
if: steps.check-label.outputs.should_notify == 'true'
env:
@@ -62,10 +111,8 @@ jobs:
ISSUE_URL: ${{ github.event.issue.html_url }}
LABELED_BY: ${{ github.event.sender.login }}
NOTIFY_REASON: ${{ steps.check-label.outputs.notify_reason }}
- LABELS_JSON: ${{ toJson(github.event.issue.labels.*.name) }}
+ LABELS: ${{ steps.check-label.outputs.issue_labels }}
run: |
- LABELS=$(echo "$LABELS_JSON" | jq -r 'join(", ")')
-
jq -n \
--arg notify_reason "$NOTIFY_REASON" \
--arg issue_title "$ISSUE_TITLE" \
@@ -108,9 +155,27 @@ jobs:
if: steps.check-label.outputs.should_notify == 'true'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_FIRST_RESPONDERS }}
+ GH_TOKEN: ${{ github.token }}
+ GH_REPO: ${{ github.repository }}
+ ISSUE_NUMBER: ${{ github.event.issue.number }}
+ REACTION_ID: ${{ steps.check-label.outputs.reaction_id }}
run: |
+ set -uo pipefail
+
+ release_claim() {
+ if [ -n "${REACTION_ID:-}" ]; then
+ echo "Releasing reaction claim so the notification can be retried"
+ curl -sS -X DELETE \
+ -H "Authorization: Bearer $GH_TOKEN" \
+ -H "Accept: application/vnd.github+json" \
+ -H "X-GitHub-Api-Version: 2022-11-28" \
+ "https://api.github.com/repos/$GH_REPO/issues/$ISSUE_NUMBER/reactions/$REACTION_ID" || true
+ fi
+ }
+
if [ -z "$SLACK_WEBHOOK_URL" ]; then
echo "::error::SLACK_WEBHOOK_FIRST_RESPONDERS secret is not set"
+ release_claim
exit 1
fi
@@ -126,6 +191,7 @@ jobs:
if [ "$HTTP_STATUS" -ne 200 ]; then
echo "::error::Slack notification failed with status $HTTP_STATUS: $HTTP_BODY"
+ release_claim
exit 1
fi
diff --git a/.github/workflows/slack_notify_label_created.yml b/.github/workflows/slack_notify_label_created.yml
index e791cbc7ea4c37..f30650dc2204a8 100644
--- a/.github/workflows/slack_notify_label_created.yml
+++ b/.github/workflows/slack_notify_label_created.yml
@@ -4,6 +4,9 @@ on:
label:
types: [created]
+permissions:
+ contents: read
+
jobs:
notify-slack:
if: >-
diff --git a/.github/workflows/track_duplicate_bot_effectiveness.yml b/.github/workflows/track_duplicate_bot_effectiveness.yml
index bdcf8a5f4077a2..b72f08d47e4269 100644
--- a/.github/workflows/track_duplicate_bot_effectiveness.yml
+++ b/.github/workflows/track_duplicate_bot_effectiveness.yml
@@ -35,6 +35,9 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-issues: read
+ permission-organization-projects: write
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
@@ -74,6 +77,9 @@ jobs:
app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
owner: zed-industries
+ repositories: zed
+ permission-issues: read
+ permission-organization-projects: write
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
diff --git a/.github/workflows/triage_project_sync.yml b/.github/workflows/triage_project_sync.yml
index b652e0fb0a79ac..9b8500db982c1c 100644
--- a/.github/workflows/triage_project_sync.yml
+++ b/.github/workflows/triage_project_sync.yml
@@ -91,6 +91,7 @@ jobs:
# mutations. Without `owner:`, the default token is repo-scoped and
# cannot write to org projects.
owner: zed-industries
+ repositories: zed
# Scope the token down to the minimum needed for this workflow.
# Even though the App may have broader permissions for other
# automations (e.g., Issues:Write for the dupe-bot), this token
diff --git a/.github/workflows/update_duplicate_magnets.yml b/.github/workflows/update_duplicate_magnets.yml
index 4c9bcd99fdc6b9..73dc159a3f1d74 100644
--- a/.github/workflows/update_duplicate_magnets.yml
+++ b/.github/workflows/update_duplicate_magnets.yml
@@ -5,10 +5,16 @@ on:
- cron: "0 6 * * 1,4" # Mondays and Thursdays at 6 AM UTC
workflow_dispatch:
+permissions:
+ contents: read
+
jobs:
update-duplicate-magnets:
runs-on: ubuntu-latest
if: github.repository == 'zed-industries/zed'
+ permissions:
+ contents: read
+ issues: write
steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
diff --git a/.github/zizmor.yml b/.github/zizmor.yml
new file mode 100644
index 00000000000000..550e33a7cc5d3f
--- /dev/null
+++ b/.github/zizmor.yml
@@ -0,0 +1 @@
+rules: {}
diff --git a/.gitignore b/.gitignore
index 67cdd58042b8ff..37b1d11e068258 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,12 +55,11 @@ crates/docs_preprocessor/actions.json
# Local documentation audit files
/december-2025-releases.md
/docs/december-2025-documentation-gaps.md
-<<<<<<< HEAD
/target-ubuntu22
/target-ubuntu25
crates/external_websocket_sync/e2e-test/helix-ws-test-server/zed-ws-test-server
-=======
# NixOS integration test state
.nixos-test-history
->>>>>>> upstream/main
+
+.local*
diff --git a/.rules b/.rules
index 3f8f8e1c440a35..4258973d4d1ae4 100644
--- a/.rules
+++ b/.rules
@@ -117,7 +117,7 @@ Often event handlers will want to update the entity that's in the current `Conte
Actions are dispatched via user keyboard interaction or in code via `window.dispatch_action(SomeAction.boxed_clone(), cx)` or `focus_handle.dispatch_action(&SomeAction, window, cx)`.
-Actions with no data defined with the `actions!(some_namespace, [SomeAction, AnotherAction])` macro call. Otherwise the `Action` derive macro is used. Doc comments on actions are displayed to the user.
+Actions with no data are defined with the `actions!(some_namespace, [SomeAction, AnotherAction])` macro call. Otherwise the `Action` derive macro is used. Doc comments on actions are displayed to the user.
Action handlers can be registered on an element via the event handler `.on_action(|action, window, cx| ...)`. Like other event handlers, this is often used with `cx.listener`.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e0a3287387b47d..62d0d1337f5d8c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -13,46 +13,76 @@ 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!)
-In particular we love PRs that are:
+In particular **we love PRs that are**:
-- Fixing or extending the docs.
-- Fixing bugs.
-- Small enhancements to existing features to make them work for more people (making things work on more platforms/modes/whatever).
-- Small extra features, like keybindings or actions you miss from other editors or extensions.
-- Part of a Community Program like [Let's Git Together](https://github.com/zed-industries/zed/issues/41541).
+- Fixing or extending the **docs**.
+- Fixing **bugs**.
+- **Small** enhancements to existing features to **make them work for more people** (making things work on more platforms/modes/whatever).
+- **Small** extra features, like keybindings or actions you miss from other editors or extensions.
+- Part of a **Community Program** like [Let's Git Together](https://github.com/zed-industries/zed/issues/41541) or [The Guild](https://zed.dev/community/guild).
+- Features we **explicitly called out as open to community contributions**
If you're looking for concrete ideas:
-- [Triaged bugs with confirmed steps to reproduce](https://github.com/zed-industries/zed/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3Astate%3Areproducible).
-- [Area labels](https://github.com/zed-industries/zed/labels?q=area%3A*) to browse bugs in a specific part of the product you care about (after clicking on an area label, add type:Bug to the search).
+- [Docs issues](https://github.com/zed-industries/zed/issues?q=is%3Aissue%20state%3Aopen%20type%3ADocs)
+- Issues suitable for [first-time contributors](https://github.com/zed-industries/zed/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22.contrib%2Fgood%20first%20issue%22), [returning contributors](https://github.com/zed-industries/zed/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22.contrib%2Fgood%20second%20issue%22), and [expert contributors](https://github.com/zed-industries/zed/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22.contrib%2Fgood%20expert%20issue%22)
+- [Triaged bugs with confirmed steps to reproduce](https://github.com/zed-industries/zed/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3Astate%3Areproducible)
+- [Area labels](https://github.com/zed-industries/zed/labels?q=area%3A*) to browse bugs in a specific part of the product you care about (after clicking on an area label, add type:Bug to the search)
+- [The board with the features](https://github.com/orgs/zed-industries/projects/78/views/4) we explicitly invited the community's contributions for.
-If you're thinking about proposing or building a larger feature, read the [Zed Feature Process](./docs/src/development/feature-process.md) for how we think about feature design — what context to provide, what integration points to consider, and how to put together a strong proposal.
+**Thinking about proposing or building a larger feature? Don't start with a PR**, start with reading the [Zed Feature Process](./docs/src/development/feature-process.md) for how we think about feature design — what context to provide, what integration points to consider, and how to put together a strong proposal. The right place for the proposals is [GitHub discussions](https://github.com/zed-industries/zed/discussions) (not GitHub issues).
## Sending changes
The Zed culture values working code and synchronous conversations over long
discussion threads.
-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).
+The best way to get us to take a look at a proposed change (excluding new features) is to send a pull request. We will get back to you (though this sometimes takes longer than we'd like, sorry). **Pinging the maintainers by their username or writing them emails spends their time but does not bump the priority of a particular PR.**
+
+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.
+
+If you need help deciding how to fix a bug, or finish implementing a feature
+that we've agreed we want, please open a PR early so we can discuss how to make
+the change with code in hand.
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:
+submitted. **If you'd like your PR to have the best chance of being merged**:
- Make sure the change is **desired**: we're always happy to accept bugfixes,
- but features should be confirmed with us first if you aim to avoid wasted
+ but **features should be confirmed with us first** if you aim to avoid wasted
effort. If there isn't already a GitHub issue for your feature with staff
- confirmation that we want it, start with a GitHub discussion rather than a PR.
+ confirmation that we want it, start with a [GitHub discussion](https://github.com/zed-industries/zed/discussions) rather than a PR.
- This especially applies to any changes proposed to the Zed Extension API.
- Include a clear description of **what you're solving**, and why it's important.
- Include **tests**. For UI changes, consider updating visual regression tests (see [Building Zed for macOS](./docs/src/development/macos.md#visual-regression-tests)).
-- If it changes the UI, attach **screenshots** or screen recordings.
+- If the change is visible in the UI, attach **screenshots or screen recordings**.
- Make the PR about **one thing only**, e.g. if it's a bugfix, don't add two
features and a refactoring on top of that.
- Keep AI assistance under your judgement and responsibility: it's unlikely
we'll merge a vibe-coded PR that the author doesn't understand.
+**A note on open pull requests:** currently we cap them at **three per author**.
+We're lucky to get a lot of contributions, and the pattern we've seen is that landing
+your first PR dramatically improves the odds for every PR after it. A stack of
+simultaneous PRs, by contrast, tends to just sit and rot against a moving `main`
+branch. It's better to start with one, see it through, then bring on the next.
+It also keeps things sane when the contributions are coming in faster than we can
+review them, including the occasional automated burst.
+
+## Things we will (probably) not merge
+
+Although there are few hard and fast rules, **typically we don't merge**:
+
+- 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).
+- Changes to the Zed Extension API submitted without prior discussion involving Zed staff.
+- 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.
+- Features where (in our subjective opinion) the extra complexity isn't worth it for the number of people who will benefit.
+- 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.
+- Anything that seems AI-generated without understanding the output.
+
### AI Policy
We welcome the use of LLMs for coding, but we hold a high bar for all contributions, and **we expect a human in the loop who genuinely understands the work an LLM produces** on their behalf. For that reason, we **don't accept contributions from autonomous agents**. Pull requests that appear to violate this may be closed, sometimes without notice.
@@ -69,13 +99,6 @@ This policy was adapted from [ripgrep's AI policy](https://github.com/BurntSushi
- 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.
-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.
-
-If you need help deciding how to fix a bug, or finish implementing a feature
-that we've agreed we want, please open a PR early so we can discuss how to make
-the change with code in hand.
-
### UI/UX checklist
When your changes affect UI, consult this checklist:
@@ -138,19 +161,6 @@ When your changes affect UI, consult this checklist:
- Are power features discoverable but not intrusive?
- Is there a path from beginner → expert usage (progressive disclosure)?
-## Things we will (probably) not merge
-
-Although there are few hard and fast rules, typically we don't merge:
-
-- 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).
-- Changes to the Zed Extension API submitted without prior discussion involving Zed staff.
-- 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.
-- Features where (in our subjective opinion) the extra complexity isn't worth it for the number of people who will benefit.
-- 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.
-- Anything that seems AI-generated without understanding the output.
-
## 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.
diff --git a/Cargo.lock b/Cargo.lock
index b5977ad3f9c7b9..0ff5621bc8509d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -8,6 +8,7 @@ version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3b7f7f85a7e5f68090000ed7622545829afd484d210358702ae4cb97dd0c320"
dependencies = [
+ "enumn",
"uuid",
]
@@ -116,6 +117,7 @@ dependencies = [
"language_model",
"log",
"markdown",
+ "mime",
"multi_buffer",
"parking_lot",
"portable-pty",
@@ -127,6 +129,7 @@ dependencies = [
"settings",
"task",
"telemetry",
+ "tempfile",
"terminal",
"text",
"ui",
@@ -286,6 +289,7 @@ dependencies = [
"quick-xml 0.38.3",
"rand 0.9.4",
"regex",
+ "release_channel",
"reqwest_client",
"rust-embed",
"sandbox",
@@ -319,41 +323,43 @@ dependencies = [
[[package]]
name = "agent-client-protocol"
-version = "0.14.0"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5efba6592048ef8a9ac97de8d79b2d9933d8ac4d94f7a2de102348fed0c61103"
+checksum = "6d87bc7769eba641753ba5dc52f73ec3765d51022c6753bf040967125ddc86a8"
dependencies = [
"agent-client-protocol-derive",
"agent-client-protocol-schema",
+ "async-io",
"async-process",
"blocking",
"futures 0.3.32",
"futures-concurrency",
- "jsonrpcmsg",
"rustc-hash 2.1.1",
+ "rustix 1.1.2",
"schemars 1.0.4",
"serde",
"serde_json",
"shell-words",
"tracing",
"uuid",
+ "windows-sys 0.61.2",
]
[[package]]
name = "agent-client-protocol-derive"
-version = "0.14.0"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d176a10d4cb06e0262a738c3c5bf21ff0968db13a666e31cbca94a3d3d72e7c"
+checksum = "3abd4080f51e4f24f5042beb7fb7a66ede29a2dc1c2582c329532e1c27264ddc"
dependencies = [
"quote",
- "syn 2.0.117",
+ "syn 3.0.3",
]
[[package]]
name = "agent-client-protocol-schema"
-version = "0.13.6"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c290bfa00c6b52339db66f8e9cf711d5f08530800529f7d619ff24d6cba253d0"
+checksum = "d5c231915b4ab578c722eca2d1bd7df4d300bfd6cac3b8e9f0d1e3ddc95b187c"
dependencies = [
"anyhow",
"derive_more",
@@ -492,6 +498,7 @@ dependencies = [
"heapless",
"html_to_markdown",
"http_client",
+ "idna",
"image",
"indoc",
"itertools 0.14.0",
@@ -525,6 +532,7 @@ dependencies = [
"remote_server",
"reqwest_client",
"rope",
+ "sandbox",
"schemars 1.0.4",
"search",
"semver",
@@ -532,6 +540,7 @@ dependencies = [
"serde_json",
"serde_json_lenient",
"settings",
+ "shlex",
"streaming_diff",
"task",
"telemetry",
@@ -546,7 +555,8 @@ dependencies = [
"tokio",
"tree-sitter-md",
"ui",
- "ui_input",
+ "unicode-script",
+ "unicode-segmentation",
"unindent",
"url",
"util",
@@ -614,7 +624,7 @@ version = "0.26.1-dev"
source = "git+https://github.com/zed-industries/alacritty?rev=4c129667ce56611becdc82de6e28218c80e2e88f#4c129667ce56611becdc82de6e28218c80e2e88f"
dependencies = [
"base64 0.22.1",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"home",
"libc",
"log",
@@ -669,7 +679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c88dbbce13b232b26250e1e2e6ac18b6a891a646b8148285036ebce260ac5c3"
dependencies = [
"alsa-sys",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"libc",
]
@@ -949,6 +959,7 @@ dependencies = [
"smol",
"tempfile",
"util",
+ "which 6.0.3",
"windows 0.61.3",
"zeroize",
]
@@ -1230,15 +1241,15 @@ dependencies = [
[[package]]
name = "async-tar"
-version = "0.5.1"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1937db2d56578aa3919b9bdb0e5100693fd7d1c0f145c53eb81fbb03e217550"
+checksum = "f6affe71e5b6180fb5eaf9e8127a243694baf6ae1120c199227167302f56c14b"
dependencies = [
"async-std",
"filetime",
+ "futures-core",
"libc",
- "pin-project",
- "redox_syscall 0.2.16",
+ "redox_syscall 0.7.5",
"xattr",
]
@@ -1553,9 +1564,9 @@ dependencies = [
[[package]]
name = "aws-lc-rs"
-version = "1.16.3"
+version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f"
+checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad"
dependencies = [
"aws-lc-sys",
"untrusted 0.7.1",
@@ -1564,14 +1575,15 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
-version = "0.40.0"
+version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7"
+checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444"
dependencies = [
"cc",
"cmake",
"dunce",
"fs_extra",
+ "pkg-config",
]
[[package]]
@@ -2256,10 +2268,10 @@ version = "0.71.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cexpr",
"clang-sys",
- "itertools 0.10.5",
+ "itertools 0.11.0",
"log",
"prettyplease",
"proc-macro2",
@@ -2276,10 +2288,10 @@ version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cexpr",
"clang-sys",
- "itertools 0.10.5",
+ "itertools 0.11.0",
"proc-macro2",
"quote",
"regex",
@@ -2347,9 +2359,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.10.0"
+version = "2.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
+checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
dependencies = [
"serde_core",
]
@@ -2749,6 +2761,7 @@ dependencies = [
"postage",
"project",
"serde",
+ "serde_json",
"settings",
"telemetry",
"util",
@@ -2760,7 +2773,7 @@ name = "calloop"
version = "0.14.3"
source = "git+https://github.com/zed-industries/calloop#eb6b4fd17b9af5ecc226546bdd04185391b3e265"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"polling",
"rustix 1.1.2",
"slab",
@@ -2945,7 +2958,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff"
dependencies = [
"heck 0.4.1",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"proc-macro2",
"quote",
@@ -3171,6 +3184,16 @@ dependencies = [
"clap",
]
+[[package]]
+name = "clap_complete_nushell"
+version = "4.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb9e9715d29a754b468591be588f6b926f5b0a1eb6a8b62acabeb66ff84d897"
+dependencies = [
+ "clap",
+ "clap_complete",
+]
+
[[package]]
name = "clap_derive"
version = "4.5.49"
@@ -3196,6 +3219,8 @@ dependencies = [
"anyhow",
"askpass",
"clap",
+ "clap_complete",
+ "clap_complete_nushell",
"collections",
"console",
"core-foundation 0.10.0",
@@ -3225,7 +3250,6 @@ dependencies = [
"anyhow",
"async-channel 2.5.0",
"async-tungstenite",
- "base64 0.22.1",
"chrono",
"clock",
"cloud_api_client",
@@ -3241,12 +3265,12 @@ dependencies = [
"gpui_tokio",
"http_client",
"http_client_tls",
- "httparse",
"log",
"objc2-foundation 0.3.2",
"parking_lot",
"paths",
"postage",
+ "proxy_handshake",
"rand 0.9.4",
"regex",
"release_channel",
@@ -3268,7 +3292,6 @@ dependencies = [
"tokio",
"tokio-native-tls",
"tokio-rustls 0.26.4",
- "tokio-socks",
"url",
"util",
"windows 0.61.3",
@@ -3315,7 +3338,6 @@ dependencies = [
"serde",
"serde_json",
"strum 0.27.2",
- "uuid",
"zeta_prompt",
]
@@ -3371,7 +3393,7 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block",
"cocoa-foundation 0.2.0",
"core-foundation 0.10.0",
@@ -3401,7 +3423,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block",
"core-foundation 0.10.0",
"core-graphics-types 0.2.0",
@@ -3525,6 +3547,7 @@ dependencies = [
"theme",
"theme_settings",
"time",
+ "title_bar",
"tokio",
"toml 0.8.23",
"tower 0.4.13",
@@ -3551,7 +3574,6 @@ dependencies = [
"collections",
"db",
"editor",
- "feature_flags",
"futures 0.3.32",
"fuzzy",
"gpui",
@@ -3566,6 +3588,7 @@ dependencies = [
"serde_json",
"settings",
"smallvec",
+ "smol",
"telemetry",
"theme",
"theme_settings",
@@ -3582,7 +3605,7 @@ name = "collections"
version = "0.1.0"
dependencies = [
"gpui_util",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"rustc-hash 2.1.1",
]
@@ -3952,6 +3975,7 @@ dependencies = [
"lsp",
"menu",
"project",
+ "release_channel",
"serde_json",
"settings",
"ui",
@@ -4004,7 +4028,7 @@ version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"core-foundation 0.10.0",
"core-graphics-types 0.2.0",
"foreign-types 0.5.0",
@@ -4017,7 +4041,7 @@ version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32eb7c354ae9f6d437a6039099ce7ecd049337a8109b23d73e48e8ffba8e9cd5"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"core-foundation 0.9.4",
"core-graphics-types 0.1.3",
"foreign-types 0.5.0",
@@ -4041,7 +4065,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"core-foundation 0.10.0",
"libc",
]
@@ -4052,7 +4076,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4416167a69126e617f8d0a214af0e3c1dbdeffcb100ddf72dcd1a1ac9893c146"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block",
"cfg-if",
"core-foundation 0.10.0",
@@ -4152,7 +4176,7 @@ version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"fontdb",
"harfrust",
"linebender_resource_handle",
@@ -4220,36 +4244,36 @@ dependencies = [
[[package]]
name = "cranelift-assembler-x64"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44f81cede359311706057b689b91b59f464926de0316f389898a2b028cb494fa"
+checksum = "3cd990d8a6304475bbad64534a0d418f5572f44d5f011437e6b9f1ee7d5c2570"
dependencies = [
"cranelift-assembler-x64-meta",
]
[[package]]
name = "cranelift-assembler-x64-meta"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa6ca11305de425ea08884097b913ebe1a83875253b3c0063ce28411e226bfdc"
+checksum = "ccabe4636007296721080e02d7dab46d4319638ec4e3f6f7402fcb46dc5122c6"
dependencies = [
"cranelift-srcgen",
]
[[package]]
name = "cranelift-bforest"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7537341a9a4ba9812141927be733e7254bf2318aab6597d567af9cad90609f27"
+checksum = "da7ed173c870c0aea202a9830880156905a028a88df076e35ce383a8acbf90a7"
dependencies = [
"cranelift-entity",
]
[[package]]
name = "cranelift-bitset"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d28a4ca5faf25ff821fcc768f26e68ffef505e9f71bb06e608862d941fa65086"
+checksum = "800cc586df98b12c502e76707c96565e40629a5322eaa15aaa34ba05f5721e31"
dependencies = [
"serde",
"serde_derive",
@@ -4257,9 +4281,9 @@ dependencies = [
[[package]]
name = "cranelift-codegen"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d891057fe1b73910c41e73b32a70fa8454092fce65942b5fa6f72aa6d5487f8a"
+checksum = "ae93f863f9094ae34d2567f9edb0ae2c41d35228b286598354dd78b198868ebd"
dependencies = [
"bumpalo",
"cranelift-assembler-x64",
@@ -4287,9 +4311,9 @@ dependencies = [
[[package]]
name = "cranelift-codegen-meta"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c29a66028a78eedc534b3a94e5ebfbaeb4e1f6b09038afe41bb24afd614faa4b"
+checksum = "38c505162bcf77dcb859905b3eac56a1917fc3cf326424fb06e7732031e3a8ae"
dependencies = [
"cranelift-assembler-x64-meta",
"cranelift-codegen-shared",
@@ -4300,24 +4324,24 @@ dependencies = [
[[package]]
name = "cranelift-codegen-shared"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95809ad251fe9422087b4a72d61e584d6ab6eff44dee1335f93cfaea0bedc9ac"
+checksum = "e3b786958bcb79bdb5fbae095af58f0c2da7d7895c475c991f6a6bb5a9c7e6d9"
[[package]]
name = "cranelift-control"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f79d0cacf063c297e5e8d5b73cb355b41b87f6d248e252d1b284e7a7b73673c2"
+checksum = "2faf9a5009bce7f725ce2af7a08c4883ebac6af933e7e0aa7d84f976f4e6deb5"
dependencies = [
"arbitrary",
]
[[package]]
name = "cranelift-entity"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2d73297a195ce3be55997c6307142c4b1e58dd0c2f18ceaa0179444024e312a"
+checksum = "017271194ba5e101d626560d0d6767efd341468d1ba0f4d015f19fe64020b65b"
dependencies = [
"cranelift-bitset",
"serde",
@@ -4326,9 +4350,9 @@ dependencies = [
[[package]]
name = "cranelift-frontend"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3be38d1ae29ef7c5d611fc6cb694f698dc4ca44152dcaa112ec0fef8d4d34858"
+checksum = "f80847f0929967f0cec82f9e0543b3901e0f0063690405891f22107b5a130fd8"
dependencies = [
"cranelift-codegen",
"log",
@@ -4338,15 +4362,15 @@ dependencies = [
[[package]]
name = "cranelift-isle"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6761926f6636209de7ac568be28b206890f2181761375b9722e0a1e7a7e1637a"
+checksum = "75904abbc0e7b46d20f7a49c8042c8a4481c0db4253b99889c723c566295d506"
[[package]]
name = "cranelift-native"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0893472f73f0d530a28e9a573ada6d1f93b9659bb6734dfe17061ac967bd1830"
+checksum = "6e0135923540574362e16f01bf40000664263840991039ff3041ba717de6cf3a"
dependencies = [
"cranelift-codegen",
"libc",
@@ -4355,9 +4379,9 @@ dependencies = [
[[package]]
name = "cranelift-srcgen"
-version = "0.123.9"
+version = "0.123.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1daccebabb1ccd034dbab0eacc0722af27d3cccc7929dea27a3546cb3562e40"
+checksum = "93fb12f76c482e034f6ebefa843c914e74112f088215d8d36d33a649f9fab99b"
[[package]]
name = "crash-context"
@@ -4389,6 +4413,7 @@ version = "0.1.0"
dependencies = [
"async-process",
"crash-handler",
+ "libc",
"log",
"mach2 0.5.0",
"minidumper",
@@ -4618,8 +4643,10 @@ dependencies = [
"anyhow",
"editor",
"feature_flags",
+ "fuzzy",
"gpui",
"log",
+ "picker",
"text",
"ui",
"workspace",
@@ -4675,7 +4702,7 @@ checksum = "d74b6bcf49ebbd91f1b1875b706ea46545032a14003b5557b7dfa4bbeba6766e"
dependencies = [
"cc",
"codespan-reporting",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"proc-macro2",
"quote",
"scratch",
@@ -4690,7 +4717,7 @@ checksum = "94ca2ad69673c4b35585edfa379617ac364bccd0ba0adf319811ba3a74ffa48a"
dependencies = [
"clap",
"codespan-reporting",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"proc-macro2",
"quote",
"syn 2.0.117",
@@ -4708,7 +4735,7 @@ version = "1.0.187"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a8ebf0b6138325af3ec73324cb3a48b64d57721f17291b151206782e61f66cd"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"proc-macro2",
"quote",
"syn 2.0.117",
@@ -5023,7 +5050,7 @@ name = "debugger_ui"
version = "0.1.0"
dependencies = [
"anyhow",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"client",
"collections",
"command_palette_hooks",
@@ -5064,9 +5091,7 @@ dependencies = [
"text",
"theme",
"theme_settings",
- "tree-sitter",
"tree-sitter-go",
- "tree-sitter-json",
"ui",
"ui_input",
"unindent",
@@ -5343,7 +5368,7 @@ dependencies = [
"libc",
"option-ext",
"redox_users 0.5.2",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -5369,7 +5394,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.6.2",
"libc",
"objc2 0.6.3",
@@ -5388,9 +5413,9 @@ dependencies = [
[[package]]
name = "dlib"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a"
dependencies = [
"libloading",
]
@@ -5854,6 +5879,7 @@ dependencies = [
"unicode-width",
"unindent",
"url",
+ "urlencoding",
"util",
"uuid",
"vim_mode_setting",
@@ -6033,6 +6059,17 @@ dependencies = [
"syn 2.0.117",
]
+[[package]]
+name = "enumn"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.117",
+]
+
[[package]]
name = "env_filter"
version = "0.1.4"
@@ -6140,7 +6177,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.61.2",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -6348,6 +6385,7 @@ dependencies = [
"log",
"lsp",
"parking_lot",
+ "path",
"pretty_assertions",
"proto",
"semver",
@@ -6359,8 +6397,9 @@ dependencies = [
"tracing",
"url",
"util",
- "wasm-encoder 0.221.3",
- "wasmparser 0.221.3",
+ "wasm-encoder 0.252.0",
+ "wasmparser 0.252.0",
+ "which 6.0.3",
"ztracing",
]
@@ -6440,7 +6479,7 @@ dependencies = [
"tracing",
"url",
"util",
- "wasmparser 0.221.3",
+ "wasmparser 0.252.0",
"wasmtime",
"wasmtime-wasi",
"zlog",
@@ -6560,9 +6599,9 @@ dependencies = [
[[package]]
name = "fancy-regex"
-version = "0.17.0"
+version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72cf461f865c862bb7dc573f643dd6a2b6842f7c30b07882b56bd148cc2761b8"
+checksum = "e1e1dacd0d2082dfcf1351c4bdd566bbe89a2b263235a2b50058f1e130a47277"
dependencies = [
"bit-set 0.8.0",
"regex-automata",
@@ -6589,6 +6628,9 @@ name = "fastrand"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+dependencies = [
+ "getrandom 0.2.16",
+]
[[package]]
name = "fax"
@@ -6639,6 +6681,7 @@ dependencies = [
"fs",
"gpui",
"inventory",
+ "release_channel",
"schemars 1.0.4",
"serde_json",
"settings",
@@ -6696,6 +6739,7 @@ dependencies = [
"menu",
"open_path_prompt",
"picker",
+ "picker_preview",
"pretty_assertions",
"project",
"project_panel",
@@ -6706,7 +6750,6 @@ dependencies = [
"theme",
"theme_settings",
"ui",
- "ui_input",
"util",
"workspace",
"zed_actions",
@@ -6736,14 +6779,12 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.26"
+version = "0.2.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
+checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759"
dependencies = [
"cfg-if",
"libc",
- "libredox",
- "windows-sys 0.60.2",
]
[[package]]
@@ -6811,7 +6852,18 @@ checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095"
dependencies = [
"futures-core",
"futures-sink",
- "nanorand",
+ "spin 0.9.8",
+]
+
+[[package]]
+name = "flume"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be"
+dependencies = [
+ "fastrand 2.3.0",
+ "futures-core",
+ "futures-sink",
"spin 0.9.8",
]
@@ -6857,7 +6909,7 @@ version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646"
dependencies = [
- "roxmltree",
+ "roxmltree 0.20.0",
]
[[package]]
@@ -6962,6 +7014,7 @@ dependencies = [
"anyhow",
"ashpd",
"async-channel 2.5.0",
+ "async-std",
"async-tar",
"async-trait",
"collections",
@@ -6976,11 +7029,14 @@ dependencies = [
"log",
"notify 9.0.0-rc.4",
"parking_lot",
+ "path",
"paths",
"proto",
"rope",
+ "rustix 1.1.2",
"serde",
"serde_json",
+ "slotmap",
"smol",
"telemetry",
"tempfile",
@@ -6988,6 +7044,7 @@ dependencies = [
"thiserror 2.0.17",
"time",
"trash",
+ "unicode-normalization",
"util",
"windows 0.61.3",
]
@@ -7343,7 +7400,7 @@ dependencies = [
"derive_more",
"derive_setters",
"gh-workflow-macros",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"merge",
"serde",
"serde_json",
@@ -7361,16 +7418,6 @@ dependencies = [
"syn 2.0.117",
]
-[[package]]
-name = "gif"
-version = "0.13.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b"
-dependencies = [
- "color_quant",
- "weezl",
-]
-
[[package]]
name = "gif"
version = "0.14.2"
@@ -7388,7 +7435,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
dependencies = [
"fallible-iterator",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"stable_deref_trait",
]
@@ -7402,7 +7449,7 @@ dependencies = [
"gobject-sys",
"libc",
"system-deps",
- "windows-sys 0.61.2",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -7474,6 +7521,7 @@ dependencies = [
"async-channel 2.5.0",
"buffer_diff",
"call",
+ "client",
"collections",
"component",
"ctor",
@@ -7660,7 +7708,7 @@ version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16de123c2e6c90ce3b573b7330de19be649080ec612033d397d72da265f1bd8b"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"futures-channel",
"futures-core",
"futures-executor",
@@ -7829,7 +7877,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"gpu-descriptor-types",
"hashbrown 0.15.5",
]
@@ -7840,7 +7888,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -7853,7 +7901,7 @@ dependencies = [
"async-task",
"backtrace",
"bindgen 0.71.1",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block",
"cbindgen",
"chrono",
@@ -7945,7 +7993,7 @@ dependencies = [
"anyhow",
"as-raw-xcb-connection",
"ashpd",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytemuck",
"calloop",
"calloop-wayland-source",
@@ -7960,6 +8008,7 @@ dependencies = [
"itertools 0.14.0",
"libc",
"log",
+ "notify-rust",
"oo7",
"open",
"parking_lot",
@@ -7995,6 +8044,7 @@ dependencies = [
"anyhow",
"async-task",
"block",
+ "block2 0.6.2",
"cbindgen",
"cocoa 0.26.0",
"collections",
@@ -8022,6 +8072,7 @@ dependencies = [
"objc2 0.6.3",
"objc2-app-kit 0.3.2",
"objc2-foundation 0.3.2",
+ "objc2-user-notifications",
"parking_lot",
"pathfinder_geometry",
"raw-window-handle",
@@ -8097,7 +8148,6 @@ dependencies = [
"log",
"parking_lot",
"raw-window-handle",
- "smallvec",
"uuid",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -8127,6 +8177,7 @@ dependencies = [
"raw-window-handle",
"smallvec",
"swash",
+ "unicode-bidi",
"unicode-segmentation",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -8189,7 +8240,6 @@ dependencies = [
"tree-sitter-rust",
"tree-sitter-typescript",
"tree-sitter-yaml",
- "util",
]
[[package]]
@@ -8221,7 +8271,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http 0.2.12",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"slab",
"tokio",
"tokio-util",
@@ -8240,7 +8290,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http 1.3.1",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"slab",
"tokio",
"tokio-util",
@@ -8294,7 +8344,7 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f9f40651a03bc0f7316bd75267ff5767e93017ef3cfffe76c6aa7252cc5a31c"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytemuck",
"core_maths",
"read-fonts 0.37.0",
@@ -8352,6 +8402,17 @@ dependencies = [
"foldhash 0.2.0",
]
+[[package]]
+name = "hashbrown"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
+dependencies = [
+ "foldhash 0.2.0",
+ "serde",
+ "serde_core",
+]
+
[[package]]
name = "hashlink"
version = "0.8.4"
@@ -8448,7 +8509,7 @@ version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd54745cfacb7b97dee45e8fdb91814b62bccddb481debb7de0f9ee6b7bf5b43"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"byteorder",
"heed-traits",
"heed-types",
@@ -8863,7 +8924,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
- "windows-core 0.56.0",
+ "windows-core 0.62.2",
]
[[package]]
@@ -9028,7 +9089,7 @@ dependencies = [
"byteorder-lite",
"color_quant",
"exr",
- "gif 0.14.2",
+ "gif",
"image-webp",
"moxcms",
"num-traits",
@@ -9036,10 +9097,9 @@ dependencies = [
"qoi",
"ravif",
"rayon",
- "rgb",
"tiff",
- "zune-core 0.5.1",
- "zune-jpeg 0.5.15",
+ "zune-core",
+ "zune-jpeg",
]
[[package]]
@@ -9063,6 +9123,7 @@ dependencies = [
"gpui",
"language",
"log",
+ "menu",
"project",
"serde",
"settings",
@@ -9074,17 +9135,18 @@ dependencies = [
[[package]]
name = "imagesize"
-version = "0.13.0"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
+checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
[[package]]
name = "imara-diff"
-version = "0.1.8"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2"
+checksum = "2f01d462f766df78ab820dd06f5eb700233c51f0f4c2e846520eaf4ba6aa5c5c"
dependencies = [
"hashbrown 0.15.5",
+ "memchr",
]
[[package]]
@@ -9112,12 +9174,12 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.11.4"
+version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
dependencies = [
"equivalent",
- "hashbrown 0.15.5",
+ "hashbrown 0.17.1",
"serde",
"serde_core",
]
@@ -9156,7 +9218,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"inotify-sys",
"libc",
]
@@ -9219,6 +9281,7 @@ dependencies = [
"anyhow",
"client",
"gpui",
+ "log",
"release_channel",
"smol",
"util",
@@ -9534,16 +9597,6 @@ dependencies = [
"util",
]
-[[package]]
-name = "jsonrpcmsg"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d833a15225c779251e13929203518c2ff26e2fe0f322d584b213f4f4dad37bd"
-dependencies = [
- "serde",
- "serde_json",
-]
-
[[package]]
name = "jsonschema"
version = "0.37.4"
@@ -9681,9 +9734,9 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
[[package]]
name = "kqueue"
-version = "1.1.1"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a"
+checksum = "273c0752728918e0ac4976f2b275b6fefb9ecd400585dec929419f3844cd87b5"
dependencies = [
"kqueue-sys",
"libc",
@@ -9691,11 +9744,11 @@ dependencies = [
[[package]]
name = "kqueue-sys"
-version = "1.0.4"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
+checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.13.1",
"libc",
]
@@ -9710,12 +9763,13 @@ dependencies = [
[[package]]
name = "kurbo"
-version = "0.11.3"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62"
+checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2"
dependencies = [
"arrayvec",
"euclid",
+ "polycool",
"smallvec",
]
@@ -9778,6 +9832,7 @@ dependencies = [
"fuzzy_nucleo",
"globset",
"gpui",
+ "grammars",
"http_client",
"imara-diff",
"indoc",
@@ -9833,16 +9888,16 @@ dependencies = [
"anyhow",
"collections",
"gpui_shared_string",
+ "gpui_util",
"log",
- "lsp",
"parking_lot",
+ "path",
"regex",
"schemars 1.0.4",
"serde",
"serde_json",
"toml 0.8.23",
"tree-sitter",
- "util",
]
[[package]]
@@ -9878,6 +9933,7 @@ dependencies = [
"env_var",
"futures 0.3.32",
"gpui",
+ "gpui_util",
"http_client",
"icons",
"image",
@@ -9887,7 +9943,6 @@ dependencies = [
"serde",
"serde_json",
"thiserror 2.0.17",
- "util",
]
[[package]]
@@ -9902,6 +9957,7 @@ dependencies = [
"http_client",
"log",
"partial-json-fixer",
+ "pretty_assertions",
"schemars 1.0.4",
"serde",
"serde_json",
@@ -9919,6 +9975,7 @@ dependencies = [
"async-lock",
"aws-config",
"aws-credential-types",
+ "aws-sigv4",
"aws_http_client",
"base64 0.22.1",
"bedrock",
@@ -9948,14 +10005,15 @@ dependencies = [
"language",
"language_model",
"language_models_cloud",
+ "llama_cpp",
"lmstudio",
"log",
"menu",
"mistral",
- "oauth_callback_server",
"ollama",
"open_ai",
"open_router",
+ "openai_subscribed",
"opencode",
"parking_lot",
"pretty_assertions",
@@ -9965,13 +10023,10 @@ dependencies = [
"serde",
"serde_json",
"settings",
- "sha2",
- "smol",
"strum 0.27.2",
"tokio",
"ui",
"ui_input",
- "url",
"util",
"x_ai",
]
@@ -10231,7 +10286,7 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"libc",
"redox_syscall 0.5.18",
]
@@ -10250,7 +10305,7 @@ dependencies = [
[[package]]
name = "libwebrtc"
version = "0.3.26"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"cxx",
"glib",
@@ -10348,7 +10403,7 @@ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
[[package]]
name = "livekit"
version = "0.7.32"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"base64 0.22.1",
"bmrng",
@@ -10374,7 +10429,7 @@ dependencies = [
[[package]]
name = "livekit-api"
version = "0.4.14"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"base64 0.21.7",
"futures-util",
@@ -10401,7 +10456,7 @@ dependencies = [
[[package]]
name = "livekit-protocol"
version = "0.7.1"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"futures-util",
"livekit-runtime",
@@ -10417,7 +10472,7 @@ dependencies = [
[[package]]
name = "livekit-runtime"
version = "0.4.0"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"tokio",
"tokio-stream",
@@ -10479,6 +10534,19 @@ dependencies = [
"zed-scap",
]
+[[package]]
+name = "llama_cpp"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "futures 0.3.32",
+ "http_client",
+ "schemars 1.0.4",
+ "serde",
+ "serde_json",
+ "url",
+]
+
[[package]]
name = "lmdb-master-sys"
version = "0.2.5"
@@ -10560,7 +10628,7 @@ version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6888e8653f6e49cb2924c660fc367a8beeb6239b71e117fa082153c6ea44d427"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"cssparser 0.36.0",
"encoding_rs",
@@ -10615,10 +10683,12 @@ name = "lsp"
version = "0.1.0"
dependencies = [
"anyhow",
+ "async-channel 2.5.0",
"async-pipe",
"collections",
"ctor",
"futures 0.3.32",
+ "futures-lite 1.13.0",
"gpui",
"gpui_util",
"log",
@@ -10630,7 +10700,6 @@ dependencies = [
"semver",
"serde",
"serde_json",
- "smol",
"util",
"zlog",
]
@@ -10646,6 +10715,32 @@ dependencies = [
"url",
]
+[[package]]
+name = "lsp_locations"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "editor",
+ "file_icons",
+ "fuzzy",
+ "gpui",
+ "indoc",
+ "language",
+ "log",
+ "lsp",
+ "picker",
+ "picker_preview",
+ "project",
+ "settings",
+ "text",
+ "theme",
+ "theme_settings",
+ "ui",
+ "util",
+ "workspace",
+]
+
[[package]]
name = "lyon"
version = "1.0.16"
@@ -10715,6 +10810,20 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+[[package]]
+name = "mac-notification-sys"
+version = "0.6.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd604973958ddcc11b561193c0fb96ba146506ef2f231ef2e7c35fd2cbc9beca"
+dependencies = [
+ "cc",
+ "log",
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
+ "time",
+ "uuid",
+]
+
[[package]]
name = "mach2"
version = "0.4.3"
@@ -10747,7 +10856,7 @@ name = "manatee"
version = "0.6.2"
source = "git+https://github.com/zed-industries/merman?tag=v0.6.2-with-patches#9acc3960f04a7deeb08079d60fa8183f15e8bde1"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"nalgebra",
"rustc-hash 2.1.1",
"thiserror 2.0.17",
@@ -10773,6 +10882,7 @@ dependencies = [
"gpui",
"gpui_platform",
"html5ever 0.27.0",
+ "image",
"language",
"languages",
"linkify",
@@ -11038,6 +11148,7 @@ dependencies = [
"merman",
"quick-xml 0.38.3",
"serde_json",
+ "usvg",
]
[[package]]
@@ -11058,7 +11169,7 @@ dependencies = [
"chrono",
"euclid",
"htmlize",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"json5",
"lalrpop",
"lalrpop-util",
@@ -11084,7 +11195,7 @@ dependencies = [
"base64 0.22.1",
"chrono",
"dugong",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"manatee",
"merman-core",
"pulldown-cmark 0.12.2",
@@ -11106,7 +11217,7 @@ version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block",
"core-graphics-types 0.2.0",
"foreign-types 0.5.0",
@@ -11165,7 +11276,7 @@ version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e16d10087ae9e375bad7a40e8ef5504bc08e808ccc6019067ff9de42a84570f"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"debugid",
"num-derive",
"num-traits",
@@ -11180,7 +11291,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e1fc14d6ded915b8e850801465e7096f77ed60bf87e4e85878d463720d9dc4d"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"byteorder",
"cfg-if",
"crash-context",
@@ -11282,7 +11393,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "536bfad37a309d62069485248eeaba1e8d9853aaf951caaeaed0585a95346f08"
dependencies = [
- "windows-sys 0.61.2",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -11376,19 +11487,20 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
[[package]]
name = "naga"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df"
dependencies = [
"arrayvec",
"bit-set 0.9.1",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"cfg_aliases 0.2.1",
"codespan-reporting",
"half",
"hashbrown 0.16.1",
"hexf-parse",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"libm",
"log",
"num-traits",
@@ -11441,15 +11553,6 @@ dependencies = [
"rand 0.8.6",
]
-[[package]]
-name = "nanorand"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
-dependencies = [
- "getrandom 0.2.16",
-]
-
[[package]]
name = "native-tls"
version = "0.2.18"
@@ -11488,7 +11591,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"jni-sys",
"log",
"ndk-sys",
@@ -11534,7 +11637,7 @@ version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"cfg_aliases 0.1.1",
"libc",
@@ -11546,10 +11649,11 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"cfg_aliases 0.2.1",
"libc",
+ "memoffset",
]
[[package]]
@@ -11558,7 +11662,7 @@ version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"cfg_aliases 0.2.1",
"libc",
@@ -11646,7 +11750,7 @@ version = "6.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"crossbeam-channel",
"filetime",
"fsevent-sys",
@@ -11662,9 +11766,9 @@ dependencies = [
[[package]]
name = "notify"
version = "9.0.0-rc.4"
-source = "git+https://github.com/zed-industries/notify?rev=faecbc33db4f59313e5225ef766bfd9e54a54cfd#faecbc33db4f59313e5225ef766bfd9e54a54cfd"
+source = "git+https://github.com/zed-industries/notify?rev=0890bbb8ca40a4b5d1f67031698dd7918b37d991#0890bbb8ca40a4b5d1f67031698dd7918b37d991"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"inotify 0.11.0",
"kqueue",
"libc",
@@ -11689,12 +11793,26 @@ dependencies = [
"notify 6.1.1",
]
+[[package]]
+name = "notify-rust"
+version = "4.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5b4c1b4f2aa9f25f63a7a49d3dd0ed567b3670da15330a66b29434be899b891"
+dependencies = [
+ "futures-lite 2.6.1",
+ "log",
+ "mac-notification-sys",
+ "serde",
+ "tauri-winrt-notification",
+ "zbus",
+]
+
[[package]]
name = "notify-types"
version = "2.1.0"
-source = "git+https://github.com/zed-industries/notify?rev=faecbc33db4f59313e5225ef766bfd9e54a54cfd#faecbc33db4f59313e5225ef766bfd9e54a54cfd"
+source = "git+https://github.com/zed-industries/notify?rev=0890bbb8ca40a4b5d1f67031698dd7918b37d991#0890bbb8ca40a4b5d1f67031698dd7918b37d991"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -11712,7 +11830,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -11994,7 +12112,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.5.1",
"libc",
"objc2 0.5.2",
@@ -12010,7 +12128,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"objc2 0.6.3",
"objc2-core-foundation",
"objc2-foundation 0.3.2",
@@ -12022,7 +12140,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6948501a91121d6399b79abaa33a8aa4ea7857fe019f341b8c23ad6e81b79b08"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"libc",
"objc2 0.6.3",
"objc2-core-audio",
@@ -12060,7 +12178,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a89f2ec274a0cf4a32642b2991e8b351a404d290da87bb6a9a9d8632490bd1c"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"objc2 0.6.3",
]
@@ -12070,7 +12188,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
@@ -12082,7 +12200,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.6.2",
"dispatch2",
"libc",
@@ -12101,6 +12219,16 @@ dependencies = [
"objc2-metal 0.2.2",
]
+[[package]]
+name = "objc2-core-location"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009"
+dependencies = [
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
+]
+
[[package]]
name = "objc2-core-services"
version = "0.3.2"
@@ -12123,7 +12251,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.5.1",
"libc",
"objc2 0.5.2",
@@ -12135,7 +12263,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.6.2",
"libc",
"objc2 0.6.3",
@@ -12158,7 +12286,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
@@ -12170,7 +12298,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.6.2",
"dispatch2",
"objc2 0.6.3",
@@ -12184,7 +12312,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
@@ -12197,13 +12325,26 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"objc2 0.6.3",
"objc2-core-foundation",
"objc2-foundation 0.3.2",
"objc2-metal 0.3.2",
]
+[[package]]
+name = "objc2-user-notifications"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2 0.6.2",
+ "objc2 0.6.3",
+ "objc2-core-location",
+ "objc2-foundation 0.3.2",
+]
+
[[package]]
name = "objc_exception"
version = "0.1.2"
@@ -12230,7 +12371,7 @@ checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
dependencies = [
"crc32fast",
"hashbrown 0.15.5",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"memchr",
]
@@ -12444,16 +12585,40 @@ dependencies = [
]
[[package]]
-name = "opencode"
+name = "openai_subscribed"
version = "0.1.0"
dependencies = [
"anyhow",
+ "base64 0.22.1",
+ "credentials_provider",
"futures 0.3.32",
- "google_ai",
+ "gpui",
"http_client",
- "language_model_core",
- "schemars 1.0.4",
- "serde",
+ "language_model",
+ "log",
+ "oauth_callback_server",
+ "open_ai",
+ "parking_lot",
+ "rand 0.9.4",
+ "serde",
+ "serde_json",
+ "sha2",
+ "smol",
+ "url",
+ "util",
+]
+
+[[package]]
+name = "opencode"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "futures 0.3.32",
+ "google_ai",
+ "http_client",
+ "language_model_core",
+ "schemars 1.0.4",
+ "serde",
"serde_json",
"strum 0.27.2",
]
@@ -12472,11 +12637,11 @@ dependencies = [
[[package]]
name = "openssl"
-version = "0.10.79"
+version = "0.10.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf0b434746ee2832f4f0baf10137e1cabb18cbe6912c69e2e33263c45250f542"
+checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cfg-if",
"foreign-types 0.3.2",
"libc",
@@ -12509,9 +12674,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
[[package]]
name = "openssl-sys"
-version = "0.9.115"
+version = "0.9.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "158fe5b292746440aa6e7a7e690e55aeb72d41505e2804c23c6973ad0e9c9781"
+checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
dependencies = [
"cc",
"libc",
@@ -12601,6 +12766,7 @@ dependencies = [
"lsp",
"menu",
"picker",
+ "picker_preview",
"project",
"rope",
"serde_json",
@@ -12775,6 +12941,16 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec"
+[[package]]
+name = "path"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "dunce",
+ "serde",
+ "tempfile",
+]
+
[[package]]
name = "pathdiff"
version = "0.2.3"
@@ -13396,7 +13572,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset 0.4.2",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
]
[[package]]
@@ -13560,20 +13736,41 @@ name = "picker"
version = "0.1.0"
dependencies = [
"anyhow",
+ "db",
"editor",
"gpui",
+ "language",
"menu",
+ "project",
"schemars 1.0.4",
"serde",
+ "serde_json",
"settings",
"theme",
"theme_settings",
"ui",
"ui_input",
+ "util",
"workspace",
"zed_actions",
]
+[[package]]
+name = "picker_preview"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "gpui",
+ "language",
+ "multi_buffer",
+ "picker",
+ "project",
+ "rope",
+ "settings",
+ "ui",
+ "util",
+]
+
[[package]]
name = "pico-args"
version = "0.5.0"
@@ -13689,7 +13886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
dependencies = [
"base64 0.22.1",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"quick-xml 0.38.3",
"serde",
"time",
@@ -13742,7 +13939,7 @@ version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"crc32fast",
"fdeflate",
"flate2",
@@ -13785,6 +13982,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
+[[package]]
+name = "polycool"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6"
+dependencies = [
+ "arrayvec",
+]
+
[[package]]
name = "pori"
version = "0.0.0"
@@ -14017,7 +14223,7 @@ version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"hex",
"serde",
]
@@ -14061,7 +14267,7 @@ dependencies = [
"dap",
"encoding_rs",
"extension",
- "fancy-regex 0.17.0",
+ "fancy-regex 0.18.0",
"fs",
"futures 0.3.32",
"fuzzy",
@@ -14072,7 +14278,7 @@ dependencies = [
"gpui",
"http_client",
"image",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"itertools 0.14.0",
"language",
"log",
@@ -14080,6 +14286,7 @@ dependencies = [
"markdown",
"node_runtime",
"parking_lot",
+ "path",
"paths",
"percent-encoding",
"postage",
@@ -14152,7 +14359,6 @@ dependencies = [
"anyhow",
"client",
"collections",
- "command_palette_hooks",
"criterion",
"editor",
"feature_flags",
@@ -14164,6 +14370,9 @@ dependencies = [
"gpui",
"itertools 0.14.0",
"language",
+ "log",
+ "markdown",
+ "markdown_preview",
"menu",
"notifications",
"pretty_assertions",
@@ -14200,6 +14409,7 @@ dependencies = [
"lsp",
"ordered-float 2.10.1",
"picker",
+ "picker_preview",
"project",
"release_channel",
"semver",
@@ -14261,7 +14471,7 @@ source = "git+https://github.com/proptest-rs/proptest?rev=3dca198a8fef1b32e3a66f
dependencies = [
"bit-set 0.8.0",
"bit-vec 0.8.0",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"num-traits",
"proptest-macro",
"rand 0.9.4",
@@ -14343,7 +14553,7 @@ checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
dependencies = [
"bytes 1.11.1",
"heck 0.5.0",
- "itertools 0.10.5",
+ "itertools 0.11.0",
"log",
"multimap",
"once_cell",
@@ -14376,7 +14586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
dependencies = [
"anyhow",
- "itertools 0.10.5",
+ "itertools 0.11.0",
"proc-macro2",
"quote",
"syn 2.0.117",
@@ -14431,6 +14641,21 @@ dependencies = [
"thiserror 1.0.69",
]
+[[package]]
+name = "proxy_handshake"
+version = "0.1.0"
+dependencies = [
+ "base64 0.22.1",
+ "futures 0.3.32",
+ "httparse",
+ "percent-encoding",
+ "piper",
+ "proptest",
+ "thiserror 2.0.17",
+ "tokio",
+ "url",
+]
+
[[package]]
name = "proxyvars"
version = "0.2.0"
@@ -14477,7 +14702,7 @@ version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76979bea66e7875e7509c4ec5300112b316af87fa7a252ca91c448b32dfe3993"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"memchr",
"pulldown-cmark-escape 0.10.1",
"unicase",
@@ -14489,7 +14714,7 @@ version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"getopts",
"memchr",
"pulldown-cmark-escape 0.11.0",
@@ -14502,7 +14727,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"memchr",
"unicase",
]
@@ -14521,9 +14746,9 @@ checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae"
[[package]]
name = "pulley-interpreter"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b78fdec962b639b921badfcfe77db7d18aa3c0c1e292ac2aa268c0efe8fe683"
+checksum = "558181096e0df4984f45cfc3a7087052df4a61c36089b135a08ceca9cbd352fb"
dependencies = [
"cranelift-bitset",
"log",
@@ -14533,9 +14758,9 @@ dependencies = [
[[package]]
name = "pulley-macros"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f718f4e8cd5fdfa08b3b1d2d25fe288350051be330544305f0a9b93a937b3d42"
+checksum = "b5d52e2f14e168d75cdabe9bd5fb1ff18a1b119dc6699684aee895dbc3524da9"
dependencies = [
"proc-macro2",
"quote",
@@ -15002,7 +15227,6 @@ dependencies = [
"task",
"telemetry",
"ui",
- "ui_input",
"util",
"windows-registry 0.6.1",
"workspace",
@@ -15012,20 +15236,20 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.2.16"
+version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.13.1",
]
[[package]]
name = "redox_syscall"
-version = "0.5.18"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -15121,9 +15345,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.13"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
dependencies = [
"aho-corasick",
"memchr",
@@ -15174,6 +15398,7 @@ dependencies = [
"serde_json",
"settings",
"smol",
+ "telemetry",
"tempfile",
"thiserror 2.0.17",
"urlencoding",
@@ -15266,6 +15491,7 @@ dependencies = [
"smol",
"sysinfo 0.37.2",
"task",
+ "telemetry",
"tempfile",
"theme",
"theme_settings",
@@ -15276,6 +15502,7 @@ dependencies = [
"uuid",
"watch",
"windows 0.61.3",
+ "workspace",
"worktree",
"zlog",
]
@@ -15450,19 +15677,19 @@ dependencies = [
[[package]]
name = "resvg"
-version = "0.45.1"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43"
+checksum = "b563218631706d614e23059436526d005b50ab5f2d506b55a17eb65c5eb83419"
dependencies = [
- "gif 0.13.3",
+ "gif",
"image-webp",
"log",
"pico-args",
"rgb",
- "svgtypes 0.15.3",
+ "svgtypes 0.16.1",
"tiny-skia",
"usvg",
- "zune-jpeg 0.4.21",
+ "zune-jpeg",
]
[[package]]
@@ -15605,6 +15832,15 @@ version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
+[[package]]
+name = "roxmltree"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1964b10c76125c36f8afe190065a4bf9a87bf324842c05701330bba9f1cacbb"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "rpassword"
version = "7.5.2"
@@ -15786,7 +16022,7 @@ version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"errno 0.3.14",
"libc",
"linux-raw-sys 0.4.15",
@@ -15799,11 +16035,11 @@ version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"errno 0.3.14",
"libc",
"linux-raw-sys 0.11.0",
- "windows-sys 0.61.2",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -15980,7 +16216,7 @@ version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytemuck",
"core_maths",
"log",
@@ -16033,8 +16269,15 @@ name = "sandbox"
version = "0.1.0"
dependencies = [
"anyhow",
+ "futures 0.3.32",
+ "gpui",
+ "http_proxy",
"libc",
"log",
+ "nix 0.29.0",
+ "seccompiler",
+ "serde",
+ "serde_json",
"smol",
"tempfile",
]
@@ -16065,7 +16308,7 @@ dependencies = [
"async-task",
"backtrace",
"chrono",
- "flume",
+ "flume 0.12.0",
"futures 0.3.32",
"parking_lot",
"rand 0.9.4",
@@ -16106,7 +16349,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
dependencies = [
"dyn-clone",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"ref-cast",
"schemars_derive",
"serde",
@@ -16302,23 +16545,29 @@ version = "0.1.0"
dependencies = [
"any_vec",
"anyhow",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"collections",
+ "db",
"editor",
+ "file_icons",
"fs",
"futures 0.3.32",
- "futures-lite 1.13.0",
"gpui",
"itertools 0.14.0",
"language",
"lsp",
"menu",
"multi_buffer",
+ "picker",
+ "picker_preview",
"pretty_assertions",
"project",
+ "regex",
"serde",
"serde_json",
"settings",
+ "smol",
+ "text",
"theme",
"theme_settings",
"tracing",
@@ -16345,6 +16594,15 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "seccompiler"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4ae55de56877481d112a559bbc12667635fdaf5e005712fd4e2b2fa50ffc884"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "secrecy"
version = "0.10.3"
@@ -16360,7 +16618,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"core-foundation 0.9.4",
"core-foundation-sys",
"libc",
@@ -16373,7 +16631,7 @@ version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"core-foundation 0.10.0",
"core-foundation-sys",
"libc",
@@ -16396,7 +16654,7 @@ version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fdfed56cd634f04fe8b9ddf947ae3dc493483e819593d2ba17df9ad05db8b2"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cssparser 0.36.0",
"derive_more",
"log",
@@ -16491,7 +16749,7 @@ version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"itoa",
"memchr",
"ryu",
@@ -16505,7 +16763,7 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e033097bf0d2b59a62b42c18ebbb797503839b26afdda2c4e1415cb6c813540"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"itoa",
"memchr",
"ryu",
@@ -16575,7 +16833,7 @@ dependencies = [
"chrono",
"hex",
"indexmap 1.9.3",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"schemars 0.9.0",
"schemars 1.0.4",
"serde_core",
@@ -16602,7 +16860,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -16615,7 +16873,7 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"itoa",
"ryu",
"serde",
@@ -16757,6 +17015,7 @@ dependencies = [
"agent_skills",
"anyhow",
"audio",
+ "client",
"cloud_api_types",
"codestral",
"collections",
@@ -17247,7 +17506,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [
"libc",
- "windows-sys 0.61.2",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -17283,7 +17542,7 @@ version = "0.4.0+sdk-1.4.341.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -17376,7 +17635,7 @@ dependencies = [
"futures-util",
"hashbrown 0.15.5",
"hashlink 0.10.0",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"memchr",
"once_cell",
@@ -17394,7 +17653,7 @@ dependencies = [
"tracing",
"url",
"uuid",
- "webpki-roots",
+ "webpki-roots 0.26.8",
]
[[package]]
@@ -17444,7 +17703,7 @@ dependencies = [
"atoi",
"base64 0.22.1",
"bigdecimal",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"byteorder",
"bytes 1.11.1",
"chrono",
@@ -17491,7 +17750,7 @@ dependencies = [
"atoi",
"base64 0.22.1",
"bigdecimal",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"byteorder",
"chrono",
"crc",
@@ -17533,7 +17792,7 @@ checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea"
dependencies = [
"atoi",
"chrono",
- "flume",
+ "flume 0.11.1",
"futures-channel",
"futures-core",
"futures-executor",
@@ -17860,11 +18119,11 @@ dependencies = [
[[package]]
name = "svgtypes"
-version = "0.15.3"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc"
+checksum = "695b5790b3131dafa99b3bbfd25a216edb3d216dad9ca208d4657bfb8f2abc3d"
dependencies = [
- "kurbo 0.11.3",
+ "kurbo 0.13.1",
"siphasher 1.0.1",
]
@@ -18048,6 +18307,17 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "syn"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
[[package]]
name = "sync_wrapper"
version = "0.1.2"
@@ -18146,7 +18416,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"core-foundation 0.9.4",
"system-configuration-sys 0.6.0",
]
@@ -18190,7 +18460,7 @@ version = "0.27.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc4592f674ce18521c2a81483873a49596655b179f71c5e05d10c1fe66c78745"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cap-fs-ext",
"cap-std",
"fd-lock",
@@ -18240,9 +18510,9 @@ dependencies = [
[[package]]
name = "taffy"
-version = "0.10.1"
+version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aea22054047c16c3f34d3ac473a2170be1424b1115b2a3adcf28cfb067c88859"
+checksum = "340a09581f29809fc0df82a3955501dc7f2a21f887e5d1c13dbe288fe1c0bef4"
dependencies = [
"arrayvec",
"grid",
@@ -18327,6 +18597,8 @@ dependencies = [
"serde",
"serde_json",
"task",
+ "tree-sitter",
+ "tree-sitter-json",
"tree-sitter-rust",
"tree-sitter-typescript",
"ui",
@@ -18335,6 +18607,17 @@ dependencies = [
"zed_actions",
]
+[[package]]
+name = "tauri-winrt-notification"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed071c670382e85fc2f48ae706492d8c338f4f89bf72520d32f8abfe880aade"
+dependencies = [
+ "thiserror 2.0.17",
+ "windows 0.61.3",
+ "windows-version",
+]
+
[[package]]
name = "telemetry"
version = "0.1.0"
@@ -18364,7 +18647,7 @@ dependencies = [
"getrandom 0.3.4",
"once_cell",
"rustix 1.1.2",
- "windows-sys 0.61.2",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -18472,6 +18755,7 @@ dependencies = [
"serde_json",
"settings",
"shellexpand",
+ "shlex",
"task",
"terminal",
"theme",
@@ -18543,7 +18827,7 @@ dependencies = [
"clap",
"collections",
"gpui",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"palette",
"serde",
@@ -18659,7 +18943,7 @@ dependencies = [
"half",
"quick-error 2.0.1",
"weezl",
- "zune-jpeg 0.5.15",
+ "zune-jpeg",
]
[[package]]
@@ -18907,7 +19191,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f"
dependencies = [
"either",
- "futures-io",
"futures-util",
"thiserror 1.0.69",
"tokio",
@@ -19032,7 +19315,7 @@ version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"serde_core",
"serde_spanned 1.0.3",
"toml_datetime 0.7.3",
@@ -19065,7 +19348,7 @@ version = "0.22.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"serde",
"serde_spanned 0.6.9",
"toml_datetime 0.6.11",
@@ -19079,7 +19362,7 @@ version = "0.23.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"toml_datetime 0.7.3",
"toml_parser",
"winnow 0.7.13",
@@ -19171,7 +19454,7 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytes 1.11.1",
"futures-core",
"futures-util",
@@ -19190,7 +19473,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytes 1.11.1",
"futures-util",
"http 1.3.1",
@@ -19215,7 +19498,7 @@ version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytes 1.11.1",
"futures-util",
"http 1.3.1",
@@ -19350,7 +19633,7 @@ dependencies = [
[[package]]
name = "trash"
version = "5.2.5"
-source = "git+https://github.com/zed-industries/trash-rs?rev=3bf27effd4eb8699f2e484d3326b852fe3e53af7#3bf27effd4eb8699f2e484d3326b852fe3e53af7"
+source = "git+https://github.com/zed-industries/trash-rs?rev=41c6c800d884a89351f3b8856d12894cccee261d#41c6c800d884a89351f3b8856d12894cccee261d"
dependencies = [
"chrono",
"libc",
@@ -19534,7 +19817,7 @@ checksum = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8"
[[package]]
name = "tree-sitter-md"
version = "0.3.2"
-source = "git+https://github.com/tree-sitter-grammars/tree-sitter-markdown?rev=9a23c1a96c0513d8fc6520972beedd419a973539#9a23c1a96c0513d8fc6520972beedd419a973539"
+source = "git+https://github.com/zed-industries/tree-sitter-markdown?rev=b596e737286780d7bfa9fcddceaeeb754574b352#b596e737286780d7bfa9fcddceaeeb754574b352"
dependencies = [
"cc",
"tree-sitter-language",
@@ -19791,10 +20074,13 @@ dependencies = [
"num-format",
"schemars 1.0.4",
"serde",
+ "settings",
"smallvec",
"strum 0.27.2",
"theme",
+ "theme_settings",
"ui_macros",
+ "web-time",
"windows 0.61.3",
]
@@ -19974,24 +20260,24 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
[[package]]
name = "usvg"
-version = "0.45.1"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef"
+checksum = "e419dff010bb12512b0ae9e3d2f318dfbdf0167fde7eb05465134d4e8756076f"
dependencies = [
"base64 0.22.1",
"data-url",
"flate2",
"fontdb",
"imagesize",
- "kurbo 0.11.3",
+ "kurbo 0.13.1",
"log",
"pico-args",
- "roxmltree",
+ "roxmltree 0.21.1",
"rustybuzz",
"simplecss",
"siphasher 1.0.1",
"strict-num",
- "svgtypes 0.15.3",
+ "svgtypes 0.16.1",
"tiny-skia-path",
"unicode-bidi",
"unicode-script",
@@ -20046,6 +20332,7 @@ dependencies = [
"log",
"mach2 0.5.0",
"nix 0.29.0",
+ "path",
"percent-encoding",
"pretty_assertions",
"rand 0.9.4",
@@ -20275,7 +20562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5924018406ce0063cd67f8e008104968b74b563ee1b85dde3ed1f7cb87d3dbd"
dependencies = [
"arrayvec",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"cursor-icon",
"log",
"memchr",
@@ -20438,16 +20725,6 @@ dependencies = [
"leb128",
]
-[[package]]
-name = "wasm-encoder"
-version = "0.221.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc8444fe4920de80a4fe5ab564fff2ae58b6b73166b89751f8c6c93509da32e5"
-dependencies = [
- "leb128",
- "wasmparser 0.221.3",
-]
-
[[package]]
name = "wasm-encoder"
version = "0.227.1"
@@ -20478,6 +20755,16 @@ dependencies = [
"wasmparser 0.244.0",
]
+[[package]]
+name = "wasm-encoder"
+version = "0.252.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8185ae345fa5687c054626ff9a50e7089797a343d9904d1dc9820eb4c4d3196f"
+dependencies = [
+ "leb128fmt",
+ "wasmparser 0.252.0",
+]
+
[[package]]
name = "wasm-metadata"
version = "0.201.0"
@@ -20485,7 +20772,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fd83062c17b9f4985d438603cde0a5e8c5c8198201a6937f778b607924c7da2"
dependencies = [
"anyhow",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"serde",
"serde_derive",
"serde_json",
@@ -20503,7 +20790,7 @@ dependencies = [
"anyhow",
"auditable-serde",
"flate2",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"serde",
"serde_derive",
"serde_json",
@@ -20520,7 +20807,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
dependencies = [
"anyhow",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"wasm-encoder 0.244.0",
"wasmparser 0.244.0",
]
@@ -20541,8 +20828,7 @@ dependencies = [
[[package]]
name = "wasm_thread"
version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7516db7f32decdadb1c3b8deb1b7d78b9df7606c5cc2f6241737c2ab3a0258e"
+source = "git+https://github.com/zed-industries/wasm_thread?rev=0cf96c7708dfb97ccf3da50347e25edcf75d6937#0cf96c7708dfb97ccf3da50347e25edcf75d6937"
dependencies = [
"futures 0.3.32",
"js-sys",
@@ -20556,33 +20842,20 @@ version = "0.201.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84e5df6dba6c0d7fafc63a450f1738451ed7a0b52295d83e868218fa286bf708"
dependencies = [
- "bitflags 2.10.0",
- "indexmap 2.11.4",
+ "bitflags 2.13.1",
+ "indexmap 2.14.0",
"semver",
]
-[[package]]
-name = "wasmparser"
-version = "0.221.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d06bfa36ab3ac2be0dee563380147a5b81ba10dd8885d7fbbc9eb574be67d185"
-dependencies = [
- "bitflags 2.10.0",
- "hashbrown 0.15.5",
- "indexmap 2.11.4",
- "semver",
- "serde",
-]
-
[[package]]
name = "wasmparser"
version = "0.227.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f51cad774fb3c9461ab9bccc9c62dfb7388397b5deda31bf40e8108ccd678b2"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"hashbrown 0.15.5",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"semver",
]
@@ -20592,9 +20865,9 @@ version = "0.236.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9b1e81f3eb254cf7404a82cee6926a4a3ccc5aad80cc3d43608a070c67aa1d7"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"hashbrown 0.15.5",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"semver",
"serde",
]
@@ -20605,10 +20878,23 @@ version = "0.244.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"hashbrown 0.15.5",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
+ "semver",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.252.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3eb099dcadcde5be9eef55e3a337128efd4e44b4c93122487e4d2e4e1c6627c"
+dependencies = [
+ "bitflags 2.13.1",
+ "hashbrown 0.17.1",
+ "indexmap 2.14.0",
"semver",
+ "serde",
]
[[package]]
@@ -20624,20 +20910,20 @@ dependencies = [
[[package]]
name = "wasmtime"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b10306ead921db2c4645ff99867b7539b65e18afd8816d471547f5e6f3b09492"
+checksum = "4b4442dc12aa2473def8334f0e0f2b489be52c52507c938bbdc8be69ded4ded6"
dependencies = [
"addr2line",
"anyhow",
"async-trait",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bumpalo",
"cc",
"cfg-if",
"encoding_rs",
"hashbrown 0.15.5",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"libc",
"log",
"mach2 0.4.3",
@@ -20685,16 +20971,16 @@ dependencies = [
[[package]]
name = "wasmtime-environ"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7fb2c37ca263d444f33871bf0221e7de0707b2b2bb88165df6db6d58c73375f"
+checksum = "5d881c3d6205898a226cc487b117f23b9ed1c7da39952d65bd5eeb6745b3789c"
dependencies = [
"anyhow",
"cpp_demangle",
"cranelift-bitset",
"cranelift-entity",
"gimli",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"object",
"postcard",
@@ -20712,9 +20998,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-asm-macros"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19c6c0d3c8d2db554a3af8e8d413ff2815362ebce0911808ecfdaaa257438f93"
+checksum = "5ab1876bcfa51d6a05dea1c13933f53cbc1e316c783fddebc859f56a736eae07"
dependencies = [
"cfg-if",
]
@@ -20731,9 +21017,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-component-macro"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3e3f3752466eb0e1f97149e53bf15c0e18ff520fc0a98b4bee1680e6de1c6f0"
+checksum = "8ae1407944a0b13a8a77930b5b951aa7134beccecad7efac1ef9f03adb7d1a0f"
dependencies = [
"anyhow",
"proc-macro2",
@@ -20746,15 +21032,15 @@ dependencies = [
[[package]]
name = "wasmtime-internal-component-util"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f54018baf62f4e9c616c31f2aeadcf0c202ff691a390ad53e291ae7160b169e"
+checksum = "646a53678ce6aaf6f097e18ca51f650f2841aea6d2bcd7b61931397b8b8f30db"
[[package]]
name = "wasmtime-internal-cranelift"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a2412f2afb0a5db2a4ac1cfff73247e240aeaa90bf41497ad0a5084b6a24eca"
+checksum = "ab3495aa8300e4ca6b53f81a53ce5eff6621fd5ff8378ef9ae552d1479d57371"
dependencies = [
"anyhow",
"cfg-if",
@@ -20779,9 +21065,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-fiber"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ecfdc460dd5d343d88ff1ffaf65ae019feeb6124ddcfd3f39d28331068d25b1f"
+checksum = "29b5e4023a6b167da157338f5f0f505945eb45e78f1cac2d4dcce0922457d7d4"
dependencies = [
"anyhow",
"cc",
@@ -20795,9 +21081,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-jit-debug"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5abb428a71827b7f90fc64406749883ccc6e58addf6d36974d5e06942011707"
+checksum = "9da71e2d573e3cc6f753a3b7bff98f425ca060c0e8071cc55c3d867a9edf3ecc"
dependencies = [
"cc",
"wasmtime-internal-versioned-export-macros",
@@ -20805,9 +21091,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-jit-icache-coherence"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba6cc13f14c3fb83fb877cb1d5c605e93f7ec1bf7fc1a5e8b361209d2f8ca028"
+checksum = "627d8f57909a4f9bb1dbe57a96229a54b89d5995353d0b321f3cb9a1a118977a"
dependencies = [
"anyhow",
"cfg-if",
@@ -20817,24 +21103,24 @@ dependencies = [
[[package]]
name = "wasmtime-internal-math"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cb209473a09f4dbd9c87bb9f18b8dcb0c9da30d12a260e3eacf7a1a53b41480"
+checksum = "45b99315585a8a27125dd9b0150edb115d6f6ff0baae453c21d30822aab77f00"
dependencies = [
"libm",
]
[[package]]
name = "wasmtime-internal-slab"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aab4df5a04752106e1ecef9d40145ef28fa033b0d5dd3c839c9b208b2d522183"
+checksum = "8eaee97281dd3fe47ec3d46c16fb9fe2dd32f37d0523c2d5c484f11b348734e4"
[[package]]
name = "wasmtime-internal-unwinder"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5359875d29bddb6f7e65e698157714d8d35ebd8ea2a92893d05d6b062147b639"
+checksum = "d0c005f82c48492b6b44fa19ee5205bd933c4f8baca41e314eca8331dd3c4fd9"
dependencies = [
"anyhow",
"cfg-if",
@@ -20845,9 +21131,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-versioned-export-macros"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e247bcdd69701743ba386c933b26ebad2ce912ff9cb68b5b71fdb29d39ba04a"
+checksum = "7b73639a9c0c0e33a2ef942ca99b6772b48393be92bebbd0767c607e5b0a68e0"
dependencies = [
"proc-macro2",
"quote",
@@ -20856,9 +21142,9 @@ dependencies = [
[[package]]
name = "wasmtime-internal-winch"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0298dfd9f57588222b5a92dcffe75894f1ead4e519850f176bde7fcfd105d54"
+checksum = "392ca021d084c7426616ef77e1284315555f11bcbb34f416d74b0732db622811"
dependencies = [
"anyhow",
"cranelift-codegen",
@@ -20873,26 +21159,26 @@ dependencies = [
[[package]]
name = "wasmtime-internal-wit-bindgen"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1706803e83b9bae726a0f55e7c1bbf78a7421cf2da68c940c70978e91dfc0339"
+checksum = "7fd4703351476262d715b72431e80d10289908e3494050071d6521267f522d97"
dependencies = [
"anyhow",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"heck 0.5.0",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"wit-parser 0.236.1",
]
[[package]]
name = "wasmtime-wasi"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a430602ec54d0e32fbb61d2d8c7e5885eaa9dbc1664b6ed57fb57df439810a0"
+checksum = "21921b6e8e8ed876a288cb3b0b3aee68809fed8182ce26c9977ffc4af4cb77f6"
dependencies = [
"anyhow",
"async-trait",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytes 1.11.1",
"cap-fs-ext",
"cap-net-ext",
@@ -20917,9 +21203,9 @@ dependencies = [
[[package]]
name = "wasmtime-wasi-io"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b2ba5dd68962de394cf15c7fb185f138cdd685ced631a7ed8e056de3e071029"
+checksum = "2cceb2d110d8de61e7b0e8c501b838d3c6403a14cdca8cb612ff1228db537c6d"
dependencies = [
"anyhow",
"async-trait",
@@ -20965,9 +21251,9 @@ dependencies = [
[[package]]
name = "wayland-backend"
-version = "0.3.11"
+version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35"
+checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d"
dependencies = [
"cc",
"downcast-rs",
@@ -20983,7 +21269,7 @@ version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"rustix 1.1.2",
"wayland-backend",
"wayland-scanner",
@@ -21006,7 +21292,7 @@ version = "0.32.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"wayland-backend",
"wayland-client",
"wayland-scanner",
@@ -21018,7 +21304,7 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -21031,7 +21317,7 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -21051,9 +21337,9 @@ dependencies = [
[[package]]
name = "wayland-sys"
-version = "0.31.7"
+version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142"
+checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be"
dependencies = [
"dlib",
"log",
@@ -21141,10 +21427,19 @@ dependencies = [
"rustls-pki-types",
]
+[[package]]
+name = "webpki-roots"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf"
+dependencies = [
+ "rustls-pki-types",
+]
+
[[package]]
name = "webrtc-sys"
version = "0.3.23"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"cc",
"cxx",
@@ -21158,7 +21453,7 @@ dependencies = [
[[package]]
name = "webrtc-sys-build"
version = "0.3.13"
-source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=c3a55bbc207008f1ca3474b6037fdd3c443cad0f#c3a55bbc207008f1ca3474b6037fdd3c443cad0f"
+source = "git+https://github.com/zed-industries/livekit-rust-sdks?rev=d0e27be0cdad89eadab3e36207cda0a2b6e359ee#d0e27be0cdad89eadab3e36207cda0a2b6e359ee"
dependencies = [
"anyhow",
"fs2",
@@ -21177,11 +21472,12 @@ checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
[[package]]
name = "wgpu"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76e8840e1ba2881d4cbb18d2147627a56af426ff064c0401eb0c8410c6325d07"
dependencies = [
"arrayvec",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytemuck",
"cfg-if",
"cfg_aliases 0.2.1",
@@ -21206,18 +21502,19 @@ dependencies = [
[[package]]
name = "wgpu-core"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f519832254e56965a9940c4af57dcb75f702b6f6fa4a0b172f685395843a4d7"
dependencies = [
"arrayvec",
"bit-set 0.9.1",
"bit-vec 0.9.1",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytemuck",
"cfg_aliases 0.2.1",
"document-features",
"hashbrown 0.16.1",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"naga",
"once_cell",
@@ -21238,38 +21535,42 @@ dependencies = [
[[package]]
name = "wgpu-core-deps-apple"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5e39e26c4c0e07589e67d18546cf79ff45383659fc72fca4dd293358a0347f3"
dependencies = [
"wgpu-hal",
]
[[package]]
name = "wgpu-core-deps-emscripten"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01e09be551dc939498bdd5f6b2c66e55ab275dad25825267a08605a80fc9f0af"
dependencies = [
"wgpu-hal",
]
[[package]]
name = "wgpu-core-deps-windows-linux-android"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e592c1bbef6ad047647ae6e666ebd8cee7a32bb4544d9700ec96cbf73230257"
dependencies = [
"wgpu-hal",
]
[[package]]
name = "wgpu-hal"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97ace1c17727311c22a46e4e3faf56ea6de81af99dcc839bdfb54857b94d448d"
dependencies = [
"android_system_properties",
"arrayvec",
"ash",
"bit-set 0.9.1",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"block2 0.6.2",
"bytemuck",
"cfg-if",
@@ -21315,8 +21616,9 @@ dependencies = [
[[package]]
name = "wgpu-naga-bridge"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95226013f547544b223281cd16a4fb549aa9dcb562adbda0faae4c73ffbbc161"
dependencies = [
"naga",
"wgpu-types",
@@ -21324,10 +21626,11 @@ dependencies = [
[[package]]
name = "wgpu-types"
-version = "29.0.3"
-source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
+version = "29.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84bf84cd9ca8ca45e2b223a3868f1adf9bfc0c66aeac212e76ee7e40fdadf8f5"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"bytemuck",
"js-sys",
"log",
@@ -21395,13 +21698,13 @@ dependencies = [
[[package]]
name = "wiggle"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1979d3ed3ffc017538e518da6faa66b129f9229492981fc51004f28cb86db792"
+checksum = "55a0751406b641ff50ef42d4a1ca843a03040c488c0c27f92093633447464013"
dependencies = [
"anyhow",
"async-trait",
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"thiserror 2.0.17",
"tracing",
"wasmtime",
@@ -21410,9 +21713,9 @@ dependencies = [
[[package]]
name = "wiggle-generate"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25d92ae7a084d8543aa7ccef0fac52c86481a7278d0533f7fdeaf89bd7b7e29f"
+checksum = "ab62083fdcecdd0cac61b8c46e7de4f2629ebe8699fd9ce790d922cc89d50f5f"
dependencies = [
"anyhow",
"heck 0.5.0",
@@ -21424,9 +21727,9 @@ dependencies = [
[[package]]
name = "wiggle-macro"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36a1b1b93fd9ce569bb40c1eadf5c56533cebfc04ba545c8bc1e74464cff0735"
+checksum = "756b7a4a7f57ee2f53e9ef3501ed0faacda4b8dcb169a921cddc8bc09ebd199e"
dependencies = [
"proc-macro2",
"quote",
@@ -21456,7 +21759,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.61.2",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -21467,9 +21770,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "winch-codegen"
-version = "36.0.9"
+version = "36.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e2d7ea2137be52644d9c42ca5a4899bba07c2ed2db1e66c4c1994adfe35d39e"
+checksum = "61ec880b20caaa72245944b54cfb22aca111f8c805e12a7542b40d66921e5323"
dependencies = [
"anyhow",
"cranelift-assembler-x64",
@@ -22029,6 +22332,15 @@ dependencies = [
"windows-link 0.2.1",
]
+[[package]]
+name = "windows-version"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
@@ -22285,7 +22597,7 @@ version = "0.36.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f3fd376f71958b862e7afb20cfe5a22830e1963462f3a17f49d82a6c1d1f42d"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"windows-sys 0.59.0",
]
@@ -22304,7 +22616,7 @@ version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "288f992ea30e6b5c531b52cdd5f3be81c148554b09ea416f058d16556ba92c27"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"wit-bindgen-rt 0.22.0",
"wit-bindgen-rust-macro 0.22.0",
]
@@ -22378,7 +22690,7 @@ version = "0.41.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4db52a11d4dfb0a59f194c064055794ee6564eb1ced88c25da2cf76e50c5621"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"futures 0.3.32",
"once_cell",
]
@@ -22391,7 +22703,7 @@ checksum = "d8a39a15d1ae2077688213611209849cad40e9e5cccf6e61951a425850677ff3"
dependencies = [
"anyhow",
"heck 0.4.1",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"wasm-metadata 0.201.0",
"wit-bindgen-core 0.22.0",
"wit-component 0.201.0",
@@ -22405,7 +22717,7 @@ checksum = "9d0809dc5ba19e2e98661bf32fc0addc5a3ca5bf3a6a7083aa6ba484085ff3ce"
dependencies = [
"anyhow",
"heck 0.5.0",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"prettyplease",
"syn 2.0.117",
"wasm-metadata 0.227.1",
@@ -22421,7 +22733,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
dependencies = [
"anyhow",
"heck 0.5.0",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"prettyplease",
"syn 2.0.117",
"wasm-metadata 0.244.0",
@@ -22480,8 +22792,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "421c0c848a0660a8c22e2fd217929a0191f14476b68962afd2af89fd22e39825"
dependencies = [
"anyhow",
- "bitflags 2.10.0",
- "indexmap 2.11.4",
+ "bitflags 2.13.1",
+ "indexmap 2.14.0",
"log",
"serde",
"serde_derive",
@@ -22499,8 +22811,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "635c3adc595422cbf2341a17fb73a319669cc8d33deed3a48368a841df86b676"
dependencies = [
"anyhow",
- "bitflags 2.10.0",
- "indexmap 2.11.4",
+ "bitflags 2.13.1",
+ "indexmap 2.14.0",
"log",
"serde",
"serde_derive",
@@ -22518,8 +22830,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
dependencies = [
"anyhow",
- "bitflags 2.10.0",
- "indexmap 2.11.4",
+ "bitflags 2.13.1",
+ "indexmap 2.14.0",
"log",
"serde",
"serde_derive",
@@ -22538,7 +22850,7 @@ checksum = "196d3ecfc4b759a8573bf86a9b3f8996b304b3732e4c7de81655f875f6efdca6"
dependencies = [
"anyhow",
"id-arena",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"semver",
"serde",
@@ -22556,7 +22868,7 @@ checksum = "ddf445ed5157046e4baf56f9138c124a0824d4d1657e7204d71886ad8ce2fc11"
dependencies = [
"anyhow",
"id-arena",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"semver",
"serde",
@@ -22574,7 +22886,7 @@ checksum = "16e4833a20cd6e85d6abfea0e63a399472d6f88c6262957c17f546879a80ba15"
dependencies = [
"anyhow",
"id-arena",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"semver",
"serde",
@@ -22592,7 +22904,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
dependencies = [
"anyhow",
"id-arena",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"log",
"semver",
"serde",
@@ -22662,6 +22974,7 @@ dependencies = [
"theme",
"theme_settings",
"ui",
+ "ui_input",
"url",
"util",
"uuid",
@@ -22796,11 +23109,12 @@ dependencies = [
[[package]]
name = "xattr"
-version = "0.2.3"
+version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc"
+checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
dependencies = [
"libc",
+ "rustix 1.1.2",
]
[[package]]
@@ -22834,7 +23148,7 @@ name = "xim-parser"
version = "0.2.1"
source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -22896,7 +23210,7 @@ dependencies = [
"clap",
"compliance",
"gh-workflow",
- "indexmap 2.11.4",
+ "indexmap 2.14.0",
"indoc",
"itertools 0.14.0",
"regex",
@@ -22940,23 +23254,24 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
[[package]]
name = "yawc"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19a5d82922135b4ae73a079a4ffb5501e9aadb4d785b8c660eaa0a8b899028c5"
+version = "0.3.3"
+source = "git+https://github.com/zed-industries/yawc?rev=71a452f551cac178367eaac5d7418a09afa1f3a2#71a452f551cac178367eaac5d7418a09afa1f3a2"
dependencies = [
"base64 0.22.1",
"bytes 1.11.1",
"flate2",
"futures 0.3.32",
+ "getrandom 0.2.16",
"http-body-util",
"hyper 1.7.0",
"hyper-util",
"js-sys",
+ "log",
"nom 8.0.0",
"pin-project",
"rand 0.8.6",
"sha1",
- "thiserror 1.0.69",
+ "thiserror 2.0.17",
"tokio",
"tokio-rustls 0.26.4",
"tokio-util",
@@ -22964,7 +23279,7 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
- "webpki-roots",
+ "webpki-roots 1.0.8",
]
[[package]]
@@ -23107,7 +23422,7 @@ dependencies = [
[[package]]
name = "zed"
-version = "1.9.0"
+version = "1.15.0"
dependencies = [
"acp_thread",
"acp_tools",
@@ -23195,6 +23510,7 @@ dependencies = [
"languages",
"line_ending_selector",
"log",
+ "lsp_locations",
"markdown",
"markdown_preview",
"menu",
@@ -23286,7 +23602,7 @@ name = "zed-font-kit"
version = "0.14.1-zed"
source = "git+https://github.com/zed-industries/font-kit?rev=94b0f28166665e8fd2f53ff6d268a14955c82269#94b0f28166665e8fd2f53ff6d268a14955c82269"
dependencies = [
- "bitflags 2.10.0",
+ "bitflags 2.13.1",
"byteorder",
"core-foundation 0.10.0",
"core-graphics 0.24.0",
@@ -23699,12 +24015,6 @@ dependencies = [
name = "ztracing_macro"
version = "0.1.0"
-[[package]]
-name = "zune-core"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
-
[[package]]
name = "zune-core"
version = "0.5.1"
@@ -23720,22 +24030,13 @@ dependencies = [
"simd-adler32",
]
-[[package]]
-name = "zune-jpeg"
-version = "0.4.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
-dependencies = [
- "zune-core 0.4.12",
-]
-
[[package]]
name = "zune-jpeg"
version = "0.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296"
dependencies = [
- "zune-core 0.5.1",
+ "zune-core",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 07d2e776f67ed7..120380f2b47bbb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -127,8 +127,10 @@ members = [
"crates/line_ending_selector",
"crates/livekit_api",
"crates/livekit_client",
+ "crates/llama_cpp",
"crates/lmstudio",
"crates/lsp",
+ "crates/lsp_locations",
"crates/markdown",
"crates/markdown_preview",
"crates/mermaid_render",
@@ -144,6 +146,7 @@ members = [
"crates/oauth_callback_server",
"crates/ollama",
"crates/onboarding",
+ "crates/openai_subscribed",
"crates/opencode",
"crates/open_ai",
"crates/open_path_prompt",
@@ -151,8 +154,10 @@ members = [
"crates/outline",
"crates/outline_panel",
"crates/panel",
+ "crates/path",
"crates/paths",
"crates/picker",
+ "crates/picker_preview",
"crates/platform_title_bar",
"crates/prettier",
"crates/project",
@@ -161,6 +166,7 @@ members = [
"crates/project_symbols",
"crates/prompt_store",
"crates/proto",
+ "crates/proxy_handshake",
"crates/recent_projects",
"crates/refineable",
"crates/refineable/derive_refineable",
@@ -386,14 +392,17 @@ languages = { path = "crates/languages" }
line_ending_selector = { path = "crates/line_ending_selector" }
livekit_api = { path = "crates/livekit_api" }
livekit_client = { path = "crates/livekit_client" }
+llama_cpp = { path = "crates/llama_cpp" }
lmstudio = { path = "crates/lmstudio" }
lsp = { path = "crates/lsp" }
+lsp_locations = { path = "crates/lsp_locations" }
markdown = { path = "crates/markdown" }
markdown_preview = { path = "crates/markdown_preview" }
mermaid_render = { path = "crates/mermaid_render" }
svg_preview = { path = "crates/svg_preview" }
media = { path = "crates/media" }
menu = { path = "crates/menu" }
+mime = "0.3.17"
migrator = { path = "crates/migrator" }
mistral = { path = "crates/mistral" }
multi_buffer = { path = "crates/multi_buffer" }
@@ -404,6 +413,7 @@ notifications = { path = "crates/notifications" }
oauth_callback_server = { path = "crates/oauth_callback_server" }
ollama = { path = "crates/ollama" }
onboarding = { path = "crates/onboarding" }
+openai_subscribed = { path = "crates/openai_subscribed" }
opencode = { path = "crates/opencode" }
open_ai = { path = "crates/open_ai" }
open_path_prompt = { path = "crates/open_path_prompt" }
@@ -412,8 +422,10 @@ outline = { path = "crates/outline" }
outline_panel = { path = "crates/outline_panel" }
panel = { path = "crates/panel" }
paths = { path = "crates/paths" }
+path = { path = "crates/path" }
perf = { path = "tooling/perf" }
picker = { path = "crates/picker" }
+picker_preview = { path = "crates/picker_preview" }
prettier = { path = "crates/prettier" }
settings_profile_selector = { path = "crates/settings_profile_selector" }
project = { path = "crates/project" }
@@ -421,6 +433,7 @@ project_panel = { path = "crates/project_panel" }
project_symbols = { path = "crates/project_symbols" }
prompt_store = { path = "crates/prompt_store" }
proto = { path = "crates/proto" }
+proxy_handshake = { path = "crates/proxy_handshake" }
recent_projects = { path = "crates/recent_projects" }
refineable = { path = "crates/refineable" }
release_channel = { path = "crates/release_channel" }
@@ -501,11 +514,11 @@ ztracing_macro = { path = "crates/ztracing_macro" }
# External crates
#
-accesskit = "0.24.0"
+accesskit = { version = "0.24.0", features = ["enumn"] }
accesskit_macos = "0.26.0"
accesskit_unix = "0.21.0"
accesskit_windows = "0.33.1"
-agent-client-protocol = { version = "=0.14.0", features = ["unstable"] }
+agent-client-protocol = { version = "=2.0.0", features = ["unstable"] }
aho-corasick = "1.1"
alacritty_terminal = { git = "https://github.com/zed-industries/alacritty", rev = "4c129667ce56611becdc82de6e28218c80e2e88f" }
any_vec = "0.14"
@@ -527,7 +540,9 @@ async-io = "2.6.0"
async-lock = "3.4.2"
async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
async-recursion = "1.0.0"
-async-tar = "0.5.1"
+# `unstable` is required to compile async-tar's Windows symlink support.
+async-std = { version = "1.12", features = ["unstable"] }
+async-tar = "0.6"
async-task = "4.7"
async-trait = "0.1"
async-tungstenite = "0.31.0"
@@ -540,28 +555,36 @@ aws-credential-types = { version = "1.2.8", features = [
aws-sdk-bedrockruntime = { version = "1.112.0", features = [
"behavior-version-latest",
] }
+aws-sigv4 = { version = "1.4.0", features = ["http1"] }
aws-smithy-runtime-api = { version = "1.9.2", features = ["http-1x", "client"] }
aws-smithy-types = { version = "1.3.4", features = ["http-body-1-x"] }
backtrace = "0.3"
base64 = "0.22"
bitflags = "2.6.0"
+block = "0.1"
+block2 = "0.6"
brotli = "8.0.2"
bytes = "1.0"
cargo_metadata = "0.19"
cargo_toml = "0.21"
brush-parser = "0.3"
+cbindgen = { version = "0.28.0", default-features = false }
cfg-if = "1.0.3"
chardetng = "0.1"
chrono = { version = "0.4", features = ["serde"] }
ciborium = "0.2"
circular-buffer = "1.0"
clap = { version = "4.4", features = ["derive", "wrap_help"] }
+clap_complete = { version = "4.4" }
+clap_complete_nushell = { version = "4.4" }
cocoa = "=0.26.0"
cocoa-foundation = "=0.2.0"
const_format = "0.2"
convert_case = "0.11.0"
-core-foundation = "=0.10.0"
+core-foundation = "0.10"
core-foundation-sys = "0.8.6"
+core-graphics = "0.24"
+core-text = "21"
core-video = { version = "0.5.2", features = ["metal"] }
cpal = "0.17"
crash-handler = "0.7"
@@ -584,13 +607,16 @@ dirs = "6.0"
documented = "0.9.1"
dotenvy = "0.15.0"
dunce = "1.0"
-ec4rs = "1.1"
+ec4rs = { version = "1.2", features = ["allow-empty-values"] }
emojis = "0.6.1"
env_logger = "0.11"
encoding_rs = "0.8"
+etagere = "0.2"
exec = "0.3.1"
-fancy-regex = "0.17.0"
+fancy-regex = "0.18.0"
fork = "0.4.0"
+flume = "0.12"
+foreign-types = "0.5"
futures = "0.3.32"
futures-concurrency = "7.7.1"
futures-lite = "1.13"
@@ -611,8 +637,26 @@ http-body = "1.0"
httparse = "1.10"
idna = "1.0"
ignore = "0.4.22"
-image = "0.25.1"
-imara-diff = "0.1.8"
+# image's default features minus "avif", which only adds an encoder (rav1e);
+# decoding AVIF would additionally need the non-default "avif-native" feature.
+image = { version = "0.25.1", default-features = false, features = [
+ "bmp",
+ "dds",
+ "exr",
+ "ff",
+ "gif",
+ "hdr",
+ "ico",
+ "jpeg",
+ "png",
+ "pnm",
+ "qoi",
+ "rayon",
+ "tga",
+ "tiff",
+ "webp",
+] }
+imara-diff = "0.2.0"
indexmap = { version = "2.7.0", features = ["serde"] }
indoc = "2"
inventory = "0.3.19"
@@ -638,6 +682,7 @@ moka = { version = "0.12.10", features = ["sync"] }
nanoid = "0.4"
nbformat = "1.2.0"
nix = "0.29"
+notify-rust = "4"
nucleo = "0.5"
num-format = "0.4.4"
objc = "0.2"
@@ -669,6 +714,7 @@ objc2-foundation = { version = "=0.3.2", default-features = false, features = [
"NSProcessInfo",
"NSRange",
"NSRunLoop",
+ "NSSet",
"NSString",
"NSURL",
"NSUndoManager",
@@ -676,12 +722,14 @@ objc2-foundation = { version = "=0.3.2", default-features = false, features = [
"objc2-core-foundation",
"std",
] }
+objc2-user-notifications = "0.3"
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"
+pathfinder_geometry = "0.5"
pciid-parser = "0.8.0"
pathdiff = "0.2"
percent-encoding = "2.3.2"
@@ -692,6 +740,7 @@ pet-fs = { git = "https://github.com/microsoft/python-environment-tools.git", re
pet-poetry = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "9e61a22af989fe54937bf07c9f9cff1bc53d9056" }
pet-reporter = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "9e61a22af989fe54937bf07c9f9cff1bc53d9056" }
pet-virtualenv = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "9e61a22af989fe54937bf07c9f9cff1bc53d9056" }
+piper = "0.2"
portable-pty = "0.9.0"
postage = { version = "0.5", features = ["futures-traits"] }
pretty_assertions = { version = "1.3.0", features = ["unstable"] }
@@ -710,6 +759,7 @@ quick-xml = "0.38"
quote = "1.0.9"
rand = "0.9"
rayon = "1.8"
+raw-window-handle = "0.6"
regex = "1.5"
# 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 = [
@@ -721,17 +771,25 @@ reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662
"socks",
"stream",
], package = "zed-reqwest", version = "0.12.15-zed" }
+resvg = { version = "0.46.0", default-features = false, features = [
+ "text",
+ "system-fonts",
+ "memmap-fonts",
+ "raster-images",
+] }
rsa = "0.9.6"
runtimelib = { version = "1.4.0", default-features = false, features = [
"async-dispatcher-runtime", "aws-lc-rs"
] }
rust-embed = { version = "8.11", features = ["include-exclude", "debug-embed"] }
rustc-hash = "2.1.0"
+rustix = { version = "1.1", features = ["fs"] }
rustls = { version = "0.23.26" }
rustls-platform-verifier = "0.5.0"
# 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"] }
+seccompiler = "0.5"
semver = { version = "1.0", features = ["serde"] }
serde = { version = "1.0.221", features = ["derive", "rc"] }
serde_json = { version = "1.0.144", features = ["preserve_order", "raw_value"] }
@@ -755,6 +813,7 @@ stacksafe = "0.1"
streaming-iterator = "0.1"
strsim = "0.11"
strum = { version = "0.27.2", features = ["derive"] }
+swash = "0.2.6"
syn = { version = "2.0.101", features = ["full", "extra-traits", "visit-mut"] }
sys-locale = "0.3.1"
sysinfo = "0.37.0"
@@ -771,10 +830,6 @@ time = { version = "0.3", features = [
] }
tiny_http = "0.12"
tokio = { version = "1" }
-tokio-socks = { version = "0.5.2", default-features = false, features = [
- "futures-io",
- "tokio",
-] }
toml = "0.8"
toml_edit = { version = "0.22", default-features = false, features = [
"display",
@@ -782,7 +837,7 @@ toml_edit = { version = "0.22", default-features = false, features = [
"serde",
] }
tower-http = "0.4.4"
-tree-sitter = { version = "0.26.9", features = ["wasm"] }
+tree-sitter = "0.26.9"
tree-sitter-bash = "0.25.1"
tree-sitter-c = "0.24.1"
tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "5cb9b693cfd7bfacab1d9ff4acac1a4150700609" }
@@ -798,7 +853,7 @@ tree-sitter-heex = { git = "https://github.com/zed-industries/tree-sitter-heex",
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-md = { git = "https://github.com/zed-industries/tree-sitter-markdown", rev = "b596e737286780d7bfa9fcddceaeeb754574b352" } # fork of 9a23c1a with serialize() buffer-overflow fix; https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/243
tree-sitter-python = "0.25"
tree-sitter-regex = "0.24"
tree-sitter-ruby = "0.23"
@@ -807,17 +862,21 @@ tree-sitter-typescript = { git = "https://github.com/zed-industries/tree-sitter-
tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a" }
tracing = "0.1.40"
unicase = "2.6"
+unicode-bidi = { version = "0.3.18", default-features = false, features = [
+ "hardcoded-data",
+] }
unicode-script = "0.5.7"
unicode-segmentation = "1.10"
unicode-width = "0.2"
unindent = "0.2.0"
url = "2.2"
urlencoding = "2.1.2"
+usvg = { version = "0.46.0", default-features = false }
uuid = { version = "1.1.2", features = ["v4", "v5", "v7", "serde"] }
vte = { version = "0.15.0", features = ["ansi"] }
walkdir = "2.5"
-wasm-encoder = "0.221"
-wasmparser = "0.221"
+wasm-encoder = "0.252"
+wasmparser = "0.252"
wasmtime = { version = "36", default-features = false, features = [
"async",
"demangle",
@@ -831,24 +890,28 @@ wasmtime-wasi = "36"
wax = "0.7"
which = "6.0.0"
wasm-bindgen = "0.2.120"
+wasm-bindgen-futures = "0.4"
+js-sys = "0.3"
+console_error_panic_hook = "0.1.7"
web-time = "1.1.0"
webrtc-sys = "0.3.23"
-wgpu = { git = "https://github.com/zed-industries/wgpu.git", rev = "357a0c56e0070480ad9daea5d2eaa83150b79e88" }
+wgpu = "29.0.4"
windows-core = "0.61"
yaml-rust2 = "0.8"
-yawc = "0.2.5"
+yawc = { git = "https://github.com/zed-industries/yawc", rev = "71a452f551cac178367eaac5d7418a09afa1f3a2", version = "0.3.3" }
zeroize = "1.8"
zstd = "0.11"
-
[workspace.dependencies.windows]
version = "0.61"
features = [
+ "Data_Xml_Dom",
"Foundation_Numerics",
"Globalization_DateTimeFormatting",
"Storage_Search",
"Storage_Streams",
"System_Threading",
+ "UI_Notifications",
"UI_ViewManagement",
"Wdk_System_SystemServices",
"Win32_Foundation",
@@ -870,6 +933,7 @@ features = [
"Win32_Security_Credentials",
"Win32_Security_Cryptography",
"Win32_Storage_FileSystem",
+ "Win32_Storage_Packaging_Appx",
"Win32_System_Com",
"Win32_System_Com_StructuredStorage",
"Win32_System_Console",
@@ -905,11 +969,11 @@ async-process = { git = "https://github.com/zed-industries/async-process.git", r
async-task = { git = "https://github.com/smol-rs/async-task.git", rev = "b4486cd71e4e94fbda54ce6302444de14f4d190e" }
windows-capture = { git = "https://github.com/zed-industries/windows-capture.git", rev = "f0d6c1b6691db75461b732f6d5ff56eed002eeb9" }
calloop = { git = "https://github.com/zed-industries/calloop" }
-livekit = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "c3a55bbc207008f1ca3474b6037fdd3c443cad0f" }
-libwebrtc = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "c3a55bbc207008f1ca3474b6037fdd3c443cad0f" }
-notify = { git = "https://github.com/zed-industries/notify", rev = "faecbc33db4f59313e5225ef766bfd9e54a54cfd" }
-notify-types = { git = "https://github.com/zed-industries/notify", rev = "faecbc33db4f59313e5225ef766bfd9e54a54cfd" }
-webrtc-sys = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "c3a55bbc207008f1ca3474b6037fdd3c443cad0f" }
+livekit = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "d0e27be0cdad89eadab3e36207cda0a2b6e359ee" }
+libwebrtc = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "d0e27be0cdad89eadab3e36207cda0a2b6e359ee" }
+notify = { git = "https://github.com/zed-industries/notify", rev = "0890bbb8ca40a4b5d1f67031698dd7918b37d991" }
+notify-types = { git = "https://github.com/zed-industries/notify", rev = "0890bbb8ca40a4b5d1f67031698dd7918b37d991" }
+webrtc-sys = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "d0e27be0cdad89eadab3e36207cda0a2b6e359ee" }
[profile.dev]
split-debuginfo = "unpacked"
@@ -969,6 +1033,7 @@ edit_prediction_ui = { codegen-units = 1 }
install_cli = { codegen-units = 1 }
journal = { codegen-units = 1 }
json_schema_store = { codegen-units = 1 }
+llama_cpp = { codegen-units = 1 }
lmstudio = { codegen-units = 1 }
menu = { codegen-units = 1 }
notifications = { codegen-units = 1 }
@@ -1057,3 +1122,10 @@ ignored = [
"documented",
"sea-orm-macros",
]
+
+# Dylint discovers our custom lints through this entry, so `cargo dylint --all`
+# runs them without a `--path` argument. The `lints` package pins its own
+# nightly toolchain (see `tooling/lints/rust-toolchain.toml`) and is kept out of
+# this workspace on purpose.
+[workspace.metadata.dylint]
+libraries = [{ path = "tooling/lints" }]
diff --git a/Procfile.all b/Procfile.all
deleted file mode 100644
index 264b4f6afc3d6f..00000000000000
--- a/Procfile.all
+++ /dev/null
@@ -1,6 +0,0 @@
-collab: RUST_LOG=${RUST_LOG:-info} cargo run --package=collab serve all
-cloud: cd ../cloud; cargo make dev
-dashboard: cd ../cloud/packages/dashboard; pnpm dev
-website: cd ../zed.dev; pnpm dev --port=3000
-livekit: livekit-server --dev
-blob_store: ./script/run-local-minio
diff --git a/README.md b/README.md
index 9f641fb3841909..84f536569a32ce 100644
--- a/README.md
+++ b/README.md
@@ -46,3 +46,4 @@ Zed is developed by **Zed Industries, Inc.**, a for-profit company.
If you’d like to financially support the project, you can do so via GitHub Sponsors.
Sponsorships go directly to Zed Industries and are used as general company revenue.
There are no perks or entitlements associated with sponsorship.
+
diff --git a/assets/icons/ai_anthropic.svg b/assets/icons/ai_anthropic.svg
index 12d731fb0b4438..91cc074db3083d 100644
--- a/assets/icons/ai_anthropic.svg
+++ b/assets/icons/ai_anthropic.svg
@@ -1,11 +1,4 @@
diff --git a/assets/icons/ai_edit.svg b/assets/icons/ai_edit.svg
index 2f93ab9fd931bc..ed19c2a5255ca8 100644
--- a/assets/icons/ai_edit.svg
+++ b/assets/icons/ai_edit.svg
@@ -1,10 +1,10 @@
diff --git a/assets/icons/ai_llama_cpp.svg b/assets/icons/ai_llama_cpp.svg
new file mode 100644
index 00000000000000..310ec3793a5c80
--- /dev/null
+++ b/assets/icons/ai_llama_cpp.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/ai_open_ai_compat.svg b/assets/icons/ai_open_ai_compat.svg
index f6557caac33048..825d6885ef80e5 100644
--- a/assets/icons/ai_open_ai_compat.svg
+++ b/assets/icons/ai_open_ai_compat.svg
@@ -1,4 +1,4 @@
diff --git a/assets/icons/archive.svg b/assets/icons/archive.svg
index 9ffe3f39d27c7f..95a68f03a0f26e 100644
--- a/assets/icons/archive.svg
+++ b/assets/icons/archive.svg
@@ -1,5 +1,5 @@
diff --git a/assets/icons/bolt_outlined.svg b/assets/icons/bolt_outlined.svg
index ca9c75fbfd64be..935f24bd2fbbd0 100644
--- a/assets/icons/bolt_outlined.svg
+++ b/assets/icons/bolt_outlined.svg
@@ -1,3 +1,4 @@
diff --git a/assets/icons/check_circle.svg b/assets/icons/check_circle.svg
deleted file mode 100644
index f9b88c4ce1451e..00000000000000
--- a/assets/icons/check_circle.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/assets/icons/circle_check.svg b/assets/icons/circle_check.svg
deleted file mode 100644
index 8950aa7a0e1126..00000000000000
--- a/assets/icons/circle_check.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/assets/icons/copilot.svg b/assets/icons/copilot.svg
index 2584cd631006c1..6dc28b671a8bb8 100644
--- a/assets/icons/copilot.svg
+++ b/assets/icons/copilot.svg
@@ -1,9 +1,11 @@
diff --git a/assets/icons/debug.svg b/assets/icons/debug.svg
index 6423a2b090c1b8..ec84706b13f177 100644
--- a/assets/icons/debug.svg
+++ b/assets/icons/debug.svg
@@ -1,12 +1,13 @@
diff --git a/assets/icons/diff_split.svg b/assets/icons/diff_split.svg
index dcafeb8df5c28b..ebcd48cbb54fed 100644
--- a/assets/icons/diff_split.svg
+++ b/assets/icons/diff_split.svg
@@ -1,4 +1,5 @@
diff --git a/assets/icons/diff_split_auto.svg b/assets/icons/diff_split_auto.svg
index f9dd7076be75aa..e5744dc56114a2 100644
--- a/assets/icons/diff_split_auto.svg
+++ b/assets/icons/diff_split_auto.svg
@@ -1,7 +1,7 @@
diff --git a/assets/icons/diff_unified.svg b/assets/icons/diff_unified.svg
index 28735c16f68215..61cc4bc0811299 100644
--- a/assets/icons/diff_unified.svg
+++ b/assets/icons/diff_unified.svg
@@ -1,4 +1,5 @@
diff --git a/assets/icons/fast_forward.svg b/assets/icons/fast_forward.svg
index 240bc65aca3558..f5d6cbb5052e9b 100644
--- a/assets/icons/fast_forward.svg
+++ b/assets/icons/fast_forward.svg
@@ -1,4 +1,6 @@
diff --git a/assets/icons/fast_forward_off.svg b/assets/icons/fast_forward_off.svg
index 8ea7c41c6582b0..218820dd47019b 100644
--- a/assets/icons/fast_forward_off.svg
+++ b/assets/icons/fast_forward_off.svg
@@ -1,5 +1,5 @@
diff --git a/assets/icons/file.svg b/assets/icons/file.svg
index 60cf2537d9e673..037ade6827d2c2 100644
--- a/assets/icons/file.svg
+++ b/assets/icons/file.svg
@@ -1 +1,4 @@
-
+
diff --git a/assets/icons/file_code.svg b/assets/icons/file_code.svg
index 548d5a153ba243..b07f1c36ebc9a5 100644
--- a/assets/icons/file_code.svg
+++ b/assets/icons/file_code.svg
@@ -1 +1,4 @@
-
+
diff --git a/assets/icons/file_diff.svg b/assets/icons/file_diff.svg
index 193dd7392ff1ff..010a68b4ec6cc9 100644
--- a/assets/icons/file_diff.svg
+++ b/assets/icons/file_diff.svg
@@ -1 +1,4 @@
-
+
diff --git a/assets/icons/file_icons/archive.svg b/assets/icons/file_icons/archive.svg
index fd3780164d1fb1..95a68f03a0f26e 100644
--- a/assets/icons/file_icons/archive.svg
+++ b/assets/icons/file_icons/archive.svg
@@ -1,4 +1,5 @@
diff --git a/assets/icons/file_icons/folder.svg b/assets/icons/file_icons/folder.svg
index e40613000da5ac..3fa7b66a8e396e 100644
--- a/assets/icons/file_icons/folder.svg
+++ b/assets/icons/file_icons/folder.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/file_icons/folder_open.svg b/assets/icons/file_icons/folder_open.svg
index 55231fb6abdb87..68e388212350b0 100644
--- a/assets/icons/file_icons/folder_open.svg
+++ b/assets/icons/file_icons/folder_open.svg
@@ -1,4 +1,5 @@
diff --git a/assets/icons/file_icons/lock.svg b/assets/icons/file_icons/lock.svg
index 10ae33869a6107..4d21d5db0731dc 100644
--- a/assets/icons/file_icons/lock.svg
+++ b/assets/icons/file_icons/lock.svg
@@ -1,4 +1,6 @@
diff --git a/assets/icons/file_icons/magnifying_glass.svg b/assets/icons/file_icons/magnifying_glass.svg
index d0440d905c35bc..10f84017cd9823 100644
--- a/assets/icons/file_icons/magnifying_glass.svg
+++ b/assets/icons/file_icons/magnifying_glass.svg
@@ -1,3 +1,4 @@
diff --git a/assets/icons/file_ignored.svg b/assets/icons/file_ignored.svg
new file mode 100644
index 00000000000000..e15bf125db9c59
--- /dev/null
+++ b/assets/icons/file_ignored.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/file_multiple.svg b/assets/icons/file_multiple.svg
new file mode 100644
index 00000000000000..739885eb65ed69
--- /dev/null
+++ b/assets/icons/file_multiple.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/file_text_filled.svg b/assets/icons/file_text_filled.svg
index 15c81cca620917..91a4202ffa99fa 100644
--- a/assets/icons/file_text_filled.svg
+++ b/assets/icons/file_text_filled.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/file_text_outlined.svg b/assets/icons/file_text_outlined.svg
index d2e8897251e31b..f602bd0492eac8 100644
--- a/assets/icons/file_text_outlined.svg
+++ b/assets/icons/file_text_outlined.svg
@@ -1,6 +1,6 @@
diff --git a/assets/icons/filter.svg b/assets/icons/filter.svg
index 4aa14e93c003d0..1ec7cbdb066d33 100644
--- a/assets/icons/filter.svg
+++ b/assets/icons/filter.svg
@@ -1,3 +1,10 @@
diff --git a/assets/icons/folder.svg b/assets/icons/folder.svg
index 35f4c1f8acf679..3fa7b66a8e396e 100644
--- a/assets/icons/folder.svg
+++ b/assets/icons/folder.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/folder_add.svg b/assets/icons/folder_add.svg
new file mode 100644
index 00000000000000..296a1375217cd8
--- /dev/null
+++ b/assets/icons/folder_add.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/folder_include.svg b/assets/icons/folder_include.svg
new file mode 100644
index 00000000000000..69d67aa2cc1285
--- /dev/null
+++ b/assets/icons/folder_include.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/folder_open.svg b/assets/icons/folder_open.svg
index 55231fb6abdb87..68e388212350b0 100644
--- a/assets/icons/folder_open.svg
+++ b/assets/icons/folder_open.svg
@@ -1,4 +1,5 @@
diff --git a/assets/icons/folder_open_add.svg b/assets/icons/folder_open_add.svg
deleted file mode 100644
index d5ebbdaa8b0800..00000000000000
--- a/assets/icons/folder_open_add.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/assets/icons/folder_search.svg b/assets/icons/folder_search.svg
index 207ea5c10e8239..899cb35bd22c49 100644
--- a/assets/icons/folder_search.svg
+++ b/assets/icons/folder_search.svg
@@ -1,5 +1,5 @@
diff --git a/assets/icons/folder_share.svg b/assets/icons/folder_share.svg
index 09a232a6898896..898af2397c750e 100644
--- a/assets/icons/folder_share.svg
+++ b/assets/icons/folder_share.svg
@@ -1,5 +1,5 @@
diff --git a/assets/icons/folder_shared.svg b/assets/icons/folder_shared.svg
index c511390305c5eb..897bef603a182a 100644
--- a/assets/icons/folder_shared.svg
+++ b/assets/icons/folder_shared.svg
@@ -1,5 +1,6 @@
diff --git a/assets/icons/forward_arrow_up.svg b/assets/icons/forward_arrow_up.svg
index b4abcb2083206f..e196d61892713a 100644
--- a/assets/icons/forward_arrow_up.svg
+++ b/assets/icons/forward_arrow_up.svg
@@ -1,4 +1,4 @@
diff --git a/assets/icons/generic_close.svg b/assets/icons/generic_close.svg
index 0fd213daf9c81f..2326c2fcd56cfd 100644
--- a/assets/icons/generic_close.svg
+++ b/assets/icons/generic_close.svg
@@ -1,4 +1,4 @@
diff --git a/assets/icons/generic_maximize.svg b/assets/icons/generic_maximize.svg
index f1d7da44efa954..a7db33feb62634 100644
--- a/assets/icons/generic_maximize.svg
+++ b/assets/icons/generic_maximize.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/generic_minimize.svg b/assets/icons/generic_minimize.svg
index 4b43cde2743e26..b39b215620f391 100644
--- a/assets/icons/generic_minimize.svg
+++ b/assets/icons/generic_minimize.svg
@@ -1,3 +1,3 @@
diff --git a/assets/icons/generic_restore.svg b/assets/icons/generic_restore.svg
index d8a3d72bcd001a..c5cbcf3fd72513 100644
--- a/assets/icons/generic_restore.svg
+++ b/assets/icons/generic_restore.svg
@@ -1,4 +1,4 @@
diff --git a/assets/icons/git_worktree.svg b/assets/icons/git_worktree.svg
index deb7172584fb43..af98f89591f56e 100644
--- a/assets/icons/git_worktree.svg
+++ b/assets/icons/git_worktree.svg
@@ -1,7 +1,7 @@
diff --git a/assets/icons/library.svg b/assets/icons/library.svg
deleted file mode 100644
index fc7f5afcd2fa45..00000000000000
--- a/assets/icons/library.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/assets/icons/linux.svg b/assets/icons/linux.svg
index fc76742a3f2366..9b44656c05c9f8 100644
--- a/assets/icons/linux.svg
+++ b/assets/icons/linux.svg
@@ -1,10 +1,15 @@