Closes #22657 Closes #37863 # Background Several users have noted that the terminal shipped with Zed on Windows is either misbehaving or missing several features including lack of consistent clearing behaviour. After some investigation which included digging into the Microsoft Terminal project and VSCode editor, it turns out that the pseudoconsole provided by Windows OS is severely outdated which manifests itself in problems such as lack of clearing behaviour, etc. Interestingly however, neither MS Terminal nor VSCode exhibit this limitation so the question was why. Enter custom `conpty.dll` and `OpenConsole.exe` runtime. These are updated, developed in MS Terminal tree subprojects that aim to replace native Windows API as well as augment the `conhost.exe` process that runs by default in Windows. They also fix all the woes we had with the terminal on Windows (there is a chance that ctrl-c behaviour is also fixed with these, but still need to double check that this is indeed the case). This PR ensures that Zed also benefits from the update pseudoconsole API. # Proposed approach It is possible to fork MS Terminal and instrument the necessary subprojects for Rust-awareness (using `cc-rs` or otherwise to compile the C++ code and then embed it in Rust-produced binaries for easier inclusion in projects) but it comes at a cost of added complexity, maintenance burden, etc. An alternative approach was proposed by @reflectronic to download the binary from the official Nuget repo and bundle it for release/local use. This PR aims to do just that. There are two bits to this PR: 1. ~~when building Zed locally, and more specifically, when the `zed` crate is being built, we will strive to download and unpack the binaries into `OUT_DIR` provided by `cargo`. We will then set `ZED_CONPTY_INSTALL_PATH=${OUT_DIR}/conpty` and use it at runtime in Zed binary to tweak the loader's search path with that additional path. This effectively ensures that Zed built from source on Windows has full terminal support.~~ EDIT: after several discussions offline, we've decided that keeping it minimal will serve us best, meaning: when developing locally it is up to the developer of Zed to install `conpty.dll` and put it in the loader's search path. 2. when bundling Windows release, we will download and unpack the nuget package into Zed's bundle which will ensure it is installed in the same directory as Zed by the installer. **Note** I realise that 1. may actually not be needed - instead we could leave that bit for the user who wants to run Zed from source to ensure that they have `conpty.dll` in the loader's search path. I'd love to hear opinions on this! Release Notes: - N/A --------- Co-authored-by: Cole Miller <cole@zed.dev>
912 lines
30 KiB
TOML
912 lines
30 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/acp_tools",
|
|
"crates/acp_thread",
|
|
"crates/action_log",
|
|
"crates/activity_indicator",
|
|
"crates/agent",
|
|
"crates/agent2",
|
|
"crates/agent_servers",
|
|
"crates/agent_settings",
|
|
"crates/agent_ui",
|
|
"crates/ai_onboarding",
|
|
"crates/anthropic",
|
|
"crates/askpass",
|
|
"crates/assets",
|
|
"crates/assistant_context",
|
|
"crates/assistant_slash_command",
|
|
"crates/assistant_slash_commands",
|
|
"crates/assistant_tool",
|
|
"crates/assistant_tools",
|
|
"crates/audio",
|
|
"crates/auto_update",
|
|
"crates/auto_update_helper",
|
|
"crates/auto_update_ui",
|
|
"crates/aws_http_client",
|
|
"crates/bedrock",
|
|
"crates/breadcrumbs",
|
|
"crates/buffer_diff",
|
|
"crates/call",
|
|
"crates/channel",
|
|
"crates/cli",
|
|
"crates/client",
|
|
"crates/clock",
|
|
"crates/cloud_api_client",
|
|
"crates/cloud_api_types",
|
|
"crates/cloud_llm_client",
|
|
"crates/cloud_zeta2_prompt",
|
|
"crates/collab",
|
|
"crates/collab_ui",
|
|
"crates/collections",
|
|
"crates/command_palette",
|
|
"crates/command_palette_hooks",
|
|
"crates/component",
|
|
"crates/context_server",
|
|
"crates/copilot",
|
|
"crates/crashes",
|
|
"crates/credentials_provider",
|
|
"crates/dap",
|
|
"crates/dap_adapters",
|
|
"crates/db",
|
|
"crates/debug_adapter_extension",
|
|
"crates/debugger_tools",
|
|
"crates/debugger_ui",
|
|
"crates/deepseek",
|
|
"crates/denoise",
|
|
"crates/diagnostics",
|
|
"crates/docs_preprocessor",
|
|
"crates/edit_prediction",
|
|
"crates/edit_prediction_button",
|
|
"crates/edit_prediction_context",
|
|
"crates/zeta2_tools",
|
|
"crates/editor",
|
|
"crates/eval",
|
|
"crates/explorer_command_injector",
|
|
"crates/extension",
|
|
"crates/extension_api",
|
|
"crates/extension_cli",
|
|
"crates/extension_host",
|
|
"crates/extensions_ui",
|
|
"crates/feature_flags",
|
|
"crates/feedback",
|
|
"crates/file_finder",
|
|
"crates/file_icons",
|
|
"crates/fs",
|
|
"crates/fsevent",
|
|
"crates/fuzzy",
|
|
"crates/git",
|
|
"crates/git_hosting_providers",
|
|
"crates/git_ui",
|
|
"crates/go_to_line",
|
|
"crates/google_ai",
|
|
"crates/gpui",
|
|
"crates/gpui_macros",
|
|
"crates/gpui_tokio",
|
|
"crates/html_to_markdown",
|
|
"crates/http_client",
|
|
"crates/http_client_tls",
|
|
"crates/icons",
|
|
"crates/image_viewer",
|
|
"crates/inspector_ui",
|
|
"crates/install_cli",
|
|
"crates/journal",
|
|
"crates/json_schema_store",
|
|
"crates/keymap_editor",
|
|
"crates/language",
|
|
"crates/language_extension",
|
|
"crates/language_model",
|
|
"crates/language_models",
|
|
"crates/language_onboarding",
|
|
"crates/language_selector",
|
|
"crates/language_tools",
|
|
"crates/languages",
|
|
"crates/line_ending_selector",
|
|
"crates/livekit_api",
|
|
"crates/livekit_client",
|
|
"crates/lmstudio",
|
|
"crates/lsp",
|
|
"crates/markdown",
|
|
"crates/markdown_preview",
|
|
"crates/media",
|
|
"crates/menu",
|
|
"crates/migrator",
|
|
"crates/mistral",
|
|
"crates/multi_buffer",
|
|
"crates/nc",
|
|
"crates/net",
|
|
"crates/node_runtime",
|
|
"crates/notifications",
|
|
"crates/ollama",
|
|
"crates/onboarding",
|
|
"crates/open_ai",
|
|
"crates/open_router",
|
|
"crates/outline",
|
|
"crates/outline_panel",
|
|
"crates/panel",
|
|
"crates/paths",
|
|
"crates/picker",
|
|
"crates/prettier",
|
|
"crates/project",
|
|
"crates/project_panel",
|
|
"crates/project_symbols",
|
|
"crates/prompt_store",
|
|
"crates/proto",
|
|
"crates/recent_projects",
|
|
"crates/refineable",
|
|
"crates/refineable/derive_refineable",
|
|
"crates/release_channel",
|
|
"crates/scheduler",
|
|
"crates/remote",
|
|
"crates/remote_server",
|
|
"crates/repl",
|
|
"crates/reqwest_client",
|
|
"crates/rich_text",
|
|
"crates/rope",
|
|
"crates/rpc",
|
|
"crates/rules_library",
|
|
"crates/schema_generator",
|
|
"crates/search",
|
|
"crates/semantic_version",
|
|
"crates/session",
|
|
"crates/settings",
|
|
"crates/settings_macros",
|
|
"crates/settings_profile_selector",
|
|
"crates/settings_ui",
|
|
"crates/snippet",
|
|
"crates/snippet_provider",
|
|
"crates/snippets_ui",
|
|
"crates/sqlez",
|
|
"crates/sqlez_macros",
|
|
"crates/story",
|
|
"crates/storybook",
|
|
"crates/streaming_diff",
|
|
"crates/sum_tree",
|
|
"crates/supermaven",
|
|
"crates/supermaven_api",
|
|
"crates/svg_preview",
|
|
"crates/system_specs",
|
|
"crates/tab_switcher",
|
|
"crates/task",
|
|
"crates/tasks_ui",
|
|
"crates/telemetry",
|
|
"crates/telemetry_events",
|
|
"crates/terminal",
|
|
"crates/terminal_view",
|
|
"crates/text",
|
|
"crates/theme",
|
|
"crates/theme_extension",
|
|
"crates/theme_importer",
|
|
"crates/theme_selector",
|
|
"crates/time_format",
|
|
"crates/title_bar",
|
|
"crates/toolchain_selector",
|
|
"crates/ui",
|
|
"crates/ui_input",
|
|
"crates/ui_macros",
|
|
"crates/ui_prompt",
|
|
"crates/util",
|
|
"crates/util_macros",
|
|
"crates/vercel",
|
|
"crates/vim",
|
|
"crates/vim_mode_setting",
|
|
"crates/watch",
|
|
"crates/web_search",
|
|
"crates/web_search_providers",
|
|
"crates/workspace",
|
|
"crates/worktree",
|
|
"crates/x_ai",
|
|
"crates/zed",
|
|
"crates/zed_actions",
|
|
"crates/zed_env_vars",
|
|
"crates/zeta",
|
|
"crates/zeta2",
|
|
"crates/zeta_cli",
|
|
"crates/zlog",
|
|
"crates/zlog_settings",
|
|
|
|
#
|
|
# Extensions
|
|
#
|
|
|
|
"extensions/glsl",
|
|
"extensions/html",
|
|
"extensions/proto",
|
|
"extensions/ruff",
|
|
"extensions/slash-commands-example",
|
|
"extensions/snippets",
|
|
"extensions/test-extension",
|
|
|
|
#
|
|
# Tooling
|
|
#
|
|
|
|
"tooling/perf",
|
|
"tooling/workspace-hack",
|
|
"tooling/xtask",
|
|
]
|
|
default-members = ["crates/zed"]
|
|
|
|
[workspace.package]
|
|
publish = false
|
|
edition = "2024"
|
|
|
|
[workspace.dependencies]
|
|
|
|
#
|
|
# Workspace member crates
|
|
#
|
|
|
|
acp_tools = { path = "crates/acp_tools" }
|
|
acp_thread = { path = "crates/acp_thread" }
|
|
action_log = { path = "crates/action_log" }
|
|
agent = { path = "crates/agent" }
|
|
agent2 = { path = "crates/agent2" }
|
|
activity_indicator = { path = "crates/activity_indicator" }
|
|
agent_ui = { path = "crates/agent_ui" }
|
|
agent_settings = { path = "crates/agent_settings" }
|
|
agent_servers = { path = "crates/agent_servers" }
|
|
ai = { path = "crates/ai" }
|
|
ai_onboarding = { path = "crates/ai_onboarding" }
|
|
anthropic = { path = "crates/anthropic" }
|
|
askpass = { path = "crates/askpass" }
|
|
assets = { path = "crates/assets" }
|
|
assistant_context = { path = "crates/assistant_context" }
|
|
assistant_slash_command = { path = "crates/assistant_slash_command" }
|
|
assistant_slash_commands = { path = "crates/assistant_slash_commands" }
|
|
assistant_tool = { path = "crates/assistant_tool" }
|
|
assistant_tools = { path = "crates/assistant_tools" }
|
|
audio = { path = "crates/audio" }
|
|
auto_update = { path = "crates/auto_update" }
|
|
auto_update_helper = { path = "crates/auto_update_helper" }
|
|
auto_update_ui = { path = "crates/auto_update_ui" }
|
|
aws_http_client = { path = "crates/aws_http_client" }
|
|
bedrock = { path = "crates/bedrock" }
|
|
breadcrumbs = { path = "crates/breadcrumbs" }
|
|
buffer_diff = { path = "crates/buffer_diff" }
|
|
call = { path = "crates/call" }
|
|
channel = { path = "crates/channel" }
|
|
cli = { path = "crates/cli" }
|
|
client = { path = "crates/client" }
|
|
clock = { path = "crates/clock" }
|
|
cloud_api_client = { path = "crates/cloud_api_client" }
|
|
cloud_api_types = { path = "crates/cloud_api_types" }
|
|
cloud_llm_client = { path = "crates/cloud_llm_client" }
|
|
cloud_zeta2_prompt = { path = "crates/cloud_zeta2_prompt" }
|
|
collab = { path = "crates/collab" }
|
|
collab_ui = { path = "crates/collab_ui" }
|
|
collections = { path = "crates/collections" }
|
|
command_palette = { path = "crates/command_palette" }
|
|
command_palette_hooks = { path = "crates/command_palette_hooks" }
|
|
component = { path = "crates/component" }
|
|
context_server = { path = "crates/context_server" }
|
|
copilot = { path = "crates/copilot" }
|
|
crashes = { path = "crates/crashes" }
|
|
credentials_provider = { path = "crates/credentials_provider" }
|
|
crossbeam = "0.8.4"
|
|
dap = { path = "crates/dap" }
|
|
dap_adapters = { path = "crates/dap_adapters" }
|
|
db = { path = "crates/db" }
|
|
debug_adapter_extension = { path = "crates/debug_adapter_extension" }
|
|
debugger_tools = { path = "crates/debugger_tools" }
|
|
debugger_ui = { path = "crates/debugger_ui" }
|
|
deepseek = { path = "crates/deepseek" }
|
|
diagnostics = { path = "crates/diagnostics" }
|
|
editor = { path = "crates/editor" }
|
|
extension = { path = "crates/extension" }
|
|
extension_host = { path = "crates/extension_host" }
|
|
extensions_ui = { path = "crates/extensions_ui" }
|
|
feature_flags = { path = "crates/feature_flags" }
|
|
feedback = { path = "crates/feedback" }
|
|
file_finder = { path = "crates/file_finder" }
|
|
file_icons = { path = "crates/file_icons" }
|
|
fs = { path = "crates/fs" }
|
|
fsevent = { path = "crates/fsevent" }
|
|
fuzzy = { path = "crates/fuzzy" }
|
|
git = { path = "crates/git" }
|
|
git_hosting_providers = { path = "crates/git_hosting_providers" }
|
|
git_ui = { path = "crates/git_ui" }
|
|
go_to_line = { path = "crates/go_to_line" }
|
|
google_ai = { path = "crates/google_ai" }
|
|
gpui = { path = "crates/gpui", default-features = false }
|
|
gpui_macros = { path = "crates/gpui_macros" }
|
|
gpui_tokio = { path = "crates/gpui_tokio" }
|
|
html_to_markdown = { path = "crates/html_to_markdown" }
|
|
http_client = { path = "crates/http_client" }
|
|
http_client_tls = { path = "crates/http_client_tls" }
|
|
icons = { path = "crates/icons" }
|
|
image_viewer = { path = "crates/image_viewer" }
|
|
edit_prediction = { path = "crates/edit_prediction" }
|
|
edit_prediction_button = { path = "crates/edit_prediction_button" }
|
|
edit_prediction_context = { path = "crates/edit_prediction_context" }
|
|
zeta2_tools = { path = "crates/zeta2_tools" }
|
|
inspector_ui = { path = "crates/inspector_ui" }
|
|
install_cli = { path = "crates/install_cli" }
|
|
journal = { path = "crates/journal" }
|
|
json_schema_store = { path = "crates/json_schema_store" }
|
|
keymap_editor = { path = "crates/keymap_editor" }
|
|
language = { path = "crates/language" }
|
|
language_extension = { path = "crates/language_extension" }
|
|
language_model = { path = "crates/language_model" }
|
|
language_models = { path = "crates/language_models" }
|
|
language_onboarding = { path = "crates/language_onboarding" }
|
|
language_selector = { path = "crates/language_selector" }
|
|
language_tools = { path = "crates/language_tools" }
|
|
languages = { path = "crates/languages" }
|
|
line_ending_selector = { path = "crates/line_ending_selector" }
|
|
livekit_api = { path = "crates/livekit_api" }
|
|
livekit_client = { path = "crates/livekit_client" }
|
|
lmstudio = { path = "crates/lmstudio" }
|
|
lsp = { path = "crates/lsp" }
|
|
markdown = { path = "crates/markdown" }
|
|
markdown_preview = { path = "crates/markdown_preview" }
|
|
svg_preview = { path = "crates/svg_preview" }
|
|
media = { path = "crates/media" }
|
|
menu = { path = "crates/menu" }
|
|
migrator = { path = "crates/migrator" }
|
|
mistral = { path = "crates/mistral" }
|
|
multi_buffer = { path = "crates/multi_buffer" }
|
|
nc = { path = "crates/nc" }
|
|
net = { path = "crates/net" }
|
|
node_runtime = { path = "crates/node_runtime" }
|
|
notifications = { path = "crates/notifications" }
|
|
ollama = { path = "crates/ollama" }
|
|
onboarding = { path = "crates/onboarding" }
|
|
open_ai = { path = "crates/open_ai" }
|
|
open_router = { path = "crates/open_router", features = ["schemars"] }
|
|
outline = { path = "crates/outline" }
|
|
outline_panel = { path = "crates/outline_panel" }
|
|
panel = { path = "crates/panel" }
|
|
paths = { path = "crates/paths" }
|
|
perf = { path = "tooling/perf" }
|
|
picker = { path = "crates/picker" }
|
|
plugin = { path = "crates/plugin" }
|
|
plugin_macros = { path = "crates/plugin_macros" }
|
|
prettier = { path = "crates/prettier" }
|
|
settings_profile_selector = { path = "crates/settings_profile_selector" }
|
|
project = { path = "crates/project" }
|
|
project_panel = { path = "crates/project_panel" }
|
|
project_symbols = { path = "crates/project_symbols" }
|
|
prompt_store = { path = "crates/prompt_store" }
|
|
proto = { path = "crates/proto" }
|
|
recent_projects = { path = "crates/recent_projects" }
|
|
refineable = { path = "crates/refineable" }
|
|
release_channel = { path = "crates/release_channel" }
|
|
scheduler = { path = "crates/scheduler" }
|
|
remote = { path = "crates/remote" }
|
|
remote_server = { path = "crates/remote_server" }
|
|
repl = { path = "crates/repl" }
|
|
reqwest_client = { path = "crates/reqwest_client" }
|
|
rich_text = { path = "crates/rich_text" }
|
|
rodio = { git = "https://github.com/RustAudio/rodio" }
|
|
rope = { path = "crates/rope" }
|
|
rpc = { path = "crates/rpc" }
|
|
rules_library = { path = "crates/rules_library" }
|
|
search = { path = "crates/search" }
|
|
semantic_version = { path = "crates/semantic_version" }
|
|
session = { path = "crates/session" }
|
|
settings = { path = "crates/settings" }
|
|
settings_macros = { path = "crates/settings_macros" }
|
|
settings_ui = { path = "crates/settings_ui" }
|
|
snippet = { path = "crates/snippet" }
|
|
snippet_provider = { path = "crates/snippet_provider" }
|
|
snippets_ui = { path = "crates/snippets_ui" }
|
|
sqlez = { path = "crates/sqlez" }
|
|
sqlez_macros = { path = "crates/sqlez_macros" }
|
|
story = { path = "crates/story" }
|
|
storybook = { path = "crates/storybook" }
|
|
streaming_diff = { path = "crates/streaming_diff" }
|
|
sum_tree = { path = "crates/sum_tree" }
|
|
supermaven = { path = "crates/supermaven" }
|
|
supermaven_api = { path = "crates/supermaven_api" }
|
|
system_specs = { path = "crates/system_specs" }
|
|
tab_switcher = { path = "crates/tab_switcher" }
|
|
task = { path = "crates/task" }
|
|
tasks_ui = { path = "crates/tasks_ui" }
|
|
telemetry = { path = "crates/telemetry" }
|
|
telemetry_events = { path = "crates/telemetry_events" }
|
|
terminal = { path = "crates/terminal" }
|
|
terminal_view = { path = "crates/terminal_view" }
|
|
text = { path = "crates/text" }
|
|
theme = { path = "crates/theme" }
|
|
theme_extension = { path = "crates/theme_extension" }
|
|
theme_importer = { path = "crates/theme_importer" }
|
|
theme_selector = { path = "crates/theme_selector" }
|
|
time_format = { path = "crates/time_format" }
|
|
title_bar = { path = "crates/title_bar" }
|
|
toolchain_selector = { path = "crates/toolchain_selector" }
|
|
ui = { path = "crates/ui" }
|
|
ui_input = { path = "crates/ui_input" }
|
|
ui_macros = { path = "crates/ui_macros" }
|
|
ui_prompt = { path = "crates/ui_prompt" }
|
|
util = { path = "crates/util" }
|
|
util_macros = { path = "crates/util_macros" }
|
|
vercel = { path = "crates/vercel" }
|
|
vim = { path = "crates/vim" }
|
|
vim_mode_setting = { path = "crates/vim_mode_setting" }
|
|
|
|
watch = { path = "crates/watch" }
|
|
web_search = { path = "crates/web_search" }
|
|
web_search_providers = { path = "crates/web_search_providers" }
|
|
workspace = { path = "crates/workspace" }
|
|
worktree = { path = "crates/worktree" }
|
|
x_ai = { path = "crates/x_ai" }
|
|
zed = { path = "crates/zed" }
|
|
zed_actions = { path = "crates/zed_actions" }
|
|
zed_env_vars = { path = "crates/zed_env_vars" }
|
|
zeta = { path = "crates/zeta" }
|
|
zeta2 = { path = "crates/zeta2" }
|
|
zlog = { path = "crates/zlog" }
|
|
zlog_settings = { path = "crates/zlog_settings" }
|
|
|
|
#
|
|
# External crates
|
|
#
|
|
|
|
agent-client-protocol = { version = "0.4.3", features = ["unstable"] }
|
|
aho-corasick = "1.1"
|
|
alacritty_terminal = "0.25.1-rc1"
|
|
any_vec = "0.14"
|
|
anyhow = "1.0.86"
|
|
arrayvec = { version = "0.7.4", features = ["serde"] }
|
|
ashpd = { version = "0.11", default-features = false, features = ["async-std"] }
|
|
async-compat = "0.2.1"
|
|
async-compression = { version = "0.4", features = ["gzip", "futures-io"] }
|
|
async-dispatcher = "0.1"
|
|
async-fs = "2.1"
|
|
async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
|
|
async-recursion = "1.0.0"
|
|
async-tar = "0.5.0"
|
|
async-task = "4.7"
|
|
async-trait = "0.1"
|
|
async-tungstenite = "0.29.1"
|
|
async_zip = { version = "0.0.17", features = ["deflate", "deflate64"] }
|
|
aws-config = { version = "1.6.1", features = ["behavior-version-latest"] }
|
|
aws-credential-types = { version = "1.2.2", features = [
|
|
"hardcoded-credentials",
|
|
] }
|
|
aws-sdk-bedrockruntime = { version = "1.80.0", features = [
|
|
"behavior-version-latest",
|
|
] }
|
|
aws-smithy-runtime-api = { version = "1.7.4", features = ["http-1x", "client"] }
|
|
aws-smithy-types = { version = "1.3.0", features = ["http-body-1-x"] }
|
|
backtrace = "0.3"
|
|
base64 = "0.22"
|
|
bincode = "1.2.1"
|
|
bitflags = "2.6.0"
|
|
blade-graphics = { git = "https://github.com/kvark/blade", rev = "bfa594ea697d4b6326ea29f747525c85ecf933b9" }
|
|
blade-macros = { git = "https://github.com/kvark/blade", rev = "bfa594ea697d4b6326ea29f747525c85ecf933b9" }
|
|
blade-util = { git = "https://github.com/kvark/blade", rev = "bfa594ea697d4b6326ea29f747525c85ecf933b9" }
|
|
blake3 = "1.5.3"
|
|
bytes = "1.0"
|
|
cargo_metadata = "0.19"
|
|
cargo_toml = "0.21"
|
|
cfg-if = "1.0.3"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
ciborium = "0.2"
|
|
circular-buffer = "1.0"
|
|
clap = { version = "4.4", features = ["derive"] }
|
|
cocoa = "0.26"
|
|
cocoa-foundation = "0.2.0"
|
|
convert_case = "0.8.0"
|
|
core-foundation = "0.10.0"
|
|
core-foundation-sys = "0.8.6"
|
|
core-video = { version = "0.4.3", features = ["metal"] }
|
|
cpal = "0.16"
|
|
crash-handler = "0.6"
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
ctor = "0.4.0"
|
|
dap-types = { git = "https://github.com/zed-industries/dap-types", rev = "1b461b310481d01e02b2603c16d7144b926339f8" }
|
|
dashmap = "6.0"
|
|
derive_more = "0.99.17"
|
|
dirs = "4.0"
|
|
documented = "0.9.1"
|
|
dotenvy = "0.15.0"
|
|
ec4rs = "1.1"
|
|
emojis = "0.6.1"
|
|
env_logger = "0.11"
|
|
exec = "0.3.1"
|
|
fancy-regex = "0.14.0"
|
|
fork = "0.2.0"
|
|
futures = "0.3"
|
|
futures-batch = "0.6.1"
|
|
futures-lite = "1.13"
|
|
git2 = { version = "0.20.1", default-features = false }
|
|
globset = "0.4"
|
|
handlebars = "4.3"
|
|
hashbrown = "0.15.3"
|
|
heck = "0.5"
|
|
heed = { version = "0.21.0", features = ["read-txn-no-tls"] }
|
|
hex = "0.4.3"
|
|
human_bytes = "0.4.1"
|
|
html5ever = "0.27.0"
|
|
http = "1.1"
|
|
http-body = "1.0"
|
|
hyper = "0.14"
|
|
ignore = "0.4.22"
|
|
image = "0.25.1"
|
|
imara-diff = "0.1.8"
|
|
indexmap = { version = "2.7.0", features = ["serde"] }
|
|
indoc = "2"
|
|
inventory = "0.3.19"
|
|
itertools = "0.14.0"
|
|
json_dotpath = "1.1"
|
|
jsonschema = "0.30.0"
|
|
jsonwebtoken = "9.3"
|
|
jupyter-protocol = { git = "https://github.com/ConradIrwin/runtimed", rev = "7130c804216b6914355d15d0b91ea91f6babd734" }
|
|
jupyter-websocket-client = { git = "https://github.com/ConradIrwin/runtimed" ,rev = "7130c804216b6914355d15d0b91ea91f6babd734" }
|
|
libc = "0.2"
|
|
libsqlite3-sys = { version = "0.30.1", features = ["bundled"] }
|
|
linkify = "0.10.0"
|
|
log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] }
|
|
lsp-types = { git = "https://github.com/zed-industries/lsp-types", rev = "0874f8742fe55b4dc94308c1e3c0069710d8eeaf" }
|
|
mach2 = "0.5"
|
|
markup5ever_rcdom = "0.3.0"
|
|
metal = "0.29"
|
|
minidumper = "0.8"
|
|
moka = { version = "0.12.10", features = ["sync"] }
|
|
naga = { version = "25.0", features = ["wgsl-in"] }
|
|
nanoid = "0.4"
|
|
nbformat = { git = "https://github.com/ConradIrwin/runtimed", rev = "7130c804216b6914355d15d0b91ea91f6babd734" }
|
|
nix = "0.29"
|
|
num-format = "0.4.4"
|
|
objc = "0.2"
|
|
objc2-foundation = { version = "0.3", default-features = false, features = [
|
|
"NSArray",
|
|
"NSAttributedString",
|
|
"NSBundle",
|
|
"NSCoder",
|
|
"NSData",
|
|
"NSDate",
|
|
"NSDictionary",
|
|
"NSEnumerator",
|
|
"NSError",
|
|
"NSGeometry",
|
|
"NSNotification",
|
|
"NSNull",
|
|
"NSObjCRuntime",
|
|
"NSObject",
|
|
"NSProcessInfo",
|
|
"NSRange",
|
|
"NSRunLoop",
|
|
"NSString",
|
|
"NSURL",
|
|
"NSUndoManager",
|
|
"NSValue",
|
|
"objc2-core-foundation",
|
|
"std"
|
|
] }
|
|
open = "5.0.0"
|
|
ordered-float = "2.1.1"
|
|
palette = { version = "0.7.5", default-features = false, features = ["std"] }
|
|
parking_lot = "0.12.1"
|
|
partial-json-fixer = "0.5.3"
|
|
parse_int = "0.9"
|
|
pciid-parser = "0.8.0"
|
|
pathdiff = "0.2"
|
|
pet = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-conda = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-core = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-fs = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-pixi = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-poetry = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-reporter = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
pet-virtualenv = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "845945b830297a50de0e24020b980a65e4820559" }
|
|
portable-pty = "0.9.0"
|
|
postage = { version = "0.5", features = ["futures-traits"] }
|
|
pretty_assertions = { version = "1.3.0", features = ["unstable"] }
|
|
proc-macro2 = "1.0.93"
|
|
profiling = "1"
|
|
prost = "0.9"
|
|
prost-build = "0.9"
|
|
prost-types = "0.9"
|
|
pulldown-cmark = { version = "0.12.0", default-features = false }
|
|
quote = "1.0.9"
|
|
rand = "0.9"
|
|
rayon = "1.8"
|
|
ref-cast = "1.0.24"
|
|
regex = "1.5"
|
|
reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "951c770a32f1998d6e999cef3e59e0013e6c4415", default-features = false, features = [
|
|
"charset",
|
|
"http2",
|
|
"macos-system-configuration",
|
|
"multipart",
|
|
"rustls-tls-native-roots",
|
|
"socks",
|
|
"stream",
|
|
] }
|
|
rsa = "0.9.6"
|
|
runtimelib = { git = "https://github.com/ConradIrwin/runtimed", rev = "7130c804216b6914355d15d0b91ea91f6babd734", default-features = false, features = [
|
|
"async-dispatcher-runtime",
|
|
] }
|
|
rust-embed = { version = "8.4", features = ["include-exclude"] }
|
|
rustc-demangle = "0.1.23"
|
|
rustc-hash = "2.1.0"
|
|
rustls = { version = "0.23.26" }
|
|
rustls-platform-verifier = "0.5.0"
|
|
scap = { git = "https://github.com/zed-industries/scap", rev = "808aa5c45b41e8f44729d02e38fd00a2fe2722e7", default-features = false }
|
|
schemars = { version = "1.0", features = ["indexmap2"] }
|
|
semver = "1.0"
|
|
serde = { version = "1.0.221", features = ["derive", "rc"] }
|
|
serde_json = { version = "1.0.144", features = ["preserve_order", "raw_value"] }
|
|
serde_json_lenient = { version = "0.2", features = [
|
|
"preserve_order",
|
|
"raw_value",
|
|
] }
|
|
serde_path_to_error = "0.1.17"
|
|
serde_repr = "0.1"
|
|
serde_urlencoded = "0.7"
|
|
serde_with = "3.4.0"
|
|
sha2 = "0.10"
|
|
shellexpand = "2.1.0"
|
|
shlex = "1.3.0"
|
|
simplelog = "0.12.2"
|
|
slotmap = "1.0.6"
|
|
smallvec = { version = "1.6", features = ["union"] }
|
|
smol = "2.0"
|
|
sqlformat = "0.2"
|
|
stacksafe = "0.1"
|
|
streaming-iterator = "0.1"
|
|
strsim = "0.11"
|
|
strum = { version = "0.27.0", features = ["derive"] }
|
|
subtle = "2.5.0"
|
|
syn = { version = "2.0.101", features = ["full", "extra-traits"] }
|
|
sys-locale = "0.3.1"
|
|
sysinfo = "0.31.0"
|
|
take-until = "0.2.0"
|
|
tempfile = "3.20.0"
|
|
thiserror = "2.0.12"
|
|
tiktoken-rs = { git = "https://github.com/zed-industries/tiktoken-rs", rev = "30c32a4522751699adeda0d5840c71c3b75ae73d" }
|
|
time = { version = "0.3", features = [
|
|
"macros",
|
|
"parsing",
|
|
"serde",
|
|
"serde-well-known",
|
|
"formatting",
|
|
] }
|
|
tiny_http = "0.8"
|
|
tokio = { version = "1" }
|
|
tokio-tungstenite = { version = "0.26", features = ["__rustls-tls"] }
|
|
toml = "0.8"
|
|
tower-http = "0.4.4"
|
|
tree-sitter = { version = "0.25.6", features = ["wasm"] }
|
|
tree-sitter-bash = "0.25.0"
|
|
tree-sitter-c = "0.23"
|
|
tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "5cb9b693cfd7bfacab1d9ff4acac1a4150700609" }
|
|
tree-sitter-css = "0.23"
|
|
tree-sitter-diff = "0.1.0"
|
|
tree-sitter-elixir = "0.3"
|
|
tree-sitter-embedded-template = "0.23.0"
|
|
tree-sitter-gitcommit = { git = "https://github.com/zed-industries/tree-sitter-git-commit", rev = "88309716a69dd13ab83443721ba6e0b491d37ee9" }
|
|
tree-sitter-go = "0.23"
|
|
tree-sitter-go-mod = { git = "https://github.com/camdencheek/tree-sitter-go-mod", rev = "6efb59652d30e0e9cd5f3b3a669afd6f1a926d3c", package = "tree-sitter-gomod" }
|
|
tree-sitter-gowork = { git = "https://github.com/zed-industries/tree-sitter-go-work", rev = "acb0617bf7f4fda02c6217676cc64acb89536dc7" }
|
|
tree-sitter-heex = { git = "https://github.com/zed-industries/tree-sitter-heex", rev = "1dd45142fbb05562e35b2040c6129c9bca346592" }
|
|
tree-sitter-html = "0.23"
|
|
tree-sitter-jsdoc = "0.23"
|
|
tree-sitter-json = "0.24"
|
|
tree-sitter-md = { git = "https://github.com/tree-sitter-grammars/tree-sitter-markdown", rev = "9a23c1a96c0513d8fc6520972beedd419a973539" }
|
|
tree-sitter-python = "0.25"
|
|
tree-sitter-regex = "0.24"
|
|
tree-sitter-ruby = "0.23"
|
|
tree-sitter-rust = "0.24"
|
|
tree-sitter-typescript = "0.23"
|
|
tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a" }
|
|
unicase = "2.6"
|
|
unicode-script = "0.5.7"
|
|
unicode-segmentation = "1.10"
|
|
unindent = "0.2.0"
|
|
url = "2.2"
|
|
urlencoding = "2.1.2"
|
|
uuid = { version = "1.1.2", features = ["v4", "v5", "v7", "serde"] }
|
|
walkdir = "2.5"
|
|
wasm-encoder = "0.221"
|
|
wasmparser = "0.221"
|
|
wasmtime = { version = "29", default-features = false, features = [
|
|
"async",
|
|
"demangle",
|
|
"runtime",
|
|
"cranelift",
|
|
"component-model",
|
|
"incremental-cache",
|
|
"parallel-compilation",
|
|
] }
|
|
wasmtime-wasi = "29"
|
|
which = "6.0.0"
|
|
windows-core = "0.61"
|
|
windows-sys = "0.61"
|
|
wit-component = "0.221"
|
|
workspace-hack = "0.1.0"
|
|
yawc = "0.2.5"
|
|
zeroize = "1.8"
|
|
zstd = "0.11"
|
|
|
|
[workspace.dependencies.windows]
|
|
version = "0.61"
|
|
features = [
|
|
"Foundation_Numerics",
|
|
"Storage_Search",
|
|
"Storage_Streams",
|
|
"System_Threading",
|
|
"UI_ViewManagement",
|
|
"Wdk_System_SystemServices",
|
|
"Win32_Globalization",
|
|
"Win32_Graphics_Direct3D",
|
|
"Win32_Graphics_Direct3D11",
|
|
"Win32_Graphics_Direct3D_Fxc",
|
|
"Win32_Graphics_DirectComposition",
|
|
"Win32_Graphics_DirectWrite",
|
|
"Win32_Graphics_Dwm",
|
|
"Win32_Graphics_Dxgi",
|
|
"Win32_Graphics_Dxgi_Common",
|
|
"Win32_Graphics_Gdi",
|
|
"Win32_Graphics_Imaging",
|
|
"Win32_Graphics_Hlsl",
|
|
"Win32_Networking_WinSock",
|
|
"Win32_Security",
|
|
"Win32_Security_Credentials",
|
|
"Win32_Security_Cryptography",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_Com",
|
|
"Win32_System_Com_StructuredStorage",
|
|
"Win32_System_Console",
|
|
"Win32_System_DataExchange",
|
|
"Win32_System_IO",
|
|
"Win32_System_LibraryLoader",
|
|
"Win32_System_Memory",
|
|
"Win32_System_Ole",
|
|
"Win32_System_Performance",
|
|
"Win32_System_Pipes",
|
|
"Win32_System_SystemInformation",
|
|
"Win32_System_SystemServices",
|
|
"Win32_System_Threading",
|
|
"Win32_System_Variant",
|
|
"Win32_System_WinRT",
|
|
"Win32_UI_Controls",
|
|
"Win32_UI_HiDpi",
|
|
"Win32_UI_Input_Ime",
|
|
"Win32_UI_Input_KeyboardAndMouse",
|
|
"Win32_UI_Shell",
|
|
"Win32_UI_Shell_Common",
|
|
"Win32_UI_Shell_PropertiesSystem",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
]
|
|
|
|
[patch.crates-io]
|
|
notify = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
|
|
notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "bbb9ea5ae52b253e095737847e367c30653a2e96" }
|
|
windows-capture = { git = "https://github.com/zed-industries/windows-capture.git", rev = "f0d6c1b6691db75461b732f6d5ff56eed002eeb9" }
|
|
|
|
# Makes the workspace hack crate refer to the local one, but only when you're building locally
|
|
workspace-hack = { path = "tooling/workspace-hack" }
|
|
|
|
[profile.dev]
|
|
split-debuginfo = "unpacked"
|
|
codegen-units = 16
|
|
|
|
# mirror configuration for crates compiled for the build platform
|
|
# (without this cargo will compile ~400 crates twice)
|
|
[profile.dev.build-override]
|
|
codegen-units = 16
|
|
|
|
[profile.dev.package]
|
|
taffy = { opt-level = 3 }
|
|
cranelift-codegen = { opt-level = 3 }
|
|
cranelift-codegen-meta = { opt-level = 3 }
|
|
cranelift-codegen-shared = { opt-level = 3 }
|
|
resvg = { opt-level = 3 }
|
|
rustybuzz = { opt-level = 3 }
|
|
ttf-parser = { opt-level = 3 }
|
|
wasmtime-cranelift = { opt-level = 3 }
|
|
wasmtime = { opt-level = 3 }
|
|
# Build single-source-file crates with cg=1 as it helps make `cargo build` of a whole workspace a bit faster
|
|
activity_indicator = { codegen-units = 1 }
|
|
assets = { codegen-units = 1 }
|
|
breadcrumbs = { codegen-units = 1 }
|
|
collections = { codegen-units = 1 }
|
|
command_palette = { codegen-units = 1 }
|
|
command_palette_hooks = { codegen-units = 1 }
|
|
extension_cli = { codegen-units = 1 }
|
|
feature_flags = { codegen-units = 1 }
|
|
file_icons = { codegen-units = 1 }
|
|
fsevent = { codegen-units = 1 }
|
|
image_viewer = { codegen-units = 1 }
|
|
edit_prediction_button = { codegen-units = 1 }
|
|
install_cli = { codegen-units = 1 }
|
|
journal = { codegen-units = 1 }
|
|
json_schema_store = { codegen-units = 1 }
|
|
lmstudio = { codegen-units = 1 }
|
|
menu = { codegen-units = 1 }
|
|
notifications = { codegen-units = 1 }
|
|
ollama = { codegen-units = 1 }
|
|
outline = { codegen-units = 1 }
|
|
paths = { codegen-units = 1 }
|
|
prettier = { codegen-units = 1 }
|
|
project_symbols = { codegen-units = 1 }
|
|
refineable = { codegen-units = 1 }
|
|
release_channel = { codegen-units = 1 }
|
|
reqwest_client = { codegen-units = 1 }
|
|
rich_text = { codegen-units = 1 }
|
|
semantic_version = { codegen-units = 1 }
|
|
session = { codegen-units = 1 }
|
|
snippet = { codegen-units = 1 }
|
|
snippets_ui = { codegen-units = 1 }
|
|
sqlez_macros = { codegen-units = 1 }
|
|
story = { codegen-units = 1 }
|
|
supermaven_api = { codegen-units = 1 }
|
|
telemetry_events = { codegen-units = 1 }
|
|
theme_selector = { codegen-units = 1 }
|
|
time_format = { codegen-units = 1 }
|
|
ui_input = { codegen-units = 1 }
|
|
zed_actions = { codegen-units = 1 }
|
|
|
|
[profile.release]
|
|
debug = "limited"
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
|
|
[profile.release.package]
|
|
zed = { codegen-units = 16 }
|
|
|
|
[profile.release-fast]
|
|
inherits = "release"
|
|
debug = "full"
|
|
lto = false
|
|
codegen-units = 16
|
|
|
|
[workspace.lints.rust]
|
|
unexpected_cfgs = { level = "allow" }
|
|
|
|
[workspace.lints.clippy]
|
|
dbg_macro = "deny"
|
|
todo = "deny"
|
|
|
|
# This is not a style lint, see https://github.com/rust-lang/rust-clippy/pull/15454
|
|
# Remove when the lint gets promoted to `suspicious`.
|
|
declare_interior_mutable_const = "deny"
|
|
|
|
redundant_clone = "deny"
|
|
disallowed_methods = "deny"
|
|
|
|
# We currently do not restrict any style rules
|
|
# as it slows down shipping code to Zed.
|
|
#
|
|
# Running ./script/clippy can take several minutes, and so it's
|
|
# common to skip that step and let CI do it. Any unexpected failures
|
|
# (which also take minutes to discover) thus require switching back
|
|
# to an old branch, manual fixing, and re-pushing.
|
|
#
|
|
# In the future we could improve this by either making sure
|
|
# Zed can surface clippy errors in diagnostics (in addition to the
|
|
# rust-analyzer errors), or by having CI fix style nits automatically.
|
|
style = { level = "allow", priority = -1 }
|
|
|
|
# Individual rules that have violations in the codebase:
|
|
type_complexity = "allow"
|
|
let_underscore_future = "allow"
|
|
|
|
# Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so
|
|
# warning on this rule produces a lot of noise.
|
|
single_range_in_vec_init = "allow"
|
|
|
|
# in Rust it can be very tedious to reduce argument count without
|
|
# running afoul of the borrow checker.
|
|
too_many_arguments = "allow"
|
|
|
|
# We often have large enum variants yet we rarely actually bother with splitting them up.
|
|
large_enum_variant = "allow"
|
|
|
|
# Boolean expressions can be hard to read, requiring only the minimal form gets in the way
|
|
nonminimal_bool = "allow"
|
|
|
|
[workspace.metadata.cargo-machete]
|
|
ignored = [
|
|
"bindgen",
|
|
"cbindgen",
|
|
"prost_build",
|
|
"serde",
|
|
"component",
|
|
"documented",
|
|
"workspace-hack",
|
|
]
|