Repository navigation
v0.9.0
Breaking changes
-
Window::blurandWindow::disable_focusnow take&mut App— pending
keystrokes and keybinding-indicator observers are cleared when a window is
blurred. Callwindow.blur(cx)/window.disable_focus(cx)instead of the
previous no-argument forms. -
GpuResourceBudgetrequiresinstance_buffer_max_size— struct literals that listed only
atlas and initial instance-buffer sizes will not compile. UseGpuResourceBudget::new(atlas, initial)or..GpuResourceBudget::default()(256 MiB ceiling, the previous implicit Zed cap).
AppProfile::{Desktop,Utility,Minimal}already fill profile-specific maxima. -
set_keep_alive_without_windowsreplaced byQuitMode— the boolean keep-alive flag is
gone; useApp::set_quit_mode/Application::with_quit_modewithQuitMode::Explicit
(previoustrue) orQuitMode::LastWindowClosed(previousfalse) instead. The quit
decision is now owned by the core application rather than each platform backend; platforms
only receivePlatform::set_quit_modefor platform-visible side effects (macOS
ActivationPolicy). Behavior change on macOS:QuitMode::Defaultnow keeps the app alive
after the last window closes, following the macOS convention — previously the default quit
on last window close on every platform. Other platforms are unchanged (Defaultstill
quits when the last window closes). -
Removed pass-through dependency features — implementation-dependency features that enabled
no additional code are no longer public:backtrace,rand,bitflags, andscapon
adabraka-gpui-core, plus the Linux backend dependency names (as-raw-xcb-connection,
ashpd,bytemuck,
calloop-wayland-source,cosmic-text,filedescriptor,open,wayland-backend,
wayland-client,wayland-cursor,wayland-protocols,wayland-protocols-plasma,
wayland-protocols-wlr,wayland-scanner,x11-clipboard,x11rb,xim, and
xkbcommon) acrossadabraka-gpui,adabraka-gpui-platform, andadabraka-gpui-linux.
Enable the corresponding semantic features instead:leak-detection,test-support,
wayland,x11,screen-capture, orperf-enabled. Thewgpufeature remains a no-op
marker onadabraka-gpuiandadabraka-gpui-platformfor headless compile checks; the old
adabraka-gpui-linux/wgpufeature is removed, and the Linux WGPU backend is enabled by the
wayland/x11aggregates.Removed feature Replacement backtraceleak-detectionscapscreen-captureLinux Wayland dependency names waylandLinux X11 dependency names x11randonadabraka-gpui-coretest-support
Improvements
-
Spring animations —
SpringConfig,SpringAnimation, andAnimationExt::with_spring
simulate interruptible physical motion. Overlay, HUD, and daemon surfaces can retarget a
spring without restarting it. Duration-based easing can overshoot viasampled_easing. -
Animation max FPS —
Animation::with_max_fpsschedules timer-driven redraws instead of
requesting a frame on every vsync, useful for looping HUD/daemon decorations. -
Configurable inactive-window FPS —
WindowOptions::inactive_frame_intervalcontrols the
minimum interval between animation frames while a window is unfocused (Nonedisables the
throttle). The default remains ~30 FPS. -
LineLayout::{split_at, paint, paint_background}— callers can holdArc<LineLayout>
and their own decoration runs without allocating a largeShapedLine. -
container_queryelement —container_query(|size, window, cx| ...)builds a subtree from
the size the element was assigned during layout. It fills its parent by default and is sized
only by its style and the space the parent offers, so the contents cannot influence it. -
Sticky-axis scrolling —
restrict_scroll_to_axisnow locks a precise trackpad gesture to the
axis it starts on and unlocks only when the opposite axis is strong enough. Line-based wheel
remapping andallow_concurrent_scrollkeep their previous semantics. -
App::set_window_appearance— force light or dark independently of the OS setting;None
clears the override and follows the system again. macOS setsNSApplication.appearanceso the
native chrome matches; other platforms store the override and report it from
App::window_appearance. -
Wrapping keeps closing punctuation — UAX #14 LB13 closing marks (
),],}, quotes,»,
…) count as word characters, so a wrapped line can no longer start with one. URL-glue
characters (/,?,&,=) are unchanged. -
Windows Restart Manager —
WM_QUERYENDSESSION/WM_ENDSESSIONshut the app down
cleanly so installers can replace binaries.Platform::on_quitnow reports whether
shutdown ran synchronously. -
Renderer GPU budgets moved off
WindowParams—atlas_initial_sizeand
instance_buffer_initial_sizeare renderer memory policy, not per-window parameters. Platforms
now receive them throughPlatform::configure_gpu_resources(driven by
Application::with_resource_profile) and supply them to renderers at window creation, so
WindowParamsno longer carries renderer resource policy. -
Batched wgpu instance uploads — the Linux wgpu renderer uploads a frame's instances once at
frame start instead of per batch, sizing and growing the buffer fromGpuResourceBudget
watermarks soMinimalandUtilityare not pinned to the 256 MiB desktop ceiling. A frame
whose instances exceed the profile or device cap now fails instead of presenting an unrecorded
swapchain image, andGpuResourceBudget::new(atlas, initial)keeps a two-field construction
path for callers that do not want to pick a maximum. -
Demand-driven Wayland frame loop — the render loop parks when idle rather than committing
empty heartbeat frames, and wakes throughschedule_framewhen a window still needs work.
Hidden windows no longer attach buffers or schedule frames, so a refresh cannot remap a hidden
XDG or layer-shell surface, and the Linux event loop is skipped entirely when the app has
already quit instead of blocking forever indispatch. -
Linux font cache prewarming —
TextSystem::prewarm_fontswarms the cosmic-text font-match
cache for the requested fonts so shaping does not pay that cost on the hot path. -
Feature contract checks —
scripts/verify-features.shcompiles the public feature
combinations used by CI and the docs runbooks, and pins every published crate's public
feature list against a whitelist so accidental additions or removals fail in CI. -
Async benchmark feature —
adabraka-gpui-coreexposes thebenchfeature used to compile
the production-like async task completion benchmark without enabling it for normal builds. -
Taffy 0.13 — the layout engine pin moves from
0.12.2to0.13.0. PublicStyled
builder signatures are unchanged (flex_grow/flex_shrinkremain parameterless helpers
that set1.0). Post-bump list/text cache fixes and auto-sized window-root fill were already
present; this release adds the content-sized grid-column regression coverage that lands with
the Zed 0.13 bump.
Utility crates 0.6.0 (2026-08-30)
Breaking changes
adabraka_utilfeature cleanup — the dependency-name featuresgit2,rand, and
util_macrosare removed. Use the semantictest-supportfeature when the test helpers are
required.adabraka_util_macrosfeature cleanup — the dependency-name featureperfis removed. Use
perf-enabledinstead.