                 Changes in version 1.0.0 (2026-07-24)                  

  - added edge_bundle(), a single entry point that dispatches to any
    bundler via type = c("force", "divided", "stub", "path", "hammer",
    "mingle")
  - switched the test suite to testthat edition 3 and added correctness
    tests for every exported function
  - modernised all igraph calls to the 2.x API, removing deprecation
    warnings
  - edge_bundle_force() now also accepts a two-column edgelist matrix
  - fixed edge_bundle_stub(): the angular grouping was broken (wrong
    circular-gap handling and a bundle-size cap that summed cluster ids
    instead of counting edges) and vertical edges could produce NaN.
    Bundling output changes as a result
  - fixed edge_bundle_path(): the path-length used in the distortion
    test was computed along the wrong vertices, so edges were
    essentially never routed. Bundling output changes as a result
  - added divided edge bundling for directed graphs via
    edge_bundle_force(directed = TRUE) (Selassie et al. 2011): edges
    running in opposite directions are kept in separate lanes
  - edge_bundle_hammer() is now a native C++ implementation of KDE edge
    bundling (Hurter et al. 2012) and no longer depends on
    Python/reticulate/datashader. reticulate was dropped from Imports
    and install_bundle_py() was removed. Bundling output differs from
    the datashader-based version
  - added edge_bundle_mingle(), multilevel agglomerative edge bundling
    (Gansner et al. 2011); the kNN proximity graph is built with a
    bundled kd-tree (nanoflann) for O(E log E) scaling, with a k
    parameter for the number of merge candidates per edge
  - metro_multicriteria() is deprecated in favour of
    graphlayouts::layout_as_metromap() and will be removed in a future
    release
  - added flow_tree(), a spiral-tree flow map (Verbeek, Buchin &
    Speckmann 2011): planar, angle-restricted, keeps node positions
    fixed, and needs no dummy nodes or triangulation. It is the
    recommended flow map layout; the tnss_*() functions remain as an
    alternative. flow_tree(optimize = TRUE) additionally refines the
    tree (smoothness + obstacle avoidance) with join points held fixed
  - tnss_tree(): order = "weight" now orders leaves by flow magnitude
    (previously a no-op); fixed a bug in tnss_dummies() where one
    diagonal corner was misplaced; removed dead code. interp moved from
    Imports to Suggests (only tnss_tree() needs it)

                 Changes in version 0.4.2 (2023-12-16)                  

  - clean up codebase

                 Changes in version 0.4.1 (2022-11-22)                  

  - added package level docs
  - added citation file
  - some minor bug fixes

                 Changes in version 0.4.0 (2022-07-04)                  

  - changed line straightening in tnss_tree() to Visvalingam algorithm
    (NOTE: The meaning of the epsilon parameter is now reversed!)
  - fixed a bug in tnss_tree() which created duplicated mesh points

                 Changes in version 0.3.1 (2022-01-23)                  

  - minor bug fixes

                 Changes in version 0.3.0 (2021-10-30)                  

  - added edge_bundle_path()

                 Changes in version 0.2.1 (2021-08-09)                  

  - Fixed an error that occurred with valgrind

                 Changes in version 0.2.0 (2021-08-02)                  

  - added more documentation
  - cleanup of code
  - fixed readme

                        Changes in version 0.1.0                        

  - added smoothing for tnss_tree()

                        Changes in version 0.0.1                        

  - Added a NEWS.md file to track changes to the package.
