Releases: pthom/imgui_bundle
v1.92.5
This version is based on ImGui v1.92.5 & hello_imgui v1.92.5.
Updates to libraries
- Updates imgui to v1.92.5-docking
- Update imgui_test_engine to v1.92.5
- update hello_imgui to v1.92.5
- update implot to latest version
- update implot3d to latest version
- update ImGuizmo to latest version
- update ImCoolbar to latest version
Python bindings
- most pip dependencies are now optional: only numpy is required. Pydantic, PyOpenGL, glfw, Pillow, matplotlib, and opencv-python are optional (if you use features that require them)
- Vec2Protocol and Vec4Protocol are iterable / unpackable
- import immapp_notebook.run_nb only if IPython is installed
- option IMGUI_BUNDLE_PYTHON_DISABLE_OPENGL2 (Off by default): can disable Python backend support for OpenGL2
- Update wgpu example to use wgpu latest API (compatible with v1.92)
- Implot & ImPlot3d: fix bindings for setup_axis_ticks
Tooling
- Fix pyodide build (force build sdl2 and libthtml5 with -fPIC)
Full Changelog: v1.92.4...v1.92.5
v1.92.4
v1.92.4
This version is based on ImGui v1.92.3, and brings some small fixes.
- InputTextMultiline: when inside imgui-node-editor, improve handling of single preview
- imgui-node-editor: solve clipping issue which occur when a popup is open inside a node
New Contributors: @XenoAmess made their first contribution in #393 (Fallback for __file__ in Pyodide demo)
Full Changelog: v1.92.3...v1.92.4
v1.92.3
Updates to libraries
ImGui:
- Updates imgui and imgui_test_engine to v1.92.3
hello_imgui:
- update to v1.92.3
- add SetLoadAssetFileDataFunction (and python binding): a way to customize asset loading
imgui_md:
imgui-knobs, ImGuizmo, imgui_toggle:
- update to latest version
ImGuiColorTextEdit:
- update to latest version (from santaclose fork)
Python bindings:
ImGui bindings:
- ImGui Enums now use 'enum.IntFlag'
(This impacts only the typing checks, not the runtime behavior)
This means that you may replace code like:
imgui.WindowFlags_.no_collapse.value | imgui.WindowFlags_.no_decoration.valuewith:
imgui.WindowFlags_.no_collapse | imgui.WindowFlags_.no_decoration- imgui.push_font (accepts optional font)
- Improve typing for ImVec2 and ImVec4 (use different protocols. Thanks to @joegnis)
Pure Python Backends
Pure Python Backends
- Fix pygame backend (thanks Dom Ormsby)
- Fix issue when pasting with glfw backend (thanks to @sunsigil)
Other
- ImGuizmo:handle deltaMatrix / document Manipulate API
What's Changed
- Update PygameRenderer by @d-orm in #372
- Uses different protocols for Python binding class ImVec2 and ImVec4 by @joegnis in #374
New Contributors
- @d-orm made their first contribution in #372
- @joegnis made their first contribution in #374
- @sunsigil made their first contribution in #388
Full Changelog: v1.92.0...v1.92.3
v1.92.0
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_rgba32was 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.
- Read ImGui backend doc: flag
ImGuiBackendFlags_RendererHasTextures(1.92+) (read the part "Rendering: Adding support for ImGuiBackendFlags_RendererHasTextures (1.92+)"). - For inspiration, also look at opengl_base_backend implementation of _update_texture().
Pyodide
- Added support for Pyodide
Contributions
- fix: exclude
MkTimefrom implot_internal stubs by @tlambert03 in #349 - Add imgui_ctx.tree_node_ex (flags are missing in imgui_ctx.tree_node) by @zaicruvoir1rominet in #353
- test: add test to ensure that stub files are valid by @tlambert03 in #351
Full Changelog: v1.6.3...v1.92.0
v1.6.3
What's Changed
- Fix matplotlib example due to use of a deprecated function by @thiago4455 in #305
- Add SDL3 python backend. by @Aermoss in #340
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
- @thiago4455 made their first contribution in #305
- @Aermoss made their first contribution in #340
Full Changelog: v1.6.2...v1.6.3
v1.6.2
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
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/Matrix16instead ofnp.array gizmo.manipulateandview_manipulatewill modify the matrices they receive- if using glm, you will to need to convert to Matrix16, see
glm_mat4x4_to_float_listin 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
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 methodsget_codepoint(),is_visible(), andis_colored().imgui_fig: Added support for user-defined Matplotlib renderers.- Stubbed
ImVec2/ImVec4math operators (fix #267). pyglet_backend: Fixed version checks (thanks to @DragonMoffon).implot: Resolved issues withsetup_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()orImmVision::UseBgrColorOrder() - Python:
immvision.use_rgb_color_order()orimmvision.use_bgr_color_order() - Temporary overrides:
ImmVision::PushColorOrderBgr/Rgb()andImmVision::PopColorOrder().
This ensures clarity regarding color order. Failure to set it will result in an error when attempting to display images.
Additional Notes:
- The
IsColorOrderBGRmember inImageParamsand theisBgrOrBgraparameter inImageDisplayhave been removed.
- Published
GlTexturein 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
lunasvgtoplutosvg(default:HELLOIMGUI_USE_FREETYPE_PLUTOSVG). - Added
AddDockableWindowandRemoveDockableWindowAPIs. - Enhanced
demo_dockingto 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.
InputTextMultilinenow 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
ImGui:
- Updated ImGui to v1.90.9-docking
- Added support for StackLayout: ImGui::BeginHorizontal & ImGui::BeginVertical (by @thedmd)
- Warn if users reuse an ID (cf ocornut/imgui#7669)
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
- Add CMake options to disable some libraries
Contributions and contributors
Many thanks to all contributors!
- Update bindings_intro with updated steps by @learn-more in #177
- Add python markdown div example by @learn-more in #176
- update manual pybind function name for imgui backends by @hugle in #203
- MacOS binary wheel installation by @dcnieho in #219
New Contributors
- @learn-more made their first contribution in #177
- @hugle made their first contribution in #203
Full Changelog: v1.3.0...v1.5.0
v1.5.0-rc1
High level changes overview
ImGui:
- Updated ImGui to v1.90.5-docking
- Added support for StackLayout (by @thedmd)
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
- Add CMake options to disable some libraries
Full changes
Pull requests & contributors
- Update bindings_intro with updated steps by @learn-more in #177
- Add python markdown div example by @learn-more in #176
- update manual pybind function name for imgui backends by @hugle in #203
New Contributors
- @learn-more made their first contribution in #177
- @hugle made their first contribution in #203
Full Changelog: v1.3.0...v1.5.0-rc1
Get python wheels from here