All notable changes to this project will be documented in this file.
0.9.0 (2026-03-31)
- ci: remove duplicate govulncheck tags (15542bd)
- cli: add missing error context for Price/Event/Custom/Commodity (41a55c7)
- editor: preserve updateListener in reconfigure to fix empty save (f52d0ba)
- formatter: preserve inline comments on price directives (60185bc)
- formatter: split source lines on
\rand\r\nto match lexer (444f5ae) - ledger: move pad-used marking from Validate to Apply (bbab4f2)
- ledger: prevent division by zero in empty cost inference (05104b5)
- ledger: remove double counting of inferred amounts in tolerance (d664b1a)
- ledger: replace dead code in cost label validation (25179ce)
- lexer: prevent newline consumption in malformed strings (913b29e)
- lexer: support slash dates and multiline strings (3022516)
- parser: accept documented top-level and txn forms (bfbe22d)
- parser: accept org headers and open metadata (0a3625f)
- parser: add same-line check for currency in custom amounts (f54ff07)
- parser: align with beancount and add query support (54d3932)
- parser: handle ACCOUNT tokens in custom directive values (a3e4ff7)
- parser: propagate errors from parseMetadataValue (7b369de)
- parser: remove incorrect look-back in escape sequences (ebb8f65)
- parser: remove ineffective break in custom value switch (098eca5)
- parser: return clear error on EOF after date token (f9d867b)
- parser: return error on unmatched parentheses in expressions (78be9d5)
- parser: return ILLEGAL token for unterminated strings (82a14c9)
- parser: store non-boolean IDENTs as string in custom values (ed09117)
- parser: support documented directive syntax variants (b5e6134)
- parser: support documented metadata and custom values (803ec37)
- upgrade Go toolchain to 1.24.11 for crypto/x509 security fixes (2e55c43)
- web: eliminate race condition in handleFileChange (742b09e)
- web: return response instead of 500 when reload fails after save (88867ec)
- lexer: use map lookup for keyword type resolution (94458eb)
- parser: avoid string conversion in calculateSourceRange (2d5a35d)
- parser: use strings.Builder in parseRestOfLine (b24a5ec)
0.8.0 (2026-01-13)
- add cosign signing and SBOM attestation (bc56f30)
- cli: add --host flag to web command (457a0d7)
- generate SBOM for included assets (96d4f91)
- ledger: add generic GetBalanceTree API for financial reports (#117) (fe1ce75)
- ledger: support custom account names (67a54ed)
- release docker image alongside executables (5ee77dd)
- serve index.html for all unmatched paths (551362f)
- sign docker manifests upon releases (4a106b9)
- web: add file selector dropdown for included files (4c5150c)
- web: add sidebar navigation (2c2b50a)
- web: set up solidjs router (fc8a20f)
- ledger: make implicit parent accounts accessible via GetParent/GetChildren (f6291b9)
- parser: validate dates at lex time to match beancount behavior (5e0b8c1)
- web: filter errors to only show current file (639ac05)
0.7.0 (2026-01-07)
- add doctor lex command for token debugging (163ac5b)
- add Must* variants and refactor tests (d8a788d)
- ast: add DirectiveKind with Kind() method, remove Directive() (bf1442c)
- ledger: add ConvertBalance and GetBalanceInCurrency APIs (56e874d)
- ledger: add GetAccountsByType() for filtering by account type (be8c27c)
- ledger: add GetBalanceInCurrencyAsOf plus rename GetBalancesAsOfInCurrency (ef4db35)
- ledger: add GetBalancesAsOfInCurrency and consolidate account iteration (ca980a5)
- ledger: add graph abstraction with pathfinding (66249ae)
- ledger: add reporting APIs with posting history (0ea3f5b)
- ledger: implement account hierarchy with balance aggregation (aa6a6f2)
- ledger: implement explicit commodity nodes in graph (dcf0089)
- ledger: implement temporal price index with forward-fill semantics (a065b5e)
- ledger: support implicit posting amount inference (598109d)
- support and preserve comma thousands separators (#114) (2e39fee)
- web: add read-only mode to UI and API (bb390fe)
- parser: handle blank lines between postings (15c1063)
- parser: preserve blank lines after transaction postings (fab5930)
- parser: standardize token names to uppercase (88dcb36)
- web: check return value of Fprint (7f7b638)
- web: correctly lowercase position properties when encoded to json (310f47d)
- web: start error marker at beginning of line (b177d81)
0.6.0 (2025-12-18)
- ast: attach string escape metadata and inline flag to AST nodes (8bdd108)
- ast: store inferred amounts directly on AST nodes (7211e03)
- lexer: implement consistent token consumption (bececd1)
- make codemirror aware of beancount syntax (#79) (d7298fc)
- make codemirror popover colors consistent with overall theme (6adaeb3)
- parser: add UTF-8 validation to lexer (9af4688)
- parser: add validation to reject invalid beancount syntax at parse time (bf06702)
- parser: improve string literal parsing with escapes and validation (d873409)
- parser: preserve original string escape information for round-trip formatting (6bcfbc7)
- parser: track escape sequences for round-trip formatting (98b6c8b)
- web: add account autocomplete with match-sorter (90bdb2c)
- web: add context-aware account autocomplete (16e567e)
- web: add GET /api/accounts endpoint (0a6ce4f)
- formatter: ensure idempotency by trimming leading and trailing blank lines (5c33705)
- formatter: ensure idempotency by trimming trailing blank lines (4d57fa1)
- formatter: gracefully handle malformed input (227895e)
- formatter: resolve idempotency failure in Note/Document with inline metadata (6c06ab8)
- formatter: respect Metadata.Inline flag for posting metadata (c3c9abb)
- formatter: skip directives with invalid dates to prevent malformed output (c1008fe)
- formatter: skip raw tokens with newlines to preserve idempotency (f552d07)
- ledger: reject invalid years (48e35d2)
- metadata parsing and formatting bugs affecting idempotency (b77a8e9)
- parser: correct position tracking for multi-line directives (6e575be)
- parser: handle escaped backslash with escape chars correctly (f59e7e5)
- parser: handle inline comments in transaction postings (718444c)
- parser: require narration in transaction headers (f59b5cf)
0.5.0 (2025-11-03)
- add average time per item to all structured timer outputs (0cea719)
- serve interactive editor through
webcommand (#45) (7a58980)
- formatter: auto-calculate currency column by default (29076d4)
- parser: add consistent string interning for memory savings (a3ab4c9)
- telemetry: aggregate transaction validation timing for large files (289198b)
0.4.0 (2025-10-21)
- add source context to parse errors (f032ef1)
- add support for additional metadata value types (195d6c5)
- add support for expressions in amounts (73d76de)
- apply small optimizations to parser logic (8b809cc)
- cost: add total cost syntax
{{…}}(5489905) - goreleaser: add nfpms for linux packages (c6b5545)
- ledger: add validators for costs/prices/directives (8cf6a6c)
- ledger: implement merge-cost lots {*} functionality (ddc409c)
- ledger: implement modern tolerance inference (5dc2124)
- ledger: implement pad synthetic transactions (e04a984)
- ledger: implement validation/mutation separation (0225cf6)
- make stdin default input when no filename provided (5d417f6)
- replaced participle with a custom recursive descent parser (#43) (85d9ba2)
- support multiple values for option directives (94f3bc6)
- telemetry: add µs precision and rounding indicators (7e02668)
- add binary field to homebrew cask (5f16baf)
- ast: add stable sort with line number tertiary key (eeec8ba)
- correctly resolve binaries when testing on windows (bea1a35)
- goreleaser: package executable not archive (5835fcb)
- match formatting defaults with bean-format (be80e43)
- parser: report error at the end of the number token (f852036)
- support Unicode characters in account names (b8ff156)
- telemetry: correct hierarchy and timer lifecycle (cb3e100)
0.3.0 (2025-10-17)
- add context for cancellation support (7f4f14c)
- add timing telemetry with --telemetry flag (5902a9f)
- ast: add builder functions with functional options (39fa281)
- expose ast types through
ast/package (930f0d6) - make error formatting consistent (c607c41)
- telemetry: make flag global, add to format (785b531)
0.2.0 (2025-10-17)
- add support for
customdirective (54d352a) - add support for
plugindirective (8112921) - add support for pushtag/poptag and pushmeta/popmeta (d318c52)
- add transaction context to account errors (d627eb6)
- add transaction context to errors (b582421)
- align currencies correctly regardless of character type (66f99e5)
- initial ledger functionality (#42) (fd495c6)
- make parser accept quoted string as booking method (3a369b9)
- pass short commit when building (12725d1)
- resolve files from include directives (2fdd162)
- show usage instead of error (836c496)
- sign checksums when releasing (17176a6)
- update formatter with additional directives (15e2495)
- allow transactions on account close date (d98d576)
- correctly handle slashes on windows (22502eb)
- detect empty cost specs in weight calculation (6c60c44)
- infer costs for empty cost spec augmentations (1ea35e1)
- preserve original spacing when formatting (d00e75f)
- update test for close date behavior (d784e27)
0.1.0 (2025-10-17)
- account validation through switch statement (fc7d37b)
- add merge cost specification (13a6845)
- Add support for
documentdirective (4808d39) - Add support for
eventdirective (356fbe1) - Add support for
notedirective (482b970) - Add support for
paddirective (1969c96) - Add support for
pricedirective (30023f4) - add support for cost with date syntax (90e9b58)
- add support for empty costs (
{}) (b0f190d) - add support for formatting beancount files (#41) (aefe473)
- Add support for include directives (629f3fe)
- add support for links in transactions (#40) (5975259)
- add support for tags (138df65)
- attach text labels to cost basis (e7ecd05)
- Capture dates as Date structs (c46e387)
- Define all possible directives as structs (8d61b14)
- directly parse date from guaranteed format (1703578)
- expose version information through CLI (3d23350)
- Let kong handle reading the file’s content (8dfe1af)
- Make account name parsing stricter (5edd9be)
- Move parser to subpackage (2c12ca8)
- remove prefixes from links and tags (550432a)
- remove unnecessary time.Time() conversion (2f3d2a8)
- require at least go 1.24 (137f238)
- Reuse Amount struct to define price on posting (dd4c6be)
- simplified account regex pattern (b4e3381)
- skip characters from guaranteed format (abf4a47)
- skip sorting if already sorted (04e25c8)
- Sort directives by date while checking (738ca7c)