Skip to content

Releases: pthom/imgui_bundle

v1.92.0

28 Jun 20:02
45da617
Compare
Choose a tag to compare

Starting with v1.92.0, version numbers are now synced between "Dear ImGui", "Hello ImGui" and "Dear ImGui Bundle"

ImGui

Use ImGui v1.92.0: Scaling fonts & many more (big release)

This is a big release for ImGui.

TLDR: Fonts may be rendered at any size. Glyphs are loaded and rasterized dynamically. No need to specify ranges, prebake etc. GetTexDataAsRGBA32() is now obsolete.

  • Many Font related changes: this release brings many changes on the ImGui side : do read the ImGui release notes

Python bindings

  • Potentially breaking change for extern pure Python backends: font_atlas_get_tex_data_as_rgba32 was removed (read the advice below)
  • Font-related changes, following ImGui v1.92.0
  • Fix ImPlot stubs (thanks @tlambert03)
  • Fix imgui_ctx and imgui_node_ctx
  • pure python backends: split opengl implems, implement texture update in python pure opengl backends
  • imgui bindings => publish texture related infos

Advice for extern pure Python Backends (wgpu, etc.)

Since v1.92, font_atlas_get_tex_data_as_rgba32 was removed. Backends will need to be adapted by implementing support for dynamic fonts (preferred)

Extract from ImGui doc:

ImGui Version 1.92.0 (June 2025), added texture support in Rendering Backends, which is the backbone for supporting dynamic font scaling among other things. In order to move forward and take advantage of all new features, support for ImGuiBackendFlags_RendererHasTextures will likely be REQUIRED for all backends before June 2026.

Pyodide

  • Added support for Pyodide

Contributions

Full Changelog: v1.6.3...v1.92.0

v1.6.3

21 May 20:08
76cbc64
Compare
Choose a tag to compare

What's Changed

ImGui

  • update imgui to v1.91.9b
  • Python: adapt API for ImFont:: CalcWordWrapPositionA (cf #308)

Fixes

  • update imgui_md (fix soft break handling). Cf #306
  • ImGui / Python: adapt API for ImFont:: CalcWordWrapPositionA (cf #308)
  • Fix documentation rendering (cf #316)
  • Fixes for compat with CMake 4

ImPlot

  • update implot
  • Add implot_demo.py (full python transcription of implot_demo.cpp)
  • add demo_implot_stock.py
  • python Bindings: improve setup_axis_ticks

ImPlot3d

  • Update implot3d: added PlotImage & bindings
  • implot3d_demo.py: provide nice demo textures
  • add implot3d_demo.py: full transcription of implot3d_demo.cpp
  • improve python bindings
  • adapt bindings for PlotMesh (cf #320)
  • manual bindings for setup_axis_ticks

Pure Python Backends

  • Review keyboard handling
  • Sdl: handle SDL_GL_MakeCurrent errors
  • Add SDL3 python backend
  • Add an example using wgpu (WebGPU for Python)

ImmVision

  • update immvision (fix for compat with OpenCV 4.11)

ImGuizmo

  • update ImGuizmo to v1.91.3
  • Fix customization of styles (cf #329)

ImGuiColorTextEdit

  • Update ImGuiColorTextEdit (from santaclose fork)

ImGuiMd

  • fix soft break handling. Cf #306

New Contributors


Full Changelog: v1.6.2...v1.6.3

v1.6.2

04 Jan 18:34
999a9e3
Compare
Choose a tag to compare

New library: ImPlot3D

  • The excellent ImPlot3D library is now included!

(Butterfly demo: C++ - Python)

Fixes

  • Fix #293: IM_ASSERT( g.CurrentDpiScale > 0.0f && g.CurrentDpiScale < 99.0f )
  • Fix initial window positioning / HighDPI on windows (demo window origin was offscreen)

Build

  • Some fixes for conda-forge package

Python

  • make it possible to recover from exceptions in notebooks
  • preliminary work on pyodide support

Full Changelog: v1.6.1...v1.6.2

v1.6.1

08 Dec 09:44
08280dd
Compare
Choose a tag to compare

v1.6.1

Small corrections to v1.6.0.

ImGuizmo

  • Breaking change on ImGuizmo Python API: Added classes Matrix3/6/16, modifiable by manipulate and view_manipulate
    See changes in demo_gizmo.py to see how to adapt to the new API
    Basically:
  • use gizmo.Matrix3 / Matrix6 / Matrix16 instead of np.array
  • gizmo.manipulate and view_manipulate will modify the matrices they receive
  • if using glm, you will to need to convert to Matrix16, see glm_mat4x4_to_float_list in demo_gizmo.py

Python

  • fix bindings for implot.plot_bar_groups
  • sdl pure backend: fix get_clipboard_text
  • patches for conda-forge package (in preparation)

iOs

  • Improved font rendering on iOS (use static freetype, use retina resolution)

Full Changelog: 1.6.0...v1.6.1

v1.6.0

21 Nov 19:11
1a40c5e
Compare
Choose a tag to compare

This release brings a major upgrade with Dear ImGui v1.91.5, a new python binding library (nanobind), various quality-of-life improvements (notably in the node editor), and support for Python 3.13.


Python Bindings

Transition to Nanobind - Nov 2024

We’ve replaced Pybind11 with Nanobind for Python bindings. This change should be seamless for most users. If you encounter any issues, please let us know.

Python 3.13 Support

  • Prebuilt binary wheels are now available for Python 3.11, 3.12, and 3.13. (Python 3.10 remains supported, requiring source builds.)

Additional Changes

  • glfw_backend: Updated clipboard handling to the new API.
  • Key enum bindings: Removed im_gui_ prefix from values.
  • Flags enums (e.g., InputTextFlagsPrivate_, TreeNodeFlagsPrivate_): Cleaned up unnecessary prefixes.
  • ImFontGlyph: Published methods get_codepoint(), is_visible(), and is_colored().
  • imgui_fig: Added support for user-defined Matplotlib renderers.
  • Stubbed ImVec2/ImVec4 math operators (fix #267).
  • pyglet_backend: Fixed version checks (thanks to @DragonMoffon).
  • implot: Resolved issues with setup_axis_links() bindings.
  • Optimized startup by deferring PIL and Matplotlib imports.
  • Initial steps toward supporting Pyodide.

ImmVision

Breaking Change - October 2024: Explicit Color Order Configuration

You must now explicitly set the color order (RGB or BGR) in your program. Use one of the following before displaying images:

  • C++: ImmVision::UseRgbColorOrder() or ImmVision::UseBgrColorOrder()
  • Python: immvision.use_rgb_color_order() or immvision.use_bgr_color_order()
  • Temporary overrides: ImmVision::PushColorOrderBgr/Rgb() and ImmVision::PopColorOrder().

This ensures clarity regarding color order. Failure to set it will result in an error when attempting to display images.

Additional Notes:

  • The IsColorOrderBGR member in ImageParams and the isBgrOrBgra parameter in ImageDisplay have been removed.
  • Published GlTexture in the API.
  • Prevented zooming when zoom level becomes excessively extreme.

Breaking Change - October 2024: Python Bindings immvision.ImageParams.zoom_pan_matrix

zoom_pan_matrix is published as a Tuple[Tuple[float]]. If you want to set its value, you should use tuples.

This change is due to the transition to nanobind (where cv::Matx33d are now bound to python without shared memory)
ImGui Bundle version 1.6.3 and later will make this easier by also accepting List[List[float]] and numpy arrays (after this commit)


Hello ImGui: Updated to v1.6.0

  • SVG Font Rendering: Switched from lunasvg to plutosvg (default: HELLOIMGUI_USE_FREETYPE_PLUTOSVG).
  • Added AddDockableWindow and RemoveDockableWindow APIs.
  • Enhanced demo_docking to better showcase docking and theme customization.
  • Introduced HelloImGui::ManualRender: A namespace with functions for fine-grained rendering control.
  • Progressed on Pyodide integration (for ImGui Bundle).
  • Improved font rendering for iOS.

Node Editor

Many quality of life improvements: see demo on this page

  • Enhanced popup placement and child window handling. See issue #310.
  • InputTextMultiline now works within the node editor (opens as a popup for editing).
  • Node theme colors now align better with the overall theme.

ImGuiMd

  • Added ImGuiMd::GetFont(const MarkdownFontSpec& fontSpec).

ImmApp

  • Introduced Immapp::ManualRender: A namespace with functions for fine-grained rendering control.

ImGui

  • Updated ImGui to v1.91.5.

Demos

  • Docking Demo: Improved layout and theme setup.
  • Python Demos: Removed OpenCV dependency; now uses Pillow for image loading.
  • Removed outdated demos, including ImGuizmo curve editing (only maintaining 3D Gizmo compatibility).

Contributors & Acknowledgements

  • @DragonMoffon made their first contribution in PR #269.
  • Thanks to @sammycage for assisting with font rendering improvements (see this discussion
  • Special thanks to @davidlatwe for supporting the transition from Pybind11 to Nanobind.
  • Gratitude to @wjakob for guidance on building with Nanobind.
  • Shoutout to @lukaasm for patching popup rendering in the node editor.
  • And as always a big shoutout to @ocornut, creator of Dear ImGui

Full Changelog: v1.5.2...v1.6.0


Please share your feedback for this release here! Your input is very valuable!

v1.5.2

07 Jul 20:09
3d8cc54
Compare
Choose a tag to compare

ImGui:

Hello ImGui

See changes in Hello ImGui v1.5.0

  • add FontDpiResponsive
  • add OpenGlOptions
  • add null backends
  • Improved text rendering on windows (via improved antialiasing)
  • Can set OpenGL options in hello_imgui.ini in any parent folder
  • add InputTextResizable & WidgetWithResizeHandle
  • Logger: use less vertical space
  • add Push/PopTweakedTheme (different windows can have different themes)
  • add callback PostRenderDockableWindows
  • Polish Themes

Libraries

immvision

  • fixup Custom version of cv::warpAffine for small sizes
  • ImmVision::Image is now resizable / added ImmVision::ImageDisplayResizable
  • fix icon buttons size
  • Add option ResizeKeepAspectRatio: when resizing an image, the widget will keep the aspect ratio of the image

imgui-knobs

  • can drag knob horizontally or vertically

ImPlot

  • Add Python binding for colors (cf #221)

imgui-node-editor

  • Add ForceWindowContentWidthToNodeWidth: ImGui::TextWrapped(), ImGui::Separator(), and ImGui::SliderXXX can now fit inside a Node. See proposed fix to @thedmd here: thedmd/imgui-node-editor#298
  • The theme of the node editor can be derived and adapted automatically from ImGui Theme (see UpdateNodeEditorColorsFromImguiColors)

Python

  • imgui_fig is now resizable
  • Added binding for ColorPicker4
  • Added mathematical operators for ImVec2, ImVec4, ImColor
  • add pickle support for ImVec2, ImVec4, ImColor
  • Add eq operator to ImVec2/4/ImColor bindings
  • add pydantic support for ImVec2, ImVec4, ImColor

Build

Contributions and contributors

Many thanks to all contributors!

New Contributors

Full Changelog: v1.3.0...v1.5.0

v1.5.0-rc1

24 May 06:54
2f2e76d
Compare
Choose a tag to compare
v1.5.0-rc1 Pre-release
Pre-release

High level changes overview

ImGui:

Hello ImGui

See changes in Hello ImGui v1.5.0-rc1

  • add FontDpiResponsive
  • add OpenGlOptions
  • add null backends
  • Can set OpenGL options in hello_imgui.ini in any parent folder
  • add InputTextResizable & WidgetWithResizeHandle
  • Logger: use less vertical space

Libraries

  • immvision:
    • fixup Custom version of cv::warpAffine for small sizes
    • ImmVision::Image is now resizable / added ImmVision::ImageDisplayResizable
  • imgui-knobs: can drag knob horizontally or vertically

Python

  • imgui_fig is now resizable

Build


Full changes

Pull requests & contributors

New Contributors

Full Changelog: v1.3.0...v1.5.0-rc1


Get python wheels from here

v1.3.0

19 Jan 11:26
Compare
Choose a tag to compare

Version numbers are synced between hello_imgui and imgui_bundle.

New libraries

Bundle

  • Update imgui to v1.90.1-docking
  • Update implot, imgui_test_engine, imgui-node-editor

Python

  • Release the Python GIL when rendering: improve multithreading performance (see #171)
  • Fix an issue under Ubuntu where cibuildwheel binary wheels did not work (see #170)

Hello ImGui

Fixes

  • Fix usage of ShowIdStackTool without ImGui Test Engine (see #166)
  • ImGuiColorTextEdit: added bindings for GetSelection / Fixed keyboard selection (see #169)

Full Changelog: v1.2.1...v1.3.0

v1.2.1

08 Jan 22:38
Compare
Choose a tag to compare

Hello ImGui

Backends

iOS

Android

Python

Bundle


Contributors

New Contributors

Full Changelog: v1.1.0...v1.2.1

v1.1.0

05 Dec 23:30
Compare
Choose a tag to compare

3D

  • Added callback runnerParams.callbacks.CustomBackground: display any 3D scene in the background of the app: see doc
image

App deployment

  • Added support for macOS application bundles
  • Added option to specify where settings are saved: RunnerParams.iniFolderType can be set to: CurrentFolder, AppUserConfigFolder, DocumentsFolder, HomeFolder, TempFolder, AppExecutableFolder.
  • Support for Application Icon: the file assets/app_settings/icon.png will be used to generate the window icon (C++, Python), and app icon (C++ only) for any platform. See assets structure below:
assets/
├── world.jpg                         # A custom asset
├── app_settings/                     # Application settings
│         ├── icon.png                # This will be the app icon, it should be square
│         │                           # and at least 512x512. It will  be converted
│         │                           # to the right format, for each platform.
│         ├── apple/
│         │         └── Info.plist    # macOS and iOS app settings
│         │                           # (or Info.ios.plist + Info.macos.plist)
├── fonts/
│         ├── DroidSans.ttf               # Default fonts
│         └── fontawesome-webfont.ttf     #     used by HelloImGui
│         ├── Roboto
│         │    ├── Roboto-Bold.ttf        # Font used by Markdown
│         │    ├── Roboto-BoldItalic.ttf
│         │    ├── Roboto-Regular.ttf
│         │    └── Roboto-RegularItalic.ttf
│         ├── SourceCodePro-Regular.ttf
├── images
│         └── markdown_broken_image.png

Python bindings

CMake

  • hello_imgui_add_app and imgui_bundle.add_app can now accept ASSETS_LOCATION as a parameter e.g. hello_imgui_add_app(my_app file1.cpp file2.cpp ASSETS_LOCATION my_assets)