Commit log

1468ee2 Fix more errors found when retrieving context for a huge example batch (#47039)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

39e2f26 Bump async-task (#47036)

Click to expand commit body
This reduces total code-size of the project crate by ~25%, and reduces
release build time by ~35s thanks to
@osiewicz's proposed fix https://github.com/smol-rs/async-task/issues/66

Release Notes:

- N/A

Co-authored-by: Piotr <piotr@zed.dev>

Conrad Irwin and Piotr created

10a536b editor: Fix relative line numbers breaking with nested folds (#47035)

Click to expand commit body
Closes #46516

The previous fix only worked for non-nested folds, whereas this one also
considers nested folds properly. Also makes this more straightforward to
read.

Release Notes:

- Fixed an issue where relative line numbering would break with nested
folds.

Finn Evers created

afaccf9 Fix edit history clearing bug in ep (#47017)

Click to expand commit body
We were including changes due to Buffer.reload in the edit history.

Release Notes:

- N/A

---------

Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>
Co-authored-by: Agus Zubiaga <agus@zed.dev>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

Max Brunsfeld , Oleksiy Syvokon , Agus Zubiaga , Ben Kunkle , and Zed Zippy created

6acca17 Devcontainer setup modal (#47021)

Click to expand commit body
Adds the ability to create a dev container definition from scratch.
Additionally, separates devcontainer logic out into its own crate, since
it was getting sufficiently complex to separate from the
`recent_projects` crate.

A screen recording of the modal experience:


https://github.com/user-attachments/assets/f6cf95e1-eb7b-4ca3-86c7-c1cbc26ca557


Release Notes:

- Added modal to initialize a dev container definition in the project
with `projects: initialize dev container`
- Added podman support for dev container actions with the `use_podman`
setting
- Improved devcontainer error handling

---------

Co-authored-by: Sam Coward <idoru42@gmail.com>

KyleBarton and Sam Coward created

258d922 Make always_allow_tool_actions override always_confirm and default_mode (#47012)

Click to expand commit body
Previously, `always_confirm` patterns would force confirmation even when
`always_allow_tool_actions` was set to true. This was counterintuitive
since the global setting should provide a way to skip all confirmations.

The new precedence order is:
1. **`always_deny`** - still blocks for security
2. **`always_allow_tool_actions`** - when true, allows all non-denied
actions
3. **`always_confirm`** - prompts if `always_allow_tool_actions` is
false
4. **`always_allow`** - allows without prompting
5. **`default_mode`** - fallback behavior

This means setting `always_allow_tool_actions=true` will now skip
confirmation prompts from `always_confirm` patterns and override
`default_mode: Deny` settings, while still respecting `always_deny`
patterns for security.

(No release notes because granular tool permissions are still
feature-flagged.)

Release Notes:

- N/A

Richard Feldman created

c0bfba8 ty: Add support for using venv-installed binary (#47029)

Click to expand commit body
This aligns ty's behavior with ruff by checking for binaries in the
following order:

1. venv (from the Python toolchain's bin directory)
2. PATH
3. Zed-installed

Release Notes:

- ty: Added support for using venv-installed binary

Joseph T. Lyons created

e05a577 danger: Remove check for modifying prompts (#47028)

Click to expand commit body
This PR removes the Danger check for modifying prompts, as we no longer
need to account for these in Cloud.

Release Notes:

- N/A

Marshall Bowers created

e5706f2 Add BYOK GPT-5.2-codex support (#47025)

Click to expand commit body
<img width="449" height="559" alt="Screenshot 2026-01-16 at 4 52 12 PM"
src="https://github.com/user-attachments/assets/1b5583d7-9b90-46b1-a32f-9821543ea542"
/>

Release Notes:

- Add support for GPT-5.2-Codex via OpenAI API Key

Richard Feldman created

3389d84 Improve bracket colorization in Markdown files (#47026)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/46420

Release Notes:

- Improved bracket colorization in Markdown files

Kirill Bulatov created

eedff99 Format update_top_ranking_issues with latest ruff (#47023)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

37715d5 Send trust messages only to the clients related to the current WorktreeStore (#47005)

Click to expand commit body
Release Notes:

- N/A

Kirill Bulatov created

1f97c0e sum_tree: Implement find functions iteratively (#47013)

Click to expand commit body
Recursion here is unnecessary as we do not make use of the stack frames,
so iterating is even cheaper as we do not need to do any stack
bookkeeping either way.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Lukas Wirth created

d1e4ef0 Fix not sending `file_chunks` parameter to Sweep in evals (#46999)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

19be78c Fix opening schemas via path args (#47008)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

43d5326 acp: Support loading a session for external agents (#46992)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

47a2763 Remove scheduler test failure status plan (#47000)

Click to expand commit body
Leftover from https://github.com/zed-industries/zed/pull/46671, CC
@ConradIrwin

Release Notes:

- N/A

Finn Evers created

2aa8d5c project_panel: Split up `render_entry` into smaller methods (#46850)

Click to expand commit body
Rustfmt surrendered here because that method grew a bit too large. This
splits this up into smaller methods in an effort to combat this and make
the code more maintainable.

Release Notes:

- N/A

Finn Evers created

73458a0 Fix context enabled race condition in edit prediction cli (#46997)

Click to expand commit body
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Ben Kunkle created

d092f3a text: Speed up `offset_for_anchor` and `fragment_id_for_anchor` conversions (#46989)

Click to expand commit body
And most importantly, speed `Anchor::cmp` by doing so.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Lukas Wirth created

deb1b6e Fix json-language-server not considering `file_types` from project settings (#46991)

Click to expand commit body
Release Notes:

- Fixed json-language-server not considering `file_types` from project
settings

Kirill Bulatov created

116c444 livekit_client: Revert #46986 for macos (#46990)

Click to expand commit body
This broke mac builds

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Lukas Wirth created

5970715 agent: Move thread loading to the AgentConnection (#46985)

Click to expand commit body
Preps for external agents being able to load a thread

Release Notes:

- N/A

Ben Brandt created

1462848 livekit_client: Do not encode video frames on the main thread (#46986)

Click to expand commit body
This can block the mainthread for several milliseconds given large
enough screensizes

Release Notes:

- Fixed screensharing performance on windows and linux

Lukas Wirth created

c2f49c9 remote_server: Fix panic handler not logging useful info (#46975)

Click to expand commit body
Release Notes:

- N/A *or* Added/Fixed/Improved ...

Lukas Wirth created

c6f7041 Add slack notifications for bad bugs (#46982)

Click to expand commit body
Release Notes:

- N/A

Lena created

f1a8b05 agent: End turn at message boundary when queue has pending messages (#46980)

Click to expand commit body
This feature cost $12

Release Notes:

- Changed the behavior of queued messages to gracefully wait for the
current activity to complete.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

Mikayla Maki and Claude Opus 4.5 created

77bf7b7 Fix zoomed dock closing on window reactivation (#46972)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/46953

This bug fix cost $10

Release Notes:

- N/A

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

Mikayla Maki and Claude Opus 4.5 created

2618f29 Don't show diff review button on folded buffers (#46968)

Click to expand commit body
We were incorrectly leaking the display of this button when the file was
folded in the multibuffer:

| Before | After |
|--------|--------|
| <img width="788" height="400" alt="Screenshot 2026-01-15 at 11  42@2x"
src="https://github.com/user-attachments/assets/2ef9d154-35b5-4788-91c2-0e7a8d45594c"
/> | <img width="788" height="400" alt="Screenshot 2026-01-15 at 11 
41@2x"
src="https://github.com/user-attachments/assets/f4d9416b-9826-4616-8e36-8876ef5e25ec"
/> |

Release Notes:

- N/A

Danilo Leal created

780a87d Introduce new predict_edits/v3 endpoint (#46960)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

267cf56 agent_ui: Fix preview for images and creases in queue entries (#46964)

Click to expand commit body
This PR fixes the fact that we weren't showing any @-mentions (files,
images, etc.) in the queue preview.

Release Notes:

- Agent: FIxed a bug with the message queue in the agent panel where
@-mentions weren't being displayed in the message preview within the
queue entries list.

Danilo Leal created

d183902 agent_ui: Make it easier to interrupt with message in queue (#46954)

Click to expand commit body
Follow up to https://github.com/zed-industries/zed/pull/46797

When you send a message, as per the PR linked above, Zed will now queue
it by default. But if you want to fast-track it/interrupt the agent
immediately, effectively sending the first message in the queue, you can
just hit enter again and it will get sent right away.


https://github.com/user-attachments/assets/5e6230f6-c56e-4496-9bcb-8d6ffb9e19cb

Release Notes:

- Agent: Made it easier to interrupt the agent while having messages in
the queue.

Danilo Leal created

24b7e3e Enable review comments in branch diff view (#46951)

Click to expand commit body
<img width="611" height="102" alt="Screenshot 2026-01-15 at 4 18 30 PM"
src="https://github.com/user-attachments/assets/ba422cbb-4607-47c7-94c7-77752d7b4479"
/>

When viewing a branch diff (e.g., 'Changes since origin/main'), the
toolbar was hidden because `ProjectDiffToolbar` filters for
`DiffBase::Head` only. This meant users couldn't send review comments to
the Agent panel from the branch diff view.

Now there's a new `BranchDiffToolbar` which:
- Only activates for branch diff views (`DiffBase::Merge`)
- Shows only the 'Send Review to Agent' button (not stage/unstage
controls)
- Only appears when there are review comments (same behavior as the
existing toolbar)

(No release notes because this is still feature-flagged.)

Release Notes:

- N/A

Richard Feldman created

4250871 Fewer race-conditions in Vercel redeploy (#46826)

Click to expand commit body
Should avoid releases rolling back to older vercel versions

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Conrad Irwin created

70b0a95 agent_ui: Fix review buttons getting cut-off (#46948)

Click to expand commit body
Closes https://github.com/zed-industries/zed/issues/46922

Release Notes:

- N/A

Danilo Leal created

a92df1e Remove Burn Mode code (#46950)

Click to expand commit body
This PR removes the code for Burn Mode, as we won't need it anymore
after the 17th.

Closes CLO-79.

Release Notes:

- N/A

Marshall Bowers created

5c622e3 acp: Always pass env to builtin agents (#46946)

Click to expand commit body
Closes #40327

The env vars were only getting added if a custom command was provided.
But it makes sense in either case to be able to specify your env vars,
so now these are applied regardless.

Closes #ISSUE

Release Notes:

- acp: Fix for env vars not being properly applied to built-in ACP
agents.

Ben Brandt created

3ce386a ep: Add 180 token editable region experiment (#46945)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>

Agus Zubiaga , Max Brunsfeld , and Ben Kunkle created

f319845 Autofix run fmt after clippy (#46935)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

20163f1 agent: Fix panic caused by polling ended stream (#46839)

Click to expand commit body
Closes #ISSUE

Reproduction steps:

- Zed main branch
- Use Ollama (likely provider agnostic) in the agent panel with the
following prompt: "Explore the codebase with subagents"
- Panic

```
thread 'main' (36268) panicked at C:\Users\username\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\futures-util-0.3.31\src\stream\unfold.rs:108:21:
Unfold must not be polled after it returned `Poll::Ready(None)`
```

Following the stack trace we get to `Thread::run_turn_internal`. I
believe the panic happens in the following code which was introduced in
#46802

```rust
// Collect all immediately available events to process as a batch
let mut batch = vec![first_event];
while let Some(event) = events.next().now_or_never().flatten() {
    batch.push(event);
}
```

Both `Option`s get flattened, however the inner `Option` represents the
end of the stream, after which polling the stream using `.next()` will
result in a panic.

We could fix the logic in this particular spot, but I believe the
simpler solution is to `.fuse()` the stream, which stops the stream from
panic'ing even after it has ended. This also prevents misuse in the
future.

The panic was introduces on main and did not land on a release yet, so
no release notes.

Release Notes:

- N/A *or* Added/Fixed/Improved ...

tidely created

189c9f4 ep cli: Compute editable region during format-prompt (#46929)

Click to expand commit body
Release Notes:

- N/A

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>

Agus Zubiaga , Max Brunsfeld , and Ben Kunkle created

4f4f69c Remove previous teammates from REVIEWERS.conl (#46934)

Click to expand commit body
Release Notes:

- N/A

Joseph T. Lyons created

fcd80dd Restore run_with_clock_advancement (#46930)

Click to expand commit body
Release Notes:

- N/A

Conrad Irwin created

edae88c editor: Fix add selection when skipping over soft-wrapped lines (#46911)

Click to expand commit body
Fixes an issue where `editor::AddSelectionAbove` and
`editor::AddSelectionBelow`, when set with `skip_soft_wrap: true` ,
would lose track of the original cursor column when passing through
short lines, as `editor::Editor.add_selection` was not using the oldest
selection's column range when adding a new selection.

These changes update the `editor::Editor.add_selection` method so as to
keep track of the olde selection's column range for each group, as well
as extracting `find_next_columnar_selection_by_display_row` and
`find_next_columnar_selection_by_buffer_row` helper methods to clarify
the two navigation strategies.

Closes #46842

Release Notes:

- Fixed `editor::AddSelectionAbove` and `editor::AddSelectionBelow` when
skipping over soft-wrapped lines to preserve the original cursor column
when adding selections through lines shorter than the starting position

Dino created

a2728e3 Split settings content into its own crate (#46845)

Click to expand commit body
Closes #ISSUE

Moves the settings content definitions into their own crate, so that
they are compiled+cached separately from settings, primarily to avoid
recompiles due to changes in gpui. In that vain many gpui types such as
font weight/features, and `SharedString` were replaced in the content
crate, either with `*Content` types for font/modifier things, or
`String`/`Arc<str>` for `SharedString`. To make the conversions easy a
new trait method in the settings crate named `IntoGpui::into_gpui`
allows for `into()` like conversions to the gpui types in
`from_settings` impls.

Release Notes:

- N/A

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Ben Kunkle and Piotr Osiewicz created

6fcc5e9 Remove legacy billing code (#46927)

Click to expand commit body
This PR removes the code for the legacy plans.

No more users will be on this plan as of January 17th, so it's fine to
land these changes now (as they won't be released until the 21st).

Closes CLO-76.

Release Notes:

- N/A

Marshall Bowers created

1ded60a Implement Vim's tag stack (#46002)

Click to expand commit body
Happy New Years! This PR is a second take at
https://github.com/zed-industries/zed/pull/38127 (cc @ConradIrwin)

This PR is significantly less complicated than the last attempt: while
we still keep our data on the `NavigationHistory` object, we no longer
tightly integrate it with the existing back/forward "browser history."
Instead, we keep our own stack of `(origin, target)` pairs (in a struct
to make it easy to extend with e.g., tag names in the future).

The PR is split into two separable commits. Most of the implementation
is in the second commit, which:
- Defines the stack data structure
- Implements `pane::GoToOlderTag` and `pane::GoToNewerTag` in terms of
the stack
- Hooks into `navigate_to_hover_links` to push tag stack entries

This last bit is the most fiddly. The core challenge is that we need to
keep track of the `origin` location and calculate the `target` location
across three codepaths that might involve creating a new editor and/or
splitting the pane. One thing in particular I found difficult was that
an editor's `nav_history` (an `ItemNavHistory`) seems to be populated
asynchronously. Instead of relying on it, I decided in this code to make
my own `ItemNavHistory`. I briefly tried to refactor the code in
question, but it seemed like it would significantly increase the scope
of the change.

I prefer this all-in-one tracking centered around
`navigate_to_hover_links ` to the `start/finish` approach taken in
https://github.com/zed-industries/zed/commit/b69a2ea200561de9de0edf4d0c4428ee887fb918
because I find it easier to convince myself that the right data is being
populated at the right times. Of course, let me know if you think
there's a better solution.

Closes #14206

Release Notes:
- ??? I don't know what to write here! Suggestions welcome

Carl Jackson created

a10fdfd ep: Combine PredictionProvider and ZetaVersion (#46896)

Click to expand commit body
We can specify prompt version in the provider name itself, like this
`--provider zeta2:0113`.

This kind of tag will also be stored in the `provider` field of
jsonlines files.

This drops the `--version` parameter.


Release Notes:

- N/A

Oleksiy Syvokon created

3ed6c68 gpui: Fix utf8 slicing panic in `truncate_line` (#46914)

Click to expand commit body
Fixes https://github.com/zed-industries/zed/issues/46904

Release Notes:

- Fixed a panic in the git panel when utf8 multibyte character filenames
got truncated

Lukas Wirth created

6e0dc03 Cache dynamic JSON schemas with invalidation (#46824)

Click to expand commit body
Dynamic schemas (settings, settings/lsp/*, debug_tasks) are now cached
after first generation and returned immediately via Task::ready() on
subsequent requests.

Cache is invalidated when `notify_schema_changed()` is called, which
happens when:
- Extensions are installed/uninstalled (affects settings schema)
- DAP registry changes (affects debug_tasks schema)

This eliminates repeated foreground thread blocking for the same dynamic
schema.

**Note:** This PR is based on #46823 and should be merged after it.

Release Notes:

- N/A

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>

Richard Feldman and Ben Kunkle created