Closes #34763
Release Notes:
- Improved insert in `helix_mode` when a selection exists to better
match helix's behavior: collapse selection to avoid replacing it
- Improved append (`insert_after`) to better match helix's behavior:
move cursor to end of selection if it exists
Closes #21198
Release Notes:
- Adds support for `:norm`
- Allows for vim and zed style modified keys specified in issue
- Vim style <C-w> and zed style <ctrl-w>
- Differs from vim in how multi-line is handled
- vim is sequential
- zed is combinational (with multi-cursor)
See also: #34983
Release Notes:
- Added magistral support to ollama
versecafe
created
b93e1c7
mistral: Add support for magistral-small and magistral-medium (#34983)
Click to expand commit body
Release Notes:
- mistral: Added support for magistral-small and magistral-medium
Peter Tripp
created
67027bb
agent: Fix Zed header in settings view (#34993)
Click to expand commit body
Follow-up to taffy bump (#34939), fixes an issue reported by @MrSubidubi
Release Notes:
- N/A
Piotr Osiewicz
created
31afda3
project_panel: Automatically open project panel when Rename or Duplicate is triggered from workspace (#34988)
Click to expand commit body
In project panel, `rename` and `duplicate` action further needs user
input for editing, so if panel is closed we should open it.
Release Notes:
- Fixed project panel not opening when `project panel: rename` and
`project panel: duplicate` actions are triggered from workspace.
This PR removes the `POST /billing/subscriptions/manage` endpoint, as it
has been moved to `cloud.zed.dev`.
Release Notes:
- N/A
Marshall Bowers
created
4a87397
livekit_client: Revert a change that broke MinGW builds (#34977)
Click to expand commit body
the change was made in https://github.com/zed-industries/zed/pull/34223
for unknown reason. it wasn't required actually, and the code can be
safely left as before
update: after this revert Zed compiles with MinGW as before
Release Notes:
- N/A
Re #34938
- **chore: Bump taffy to 0.8.3**
- **editor: Fix sticky multi-buffer header not extending to the full
width**
Release Notes:
- N/A
Piotr Osiewicz
created
b63d820
editor: Fix move line up panic when selection is at end of line next to fold marker (#34982)
Click to expand commit body
Closes #34826
In move line up method, make use of `prev_line_boundary` which accounts
for fold map, etc., for selection start row so that we don't incorrectly
calculate row range to move up.
Release Notes:
- Fixed an issue where `editor: move line up` action sometimes crashed
if the cursor was at the end of a line beside a fold marker.
Smit Barmase
created
7e9d6cc
mistral: Add support for Mistral Devstral Medium (#34888)
Click to expand commit body
Mistral released their new DevstralMedium model to be used via API:
https://mistral.ai/news/devstral-2507
Release Notes:
- Add support for Mistral Devstral Medium
Renato Lochetti
created
8bf7dcb
agent: Fix follow button disabled state (#34978)
Click to expand commit body
Release Notes:
- N/A
Danilo Leal
created
edceb72
Redact secrets from environment in LSP Server Info (#34971)
Click to expand commit body
In "Server Info" view of LSP logs:
- Redacts sensitive values from environment
- Sorts environment by name
| Before | After |
| - | - |
| <img width="797" height="327" alt="Screenshot 2025-07-23 at 14 10 14"
src="https://github.com/user-attachments/assets/75781f30-9099-4994-9824-94d9c46f63e1"
/> | <img width="972" height="571" alt="image"
src="https://github.com/user-attachments/assets/c5bef744-a1b7-415f-9eb7-8314275c59b9"
/> |
Release Notes:
- Improved display of environment variables in LSP Logs: Server Info
view
be0d9ee
Add collapse functionality to outline entries (#33490)
Click to expand commit body
partly Closes #23075
Release Notes:
- Now provides collapse and enables functionality to outline entries
- Add a new expand_outlines_with_depth setting to customize how deep the
tree is expanded by when a file is opened
part 2 is in #34164
**Visual examples**



Nicolas Rodriguez
created
9863c8a
agent_ui: Show keybindings for NewThread and NewTextThread in new thread button (#34967)
Click to expand commit body
I believe in this PR: #34829 we moved to context menu entry from action
but the side effect of that was we also removed the Keybindings from
showing it in the new thread button dropdown. This PR fixes that. cc
@danilo-leal
| Before | After |
|--------|--------|
| <img width="900" height="1962" alt="CleanShot 2025-07-23 at 23 36
28@2x"
src="https://github.com/user-attachments/assets/760cbe75-09b9-404b-9d33-1db73785234f"
/> | <img width="850" height="1964" alt="CleanShot 2025-07-23 at 23 37
17@2x"
src="https://github.com/user-attachments/assets/24a7e871-aebc-475c-845f-b76f02527b8f"
/> |
Release Notes:
- N/A
Now the `dev: panic` action can be run on all release channels if the
user has the feature flag enabled.
Release Notes:
- N/A
Julia Ryan
created
56b64b1
keymap ui: Improve resize columns on double click (#34961)
Click to expand commit body
This PR splits the resize logic into separate left/right propagation
methods and improve code organization around column width adjustments.
It also allows resize to work for both the left and right sides as well,
instead of only checking the right side for room
Release Notes:
- N/A *or* Added/Fixed/Improved ...
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
Anthony Eid
and
Ben Kunkle
created
fdcd866
ai onboarding: Add telemetry event capturing (#34960)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Katie Geer <katie@zed.dev>
Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
Danilo Leal
,
Katie Geer
, and
Joseph T. Lyons
created
3b428e2
Remove `!menu` from `j k` binding in initial keymap examples (#34959)
Click to expand commit body
See
https://github.com/zed-industries/zed/pull/34912#issuecomment-3108802582
Release Notes:
- N/A
Michael Sloan
created
986b446
keymap ui: Resizable column follow up (#34955)
Click to expand commit body
I cherry picked a small fix that didn't get into the original column
resizable branch PR because I turned on auto merge.
Release Notes:
- N/A
Anthony Eid
created
8713c55
keymap_ui: Dim keybinds that are overridden by other keybinds (#34952)
Click to expand commit body
This change dims rows in the keymap editor for which the corresponding
keybind is overridden by other keybinds coming from higher priority
sources.
Release Notes:
- N/A
This PR adds resizable columns to the keymap editor and the ability to
double-click on a resizable column to set a column back to its default
size.
The table uses a column's width to calculate what position it should be
laid out at. So `column[i]` x position is calculated by the summation of
`column[..i]`. When resizing `column[i]`, `column[i+1]`’s size is
adjusted to keep all columns’ relative positions the same. If
`column[i+1]` is at its minimum size, we keep seeking to the right to
find a column with space left to take.
An improvement to resizing behavior and double-clicking could be made by
checking both column ranges `0..i-1` and `i+1..COLS`, since only one
range of columns is checked for resize capacity.
Release Notes:
- N/A
---------
Co-authored-by: Anthony <anthony@zed.dev>
Co-authored-by: Remco Smits <djsmits12@gmail.com>
Mikayla Maki
,
Anthony
, and
Remco Smits
created
1f4c9b9
language: Update block_comment and documentation comment (#34861)
Click to expand commit body
As suggested in https://github.com/zed-industries/zed/pull/34418, this
proposes various changes to language configs to make block comments and
doc-block-style comments more similar. In doing so, it introduces some
breaking changes into the extension schema.
This change is needed to support the changes I'm working on in #34418,
to be able to support `rewrap` in block comments like `/* really long
comment ... */`. As is, we can do this in C-style doc-block comments (eg
`/** ... */`) because of the config in `documentation`, but we can't do
this in regular block comments because we lack the info about what the
line prefix and indentation should be.
And while I was here, I did various other clean-ups, many of which feel
nice but are optional.
I would love special attention on the changes to the schema, version and
related changes; I'm totally unfamiliar with that part of Zed.
**Summary of changes**
- break: changes type of `block_comment` to same type as
`documentation_comment` (**this is the important change**)
- break: rename `documentation` to `documentation_comment` (optional,
but improves consistency w/ `line_comments` and `block_comment`)
- break/refactor?: removes some whitespace in the declaration of
`block_comment` delimiters (optional, may break things, need input; some
langs had no spaces, others did)
- refactor: change `tab_size` from `NonZeroU32` to just a `u32` (some
block comments don't seem to need/want indent past the initial
delimiter, so we need this be 0 sometimes)
- refactor: moves the `documentation_comment` declarations to appear
next to `block_comment`, rearranges the order of the fields in the TOML
for `documentation_comment`, rename backing `struct` (all optional)
**Future scope**
I believe that this will also allow us to extend regular block comments
on newline – as we do doc-block comments – but I haven't looked into
this yet. (eg, in JS try pressing enter in both of these: `/* */` and
`/** */`; the latter should extend w/ a `*` prefixed line, while the
former does not.)
Release Notes:
- BREAKING CHANGE: update extension schema version from 1 to 2, change
format of `block_comment` and rename `documentation_comment`
/cc @smitbarmase
Change channel reorganization (move up/down) from `cmd-up/down` (mac) /
`ctrl-up/down` (linux) to `alt-up/down` (both) to match moving lines in
the editor.
Also fix an issue where if you selected channels using down/up in the
filter field, the movement shortcuts would not work (`editing` vs
`not_editing`).
Release Notes:
- N/A
Peter Tripp
created
2bc6e18
Ensure `disable_ai` is properly respected (#34941)
Click to expand commit body
Quick follow up to #34896 which ensures that the Agent Panel cannot be
caught by actions like `workspace: toggle left dock` when `disable_ai`
is set to true.
Also removes a method that was introduced but unused in the workspace
because `first_enabled_panel_idx` already covers all cases this method
could be useful for.
Release Notes:
- N/A
This commit adds an example with deep children hierarchy.
The depth of a tree can be tweaked with GPUI_TREE_DEPTH env variable.
With depth=100
<img width="301" height="330" alt="image"
src="https://github.com/user-attachments/assets/844cd285-c5f3-4410-a74e-981bf093ba2e"
/>
With this example, I can trigger a stack overflow at depth=633 (and
higher).
Release Notes:
- N/A
Piotr Osiewicz
created
6cd3726
Revert "chore: Bump taffy to 0.8.3" (#34938)
7db110f
sum_tree: Utilize `size_hint` in `TreeSet::extend` (#34936)
Click to expand commit body
Collect the iterator instead of manually looping over it to utilize
possible size hints. Zed usually passes in owned `Vec`'s, meaning we get
to reuse memory as well.
Release Notes:
- N/A
tidely
created
6122f46
project: Fix search filter patterns on remote projects (#34748)
Click to expand commit body
we were join(",") and split(",") to serialize the patterns.
This doesn't work when pattern includes a ","
example: *.{ts,tsx} (very common pattern used by agent)
help needed:
how will this work on version mismatch?
Release Notes:
- Fixed search filter patterns on remote projects.
maan2003
created
500ceaa
Add an `editor: diff clipboard with selection` action (#33283)
Click to expand commit body
https://github.com/user-attachments/assets/d472fbdd-7736-4bd7-8a90-8cca356b2815
This PR adds `editor: diff clipboard with selection` - good for spotting
the differences in eerily-similar code, which is when refactoring code,
as you need to see what needs to be passed in in order to maintain
previous behavior of both snippets.
1. Copy some text from anywhere
2. Highlight some text in Zed
3. Run `editor: diff clipboard with selection`
Like JetBrains' IDEs and VS Code with the `PartialDiff` package, if the
selection is empty, we take the entire buffer as the selection.
Caveats:
- We do not know the language of the text in the clipboard. I went ahead
and just assumed that in most cases, it will be the same language as the
selected text, which does mean we will highlight the old text
incorrectly if they are copying from a different language, but I think
in most cases, it will be the same, and the alternative of always having
no syntax highlighting is worse. PyCharm seems to do the same thing.
Release Notes:
- Added an `editor: diff clipboard with selection` action
---------
Co-authored-by: Junkui Zhang <364772080@qq.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Joseph T. Lyons
,
Junkui Zhang
, and
Ben Kunkle
created
3e27fa1
gpui: Allow Animation to be cloned (#34933)
Click to expand commit body
Release Notes:
- N/A
---
Let `Animation` able to clone, then we can define one to share for
multiple places.
For example:
<img width="914" height="637" alt="image"
src="https://github.com/user-attachments/assets/8eafb318-afba-4399-a975-d83cb7afe74c"
/>
Jason Lee
created
11ac83f
workspace: Fix closing remote workspace restores last local workspace on startup (#34931)
Click to expand commit body
Closes #7759
While opening a new SSH project if we are reusing an existing window,
i.e. drop the existing workspace and create a new one, then before
dropping it, we should remove `session_id` from that workspace's
serialized entry. That way:
1. Upon closing (cmd-w) this remote workspace (which also clears
`session_id` for this), and then quitting. No workspace with that
`session_id` is found, and it starts fresh.
2. Upon directly quitting (cmd-q) this remote workspace, only this
workspace exists in db (among two of them) with that `session_id`, and
it restores correctly.
Release Notes:
- Fixed an issue while closing remote workspace restores last local
workspace on startup.
Smit Barmase
created
e90cf0b
workspace: Fix last removed folder from workspace used to reopen on Zed startup (#34925)
Click to expand commit body
Closes #34924
Now, when `local_paths` are empty, we detach `session_id` from that
workspace serialization item. This way, when we restore it using the
default "last_session", we don't restore this workspace back. This is
same as when we use `cmd-w` to close window, which also sets
`session_id` to `None` before serialization.
Release Notes:
- Fixed an issue where last removed folder from workspace used to reopen
on Zed startup.
The license file is not properly linked to actual license. This was
casued due to new-crate script linking the license to wrong file. Fixed
both of them.
Reference logs:
```
2025-07-22T17:16:19+05:30 ERROR [worktree] error reading target of symlink "/Users/umesh/code/zed/crates/onboarding/LICENSE-GPL": canonicalizing
```
Release Notes:
- N/A
Umesh Yadav
created
446d333
debugger: Fix debug console persist to history when reusing a previous item (#34893)
Click to expand commit body
Closes #34887
Release Notes:
- Debugger: Fix debug console persist to history when reusing a previous
item
Remco Smits
created
c0f75e1
debugger: Fix built-in JavaScript debug tasks were not working due missing `type` field value (#34894)
Click to expand commit body
Release Notes:
- Debugger: Fix built-in JavaScript debug tasks were not working due
missing `type` field value
99466f4
Make zooming from menus not persist (#34910)
Click to expand commit body
Closes: https://github.com/zed-industries/zed/issues/34479
Follow-up to: https://github.com/zed-industries/zed/issues/23505
View->Zoom In / Zoom Out / Reset Zoom were not reverted to match when
the default keybindings were reverted.
Release Notes:
- N/A
Peter Tripp
created
9e280d0
collab: Remove unneeded caching of Stripe price IDs by meter ID (#34915)
Click to expand commit body
This PR removes the caching of Stripe price IDs by meter ID on the
`StripeBilling` object, as we weren't actually reading them anywhere.
Release Notes:
- N/A
Marshall Bowers
created
d81a817
Bind "j k" to `NormalBefore` in initial keymap examples (#34912)
Click to expand commit body
It looks like typically vim configurations bind "j k" to be the same as
escape, which has the "NormalBefore" behavior positioning the block
cursor on the character before the insertion cursor. The [vim mode
docs](https://zed.dev/docs/vim#useful-contexts-for-vim-mode-key-bindings)
also use NormalBefore here.
Thanks to @omniwrench for mentioning this in
https://github.com/zed-industries/zed/discussions/6661#discussioncomment-13848043
. This was a mistake in #31163.
Release Notes:
- N/A
Michael Sloan
created
14cea06
keymap_ui: Fix panic in clear keystrokes (#34909)
caa520c
workspace: Clean up empty panes left over from file opening failures (#34908)
Click to expand commit body
Closes #34583
Release Notes:
- Fixed empty pane being left after a binary file is dropped into a new
pane.s
Piotr Osiewicz
created
64d0fec
sum_tree: Store context on cursor (#34904)
Click to expand commit body
This gets rid of the need to pass context to all cursor functions. In
practice context is always immutable when interacting with cursors.
A nicety of this is in the follow-up PR we will be able to implement
Iterator for all Cursors/filter cursors (hell, we may be able to get rid
of filter cursor altogether, as it is just a custom `filter` impl on
iterator trait).
Release Notes:
- N/A