zed/crates
Joseph T. Lyons 6b28db5ef5
Add ability to auto watch screens (#54839)
This PR adds a feature to automatically cycle through screen shares
during calls, designed for demo days or any call that has a lot of
screen share use.

This is a preliminary attempt behind a feature flag so we can dogfood
and iterate, or toss it out.

There's a new toggle next to the active channel name in the collab
panel: **Auto Watch Screens**.


https://github.com/user-attachments/assets/ae6eccec-7921-4c1f-8921-c8093631c705

This video demonstrates some cases:

Basic auto-watch
- Toggle on → automatically opens the next screen share that starts
- When the watched screen share ends, switches to the next available
share

Queuing
- Someone starts sharing while another share is active → doesn't
interrupt the current share
- When the current share ends, the queued share is picked up
automatically

Paused while sharing
- Auto-watch pauses when you start sharing your own screen, so other
shares don't pop up during your presentation
- When you stop sharing, auto-watch resumes and opens the next available
share

Multiple watchers
- Multiple people can have auto-watch enabled independently — they all
see the same transitions

Note that we don't manage the screenshares, livekit does, so this change
is entirely on the client. I think that's mostly fine, but there is a
chance 2 separate clients queues up a different person as the next
watched peer if they both engage screenshare around the same time,
depending on how it hits the clients, but it seems pretty edge case. We
can move the implementation to collab, but it will be more of a project,
and adding a secondary source alongside of livekit that could get out of
sync and have its own issues.

UI/UX needs work (@danilo-leal for suggestions)

Self-Review Checklist:

- [X] I've reviewed my own diff for quality, security, and reliability
- [X] Unsafe blocks (if any) have justifying comments
- [X] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [X] Tests cover the new/changed behavior
- [X] Performance impact has been considered and is acceptable

Closes #ISSUE

Release Notes:

- N/A

---------

Co-authored-by: Yara 🏳️‍⚧️ <11743287+yara-blue@users.noreply.github.com>
2026-05-01 17:29:27 +00:00
..
acp_thread Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
acp_tools acp: Improve ACP debug view (#54769) 2026-04-24 15:53:14 +00:00
action_log action_log: Fix race condition when committing changes (#53884) 2026-04-16 12:54:17 +00:00
activity_indicator Fix spinner in activity indicator (#54977) 2026-04-27 08:33:40 +00:00
agent tools: Make time-zones more case-insensitive (#55288) 2026-04-30 09:15:36 +00:00
agent_servers acp: Improve ACP debug view (#54769) 2026-04-24 15:53:14 +00:00
agent_settings acp: Use new Rust SDK (#52997) 2026-04-22 15:02:57 +00:00
agent_ui Improve bare repo support (#55153) 2026-04-29 13:16:37 +00:00
ai_onboarding Simplify parallel agents onboarding (#53854) 2026-04-15 21:51:15 -03:00
anthropic agent: Allow tools to output multiple content parts (#54518) 2026-04-27 12:36:11 +00:00
askpass Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
assets
audio audio: Remove rodio audio backend (#51945) 2026-03-24 00:58:09 +01:00
auto_update auto_update: Improve Linux rsync hinting (#50637) 2026-03-18 21:31:20 -04:00
auto_update_helper Try to fix auto-updates when Explorer.exe holds Zed.exe (#50332) 2026-03-03 17:47:35 +01:00
auto_update_ui Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
aws_http_client
bedrock Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
breadcrumbs editor: Replace BreadcrumbText with HighlightedText (#51083) 2026-03-13 08:00:22 +00:00
buffer_diff action_log: Fix race condition when committing changes (#53884) 2026-04-16 12:54:17 +00:00
call Add ability to auto watch screens (#54839) 2026-05-01 17:29:27 +00:00
channel Add the ability to reorder favorited collab channels (#52649) 2026-03-30 13:07:13 +00:00
cli cli: Null stdio handles when spawning Zed on Windows (#52583) 2026-04-27 14:24:17 +00:00
client Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
clock text: Narrow insertion-relative offsets from usize to u32 (#49801) 2026-02-25 08:12:04 +01:00
cloud_api_client Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
cloud_api_types collab_ui: Disable Collab panel based on organization configuration (#53567) 2026-04-10 10:15:28 -04:00
cloud_llm_client ep: Fix moving cursor to a predicted position (#55079) 2026-04-28 15:44:17 +00:00
codestral language_model: Decouple from Zed-specific implementation details (#52913) 2026-04-02 17:06:57 -03:00
collab Add ability to auto watch screens (#54839) 2026-05-01 17:29:27 +00:00
collab_ui Add ability to auto watch screens (#54839) 2026-05-01 17:29:27 +00:00
collections Add VecMap::entry_ref (#52601) 2026-03-27 18:06:56 -07:00
command_palette command_palette: Fix showing keybinding in footer actions on zero matches (#54519) 2026-04-22 11:12:32 -06:00
command_palette_hooks
component
component_preview Simplify parallel agents onboarding (#53854) 2026-04-15 21:51:15 -03:00
context_server Support latest MCP protocol version (#54494) 2026-04-29 16:29:48 +00:00
copilot Update futures to 0.3.32 (#52910) 2026-04-05 23:05:35 +01:00
copilot_chat copilot: Wire up reasoning tokens for GPT models (#53313) 2026-04-20 14:33:18 +02:00
copilot_ui Strong app state (#52602) 2026-03-27 14:56:46 -07:00
crashes Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
credentials_provider language_model: Decouple from Zed-specific implementation details (#52913) 2026-04-02 17:06:57 -03:00
csv_preview Performance tweaks (#54321) 2026-04-21 07:25:22 +00:00
dap dap: Support IPv6 addresses in TCP transport (#52244) 2026-04-27 08:42:45 +00:00
dap_adapters Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
db Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
debug_adapter_extension
debugger_tools Fix cmd-e on macOS to behave more like it should (#54451) 2026-04-21 19:54:02 +00:00
debugger_ui Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
deepseek deepseek: Add deepseek-v4-pro & deepseek-v4-flash (#54731) 2026-04-27 13:50:00 +00:00
denoise Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
dev_container Trim nonalphanumeric chars before prefixing image tag name (#54578) 2026-04-23 07:36:36 +00:00
diagnostics Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
docs_preprocessor Staged docs releases (#50136) 2026-04-30 11:10:14 +00:00
edit_prediction Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
edit_prediction_cli Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
edit_prediction_context Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
edit_prediction_metrics ep: Change kept_rate definition to a more intuitive one (#54306) 2026-04-20 14:03:26 +03:00
edit_prediction_types edit_prediction: Disable training data collection based on organization configuration (#53639) 2026-04-10 13:27:04 -04:00
edit_prediction_ui ep: Remove old experimental provider (#55011) 2026-04-28 07:41:38 +00:00
editor git_ui: Add option to jump to project file from commit (#55088) 2026-04-29 12:07:39 +00:00
encoding_selector Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
env_var language_models: Refactor deps and extract cloud (#53270) 2026-04-07 12:28:19 -03:00
etw_tracing time_format: Add Windows implementation (#50227) 2026-02-28 21:47:30 -05:00
eval_cli acp: Use new Rust SDK (#52997) 2026-04-22 15:02:57 +00:00
eval_utils
explorer_command_injector explorer_command_injector: Avoid COM out-pointer overwrite in class factory exports (#49210) 2026-02-28 22:42:19 -05:00
extension extension_host: Fix Windows manifest paths when uploading extensions to WSL remote (#50653) 2026-04-21 17:32:54 -04:00
extension_api extension_api: Add IPv6 support in DAP extensions API (#54984) 2026-04-29 07:27:05 +00:00
extension_cli extension_host: Fix Windows manifest paths when uploading extensions to WSL remote (#50653) 2026-04-21 17:32:54 -04:00
extension_host extension_api: Add IPv6 support in DAP extensions API (#54984) 2026-04-29 07:27:05 +00:00
extensions_ui gpui: Improve Anchored to support center position (#47154) 2026-04-21 09:01:42 +00:00
feature_flags Add ability to auto watch screens (#54839) 2026-05-01 17:29:27 +00:00
feature_flags_macros Feature flag overrides (#54206) 2026-04-18 06:34:19 +00:00
feedback feedback: Add action for listing installed extensions (#48664) 2026-04-16 07:45:38 +00:00
file_finder Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
file_icons
fs git: Improve handling of unsafe repositories (#43693) 2026-04-24 17:14:24 +00:00
fs_benchmarks
fuzzy fuzzy: Fix crash with Unicode chars whose lowercase expands to multiple codepoints (#52989) 2026-04-03 11:00:13 +00:00
fuzzy_nucleo fuzzy_nucleo: Fix out of range panic (#54371) 2026-04-21 11:01:20 +02:00
git Add git log / history for folders and whole project (#52634) 2026-04-30 14:11:47 +00:00
git_graph Add git log / history for folders and whole project (#52634) 2026-04-30 14:11:47 +00:00
git_hosting_providers Fix GitHub bot avatar URL (#55297) 2026-04-30 14:17:32 +00:00
git_ui git: Remove potentially confusing words from worktree names (#55314) 2026-04-30 11:39:06 +00:00
go_to_line Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
google_ai agent: Allow tools to output multiple content parts (#54518) 2026-04-27 12:36:11 +00:00
gpui gpui: Add examples index (#55154) 2026-04-29 12:36:29 +00:00
gpui_linux Support BGR subpixel layout (#55174) 2026-04-29 12:26:19 +00:00
gpui_macos Fix cursor style changes across windows (#55323) 2026-04-30 14:19:27 +00:00
gpui_macros Query for window instead of capturing (#55059) 2026-04-28 08:04:42 +00:00
gpui_platform agent: Fix cargo test -p agent on windows (#52311) 2026-03-24 11:05:12 +00:00
gpui_shared_string gpui_shared_string: Implement SharedString via smol_str (#54649) 2026-04-24 08:58:26 +00:00
gpui_tokio gpui_tokio: Use shutdown_background to avoid WASI panic on exit (#53904) 2026-04-14 18:14:31 +02:00
gpui_util Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
gpui_web gpui_wgpu: Add surface lifecycle methods for mobile platforms (#50815) 2026-03-31 13:16:53 +00:00
gpui_wgpu Use embedded bitmaps in fonts on Linux (#55202) 2026-04-29 13:23:13 +00:00
gpui_windows Support BGR subpixel layout (#55174) 2026-04-29 12:26:19 +00:00
grammars Highlight nested JSX member expression tags (#53750) 2026-04-24 08:45:47 +00:00
html_to_markdown
http_client http_client: Fix GitHub download unpack failures on some filesystems (#53286) 2026-04-07 11:19:21 +05:30
http_client_tls
icons recent_projects: Add "open in new window" action to opened projects (#55168) 2026-04-29 11:38:03 +00:00
image_viewer gpui: Implement pinch event support for X11 and Windows (#51354) 2026-03-28 18:41:33 -04:00
input_latency_ui telemetry: Add latency metrics (#54454) 2026-04-22 22:22:10 +00:00
inspector_ui editor: Introduce Bookmarks (#54174) 2026-04-17 13:54:43 +02:00
install_cli
journal Implement worktree interactions for the sidebar (#51421) 2026-03-12 15:34:09 -07:00
json_schema_store Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
keymap_editor gpui_shared_string: Implement SharedString via smol_str (#54649) 2026-04-24 08:58:26 +00:00
language Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
language_core editor: Fix soft-wrap in auto-height editors (#54051) 2026-04-18 00:55:44 +02:00
language_extension language_core: Introduce fallback highlights (#52575) 2026-04-02 12:52:42 +00:00
language_model agent: Allow tools to output multiple content parts (#54518) 2026-04-27 12:36:11 +00:00
language_model_core Implement tool result conversion for anyhow errors (#55001) 2026-04-27 13:03:33 +00:00
language_models Remove v0 provider (#55177) 2026-04-29 10:06:41 +00:00
language_models_cloud Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
language_onboarding Remove some outdated comments (#52432) 2026-03-25 12:07:34 -06:00
language_selector Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
language_tools Fix cmd-e on macOS to behave more like it should (#54451) 2026-04-21 19:54:02 +00:00
languages Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
line_ending_selector Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
livekit_api
livekit_client Add ability to auto watch screens (#54839) 2026-05-01 17:29:27 +00:00
lmstudio ai: Add LMStudio API URL & API key support (#48309) 2026-03-06 16:49:55 +00:00
lsp lsp: Display readable gopls version in UI (#49835) 2026-03-17 08:36:37 +01:00
markdown agent_ui: Allow selection of commands from tool calls (#50545) 2026-04-24 13:54:28 +00:00
markdown_preview markdown_preview: Fix Ctrl+S saving checkbox toggle state (#53236) 2026-04-27 08:47:27 +00:00
media
menu
migrator ep: Remove old experimental provider (#55011) 2026-04-28 07:41:38 +00:00
miniprofiler_ui Disable miniprofiler by default (#54645) 2026-04-23 18:41:52 +00:00
mistral docs: Update mentions to "assistant panel" (#53514) 2026-04-09 10:42:21 -03:00
multi_buffer Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
nc
net
node_runtime acp: Use npm --prefix for registry npx agents (#53560) 2026-04-14 11:10:31 +00:00
notifications Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
ollama Prefer Ollama configured model context length over model architecture context length (#53543) 2026-04-15 02:21:56 -04:00
onboarding onboarding: Telemetry for new AI setup buttons (#55145) 2026-04-29 07:44:06 +00:00
open_ai agent: Allow tools to output multiple content parts (#54518) 2026-04-27 12:36:11 +00:00
open_path_prompt theme: Split out theme_settings crate (#52569) 2026-03-27 14:41:25 +01:00
open_router language_models: Refactor deps and extract cloud (#53270) 2026-04-07 12:28:19 -03:00
opencode opencode: Model updates + thinking levels (#54880) 2026-04-28 16:00:27 +00:00
outline Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
outline_panel Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
panel ui: Refactor the Button component icon methods (#51496) 2026-03-13 14:13:12 -03:00
paths Fix Node.js language servers failing with --user-data-dir on Windows (#50767) 2026-04-21 07:57:35 +02:00
picker recent_projects: Add "open in new window" action to opened projects (#55168) 2026-04-29 11:38:03 +00:00
platform_title_bar Remove Agent V2 feature flag (#52792) 2026-04-08 00:34:54 +00:00
prettier Fix FormatSelections to only format selected ranges, not entire document (#51593) 2026-03-31 12:48:22 +03:00
project Improve bare repo support (#55153) 2026-04-29 13:16:37 +00:00
project_benchmarks project_search: Fix project search status text and refactor search state (#54753) 2026-04-24 10:45:16 +00:00
project_panel Add git log / history for folders and whole project (#52634) 2026-04-30 14:11:47 +00:00
project_symbols Fix project symbol picker UTF-8 highlight panic (#53485) 2026-04-09 16:38:07 +00:00
prompt_store gpui_shared_string: Implement SharedString via smol_str (#54649) 2026-04-24 08:58:26 +00:00
proto Improve bare repo support (#55153) 2026-04-29 13:16:37 +00:00
recent_projects recent_projects: Add "open in new window" action to opened projects (#55168) 2026-04-29 11:38:03 +00:00
refineable
release_channel agent: Add ability to import threads from other channels (#54002) 2026-04-15 23:25:44 +00:00
remote remote: Reuse existing SSH ControlMaster sessions (#51604) 2026-04-21 07:44:24 +00:00
remote_connection agent: Fix find_or_create repository to support remote (#54074) 2026-04-16 16:36:09 -07:00
remote_server project_search: Fix project search status text and refactor search state (#54753) 2026-04-24 10:45:16 +00:00
repl editor: Add preserve scroll strategy for go to definition (#55036) 2026-04-29 07:29:15 +00:00
reqwest_client Remove unreferenced dev dependencies (#51093) 2026-03-09 13:22:12 +01:00
rope Swap arrayvec crate for heapless to use LenT optimization (#47101) 2026-03-21 14:05:30 +01:00
rpc agent_ui: Unify draft and background threads into retained threads (#53737) 2026-04-13 09:07:09 +00:00
rules_library language_models: Remove unused language model token counting (#54177) 2026-04-22 13:39:48 +00:00
scheduler Remove Executor::close() (#50970) 2026-03-07 04:11:45 +00:00
schema_generator theme: Split out theme_settings crate (#52569) 2026-03-27 14:41:25 +01:00
search project_search: Fix project search status text and refactor search state (#54753) 2026-04-24 10:45:16 +00:00
session Fix shared database test isolation (#51809) 2026-03-18 12:05:57 -07:00
settings Fix the test for non-dev test runs (#55089) 2026-04-28 14:55:26 +00:00
settings_content Remove v0 provider (#55177) 2026-04-29 10:06:41 +00:00
settings_json Remove some outdated comments (#52432) 2026-03-25 12:07:34 -06:00
settings_macros
settings_profile_selector Settings profile base option (#52456) 2026-04-02 00:44:53 +00:00
settings_ui settings_ui: Fix switching icon themes from "dynamic" to "static" always selecting the dark theme (#54647) 2026-04-27 09:32:43 +00:00
shell_command_parser Reject shell substitutions in terminal tool commands (#51689) 2026-03-16 23:49:34 -04:00
sidebar Improve bare repo support (#55153) 2026-04-29 13:16:37 +00:00
snippet
snippet_provider Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
snippets_ui
sqlez Remove smol as a dependency from a bunch of crates (#53603) 2026-04-24 10:29:51 +00:00
sqlez_macros
streaming_diff
sum_tree Swap arrayvec crate for heapless to use LenT optimization (#47101) 2026-03-21 14:05:30 +01:00
svg_preview gpui: Fix BGRA conversion for SVG rendering (#52641) 2026-03-29 14:43:05 +00:00
syntax_theme Extract syntax_theme crate (#52798) 2026-03-31 08:06:37 -06:00
system_specs
tab_switcher fuzzy_nucleo: Add strings module and route several pickers through it (#54123) 2026-04-20 14:41:29 +02:00
task dap: Support IPv6 addresses in TCP transport (#52244) 2026-04-27 08:42:45 +00:00
tasks_ui tasks_ui: Fix previously used task tooltip (#53104) 2026-04-07 06:14:00 +00:00
telemetry
telemetry_events
terminal terminal: Reduce flicker on resize (#47195) 2026-04-27 07:13:44 +00:00
terminal_view terminal: Fix 8 bit colors (#54565) 2026-04-30 14:01:32 +00:00
text Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
theme Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
theme_extension theme: Split out theme_settings crate (#52569) 2026-03-27 14:41:25 +01:00
theme_importer theme: Split out theme_settings crate (#52569) 2026-03-27 14:41:25 +01:00
theme_selector Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
theme_settings Fix bad GitHub merge queue merge (#54721) 2026-04-23 23:47:30 +00:00
time_format time_format: Add Windows implementation (#50227) 2026-02-28 21:47:30 -05:00
title_bar title_bar: Display subfolders in the project button (#54796) 2026-04-30 16:11:06 +00:00
toolchain_selector Require multibuffer excerpts to be ordered and nonoverlapping (#52364) 2026-04-01 17:25:32 +00:00
ui terminal_view: Ensure reported size does not change once content becomes scrollable (#46648) 2026-04-27 22:06:01 +00:00
ui_input agent_ui: Mask API key input in Add LLM provider modal (#50379) 2026-03-13 19:37:18 -03:00
ui_macros ui: Make UI independent from settings crate (#52578) 2026-03-27 15:31:49 +00:00
ui_prompt theme: Split out theme_settings crate (#52569) 2026-03-27 14:41:25 +01:00
util Accept shell environment after non-zero shell exit (#55175) 2026-04-29 11:56:56 +00:00
util_macros
vim Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
vim_mode_setting workspace: Only suppress auto-save on focus transfer for the Vim/Helix command palette (#51949) 2026-03-19 12:53:26 -04:00
watch Remove unreferenced dev dependencies (#51093) 2026-03-09 13:22:12 +01:00
web_search
web_search_providers language_models: Refactor deps and extract cloud (#53270) 2026-04-07 12:28:19 -03:00
which_key theme: Split out theme_settings crate (#52569) 2026-03-27 14:41:25 +01:00
workspace Add ability to auto watch screens (#54839) 2026-05-01 17:29:27 +00:00
worktree Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
worktree_benchmarks
x_ai language_models: Remove unused language model token counting (#54177) 2026-04-22 13:39:48 +00:00
zed Revert "Enable Vim/Helix keybindings when the base keymap is set to None" (#55144) 2026-04-29 07:33:12 +00:00
zed_actions Fix cmd-e on macOS to behave more like it should (#54451) 2026-04-21 19:54:02 +00:00
zed_credentials_provider language_model: Decouple from Zed-specific implementation details (#52913) 2026-04-02 17:06:57 -03:00
zed_env_vars language_model: Decouple from Zed-specific implementation details (#52913) 2026-04-02 17:06:57 -03:00
zeta_prompt Rust 1.95 (#55104) 2026-04-29 10:27:47 +00:00
zlog zlog: Fix log file rotation never truncating original file (#50571) 2026-03-03 08:37:58 +00:00
zlog_settings
ztracing
ztracing_macro