55d91bc
debugger: Add tooltips to the new process modal (#31953)
Click to expand commit body
Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
55d91bc
debugger: Add tooltips to the new process modal (#31953)
Closes #ISSUE Release Notes: - N/A
Piotr Osiewicz created
b798392
Expand tilde paths in edit prediction settings (#31235)
Release Notes: - edit_prediction: Handle `~` in paths in `disabled_globs` setting
clauses3 created
657c8b1
project_panel: Improve behavior for cut-pasting entries (#31931)
Previously, we would move entries each time they were pasted. Thus, if you were to cut some files and pasted them in folder `a` and then `b`, they would only occur in folder `b` and not in folder `a`. This is unintuitive - e.g. the same does not apply to text and does not happen in other editors. This PR improves this behavior - after the first paste of a cut clipboard, we change the clipboard to a copy clipboard, ensuring that for all folloing pastes, the entries are not moved again. In the above example, the files would then also be found in folder `a`. This is also reflected in the added test. Release Notes: - Ensured that cut project panel entries are cut-pasted only on the first use, and copy-pasted on all subsequent pastes.
Finn Evers created
2bb8aa2
go_to_line: Show position relative to current excerpt in a multi-buffer (#31947)
Closes #31515 This PR explicitly leaves the behavior of go to line unspecified with multi-buffer. Release Notes: - Fixed wrong line number being shown in the status bar when in multi-buffer.
Piotr Osiewicz created
beeb42d
snippets: Show completions on first range in tabstop instead of last (#31939)
Release Notes: - N/A
Michael Sloan created
6d66ff1
Add Helix implementation for `Motion::FindForward` and `Motion::FindBackward` (#31547)
Closes #30462 Release Notes: - Added text selection for "vim::PushFindForward" and "vim::PushFindBackward" keybinds in helix mode
thebasilisk created
e0b818a
Fix duplicate prefixes when repeating completions in Vim mode (#31818)
When text is completed, new_text contains the entire new completion
which replaces the old_text. In Vim mode, pressing . repeats the
completion; if InputHandled records the full text and no range to
replace, the entire completion gets appended; this happens after the
completion prefix typing repeats, and we get a duplicate prefix.
Using range to replace has some downsides when the completion is
repeated as a standalone action; in a common case, it should be
sufficient to record the new suffix. This is actually what used to
happen before #28586, which removed this code in a larger attempt to fix
completions at multiple cursors:
```rust
let text = &new_text[common_prefix_len..];
let utf16_range_to_replace = ...
cx.emit(EditorEvent::InputHandled {
utf16_range_to_replace,
text: text.into(),
});
```
Fixes #30758
Fixes #31759
Fixes #31779
Release Notes:
- Vim: Fix duplicate prefixes when repeating completions via `.`
Arseny Kapoulkine created
58a400b
keymap: Fix subword navigation and selection on Sublime Text keymap (#31840)
On Linux, the correct modifier key for this action is `alt`, not `ctrl`.
I mistakenly set it to `ctrl` on #30268.
From Sublime's keymap:
```json
{ "keys": ["ctrl+left"], "command": "move", "args": {"by": "words", "forward": false} },
{ "keys": ["ctrl+right"], "command": "move", "args": {"by": "word_ends", "forward": true} },
{ "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "words", "forward": false, "extend": true} },
{ "keys": ["ctrl+shift+right"], "command": "move", "args": {"by": "word_ends", "forward": true, "extend": true} },
{ "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
{ "keys": ["alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
{ "keys": ["alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
{ "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },
```
Release Notes:
- N/A
Fernando Carletti created
8ab7d44
terminal: Match trait bounds with terminal input (#31441)
The core change here is the following: ```rust fn write_to_pty(&self, input: impl Into<Vec<u8>>); // into fn write_to_pty(&self, input: impl Into<Cow<'static, [u8]>>); ``` This matches the trait bounds that's used by the Alacritty crate. We are now allowed to effectively pass `&'static str` instead of always needing a `String`. The main benefit comes from making the `to_esc_str` function return a `Cow<'static, str>` instead of `String`. We save an allocation in the following instances: - When the user presses any special key that isn't alphanumerical (in the terminal) - When the uses presses any key while a modifier is active (in the terminal) - When focusing/un-focusing the terminal - When completing or undoing a terminal transaction - When starting a terminal assist This basically saves us an allocation on **every key** press in the terminal. NOTE: This same optimization can be done for **nearly all** keypresses in the entirety of Zed by changing the signature of the `Keystroke` struct in gpui. If the Zed team is interested in a PR for it, let me know. Release Notes: - N/A
tidely created
56d4c0a
snippets: Preserve leading whitespace (#31933)
Closes #18481 Release Notes: - Snippet insertions now preserve leading whitespace instead of using language-specific auto-indentation.
Michael Sloan created
feeda7f
Add newlines between messages in LSP RPC logs for more navigability (#31863)
Release Notes: - N/A
Michael Sloan created
4a5c55a
debugger: Use new icons for quick debug/spawn button (#31932)
This PR wires up the new icons that were added in #31784. Release Notes: - N/A
Cole Miller created
7c1ae9b
debugger: Go back to loading task contexts asynchronously for new session modal (#31908)
Release Notes: - N/A
Cole Miller created
6f97da3
debugger: Align zoom behavior with other panels (#31901)
Release Notes: - Debugger Beta: `shift-escape` (`workspace::ToggleZoom`) now zooms the entire debug panel; `alt-shift-escape` (`debugger::ToggleExpandItem`) triggers the old behavior of zooming a specific item.
Cole Miller created
63c1033
agent: Generate a notification when reaching tool use limit (#31894)
When reaching the consecutive tool call limit, the agent gets blocked and without a notification, you wouldn't know that. This PR adds the ability to be notified when that happens, and you can use either sound _and_ toast, or just one of them. Release Notes: - agent: Added support for getting notified (via toast and/or sound) when reaching the consecutive tool call limit.
Danilo Leal created
b16911e
debugger: Extend `f5` binding to contextually rerun the last session (#31753)
Release Notes: - Debugger Beta: if there is no stopped or running session, `f5` now reruns the last session, or opens the new session modal if there is no previously-run session.
Cole Miller created
b14401f
Remove agent_diff key context when agent review ends for an editor (#31930)
Release Notes: - Fixed an issue that prevented `git::Restore` keybindings from working in editors for buffers that had previously been modified by the agent. Co-authored-by: Anthony Eid <hello@anthonyeid.me>
Cole Miller and Anthony Eid created
17cf865
Avoid re-querying language server completions when possible (#31872)
Also adds reuse of the markdown documentation cache even when completions are re-queried, so that markdown documentation doesn't flicker when `is_incomplete: true` (completions provided by rust analyzer always set this) Release Notes: - Added support for filtering language server completions instead of re-querying.
Michael Sloan created
b7ec437
Simplify debug launcher UI (#31928)
This PR updates the name of the `NewSessionModal` to `NewProcessModal` (to reflect it's new purpose), changes the tabs in the modal to read `Run | Debug | Attach | Launch` and changes the associated types in code to match the tabs. In addition, this PR adds a few labels to the text fields in the `Launch` tab, and adds a link to open the associated settings file. In both debug.json files, added links to the zed.dev debugger docs. Release Notes: - Debugger Beta: Improve the new process modal
Mikayla Maki created
f1aab11
terminal: Persist pinned tabs in terminal (#31921)
Closes #31098 Release Notes: - Fixed terminal pinned tab state not persisting across restarts.
Piotr Osiewicz created
3f90bc8
gpui: Filter out NoAction bindings from pending input (#30260)
This prevents the 1 second delay happening on input when all of the pending bindings are NoAction Closes #30259 Release Notes: - Fixed unnecessary delay when typing a multi-stroke binding that doesn't match any non-null bindings --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Joe Polny and Conrad Irwin created
9d5fb3c
Add `:delm[arks] {marks}` command to delete vim marks (#31140)
Release Notes:
- Implements `:delm[arks] {marks}` specified
[here](https://vimhelp.org/motion.txt.html#%3Adelmarks)
- Adds `ArgumentRequired` action for vim commands that require arguments
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
AidanV and Conrad Irwin created
864767a
agent: Support vim-mode in the agent panel's editor (#31915)
Closes #30081 Release Notes: - Added vim-mode support in the agent panel's editor --------- Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Oleksiy Syvokon , Ben Kunkle , and Conrad Irwin created
ec69b68
indent guides: Fix issue with entirely-whitespace lines (#31916)
Closes #26957 Release Notes: - Fix an edge case where indent guides would be rendered incorrectly if lines consisted of entirely whitespace Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Bennet Bo Fenner and Ben Brandt created
9dd18e5
python: Re-land usage of source file path in toolchain picker (#31893)
This reverts commit 1e55e88c1822402566bdec8a893ec0429d8ee5e6. Closes #ISSUE Release Notes: - Python toolchain selector now uses path to the closest pyproject.toml as a basis for picking a toolchain. All files under the same pyproject.toml (in filesystem hierarchy) will share a single virtual environment. It is possible to have multiple Python virtual environments selected for disjoint parts of the same project.
Piotr Osiewicz created
2ebe16a
workspace: Fix empty pane becomes unresponsive to keybindings after commit via terminal (#31905)
Closes #27579 This PR fixes issue where keybinding wouldn’t work in a pane after focusing it from dock using the `ActivatePaneInDirection` action in certain cases. https://github.com/user-attachments/assets/9ceca580-a63f-4807-acff-29b61819f424 Release Notes: - Fixed the issue where keybinding wouldn’t work in a pane after focusing it from dock using the `ActivatePaneInDirection` action in certain cases.
Smit Barmase created
1ed4647
Add test for `pane: toggle pin tab` (#31906)
Also adds the optimization to not move a tab being pinned when its destination index is the same as its index. Release Notes: - N/A
Joseph T. Lyons created
ebed567
vim: Handle paste in visual line mode when cursor is at newline (#30791)
This Pull Request fixes the current paste behavior in vim mode, when in visual mode, and the cursor is at a newline character. Currently this joins the pasted contents with the line right below it, but in vim this does not happen, so these changes make it so that Zed's vim mode behaves the same as vim for this specific case. Closes #29270 Release Notes: - Fixed pasting in vim's visual line mode when cursor is on a newline character
Dino created
a6544c7
vim: Fix add empty line (#30987)
Fixes: `] space` does not consume counts, and it gets applied to the next action. `] space` on an empty line causes cursor to move to the next line. Release Notes: - N/A
5brian created
b363e1a
vim: Add support for `:e[dit] {file}` command to open files (#31227)
Closes #17786
Release Notes:
- Adds `:e[dit] {file}` command to open files
AidanV created
65e3e84
language_models: Add thinking support for ollama (#31665)
This PR updates how we handle Ollama responses, leveraging the new [v0.9.0](https://github.com/ollama/ollama/releases/tag/v0.9.0) release. Previously, thinking text was embedded within the model's main content, leading to it appearing directly in the agent's response. Now, thinking content is provided as a separate parameter, allowing us to display it correctly within the agent panel, similar to other providers. I have tested this with qwen3:8b and works nicely. ~~We can release this once the ollama is release is stable.~~ It's released now as stable. <img width="433" alt="image" src="https://github.com/user-attachments/assets/2983ef06-6679-4033-82c2-231ea9cd6434" /> Release Notes: - Add thinking support for ollama --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Umesh Yadav and Bennet Bo Fenner created
1e1d443
Fixing 404 in AI Configuration Docs (#31899)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
morgankrey created
c874f1f
agent: Migrate thread storage to SQLite with zstd compression (#31741)
Previously, LMDB was used for storing threads, but it consumed excessive
disk space and was capped at 1GB.
This change migrates thread storage to an SQLite database. Thread JSON
objects are now compressed using zstd.
I considered training a custom zstd dictionary and storing it in a
separate table. However, the additional complexity outweighed the modest
space savings (up to 20%). I ended up using the default dictionary
stored with data.
Threads can be exported relatively easily from outside the application:
```
$ sqlite3 threads.db "SELECT hex(data) FROM threads LIMIT 5;" |
xxd -r -p |
zstd -d |
fx
```
Benchmarks:
- Original heed database: 200MB
- Sqlite uncompressed: 51MB
- sqlite compressed (this PR): 4.0MB
- sqlite compressed with a trained dictionary: 3.8MB
Release Notes:
- Migrated thread storage to SQLite with compression
Oleksiy Syvokon created
9a9e96e
Increase terminal inline assistant block height (#31807)
Closes #31806 Closes #28969 Not sure if a static value is best. Maybe it is better to somehow use `count_lines` function here too. ### Before <img width="871" alt="449463234-ab1a33a0-2331-4605-aaee-cae60ddd0f9d" src="https://github.com/user-attachments/assets/1e3bec86-4cad-426c-9f59-5ad3d14fc9d7" /> ### After <img width="861" alt="Screenshot 2025-05-31 at 1 12 33 AM" src="https://github.com/user-attachments/assets/0c8219a9-0812-45af-8125-1f4294fe2142" /> Release Notes: - Fixed terminal inline assistant clipping when cursor is at bottom of terminal.
Alisina Bahadori created
8c46e29
docs: Add more details to the agent checkpoint section (#31898)
Figured this was worth highlighting as part of the "Restore Checkpoint" feature behavior. Release Notes: - N/A
Danilo Leal created
aacbb9c
python: Respect picked toolchain (when it's not at the root) when running tests (#31150)
# Fix Python venv Detection for Test Runner ## Problem Zed’s Python test runner was not reliably detecting and activating the project’s Python virtual environment (.venv or venv), causing it to default to the system Python. This led to issues such as missing dependencies (e.g., pytest) when running tests. ## Solution Project Root Awareness: The Python context provider now receives the project root path, ensuring venv detection always starts from the project root rather than the test file’s directory. Robust venv Activation: The test runner now correctly detects and activates the Python interpreter from .venv or venv in the project root, setting VIRTUAL_ENV and updating PATH as needed. Minimal Impact: The change is limited in scope, affecting only the necessary code paths for Python test runner venv detection. No broad architectural changes were made. ## Additional Improvements Updated trait and function signatures to thread the project root path where needed. Cleaned up linter warnings and unused code. ## Result Python tests now reliably run using the project’s virtual environment, matching the behavior of other IDEs and ensuring all dependencies are available. Release Notes: - Fixed Python tasks always running with a toolchain selected for the root of a workspace. --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Thiago Pacheco and Piotr Osiewicz created
f90333f
zlog: Check crate name against filters if scope empty (#31892)
Fixes https://github.com/zed-industries/zed/discussions/29541#discussioncomment-13243073 Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
b24f614
docs: Improve documentation around Vulkan/GPU issues on Linux (#31895)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
cefa0cb
Improve the file finder picker footer design (#31777)
The current filter icon button in the file finder picker footer confused me because it is a really a toggleable button that adds a specific filter. From the icon used, I was expecting more configuration options rather than just one. Also, I was really wanting a way to trigger it with the keyboard, even if I need my mouse to initially learn about the keybinding. So, this PR transforms that icon button into an actual popover trigger, in which (for now) there's only one filter option. However, being a menu is cool because it allows to accomodate more items like, for example, "Include Git Submodule Files" and others, in the future. Also, there's now a keybinding that you can hit to open that popover, as well as an indicator that pops in to communicate that a certain item inside it has been toggled. Lastly, also added a keybinding to the "Split" menu in the spirit of making everything more keyboard accessible! | Before | After | |--------|--------| |  |  | Release Notes: - Improved the keyboard navigability of the file finder filtering options.
Danilo Leal created
3fb1023
editor: Fix columnar selection incorrectly uses cursor to start selection instead of mouse position (#31888)
Closes #13905 This PR fixes columnar selection to originate from mouse position instead of current cursor position. Now columnar selection behaves as same as Sublime Text. 1. Columnar selection from click-and-drag on text (New): https://github.com/user-attachments/assets/f2e721f4-109f-4d81-a25b-8534065bfb37 2. Columnar selection from click-and-drag on empty space (New): https://github.com/user-attachments/assets/c2bb02e9-c006-4193-8d76-097233a47a3c 3. Multi cursors at end of line when no interecting text found (New): https://github.com/user-attachments/assets/e47d5ab3-0b5f-4e55-81b3-dfe450f149b5 4. Converting normal selection to columnar selection (Existing): https://github.com/user-attachments/assets/e5715679-ebae-4f5a-ad17-d29864e14e1e Release Notes: - Fixed the issue where the columnar selection (`opt+shift`) incorrectly used the cursor to start the selection instead of the mouse position.
Smit Barmase created
9c715b4
agent: Show actual file name and icon in context pill (#31813)
Previously in the agent context pill if we added images it showed generic Image tag on the image context pill. This PR make sure if we have a path available for a image context show the filename which is in line with other context pills. Before | After --- | ---  |  Release Notes: - N/A --------- Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
Umesh Yadav and Bennet Bo Fenner created
ae219e9
agent: Fix bug with double-counting tokens in Gemini (#31885)
We report the total number of input tokens by summing the numbers of 1. Prompt tokens 2. Cached tokens But Google API returns prompt tokens (1) that already include cached tokens (2), so we were double counting tokens in some cases. Release Notes: - Fixed bug with double-counting tokens in Gemini
Oleksiy Syvokon created
6d99c12
assistant_context_editor: Fix copy paste regression (#31882)
Closes #31166 Release Notes: - Fixed an issue where copying and pasting an assistant response in text threads would result in duplicate text
Bennet Bo Fenner created
8fb7fa9
Suppress log blade_graphics -related logs by default (#31881)
Release Notes: - N/A
Kirill Bulatov created
22d75b7
Notify when pinning a tab even if the tab isn't moved (#31880)
The optimization to not move a tab being pinned (when the destination index is the same as its index) in https://github.com/zed-industries/zed/pull/31871 caused a regression, as we were no longer calling `cx.notify()` indirectly through `move_item`. Thanks for catching this, @smitbarmase. Release Notes: - N/A
Joseph T. Lyons created
06a199d
editor: Fix completion accept for optional chaining in Typescript (#31878)
Closes #31662 Currently, we assume `insert_range` will always end at the cursor and `replace_range` will also always end after the cursor for calculating range to replace. This is a particular case for the rust-analyzer, but not widely true for other language servers. This PR fixes this assumption, and now `insert_range` and `replace_range` both can end before cursor. In this particular case: ```ts let x: string | undefined; x.tostˇ // here insert as well as replace range is just "." while new_text is "?.toString()" ``` This change makes it such that if final range to replace ends before cursor, we extend it till the cursor. Bonus: - Improves suffix and subsequence matching to use `label` over `new_text` as `new_text` can contain end characters like `()` or `$` which is not visible while accepting the completion. - Make suffix and subsequence check case insensitive. - Fixes broken subsequence matching which was not considering the order of characters while matching subsequence. Release Notes: - Fixed an issue where autocompleting optional chaining methods in TypeScript, such as `x.tostr`, would result in `x?.toString()tostr` instead of `x?.toString()`.
Smit Barmase created
ab6125d
Fix bugs around pinned tabs (#31871)
Closes https://github.com/zed-industries/zed/issues/31870 Release Notes: - Allowed opening 1 more item if `n` tabs are pinned, where `n` equals `max_tabs` count. - Fixed a bug where pinned tabs would eventually be closed out when exceeding the `max_tabs` count. - Fixed a bug where a tab could be lost when pinning a tab while at the `max_tabs` count. - Fixed a bug where pinning a tab when already at the `max_tabs` limit could cause other tabs to be incorrectly closed.
Joseph T. Lyons created
d3bc561
Disable close clean menu item when all are dirty (#31859)
This PR disables the "Close Clean" tab context menu action if all items are dirty. <img width="595" alt="SCR-20250601-kaev" src="https://github.com/user-attachments/assets/add30762-b483-4701-9053-141d2dfe9b05" /> <img width="573" alt="SCR-20250601-kahl" src="https://github.com/user-attachments/assets/24f260e4-01d6-48d6-a6f4-a13ae59c246e" /> Also did a bit more general refactoring. Release Notes: - N/A
Joseph T. Lyons created
f13f2df
Ensure item-closing actions do not panic when no items are present (#31845)
This PR adds a comprehensive test that ensures that no item-closing action will panic when no items are present. A test already existed (`test_remove_active_empty `) that ensured `CloseActiveItem` didn't panic, but the new test covers: - `CloseActiveItem` - `CloseInactiveItems` - `CloseAllItems` - `CloseCleanItems` - `CloseItemsToTheRight` - `CloseItemsToTheLeft` I plan to do a bit more clean up in `pane.rs` and this feels like a good thing to add before that. Release Notes: - N/A
Joseph T. Lyons created
24e4446
Refactor item-closing actions (#31838)
While working on - https://github.com/zed-industries/zed/pull/31783 - https://github.com/zed-industries/zed/pull/31786 ... I noticed some areas that could be improved through refactoring. The bug in https://github.com/zed-industries/zed/pull/31783 came from having duplicate code. The fix had been applied to one version, but not the duplicated code. This PR attempts to do some initial clean up, through some refactoring. Release Notes: - N/A
Joseph T. Lyons created