Releases: nulab/autog
Releases · nulab/autog
v0.10.0
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
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
andinternal/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
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
v0.6.0
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
v0.4.0
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
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
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
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)