Commit log

7620c68 ci: Harden background-agent MVP git authentication loop (#49373)

Click to expand commit body
## Summary
- refresh git auth headers before each per-crash iteration in
`background_agent_mvp`
- add guarded `git fetch`/`git checkout` handling so one candidate auth
failure doesn’t fail the entire run

## Context
- fixes the auth failure seen in workflow run 22106378719 (`fatal: could
not read Username for 'https://github.com'`)
- related Linear issue: BIZOPS-853

## Testing
- ruby -e "require 'yaml';
YAML.load_file('.github/workflows/background_agent_mvp.yml')"

Release Notes:

- N/A

morgankrey created

03ed4e9 ep: Fix Unicode chars boundary (#49384)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

a5dee51 sidebar: Serialize after adding/removing workspaces (#49372)

Click to expand commit body
Before this PR we wouldn't always serialize workspaces when a
mutliworkspace adds/removes a workspace. This PR fixes this by adding a
test and calling serialization in remove

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

Anthony Eid created

91b3191 Add git worktree remove/rename API (#49135)

Click to expand commit body
Add `remove_worktree()` and `rename_worktree()` to the `GitRepository`
trait with `RealGitRepository` implementations that shell out to `git
worktree remove/move`.

Implement all 4 worktree methods (`worktrees`, `create_worktree`,
`remove_worktree`, `rename_worktree`) on `FakeGitRepository` backed by
`FakeGitRepositoryState`, with `simulated_create_worktree_error` for
test-time fault injection.

Add `set_create_worktree_error()` helper on `FakeFs`.

Add `parse_worktrees_from_str` helper and 7 new tests covering real git
operations and fake worktree lifecycle.

Closes AI-31

Release Notes:

- N/A

Richard Feldman created

1a4d5fe Fix error message wrapping in Callout component (#49370)

Click to expand commit body
## Before

<img width="1596" height="230" alt="repro"
src="https://github.com/user-attachments/assets/d96d9bc4-cc46-4c11-8ac8-0051a1a51316"
/>

## After

<img width="1000" height="800" alt="error_message_wrapping"
src="https://github.com/user-attachments/assets/7553607a-2cbf-414d-9794-dbd6f3b0f9eb"
/>


Previously, error message text was overflowing and getting clipped
instead of wrapping when displaying long error messages (e.g. rate limit
errors in the agent panel).

Closes AI-38

Release Notes:

- Fixed long error messages (e.g. rate limit errors) being clipped
instead of wrapping in the agent panel.

Richard Feldman created

9e02da9 agent_ui: Route agent thread feedback through Cloud (#49324)

Click to expand commit body
This PR updates the `Agent Thread Rated` event to be routed through
Cloud instead of the normal telemetry pipeline.

Closes CLO-223.

Release Notes:

- N/A

Marshall Bowers created

aaea63c Strip comment and list prefixes in `vim: join lines` (#49295)

Click to expand commit body
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ ] Done a self-review taking into account security and performance
aspects
- [ ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Improved the behavior of the `vim: join lines` and `editor: join lines`. Comment and other language specific line prefixes are now stripped from the join line

Ben Kunkle created

014bf4c editor: Fix newline below when selection is at the end of an multibuffer excerpt (#49132)

Click to expand commit body
Switches `newline_below` from adding a newline to the start of the next
line in a multibuffer, to appending a newline at the end of the
selections current lines. This keeps the insertion within the excerpt of
the selection rather than adding a newline to the excerpt below.

Closes #47965

Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- Fixed `editor::NewlineBelow` adding a newline to the next multibuffer
excerpt when selection is at the end of an excerpt

Austin Cummings created

82ec1aa ruby: Add Kanayago as an available language server (#49262)

Click to expand commit body
Add Kanayago as an available Ruby language server in default settings.
Disabled by default (prefixed with `!`), users can opt-in via their
settings.

This corresponds to the extension-side support added in
zed-extensions/ruby#224.

Release Notes:

- ruby: Added Kanayago as an available language server.

S.H. created

f64484a acp: Update npm package for claude agent (#49353)

Click to expand commit body
Release Notes:

- N/A

Ben Brandt created

c26784f editor: Improve `buffer_into_editor_highlights` performance (#49349)

Click to expand commit body
This brings the runtime down to logarithmic scaling of excerpts / linear
scaling of tokens.

Release Notes:

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

Lukas Wirth created

f8f4892 vim: Apply strict paragraph motion only in vim mode (#48024)

Click to expand commit body
Reverts the editor's paragraph navigation behavior that was changed in
#47734. Whitespace-only lines are now treated as paragraph boundaries
again for non-vim mode users.

Vim mode retains its own implementation where only truly empty lines
are paragraph boundaries.

Release Notes:

- Fixed editor paragraph navigation to treat whitespace-only lines as
paragraph boundaries again

---------

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

lex00 , Claude Opus 4.5 , and dino created

97a21c1 ep: Fix Unicode chars boundary (#49351)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

c70f300 ep: Make `extract_last_codeblock` more robust (#49347)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

96035d1 ep: Repair predictions with too many edits (#49342)

Click to expand commit body
Also fixes batches upload

Release Notes:

- N/A

Oleksiy Syvokon created

92c0de0 acp: Claude Code -> Claude Agent (#49345)

Click to expand commit body
Update based on
https://platform.claude.com/docs/en/agent-sdk/overview#branding-guidelines

ACP package will be updated shortly.

Release Notes:

- acp: Claude Code is now referred to as Claude Agent, per Anthropic
branding guidelines.

Ben Brandt created

af4ecae acp_thread: Log token usage when receiving `StopReason::MaxTokens` (#49343)

Click to expand commit body
Before you mark this PR as ready for review, make sure that you have:
- [ ] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

- N/A

Bennet Bo Fenner created

6f80235 bedrock: Model streamlining and cleanup (#49287)

Click to expand commit body
Release Notes:

- Improved Bedrock error messages: region-locked models ask the user to
try a different region, rate limits and access errors are reported
cleanly instead of as raw API responses
- Streamlined Bedrock model list to 39 curated models
- Fixed API errors when using non-tool models in agent threads

---------

Co-authored-by: Ona <no-reply@ona.com>

Shardul Vaidya and Ona created

891f432 ep: Rework `ep repair` to use original teacher prompt (#49335)

Click to expand commit body
It now creates multi-turn conversation, where first two messages are the
original teacher prompt and output.

This way, we'll have changes in teacher prompt automatically applied to
repair without having to explicitly sync them.


Release Notes:

- N/A

Oleksiy Syvokon created

4344681 ep: Rely on editable_region tags when parsing teacher output (#49334)

Click to expand commit body
Release Notes:

- N/A

Oleksiy Syvokon created

fb66035 ep: Fix edit predictions not showing in new buffer (#49102)

Click to expand commit body
Closes #49081

Release Notes:

- N/A

Oleksiy Syvokon created

ae293de ep: Add metrics for inserted/deleted tokens (#49330)

Click to expand commit body
Other changes:
- Changed tokenization to more code-aware tokenization from split-commit
- Fixed word-diff implementation which was inefficient and sometimes
incorrect

Release Notes:

- N/A

Oleksiy Syvokon created

806e944 Fix EP CLI issues found when generating new teacher predictions (#49327)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

deb26f8 Update our notify crate to fix free after use panic (#49311)

Click to expand commit body
Closes #49067

See https://github.com/zed-industries/notify/pull/2 for more details

Note: notify already fixed this upstream, and I'm planning on using
their crate as our dependency once their v9 is officially released.

Release Notes:

- Fix panic that could occur when navigating external code

Anthony Eid created

2df11f7 background-agent: Scaffold week-one crash MVP pipeline (#49299)

Click to expand commit body
## Summary
- add a new crash issue-linking subagent prompt
(`.factory/prompts/crash/link-issues.md`)
- add a scheduled/manual GitHub workflow for week-one background-agent
runs (`.github/workflows/background_agent_mvp.yml`)
- add Sentry candidate selection script to rank top crashes by
solvability × population (`script/select-sentry-crash-candidates`)
- add a local dry-run runner for end-to-end MVP execution without
push/PR actions (`script/run-background-agent-mvp-local`)

## Guardrails in this MVP
- draft PRs only (no auto-merge)
- reviewer routing defaults to: `eholk,morgankrey,osiewicz,bennetbo`
- pipeline order is: investigate -> link-issues -> fix

## Validation
- `python3 -m py_compile script/select-sentry-crash-candidates
script/run-background-agent-mvp-local`
- `python3 script/select-sentry-crash-candidates --help`
- `python3 script/run-background-agent-mvp-local --help`

---------

Co-authored-by: John D. Swanson <swannysec@users.noreply.github.com>

morgankrey and John D. Swanson created

452696d client: Add organizations to `UserStore` (#49320)

Click to expand commit body
This PR adds the list of the user's organizations to the `UserStore`.

Closes CLO-292.

Release Notes:

- N/A

Marshall Bowers created

fefb81c git: Fix panic in split diff when edits cause excerpts to merge (#49122)

Click to expand commit body
Our strategy for keeping excerpts in sync between the two sides of the
split diff is generally

- mutate the excerpts on the RHS
- pull out the new excerpts for the affected path from the RHS
- translate those ranges to the LHS
- update the LHS excerpts with those ranges

But this can break down when the translated ranges overlap on the LHS
despite the original ranges not overlapping on the RHS. This can happen,
for example, when a large deletion in a file crosses several excerpt
boundaries. It's rare because normally excerpt boundaries in the project
diff and branch diff are adjusted to keep entire diff hunks in view, but
we defer this for dirty files, so it's not hard to trigger it when using
the agent or editing an individual file while the diff is open in
another tab.

Release Notes:

- Fixed a panic that could occur when editing files while the project
diff or branch diff was open.

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>

Cole Miller and Zed Zippy created

a1b181f agent: Fix duplicate word in agent system prompt template (#49309)

Click to expand commit body
Release Notes:

- N/A

Austin Cummings created

ed47f10 gpui: Fix content size scaling regression on X11 (#49174)

Click to expand commit body
Closes #49172

- Fixes a regression on X11 where content size was divided by the scale
factor twice after the wgpu migration, causing half-sized rendering on
HiDPI screens.
- Aligns X11 [content_size()] behavior with Wayland by returning logical
pixel bounds directly.

Video :
[Screencast from 2026-02-14
18-58-36.webm](https://github.com/user-attachments/assets/cf4edf3b-7b93-4ded-bf46-e900be44b22b)


Release Notes:

- N/A

Om Chillure created

8c45f0c docs: Remove Supermaven (#49317)

Click to expand commit body
Closes #ISSUE

Before you mark this PR as ready for review, make sure that you have:
- [x ] Added a solid test coverage and/or screenshots from doing manual
testing
- [ x] Done a self-review taking into account security and performance
aspects
- [x ] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)

Release Notes:

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

---------

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

Katie Geer and Claude Opus 4.6 created

6cbeb84 Tune edit prediction teacher to leave fewer blank spots in predictions (#49315)

Click to expand commit body
Release Notes:

- N/A

Max Brunsfeld created

6b553e4 collab: Remove leftover impersonation code (#49314)

Click to expand commit body
This PR removes some code left over from how we used to do impersonation
for local development.

The local development impersonation path is separate now, so we don't
need all of this plumbing in Collab.

Release Notes:

- N/A

Marshall Bowers created

e269569 collab: Remove `GET /rpc_server_snapshot` endpoint (#49312)

Click to expand commit body
This PR removes the `GET /rpc_server_snapshot` endpoint from Collab, as
it is not being used (and also didn't seem to be functional).

Release Notes:

- N/A

Marshall Bowers created

2839506 collab: Remove `POST /users/:id/access_tokens` endpoint (#49297)

Click to expand commit body
This PR removes the `POST /users/:id/access_tokens` endpoint from
Collab, as it is no longer used.

Closes CLO-290.

Release Notes:

- N/A

Marshall Bowers created

d168301 Reuse existing remote workspaces when opening files from the CLI (#49307)

Click to expand commit body
Re-lands https://github.com/zed-industries/zed/pull/48891, which was
reverted due to conflicts with multi-workspace.

Before you mark this PR as ready for review, make sure that you have:
- [X] Added a solid test coverage and/or screenshots from doing manual
testing
- [X] Done a self-review taking into account security and performance
aspects

Release Notes:

- N/A

John Tur created

da2d4ca ci: Install Linux dependencies for Collab deployment workflow (#49308)

Click to expand commit body
This PR makes it so we install the necessary Linux dependencies for the
Collab deployment workflow.

Release Notes:

- N/A

Marshall Bowers created

958798d ci: Generate the Collab deployment workflow (#49306)

Click to expand commit body
This PR updates the Collab deployment workflow to be generated with
`cargo xtask workflows`.

Release Notes:

- N/A

Marshall Bowers created

0594076 xtask: Fix naming of `WorkflowType::ExtensionCi` variant (#49302)

Click to expand commit body
This PR fixes the naming of the `WorkflowType::ExtensionCi` variant to
match Rust naming conventions.

Release Notes:

- N/A

Marshall Bowers created

613f73b ci: Move all Collab deployment steps to Namespace runners (#49300)

Click to expand commit body
This PR removes the two remaining steps in the Collab deployment
workflow to Namespace runners.

The previous `runs-on` labels were no longer functional.

Release Notes:

- N/A

Marshall Bowers created

671c3e7 git_ui: Add button for the `branch diff` action (#49298)

Click to expand commit body
This PR adds a button in the Git Panel to open the `git: branch diff`
view. The button only shows if the staging area is clean/no changes and
if the branch is not main/master. I've been using this action so much
these days and we should expose it on the UI so it's more discoverable.

<img width="500" height="1736" alt="Screenshot 2026-02-16 at 6  30@2x"
src="https://github.com/user-attachments/assets/0b037811-2167-419f-b63f-9bdb12e4352e"
/>

Release Notes:

- N/A

Danilo Leal created

f21d51c editor: Fix sticky headers not accounting for deleted diff hunks (#49296)

Click to expand commit body
Release Notes:

- Fixed sticky headers sometimes disappearing when dealing with expanded
deleted diff hunks

Lukas Wirth created

e9a8ef1 workspace: Fix read-only button tooltip for non-toggleable buffers (#48998)

Click to expand commit body
Release Notes:

- Fixed an incorrect hover label for read-only file lock buttons

Lukas Wirth created

248a3c6 multi_buffer: Fix `update_path_excerpts` inserting excerpts out of order (#49290)

Click to expand commit body
Second attempt at fixing
https://github.com/zed-industries/zed/pull/49047, this also removes some
of the sorting hacks as they should ideally not be necessary anymore
after this fix

Release Notes:

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

Lukas Wirth created

9c889c1 editor: Batch calls to fold_buffer in ProjectDiff::refresh (#49278)

Click to expand commit body
This change improves performance of project diff in that:
* scrolling in split view for very large diffs (think chromium repo with
`git reset HEAD~1000`) is now very smooth on macOS and fairly smooth on
Linux
* switching from split to unified is very smooth on macOS, and fairly
smooth on Linux

There still remains the case of (severe) hangs when switching from
unified to split however, but it will be addressed in a follow-up PR.

Anyhow, here's the screenshot of the Instruments.app capture of opening
chromium repo in Zed in split view, scrolling a little, moving to
unified, scrolling some more, and moving back to split. Prior to this
change, split -> unified would cause a severe hang, whereas now it's a
hang and thus feels much smoother already (without Instruments profiling
is barely visible). Unified -> split severe hangs are still there but
don't last as long.

<img width="2301" height="374" alt="Screenshot 2026-02-16 at 5 46 23 PM"
src="https://github.com/user-attachments/assets/f687f8d4-cffd-47f1-ada1-f6c4d3ac3cd4"
/>

Release Notes:

- Improved project diff performance when opening very large
diffs/repositories.

Jakub Konka created

3335a9b languages: Fix C++ indentation for multi-line declarations and assignments (#47447)

Click to expand commit body
Before:
<img width="726" height="86" alt="indentation-problem"
src="https://github.com/user-attachments/assets/50330c66-26ac-4cb0-9f26-8ee73ec6c64d"
/>

After:
<img width="811" height="102" alt="after"
src="https://github.com/user-attachments/assets/8704bd83-b626-4b6d-8ff9-50edd6f065db"
/>

Release Notes:

- Fixed indentation problem with multi-line declarations and assignments
in C++

---------

Co-authored-by: ozacod <ozacod@users.noreply.github.com>

ozacod and ozacod created

dcc69c0 docs: Fix theme publishing link in themes guide (#49276)

Click to expand commit body
Fix broken links in themes docs

Release Notes:

- N/A

morgankrey created

6e33d83 copilot: Display cost multiplier for Github Copilot models (#44800)

Click to expand commit body
### Description

Related Discussions: #44499, #35742, #31851

Display cost multiplier for GitHub Copilot models in the model selectors
(Both in Chat Panel and Inline Assistant)

<img width="436" height="800" alt="image"
src="https://github.com/user-attachments/assets/c9ebd8fa-4d55-4be8-b3e1-f46dbf1f0145"
/>


### Some technical notes

Although this PR's primary intent is to show the cost multiplier for
GitHub Copilot models alone, I have included some necessary plumbing to
allow specifying costs for other providers in future. I have introduced
an enum called `LanguageModelCostInfo` for showing cost in different
ways for different models. Now, this enum is used in `LanguageModel`
trait to get the cost info.

For now to begin with, in `LanguageModelCostInfo`, I have specified two
ways of pricing: Request-based (1 Agent request - GitHub Copilot uses
this) and Token-based (1M Input tokens / 1M Output tokens). I had
initially thought about adding a `Free` type, especially for Ollama but
didn't do it after realizing that Ollama has paid plans. Right now, only
the Request-based pricing is implemented and used for Copilot models.

Feel free to suggest changes on how to improve this design better.

Release Notes:

- Show cost multiplier for GitHub Copilot models

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>

Sathiyaraman M and Danilo Leal created

0e7d633 agent_ui: Ship thinking effort selection for Zed provider (#49274)

Click to expand commit body
This PR removes the `cloud-thinking-effort` feature flag to ship the
thinking effort UI for the Zed provider.

Release Notes:

- Added support for controlling thinking effort levels with supported
models using the Zed provider.

Marshall Bowers created

c5bfa93 acp: Allow permissions on existing terminal tool calls (#49270)

Click to expand commit body
It is possible, when the agent is streaming the tool call, that we will
get a permission request on an existing terminal and we need to render
that.

When Zed controls the terminal this won't happen, but when we are just
rendering the output, it can happen and we need to show it.

Release Notes:

- agent: Fix permission options not rendering on terminal commands

Ben Brandt created

323b579 bedrock: Add placeholder tool when summarising threads with tool history (#48863)

Click to expand commit body
Bedrock Converse API requires toolConfig whenever messages have tool use
or result blocks. PR #33174 handled the case where tools are defined but
tool_choice is None. This change addresses another case: the tools array
is empty (e.g. thread summarisation) but messages still have tool blocks
from conversation history. A placeholder tool satisfies the requirement.

Testing:

Tested manually by:
1. Starting a conversation with Bedrock that uses tools
2. Triggering thread summarisation
3. Confirming summarisation now succeeds instead of failing with an API
error

Release Notes:

- Fixed Bedrock thread summarization failing when conversation had tools

David Turnbull created