081cbce
Merge /active command into /tabs one (#16154)
Click to expand commit body
Now, tabs have arguments, `active` (default, applied also for no
arguments case) and `all` to insert the active tab only or all tabs.
Release Notes:
- N/A
Kirill Bulatov
created
c2b254a
Fallback to using tree-sitter when determining ranges for info popovers (#16062)
Click to expand commit body
Closes #15382
Release Notes:
- Added fallback to a smallest tree sitter node when hovering over a
symbol
Stanislav Alekseev
created
af36d49
assistant panel: Animate assistant label if message is pending (#16152)
Click to expand commit body
This adds a pulsating effect to the assistant header in case the message
is pending.
The pulsating effect is capped between 0.2 and 1.0 and I tried (with the
help of Claude) to give it a "breathing" effect, since I found the
normal bounce a bit too much.
Also opted for setting the `alpha` on the `LabelLike` things, vs.
overwriting the color, since I think that's cleaner instead of exposing
the color and mutating that.
https://github.com/user-attachments/assets/4a94a1c5-8dc7-4c40-b30f-d92d112db7b5
Release Notes:
- N/A
Thorsten Ball
created
b36d138
Fix `editor::Cancel` action not inline assistant inputs created for empty selections (#16150)
Click to expand commit body
Release Notes:
- N/A
Kirill Bulatov
created
ee6a401
Remove extra empty space for files when file icons are turned off (#16142)
Click to expand commit body
Closes #16073
<img width="269" alt="image" src="https://github.com/user-attachments/assets/88b7ff9f-17ec-4764-b37a-c218d7ad14ec">
Release Notes:
- Removed extra empty space for files when file icons are turned off ([#16073](https://github.com/zed-industries/zed/issues/16073))

Release Notes:
- Include a count of the context tokens when hovering token counts in
the inline assist.
Nathan Sobo
created
a515442
Rely on model to determine indentation level and always rewrite the full line (#16145)
Click to expand commit body
This PR simplifies our approach to indentation in the inline assistant
in hopes of improving our experience for Python. We tell the model to
generate the correct indentation in the prompt, and always start
generating at the start of the line. This may fall down for less capable
models, but I want to get a solid experience on the best models and then
figure the rest out later.
Also: We now prefer `./assets/prompts` as an overrides directory when
stdout is a PTY, so you can do `cargo run` and then iterate prompts for
the current run inside the current working copy.
cc @trishume @dsp-ant
Release Notes:
- Zed now allows the model to control indentation when performing inline
transformation. We're hoping this improves the indentation experience in
Python and other indentation-sensitive languages, but it does require
more from the model.
---------
Co-authored-by: Mikayla <mikayla@zed.dev>
This PR configures [`squawk`](https://squawkhq.com/) to match our
database conventions.
Release Notes:
- N/A
Marshall Bowers
created
b4c22cc
collab: Add ability to revoke LLM service access tokens (#16143)
Click to expand commit body
This PR adds the ability to revoke access tokens for the LLM service.
There is a new `revoked_access_tokens` table that contains the
identifiers (`jti`) of revoked access tokens.
To revoke an access token, insert a record into this table:
```sql
insert into revoked_access_tokens (jti) values ('1e887b9e-37f5-49e8-8feb-3274e5a86b67');
```
We now attach the `jti` as `authn.jti` to the tracing spans so that we
can associate an access token with a given request to the LLM service.
Release Notes:
- N/A
68ae347
chore: Remove a bunch of unused structs (#16139)
Click to expand commit body
Found by beta clippy.
Release Notes:
- N/A
Piotr Osiewicz
created
f956257
haskell: Pass environment to `hls` (#15998)
Click to expand commit body
Fixed environment not being passed to hls, breaking local nix-based
installations
Release Notes:
- N/A
Stanislav Alekseev
created
8a148f3
Add feature-flagged access to LLM service (#16136)
Click to expand commit body
This PR adds feature-flagged access to the LLM service.
We've repurposed the `language-models` feature flag to be used for
providing access to Claude 3.5 Sonnet through the Zed provider.
The remaining RPC endpoints that were previously behind the
`language-models` feature flag are now behind a staff check.
We also put some Zed Pro related messaging behind a feature flag.
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
Marshall Bowers
and
Max
created
3bebb8b
Allow to cycle through center/top/bot scroll positions (#16134)
Click to expand commit body
On top of `editor::ScrollCursorCenter`, `editor::ScrollCursorTop`,
`editor::ScrollCursorBottom` actions, adds an
`editor::ScrollCursorCenterTopBottom` one, that allows using a single
keybinding to scroll between positions on the screen.
The implementation matches a corresponding Emacs feature: there's a
timeout (1s) that is kept after every switch, to allow continuously
changing the positions, center (initial) -> top -> bottom
Scrolling behavior is the same as the existing actions (e.g. editor will
ignore scroll to bottom, if there's not enough space above).
After 1s, next position is reset to the initial, center, one.
Release Notes:
- Added an `editor::ScrollCursorCenterTopBottom` action for toggling
scroll position with a single keybinding
---------
Co-authored-by: Alex Kladov <aleksey.kladov@gmail.com>
Kirill Bulatov
and
Alex Kladov
created
98516b5
collab: Restrict usage of the LLM service to accounts older than 30 days (#16133)
Click to expand commit body
This PR restricts usage of the LLM service to accounts older than 30
days.
We now store the GitHub user's `created_at` timestamp to check the
GitHub account age. If this is not set—which it won't be for existing
users—then we use the `created_at` timestamp in the Zed database.
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
Marshall Bowers
and
Max
created
f398ecc
Allow inserting text into the editor via the action (#16131)
Click to expand commit body
Improves workflows, based on the keymaps that group actions behind a
certain symbol.
E.g.
```json5
", o k": "zed::OpenKeymap",
", o K": "zed::OpenDefaultKeymap",
// other `,`-based keymaps
```
Now, it's possible to do
```json
", ,": ["editor::HandleInput", ","]
```
and type `,` without waiting for the timeout due to `,`-based bindings.
Release Notes:
- Add an `editor::HandleInput` action to ease typing symbols that are
part of keymaps. E.g. if `, o k` keybinding is bound, `", ,":
["editor::HandleInput", ","]` would allow to type `,` without timeouts.
---------
Co-authored-by: Alex Kladov <aleksey.kladov@gmail.com>
Kirill Bulatov
and
Alex Kladov
created
a3c7921
Report telemetry events for rate limit errors (#16130)
1674e12
Expose anthropic API errors to the client (#16129)
Click to expand commit body
Now, when an anthropic request is invalid or anthropic's API is down,
we'll expose that to the user instead of just returning a generic 500.
Release Notes:
- N/A
Co-authored-by: Marshall <marshall@zed.dev>
Max Brunsfeld
and
Marshall
created
f3ec8d4
collab: Use a separate Anthropic API key for Zed staff (#16128)
Click to expand commit body
This PR makes it so Zed staff can use a separate Anthropic API key for
the LLM service.
We also added an `is_staff` column to the `usages` table so that we can
exclude staff usage from the "active users" metrics that influence the
rate limits.
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
Marshall Bowers
and
Max
created
ebdde59
collab: Don't issue LLM API tokens if the user has not accepted the ToS (#16123)
Click to expand commit body
This PR adds a check to the LLM API token issuance to ensure that we
only issue tokens to users that have accepted the terms of service.
Release Notes:
- N/A
Marshall Bowers
created
df70e90
docs: Add `"dock"` to `"terminal"` section (#16122)
Click to expand commit body
Documentation-related fix for #16121.
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Release Notes:
* N/A
Neil
created
63aef7f
command_palette: Remove project as a dependency in Cargo.toml (#16082)
Click to expand commit body
The *project crate* is only needed as a dev dependency in the command
palette..
So I am doing some code / dependency cleanup...
Release Notes:
- N/A
Michael Angerman
created
9ae0d53
Update Rust crate quote to v1.0.36 (#15945)
Click to expand commit body
[](https://renovatebot.com)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [quote](https://togithub.com/dtolnay/quote) | dependencies | patch |
`1.0.35` -> `1.0.36` |
---
### Release Notes
<details>
<summary>dtolnay/quote (quote)</summary>
### [`v1.0.36`](https://togithub.com/dtolnay/quote/releases/tag/1.0.36)
[Compare
Source](https://togithub.com/dtolnay/quote/compare/1.0.35...1.0.36)
- Documentation improvements
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "after 3pm on Wednesday" in timezone
America/New_York, Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
Release Notes:
- N/A
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4yMC4xIiwidXBkYXRlZEluVmVyIjoiMzguMjAuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot]
and
renovate[bot]
created
ebdb755
Surface upstream rate limits from Anthropic (#16118)
Click to expand commit body
This PR makes it so hitting upstream rate limits from Anthropic result
in an HTTP 429 response instead of an HTTP 500.
To do this we need to surface structured errors out of the `anthropic`
crate.
Release Notes:
- N/A
Marshall Bowers
created
fbb533b
assistant: Require user to accept TOS for cloud provider (#16111)
Click to expand commit body
This adds the requirement for users to accept the terms of service the
first time they send a message with the Cloud provider.
Once this is out and in a nightly, we need to add the check to the
server side too, to authenticate access to the models.
Demo:
https://github.com/user-attachments/assets/0edebf74-8120-4fa2-b801-bb76f04e8a17
Release Notes:
- N/A
I went with inline approach directly within the panel.
First, enable workflow debugging in the hamburger menu (this works
retroactively as well):

This enables debug buttons in the header of each step:

Enabling one pretty-prints the workflow step internals:

Release Notes:
- N/A
Piotr Osiewicz
created
b6b0815
assistant: Show tooltips on workflow step buttons only when cursor is in step (#16108)
# HTTP Client Improvements for Extension API
This PR enhances the HTTP client functionality in the Zed extension API,
providing more control over requests and allowing for streaming
responses.
## Key Changes
1. Extended `HttpRequest` struct:
- Added `method` field to specify HTTP method
- Added `headers` field for custom headers
- Added optional `body` field for request payload
2. Introduced `HttpMethod` enum for supported HTTP methods
3. Updated `HttpResponse` struct:
- Added `headers` field to access response headers
- Changed `body` type from `String` to `Vec<u8>` for binary data support
4. Added streaming support:
- New `fetch_stream` function to get a response stream
- Introduced `HttpResponseStream` resource for chunked reading
5. Updated internal implementations to support these new features
6. Modified the Gleam extension to use the new API structure
## Motivation
These changes provide extension developers with more flexibility and
control over HTTP requests. The streaming support is particularly useful
for handling large responses efficiently or ideally streaming into the
UI.
## Testing
- [x] Updated existing tests
- [ ] Added new tests for streaming functionality
## Next Steps
- Consider adding more comprehensive examples in the documentation
- Evaluate performance impact of streaming for large responses
Please review and let me know if any adjustments are needed.
Release Notes:
- N/A
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Nathan Sobo
and
Marshall Bowers
created
f952126
collab: Remove LLM completions over RPC (#16114)
Click to expand commit body
This PR removes the LLM completion messages from the RPC protocol, as
these now go through the LLM service as of #16113.
Release Notes:
- N/A
- Updates provider logos for Anthropic, Google and Ollama
- Increases the size of icons in the model selector
Release Notes:
- N/A
Nate Butler
created
6389c61
Always stream completions through the LLM service (#16113)
Click to expand commit body
This PR removes the `llm-service` feature flag and makes it so all
completions are done via the LLM service when using the Zed provider.
Release Notes:
- N/A
Marshall Bowers
created
bab4da7
Fix corner radius when doing `rounded_full` (#15663)
Click to expand commit body
Release Notes:
- Fixed issue when doing `rounded_full`, it should render a pill-shape
rect instead of current eye-shape.
For example with this code
`div().h_4().w_16().bg(rgb(0xffffff)).rounded_full()`
Current:
<img width="144" alt="image"
src="https://github.com/user-attachments/assets/f8b20c7c-d91f-4c20-9f38-d435f59e72b7">
Fixed:
<img width="172" alt="image"
src="https://github.com/user-attachments/assets/ff8bbe26-2b31-4ef1-a2fb-25b458386ffb">
Son
created
a15a956
Accept finished inline transformations only if the user saves manually (#16112)
Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/16042
This commit modifies the behavior of inline transformations to only
accept finished transformations when the user manually saves the file.
Previously, transformations were automatically accepted on any save
event, including autosaves.
This was achieved by updating the `Pane` and `Workspace` structs to emit
a new `UserSavedItem` event when a manual save occurs, and modifying the
`InlineAssistant` to register and handle this new event (instead of
`editor::Saved`).
Release Notes:
- N/A
Antonio Scandurra
created
48f6193
Improve workflow step pruning and symbol similarity matching (#16036)
Click to expand commit body
This PR improves workflow step management and symbol matching. We've
optimized step pruning to remove any step that intersects an edit and
switched to normalized Levenshtein distance for more accurate symbol
matching.
Release Notes:
- N/A
Antonio Scandurra
created
355aebd
Introduce prompt override script and adjust names (#16094)
Click to expand commit body
This PR introduces a new script for iterative development of prompt
overrides in Zed.
Just `script/prompts link` and your running Zed should start using
prompts from `zed/assets/prompts`. Use `script/prompts unlink` to undo.
You can also link with `script/prompts link --worktree` to store the
prompts to a `../zed_prompts` worktree that's a sibling of your repo, in
case you don't want to mess with your working copy. Just don't forget
about it!
Key changes:
- Add new `script/prompts` for managing prompt overrides
- Rename `prompt_templates_dir` to `prompt_overrides_dir` for clarity
- Update paths to use `~/.config/zed/prompt_overrides` instead of
`~/.config/zed/prompts/templates`
- Adjust `PromptBuilder` to use the new `prompt_overrides_dir` function
These changes simplify the process of customizing prompts and provide a
more intuitive naming convention for override-related functionality.
Release Notes:
- N/A
3140d6c
collab: Temporarily bypass LLM rate limiting for staff (#16089)
Click to expand commit body
This PR makes it so staff members will be exempt from rate limiting by
the LLM service.
This is just a temporary measure until we can tweak the rate-limiting
heuristics.
Staff members are still subject to upstream LLM provider rate limits.
Release Notes:
- N/A
36a560d
Update the dangerfile to check for issue links
Joseph T Lyons
created
6f104fe
Copy `extension_api` Rust files to `OUT_DIR` when building `extension` to work around rust-analyzer limitation (#16064)
Click to expand commit body
Copies rust files from extension_api/wit to the OUT_DIR to allow
including them from within the crate, which is supported by
rust-analyzer. This allows rust-analyzer to deal with the included
files. It doesn't currently support files outside the crate.
Release Notes:
- N/A
Nathan Sobo
created
550e139
repl: Set the default lines ✖️ columns for the REPL to 32x128 (#16061)
Click to expand commit body

Release Notes:
- Improved visuals of repl stdout/stderr by reducing default line count
to 32
Kyle Kelley
created
33e120d
Capture telemetry data on per-user monthly LLM spending (#16050)