Commit Graph
34591 Commits
Author SHA1 Message Date
Andres Suarez f0f3be7e41 project_panel: Add bold_folder_labels setting (#47631)
This setting brings Zed in parity with Sublime's `bold_folder_labels`.

The settings does just that, it makes directory labels bold. This
setting is
particularly useful for those who turn icons off, but do need a visual
queue (besides the chevron) to quickly tell apart files and folders.

Note: This PR depends on
https://github.com/zed-industries/zed/pull/47629.
Otherwise, the setting will appear to have no uneffect (unless you're
using a custom UI font). ZedSans has "bold" today, but that's too thick
for the project panel.

<img width="2282" height="1545" alt="zed-project-panel"
src="https://github.com/user-attachments/assets/63ccacc0-c00a-48b2-8e70-923aa6717956"
/>

Release Notes:

- Added `project_panel.bold_folder_labels` to show folder names with
bold text in the project panel (defaults to `false`).
2026-01-28 09:54:03 +05:30
Danilo Leal a6d2a88daf Add item for opening Markdown/SVG files in preview tab in right-click menu (#47821)
Following user feedback, this should help making the Markdown Preview
more discoverable.

| Buffer Right-click | Tab Right-click |
|--------|--------|
| <img width="2474" height="1824" alt="Screenshot 2026-01-27 at 10 
16@2x"
src="https://github.com/user-attachments/assets/251149e9-89c6-4d11-aed0-872669939cfb"
/> | <img width="2464" height="1808" alt="Screenshot 2026-01-27 at 10 
16 2@2x"
src="https://github.com/user-attachments/assets/359a221b-2141-45b1-98a9-d9c77b601c0b"
/> |

Release Notes:

- Workspace: Added a menu item in the buffer and tab right-click menu
for opening Markdown and SVG files in the preview tab.
2026-01-28 00:19:13 -03:00
John Tur 293db2466d Fix issues with Windows SSH support (#47822)
- Remove the newlines in the unzip command string, which made it not
work.
- Fix spawning the terminal and tasks. Unfortunately, the Windows
OpenSSH server has limitations that require rather ugly workarounds.

Release Notes:

- N/A
2026-01-28 02:37:26 +00:00
versecafe bf05aa0c2f ep: Diagnostics as retrieval_chunks for sweep ep (#47441)
Release Notes:

- N/A
2026-01-27 19:46:10 -05:00
Ben Kunkle e4822e8690 zeta2: Split out last edit in history (#47812)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 19:45:05 -05:00
Ben KunkleandZed Zippy 1436457ca4 ep_cli: Ignore common subsequences for more intuitive reversal metric values (#47818)
Closes #ISSUE

Release Notes:

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

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-27 19:39:20 -05:00
Piotr Osiewicz cab9616efa ci: Enable namespace caching for clippy on Mac (#47819)
Release Notes:

- N/A
2026-01-28 00:24:03 +00:00
KyleBarton cdad42abdb Disable opening dev container from within a remote project (#47816)
Closes #46320

Release Notes:

- Improves error messaging to guide user away from opening a dev
container from within a remote project
2026-01-27 23:35:55 +00:00
Ben KunkleandMax 98996e5ec8 zeta2: Improve format prompt budgeting (#47808)
Closes #ISSUE

Release Notes:

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

---------

Co-authored-by: Max <max@zed.dev>
2026-01-27 17:36:27 -05:00
Kirill Bulatov ae2bbdaff7 Use suggested name for "use_system_path_prompts": false dialogue when creating new files (#47802)
<img width="1419" height="266" alt="image"
src="https://github.com/user-attachments/assets/059ee9e2-e102-4fc6-acba-d66ae0292203"
/>


Release Notes:

- N/A
2026-01-27 20:54:20 +00:00
Anthony Eid 8fffdd8615 Revert "fs: Replace MacWatcher with notify::FsEventWatcher" (#47799)
Reverts zed-industries/zed#47322. I'm going to remerge this tomorrow
after releases so we get a full week in nightly to catch any bugs
2026-01-27 20:27:53 +00:00
Marco Mihai CondracheandAnthony Eid 45df4111c0 fs: Replace MacWatcher with notify::FsEventWatcher (#47322)
Closes #47064 
Closes #20806

The previous implementation used Zed's custom fsevent crate, which
spawned a dedicated thread for each watched path. On large projects,
this could result in 100+ threads just for filesystem watching.

This PR removes the `fsevent` crate and switches to using `notify's`
FsEventWatcher directly. The notify implementation maintains a single
FSEvents stream that watches all paths on one thread. When paths are
added or removed, the stream is stopped, the path list is updated, and
the stream is restarted.

Ref: https://github.com/notify-rs/notify/blob/main/notify/src/fsevent.rs

As a result, Zed now uses one thread for filesystem watching regardless
of how many paths are watched.

Release Notes:

- On macOS, Zed now uses significantly fewer resources when watching
filesystem changes

---------

Signed-off-by: Marco Mihai Condrache <52580954+marcocondrache@users.noreply.github.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
2026-01-27 19:12:41 +00:00
Danilo Leal 0867cda209 agent_ui: Fix inline assistant line height (#47772)
This makes the inline assistant editor use the line height value
configured in the settings, and fixes cut-off button creases:

| Before | After |
|--------|--------|
| <img width="656" height="276" alt="Screenshot 2026-01-27 at 11  55@2x"
src="https://github.com/user-attachments/assets/fbb19e54-6663-4f7e-b706-b012fbfa2c99"
/> | <img width="656" height="274" alt="Screenshot 2026-01-27 at 11 
54@2x"
src="https://github.com/user-attachments/assets/4577b752-3e18-45c7-9657-02919047f8ba"
/> |

Release Notes:

- Agent: Fixed cut-off mention creases in the inline assistant.
2026-01-27 15:37:43 -03:00
Danilo Leal 08090f496f agent_ui: Add a menu for inserting context (#47768)
This PR swaps the @ icon button in the message editor for a + one, which
opens a dropdown that displays context options you can add to the agent.
Aside from removing one step if you're wanting to add context first with
the mouse (in comparison to just inserting @ in the message editor),
this menu will also house skills you've created, whenever we get to
support to that. It also works to surface images and selections in a bit
more visible way as context options. So, effectivelly, this is a bit of
foundation work for further features to come. Here's what it looks like:

<img width="500" height="586" alt="Screenshot 2026-01-27 at 11  38@2x"
src="https://github.com/user-attachments/assets/551686ba-4629-4317-9177-1e942512a23c"
/>

Note that all the options you see in the menu should also be available
through simply typing @ in the message editor.

Release Notes:

- Agent: Added a menu for inserting context more easily with the mouse
in the agent panel.
2026-01-27 15:37:32 -03:00
Danilo Leal 84643d8cce gpui: Add min_size and max_size style methods (#47775)
The same way you can use `size` when width and height have the same
value, it should also be possible to write `min_size` and `max_size`.
This PR adds these two methods, which are also supported in Tailwind
(but not documented in v4, surprisingly!).

Release Notes:

- N/A
2026-01-27 15:37:22 -03:00
Danilo Leal 6a3c5188f9 agent_ui: Improve image preview on mention hover (#47781)
This PR improves the hover tooltip container for displaying a preview of
the mentioned image in the agent panel.

<img width="600" height="414" alt="Screenshot 2026-01-27 at 1  03 2@2x"
src="https://github.com/user-attachments/assets/f5a6f160-6abf-4c3c-8375-4613f4948360"
/>

Release Notes:

- N/A
2026-01-27 15:37:11 -03:00
Danilo Leal 3c8f0d55cf acp: Improve the ACP registry UI (#47788)
This PR adds some UI improvements to the ACP registry UI, already
including the URL for the soon-to-be-released blog post. I'm also
renaming the action to open the page from `zed: agent registry` to `zed:
acp registry`.

Release Notes:

- N/A
2026-01-27 15:37:01 -03:00
Jeff BrennanandJoseph T. Lyons a162fbd262 Fix language injections sticking after language comment removed (#46134)
Closes #46104

Release Notes: 

- Fixed language injections sticking after language comment removed

---

This is working well for the Python SQL comments

![comment_sync_demo](https://github.com/user-attachments/assets/ba5160ce-4867-4b49-9f44-141ddc2730a1)

```python
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

# sql
cmd = "SELECT col1, col2 FROM tbl"

df = spark.sql(  # sql
    """
    WITH cte AS (
        SELECT col1, col2, COUNT(*) AS n
        FROM tbl
        GROUP BY ALL
    )
    SELECT * FROM cte
    """
)
```


And go comments

![comment_sync_demo_go_updated](https://github.com/user-attachments/assets/73e81a94-e8fc-4dc3-82f8-09e966d35bc9)


```go
package main

func test() {
    var _ = /* sql */ `SELECT id, name FROM products`
    var _ = /* sql */ "SELECT id, name FROM products"

    var _ = /* sql */ `SELECT id, name FROM products`

    var _ = /* sql*/ "SELECT id, name FROM products"
}
```

Note: `f04b252dd9` was a simpler implementation that worked for
non-inline comments in Python, but produced the following Go behavior

![comment_sync_demo_go](https://github.com/user-attachments/assets/40336705-9799-4b0a-b457-4974d172e1c8)

---------

Co-authored-by: Joseph T. Lyons <JosephTLyons@gmail.com>
2026-01-27 17:38:10 +00:00
Marshall Bowers 6db0667d3f cloud_api_types: Rework Plan type (#47784)
This PR reworks the `Plan` type, now that we don't need to be concerned
about the legacy plan versions.

We've also made the deserialization layer more robust, which should make
it easier to add new plan variants in the future without needing to go
through this same song and dance.

Release Notes:

- N/A
2026-01-27 12:15:05 -05:00
Ben Kunkle 7d7afcbe2d zeta2: Remove experimental_edit_prediction_context_retrieval setting (#47783)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 12:10:08 -05:00
Ran Benitaanddino 1169dff02b vim: Add gdefault setting to set /g as a default substitution flag (#47664)
Add support for Vim's `gdefault` option which makes the `:substitute`
command replace all matches in a line by default, instead of just the
first match. When enabled, the `/g` flag inverts this behavior.

- Add `vim.gdefault` setting
- Add `:set gdefault`, `:set nogdefault` (and short forms `:set gd`, `:set nogd`)
- Fix handling of multiple `/g` flags so that each one inverts the one before

Closes #36209

Release Notes:

- vim: Add `vim.gdefault` setting to make `/g` (replace all matches in a line) the default for substitutions, along with `:set gdefault` and `:set nogdefault` commands (short forms: `gd`, `nogd`)

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-01-27 17:04:10 +00:00
Anthony Eid 559a8500a0 Update notify dependency version to include the flag watch root fix (#47782)
This is in preparation of merging
https://github.com/zed-industries/zed/pull/47322, because our MacWatcher
implementation was able to watch root directories, and I wanted to
maintain that behavior to decrease the chance of any bugs occurring from
a merge

Note: Release candidate 9 for Notify was created two days ago which
means that a new version is coming out soon. We should update to v9 once
it's released to include bug fixes from upstream.

Release Notes:

- N/A
2026-01-27 16:38:21 +00:00
Ben Kunkle f7e911b0ff Use faster brotli compression for sweep requests (#47776)
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 11:07:02 -05:00
Lena 0fd39c7ea0 More permissions to GitHub duplicates bot (#47780)
The claude code action insists on needing `id-token: write` despite us
using `github_token`, so maybe I misread the 
[FAQ](https://github.com/anthropics/claude-code-action/blob/main/docs/faq.md#why-am-i-getting-oidc-authentication-errors)
earlier. Pinning the sha of the currently-used version of the action for
safety's sake.

Release Notes:

- N/A
2026-01-27 16:02:46 +00:00
Marshall Bowers ad8e0488bb cloud_llm_client: Move Plan type into cloud_api_types (#47778)
This PR moves the `Plan` type out of `cloud_llm_client` and into
`cloud_api_types`.

Release Notes:

- N/A
2026-01-27 15:58:05 +00:00
Conrad Irwin c729dc7d09 Use semibold (#47725)
New on the left, old on the right:

<img width="1612" height="1047" alt="Screenshot 2026-01-26 at 20 31 04"
src="https://github.com/user-attachments/assets/3e0d01b6-05e9-4c9c-8c15-6c525ce9fa9f"
/>
<img width="1604" height="915" alt="Screenshot 2026-01-26 at 20 30 49"
src="https://github.com/user-attachments/assets/77d0f9e0-778b-45df-a8e1-ade63ee9e798"
/>


Release Notes:

- Bold UI text will now render using Plex SemiBold instead of Bold.
2026-01-27 08:50:52 -07:00
Lena ddb7fdd984 Fix getting token in a GitHub bot (#47777)
Release Notes:

- N/A
2026-01-27 15:41:13 +00:00
Marshall Bowers 8cfe679497 cloud_llm_client: Remove unused code (#47774)
This PR removes some unused code around the plan types from the
`cloud_llm_client`.

Release Notes:

- N/A
2026-01-27 15:24:58 +00:00
Lena 28bdee48b1 Add a test version of 'find duplicates' bot (#47773)
Release Notes:

- N/A
2026-01-27 15:18:50 +00:00
DreamandMarshall Bowers 61cea80e47 extensions_ui: Fix duplicated button element IDs preventing uninstall (#47745)
Closes #47656

Release Notes:

- Fixed extension uninstall button not working when an upgrade is
available.

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>
2026-01-27 09:44:05 -05:00
Oleksiy Syvokon 98b3025943 Show QA metrics in the ep eval report (#47766)
Release Notes:

- N/A
2026-01-27 16:37:04 +02:00
Kirill Bulatov 515aadbfb7 Tidy up signature help delays (#47762)
Follow-up of https://github.com/zed-industries/zed/pull/46745

Release Notes:

- N/A
2026-01-27 15:53:15 +02:00
lex00anddino df3db19d0b vim: Ensure paragraph motions use empty and not blank lines (#47734)
The `}` and `{` paragraph motions now correctly treat only truly empty
lines (zero characters) as paragraph boundaries, matching vim's
documented behavior. Whitespace-only lines are no longer treated as
boundaries.

Changed `start_of_paragraph()` and `end_of_paragraph()` in
`editor/src/movement.rs` to check `line_len() == 0` instead of
`is_line_blank()`.

Note: This change does NOT affect the `ap`/`ip` text objects. Per vim's
`:help ap`, those DO treat whitespace-only lines as boundaries, which is
the existing (correct) behavior in `vim/src/object.rs`.

Closes #36171

Release Notes:

- Fixed vim mode paragraph motions (`}` and `{`) to correctly ignore
whitespace-only lines

---------

Co-authored-by: dino <dinojoaocosta@gmail.com>
2026-01-27 13:33:53 +00:00
Oleksiy SyvokonandZed Zippy 22a9324d89 ep: Use rejected_output for DPO training + OpenAI support (#47697)
Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-27 13:02:40 +00:00
Finn Evers a803d0d37a xtask: Remove transitive GPUI dependency (#47748)
Release Notes:

- N/A
2026-01-27 14:00:45 +01:00
Lukas Wirth 7c7a5c9b34 askpass: Fix ssh auth not updating entered password on windows (#47755)
Release Notes:

- Fixed mistyping the ssh password in the askpass prompt on windows
locking you out of retyping the correct one
2026-01-27 12:53:14 +01:00
Lukas Wirth aecf324b76 terminal_view: Fix new flaky terminal tests (#47753)
Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-01-27 11:38:17 +00:00
Ben Brandt b2323baa3b Remove cron schedule for unit evals (#47743)
Release Notes:

- N/A
2026-01-27 09:38:11 +00:00
Finn Evers 166eb1918a extension_ci: Use different target for nextest (#47738)
Release Notes:

- N/A
2026-01-27 09:11:32 +00:00
Joseph T. Lyons 4ea3a839e1 Fix native agent thread history notify refresh (#47733)
Release Notes:

- N/A
2026-01-27 09:14:37 +01:00
Rocky Shi 75a2b4321b terminal_view: Add ability to rename terminal tabs (#45800)
Closes [#ISSUE](https://github.com/zed-industries/zed/issues/11023)

Release Notes:

- Added ability to rename terminal tabs by right-click context menu and
double-click

Recording:


https://github.com/user-attachments/assets/be81a95b-1f64-4ebd-94e4-7cfe6a1e9ddb
2026-01-27 07:21:43 +00:00
Lev ZakharovandConrad Irwin 2b3784e804 go: Add support for running sub-tests in table tests without explicit variables for test cases (#46645)
This PR extends support to run Go table-test subtests (#35657), handling
tests without explicitly declaring variables for test scenarios.

<img width="611" height="318" alt="go-table-tests"
src="https://github.com/user-attachments/assets/e001b661-b512-4183-b6df-6c25f3af4f27"
/>

Release Notes:

- Improved support to run Go table-test subtests, handling tests without
explicitly declaring variables for test scenarios.

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2026-01-27 05:54:22 +00:00
Kalaay 3ec64bd030 Add optional relative line jumps to go-to-line action (#46932)
Implements relative line jumping, a common feature i missed from
Vim/Neovim where you can jump to lines relative to your current cursor
position.

- New `{"relative": true}` flag for `go_to_line::Toggle` action 
- Supports both `-5` (5 lines up) and `b5` (backward 5 lines) syntax
- Full lines only (no column support in relative mode, wasnt sure if
that would be necessary)
- Unbound by default - users can add e.g. `"ctrl-j":
["go_to_line::Toggle", {"relative": true}]` to their keymap

Example usage:
- `5` → jump 5 lines down
- `-3` or `b3` → jump 3 lines up  
- `0` → stay on current line


[Screencast_20260115_191312.webm](https://github.com/user-attachments/assets/395c0e7b-8ac1-48c8-a39e-5ade4f9206ec)

Release Notes:

- Added relative line jump support to go-to-line action via
`+/-/f/b/F/B`
2026-01-27 05:51:11 +00:00
Ichimura TomooandConrad Irwin 7e35e566b3 encoding: Add "reopen with encoding" (#46553)
# Add "Reopen with Encoding" feature (Local/Single user)

## Summary

This PR adds a "Reopen with Encoding" feature to allow users to manually
specify an encoding and reload the active buffer.

This feature allows users to explicitly specify the encoding and reload
the file to resolve garbled text caused by incorrect detection.

## Changes

1.  Added encoding picker logic to `encoding_selector`

- Implemented a modal UI accessible via the command palette, shortcuts,
or by clicking the encoding status in the status bar.
- Allows users to select from a list of supported encodings (Shift JIS,
EUC-JP, UTF-16LE, etc.).

2.  Updated Buffer logic (crates/language)

- Added a `force_encoding_on_next_reload` flag to the Buffer struct.
- Updated the `reload` method to check this flag and apply the following
logic:
- **Non-Unicode (e.g., Shift JIS):** Bypasses heuristics (like BOM
checks) to force the specified encoding.
- **Unicode (e.g., UTF-8):** Performs standard BOM detection. This
ensures that the BOM is correctly handled/consumed when switching back
to UTF-8.

3.  UI / Keymap

- Made the encoding status in the status bar (ActiveBufferEncoding)
clickable.
- Added default keybindings:
  - macOS: cmd-k n
  - Linux/Windows: ctrl-k n
  - Windows: ctrl-k n

## Limitations & Scope

To ensure stability and keep the PR focused, the following scenarios are
intentionally out of scope:

1. **Collaboration and Remote Connections**

- Encoding changes are disabled when collaboration (is_shared) or SSH
remote connections (is_via_remote_server) are active.
- **Reason:** Synchronizing encoding state changes between host/guest or
handling remote reloads involves complex synchronization logic. This PR
focuses on local files only.

`Remote Connection (SSH/WSL)`

|Via status bar|Via shortcut/command|
|:---:|:---:|
|<img width="767" height="136" alt="remote_tooltip"
src="https://github.com/user-attachments/assets/6c7cb293-2486-4f6d-a3ff-2086d939398e"
width="400" />|<img width="742" height="219" alt="remote_shortcut"
src="https://github.com/user-attachments/assets/5448f199-2066-4baf-b349-a983ab2fa77a"
width="400" />|

`Collaboration Session `

|Via status bar|Via shortcut/command|
|:---:|:---:|
|<img width="734" height="86" alt="collab_tooltip"
src="https://github.com/user-attachments/assets/37de99a9-dd33-4c78-98bf-20654d41fdd0"
/>|<img width="720" height="182" alt="collab_pop"
src="https://github.com/user-attachments/assets/91d03ea7-f029-442a-8236-55234576f7ed"
/>|

2. Dirty State

- The feature is disabled if the buffer has unsaved changes to prevent
data loss during reload.

|Via status bar|Via shortcut/command|
|:---:|:---:|
|<img width="545" height="103" alt="local_dirty_tooltip"
src="https://github.com/user-attachments/assets/d9ae658e-52b3-4ecd-9873-d0ec8bd51b5d"
/>|<img width="707" height="178" alt="local_dirty_pop"
src="https://github.com/user-attachments/assets/d170ea1e-9fcb-42e7-aa3e-0555b4a19d86"
/>|

3. Files detected as Binary

Files that worktree detects as "binary" (e.g., UTF-16 files without BOM
containing non-ASCII characters) are not opened in the editor, so this
feature cannot be triggered.
**Future Work**: Fixing this would require modifying crates/worktree
heuristics or exposing a "Force Open as Text" action for InvalidItemView
to trigger. Given the scope and impact, this is deferred to a future PR.

## Test Plan

I verified the feature and BOM handling using the following scenarios:

### Preparation

Used the following test files:

-
[**test_utf8.txt**](https://github.com/user-attachments/files/24548803/test_utf8.txt):
English-only text file. No BOM.
-
[**test_utf8_bom.txt**](https://github.com/user-attachments/files/24548822/test_utf8_bom.txt):
English-only text file. With BOM.
-
[**test_utf8_jp_bom.txt**](https://github.com/user-attachments/files/24548825/test_utf8_jp_bom.txt):
UTF-8 with BOM file containing Japanese characters.
-
[**test_shiftjis_jp.txt**](https://github.com/user-attachments/files/24548827/test_shiftjis_jp.txt):
Shift-JIS file containing Japanese characters (content designed to
trigger misdetection, e.g., using only half-width katakana).

Used an external editor (VS Code or Notepad) for verification.

### Case 1: English-only file behavior

1.  Open an English-only UTF-8 file (test_utf8.txt).
2.  Reopen as Shift JIS.
3.  **Result:**

- Text appearance remains unchanged (since ASCII is compatible).
- Status bar updates to "Shift JIS".

### Case 2: Fixing Mojibake

1. Open a Shift-JIS file (test_shiftjis_jp.txt) that causes detection
failure.
    ※Confirm it opens with mojibake
2.  Select Shift JIS from the status bar selector.
3.  **Result:**

- Mojibake is resolved, and Japanese text is displayed correctly.
- Status bar updates to "Shift JIS".

### Case 3: Unicode file with BOM behavior

1.  Open an English-only UTF-8 with BOM file (test_utf8_bom.txt).
2.  Reopen as `Shift JIS`.
3.  **Result:**

- The BOM bytes are displayed as mojibake at the beginning of the file.
- The rest of the English text is displayed normally (ASCII
compatibility).
- Status bar updates to "Shift JIS".

### Case 4: Non-Unicode file with BOM behavior

1. Open a UTF-8 with BOM file containing Japanese
(test_utf8_jp_bom.txt).
2.  Reopen as Shift JIS.
3.  **Result:**

- The BOM bytes at the start are displayed as mojibake.
- The Japanese text body is displayed as mojibake (UTF-8 bytes
interpreted as Shift JIS).
- Status bar updates to "Shift JIS" (no BOM indicator).

### Case 5: Revert to Unicode

1.  From the state in Case 4 (Shift JIS with mojibake), reopen as UTF-8.
2.  **Result:**

- The BOM mojibake at the start disappears (consumed).
- The text returns to normal.
- Status bar updates to "UTF-8 (BOM)".

### Case 6: External BOM removal (State sync)

1.  Open a UTF-8 with BOM file in Zed (test_utf8_bom.txt).
2. Open the same file in an external editor and save it as UTF-8 (No
BOM).
3.  Refocus Zed.
4.  **Result:**

- Text appearance remains unchanged.
- The (BOM) indicator disappears from the status bar.
- Saving in Zed and checking externally confirms the BOM is gone.

### Case 7: External BOM addition

1. From the state in Case 6 (UTF-8 No BOM), save as UTF-8 with BOM in
the external editor.
2.  Refocus Zed.
3.  **Result:**

- The (BOM) indicator appears in the status bar.
- Saving in Zed and checking externally confirms the BOM is present.

### Case 8: External Encoding Change (Auto-detect sync)

1.  Open an English-only UTF-8 file in Zed (`test_utf8.txt`).
    * *Status bar shows: "UTF-8".*
2. Open the same file in an external editor and save it as **UTF-16LE
with BOM**.
3.  Refocus Zed.
4.  **Result:**
    * The text remains readable (no mojibake).
* **Status bar automatically updates to "UTF-16LE (BOM)".** (Verifies
that `buffer.encoding` is correctly updated during reload).

Release Notes:

- Added "Reopen with Encoding" feature (currently supported for local
files).

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2026-01-27 05:27:26 +00:00
Conrad Irwin eff07f7a1a Reapply "Try namespace mac runners (#47675)" (#47721) (#47727)
This reverts commit cb84a955ed.

Closes #ISSUE

Release Notes:

- N/A
2026-01-26 22:02:52 -07:00
Cole Miller ec8c452e3c git: Don't rebuild the project diff when the active repository changes (#47718)
Release Notes:

- N/A
2026-01-26 23:36:31 -05:00
Cole MillerandZed Zippy c272dccc83 git: Retain "since" diffs in the GitStore (#47619)
This PR makes it so that `open_diff_since`, as used by the branch diff,
is able to return a stable diff entity instead of creating a new one
every time this is called. In particular, the base text buffer for this
diff is now stable across branch diff refreshes, making it usable with
the side-by-side view. The strategy for keeping the diff entities alive
is the same one that we use for the uncommitted and unstaged diffs--the
`GitStore` only holds a weak pointer to each "since" diff, so when these
diffs are no longer in use by the branch diff multibuffer they can be
cleaned up.

Release Notes:

- N/A

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-01-26 23:35:43 -05:00
Cole Miller 409152e871 git: Avoid unwrapping active repository in panel rendering (#47700)
Closes ZED-43V
Closes ZED-3VK

Release Notes:

- N/A
2026-01-26 23:08:51 -05:00
everdroneandConrad Irwin a74abd34f1 Make workspace::SendKeystrokes not use layout key equivalents (#47061)
Closes #46509

Release Notes:

- Fixed: `workspace::SendKeystrokes` would not allow remapping keys in
different keyboard layouts

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2026-01-27 03:28:00 +00:00
Conrad Irwin cb84a955ed Revert "Try namespace mac runners (#47675)" (#47721)
This broke the libgit2 bundling silently

Release Notes:

- N/A
2026-01-27 02:59:52 +00:00