63032f6
Fix redirect stdin command for fish shell (#39963)
Click to expand commit body
This fixes an issue introduced via
[v0.208.0-pre](https://github.com/zed-industries/zed/releases/tag/v0.208.0-pre)
and reported via
https://github.com/zed-industries/zed/issues/34530#issuecomment-3386042577
where, when using fish shell as the default shell and using a Claude
Code thread in Zed, all command were failing because `(command)` in fish
is for command substitution. Using it creates this type of error:
```
fish: command substitutions not allowed in command position. Try var=(your-cmd) $var ...
(npm ci) </dev/null
^~~~~~~~~~~~^
```
or in the editor itself:
<img width="1624" height="1060" alt="image"
src="https://github.com/user-attachments/assets/64fc3126-2cdd-450e-bc85-ef91c56b3705"
/>
Using the appropriate syntax to redirect to stdin for fish fixes the
issue.
Release Notes:
- Fixed redirect stdin command for fish shell
Kevin Rambaud
created
5f857ff
Fix menu navigation in remote projects modal (#39965)
Click to expand commit body
Previously we were always adding a `Navigable` entry for the "new WSL
connection" option in this modal, even though we don't have the
corresponding button on non-Windows. This was causing `menu::SelectNext`
to behave incorrectly (focusing the center pane instead) when `Connect
New Server` was selected on macOS and Linux.
Release Notes:
- Fixed a bug with keyboard navigation in the remote project modal.
Closes #39263
Release Notes:
- N/A
from
https://github.com/zed-industries/zed/issues/39263#issuecomment-3358220988
>
> > If you replace that code with
> >
> > let adapter: IDXGIAdapter1 = unsafe {
> > dxgi_factory.EnumAdapters(adapter_index)
> > }?.cast()?;
> >
> > does it not select the right GPU?
>
> @reflectronic That does seem to select the active gpu for me, meaning
whichever GPU is currently connected. This is a much simpler solution
than the one I have here
(https://github.com/zed-industries/zed/pull/39264 - updated) and while
I'm sure I could imagine someone wanting to choose their GPU to render
Zed on, that may not be something that the application really needs to
support.
>
> I have a branch with just this as the only change that I can push to
that PR if the simpler solution is preferred.
>
> ```rust
> let adapter: IDXGIAdapter1 = unsafe {
> dxgi_factory.EnumAdapters(adapter_index)?.cast()?
> };
> ```
Gathering LSP declarations in zeta_cli can take a really long time for
big repos and has to be started from scratch if interrupted.
Instead of writing the cache file once we have walked the whole
worktree, we'll now do so incrementally as we complete each file. On
subsequent runs, we'll load as many valid declarations as has been
previously written to the cache, and then continue to request the rest
from the LSP which will append to the existing file as it makes
progress. If the last cache entry is incomplete, we'll truncate the
cache file to the end of the last valid line and continue from there, so
we can just `ctrl-c` without breaking resumability.
Release Notes:
- N/A
Agus Zubiaga
created
41ee92e
agent_ui: Improve quote selections to consider message being edited (#39947)
Click to expand commit body
- Update `AcpThreadView.insert_selections` to take into account whether
the user is currently editing an existing message and, if it is, insert
the selection into that message instead of the thread's message editor
- Update Window's default keymap to use the `agent::QuoteSelection`
action instead of the deprecated `assistant::QuoteSelection` action
- Introduce `AcpThreadView.active_editor` to allow callers to retrieve
either the thread view's message editor or the editor for the message
being edited, in case `AcpThreadView.editing_message` is not `None`
- Improve `AcpThreadView.focus_handle` to focus on the message being
currently edited in case the user navigates back to the editor and then
to the thread view again, all while editing a message
- Add tests for `AcpThreadView.insert_selections`, ensuring that the
selection is inserted in the message being currently edited, if a
message is being edited, or the thread view's message editor if no
message is being edited
Closes #39693
Release Notes:
- Improved `agent: quote selection` to also work for a message that was
already sent but is being edited
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
The feedback modal did not match our keyboard-driven design. We can
revisit this later if we want, but for now, removing it makes sense. All
actions have been inlined in the `Help` menu to maintain
discoverability.
Additionally, not all feedback-based actions in the command palette were
namespaced under `feedback:`, and now they are, so they can all be found
there easily.
Release Notes:
- Notice: The `Give Feedback` modal has been removed. The options to
file bug reports, feature requests, email us, and open the Zed
repository can now be found within the `Help` menu directly. The command
palette actions have undergone the following changes:
- `feedback: give feedback` (removed)
- `feedback: file bug report` (no change)
- `zed: request feature` β `feedback: request feature`
- `zed: email zed` β `feedback: email zed`
- `zed: open zed repo` β `contribute: open zed repo`
Joseph T. Lyons
created
5698636
Change windows asset name to match other platforms (#39936)
localcc
created
bbd7359
Fix settings window on Linux/Windows being immovable (#39939)
localcc
created
3d5ddcc
ollama: Resolve context window size via API (#39941)
Click to expand commit body
Previously we were guessing the context window size here:
https://github.com/zed-industries/zed/blob/8c3f09e31e3588a2494042dfe77bb3dccab1f7ba/crates/ollama/src/ollama.rs#L22
This is inaccurate and must be updated manually. This PR ensures that we
extract the context window size from the request in the same way that
the Ollama CLI does when running `ollama show <model-name>` (Relevant
code is
[here](https://github.com/ollama/ollama/blob/3d32249c749c6f77c1dc8a7cb55ae74fc2f4c08b/cmd/cmd.go#L860))
The format looks like this:
```json
{
"model_info": {
"general.architecture": "llama",
"llama.context_length": 132000
}
}
```
Once this PR is merged we could technically remove the old code
https://github.com/zed-industries/zed/blob/8c3f09e31e3588a2494042dfe77bb3dccab1f7ba/crates/ollama/src/ollama.rs#L22
I decided to keep it for now, as it is unclear if the necessary fields
are available via the API on older Ollama versions.
Release Notes:
- Fixed an issue where Ollama models would use the wrong context window
size
Bennet Bo Fenner
created
4dae3a1
gpui: Fix uniform list scroll to offset for Top and Bottom strategies (#39938)
Click to expand commit body
Closes #39863
Regressed in https://github.com/zed-industries/zed/pull/36653
Release Notes:
- Fixed an issue where clicking a sticky item in the project panel
wouldnβt correctly scroll the view to show its start.
Smit Barmase
created
c6373cc
Enable test_remote_git_diffs_when_recv_update_repository_delay on Windows (#39866)
Click to expand commit body
Release Notes:
- N/A
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
Xiaobo Liu
created
a4ec693
windows: Don't throw an error when the settings file is empty (#39908)
Click to expand commit body
Closes #39585
Release Notes:
- N/A
Cole Miller
created
08a2b68
Add a non-beta Windows issue template (#39904)
Click to expand commit body
The beta template will be removed after Windows launch, the new url will
be:
https://github.com/zed-industries/zed/issues/new?template=07_bug_windows.yml
Release Notes:
- N/A
Joseph T. Lyons
created
13b17b3
ui: Make tree view item styles more consistent with similar components (#39892)
Click to expand commit body
This is a small step toward a future where all tree view item-like
elements in Zed can actually use this component.
Release Notes:
- N/A
Danilo Leal
created
e4f0fbb
settings_ui: Fix page scroll bar lagging behind when jumping to a section (#39897)
Click to expand commit body
The issue was caused by the scroll handle taking a couple of frames to
update its offset correctly after calling
`ScrollHandle::scroll_to_top_of_item`. The fast fix is forcing 3 frames
to render back-to-back.
In the future, we should look into `ScrollHandle` and see if there's any
way to update its state outside of paint.
Release Notes:
- N/A
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Katie Geer <katie@zed.dev>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Anthony Eid
,
Danilo Leal
,
Mikayla Maki
,
Katie Geer
, and
Ben Kunkle
created
98d4c34
settings_ui: Restore settings UI keybinding hint (#39896)
Click to expand commit body
Now that the toggle nav focus works well, we can advertise it!
Release Notes:
- N/A
Mikayla Maki
created
c24f365
Fix Git permalinks not being URL-escaped (#39895)
Click to expand commit body
Closes #39875
Release Notes:
- Fixed "open/copy permalink to line" paths not being URL-escaped
Co-authored-by: Cole Miller <cole@zed.dev>
e946a06
markdown: Add Support for HTML `img` tags in text (#38107)
Click to expand commit body
Re-adds: https://github.com/zed-industries/zed/pull/37264
This PR re-adds basic support for showing HTML images, without touching
the display mode for images.
The initial PR changed the `div().flex().flex_col()` to
`h_flex().flex_wrap()` but this broke the text wrapping in almost all
cases.
**Note**: This does not add support for showing the images inline,
because we haven't figured out how they correctly do this.
I'm working on adding the CSS `inline` display feature support to taffy
that hopefully allows us to correctly show images/other elements inline
without breaking the text wrapping.
**Before (nightly) and after (dev) for the README file inside Zed.
(nothing has changed, which is good)**
<img width="3440" height="1380" alt="Screenshot 2025-09-13 at 12 49 08"
src="https://github.com/user-attachments/assets/9cbdcb07-dbe9-4236-9d20-e59acc0e955e"
/>
**Result**
<img width="1717" height="1314" alt="Screenshot 2025-09-13 at 12 51 54"
src="https://github.com/user-attachments/assets/1c0f8507-c63d-472e-8e82-a654a63f7153"
/>
cc @SomeoneToIgnore
Release Notes:
- markdown preview: Added support for HTML `img` tags inside paragraphs
Remco Smits
created
75067c9
gpui: Fix ascent/descent calculation on macOS (#39886)
Click to expand commit body
As you can see in the image, we were previously returning different
`ascent`s/`descent`s when a line would/would not contain an Emoji.
<img width="104" height="36" alt="image"
src="https://github.com/user-attachments/assets/436aeda0-87c0-4dee-943b-6da83681d466"
/>
---
CoreTexts `CTLineGetTypographicBounds` seems to return a different
ascent/descent depending on if an Emoji is there or not AFAIK it is not
documented if this is intended behaviour or not. For us it is
undesirable, as typing an Emoji causes the line to be shifted to the
bottom, see here:
https://github.com/user-attachments/assets/2ad1c82e-6297-48ac-a522-fb382ea56eea
---
Instead of using `CTLineGetTypographicBounds` to resolve the
ascent/descent, we look at every run and choose the maximum
ascent/descent. This matches how it [works on
Linux](https://github.com/zed-industries/zed/blob/f1d17fcfbef41690fdeb523f0fbddc7c406c5ad6/crates/gpui/src/platform/linux/text_system.rs#L452)
Release Notes:
- Fixed an issue on macOS where typing an emoji on a line would cause
the line to shift downwards by a few pixels
Closes #38189
- Fixed border dashed for diverse scenarios, as demonstrated in the
images below.
- This change has no impact on the rendering of solid borders, as it was
implemented inside an if block for dashed styles
Release Notes:
- N/A
## Before Images
<details><summary>click to expand (small top border, medium right
border, large bottom border)</summary>
<img width="289" height="95" alt="Screenshot From 2025-09-15 13-28-14"
src="https://github.com/user-attachments/assets/5226cd0a-49c2-43b8-9df9-f64390e3759e"
/>
</details>
<details><summary> click to expand (Same size pairs of borders)
</summary>
<img width="289" height="95" alt="Screenshot From 2025-09-15 13-32-22"
src="https://github.com/user-attachments/assets/603e7b49-e8b1-45a4-ac35-1b3aedf52bca"
/>
<img width="289" height="95" alt="Screenshot From 2025-09-15 13-33-24"
src="https://github.com/user-attachments/assets/4243786c-4c9d-4419-91d6-4594b5ee4390"
/>
</details>
## After Images
<details><summary>click to expand (small top border, medium right
border, large bottom border)</summary>
<img width="289" height="95" alt="Screenshot From 2025-09-15 13-17-28"
src="https://github.com/user-attachments/assets/e2652b38-1c24-432e-b7fd-c6f4d4c71de6"
/>
</details>
<details><summary> click to expand (same size pairs of
borders)</summary>
<img width="289" height="95" alt="Screenshot From 2025-09-15 13-37-59"
src="https://github.com/user-attachments/assets/05228431-4a91-4531-adcd-d70acd2c3b44"
/>
<img width="289" height="95" alt="Screenshot From 2025-09-15 13-36-34"
src="https://github.com/user-attachments/assets/6da946b8-1ccd-4ed1-9b38-539eba4edf42"
/>
</details>
c58931a
git_ui: Fix open diff for untracked files when sorting by path enabled (#39862)
Click to expand commit body
Fixes the `Open Diff` action for untracked files when the `sort_by_path`
setting is enabled. The `ProjectDiff` wasn't correctly moving the
multibuffer's cursor to the untracked file because, when that setting is
enabled, it's sort prefix is changed to the tracked files sort prefix, and that
wasn't accounted for in `move_to_entry`.
Before these changes, the `sort_prefix` field for `PathKey` was called `namespace`, it was renamed to be clearer what its purpose is.
Closes #39529
Release Notes:
- Fixed 'Open Diff' action for untracked files when `sort_by_path` is
enabled
---------
Co-authored-by: David Kleingeld <davidsk@zed.dev>
Dino
and
David Kleingeld
created
dd5da59
Provide codex as an option on remote sessions (#39774)
Click to expand commit body
Release Notes:
- N/A
---------
Co-authored-by: Cole Miller <cole@zed.dev>
Ben Brandt
and
Cole Miller
created
f1d17fc
acp: Simplify auth check and allow for custom /logout commands (#39867)
Click to expand commit body
- Prefer agent-specific logout handling to allow state reset
- Treat any auth method as supported; remove provider-specific filter
- Avoid prompting auth when issuing /logout and agent supports it
Release Notes:
- N/A
Fixes: https://github.com/longbridge/gpui-component/issues/994
1. When SVG is rotated, incorrect graphics are drawn.
For example: the original aspect ratio of the SVG is 1:1, if the bounds
used to render the SVG are 400x200 (aspect ratio 2:1),
[here](https://github.com/zed-industries/zed/blob/21f985a018f7cca9c0fb7f5b7a87555486ab9db5/crates/gpui/src/svg_renderer.rs#L91)
the width is used as the scaling factor, causing the rendered SVG to
only have half the height. This PR ensures the complete SVG image is
always rendered.
2. The clipping region has no transformation applied, I added a function
called `distance_from_clip_rect_transformed` in the shader.
3. Fixed `monochrome_sprite_fragment` in `shader.metal` not applying
clipping region.
### Before:
https://github.com/user-attachments/assets/8f93ac36-281e-4837-96cd-c308bfbf92d1
### After:
https://github.com/user-attachments/assets/f52b67a6-4cb9-4d6c-b759-bbb91b59c1cf
Release Notes:
- N/A
---------
Co-authored-by: Jason Lee <huacnlee@gmail.com>
Sunli
and
Jason Lee
created
3d4f488
vim: Update change surrounds to match vim's behavior (#38721)
Click to expand commit body
These changes refactor the whitespace handling logic for Vim's change
surrounds command (`cs`), making its behavior closely match
[tpope/vim-surround](https://github.com/tpope/vim-surround), following
[this
discussion](https://github.com/zed-industries/zed/issues/38169#issuecomment-3304129461).
Zed's current implementation has two main differences when compared to
[tpope/vim-surround](https://github.com/tpope/vim-surround):
- It only considers whether a single space should be added or removed,
instead of all the space that is between the surrounding character and
the content
- It only takes into consideration the new surrounding characters in
order to determine whether to add or remove that space
A review of
[tpope/vim-surround](https://github.com/tpope/vim-surround)'s behavior
reveals these rules for whitespace:
* Quote to Quote
* Whitespace is never changed
* Quote to Bracket
* If opening bracket, add one space
* If closing bracket, do not add space
* Bracket to Bracket
* If opening to opening, keep only one space
* If opening to closing, remove all space
* If closing to opening, add one space
* If closing to closing, do not change space
* Bracket to Quote
* If opening, remove all space
* If closing, preserve all space
Below is a table with examples for each scenario. A new test has also
been added to specifically check the scenarios outlined above,
`vim::surrounds::test::test_change_surrounds_vim`.
| Type | Before | Command | After |
|-------------------|-------------|---------|---------------|
| Quote β Quote | `' a '` | `cs'"` | `" a "` |
| Quote β Quote | `" a "` | `cs"'` | `' a '` |
| Quote β Bracket | `' a '` | `cs'{` | `{ a }` |
| Quote β Bracket | `' a '` | `cs'}` | `{ a }` |
| Bracket β Bracket | `[ a ]` | `cs[{` | `{ a }` |
| Bracket β Bracket | `[ a ]` | `cs[}` | `{a}` |
| Bracket β Bracket | `[ a ]` | `cs]{` | `{ a }` |
| Bracket β Bracket | `[ a ]` | `cs]}` | `{ a }` |
| Bracket β Quote | `[ a ]` | `cs['` | `'a'` |
| Bracket β Quote | `[ a ]` | `cs]'` | `' a '` |
These changes diverge from
[tpope/vim-surround](https://github.com/tpope/vim-surround) when
handling newlines. For example, with the following snippet:
```rust
fn test_surround() {
if 2 > 1 {
println!("place cursor here");
}
};
```
Placing the cursor inside the string and running any combination of
β`cs{[`, β`cs{]`, β`cs}[`, or β`cs}]` would previously remove newline
characters. With these changes, using commands like β`cs}]` will now
preserve newlines.
Related to #38169
Closes #39334
Release Notes:
- Improved Vimβs change surround command to closely match
[tpope/vim-surround](https://github.com/tpope/vim-surround)Β behavior.
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Dino
and
Conrad Irwin
created
ba2337f
project search: Reduce hangs on main thread (#39857)
Click to expand commit body
This takes the idea that @RemcoSmitsDev started on in
https://github.com/zed-industries/zed/pull/39354. We did away with
grabbing a snapshot of the display map when buffer coordinates were
sufficient.
Closes #37267
Release Notes:
- Reduced micro-stutters in project search with large multi-buffer
contents.
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
3d200a5
settings_ui: Improve keyboard nav (#39819)
Click to expand commit body
Closes #ISSUE
From notes:
```markdown
- [x] Clicking on the disclsoure icon button in the root-level tree view item should steal focus and move it to the root item (not the icon button)
- [x] [@ben] Allow left/right arrow keys to expand/collapse root tree view items in the nav
- [x] With this, make enter/space work the same as clicking (activate page, don't expand root items, focus moves to the content and leaves nav β becomes consistent with mouse interaction)
- [x] Smart cmd-shift-e: toggling focus should take you to the selected item
- [x] [@ben] pageup + pagedown in nav -> jump between root items
- [x] [@ben] home + end buttons should work
- in nav:
- home always goes to first section header
- end always goes to last _visible_ item (does not expand)
```
Release Notes:
- N/A *or* Added/Fixed/Improved ...
Align with
https://github.com/zed-industries/zed/blob/cd656485c863fcf3c1cc9cb1f00cd4b29b976fb1/crates/settings/src/settings_content/workspace.rs#L490
By the way, LOVE the settings UI! <3 Great job so far :)
Release Notes:
- N/A
Matthijs Kok
created
ef839cc
Improve importing font-family settings from VS Code (#39736)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/39259
- Fixes import of `editor.fontFamily` (we were looking for the wrong
key)
- Adds basic support for the CSS font-family syntax used by VS Code,
including font fallback
Release Notes:
- N/A
John Tur
created
3d0312f
zeta2 inspector: Sort by scores and add score components tooltip (#39821)
Click to expand commit body
Release Notes:
- N/A
Co-authored-by: Agus <agus@zed.dev>
Michael Sloan
and
Agus
created
c1e3958
editor: Fix duplicate and copy line newlines (#39610)
Click to expand commit body
Closes #34797 and its child #39508.

Release Notes:
- Fixed `editor::DuplicateLineUp` duplicating the last line onto itself
when the line doesn't end with a newline (#39508)
- Fixed line copy not including a newline at end of buffer, causing
paste to occur on the same line (#34797)
<img width="1648" height="976" alt="Screenshot 2025-10-07 at 6 57 20β―PM"
src="https://github.com/user-attachments/assets/ae7289c0-8820-4fdf-ae28-84fb6bd64942"
/>
Fixes #39347
Release Notes:
- Improved onboarding UI by collapsing it to a single page
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>
Co-authored-by: Lukas Wirth <me@lukaswirth.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Andrew Farkas
,
dino
,
Lukas Wirth
,
Mikayla Maki
,
Anthony Eid
, and
Mikayla Maki
created
4dbd186
Do not deselect in terminal on copy by default (#39814)
Click to expand commit body
Release Notes:
- Flips `terminal.keep_selection_on_copy` default to `true`
Kirill Bulatov
created
88887fd
debugger: Add support for remote browser debugging (#39248)
Click to expand commit body
This PR adds support for browser debugging in SSH and WSL projects. We
use the vscode-js-debug-companion extension, repackaged as a standalone
CLI (https://github.com/zed-industries/js-debug-companion-cli).
Closes #38878
Release Notes:
- debugger: Browser debugging is now supported in SSH and WSL projects.
---------
Co-authored-by: Nia <nia@zed.dev>
Cole Miller
and
Nia
created
31e75b2
git_ui: Add repository search and alphabetical sorting (#39351)
Click to expand commit body
Closes #38778
Release Notes:
- Added: Search functionality to repository selector
- Improved: Repositories now display in alphabetical order
This feature allows users to add a new, untracked file to `.gitignore`
by using the context menu in the git panel.
<img width="300" alt="Demo screen shot"
src="https://github.com/user-attachments/assets/3f2402fb-9337-42f8-939f-dac12ca09518"
/>
Release Notes:
- Added feature to add a new file to `.gitignore`
robert7k
created
439add3
terminal: Clear shell after activating (#39798)
Click to expand commit body
Two tweaks were required to ensure we correctly clear the shell after
running an activate script(s):
1. PowerShell upon receiving `\r\n` input, will enter the continuation
mode (>>). To avoid this, we send an "enter" key press instead `\x0d`.
2. In order to clear the terminal _after_ issuing all activation
commands, we need to take into account the asynchronous nature of the
activation process:
- We write the command to run the script to PTY
- We send "enter" (It is now being processed by the shell) At this point
we need to wait for the shell to finish executing before we clear the
terminal. Otherwise we will create a race where we might clear the
terminal _before_ the shell finished executing the activation script(s).
- Write `clear`/`cls` command to PTY
- Send "enter" This way we guarantee that we clear the terminal _after_
all scripts were executed.
Closes #38474
Release Notes:
- N/A
Jakub Konka
created
81b98cd
go: Add ability to run testable examples (#39390)
Click to expand commit body
See related discussion #39381.
<img width="724" height="488"
src="https://github.com/user-attachments/assets/4a69e13e-783f-45d7-99f4-e23c0415a781"
/>
Release Notes:
- Added ability to run Go Testable Examples
Lev Zakharov
created
ca89a40
zeta2 inspector: Plan prompt locally (#39811)
Click to expand commit body
Plans and displays the prompt locally before the response arrives.
Helpful while debugging prompt planning.
Release Notes:
- N/A
---------
Co-authored-by: Michael Sloan <mgsloan@gmail.com>
Agus Zubiaga
and
Michael Sloan
created
f5884e9
audio: Move `log::info` into a global import (#39810)
Click to expand commit body
I didn't find a commit, but it's now required for all platforms, I got
this compile error with 0.207.3 tag
```
error: cannot find macro `info` in this scope
--> crates\audio\src\audio.rs:121:13
|
121 | info!("Output stream: {:?}", output_handle);
| ^^^^
|
help: consider importing this macro
|
1 + use log::info;
|
error: could not compile `audio` (lib) due to 1 previous error
```
Closes #ISSUE
Release Notes:
- N/A