5d0f02d
Add cmd-alt-b (workspace::ToggleRightDock) on macOS (#33450)
Click to expand commit body
Release Notes: - N/A
Peter Tripp created
5d0f02d
Add cmd-alt-b (workspace::ToggleRightDock) on macOS (#33450)
Release Notes: - N/A
Peter Tripp created
ca8e213
Suggest reST extension for .rst files (#33413)
Suggest the reST extension when opening a .rst file for the first time. Release Notes: - N/A
Renze Post created
90c8937
gpui: Prevent the same action name from being registered multiple times (#33359)
Also removes duplicate `editor::RevertFile` and `vim::HelixDelete` actions Release Notes: - N/A
Michael Sloan created
d09c7eb
language: Add context-aware decrease indent for Python (#33370)
Closes #33238, follow-up to
https://github.com/zed-industries/zed/pull/29625.
Changes:
- Removed `significant_indentation`, which was the way to introduce
indentation scoping in languages like Python. However, it turned out to
be unnecessarily complicated to define and maintain.
- Introduced `decrease_indent_patterns`, which takes a `pattern` keyword
to automatically outdent and `valid_after` keywords to treat as valid
code points to snap to. The outdent happens to the most recent
`valid_after` keyword that also has less or equal indentation than the
currently typed keyword.
Fixes:
1. In Python, typing `except`, `finally`, `else`, and so on now
automatically indents intelligently based on the context in which it
appears. For instance:
```py
try:
if a == 1:
try:
b = 2
^ # <-- typing "except:" here would indent it to inner try block
```
but,
```py
try:
if a == 1:
try:
b = 2
^ # <-- typing "except:" here would indent it to outer try block
```
2. Fixes comments not maintaining indent.
Release Notes:
- Improved auto outdent for Python while typing keywords like `except`,
`else`, `finally`, etc.
- Fixed the issue where comments in Python would not maintain their
indentation.
Smit Barmase created
1753432
Fix tree sitter python try statement to accept missing else/except/finally (#33431)
We have fork now: https://github.com/zed-industries/tree-sitter-python/commit/218fcbf3fda3d029225f3dec005cb497d111b35e Release Notes: - N/A
Smit Barmase created
d9218b1
Bump livekit-rust-sdks for candidate webrtc-sys build fix (#33387)
Incorporates https://github.com/zed-industries/livekit-rust-sdks/pull/5 Don't merge yet, waiting until after new releases are cut in case of unexpected breakage. Release Notes: - N/A
Cole Miller created
dfdeb1b
linux: Don't insert characters if modifiers other than shift are held (#33424)
Closes #32219 #29666 Release Notes: - Linux: Now skips insertion of characters when modifiers are held. Before, characters were inserted if there's no match in the keymap.
Michael Sloan created
b9f81c7
Restore missing initialization of text thread actions (#33422)
Fixes a regression introduced in https://github.com/zed-industries/zed/pull/33289 Release Notes: - Fixed a bug where some text thread actions were accidentally removed.
Max Brunsfeld created
b1450b6
Remove `git_panel::GenerateCommitMessage` in favor of `git::GenerateCommitMessage` (#33421)
`git_panel::GenerateCommitMessage` has no handler, `git::GenerateCommitMessage` should be preferred. Could add a `#[action(deprecated_aliases = ["git_panel::GenerateCommitMessage"])]`, but decided not to because that action didn't work. So instead uses of it will show up as keymap errors. Closes #32667 Release Notes: - N/A
Michael Sloan created
1af9f98
lsp-log: Avoid trimming leading space in language server logs (#33418)
Not sure what the full intention/right fix for this is, but https://github.com/zed-industries/zed/pull/32659 re-introduced trimming of leading spaces. rust-analyzer has [a custom tracing formatter](https://github.com/rust-lang/rust-analyzer/blob/317542c1e4a3ec3467d21d1c25f6a43b80d83e7d/crates/rust-analyzer/src/tracing/hprof.rs) that is _super_ useful for profiling what the heck rust-analyzer is doing. It makes prodigious use of whitespace to delineate to create a tree-shaped structure. This change reintroduces the leading whitespace. I made a previous change similar to this that removed a `stderr:` in https://github.com/zed-industries/zed/pull/27213/. If this is a direction y'all are happy to go with, I'd be happy to add a test for this! <details> <summary>A screenshot of the before</summary> <img width="1624" alt="Screenshot 2025-06-25 at 2 12 45 PM" src="https://github.com/user-attachments/assets/a714d973-9377-41ca-8087-3b0e82b41620" /> </details> <details> <summary>A screenshot of the after</summary> <img width="1136" alt="Screenshot 2025-06-25 at 2 40 07 PM" src="https://github.com/user-attachments/assets/b798ca13-11fc-4f97-9602-55e782068a5a" /> </details> cc: @mgsloan. Release Notes: - Fixed the removal of leading whitespace in a language server's stderr logs.
David Barsky created
1330cb7
docs: Update instructions to use Vercel's v0 model (#33415)
To make sure this reflects the current reality as of today's preview/stable version. Release Notes: - N/A
Danilo Leal created
dae4e84
Explicitly associate files as JSONC (#33410)
Fixes an issue when the zed repo was checked out to folder other than `zed` (e.g. `zed2`) files were incorrectly identified as JSON instead of JSONC. Release Notes: - N/A
Peter Tripp created
6fb5500
collab: Save Customer name and billing address to Customer on checkout (#33385)
We are collecting billing address and name on checkout now (for tax) but we're not saving it back to the Customer level. Updating the Checkout Session code to make`customer_update.address` equal to `auto`, instead of the default `never`, as well as the same for `customer_update.name`. Release Notes: - N/A
morgankrey created
8f98171
pane: Update pinned tab count when it exceeds actual tab count (#33405)
## Summary This PR improves the workaround introduced in #33335 that handles cases where the pinned tab count exceeds the actual tab count during workspace deserialization. ## Problem The original workaround in #33335 successfully prevented the panic but had two issues: 1. **Console spam**: The warning message was logged repeatedly because `self.pinned_tab_count` wasn't updated to match the actual tab count 2. **Auto-pinning behavior**: New tabs up until you exceed the old safe tab count were automatically pinned after the workaround was triggered. ## Solution Updates the defensive code to set `self.pinned_tab_count = tab_count` when the mismatch is detected, ensuring: - The warning is only logged once when encountered. - New tabs behave normally (aren't auto-pinned) - The workspace remains in a consistent state This is an immediate fix for the workaround. I'll attempt to open up a follow-up PR when i get the chance that will address the root cause by implementing serialization for empty untitled tabs, as discussed in #33342. Release Notes: - N/A
vipex created
aae4778
gpui: Add more flushing of x11 requests (#33407)
Flushes should happen after sending messages to X11 when effects should be applied quickly. This is not needed for requests that return replies since it automatically flushes in that case. Release Notes: - N/A
Michael Sloan created
e5c812f
gpui: Dynamic element arena (#32079)
Implements a chunking strategy for the element arena that allows it to grow dynamically based on allocations, it is initialised with a single chunk of a total size of 1 mebibyte. On allocation of data with a size greater than the remaining space of the current chunk a new chunk is created. This reduces the memory allocation from the static 32 mebibytes, this especially helps GPUI applications that don't need such a large element arena and even Zed in most cases. This also prevents the panic when allocations ever exceed the element arena. Release Notes: - N/A --------- Co-authored-by: Michael Sloan <michael@zed.dev>
Matin Aniss and Michael Sloan created
294147f
ci: Skip build_docs more often (#33398)
Don't run `build_docs` when the only change is:
`.github/{workflows,ISSUE_TEMPLATE}/**`.
Example [extra
run](https://github.com/zed-industries/zed/actions/runs/15883155767).
Release Notes:
- N/A
Peter Tripp created
4516b09
Reduce segment cloning when rendering messages (#33340)
While working on retries, I discovered some opportunities to reduce cloning of message segments. These segments have full `String`s (not `SharedString`s), so cloning them means copying cloning all the bytes of all the strings in the message, which would be nice to avoid! Release Notes: - N/A
Richard Feldman created
8e831ce
ci: Remove community_delete_comments (#33396)
This was a temporary mitigation against a spam campaign, I don't think this is required any longer. We can easily revert if it's still active. See: - https://github.com/zed-industries/zed/pull/16886 Release Notes: - N/A
Peter Tripp created
3740eec
Do not show update "View Release Notes" notification in nightly builds (#33394)
These are useless in nightly, as the link within the notification simply directs us to a commit view on GitHub. We update frequently on nightly; dismissing this after every update is annoying. Release Notes: - N/A
Joseph T. Lyons created
2a5a181
text_thread: Improve roles after `assistant::Split` (shift-enter) (#33215)
Default to `You` when triggering `assistant::Split` at the end of a thread Release Notes: - agent_thread: Improved roles when triggering `assistant::Split` (`shift-enter`)
Peter Tripp created
cc62125
agent: Add GEMINI.md as a supported rules file name (#33381)
Gemini cli creates GEMINI.md file. This PR adds support for it. Release Notes: - agent: Add GEMINI.md as a supported rules file name
Umesh Yadav created
224de2e
settings: Remove version fields (#33372)
This cleans up our settings to not include any `version` fields, as we have an actual settings migrator now. This PR removes `language_models > anthropic > version`, `language_models > openai > version` and `agent > version`. We had migration paths in the code for a long time, so in practice almost everyone should be using the latest version of these settings. Release Notes: - Remove `version` fields in settings for `agent`, `language_models > anthropic`, `language_models > openai`. Your settings will automatically be migrated. If you're running into issues with this open an issue [here](https://github.com/zed-industries/zed/issues)
Bennet Bo Fenner created
c0acd8e
Add language server control tool into the status bar (#32490)
Release Notes: - Added the language server control tool into the status bar --------- Co-authored-by: Nate Butler <iamnbutler@gmail.com>
Kirill Bulatov and Nate Butler created
91c9281
Default to cargo-zigbuild for ZED_BUILD_REMOTE_SERVER (#33391)
Follow-up to #31467. `cargo-zigbuild` will be installed if it's not there already, but you have to install Zig yourself. Pass `ZED_BUILD_REMOTE_SERVER=cross` to use the old way. Release Notes: - N/A
Cole Miller created
84494ab
Make ctrl-alt-b / cmd-alt-b toggle right dock (#33190)
Closes: https://github.com/zed-industries/zed/issues/33147 In VSCode ctrl-alt-b / cmd-alt-b toggles the right dock. Zed should follow this behavior. See also: - https://github.com/zed-industries/zed/pull/31630 Release Notes: - N/A
Peter Tripp created
93d670a
Fix empty code actions menu trapping cursor (#33386)
Closes: https://github.com/zed-industries/zed/issues/33382 Follow-up to: https://github.com/zed-industries/zed/pull/32579 CC: @ConradIrwin @Anthony-Eid Release Notes: - Fixed an issue with empty code actions menu locking the cursor (Preview Only)
Peter Tripp created
7d087ea
docs: Improve visual-customization.md docs for Zed prompts (#33254)
Release Notes: - N/A
Peter Tripp created
19c9fb3
Allow multiple Markdown preview tabs (#32859)
Closes #32791 https://github.com/user-attachments/assets/8cb90e3d-ef7b-407f-b78b-7ba4ff6d8df2 Release Notes: - Allowed multiple Markdown preview tabs
ddoemonn created
b0bab0b
agent: Prevent use of disabled tools (#33392)
The agent now checks if a tool is enabled in the current profile before calling it. Previously, the agent could still call disabled tools, which commonly happened after switching profiles in the middle of a thread. Release Notes: - Fixed a bug where the agent could use disabled tools sometimes
Oleksiy Syvokon created
630a326
file_finder: Fix create wrong file in multiple worktree (#33139)
When open multiple worktree, using `file_finder` to create a new file
shoud respect current focused worktree.
test case:
```
project:
worktree A
file1
worktree B
file2 <- focused
```
when focused `file2`, `ctrl-p` toggle `file_finder` to create `file3`
should exists in worktreeB.
I try add test case for `CreateNew` in file_finder, but found not
worked, if you help me, I can try add this test case.
Release Notes:
- Fixed file finder selecting wrong worktree when creating a file
CharlesChen0823 created
6848073
Bump Zed to v0.194 (#33390)
Release Notes: -N/A
Joseph T. Lyons created
eb51041
debugger_ui: Fix variable completion accept in console appends the whole word (#33378)
Closes #32959 Release Notes: - Fixed the issue where accepting variable completion in the Debugger would append the entire variable name instead of the remaining part.
Smit Barmase created
308debe
terminal: Fix trailing single quote included when opening link from terminal (#33376)
Closes #33210 Release Notes: - Fixed an issue where a trailing single quote was included when opening a link from the terminal.
Sarmad Gulzar created
0905255
bedrock: Add prompt caching support (#33194)
Closes https://github.com/zed-industries/zed/issues/33221 Bedrock has similar to anthropic caching api, if we want to cache messages up to a certain point, we should add a special block into that message. Additionally, we can cache tools definition by adding cache point block after tools spec. See: [Bedrock User Guide: Prompt Caching](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models) Release Notes: - bedrock: Added prompt caching support --------- Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
Vladimir Kuznichenkov and Oleksiy Syvokon created
59aeede
vercel: Use proper model identifiers and add image support (#33377)
Follow up to previous PRs: - Return `true` in `supports_images` - v0 supports images already - Rename model id to match the exact version of the model `v0-1.5-md` (For now we do not expose `sm`/`lg` variants since they seem not to be available via the API) - Provide autocompletion in settings for using `vercel` as a `provider` Release Notes: - N/A
Bennet Bo Fenner created
18f1221
vercel: Reuse existing OpenAI code (#33362)
Follow up to #33292 Since Vercel's API is OpenAI compatible, we can reuse a bunch of code. Release Notes: - N/A
Bennet Bo Fenner created
c979452
Implement indent conversion editor commands (#32340)
## Description of Feature or Change
Zed currently lacks a built-in way to convert a file’s indentation style
on the fly. While it's possible to change indentation behavior via
global or language-specific settings, these changes are persistent and
broad in scope as they apply to all files or all files of a given
language. We believe this could be improved for quick one-off
adjustments to specific files.
This PR introduces two new editor commands:
`Editor::convert_indentation_to_spaces` and
`Editor::convert_indentation_to_tabs`. These commands allow users to
convert the indentation of either the entire buffer or a selection of
lines, to spaces or tabs. Indentation levels are preserved, and any
mixed whitespace lines are properly normalized.
This feature is inspired by VS Code’s "Convert Indentation to
Tabs/Spaces" commands, but offers faster execution and supports
selection-based conversion, making it more flexible for quick formatting
changes.
## Implementation Details
To enable selection-based indentation conversion, we initially
considered reusing the existing `Editor::manipulate_lines` function,
which handles selections for line-based manipulations. However, this
method was designed specifically for operations like sorting or
reversing lines, and does not allow modifications to the line contents
themselves.
To address this limitation, we refactored the method into a more
flexible version: `Editor::manipulate_generic_lines`. This new method
passes a reference to the selected text directly into a callback, giving
the callback full control over how to process and construct the
resulting lines. The callback returns a `String` containing the modified
text, as well as the number of lines before and after the
transformation. These counts are computed using `.len()` on the line
vectors during manipulation, which is more efficient than calculating
them after the fact.
```rust
fn manipulate_generic_lines<M>(
&mut self,
window: &mut Window,
cx: &mut Context<Self>,
mut manipulate: M,
) where
M: FnMut(&str) -> (String, usize, usize),
{
// ... Get text from buffer.text_for_range() ...
let (new_text, lines_before, lines_after) = manipulate(&text);
// ...
```
We now introduce two specialized methods:
`Editor::manipulate_mutable_lines` and
`Editor::manipulate_immutable_lines`. Each editor command selects the
appropriate method based on whether it needs to modify line contents or
simply reorder them. This distinction is important for performance: when
line contents remain unchanged, working with an immutable reference as
`&mut Vec<&str>` is both faster and more memory-efficient than using an
owned `&mut Vec<String>`.
## Demonstration
https://github.com/user-attachments/assets/e50b37ea-a128-4c2a-b252-46c3c4530d97
Release Notes:
- Added `editor::ConvertIndentationToSpaces` and
`editor::ConvertIndentationToTabs` actions to change editor indents
---------
Co-authored-by: Pedro Silveira <pedroruanosilveira@tecnico.ulisboa.pt>
Rodrigo Freire and Pedro Silveira created
4396ac9
bedrock: DeepSeek does not support receiving Reasoning Blocks (#33326)
Closes #32341 Release Notes: - Fixed DeepSeek R1 errors for reasoning blocks being sent back to the model.
Shardul Vaidya created
c6ff586
bedrock: Fix empty tool input on project diagnostic in bedrock (#33369)
Bedrock [do not accept][1] `null` as a JSON value input for the tool call when called back. Instead of passing null, we will pass back an empty object, which is accepted by API Closes #33204 Release Notes: - Fixed project diagnostic tool call for bedrock [1]: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolUseBlock.html
Vladimir Kuznichenkov created
1c6b471
agent: Fix issue where unconfigured MCP extensions would not start server (#33365)
Release Notes: - agent: Fix an issue where MCP servers that were provided by extensions would sometimes not start up
Bennet Bo Fenner created
1081624
language_models: Emit UsageUpdate events for token usage in DeepSeek and OpenAI (#33242)
Closes #ISSUE Release Notes: - N/A
Umesh Yadav created
0988961
bedrock: Fix subsequent bedrock tool calls fail (#33174)
Closes #30714 Bedrock converse api expect to see tool options if at least one tool was used in conversation in the past messages. Right now if `LanguageModelToolChoice::None` isn't supported edit agent [remove][1] tools from request. That point breaks Converse API of Bedrock. As was proposed in [the issue][2] we won't drop tool choose but instead will deny any of them if model will respond with a tool choose. [1]: https://github.com/x-qdo/zed/blob/fceba6c79540677c2504d2c22191963b6170591a/crates/assistant_tools/src/edit_agent.rs#L703 [2]: https://github.com/zed-industries/zed/issues/30714#issuecomment-2886422716 Release Notes: - Fixed bedrock tool calls in edit mode
Vladimir Kuznichenkov created
9640996
Cleanup handling of surrounding word logic, fixing crash in editor::SelectAllMatches (#33353)
This reduces code complexity and avoids unnecessary roundtripping through `DisplayPoint`. Hopefully this doesn't cause behavior changes, but has one known behavior improvement: `clip_at_line_ends` logic caused `is_inside_word` to return false when on a word at the end of the line. In vim mode, this caused `select_all_matches` to not select words at the end of lines, and in some cases crashes due to not finding any selections. Closes #29823 Release Notes: - N/A
Michael Sloan created
014f930
Make remote mkdir shell-independent for compatibility (#32997)
- Closes: #30962 Nushell does not support mkdir -p So invoke sh -c "mkdir -p" instead which will also work under nushell. Release Notes: - Fixed ssh remotes running Nushell (and possibly other non posix-compliant shells) --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
marton csutora and Conrad Irwin created
17774b1
debugger: Add a tooltip to the session picker with the session ID (#33331)
This helps correlate sessions in the picker with entries in the debug adapter logs view. Release Notes: - N/A
Cole Miller created
cf08654
debugger: Add support for completion triggers in debug console (#33211)
Release Notes: - Debugger: Add support for completion triggers in debug console
Remco Smits created
aa330fc
Use background task for settings migrations + notify about errors (#30009)
Release Notes: - N/A
Michael Sloan created
be95716
helix: Prevent cursor move on entering insert mode (#33201)
Closes #33061 https://github.com/user-attachments/assets/3b3e146e-7c12-412e-b4dd-c70411891b9e Release Notes: - Fixed cursor unexpectedly moving when entering/exiting insert mode in Helix mode, making the behavior consistent with the Helix editor.
vipex created
f738fbd
gpui: Disable rounding in the layout engine (#31836)
Rounding broke (among other things, probably) pixel-perfect image rendering with non-power-of-two scaling factor. An example which reproduces the problem can be found [here](https://github.com/WaffleLapkin/gpui_taffy_rounding_whyyyyy). How it looks with `gpui` from `main`:  How it looks with this patch:  Both screenshots are made on kde+wayland with magnification using kde's built-in magnification (`Meta`+`+`, `Meta`+`-`). Note that screenshot apps have a high chance of lying 🙃 The image itself is 400 by 300 pixels of red/green checkerboard pattern made specifically to exaggerate scaling issues. Release Notes: - N/A
waffle created