Skip to content

Releases: tackler-ng/tackler

v26.04.1

25 Apr 19:08
v26.04.1
1ef50a1

Choose a tag to compare

New Features

  • New export type "accounts"
    • The accounts exports will generate valid account file based on transaction data

Changes

No Changes

Fixes

  • Fixed account sorting order in reports with special case of numerical sub-accounts (#152)
    • This is purely visual fix and doesn't affect any report results
  • Updated gix dependecy: this fixes several vulnerabilities in it.
    • Tackler is especially impacted if victim opens untrusted git journal with vulnerable version (GHSA-x494-mj8g-cj27)

How to test this release

tackler new demo
tackler \
   --config demo/conf/tackler.toml \
   --output.dir . \
   --output.prefix export-demo \
   --exports accounts
cat export-demo.accounts.toml

See also Examples in tackler's repository.

Special Mention

Thank you VrugteVlieg for contributing the account export feature (#47)!

v26.01.2

20 Jan 19:35
v26.01.2
7c8c88a

Choose a tag to compare

New Features

No new features

Changes

  • Developers only: MSRV bumped to 1.87.0

Fixes

  • Possible memory corruption caused by dependency in OOM situation

How to test this release

See Examples in tackler's repository.

v26.01.1

03 Jan 16:44
v26.01.1
f3323c2

Choose a tag to compare

New Features

  • Support TOML 1.1.0 configuration syntax

Changes

  • Enforce that there is more than one filter for AND and OR logic filters
  • Update dependencies (e.g. gix to 0.77)
  • Increase test suite test vector count (to 501)

Fixes

None in this release

How to test this release

See Examples in tackler's repository.

v25.10.1

26 Oct 16:58
v25.10.1
e62751a

Choose a tag to compare

New Features

This is maintenance release without any real user visible features or fixes.

Changes

  • Added append method for TxnData
  • Updated dependencies

Fixes

  • Harmonized various error message styles and formatting
    • Provide more helpful error message in case of unknown hash algorithm

How to test this release

See Examples in tackler's repository.

v25.06.1

30 Jun 08:42
v25.06.1
4f8bef7

Choose a tag to compare

New Features

  • New credit account reporting option --invert for all reports and Equity export (GH-99)

  • Enhanced and better error messages in case of invalid configuration file

Changes

  • Equity export: Use price data if commodity conversion is activated (GH-101)

  • Equity export: move the UUID of last txn from the subject line to the comment section of the equity transaction

Fixes

  • Implement missing CLI select all account selector (--accounts "")
  • Implement missing CLI disable all reports selector (--reports "")
  • Implement missing CLI disable all exports selector (--exports "")
  • Adapt to Rust 1.88.0 with clippy::pedantic

How to test this release

Equity without commodity price conversion:

tackler new demo 
tackler \
    --config demo/conf/tackler.toml \
    --reports "" \
    --price.lookup-type none \
    --exports equity \
    --output.dir . \
    --output.prefix eq-none

Output:

        Equity Export : ./eq-none.equity.txn

$ cat ./eq-none.equity.txn
2025-03-21T00:00:00+00:00 'Equity txn
   Assets:Cash  -5.50
   Equity:Balance  5.50

2025-03-21T00:00:00+00:00 'Equity txn for GML
   Assets:Coins  1 GML
   Equity:Balance  -1 GML

Equity with commodity price conversion

tackler \
    --config demo/conf/tackler.toml \
    --reports "" \
    --price.lookup-type last-price \
    --exports equity \
    --output.dir . \
    --output.prefix eq-cad

Output:

        Equity Export : ./eq-cad.equity.txn

$ cat ./eq-cad.equity.txn
2025-03-21T00:00:00+00:00 'Equity txn
   ; Report Time Zone
   ;         TZ name : UTC
   ;
   ; Commodity Prices
   ;            Time : 2025-03-21 00:00:00
   ;       Commodity : GML
   ;           Value : 4350 CAD
   ;
   Assets:Cash  -5.50
   Equity:Balance  5.50

2025-03-21T00:00:00+00:00 'Equity txn for CAD
   ; Report Time Zone
   ;         TZ name : UTC
   ;
   ; Commodity Prices
   ;            Time : 2025-03-21 00:00:00
   ;       Commodity : GML
   ;           Value : 4350 CAD
   ;
   Assets:Coins  4350 CAD
   Equity:Balance  -4350 CAD

Equity with commodity price conversion and with inverted amounts:

tackler \
    --config demo/conf/tackler.toml \
    --reports "" \
    --price.lookup-type last-price \
    --exports equity \
    --invert \
    --output.dir . \
    --output.prefix eq-cad-inverted

Output:

        Equity Export : ./eq-cad-inverted.equity.txn

cat ./eq-cad-inverted.equity.txn
2025-03-21T00:00:00+00:00 'Equity txn
   ; Report Time Zone
   ;         TZ name : UTC
   ;
   ; Commodity Prices
   ;            Time : 2025-03-21 00:00:00
   ;       Commodity : GML
   ;           Value : 4350 CAD
   ;
   ; Credit Account Report
   ;            NOTE : All amounts are inverted
   ;
   Assets:Cash  5.50
   Equity:Balance  -5.50

2025-03-21T00:00:00+00:00 'Equity txn for CAD
   ; Report Time Zone
   ;         TZ name : UTC
   ;
   ; Commodity Prices
   ;            Time : 2025-03-21 00:00:00
   ;       Commodity : GML
   ;           Value : 4350 CAD
   ;
   ; Credit Account Report
   ;            NOTE : All amounts are inverted
   ;
   Assets:Coins  -4350 CAD
   Equity:Balance  4350 CAD

v25.05.1

10 May 18:49
v25.05.1
86d86b5

Choose a tag to compare

Warning

Semantic change with input.git.dir and input.git.ext

This releases fixes the functionality of input.git.dir and input.git.ext
so that it is identical with input.fs.dir and input.fs.ext.

With previous releases of tackler, input.git.dir and input.git.ext acted as a glob pattern (prefix and suffix).
Now input.git.dir will match the full directory name (no glob at the end) and input.git.ext will match the full extension of the filename (no prefix glob).

New Features

  • New and much improved Tackler Documentation

  • New output format JSON

    • Optional configuration key report.formats to specify output formats.
    • New optional CLI argument --formats to select report formats

Changes

  • Git SCM Storage

    • Enforce that input.git.dir is matched as a directory (not as a glob)
    • Enforce that input.git.ext is matched as a file extension (not as a glob)
  • Add account selectors as text into Account Selector Checksum metadata

  • Change and Add more information to the "Git Storage" metadata

    • New fields: "author", "date"
    • Fix name of "message" to "subject" (the content of that field has been git subject all the time)
    • Change field "suffix" to "extension", don't print the '.'
    • Change the order of fields (move commit after extension)
  • Change default allocator

    • Replace tikv-jemallocator with mimalloc
      • Mimalloc is available on Linux, Windows and MacOS
      • It's about 20% faster on Linux and Windows, but on MacOS difference is only about 5%
      • Memory usage increases about 30% an all platforms
  • Reject unknown configuration keys

  • Add new default configuration key ext for suffix (for both fs and git storage).
    Old config wiht suffix key is still supported.

  • Add new CLI option --input.fs.path

    • Change the semantics of --input.fs.dir, it's now path inside journal (under --input.fs.path)
      This is now symmetrical how --input.git.repo and --input.git.dir behave
  • Allow overriding storage options from CLI without full storage configuration

How to test this release

tackler new demo 
tackler \
    --config demo/conf/tackler.toml \
    --output.dir . \
    --output.prefix report \
    --formats txt json

Output:

       Balance Report (TEXT): ./report.bal.txt
       Balance Report (JSON): ./report.bal.json
      Register Report (TEXT): ./report.reg.txt
      Register Report (JSON): ./report.reg.json

Process JSON with jaq or jq

 jaq '.deltas[1]' report.bal.json

Filtered JSON Balance Report (get the second delta row)

{
  "delta": "1.00",
  "commodity": "GML"
}

v25.04.2

08 Apr 17:41
v25.04.2
64a0214

Choose a tag to compare

New features

Changes

  • New optional configuration key report.balance.type and report.balance-group.type, default is tackler's original balance report type tree.

See full CHANGELOG for details

Tackler-NG is tested with 417 tracked test vectors at the moment

How to test this release

cargo install --locked tackler
tackler new my_journal
tackler --config my_journal/conf/tackler.toml

# Explore `report.balance.type` and `report.balance-group.type` settings
# with `tree` and `flat` options.

v25.04.1

04 Apr 17:19
v25.04.1
668cebc

Choose a tag to compare

New features

Fixes and changes

  • Improved error messages when invalid journal syntax is used
  • Don't accept invalid CLI input arg combinations
  • Warn if exports are used without CLI output arguments
  • Enforce blank line between transactions (Tackler-Mk1 / ANTLR)
  • Print error message if repository contains links (Tackler-Mk1)
  • Print error message if transaction set is empty (Tackler-Mk1)
  • Equity Export: Check equity account name when strict mode is on (Tackler-Mk1)

See full CHANGELOG for details

Tackler-NG is tested with 408 tracked test vectors at the moment
(Full coverage of Tackler-Mk1 CLI tests)

How to test this release

cargo install --locked tackler
tackler new my_journal
tackler --config my_journal/conf/tackler.toml

# New Commodity Price Support feature
tackler \
    --config my_journal/conf/tackler.toml \
    --reports balance \
    --price.lookup-type last-price

Special Mention

Thank you RagibHasin for contributing and helping with Commodity Price Support feature (#36 and TEP-1015) !

v25.01.1

19 Jan 18:41
v25.01.1
e730633

Choose a tag to compare

Release highlights

How to test tackler

cargo install tackler
tackler new my_journal
tackler --config my_journal/conf/tackler.toml

New features

  • New tackler commands new and init
    • Command new <name> will create a new bookkeeping setup name with default files
    • Command init will initialize a new bookkeeping setup at current location
  • This release is 2-3x faster, now tackler can process 120_000 - 250_000 txn/s on modern laptop

Fixes and changes

  • Replaced ANTLR based Txn parser with winnow parser combinator
    • This is affecting how invalid journal syntax is reported
    • This has no changes to journal syntax
  • Replaced time and time-tz with jiff
    • This have some user visible changes, e.g. 'Z' is replaced with '+00:00'
    • Txn Filters, Txn Timestamp: Begin and End are displayed with report timezone

Tackler-NG is tested with 310 tracked test vectors at the moment

See full CHANGELOG for details

Tackler-NG 24.12.2

26 Dec 05:48
v24.12.2
9d617ff

Choose a tag to compare

Release highlights

Tackler-NG is tested with 306 of tackler's test vectors at the moment

New features

  • Git Backend: Add support for revspecs with --input.git.ref
  • Add support for new storage keys
    • input.fs.path, path to top level fs-storage location
    • input.git.repo, alias for input.git.repository

tackler-rs

Fixes and changes

  • Git Backend: When opening the repo, use exact location,
    and don't search upwards on the directory tree
  • Implement Tackler-Mk1 and JDK compatible full string (haystack) regex matcher.
    This change is affecting Account Selectors which use regex.

See full CHANGELOG for details