v0.4.0
This is a major feature release that introduces several new extensions, improves the docking API, and adds a convenient application runner.
🎉 New Features
New Extensions
-
dear-app - A convenient application runner built on Winit + WGPU
- Provides easy-to-use application framework with docking support
- Built-in theme support and add-ons integration
- Simplifies the setup process for new projects
- See examples:
dear_app_quickstart.rs,dear_app_docking.rs
-
dear-implot3d - 3D plotting extension
- Full Rust bindings for ImPlot3D (cimplot3d C API)
- Support for 3D scatter plots, line plots, surface plots, mesh plots
- Triangle and quad rendering capabilities
- 3D image display support
- Comprehensive style customization
- Example:
implot3d_basic.rs
-
dear-imguizmo-quat - Quaternion-based 3D gizmo
- Full Rust bindings for ImGuIZMO.quat (cimguizmo_quat C API)
- Quaternion manipulation widgets
- 3D direction and rotation controls
- Example:
imguizmo_quat_basic.rs
-
dear-file-browser - File browser and dialog extension
- Native OS file dialogs via
rfdbackend - Pure ImGui in-UI file browser implementation
- Support for file/folder selection, save dialogs
- Customizable file filters and multi-selection
- Examples:
file_dialog_native.rs,file_browser_imgui.rs
- Native OS file dialogs via
Core Improvements
-
Safe DockBuilder API (#14d96cf)
- Added
Ui::set_next_window_viewport()andUi::get_id()helper methods - Introduced
DockNode<'ui>with read-only queries andNodeRecttype - Added safe methods:
DockBuilder::node(),central_node(),node_exists() - Removed unsafe methods:
DockBuilder::get_node(),get_central_node() - Updated docking examples to use safe APIs
- Added
-
Enhanced Docking Support
- Fixed docking split node function for more reliable layout management
- Improved game engine docking example with better UI organization
- Updated dockspace minimal example with safe API usage
🔧 Improvements
Dependencies
- Updated wgpu to v27 - Latest WGPU version with improved performance and features
- Updated workspace to use Rust edition 2024
Build System
- Added prebuilt binary packaging support for
dear-imguizmo-quat-sys - Improved CI workflow for prebuilt binaries
- Added cargo clippy checks to CI pipeline
- Optimized cargo exclude patterns for smaller package sizes
Documentation
- Comprehensive README updates for all new extensions
- Updated compatibility matrix in
docs/COMPATIBILITY.md - Added detailed usage examples for new features
- Improved build instructions and feature flag documentation
📦 Version Updates
Core Packages (0.4.0)
dear-imgui-rs→ 0.4.0dear-imgui-sys→ 0.4.0dear-imgui-wgpu→ 0.4.0dear-imgui-glow→ 0.4.0dear-imgui-winit→ 0.4.0
Application Runner (0.4.0)
dear-app→ 0.4.0 (new)
Extensions (0.4.0)
dear-implot→ 0.4.0dear-implot-sys→ 0.4.0dear-imnodes→ 0.4.0dear-imnodes-sys→ 0.4.0dear-imguizmo→ 0.4.0dear-imguizmo-sys→ 0.4.0dear-implot3d→ 0.4.0 (new)dear-implot3d-sys→ 0.4.0 (new)dear-imguizmo-quat→ 0.4.0 (new)dear-imguizmo-quat-sys→ 0.4.0 (new)dear-file-browser→ 0.4.0 (new)
📚 Examples
New examples added:
dear_app_quickstart.rs- Quick start guide using dear-appdear_app_docking.rs- Docking example using dear-appimplot3d_basic.rs- Comprehensive 3D plotting demoimguizmo_quat_basic.rs- Quaternion gizmo demonstrationfile_dialog_native.rs- Native file dialog usagefile_browser_imgui.rs- ImGui file browser UI
Updated examples:
game_engine_docking.rs- Significantly improved with better layout and featuresdockspace_minimal.rs- Rewritten to use safe DockBuilder APIstables_minimal.rs- Minor improvements
⚠️ Breaking Changes
- DockBuilder API: Removed unsafe methods
get_node()andget_central_node(). Use the new safe alternatives:node()andcentral_node() - Docking Split API: Updated signature for split node functions to be more type-safe
🔮 Experimental
- Multi-viewport support is still work-in-progress and not production-ready
- Test example available:
cargo run --bin multi_viewport_wgpu --features multi-viewport - This feature is excluded from this release as it's not yet complete
- Test example available:
📖 Migration Guide
Updating DockBuilder Usage
Before (v0.3.0):
unsafe {
let node = DockBuilder::get_node(dock_id);
let central = DockBuilder::get_central_node(dock_id);
}After (v0.4.0):
if let Some(node) = DockBuilder::node(ui, dock_id) {
// Use node safely
}
if let Some(central) = DockBuilder::central_node(ui, dock_id) {
// Use central node safely
}Using the New dear-app Runner
Before (manual setup):
// Manual Winit + WGPU setup code...After (with dear-app):
use dear_app::*;
fn main() {
App::new("My App")
.run(|ui| {
ui.window("Hello").build(|| {
ui.text("Hello, world!");
});
});
}🙏 Acknowledgments
Special thanks to all contributors and the upstream projects:
- Dear ImGui by Omar Cornut
- ImPlot3D for 3D plotting capabilities
- ImGuIZMO.quat for quaternion manipulation
- rfd for native file dialogs
Full Changelog: v0.3.0...v0.4.0