mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 14:49:06 -04:00
## Short bluesky announcement: We just released egui 0.33.0! Highlights: - `egui::Plugin` a improved way to create and access egui plugins - [kitdiff](https://github.com/rerun-io/kitdiff), a viewer for egui_kittest image snapshots (and a general image diff tool) - better kerning (check the diff on [kitdiff](https://rerun-io.github.io/kitdiff/?url=https://github.com/emilk/egui/pull/7431)) https://github.com/user-attachments/assets/971f0493-6dae-42e5-8019-58b74cf5d203 ## Relaese Changelog: egui is an easy-to-use immediate mode GUI for Rust that runs on both web and native. Try it now: <https://www.egui.rs/> egui development is sponsored by [Rerun](https://www.rerun.io/), a startup building an SDK for visualizing streams of multimodal data. # egui 0.33.0 changelog Highlights from this release: - `egui::Plugin` a improved way to create and access egui plugins - [kitdiff](https://github.com/rerun-io/kitdiff), a viewer for egui_kittest image snapshots (and a general image diff tool) - better kerning ### Improved kerning As a step towards using [parley](https://github.com/linebender/parley) for font rendering, @valadaptive has refactored the font loading and rendering code. A result of this (next to the font rendering code being much nicer now) is improved kerning. Notice how the c moved away from the k:  ### `egui::Plugin` trait We've added a new trait-based plugin api, meant to replace `Context::on_begin_pass` and `Context::on_end_pass`. This makes it a lot easier to handle state in your plugins. Instead of having to write to egui memory it can live right on your plugin struct. The trait based api also makes easier to add new hooks that plugins can use. In addition to `on_begin_pass` and `on_end_pass`, the `Plugin` trait now has a `input_hook` and `output_hook` which you can use to inspect / modify the `RawInput` / `FullOutput`. ### kitdiff, a image diff viewer At rerun we have a ton of snapshots. Some PRs will change most of them (e.g. [the](https://github.com/rerun-io/rerun/pull/11253/files) [one](https://rerun-io.github.io/kitdiff/?url=https://github.com/rerun-io/rerun/pull/11253/files) that updated egui and introduced the kerning improvements, ~500 snapshots changed!). If you really want to look at every changed snapshot it better be as efficient as possible, and the experience on github, fiddeling with the sliders, is kind of frustrating. In order to fix this, we've made [kitdiff](https://rerun-io.github.io/kitdiff/). You can use it locally via - `kitdiff files .` will search for .new.png and .diff.png files - `kitdiff git` will compare the current files to the default branch (main/master) Or in the browser via - going to https://rerun-io.github.io/kitdiff/ and pasting a PR or github artifact url - linking to kitdiff via e.g. a github workflow `https://rerun-io.github.io/kitdiff/?url=<link_to_pr_or_artefact>` To install kitdiff run `cargo install --git https://github.com/rerun-io/kitdiff` Here is a video showing the kerning changes in kitdiff ([try it yourself](https://rerun-io.github.io/kitdiff/?url=https://github.com/rerun-io/rerun/pull/11253/files)): https://github.com/user-attachments/assets/74640af1-09ba-435a-9d0c-2cbeee140c8f ### Migration guide - `egui::Mutex` now has a timeout as a simple deadlock detection - If you use a `egui::Mutex` in some place where it's held for longer than a single frame, you should switch to the std mutex or parking_lot instead (egui mutexes are wrappers around parking lot) - `screen_rect` is deprecated - In order to support safe areas, egui now has `viewport_rect` and `content_rect`. - Update all usages of `screen_rect` to `content_rect`, unless you are sure that you want to draw outside the `safe area` (which would mean your Ui may be covered by notches, system ui, etc.)
11 KiB
11 KiB
Changelog for egui-winit
All notable changes to the egui-winit integration will be noted in this file.
This file is updated upon each release.
Changes since the last release can be found at https://github.com/emilk/egui/compare/latest...HEAD or by running the scripts/generate_changelog.py script.
0.33.0 - 2025-10-09
⭐ Added
- Add rotation gesture support for trackpad sources #7453 by @thatcomputerguy0101
- Add support for the safe area on iOS #7578 by @irh
🔧 Changed
🐛 Fixed
- Fix build error in egui-winit with profiling enabled #7557 by @torokati44
- Properly end winit event loop #7565 by @tye-exe
- Fix eframe window not being focused on mac on startup #7593 by @emilk
0.32.3 - 2025-09-12
Nothing new
0.32.2 - 2025-09-04
Nothing new
0.32.1 - 2025-08-15
0.32.0 - 2025-07-10
- Mark all keys as released if the app loses focus #5743 by @emilk
- Fix text input on Android #5759 by @StratusFearMe21
- Add macOS-specific
has_shadowandwith_has_shadowto ViewportBuilder #6850 by @gaelanmcmillan - Support for back-button on Android #7073 by @ardocrat
- Fix incorrect window sizes for non-resizable windows on Wayland #7103 by @GoldsteinE
0.31.1 - 2025-03-05
Nothing new
0.31.0 - 2025-02-04
- Re-enable IME support on Linux #5198 by @YgorSouza
- Update to winit 0.30.7 #5516 by @emilk
0.30.0 - 2024-12-16
- iOS: Support putting UI next to the dynamic island #5211 by @frederik-uni
- Remove implicit
accesskit_winitfeature #5316 by @waywardmonkeys
0.29.1 - 2024-10-01 - Fix backspace/arrow keys on X11
0.29.0 - 2024-09-26 - winit 0.30
- Upgrade to
winit0.30 #4849 #4939 by @ArthurBrussee - Fix: Backspace not working after IME input #4912 by @rustbasic
0.28.1 - 2024-07-05
Nothing new
0.28.0 - 2024-07-03
- Update
webbrowsertov1.0.0#4394 by @torokati44 - Emit physical key presses when a non-Latin layout is active #4461 by @TicClick
- IME for chinese #4436 by @rustbasic
- Fix: Window position creeps between executions on scaled monitors #4443 by @avery-radmacher
- Ignore synthetic key presses #4514 by @hut
0.27.2 - 2024-04-02
- Fix continuous repaint on Wayland when TextEdit is focused or IME output is set #4269 (thanks @white-axe!)
0.27.1 - 2024-03-29
- Nothing new
0.27.0 - 2024-03-26
- Update memoffset to 0.9.0, arboard to 3.3.1, and remove egui_glow's needless dependency on pure_glow's deps #4036 (thanks @Nopey!)
- Don't clear modifier state on focus change #4157 (thanks @ming08108!)
0.26.2 - 2024-02-14
- Update memoffset to 0.9.0, arboard to 3.3.1, and remove egui_glow's needless dependency on pure_glow's deps #4036 (thanks @Nopey!)
0.26.1 - 2024-02-11
- Nothing new
0.26.0 - 2024-02-05
- Don't consume clipboard shortcuts #3812 (thanks @Dinnerbone!)
- Make the
clipboard_textandallow_imestate public #3724 (thanks @tosti007!)
0.25.0 - 2024-01-08
- Update to winit 0.29 #3649 (thanks @fornwall!)
- Fix: Let
accesskitprocess window events #3733 (thanks @DataTriny!) - Simplify
egui_winit::State#3678
0.24.1 - 2023-11-30
- Don't treat
WindowEvent::CloseRequestedas consumed #3627 (thanks @Aaron1011!) - Fix windowing problems when using the
x11feature on Linux #3643
0.24.0 - 2023-11-23
- Update MSRV to Rust 1.72 #3595
- Some breaking changes required for multi-viewport support
0.23.0 - 2023-09-27
- Only show on-screen-keyboard and IME when editing text #3362 (thanks @Barugon!)
- Replace
instantwithweb_time#3296 - Allow users to opt-out of default
winitfeatures #3228 - Recognize numpad enter/plus/minus #3285
0.22.0 - 2023-05-23
- Only use
wasm-bindgenfeature forinstantwhen building for wasm32 #2808 (thanks @gferon!) - Fix unsafe API of
Clipboard::new#2765 (thanks @dhardy!) - Remove
android-activitydependency + addActivitybackend features #2863 (thanks @rib!) - Use
RawDisplayHandlefor smithay clipboard init #2914 (thanks @lunixbochs!) - Clear all keys and modifies on focus change #2933
- Support Wasm target #2949 (thanks @jinleili!)
- Fix unsafe API: remove
State::new_with_wayland_display; changeClipboard::newto take&EventLoopWindowTarget<T>
0.21.1 - 2023-02-12
- Fixed crash when window position is in an invalid state, which could happen e.g. due to changes in monitor size or DPI (#2722).
0.21.0 - 2023-02-08
- Fixed persistence of native window position on Windows OS (#2583).
- Update to
winit0.28, adding support for mac trackpad zoom (#2654). - Remove the
screen_readerfeature. Use theaccesskitfeature flag instead (#2669). - Fix bug where the cursor could get stuck using the wrong icon.
0.20.1 - 2022-12-11
0.20.0 - 2022-12-08
- The default features of the
winitcrate are not enabled if the default features ofegui-winitare disabled too (#1971). - Added new feature
waylandwhich enables Wayland support (#1971). - Don't repaint when just moving window (#1980).
- Added optional integration with AccessKit for implementing platform accessibility APIs (#2294).
0.19.0 - 2022-08-20
- MSRV (Minimum Supported Rust Version) is now
1.61.0(#1846). - Fixed clipboard on Wayland (#1613).
- Allow deferred render + surface state initialization for Android (#1634).
- Fixed window position persistence (#1745).
- Fixed mouse cursor change on Linux (#1747).
- Use the new
RawInput::has_focusfield to indicate whether the window has the keyboard focus (#1859).
0.18.0 - 2022-04-30
- Reexport
eguicrate - MSRV (Minimum Supported Rust Version) is now
1.60.0(#1467). - Added new feature
puffinto addpuffin profilerscopes (#1483). - Renamed the feature
convert_bytemucktobytemuck(#1467). - Renamed the feature
serializetoserde(#1467). - Removed the features
dark-lightandpersistence(#1542).
0.17.0 - 2022-02-22
- Fixed horizontal scrolling direction on Linux.
- Replaced
std::time::Instantwithinstant::Instantfor WebAssembly compatibility (#1023) - Automatically detect and apply dark or light mode from system (#1045).
- Fixed
enable_dragon Windows OS (#1108). - Shift-scroll will now result in horizontal scrolling on all platforms (#1136).
- Require knowledge about max texture side (e.g.
GL_MAX_TEXTURE_SIZE)) (#1154).
0.16.0 - 2021-12-29
- Added helper
EpiIntegration(#871). - Fixed shift key getting stuck enabled with the X11 option
shift:both_capslockenabled (#849). - Removed
State::is_quit_eventandState::is_quit_shortcut(#881). - Updated
winitto 0.26 (#930).
0.15.0 - 2021-10-24
First stand-alone release. Previously part of egui_glium.