Commit Graph
39175 Commits
Author SHA1 Message Date
ozacod 1f602d5b69 languages: Fix block comment indentation for C/C++ (#47810)
Before:
<img width="426" height="128" alt="before"
src="https://github.com/user-attachments/assets/89f84f4b-4810-4d11-b8a2-c841d8506cef"
/>

After:
<img width="437" height="125" alt="after"
src="https://github.com/user-attachments/assets/a63c5265-8f1b-4926-a334-93effad22f2b"
/>

Release Notes:

- Fixed for block comment indentation problem for C/C++
2026-02-10 01:05:46 +01:00
ozacod 642bb888bd languages: Fix C/C++ outline for function definitions and declarations with mixed storage and type qualifiers (#47500)
Before:
<img width="1002" height="228" alt="before"
src="https://github.com/user-attachments/assets/94c5d0b7-a467-4bfe-8eaf-5a2c4b3cb7ea"
/>

After:
<img width="1002" height="228" alt="after"
src="https://github.com/user-attachments/assets/73d049d2-4dd1-40a4-ac21-984ca3fd32ee"
/>

Release Notes:

- Fixed C/C++ outline for function definitions and declarations with
mixed storage and type qualifiers.
2026-02-10 01:04:15 +01:00
feeiyu 3fded5832f Fix incorrect first line detection for libstdc++ files (#48351)
https://github.com/zed-industries/zed/pull/48250#issuecomment-3846774856

To ensure the fix covers all affected files, I have checked all C++
files without extensions using the following command:
```bash
find /usr/include/c++ -type f | grep -v '.h' | grep -v '.cpp' | grep -v '.tcc' | xargs head -1 | zed -
```

<details>
  <summary>Click to expand images</summary>
<img width="940" height="935" alt="image"
src="https://github.com/user-attachments/assets/d0346ad4-d9f7-47d5-a85e-cb574dacf290"
/>

<img width="956" height="939" alt="image"
src="https://github.com/user-attachments/assets/d9e872fc-f2b8-4fff-b5a9-99e8a4fc21a3"
/>

<img width="953" height="940" alt="image"
src="https://github.com/user-attachments/assets/dee53cd4-d598-4d65-918d-353b037cdf1b"
/>

<img width="956" height="938" alt="image"
src="https://github.com/user-attachments/assets/777b899c-db25-4dc8-b4a5-fafe28cc14a4"
/>

</details>

Release Notes:

- N/A
2026-02-10 01:02:23 +01:00
ozacod 46fd45fc62 languages: Add attribute highlighting in C++ (#47825)
Before:
<img width="587" height="360" alt="before"
src="https://github.com/user-attachments/assets/85989888-2fc0-43aa-87ca-01d2c3101484"
/>

After:
<img width="591" height="357" alt="after"
src="https://github.com/user-attachments/assets/9e1ceccf-7890-43f7-a0b9-938daa161d13"
/>

Release Notes:

- Added attribute highlighting in C++
2026-02-10 01:01:56 +01:00
Ben Kunkle 83e847cbd9 Fix panic in zeta1 prompt parsing (#48822)
Closes #48712

- [ ] Tests or screenshots needed?
- [ ] Code Reviewed
- [ ] Manual QA

Release Notes:

- Fixed a panic when parsing predictions made by zeta1
2026-02-09 18:48:15 -05:00
Joseph T. Lyons f9d0587a26 Add a Show All Channels button to the collab panel (#48826)
This makes it easy to see all the activity that is happening in a more
condensed view.
Helps you fend off endless scrolling in the collaboration panel when
trying to find the meeting room. ⚔️


https://github.com/user-attachments/assets/5b538636-5672-42a4-a831-ffe303051c84

- [X] Tests or screenshots needed?
- [ ] Code Reviewed
- [X] Manual QA

Release Notes:

- Added a `Show All Channels` button to the collab panel to filter down
to only channels with participants.
2026-02-09 18:17:45 -05:00
Finn Evers f3f0406e59 extension_ci: Increase timeout for extension version bump job (#48828)
This fixes another issue for the ruby extension where a cargo index
update can sometimes take quite some time. However, this will not change
anything for all other extensions, as they continue to bump within the
defined timeout.

Release Notes:

- N/A
2026-02-09 23:12:40 +00:00
Marshall Bowers ff0206b65e collab: Remove GET /extensions endpoint (#48827)
This PR removes the `GET /extensions` endpoint from Collab, as it has
been moved to Cloud.

In #48717 we changed it to just proxy to Cloud, but we didn't end up
needing that.

Release Notes:

- N/A
2026-02-09 23:06:11 +00:00
3695ba48b3 git: Fix missing excerpts panic with side-by-side diff (#48755)
When we update excerpts, pull the changes to the `Companion` excerpt
mappings into the multibuffer's update block, so that buffer
subscriptions don't get the chance to run and observe an invalid state
while attempting to snapshot the editor

Release Notes:

- N/A

---------

Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
2026-02-09 17:16:11 -05:00
Finn Evers 7f4940cf84 extension_ci: Be more precise with clippy targets (#48824)
This fixes an issue where we would run into build errors during testing.

Release Notes:

- N/A
2026-02-09 22:13:27 +00:00
Cameron McloughlinandCole Miller 500382591b git: Side-by-side diff UX improvements (#48821)
- No more "locked mode", it's on by default
- Only `ToggleDiffView` action
- Re-enable code actions on the RHS

Release Notes:

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

---------

Co-authored-by: Cole Miller <cole@zed.dev>
2026-02-09 21:55:47 +00:00
ilsubyeegaandKunall Banerjee a0a01b43a5 docs: Mention support for alternate LSP for Kotlin (#45650)
Would believe https://github.com/zed-industries/zed/pull/40776 did
change the default lsp to official implementation.


Release Notes:

- N/A

---------

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
2026-02-09 21:54:02 +00:00
Kyle Kelley 4b609aad95 repl: Shutdown all kernels on app quit (#48760)
Closes #17985
Closes #21911

Force the shutdown of the kernel by ensuring the kernel sessions are
dropped on app quit.

Release Notes:

- Fixed shutdown of kernels on app exit
2026-02-09 22:36:22 +01:00
Kyle Kelley a43aa205c2 repl: Bump runtimed ecosystem packages to 1.x (#48817)
Bump the runtimed ecosystem packages to their 1.0 releases:

- `jupyter-protocol`: 0.10.0 → 1.1.0
- `jupyter-websocket-client`: 0.15.0 → 1.0.0
- `nbformat`: 0.15.0 → 1.0.0
- `runtimelib`: 0.30.0 → 1.1.0

One breaking change: `MimeType::Json` now wraps `serde_json::Value`
directly instead of `serde_json::Map<String, Value>`, so the redundant
`Value::Object(...)` wrapping in `outputs.rs` was removed.

Closes #41649

More Quality of Life improvements and Bug Fixes are coming in new PRs
after this is merged.

Release Notes:

- Fixes startup for R kernels and Python kernels on windows.
2026-02-09 22:27:40 +01:00
Joseph T. Lyons 5851e86007 Update community champions (#48818)
Adding @rgbkrk so we have extra reminders in place to remain attentive.

Release Notes:

- N/A
2026-02-09 21:22:56 +00:00
Martin PoolandKunall Banerjee f03aefa056 docs: Suggest alternative to Vim tag navigation feature (#48735)
Closes N/A

- [ ] Tests or screenshots needed? -- no
- [x] Code Reviewed 
- [x] Manual QA -- I ran `mdbook serve` and checked the output looks OK

Release Notes:

- N/A

---------

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
2026-02-09 21:14:27 +00:00
Finn Evers 2f8c87f155 extension_rollout: Improve naming for PR titles (#48815)
This PR updates the names for the PRs to roll out to the extensions, as
having the `zed@` prefix does not look too pretty.

It also increases the concurrency of matrix jobs run to 10, as the
rollout has matured by now and is safe to perform for more repositories
at once.

Release Notes:

- N/A
2026-02-09 20:36:40 +00:00
Finn Evers 918a1473dd extension_ci: Merge extension workflow files into one file (#48810)
This PR consolidates the two workflow files shipped to extensions into
one, which stops us from requiring a separate runner for what can
actually be done in one workflow.

It also
- adds a check that version bumps will now only be created by zed-zippy
in separate commits.
- Makes the bumping of versions faster and more reliable.
- (Hopefully) fixes an issue we were seeing in some CI tests.

Release Notes:

- N/A
2026-02-09 21:18:53 +01:00
Conashimi a81f692e9c gpui: Allow OS caption/buttons for custom Windows titlebar (#48330)
## Summary
Fixes an issue where GPUI's handling of `WM_NCLBUTTONDOWN` prevented
Windows from processing default titlebar interactions (dragging, caption
buttons, and border resize).

## Changes
- Allow OS to handle `WM_NCLBUTTONDOWN` events for `HTCAPTION`, caption
button areas, and resize border areas (`HTLEFT`, `HTRIGHT`, `HTTOP`,
`HTBOTTOM`, `HTTOPLEFT`, `HTTOPRIGHT`, `HTBOTTOMLEFT`, `HTBOTTOMRIGHT`)
- Use current cursor position in `WM_NCHITTEST` for accurate hit-testing

## Testing
- Manual testing on Windows: titlebar dragging works
- Manual testing on Windows: minimize/maximize/close buttons work
- Manual testing on Windows: window border resize works in all
directions

Release Notes:
- N/A
2026-02-09 15:04:12 -05:00
Xiaobo Liu 99abc058c3 visual_tests: Init agent UI globals in runner (#48076)
Closes https://github.com/zed-industries/zed/issues/48049

Release Notes:

- Fixed init agent UI globals in visual test runner

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2026-02-09 19:28:58 +00:00
Kyle Kelley 517d707ce8 repl: Pluck project off editor directly (#48808)
Clean up code by pulling the project off the editor directly.

Repeat of https://github.com/zed-industries/zed/pull/48762 since
reversion happened in https://github.com/zed-industries/zed/pull/48776.

Release Notes:

- N/A
2026-02-09 20:18:33 +01:00
Kyle Kelley 4ebf553d16 repl: Pluck project off editor directly (#48808)
Clean up code by pulling the project off the editor directly.

Repeat of https://github.com/zed-industries/zed/pull/48762 since
reversion happened in https://github.com/zed-industries/zed/pull/48776.

Release Notes:

- N/A
2026-02-09 20:18:24 +01:00
Cole Miller 95e3aeb952 git: Fix panic when folding ranges (#48809)
Restore a call to `BlockMap::read` that went missing in #48747 

Release Notes:

- N/A
2026-02-09 13:39:48 -05:00
Oliver Azevedo Barnes 9d40c471a0 devcontainer: Fix project search returning no results on single-CPU containers (#48798)
Closes #47489

The search worker pool was sized as `num_cpus - 1`, which spawned zero
workers when a devcontainer exposed only 1 CPU. All search channels
closed immediately and the search yielded zero results, while file
finder and LSP symbols worked fine.

The fix ensures at least 1 worker is always spawned: `(num_cpus -
1).max(1)`. A `num_cpus` override on `TestDispatcher` and a new test
reproduce the bug with `server_cx.executor().set_num_cpus(1)`.

## Manual testing

Add a `.devcontainer/` directory to a new project with these files:

```
// docker-compose.yml
services:
  dev:
    image: debian:bookworm-slim
    cpuset: "0"
    volumes:
      - ..:/workspace:cached
    command: sleep infinity
```

```
// devcontainer.json
{
  "name": "zed-sandbox (1 CPU)",
  "dockerComposeFile": "docker-compose.yml",
  "service": "dev",
  "workspaceFolder": "/workspace"
}
```

Build zed and point it at the new project:

```
cargo run -p zed -- ~/Repos/zed-sandbox-project
```

Open the built-in terminal, confirm `nproc` prints `1`.

Finally, run a project search (`Cmd+Shift+F`) and search for contents
that exist in it.

Results should appear 🎉 

Release Notes:

- Fixed project search returning no results in devcontainers with a
single visible CPU.
2026-02-09 18:53:31 +01:00
Dino 6a8104ddc7 git_ui: Dismiss modal when viewing stash (#48491)
Ensure that `git_ui::stash_picker::StashList.handle_show_toast` emits a
`DismissEvent` so that, when the user confirms they wish to view a stash
entry, the modal is actually dismissed and does not block the user's
view.

Release Notes:

- Fixed issue where viewing a stash entry would not dismiss the modal
2026-02-09 16:35:56 +00:00
Oleksiy Syvokon f88fa4ae01 ep: Compress EP requests (#48793)
Benchmark results on 3,000 captured requests:

| Scenario          | Mean   | Savings | p95    | Savings |
|:------------------|-------:|--------:|-------:|--------:|
| Uncompressed      | 12,275 |       — | 35,896 |       — |
| zstd (no dict)    |  2,784 |  77.3%  |  7,193 |  80.0%  |
| zstd + global dict|  2,544 |  79.3%  |  6,862 |  80.9%  |
| brotli (no dict)  |  2,650 |  78.4%  |  6,857 |  80.9%  |

A trained zstd dictionary adds only 2% over plain zstd, which is not
worth added complexity.

Brotli compresses comparably but is 4 times slower.

Release Notes:

- N/A
2026-02-09 18:02:56 +02:00
Cole Miller 1e38444119 git: Fix a panic in spacer_blocks (#48753)
Closes ZED-4X5

Release Notes:

- N/A *or* Added/Fixed/Improved ...
2026-02-09 10:34:55 -05:00
Finn Evers e2d5c71e09 Revert "New multi workspace (#47795)" (#48776)
Preparing this just in case.

Release Notes:

- N/A
2026-02-09 15:37:16 +01:00
André ErikssonandSmit Barmase bc2490773b project_panel: Improve file/folder creation behavior in folded paths (#46750)
Closes #45550  

This fix, adds a new field to `EditState` to track and temporarily
unfold the given directory when creating files or directories in
collapsed paths.

Release Notes:

- Fixed the file and folder creation input appearing in the wrong
location when creating inside a collapsed folder path..

Recording:


https://github.com/user-attachments/assets/15e48863-26b9-4dc9-888a-b31fb3208d98

---------

Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com>
2026-02-09 19:44:40 +05:30
Kunall Banerjee 5bfeff2478 agent_ui: Insert images at cursor position (#48779)
With #47768, all image pills automatically got snapped to the end of the
prompt message. This behavior is unexpected as other pills (`@symbol`,
`@thread` et al) respect the cursor position.

Closes #48731.

- [ ] Tests or screenshots needed?
- [x] Code Reviewed
- [x] Manual QA

Release Notes:

- Insert images at cursor position in the Agent Panel
2026-02-09 09:10:24 -05:00
Richard Feldman eb547089c5 Add format-on-save support to streaming edit file tool (#48663)
When saving after a streaming edit, check if format-on-save is enabled
for the buffer's language and run formatting before saving.

(No release notes because we aren't using the streaming edit tool yet.)

Release Notes:

- N/A
2026-02-09 08:57:26 -05:00
Richard Feldman fae1f46943 Extract shell_command_parser into shared crate (#48660)
Move shell command parsing logic (`extract_commands` and supporting
code) from the agent crate into a new `shell_command_parser` crate so it
can be reused by `agent_servers` for ACP permission checking.

Release Notes:

- N/A
2026-02-09 08:56:21 -05:00
Danilo Leal 44cd78794a agent_ui: Refine thinking effort selector (#48790)
This PR adds some design refinements to the thinking effort selector (to
be generally rolled out soon):
- Improved split button UI styles and consistency with other dropdowns
in the message editor
- Stopped rendering the effort selector if thinking is turned off
- Added a keybinding to trigger the effort menu
- Added a keybinding to cycle through effort options

<img width="500" height="380" alt="Screenshot 2026-02-09 at 10  18@2x"
src="https://github.com/user-attachments/assets/48d5b65c-7256-4ceb-aab2-35869f8fbf4a"
/>

---

- [x] Code Reviewed
- [x] Manual QA

Release Notes:

- N/A
2026-02-09 10:42:07 -03:00
Brad Fullwood 93d6adb7cc extension_host: Add DAP methods dispatch for v0.8.0 (#48777)
## Summary

When the v0.8.0 extension API was forked in #44025, the five DAP
dispatcher methods in `wit.rs` were not updated to handle
`Extension::V0_8_0`. Because `V0_8_0` is listed before `V0_6_0` in the
enum, the wildcard `_ =>` catch-all fires first, causing all DAP calls
to bail with `"not available prior to v0.6.0"` for any extension
targeting the v0.8.0 API.

The DAP WIT interface is identical between v0.6.0 and v0.8.0, so the
handler code is the same — this just adds the missing match arms for:

- `call_get_dap_binary`
- `call_dap_request_kind`
- `call_dap_config_to_scenario`
- `call_dap_locator_create_scenario`
- `call_run_dap_locator`

This follows the same pattern used by every other method in the
`Extension` impl block, which already handles both `V0_8_0` and
`V0_6_0`.

## Test plan

- Verified that an extension targeting `zed_extension_api` v0.8.0 with
DAP support can successfully start a debug session (previously failed
with `"dap_request_kind not available prior to v0.6.0"`)

Release Notes:

- Fixed DAP (Debug Adapter Protocol) methods failing for extensions
targeting the v0.8.0 extension API.
2026-02-09 11:55:00 +00:00
Finn Evers b9b3cd31fd Fix cargo package metadata (#48778)
Follow-up to
https://github.com/zed-industries/zed/pull/48525/changes#diff-315ed179e69e42c0a098166a7faa7899838376c2649c84fa8cb66643f3813a45
which changed this

Release Notes:

- N/A
2026-02-09 11:46:35 +00:00
Albab HasanandMrSubidubi 0134b95948 agent: Remove duplicate line_hint assignment in StreamingFuzzyMatcher::push (#48317)
Release Notes:

- N/A

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-02-09 11:44:36 +00:00
Finn Evers b3437d6968 title_bar: Fix ToggleProjects panic (#48775)
Another follow-up to the multi workspace PR

- [X] Code Reviewed
- [X] Manual QA

Release Notes:

- N/A
2026-02-09 11:03:57 +00:00
Finn Evers 2ca0390931 agent_ui: Fix panic when resizing panel (#48772)
- [X] Code Reviewed
- [X] Manual QA

Release Notes:

- N/A
2026-02-09 10:36:11 +00:00
Finn Evers 08482e2335 Ensure proper workspace is used for various actions (#48767)
The multi workspace refactor **completely** broke the Vim mode, saving
is not possible, and various other actions. This PR fixes this

- [X] Code Reviewed
- [X] Manual QA

Release Notes:

- N/A
2026-02-09 10:33:36 +00:00
Shardul VaidyaandOna 022caa0d56 bedrock: Add Claude Opus 4.6 (#48525)
Release Notes:

- Added Claude Opus 4.6 and 4.6 Thinking with Cross region inference for
US, EU, and Global endpoints.

---------

Co-authored-by: Ona <no-reply@ona.com>
2026-02-09 09:19:51 +00:00
Kyle Kelley ad24dfd729 repl: Pluck project off of editor directly (#48762)
The new multi workspace introduced in #47795 changed the window root
from `Workspace` to `MultiWorkspace`, which broke
`Workspace::for_window()` (assuming that was meant to). That returns
`None` now. The REPL action registration in `repl_sessions_ui.rs` used
this to check if the project was local, so when it got None, it silently
skipped registering `repl::Run` and `repl::RunInPlace` on every editor.

Luckily we can just get the project directly from the editor in order to
register actions.

Release Notes:

- N/A
2026-02-09 10:03:37 +01:00
José DuarteandFinn Evers e913b0e61f docs: Add theme ID suffix recommendation (#48679)
Added note about suffixing theme IDs with '-theme' for clarity.

As discussed in
https://github.com/zed-industries/extensions/pull/4693#pullrequestreview-3751636461

- [ ] ~Tests or screenshots needed?~
- [x] Code Reviewed
- [ ] ~Manual QA~

Release Notes:

- Clarified theme ID suffixing in extension docs

---------

Co-authored-by: Finn Evers <finn.evers@outlook.de>
2026-02-09 08:35:13 +00:00
5b79f60ead New multi workspace (#47795)
It's happeningggggg

Release Notes:

- Changed the Agent Panel so that the Active Thread is restored on
restart.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: Richard Feldman <richard@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
2026-02-08 17:46:51 -08:00
Cole Miller 11acd9602d git: Follow-up fixes for custom blocks in the side-by-side diff (#48747)
- Ensure that both sides are passed the appropriate companion data to
preserve spacers when syncing
- Remove companion handling in codepaths related to range folding, since
this isn't supported in the side-by-side diff
- Move handling of buffer folding into the block map
- Rework `set_companion` to handle both `DisplayMap`s at once
- DRY some code around block map syncing in the `DisplayMap`

TODO:

- [x] diagnose and fix issue that causes balancing blocks not to render
properly when they are adjacent to spacers (e.g. merge conflict buttons)
- [x] clear balancing blocks when clearing companion
- [x] additional tests: interaction between spacers and balancing
blocks, resizing

Release Notes:

- N/A
2026-02-08 20:10:52 -05:00
Oliver Azevedo BarnesandMrSubidubi 4f18380a51 agent: Fix disabled MCP servers disappearing from UI after restart (#47758)
Closes #42888

Release Notes:

- Fixed disabled MCP servers disappearing from UI after restart

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-02-09 00:56:20 +01:00
renovate[bot] 5418182116 Update Rust crate git2 to v0.20.4 [SECURITY] (#48400)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [git2](https://redirect.github.com/rust-lang/git2-rs) |
workspace.dependencies | patch | `0.20.2` → `0.20.4` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

### GitHub Vulnerability Alerts

####
[GHSA-j39j-6gw9-jw6h](https://redirect.github.com/rust-lang/git2-rs/issues/1211)

If the Buf struct is dereferenced immediately after calling new() or
default() on the Buf struct, a null pointer is passed to the unsafe
function slice::from_raw_parts. According to the safety section
documentation of the function, data must be non-null and aligned even
for zero-length slices or slices of ZSTs. Thus, passing a null pointer
will lead to undefined behavior.

---

### Release Notes

<details>
<summary>rust-lang/git2-rs (git2)</summary>

###
[`v0.20.4`](https://redirect.github.com/rust-lang/git2-rs/compare/git2-0.20.3...git2-0.20.4)

[Compare
Source](https://redirect.github.com/rust-lang/git2-rs/compare/git2-0.20.3...git2-0.20.4)

###
[`v0.20.3`](https://redirect.github.com/rust-lang/git2-rs/compare/git2-0.20.2...git2-0.20.3)

[Compare
Source](https://redirect.github.com/rust-lang/git2-rs/compare/git2-0.20.2...git2-0.20.3)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" in timezone America/New_York,
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

Release Notes:

- N/A

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-08 23:50:13 +00:00
renovate[bot] f91b910b88 Update Rust crate time to v0.3.47 [SECURITY] (#48514)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [time](https://time-rs.github.io)
([source](https://redirect.github.com/time-rs/time)) |
workspace.dependencies | patch | `0.3.44` → `0.3.47` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

### GitHub Vulnerability Alerts

####
[CVE-2026-25727](https://redirect.github.com/time-rs/time/security/advisories/GHSA-r6v5-fh4h-64xc)

### Impact

When user-provided input is provided to any type that parses with the
RFC 2822 format, a Denial of Service attack via stack exhaustion is
possible. The attack relies on formally deprecated and rarely-used
features that are part of the RFC 2822 format used in a malicious
manner. Ordinary, non-malicious input will never encounter this
scenario.

### Patches

A limit to the depth of recursion was added in v0.3.47. From this
version, an error will be returned rather than exhausting the stack.

### Workarounds

Limiting the length of user input is the simplest way to avoid stack
exhaustion, as the amount of the stack consumed would be at most a
factor of the length of the input.

---

### Release Notes

<details>
<summary>time-rs/time (time)</summary>

###
[`v0.3.47`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0347-2026-02-05)

[Compare
Source](https://redirect.github.com/time-rs/time/compare/v0.3.46...v0.3.47)

##### Security

- The possibility of a stack exhaustion denial of service attack when
parsing RFC 2822 has been
eliminated. Previously, it was possible to craft input that would cause
unbounded recursion. Now,
the depth of the recursion is tracked, causing an error to be returned
if it exceeds a reasonable
  limit.

This attack vector requires parsing user-provided input, with any type,
using the RFC 2822 format.

##### Compatibility

- Attempting to format a value with a well-known format (i.e. RFC 3339,
RFC 2822, or ISO 8601) will
error at compile time if the type being formatted does not provide
sufficient information. This
would previously fail at runtime. Similarly, attempting to format a
value with ISO 8601 that is
only configured for parsing (i.e. `Iso8601::PARSING`) will error at
compile time.

##### Added

- Builder methods for format description modifiers, eliminating the need
for verbose initialization
  when done manually.
- `date!(2026-W01-2)` is now supported. Previously, a space was required
between `W` and `01`.
- `[end]` now has a `trailing_input` modifier which can either be
`prohibit` (the default) or
`discard`. When it is `discard`, all remaining input is ignored. Note
that if there are components
after `[end]`, they will still attempt to be parsed, likely resulting in
an error.

##### Changed

- More performance gains when parsing.

##### Fixed

- If manually formatting a value, the number of bytes written was one
short for some components.
This has been fixed such that the number of bytes written is always
correct.
- The possibility of integer overflow when parsing an owned format
description has been effectively
eliminated. This would previously wrap when overflow checks were
disabled. Instead of storing the
depth as `u8`, it is stored as `u32`. This would require multiple
gigabytes of nested input to
overflow, at which point we've got other problems and trivial
mitigations are available by
  downstream users.

###
[`v0.3.46`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0346-2026-01-23)

[Compare
Source](https://redirect.github.com/time-rs/time/compare/v0.3.45...v0.3.46)

##### Added

- All possible panics are now documented for the relevant methods.
- The need to use `#[serde(default)]` when using custom `serde` formats
is documented. This applies
  only when deserializing an `Option<T>`.
- `Duration::nanoseconds_i128` has been made public, mirroring
  `std::time::Duration::from_nanos_u128`.
- Various methods for truncating components have been added, avoiding
the need to call the fallible
  `replace` methods multiple times.

  For `PrimitiveDateTime`, `UtcDateTime`, and `OffsetDateTime`:

  - `truncate_to_day`

  For `Time`, `PrimitiveDateTime`, `UtcDateTime`, and `OffsetDateTime`:

  - `truncate_to_hour`
  - `truncate_to_minute`
  - `truncate_to_second`
  - `truncate_to_millisecond`
  - `truncate_to_microsecond`

##### Changed

- The minimum supported Rust version is now 1.88.0.
- Significant performance gains in numerous locations. No public APIs
were changed or removed as
  part of this.
- The size of `error::ComponentRange`, along with types that contain it,
has been significantly
  reduced.

##### Fixed

- The `PartialOrd` and `Ord` implementations of `UtcOffset` now return
the expected result.

###
[`v0.3.45`](https://redirect.github.com/time-rs/time/blob/HEAD/CHANGELOG.md#0345-2026-01-13)

[Compare
Source](https://redirect.github.com/time-rs/time/compare/v0.3.44...v0.3.45)

##### Added

- `time::format_description::StaticFormatDescription` type alias for
`&'static [BorrowedFormatItem<'static>]`. This is the type returned by
the
  `time::macros::format_description!` macro.

##### Changed

- The minimum supported Rust version is now 1.83.0.
- All floating point methods on `Duration` are now `const fn`.
- All setters on `Parsed` are now `const fn`.
- The `serde` dependency has been replaced with `serde_core`, This
reduces compile times by not
  including unused parts of `serde`.
- `Date::from_julian_day` uses a new algorithm, resulting in an
approximately 16% performance
  improvement. This method is used internally by numerous other methods.
- `util::is_leap_year` uses a new algorithm, resulting in an
approximately 8% performance
  improvement.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" in timezone America/New_York,
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

Release Notes:

- N/A

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45NS4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-08 23:49:52 +00:00
Albab HasanandMrSubidubi f46fbd298a gpui: Reset external_files_dragged after successful drag-drop on macOS (#48727)
after a successful file drag-drop, conclude_drag_operation did not reset
external_files_dragged to false. since dragging_exited (the only place
that resets this flag) is never called for successful drops (only for
cancelled ones), the flag stayed true permanently. this caused synthetic
drags (used for text selection during buffer scrolling) to be suppressed
for the lifetime of the window.

Release Notes:

- N/A

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
2026-02-08 22:53:21 +00:00
Marco Mihai Condrache 53ea81343e language: Return early if no grammars are added (#48685)
Helps #48601

Whenever an extension is installed, we call `register_grammars` even
when the grammar list is empty. This unnecessarily increments
reload_count and notifies the LSP store, which clears all languages and
triggers a full reparse.

Clearing languages also emits `LanguageChanged` events for buffers,
causing the editor to perform expensive recomputations (like
https://github.com/zed-industries/zed/pull/48622) which can block the
main thread for large multibuffers.

This PR addresses the empty-grammar case. If an extension actually adds
a grammar, the underlying issue still exists and will require additional
fixes to fully resolve.

- [ ] Tests or screenshots needed?
- [x] Code Reviewed
- [ ] Manual QA

Release Notes:

- Fixed an issue where installing theme extensions could block the main
thread
2026-02-08 17:54:01 +00:00
Kirill Bulatov 8f3d066c09 Properly handle multi-char folds (#48721)
Follow-up of https://github.com/zed-industries/zed/pull/48611

Release Notes:

- N/A
2026-02-08 08:56:22 +00:00