Composite glass: inset highlights, blink, fade, panel tint

Closes the three "platform-impossible" gaps from the design audit
without resorting to hacks or shaders.

* chrome::glass — `render_inner_highlight(radius)` paints the design's
  `box-shadow: inset 0 0 0 1px` ring as an absolute overlay div with a
  1 px top-edge highlight sliver. GPUI 0.2.2's BoxShadow has no inset
  flag, so the composite is the only way to keep the panel content
  unclipped while the ring rides on top.
* chrome::animations — `blink` and `fade_in` wrap GPUI's first-class
  `with_animation` driver. Square-wave caret in the command header,
  180 ms opacity ramp on the command backdrop and workspace
  disclosure list.
* chrome::sidebar — panel_bg now tints toward the active wallpaper
  theme so the wallpaper bleeds through every glass surface, the
  closest honest substitute for backdrop-filter without a shader pass.
* command_overlay split: row helpers move to chrome::command_rows so
  command_overlay drops from 504 → 232 lines, well under the 500-line
  ceiling. No behavior change.

cargo test --workspace: 440 passed, 0 failed.
This commit is contained in:
2026-05-09 20:29:08 -04:00
parent e392db1cd7
commit a92f478e21
9 changed files with 436 additions and 297 deletions
@@ -9,6 +9,7 @@ use gpui::{
use gpui_component::IconName;
use crate::shell::ElyShell;
use crate::shell::chrome::animations::fade_in;
pub(crate) fn render_sidebar_header(
shell: &ElyShell,
@@ -162,7 +163,7 @@ fn render_workspace_disclosure(
) -> AnyElement {
let active_id = snapshot.active_space_id.clone();
div()
let body = div()
.flex()
.flex_col()
.gap(px(2.0))
@@ -179,8 +180,9 @@ fn render_workspace_disclosure(
render_disclosure_row(index, space, &active_id, cx)
}),
)
.child(render_disclosure_footer(cx))
.into_any_element()
.child(render_disclosure_footer(cx));
fade_in("workspace-disclosure", 140, body).into_any_element()
}
fn render_disclosure_row(