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