47a4756
Optimize Chunks::seek when offset is in current chunk (#37659)
Click to expand commit body
Release Notes: - N/A
Michael Sloan created
47a4756
Optimize Chunks::seek when offset is in current chunk (#37659)
Release Notes: - N/A
Michael Sloan created
23dc1f5
Disable foreign keys in sqlite when running migrations (#37572)
Closes #37473 ### Background Previously, we enabled foreign keys at all times for our sqlite database that we use for client-side state. The problem with this is that In sqlite, `alter table` is somewhat limited, so for many migrations, you must *recreate* the table: create a new table called e.g. `workspace__2`, then copy all of the data from `workspaces` into `workspace__2`, then delete the old `workspaces` table and rename `workspaces__2` to `workspaces`. The way foreign keys work in sqlite, when we delete the old table, all of its associated records in other tables will be deleted due to `on delete cascade` clauses. Unfortunately, one of the types of associated records that can be deleted are `editors`, which sometimes store unsaved text. It is very bad to delete these records, as they are the *only* place that this unsaved text is stored. This has already happened multiple times as we have migrated tables as we develop Zed, but I caused it to happened again in https://github.com/zed-industries/zed/pull/36714. ### The Fix The Sqlite docs recommend a multi-step approach to migrations where you: * disable foreign keys * start a transaction * create a new table * populate the new table with data from the old table * delete the old table * rename the new table to the old name * run a foreign key check * if it passes, commit the transaction * enable foreign keys In this PR, I've adjusted our sqlite migration code path to follow this pattern more closely. Specifically, we disable foreign key checks before running migrations, run a foreign key check before committing, and then enable foreign key checks after the migrations are done. In addition, I've added a generic query that we run *before* running the foreign key check that explicitly deletes any rows that have dangling foreign keys. This way, we avoid failing the migration (and breaking the app) if a migration deletes data that *does* cause associated records to need to be deleted. But now, in the common case where we migrate old data in the new table and keep the ids, all of the associated data will be preserved. Release Notes: - Fixed a bug where workspace state would be lost when upgrading from Zed 0.201.x. or below.
Max Brunsfeld created
a6a111c
Highlight labels in Go (#37673)
Release Notes: - Highlight labels in Go | Zed 0.202.7 | With this PR | | --- | --- | | <img width="160" height="50" alt="go-0 202 7" src="https://github.com/user-attachments/assets/1a1b3b3c-52ae-41e3-a52b-c2a9bb7589d2" /> | <img width="160" height="50" alt="go-pr" src="https://github.com/user-attachments/assets/29020b9f-ed03-4298-aa5b-0201a81fd5e6" /> |
chbk created
6a7b84e
toolchains: Allow users to provide custom paths to toolchains (#37009)
- **toolchains: Add new state to toolchain selector** - **Use toolchain term for Add Toolchain button** - **Hoist out a meta function for toolchain listers** Closes #27332 Release Notes: - python: Users can now specify a custom path to their virtual environment from within the picker. --------- Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Piotr Osiewicz and Danilo Leal created
59bdbf5
Various fixups to unsafe code (#37651)
A collection of fixups of possibly-unsound code and removing some small useless writes. Release Notes: - N/A
Nia created
64b6e8b
debugger: Fix allow showing more than 1 compact session item (#37036)
Closes #36978 This PR fixes an issue that we would only show the first `root -> child` session in compact mode, but the session that came after it, we would only show the child session label instead of also adding the parent label due to compact mode. ## Before <img width="348" height="173" alt="Screenshot 2025-08-27 at 22 18 39" src="https://github.com/user-attachments/assets/ad6afd3a-196d-497f-812a-00698676ee90" /> ## After <img width="563" height="211" alt="Screenshot 2025-08-27 at 21 57 16" src="https://github.com/user-attachments/assets/a953ef2a-a796-4160-b868-96e96f81c858" /> With 3 parent + child sessions and one parent session only. <img width="484" height="223" alt="Screenshot 2025-08-27 at 22 22 13" src="https://github.com/user-attachments/assets/a26f79a4-63a5-43d0-a714-d62cb1995e6e" /> cc @cole-miller I know we hacked on this some while ago, so figured you might be the best guy to ask for a review. Release Notes: - Debugger: Fix to allow showing more than 1 compact session item --------- Co-authored-by: Anthony <anthony@zed.dev>
Remco Smits and Anthony created
236b3e5
Update Link (#37671)
Documentation fix Release Notes: - N/A
morgankrey created
ea36346
Fix attach modal showing local processes in SSH sessions (#37608)
Closes #37520 This change makes the attach modal load processes from the remote server when connecting via SSH, rather than showing local processes from the client machine. This works by using the new GetProcessesRequest RPC message to allow downstream clients to get the correct processes to display. It also only works with downstream ssh clients because the message handler is only registered on headless projects. Release Notes: - debugger: Fix bug where SSH attach modal showed local processes instead of processes from the server
Anthony Eid created
c45177e
editor: Fix fold placeholder hover width smaller than marker (#37663)
Bug: <img width="196" height="95" alt="Screenshot 2025-09-06 at 1 21 39 AM" src="https://github.com/user-attachments/assets/66ec0fc9-961e-4289-bd75-68b24dad485e" /> The fold marker we use, `⋯`, isn’t rendered at the same size as the editor’s font. Notice how the fold marker appears larger than the same character typed directly in the editor buffer. <img width="146" height="82" alt="image" src="https://github.com/user-attachments/assets/a059d221-6b55-4cf9-bc1e-898ff5444006" /> When we shape the line, we use the editor’s font size, and it ends up determining the element’s width. To fix this, we should treat the ellipsis as a UI element rather than a buffer character, since current visual size looks good to me. <img width="196" height="95" alt="Screenshot 2025-09-06 at 1 29 28 AM" src="https://github.com/user-attachments/assets/1b766d46-00ab-40c7-b98a-95ea2d4b29bf" /> Release Notes: - Fixed an issue where the fold placeholder’s hover area was smaller than the marker.
Smit Barmase created
45fa034
Restore notification panel settings (#37661)
Follow-up to https://github.com/zed-industries/zed/pull/37489 Notification panel settings were always missing the content, hence this PR adds it. After #37489, the use of the same content twice broke things, which currently makes the notification panel non-configurable on Nightly. This PR fixes this. There once was an issue about the documentation for the panel being wrong as well. However, I was just unable to find that sadly. Release Notes: - N/A
Finn Evers created
1c5c855
Show actual error in InvalidBufferView (#37657)
Release Notes: - Update error view to show the error
Conrad Irwin created
5d37419
Add terminal::Toggle (#37585)
Co-Authored-By: Brandan <b5@n0.computer> Release Notes: - Added a new action `terminal::Toggle` that is by default bound to 'ctrl-\`'. This copies the default behaviour from VSCode and Jetbrains where the terminal opens and closes correctly. If you'd like the old behaviour you can rebind 'ctrl-\`' to `terminal::ToggleFocus` Co-authored-by: Brandan <b5@n0.computer>
Conrad Irwin and Brandan created
b65fb06
editor: Fix text manipulation on line mode selections (#37646)
This commit updates the implementation for `editor::Editor.manipulate_text` to use `editor::selections_collection::SelectionsCollection.all_adjusted` instead of `editor::selections_collection::SelectionsCollection.all`, as the former takes into account the selection's `line_mode`, fixing the issue where, if an user was in vim's visual line mode, running the `editor: convert to upper case` command would not work as expected. Closes #36953 Release Notes: - Fixed bug where using the editor's convert case commands while in vim's Visual Line mode would not work as expected
Dino created
b3405c3
Add line ending selector (#35392)
Partially addresses this issue #5294 Adds a selector between `LF` and `CRLF` for the buffer's line endings, the checkmark denotes the currently selected line ending. Selector <img width="487" height="66" alt="image" src="https://github.com/user-attachments/assets/13f2480f-4d2d-4afe-adf5-385aeb421393" /> Release Notes: - Added line ending selector. --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Matin Aniss and Conrad Irwin created
638320b
Improve macOS version information in telemetry (#37185)
macOS versions are currently reported as `macOS 26.0.0`. But this makes it impossible to differentiate amongst macOS Beta releases which have the same version number (`X.0.0`) but are different builds. This PR adds build number info to `os_version` for macOS Betas and [Rapid Security Response](https://support.apple.com/en-us/102657) release that have identical version numbers to stable release, but have different builds numbers. We can differentiate them because the build numbers end with a letter. | Version | Before | After | | - | - | - | | macOS Sonoma 14.7.8 | 14.7.8 | 14.7.8 | | macOS Sequoia 15.6.1 | 15.6.1 | 15.6.1 | | mcOS Ventura 13.3.1 | 13.3.1 | 13.3.1 | | macOS Ventura 13.3.1 (a) | 13.3.1 | 13.3.1 (Build 22E772610a) | | macOS Tahoe 26.0.0 (Beta1) | 26.0.0 | 26.0.0 (Build 25A5316a) | | macOS Tahoe 26.0.0 (Beta5) | 26.0.0 | 26.0.0 (Build 25A5349a) | This should cause minimal telemetry changes and only impacting a macOS betas and a couple specific older macOS versions, but will allow differentiation between macOS beta releases in GitHub issues. Alternatives: 1. Leave as-is (can't differentiate between macOS beta builds) 2. Always include build number info (impacts telemetry; more consistent going forward; differentiates non-final Release Candidates which don't include a trailing letter) I couldn't find a cocoa method to retrieve macOS build number, so I switched dependencies from `cocoa` to `objc2-foundation` in the client crate. We already depend upon this crate as a dependency of `blade-graphics` so I matched the features of that and so workspace-hack doesn't change. https://github.com/zed-industries/zed/blob/1ebc69a44708f344449c0c9d47e33b414277adec/tooling/workspace-hack/Cargo.toml#L355 Release Notes: - N/A
Peter Tripp created
91ab063
windows: Make sure `zed.sh` using the correct line ending (#37650)
This got missed in the changes from #37631 Release Notes: - N/A
张小白 created
fb6cc87
Fix typo in development docs for macOS (#37607)
Release Notes: - N/A
Yacine Hmito created
3d37611
cli: Rename script zed-wsl to zed, and enable on non-WSL (#37631)
Closes #23026 With this hotfix, git committing from the built-in Zed terminal (well, PowerShell), now works. Release Notes: - N/A
Jakub Konka created
360e372
linux: Restore ctrl-escape to keymap (#37636)
Closes: https://github.com/zed-industries/zed/issues/37628 Follow-up to: https://github.com/zed-industries/zed/pull/36712 Release Notes: - linux: Fix for ctrl-escape not escaping the tab switcher.
Peter Tripp created
74e8afe
Fix logic for default values for task variables (#37588)
This is a small fix for default values in task variables. The
[documentation](https://zed.dev/docs/tasks) states
> You can also use verbose syntax that allows specifying a default if a
given variable is not available: ${ZED_FILE:default_value}
I found, however, that this doesn't actually work. Instead, the Zed
variable and the default value are just appended in the output. For
example, if I run a task `echo ${ZED_ROW:100}` the result I get is
`447:100` (in this case it should just be `447`).
This PR fixes that. I also added a new test case for handling default
values.
I also tested the fix in a dev build and it seems to work.
There are no UI adjustments.
AI disclosure: I used Claude Code to write the code, including the fix
and the tests.
This is actually my first open-source PR ever, so if I did something
wrong, I'd appreciate any tips and I'll make it right!
Release Notes:
- Fixed task variable substitution always appending the default
Isaac Hales created
e30f45c
Syntax tree view improvements (#37570)
In an effort to improve the experience while developing extensions and improving themes, this PR updates the syntax tree views behavior slightly. Before, the view would always update to the current active editor whilst being used. This was quite painful for improving extension scheme files, as you would always have to change back and forth between editors to have a view at the relevant syntax tree. With this PR, the syntax tree view will now stay attached to the editor it was opened in, similar to preview views. Once the view is shown, the `UseActiveEditor` will become available in the command palette and enable the user to update the view to the last focused editor. On file close, the view will also be updated accordingly. https://github.com/user-attachments/assets/922075e5-9da0-4c1d-9e1a-51e024bf41ea A button is also shown whenever switching is possible. Futhermore, improved the empty state of the view. Lastly, a drive-by cleanup of the `show_action_types` method so there is no need to call `iter()` when calling the method. Release Notes: - The syntax tree view will now stay attached to the buffer it was opened in, similar to the Markdown preview. Use the `UseActiveEditor` action when the view is shown to change it to the last focused editor.
Finn Evers created
16c4fd4
gpui: move Option -> Result conversion out of closure in App::update_window_id (#37624)
Doesn't fix anything, but it seems that we do not need to assert and convert into an error until after the closure run to completion, especially since this is the only error we throw. Release Notes: - N/A
Jakub Konka created
ec58adc
languages: Invoke conda activate in conda environments (#37627)
This isn't quite right, but using the env manager path causes conda to scream and I am not yet sure why, either way this is an improvement over the status quo Release Notes: - N/A\
Lukas Wirth created
bed3587
agent_ui: Fix index panic in `SlashCommandCompletion::try_parse` (#37612)
Release Notes: - N/A
Lukas Wirth created
4124bed
gpui: Skip `test` attribute expansion for rust-analyzer (#37611)
The `test` attribute doesn't really matter to rust-analyzer, so we can make use of its cfg to have it think its just the standard test attribute which should make rust-analyzer slightly less resource intensive in zed. It also should prevent some IDE features from possibly failing within tests. Notably this has no effect outside of this repo, as the `rust-analyzer` cfg only takes effect on workspace member crates. Ideally we'd use the ignored proc macro config here but rust-analyzer still doesn't have toml configs working unfortunately. Release Notes: - N/A
Lukas Wirth created
57c6dbd
linux: Fix IME positioning on scaled display on Wayland (#37600)
Removes IME bounds scaling on Wayland since it uses logical pixels, unlike X11. We now scale only on X11. Windows and macOS don’t use these bounds for IME anyway. Release Notes: - Fixed an issue where the IME popover could appear outside the window or fail to show on Wayland.
Smit Barmase created
fded3fb
zeta: Scope edit prediction event history to current project (#37595)
This change also causes Zeta to not do anything for editors that are not associated with a project. In practice, this shouldn't affect any behavior - those editors shouldn't have edit predictions anyway. Release Notes: - Edit Prediction: Requests no longer include recent edits from other projects (other Zed windows).
Michael Sloan created
a660527
Make entry_for_path return a reference instead of cloning (#37591)
Release Notes: - N/A
Michael Sloan created
0cb8a89
settings ui: Improve setting proc macro and add scroll to UI (#37581)
This PR improves the settings_ui proc macro by taking into account more serde attributes 1. rename_all 2. rename 3. flatten We also pass field documentation to the UI layer now too. This allows ui elements to have more information like the switch field description. We got the scrollbar working and started getting language settings to show up. Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben@zed.dev>
Anthony Eid and Ben Kunkle created
c790247
acp: Pass project environment to external agent servers (#37568)
Closes #37469 Release Notes: - agent: The project shell environment is now passed to external agent processes. Co-authored-by: Richard Feldman <oss@rtfeldman.com> Co-authored-by: Nia Espera <nia-e@haecceity.cc>
Cole Miller , Richard Feldman , and Nia Espera created
3c0183f
Extraneous backtick (#37576)
Release Notes: - N/A
morgankrey created
e982cb8
docs: Claude Authentication (#37573)
Release Notes: - N/A
morgankrey created
1b865a6
snippets: Bump to v0.0.6 (#37567)
This PR bumps the snippets extension to v0.0.6. Changes: - https://github.com/zed-industries/zed/pull/37565 Release Notes: - N/A
Marshall Bowers created
4c32d5b
snippets: Disable `feature_paths` by default (#37565)
This PR updates the default configuration of the `snippets` extension to
disable suggesting paths (`feature_paths`).
If users want to enable it, it can be done via the settings:
```json
{
"lsp": {
"snippet-completion-server": {
"settings": {
"feature_paths": true
}
}
}
}
```
Release Notes:
- N/A
Marshall Bowers created
ccae033
Make fallback open picker more intuitive (#37564)
Closes https://github.com/zed-industries/zed/issues/34991 Before, the picker did not allow to open the current directory that was just completed: <img width="553" height="354" alt="image" src="https://github.com/user-attachments/assets/e77793c8-763e-416f-9728-18d5a39b467f" /> pressing `enter` here would open `assets`; pressing `tab` would append the `assets/` segment to the query. Only backspace, removing `/` would allow to open the current directory. After: <img width="574" height="349" alt="image" src="https://github.com/user-attachments/assets/bdbb3e23-7c7a-4e12-8092-51a6a0ea9f87" /> The first item is now a placeholder for opening the current directory with `enter`. Any time a fuzzy query is appended, the placeholder goes away; `tab` selects the entry below the placeholder. Release Notes: - Made fallback open picker more intuitive --------- Co-authored-by: Peter Tripp <petertripp@gmail.com> Co-authored-by: David Kleingeld <davidsk@zed.dev>
Kirill Bulatov , Peter Tripp , and David Kleingeld created
c2fa9d7
docs: Add configuration example for `simple-completion-language-server` (#37566)
This PR adds a configuration example for the `simple-completion-language-server`. We show the user how to re-enable the `feature_paths` option, as we're now disabling it by default (https://github.com/zed-industries/zed/pull/37565). Release Notes: - N/A
Marshall Bowers created
5f03202
settings ui: Create settings key trait (#37489)
This PR separates out the associated constant `KEY` from the `Settings` trait into a new trait `SettingsKey`. This allows for the key trait to be derived using attributes to specify the path so that the new `SettingsUi` derive macro can use the same attributes to determine top level settings paths thereby removing the need to duplicate the path in both `Settings::KEY` and `#[settings_ui(path = "...")]` Co-authored-by: Ben Kunkle <ben@zed.dev> Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben@zed.dev>
Anthony Eid and Ben Kunkle created
223fda2
Make remote projects to sync in local user settings (#37560)
Closes https://github.com/zed-industries/zed/issues/20024 Closes https://github.com/zed-industries/zed/issues/23489 https://github.com/user-attachments/assets/6466e0c1-4188-4980-8bb6-52ef6e7591c9 Release Notes: - Made remote projects to sync in local user settings
Kirill Bulatov created
a85946e
docs: Update TOML docs (#37561)
This PR updates the TOML docs to remove references to Taplo and suggest the Tombi extension for users wanting language server support. Relates to https://github.com/zed-industries/zed/issues/36766. Release Notes: - N/A
Marshall Bowers created
9d94358
acp: Keep diff editors in sync with `AgentFontSize` global (#37559)
Release Notes: - agent: Fixed `cmd-+` and `cmd--` not affecting the font size of diffs.
Cole Miller created
9e11105
toml: Extract to zed-extensions/toml repository (#37558)
This PR extracts the TOML extension to the [zed-extensions/toml](https://github.com/zed-extensions/toml) repository. Release Notes: - N/A
Marshall Bowers created
caebd0c
debugger: Fix stack frame filter crash (#37555)
The crash was caused by not accounting for the fact that a range of collapse frames only counts as one entry. Causing the filter indices to overshoot for indices after collapse frames (it was counting all collapse frames instead of just one). The test missed this because it all happened in one `cx.update` closure and didn't render the stack frame list when the filter was applied. The test has been updated to account for this. Release Notes: - N/A Co-authored-by: Cole Miller <cole@zed.dev>
Anthony Eid and Cole Miller created
6e29223
Use full SHA for `blade` dependency (#37554)
In https://github.com/zed-industries/zed/pull/37516 we updated the `blade` dependency, but used a short SHA. No reason to not use the full SHA. Release Notes: - N/A
Marshall Bowers created
25ee9b1
Fix Wayland crash on AMD GPUs by updating Blade (#37516)
Updates blade-graphics from e0ec4e7 to bfa594e to fix GPU crashes on Wayland with AMD graphics cards. The crash was caused by incorrect BLAS scratch buffer alignment - the old version hardcoded 256-byte alignment, but AMD GPUs require different alignment values. The newer Blade version uses the GPU's actual alignment requirements instead of hardcoding. Closes #37448 Release Notes: - Migrate to newer version of Blade upstream
Jiqing Yang created
0870a1f
acp: Don't share API key with Anthropic provider (#37543)
Since Claude Code has it's own preferred method of grabbing API keys, we don't want to reuse this one. Release Notes: - acp: Don't share Anthropic API key from the Anthropic provider to allow default Claude Code login options --------- Co-authored-by: Agus Zubiaga <agus@zed.dev>
Ben Brandt and Agus Zubiaga created
e37efc1
diagnostics: Fix diagnostics pane clearing up too eagerly on typing (#37546)
Closes https://github.com/zed-industries/zed/issues/30494 Release Notes: - Fixed diagnostics pane closing buffers too eagerly when typing inside it
Lukas Wirth created
1ae3264
Extract a scheduler crate from GPUI to enable unified integration testing of client and server code (#37326)
Extracts and cleans up GPUI's scheduler code into a new `scheduler` crate, making it pluggable by external runtimes. This will enable deterministic integration testing with cloud components by providing a unified test scheduler across Zed and backend code. In Zed, it will replace the existing GPUI scheduler for consistent async task management across platforms. ## Changes - **Core Implementation**: `TestScheduler` with seed-based randomization, session tracking (`SessionId`), and foreground/background task separation for reproducible testing. - **Executors**: `ForegroundExecutor` (!Send, thread-local) and `BackgroundExecutor` (Send, with blocking/timeout support) as GPUI-compatible wrappers. - **Clock and Timer**: Controllable `TestClock` and future-based `Timer` for time-sensitive tests. - **Testing APIs**: `once()`, `with_seed()`, and `many()` methods for configurable test runs. - **Dependencies**: Added `async-task`, `chrono`, `futures`, etc., with updates to `Cargo.toml` and lock file. ## Benefits - **Integration Testing**: Facilitates reliable async tests involving cloud sessions, reducing flakiness via deterministic execution. - **Pluggability**: Trait-based design (`Scheduler`) allows easy integration into non-GPUI runtimes while maintaining GPUI compatibility. - **Cleanup**: Refactors GPUI scheduler logic for clarity, correctness (no `unwrap()`, proper error handling), and extensibility. Follows Rust guidelines; run `./script/clippy` for verification. - [x] Define and test a core scheduler that we think can power our cloud code and GPUI - [ ] Replace GPUI's scheduler Release Notes: - N/A --------- Co-authored-by: Antonio Scandurra <me@as-cii.com>
Nathan Sobo and Antonio Scandurra created
a05f86f
windows: Don't log error when `RedrawWindow` (#37542)
Release Notes: - N/A
张小白 created
473bbd7
onboarding: Fix typos in comments (#37541)
This PR fixes some grammatical typos in some comments in the `onboarding` crate. Release Notes: - N/A
Marshall Bowers created
28c78d2
windows: Keep just one copy of GPU instance (#37445)
Now we only keep a single copy of the GPU device. The GPU lost handling got broken after #35376, but it’s properly handled again now. Release Notes: - N/A
张小白 created