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