Releases: blitzar-tech/egui_graphs
Releases · blitzar-tech/egui_graphs
v0.29.0
What's Changed
- Feature: custom egui ids by @blitzarx1 in #292
- Fix: enable instant/wasm-bindgen at workspace level and remove from demo by @blitzarx1 in #293
- Update egui to 0.33 (and update bevy, ureq, and criterion) by @oscargus in #298
- Fix: replace 'instant' dependency with 'web-time' by @WaffleSoul4 in #296
New Contributors
- @oscargus made their first contribution in #298
- @WaffleSoul4 made their first contribution in #296
Full Changelog: v0.28.0...v0.29.0
v0.28.0
🆕 New Features
A lot of work done on Demo. The most important is that we are web now!
— How to try it:
- Open the web demo and pick an example:
- Tweak Layout → Force-Directed/Hierarchical and play with Animation/Forces.
- Click Export (top of the right panel) → choose “Include Layout” and/or “Node Positions”, then save to File or copy to Clipboard.
- To import, go to the Import/Load tab → “Open” (or drag & drop a JSON file into the graph area). Your uploads appear under “User Uploads”.
- On web, use Share to copy a deep link to the selected example.
- More useful keybindings were added (fit to screen (once), pan to graph)
- File import and export — planned to migrate to
egui_graphscore in upcoming releases
Notes:
- New import/export features are in the demo UI only (not yet in the
egui_graphscrate). Core support is planned. - Positions are optional on import; if missing, nodes are placed in a circle initially.
🖥️ Demo
- File import:
- User uploads with JSON schema support
- Edges-only
- Nodes and edges
- Graph plus layout properties
- Curated example graphs
- Shareable deep links (see Highlights above)
- User uploads with JSON schema support
- File export:
- Optional include of layout and graph settings
- Demo UX improvements:
- Debug overlay and instructional messages queue
- Navigation keybindings and help button
- Hierarchical layout controls and perf metrics panel
🛠️ Fixes & Robustness
- Do not send zero-diff events (core)
MRs:
- Feature: web demo by @blitzarx1 in #272
- Chore: update web demo link by @blitzarx1 in #273
- Fix: enable events for web by @blitzarx1 in #274
- Feature: demo debug overlay improvements by @blitzarx1 in #275
- Feature: instructional messages queue for demo by @blitzarx1 in #276
- Feature: help button in demo by @blitzarx1 in #277
- Feature: hierarchical layout demo by @blitzarx1 in #278
- Fix: redraw hierarchical layout on reset by @blitzarx1 in #279
- Fix: do not send zero diff events by @blitzarx1 in #280
- Feature: perf metrics for demo by @blitzarx1 in #281
- Feature: info messages updates by @blitzarx1 in #282
- Chore: refactor demo by @blitzarx1 in #283
- Feature: file import for demo by @blitzarx1 in #284
- Feature: navigation keybindings and notifications by @blitzarx1 in #285
- Feature: url params and share in demo by @blitzarx1 in #286
Full increment: v0.27.0...v0.28.0
v0.27.0
🚀Highlights for v0.27.0
🆕 New Features
- Hover Interactions: Added from scratch! Graph nodes and edges now support hover effects, enabling more interactive and intuitive graph exploration.
- Custom Styling Hooks: Support for node and edge style hooks, allowing flexible and dynamic visual customization.
- Force-Directed Layout Enhancements:
- Fruchterman-Reingold algorithm and extra forces for any force-directed graph.
- Fast-forward feature for animated layouts.
- Exposed force with an Extras wrapper for advanced usage.
🖥️ Demo & Usability Improvements
- Event filters, show/hide panels, and enhanced keybindings for better demo interactivity.
- Keybindings overlay replaced with a modern modal window.
- Debug overlay now displays steps count for animated layouts.
- Synchronized sliders and keybindings for a smoother demo experience.
🛠️ Fixes & Robustness
- Fixed 1-frame edge glitch and improved edge overlap handling.
- Fit-to-screen now works for single-node graphs.
- Guards for empty graphs and demo refactoring for robustness.
- Prevented negative tolerance in bezier curves.
🗃️ Serialization
- Ensured the graph is fully serde serializable/deserializable.
MRs
- Support for node and edges style hooks by @blitzarx1 in #250
- Update README.md by @blitzarx1 in #251
- Fix: 1 frame edge glitch by @blitzarx1 in #252
- Fix/fit to screen 1 node by @blitzarx1 in #253
- Guards for empty graph and refactor demo example by @blitzarx1 in #255
- Events filter in demo example by @blitzarx1 in #256
- Demo show/hide panel and keybindings by @blitzarx1 in #257
- Fix sync sliders and keybindings by @blitzarx1 in #258
- Replace keybindings overlay with modal window by @blitzarx1 in #261
- Feature: fruchterman_reingold && extra forces for any fdg by @blitzarx1 in #263
- Feature: hover by @blitzarx1 in #264
- Cleanup: Expose force with Extras wrapper and modify README by @blitzarx1 in #265
- Feature: fast-forward for animated layouts by @blitzarx1 in #266
- Fix: avoid negative tolerance for bezier curves by @blitzarx1 in #267
- Feature: steps count for debug overlay in demo by @blitzarx1 in #268
- Fix: overlapping edges of order 1 by @blitzarx1 in #269
- Fix: ensure graph is serde serializable/deserializable by @blitzarx1 in #271
Full Changelog: v0.26.0...v0.27.0
v0.26.0
Highlights
- Added naive force-directed layout (Fruchterman–Reingold style) with adjustable simulation parameters.
- Demo now has a Force Directed panel (sliders + info tooltips) for live tuning.
- Refactored layout logic into smaller private helpers and added physics unit tests.
- Added layout state get/set API on
GraphViewfor external control/persistence. - Bumped
eguito0.32(and refreshed related dev dependencies). - Hardened Linux CI (installs required system libraries).
- README and doctests updated.
What's Changed
- Force-directed layout + tunable State.
- Demo: force-directed controls + tooltips.
- Layout step refactor (helpers private) + physics tests.
- Added GraphView::get_layout_state / set_layout_state.
- Larger debug overlay text in demo.
- CI: install ALSA & windowing deps on Linux.
- README: concise force-directed section.
- Doctest updated to use g() accessor.
- egui bumped to 0.32.
MRs
- Renaming and API stabilization by @blitzarx1 in #240
- Add Layout and LayoutState to public scope by @blitzarx1 in #248
- FDG layout, egui bump by @blitzarx1 in #249
Breaking Changes
Graphno longer exposes its internal graph via a public field (graph.g); use accessor methods:- Before:
graph.g.node_count() - After:
graph.g().node_count() - For mutation:
graph.g_mut()
- Before:
Migration Notes
- Replace all direct field accesses
.g.with method calls.g()/.g_mut(). - Force-directed layout imports:
use egui_graphs::{LayoutForceDirected, LayoutStateForceDirected};
- Optional parameter control
let mut state = view.get_layout_state::<LayoutStateForceDirected>().unwrap_or_default(); // tweak fields... view.set_layout_state(state);
Full Changelog: v0.25.1...v0.26.0
v0.25.1
What's Changed
- Bump petgraph dependency by @stefnotch in #238
New Contributors
- @stefnotch made their first contribution in #238
Full Changelog: v0.25.0...v0.25.1
v0.25.0
What's Changed
- Ui fixes and small improvements by @blitzarx1 in #236
Full Changelog: v0.24.0...v0.25.0
v0.24.0
v0.23.0
What's Changed
- remove bind mechanic by @blitzarx1 in #216
- renamed transform to helpers by @blitzarx1 in #217
- Layouts by @blitzarx1 in #218
- Update README.md by @blitzarx1 in #220
- Feat: respect dragged node by @blitzarx1 in #223
- Update egui to 0.30.0 by @CUB3D in #227
New Contributors
Full Changelog: v0.22.0...v0.23.0
v0.22.0
What's Changed
- Rainbow edges example by @blitzarx1 in #206
- fix: node_size returnes negative by @blitzarx1 in #208
- feat: simplified default Graph signature by @blitzarx1 in #209
- fix size 0 when dir up or down by @XertroV in #212
- fix crashing edge_endpoints().unwrap() call by @XertroV in #213
- add linting options by @bircni in #214
- 0.22.0 by @blitzarx1 in #215
New Contributors
Full Changelog: v0.21.1...v0.22.0
v0.21.1
What's Changed
- pan with lmb and flex example by @blitzarx1 in #200
Full Changelog: v0.21.0...v0.21.1