Skip to content

Releases: nulab/autog

v0.10.0

16 Oct 08:16
Compare
Choose a tag to compare

Bug fixes

  • [p2-longest] Fix longest-path layerer
  • [p1-greedy] Properly initialize degree maps (fixes #9)

Enhancements

  • Add option to control size of virtual nodes

Misc

  • [graph] Change connected components routine to a method of DGraph
  • [graph] Move graph Source and EdgeSlice to internal package and expose via alias
  • Improve test coverage and simplify package import graph
  • [geom] Delete unused Stack type
  • [docs] Update greedy cycle breaker description in README to reflect actual behavior with autog.WithNonDeterministicGreedyCycleBreaker

v0.9.0

03 Oct 08:43
Compare
Choose a tag to compare

Enhancements

  • [p5-splines] Always draw splines with a slight curve except for vertical segments
  • [p1-greedy] Add option to control determinism of greedy cycle breaker (fixes #12)
  • [p5-splines] Complete implementation of spline routing (fixes #11)
  • Add functional option to set individual node sizes (fixes #6)
  • [p4-b&k] Ensure no node overlaps in the final layout
  • [p4-b&k] Implement erratum as per Brandes, Walter and Zink, 2020
  • [p4-bk] Skip balancing and verifcation steps when user chooses a specific layout via options

API changes

  • Rename option WithKeepVirtualNodes to WithOutputVirtualNodes to reflect its relation to the output layout

Misc

  • Upgrade Go to 1.23.1 — this includes several changes to internal/geom and internal/graph packages to rewrite loops and iterators to the new officially supported form; as these aren't exported symbols, details are omitted from this release notes, but can be found in the commit log)
  • Temporarily skip test for overlaps in network simplex positioning due to non-determinism
  • Add manual trigger to github action
  • Run unit test via github action also when pushing to main branch
  • Fix condition to check for node overlaps in unit tests
  • [docs] Add pkg.go.dev badge to README
  • Add Run Unit Tests workflow badge to README.md (#26)

v0.8.0

20 Sep 11:01
Compare
Choose a tag to compare

Bug fixes

  • [preproc] Ignore self-loops during main pipeline (fixes #23)
  • Skip empty layers when computing sub-graph shift after processing

Enhancements

  • [p5,postproc] Move code that restores reversed edges to a standalone post-processor
  • Add short circuiting to each phase for graphs with one node; panic with zero nodes, as that could be a bug in the connected graphs code
  • Panic if the input graph has no nodes
  • [monitor] Add log keys as const to standardize log output

Misc

  • Add github workflow to run unit tests
  • [docs] Mention commit guidelines in README
  • [docs] Mention in README that self-loops aren't routed

v0.7.0

10 Jul 09:14
Compare
Choose a tag to compare

Enhancements

  • Support disconnected graphs (fixes #21)

v0.6.0

21 Jun 09:58
Compare
Choose a tag to compare

Bug fixes

  • Don't shallow copy DGraph into a new instance when it's used as a graph.Source
  • Compact output layout.Nodes slice without virtual nodes (fixes #19)

Enhancements

  • [options] Add layout option to keep virtual nodes in output

API changes

  • Remove ID property from graph.Edge
  • Add ids of source and target nodes to graph.Edge

Misc

  • Delete unused test file

v0.5.0

20 Jun 15:15
Compare
Choose a tag to compare

Enhancements

  • [p5,geom] Implement helper package for cubic bezier spline routing (#15)

Misc

  • Upgrade to Go 1.22, remove exp/constraints package (#17)
  • Update README based on latest API changes

v0.4.0

19 Sep 15:00
Compare
Choose a tag to compare

Bug fixes

  • [p5-ortho] Compute edge control points using routable edges (fixes #13)
  • [p5-poly] Compute edge control points using routable edges
  • [p5] Fix route merging, append non-terminal nodes correctly
  • Fix edge merging, ensure mapping between edges and route info
  • [p2-nsimplex] Fix and reenable horizontal balancing used in p4 (fixes #10)

Enhancements

  • [p5] Merge long edges as a preprocessing step before routing
  • Define EdgeSlice as implementation of graph.Source
  • Update README with implementation details
  • [p2-nsimplex] Rewrite head component boolean logic to follow Graphviz's paper
  • Add basic Makefile with test target
  • Move test adjacency lists into non-test file for reuse in other packages with test-only build tag
  • Move layout tests into internal package

API changes

  • [p3] Remove traces of old phase 3 wmedian naming
  • [p3-wmedian] Rename graphviz dot ordering to wmedian to reflect actual theory
  • [p5-poly] Rename piecewise edge routing strategy to polyline
  • [options] Extract alg constants into public API with documentation and refactor alg functional options accordingly
  • Output only graph items with minimum set of fields necessary to draw the layout
  • [graph] Add temp option to control global node size
  • [graph] Add flag to remember where to draw the arrowhead
  • Change exported type to Layout and expose only fields relevant to the user
  • Remove NS balancing from functional options
  • Refactor functional options to avoid using internal consts; this also prevents accidentally passing invalid numerical values
  • Move BreakLongEdges into phase3 package as top-level func
  • Make all phase and graph packages internal
  • [p1,p5] Restore reverted edges as a post-processing step of phase 5

Misc

  • Move public graph's node and edge definitions in their own files
  • [graph] Delete connected components routine, currently unused
  • Fix or skip existing unit tests so that the current regression set passes

v0.3.0

29 Aug 08:09
Compare
Choose a tag to compare

Bug fixes

  • [p4-noop] Don't assign Y coordinates to match documentation
  • [p3-graphviz] Fix sorting of -1 values in wmedian
  • [p2-nsimplex] Fix vertical balancing incorrectly reusing updated var in loop stop condition

Enhancements

  • [all phases] Add alg unit test and document exported methods
  • [p4] Document exported methods
  • Move all algs Process methods into separate files
  • [monitor] Add monitor helpers for unit tests
  • Implement processor.P interface with all algs to set monitor prefixes
  • [p3-graphviz] Return early if crossings is zero after init
  • [p2-nsimplex] Improve clarity of feasible span in vbalance

API changes

  • Move monitor option out of graph params
  • [monitor] Move monitor to internal package and simplify API
  • Move processor interface into internal package

v0.2.2

25 Aug 15:05
Compare
Choose a tag to compare

Bug fixes

  • [p2-nsimplex] Fix checking whether node is in edge's head component
  • [p4-nsimplex] Set w/h of nodes in the auxiliary graph
  • [p1] Fail fast if after cycle breaking the graph is not acyclic
  • [p2-nsimplex] Simplify logic in lim/low assignment
  • [p1] Do not run cycle breaker if removal of 2-node cycles already makes the graph acyclic
  • [p4-coloring] Return false when testing if an edge crosses an priority edge on different layers
  • [p3-graphviz] Fix initialization of same-layer transitive closures
  • [p2-nsimplex] Improve error message when non-incident tree edges aren't found
  • [p3] Ignore nil entries from radix sort when counting edge crossings
  • [p1] Keep eagerly reversed edges in the edge list
  • Add non-regression and bugfix layout tests
  • [p2] Always fill layers at the end of phase 2

API changes

  • [p2,p4-nsimplex] Change NetworkSimplexBalance parameter to integer to distinguish between vertical and horizontal balancing

New features

  • [p5] Implement orthogonal edge router
  • [p4-b&k] Add optional parameter to choose a particular B&K layout

v0.1.3

21 Aug 19:43
Compare
Choose a tag to compare

Bug fixes

  • Add draft unit tests for crashers
  • Restore SinkColoring as default positioning option
  • [p4-coloring] Consider edge priorities when painting blocks (fixes #4)
  • [p4-b&k] Refactor marking edge conflicts into a top-level function to improve reuse

API changes

  • Remove node margin as a parameter from all algorithms, use only node spacing (fixes #5)