1User-visible changes in the hledger command line tool and library. 2 3 4# 1.19 2020-09-01 5 6## general 7 8- When parsing dates, the year is now required to have at least four 9 digits. So eg we no longer accept `200/1/1` as a valid date, it 10 would need to be written `0200/1/1`. This was done for.. reasons, 11 and is experimental; let us know if it causes you trouble. 12 13- The --color/--colour=WHEN command line option, support for the 14 NO_COLOR environment variable, and smarter autodetection of colour 15 terminals have been added (#1296) 16 17- Command line options taking a numeric argument are now validated 18 more carefully, preventing issues with unexpected negatives or Int 19 overflow. (Stephen Morgan) 20 21- In queries, you can now specify a quarter like `2020q1` or `q4` 22 (the q is case-insensitive). (#1247, Henning Thieleman, Stephen Morgan) 23 24- In report intervals, `fortnightly` has been added as a synonym for 25 `biweekly`. (Stephen Morgan) 26 27- -t and -l command line flags have been added as short forms of 28 --tree and --flat (#1286) 29 30- All reports displaying accounts now choose flat mode by default 31 (Stephen Morgan) 32 33- Reports now show at most 2 commodities of multicommodity amounts, 34 unless the --no-elide flag is used. This helps keep them readable by 35 default, since multicolumn, multicommodity balance reports otherwise 36 tend to become very wide, especially in tree mode. 37 38- Numbers with more than 255 decimal places, which we do not support, 39 now give an error instead of silently misparsing. (#1326) 40 41- Digit groups are now limited to at most 255 digits each. (#1326) 42 43- Account aliases (on command line or in journal) containing a bad 44 regular expression now give a more detailed error message. 45 46- A tab character could get parsed as part of a commodity symbol, with 47 confusing results. This no longer happens. (#1301, Dmitry Astapov) 48 49- Debug output is now organised better by debug level. 50 The levels are: 51 52 0. normal command output only (no warnings) 53 1. useful warnings & most common troubleshooting info (valuation, eg) 54 2. common troubleshooting info, more detail 55 3. report options selection 56 4. report generation 57 5. report generation, more detail 58 6. input file reading 59 7. input file reading, more detail 60 8. command line parsing 61 9. any other rarely needed or more in-depth info 62 63- Added a missing lower bound for aeson, making cabal installs more 64 reliable. (#1268) 65 66- lib: parseAmountQueryTerm: allow whitespace around arg parts (#1312) 67 Whitespace around the operator, sign, or number is now tolerated. 68 69## commands 70 71- account,bal,bs,cf,is: --drop now also works in tree mode (Stephen Morgan) 72 73- add: fix an error in the command line help (arguments are inputs, 74 not a query) 75 76- aregister: a new command showing a transaction-oriented account 77 register, like hledger-ui, hledger-web, or your bank statement. 78 Each line represents a whole transaction in one account, unlike 79 the register command which shows individual postings possibly from 80 multiple accounts. You might prefer aregister when reconciling 81 real-world asset/liability accounts, and register when reviewing 82 detailed revenues/expenses. (#1294) 83 84- bal,bs,cf,is: boring parents are now elided by default in tabular 85 balance reports too, like single-column reports. (Stephen Morgan) 86 87- bal,bs,cf,is: monthly column headings are no longer elided to just 88 the short month name, if multiple years are being displayed. 89 90- bal --budget's column headings are now end dates rather than 91 periods when appropriate (ie with --cumulative or --historical). 92 93- bs,cf,is: -%/--no-total no longer forces --no-total (Stephen Morgan) 94 95- bs,cf,is: --no-total now hides subtotals as well as the grand total 96 (Stephen Morgan) 97 98- codes: a new command for listing transaction codes 99 100- print: a new `sql` output format has been added (Dmitry Astapov) 101 102- roi: errors are now shown without a call stack 103 104- tags: add --parsed flag, hide empties without --empty. With the 105 --parsed flag, all tags or values are shown in the order they are 106 parsed from the input data, including duplicates. With -E/--empty, 107 any blank/empty values will also be shown, otherwise they are 108 omitted. 109 110## journal format 111 112- account directives can specify a new `Cash` account type. This is a 113 subtype of `Asset`, denoting accounts which should be displayed 114 in `cashflow` reports. 115 116- The built-in regular expressions for choosing default account types 117 have been tweaked, and documentation for account types has been 118 improved. 119 120## csv format 121 122- Inferring the appropriate default field separator based on file 123 extension (, for .csv, ; for .ssv, \t for .tsv) now works as 124 documented. 125 126- Conditional rule patterns can now be grouped with the `&` (AND) operator, 127 allowing more powerful matching. (Michael Sanders) 128 129- Invalid csv rules files now give clearer parse error messages. 130 (Dmitry Astapov) 131 132- "If tables", a compact bulk format for conditional rules, have been 133 added. (Dmitry Astapov) 134 135- csv conversion with a lot of conditional rules is now faster (Dmitry Astapov) 136 137 138# 1.18.1 2020-06-21 139 140- journal: document recursive wildcards 141 142- by default, value reports work as in 1.17; to infer market prices from 143 transactions, add the new --infer-value flag. (#1239, #1253) 144 145- organise debug output better 146 147- print: amounts in csv output now have commodity symbol, digit group 148 separators and prices removed (Dmitry Astapov) 149 150 151# 1.18 2020-06-07 152 153## General 154 155- The --forecast flag now takes an optional argument 156 (--forecast=PERIODICEXPR), allowing periodic transactions to 157 start/end on any date and to overlap recorded transactions. 158 (#835, #1236) (Dmitry Astapov) 159 160- An upper case file extension no longer confuses file format 161 detection. (#1225) 162 163- In the commands list, redundant source scripts are now hidden 164 properly when a corresponding .com/.exe file exists. (#1225) 165 166- We now show `..` instead of `-` to indicate date ranges, eg in 167 report titles, to stand out more from hyphenated dates. 168 (Stephen Morgan) 169 170- Period expressions (eg in -p, date:, and periodic rules) now accept 171 `to`, `until`, `-`, or `..` as synonyms. (Stephen Morgan) 172 173- When parsing amounts, whitespace between sign and number is now allowed. 174 175- A clearer error message is shown on encountering a malformed regular 176 expression. 177 178## commands 179 180- commands allowing different output formats now list their supported 181 formats accurately in --help (#689) 182 183- commands allowing JSON output now actually produce JSON (#689) 184 185- bal, bs: show .. (not ,,) in report titles, like other reports 186 187## journal format 188 189- We now also infer market prices from transactions, like Ledger. 190 See https://hledger.org/hledger.html#market-prices (#1239). 191 192 Upgrade note: this means value reports (-V, -X etc.) can give 193 different output compared to hledger 1.17. If needed, you can 194 prevent this by adding a P directive declaring the old price, on or 195 after the date of the transaction causing the issue. 196 197- The include directive now accepts a file format prefix, like the 198 -f/--file option. This works with glob patterns too, applying the 199 prefix to each path. This can be useful when included files don't 200 have the standard file extension, eg: 201 202 include timedot:2020*.md 203 204- We now accept (and ignore) Ledger-style lot dates 205 (`[DATE]`) and four lot price forms (`{PRICE}`, `{{PRICE}}`, 206 `{=PRICE}`, `{{=PRICE}}`), anywhere after the posting amount but 207 before any balance assertion. 208 209- We now accept Ledger-style parenthesised "virtual posting 210 costs" (`(@)`, `(@@)`). In hledger these are equivalent to the 211 unparenthesised form. 212 213- The unbalanced transaction error message is clearer, especially when 214 postings all have the same sign, and is split into multiple lines 215 for readability. 216 217## csv format 218 219- You can now generate up to 99 postings in a transaction. (Vladimir Sorokin) 220 221- You can now generate postings with an explicit 0 amount. (#1112) 222 223- For each posting, when both numbered and unnumbered amount 224 assignments are active (eg: both `amount` and `amount1`), we ignore 225 the unnumbered ones. This makes it easier to override old `amount` 226 rules. 227 228- Fix a 1.17.1 regression involving amount-in/amount-out. (#1226) 229 230- Assigning too many non-zero or zero values to a posting amount now 231 gives a clearer error. (#1226) 232 233 234# 1.17.1.1 2020-03-19 235 236- update bounds after some belated hledger-* version bumps 237 238# 1.17.1 2020-03-19 239 240- csv: amount1 no longer forces a second posting or second posting amount. 241 The "special handling for pre 1.17 rules" should now be less 242 noticeable. amount1/amount2 no longer force a second posting or 243 explicit amounts on both postings. (Only amount/amount-in/amount-out 244 do that.) Error messages and handling of corner cases may be more 245 robust, also. 246 247- journal: a commodity directive without decimal mark now gives a more 248 verbose error message with examples 249 250- journal: inclusive balance assignments now work (#1207) 251 252- require newer Decimal, math-functions libs to ensure consistent 253 rounding behaviour, even when built with old GHCs/snapshots. 254 hledger uses banker's rounding (rounds to nearest even number, eg 255 0.5 displayed with zero decimal places is "0"). 256 257# 1.17 2020-03-01 258 259## General 260 261- hledger's default date format is now YYYY-MM-DD (ISO-8601 dates). 262 (Brian Wignall, Jakob Schöttl, Simon Michael) 263 264- Drop the file format auto-detection feature. 265 266 For a long time hledger has auto-detected the file format when it's 267 not known, eg when reading from a file with unusual extension (like 268 .dat or .txt), or from standard input (-f-), or when using the 269 include directive (which currently ignores file extensions). This 270 was done by trying all readers until one succeeded. This worked 271 well in practice. But recent changes to timedot format have made 272 this kind of auto-detection unreliable. (timedot and journal formats 273 overlap). 274 275 For predictability and to minimise confusion, hledger will no longer 276 guess; when there's no file extension or reader prefix available, it 277 always assumes journal format. 278 279 To specify one of the other formats, you must use its standard file 280 extension (`.timeclock`, `.timedot`, `.csv`, `.ssv`, `.tsv`), or a 281 reader prefix (`-f csv:foo.txt`, `-f timedot:-`). 282 283 Experimental, feedback welcome. 284 285- Fix extra $ symbol (Mateus Furquim) 286 287- --output-format now rejects invalid formats 288 289- Numbers in JSON output now provide a floating point Number 290 representation as well as our native Decimal object representation, 291 since the later can sometimes contain 255-digit integers. The 292 floating point numbers can have up to 10 decimal digits (and an 293 unbounded number of integer digits.) 294 Experimental, suggestions needed. (#1195) 295 296- Fix finding latest date in queryEndDate Or queries and simplify 297 date comparison code. (Stephen Morgan) 298 299- Fix issue 457. (Jacek Generowicz) 300 Issue #457 pointed out that commands such as 301 302 hledger ui 'amt:>200' 303 304 failed. This was because the process of dispatching from `hledger ui` 305 to `hledger-ui` (note addition of `-`) lost the quotes around 306 `amt:>20` and the `>` character was interpreted as a shell redirection 307 operator, rather than as part of the argument. 308 309 The machinery for quoting or escaping arguments which contain 310 characters which require quoting or escaping (thus far whitespace and 311 quotes) already existed. This solution simply adds shell stdio 312 redirection characters to this set. 313 314## commands 315 316- add: you can use `<` to undo and redo previous inputs (Gaith Hallak) 317 318- bs, cf, is, bal, print, reg: support json output 319 320- bs, cf, is: fix excess subreport columns in csv output 321 322- bs, cf, is, bal: fix an issue with border intersections in 323 --pretty-tables output. (Eric Mertens) 324 325- close: fix a rounding bug that could generate unbalanced transactions. (#1164) 326 327- close: hide cost prices by default, show them with --show-costs. 328 close no longer preserves costs (transaction prices) unless you ask 329 it to, since that can generate huge entries when there are many 330 foreign currency/investment transactions. (#1165) 331 332- close: equity amounts are omitted by default, for simpler entries; 333 -x/--explicit shows them (usually causing more postings). (#1165) 334 335- close: --interleaved generates equity postings alongside each closed 336 account, making troubleshooting easier. 337 338- close: "equity:opening/closing balances" is now the default 339 closing and opening account. 340 341- close: --close-desc/--open-desc customise the closing/opening 342 transaction descriptions. (#1165) 343 344- close: some --open*/--close* flags have been simplified for memorability: 345 346 --closing -> --close 347 --opening -> --open 348 --close-to -> --close-acct 349 --open-from -> --open-acct 350 351 The old flags are accepted as hidden aliases, and deprecated. (#1165) 352 353- print, register: a new valuation type, --value=then, shows the 354 market value at each posting's date. 355 356- print: -V/-X/--value now imply -x/--explicit, as -B/--cost does. 357 This avoids a bug where print -V of a transaction with an implicit 358 commodity conversion would convert only some of its postings to value. 359 360## journal format 361 362- The include directive no longer tries all readers. It now picks 363 just one, based on the included file's extension, defaulting to 364 journal. (It doesn't yet handle a reader prefix.) 365 366- The default commodity (D) directive now limits display precision too. (#1187) 367 D directives are now fully equivalent to commodity directives for 368 setting a commodity's display style. (Previously it couldn't limit 369 the number of decimal places.) When both kinds of directive exist, 370 commodity directives take precedence. When there are multiple D 371 directives in the journal, only the last one affects display style. 372 373## csv format 374 375- Conditional blocks can now match single fields. \o/ 376 377- The experimental --separator command line option has been dropped, 378 replaced a new `separator` directive in CSV rule files. (Aleksandar Dimitrov) 379 Also the `.tsv` and `.ssv` file extensions are now recognised, 380 and set the default `separator` to TAB and semicolon respectively. 381 (#1179) 382 383- Allow manual assignment of the "expenses:unknown" account name. (#1192) 384 385- CSV rule keywords are now case insensitive. (Aleksandar Dimitrov) 386 387## timeclock format 388 389- Misc. fixes making parsing more robust. (Jakob Schöttl) 390 391## timedot format 392 393- More support for org mode: org headlines can now be used for date 394 lines and timelog items (the stars are ignored). Also, any org 395 headlines before the first date line are ignored. 396 397- You can now write a description after a date, which will be used in 398 all of that day's transactions. 399 400 401# 1.16.2 2020-01-14 402 403- add support for megaparsec 8 (#1175) 404 405- close: mention --close-to/--open-from in docs 406 407# 1.16.1 2019-12-03 408 409- Drop unnecessary mtl-compat dependency 410 411- Fix building with GHC 8.0, 8.2 412 413# 1.16 2019-12-01 414 415## General 416 417- add support for GHC 8.8, base-compat 0.11 (#1090) 418 419- drop support for GHC 7.10 420 421- The benchmark suite has been disabled. 422 423- The --anon flag now also anonymises transaction codes and account 424 names declared with account directives. (Mykola Orliuk) (#901) 425 426## commands 427 428- balance/bs/cf/is: balance commands now support the -%/--percent flag 429 to show amounts as percentages of the column's total. (Michael Kainer) 430 431 If there are multiple commodities involved in a report hledger bails 432 with an error message. This can be avoided by using -B/--cost. Also note 433 that if one uses -% with the balance command the chances are high that 434 all numbers are 0. This is due to the fact that by default balance sums 435 up to zero. If one wants to use -% in a meaningful way with balance one 436 has to add a query. 437 438 In order to keep the implementation as simple as possible --tree has no 439 influence over how the percentages are calculated, i.e., the percentages 440 always represent the fraction of the columns total. If one wants to know 441 the percentages relative to a parent account, one has to use a query to 442 narrow down the accounts. 443 444- balance: --budget no longer errors when there is neither budget nor 445 transactions in the report period (Dmitry Astapov) 446 447- balance: --budget has improved debug output (shows budget txns) 448 (Dmitry Astapov) 449 450- check-dates: now sets the exit status code (Amitai Burstein) 451 452- close: no longer strips zeroes after the decimal mark, and preserves 453 parseable output (#1137) 454 455- close: the --close-to, --open-from options allow closing/opening 456 account names to be chosen 457 458- import: create the journal if missing, like the add command 459 Streamlines import/migration instructions. 460 461- import: --catchup marks all transactions imported, without importing 462 463- import: more informative output: mention the input files, also show 464 a message when nothing was imported 465 466- prices: show price amounts with proper display style; always show 467 full precision 468 469- roi: don't give an error with empty input data (Dmitry Astapov) 470 471- tests: unit tests are now run by tasty, and show coloured output by default (#1090). 472 Test running options have changed, see the command help. 473 Some unit tests have been collapsed, so the reported test count has 474 dropped a little. 475 476## journal format 477 478- Fixed: wrong dates generated by certain periodic transaction rules, 479 eg "~ every 12 months from 2019/04". (Dmitry Astapov) (#1085) 480 481## csv format 482 483CSV conversion is now more powerful (#1095, Dmitry Astapov, Simon Michael): 484 485- A variable number of postings can be generated, from zero to nine. (#627, #1095) 486 487- In conditional blocks, `skip` can be used to skip one or more 488 records after a pattern match, or the new `end` rule can be used to 489 skip all remaining records. (#1076) 490 491- The new `balance-type` CSV rule controls which kind of balance 492 assertions are generated (=, ==, =*, ==*) 493 494- Postings with balance assignments can be generated. (#1000) 495 496- Both the amount-in/amount-out fields having a non-empty value is now 497 accepted, as long as one of them is zero. (#570) 498 499- Line feeds/carriage returns in (quoted) CSV values are now converted 500 to spaces during conversion. (#416, #841) 501 502- Field assignments can now unset a field (eg a posting can be 503 suppressed by assigning no value to its account). 504 505- CSV records with varying lengths are now allowed; short records will 506 be padded with empty fields as needed. This allows us to handle eg 507 exported Google spreadsheets, where trailing empty fields are omitted. 508 509- Journals generated from CSV are now finalised and checked like 510 ordinary journals (#1000). So invalid transactions generated from 511 CSV will be rejected, amount styles will be standardised etc. 512 513- Fixed: we no longer add an extra (third) space between description and comment. 514 515- Fixed: whitespace on the line after an if block no longer causes misparsing. (#1120) 516 517- Fixed: an empty field assignment no longer consumes the next line. (#1001) 518 519- Fixed: interpolation of field names containing punctuation now works. 520 521- Docs have been rewritten and clarified. 522 523Migration notes: 524 525- When `print`ing from CSV, there is now one less space between 526 transaction descriptions and comments, which may generate noisy 527 diffs if you are comparing old and new reports. diff -w 528 (--ignore-all-space) will filter these out. 529 530- CSV rules now give you more freedom to generate any journal 531 entries you want, including malformed or unbalanced ones. 532 The csv reader now checks the journal after conversion, 533 so it will report any problems with the generated entries. 534 535- Balance assertions generated from CSV are not checked, currently. 536 This is appropriate when you are downloading partial CSV data to 537 be merged into your main journal. If you do need to check balance 538 assertions right away, you can pipe through hledger again: 539 540 $ hledger -f a.csv print | hledger -f- print 541 542 543 544# 1.15.2 2019-09-05 545 546- -V and -X now respect a report end date (set with -e or -p or date:) 547 when choosing the valuation date (which determines the market prices 548 used). This is how -V works in hledger 1.14 and Ledger, and it means 549 that -V isn't exactly equivalent to either --value=end or 550 --value=now. Possibly some other corner cases in valuation have been 551 fixed as well. "Effect of --value on reports" in the hledger manual 552 has been updated and is more accurate. 553 554# 1.15.1 2019-09-02 555 556- add commodities, descriptions, diff, notes, payees commands to manual 557 558# 1.15 2019-09-01 559 560## General 561 562- There is a new valuation option `--value=TYPE[,COMM]`, with 563 backwards-compatible `-B/--cost`, `-V/--market`, `-X/--exchange=COMM` 564 variants. These provide control over valuation date (#329), and 565 inference of indirect market prices (similar to Ledger's -X) (#131). 566 Experimental. 567 568- Market valuation (-V/-X/--value) is now much faster (#999): 569 570 +-------------------------------------------++--------------+--------------+ 571 | || hledger-1.14 | hledger-1.15 | 572 +===========================================++==============+==============+ 573 | -f examples/10000x1000x10.journal bal -Y || 2.43 | 2.44 | 574 | -f examples/10000x1000x10.journal bal -YV || 44.91 | 6.48 | 575 | -f examples/10000x1000x10.journal reg -Y || 4.60 | 4.15 | 576 | -f examples/10000x1000x10.journal reg -YV || 61.09 | 7.21 | 577 +-------------------------------------------++--------------+--------------+ 578 579- How date options like `-M` and `-p` interact has been updated and clarified. 580 (Jakob Schöttl) (#1008, #1009, #1011) 581 582- Restore `--aux-date` and `--effective` as `--date2` aliases (#1034). 583 These Ledger-ish spellings were dropped over the years, to improve 584 `--help`'s layout. Now we support them again, as semi-hidden flags 585 (`--help` doesn't list them, but they are mentioned in `--date2`'s help). 586 587## commands 588 589- add, web: on Windows, trying to add transactions to a file path 590 containing trailing periods (eg `hledger add -f Documents.\.hledger.journal`) 591 now gives an error, since this could cause data loss otherwise (#1056). 592 This affects the add command and hledger-web's add form. 593 594- bal: --budget: don't always convert to cost. 595 596- bal: --budget: don't show a percentage when budgeted and actual 597 amounts are in different commodities. 598 599- bal/bs/bse: `-H/--historical` or `--cumulative` now disables `-T/--row-total` (#329). 600 Multiperiod balance reports which show end balances (eg, `bal -MH` or `bs -M`) 601 no longer show a Totals column, since summing end balances generally 602 doesn't make sense. 603 604- bs: show end date(s) in title, not transactions date span (#1078) 605 Compound balance reports showing ending balances (eg balancesheet), 606 now show the ending date (single column) or range of ending 607 dates (multi column) in their title. ,, (double comma) is used 608 rather than - (hyphen) to suggest a sequence of discrete dates 609 rather than a continuous span. 610 611- close: preserve transaction prices (costs) accurately (#1035). 612 The generated closing/opening transactions were collapsing/misreporting 613 the costs in balances involving multiple costs. 614 Now, each separately-priced amount gets its own posting. 615 (And only the last of these (for each commodity) gets a balance assertion.) 616 Also the equity posting's amount is now always shown explicitly, 617 which in multicommodity situations means that multiple equity postings are shown. 618 The upshot is that a balance -B report will be unchanged after 619 the closing & opening transactions generated by the close command. 620 621- descriptions, payees, notes commands added (Caleb Maclennan) 622 623- diff: Gabriel Ebner's hledger-diff is now a built in command, 624 and https://github.com/gebner/hledger-diff is deprecated. 625 626- help: don't require a journal file 627 628- print: now also canonicalises the display style of balance assertion amounts (#1042) 629 630- reg: show negative amounts in red, like balance and Ledger 631 632- reg: fix `--average`, broken since 1.12 (#1003) 633 634- stats: show count of market prices (P directives), and the commodities covered 635 636- tags: add --values flag to list tag values. 637 638- tags: now runs much faster when there many tags 639 640## journal format 641 642- Transactions and postings generated/modified by periodic transaction 643 rules and/or transaction modifier rules are now marked with tags 644 (`generated-transaction`, `generated-posting`, `modified`) for 645 easier troubleshooting and filtering. 646 647## csv format 648 649- When interpolating CSV values, outer whitespace is now stripped. 650 This removes a potential snag in amount field assignments (#1051), 651 and hopefully is harmless and acceptable otherwise. 652 653- We no longer add inter-field spaces in CSV error messages. 654 Some CSV errors would show the problem record, eg: 655 656 2000-01-01,a,"1" 657 658 with extra spaces added, eg: 659 660 the CSV record is: "2000-01-01", "a", "1" 661 662 which was inaccurate and not valid RFC-4180 CSV format. 663 664- CSV parse errors are human-readable again (broken since 1.11) (#1038) 665 666- CSV rules now allow the amount to be unassigned, if there is an 667 assignment to "balance" (generating a balance assignment in this 668 case). (#1000) 669 670 671# 1.14.2 2019-03-20 672 673- require easytest <0.3 to fix build issue 674 675- fix some CSV parse errors which weren't in human readable format 676 677# 1.14.1 2019-03-01 678 679- fix missing Commodities.txt build error 680 681# 1.14 2019-03-01 682 683- journal: subaccount-including balance assertions have been 684 added, with syntax =* and ==* (experimental) (#290) 685 686- new commodities command lists commodity symbols 687 688- new --invert option flips sign of amounts in reports 689 690# 1.13.2 (2019/02/04) 691 692- print, register: restore the accidentally dropped -o, -O flags (#967) 693 694# 1.13.1 (2019/02/02) 695 696- stop depending on here to avoid haskell-src-meta/stackage blockage. 697 698# 1.13 (2019/02/01) 699 700- cli: reorganised commands list. Addons now have a + prefix. 701 702- cli: the command line help and manual section for all hledger's 703 commands are now consistent, and generated from the same source. 704 705- cli: comprehensive bash completion support is now provided (in 706 shell-completion/). See how-to in the Cookbook. (Jakob Schöttl) 707 708- balance --budget: budget amounts now aggregate hierarchically, like 709 account balances. Unbudgeted accounts can be shown with -E/--empty 710 (along with zero-balance accounts), and the --show-budgeted flag has 711 been dropped. (Dmitry Astapov) 712 713- balance: new --transpose flag switches the rows and columns of 714 tabular balance reports (in txt and csv output formats). (Dmitry 715 Astapov) 716 717- close: generated balance assertions now have exact amounts with all 718 decimal digits, ignoring display precision. Also, balance assertion 719 amounts will no longer contain prices. (#941, #824, #958) 720 721- files: now shows up in the commands list 722 723- import: be silent when there's nothing to import 724 725- roi: percentages smaller than 0.01% are displayed as zero (Dmitry 726 Astapov) 727 728- stats, ui: correct file order is preserved when using --auto (#949) 729 730- journal: account directive: the account name can now be followed by 731 a comment on the same line 732 733- journal: account directive: account types for the bs/bse/cf/is 734 commands can now be set with a `type:` tag, whose value is `Asset`, 735 `Liability`, `Equity`, `Revenue`, `Expense`, `A`, `L`, `E`, `R` or 736 `X` (case-insensitive). The previous syntax (`account assets A`) is 737 now deprecated. 738 739- journal: account directive: account sort codes like `account 1000` 740 (introduced in 1.9, deprecated in 1.11) are no longer supported. 741 742- journal: transaction modifiers (auto postings) can affect periodic 743 transactions (--auto can add postings to transactions generated with 744 --forecast). (Dmitry Astapov) 745 746- journal: balance assertion errors now show exact amounts with all 747 decimal digits. Previously it was possible, in case of a commodity 748 directive limiting the display precision, to have a balance 749 assertion error with asserted and actual amounts looking the 750 same. (#941) 751 752- journal: fixed a periodic transaction parsing failure (#942) (Dmitry 753 Astapov) 754 755# 1.12.1 (2018/12/03) 756 757- roi: use math-functions lib instead of statistics, 758 be more stackage nightly compatible 759 760# 1.12 (2018/12/02) 761 762- install script: ensure a new-enough version of stack; more informative output 763 764- build with GHC 8.6/base-4.12 (Peter Simons) 765 766- add required upper bound for statistics (Samuel May) 767 768- --anon anonymises more thoroughly (including linked original postings) (Moritz Kiefer) 769 770- unbalanced transaction errors now include location info (Mykola Orliuk) 771 772- accounts command: --drop also affects the default flat output, without needing an explicit --flat flag 773 774- accounts command: the --codes flag has been dropped 775 776- accounts command: filtering by non-account-name queries now works 777 778- add command: fix transaction rendering regression during data entry and in journal file 779 780- balance command: fix wrongful eliding of zero-balance parent accounts in tree mode (Dmitry Astapov) 781 782- journal format, bs/bse/cf/is commands: account directives can declare account types (#877) 783 Previously you had to use one of the standard english account names 784 (assets, liabilities..) for top-level accounts, if you wanted them to 785 appear in the right place in the balancesheet, balancesheetequity, 786 cashflow or incomestatement reports. 787 788 Now you can use your preferred account names, and use account directives 789 to declare which accounting class (Asset, Liability, Equity, Revenue or 790 eXpense) an account (and its subaccounts) belongs to, by writing one of 791 the letters A, L, E, R, X after the account name, after two or more 792 spaces. This syntax may change (see issue). Experimental. 793 794 Currently we allow unlimited account type declarations anywhere in the 795 account tree. So you could declare a liability account somewhere under 796 assets, and maybe a revenue account under that, and another asset account 797 even further down. In such cases you start to see oddities like accounts 798 appearing in multiple places in a tree-mode report. I have left it this 799 way for now in case it helps with, eg, modelling contra accounts, or 800 combining multiple files each with their own account type 801 declarations. (In that scenario, if we only allowed type declarations on 802 top-level accounts, or only allowed a single account of each type, 803 complications seem likely.) 804 805- journal format: periodic transaction rules now require a double space separator. 806 In periodic transaction rules which specify a transaction description or 807 same-line transaction comment, this must be separated from the period 808 expression by two or more spaces, to prevent ambiguous parsing. Eg 809 this will parse correctly as "monthly" thanks to the double space: 810 811 ~ monthly In 2020 we'll end this monthly transaction. 812 813- journal format: exact/complete balance assertions (Samuel May). 814 A stronger kind of balance assertion, written with a double equals sign, 815 asserts an account's complete account balance, not just the balance in 816 one commodity. (But only if it is a single-commodity balance, for now.) 817 Eg: 818 819 1/1 820 (a) A 1 821 (a) B 1 822 (a) 0 = A 1 ; commodity A balance assertion, succeeds 823 (a) 0 == A 1 ; complete balance assertion, fails 824 825- journal format: account directives now allow whitespace or a comment after the account name 826 827- journal format: using \~ for home directory in include directives now works (#896) (Mykola Orliuk) 828 829- journal format: prevent misleading parse error messages with cyclic include directives (#853) (Alex Chen) 830 831- journal format: transaction modifier multipliers handle total-priced amounts correctly (#928). 832 Multipliers (*N) in transaction modifier rules did not multiply 833 total-priced amounts properly. Now the total prices are also multiplied, 834 keeping the transaction balanced. 835 836- journal format: do amount inference/balance assignments/assertions before transaction modifiers (#893, #908) (Jesse Rosenthal) 837 Previously, transaction modifier (auto postings) rules were applied 838 before missing amounts were inferred. This meant amount multipliers could 839 generate too many missing-amount postings, making the transaction 840 unbalanceable (#893). 841 842 Now, missing amount inference (and balance assignments, and balance 843 assertions, which are interdependent) are done earlier, before 844 transaction modifier rules are applied (#900, #903). 845 846 Also, we now disallow the combination of balance assignments and 847 transaction modifier rules which both affect the same account, which 848 could otherwise cause confusing balance assertion failures (#912). 849 (Because assignments now generate amounts to satisfy balance assertions 850 before transaction modifier rules are applied (#908).) 851 852- journal format: periodic transaction rules are now aware of Y default year directives. (#892) 853 Ie when a default year Y is in effect, they resolve partial or relative 854 dates using Y/1/1 as the reference date, rather than today's date. 855 856# 1.11.1 (2018/10/06) 857 858- fix wrong transaction rendering in balance assertion errors and when 859 using the add command 860 861# 1.11 (2018/9/30) 862 863- The default display order of accounts is now influenced by 864 the order of account directives. Accounts declared by account 865 directives are displayed first (top-most), in declaration order, 866 followed by undeclared accounts in alphabetical order. Numeric 867 account codes are no longer used, and are ignored and considered 868 deprecated. 869 870 So if your accounts are displaying in a weird order after upgrading, 871 and you want them alphabetical like before, just sort your account 872 directives alphabetically. 873 874- Account sorting (by name, by declaration, by amount) is now more 875 robust and supported consistently by all commands (accounts, 876 balance, bs..) in all modes (tree & flat, tabular & non-tabular). 877 878- close: new --opening/--closing flags to print only the opening or 879 closing transaction 880 881- files: a new command to list included files 882 883- prices: query arguments are now supported. Prices can be filtered by 884 date, and postings providing transaction prices can also be filtered. 885 886- rewrite: help clarifies relation to print --auto (#745) 887 888- roi: a new command to compute return on investment, based on hledger-irr 889 890- test: has more verbose output, more informative failure messages, 891 and no longer tries to read the journal 892 893- csv: We use a more robust CSV lib (cassava) and now support 894 non-comma separators, eg --separator ';' (experimental, this flag 895 will probably become a CSV rule) (#829) 896 897- csv: interpolated field names in values are now properly case insensitive, so 898 this works: 899 900 fields ...,Transaction_Date,... 901 date %Transaction_Date 902 903- journal: D (default commodity) directives no longer break multiplier 904 amounts in transaction modifiers (AKA automated postings) (#860) 905 906- journal: "Automated Postings" have been renamed to "Transaction Modifiers". 907 908- journal: transaction comments in transaction modifier rules are now parsed correctly. (#745) 909 910- journal: when include files form a cycle, we give an error instead 911 of hanging. 912 913- upper-case day/month names in period expressions no longer give an error (#847, #852) 914 915# 1.10 (2018/6/30) 916 917- journal: many parse error messages have become more informative, and 918 some now show the source line and error location. 919 920- journal: ;tag: is no longer parsed as a tag named ";tag" (#655) 921 922- journal: transaction price amounts having their own price amounts is 923 now a parse error 924 925- journal: amounts with space as digit group separator and trailing whitespace 926 now parse correctly (#780) 927 928- journal: in amounts containing digits and a single space, the space 929 is now interpreted as a digit group separator, not a decimal separator (#749) 930 931- journal: in commodity/format/D directives, the amount must now include a decimal separator. 932 933 When more precise control is needed over number parsing, our 934 recommended solution is commodity directives. Commodity directives 935 that don't specify the decimal separator leave things ambiguous, 936 increasing the chance of misparsing numbers. In some cases it could 937 cause amounts with a decimal point to be parsed as if with a digit 938 group separator, so 1.234 became 1234. 939 940 It seems the simple and really only way to do this reliably is to require 941 an explicit decimal point character. Most folks probably do this already. 942 Unfortunately, it makes another potential incompatibility with ledger and 943 beancount journals. But the error message will be clear and easy to 944 work around. 945 946- journal: directives currently have diverse and somewhat tricky 947 semantics, especially with multiple files. The manual now describes 948 their behaviour precisely. 949 950- journal: `alias` and `apply account` directives now affect `account` directives (#825) 951 952- journal: periodic transactions can now have all the usual transaction fields 953 (status mark, code, description, comment), for generating more expressive 954 forecast transactions. 955 956- journal: forecast transactions now have the generating period 957 expression attached as a tag named "recur". 958 959- journal: periodic transactions now start on the first instance of the 960 recurring date, rather than the day after the last regular transaction (#750) 961 962- journal: periodic transaction rules now allow period expressions relative to today's date 963 964- csv: amount-in/amount-out errors are more detailed 965 966- balance: --drop is now ignored when not in flat mode, 967 rather than producing a corrupted report (#754) 968 969- budget: --drop now preserves the <unbudgeted> top-level account in --budget reports 970 971- register: in CSV output, the code field is now included (#746) 972 973- smart dates now allow the YYYYMM format, and are better documented 974 975- use hledger-lib 1.10 976 977# 1.9.1 (2018/4/30) 978 979- use hledger-lib 1.9.1 980 981- budget (balance --budget): monthly columns are displayed in the 982 proper order. This fixes a regression in 1.9. 983 984- budget: budgets can be built from periodic transactions with 985 different intervals again. In 1.9, budgets were restricted to a 986 single interval, but this was a mistake. This restores the 1.5 987 behaviour. 988 989- budget: budget reports are more intuitive and much less likely to 990 produce no output. 991 992- budget: when no report interval is specified, a budget report for 993 the whole journal period is shown. 994 995- budget: periodic transactions and the requested report period can 996 each have their own start/end dates, and the resulting report will 997 span the union of those periods, showing zeroes where data is 998 missing. 999 1000- budget: total row and total/average columns are now calculated correctly 1001 1002- budget: actual, percentage, and goal amounts are now aligned in 1003 columns for better readability (usually, unless numbers get huge). 1004 1005- budget: combining --budget and --sort-amount is not yet supported 1006 and now gives an error. 1007 1008- csv: handle "-%amount" in a rule when the CSV amount is parenthesised (#736) 1009 1010- journal: automated postings are now generated early, before journal finalisation, 1011 so they are present for amount inference, transaction balancing, and balance assertions 1012 (#729) 1013 1014- journal: automated postings are now inserted right after the posting that triggered them 1015 (#729) 1016 1017- cli: command-line account aliases are now applied early, before journal finalisation, 1018 so they are equivalent to alias directives in the journal (#730) 1019 1020- journal: inferred amounts now have the appropriate standard amount style applied 1021 (setting the precision correctly, eg). (#737) 1022 1023- journal: when checking for balanced transactions, amount styles declared with 1024 commodity directives are also used (previously only inferred amount styles were). 1025 1026# 1.9 (2018/3/31) 1027 1028- support ghc 8.4, latest deps 1029 1030- journal: account directives can define a numeric account code to 1031 customize sorting. bal/bs/cf/is will sort accounts by account code, 1032 if any, then account name. 1033 1034- journal: support scientific number notation (#704, #706) 1035 1036- csv: reading a CSV file containing no records is no longer an error 1037 1038- cli: when the system text encoding is UTF-8, ignore any UTF-8 BOM 1039 prefix found when reading files. (Paypal's new CSV has this BOM 1040 prefix, causing a confusing parse error.) 1041 1042- cli: tabular reports no longer have a trailing blank line added. 1043 (This allows omitting the ">=0" delimiters in our functional tests, 1044 making them easier to read and maintain.) 1045 1046- acc: the accounts command now has --declared and --used flags 1047 1048- bal: the --invert flag flips all signs 1049 1050- bal: --drop now works with CSV output 1051 1052- bal/bs/bse/cf/is: show overall report span in title 1053 1054- bal/bs/bse/cf/is: show short month names as headings in monthly reports 1055 1056- bal/bs/bse/cf/is: these commands can now generate HTML output 1057 1058- bal/bs/is/cf: drop short name and indent fields from multicolumn CSV 1059 1060- bs/bse/cf/is: these, the "financial statement" commands, now show 1061 normal income, liability and equity balances as positive numbers. 1062 Negative numbers now indicate a contra-balance (eg an overdrawn 1063 checking account), a net loss, or a negative net worth. This makes 1064 these reports more like conventional financial statements, and easier 1065 to read and share with others. (Other commands, like balance, have not 1066 changed.) (experimental) 1067 1068- bs/cf/is: always show a tabular report, even with no report 1069 interval. Previously you would get a simple borderless report like 1070 the original balance command. Less code, fewer bugs. 1071 1072- bs/bse/cf/is: in CSV output, don't repeat the headings row for each subreport 1073 1074- budget: warn that CSV output with bal --budget is unimplemented 1075 1076- budget: bal --budget shows budget goals even with no or zero actual amounts. 1077 Makes budget reports more intuitive, at the cost of a temporary hack 1078 which may misorder columns in some cases (if actual and budget 1079 activity occur in a different range of columns). 1080 1081- budget: --budget uses only periodic txns with the selected interval.\ 1082 Budgets with different interval, eg a daily and weekly budget, are independent. 1083 1084- budget: show mostly fixed-width columns for readability 1085 1086- budget: fix bug where a budget report could include budget goals 1087 ending on the day before the report start date (splitSpan issue) 1088 1089- close: the equity command has been renamed to close. It now ignores 1090 any begin date (it always closes historical end balances). It also 1091 ignores --date2. 1092 1093# 1.5 (2017/12/31) 1094 1095- --auto adds Ledger-style automated postings to transactions (Dmitry Astapov, Mykola Orliuk) 1096 1097- --forecast generates Ledger-style periodic transactions in the future (Dmitry Astapov, Mykola Orliuk) 1098 1099- -V/--value uses today's market prices by default, not those of last transaction date. #683, #648 1100 1101- add: suggest implied (parent) and declared (by account directives) account names also 1102 1103- bal: --budget shows performance compared to budget goals defined 1104 with periodic transactions. Accounts with budget goals are 1105 displayed folded (depth-clipped) at a depth matching the budget 1106 specification. Unbudgeted accounts are hidden, or with 1107 --show-unbudgeted, shown at their usual depth. (Dmitry Astapov) 1108 1109- import: the output of --dry-run is now valid journal format 1110 1111- print: -B shows converted amounts again, as in 1.1, even without 1112 -x. #551 (Mykola Orliuk, Simon Michael) 1113 1114- tag: the first argument now filters tag names, additional arguments 1115 filter transactions (#261) 1116 1117- remove upper bounds on all but hledger* and base (experimental) 1118 1119# 1.4 (2017/9/30) 1120 1121- cli: a @FILE argument reads flags & args from FILE, one per line 1122 1123- cli: reorganized commands list, added some new command aliases: 1124 1125 - accounts: a 1126 - balance: b 1127 - print: p, txns 1128 - register: r 1129 1130- cli: accept -NUM as a shortcut for --depth=NUM (eg: -2) 1131 1132- cli: improve command-line help for --date2 (#604) 1133 1134- cli: make --help and -h the same, drop --man and --info for now (#579) 1135 1136- help: offers multiple formats, accepts topic substrings. 1137 The separate info/man commands have been dropped. help now 1138 chooses an appropriate documentation format as follows: 1139 1140 - it uses info if available, 1141 - otherwise man if available, 1142 - otherwise $PAGER if defined, 1143 - otherwise less if available, 1144 - otherwise it prints on stdout 1145 - (and it always prints on stdout when piped). 1146 1147 You can override this with the `--info`/`--man`/`--pager`/`--cat` flags. 1148 (#579) 1149 1150- bal/bs/cf/is: --sort-amount/-S sorts by largest amount instead of 1151 account name 1152 1153- bs/cf/is: support --output-file and --output-format=txt\|csv 1154 The CSV output should be reasonably ok for dragging into a 1155 spreadsheet and reformatting. 1156 1157- bal/bs/cf/is: consistent double space between columns, consistent 1158 single final blank line. Previously, amounts wider than the column 1159 headings would be separated by only a single space. 1160 1161- bs/is: don't let an empty subreport disable the grand totals (fixes #588) 1162 1163- cf: exclude asset accounts with ":fixed" in their name (Christian G. Warden, Simon Michael, #584) 1164 1165- new balancesheetequity command: like balancesheet but also shows 1166 equity accounts (Nicholas Niro) 1167 1168- new import command: adds new transactions seen in one or more input 1169 files to the main journal file 1170 1171- print: --new shows only transactions added since last time 1172 (saves state in .latest.JOURNALFILE file) 1173 1174- new tags command: lists tags in matched transactions 1175 1176- most addons formerly shipped in bin/ are now builtin commands. These 1177 include: check-dates, check-dupes, equity, prices, print-unique, 1178 register-match, rewrite. 1179 1180- refactor: new Commands module and subdirectory. 1181 Builtin commands are now gathered more tightly in a single module, 1182 Hledger.Cli.Commands, facilitating change. The legacy "convert" 1183 command has been dropped. 1184 1185- refactor: BalanceView -> CompoundBalanceCommand 1186 1187- deps: drop support for directory < 1.2 1188 1189- deps: allow ansi-terminal 0.7 1190 1191- deps: drop oldtime flag, require time 1.5+ 1192 1193- deps: simplify shakespeare bounds 1194 1195- deps: remove ghc < 7.6 support 1196 1197# 1.3.1 (2017/8/25) 1198 1199- bs/is: don't let an empty subreport disable the grand totals (#588) 1200 1201- allow megaparsec 6 (#594) 1202 1203- allow megaparsec-6.1 (Hans-Peter Deifel) 1204 1205- restore upper bounds on hledger packages 1206 1207# 1.3 (2017/6/30) 1208 1209The "uncleared" transaction/posting status, and associated UI flags 1210and keys, have been renamed to "unmarked" to remove ambiguity and 1211confusion. This means that we have dropped the `--uncleared` flag, 1212and our `-U` flag now matches only unmarked things and not pending 1213ones. See the issue and linked mail list discussion for more 1214background. (#564) 1215 1216Also the -P short flag has been added for --pending, and the -U/-P/-C 1217flags can be combined. 1218 1219bs/is: fix "Ratio has zero denominator" error (#535) 1220 1221bs/is/cf: fix --flat (#552) (Justin Le, Simon Michael) 1222 1223bal/bs/is/cf: show negative amounts in red (Simon Michael, Justin Le). 1224These commands now shows negative amounts in red, when hledger detects 1225that ANSI codes are supported, (ie when TERM is not "dumb" and stdout 1226is not being redirected or piped). 1227 1228print: show pending mark on postings (fixes #563). 1229A pending mark on postings is now displayed, just like a cleared mark. 1230Also there will now be a space between the mark and account name. 1231 1232print: amounts are now better aligned, eg when there are posting 1233status marks or virtual postings 1234 1235# 1.2 (2017/3/31) 1236 1237## CLI 1238 1239"hledger" and "hledger -h" now print a better organised commands list 1240and general usage message respectively (#297). 1241 1242The common reporting flags can now be used anywhere on the command line. 1243 1244Fixed deduplication of addons in commands list. 1245 1246Fixed ugly stack traces in command line parse error messages. 1247 1248The -V/--value flag is now a global report flag, so it works with 1249balance, print, register, balancesheet, incomestatement, cashflow, 1250etc. (Justin Le) 1251 1252The `--pivot` global reporting option replaces all account names with 1253the value of some other field or tag. It has been improved, eg: 1254 1255- we don't add the field/tag name name as a prefix 1256- when pivoting on a tag, if the tag is missing we show a blank 1257 (rather than showing mixed tag values and account names) 1258- a pipe character delimiter may be used in descriptions to get a more accurate 1259 and useful payee report (`hledger balance --pivot payee`) 1260 1261options cleanups 1262 1263## Addons 1264 1265Easier installation: 1266move add-ons and example scripts to bin/, 1267convert to stack scripts, 1268add a build script to install all deps, 1269add some functional tests, 1270test add-ons with Travis CI, 1271add installation docs to download page. 1272 1273Improved docs: 1274all addons now contain their own documentation. Most of them (all but 1275hledger-budget) use a new reduced-boilerplate declaration format 1276and can show short (-h) and long (--help) command line help. 1277(Long help is declared with pre and postambles to the generated 1278options help, short help is that truncated at the start of the hledger 1279common flags.) 1280 1281`hledger` now shows a cleaner list of addon commands, showing only the 1282compiled version of an addon when both source and compiled versions 1283are in $PATH. (Addons with .exe extension or no extension are 1284considered compiled. Modification time is not checked, ie, an old 1285compiled addon will override a newer source version. If there are 1286three or more versions of an addon, all are shown. ) 1287 1288New addons added/included: 1289 1290- autosync - example symlink to ledger-autosync 1291- budget - experimental budget reporting command supporting Ledger-like periodic transactions and automated transactions (Mykola Orliuk) 1292- chart - pie-chart-generating prototype, a repackaging of the old hledger-chart tool 1293- check - more powerful balance assertions (Michael Walker) 1294- check-dupes - find accounts sharing the same leaf name (Stefano Rodighiero) 1295- prices - show all market price records (Mykola Orliuk) 1296- register-match - a helper for ledger-autosync's deduplication, finds best match for a transaction description 1297 1298The equity command now always generates a valid journal transaction, 1299handles prices better, and adds balance assertions (Mykola Orliuk). 1300 1301The rewrite command is more robust and powerful (Mykola Orliuk): 1302 1303- in addition to command-line rewrite options, it understands rewrite rules 1304 defined in the journal, similar to Ledger's automated transactions (#99). 1305 Eg: 1306 1307 = ^income 1308 (liabilities:tax) *.33 1309 1310 = expenses:gifts 1311 budget:gifts *-1 1312 assets:budget *1 1313 1314- it can generate diff output, allowing easier review of the proposed 1315 changes, and safe modification of original journal files (preserving 1316 file-level comments and directives). Eg: 1317 1318 hledger-rewrite --diff Agency --add-posting 'Expenses:Taxes *0.17' | patch 1319 1320- rewrites can affect multiple postings in a transaction, not just one. 1321 1322- posting-specific dates are handled better 1323 1324## balance 1325 1326A new --pretty-tables option uses unicode characters for rendering 1327table borders in multicolumn reports (#522) (Moritz Kiefer) 1328 1329## balancesheet/cashflow/incomestatement 1330 1331These commands are now more powerful, able to show multicolumn reports 1332and generally having the same features as the balance command. (Justin Le) 1333 1334balancesheet has always ignored a begin date specified with a `-b` or 1335`-p` option; now it also ignores a begin date specified with a `date:` 1336query. (Related discussion at #531) 1337 1338## print 1339 1340The output of print is now always a valid journal (fixes #465) (Mykola Orliuk). 1341 1342print now tries to preserves the format of implicit/explicit balancing 1343amounts and prices, by default. To print with all amounts explicit, 1344use the new `--explicit/-x` flag (fixes #442). (Mykola Orliuk) 1345 1346Don't lose the commodity of zero amounts/zero balance assertions (fixes #475) (Mykola Orliuk) 1347 1348## Misc 1349 1350Fix a regression in the readability of option parsing errors (#478) (Hans-Peter Deifel) 1351 1352Fix an example in Cli/Main.hs (Steven R. Baker) 1353 1354Allow megaparsec 5.2 (#503) 1355 1356# 1.1 (2016/12/31) 1357 1358## balance 1359 1360- with -V, don't ignore market prices in the future (#453, #403) 1361 1362- with -V and multiple same-date market prices, use the last parsed not the highest price (#403) 1363 1364## misc 1365 1366- fix non-existent "oldtime" dependency (#431) 1367 1368- extra/hledger-equity.hs now generates valid journal format when there are multiple commodities 1369 1370# 1.0.1 (2016/10/27) 1371 1372- allow megaparsec 5.0 or 5.1 1373 1374- fix benchmark build failure (#423) 1375 1376# 1.0 (2016/10/26) 1377 1378## add 1379 1380- suggest only one commodity at a time as default amount (#383) 1381 1382 (since we currently can't input more than one at a time) 1383 1384## balance 1385 1386- added --change flag for consistency 1387 1388- -H/--historical now also affects single-column balance reports with a start date (#392). 1389 1390 This has the same effect as just omitting the start date, but adds consistency. 1391 1392- in CSV output, render amounts in one-line format (#336) 1393 1394## balancesheet 1395 1396- fix an infinite loop (#393) 1397 1398## print 1399 1400- in CSV output, fix and rename the transaction id field 1401 1402## register 1403 1404- fix a sorting regression with --date2 (#326) 1405 1406- --average/-A is now affected by --historical/-H 1407 1408- added --cumulative flag for consistency 1409 1410- in CSV output, include the transaction id and rename the total field (#391) 1411 1412## stats 1413 1414- fixed an issue with ordering of include files 1415 1416## misc 1417 1418- --pivot option added, groups postings by tag instead of account (#323) (Malte Brandy) 1419 1420- --anon option added, obfuscates account names and descriptions (#265) (Brian Scott) 1421 1422 (Only affects the hledger tool, for now.) 1423 1424- try to clarify balance/register's various report modes, 1425 1426 kinds of "balance" displayed, and related options and language. 1427 1428- with multiple --change/--cumulative/--historical flags, use the last one instead of complaining 1429 1430- don't add the "d" suffix when displaying day periods 1431 1432- stack-ify extra/hledger-rewrite.hs 1433 1434## misc 1435 1436- added GHC 8 support, dropped GHC 7.6 and 7.8 support. 1437 1438 GHC 7.8 support could be restored with small code changes and a maintainer. 1439 1440- a cabal.project file has been added (Moritz Kiefer) 1441 1442- use hpack for maintaining cabal files (#371). 1443 1444 Instead of editing cabal files directly, we now edit the less 1445 verbose and less redundant package.yaml files and let stack (or 1446 hpack) update the cabal files. We commit both the .yaml and 1447 .cabal files. 1448 1449- clean up some old cabal flags 1450 1451- tools/simplebench has been spun off as the quickbench package. 1452 1453- add Appveyor CI builds, provide up-to-date binaries for Windows 1454 1455- extra: add a bunch of CSV rules examples 1456 1457## docs 1458 1459- the website is simpler, clearer, and more mobile-friendly. 1460 1461 Docs are now collected on a single page and organised by type: getting started, reference, more. 1462 1463- reference docs have been split into one manual for each executable and file format. 1464 1465 This helps with maintenance and packaging and also should make it 1466 easier to see what's available and to read just what you need. 1467 1468- manuals are now provided in html, plain text, man and info formats 1469 1470 generated from the same source by a new Shake-based docs build system. (#292) 1471 1472- versioned manuals are provided on the website, covering recent releases and the latest dev version (#385, #387) 1473 1474- manuals are built in to the hledger executables, allowing easy offline reading on all platforms. 1475 1476 PROG -h shows PROG's command-line usage 1477 PROG --help shows PROG's manual (fixed width) 1478 PROG --man shows PROG's manual with man (formatted/paged) 1479 PROG --info shows PROG's manual with info (hypertext) 1480 hledger help [TOPIC] shows any manual 1481 hledger man [TOPIC] shows any manual with man 1482 hledger info [TOPIC] shows any manual with info 1483 1484- the general and reporting options are now listed in all executable manuals. 1485 1486 We assume any of them which are unsupported are harmlessly ignored. 1487 1488- demo.hledger.org is using beancount's example journal. 1489 1490 This is the somewhat realistic example journal from the beancount 1491 project, tweaked for hledger. 1492 1493- minor copyedits (jungle-boogie) 1494 1495## cli 1496 1497- parsing multiple input files is now robust. 1498 1499 When multiple -f options are provided, we now parse each file 1500 individually rather than just concatenating them, so they can 1501 have different formats (#320). Note this also means that 1502 directives (like \`Y\` or \`alias\`) no longer carry over from one 1503 file to the next. 1504 1505- -I has been added as the short flag for --ignore-assertions 1506 1507 (this is different from Ledger's CLI, but useful for hledger-ui). 1508 1509- parsing an argument-less --debug option is more robust 1510 15110.27 (2015/10/30) 1512 1513Account aliases: 1514 1515- Regular expression account aliases are now fast enough that you can 1516 use lots of them without slowing things down. They now take 1517 O(aliases x accounts) time, instead of O(aliases x transactions); 1518 also, regular expressions are no longer recompiled unnecessarily. 1519 1520Documentation: 1521 1522- Each hledger package now includes one or more man pages, generated 1523 from markdown by the mighty pandoc. Currently there are six: one 1524 for each main executable and each input file format. Currently these 1525 somewhat duplicate the manual on the website; this will be resolved 1526 somehow. (#282). 1527 1528- The site is now built with hakyll-std, a generic hakyll script. 1529 1530- hledger once again has a HCAR entry. 1531 1532Tools: 1533 1534- The hledger cabal files are now generated from package.yaml files by 1535 hpack, in principle, removing a lot of error-prone duplication and 1536 boilerplate. (In practice, both files are being updated manually 1537 for the moment, until hpack supports flags and conditional blocks.) 1538 1539- Time/allocation and heap profiling is working again, and easier: 1540 1541 - `make quickprof-CMD` generates a profile for CMD, which runs 1542 against one of the sample journals. (CMD must be one word, 1543 enclosing in double quotes isn't working here for some reason). 1544 1545 - `make quickheap-CMD` generates a heap profile for CMD, in 1546 hledgerprof.ps, and tries to open it in a viewer (currently the 1547 mac-friendly "open" executable, so you may need to adjust this in 1548 the makefile). As with quickprof, CMD must be one word and runs 1549 against one of the sample journals. 1550 1551 - `make hledgerprof` builds the hledgerprof executable used for 1552 time/allocation profiling. `make hledgercov` builds the hledgercov 1553 executable used for coverage reports. 1554 1555- Travis CI now tests the build on each github push and announces 1556 status changes by email and on #hledger. 1557 1558Journal format: 1559 1560- Dates must now begin with a digit (not /, eg). 1561 1562- The comment directive longer requires an end comment, and will 1563 extend to the end of the file(s) without it. 1564 1565Command-line interface: 1566 1567- Output (balance reports, register reports, print output etc.) 1568 containing wide characters, eg chinese/japanese/korean characters, 1569 should now align correctly, when viewed in apps and fonts that show 1570 wide characters as double width (#242). 1571 1572- The argument for --depth or depth: must now be positive. 1573 1574add: 1575 1576- Journal entries are now written with all amounts explicit, to avoid 1577 losing price info (#283). 1578 1579- Fixed a bug which sometimes (when the same letter pair was repeated) 1580 caused it not to pick the most similar past transaction for defaults. 1581 1582balance: 1583 1584- There is now a -V/--value flag to report current market value (as in Ledger). 1585 It converts all reported amounts using their "default market price". 1586 "Market price" is the new name for "historical prices", defined with the P directive. 1587 The default market price for a commodity is the most recent one found in the journal on or before the report end date. 1588 1589 Unlike Ledger, hledger's -V uses only the market prices recorded 1590 with P directives; it does not use the "transaction prices" 1591 recorded as part of posting amounts (which are used by -B/--cost). 1592 Also, using both -B and -V at the same time is supported. 1593 1594- Fixed a bug in amount normalization which caused amount styles 1595 (commodity symbol placement, decimal point character, etc.) to be 1596 lost in certain cases (#230, #276). 1597 1598- The balance command's --format option can now adjust the rendering 1599 style of multi-commodity amounts, if you begin the format string 1600 with one of: 1601 1602 %_ - renders amounts on multiple lines, bottom-aligned (the default) 1603 %^ - renders amounts on multiple lines, top-aligned 1604 %, - renders amounts on one line, comma-separated 1605 1606- The balance report's final total (and the line above it) now adapt 1607 themselves to a custom --format. 1608 1609print: 1610 1611- The --match option prints the journal entry that best matches a 1612 description (ie whose description field is most similar to the value 1613 given, and if there are several equally similar, the most recent). 1614 This was originally an add-on I used to guess account names for 1615 ledger-autosync. It's nice for quickly looking up a recent 1616 transaction from a guessed or partial description. 1617 1618- print now always right-aligns the amounts in an entry, even when 1619 they are wider than 12 characters. (If there is a price, it's 1620 considered part of the amount for right-alignment.) 1621 1622register: 1623 1624- Amount columns now resize automatically, using more space if it's 1625 needed and available. 1626 16270.26 (2015/7/12) 1628 1629Account aliases: 1630 1631- Account aliases are once again non-regular-expression-based, by default. (#252) 1632 1633 The regex account aliases added in 0.24 trip up people switching between 1634 hledger and Ledger. (Also they are currently slow). 1635 1636 This change makes the old non-regex aliases the default; they are 1637 unsurprising, useful, and pretty close in functionality to Ledger's. 1638 1639 The new regex aliases are still available; they must be enclosed 1640 in forward slashes. (Ledger effectively ignores these.) 1641 1642Journal format: 1643 1644- We now parse, and also print, journal entries with no postings, as 1645 proposed on the mail lists. These are not well-formed General 1646 Journal entries/transactions, but here is my rationale: 1647 1648 - Ledger and beancount parse them 1649 - if they are parsed, they should be printed 1650 - they provide a convenient way to record (and report) non-transaction events 1651 - they permit more gradual introduction and learning of the concepts. 1652 So eg a beginner can keep a simple journal before learning about accounts and postings. 1653 1654- Trailing whitespace after a `comment` directive is now ignored. 1655 1656Command-line interface: 1657 1658- The -f/file option may now be used multiple times. 1659 This is equivalent to concatenating the input files before running hledger. 1660 The add command adds entries to the first file specified. 1661 1662Queries: 1663 1664- real: (no argument) is now a synonym for real:1 1665 1666- tag: now matches tag names with a regular expression, like most other queries 1667 1668- empty: is no longer supported, as it overlaps a bit confusingly with 1669 amt:0. The --empty flag is still available. 1670 1671- You can now match on pending status (#250) 1672 1673 A transaction/posting status of ! (pending) was effectively equivalent 1674 to * (cleared). Now it's a separate state, not matched by --cleared. 1675 The new Ledger-compatible --pending flag matches it, and so does 1676 --uncleared. 1677 1678 The relevant search query terms are now status:*, status:! and 1679 status: (the old status:1 and status:0 spellings are deprecated). 1680 1681 Since we interpret --uncleared and status: as "any state except cleared", 1682 it's not currently possible to match things which are neither cleared 1683 nor pending. 1684 1685activity: 1686 1687- activity no longer excludes 0-amount postings by default. 1688 1689add: 1690 1691- Don't show quotes around the journal file path in the "Creating..." 1692 message, for consistency with the subsequent "Adding..." message. 1693 1694balancesheet: 1695 1696- Accounts beginning with "debt" or now also recognised as liabilities. 1697 1698print: 1699 1700- We now limit the display precision of inferred prices. (#262) 1701 1702 When a transaction posts to two commodities without specifying the 1703 conversion price, we generate a price which makes it balance (cf 1704 http://hledger.org/manual.html#prices). The print command showed 1705 this with full precision (so that manual calculations with the 1706 displayed numbers would look right), but this sometimes meant we 1707 showed 255 digits (when there are multiple postings in the 1708 commodity being priced, and the averaged unit price is an 1709 irrational number). In this case we now set the price's display 1710 precision to the sum of the (max) display precisions of the 1711 commodities involved. An example: 1712 1713 hledgerdev -f- print 1714 <<< 1715 1/1 1716 c C 10.00 1717 c C 11.00 1718 d D -320.00 1719 >>> 1720 2015/01/01 1721 c C 10.00 @ D 15.2381 1722 c C 11.00 @ D 15.2381 1723 d D -320.00 1724 1725 >>>=0 1726 1727 There might still be cases where this will show more price decimal 1728 places than necessary. 1729 1730- We now show inferred unit prices with at least 2 decimal places. 1731 1732 When inferring prices, if the commodities involved have low 1733 display precisions, we don't do a good job of rendering 1734 accurate-looking unit prices. Eg if the journal doesn't use any 1735 decimal places, any inferred unit prices are also displayed with 1736 no decimal places, which makes them look wrong to the user. Now, 1737 we always give inferred unit prices a minimum display precision of 1738 2, which helps a bit. 1739 1740register: 1741 1742- Postings with no amounts could give a runtime error in some obscure case, now fixed. 1743 1744stats: 1745 1746- stats now supports -o/--outputfile, like register/balance/print. 1747- An O(n\^2) performance slowdown has been fixed, it's now much faster on large journals. 1748 1749 +--------------------------------------++--------+--------+ 1750 | || 0.25 | 0.26 | 1751 +======================================++========+========+ 1752 | -f data/100x100x10.journal stats || 0.10 | 0.16 | 1753 | -f data/1000x1000x10.journal stats || 0.45 | 0.21 | 1754 | -f data/10000x1000x10.journal stats || 58.92 | 2.16 | 1755 +--------------------------------------++--------+--------+ 1756 1757Miscellaneous: 1758 1759- The June 30 day span was not being rendered correctly; fixed. (#272) 1760 1761- The bench script invoked by "cabal bench" or "stack bench" now runs 1762 some simple benchmarks. 1763 1764 You can get more accurate benchmark times by running with --criterion. 1765 This will usually give much the same numbers and takes much longer. 1766 1767 Or with --simplebench, it benchmarks whatever commands are 1768 configured in bench/default.bench. This mode uses the first 1769 "hledger" executable in $PATH. 1770 1771- The deprecated shakespeare-text dependency has been removed more thoroughly. 1772 17730.25.1 (2015/4/29) 1774 1775- timelog: support the description field (#247) 1776 17770.25 (2015/4/7) 1778 1779- GHC 7.10 compatibility (#239) 1780 1781- build with terminfo support on POSIX systems by default 1782 1783 On non-windows systems, we now build with terminfo support by 1784 default, useful for detecting terminal width and other things. 1785 1786 This requires the C curses dev libraries, which makes POSIX 1787 installation slightly harder; if it causes problems you can 1788 disable terminfo support with the new `curses` cabal flag, eg: 1789 cabal install -f-curses ... (or cabal might try this 1790 automatically, I'm not sure). 1791 1792- register: use the full terminal width, respect COLUMNS, allow column width adjustment 1793 1794 On POSIX systems, register now uses the full terminal width by 1795 default. Specifically, the output width is set from: 1796 1797 1. a --width option 1798 2. or a COLUMNS environment variable (NB: not the same as a bash shell var) 1799 3. or on POSIX (non-windows) systems, the current terminal width 1800 4. or the default, 80 characters. 1801 1802 Also, register's --width option now accepts an optional 1803 description column width following the overall width (--width 1804 WIDTH\[,DESCWIDTH\]). This also sets the account column width, since 1805 the available space (WIDTH-41) is divided up between these two 1806 columns. Here's a diagram: 1807 1808 <--------------------------------- width (W) ----------------------------------> 1809 date (10) description (D) account (W-41-D) amount (12) balance (12) 1810 DDDDDDDDDD dddddddddddddddddddd aaaaaaaaaaaaaaaaaaa AAAAAAAAAAAA AAAAAAAAAAAA 1811 1812 Examples: 1813 1814 $ hledger reg # use terminal width on posix 1815 $ hledger reg -w 100 # width 100, equal description/account widths 1816 $ hledger reg -w 100,40 # width 100, wider description 1817 $ hledger reg -w $COLUMNS,100 # terminal width and set description width 1818 1819- balance: new -T/--row-total and -A/--average options 1820 1821 In multicolumn balance reports, -T/--row-total now shows a row totals 1822 column and -A/--average shows a row averages column. 1823 This helps eg to see monthly average expenses (hledger bal \^expenses -MA). 1824 1825 NB our use of -T deviates from Ledger's UI, where -T sets a custom 1826 final total expression. 1827 1828- balance: -N is now short for --no-total 1829- balance: fix partially-visible totals row with --no-total 1830 1831 A periodic (not using --cumulative or --historical) balance report 1832 with --no-total now hides the totals row properly. 1833 1834- journal, csv: comment lines can also start with * 1835 1836 As in Ledger. This means you can embed emacs org/outline-mode nodes in 1837 your journal file and manipulate it like an outline. 1838 18390.24.1 (2015/3/15) 1840 1841- journal: fix balance accumulation across assertions (#195) 1842 1843 A sequence of balance assertions asserting first one commodity, then 1844 another, then the first again, was not working. 1845 1846- timelog: show hours with two decimal places instead of one (#237) 1847- in weekly reports, simplify week 52's heading like the others 1848- disallow trailing garbage in a number of parsers 1849 1850 Trailing garbage is no longer ignored when parsing the following: 1851 balance --format option, register --width option, hledger-rewrite 1852 options, hledger add's inputs, CSV amounts, posting amounts, 1853 posting dates in tags. 1854 1855- allow utf8-string-1 (fpco/stackage/#426) 1856 18570.24 (2014/12/25) 1858 1859General: 1860 1861- fix redundant compilation when cabal installing the hledger packages 1862- switch to Decimal for representing amounts (#118) 1863- report interval headings (eg in balance, register reports) are shown 1864 compactly when possible 1865- general speedups 1866 1867Journal format: 1868 1869- detect decimal point and digit groups more robustly (#196) 1870- check that transaction dates are followed by whitespace or newline 1871- check that dates use a consistent separator character 1872- balance assertions now are specific to a single commodity, like 1873 Ledger (#195) 1874- support multi-line comments using "comment", "end comment" 1875 directives, like Ledger 1876 1877CSV format: 1878 1879- reading CSV data from stdin now works better 1880- the rules file include directive is now relative to the current 1881 file's directory (#198) 1882- the original order of same-day transactions is now usually preserved 1883 (if the records appear to be in reverse date order, we reverse them 1884 before finally sorting by transaction date) 1885- CSV output is now built in to the balance, print, and register 1886 commands, controlled by -O/--output-format (and -o/--output-file, 1887 see below) 1888 1889CLI: 1890 1891- the --width and --debug options now require their argument (#149) 1892- when an option is repeated, the last value takes precedence (#219). 1893 This is helpful eg for customising your reporting command aliases on 1894 the fly. 1895- smart dates (used in -p/-b/-e/date:/date2:) now must use a 1896 consistent separator character, and must be parseable to the end 1897- output destination and format selection is now built in to the 1898 balance, print and register commands, controlled by -o/--output-file 1899 and -O/--output-format options. Notes: 1900 - -o - means stdout 1901 - an output file name suffix matching a supported format will also 1902 set the output format, unless overridden by --output-format 1903 - commands' supported output formats are listed in their 1904 command-line help. Two formats are currently available: 1905 txt (the default) and csv. 1906- balance assertions can be disabled with --ignore-assertions 1907 1908Account aliases: 1909 1910- all matching account aliases are now applied, not just one directive 1911 and one option 1912- account aliases now match by case insensitive regular expressions 1913 matching anywhere in the account name 1914- account aliases can replace multiple occurrences of the pattern 1915 within an account name 1916- an account alias replacement pattern can reference matched groups 1917 with \N 1918 1919Queries: 1920 1921- date:/date2: with a malformed date now reports an error instead of 1922 being ignored 1923- amt: now supports >= or <= 1924- clarify status: docs and behaviour; \"*\" is no longer a synonym for 1925 "1" (fixes #227) 1926 1927balance: 1928 1929- fix: in tree mode, --drop is ignored instead of showing empty account names 1930- a depth limit of 0 now shows summary items with account name "...", 1931 instead of an empty report (#206) 1932- in multicolumn balance reports, -E now also shows posting-less 1933 accounts with a non-zero balance during the period (in addition to 1934 showing leading & trailing empty columns) 1935- in multicolumn reports, multi-commodity amounts are rendered on one 1936 line for better layout (#186) 1937- multicolumn reports' title now includes the report span 1938 1939register: 1940 1941- runs faster with large output 1942- supports date2:, and date:/date2: combined with --date2, better (fixes 1943 #201, #221, #222) 1944- a depth limit of 0 now shows summary items (see balance) 1945- -A/--average now implies -E/--empty 1946- postings with multi-commodity amounts are now top-aligned, like 1947 Ledger 1948 1949Extra commands: 1950 1951- hledger-equity: fix end date in title; print closing entry too 1952- hledger-check-dates: added 1953 19540.23.3 (2014/9/12) 1955 1956- allow text 1.2+ (#207) 1957 19580.23.2 (2014/5/8) 1959 1960- register: also fix date sorting of postings (#184) 1961 19620.23.1 (2014/5/7) 1963 1964- register: fix a refactoring-related regression that the tests 1965 missed: if transactions were not ordered by date in the journal, 1966 register could include postings before the report start date in the 1967 output. (#184) 1968- add: don't apply a default commodity to amounts on entry (#138) 1969- cli: options before the add-on command name are now also passed to it (#182) 1970- csv: allow the first name in a fields list to be empty (#178) 1971- csv: don't validate fields count in skipped lines (#177) 1972 19730.23 (2014/5/1) 1974 1975Journal format: 1976 1977- A # (hash) in column 0 is now also supported for starting a top-level journal comment, like Ledger. 1978- The "too many missing amounts" error now reminds about the 2-space rule. 1979- Fix: . (period) is no longer parsed as a valid amount. 1980- Fix: default commodity directives no longer limit the maximum display precision (#169). 1981- Fix: + before an amount is no longer parsed as part of the commodity (#181). 1982 1983CLI: 1984 1985- Command-line help cleanups, layout improvements. 1986- Descriptions are shown for known add-ons in the command list. 1987- Command aliases have been simplified. 1988- Add-ons can now have any of these file extensions: 1989 none, hs, lhs, pl, py, rb, rkt, sh, bat, com, exe. 1990- Add-ons are displayed without their file extensions when possible. 1991- Add-ons with the same name as a built-in command or alias are ignored. 1992- Fix: add-on detection and invocation now works on windows. 1993- Fix: add-ons with digits in the name are now found. 1994- Fix: add-on arguments containing a single quote now work. 1995- Fix: when -- is used to hide add-on options from the main program, 1996 it is no longer passed through as an add-on argument. 1997 1998Queries: 1999 2000- The currency/commodity query prefix (sym:) has been renamed to cur:. 2001- Currency/commodity queries are applied more strongly in register and 2002 balance reports, filtering out unwanted currencies entirely. Eg 2003 hledger balance cur:'$' now reports only the dollar amounts even if 2004 there are multi-currency transactions or postings. 2005- Amount queries like amt:N, amt:<N and amt:>N, where N is not 0, now do an unsigned 2006 comparison of the amount and N. That is, they compare the absolute magnitude. 2007 To do a signed comparison instead, write N with its sign (eg amt:+N, amt:<+N, amt:>-N). 2008- Fix: amount queries no longer give false positives on multi-commodity amounts. 2009 2010accounts: 2011 2012- An accounts command has been added, similar to Ledger's, for listing account names 2013 in flat or hierarchical mode. 2014 2015add: 2016 2017- Tab completion now works at all prompts, and will insert the default if the input area is empty. 2018- Account and amount defaults are more robust and useful. 2019- Transactions may also be completed by the enter key, when there are no more default postings. 2020- Input prompts are displayed in a different colour when supported. 2021 2022balance: 2023 2024- Balance reports in flat mode now always show exclusive (subaccount-excluding) balances. 2025- Balance reports in flat mode with --depth now aggregate deeper accounts at the depth limit instead of excluding them. 2026- Multicolumn reports in flat mode now support --drop. 2027- Multicolumn balance reports can now show the account hierarchy with --tree. 2028- Multicolumn report start/end dates are adjusted to encompass the displayed 2029 report periods, so the first and last periods are "full" and comparable to the others. 2030- Fix: zero-balance leaf accounts below a non-zero-balance parent are no longer always shown (#170). 2031- Fix: multicolumn reports now support --date2 (cf #174). 2032 2033balancesheet, cashflow, incomestatement: 2034 2035- These commands now support --flat and --drop. 2036 2037print: 2038 2039- Tag queries (tag:) will now match a transaction if any of its postings match. 2040 2041register: 2042 2043- The --display option has been dropped. To see an accurate running total which 2044 includes the prior starting balance, use --historical/-H (like balance). 2045- With a report interval, report start/end dates are adjusted to encompass the displayed 2046 periods, so the first and last periods are "full" and comparable to the others. 2047- Fix: --date2 now works with report intervals (fixes #174). 2048 2049Miscellaneous: 2050 2051- Default report dates now derive from the secondary dates when --date2 is in effect. 2052- Default report dates now notice any posting dates outside the transaction dates' span. 2053- Debug output improvements. 2054- New add-on example: extra/hledger-rewrite.hs, adds postings to matched entries. 2055- Compatible with GHC 7.2 (#155) - GHC 7.8, shakespeare 2 2056 20570.22.2 (2014/4/16) 2058 2059- display years before 1000 with four digits, not three 2060- avoid pretty-show to build with GHC < 7.4 2061- allow text 1.1, drop data-pprint to build with GHC 7.8.x 2062 20630.22.1 (2014/1/6) and older: see http://hledger.org/release-notes or doc/release-notes.md. 2064