These comments come from the scaffolding script for new crates, yet are
no longer relevant in the given files. Thus, just removing them here to
do some 🧹
Release Notes:
- N/A
A few minor cleanups in sidebar.rs and some related areas.
Release notes:
- N/A
Eric Holk
created
d954f78
extension_cli: Ensure extension that provide themes do not provide further features (#52272)
Click to expand commit body
We generally enforce this policy already and also want this to be this
way, so better to be error than sorry here.
Release Notes:
- N/A
Finn Evers
created
72540bb
docs: Update ep docs for new bindings (#52326)
Click to expand commit body
## Context
Split out from https://github.com/zed-industries/zed/pull/52258, because
#50136 isn't ready yet :(
Need to add descriptions of how to do each example binding in the Keymap
UI
## How to Review
- Ensure wording/structure is good
- Ensure no missing examples
## Self-Review Checklist
<!-- Check before requesting review: -->
- [ ] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [ ] Performance impact has been considered and is acceptable
Release Notes:
- N/A or Added/Fixed/Improved ...
---------
Co-authored-by: Max <max@zed.dev>
Co-authored-by: Katie Geer <katie@zed.dev>
This PR refactors the highlight map capture name resolution to be faster
and more predictable. Speficically,
- it changes the capture name matching to explicit prefix matching
(e.g., `function.call.whatever.jsx` will now be matched by only
`function`, `function.call`, `function.call.whatever` and
`function.call.whatever.jsx`). This matches the behavior VSCode has
- resolving highlights is now much more efficient, as we now look up
captures in a BTreeMap as opposed to searching in a Vector for these.
This substantially improves the performance for resolving capture names
against themes. With the benchmark added here for creating the
HighlightMap, we see quite some improvements:
```
Running benches/highlight_map.rs (target/release/deps/highlight_map-f99da68650aac85b)
HighlightMap::new/small_captures/small_theme
time: [161.90 ns 162.70 ns 163.55 ns]
change: [-39.027% -38.352% -37.742%] (p = 0.00 < 0.05)
Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
HighlightMap::new/small_captures/large_theme
time: [231.37 ns 233.02 ns 234.70 ns]
change: [-91.570% -91.516% -91.464%] (p = 0.00 < 0.05)
Performance has improved.
HighlightMap::new/large_captures/small_theme
time: [991.82 ns 994.94 ns 998.50 ns]
change: [-50.670% -50.443% -50.220%] (p = 0.00 < 0.05)
Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high mild
HighlightMap::new/large_captures/large_theme
time: [1.6528 µs 1.6650 µs 1.6784 µs]
change: [-91.684% -91.637% -91.593%] (p = 0.00 < 0.05)
Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild
```
For large themes and many capture names, the revised approach is much
faster.
With that in place, we can also add better fallbacks whenever we change
tokens, since e.g. a change from `@variable` to `@preproc` would
previously cause tokens to not be highlighted at all, whereas now we can
add fallbacks for such cases more efficiently. I'll add this later on to
this PR.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [X] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [X] Tests cover the new/changed behavior
- [X] Performance impact has been considered and is acceptable
Release Notes:
- Improved resolution speed of theme highlight capture names. This might
change highlighting in some rare edge cases, but should overall make
highlighting more predicatable. Theme captures will now follow a strict
prefix matching, so e.g. function.call.decorator.jsx` will now be
matched by only `function`, `function.call`, `function.call.decorator`
and `function.call.decorator.jsx` with the most specific capture always
taking precedence.
---------
Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Finn Evers
,
Piotr Osiewicz
, and
Gaauwe Rombouts
created
b955424
Add a button to remove the plan UI (#52360)
Click to expand commit body
## Context
This PR adds a button to remove the plan UI, if the user wants.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Mikayla Maki
created
6aaf08d
ep: Change beta in deltaChrF to favor precision over recall (#52422)
Click to expand commit body
Also store and print more detailed information related to this metric
(precision, recall, tp/fp/fn counts)
Release Notes:
- N/A
Oleksiy Syvokon
created
4ad582a
acp_tools: Only toggle ACP log expansion from header clicks (#50981)
Click to expand commit body
Release Notes:
- Added only toggle ACP log expansion from header clicks
This change limits expand/collapse in open acp logs to header clicks
only, instead of the entire message row. It prevents accidental
expand/zoom toggles when users click or drag inside log text, making it
easier to select and copy debug information.
before:
https://github.com/user-attachments/assets/ceea7a6c-9b6a-4a38-8926-3c43f2bfb74e
after:
https://github.com/user-attachments/assets/f07537b1-70f1-4537-b38a-4148a84b41c7
Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
## Context
This test was bugging me, so I had claude take a look at it.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Closes #52115
## Context
Removes the third party edit prediction integration for Sweep AI ahead
of their servers shutting down.
This PR will not affect those who are already use or plan to use their
open weighted models. The code removed by this PR was required for
integrating with their proprietary API.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Removed support for using the Sweep AI edit prediction provider
through their proprietary API, as the servers are shutting down
https://discord.com/channels/1100625416022138902/1100625417272045639/1480644297903575142,
https://x.com/wwzeng1/status/2033302698360180949
Ben Kunkle
created
28e521f
elixir: Fix `HEEx` name and add `EEx` defaults (#49812)
Click to expand commit body
- zed-extensions/elixir#61 renames `HEEX` to `HEEx`; to prevent any
disruptions from that change, this adds the correct name alongside a
settings migration
- zed-extensions/elixir#101 adds support for `EEx` templates; this sets
the default language server to be the same as that of `Elixir` and
`HEEx`
This also adds a few more extensions that should be recognized as `HEEx`
files
Release Notes:
- N/A
---------
Co-authored-by: Finn Evers <finn@zed.dev>
AltCode
and
Finn Evers
created
dbd95ea
gpui_linux: Force scene rebuild after GPU device recovery (#52389)
Click to expand commit body
After GPU device recovery clears the atlas, the next frame could
re-present a stale scene via the needs_present path (which skips scene
rebuilding). The stale scene references texture IDs that no longer exist
in the cleared atlas, causing an index-out-of-bounds panic.
Fix this by setting a force_render_after_recovery flag when device
recovery completes. The platform refresh loop reads this flag and passes
force_render: true in RequestFrameOptions, ensuring GPUI rebuilds the
scene before presenting.
Fixes ZED-5QT
Release Notes:
- N/A or Added/Fixed/Improved ...
Lukas Wirth
created
9973a34
project_panel: Add Git status indicators (#50216)
Click to expand commit body
This PR adds Git status badges next to file names in the Project Panel,
following my older PR #49802
These are enabled by having "git_status" true.
Screenshot
<img width="343" height="320" alt="image"
src="https://github.com/user-attachments/assets/b2c208bf-5027-4947-a5ee-eeb74fadb02b"
/>
I'd love to hear feedback about any of this :)
Especially feedback on these:
- File name colour is determined only by Git status, the diagnostic
badges remain separate. Should diagnostics also affect the filename
colour?
- (Unstaged) Modified files and staged modifications share the same
colour, in vscode staged modifications use a brownish colour by default
which I could not find the colours. I think differentiating them is
definetely something to add.
Release Notes
- Added git status indicators in Project Panel. It can be enabled by
setting `git_status_indicator` to `true` in `project_panel` settings.
---------
Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
Davide Scaccia
and
Smit Barmase
created
9f58770
agent: Add a regression test to ensure title updates do not loop (#52395)
Click to expand commit body
## Context
Follow up to #52388
## How to Review
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour — numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Bennet Bo Fenner
created
90fa50a
go: Add semantic token rule for format string interpolations (#52394)
Click to expand commit body
## Context
Closes #52391
gopls sends semantic tokens for format args with [format] modifier.
Without a simple support for there is no special highlighting for format
args like `%s`. Its a simple change inside
`go/semantic_token_rules.json` that makes this a default behavior.
Currently (on 0.229 preview):
<img width="1136" height="675" alt="Screenshot 2026-03-25 at 11 34 57"
src="https://github.com/user-attachments/assets/cd3d9a52-6740-47b5-8f05-02514cb4f9df"
/>
After fix:
<img width="1136" height="675" alt="Screenshot 2026-03-25 at 11 58 37"
src="https://github.com/user-attachments/assets/5ec4277b-39c1-4fe1-bed5-8a6fa63c18c9"
/>
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- gopls: Add semantic token rule for format string interpolations
Marat Fattakhov
created
6d9e285
zed: Add `track-project-leak` feature for easier leak debugging (#52172)
Click to expand commit body
Release Notes:
- N/A or Added/Fixed/Improved ...
Lukas Wirth
created
a667d9c
agent: Reduce DB load in ThreadMetadataStore (#52313)
Click to expand commit body
## Context
We now batch multiple db operations together if they happen very
frequently (similar to how we handle it in `thread_history.rs`)
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
---------
Co-authored-by: Gaauwe Rombouts <mail@grombouts.nl>
Bennet Bo Fenner
and
Gaauwe Rombouts
created
d09cc53
acp: Clean up archive download code (#52331)
Click to expand commit body
Follow up to bzip support to clean up some of this code
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Ben Brandt
created
b67c162
agent: Fix issues when editing thread title (#52388)
Click to expand commit body
## Context
Follow up to #52193
We changed this code in #52193, but moving the thread title read outside
of the spawn, causes a loop of title updated events
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Bennet Bo Fenner
created
3d5ec54
Add .tar.bz2 archive support for ACP agent server downloads (#52188)
Click to expand commit body
## Summary
- Added `TarBz2` variant to `AssetKind` enum for `.tar.bz2` / `.tbz2`
archives
- Implemented `extract_tar_bz2` using the `bzip2` feature of
`async-compression` (already a workspace dependency, just enabled the
feature flag)
- Wired up both streaming and file-based extraction paths in
`github_download.rs`
- Added `.tar.bz2` / `.tbz2` URL detection in both
`LocalExtensionArchiveAgent` and `LocalRegistryArchiveAgent`
This unblocks ACP registry entries (like Goose) that only ship
`.tar.bz2` archives.
Reference: https://github.com/block/goose/issues/8047
## Test plan
- [ ] Verify `cargo check` and `clippy` pass (confirmed locally)
- [ ] Test downloading an ACP agent that ships a `.tar.bz2` archive
(e.g., Goose)
- [ ] Verify existing `.tar.gz` and `.zip` agent downloads still work
Release Notes:
- Added support for `.tar.bz2` archives in ACP agent server downloads,
unblocking registry entries like Goose that only ship bzip2-compressed
tarballs.
---------
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
Vincenzo Palazzo
and
Ben Brandt
created
3216126
agent: Disable update_plan for staff (#52386)
Click to expand commit body
Needs some more work.
Release Notes:
- N/A
Ben Brandt
created
72bc4dc
cloud_llm_client: Move `CompletionIntent` to `language_model` (#52359)
Click to expand commit body
This PR moves the `CompletionIntent` enum from the `cloud_llm_client`
crate to the `language_model` crate, as it is no longer part of the
Cloud interface.
Release Notes:
- N/A
Marshall Bowers
created
9bbdff4
Fix double borrow when resizing bottom dock (#52383)
Click to expand commit body
Fixes a double borrow panic when resizing the bottom dock, introduced in
#52276
Release Notes:
- N/A
Max Brunsfeld
created
103fa37
Use the most recent serial of kinds KeyPress or MousePress when copying (#52053)
Click to expand commit body
Release Notes:
- Fix copy for some Wayland users
Matthew Chisolm
created
a6fa2d4
Don't grow agent panel to fill entire center (#52380)
Click to expand commit body
This PR simplifies the flexible-width agent panel's rendering such that
for now, it will not grow to fill the center area when there are no
files open. The problem with doing that is that it makes the bottom dock
invisible.
We could potentially revisit this, and just shrink the width of the
agent panel when the bottom dock was toggled, but that might feel
unstable, so for now I'm doing a simpler thing and just keeping the
center area visible even when it is empty.
Release Notes:
- N/A
b5e85c8
gpui_linux: Set _NET_WM_NAME on X11 window creation to support UTF-8 titles (#51909)
Click to expand commit body
Release Notes:
- Fixed window title displaying garbled characters (e.g. "Zed â██
Settings") on Linux X11 due to missing UTF-8 encoding for the
`_NET_WM_NAME` property.
Valery Borovsky
created
5baec85
Always open microphone track on call join (#52236)
Click to expand commit body
Release Notes:
- Fixed 1-2 seconds of audio silence when unmuting for the first time
during a call with Bluetooth headphones when `mute_on_join` is enabled.
## Context
Since https://github.com/zed-industries/zed/pull/52232/, there have been
a lot of problems related to panels randomly hiding and showing
themselves. However, the code in that PR is pretty innocuous. It
shouldn't be having that kind of effect. However, it turns out there's a
bug in how GPUI subscriptions work that caused there to be orphaned
observe callbacks firing spuriously. The core sequence is captured in
`test_unsubscribe_during_callback_with_insert`, essentially you have to
have two observers on the same item (`SettingsStore`, in this case),
that both drop themselves. If the first observer _adds_ a callback onto
the _same item_, then the second observer will never successfully drop
itself.
While in there, I also fixed an unrelated bug that @maxbrunsfeld noticed
where if you have two callbacks on the same item, and an earlier
callback drops a later one, then the second callback will spuriously
fire.
I also added a few extra smoke tests to the subscription code, and a
test capturing the observed bug at the workspace level.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
---------
Co-authored-by: max <max@zed.dev>
Many editors such as vim and emacs support "modelines", a comment at the
beginning of the file that allows the file type to be explicitly
specified along with per-file specific settings
- The amount of configurations, style and settings mapping cannot be
handled in one go, so this opens up a lot of potential improvements.
- I left out the possiblity to have "zed" specific modelines for now,
but this could be potentially interesting.
- Mapping the mode or filetype to zed language names isn't obvious
either. We may want to make it configurable.
This is my first contribution to zed, be kind. I struggled a bit to find
the right place to add those settings. I use a similar approach as done
with editorconfig (merge_with_editorconfig). There might be better ways.
Closes #4762
Release Notes:
- Add basic emacs/vim modeline support.
Supersedes #41899, changes:
- limit reading to the first and last 1kb
- add documentation
- more variables handled
- add Arc around ModelineSettings to avoid extra cloning
- changed the way mode -> language mapping is done, thanks to
`modeline_aliases` language config
- drop vim ex: support
- made "Local Variables:" handling a separate commit, so we can drop it
easily
- various code style improvements
---------
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Marc-Andre Lureau
,
Claude
, and
Conrad Irwin
created
34807eb
gpui_macos: Fix stale atlas key causing crash on None texture lookup (#51996)
Click to expand commit body
MetalAtlas::remove() used tiles_by_key.get(key) to look up the texture
ID but only called tiles_by_key.remove(key) when the texture became
fully unreferenced. When a tile was removed while other tiles remained
on the same texture, the key stayed in tiles_by_key as a stale entry.
Once subsequent removals deleted the texture, get_or_insert_with could
return the stale tile referencing a now-deleted texture slot, causing an
unwrap panic in MetalAtlasState::texture().
Fix: change .get(key) to .remove(key) unconditionally, matching the WGPU
and DirectX atlas implementations which already do this correctly.
Closes ZED-5KV
Release Notes:
- N/A or Added/Fixed/Improved ...
Lukas Wirth
created
95852d4
workspace: Deduplicate navigation history entries (#44504)
Click to expand commit body
Closes #43545
Remove existing entries for an item before adding new ones to the
navigation history. This prevents Go Back (Ctrl-O) from bouncing between
the same items repeatedly.
Navigation pattern A->B->A->B->C now creates history [A,B,C] instead of
[A,B,A,B,C], making backward navigation more efficient.
Release Notes:
- N/A
Ignacio
created
ddc327f
gpui: Fix Vim jj keybinding intercepting j key from IME on macOS (#52192)
Click to expand commit body
## Fixes
Closes #28174
Closes #30393
Closes #36610
Closes #38616
Updates #31819
Updates #21136
## Context
There was an issue where CJK input could not be entered correctly when
certain keys used during IME composition conflicted with custom
keybindings while the CJK IME was enabled.
(In particular, in Vim mode, the `jj` keybinding in INSERT MODE could
not be entered correctly.)
This issue had already been fixed on Windows, but not on macOS (and
judging from the code, it is likely also present on Linux, although this
has not been verified).
In this change, we aligned the behavior with Windows.
Currently, on Windows, when the CJK ( or other ) IME is enabled, IME
input is prioritized.
Following this behavior, we updated macOS to also prioritize IME input.
| Input source | Source type | ASCII-capable | Result | Behavior |
|---|---|---|---|---|
| Japanese Hiragana | `KeyboardInputMode` | `false` | `true` | IME
handles key first |
| Japanese Romaji | `KeyboardInputMode` | `true` | `false` | Keybinding
matching first |
| Korean | `KeyboardInputMode` | `false` | `true` | IME handles key
first |
| Chinese Pinyin | `KeyboardInputMode` | `false` | `true` | IME handles
key first |
| Armenian | `KeyboardLayout` | `false` | `false` | Keybinding matching
first |
| Ukrainian | `KeyboardLayout` | `false` | `false` | Keybinding matching
first |
| English (ABC) | `KeyboardLayout` | `true` | `false` | Keybinding
matching first |
(Since similar approaches are used in tools like Vim and Neovim, we
consider this policy to be appropriate.)
## Videos
### before fix
https://github.com/user-attachments/assets/9b204220-d0de-4819-8dc4-00ba85169ef6
### after fix
https://github.com/user-attachments/assets/045cc808-8d29-42d2-9de5-f903fcb602db
## How to Review
This change modifies the gpui layer rather than Zed itself, so please
verify the behavior at the gpui level, not just within Zed.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- Fixed IME composition on macOS in Vim insert mode with multi-stroke keybindings like `jj`
Fixes a crash introduced by removing some defensive code in
https://github.com/zed-industries/zed/pull/52276
Release Notes:
- N/A
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
Max Brunsfeld
and
Mikayla Maki
created
fc66e4e
ep: Only report shown once prediction is previewed in subtle mode (#52362)
Click to expand commit body
## Context
We currently mark the current prediction as "shown" when the subtle mode
indicator appears. This doesn't really make sense. We make an effort
elsewhere to differentiate between a user rejecting a prediction that
they viewed vs. never saw in order to compute accurate metrics.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A or Added/Fixed/Improved ...
Ben Kunkle
created
7ccef1d
extension_api: Expose preferred_line_length in LanguageSettings (#52175)
Click to expand commit body
Closes #21822
## Context
Exposes `preferred_line_length` from `AllLanguageSettings` to the
Extension
API's `LanguageSettings` struct. Currently only `tab_size` is available
to
extensions, which prevents language extensions (e.g. Dart) from reading
the
user's preferred line length and forwarding it to their language server
(e.g. as `dart.lineLength`).
Related: https://github.com/zed-extensions/dart/issues/2
## How to Review
Small change — follow how `tab_size` is plumbed through:
1. WIT definition (`language-settings` record)
2. `extension_api` Rust struct
3. Host-side bridge conversion
The new field follows the exact same pattern.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- Compile-time verified via WIT bindings; no runtime behavior change
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Roman Cinis
created
c7951fa
agent_ui: Add support for pasting external files and directories (#52300)
Click to expand commit body
This PR adds support to paste external files and directories in Agent
Panel, along with the existing image paste path.
Release Notes:
- Added support for pasting files and folders into the Agent Panel.
Smit Barmase
created
1358e42
title_bar: Display the org name in the user avatar trigger when not the personal (#52356)
Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/52343
We'll be experimenting showing the org name in the avatar trigger button
when that's not the personal one.
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <git@maxdeviant.com>
Danilo Leal
and
Marshall Bowers
created
d0baf21
Make PathList equality ignore display order (#52052)
Click to expand commit body
`PathList` stores both sorted paths and the original insertion order
(for display in the project panel). Previously, `PartialEq`, `Eq`, and
`Hash` were derived, which meant two `PathList` values with the same
paths but different display orderings were considered unequal.
This change replaces the derived impls with manual ones that only
compare
the sorted `paths` field, matching the semantic intent: a `PathList`
identifies a set of directories, and the display order is not part of
that identity.
Release Notes:
- N/A
Eric Holk
created
64d4e01
terminal_view: Ensure terminal toggle shortcut appears in tooltip (#52357)
Click to expand commit body
Follow-up to the discussion in #51670.
@ConradIrwin, thanks for the review!
You're right about the other editors. VS Code and JetBrains use
dedicated shortcuts for bottom panel tabs, which exactly mirrors how
`ctrl-`` already behaves in Zed, so we don't need a new keybinding.
The reason I originally proposed `cmd-shift-j` was just to match the UI
pattern of the Debugger, which clearly shows `cmd-shift-d` on hover.
Because of a minor UI discoverability bug, the Terminal button's tooltip
was completely blank, which made it look like it just lacked a shortcut
entirely.
It turns out the Terminal button's internal `toggle_action()` method was
just telling the UI to look up `ToggleFocus` instead of
`terminal_panel::Toggle` (which is what `ctrl-`` is actually bound to).
I've updated this branch with a simple one-word fix that just points the
`toggle_action` to the correct keymap. The existing `ctrl-`` shortcut
now shows up perfectly in the hover tooltip. Good catch on the existing
shortcuts, keeps this much cleaner.
Co-authored-by: Michael Smolkin <msmolkin@users.noreply.github.com>
Michael Smolkin
and
Michael Smolkin
created
d3ab0d9
agent: Mark subagent completions with Subagent intent (#52350)
Click to expand commit body
## Context
Ensure subagent threads build requests with the Subagent intent instead
of UserPrompt. This allows us to properly
attribute this as a tool call for certain providers instead of a user
request.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- copilot_chat: Fix subagent requests being marked as user requests.
Ben Brandt
created
2b8e9cc
ep: Follow-ups for binding changes (#52258)
Click to expand commit body
## Context
- Updates docs for how to update edit prediction bindings
- Walks back how often we use tab to accept prediction where we
previously didn't; now just when in leading whitespace, tab does not
accept completion when completions menu is open
- migration for keymaps using the old `edit_prediction_conflict` key
context
## How to Review
The only code worth reviewing is the migration
<!-- Help reviewers focus their attention:
- For small PRs: note what to focus on (e.g., "error handling in
foo.rs")
- For large PRs (>400 LOC): provide a guided tour — numbered list of
files/commits to read in order. (The `large-pr` label is applied
automatically.)
- See the review process guidelines for comment conventions -->
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A or Added/Fixed/Improved ...
---------
Co-authored-by: Max <max@zed.dev>
4c3179f
Fix flaky terminal test for position / cell conversion (#52351)
Click to expand commit body
This PR fixes test flakiness introduced in
https://github.com/zed-industries/zed/pull/52111
The flakiness was because the test was using its own RNG, rather than
using gpui's built-in support for consistently-seeded RNGs in tests. The
fix was just to adjust the test to use the same logic for computing row
and column count as was introduced in the above PR.
Release Notes:
- N/A
Max Brunsfeld
created
5d8c09e
terminal_panel: Cmd+N opens new terminal where you are already working (#48609)
Click to expand commit body
Related to #31504
## Problem
If you drag a terminal into the center editor area as a tab, pressing
`Cmd+N` still opens the new terminal in the terminal panel instead of
next to the tab you're looking at.
## Solution
`Cmd+N` now checks whether the center pane is focused and its active tab
is a terminal. If both are true, the new terminal opens there. All other
behavior is unchanged.
https://github.com/user-attachments/assets/01036cb4-5f1f-456e-900e-eed2e53d61f5
## Test plan
- [ ] Drag a terminal into the center editor area. Focus it. Press
Cmd+N. New terminal opens as a center tab.
- [ ] Toggle terminal panel with Ctrl+`. Press Cmd+N. Opens in panel as
before.
- [ ] Focus a regular code file. Press Cmd+N. Opens in panel as before.
- [ ] Have a terminal in the center, but focus the terminal panel. Press
Cmd+N. Opens in panel as before.
Release Notes:
- Improved `terminal: New Terminal` (Cmd+N) to open in the center pane
when a terminal tab there is focused, instead of always opening in the
terminal panel.
Saurabh Singh
created
1d5dfe6
cloud_api_types: Add `is_personal` field to `Organization` (#52349)
Click to expand commit body
This PR adds an `is_personal` field to the `Organization` DTO returned
from Cloud.
We're already returning this field in production.
Part of CLO-569.
Release Notes:
- N/A
Marshall Bowers
created
9dd588a
Allow PRs to not have a newline before the first release note (#52336)
Click to expand commit body
Release Notes:
- N/A
Conrad Irwin
created
b1e94da
eval: Port over evals for streaming edit tool (#52317)
Click to expand commit body
Setting up the infra for unit evals on the new tool. For now,
replicating the eval setup as close as possible to the old tool.
## Self-Review Checklist
<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
Release Notes:
- N/A
Ben Brandt
created
bf92d19
Fix switching between helix and vim modes to not require returning to non-modal in between (#51706)
Click to expand commit body
* Update `Vim::register` to correctly re-activate when either `vim_mode`
or `helix_mode` are enabled, when they were previously disabled.
* Update `settings_ui::page_data::keymap_page` such that, when enabling
or disabling `vim_mode` or `helix_mode`, the other setting is
disabled, in case it is set. This ensures that only one mode is
enabled at a time, as it should be.
Closes #51704
Release Notes:
- Fixed switching between vim and helix mode needing multiple calls to
have an effect while an editor is already open
- Update Settings UI such that, enabling vim or helix mode, now disables
the other if it was previously active
---------
Co-authored-by: dino <dinojoaocosta@gmail.com>