Commit log

6718320 agent_ui: Use `.w_full()` instead of `.size_full()` when rendering markdown tables in lists (#46783)

Click to expand commit body
This way, the table:
- Determines its height by the grid’s content
- Still keeps `width: 100%` so it fills its container horizontally

| Before | After |
|--------|--------|
| <img width="1732" height="1125" alt="image"
src="https://github.com/user-attachments/assets/5d739664-5793-4c16-a765-dc373c7cb10f"
/> | <img width="1732" height="1125" alt="image"
src="https://github.com/user-attachments/assets/c857d28b-67c2-4ba1-b4a6-869a154b050b"
/> |

Closes #46768

Release Notes:

- Fixed issue where markdown tables rendered within lists would overlap
items above/below it

Kunall Banerjee created

384c8e6 git_picker: Make the unified version of it available through the title bar (#47151)

Click to expand commit body
The recently-introduced unified Git picker was previously only available
if you reached for the branch, worktree or stash pickers through the
keybinding. Now, if you click on the title bar's branch button, you'll
also be able to quickly view the worktree and stash pickers.

Release Notes:

- N/A

Danilo Leal created

f98acf4 Make `ep split-commit` respect `--failed=skip` (#47150)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

adc1594 agent_ui: Don't fold terminal tool command lines into a disclosure (#47148)

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

This PR removes the UI treatment where we collapse a terminal command
into a disclosure component if it spans more than three lines. I
initially thought having this fancy treatment in the UI would make it
sleeker but it actually feels like a counter-productive move to
arbitrarily hide command lines; they're arguably always important to see
in full, even when they're super long. I'm happy to get some feedback
here, but I think for now, I'd feel better if users could see them all
without having to manually expand/collapse them.

Release Notes:

- N/A

Danilo Leal created

dcfe81f Support external `.editorconfig` (#46332)

Click to expand commit body
Closes #41832

Extends https://github.com/zed-industries/zed/pull/19455

When an internal `.editorconfig` is detected in the worktree, we
traverse parent directories up to the filesystem root looking for
additional `.editorconfig` files. All discovered external configs are
loaded and cached (shared when multiple worktrees reference the same
parent directories). When computing settings for a file, external
configs are applied first (from furthest to closest), then internal
configs.

For local projects, file watchers are set up for each external config so
changes are applied immediately. When a project is shared via collab,
external configs are sent to guests through the existing
`UpdateWorktreeSettings` proto message (with a new `outside_worktree`
field). SSH remoting works similarly.

Limitations: We don't currently take creation of new external editor
config files into account since they are loaded once on worktree add.

Release Notes:

- Added support for `.editorconfig` files outside the project directory.
Zed now traverses parent directories to find and apply EditorConfig
settings. Use `root = true` in any `.editorconfig` to stop inheriting
settings from parent directories.

Smit Barmase created

ad7c30e ep: Missing newlines in teacher prompt (#47143)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

099226e ai: Symlink an `AGENTS.md` file to `.rules` (#45939)

Click to expand commit body
Release Notes:

- N/A

versecafe created

a4ebfa0 ui: Adjust BoxShadow offset for elevation styles (#47010)

Click to expand commit body
Changed the offset of shadow to improve shadow appearance. There was a
1px horizontal offset on all elevated surfaces — barely perceptible, but
once you see it, it's all you see

|Before|After|
|-|-|
|<img width="586" height="884" alt="before"
src="https://github.com/user-attachments/assets/63fa36a7-7845-4c6f-9e73-36ad5056194b"
/>|<img width="586" height="884" alt="after"
src="https://github.com/user-attachments/assets/41a032d3-e7d6-4188-9394-656d5caf822e"
/>|

Release Notes:

- N/A

Ike created

5e2e917 workspace: Improve the welcome and launchpad pages UI (#47072)

Click to expand commit body
Closes #47069

Release Notes:

- N/A

We can add something like `pb_40()` if the launchpad is supposed to be
up a bit rather centered

Qichen Liu 刘启辰 created

3687366 agent: Make sure ACP still gets classic tool permission UI (#47142)

Click to expand commit body
This makes sure all of the new granular permission logic and ui only
applies to the zed agent and doesn't affect the UI of external agents.

Release Notes:

- N/A

Ben Brandt created

6c712d8 terminal: Fix fast scrolling during mouse mode (#45600)

Click to expand commit body
Closes #18930

### Summary
- Fix fast Macbook trackpad/mouse scrolling in terminal applications
with mouse mode enabled

### The Problem
Scrolling with a trackpad in tmux, neovim, or any terminal app that
enables mouse mode was too fast. A gentle swipe would send me through
hundreds of lines, making these apps practically unusable in Zed's
terminal.

### Root Cause
When the terminal is in mouse mode, we send escape sequences to report
scroll events to the application. The bug was in `scroll_report()`:

https://github.com/zed-industries/zed/blob/ca478226677e5f7190a5d8933277522780faaaf7/crates/terminal/src/terminal.rs#L1983-L1988

That `max(scroll_lines, 1)` meant we'd send **at least 1 scroll event
even when `scroll_lines` was 0**.

https://github.com/zed-industries/zed/blob/ca478226677e5f7190a5d8933277522780faaaf7/crates/terminal/src/mappings/mouse.rs#L96

On macOS, trackpad gestures fire many small pixel deltas due to scroll
acceleration. Each tiny movement triggered a scroll event, even though
we hadn't accumulated enough pixels for a full line yet. This is a known
issue alacritty/alacritty#2869 - macOS sends fractional line deltas
(like 0.1) instead of whole lines.

### The Fix
Don't send mouse reports when no full line has accumulated

This aligns with Alacritty's approach - accumulate partial scroll
amounts and only report when complete lines are ready.

https://github.com/alacritty/alacritty/blob/6ee6e53ee3457c24137f117237b0ff1d84f6f836/alacritty/src/input/mod.rs#L700-L730

### Testing
Tested trackpad scrolling in:
- tmux (pane navigation, scrollback)
- neovim (buffer scrolling)
- opencode (TUI navigation)
All scroll smoothly now.

### Demo
The demo shows the behavior of the scrolling. I can go fast or I can go
slow


https://github.com/user-attachments/assets/14bfc2f4-f286-4341-bf55-4ced894d63f9

Release Notes:

- Fixed trackpad scrolling being too fast in terminal applications with
mouse mode enabled (tmux, neovim, opencode, etc.)

Emamul Andalib created

5492901 Add action listener to workspace for pane::CloseActiveItem (#46421)

Click to expand commit body
When focus is on a dock panel that doesn't contain a pane (e.g., project
panel), `pane::CloseActiveItem` will now close the active item in the center
pane instead of doing nothing.

This allows users to bind, for example, `cmd-w` to `pane::CloseActiveItem` 
and have it work consistently regardless of whether focus is on a dock 
panel or the editor.

Closes #45261

Release Notes:

- Improved `pane::CloseActiveItem` to close center pane items even when
focus is on a dock panel like the project panel or outline panel

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>

Josh P. and dino created

1e2392e ci: Move clippy off of run_platform_tests and into a separate job (#47139)

Click to expand commit body
This should slash our CI times a bit (1 minute or so)

Closes #ISSUE

Release Notes:

- N/A

Piotr Osiewicz created

56b8be8 docs: Explain how git commit message prompt can be customized (#47136)

Click to expand commit body
Release Notes:

- N/A

Bennet Bo Fenner created

2321178 languages: Apply JSX fixes to JavaScript highlights (#47130)

Click to expand commit body
Closes #46701

This ports the fixes from #46442 over to the JavaScript highlights,
which we forgot to do in that PR since the highlights are not shareable
and the fix was only applied to TSX... Hence, porting the fixes here
manually to solve the issue for good.

Release Notes:

- Fixed an issue where JSX components were highlighted too broadly,
causing normal HTML tags to be highlighted as such

Finn Evers created

e12dadd chore: Remove `contexts.scm` (#47127)

Click to expand commit body
The file is unused, empty and hasn't been touched in two years, hence
removing this.

Release Notes:

- N/A

Finn Evers created

376e958 Fix inverted char boundary check causing invalid offsets (#47112)

Click to expand commit body
The logic in `anchor_at_offset` and `to_offset` seems inverted when
checking character boundaries. `assert_char_boundary` returns `true`
when the offset IS valid, but the code was adjusting offsets when the
function returned `true` (valid) instead of `false` (invalid).

Release Notes:

- N/A

Jordi Villar created

50a90d3 Add a 'rejected patch' field to example specs, for DPO examples (#47043)

Click to expand commit body
The `capture example` action now populates the markdown file with a noop
"Rejected Patch", so that you can easily specify the good and bad
output.

Release Notes:

- N/A

Max Brunsfeld created

e476af6 Show language server path in language server menu (#47037)

Click to expand commit body
<img width="779" height="210" alt="SCR-20260116-qrif"
src="https://github.com/user-attachments/assets/13c84f20-8fe1-4e3a-9de6-8df1024c2c6c"
/>

In most languages, Zed will check 2-3 locations for language servers.
For instance, when opening a python file, zed looks for ruff in:

- project venv
- user's PATH
- location that zed installs language servers

The language server menu surfaces information that makes it easier to
gather data about your language server, I think offering a path for the
one being ran makes things more clear to the user.

That being said, Idk the best way to surface this. (@danilo-leal?)

Release Notes:

- Add language server path to a tooltip that is produced when hovering
on its status in the language server menu

Joseph T. Lyons created

7ce8452 ztracing: Enable memory profiling and callstack sampling (#47052)

Click to expand commit body
While at it, annotate more functions that are potentially related to
language parsing in buffers.

Also, on macOS, in order to actually have callstack frames properly
recorded by Tracy, you need to manually run `dsymutil` on the binary.

Release Notes:

- N/A

Jakub Konka created

4064af3 Preserve and restore focus across window activation cycles (#47044)

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

This turned out to be a pretty deep rabbit hole, ultimately landing in
how GPUI didn't restore focus nicely when swapping window activation
states.

Release Notes:

- N/A

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

Mikayla Maki and Claude Opus 4.5 created

b8dfc31 docs: Add documentation for `text_rendering_mode` (#46358)

Click to expand commit body
We added support for it in
https://github.com/zed-industries/zed/pull/45423. It’s already in
preview, but not yet in stable. So I’m going to keep this in my drafts
till then.

Release Notes:

- N/A

Kunall Banerjee created

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