Skip to content

Latest commit

 

History

History
349 lines (272 loc) · 24 KB

CHANGELOG.md

File metadata and controls

349 lines (272 loc) · 24 KB

Changelog for eframe

All notable changes to the eframe crate.

NOTE: egui-winit, egui_glium, egui_glow,and egui-wgpu have their own changelogs!

This file is updated upon each release. Changes since the last release can be found by running the scripts/generate_changelog.py script.

0.24.0 - 2023-11-23

  • Multiple viewports/windows #3172 (thanks @konkitoman!)
  • Replace eframe::Frame commands and WindowInfo with egui #3564
  • Use egui::ViewportBuilder in eframe::NativeOptions #3572
  • Remove warm-starting #3574
  • Fix copy and cut on Safari #3513 (thanks @lunixbochs!)
  • Update puffin to 0.18 #3600
  • Update MSRV to Rust 1.72 #3595

Breaking changes:

Most settings in NativeOptions have been moved to NativeOptions::viewport, which uses the new egui::ViewportBuilder:

 let native_options = eframe::nativeOptions {
-    initial_window_size: Some(egui::vec2(320.0, 240.0)),
-    drag_and_drop_support: true,
+    viewport: egui::ViewportBuilder::default()
+        .with_inner_size([320.0, 240.0])
+        .with_drag_and_drop(true),
     ..Default::default()
 };

NativeOptions::fullsize_content has been replaced with four settings: ViewportBuilder::with_fullsize_content_view, with_title_shown, with_titlebar_shown, with_titlebar_buttons_shown

frame.info().window_info is gone, replaced with ctx.input(|i| i.viewport()).

frame.info().native_pixels_per_point is replaced with ctx.input(|i| i.raw.native_pixels_per_point).

Most commands in eframe::Frame has been replaced with egui::ViewportCommand, so So frame.close() becomes ctx.send_viewport_cmd(ViewportCommand::Close), etc.

App::on_close_event has been replaced with ctx.input(|i| i.viewport().close_requested()) and ctx.send_viewport_cmd(ViewportCommand::CancelClose).

eframe::IconData is now egui::IconData.

eframe::IconData::try_from_png_bytes is now eframe::icon_data::from_png_bytes.

App::post_rendering is gone. Screenshots are taken with ctx.send_viewport_cmd(ViewportCommand::Screenshots) and are returned in egui::Event which you can check with:

ui.input(|i| {
    for event in &i.raw.events {
        if let egui::Event::Screenshot { viewport_id, image } = event {
            // handle it here
        }
    }
});

0.23.0 - 2023-09-27

  • Update MSRV to Rust 1.70.0 #3310
  • Update to puffin 0.16 #3144
  • Update to wgpu 0.17.0 #3170 (thanks @Aaron1011!)
  • Improved wgpu callbacks #3253 (thanks @Wumpf!)
  • Improve documentation of eframe, especially for wasm32 #3295
  • eframe::Frame::info returns a reference #3301 (thanks @Barugon!)
  • Move App::persist_window to NativeOptions and App::max_size_points to WebOptions #3397

Desktop/Native:

  • Only show on-screen-keyboard and IME when editing text #3362 (thanks @Barugon!)
  • Add eframe::storage_dir #3286
  • Add NativeOptions::window_builder for more customization #3390 (thanks @twop!)
  • Better restore Window position on Mac when on secondary monitor #3239
  • Fix iOS support in eframe #3241 (thanks @lucasmerlin!)
  • Speed up eframe state storage #3353 (thanks @sebbert!)
  • Allow users to opt-out of default winit features #3228
  • Expose Raw Window and Display Handles #3073 (thanks @bash!)
  • Use window title as fallback when app_id is not set #3107 (thanks @jacekpoz!)
  • Sleep a bit only when minimized #3139 (thanks @icedrocket!)
  • Prevent text from being cleared when selected due to winit IME #3376 (thanks @YgorSouza!)
  • Fix android app quit on resume with glow backend #3080 (thanks @tkkcc!)
  • Fix panic with persistence without window #3167 (thanks @sagebind!)
  • Only call run_return twice on Windows #3053 (thanks @pan93412!)
  • Gracefully catch error saving state to disk #3230
  • Recognize numpad enter/plus/minus #3285
  • Add more puffin profile scopes to eframe #3330 #3332

Web:

  • Update to wasm-bindgen 0.2.87 #3237
  • Remove Function() invocation from eframe text_agent to bypass "unsafe-eval" restrictions in Chrome browser extensions. #3349 (thanks @aspect!)
  • Fix docs about web #3026 (thanks @kerryeon!)

0.22.0 - 2023-05-23

  • Fix: request_repaint_after works even when called from background thread #2939
  • Clear all keys and modifies on focus change #2857 #2933
  • Remove dark-light dependency #2929
  • Replace tracing with log #2928
  • Update accesskit to 0.11 #3012

Desktop/Native:

  • Automatically change theme when system dark/light mode changes #2750 (thanks @bash!)
  • Enabled wayland feature for winit when running native #2751 (thanks @ItsEthra!)
  • Fix eframe window position bug (pixels vs points) #2763 (thanks @get200!)
  • Add Frame::request_screenshot and Frame::screenshot to communicate to the backend that a screenshot of the current frame should be exposed by Frame during App::post_rendering (#2676).
  • Add eframe::run_simple_native * a simple API for simple apps (#2453).
  • Add NativeOptions::app_id which allows to set the Wayland application ID under Linux (#1600).
  • Add NativeOptions::active #2813 (thanks @Dixeran!)
  • Remove android-activity dependency + add Activity backend features #2863 (thanks @rib!)
  • Fix bug where the eframe window is never destroyed on Linux when using run_and_return (#2892)
  • Fix state persisting when exiting on Linux #2895 (thanks @flukejones!)
  • Allow for requesting the user's attention to the window #2905 (thanks @TicClick!)
  • Read and request window focus #2900 (thanks @TicClick!)
  • Set app icon on Mac and Windows #2940
  • Set a default icon for all eframe apps: a white e on black background #2996
  • Add NativeOptions::app_id for the persistence location #3014 and for Wayland #3007 (thanks @thomaskrause!)
  • capture a screenshot using Frame::request_screenshot 870264b

Web:

  • ⚠️ BREAKING: eframe::start_web has been replaced with eframe::WebRunner, which also installs a nice panic hook (no need for console_error_panic_hook).
  • ⚠️ BREAKING: WebGPU is now the default web renderer when using the wgpu feature of eframe. To use WebGL with wgpu, you need to add wgpu = { version = "0.16.0", features = ["webgl"] } to your own Cargo.toml. (#2945)
  • Add eframe::WebLogger for redirecting log calls to the web console (console.log).
  • Prefer the client width/height for the canvas parent #2804 (thanks @samitbasu!)
  • eframe web: Persist app state to local storage when leaving site #2927
  • Better panic handling #2942 #2992
  • Update wasm-bindgen to 0.2.86 #2995
  • Properly unsubscribe from events on destroy 4d360f6

0.21.3 - 2023-02-15

  • Fix typing the letter 'P' on web (#2740).

0.21.2 - 2023-02-12

  • Allow compiling eframe with --no-default-features (#2728).

0.21.1 - 2023-02-12

  • Fixed crash when native 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 - Update to winit 0.28

  • ⚠️ BREAKING: App::clear_color now expects you to return a raw float array (#2666).
  • The screen_reader feature has now been renamed web_screen_reader and only work on web. On other platforms, use the accesskit feature flag instead (#2669).

Desktop/Native:

  • eframe::run_native now returns a Result (#2433).
  • Update to winit 0.28, adding support for mac trackpad zoom (#2654).
  • Fix bug where the cursor could get stuck using the wrong icon.
  • NativeOptions::transparent now works with the wgpu backend (#2684).
  • Add Frame::set_minimized and set_maximized (#2292, #2672).
  • Fixed persistence of native window position on Windows OS (#2583).

Web:

  • Prevent ctrl-P/cmd-P from opening the print dialog (#2598).

0.20.1 - 2022-12-11

0.20.0 - 2022-12-08 - AccessKit integration and wgpu web support

  • MSRV (Minimum Supported Rust Version) is now 1.65.0 (#2314).
  • Allow empty textures with the glow renderer.

Desktop/Native:

  • Don't repaint when just moving window (#1980).
  • Added NativeOptions::event_loop_builder hook for apps to change platform specific event loop options (#1952).
  • Enabled deferred render state initialization to support Android (#1952).
  • Added shader_version to NativeOptions for cross compiling support on different target OpenGL | ES versions (on native glow renderer only) (#1993).
  • Fix: app state is now saved when user presses Cmd-Q on Mac (#2013).
  • Added center to NativeOptions and monitor_size to WindowInfo on desktop (#2035).
  • Improve IME support (#2046).
  • Added mouse-passthrough option (#2080).
  • Added NativeOptions::fullsize_content option on Mac to build titlebar-less windows with floating window controls (#2049).
  • Wgpu device/adapter/surface creation has now various configuration options exposed via NativeOptions/WebOptions::wgpu_options (#2207).
  • Fix: Make sure that native_pixels_per_point is updated (#2256).
  • Added optional, but enabled by default, integration with AccessKit for implementing platform accessibility APIs (#2294).
  • Fix: Less flickering on resize on Windows (#2280).

Web:

  • ⚠️ BREAKING: start_web is a now async (#2107).
  • Web: You can now use WebGL on top of wgpu by enabling the wgpu feature (and disabling glow via disabling default features) (#2107).
  • Web: Add WebInfo::user_agent (#2202).
  • Web: you can access your application from JS using AppRunner::app_mut. See crates/egui_demo_app/src/lib.rs (#1886).

0.19.0 - 2022-08-20

  • MSRV (Minimum Supported Rust Version) is now 1.61.0 (#1846).
  • Added wgpu rendering backed (#1564):
    • Added features wgpu and glow.
    • Added NativeOptions::renderer to switch between the rendering backends.
  • egui_glow: remove calls to gl.get_error in release builds to speed up rendering (#1583).
  • Added App::post_rendering for e.g. reading the framebuffer (#1591).
  • Use Arc for glow::Context instead of Rc (#1640).
  • Fixed bug where the result returned from App::on_exit_event would sometimes be ignored (#1696).
  • Added NativeOptions::follow_system_theme and NativeOptions::default_theme (#1726).
  • Selectively expose parts of the API based on target arch (wasm32 or not) (#1867).

Desktop/Native:

  • Fixed clipboard on Wayland (#1613).
  • Added ability to read window position and size with frame.info().window_info (#1617).
  • Allow running on native without hardware accelerated rendering. Change with NativeOptions::hardware_acceleration (#1681, #1693).
  • Fixed window position persistence (#1745).
  • Fixed mouse cursor change on Linux (#1747).
  • Added Frame::set_visible (#1808).
  • Added fullscreen support (#1866).
  • You can now continue execution after closing the native desktop window (#1889).
  • Frame::quit has been renamed to Frame::close and App::on_exit_event is now App::on_close_event (#1943).

Web:

  • Added ability to stop/re-run web app from JavaScript. ⚠️ You need to update your CSS with html, body: { height: 100%; width: 100%; } (#1803).
  • Added WebOptions::follow_system_theme and WebOptions::default_theme (#1726).
  • Added option to select WebGL version (#1803).

0.18.0 - 2022-04-30

  • MSRV (Minimum Supported Rust Version) is now 1.60.0 (#1467).
  • Removed eframe::epi - everything is now in eframe (eframe::App, eframe::Frame etc) (#1545).
  • Removed Frame::request_repaint - just call egui::Context::request_repaint for the same effect (#1366).
  • Changed app creation/setup (#1363):
    • Removed App::setup and App::name.
    • Provide CreationContext when creating app with egui context, storage, integration info and glow context.
    • Change interface of run_native and start_web.
  • Added Frame::storage() and Frame::storage_mut() (#1418).
    • You can now load/save state in App::update
    • Changed App::update to take &mut Frame instead of &Frame.
    • Frame is no longer Clone or Sync.
  • Added glow (OpenGL) context to Frame (#1425).

Desktop/Native:

  • Remove the egui_glium feature. eframe will now always use egui_glow as the native backend (#1357).
  • Change default for NativeOptions::drag_and_drop_support to true (#1329).
  • Added new NativeOptions: vsync, multisampling, depth_buffer, stencil_buffer.
  • dark-light (dark mode detection) is now an opt-in feature (#1437).
  • Fixed potential scale bug when DPI scaling changes (e.g. when dragging a window between different displays) (#1441).
  • Added new feature puffin to add puffin profiler scopes (#1483).
  • Moved app persistence to a background thread, allowing for smoother frame rates (on native).
  • Added Frame::set_window_pos (#1505).

Web:

  • Use full browser width by default (#1378).
  • egui code will no longer be called after panic (#1306).

0.17.0 - 2022-02-22

  • Removed Frame::alloc_texture. Use egui::Context::load_texture instead (#1110).
  • Shift-scroll will now result in horizontal scrolling on all platforms (#1136).
  • Log using the tracing crate. Log to stdout by adding tracing_subscriber::fmt::init(); to your main (#1192).

Desktop/Native:

  • The default native backend is now egui_glow (instead of egui_glium) (#1020).
  • Automatically detect and apply dark or light mode from system (#1045).
  • Fixed horizontal scrolling direction on Linux.
  • Added App::on_exit_event (#1038)
  • Added NativeOptions::initial_window_pos.
  • Fixed enable_drag for Windows OS (#1108).

Web:

  • The default web painter is now egui_glow (instead of WebGL) (#1020).
  • Fixed glow failure on Chromium (#1092).
  • Updated eframe::IntegrationInfo::web_location_hash on hashchange event (#1140).
  • Expose all parts of the location/url in frame.info().web_info (#1258).

0.16.0 - 2021-12-29

  • Frame can now be cloned, saved, and passed to background threads (#999).
  • Added Frame::request_repaint to replace repaint_signal (#999).
  • Added Frame::alloc_texture/free_texture to replace tex_allocator (#999).

Web:

0.15.0 - 2021-10-24

  • Frame now provides set_window_title to set window title dynamically (#828).
  • Frame now provides set_decorations to set whether to show window decorations.
  • Remove "http" feature (use https://github.com/emilk/ehttp instead!).
  • Added App::persist_native_window and App::persist_egui_memory to control what gets persisted.

Desktop/Native:

  • Increase native scroll speed.
  • Added new backend egui_glow as an alternative to egui_glium. Enable with default-features = false, features = ["default_fonts", "egui_glow"].

Web:

  • Implement eframe::NativeTexture trait for the WebGL painter.
  • Deprecate `Painter::register_webgl_texture.
  • Fixed multiline paste.
  • Fixed painting with non-opaque backgrounds.
  • Improve text input on mobile and for IME.

0.14.0 - 2021-08-24

  • Added dragging and dropping files into egui.
  • Improve http fetch API.
  • run_native now returns when the app is closed.
  • Web: Made text thicker and less pixelated.

0.13.1 - 2021-06-24

  • Fixed http feature flag and docs

0.13.0 - 2021-06-24

  • App::setup now takes a Frame and Storage by argument.
  • App::load has been removed. Implement App::setup instead.
  • Web: Default to light visuals unless the system reports a preference for dark mode.
  • Web: Improve alpha blending, making fonts look much better (especially in light mode)
  • Web: Fix double-paste bug

0.12.0 - 2021-05-10

  • Moved options out of trait App into new NativeOptions.
  • Added option for always_on_top.
  • Web: Scroll faster when scrolling with mouse wheel.

0.11.0 - 2021-04-05

  • You can now turn your window transparent with the App::transparent option.
  • You can now disable window decorations with the App::decorated option.
  • Web: Fix mobile and IME text input
  • Web: Hold down a modifier key when clicking a link to open it in a new tab.

Contributors: n2

0.10.0 - 2021-02-28

  • You can now set your own app icons.
  • You can control the initial size of the native window with App::initial_window_size.
  • You can control the maximum egui web canvas size with App::max_size_points.
  • Frame::tex_allocator() no longer returns an Option (there is always a texture allocator).

0.9.0 - 2021-02-07

  • Added support for HTTP body.
  • Web: Right-clicks will no longer open browser context menu.
  • Web: Fix a bug where one couldn't select items in a combo box on a touch screen.

0.8.0 - 2021-01-17

  • Simplify TextureAllocator interface.
  • WebGL2 is now supported, with improved texture sampler. WebGL1 will be used as a fallback.
  • Web: Slightly improved alpha-blending (work-around for non-existing linear-space blending).
  • Web: Call prevent_default for arrow keys when entering text

0.7.0 - 2021-01-04

  • Initial release of eframe