98d2322
v0.193.x stable
Peter Tripp created
98d2322
v0.193.x stable
Peter Tripp created
4c7c0bc
gpui: Fix slow scrolling in lists (cherry-pick #33608) (#33722)
Cherry-picked gpui: Fix slow scrolling in lists (#33608) matches editor element's behavior https://github.com/user-attachments/assets/f70912e1-5adb-403b-a98c-63e2e89929ac - in first version editor scrolls like 1.5 pages, but agent panel only scrolls half a page. - in second version, agent panel also scrolls like 1.5 pages. Release Notes: - Fixed skipping of some scroll events in the non-uniform list UI element, which fixes slow scrolling of the agent panel. Co-authored-by: maan2003 <49202620+maan2003@users.noreply.github.com>
gcp-cherry-pick-bot[bot] and maan2003 created
837f28d
Bump to 0.193.3 for @SomeoneToIgnore
Zed Bot created
eb48f9b
Revert "languages: Bump ESLint LSP server to version 3.0.10 (#32717)" (cherry-pick #33659) (#33663)
Cherry-picked Revert "languages: Bump ESLint LSP server to version 3.0.10 (#32717)" (#33659) This reverts commit 1edaeebae5b0f1b67cdad1a994b88a3c11f75705. Based on an elevated number of ESLint-related issues, reverting the upgrade. Many people upvoted the issues and did not share any repro details, so cannot be certain what's more broken: seems relatively generic as related to *.ts ESLint configs. Checked the revert on 2 projects from the issues below: Closes https://github.com/zed-industries/zed/issues/33425 With https://github.com/adamhl8/zed-33425 as an example repo: there, both eslint configurations worked for me when I stopped Zed and opened a project. Somehow, switching various Zed's with different vscode-eslint package versions, eventually I get `Error: Cannot find module '~/.local/share/zed/languages/eslint/vscode-eslint-3.0.10/vscode-eslint/server/out/eslintServer.js'`-ish error. Not very related to issues with newer vscode-eslint integration, but worth mentioning as is related to the package updates. Closes https://github.com/zed-industries/zed/issues/33648 With a good example of https://github.com/florian-lackner365/zed-eslint-bug monorepo project. The monorepo part seems not to be related, but somehow, `eslint.config.js` is involved as the newer vscode-eslint fails to find a config. Works well with the older vscode-eslint. Release Notes: - Downgraded to vscode-eslint-2.4.4 as a ESLint language server Co-authored-by: Kirill Bulatov <kirill@zed.dev>
gcp-cherry-pick-bot[bot] and Kirill Bulatov created
04dd9fd
Further improve color inlay hints in multi buffers (#33642)
Follow-up of https://github.com/zed-industries/zed/pull/33605 Release Notes: - N/A
Kirill Bulatov created
170d6d5
Rework color indicators visual representation (#33605)
Use a div-based rendering code instead of using a text Closes https://github.com/zed-industries/zed/discussions/33507 Before: <img width="410" alt="before_dark" src="https://github.com/user-attachments/assets/66ad63ae-7836-4dc7-8176-a2ff5a38bcd4" /> After: <img width="407" alt="after_dark" src="https://github.com/user-attachments/assets/0b627da8-461b-4f19-b236-4a69bf5952a0" /> Before: <img width="409" alt="before_light" src="https://github.com/user-attachments/assets/ebcfabec-fcda-4b63-aee6-c702888f0db4" /> After: <img width="410" alt="after_light" src="https://github.com/user-attachments/assets/c0da42a1-d6b3-4e08-a56c-9966c07e442d" /> The border is not that contrast as in VSCode examples in the issue, but I'm supposed to use the right thing in https://github.com/zed-industries/zed/blob/1e11de48eeba01dc12761ec1274f8b0963de5514/crates/editor/src/display_map/inlay_map.rs#L357 based on https://github.com/zed-industries/zed/blob/41583fb066629d1e54d600e930be068a68984c5c/crates/theme/src/styles/colors.rs#L16-L17 Another oddity is that the border starts to shrink on `cmd-=` (`zed::IncreaseBufferFontSize`): <img width="1244" alt="image" src="https://github.com/user-attachments/assets/f424edc0-ca0c-4b02-96d4-6da7bf70449a" /> but that needs a different part of code to be adjusted hence skipped. Tailwind CSS example: <img width="1108" alt="image" src="https://github.com/user-attachments/assets/10ada4dc-ea8c-46d3-b285-d895bbd6a619" /> Release Notes: - Reworked color indicators visual representation
Kirill Bulatov created
1d11ec3
Fix document colors issues with other inlays and multi buffers (#33598)
Closes https://github.com/zed-industries/zed/issues/33575 * Fixes inlay colors spoiled after document color displayed * Optimizes the query pattern for large multi buffers Release Notes: - Fixed document colors issues with other inlays and multi buffers
Kirill Bulatov created
d08351b
Don't panic on vintage files (cherry-pick #33543) (#33551)
Cherry-picked Don't panic on vintage files (#33543) Release Notes: - remoting: Fix a crash on the remote side when encountering files from before 1970. Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
gcp-cherry-pick-bot[bot] and Conrad Irwin created
4961830
Bump to 0.193.2 for @SomeoneToIgnore
Zed Bot created
5a73af1
Respect server capabilities on queries (#33538)
Closes https://github.com/zed-industries/zed/issues/33522 Turns out a bunch of Zed requests were not checking their capabilities correctly, due to odd copy-paste and due to default that assumed that the capabilities are met. Adjust the code, which includes the document colors, add the test on the colors case. Release Notes: - Fixed excessive document colors requests for unrelated files
Kirill Bulatov created
ebe2056
Fix blend alpha colors with editor background in inline preview (cherry-pick #33513) (#33517)
Cherry-picked Fix blend alpha colors with editor background in inline preview (#33513) Closes #33505 ## Before <img width="434" alt="Screenshot 2025-06-27 at 12 22 57" src="https://github.com/user-attachments/assets/ac215a39-b3fe-4c9e-bd7d-0d7568d5fd1f" /> ## After <img width="441" alt="Screenshot 2025-06-27 at 12 22 47" src="https://github.com/user-attachments/assets/28218ed6-c1aa-4d3f-a268-def2fa9f0340" /> Release Notes: - Fixed inline color previews not correctly blending alpha/transparency values with the editor background Co-authored-by: ddoemonn <109994179+ddoemonn@users.noreply.github.com>
gcp-cherry-pick-bot[bot] and ddoemonn created
a2b18a0
debugger: Fix treatment of node-terminal scenarios (cherry-pick #33432) (#33469)
Cherry-picked debugger: Fix treatment of node-terminal scenarios (#33432) - Normalize `node-terminal` to `pwa-node` before sending to DAP - Split `command` into `program` and `args` - Run in external console Release Notes: - debugger: Fixed debugging JavaScript tasks that used `"type": "node-terminal"`. Co-authored-by: Cole Miller <cole@zed.dev>
gcp-cherry-pick-bot[bot] and Cole Miller created
e0090a1
pane: Update pinned tab count when it exceeds actual tab count (#33405)
## Summary This PR improves the workaround introduced in #33335 that handles cases where the pinned tab count exceeds the actual tab count during workspace deserialization. ## Problem The original workaround in #33335 successfully prevented the panic but had two issues: 1. **Console spam**: The warning message was logged repeatedly because `self.pinned_tab_count` wasn't updated to match the actual tab count 2. **Auto-pinning behavior**: New tabs up until you exceed the old safe tab count were automatically pinned after the workaround was triggered. ## Solution Updates the defensive code to set `self.pinned_tab_count = tab_count` when the mismatch is detected, ensuring: - The warning is only logged once when encountered. - New tabs behave normally (aren't auto-pinned) - The workspace remains in a consistent state This is an immediate fix for the workaround. I'll attempt to open up a follow-up PR when i get the chance that will address the root cause by implementing serialization for empty untitled tabs, as discussed in #33342. Release Notes: - N/A
vipex created
ca43498
zed 0.193.1
Joseph T. Lyons created
f315b6f
Restore missing initialization of text thread actions (#33422)
Fixes a regression introduced in https://github.com/zed-industries/zed/pull/33289 Release Notes: - Fixed a bug where some text thread actions were accidentally removed.
Max Brunsfeld created
6488524
v0.193.x preview
Joseph T. Lyons created
eb51041
debugger_ui: Fix variable completion accept in console appends the whole word (#33378)
Closes #32959 Release Notes: - Fixed the issue where accepting variable completion in the Debugger would append the entire variable name instead of the remaining part.
Smit Barmase created
308debe
terminal: Fix trailing single quote included when opening link from terminal (#33376)
Closes #33210 Release Notes: - Fixed an issue where a trailing single quote was included when opening a link from the terminal.
Sarmad Gulzar created
0905255
bedrock: Add prompt caching support (#33194)
Closes https://github.com/zed-industries/zed/issues/33221 Bedrock has similar to anthropic caching api, if we want to cache messages up to a certain point, we should add a special block into that message. Additionally, we can cache tools definition by adding cache point block after tools spec. See: [Bedrock User Guide: Prompt Caching](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models) Release Notes: - bedrock: Added prompt caching support --------- Co-authored-by: Oleksiy Syvokon <oleksiy@zed.dev>
Vladimir Kuznichenkov and Oleksiy Syvokon created
59aeede
vercel: Use proper model identifiers and add image support (#33377)
Follow up to previous PRs: - Return `true` in `supports_images` - v0 supports images already - Rename model id to match the exact version of the model `v0-1.5-md` (For now we do not expose `sm`/`lg` variants since they seem not to be available via the API) - Provide autocompletion in settings for using `vercel` as a `provider` Release Notes: - N/A
Bennet Bo Fenner created
18f1221
vercel: Reuse existing OpenAI code (#33362)
Follow up to #33292 Since Vercel's API is OpenAI compatible, we can reuse a bunch of code. Release Notes: - N/A
Bennet Bo Fenner created
c979452
Implement indent conversion editor commands (#32340)
## Description of Feature or Change
Zed currently lacks a built-in way to convert a fileโs indentation style
on the fly. While it's possible to change indentation behavior via
global or language-specific settings, these changes are persistent and
broad in scope as they apply to all files or all files of a given
language. We believe this could be improved for quick one-off
adjustments to specific files.
This PR introduces two new editor commands:
`Editor::convert_indentation_to_spaces` and
`Editor::convert_indentation_to_tabs`. These commands allow users to
convert the indentation of either the entire buffer or a selection of
lines, to spaces or tabs. Indentation levels are preserved, and any
mixed whitespace lines are properly normalized.
This feature is inspired by VS Codeโs "Convert Indentation to
Tabs/Spaces" commands, but offers faster execution and supports
selection-based conversion, making it more flexible for quick formatting
changes.
## Implementation Details
To enable selection-based indentation conversion, we initially
considered reusing the existing `Editor::manipulate_lines` function,
which handles selections for line-based manipulations. However, this
method was designed specifically for operations like sorting or
reversing lines, and does not allow modifications to the line contents
themselves.
To address this limitation, we refactored the method into a more
flexible version: `Editor::manipulate_generic_lines`. This new method
passes a reference to the selected text directly into a callback, giving
the callback full control over how to process and construct the
resulting lines. The callback returns a `String` containing the modified
text, as well as the number of lines before and after the
transformation. These counts are computed using `.len()` on the line
vectors during manipulation, which is more efficient than calculating
them after the fact.
```rust
fn manipulate_generic_lines<M>(
&mut self,
window: &mut Window,
cx: &mut Context<Self>,
mut manipulate: M,
) where
M: FnMut(&str) -> (String, usize, usize),
{
// ... Get text from buffer.text_for_range() ...
let (new_text, lines_before, lines_after) = manipulate(&text);
// ...
```
We now introduce two specialized methods:
`Editor::manipulate_mutable_lines` and
`Editor::manipulate_immutable_lines`. Each editor command selects the
appropriate method based on whether it needs to modify line contents or
simply reorder them. This distinction is important for performance: when
line contents remain unchanged, working with an immutable reference as
`&mut Vec<&str>` is both faster and more memory-efficient than using an
owned `&mut Vec<String>`.
## Demonstration
https://github.com/user-attachments/assets/e50b37ea-a128-4c2a-b252-46c3c4530d97
Release Notes:
- Added `editor::ConvertIndentationToSpaces` and
`editor::ConvertIndentationToTabs` actions to change editor indents
---------
Co-authored-by: Pedro Silveira <pedroruanosilveira@tecnico.ulisboa.pt>
Rodrigo Freire and Pedro Silveira created
4396ac9
bedrock: DeepSeek does not support receiving Reasoning Blocks (#33326)
Closes #32341 Release Notes: - Fixed DeepSeek R1 errors for reasoning blocks being sent back to the model.
Shardul Vaidya created
c6ff586
bedrock: Fix empty tool input on project diagnostic in bedrock (#33369)
Bedrock [do not accept][1] `null` as a JSON value input for the tool call when called back. Instead of passing null, we will pass back an empty object, which is accepted by API Closes #33204 Release Notes: - Fixed project diagnostic tool call for bedrock [1]: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolUseBlock.html
Vladimir Kuznichenkov created
1c6b471
agent: Fix issue where unconfigured MCP extensions would not start server (#33365)
Release Notes: - agent: Fix an issue where MCP servers that were provided by extensions would sometimes not start up
Bennet Bo Fenner created
1081624
language_models: Emit UsageUpdate events for token usage in DeepSeek and OpenAI (#33242)
Closes #ISSUE Release Notes: - N/A
Umesh Yadav created
0988961
bedrock: Fix subsequent bedrock tool calls fail (#33174)
Closes #30714 Bedrock converse api expect to see tool options if at least one tool was used in conversation in the past messages. Right now if `LanguageModelToolChoice::None` isn't supported edit agent [remove][1] tools from request. That point breaks Converse API of Bedrock. As was proposed in [the issue][2] we won't drop tool choose but instead will deny any of them if model will respond with a tool choose. [1]: https://github.com/x-qdo/zed/blob/fceba6c79540677c2504d2c22191963b6170591a/crates/assistant_tools/src/edit_agent.rs#L703 [2]: https://github.com/zed-industries/zed/issues/30714#issuecomment-2886422716 Release Notes: - Fixed bedrock tool calls in edit mode
Vladimir Kuznichenkov created
9640996
Cleanup handling of surrounding word logic, fixing crash in editor::SelectAllMatches (#33353)
This reduces code complexity and avoids unnecessary roundtripping through `DisplayPoint`. Hopefully this doesn't cause behavior changes, but has one known behavior improvement: `clip_at_line_ends` logic caused `is_inside_word` to return false when on a word at the end of the line. In vim mode, this caused `select_all_matches` to not select words at the end of lines, and in some cases crashes due to not finding any selections. Closes #29823 Release Notes: - N/A
Michael Sloan created
014f930
Make remote mkdir shell-independent for compatibility (#32997)
- Closes: #30962 Nushell does not support mkdir -p So invoke sh -c "mkdir -p" instead which will also work under nushell. Release Notes: - Fixed ssh remotes running Nushell (and possibly other non posix-compliant shells) --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
marton csutora and Conrad Irwin created
17774b1
debugger: Add a tooltip to the session picker with the session ID (#33331)
This helps correlate sessions in the picker with entries in the debug adapter logs view. Release Notes: - N/A
Cole Miller created
cf08654
debugger: Add support for completion triggers in debug console (#33211)
Release Notes: - Debugger: Add support for completion triggers in debug console
Remco Smits created
aa330fc
Use background task for settings migrations + notify about errors (#30009)
Release Notes: - N/A
Michael Sloan created
be95716
helix: Prevent cursor move on entering insert mode (#33201)
Closes #33061 https://github.com/user-attachments/assets/3b3e146e-7c12-412e-b4dd-c70411891b9e Release Notes: - Fixed cursor unexpectedly moving when entering/exiting insert mode in Helix mode, making the behavior consistent with the Helix editor.
vipex created
f738fbd
gpui: Disable rounding in the layout engine (#31836)
Rounding broke (among other things, probably) pixel-perfect image rendering with non-power-of-two scaling factor. An example which reproduces the problem can be found [here](https://github.com/WaffleLapkin/gpui_taffy_rounding_whyyyyy). How it looks with `gpui` from `main`:  How it looks with this patch:  Both screenshots are made on kde+wayland with magnification using kde's built-in magnification (`Meta`+`+`, `Meta`+`-`). Note that screenshot apps have a high chance of lying ๐ The image itself is 400 by 300 pixels of red/green checkerboard pattern made specifically to exaggerate scaling issues. Release Notes: - N/A
waffle created
0c78a11
Patch panic around pinned tab count (#33335)
After much investigation, I have not been able to track down what is causing [this panic](https://github.com/zed-industries/zed/issues/33342). I'm clamping the value for now, because a bug is better than a crash. Hopefully someone finds reproduction steps, and I will implement a proper fix. Release Notes: - N/A
Joseph T. Lyons created
9427526
gpui: Clear the element arena after presenting the frame (#33338)
This is an easy way to shave some microseconds off the critical path for frame rendering. On my machine this reduces typical frame rendering latency by ~100 microseconds, probably quite a bit more on slower machines. Here is how long it typically takes to drop elements from the arena, from a fairly brief run:  Release Notes: - N/A
Michael Sloan created
eec26c9
Add initial docs for editor diagnostics (#33325)
Release Notes: - N/A
Kirill Bulatov created
3c0475d
debugger: Reorder step icons to be consistent with other editors (#33330)
Closes #33303 Release Notes: - debugger: Swap step in/out icon positions in debug panel to be consistent with other editors
Anthony Eid created
fc1fc26
debugger: Generate inline values based on debugger.scm file (#33081)
## Context To support inline values a language will have to implement their own provider trait that walks through tree sitter nodes. This is overly complicated, hard to accurately implement for each language, and lacks proper extension support. This PR switches to a singular inline provider that uses a language's `debugger.scm` query field to capture variables and scopes. The inline provider is able to use this information to generate inlays that take scope into account and work with any language that defines a debugger query file. ### Todos - [x] Implement a utility test function to easily test inline values - [x] Generate inline values based on captures - [x] Reimplement Python, Rust, and Go support - [x] Take scope into account when iterating through variable captures - [x] Add tests for Go inline values - [x] Remove old inline provider code and trait implementations Release Notes: - debugger: Generate inline values based on a language debugger.scm file
Anthony Eid created
800b925
Improve Atom keymap (#33329)
Closes: https://github.com/zed-industries/zed/issues/33256 Move some Editor keymap entries into `Editor && mode == full` Release Notes: - N/A
Peter Tripp created
95cf153
Simulate helix line wrapping (#32763)
In helix the `f`, `F`, `t`, `T`, left and right motions wrap lines. I
added that by default.
Release Notes:
- vim: The `use_multiline_find` setting is replaced by binding to the
correct action in the keymap:
```
"f": ["vim::PushFindForward", { "before": false, "multiline": true }],
"t": ["vim::PushFindForward", { "before": true, "multiline": true }],
"shift-f": ["vim::PushFindBackward", { "after": false, "multiline": true
}],
"shift-t": ["vim::PushFindBackward", { "after": true, "multiline": true
}],
```
- helix: `f`/`t`/`shift-f`/`shift-t`/`h`/`l`/`left`/`right` are now
multiline by default (like helix)
fantacell created
7be57ba
agent: Fix issue with Anthropic thinking models (#33317)
cc @osyvokon We were seeing a bunch of errors in our backend when people were using Claude models with thinking enabled. In the logs we would see > an error occurred while interacting with the Anthropic API: invalid_request_error: messages.x.content.0.type: Expected `thinking` or `redacted_thinking`, but found `text`. When `thinking` is enabled, a final `assistant` message must start with a thinking block (preceeding the lastmost set of `tool_use` and `tool_result` blocks). We recommend you include thinking blocks from previous turns. To avoid this requirement, disable `thinking`. Please consult our documentation at https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking However, this issue did not occur frequently and was not easily reproducible. Turns out it was triggered by us not correctly handling [Redacted Thinking Blocks](https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#thinking-redaction). I could constantly reproduce this issue by including this magic string: `ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB ` in the request, which forces `claude-3-7-sonnet` to emit redacted thinking blocks (confusingly the magic string does not seem to be working for `claude-sonnet-4`). As soon as we hit a tool call Anthropic would return an error. Thanks to @osyvokon for pointing me in the right direction ๐! Release Notes: - agent: Fixed an issue where Anthropic models would sometimes return an error when thinking was enabled
Bennet Bo Fenner created
39dc4b9
Fix being unable to input a whitespace character in collab channels filter (#33318)
Before, `space` was always causing a channel join. Now it's less fluent, one has to press `ESC` to get the focus out of the filter editor and then `space` starts joining the channel. Release Notes: - Fixed being unable to input a whitespace character in collab channels filter
Kirill Bulatov created
deb2564
gpui: Add keybind metadata API (#33316)
Closes #ISSUE Adds a very simple API to track metadata about keybindings in GPUI, namely the source of the binding. The motivation for this is displaying the source of keybindings in the [keymap UI](https://github.com/zed-industries/zed/pull/32436). The API is designed to be as simple and flexible as possible, storing only a `Option<u32>` on the bindings themselves to keep the struct small. It is intended to be used as an index or key into a table/map created and managed by the consumer of the API to map from indices to arbitrary meta-data. I.e. the consumer is responsible for both generating these indices and giving them meaning. The current usage in Zed is stateless, just a mapping between constants and User, Default, Base, and Vim keymap sources, however, this can be extended in the future to also track _which_ base keymap is being used. Release Notes: - N/A *or* Added/Fixed/Improved ...
Ben Kunkle created
13f1344
collab: Require billing address in all Stripe checkouts (#32980)
Summary I've successfully implemented the required billing address collection feature for Stripe Checkout sessions. Here's what was done: ### 1. **Added New Data Structures** (`stripe_client.rs`): - Added `StripeBillingAddressCollection` enum with `Auto` and `Required` variants - Added `billing_address_collection` field to `StripeCreateCheckoutSessionParams` ### 2. **Updated Stripe Client Implementation** (`real_stripe_client.rs`): - Added conversion from `StripeBillingAddressCollection` to Stripe's `CheckoutSessionBillingAddressCollection` - Updated the `TryFrom` implementation to map the billing address collection field when creating checkout sessions - Added the necessary import ### 3. **Updated Billing Service** (`stripe_billing.rs`): - Set `billing_address_collection` to `Required` in both `checkout_with_zed_pro()` and `checkout_with_zed_pro_trial()` methods - Added the necessary import ### 4. **Updated Test Infrastructure** (`fake_stripe_client.rs`): - Added `billing_address_collection` field to `StripeCreateCheckoutSessionCall` - Updated the `create_checkout_session` implementation to capture the new field - Added the necessary import ### 5. **Updated Tests** (`stripe_billing_tests.rs`): - Added assertions to verify that `billing_address_collection` is set to `Required` in all three test cases: - `test_checkout_with_zed_pro` - `test_checkout_with_zed_pro_trial` (regular trial) - `test_checkout_with_zed_pro_trial` (extended trial) - Added the necessary import The implementation follows the pattern established in the codebase and ensures that whenever a Stripe Checkout session is created for Zed Pro subscriptions (both regular and trial), the billing address will be required from customers. This aligns with the Stripe documentation you provided, which shows that setting `billing_address_collection=required` will ensure the billing address is always collected during checkout. Release Notes: - N/A Co-authored-by: Marshall Bowers <git@maxdeviant.com>
morgankrey and Marshall Bowers created
94735ae
Add support for Vercel as a language model provider (#33292)
Vercel v0 is an OpenAI-compatible model, so this is mostly a dupe of the OpenAI provider files with some adaptations for v0, including going ahead and using the custom endpoint for the API URL field. Release Notes: - Added support for Vercel as a language model provider.
Danilo Leal created
0d70bcb
agent: Allow to force uninstall extension if it provides more than the MCP server (#33279)
Danilo Leal created
360d73c
Implement save functionality for diff view (#33298)
Add `can_save` and `save` methods to `DiffView`, enabling users to save changes made within the diff view. Release Notes: - Allow saving changes in the `zed --diff` view
Ben Brandt created
668d5ee
Add horizontal scroll to REPL outputs (#33247)
Release Notes: - Made the horizontal outputs scrollable in REPL
Stanislav Alekseev created
4cd4d28
Move UI code from assistant_context_editor -> agent_ui (#33289)
This breaks a transitive dependency of `agent` on UI crates. I've also found and eliminated some dead code in assistant_context_editor. Release Notes: - N/A
Max Brunsfeld created