Skip to content

Re-register Linux watches for existing paths#47099

Closed
tisDDM wants to merge 64 commits intozed-industries:mainfrom
tisDDM:poc/linux-fswatcher-reregister
Closed

Re-register Linux watches for existing paths#47099
tisDDM wants to merge 64 commits intozed-industries:mainfrom
tisDDM:poc/linux-fswatcher-reregister

Conversation

@tisDDM
Copy link
Copy Markdown

@tisDDM tisDDM commented Jan 18, 2026

Summary

  • Re-register Linux watches when a path is already registered to recover from stale watcher state

Context

This PR demonstrates that the issue is tied to file watchers getting out of sync on some Linux installations. Re-registering the watch in add fixes the symptom on my system. The underlying root cause should still be addressed. Ref: #38109.

@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Jan 18, 2026
@zed-community-bot zed-community-bot bot added the first contribution the author's first pull request to Zed. NOTE: the label application is automated via github actions label Jan 18, 2026
@AdamJedl
Copy link
Copy Markdown
Contributor

I opened a pull request #46036 that fixes this same issue a different way. I don't know which way is better. The tests in my pull request also passed with these changes.

@tisDDM
Copy link
Copy Markdown
Author

tisDDM commented Jan 19, 2026

Sorry. Didn't notice your fix in the issue. I hope someone will push one of them forward.

JosephTLyons and others added 19 commits February 18, 2026 11:38
…locks" (zed-industries#49508) (cherry-pick to v0.225.x) (zed-industries#49511)

Reverts zed-industries#49478

Release Notes:

- N/A *or* Added/Fixed/Improved ...
zed-industries#49504) (cherry-pick to preview) (zed-industries#49528)

Cherry-pick of zed-industries#49504 to preview

----
…`esc` (zed-industries#48201)"

This reverts commit 174fc51.

Select toolchain path dialog immediately dismisses upon selecting a
path, preventing the addition of new toolchains

- OpenPathDelegate emits DismissEvents in the `confirm` function too
- when the selection is confirmed, DismissEvent is emitted
- ToolchainSelector calls cancel because it receives the DismissEvent,
and it goes to the Search State
- This prevents the selected toolchain from being resolved and the
ScopePicker being presented

cc: @JosephTLyons 

Release Notes:

- Fixed a regression where the toolchain path selector would immediately
dismiss upon selecting a path, preventing the addition of new
toolchains.

Co-authored-by: Kurian Jojo <67583328+polyesterswing@users.noreply.github.com>
… to preview) (zed-industries#49548)

Cherry-pick of zed-industries#49546 to preview

----
Release Notes:

- N/A

Co-authored-by: Cole Miller <cole@zed.dev>
…ed-industries#49563) (cherry-pick to preview) (zed-industries#49567)

Cherry-pick of zed-industries#49563 to preview

----
cc zed-industries#49290

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…ed-industries#49608) (cherry-pick to preview) (zed-industries#49612)

Cherry-pick of zed-industries#49608 to preview

----
For example, LSP log view is not a real editor but can pretend to be
one.

Release Notes:

- Fixed dev highlights view panicking when interacting with editor-like
not-editors

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
…zed-industries#49618) (cherry-pick to preview) (zed-industries#49626)

Cherry-pick of zed-industries#49618 to preview

----
Release Notes:

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

Co-authored by: Cole Miller <cole@zed.dev>

Co-authored-by: Lukas Wirth <lukas@zed.dev>
…to preview) (zed-industries#49635)

Cherry-pick of zed-industries#49622 to preview

----
Closes AI-48

Release Notes:

- Added support for Gemini 3.1 Pro

Co-authored-by: Richard Feldman <richard@zed.dev>
…k to preview) (zed-industries#49644)

Cherry-pick of zed-industries#49642 to preview

----
Release Notes:

- N/A

Co-authored-by: Cole Miller <cole@zed.dev>
…industries#49656) (cherry-pick to preview) (zed-industries#49657)

Cherry-pick of zed-industries#49656 to preview

----
This tackles another issue where we would incorrectly show two absolute
line numbers with relative line numbering enabled when it really should
only have been the current active line number.

Sadly, no tests rn for this as we would need a better test infra for
that to properly catch/test this bug. But with the refactored logic, I
think this is easier to understand at glance, so at least theres that

Release Notes:

- Fixed an issue with relative line numbers where some rows would be
missing their relative line number with deleted hunks showing.

Co-authored-by: Finn Evers <finn@zed.dev>
…49674) (cherry-pick to preview) (zed-industries#49677)

Cherry-pick of zed-industries#49674 to preview

----
Release Notes:

- N/A

Co-authored-by: Cole Miller <cole@zed.dev>
…ries#49694) (cherry-pick to preview) (zed-industries#49695)

Cherry-pick of zed-industries#49694 to preview

----
Fixes ZED-4VW

Release Notes:

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

Co-authored-by: Lukas Wirth <lukas@zed.dev>
When a buffer is folded in the split diff view and then removed from the
multibuffer (via `remove_excerpts_for_path`), the block map's
`folded_buffers` set retains a stale entry for that buffer ID. Later,
when the split view syncs folded state from the RHS display map to the
LHS, it tries to look up the companion mapping for this stale buffer and
fails because the companion no longer tracks a buffer that's been
removed from the multibuffer.

This originally caused a panic via `.expect()`. This PR:

1. Converts the panic into graceful handling by skipping unmapped
buffers.
2. Actively removes stale entries from `folded_buffers` so they don't
persist as ghost state — ensuring that if the same buffer is later
re-added, it won't incorrectly appear as folded.
3. Adds a regression test covering the full lifecycle: fold → remove →
split → re-add → assert both LHS and RHS report the buffer as not
folded.

Release Notes:

- Fixed a crash in split diff view when a folded buffer was removed and
re-added.
…es#49725) (cherry-pick to preview) (zed-industries#49729)

Cherry-pick of zed-industries#49725 to preview

----
When using the split view, if the project diff inserts excerpts for the
same buffer using two different `PathKey`s, we panic inside
`LhsEditor::update_path_excerpts_from_rhs` because of an implicit
assumption that `excerpts_for_path()` and `excerpts_for_buffer()` return
the same number of values. This PR addresses that by ignoring any
excerpts for the given buffer that have a different path key from the
provided one.

Release Notes:

- Fixed a crash when using the split diff view.

Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Co-authored-by: Eric <eric@zed.dev>

Co-authored-by: Cole Miller <cole@zed.dev>
Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
Co-authored-by: Eric <eric@zed.dev>
zed-zippy bot and others added 25 commits February 25, 2026 06:08
…0057) (cherry-pick to preview) (zed-industries#50059)

Cherry-pick of zed-industries#50057 to preview

----
Fixes ZED-597

Release Notes:

- Fixed a panic when the askpass dialogue opened while committing.

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
…res (zed-industries#50061) (cherry-pick to preview) (zed-industries#50062)

Cherry-pick of zed-industries#50061 to preview

----
Previously only `x86_64` Windows used ZIP archives, but ARM64 Windows
builds also use ZIP format.

Closes zed-industries#50039.

> [!NOTE]
> The P1 is two-fold: the user cannot download the ZIP file on Windows
ARM. BUT -- the Agent Panel is stalled because of that. This ONLY makes
it so that the ZIP download doesn’t fail, but if for some reason the
download fails, the panel is genuinely stuck with no recovery path.
Every restart attempts the same download, hits the same GZIP error, and
silently drops it again.

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:

- Broaden Windows asset detection to all architectures

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
…-industries#49834) (cherry-pick to preview) (zed-industries#49871)

Cherry-pick of zed-industries#49834 to preview

----
Closes zed-industries#49363

When an existing remote workspace's connection is dead (e.g. the server
died and reconnect failed, leaving the client in `ServerNotRunning`
state), `remote_connection()` returns `None`. Previously this caused an
error dialog, blocking reconnection — the user had to manually switch to
another project and back to recover.

Now the code falls through to establish a fresh connection instead,
matching the previous behavior where clicking "Reconnect" would just
work.

Release Notes:

- Fixed remote reconnect failing with an error when the server is not
running, now establishes a fresh connection instead.

Co-authored-by: Filipe Azevedo <filipe@azevedo.io>
…dustries#50063) (cherry-pick to preview) (zed-industries#50067)

Cherry-pick of zed-industries#50063 to preview

----
Following up from zed-industries#50061: when
connecting to an ACP adapter fails before any thread is active, errors
would not display in the Agent Panel. Falling back to
`handle_load_error` to show the error UI properly as it already handles
this.

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:

- Added fallback error handling for connect failures in the Agent Panel

Co-authored-by: Kunall Banerjee <hey@kimchiii.space>
…ustries#50106) (cherry-pick to preview) (zed-industries#50112)

Cherry-pick of zed-industries#50106 to preview

----
Closes ZED-59J

Release Notes:

- Fixed Zed panicking on invalid ranges in semantic token deltas

Co-authored-by: Kirill Bulatov <kirill@zed.dev>
…to stable) (zed-industries#50165)

Cherry-pick of zed-industries#50163 to stable

----
When `row_infos.is_empty()` (if you have very very tiny editors) we
could
end up trying to read the first item out of it.

Fixes ZED-5AT
Fixes ZED-54F
Fixes ZED-56N

Updates  zed-industries#49260

cc @Veykril

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:

- Fixed a panic rendering diff hunk headers in 0-height editors

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
…ouple of bugs (zed-industries#49907) (cherry-pick to stable) (zed-industries#50174)

Cherry-pick of zed-industries#49907 to stable

----
This PR adds a more rigorous test for the excerpt syncing logic in
`SplittableEditor`, in preparation for refactoring that code, since
we've had some bugs there.

The new test covers
- edits within the RHS multibuffer
- edits to the individual main buffers, not necessarily within the
excerpt bounds of the split diff
- excerpt expansion
- excerpt removal
- excerpt recalculation based on diff hunk ranges

Bugs fixed:
- incorrect edit merging logic in `patches_for_range`
- `merge_excerpts` leaving stale excerpt IDs in `excerpts_by_path`

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

Co-authored-by: Cole Miller <cole@zed.dev>
… (cherry-pick to stable) (zed-industries#50215)

Cherry-pick of zed-industries#50211 to stable

----
This could happen when you initiated a search on the left side, then
toggled into the unified view, then tried to select the next match.

Closes ZED-55G

Release Notes:

- Fixed a panic when toggling the split diff view while searching.

Co-authored-by: Cole Miller <cole@zed.dev>
…ng (zed-industries#50232) (cherry-pick to stable) (zed-industries#50233)

Cherry-pick of zed-industries#50232 to stable

----
Handles a panic found in telemetry - when there are no template matches
or feature matches, the picker delegate will panic due to an indexing
exception. This solves by:
1. Returning early if there are no matches, and
2. Performing safe vector `get` operations instead of slicing, so we can
handle a not-found scenario.




https://github.com/user-attachments/assets/ac76164d-63aa-4e2b-8555-d8e4f4dd2524



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 potential crash from initializing devcontainer.json

Co-authored-by: KyleBarton <kjb@initialcapacity.io>
…ame config IDs (zed-industries#50246) (cherry-pick to stable) (zed-industries#50252)

Cherry-pick of zed-industries#50246 to stable

----
## Problem
Zed's ACP config-options UI was only rebuilding selectors when the set
of config option IDs changed.

For many model switches, the IDs stay the same (`mode`, `model`,
`reasoning_effort`) while the valid values for `reasoning_effort` change
by model. As a result, the picker could show stale values (for example,
missing `xhigh` on `gpt-5.3-codex`, or showing extra `xhigh` after
switching away).

This is especially problematic for providers like Copilot that expose
multiple agents/models with different reasoning-level capabilities.

## Fix
Rebuild ACP config-option selectors on every `config_option_update`, not
only when config IDs change.

This refreshes cached picker entries whenever model-specific option
values change, even if option IDs are unchanged.

## User Impact
- Reasoning-effort picker now reflects the selected model immediately on
Claude <-> GPT transitions.
- Prevents stale or invalid effort choices in ACP sessions.

## Validation
- Manual validation: switch across models with different
reasoning-effort sets and confirm picker updates immediately.
- Local `cargo check -p agent_ui` remains blocked by unrelated
pre-existing `livekit-protocol` compile errors in this checkout.

## Files Changed
- `crates/agent_ui/src/acp/config_options.rs`

Release Notes:

- acp: Fix for config selectors not always being refreshed

---------

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>

Co-authored-by: Nikhil Pandey <nikhil@nikhil.com.np>
Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
…s#49499)

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:

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

---------

Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
…PI (zed-industries#49554)

Release Notes:

- Added the ability to use a self-hosted OpenAI-compatible server for
edit predictions.

---------

Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
…roviders (zed-industries#49678)

Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
…49698)

The `unreachable()` assumption at `queue_prediction_refresh` could be
violated by an async race condition:

1. `request_prediction_internal` spawns an async task
2. The task awaits a prediction request
3. If the prediction returns `None`, it calls `queue_prediction_refresh`
4. Between the time the prediction was initiated (when the provider was
an EP-store provider) and when the async callback runs, the user can
change their edit prediction provider setting to a non-EP-store provider
5. `queue_prediction_refresh` re-reads the settings and hits the
`unreachable!()

Release Notes:

- N/A
Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...
… region (zed-industries#49921)

This will not affect how Zeta 2 behaves in production until we update
Cloud to pull in the changes to the `zeta_prompt` crate. But from some
early testing, it seems to improve behavior, not worsen it, even though
the editable region size differs from the currently-deployed model's
training data.

Release Notes:

- N/A

---------

Co-authored-by: Oleksiy Syvokon <oleksiy.syvokon@gmail.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
…-industries#50029)

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:

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

Co-authored-by: Max <max@zed.dev>
…es#50041)

This allows us to enable zeta2 for certain end users without opting them
into the still-in-development jumps feature.

Release Notes:

- N/A
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:

- N/A *or* Added/Fixed/Improved ...
@tisDDM tisDDM force-pushed the poc/linux-fswatcher-reregister branch from 280c4cc to cdcb753 Compare February 27, 2026 09:34
@ConradIrwin
Copy link
Copy Markdown
Member

@tisDDM It looks like there's a lot of extra stuff in the git diff. What's the core of the change we need here?

@probably-neb
Copy link
Copy Markdown
Collaborator

We now have 4 PRs for this problem, yours, #46036, #47462, and #50412.

Because this PR has many unrelated changes, and the other PRs seem reasonable I'm going to close and merge one of the other PRs. Thanks for taking a crack at this!

@tisDDM
Copy link
Copy Markdown
Author

tisDDM commented Mar 3, 2026

@probably-neb @ConradIrwin Sorry for messing up this one. My automated merge catched too many files, that weren't intended.

This is the only relevant commit: cdcb753

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement first contribution the author's first pull request to Zed. NOTE: the label application is automated via github actions

Projects

None yet

Development

Successfully merging this pull request may close these issues.