rustledger 0.20.2

Drop-in replacement for Beancount. Pure Rust, 10-30x faster.
Documentation
# 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).

## [0.13.0]https://github.com/rustledger/rustledger/compare/v0.12.0...v0.13.0 - 2026-04-21

### Bug Fixes

- address Copilot review on price source timeout docs and test helpers
- resolve remaining Rust 1.95 clippy lints in rustledger CLI
- replace map().unwrap_or(false) with is_ok_and() in integration test
- add missing postings table columns for beancount compatibility
- weight for @@ total price, describe id type, evaluate_column parity
- add visible meta column to postings table
- address review comments on plugin execution
- remove duplicate WASM plugin execution in check command
- address review comments on plugin consolidation
- accept E8002 in Python module plugin error test
- address review — safety, portability, and test coverage

### Documentation

- fix inaccuracies found during codebase audit
- update all references to bean-* wrapper scripts

### Features

- add Nushell shell completions

### Refactoring

- remove duplicated code and dead code across codebase
- remove more dead code found in second pass
- third pass — remove unused error variant, constant, and field
- consolidate plugin execution into run_plugins()
- make bean-compat opt-in, add rledger compat install

## [0.12.0]https://github.com/rustledger/rustledger/compare/v0.11.0...v0.12.0 - 2026-04-11

### Bug Fixes

- find bean-check binary in release profile for nix builds
- add space after { in cost display, cap display precision at 8
- add space after { in cost display to match Python beanquery
- avoid per-error source clone, simplify spans, add CJK test
- *(check)* emit E1005 (invalid account name) as parse-phase diagnostic
- *(test)* inline format arg in cli_commands_test to satisfy clippy
- *(booking)* propagate errors, track per-account booking methods
- *(booking)* apply per-account methods across all consumers
- align include-cycle error wording with Python beancount

### Features

- implement price caching for rledger price command
- add pager support for report output
- add phase field to JSON diagnostics for parse/validate separation
- *(query)* per-column display context for BQL output
- migrate from archived ariadne to miette for error diagnostics

### Testing

- add unit tests for diagnostic phase field

## [0.11.0]https://github.com/rustledger/rustledger/compare/v0.10.1...v0.11.0 - 2026-04-02

### Bug Fixes

- adapt to sha2 0.11.0 API changes
- *(price)* address PR review feedback
- address PR review feedback for custom price sources
- route WASM plugins declared in beancount file to WASM runtime
- address Copilot review comments

### Documentation

- fix currency_accounts plugin description

### Features

- add filtering options to report networth
- *(bql)* support numeric and mixed-type sets in IN operator
- *(extract)* add --list-importers and filename pattern matching
- *(price)* implement custom price sources with pluggable registry

## [0.10.1]https://github.com/rustledger/rustledger/compare/v0.10.0...v0.10.1 - 2026-03-12

### Bug Fixes

- address review comments on config feature

### Documentation

- update README plugin count from 20 to 30

### Features

- add configuration file support
- *(config)* add aliases and command-specific defaults

### Testing

- add comprehensive tests for config file feature

## [0.10.0]https://github.com/rustledger/rustledger/compare/v0.9.0...v0.10.0 - 2026-02-18

### Bug Fixes

- *(tests)* handle missing rledger binary in fixture_tests.rs
- *(tests)* gracefully handle missing rledger binary in CLI tests
- *(tests)* use CARGO_BIN_EXE for CLI tests

## [0.8.8]https://github.com/rustledger/rustledger/compare/v0.8.7...v0.8.8 - 2026-02-14

### Bug Fixes

- address review feedback on comments and error messages

### Features

- *(cli)* add completions subcommand for shell completion generation

## [0.8.6]https://github.com/rustledger/rustledger/compare/v0.8.5...v0.8.6 - 2026-02-09

### Miscellaneous

- update Cargo.lock dependencies

## [0.8.4]https://github.com/rustledger/rustledger/compare/v0.8.3...v0.8.4 - 2026-02-06

### Miscellaneous

- update Cargo.lock dependencies

## [0.8.3]https://github.com/rustledger/rustledger/compare/v0.8.2...v0.8.3 - 2026-02-05

### Miscellaneous

- update Cargo.lock dependencies

## [0.8.2]https://github.com/rustledger/rustledger/compare/v0.8.1...v0.8.2 - 2026-02-02

### Bug Fixes

- address PR review feedback

### Features

- *(loader)* add central orchestration API matching Python's loader.load_file()
- *(plugin)* enable Python plugin execution via WASM sandbox

### Style

- fix clippy warnings and formatting

## [0.8.0]https://github.com/rustledger/rustledger/releases/tag/v0.8.0 - 2026-01-28

### Bug Fixes

- *(balance)* propagate tolerance options and preserve total costs/prices
- *(check)* don't cache files with option validation warnings
- *(query)* tolerate parse errors like bean-query does
- line #s

### Miscellaneous

- reorganize test fixtures and cleanup

### Style

- fix clippy warnings after MSRV alignment

## [0.7.5]https://github.com/rustledger/rustledger/compare/v0.7.4...v0.7.5 - 2026-01-26

### Miscellaneous

- update Cargo.lock dependencies

## [0.7.4]https://github.com/rustledger/rustledger/compare/v0.7.3...v0.7.4 - 2026-01-26

### Miscellaneous

- update Cargo.lock dependencies

## [0.7.2]https://github.com/rustledger/rustledger/compare/v0.7.1...v0.7.2 - 2026-01-25

### Bug Fixes

- *(booking)* sort directives by date before lot matching

### Performance

- box heavy Value variants and avoid balance prefix alloc

### Style

- apply cargo fmt

## [0.7.1]https://github.com/rustledger/rustledger/compare/v0.7.0...v0.7.1 - 2026-01-25

### Bug Fixes

- *(doctor)* convert byte offsets to line numbers in context command

## [0.7.0]https://github.com/rustledger/rustledger/releases/tag/v0.7.0 - 2026-01-25

### Bug Fixes

- *(test)* handle broken pipe gracefully in stdin test
- *(booking)* run booking before interpolation in check command

### Features

- *(synthetic)* add rledger-doctor generate-synthetic subcommand
- *(ffi-py)* add Fava integration APIs and BQL improvements
- *(bql)* add CREATE TABLE, INSERT, interval(), and SELECT FROM table

### Miscellaneous

- update remaining references to single rledger binary

### Refactoring

- consolidate rledger-\* binaries into single rledger binary
- *(cli)* split doctor.rs into command modules
- *(cli)* split report_cmd into focused modules

### Testing

- *(cli)* add comprehensive CLI command integration tests

### Style

- apply cargo fmt
- apply cargo fmt
- apply cargo fmt

## [0.6.0]https://github.com/rustledger/rustledger/releases/tag/v0.6.0 - 2026-01-23

### Bug Fixes

- add TTY detection for colored output
- address PR review comments and clippy warnings

### Documentation

- update install options in README

### Features

- *(validate)* add validate_spanned_with_options for location tracking
- add infrastructure for validation error line numbers
- add DisplayContext for consistent number formatting
- comprehensive benchmark infrastructure overhaul
- achieve 100% BQL query compatibility with Python beancount
- enhance compatibility CI with comprehensive testing
- add beancount compatibility testing framework
- \[**breaking**\] upgrade to Rust 2024 edition and MSRV 1.85

## [0.5.2]https://github.com/rustledger/rustledger/compare/v0.5.1...v0.5.2 - 2026-01-20

### Miscellaneous

- update Cargo.lock dependencies

## [0.5.1]https://github.com/rustledger/rustledger/compare/v0.5.0...v0.5.1 - 2026-01-19

### Miscellaneous

- update Cargo.lock dependencies

## [0.5.0]https://github.com/rustledger/rustledger/compare/v0.4.0...v0.5.0 - 2026-01-19

### Features

- \[**breaking**\] upgrade to Rust 2024 edition and MSRV 1.85