ZIm/crates
James Tucker 94b75f3ad9
gpui: Enable per-pixel, GPU composited transparency on Windows (#26645)
Move the SetLayeredWindowAttributes call to immediately after window
construction, and initialize it with per-pixel transparency settings, no
color key and no global blending. The render pipeline will perform alpha
blending during compositing.

Cleaned up the DWM acrylic API calls some, to explicitly set to the
three appropriate modes depending on opaque, transparent or blurred
settings. The API internally hides versioning concerns from the caller.

Set the window class background color to black, this prevents a
flashbang on slow startup, e.g. debug builds on a heavily loaded system.

The outcome is that the window no longer receives paint demands for
underlying window updates, while also having per-pixel transparency -
opaque theme elements are now correctly opaque. The transparency
settings are now portable across windows and macOS having mostly similar
outcomes (modulo palette differences). Small fonts may still appear to
be alpha blended - this seems to be in the glyph atlas, their pixels are
not actually opaque. Larger fonts (or higher DPIs) don't suffer this and
are as opaque as expected. Layering the window atop one that is
rendering at 120fps, the editor window can drop to its 8fps idle state,
while still being composited with 120fps alpha blend in the background,
in both blur and transparent modes.

Updates #20400

Release Notes:

- Improved transparency on Windows to be more efficient, support fully
opaque elements and more closely match other platforms.
2025-04-10 21:27:19 +00:00
..
activity_indicator Git activity indicator (#28204) 2025-04-07 18:10:01 +00:00
agent Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
agent_eval Lay the groundwork for a Rust-based eval (#28488) 2025-04-10 04:45:27 +00:00
agent_rules chore: Add workspace-hack dependency to agent_rules (#28412) 2025-04-09 10:19:54 +00:00
anthropic collab: Capture upstream input/output rate limits from Anthropic (#28106) 2025-04-04 17:09:00 +00:00
askpass Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assets Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant assistant: Fix assistant: open prompt library not opening the prompt library (#28156) 2025-04-05 17:10:39 +00:00
assistant_context_editor Remove actions UnfoldAt and FoldAt (#28442) 2025-04-09 17:13:41 +00:00
assistant_settings ai: Separate model settings for each feature (#28088) 2025-04-04 11:40:55 -03:00
assistant_slash_command Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_slash_commands Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_tool agent: Only require confirmation for batch tool when subset of tool calls require confirmation (#28363) 2025-04-08 21:37:10 +00:00
assistant_tools agent: Use current shell (#28470) 2025-04-09 23:38:36 -06:00
audio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
auto_update Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
auto_update_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
aws_http_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
bedrock bedrock: Add support for tool use, cross-region inference, and Claude 3.7 Thinking (#28137) 2025-04-05 11:16:26 -04:00
breadcrumbs breadcrumbs: Update multibuffer to match singleton (#28267) 2025-04-07 20:26:55 +00:00
buffer_diff Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
call Fix deafening new participants (#28330) 2025-04-08 16:01:27 +00:00
channel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
cli Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
client Upgrade async-tungstenite to tokio (#26193) 2025-04-08 09:17:08 -06:00
clock Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
collab Update Rust crate prometheus to 0.14 (#28468) 2025-04-09 17:37:15 -06:00
collab_ui Update default vim substitute command behavior and add support for 'g' flag (#28138) 2025-04-09 14:34:51 -06:00
collections Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette_hooks Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
component Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
component_preview Add progress bar component (#28518) 2025-04-10 12:11:58 -06:00
context_server agent: Only require confirmation for batch tool when subset of tool calls require confirmation (#28363) 2025-04-08 21:37:10 +00:00
context_server_settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
copilot chore: Replace as_any functions with trait upcasting (#28221) 2025-04-08 22:16:27 +02:00
credentials_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
dap debugger: Add support for CodeLLDB (#28376) 2025-04-09 12:57:24 +02:00
dap_adapters debugger: Add breakpoint list (#28496) 2025-04-10 18:18:58 +00:00
db Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
debugger_tools Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
debugger_ui debugger: Add breakpoint list (#28496) 2025-04-10 18:18:58 +00:00
deepseek Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
diagnostics Introduce "Near" block type (#28032) 2025-04-04 17:37:42 -06:00
docs_preprocessor Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
editor Do not query for LSP tasks buffers that do not belong to the position given (#28536) 2025-04-10 20:37:21 +00:00
eval Lay the groundwork for a Rust-based eval (#28488) 2025-04-10 04:45:27 +00:00
evals Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extension extension: Bump wasi-sdk to version 25 (#27906) 2025-04-05 13:20:36 -04:00
extension_api chore: Bump Rust edition to 2024 (#27800) 2025-03-31 20:55:27 +02:00
extension_cli Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extension_host Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extensions_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
feature_flags agent: Auto-capture telemetry feature flag (#28271) 2025-04-10 15:07:48 -05:00
feedback Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
file_finder file_finder: Fix filename matching to require contiguous characters (#28093) 2025-04-05 05:01:56 +05:30
file_icons Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fs chore: Make objc a workspace level crate (#28258) 2025-04-07 18:46:09 +00:00
fsevent Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fuzzy Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
git git: Fix logging FromUtf8Error when diffing (#28276) 2025-04-08 11:28:34 -04:00
git_hosting_providers Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
git_ui git_ui: Show disabled states in context menu (#28288) 2025-04-09 10:46:21 -04:00
go_to_line Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
google_ai agent: Add support for Google Gemini 2.5 preview (#28326) 2025-04-08 15:00:23 +00:00
gpui gpui: Enable per-pixel, GPU composited transparency on Windows (#26645) 2025-04-10 21:27:19 +00:00
gpui_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
gpui_tokio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
html_to_markdown Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
http_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
http_client_tls Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
icons debugger: Add breakpoint list (#28496) 2025-04-10 18:18:58 +00:00
image_viewer Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
indexed_docs Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
inline_completion Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
inline_completion_button Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
install_cli install_cli: Show feedback when installing CLI from welcome screen (#28532) 2025-04-11 01:47:40 +05:30
journal Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language format: Re-implement support for formatting with code actions that contain commands (#28392) 2025-04-09 01:53:54 +00:00
language_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_model agent: Add support for Google Gemini 2.5 preview (#28326) 2025-04-08 15:00:23 +00:00
language_model_selector agent: Fix opening configuration view from the model selector (#28154) 2025-04-05 16:32:16 +00:00
language_models language_models: Fix non-streaming Copilot Chat models (#28537) 2025-04-10 20:48:08 +00:00
language_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_tools Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
languages rust: Enable required features when executing main functions in tasks (#27312) 2025-04-10 20:29:07 +00:00
livekit_api Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
livekit_client Fix deafening new participants (#28330) 2025-04-08 16:01:27 +00:00
lmstudio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
lsp Add support for insert_text_mode of a completion (#28171) 2025-04-07 10:35:11 -06:00
markdown agent: Collapse code blocks in the active thread (#28467) 2025-04-09 23:44:02 -03:00
markdown_preview Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
media chore: Make objc a workspace level crate (#28258) 2025-04-07 18:46:09 +00:00
menu Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
migrator agent: Use current shell (#28470) 2025-04-09 23:38:36 -06:00
mistral Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
multi_buffer editor: Restore selections to positions after last edit (#28527) 2025-04-10 18:33:49 +00:00
node_runtime Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
notifications Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
ollama Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
open_ai open_ai: Disable parallel_tool_calls (#28056) 2025-04-03 22:07:37 +00:00
outline Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
outline_panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
paths Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
picker Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
prettier Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
project debugger: Add breakpoint list (#28496) 2025-04-10 18:18:58 +00:00
project_panel Reset modifiers when the window active state changes (#28348) 2025-04-09 20:55:19 -06:00
project_symbols Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
prompt_library ai: Separate model settings for each feature (#28088) 2025-04-04 11:40:55 -03:00
prompt_store agent: Use current shell (#28470) 2025-04-09 23:38:36 -06:00
proto Add dedicated actions for LSP completions insertion mode (#28121) 2025-04-08 22:03:03 +00:00
recent_projects Remove references to SSH remoting beta (#28399) 2025-04-09 03:26:22 +00:00
refineable Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
release_channel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
remote Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
remote_server Clean up environment loading a bit (#28356) 2025-04-08 22:16:35 -04:00
repl Upgrade async-tungstenite to tokio (#26193) 2025-04-08 09:17:08 -06:00
reqwest_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rich_text Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rope chore: Bump Rust version to 1.86 (#28021) 2025-04-03 23:32:50 +02:00
rpc chore: Replace as_any functions with trait upcasting (#28221) 2025-04-08 22:16:27 +02:00
schema_generator Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
search vim: Reset search range after substitute (#28403) 2025-04-09 20:43:53 -06:00
semantic_index Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
semantic_version Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
session Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
settings_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippet Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippet_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippets_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sqlez Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sqlez_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
story Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
storybook Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
streaming_diff Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sum_tree Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven_api Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
tab_switcher tab_switcher: Add keybind to close tab tooltip (#27212) 2025-04-08 15:57:36 -06:00
task agent: Use current shell (#28470) 2025-04-09 23:38:36 -06:00
tasks_ui Support tasks from rust-analyzer (#28359) 2025-04-08 15:07:56 -06:00
telemetry Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
telemetry_events telemetry_events: Rename AssistantEvent to AssistantEventData (#28133) 2025-04-04 19:28:32 -04:00
terminal agent: Use current shell (#28470) 2025-04-09 23:38:36 -06:00
terminal_view chore: Replace as_any functions with trait upcasting (#28221) 2025-04-08 22:16:27 +02:00
text format: Re-implement support for formatting with code actions that contain commands (#28392) 2025-04-09 01:53:54 +00:00
theme Add icon for Vyper files (#28307) 2025-04-09 10:49:39 -04:00
theme_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_importer Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
time_format Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
title_bar Reapply support for X11 screenshare (#28160) 2025-04-06 11:25:29 -06:00
toolchain_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
ui Add progress bar component (#28518) 2025-04-10 12:11:58 -06:00
ui_input Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
ui_macros Merge Component and ComponentPreview trait (#28365) 2025-04-08 16:09:06 -06:00
ui_prompt markdown: Don't retain MarkdownStyle in favor of using MarkdownElement directly (#28255) 2025-04-07 19:03:24 +00:00
util agent: Use current shell (#28470) 2025-04-09 23:38:36 -06:00
util_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
vim vim: Reset search range after substitute (#28403) 2025-04-09 20:43:53 -06:00
vim_mode_setting Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
welcome install_cli: Show feedback when installing CLI from welcome screen (#28532) 2025-04-11 01:47:40 +05:30
workspace Debugger UI: Dynamic session contents (#28033) 2025-04-07 23:22:09 +02:00
worktree Fix directory context paths (#28459) 2025-04-09 21:40:46 +00:00
zed Add --user-data-dir CLI flag and propose renaming support_dir to data_dir (#26886) 2025-04-10 21:16:43 +00:00
zed_actions assistant: Fix assistant: open prompt library not opening the prompt library (#28156) 2025-04-05 17:10:39 +00:00
zeta agent: Add reactions at the response level (#27958) 2025-04-09 14:21:07 -03:00
zlog Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
zlog_settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00