Skip to content

Releases: blitzar-tech/egui_graphs

v0.29.0

31 Oct 12:58

Choose a tag to compare

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

Full Changelog: v0.28.0...v0.29.0

v0.28.0

23 Aug 18:04

Choose a tag to compare

🆕 New Features

A lot of work done on Demo. The most important is that we are web now!

— How to try it:

  1. Open the web demo and pick an example:
  2. Tweak Layout → Force-Directed/Hierarchical and play with Animation/Forces.
  3. Click Export (top of the right panel) → choose “Include Layout” and/or “Node Positions”, then save to File or copy to Clipboard.
  4. 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”.
  5. 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_graphs core in upcoming releases

Notes:

  • New import/export features are in the demo UI only (not yet in the egui_graphs crate). 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)
  • 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:

Full increment: v0.27.0...v0.28.0

v0.27.0

16 Aug 16:56

Choose a tag to compare

🚀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

Full Changelog: v0.26.0...v0.27.0

v0.26.0

10 Aug 10:47
965726c

Choose a tag to compare

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 GraphView for external control/persistence.
  • Bumped egui to 0.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

Breaking Changes

  • Graph no 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()

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

19 May 19:23

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.25.0...v0.25.1

v0.25.0

04 Apr 14:52
43c6c4e

Choose a tag to compare

What's Changed

Full Changelog: v0.24.0...v0.25.0

v0.24.0

18 Mar 20:02

Choose a tag to compare

What's Changed

New Contributors

v0.23.0

25 Jan 14:26

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.22.0...v0.23.0

v0.22.0

27 Sep 14:00
cfb5408

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.21.1...v0.22.0

v0.21.1

18 Aug 18:11
7c71ae3

Choose a tag to compare

What's Changed

Full Changelog: v0.21.0...v0.21.1