Skip to content

native-theme v0.6.1 — gpui-kit 0.7.1, platform spinner sizes, faster theme switching

Choose a tag to compare

@tiborgats tiborgats released this 09 Oct 01:51
· 1513 commits to main since this release

Added

  • native-theme-gpui: geometry::button_label, geometry::toggle and geometry::data_table_size; Mic and Square in the Lucide, Material and freedesktop tables.
  • native-theme: the bundled Lucide and Material sets carry mic and square.
  • Showcases (gpui): the Inputs page shows ColorSelect and SpeechWaveform.
  • native-theme-gpui: widgets::Spinner takes a Size (it is Sizable), drawing the platform's indicator at every size: gpui-component's own spinner ladder (× 0.75, × 0.875, × 1.5 for XSmall, Small, Large) anchored at spinner.diameter, never below spinner.min_diameter; SpinnerLook::of_size is that look.

Changed

  • native-theme-gpui: requires gpui-component, gpui-base and gpui-kit 0.7.1 and gpui-pre 0.3.8 (MSRV unchanged, 1.95.0). The three IconName tables return None for a variant newer than the connector, instead of failing to compile.

Fixed

  • native-theme-gpui: 0.6.0 does not build against gpui-component 0.7.1, which added IconName::Mic and IconName::Square; 0.6.1 does. A Button's label, a Toggle's text and DataTable cells can be drawn at the platform's font size again, which gpui-component 0.7.1 shrank to 0.875 of it at Size::Medium (through geometry::button_label, geometry::toggle and geometry::data_table_size).
  • Showcases (gpui): the Feedback page's Spinner row draws its three sizes with the platform's look; Small and Large were gpui-component's Lucide Loader beside the Medium platform indicator.
  • native-theme: a name a freedesktop icon theme does not have is answered from a per-theme index of the theme's icon files instead of freedesktop-icons' whole fallback search, whose result was discarded: a missing name's load took 47-66 ms and takes under 0.01 ms, and Breeze's face-smile, found only on the plain pass, 0.16 ms instead of 8.8 ms (medians of 20 FreedesktopLoader loads in a dev build, on Breeze and Adwaita). The index is built once per theme per process (about 50 ms for Breeze, 3 ms for Adwaita); every lookup returns the file it returned before.
  • native-theme: an OS query (gsettings, xrdb -query, xrandr) returns as soon as its command exits instead of on the next 50 ms poll: the poll interval starts at 1 ms and doubles up to 50 ms. Detecting the font DPI takes 3.5 ms instead of 50.5 ms, and AccessibilityPreferences::from_system 12.7 ms instead of 107 ms (dev profile); a command that outlives the 2 s timeout is still killed.