# lsp: Scope logs and status updates to their projects \(\#61221\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/60bf47b9f2ffb425905c4a3feaca89be67f1d90e)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 60bf47b9f2ffb425905c4a3feaca89be67f1d90e

Requested commit: 60bf47b9f2ffb425905c4a3feaca89be67f1d90e

Commit: 60bf47b9f2ffb425905c4a3feaca89be67f1d90e

Tree: 5ef86ec439e15cc29d2d7ba217d7ee8333e2e62a

Author: Shuhei Kadowaki

Committer: GitHub

## Message

```
lsp: Scope logs and status updates to their projects (#61221)

The language registry and LSP log store are shared by every workspace in
a Zed process. The LSP Logs selector enumerated the shared log store
without filtering by project, while each activity indicator consumed
global binary status updates. This exposed servers from other windows as
"Unknown worktree" entries and surfaced their startup failures or
timeouts in unrelated status bars.

Key each logged server by its owning project or LSP store together with
its process-local language server ID. Use that identity consistently
when adding, removing, streaming, selecting, opening, and reselecting
log entries so local, remote, SSH, and supplementary servers cannot
collide across ownership domains.

Model Copilot and other servers outside the project LSP store as
project-scoped supplementary servers, while matching SSH servers by
their owning LSP store.

Tag project-originated binary status updates with the owning LSP store
entity ID. Carry that source through extension worktree delegates and
every worktree-based WASM language-server call, then let each local LSP
store forward only statuses for its project. Activity indicators rely
solely on their project LSP store, and remote projects continue to
receive host statuses through the existing protocol path instead of
subscribing to local registry events.

Own each binary-status subscription task in its local LSP store and
unregister its broadcaster sender when the store is dropped, so closing
windows cannot leave detached status tasks or stale senders behind.

Add regression coverage for duplicate process-local server IDs across
ownership domains, filtering remote, supplementary, and SSH servers from
other projects, retaining servers owned by the current project or LSP
store, preserving extension status sources, and unregistering dropped
status subscriptions.

Release Notes:

- Fixed language servers from other projects appearing in the LSP Logs
view and their statuses showing in unrelated windows' status bars
```

## Parents

- [9decdcc1f22d324b5d5b186a3da1418ec0ea4c37](https://git.cafe/gitcafe/zed/commit/9decdcc1f22d324b5d5b186a3da1418ec0ea4c37?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/60bf47b9f2ffb425905c4a3feaca89be67f1d90e?format=markdown)
