23a81e3
v0.90.x stable
Joseph Lyons created
23a81e3
v0.90.x stable
Joseph Lyons created
d238e18
Overhaul assistant panel (#2610)
Closes https://linear.app/zed-industries/issue/Z-2368/use-a-different-icon-for-the-assistant-panel Closes https://linear.app/zed-industries/issue/Z-2363/ship-the-assistant-only-on-preview Closes https://linear.app/zed-industries/issue/Z-2331/scrolling-makes-it-hard-to-read Closes https://linear.app/zed-industries/issue/Z-2306/allow-undo-and-collaboration-in-assistant This pull request is a significant overhaul of the assistant panel, which now uses a simple `Buffer` as opposed to a `MultiBuffer` to show messages. Specifically, we track the start of each message with an anchor located right after the newline (or `Anchor::MIN` for the first message). When the anchor becomes invalid (that is, the newline is deleted), we merge the message with the preceding ones. Crucially, messages don't actually get deleted so that, if the newline anchor becomes valid again (such as when undoing/redoing), we can restore the messages as well. As part of this overhaul, we are also improving the scrolling behavior to maintain the viewport stable only when editing or moving the cursor, but otherwise leave the scroll position unchanged when manually scrolling up or down. Note that with these changes, we are limiting access to the assistant to users on preview (and dev), as we want to polish the behavior a little more before shipping to the general public. Users on stable will still be able to see the default settings/keybindings of the assistant, but I think that's okay, as they won't be able to do anything with them. Release Notes: - Added support for undo/redo in the assistant (preview-only) - Improved the scrolling behavior of the assistant when it was generating responses. Now Zed will keep the viewport stable only when editing or moving the cursor, but otherwise leave the scroll position unchanged when manually scrolling up or down (preview-only) - Changed the icon of the assistant panel (preview-only) **Note for @JosephTLyons: given that we're feature flagging this, let's make sure things on stable look reasonable and work correctly. Things to look out for: ensure a stock installation works, changing the settings on stable works, changing the keybinding on stable works.**
Antonio Scandurra created
40b6c65
Fix comments in settings files (#2604)
I accidentally added the information about folder-specific settings to the user settings default file - just fixing that. Release Notes: - N/A
Joseph T. Lyons created
9d32e93
Bump protocol version
Max Brunsfeld created
ca35610
zed 0.90.1
Max Brunsfeld created
1c820ea
Z-2303 editor: fix comment extension on the start of line (#2595)
Release Notes: - Improved comment extension for cases where cursor was placed before start of comment marker
Piotr Osiewicz created
0824bc5
Switch to attaching git statuses to their associated entries (#2571)
This rewrites and simplifies the git status system by attaching the git status to each individual entry. This also improves the git testing infrastructure to cover more cases and be more accurate to how file events actually occur. This also fixes several other bugs in the worktree and the buffer, and stops any randomly generated actions from happening inside a `.git` folder. Hopefully, we can undo this change soon once our randomized testing is more robust. Release Notes: - Will require a DB migration TODO: - [x] Pass randomized tests - [x] Get ready for merging
Mikayla Maki created
89d9d2d
v0.90.x preview
Joseph Lyons created
e941294
Z 1618/extend comments (#2585)
Fixes Z-1618. In the current state, this only works for line comments
such as `//` (and whatever's set in `{language}.toml` as a
line_comment).
Release Notes:
- Comments are now extended on new line.
Piotr Osiewicz created
d5441ba
Introduce an Assistant Panel (#2584)
This pull request introduces a new assistant panel to Zed that lets users interact with OpenAI using their API key:  After setting the key up, it will be saved to the keychain and automatically loaded the next time the assistant panel is opened. The key can be reset using `assistant: reset key`.  From there, users can type messages in a multi-buffer and hit `cmd-enter` (`assistant: assist`) to stream assistant responses using the OpenAI API. Responses can be canceled by hitting `escape`.  Users can quote a selection from the active editor by hitting `cmd->` (`assistant: quote selection`), which will embed the selected piece of text in a Markdown fenced code block. Conversations with the assistant are ephemeral at the moment, but can be easily copy/pasted:  Release Notes: - Added a new assistant panel feature that enables interacting with OpenAI using an API key. This replaces the previous experimental `ai: assist` command that would work on any buffer. The experience is similar to the one offered by ChatGPT with the added ability to edit, delete or enhance previous messages. When hitting `cmd-enter`, the assistant will start streaming responses from OpenAI. A response stream can be canceled using `escape`. Moreover, the active editor's selection can be quoted in the assistant panel using `cmd->`, which will automatically embed the selected piece of text in a Markdown fenced code block.
Antonio Scandurra created
d3e0d38
Fix assistant panel tests
Antonio Scandurra created
d26cc2c
Maintain scroll bottom when streaming assistant responses
Antonio Scandurra created
43500db
Fix zed tests
Antonio Scandurra created
0dae8f2
Merge remote-tracking branch 'origin/main' into assistant-2
Antonio Scandurra created
a6feaf1
Allow search assistant editors
Antonio Scandurra created
c93b6cc
Tweak comment wording
Joseph Lyons created
0d90c6d
Improve syntax highlighting and outline view for Elixir (#2582)
Fixes https://linear.app/zed-industries/issue/Z-2208/outline-view-doesnt-differentiate-between-overloaded-functions Fixes https://linear.app/zed-industries/issue/Z-2205/elixir-syntax-highlighting-not-working-properly-for-doc-attributes-and This PR improves syntax highlighting and outline view in Elixir. It's common to overload elixir functions, with many different versions of the function for different patterns of parameters, so I updated the outline view to show functions' parameters in Elixir. But if we showed functions the same way in the *breadcrumbs*, it would take up too much space. So I added a new capture in languages' `outline` queries called `@context.extra`, which is included in the outline view, but not in breadcrumbs. Release Notes: - Improved syntax highlighting of doc attributes and special macros in Elixir - Updated the outline view in Elixir to display function parameters, to allow differentiating between function overloads.
Max Brunsfeld created
4b9a3c6
Show function parameters in elixir outline view
Introduce a new capture in the outline query called 'context.extra', which causes text to appear in the outline, but not in the breadcrumbs.
Max Brunsfeld created
7aeaa84
Fix the order of some patterns in elixir highlight query
Max Brunsfeld created
8dc679e
Upgrade tree-sitter-elixir
Max Brunsfeld created
6737ee1
Avoid panic when failing to load a language's queries
Max Brunsfeld created
cc63d3d
chore: add targets to rust-toolchain.toml (#2581)
Piotr Osiewicz created
a9f865d
Don't apply the 'literal' color to entire markdown code blocks (#2579)
### Before  ### After  Release Notes: * Improved the syntax highlighting of fenced code blocks in markdown.
Max Brunsfeld created
dfd7277
chore: bump MSRV to 1.70, add rust-toolchain (#2580)
This time I've added a `components` section to rust-toolchain.toml file to explicitly require a rustfmt component. Fingers crossed.
Piotr Osiewicz created
3fc2e07
Don't apply the 'literal' color to entire markdown code blocks
Max Brunsfeld created
bdd3e77
Live-reload tree-sitter queries in development (#2578)
This PR adds live reloading of Tree-sitter queries when running in debug mode, similar to what we do for the themes. This way, you can change a highlighting query or an outline query, and immediately see the result in the app. Release Notes: - N/A
Max Brunsfeld created
7bfb51e
Live-reload tree-sitter queries in development
Max Brunsfeld created
559a58d
Revert "chore: bump MSRV to 1.70" (#2577)
Reverts zed-industries/zed#2573
Piotr Osiewicz created
c1c91dc
chore: bump MSRV to 1.70 (#2573)
Add rust-toolchain.toml Release Notes: - N/A
Piotr Osiewicz created
572c59e
chore: Enable full LTO (#2548)
Per conversation with Antonio, I've suggested enabling full LTO; right now we use a crate-local ThinLTO, which does not inline function calls across crates. | Configuration | Current main (788f97e) | Thin LTO | Full LTO | |------------------|------------------------|-----------|-----------| | Size in bytes | 158806721 | 155868753 | 111115553 | | % of `main` size | 100% | 98.14% | 69.96% | | Size in bytes (no debug info) | 129186657 | 127942929 | 108281345 |
Piotr Osiewicz created
17560cc
Eliminate assets crate (#2575)
Previously, all static assets were embedded into Zed using a single `RustEmbed` struct called `Assets`, which was in a crate of its own, also called `assets`. Many crates depended on this crate. The problem with this situation was that changing *any* static asset file caused almost every crate in the codebase to need recompilation (because of recursive dependencies on `assets`). Now, most of the assets are embedded only into the top-level `zed` crate. A few assets (such as settings JSON files and AI prompts) are needed in lower-level crates such as `settings` and `ai`. For these, I've created separate `RustEmbed` structs in those specific crates, which embed those specific sub-folders of `assets`. The result is that now, when you change a theme file, the only crate that needs to recompile is `zed`. Release Notes: - N/A
Max Brunsfeld created
dbbd055
Eliminate assets crate
Max Brunsfeld created
2003d3d
Update initial_user_settings.json
Joseph Lyons created
7a78e64
Merge remote-tracking branch 'origin/main' into assistant-2
Antonio Scandurra created
16090c3
Insert reply after assistant message when hitting `cmd-enter`
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra and Nathan Sobo created
ef7ec26
Cycle message roles on click
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra and Nathan Sobo created
53906fd
Add an application menu item for creating/opening a project-specific settings file (#2572)
Previously, project-specific settings were not discoverable. This PR adds a `Zed > Preferences > Local Settings` application menu command that creates a `.zed/settings.json` at the root of your current worktree. This command works in both local and remote projects. Limitations: * Currently, if you have an empty project open, the command just shows a notification that there are no folders open. * The JSON-schema-based autocomplete is the same in local settings files as in your main settings, even though not all settings can be locally customized. Release Notes: - Added an application menu command - `Zed > Preferences > Local Settings` for creating a folder-specific settings file.
Max Brunsfeld created
ac71780
Include message headers in copied assistant text
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra and Nathan Sobo created
cfcfc3b
Show notification when attempting to open local settings in a project w/ no folders
Max Brunsfeld created
093ce8a
Simplify prompt
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra and Nathan Sobo created
7b066df
Tighten up spacing in the project panel (#2574)
Following https://github.com/zed-industries/zed/pull/2559 the project panel entries become pretty wide again. This PR tries to mitigate that and just make some general improvements to visual density in the project panel. - Reduces padding around items - Removes top margin - Slightly reduces the height of each item - Fixes an issue where ignored files had the wrong color chevron Release Notes: - Improved density of the project panel and tidied up some visual issues.
Nate Butler created
a0e2e5d
project panel/styles: Align child's chevron with parent path (#2559)
Z-1012 Release notes: - Adjust indent of files in subdirectories.
Piotr Osiewicz created
2b1aeb0
Show error message when requests to OpenAI fail
Co-Authored-By: Julia Risley <julia@zed.dev>
Antonio Scandurra and Julia Risley created
9c59146
Set assistant editor's title based on the first question/answer pair
Co-Authored-By: Julia Risley <julia@zed.dev>
Antonio Scandurra and Julia Risley created
69b8267
Show the current model and allow clicking on it to change it
Antonio Scandurra created
ada2220
Insert a user reply when hitting `cmd-enter` in an assistant message
Antonio Scandurra created
f4f0606
Add assertion to pinpoint how deletion works across excerpts
Antonio Scandurra created
337dda8
Only remove excerpts when an edit touches them
Antonio Scandurra created
8032324
Prevent moving across excerpts on `Editor::delete`
Antonio Scandurra created
e46d154
Retain selection's head (as opposed to its end) on insertion
This makes a difference when an edit spans two excerpts and the selection start won't necessarily be the same as the selection end after the edit.
Antonio Scandurra created