Skip to content

Releases: pthom/imgui_bundle

v1.92.801

13 May 11:55
995d443

Choose a tag to compare

This release fixes the version number for the python distribution. No further changes.

v1.92.800

13 May 08:15
def5768

Choose a tag to compare

v1.92.800

Updated Dear ImGui to v1.92.8

See release info for v1.92.8.

Breaking changes: add_rect, add_polyline, path_stroke argument order

Dear ImGui v1.92.8 swapped the last two arguments of three ImDrawList
drawing functions so that thickness (which is set explicitly far more
often than flags) comes first. The bindings track this change.

For Python users — the affected methods on imgui.ImDrawList:

Method Old signature New signature
add_rect (p_min, p_max, col, rounding, flags, thickness) (p_min, p_max, col, rounding, thickness, flags)
add_polyline (points, col, flags, thickness) (points, col, thickness, flags)
path_stroke (col, flags, thickness) (col, thickness, flags)

If you use only positional arguments and pass 5+ of them, swap the last two:

# Before
draw_list.add_rect(p0, p1, col, rounding, imgui.ImDrawFlags_.none.value, 1.5)
draw_list.path_stroke(col, imgui.ImDrawFlags_.closed.value, thickness)

# After
draw_list.add_rect(p0, p1, col, rounding, 1.5, imgui.ImDrawFlags_.none.value)
draw_list.path_stroke(col, thickness, imgui.ImDrawFlags_.closed.value)

Old-order calls will not silently misrender — they are caught by one of three
mechanisms:

  1. Static type-check (recommended). Running mypy or pyright once
    after upgrading flags every call that passes a float literal where the
    new signature expects flags: int:
    Argument of type "float" cannot be assigned to parameter "flags" of type
    "ImDrawFlags" in function "add_rect"
    
  2. Runtime, float thickness. pybind11 refuses to convert float→int,
    so add_rect(..., flags=ALL, thickness=2.0) written in the old order
    raises TypeError immediately.
  3. Runtime, int thickness. When both arguments are ints (e.g.
    thickness=2), the swapped value lands in flags and trips ImGui's own
    guard (flags & ImDrawFlags_InvalidMask_) == 0, raising:
    RuntimeError: IM_ASSERT(... "Incorrect parameter. Did you swapped
    'thickness' and 'flags'?")
    
    The mask reserves bits 0-3 specifically to catch this swap: any small
    integer thickness ends up with bits 0-3 set, while every valid flag uses
    only bits 4-9.

In practice this covers every realistic old-order call site, so no extra
detection layer is added on the Python side.

For C++ users — same swap on ImDrawList::AddRect, ImDrawList::AddPolyline
and ImDrawList::PathStroke. See the upstream ImGui v1.92.8 changelog for
the full rationale; the short version is that the typical call site changes
from:

// Before
draw_list->AddRect(p_min, p_max, col, rounding, ImDrawFlags_None, border_size);
// After
draw_list->AddRect(p_min, p_max, col, rounding, border_size);

When IMGUI_DISABLE_OBSOLETE_FUNCTIONS is off (the default), ImGui keeps an
inline redirection so old call sites still compile; with it on (as in the
ImGui Bundle Python build), the old overloads are =delete, surfacing
mistakes at compile time.

Updated ImGuiColorTextEdit (architecture refactor)

ImGuiColorTextEdit was rebased on its upstream future branch, which
introduces a layered architecture (Document / TypeSetter / Colorizer /
Bracketeer / LineFold / MiniMap / AutoComplete overlays) and lays the
groundwork for word wrap, line folding, and a VSCode-style minimap.

image

The public C++ API changed in ways that propagate to the Python bindings.
All cursor/selection coordinates now go through dedicated structs instead
of (line, column) integer pairs, and column is renamed to index in
the document-coordinate struct (rows differ from lines once word-wrap is
enabled).

Breaking changes: TextEditor API

For Python users — the most common call sites:

Before After
editor.get_main_cursor_position().column editor.get_main_cursor_position().index
editor.set_cursor(line, col) editor.set_cursor(TextEditor.DocPos(line, col))
editor.select_region(sl, sc, el, ec) editor.select_region(TextEditor.DocPos(sl, sc), TextEditor.DocPos(el, ec))
editor.get_word_at_screen_pos(pos) editor.get_word_at_mouse_pos(pos)
editor.grow_selections_to_curly_brackets() editor.grow_selections()
editor.shrink_selections_to_curly_brackets() editor.shrink_selections()
editor.get_first_visible_line() / get_last_visible_line() editor.get_first_visible_row() / get_last_visible_row()

Context-menu and hover callbacks now receive a PopupData object instead
of (line, column) integers:

# Before
def text_context_menu(line: int, column: int):
    ...
editor.set_text_context_menu_callback(text_context_menu)

def line_number_context_menu(line: int):
    ...
editor.set_line_number_context_menu_callback(line_number_context_menu)

# After
def text_context_menu(data: TextEditor.PopupData):
    line, column = data.pos.line, data.pos.index
    ...

def line_number_context_menu(data: TextEditor.PopupData):
    line = data.pos.line
    ...

For C++ users — same shape, with TextEditor::DocPos{line, index} and
TextEditor::PopupData& data. Line/column counters are now size_t (use
%zu in printf-style format strings).

Test Engine: safer Python integration

  • Catch Python exceptions in test_func / gui_func / teardown_func. Previously a
    Python exception in one of these callbacks propagated as nanobind::python_error
    on the engine's coroutine thread, hit std::terminate, and killed the process
    (taking remaining queued tests with it). Exceptions are now printed as a
    traceback, reported via ImGuiTestEngine_Error (test marked as TestStatus.error),
    and swallowed so the engine continues.
  • imgui_test_engine CrashHandler: install SA_RESETHAND on *nix to avoid
    abort() reentry spam.
  • Fix imgui_bundle.imgui.<submodule> imports (e.g. imgui.test_engine).

imgui-node-editor

  • Suppress hover/active for widgets inside a node that is covered by another
    node.
  • Fix popup position for Combo and ColorEdit inside the node editor canvas
    (three coords needed canvas→screen translation; the right guard is
    NextWindowData.HasFlags, not WindowFlags).
  • Link color now automatic, based on light vs dark theme.
  • UpdateNodeEditorColorsFromImguiColors(): improve colors, especially
    selection colors.
  • README: documented keyboard/mouse interactions; added doc in the header.

ImmVision

  • Clamp images so their texture does not bleed when dragged completely
    outside the viewport.
  • Improved resize: widget size, contrast, and behavior in a zoomed node
    editor.

ImGui (StackLayout patch)

  • StackLayout: don't inflate measured_size when the layout has no springs
    (fixes fractional-height alignment drift in some layouts).

Pyodide / Playground

  • Switched to pyodide 0.29.4.
  • New WebGL binding for Pyodide: webgl.register_texture /
    webgl.unregister_texture. Use it inside HelloImGui's custom_background
    to upload textures produced from JS-side WebGL2RenderingContext.
    See pyodide_projects/projects/playground/examples for documented examples.
  • Playground: added documented WebGL examples, source link on the minimal
    example, and restore the landing page on browser back-to-root.
  • Added implot_demo, implot3d_demo, and imgui_demo to the playground.
  • New "WebAudio minimal beep" example demonstrating browser audio from Python.
  • Save Python code to a file before running it (for nicer tracebacks).
  • Per-file deployment of demo source into the Emscripten FS
    (imgui_bundle_add_demo.cmake).
  • Non-blocking loading banner over the canvas, with explanatory text,
    smooth time-based progress, rotating tips, and a lazy pendulum video.
  • Smooth progress bar for per-demo wheel installs; snap back to 0 when the
    banner reopens.
  • Pyodide + LaTeX: fix issues on consecutive runs.
  • min_pyodide_app: log errors to the JS console.

Python backends

  • Fix SDL python backends on Wayland (#463).
  • Move the PyOpenGL Wayland workaround out of imgui_bundle/__init__.py
    (#321, #463): applied only by the affected backends.

Full Changelog: v1.92.700...v1.92.800

v1.92.700

26 Apr 22:23
5c43b1b

Choose a tag to compare

Updated Dear ImGui to v1.92.7

See release info for v1.92.7.

imgui-bundle.pages.dev

The docs and demos were relocated to a new and faster server, with new URL addresses. The new URL are also much easier to remember.

(Note: all previous url will now automatically redirect to the new urls)

Markdown Renderer Improvements

image

Added LaTeX math rendering

LaTeX math is now supported in the Markdown renderer, using the new imgui_microtex library (native rendering via MicroTeX + FreeType). Enable it with AddOnsParams.with_latex = True.

  • Inline $...$ and display $$...$$ math in Markdown
  • Python bindings for imgui_microtex
  • Pyodide: lazy-download LaTeX fonts via jsdelivr
  • Frame-generation cache eviction (default 60 frames)

Markdown: HTML and CommonMark extensions

  • Task lists: - [ ] / - [x]
  • GitHub-style admonitions: > [!NOTE], > [!WARNING], > [!TIP], etc.
  • Permissive autolinks (bare URLs become links; opt-out available)
  • Inline HTML spans: <sub>, <sup>, <kbd>, <mark>, plus an OnHtmlSpan callback for custom spans
  • <details> / <summary> collapsibles
  • <pre> blocks
  • <img> tags with width/height, async download (desktop via libcurl, Pyodide via JS fetch)

Other Markdown improvements

  • Fix word wrapping issues around transitions between bold/italic and normal
  • Make spacing between blocks, headers and paragraphs more coherent
  • Adaptive code snippet colors: new SnippetTheme::Auto picks dark or light based on current ImGui theme
  • TextEdit no longer shows a caret in coded blocks.

Pyodide / Playground

image
  • Improved online playground
  • Clipboard support (SDL2 + Emscripten)
  • immapp.download_url_bytes / immapp.download_url_bytes_async
  • Pin pyodide-build version to pyodide version
  • Lazy import for pydantic types
  • numpy is now optional (no runtime dependency)

ImPlot v1.0 - Per-index color/size support

  • Updated ImPlot to v1.0
  • ImPlotSpec: numpy array support for per-index color/size fields (fill_colors, line_colors, marker_fill_colors, marker_line_colors, marker_sizes)
image

ImPlot3D v0.4 - Per-index color/size support

  • Updated ImPlot3D to v0.4
  • ImPlot3DSpec: same numpy array fields as ImPlot
  • New Python demo: Per-Index Colors (colorful lines, scatter, triangles, quads, Gouraud-shaded duck)
  • Refactored Custom Per-Point Style demo to use batched per-index arrays
image

ImGuiColorTextEdit: switched to goossens rewrite (breaking API changes)

Replaced the santaclose-based ImGuiColorTextEdit with the complete rewrite by Johan A. Goossens. This brings a cleaner architecture, proper UTF-8 support, C++17, no regex/boost dependency, and many new features.

image

New features

  • Find/replace UI with keyboard shortcuts
  • Text markers (colored line highlights with tooltips)
  • Bracket matching with visual indicators
  • Line decorators (custom gutter content per line)
  • Context menu callbacks (separate for line numbers and text area)
  • Change and transaction callbacks
  • Filter selections/lines (transform text via callbacks)
  • Autocomplete framework
  • TextDiff widget (combined and side-by-side diff view)
  • Many more languages (C#, JSON, Markdown, AngelScript)

Breaking API changes (Python)

Old New
TextEditor.PaletteId.dark TextEditor.get_dark_palette()
TextEditor.PaletteId.light TextEditor.get_light_palette()
TextEditor.PaletteId.retro_blue (removed)
TextEditor.PaletteId.mariana (removed)
TextEditor.LanguageDefinitionId.cpp TextEditor.Language.cpp()
set_language_definition(id) set_language(Language.cpp())
set_cursor_position(line, col) set_cursor(line, col)
set_view_at_line(line, mode) scroll_to_line(line, alignment)
get_selected_text(cursor) get_cursor_text(cursor)
get_cursor_position() -> TextPosition get_main_cursor_position() -> CursorPosition
render(title, border, size) -> bool render(title, size, border) -> None
undo(steps) / redo(steps) undo() / redo() (no steps)
SnippetTheme.retro_blue / .mariana (removed)

To detect text changes, use set_change_callback(callback, delay_ms) instead of the old render() return value.

See the breaking changes note at the top of imgui_color_text_edit.pyi for a quick summary.

Breaking API changes (C++)

Same renames as Python (CamelCase). Additionally:

  • Render() parameter order changed: (title, size, border) instead of (title, border, size)
  • Render() returns void instead of bool

hello_imgui

  • Add emscriptenAllowBrowserZoomShortcuts preference: forward browser zoom shortcuts (Ctrl+/Ctrl-) to the browser, true by default
  • Add ImageAndSizeFromEncodedData and LoadImageDataFromEncodedData for loading images from in-memory encoded data
  • IniFolderLocation on Emscripten: return "" for CurrentFolder, "/" for others
  • LoadDefaultFont_WithFontAwesomeIcons: log a message if the icon font file is not found (instead of silently failing)
  • Skip TearDown if it already ran at exit (e.g. if it threw an exception itself)
  • Suppress GCC false positive -Wstringop-overflow in stb_image
  • Document theming API

Test Engine: interaction and screenshot tooling

New helpers for driving an ImGui app from Python (or C++) and capturing screenshots, useful for visual self-validation and automated testing.

  • New immapp.testing module: high-level helpers to interact with widgets and capture screenshots
  • Bind imgui_capture_tool.h for Python; add CaptureSetFilename
  • HelloImGui::OpenglScreenshotRgb: report an explicit error if capture fails

ImmVision

  • Fix colormap rendering for single-channel images
  • Improve draw pixel values: better text contrast against background
  • Fix zoom synchronization between linked views
  • Polish overall look
  • Add license file

Other library updates

  • Updated ImCoolBar, ImGuizmo, ImAnim, nanovg, ImFileDialog, imgui_tex_inspect, md4c

Build & CI

  • MSVC: add /bigobj for implot (fixes Windows ARM64 wheel build)
  • CMake: refuse in-source builds
  • CI: add win64 wheels, bump cibuildwheel/pypi-publish/deploy-pages/upload-pages-artifact
  • Fix ImGui StackLayout fractional-height alignment drift

Python bindings & API fixes

  • Expose TextFilter.input_buf property (#451)
  • imgui_explorer: show im_anim.pyi in Python (#406)
  • Fix get_style_color_vec4 / color_convert_rgb_to_hsv bindings
  • register_demos_assets_folder() helper
  • async runners: fix an issue where immapp.run_async could use 100% CPU (cf #460)

Documentation

  • Developer docs: fork management, justfile workflows, bindings, Pyodide
  • FAQ review, Nuitka compatibility docs
  • Interactive explorable demos

Full Changelog: v1.92.601...v1.92.700

v1.92.601

18 Mar 12:09
9cfcb98

Choose a tag to compare

ImmVision: OpenCV is now optional / use GPU rendering pipeline

ImmVision no longer requires OpenCV: this way the compilation and installation of the library is much faster, and the resulting binaries are smaller.

All image processing (color conversion, statistics, alpha blending, drawing annotations, zoom/pan transform, image saving) has been reimplemented without OpenCV dependencies.

  • New core types: ImageBuffer, Point, Point2d, Size, Matrix33d replace cv::Mat and OpenCV geometric types in all public APIs
  • Zero-copy interop: When OpenCV is available (IMMVISION_HAS_OPENCV), cv::Mat converts seamlessly to/from ImageBuffer via implicit constructors
  • Python: No change for Python users — ImmVision continues to use numpy arrays (the cvnp_nano bridge has been removed)
  • Drawing primitives: Custom bitmap font and Bresenham drawing replace OpenCV's putText, line, ellipse, rectangle
  • Image saving: Uses stb_image_write (PNG/JPG/BMP/TGA/HDR) instead of cv::imwrite
  • Zoom/pan: Custom implementation with nearest, bilinear, and area-based downscaling
  • ImmDebug API change: ImmDebug() now assumes RGB (the common default); use ImmDebugBgr() for OpenCV BGR images. Fixed per-image color order handling in the viewer.
  • Smaller wheels: ~16% size reduction across all platforms (45 MB total savings)
  • Faster CI builds: 5–8 minutes faster per platform (no more OpenCV compilation)
  • New features: colormap support for single-channel integer images, multithreaded pixel drawing/resize, fixed watched pixel delete button visibility

The ImmVision rendering pipeline has been rewritten to use GPU texture sampling and ImGui DrawList:

  • GPU zoom/pan: Image uploaded to GPU texture once (with mipmaps); pan/zoom handled via UV coordinates — no more per-frame CPU warp
  • Mipmap filtering: GL_NEAREST at high zoom (pixel-perfect), GL_LINEAR for moderate zoom, GL_LINEAR_MIPMAP_LINEAR for downsampling (high-quality anti-aliasing)
  • DrawList annotations: Grid lines, pixel values, and watched pixel markers drawn via ImGui DrawList in screen space (TrueType font replaces bitmap font)
  • DrawList backgrounds: School paper and alpha checkerboard rendered via DrawList (no longer composited into texture)
  • Inspector redesign: Horizontal filmstrip with scrolling and adjustable thumbnail size replaces the old vertical listbox
  • Other fixes: "Export colormap image" now available for uint8 images with colormap; save dialog remembers last directory

demo_imgui_bundle (aka "Dear ImGui Bundle Explorer")

  • Display version and compilation time at startup (C++, emscripten and Python versions)
  • Python demo code is also shown in the python version (when installed from Pypi)

hello_imgui

  • Fix potential memory error in font handling (_LoadFontImpl: pass font buffer allocated with IM_ALLOC)
  • Add HelloImGui::LoadImageDataFromAsset() — decode an image from assets into CPU memory (C++ only)
  • Compile imgui_impl_metal.mm and MetalNanoVG with -fobjc-arc (fixes ARC bridge cast warnings)
  • Workaround plutovg file(RELATIVE_PATH) error with relative CMAKE_INSTALL_PREFIX (scikit-build-core)

Build & warnings cleanup

We are now at zero-warnings, on all CI / platforms and configs.

  • CMake: fetch freetype & plutovg with EXCLUDE_FROM_ALL
  • CMake: fix ImAnim exclusion when IMGUI_BUNDLE_WITH_IMANIM_FULL_DEMOS is off
  • CMake: ibd_add_this_folder_as_demos_library now links demo_utils (fixes GCC linker error)
  • CMake: suppress Apple ld duplicate library warnings
  • CMake: suppress third-party warnings (ImAnim: -Wno-unused-result, -Wno-nontrivial-memaccess; plutosvg: -Wno-deprecated-declarations)
  • CMake: normalize install path (./lib/lib) to fix CMP0177 warning
  • Fix ImFileDialog u8path deprecation warning (C++20 compatibility)
  • Fix GCC -Wformat-truncation warning in demo_imgui_bundle_intro.cpp

Contributors

  • Fix mouse click for pygame backend by @anhddo in #448

Full Changelog: v1.92.600...v1.92.601

V1.92.600

04 Mar 08:30
f1228dd

Choose a tag to compare

v1.92.600

Based on ImGui v1.92.6 & hello_imgui v1.92.6.

Dear ImGui Explorer

Dear ImGui Explorer (formerly "imgui_manual") has been rewritten from scratch and integrated into the Dear ImGui Bundle repository. It was previously a standalone project; Dear ImGui Bundle is now its parent repository.

It provides interactive manuals for ImGui, ImPlot, ImPlot3D, and ImAnim — with side-by-side C++/Python code, syntax highlighting, and search in API reference files (headers, Python stubs).

  • Follow source: click on any demo widget to jump to its source code
  • Search across API files with Ctrl+Shift+F
  • Lazy-load demo code files (desktop and Emscripten)
  • Deployed at pthom.github.io/imgui_explorer
image

Dear ImGui Bundle Explorer (formerly "ImGui Bundle Interactive Manual")

The interactive manual has been renamed to Dear ImGui Bundle Explorer and significantly enhanced:

image

New library: ImAnim

Added ImAnim, a tweening and animation library for ImGui.

  • Available via immapp.run(..., with_im_anim=True) / ImmApp::AddOnParams::withImAnim
  • Python API adapted for get_float, get_vec2, get_color, etc.

Updates to libraries

  • Update imgui to v1.92.6-docking
  • Update hello_imgui to v1.92.6
  • Update implot to latest version (breaking change: added ImPlotSpec, removed plot item styling)
  • Update implot3d to latest version (breaking change: added ImPlot3DSpec)
  • Update ImGuiColorTextEdit: line numbers always visible in separate gutter, improved selection colors
  • Update imgui_knobs: added SetKnobColors, UnsetKnobColors, default color adapts to light/dark theme
  • Update imgui_md: render tables using ImGui tables (resizable columns), delay before showing link hrefs

Python: Async run and notebook support

  • Added hello_imgui.run_async() / immapp.run_async() for async/await support (with maximal performance). See doc for async
  • Added immapp.nb module for non-blocking Jupyter notebook execution (nb.start(), nb.stop(), nb.is_running()). See doc for notebook
  • Added hello_imgui.nb convenience module

Pyodide (web) support

  • Added Docker build system for Pyodide wheels
  • run() is fire-and-forget in Pyodide; use run_async() for awaitable behavior
  • CI workflow for Pyodide builds
  • Pyodide wheels now exclude demo code to reduce size

Python bindings

  • Added em_size() and em_to_vec2() at root of imgui_bundle for DPI-independent sizing
  • Added __getitem__ / __setitem__ (subscript []) for ImVec2 and ImVec4
  • Configurable wheel builds with selective module inclusion
  • Fix: accept read-only numpy arrays (e.g. from pandas) in nanobind bindings

hello_imgui improvements

  • Added AddAssetsSearchPath() / ClearAssetsSearchPaths() / GetAssetsSearchPaths() for multi-folder asset resolution at runtime
  • Added topMost window attribute
  • Added iniDisable and iniClearPreviousSettings params
  • Added FpsIdling::vsyncToMonitor and FpsIdling::fpsMax settings
  • Added theme_changed callback
  • Fix: ManualRender RunnerParams lifetime management

Build & CI

  • Added ARM Linux (aarch64) wheel builds using native ubuntu-24.04-arm runners
  • Reduced Emscripten .data sizes: demos only bundle the assets they actually need
  • Deduplicated demo assets (removed ~1.1M of files duplicated between assets/ and demos_assets/)
  • Emscripten: use GLFW3 backend by default instead of SDL2
  • Fix: shell injection in BrowseToUrl (replaced system() with fork+execlp)

Documentation

  • Complete documentation overhaul using Jupyter Book, available as PDF
  • Added developer documentation (building, bindings, repo structure)

Full Changelog: v1.92.5...v1.92.600

v1.92.5

25 Nov 21:50
f1f7827

Choose a tag to compare

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

29 Sep 11:46
9401810

Choose a tag to compare

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

17 Sep 22:13
0ad27be

Choose a tag to compare

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.value

with:

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

Full Changelog: v1.92.0...v1.92.3

v1.92.0

28 Jun 20:02
45da617

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

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