zed/crates
Neel eb354c8d50
gpui: Make the Wayland render loop demand-driven (#60690)
Closes #55345.

Wayland is the only platform whose frame ticks are conditional: a
wl_surface frame callback only arrives after a commit the compositor
goes on to repaint.

GPUI assumed unconditional ticks (any previously our Wayland backend
faked them), so an idle fullscreen window
stopped receiving callbacks and froze until external damage arrived.

This PR makes the Wayland render loop demand-driven, instead parking
when there's nothing to draw, and stops Zed committing empty frames on
every tick as the artificial heartbeat from the compositor.

---

Release Notes:

- Fixed the UI freezing in fullscreen on some Wayland compositors
- Fixed idle windows waking at the display's refresh rate on Wayland

---------

Co-authored-by: Philipp Schaffrath <philipp.schaffrath@gmail.com>
Co-authored-by: Daan De Meyer <daan@amutable.com>
Co-authored-by: Christopher Biscardi <chris@christopherbiscardi.com>
2026-08-21 09:43:16 +00:00
..
acp_thread Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
acp_tools Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
action_log git: Add diff_base setting for showing changes since the default branch (#61501) 2026-07-31 19:57:13 +00:00
activity_indicator Make file scanner less eager in non-git-tracked directory trees (#62583) 2026-08-13 17:07:06 +00:00
agent Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
agent_servers Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
agent_settings Fix the git_gutter_width setting (#62704) 2026-08-18 12:40:18 +00:00
agent_skills
agent_ui agent_ui: Fix inline assistant when reasoning precedes tool use (#61220) 2026-08-20 11:48:31 +00:00
ai_onboarding Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
anthropic anthropic: Handle additional API error codes (#62984) 2026-08-21 05:38:56 +00:00
askpass Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
assets
audio Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
auto_update Preserve --user-data-dir across restarts (#62022) 2026-08-19 14:32:19 +00:00
auto_update_helper Preserve --user-data-dir across restarts (#62022) 2026-08-19 14:32:19 +00:00
auto_update_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
aws_http_client
bedrock Fix Bedrock effort and regional routing (#61597) 2026-07-27 15:59:19 +00:00
benchmarks Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
breadcrumbs
buffer_diff Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
call Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
channel Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
cli cli: Fix Flatpak launcher argument ordering (#61577) 2026-08-20 16:37:31 +00:00
client Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
clock
cloud_api_client cloud_api_client: Move spawn native websocket to the background (#62874) 2026-08-19 14:07:46 +00:00
cloud_api_types extensions_ui: Move logic to render extension card details into ExtensionCard component (#61850) 2026-07-30 14:55:00 +00:00
cloud_llm_client cloud_llm_client: Add Baseten language model provider (#62950) 2026-08-20 17:53:44 +00:00
codestral Add configurable inline completion debounce timeout (#61568) 2026-08-20 16:42:42 +00:00
collab Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
collab_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
collections
command_palette Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
command_palette_hooks
component
component_preview Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
context_server Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
copilot Add configurable inline completion debounce timeout (#61568) 2026-08-20 16:42:42 +00:00
copilot_chat copilot_chat: Remove dependency on zed_credentials_provider (#62208) 2026-08-05 13:42:28 +00:00
copilot_ui copilot: Use separate authentication paths for edit prediction and chat (#60535) 2026-07-30 10:34:16 +00:00
crashes
credentials_provider Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
dap Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
dap_adapters Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
db
debug_adapter_extension
debugger_tools
debugger_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
deepseek deepseek: Support low reasoning effort for V4 models (#62577) 2026-08-14 09:38:52 +00:00
dev_container Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
diagnostics Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
docs_preprocessor Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
edit_prediction Add configurable inline completion debounce timeout (#61568) 2026-08-20 16:42:42 +00:00
edit_prediction_cli Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
edit_prediction_context Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
edit_prediction_metrics Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
edit_prediction_types Add configurable inline completion debounce timeout (#61568) 2026-08-20 16:42:42 +00:00
edit_prediction_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
editor Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
editor_benchmarks
encoding_selector
env_var
etw_tracing
eval_cli Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
eval_utils Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
explorer_command_injector explorer_command_injector: Fix localized Windows context menu title (#60634) 2026-08-19 16:51:32 +00:00
extension Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
extension_api Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
extension_cli Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
extension_host Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
extensions_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
feature_flags Remove project panel undo and redo feature flag (#62124) 2026-08-04 15:35:05 +00:00
feature_flags_macros
feedback
file_finder workspace: Persist recent navigation history across sessions (#55034) 2026-08-20 11:27:03 +00:00
file_icons Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
fs Deduplicate worktree entries from LSP paths with mismatched casing (#61392) 2026-08-20 11:19:14 +00:00
fs_benchmarks
fuzzy fuzzy: Remove util dependency (#61933) 2026-07-30 13:24:19 +00:00
fuzzy_nucleo fuzzy_nucleo: Remove util dependency (#61929) 2026-07-30 12:59:16 +00:00
git Added Tracked , Staged options to stash (#62254) 2026-08-18 05:36:16 +00:00
git_hosting_providers Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
git_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
git_ui_core Render control characters in tab titles and project panel entries (#62875) 2026-08-19 21:10:56 +00:00
go_to_line Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
google_ai google_ai: Add Gemini 3.7 Flash (#62670) 2026-08-17 08:28:00 +00:00
gpui gpui: Make the Wayland render loop demand-driven (#60690) 2026-08-21 09:43:16 +00:00
gpui_apple Extract shared Apple renderer from gpui_macos (#62649) 2026-08-14 19:53:25 +00:00
gpui_linux gpui: Make the Wayland render loop demand-driven (#60690) 2026-08-21 09:43:16 +00:00
gpui_macos gpui_macos: Fix fullscreen behavior on non-macOS and after restart (#62819) 2026-08-19 14:46:01 +00:00
gpui_macros
gpui_platform gpui: Webgl backend (#62165) 2026-08-04 15:53:09 +00:00
gpui_shared_string Properly measure invisible character replacement (#62478) 2026-08-14 09:35:59 +00:00
gpui_tokio
gpui_util gpui: Add track_caller to gpui_util::log_err (#62538) 2026-08-12 18:44:06 +00:00
gpui_web gpui: Make the Wayland render loop demand-driven (#60690) 2026-08-21 09:43:16 +00:00
gpui_wgpu Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
gpui_windows Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
grammars Add Python runnable for __name__ in ("__main__",) pattern (#58911) 2026-08-19 22:16:44 +00:00
html_to_markdown
http_client http_client: Bound GitHub release requests (#62175) 2026-08-11 15:16:03 +00:00
http_client_tls
http_proxy
icons csv_preview: Evolve into tabular data preview (#60768) 2026-08-14 15:58:14 +00:00
image_viewer Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
input_latency_ui gpui: Unify performance tracking under the profiler feature (#62496) 2026-08-14 16:33:25 +00:00
inspector_ui Implement inspector flag (#62920) 2026-08-20 22:09:43 +00:00
install_cli
journal Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
json_schema_store Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
keymap_editor Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
language Add configurable inline completion debounce timeout (#61568) 2026-08-20 16:42:42 +00:00
language_core language_core: Represent supported queries using an enum (#62707) 2026-08-19 16:26:14 +00:00
language_extension Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
language_model Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
language_model_core cloud_llm_client: Add Baseten language model provider (#62950) 2026-08-20 17:53:44 +00:00
language_models Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
language_models_cloud cloud_llm_client: Add Baseten language model provider (#62950) 2026-08-20 17:53:44 +00:00
language_onboarding
language_selector language: Refactor available_languages into its own struct (#61388) 2026-07-23 11:22:43 +00:00
language_tools Fix language server path displayed in LSP status tooltip (#62919) 2026-08-20 12:47:15 +00:00
languages bash: Hook up workspace configuration for bash-language-server (#57487) 2026-08-19 17:27:34 +00:00
line_ending_selector
livekit_api Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
livekit_client Stop bundling GLib in Linux release archives (#61593) 2026-08-20 10:20:14 +00:00
llama_cpp
lmstudio
lsp Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
lsp_locations Respect lsp_results_location for declaration and type definition (#61060) 2026-08-20 11:17:57 +00:00
markdown Markdown preview visible find matches (#62280) 2026-08-19 13:07:52 +00:00
markdown_preview Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
media Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
menu
mermaid_render Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
migrator Fix the git_gutter_width setting (#62704) 2026-08-18 12:40:18 +00:00
miniprofiler_ui Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
mistral Add reasoning effort support for Mistral models (#61393) 2026-07-21 14:51:27 +00:00
multi_buffer Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
net Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
node_runtime Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
notifications Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
oauth_callback_server
ollama
onboarding Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
open_ai open_ai: Classify Responses API send failures as transport errors (#62660) 2026-08-18 03:20:44 +00:00
open_path_prompt Fix project path handling when connecting from Unix to Windows remotes (#62038) 2026-08-19 12:16:37 +00:00
open_router agent: Share compatible Chat Completions infrastructure (#62652) 2026-08-14 22:42:27 +00:00
openai_subscribed Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
opencode agent: OpenCode model updates (+6 Go, +7/-1 Zen, removed Free) (#61199) 2026-08-19 11:07:38 +00:00
outline outline: Add preview pane to buffer symbols (#61069) 2026-07-17 11:41:08 +00:00
outline_panel Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
panel
path Fix project path handling when connecting from Unix to Windows remotes (#62038) 2026-08-19 12:16:37 +00:00
paths
picker Render control characters in tab titles and project panel entries (#62875) 2026-08-19 21:10:56 +00:00
picker_preview
platform_title_bar gpui_macos: Add simple fullscreen mode that covers the notch (#60020) 2026-08-18 07:00:34 +00:00
prettier
project Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
project_benchmarks git_ui: Dismiss askpass prompts when requests end (#61292) 2026-08-18 10:02:20 +00:00
project_panel project_panel: Remove directories created by rename on undo (#60082) 2026-08-20 11:25:47 +00:00
project_symbols language: Refactor available_languages into its own struct (#61388) 2026-07-23 11:22:43 +00:00
prompt_store
proto Added Tracked , Staged options to stash (#62254) 2026-08-18 05:36:16 +00:00
proxy_handshake client: Extract proxy handshakes into a new proxy_handshake crate (#61427) 2026-07-23 22:46:06 +00:00
recent_projects Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
refineable
release_channel release_channel: Allow compile time overrides that don't use include_str! (#61731) 2026-07-27 18:20:35 +00:00
remote git_ui: Dismiss askpass prompts when requests end (#61292) 2026-08-18 10:02:20 +00:00
remote_connection git_ui: Dismiss askpass prompts when requests end (#61292) 2026-08-18 10:02:20 +00:00
remote_server Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
repl Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
reqwest_client Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
rope Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
rpc project_panel: Add remote support for undo/redo system (#59709) 2026-07-16 09:41:21 +00:00
sandbox agent: Fix NTFS warning breaking terminal tool when WSL not available (#62049) 2026-08-03 11:53:30 +00:00
scheduler treesitter: Worker-pinned treesitter parsing (#62784) 2026-08-18 16:55:09 +00:00
schema_generator Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
search Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
session
settings Fix the git_gutter_width setting (#62704) 2026-08-18 12:40:18 +00:00
settings_content Add configurable inline completion debounce timeout (#61568) 2026-08-20 16:42:42 +00:00
settings_json Show error toast on startup for malformed tasks (#62387) 2026-08-10 16:42:30 +00:00
settings_macros
settings_profile_selector
settings_ui settings_ui: Add Clear button to the search field (#56033) 2026-08-20 21:30:49 +00:00
shell_command_parser
sidebar gpui_macos: Add simple fullscreen mode that covers the notch (#60020) 2026-08-18 07:00:34 +00:00
snippet snippet: Preserve escaped characters in non-default choice options (#61313) 2026-07-20 11:17:43 +00:00
snippet_provider
snippets_ui snippets: Strip path separators from language snippet file names (#61421) 2026-07-23 04:49:39 +00:00
sqlez
sqlez_macros Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
streaming_diff
sum_tree Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
svg_preview Fix preview button acting on the focused editor instead of its own pane (#61218) 2026-07-20 04:08:28 +00:00
syntax_theme
system_specs
tab_switcher git: Add diff_base setting for showing changes since the default branch (#61501) 2026-07-31 19:57:13 +00:00
tabular_data_preview Render control characters in tab titles and project panel entries (#62875) 2026-08-19 21:10:56 +00:00
task task: Support path property on VS Code npm tasks (#62044) 2026-08-18 07:58:21 +00:00
tasks_ui Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
telemetry Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
telemetry_events
terminal Use Duration to improve type safety and unit correctness (#62969) 2026-08-21 07:28:05 +00:00
terminal_view Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
text Send correct line endings to language servers (#59941) 2026-08-12 18:14:22 +00:00
theme Recognize .brushrc files as shell scripts (#62720) 2026-08-17 00:36:13 +00:00
theme_extension
theme_importer theme: Specify color format and pattern in schema (#49136) 2026-07-29 20:59:24 +00:00
theme_selector Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
theme_settings editor: Fix buffer header context menu line height in multibuffers (#61923) 2026-08-16 11:41:17 +00:00
time_format
title_bar Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
toolchain_selector Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
ui Implement inspector flag (#62920) 2026-08-20 22:09:43 +00:00
ui_input
ui_macros
ui_prompt
util Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
util_macros
vim Make opening large files use less peak memory (#62748) 2026-08-18 16:59:08 +00:00
vim_mode_setting
watch
web_search Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
web_search_providers Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
which_key Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
windows_resources
workspace workspace: Persist recent navigation history across sessions (#55034) 2026-08-20 11:27:03 +00:00
worktree worktree: Fix global gitignore matching outside the worktree root (#62130) 2026-08-20 12:29:17 +00:00
worktree_benchmarks
x_ai
zed Implement inspector flag (#62920) 2026-08-20 22:09:43 +00:00
zed_actions Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
zed_credentials_provider Switch from cargo-machete to cargo-shear (#62643) 2026-08-20 10:08:48 +00:00
zed_env_vars
zeta_prompt Bump rustc to 1.97 (#62395) 2026-08-09 22:29:52 +00:00
zlog
zlog_settings
ztracing gpui: Map ztracing events to browser performance APIs on web (#62898) 2026-08-20 17:56:02 +00:00
ztracing_macro