eedef48
Add more context to the terminal assistant (#15492)
Click to expand commit body
Release Notes: - N/A
Kirill Bulatov created
eedef48
Add more context to the terminal assistant (#15492)
Release Notes: - N/A
Kirill Bulatov created
73e3dfc
Switch editor::AcceptPartialInlineCompletion keybind to match VSCode (#15495)
Release Notes: - Fixed editor::AcceptPartialInlineCompletion keybind to match VSCode ([#15487](https://github.com/zed-industries/zed/issues/15487)).
Peter Tripp created
4bf2826
Assistant Panel: add keybinds for history and prompt library (#15486)
Release Notes: - N/A
Piotr Osiewicz created
1982a5a
gpui: Improve img element to support load from Assets (#15482)
Release Notes:
- N/A
Currently, the `img` element provided by GPUI only supports FilePath or
URL, but in actual applications we need to let `img` load an image
embedded in Assets.
The `svg` element can currently support this, but `img` cannot.
For example:
We have such an Assets directory:
```
assets
|- icons
|- images
|--- foo.png
```
```rs
// If give a path, considered an Asset
img("images/foo.png");
// If give a URI, considered a Remote image
img("https://foo.bar/images/foo.png");
// If give a PathBuf, considered a Local file
img(PathBuf::from("path/to/foo.png"));
```
## Example test
```
cargo run -p gpui --example image
```
<img width="827" alt="image"
src="https://github.com/user-attachments/assets/e45dcf7f-4626-4fb0-aca9-9b6e1045a952">
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Jason Lee and Marshall Bowers created
99bc90a
Allow customization of the model used for tool calling (#15479)
We also eliminate the `completion` crate and moved its logic into `LanguageModelRegistry`. Release Notes: - N/A --------- Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
1bfea9d
Show "full" paths in the /file command output (#15483)
Same as /tabs command outputs them Before:   After:   Release Notes: - N/A
Kirill Bulatov created
b160e13
collab: Keep track of last seen Stripe event for each record (#15480)
This PR improves our Stripe event handling by keeping track of the last event we've seen for each record. The `billing_customers` and `billing_subscriptions` tables both have a new `last_stripe_event_id` column. When we apply an event to one of these records, we store the event ID that was applied. Then, when we are going through events we can ignore any event that has an ID that came before the `last_stripe_event_id` (based on the lexicographical ordering of the IDs). Release Notes: - N/A
Marshall Bowers created
2ada296
assistant: Make it easier to define custom models (#15442)
This PR makes it easier to specify custom models for the Google, OpenAI,
and Anthropic provider:
Before (google):
```json
{
"language_models": {
"google": {
"available_models": [
{
"custom": {
"name": "my-custom-google-model",
"max_tokens": 12345
}
}
]
}
}
}
```
After (google):
```json
{
"language_models": {
"google": {
"available_models": [
{
"name": "my-custom-google-model",
"max_tokens": 12345
}
]
}
}
}
```
Before (anthropic):
```json
{
"language_models": {
"anthropic": {
"available_models": [
{
"custom": {
"name": "my-custom-anthropic-model",
"max_tokens": 12345
}
}
]
}
}
}
```
After (anthropic):
```json
{
"language_models": {
"anthropic": {
"version": "1",
"available_models": [
{
"name": "my-custom-anthropic-model",
"max_tokens": 12345
}
]
}
}
}
```
The settings will be auto-upgraded so the old versions will continue to
work (except for Google since that one has not been released).
/cc @as-cii
Release Notes:
- N/A
---------
Co-authored-by: Thorsten <thorsten@zed.dev>
Bennet Bo Fenner and Thorsten created
13dcb42
Change PathLikeWithPosition<P> into a non-generic type and replace ad-hoc Windows path parsing (#15373)
This simplifies `PathWithPosition` by making the common use case concrete and removing the manual, incomplete Windows path parsing. Windows paths also don't get '/'s replaced by '\\'s anymore to limit the responsibility of the code to just parsing out the suffix and creating `PathBuf` from the rest. `Path::file_name()` is now used to extract the filename and potential suffix instead of manual parsing from the full input. This way e.g. Windows paths that begin with a drive letter are handled correctly without platform-specific hacks. Release Notes: - N/A
Santeri Salmijärvi created
41c550c
assistant panel: Avoid auth prompt on provider switch (#15478)
Previously, the following lead to a bug: 1. Set OpenAI key 2. Switch to Anthropic 3. Restart Zed 4. Switch provider to OpenAI -> get prompted for authentication prompt With this change, you won't get prompted for the OpenAI key again. Release Notes: - N/A Co-authored-by: Bennet <bennet@zed.dev>
Thorsten Ball and Bennet created
21ebbc3
Inline Assist: replace "accept" action on generation error with "restart" (#15476)
Release Notes: - N/A
Piotr Osiewicz created
530feec
tab_switcher: Add support for tab switcher in assistant panel (#15475)
Additionally, I've generalized the implementation of tab switcher so that - instead of explicitly listing panels it supports (at the time of writing it was just the terminal panel and nothing else), it now relies on Panel::pane trait method. As long as that's implemented, you get a tab switcher support for free. Release Notes: - Added support for tab switcher in Assistant panel.
Piotr Osiewicz created
0540291
settings: Introduce PRESERVED_KEYS to write default values (#15474)
This adds the optional `PRESERVED_KEYS` constant to the `Settings` trait, which allows users of the trait to specify which keys should be written to the settings file, even if their current value matches the default value. That's useful for tagged settings that have, for example, a `"version"` field that should always be present in the user settings file, so we can then reparse the user settings based on the version. Co-Authored-By: Thorsten <thorsten@zed.dev> Release Notes: - N/A --------- Co-authored-by: Thorsten <thorsten@zed.dev>
Bennet Bo Fenner and Thorsten created
fa19bc9
Provide user agent when performing HTTP requests (#15470)
Release Notes: - N/A --------- Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
2a649fa
language model: Fix missing use_tool method in CopilotChatLanguageModel (#15466)
Broke CI after merging #14842 Release Notes: - N/A Co-authored-by: Thorsten <thorsten@zed.dev>
Bennet Bo Fenner and Thorsten created
0c8b17d
Hide blinking cursor when window is deactivated (#15408)
## Before https://github.com/user-attachments/assets/affb8407-a20e-4258-a8f7-b271da5d7b77 ## After https://github.com/user-attachments/assets/654fe7b9-330a-40c8-8885-72e69fa85b0a Release Notes: - Hide blinking cursor when window is deactivated ([4710](https://github.com/zed-industries/zed/issues/4710))
Jason Lee created
6f06558
Add GitHub Copilot Chat Support (#14842)
# Summary This commit implements Github Copilot Chat support within the existing Assistant panel/framework. It required a little bit of trickery and internal API modification, as Copilot doesn't use the same authentication-style as all of the existing providers, opting to use OAuth and a short lived API key instead of a straight API key. All existing Assistant features should work. Release Notes: - Added Github Copilot Chat support ([#4673](https://github.com/zed-industries/zed/issues/4673)). ## Screenshots <img width="1552" alt="A screenshot showing a conversation between a user and Github Copilot Chat within the Zed editor." src="https://github.com/user-attachments/assets/73eaf6a2-792b-4c40-a7fe-f763bd6417d7"> --------- Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
Ryan Hawkins and Bennet Bo Fenner created
d93891b
collab: Lay groundwork for reconciling with Stripe using the events API (#15459)
This PR lays the initial groundwork for using the Stripe events API to reconcile the data in our system with what's in Stripe. We're using the events API over webhooks so that we don't need to stand up the associated infrastructure needed to handle webhooks effectively (namely an asynchronous job queue). Since we haven't configured the Stripe API keys yet, we won't actually spawn the reconciliation background task yet, so this is currently a no-op. Release Notes: - N/A
Marshall Bowers created
28c14cd
collab: Add separate `billing_customers` table (#15457)
This PR adds a new `billing_customers` table to hold the billing customers. Previously we were storing both the `stripe_customer_id` and `stripe_subscription_id` in the `billable_subscriptions` table. However, this creates problems when we need to correlate subscription events back to the subscription record, as we don't know the user that the Stripe event corresponds to. By moving the `stripe_customer_id` to a separate table we can create the Stripe customer earlier in the flow—before we create the Stripe Checkout session—and associate that customer with a user. This way when we receive events down the line we can use the Stripe customer ID to correlate it back to the user. We're doing some destructive actions to the `billing_subscriptions` table, but this is fine, as we haven't started using them yet. Release Notes: - N/A
Marshall Bowers created
66121fa
collab: Add endpoint for managing a billing subscription (#15455)
This PR adds a new `POST /billing/subscriptions/manage` endpoint that
can be used to manage a billing subscription.
The endpoint accepts a `github_user_id` to identify the user, as well as
an optional `subscription_id` for managing a specific subscription. If
`subscription_id` is not provided, it try and use the active
subscription, if there is only one.
Right now the endpoint only supports cancelling an active subscription.
This is done by passing `"intent": "cancel"` in the request body.
The endpoint will return the URL to a Stripe customer portal session,
which the caller can redirect the user to.
Here's an example of how to call it:
```sh
curl -X POST "http://localhost:8080/billing/subscriptions/manage" \
-H "Authorization: <ADMIN_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"github_user_id": 12345, "intent": "cancel"}'
```
Release Notes:
- N/A
Marshall Bowers created
4d8ad7a
docs: Update youtube link to new @zeddotdev channel name (#15453)
Peter Tripp created
e15d59c
collab: Add endpoint for initiating a billing subscription (#15452)
This PR adds a new `POST /billing/subscriptions` endpoint that can be
used to initiate a billing subscription.
The endpoint will use the provided `github_user_id` to look up a user,
generate a Stripe Checkout session, and then return the URL.
The caller would then redirect the user to the URL to initiate the
checkout flow.
Here's an example of how to call it:
```sh
curl -X POST "http://localhost:8080/billing/subscriptions" \
-H "Authorization: <ADMIN_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"github_user_id": 12345}'
```
Release Notes:
- N/A
Marshall Bowers created
8bb34fd
repl: Log Jupyter kernel process stderr and stdout (#15391)
Super simple piping of logs from the Jupyter kernels to the Zed logs. Release Notes: - Added logging of stderr from Jupyter kernels to the Zed logs
Kyle Kelley created
02c51c9
Fix rendering of focused offscreen block when scrolled to bottom (#15449)
This change fixes a bug when a block is focused but offscreen. Previously, we used the last row, but this caused a spurious block to be rendered when scrolled to the end of the file. With this change we always render off-screen blocks below the editor's clipping box. Release Notes: - Fixed a bug that caused the inline assistant to be displayed twice in certain circumstances. Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
085d41b
collab: Add `billing_subscriptions` table (#15448)
This PR adds a new `billing_subscriptions` table to the database, as well as some accompanying models/queries. In this table we store a minimal amount of data from Stripe: - The Stripe customer ID - The Stripe subscription ID - The status of the Stripe subscription This should be enough for interactions with the Stripe API (e.g., to [create a customer portal session](https://docs.stripe.com/api/customer_portal/sessions/create)), as well as determine whether a subscription is active (based on the `status`). Release Notes: - N/A
Marshall Bowers created
0702ed5
Add is_staff and destination to download events (#15445)
Release Notes: - N/A
Joseph T. Lyons created
2b871a6
Use fuzzy-matching to locate symbols when resolving edit steps (#15447)
Release Notes: - N/A --------- Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
5e1aa89
workspace: Remove unused code (#15440)
Release Notes: - N/A
Michael Angerman created
aa1633b
assistant: Allow guests to create new contexts on the host (#15439)
This PR extends collaboration in the Assistant to allow guests to create new contexts on the host when collaborating. Release Notes: - N/A
Marshall Bowers created
2b0c600
file finder: Fix `./` breaking new-path prompt (#15438)
Fixes #15426. The `./` was implicitly assumed to be there by the prompt, so we'd end up with `././foobar` when typing in an explicit `./`. This fixes the issue by stripping `./` from the query, like we also strip `/`. Release Notes: - Fixed paths starting with `./` breaking the new-path file picker when the system prompts are disabled. ([#15426](https://github.com/zed-industries/zed/issues/15426)).
Thorsten Ball created
0b4afe5
assistant: Remove feature flag for terminal inline assistant (#15432)
This PR removes the feature flag for the terminal inline assistant, making it available to everyone. Release Notes: - Use Ctrl+Enter to summon the inline assistant in the terminal, which let's you generate terminal commands based on your description ([demo](https://twitter.com/thorstenball/status/1814241447383605329))
Bennet Bo Fenner created
f124ca6
project_panel: Double-click on blank space in project panel to create a new file (#15353)
Similar feature implemented in VSCode. https://github.com/user-attachments/assets/ae250b5f-283c-4211-8947-d5d5703eb2d0 Release Notes: - Added double-click to create a new file when clicking on blank space in the project panel.
Suhun Han created
b8f2005
docs: Remove availability via homebrew on Linux (linuxbrew) (#15437)
- See: https://github.com/zed-industries/zed/issues/14108
Peter Tripp created
6db33b8
vim: Fix >... (#15404)
Co-Authored-By: @Alextopher Release Notes: - vim: Fixed a hang when repeating an aborted operation ([#15399](https://github.com/zed-industries/zed/issues/15399)).
Conrad Irwin created
f58ef9b
zed: Persist window stack order across restarts (#15419)
This changes the workspace/session serialization to also persist the order of windows across restarts. Release Notes: - Improved restoring of windows across restarts: the order of the windows is now also restored. That means windows that were in the foreground when Zed was quit will be in the foreground after restart. (Right now only supported on Linux/X11, not on Linux/Wayland.) Demo: https://github.com/user-attachments/assets/0b8162f8-f06d-43df-88d3-c45d8460fb68
Thorsten Ball created
6e1f7c6
Use tool calling instead of XML parsing to generate edit operations (#15385)
Release Notes: - N/A --------- Co-authored-by: Nathan <nathan@zed.dev>
Antonio Scandurra and Nathan created
f6012cd
assistant: Improve discoverability of terminal inline assist (#15431)
This adds a button to the terminal tab bar: <img width="444" alt="image" src="https://github.com/user-attachments/assets/71baadae-0ecf-493f-853c-34d4d6a48310"> Release Notes: - N/A
Bennet Bo Fenner created
de8f0ce
Update Rust crate base64 to v0.22.1 (#15429)
[](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [base64](https://togithub.com/marshallpierce/rust-base64) | workspace.dependencies | patch | `0.22.0` -> `0.22.1` | --- ### Release Notes <details> <summary>marshallpierce/rust-base64 (base64)</summary> ### [`v0.22.1`](https://togithub.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0221) [Compare Source](https://togithub.com/marshallpierce/rust-base64/compare/v0.22.0...v0.22.1) - Correct the symbols used for the predefined `alphabet::BIN_HEX`. </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:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot] and renovate[bot] created
8cf93ba
Update Rust crate serde_json to v1.0.121 (#15425)
[](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde_json](https://togithub.com/serde-rs/json) | dependencies | patch | `1.0.120` -> `1.0.121` | | [serde_json](https://togithub.com/serde-rs/json) | workspace.dependencies | patch | `1.0.120` -> `1.0.121` | --- ### Release Notes <details> <summary>serde-rs/json (serde_json)</summary> ### [`v1.0.121`](https://togithub.com/serde-rs/json/releases/tag/v1.0.121) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.120...v1.0.121) - Optimize position search in error path ([#​1160](https://togithub.com/serde-rs/json/issues/1160), thanks [@​purplesyringa](https://togithub.com/purplesyringa)) </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 these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- Release Notes: - N/A <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate[bot] and renovate[bot] created
e20db03
Upgrade `pnpm/action-setup` to v4.0.0 (#15427)
This PR upgrades the `pnpm/action-setup` GitHub Action to v4.0.0. Trying to see if I can fix the Renovate warning stemming from https://github.com/pnpm/action-setup/issues/95. Release Notes: - N/A
Marshall Bowers created
1a9af10
rust: Add highlight selector for doc comments (#15384)
## Release Notes: - Added ability to style doc comments in Rust separately with `comment.doc` ([#15322](https://github.com/zed-industries/zed/issues/15322)). Just required adding another query to the highlights.scm file. Took inspiration from the tree-sitter-rust repository [here](https://github.com/tree-sitter/tree-sitter-rust/blob/master/queries/highlights.scm) #### Doc comments customized in the theme are working now:  #### Snippet from the .json theme file 
earomc created
c97d035
chore: Clean up allocs around project panel (#15422)
A drive-by I did when looking at something else. Release Notes: - N/A
Piotr Osiewicz created
6af72ab
Add Assistant and Outline Panels to Docs (#15349)
Adds assistant and outline panel's descriptions to docs Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Zack and Marshall Bowers created
78a2539
Selectable diagnostic popover text (#14518)
Release Notes: - Added the ability to select and copy text from diagnostic popovers - Fixed #12695 https://github.com/user-attachments/assets/b896bacf-ecbc-48f5-8228-a3821f0b1a4e --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Ephram and Conrad Irwin created
583b623
SSH remoting: terminal & tasks (#15321)
This also rolls back the `TerminalWorkDir` abstraction I added for the original remoting, and tidies up the terminal creation code to be clear about whether we're creating a task *or* a terminal. The previous logic was a little muddy because it assumed we could be doing both at the same time (which was not true). Release Notes: - remoting alpha: Removed the ability to specify `gh cs ssh` or `gcloud compute ssh` etc. See https://zed.dev/docs/remote-development for alternatives. - remoting alpha: Added support for terminal and tasks to new experimental ssh remoting
Conrad Irwin created
26d0a33
Add Vim digraphs (#14887)
Vim digraphs are a way to insert special characters using sequences of two ASCII characters. I've implemented the feature using a new `Digraph` operator, following the example of `AddSurrounds`. There are still a few issues that I'm not sure what the best way to resolve them is. - To insert `ş`, the user must pause between pressing `ctrl-k` and `s ,`, otherwise it triggers the binding for `ctrl-k s`. Is there a way to disable `ctrl-k *` bindings while in insert, replace or waiting mode? - Is there a better way to insert a string at all of the cursors? At the moment I'm constructing the edits manually. - The table of default digraphs is a 1.4k line rust expression. Is this okay as long as it's in its own module? - I'd like a second opinion on how best to structure the settings.json entry. - I have omitted the "meta character" feature as I don't think it makes sense when editing UTF-8 text. Release Notes: - Added support for Vim digraphs. Resolves #11871
Benjamin Davies created
b870289
Remove the file session.rs in crate/zed which is no longer used (#15394)
There was an empty file *session.rs* in the crate zed which was empty so I am going ahead and removing it... Release Notes: - N/A
Michael Angerman created
a875dd1
lsp: Add server-side tracing support (#15230)
This PR adds another row to the LSP log view: Server traces  [Traces](https://docs.rs/lsp-types/latest/lsp_types/notification/enum.LogTrace.html) are intended for logging execution diagnostics, which is different from `LogMessage` that we currently support. When `Server trace` is selected, user can select the level of tracing (`off`/`messages`/`verbose`) to their liking. Release Notes: - Added support for language server tracing to the LSP log view.
Piotr Osiewicz created
bb188f6
repl: Pass session id to kernel connections (#15389)
Updated runtimelib to 0.14 and passed a kernel session ID through to identify our client. Release Notes: - N/A
Kyle Kelley created
771a7bb
Update linux.md
Mikayla Maki created