# 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.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.10](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.9...v0.1.10) - 2026-04-27

### Fixed

- *(fpa)* correct first_offset coordinate system
- *(reads)* exclude soft-clipped bases from window
- *(reads)* fix alignment indexing error

## [0.1.9](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.8...v0.1.9) - 2026-04-23

### Added

- *(viz)* Add id selector
- *(vcf)* enable csv output, some small buxfixes to make that happen
- *(viz)* add svg visualization subcommand
- *(csv)* output MI-string and alignment details

### Fixed

- clippy
- *(build)* update rust to 1.88 (needed by lib_tsshow)
- *(deps)* use crates.io version of tsalign libs

### Other

- update reads and vcf pipelines to use new alignment types
- extract alignment operations into dedicated module

## [0.1.8](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.7...v0.1.8) - 2026-03-25

### Added

- use new cluster density also in \'reads\' mode
- *(vcf)* expose clustering settings, add density parameter

### Fixed

- apply custom costs to tsalign (lost during refactor)

### Other

- write up some basic functionality

## [0.1.7](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.6...v0.1.7) - 2026-03-19

### Fixed

- test (again...)
- use characters M and X in vcf output cigar strings
- fix a test failure that expected M instead of = in cigar string

### Other

- update lib_tsalign to version 1

## [0.1.6](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.5...v0.1.6) - 2026-03-10

### Added

- add cram support
- add database feature to store known alignment cases
- in-memory deduplication of alignments
- show running alignments in progress bar

### Fixed

- buffer db writes, refactor counters
- Handle matches (eq or diff) properly in reads mode
- simplify dependencies
- some test coverage
- reduce tokio features

## [0.1.5](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.4...v0.1.5) - 2026-02-27

### Added

- parameter for buffer size, smaller tweaks
- rewrite many methods to async
- basic setup for tokio
- implement timeout for worker
- properly limit memory usage per alignment
- more info in log messages
- describe subcommands
- update to latest lib_tsalign with serde support

### Fixed

- lots of clippy fixes about number conversions, some of which have caused issues crashed
- differentiate between non-zero exit and signal termination
- Use subprocesses for the aligner to fail gracefully

## [0.1.4](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.3...v0.1.4) - 2026-02-18

### Added

- Refactor plumbing code to allow a selection of the aligner
- implement DP-based Four-Point-Aligner
- add --min-quality to require minimum quality for cluster bases
- *(vcf)* add command to output header
- some progress bars and less memory usage

### Fixed

- indexing bug in record creation, allow for full-range TSes in FPA
- clippy
- small changes to --help
- update test method to use new `augment_header` method
- make memory limit arg global so that it can be used at any point
- don't exclude reference parts with lowercase, even with --soft-mask
- use capped allocator for memory limit

## [0.1.3](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.2...v0.1.3) - 2026-02-02

### Added

- Add counters for alignments to reads mode
- add counters and runtime to reads mode (and refactor)

### Fixed

- use bounded channels to avoid uncontrolled memory growth

## [0.1.2](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.1...v0.1.2) - 2026-01-30

### Added

- unify the alignment tpool stuff, report alignment cost without TS for reads mode

### Fixed

- coordinate fix in soft mask feature
- update readme to use published twitcher version

## [0.1.1](https://version.helsinki.fi/kraujasp/twitcher/compare/v0.1.0...v0.1.1) - 2026-01-30

### Other

- Add some metadata to Cargo.toml

## v0.2.0 (2026-04-29)

### Chore

 - <csr-id-c1813fd6d1eaa79089abfce3656c8edf1960064f/> release
 - <csr-id-87d3889b494a9a3530cf7add76f1fa143ee8a672/> release
 - <csr-id-2f651711d1ef5f968908642192e2dac7fc8fb5c4/> release
 - <csr-id-e0e4a588abd1c2b7a1cec47a743637c7a33fba9a/> release
 - <csr-id-3e7fbd76f35eea4fb5553620b8aa573c8f283274/> update lib_tsalign to version 1
 - <csr-id-54c4d8295626a2dd1426534f6983c7c7b7bad9e8/> release
 - <csr-id-5664fa5a88605fa5b146ed20d45652ab027382de/> release
 - <csr-id-a7d3dc4d7db0cea9363c04ab0452900bbaee17bb/> release
 - <csr-id-7b59aa61dee5530f28fbd522c6b5c8e9db52fece/> release
 - <csr-id-e43a8463c1bbf1fced0c62b54aefacf06a4f3b2c/> release
 - <csr-id-a1e11c77392f6a4e25a12cb32adf09c8439df00a/> release
 - <csr-id-e38c87de151f840d64fe855d1ab7f0ad3ea379d9/> Add some metadata to Cargo.toml
 - <csr-id-28ec7bf85e9affefd676f4f56e06f40d62919638/> update rust version to 1.87.0
 - <csr-id-4c1b635b23d76a1ff9a857e78306bc985f2993c9/> update dependencies to released versions
 - <csr-id-86e4361d0014e7ab55cbd04554e7b4198d481bac/> call the statistics "metrics" and clean up code
 - <csr-id-f9bc1928a74d461e1d51d64b53588f1b852f4302/> make compatible with rust 1.85.1
 - <csr-id-981bf2d4759571118e274734144243cc5c12ecaa/> some dep updates
 - <csr-id-8f992a3f3949da169acb6831cab6c9c2afa2d522/> update deps

### New Features

 - <csr-id-4ecf58dd291dcb0878bc69150f239c4f95e5c59f/> Add id selector
 - <csr-id-a039fd57ea5f2fbe1bff1960b147cef8d50a0fdc/> enable csv output, some small buxfixes to make that happen
 - <csr-id-01b9e163a374ea2ffbb9370b4009ead08f0db2ed/> add svg visualization subcommand
   New 'viz' subcommand reads a CSV file and writes one SVG per record.
   Reconstructs reference and query sequences from the reference FASTA,
   forward alignment cigar, and MI-string, then calls lib_tsshow to
   render the template switch arrangement. Supports --overwrite to
   control whether existing output files are replaced.
 - <csr-id-574317d6f6bce3ca54c46020572756b4dc5cacce/> output MI-string and alignment details
   Add fw_mi_ctx (MI-string encoding inserted/substituted bases),
   cluster offset fields, and context-region cigars to CSVRecord.
   These allow reconstructing the query sequence from reference +
   alignment for downstream visualization.
 - <csr-id-3220597e76daa92a61838a6de2aa080ccb6e600c/> use new cluster density also in \'reads\' mode
 - <csr-id-72292f24cb5eebbd48d19c18a83e0f488d274033/> expose clustering settings, add density parameter
 - <csr-id-cfb4caa7e4f080cd6da68fa87935b1b0f8adeca0/> add cram support
 - <csr-id-9e32d609332f69a7c6ac36e74f6c91808f67d7f9/> add database feature to store known alignment cases
 - <csr-id-bc578fce2a50e5dc700a1f327827bdad96037260/> in-memory deduplication of alignments
 - <csr-id-3255f0d4d69e9a57cb9b7d2a1800f43c5a7cb909/> show running alignments in progress bar
 - <csr-id-df0fbfb37f4a116c4f7e3b8e194d12d1b47bcf24/> parameter for buffer size, smaller tweaks
 - <csr-id-5e24ecb213546273e9db2e5a0e339d400929c5d8/> rewrite many methods to async
 - <csr-id-f0ec3de775727e45c11c4cfccffbdad46afb12f2/> basic setup for tokio
 - <csr-id-756e7e2c56fc4495aaed9f366ee73eb4575f49cc/> implement timeout for worker
 - <csr-id-69907433523f24c2b82b8be63bfa26c43bc53e13/> properly limit memory usage per alignment
 - <csr-id-452da531ec18fadf180e33e45d80a764c9104a1a/> more info in log messages
 - <csr-id-8528b0617853fcaacacb15102973c4dfe76d074b/> describe subcommands
 - <csr-id-f78b83922ba4bbd9a34a39633329c61c77338a9f/> update to latest lib_tsalign with serde support
 - <csr-id-d3301a8ea0b3d7e1c8f36688fcf95c1223300246/> Refactor plumbing code to allow a selection of the aligner
 - <csr-id-01518ced93003b09ccdd761c0b92937b3a9690ca/> implement DP-based Four-Point-Aligner
 - <csr-id-e83902ee68b194bda685f3e4ebf80db55779bdb8/> add --min-quality to require minimum quality for cluster bases
 - <csr-id-3bdea89910a67c1464aac26747ed137f85aff0b5/> add command to output header
 - <csr-id-991e15d32e3f0283d711cac0b0253132d65a88a6/> some progress bars and less memory usage
 - <csr-id-791440be075526eb2a7b8b154b50b133ade89957/> Add counters for alignments to reads mode
 - <csr-id-c6e045128bbe556b41cb2604707e992a1ae2d37f/> add counters and runtime to reads mode (and refactor)
 - <csr-id-8063657e254312bd43a509ccf9446adeee6dbd34/> unify the alignment tpool stuff, report alignment cost without TS for reads mode
 - <csr-id-2571197e3d13ba74218c8ec817d92b2d2f6553e1/> add crate description
 - <csr-id-411f11e2c3914e66591051a8f016c6d3c1dfa71f/> add --version
 - <csr-id-0203abd21e126dfd77dc0f400c74c7aaa53a6564/> accurately report multiple TSes in BAM mode output
 - <csr-id-e92deede3c6dc991d689a7c290936f7f242640e4/> More statistics for bam csv output
 - <csr-id-e2555f03e614eee0a8c43ae9b54f1483acb37170/> use new message api in writer methods
 - <csr-id-24fe28007dbbaf81bce74e4948b61a58004d722b/> new way to represent clusters internally
 - <csr-id-1556d22f1ea88bc209659d52e625a241dfcb1221/> update lib_tsalign, include new preprocessing options
 - <csr-id-d641dffee28bde6dbf7cc5a013c42ee17d788bc1/> print info line on number of records and failed realignments
 - <csr-id-092dd4a27956a31235d8a65b4d9137bbe8bc67ee/> use `bstr`, less unnecessary unicode validation
 - <csr-id-b780d5f7c557a9a04091d9bf2926b726289e4873/> options to write only newly aligned records, with some optional context around them
 - <csr-id-b8e0fbbf36fde92cec925c56cae3c15c185810b7/> Implement specifying a subset region of the input
 - <csr-id-603d46b72d712fdcfa55bae18f96c40aa98f6e5e/> update and refactor the record creation
 - <csr-id-9e998645d9f043a73c67a655c57e6138097319f1/> add option to only output new records
 - <csr-id-f747d46d8497d76e2b8c3f78d803fa81b7a74487/> option to output regions
 - <csr-id-bc933251f994e5bd6446108dc9d31fd5c74ad1cf/> CI testing reports
 - <csr-id-ff701d6c873597d0028eedc5c9f4ecf2bf6e19e6/> setup basic framework for integration tests with real data
 - <csr-id-54415b992df189973fbe554a566f5da0e52702d0/> add unit test for CLI validation
 - <csr-id-ccfd135fe58489ea1812f8b4badfaf4c42d2e76f/> Initial commit

### Bug Fixes

 - <csr-id-7ea9cf67645032f5b2ba9f693e5e0f9ca7ed411f/> formatting
 - <csr-id-aa0ad394a119dfb1c99b06c87ef7af5c5085f5b1/> correct first_offset coordinate system
 - <csr-id-51ff55e048f7073b99d5f58ac5610cde6d6be63f/> exclude soft-clipped bases from window
 - <csr-id-e3e81b393e165a0324c6a1942df7587a0241ea14/> fix alignment indexing error
 - <csr-id-3b6c90a7b0867d1f3826f212272756ea3e3b5b55/> clippy
 - <csr-id-6314c83b0bf77bac2c56696d02a2fdb676aaa583/> update rust to 1.88 (needed by lib_tsshow)
 - <csr-id-e0dabaf96e53940ff77555e6b498fe534bf3cd82/> use crates.io version of tsalign libs
 - <csr-id-fc3d2286d3a9edd492b92f876165db84fbf3ecc9/> apply custom costs to tsalign (lost during refactor)
 - <csr-id-0e24e787061a7411e5556aee1872607df4f70a05/> test (again...)
 - <csr-id-bdad3e01ddb7c503d553f80c3532965d613c2736/> use characters M and X in vcf output cigar strings
 - <csr-id-d4fe529c6b9a4c2c19e6c622c9a94dab79ec276f/> fix a test failure that expected M instead of = in cigar string
 - <csr-id-f3a7f97ef4ccb830f3f5b90f93509dc5bde1d806/> buffer db writes, refactor counters
 - <csr-id-e9384c4ac28fe3bda244607941c84988e17c77ac/> Handle matches (eq or diff) properly in reads mode
 - <csr-id-842cd484d99356ee03c1dd7f38a6966251324b9e/> simplify dependencies
 - <csr-id-f3c33640b2141d4d2f013a3426b4972b73d90e7d/> some test coverage
 - <csr-id-2a7b61fe2d6a1c0a70b8500fe9f0500c47e7285e/> reduce tokio features
 - <csr-id-93afc7243997159cdb547733e98a4856f1b7fc6e/> lots of clippy fixes about number conversions, some of which have caused issues crashed
 - <csr-id-f122b0211f65b7ddc6d58ac441de22f976babc17/> differentiate between non-zero exit and signal termination
 - <csr-id-a2a1304f96fa7d5c6354996c3abebe53d3065ed3/> Use subprocesses for the aligner to fail gracefully
 - <csr-id-e24f8c2eaa715e214b6cbd00bc5dd011d29954fd/> indexing bug in record creation, allow for full-range TSes in FPA
 - <csr-id-ea0027aac25156cfebb0f9dd006fb84a9e48d839/> clippy
 - <csr-id-bbe591512a5a06f89b40f05bf85c0e54bc329af6/> small changes to --help
 - <csr-id-564c71ceade9898f205f84b43c261a9e68336e5e/> update test method to use new `augment_header` method
 - <csr-id-f150dc16d13d7c0e9f1f035248f37d5f431bdd5e/> make memory limit arg global so that it can be used at any point
 - <csr-id-9af90ad57c520196e6564605f2954d8f827d7694/> don't exclude reference parts with lowercase, even with --soft-mask
 - <csr-id-27632bedef128c9cd6d8adec8812b8752717a38f/> use capped allocator for memory limit
 - <csr-id-0172f9387b123a8f0098970b601f16b73dc111dd/> use bounded channels to avoid uncontrolled memory growth
 - <csr-id-7c404421eaaff92b06384e30c8de76c448b1020f/> coordinate fix in soft mask feature
 - <csr-id-94c548ab4a6c68f2e93e5ba690ed48940939aa3b/> refactorings and a seq_len check because reads can be empty
 - <csr-id-1a9a13757412f0aec5d652d5cd7bef2119719299/> range computation and writer refactoring
 - <csr-id-42dbff4452e3dbf0fceed2db249631355bc072a1/> sneaky bug that would drop single-record clusters
 - <csr-id-cdabc7cc1dc96ac7802ec69b11024ed05047201e/> some code cleanup
 - <csr-id-9497e00bdabe35c7cc8afa0c5921f303579f7c76/> cargo fmt and clippy lints
 - <csr-id-e41e141c4514855c964da1ad2e4e073dc5b5302b/> add test for sorted output and improve program resilience on closed channels
 - <csr-id-ac28a97919cf9c8b592c3a8d97229aab1e3fb9d7/> buffer a few records to re-sort them on demand to output everything in order
 - <csr-id-dc5b1c1c8f86b403f6726e55665cb929e746af13/> propagate rid to writer instead of always writing chr1
 - <csr-id-316125271c039d09f8d7b03ad50edf56e1cd99fa/> two clippy lints and one wrong sign
 - <csr-id-738da7ac22b676cb5aecdb88d2bed64737683574/> don't panic on unexpected alignment
 - <csr-id-ab7730d6e3ae5ed3d128e5687c6bce9f87a9e14e/> properly implement (anti-)primary sequence in TS
 - <csr-id-f9b05165da4e699274966c6b71aa92f986bfa979/> also support alignments where the reference sequence jumps
 - <csr-id-24f2c936f9f9c7772ec663246568547eef105db9/> set default padding from 0 to 200
 - <csr-id-d546a6fc8ef721e9b18ad556d64b71d62b2f8a25/> some lints and tests
 - <csr-id-702f8ca8c8a1ebf71b5d330195f30de781a518ed/> re-compute genotype, do not blindly copy info/format fields from old records
 - <csr-id-79497ee10457a798b1647a8b08cfcfc7d5c5481b/> various pedantic clippy lints
 - <csr-id-0816061e41d3a51ec46df0bd80933daf444cf1a4/> fix logic error when waiting for pending realignment
 - <csr-id-82228c2bcc3bc2a1f07eeb71d90524ce5fb74987/> swap debug impls of cluster or record
 - <csr-id-29b69a793e7b14968b83e77cb64a578b2aa04887/> use relative paths in tests
 - <csr-id-c684f93f2cd860d866b2d3c4ab1e164f4af3e14c/> more conservative cluster detection
 - <csr-id-80402e857d7bdac7a26ead2865d7592c0a02c4b8/> move license to crates, not workspace
 - <csr-id-2b2663db59f97aa4536b65128231feb7af4fc692/> unify progress counters
 - <csr-id-7bf76a25b5989003b73a1a692c96e4aeceedb7cd/> typo in output format detection
 - <csr-id-103794f67d384488b4e0bbbaac35d0879b40ccd2/> use record template with correct output header reference

### Other

 - <csr-id-74465aeaa04e5fba005962f58934075d5bd17f7f/> change to develop branch of ts aligner

### Refactor

 - <csr-id-2f17e4b701afacc6d9cfa50d2a53ca03b76db5cd/> update reads and vcf pipelines to use new alignment types
   Replace ad-hoc alignment handling in both pipelines with the new
   ForwardAlignment wrapper and shared alignment operation helpers.
 - <csr-id-ad1cee7a4241e95fcaf7213ca86b2809ecd4a7f2/> extract alignment operations into dedicated module
   Introduce common/alignment.rs with ForwardAlignment wrapper and
   helpers (cigar_to_alignment, consumed_reference, consumed_query,
   crop_to_ts_region, insert_ts_alignment). Add ImmutableSequence /
   MutableSequence type aliases. Update aligner result types and
   internal aligner implementations accordingly.

### New Features (BREAKING)

 - <csr-id-6551d79e13be7f06bad4137447cfe7ceabc231ac/> New mode called `reads` that analyzes BAM files
 - <csr-id-dad9adbe7f838030756569404972a8bbdef5e4f5/> Refactorings, region parsing and --targets as a streaming region selector

### Bug Fixes (BREAKING)

 - <csr-id-2a0adfe1d62663d7591b6ab8a93d1355da496ae6/> refactoring, metrics and dependencies

### Commit Statistics

<csr-read-only-do-not-edit/>

 - 128 commits contributed to the release over the course of 221 calendar days.
 - 120 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 0 issues like '(#ID)' were seen in commit messages

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

 * **Uncategorized**
    - Formatting (7ea9cf6)
    - Release (c1813fd)
    - Correct first_offset coordinate system (aa0ad39)
    - Exclude soft-clipped bases from window (51ff55e)
    - Fix alignment indexing error (e3e81b3)
    - Release (87d3889)
    - Add id selector (4ecf58d)
    - Clippy (3b6c90a)
    - Update rust to 1.88 (needed by lib_tsshow) (6314c83)
    - Use crates.io version of tsalign libs (e0dabaf)
    - Enable csv output, some small buxfixes to make that happen (a039fd5)
    - Add svg visualization subcommand (01b9e16)
    - Output MI-string and alignment details (574317d)
    - Update reads and vcf pipelines to use new alignment types (2f17e4b)
    - Extract alignment operations into dedicated module (ad1cee7)
    - Release (2f65171)
    - Apply custom costs to tsalign (lost during refactor) (fc3d228)
    - Use new cluster density also in \'reads\' mode (3220597)
    - Expose clustering settings, add density parameter (72292f2)
    - Release (e0e4a58)
    - Test (again...) (0e24e78)
    - Use characters M and X in vcf output cigar strings (bdad3e0)
    - Fix a test failure that expected M instead of = in cigar string (d4fe529)
    - Update lib_tsalign to version 1 (3e7fbd7)
    - Release (54c4d82)
    - Buffer db writes, refactor counters (f3a7f97)
    - Handle matches (eq or diff) properly in reads mode (e9384c4)
    - Add cram support (cfb4caa)
    - Add database feature to store known alignment cases (9e32d60)
    - In-memory deduplication of alignments (bc578fc)
    - Simplify dependencies (842cd48)
    - Show running alignments in progress bar (3255f0d)
    - Some test coverage (f3c3364)
    - Reduce tokio features (2a7b61f)
    - Release (5664fa5)
    - Lots of clippy fixes about number conversions, some of which have caused issues crashed (93afc72)
    - Parameter for buffer size, smaller tweaks (df0fbfb)
    - Rewrite many methods to async (5e24ecb)
    - Basic setup for tokio (f0ec3de)
    - Implement timeout for worker (756e7e2)
    - Properly limit memory usage per alignment (6990743)
    - More info in log messages (452da53)
    - Differentiate between non-zero exit and signal termination (f122b02)
    - Describe subcommands (8528b06)
    - Update to latest lib_tsalign with serde support (f78b839)
    - Use subprocesses for the aligner to fail gracefully (a2a1304)
    - Release (a7d3dc4)
    - Indexing bug in record creation, allow for full-range TSes in FPA (e24f8c2)
    - Clippy (ea0027a)
    - Refactor plumbing code to allow a selection of the aligner (d3301a8)
    - Implement DP-based Four-Point-Aligner (01518ce)
    - Small changes to --help (bbe5915)
    - Add --min-quality to require minimum quality for cluster bases (e83902e)
    - Update test method to use new `augment_header` method (564c71c)
    - Make memory limit arg global so that it can be used at any point (f150dc1)
    - Add command to output header (3bdea89)
    - Don't exclude reference parts with lowercase, even with --soft-mask (9af90ad)
    - Use capped allocator for memory limit (27632be)
    - Some progress bars and less memory usage (991e15d)
    - Release (7b59aa6)
    - Use bounded channels to avoid uncontrolled memory growth (0172f93)
    - Add counters for alignments to reads mode (791440b)
    - Add counters and runtime to reads mode (and refactor) (c6e0451)
    - Release (e43a846)
    - Coordinate fix in soft mask feature (7c40442)
    - Unify the alignment tpool stuff, report alignment cost without TS for reads mode (8063657)
    - Release (a1e11c7)
    - Add some metadata to Cargo.toml (e38c87d)
    - Add crate description (2571197)
    - Update rust version to 1.87.0 (28ec7bf)
    - Update dependencies to released versions (4c1b635)
    - Add --version (411f11e)
    - Refactorings and a seq_len check because reads can be empty (94c548a)
    - Accurately report multiple TSes in BAM mode output (0203abd)
    - More statistics for bam csv output (e92deed)
    - Range computation and writer refactoring (1a9a137)
    - New mode called `reads` that analyzes BAM files (6551d79)
    - Refactorings, region parsing and --targets as a streaming region selector (dad9adb)
    - Refactoring, metrics and dependencies (2a0adfe)
    - Sneaky bug that would drop single-record clusters (42dbff4)
    - Some code cleanup (cdabc7c)
    - Cargo fmt and clippy lints (9497e00)
    - Added some helpfull comments and a short circuit (3d5d243)
    - Functional phasing for non-overlapping variations (5f604fc)
    - Seems to kinda do the right thing. (keep - discard) no splitting. (f6dc4b9)
    - Better logging (a63797a)
    - Move prints to warnings (b138c4f)
    - Initial phasing using BAM (fe3f46d)
    - Add test for sorted output and improve program resilience on closed channels (e41e141)
    - Buffer a few records to re-sort them on demand to output everything in order (ac28a97)
    - Propagate rid to writer instead of always writing chr1 (dc5b1c1)
    - Use new message api in writer methods (e2555f0)
    - New way to represent clusters internally (24fe280)
    - Call the statistics "metrics" and clean up code (86e4361)
    - Update lib_tsalign, include new preprocessing options (1556d22)
    - Print info line on number of records and failed realignments (d641dff)
    - Two clippy lints and one wrong sign (3161252)
    - Use `bstr`, less unnecessary unicode validation (092dd4a)
    - Don't panic on unexpected alignment (738da7a)
    - Properly implement (anti-)primary sequence in TS (ab7730d)
    - Also support alignments where the reference sequence jumps (f9b0516)
    - Make compatible with rust 1.85.1 (f9bc192)
    - Set default padding from 0 to 200 (24f2c93)
    - Some lints and tests (d546a6f)
    - Some dep updates (981bf2d)
    - Re-compute genotype, do not blindly copy info/format fields from old records (702f8ca)
    - Options to write only newly aligned records, with some optional context around them (b780d5f)
    - Fixed default behaviour to pass tests (964fed2)
    - Framework for phasing added. (e14622b)
    - Implement specifying a subset region of the input (b8e0fbb)
    - Various pedantic clippy lints (79497ee)
    - Fix logic error when waiting for pending realignment (0816061)
    - Update and refactor the record creation (603d46b)
    - Add option to only output new records (9e99864)
    - Option to output regions (f747d46)
    - CI testing reports (bc93325)
    - Setup basic framework for integration tests with real data (ff701d6)
    - Swap debug impls of cluster or record (82228c2)
    - Use relative paths in tests (29b69a7)
    - More conservative cluster detection (c684f93)
    - Add unit test for CLI validation (54415b9)
    - Move license to crates, not workspace (80402e8)
    - Unify progress counters (2b2663d)
    - Update deps (8f992a3)
    - Typo in output format detection (7bf76a2)
    - Change to develop branch of ts aligner (74465ae)
    - Use record template with correct output header reference (103794f)
    - Initial commit (ccfd135)
</details>

