# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


## [unreleased]


## [0.7.5] - 2026-08-06

### Added

- panic if commits are not in topology order.

### Fixed

- panic when wrapping text caused an increase of output rows.
- print::unicode docs swapped row and column.


## [0.7.4] - 2026-07-08

### Added

- backend::git2 module
- track::Builder for incrementally adding commits.
- track::TrackMap::new() constructor
- track::TrackMap::add_commit(..)
- track::TrackMap::commit_at(commit_id: Oid)
- track::TrackMap::branch_at(commit_id: Oid)
- track::BranchInfoType enum
- layout::TrackLayout.contains_commit_index(commit_index)
- layout::TrackLayout.iter_commit_index()
- layout::TrackLayout.commit_index_start()
- layout::TrackLayout.commit_count()
- layout::BranchVis.row_range
- layout::BranchVis.open_end
- Documentation of terms used in new algorithm
- print::print_graph_terminal for printing only the graph
- print::GraphLines for representing a printed graph
- Merge patterns for octo-merge message
- track::MergePatterns

### Changed

- (BREAKING) Builder::with_settings now take Rc<Settings> as argument.
- (BREAKING) TrackLayout::track_visual now take Binx as argument
- (BREAKING) CommitInfo::is_merge is now a function.
- (BREAKING) track::BranchInfo::new arguments simplified. 
- Upgrade to git2 0.21
- Add Oid parameter to TrackMap, CommitInfo, and BranchInfo
  to facilitate multiple backends.

### Deprecated

- GitGraph will be deprecated in some future release.
- track::BranchInfo.range will move to layout module

### Removed

- Mutex on GitGraph.track

### Fixed

- Support for octo-merges (more than 2 parents)
  Fix git relative worktrees extension, by updating dependencies
  to include libgit2 v1.9.4


## [0.7.3] - 2026-05-01

### Changed

- (BREAKING) GitGraph is split into TrackMap, TrackLayout, and LabelMap.
  WARNING: This was a major refactoring so the code may still have some bugs.


## [0.7.2] - 2026-04-14

### Added

- Reexport of git2::Repository
  This allows some library users to remove a dependency on git2
- graph::Builder.refspecs(), to control graph walk.
- Description of 0.7.x refactoring goals.

### Changed

- (BREAKING) GitGraph::new, optional arguments are moved to builder functions.

### Removed

- release workflow on github, as the library has no binary release.
- Remove svg functionality


## [0.7.1] - 2026-02-09

### Added

- A CHANGELOG.md file.

### Changed

- Extract library to its own crate named "gleisbau".

### Removed

- git-graph main.rs and dependencies.
- Instructions related to the command line tool git-graph.


## [0.7.0] - 2025-11-14

Last release where library is part of git-graph.

### Added

- (BREAKING) graph::get_repo, add argument skip_repo_owner_validation
  false gives the previous behaviour.
- (BREAKING) GitGraph::new, add argument start_point to control where
  traversal should start.
  Set to None to get the previous behaviour.
  
- Lots of API docs
- "trunk" as supported main branch name

### Changed

- Update git2 dependency to version 0.20

### Removed

- (BREAKING) GitGraph public fields "tags" and "branches"


## [0.6.0] - 2024-05-24

### Added

- Reverse order option
