f669540
v0.206.x stable
Joseph T. Lyons created
f669540
v0.206.x stable
Joseph T. Lyons created
da48536
copilot: Ensure minimum Node version (#38945)
Closes #38918 Release Notes: - N/A
Smit Barmase created
7eacefd
worktree: Remove unwrap in BackgroundScanner::update_ignore_status (#39191)
We've seen this panic come up in the last two weeks, which might be caused by #33592. However, we are not sure what paths can cause this `unwrap()` to fail. Therefore adding some logging around this, so that the next time someone opens a bug report we can further diagnose the issue. Fixes ZED-1F6 Release Notes: - Fixed an issue where Zed could crash when including specific paths in a global `.gitignore` files
Bennet Bo Fenner created
cd9eb77
Fix bug in code action formatter handling (#39246)
Closes #39112 Release Notes: - Fixed an issue when using code actions on format where specifying multiple code actions in the same code actions block that resolved to code actions from different language servers could result in conflicting edits being applied and mangled buffer text.
Ben Kunkle created
62f2df9
zed 0.206.6
Joseph T. Lyons created
6412621
debugger: Fix python debug scenario not showing up in code actions (#39224)
The bug happened because the Python locator was checking for a quote before the ZED task variable. Removing that part of the check fixed the issue. Closes #39179 Release Notes: - Fix Python debug tasks not showing up in code actions or debug picker
Anthony Eid created
bc42327
terminals: Remove (now) incorrect alacritty workaround for task spawning
Lukas Wirth created
fa163e7
gpui: Respect font smoothing on macOS (#39197)
- Closes #38847 - See also: #37622 and #38467 Release Notes: - Fonts are now rendered in accordance with the `AppleFontSmoothing` setting.
Sergei Zharinov created
5041b51
acp: Notify of latest agent version only after successful download (#39201)
Before we would notify the user even if the download failed. We also we're overwriting the directory, which means a user could be stuck in a loop if a previous download failed Release Notes: - acp: Fix user seeing update prompt in a loop because of a previous failed download
Ben Brandt created
b801ab8
Fix panic in UnwrapSyntaxNode (#39139)
Closes #39139 Fixes ZED-1HY Release Notes: - Fixed a panic in UnwrapSyntaxNode in multi-buffers
Conrad Irwin created
e2b5fbc
zed 0.206.5
Joseph T. Lyons created
8e75ee6
Default to Sonnet 4.5 in BYOK (#39132)
<img width="381" height="204" alt="Screenshot 2025-09-29 at 2 29 58 PM" src="https://github.com/user-attachments/assets/c7aaf0b0-b09b-4ed9-8113-8d7b18eefc2f" /> Release Notes: - Claude Sonnet 4.5 and 4.5 Thinking are now the recommended Anthropic models
Richard Feldman created
3dcae67
Add Sonnet 4.5 support (#39127)
Release Notes: - Added support for Claude Sonnet 4.5 for Bring-Your-Own-Key (BYOK)
Richard Feldman created
e1876a1
Bump to 0.206.4 for @ConradIrwin
Zed Bot created
c81b4c8
acp: Add NO_PROXY if not set otherwise to not proxy localhost urls (#39100)
Since we might run MCP servers locally for an agent, we don't want to use the proxy for those. We set this if the user has set a proxy, but not a custom NO_PROXY env var. Closes #38839 Release Notes: - acp: Don't run local mcp servers through proxy, if set
Ben Brandt created
d54783b
acp_thread: Fix terminal tool incorrectly redirecting stdin to `/dev/null`
Lukas Wirth created
8baaea6
auto_update: Unmount update disk image in the background (#38867)
Release Notes: - Fixed potentially temporarily hanging on macOS when updating the app
Lukas Wirth created
3ff1eef
zed 0.206.3
Joseph T. Lyons created
2828705
Revert "Fix arrow function detection in TypeScript/JavaScript outline (#38411)" (#38982)
This reverts commit 1bbf98aea6f335e791f19d8f76ba8a5f0510937f. We found that #38411 caused problems where anonymous functions are included too many times in the outline. We'd like to figure out a better fix before shipping this to stable. Fixes #38956 Release Notes: - (preview only) revert changes to outline view
Conrad Irwin created
a3f2838
editor: Fix predict edit at cursor action when show_edit_predictions is false (#38821)
Closes #37601 Regressed in https://github.com/zed-industries/zed/pull/36469. Edit: Original issue https://github.com/zed-industries/zed/issues/25744 is fixed for Zeta in this PR. For Copilot, it will be covered in a follow-up. In the case of Copilot, even after discarding, we still get a prediction on suggest, which is a bug. Release Notes: - Fixed issue where predict edit at cursor didn't work when `show_edit_predictions` is `false`.
Smit Barmase created
aeddd51
python: Fix ty archive extraction on Linux (#38917)
Closes #38553 Release Notes: - Fixed wrong AssetKind specified on linux for ty As discussed in the linked issue. All of the non windows assets for ty are `tar.gz` files. This change applies that fix.
Derek Nguyen created
5e4d397
zed 0.206.2
Joseph T. Lyons created
0f0f9c9
acp: Use ACP error types in read_text_file (#38863)
- Map path lookup and internal failures to acp::Error - Return INVALID_PARAMS for reads beyond EOF Release Notes: - acp: Return more informative error types from `read_text_file` to agents
Ben Brandt created
4ee165d
acp: Fix `read_text_file` erroring on empty files (#38856)
The previous validation was too strict and didn't permit reading empty files. Addresses: https://github.com/google-gemini/gemini-cli/issues/9280 Release Notes: - acp: Fix `read_text_file` returning errors for empty files
Ben Brandt created
94d19ba
Bump to 0.206.1 for @ConradIrwin
Zed Bot created
70cb2f5
Whitespace map more (#38827)
Release Notes: - N/A
Conrad Irwin created
15baa8f
Only allow single chars for whitespace map (#38825)
Release Notes: - Only allow single characters in the whitespace map
Conrad Irwin created
c68345f
editor: Fix invalid anchors in `hover_links::surrounding_filename` (#38766)
Fixes ZED-1K3 Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
72007a0
editor: Prevent panics in `BlockChunks` if the block spans more than 128 lines (#38763)
Not an ideal fix, but a proper one will require restructuring the iterator state (which would be easier if Rust had first class generators) Fixes ZED-1MB Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created
c686026
v0.206.x preview
Joseph T. Lyons created
831de8e
zeta2: Include edits in prompt and add `max_prompt_bytes` param (#38737)
Release Notes: - N/A Co-authored-by: Michael Sloan <mgsloan@gmail.com>
Agus Zubiaga and Michael Sloan created
bc52841
Preserve trailing newline in `TerminalOutput::full_text` (#38061)
Closes #30678 This is caused by `TerminalOutput::full_text` triming trailing newline when creating the "REPL Output" buffer. Release Notes: - fix: Preserve trailing newline in `TerminalOutput::full_text`
ImFeH2 created
9ac511e
zeta2: Collect nearby diagnostics (#38732)
Release Notes: - N/A Co-authored-by: Bennet <bennet@zed.dev>
Michael Sloan and Bennet created
afaed3a
Windows: Fix keybinds for onboarding dialog (#38730)
Closes: https://github.com/zed-industries/zed/issues/38482 - Previously fixed by: https://github.com/zed-industries/zed/pull/36712 - Regressed in: https://github.com/zed-industries/zed/pull/36572 Release Notes: - N/A
Peter Tripp created
f78699e
Update plan text (#38731)
Release Notes: - N/A --------- Co-authored-by: David Kleingeld <davidsk@zed.dev>
Marshall Bowers and David Kleingeld created
3646aa6
language_models: Actually override Ollama model from settings (#38628)
The current problem is that if I specify model parameters, like
`max_tokens`, in `settings.json` for an Ollama model, they do not
override the values coming from the Ollama API. Instead, the parameters
from the API are used. For example, in the settings below, even though I
have overridden `max_tokens`, Zed will still use the API's default
`context_length` of 4k.
```
"language_models": {
"ollama": {
"available_models": [
{
"name": "qwen3-coder:latest",
"display_name": "Qwen 3 Coder",
"max_tokens": 64000,
"supports_tools": true,
"keep_alive": "15m",
"supports_thinking": false,
"supports_images": false
}
]
}
},
```
Release Notes:
- Fixed an issue where Ollama model parameters were not being correctly
overridden by user settings.
Umesh Yadav created
dc20a41
windows: Encrypt SSH passwords stored in memory (#38427)
Release Notes: - N/A --------- Co-authored-by: Julia <julia@zed.dev>
Piotr Osiewicz and Julia created
6a24ad7
Fix the markdown table (#38729)
Closes https://github.com/zed-industries/zed/issues/38597 Release Notes: - N/A
Kirill Bulatov created
8fefd79
zeta2: Include edit events in cloud request (#38724)
Release Notes: - N/A Co-authored-by: Agus Zubiaga <agus@zed.dev> Co-authored-by: Michael Sloan <mgsloan@gmail.com>
Bennet Bo Fenner , Agus Zubiaga , and Michael Sloan created
f6e2a2a
docs: Tweak the toolchains page (#38728)
Mostly just breaking a massive wall of text in small paragraphs for ease of reading/parsing. Release Notes: - N/A
Danilo Leal created
3cf6fa8
agent: Make the panel's textarea font size be controlled by `buffer_font_size` (#38726)
Closes https://github.com/zed-industries/zed/issues/37882 Previously, every piece of text in the agent panel was controlled by `agent_font_size`. Although it is nice to only have one setting to tweak that, it could be a bit misleading particularly because we use monospaced and sans-serif fonts for different elements in the panel. Any editor/textarea in the panel, whehter it is the main message editor or the previous message editor, uses the buffer font. Therefore, I think it is reasonable to expect that tweaking `buffer_font_size` would also change the agent panel's usage of buffer fonts. With this change, regular buffers and the agent panel's message editor will always have the same size. Release Notes: - agent: Made the agent panel's textarea font size follow the font size of regular buffers. They're now both controlled by the `buffer_font_size` setting.
Danilo Leal created
2759f54
vim: Fix cursor position being set to end of line in normal mode (#38161)
Address an issue where, in Vim mode, clicking past the end of a line after selecting the entire line would place the cursor on the newline character instead of the last character of the line, which is inconsistent with Vim's normal mode expectations. I believe the root cause was that the cursor’s position was updated to the end of the line before the mode switch from Visual to Normal, at which point `DisplayMap.clip_at_line_ends` was still set to `false`. As a result, the cursor could end up in an invalid position for Normal mode. The fix ensures that when switching between these two modes, and if the selection is empty, the selection point is properly clipped, preventing the cursor from being placed past the end of the line. Related #38049 Release Notes: - Fixed issue in Vim mode where switching from any mode to normal mode could end up with the cursor in the newline character --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Dino and Conrad Irwin created
809d3bf
acp: Include only path to @mentioned directory in user message (#37942)
Nowadays, people don't expect @-mentioning a directory to include the contents of all files within it. Doing so makes it very likely to consume an undesirable amount of tokens. By default, we'll now only include the path of the directory and let the model decide how much to read via tools. We'll still include the contents if no tools are available (e.g. "Minimal" profile is selected). Release Notes: - Agent Panel: Do not include the content of @-mentioned directories when tools are available
Agus Zubiaga created
0aad474
zeta2: Use global zeta in Inspector (#38718)
The edit prediction debug tools has been renamed to zeta2 inspector because it's now zeta specific. It will now always display the last prediction request context, prompt, and model response. Release Notes: - N/A --------- Co-authored-by: Bennet <bennet@zed.dev> Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Agus Zubiaga , Bennet , and Bennet Bo Fenner created
271d67f
git: Fix git amend on panel (#38681)
Closes #38651 `git_panel.set_amend_pending(false, cx);` was being called before `git_panel.commit_changes(...)` which was causing the commit buffer to be cleared/reset before actually sending the commit request to git. Introduced by #35268 which added clear buffer functionality to the `set_amend_pending` function. Release Notes: - Fix git amend on panel sending "Update ..." instead of the original commit message - FIx git amend button not working
Alvaro Parker created
2e87387
Change emulated GPU message on Windows (#38710)
Release Notes: - N/A
localcc created
15e75bd
Add show_summary & show_command to the initial_tasks.json (#38660)
Release Notes: - Added "show_summary" & "show_command" settings to the initial tasks.json file. This makes the initial task template match the docs here: https://zed.dev/docs/tasks
Lex Berezhny created
3ac14e1
agent: Fix Gemini refusing all requests with file-based tool calls (#38705)
Solves an issue where Google APIs refuse all requests with file-based tool calls attached. This seems to get triggered in the case where: - copy_path + another file-based tool call is enabled - default terminal is `/bin/bash` or something similar It is unclear why this is happening, but removing the terminal commands in those tool calls seems to have solved the issue. Closes #37180 and #37414 Release Notes: - agent: Fix Gemini refusing requests with certain profiles/systems.
Ben Brandt created
9e73025
Fix UTF-8 character boundary panic in DirectWrite text layout (#37767)
## Problem
Zed was crashing with a UTF-8 character boundary error when rendering
text containing multi-byte characters (like emojis or CJK characters):
```
Thread "main" panicked with "byte index 49 is not a char boundary; it is inside '…' (bytes 48..51)"
```
## Root Cause Analysis
The PR reviewer correctly identified that the issue was not in the
DirectWrite boundary handling, but rather in the text run length
calculation in the text system. When text runs are split across lines in
`text_system.rs:426`, the calculation:
```rust
let run_len_within_line = cmp::min(line_end, run_start + run.len) - run_start;
```
This could result in `run_len_within_line` values that don't respect
UTF-8 character boundaries, especially when multi-byte characters (like
'…' which is 3 bytes) get split across lines. The resulting `FontRun`
objects would have lengths that don't align with character boundaries,
causing the panic when DirectWrite tries to slice the string.
## Solution
Fixed the issue by adding UTF-8 character boundary validation in the
text system where run lengths are calculated. The fix ensures that when
text runs are split across lines, the split always occurs at valid UTF-8
character boundaries:
```rust
// Ensure the run length respects UTF-8 character boundaries
if run_len_within_line > 0 {
let text_slice = &line_text[run_start - line_start..];
if run_len_within_line < text_slice.len() && !text_slice.is_char_boundary(run_len_within_line) {
// Find the previous character boundary using efficient bit-level checking
// UTF-8 characters are at most 4 bytes, so we only need to check up to 3 bytes back
let lower_bound = run_len_within_line.saturating_sub(3);
let search_range = &text_slice.as_bytes()[lower_bound..=run_len_within_line];
// SAFETY: A valid character boundary must exist in this range because:
// 1. run_len_within_line is a valid position in the string slice
// 2. UTF-8 characters are at most 4 bytes, so some boundary exists in [run_len_within_line-3..=run_len_within_line]
let pos_from_lower = unsafe {
search_range
.iter()
.rposition(|&b| (b as i8) >= -0x40)
.unwrap_unchecked()
};
run_len_within_line = lower_bound + pos_from_lower;
}
}
```
## Testing
- ✅ Builds successfully on all platforms
- ✅ Eliminates UTF-8 character boundary panics
- ✅ Maintains existing functionality for all text types
- ✅ Handles edge cases like very long multi-byte characters
## Benefits
1. **Root cause fix**: Addresses the issue at the source rather than
treating symptoms
2. **Performance optimal**: Uses the same efficient algorithm as the
standard library
3. **Minimal changes**: Only modifies the specific problematic code path
4. **Future compatible**: Can be easily replaced with
`str::floor_char_boundary()` when stabilized
## Alternative Approaches Considered
1. **DirectWrite boundary fixing**: Initially tried to fix in
DirectWrite, but this was treating symptoms rather than the root cause
2. **Helper function approach**: Considered extracting to a helper
function, but inlined implementation is more appropriate for this
specific use case
3. **Standard library methods**: `floor_char_boundary()` is not yet
stable, so implemented equivalent logic
The chosen approach provides the best balance of performance, safety,
and code maintainability.
---
Release Notes:
- N/A
邻二氮杂菲 created
1bf8332
editor: Deduplicate locations in `navigate_to_hover_links` (#38707)
Closes https://github.com/zed-industries/zed/issues/6730#issuecomment-3320933701 That way if multiple servers are running while reporting the same results we prevent opening multi buffers for single entries. Release Notes: - N/A *or* Added/Fixed/Improved ...
Lukas Wirth created