Commit log

3fc2e07 Don't apply the 'literal' color to entire markdown code blocks

Max Brunsfeld created

bdd3e77 Live-reload tree-sitter queries in development (#2578)

Click to expand commit body
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)

Click to expand commit body
Reverts zed-industries/zed#2573

Piotr Osiewicz created

c1c91dc chore: bump MSRV to 1.70 (#2573)

Click to expand commit body
Add rust-toolchain.toml

Release Notes:

- N/A

Piotr Osiewicz created

572c59e chore: Enable full LTO (#2548)

Click to expand commit body
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)

Click to expand commit body
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`

Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>

Antonio Scandurra and Nathan Sobo created

ef7ec26 Cycle message roles on click

Click to expand commit body
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)

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>

Antonio Scandurra and Nathan Sobo created

7b066df Tighten up spacing in the project panel (#2574)

Click to expand commit body
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)

Click to expand commit body
Z-1012

Release notes:
- Adjust indent of files in subdirectories.

Piotr Osiewicz created

2b1aeb0 Show error message when requests to OpenAI fail

Click to expand commit body
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

Click to expand commit body
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

Click to expand commit body
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

23836eb Not working yet: Remove empty messages unless they contain the cursor

Click to expand commit body
Problem is, I'm trying to trust the excerpt id of the selection head,
but it's a sentinel value and not the actual excerpt id of the message.
I think we probably need to resolve to offsets instead.

Nathan Sobo created

296a0bf Populate created local settings file with an empty JSON object and comments

Max Brunsfeld created

cb975f1 Add Zed > Preferences > Local Settings to application menu

Max Brunsfeld created

0949ee8 :art: Move OpenSettings action back to the zed crate

Max Brunsfeld created

a2d5806 Improve test generation and implement status propogation

Click to expand commit body
co-authored-by: max <max@zed.dev>

Mikayla Maki and max created

c12bdc8 Silence not found errors

Mikayla Maki created

398b0f3 Apply bounds to all windows when using start-local-collaboration script (#2570)

Click to expand commit body
The `start-local-collaboration` script opens two instances of Zed, each
logged in as a different user, and each one taking up half of the
screen. But previously, when joining a remote project as one of the
collaborators, that newly-opened window would be full screen.

Now, each instance of Zed keeps *all* of its windows on its half of the
screen. This is implemented by respecting the `ZED_WINDOW_{SIZE,BOUNDS}`
env vars, even when joining *remote* projects.

Release Notes:

- N/A

Max Brunsfeld created

3d1ba1b Apply bounds to all windows when using start-local-collaboration script

Max Brunsfeld created

5711511 Fix copilot state corruption when there are multiple buffers with the same remote id in different projects (#2569)

Click to expand commit body
Fixes
https://linear.app/zed-industries/issue/Z-1511/thread-main-panicked-at-assertion-failed-left-==-right-left-local-0-1

Previously, when exchanging messages about buffers with a copilot
language server, we identified buffers using their **remote id**. This
caused problems when there were multiple projects open, where one or
more were remote, because buffers' remote ids are only unique within a
given project.

When you have multiple projects open, and one or more of the projects is
remote, it's pretty easy to have two buffers open with the same remote
id. In my testing, when this happened, copilot would stop working in
both buffers. But I believe that depending on the editing patterns that
occur in the two buffers, it could cause the crash reported in the
Linear issue above.

This PR changes our copilot logic to use buffers' local handle ids for
identifying them. This fixed the problems I was able to reproduce when
using copilot in both remote and local projects.

Release Notes:

- Fixed a crash that would sometimes occur when editing buffers after
having collaborated on a remote project.

Max Brunsfeld created

12dd91c Use local ids, not remote ids, to identify buffers to copilot

Max Brunsfeld created

5e4da64 Add file and line number information to logs (#2568)

Click to expand commit body
This PR adds codegen from rustc to track the file and line number of
calls to `log_err()`. I haven't noticed much longer compile times on my
machine, and looking at the
[implementation](https://rustc-dev-guide.rust-lang.org/backend/implicit-caller-location.html)
it essentially adds an extra argument and secret reference pass.
However, this will show a lot more data in our logs on user machines.
Requesting review from @ForLoveOfCats, who usually knows a bunch about
this kind of thing :)

Mikayla Maki created

624467e Add file and line number information to logs

Mikayla Maki created

9a13a2b WIP: Add status bubbling to project panel

Mikayla Maki created

7fbafc8 Remove code sending zed events to mixpanel (#2567)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

311074e Remove code sending zed events to mixpanel

Joseph Lyons created

49c5a3f Add postgres migration

Mikayla Maki created

2190a27 Stop sending editor events to mixpanel (#2566)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

70c5489 Stop sending editor events to mixpanel

Joseph Lyons created

4ac5f7b Add statuses to test integration

Mikayla Maki created

e56fcd6 Track git status changes with the changed_paths system

Mikayla Maki created

4f31656 Move app version into panic object (#2565)

Click to expand commit body
Final tweaks to clean up how we structure our panic data

Release Notes:

- N/A

Joseph T. Lyons created

917d894 Move app version into panic object

Joseph Lyons created

6b89243 Update rust-bindgen dev-dependencies (#2563)

Click to expand commit body
I did \*something\* Friday afternoon which changed something about my
system SDK to break the `media` crate's bindings generation. Some of the
types and consts were not being generated despite being able to prove
that they exist in the source, such as when running the header through
the preprocessor myself and feeding that through the generator. Updating
my OS, XCode, command line tools, and reinstalling Rust as well as
working from fresh clones of the repo had no effect.

Updating rust-bindgen resolved the issue and downgrading the version
back to the original version caused the issue to reappear. I'm still not
sure what happened to change the SDK but at this point with being able
to build the project again I'm not going to look a gift horse in the
mouth.

Release Notes:

- N/A

Julia created

0ed8bbc Query `rect_for_text_range` on focused view instead of root element (#2564)

Click to expand commit body
This was causing IME input to be drawn in the wrong place when there
were splits or panels in the window.

Release Notes:

- Fixed a bug that was causing IME input to sometimes be rendered in the
wrong position.

Antonio Scandurra created