# Release notes
## 2017/3/31 hledger 1.2
***more powerful bs/is/cf commands,
more robust print command,
better --pivot,
basic automated postings and periodic transactions support,
more and easier addons,
bugfixes
***
Release contributors:
Simon Michael,
Mykola Orliuk,
Justin Le,
Peter Simons,
Stefano Rodighiero,
Moritz Kiefer,
Pia Mancini,
Bryan Richter,
Steven R. Baker,
Hans-Peter Deifel,
Joshua Chia,
Joshua Kehn,
Michael Walker.
[project](#project-wide-changes)
| [hledger-lib](#hledger-lib-1.2)
| [hledger](#hledger-1.2-1)
| [hledger-ui](#hledger-ui-1.2)
| [hledger-web](#hledger-web-1.2)
| [hledger-api](#hledger-api-1.2)
### project-wide changes
#### Packaging
bump stack config to latest lts,
bump brick to 0.15.2 to allow hledger-iadd install in hledger dir,
update cabal files to latest hpack 0.17.0/stack 1.4 format (#512),
use more accurate license tag in Cabal file (Peter Simons).
#### Finance
set up a hledger open collective (http://opencollective.com/hledger),
more devguide links to issues with bounties,
codefund link,
start tracking and publishing project finances (dogfooding!).
#### Documentation and website
docs page & manual cleanups,
begin organising a cookbook,
update addons list,
move detailed addon docs out of hledger manual,
document addons installation,
explain print's CSV output,
note an issue with balance assertions & multiple -f options,
clarify tags,
add github stars widget to home and devguide,
improve market price docs,
ui & web screenshots layout fixes,
fix extra whitespace after synopsis in hledger-web text manuals,
update accounts directive/budget/rewrite/read-related mockups,
drop old org notes.
#### Examples
consolidate extra/ and data/ in examples/,
tarsnap csv rules & reporting example,
xpensetracker csv rules.
#### Tools
Travis CI now checks functional tests/build warnings/addons,
temporary workaround for Appveyor CI failures,
remove accidentally committed pandoc executables,
some pandoc filter fixes,
mailmap file to clean up git log authors,
bench.hs cleanup,
fix gitignore of generated manuals,
avoid excessive rebuilding with make [func]test,
run functional tests more verbosely,
add alex/happy update step to cabal-install.sh.
### hledger-lib 1.2
#### journal format
A pipe character can optionally be used to delimit payee names in
transaction descriptions, for more accurate querying and pivoting by
payee. Eg, for a description like `payee name | additional notes`,
the two parts will be accessible as pseudo-fields/tags named `payee`
and `note`.
Some journal parse errors now show the range of lines involved, not just the first.
#### Misc
Fix a bug when tying the knot between postings and their parent transaction, reducing memory usage by about 10% (#483) (Mykola Orliuk)
Fix a few spaceleaks (#413) (Moritz Kiefer)
Add Ledger.Parse.Text to package.yaml, fixing a potential build failure.
Allow megaparsec 5.2 (#503)
Rename optserror -> usageError, consolidate with other error functions
### hledger 1.2
#### CLI
"hledger" and "hledger -h" now print a better organised commands list
and general usage message respectively (#297).
The common reporting flags can now be used anywhere on the command line.
Fixed deduplication of addons in commands list.
Fixed ugly stack traces in command line parse error messages.
The -V/--value flag is now a global report flag, so it works with
balance, print, register, balancesheet, incomestatement, cashflow,
etc. (Justin Le)
The `--pivot` global reporting option replaces all account names with
the value of some other field or tag. It has been improved, eg:
- we don't add the field/tag name name as a prefix
- when pivoting on a tag, if the tag is missing we show a blank
(rather than showing mixed tag values and account names)
- a pipe character delimiter may be used in descriptions to get a more accurate
and useful payee report (`hledger balance --pivot payee`)
options cleanups
#### Addons
Easier installation:
move add-ons and example scripts to bin/,
convert to stack scripts,
add a build script to install all deps,
add some functional tests,
test add-ons with Travis CI,
add installation docs to download page.
Improved docs:
all addons now contain their own documentation. Most of them (all but
hledger-budget) use a new reduced-boilerplate declaration format
and can show short (-h) and long (--help) command line help.
(Long help is declared with pre and postambles to the generated
options help, short help is that truncated at the start of the hledger
common flags.)
`hledger` now shows a cleaner list of addon commands, showing only the
compiled version of an addon when both source and compiled versions
are in $PATH. (Addons with .exe extension or no extension are
considered compiled. Modification time is not checked, ie, an old
compiled addon will override a newer source version. If there are
three or more versions of an addon, all are shown. )
New addons added/included:
- autosync - example symlink to ledger-autosync
- budget - experimental budget reporting command supporting Ledger-like periodic transactions and automated transactions (Mykola Orliuk)
- chart - pie-chart-generating prototype, a repackaging of the old hledger-chart tool
- check - more powerful balance assertions (Michael Walker)
- check-dupes - find accounts sharing the same leaf name (Stefano Rodighiero)
- prices - show all market price records (Mykola Orliuk)
- register-match - a helper for ledger-autosync's deduplication, finds best match for a transaction description
The equity command now always generates a valid journal transaction,
handles prices better, and adds balance assertions (Mykola Orliuk).
The rewrite command is more robust and powerful (Mykola Orliuk):
- in addition to command-line rewrite options, it understands rewrite rules
defined in the journal, similar to Ledger's automated transactions (#99).
Eg:
```journal
= ^income
(liabilities:tax) *.33
= expenses:gifts
budget:gifts *-1
assets:budget *1
```
- it can generate diff output, allowing easier review of the proposed
changes, and safe modification of original journal files (preserving
file-level comments and directives). Eg:
```
hledger-rewrite --diff Agency --add-posting 'Expenses:Taxes *0.17' | patch
```
- rewrites can affect multiple postings in a transaction, not just one.
- posting-specific dates are handled better
#### balance
A new --pretty-tables option uses unicode characters for rendering
table borders in multicolumn reports (#522) (Moritz Kiefer)
#### balancesheet/cashflow/incomestatement
These commands are now more powerful, able to show multicolumn reports
and generally having the same features as the balance command. (Justin Le)
#### print
The output of print is now always a valid journal (fixes #465) (Mykola Orliuk).
print now tries to preserves the format of implicit/explicit balancing
amounts and prices, by default. To print with all amounts explicit,
use the new `--explicit/-x` flag (fixes #442). (Mykola Orliuk)
Don't lose the commodity of zero amounts/zero balance assertions (fixes #475) (Mykola Orliuk)
#### Misc
Fix a regression in the readability of option parsing errors (#478) (Hans-Peter Deifel)
Fix an example in Cli/Main.hs (Steven R. Baker)
Allow megaparsec 5.2 (#503)
### hledger-ui 1.2
Fix a pattern match failure when pressing E on the transaction screen (fixes #508)
Accounts with ? in name had empty registers (fixes #498) (Bryan Richter)
Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons)
Allow megaparsec 5.2 (fixes #503)
Allow text-zipper 0.10
### hledger-web 1.2
Accounts with ? in name had empty registers (fixes #498) (Bryan Richter)
Allow megaparsec 5.2 (fixes #503)
## 2016/12/31 hledger 1.1
***more robust file format detection,
integration of WIP ledger4 parser,
balance assignments,
hledger-ui --watch,
hledger-iadd integration,
bugfixes
***
Release contributors:
Simon Michael, Johannes Gerer, Mykola Orliuk, Shubham Lagwankar.
[project-wide](#project-wide-changes)
| [hledger-lib](#hledger-lib-1.1)
| [hledger](#hledger-1.1-1)
| [hledger-ui](#hledger-ui-1.1)
| [hledger-web](#hledger-web-1.1)
| [hledger-api](#hledger-api-1.1)
### project-wide changes
#### misc
- don't show stack trace details in errors
- more predictable [file format detection](/hledger.html#input-files)
When we don't recognise a file's extension, instead of choosing a subset of
readers to try based on content sniffing, now we just try them all.
Also, this can be overridden by prepending the reader name and a
colon to the file path (eg timedot:file.dat, csv:-).
- avoid creating junk CSV rules files when trying alternate readers.
We now create it only after successfully reading a file as CSV.
- improvements to [-B](/journal.html#transaction-prices) and [-V](/hledger.html#market-value) docs: clearer descriptions, more linkage ([#403](http://bugs.hledger.org/403))
### hledger-lib 1.1
#### journal format
- [balance assignments](/journal.html#balance-assignments) are now supported ([#438](http://bugs.hledger.org/438), [#129](http://bugs.hledger.org/129), [#157](http://bugs.hledger.org/157), [#288](http://bugs.hledger.org/288))
This feature also brings a slight performance drop (~5%);
optimisations welcome.
- also recognise `*.hledger` files as hledger journal format
#### ledger format
- use ledger-parse from the ledger4 project as an alternate reader for C++ Ledger journals
The idea is that some day we might get better compatibility with Ledger files this way.
Right now this reader is not very useful and will be used only if you explicitly select it with a `ledger:` prefix.
It parses transaction dates, descriptions, accounts and amounts, and ignores everything else.
Amount parsing is delegated to hledger's journal parser, and malformed amounts might be silently ignored.
This adds at least some of the following as new dependencies for hledger-lib:
parsers, parsec, attoparsec, trifecta.
#### misc
- update base lower bound to enforce GHC 7.10+
hledger-lib had a valid install plan with GHC 7.8, but currently requires GHC 7.10 to compile.
Now we require base 4.8+ everywhere to ensure the right GHC version at the start.
- Hledger.Read api cleanups
- rename dbgIO to dbg0IO, consistent with dbg0, and document a bug in dbg*IO
- make readJournalFiles [f] equivalent to readJournalFile f ([#437](http://bugs.hledger.org/437))
- more general parser types enabling reuse outside of IO ([#439](http://bugs.hledger.org/439))
### hledger 1.1
#### balance
- with -V, don't ignore market prices in the future ([#453](http://bugs.hledger.org/453), [#403](http://bugs.hledger.org/403))
- with -V and multiple same-date market prices, use the last parsed not the highest price ([#403](http://bugs.hledger.org/403))
#### misc
- fix non-existent "oldtime" dependency ([#431](http://bugs.hledger.org/431))
- [hledger-equity.hs](https://github.com/simonmichael/hledger/blob/master/bin/hledger-equity.hs) now generates valid journal format when there are multiple commodities
### hledger-ui 1.1
- with [--watch](/hledger-ui.html#options), the display updates automatically to show file or date changes
hledger-ui --watch will reload data when the journal file (or any included file) changes.
Also, when viewing a current standard period (ie this day/week/month/quarter/year),
the period will move as needed to track the current system date.
- the [--change](/hledger-ui.html#options) flag shows period changes at startup instead of historical ending balances
- the A key runs the hledger-iadd tool, if installed
- always reload when g is pressed
Previously it would check the modification time and reload only if
it looked newer than the last reload.
- mark hledger-ui as "stable"
- allow brick 0.15, vty 5.14, text-zipper 0.9
### hledger-web 1.1
- add [--host](/hledger-web.html#options) option ([#429](http://bugs.hledger.org/429))
This came up in the context of Docker, but it seems it wasn't
possible for hledger-web to serve remote clients directly (without
a proxy) because of 127.0.0.1 being hardcoded. That can now be
changed with --host=IPADDR. Also, the default base url uses this
address rather than a hard-coded "localhost".
- rename --server to --serve
The --server flag sounded too close in meaning to --host so
I've renamed it to --serve. The old spelling is still accepted,
but deprecated and will be removed in the next release.
### hledger-api 1.1
- serves on 127.0.0.1 by default, [--host](/hledger-api.html#options) option added ([#432](http://bugs.hledger.org/432))
Consistent with hledger-web: serves only local requests by default,
use --host=IPADDR to change this.
- fixed the version string in command-line help and swagger info
## 2016/10/26 hledger 1.0
***More hledger-ui features,
better hledger-web layout,
new hledger-api server,
new timedot format,
--pivot & --anon,
reorganized multi-format docs,
built-in help.
***
([announcement](https://groups.google.com/d/topic/hledger/WgdTy3-a6sc/discussion))
Release contributors:
Simon Michael, Dominik Süß, Thomas R. Koll, Moritz Kiefer,
jungle-boogie, Sergei Trofimovich, Malte Brandy, Sam Doshi,
Mitchell Rosen, Hans-Peter Deifel, Brian Scott, and Andrew Jones.
[project-wide](#project-wide-changes)
| [hledger-lib](#hledger-lib-1.0)
| [hledger](#hledger-1.0-1)
| [hledger-ui](#hledger-ui-1.0)
| [hledger-web](#hledger-web-1.0)
| [hledger-api](#hledger-api-1.0)
### project-wide changes
#### misc
- added GHC 8 support, dropped GHC 7.6 and 7.8 support.
GHC 7.8 support could be restored with small code changes and a maintainer.
- a cabal.project file has been added (Moritz Kiefer)
- use hpack for maintaining cabal files ([#371](http://bugs.hledger.org/371)).
Instead of editing cabal files directly, we now edit the less
verbose and less redundant package.yaml files and let stack (or
hpack) update the cabal files. We commit both the .yaml and
.cabal files.
- clean up some old cabal flags
- tools/simplebench has been spun off as the [quickbench](http://hackage.haskell.org/package/quickbench) package.
- add Appveyor CI builds, provide [more up-to-date Windows binaries](http://hledger.org/developer-guide.html#quick-links)
- extra: add a bunch of CSV rules examples
#### docs
- the website is simpler, clearer, and more mobile-friendly.
Docs are now collected on a single page and organised by type: getting started, reference, more.
- reference docs have been split into one manual for each executable and file format.
This helps with maintenance and packaging and also should make it
easier to see what's available and to read just what you need.
- manuals are now provided in html, plain text, man and info formats
generated from the same source by a new Shake-based docs build system. ([#292](http://bugs.hledger.org/292))
- versioned manuals are provided on the website, covering recent releases and the latest dev version ([#385](http://bugs.hledger.org/385), [#387](http://bugs.hledger.org/387))
- manuals are built in to the hledger executables, allowing easy offline reading on all platforms.
PROG -h shows PROG's command-line usage
PROG --help shows PROG's manual (fixed width)
PROG --man shows PROG's manual with man (formatted/paged)
PROG --info shows PROG's manual with info (hypertext)
hledger help [TOPIC] shows any manual
hledger man [TOPIC] shows any manual with man
hledger info [TOPIC] shows any manual with info
- the general and reporting options are now listed in all executable manuals.
We assume any of them which are unsupported are harmlessly ignored.
- demo.hledger.org is using beancount's example journal.
This is the somewhat realistic example journal from the beancount
project, tweaked for hledger.
- minor copyedits (jungle-boogie)
#### cli
- parsing multiple input files is now robust.
When multiple -f options are provided, we now parse each file
individually rather than just concatenating them, so they can
have different formats ([#320](http://bugs.hledger.org/320)). Note this also means that
directives (like \`Y\` or \`alias\`) no longer carry over from one
file to the next.
- I has been added as the short flag for --ignore-assertions
(this is different from Ledger's CLI, but useful for hledger-ui).
- parsing an argument-less --debug option is more robust
### hledger-lib 1.0
#### timedot format
- new "timedot" format for retroactive/approximate time logging.
Timedot is a plain text format for logging dated, categorised
quantities (eg time), supported by hledger. It is convenient
for approximate and retroactive time logging, eg when the
real-time clock-in/out required with a timeclock file is too
precise or too interruptive. It can be formatted like a bar
chart, making clear at a glance where time was spent.
#### timeclock format
- renamed "timelog" format to "timeclock", matching the emacs package
- sessions can no longer span file boundaries (unclocked-out
sessions will be auto-closed at the end of the file).
- transaction ids now count up rather than down ([#394](http://bugs.hledger.org/394))
- timeclock files no longer support default year directives
- removed old code for appending timeclock transactions to journal transactions.
A holdover from the days when both were allowed in one file.
#### csv format
- fix empty field assignment parsing, rule parse errors after megaparsec port ([#407](http://bugs.hledger.org/407)) (Hans-Peter Deifel)
#### journal format
- journal files can now include timeclock or timedot files ([#320](http://bugs.hledger.org/320))
(but not yet CSV files).
- fixed an issue with ordering of same-date transactions included from other files
- the "commodity" directive and "format" subdirective are now supported, allowing
full control of commodity style ([#295](http://bugs.hledger.org/295)) The commodity directive's
format subdirective can now be used to override the inferred
style for a commodity, eg to increase or decrease the
precision. This is at least a good workaround for [#295](http://bugs.hledger.org/295).
- Ledger-style "apply account"/"end apply account" directives are now used to set a default parent account.
- the Ledger-style "account" directive is now accepted (and ignored).
- bracketed posting dates are more robust ([#304](http://bugs.hledger.org/304))
Bracketed posting dates were fragile; they worked only if you
wrote full 10-character dates. Also some semantics were a bit
unclear. Now they should be robust, and have been documented
more clearly. This is a legacy undocumented Ledger syntax, but
it improves compatibility and might be preferable to the more
verbose "date:" tags if you write posting dates often (as I do).
Internally, bracketed posting dates are no longer considered to
be tags. Journal comment, tag, and posting date parsers have
been reworked, all with doctests.
- balance assertion failure messages are clearer
- with --debug=2, more detail about balance assertions is shown.
#### misc
- file parsers have been ported from Parsec to Megaparsec \o/ ([#289](http://bugs.hledger.org/289), [#366](http://bugs.hledger.org/366)) (Alexey Shmalko, Moritz Kiefer)
- most hledger types have been converted from String to Text, reducing memory usage by 30%+ on large files
- file parsers have been simplified for easier troubleshooting ([#275](http://bugs.hledger.org/275)).
The journal/timeclock/timedot parsers, instead of constructing
opaque journal update functions which are later applied to build
the journal, now construct the journal directly by modifying the
parser state. This is easier to understand and debug. It also
rules out the possibility of journal updates being a space
leak. (They weren't, in fact this change increased memory usage
slightly, but that has been addressed in other ways). The
ParsedJournal type alias has been added to distinguish
"being-parsed" journals and "finalised" journals.
- file format detection is more robust.
The Journal, Timelog and Timedot readers' detectors now check
each line in the sample data, not just the first one. I think the
sample data is only about 30 chars right now, but even so this
fixed a format detection issue I was seeing.
Also, we now always try parsing stdin as journal format (not just sometimes).
- all file formats now produce transaction ids, not just journal ([#394](http://bugs.hledger.org/394))
- git clone of the hledger repo on windows now works ([#345](http://bugs.hledger.org/345))
- added missing benchmark file ([#342](http://bugs.hledger.org/342))
- our stack.yaml files are more compatible across stack versions ([#300](http://bugs.hledger.org/300))
- use [newer file-embed](https://github.com/snoyberg/file-embed/issues/18) to fix ghci working directory dependence
- report more accurate dates in account transaction report when postings have their own dates
(affects hledger-ui and hledger-web registers).
The newly-named "transaction register date" is the date to be
displayed for that transaction in a transaction register, for
some current account and filter query. It is either the
transaction date from the journal ("transaction general date"),
or if postings to the current account and matched by the
register's filter query have their own dates, the earliest of
those posting dates.
- simplify account transactions report's running total.
The account transactions report used for hledger-ui and -web
registers now gives either the "period total" or "historical
total", depending strictly on the --historical flag. It doesn't
try to indicate whether the historical total is the accurate
historical balance (which depends on the user's report query).
- reloading a file now preserves the effect of options, query arguments etc.
- reloading a journal should now reload all included files as well.
- the Hledger.Read.\* modules have been reorganised for better reuse.
Hledger.Read.Utils has been renamed Hledger.Read.Common
and holds low-level parsers & utilities; high-level read
utilities are now in Hledger.Read.
- clarify amount display style canonicalisation code and terminology a bit.
Individual amounts still have styles; from these we derive
the standard "commodity styles". In user docs, we might call
these "commodity formats" since they can be controlled by the
"format" subdirective in journal files.
- Journal is now a monoid
- expandPath now throws a proper IO error
- more unit tests, start using doctest
### hledger 1.0
#### add
- suggest only one commodity at a time as default amount ([#383](http://bugs.hledger.org/383))
(since we currently can't input more than one at a time)
#### balance
- added --change flag for consistency
- H/--historical now also affects single-column balance reports with a start date ([#392](http://bugs.hledger.org/392)).
This has the same effect as just omitting the start date, but adds consistency.
- in CSV output, render amounts in one-line format ([#336](http://bugs.hledger.org/336))
#### balancesheet
- fix an infinite loop ([#393](http://bugs.hledger.org/393))
#### print
- in CSV output, fix and rename the transaction id field
#### register
- fix a sorting regression with --date2 ([#326](http://bugs.hledger.org/326))
- --average/-A is now affected by --historical/-H
- added --cumulative flag for consistency
- in CSV output, include the transaction id and rename the total field ([#391](http://bugs.hledger.org/391))
#### stats
- fixed an issue with ordering of include files
#### misc
- --pivot option added, groups postings by tag instead of account ([#323](http://bugs.hledger.org/323)) (Malte Brandy)
- --anon option added, obfuscates account names and descriptions ([#265](http://bugs.hledger.org/265)) (Brian Scott)
(Only affects the hledger tool, for now.)
- try to clarify balance/register's various report modes,
kinds of "balance" displayed, and related options and language.
- with multiple --change/--cumulative/--historical flags, use the last one instead of complaining
- don't add the "d" suffix when displaying day periods
- stack-ify extra/hledger-rewrite.hs
### hledger-ui 1.0
#### accounts screen
- at depth 0, show accounts on one "All" line and show all transactions in the register
- 0 now sets depth limit to 0 instead of clearing it
- always use --no-elide for a more regular accounts tree
#### register screen
- registers can now include/exclude subaccount transactions.
The register screen now includes subaccounts' transactions if the
accounts screen was in tree mode, or when showing an account
which was at the depth limit. Ie, it always shows the
transactions contributing to the balance displayed on the
accounts screen. As on the accounts screen, F toggles between
tree mode/subaccount txns included by default and flat
mode/subaccount txns excluded by default. (At least, it does when
it would make a difference.)
- register transactions are filtered by realness and status ([#354](http://bugs.hledger.org/354)).
Two fixes for the account transactions report when --real/--cleared/real:/status:
are in effect, affecting hledger-ui and hledger-web:
1. exclude transactions which affect the current account via an excluded posting type.
Eg when --real is in effect, a transaction posting to the current account with only
virtual postings will not appear in the report.
2. when showing historical balances, don't count excluded posting types in the
starting balance. Eg with --real, the starting balance will be the sum of only the
non-virtual prior postings.
This is complicated and there might be some ways to confuse it still, causing
wrongly included/excluded transactions or wrong historical balances/running totals
(transactions with both real and virtual postings to the current account, perhaps ?)
- show more accurate dates when postings have their own dates.
If postings to the register account matched by the register's
filter query have their own dates, we show the earliest of these
as the transaction date.
#### misc
- H toggles between showing "historical" or "period" balances ([#392](http://bugs.hledger.org/392)).
By default hledger-ui now shows historical balances, which
include transactions before the report start date (like hledger
balance --historical). Use the H key to toggle to "period" mode,
where balances start from 0 on the report start date.
- shift arrow keys allow quick period browsing
- shift-down narrows to the next smaller standard period
(year/quarter/month/week/day), shift-up does the reverse
- when narrowed to a standard period, shift-right/left moves to
the next/previous period
- \`t\` sets the period to today.
- a runs the add command
- E runs $HLEDGERUIEDITOR or $EDITOR or a default editor (vi) on the journal file.
When using emacs or vi, if a transaction is selected the cursor will be positioned at its journal entry.
- / key sets the filter query; BACKSPACE/DELETE clears it
- Z toggles display of zero items (like --empty), and they are shown by default.
-E/--empty is now the default for hledger-ui, so accounts with 0 balance
and transactions posting 0 change are shown by default. The Z key
toggles this, entering "nonzero" mode which hides zero items.
- R toggles inclusion of only real (non-virtual) postings
- U toggles inclusion of only uncleared transactions/postings
- I toggles balance assertions checking, useful for troubleshooting
- vi-style movement keys are now supported (for help, you must now use ? not h) ([#357](http://bugs.hledger.org/357))
- ESC cancels minibuffer/help or clears the filter query and jumps to top screen
- ENTER has been reserved for later use
- reloading now preserves any options and modes in effect
- reloading on the error screen now updates the message rather than entering a new error screen
- the help dialog is more detailed, includes the hledger-ui manual, and uses the full terminal width if needed
- the header/footer content is more efficient; historical/period and tree/flat modes are now indicated in the footer
- date: query args on the command line now affect the report period.
A date2: arg or --date2 flag might also affect it (untested).
- hledger-ui now uses the quicker-building microlens
### hledger-web 1.0
#### ui
- use full width on large screens, hide sidebar on small screens, more standard bootstrap styling ([#418](http://bugs.hledger.org/418), [#422](http://bugs.hledger.org/422)) (Dominik Süß)
- show the sidebar by default ([#310](http://bugs.hledger.org/310))
- fix the add link's tooltip
- when the add form opens, focus the first field ([#338](http://bugs.hledger.org/338))
- leave the add form's date field blank, avoiding a problem with tab clearing it ([#322](http://bugs.hledger.org/322))
- use transaction id instead of date in transaction urls ([#308](http://bugs.hledger.org/308)) (Thomas R. Koll)
- after following a link to a transaction, highlight it (Thomas R. Koll)
- misc. HTML/CSS/file cleanups/fixes (Thomas R. Koll)
#### misc
- startup is more robust ([#226](http://bugs.hledger.org/226)).
Now we exit if something is already using the specified port,
and we don't open a browser page before the app is ready.
- termination is more robust, avoiding stray background threads.
We terminate the server thread more carefully on exit, eg on control-C in GHCI.
- more robust register dates and filtering in some situations (see hledger-ui notes)
- reloading the journal preserves options, arguments in effect ([#314](http://bugs.hledger.org/314)).
The initial query specified by command line arguments is now preserved
when the journal is reloaded. This does not appear in the web UI, it's
like an invisible extra filter.
- show a proper not found page on 404
- document the special \`inacct:\` query ([#390](http://bugs.hledger.org/390))
### hledger-api 1.0
#### misc
- new hledger-api tool: a simple web API server with example clients ([#316](http://bugs.hledger.org/316))
- start an Angular-based API example client ([#316](http://bugs.hledger.org/316)) (Thomas R. Koll)
## 2015/10/30 hledger 0.27
***New curses-style interface, market value reporting, wide characters, fast regex aliases, man pages***
([announcement](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/1267))
Release contributors:
Simon Michael,
Carlos Lopez-Camey.
**hledger 0.27:**
Account aliases:
- Regular expression account aliases are now fast enough that you can
use lots of them without slowing things down. They now take
O(aliases x accounts) time, instead of O(aliases x transactions);
also, regular expressions are no longer recompiled unnecessarily.
Documentation:
- The hledger packages now have man pages, based on the current user
manual, thanks to the mighty pandoc ([#282](http://bugs.hledger.org/282)).
Journal format:
- Dates must now begin with a digit (not /, eg).
- The comment directive longer requires an end comment, and will
extend to the end of the file(s) without it.
Command-line interface:
- Output (balance reports, register reports, print output etc.)
containing wide characters, eg chinese/japanese/korean characters,
should now align correctly, when viewed in apps and fonts that show
wide characters as double width ([#242](http://bugs.hledger.org/242)).
- The argument for --depth or depth: must now be positive.
add:
- Journal entries are now saved with all amounts explicit, to avoid
losing price info ([#283](http://bugs.hledger.org/283)).
- Fixed a bug which sometimes (when the same letter pair was repeated)
caused it not to pick the most similar past transaction for defaults.
balance:
- There is now a -V/--value flag to report current market value (as in Ledger).
It converts all reported amounts using their "default market price".
"Market price" is the new name for "historical prices", defined with the P directive.
The default market price for a commodity is the most recent one found in the journal on or before the report end date.
Unlike Ledger, hledger's -V uses only the market prices recorded
with P directives; it does not use the transaction prices
recorded as part of posting amounts.
Using both -B and -V at the same time is possible.
- Fixed a bug in amount normalization which caused amount styles
(commodity symbol placement, decimal point character, etc.) to be
lost in certain cases ([#230](http://bugs.hledger.org/230), [#276](http://bugs.hledger.org/276)).
- The balance command's --format option can now adjust the rendering
style of multi-commodity amounts, if you begin the format string
with one of:
%_ - renders amounts on multiple lines, bottom-aligned (the default)
%^ - renders amounts on multiple lines, top-aligned
%, - renders amounts on one line, comma-separated
- The balance report's final total (and the line above it) now adapt
themselves to a custom --format.
print:
- The --match option prints the journal entry that best matches a
description (ie whose description field is most similar to the value
given, and if there are several equally similar, the most recent).
This was originally an add-on I used to guess account names for
ledger-autosync. It's nice for quickly looking up a recent
transaction from a guessed or partial description.
- print now always right-aligns the amounts in an entry, even when
they are wider than 12 characters. (If there is a price, it's
considered part of the amount for right-alignment.)
register:
- Amount columns now resize automatically, using more space if it's
needed and available.
**hledger-ui 0.27:**
- [hledger-ui](manual#ui) is a new curses-style UI, intended to be a standard part
of the hledger toolset for all users (except on native MS Windows,
where the vty lib is not [yet](https://github.com/coreyoconnor/vty/pull/1) supported).
The UI is quite simple, allowing just browsing of accounts and
transactions, but it has a number of improvements over the old
hledger-vty, which it replaces:
- adapts to screen size
- handles wide characters
- shows multi-commodity amounts on one line
- manages cursor and scroll position better
- allows depth adjustment
- allows --flat toggle
- allows --cleared toggle
- allows journal reloading
- shows a more useful transaction register, like hledger-web
- offers multiple color themes
- includes some built-in help
hledger-ui is built with brick, a new higher-level UI library based
on vty, making it relatively easy to grow and maintain.
**hledger-web 0.27:**
- Fix keyboard shortcut for adding a transaction (Carlos Lopez-Camey)
- Clear the form when clicking 'Add a transaction' (just like the shortcut) (Carlos Lopez-Camey)
- Disallow -f- (reading from standard input) which currently doesn't work ([#202](http://bugs.hledger.org/202))
- Fix broken links when using --base-url ([#235](http://bugs.hledger.org/235))
- Fix the --file-url option ([#285](http://bugs.hledger.org/285))
- Show fewer "other accounts" in the account register: to reduce
clutter in the "other accounts" field, if there are both real and
virtual postings to other accounts, show only the accounts posted to
by real postings.
## 2015/7/12 hledger 0.26
***Website & doc updates, account aliases, misc. bugfixes & cleanups, performance.***
Release contributors:
Simon Michael,
Imuli,
Carlos Lopez-Camey,
Kyle Marek-Spartz,
Rick Lupton,
Simon Hengel.
**Changes to hledger.org & docs:**
- examples everywhere, screenshots, content & style updates
- manual: reorganise topics, add some undocumented things, clarify some things
- dev guide: more links, put how-tos first, copy diagram from old wiki, update the setup docs
**User-visible changes in hledger since 0.25.1:**
Account aliases:
- Account aliases are once again non-regular-expression-based, by default. (#252)
The regex account aliases added in 0.24 tend to trip up people
switching between hledger and Ledger. (Also they are currently
slow). We now use the old non-regular-expression aliases again,
by default; these are unsurprising, useful, and pretty close in
functionality to Ledger's aliases.
The new regex aliases are still available, but they must now be
enclosed in forward slashes. (Ledger effectively ignores these.)
Journal format:
- We now parse, and also print, journal entries with no postings, as
proposed on the mail lists. These are not well-formed General
Journal entries/transactions, but on the other hand:
Ledger and beancount parse them;
if they are parsed, they should be printed;
they provide a convenient way to record (and report) non-transaction events;
and they permit more gradual introduction and learning of the concepts
(so eg a beginner can keep a simple journal before learning about accounts and postings).
- Trailing whitespace after a `comment` directive is now ignored.
Command-line interface:
- The -f/file option may now be used multiple times.
This is equivalent to concatenating the input files before running hledger.
The add command adds entries to the first file specified.
Queries:
- real: (no argument) is now a synonym for real:1
- tag: now matches tag names with a regular expression, like most other queries
- empty: is no longer supported, as it overlaps a bit confusingly with
amt:0. The --empty flag is still available.
- You can now match on pending status (#250)
A transaction/posting status of ! (pending) was effectively equivalent
to * (cleared). Now it's a separate state, not matched by --cleared.
The new Ledger-compatible --pending flag matches it, and so does
--uncleared.
The relevant search query terms are now status:*, status:! and
status: (the old status:1 and status:0 spellings are deprecated).
Since we interpret --uncleared and status: as "any state except cleared",
it's not currently possible to match things which are neither cleared
nor pending.
activity:
- activity no longer excludes 0-amount postings by default.
add:
- Don't show quotes around the journal file path in the "Creating..."
message, for consistency with the subsequent "Adding..." message.
balancesheet:
- Accounts beginning with "debt" or now also recognised as liabilities.
print:
- We now limit the display precision of inferred prices. (#262)
When a transaction posts to two commodities without specifying the
conversion price, we generate a price which makes it balance (cf
http://hledger.org/manual.html#prices). The print command showed
this with full precision (so that manual calculations with the
displayed numbers would look right), but this sometimes meant we
showed 255 digits (when there are multiple postings in the
commodity being priced, and the averaged unit price is an
irrational number). In this case we now set the price's display
precision to the sum of the (max) display precisions of the
commodities involved. An example:
```
hledger -f- print
<<<
1/1
c C 10.00
c C 11.00
d D -320.00
>>>
2015/01/01
c C 10.00 @ D 15.2381
c C 11.00 @ D 15.2381
d D -320.00
>>>=0
```
There might still be cases where this will show more price decimal
places than necessary.
- We now show inferred unit prices with at least 2 decimal places.
When inferring prices, if the commodities involved have low
display precisions, we don't do a good job of rendering
accurate-looking unit prices. Eg if the journal doesn't use any
decimal places, any inferred unit prices are also displayed with
no decimal places, which makes them look wrong to the user. Now,
we always give inferred unit prices a minimum display precision of
2, which helps a bit.
register:
- Postings with no amounts could give a runtime error in some obscure case, now fixed.
stats:
- stats now supports -o/--outputfile, like register/balance/print.
- An O(n^2) performance slowdown has been fixed, it's now much faster on large journals.
```
+--------------------------------------++--------+--------+
| || 0.25 | 0.26 |
+======================================++========+========+
| -f data/100x100x10.journal stats || 0.10 | 0.16 |
| -f data/1000x1000x10.journal stats || 0.45 | 0.21 |
| -f data/10000x1000x10.journal stats || 58.92 | 2.16 |
+--------------------------------------++--------+--------+
```
Miscellaneous:
- The June 30 day span was not being rendered correctly; fixed. (#272)
- The deprecated shakespeare-text dependency has been removed more thoroughly.
- The bench script invoked by "cabal bench" or "stack bench" now runs
some simple benchmarks.
You can get more accurate benchmark times by running with --criterion.
This will usually give much the same numbers and takes much longer.
Or with --simplebench, it benchmarks whatever commands are
configured in bench/default.bench. This mode uses the first
"hledger" executable in $PATH.
**User-visible changes in hledger-web since 0.25.1:**
- make the j keybinding respect --base-url (fixes #271)
- respect command line options (fixes #225)
- include the unminified jquery source again (#161)
- fix build breakage from #165 (fixes #268)
- fix a js error breaking add form in browsers other than firefox (fixes #251)
- drop deprecated network-conduit dependency
#### 2015/4/29 hledger-web 0.25.1
- support/require base-compat >0.8 (#245)
#### 2015/4/29 hledger 0.25.1
- timelog: support the description field (#247)
#### 2015/4/29 hledger-lib 0.25.1
- support/require base-compat >0.8 (#245)
## 2015/4/7 hledger 0.25
[announcement](https://groups.google.com/forum/#!topic/hledger/k2Y_NYZGGJw)
***GHC 7.10 compatibility, terminal width awareness, useful averages and totals columns, and a more robust hledger-web add form.***
Release contributors:
Simon Michael,
Julien Moutinho.
**User-visible changes in hledger since 0.24.1:**
- GHC 7.10 compatibility ([#239](http://bugs.hledger.org/239))
- On POSIX systems, the register command now uses the full terminal width by
default. Specifically, the output width is set from:
1. a --width option
2. or a COLUMNS environment variable (NB: not the same as a bash shell var)
3. or on POSIX (non-windows) systems, the current terminal width
4. or the default, 80 characters.
This feature requires the C curses dev libraries, making installation slightly harder.
If that's a problem you can disable curses support with a cabal flag:
`cabal install -f-curses ...`.
- register's --width option now accepts an optional
description column width following the overall width (`--width
WIDTH[,DESCWIDTH]`). This also sets the account column width, since
the available space (WIDTH-41) is divided up between these two
columns. Here's a diagram:
```
<--------------------------------- width (W) ---------------------------------->
date (10) description (D) account (W-41-D) amount (12) balance (12)
DDDDDDDDDD dddddddddddddddddddd aaaaaaaaaaaaaaaaaaa AAAAAAAAAAAA AAAAAAAAAAAA
```
Examples:
```
$ hledger reg # use terminal width on posix
$ hledger reg -w 100 # width 100, equal description/account widths
$ hledger reg -w 100,40 # width 100, wider description
$ hledger reg -w $COLUMNS,100 # terminal width and set description width
```
- balance: new -T/--row-total and -A/--average options
In multicolumn balance reports, -T/--row-total now shows a totals
column and -A/--average shows an averages column.
This helps eg to see monthly average expenses (hledger bal ^expenses -MA).
NB our use of -T deviates from Ledger's UI, where -T sets a custom
final total expression.
- balance: -N is now short for --no-total
- balance: fix partially-visible totals row with --no-total
A periodic (not using --cumulative or --historical) balance report
with --no-total now hides the totals row properly.
- journal, csv: comment lines can also start with *
As in Ledger. This means you can embed emacs org/outline-mode nodes in
your journal file and manipulate it like an outline.
**User-visible changes in hledger-web since 0.24.1:**
- GHC 7.10 compatibility ([#239](http://bugs.hledger.org/239))
- fix the add form when there are included files ([#234](http://bugs.hledger.org/234))
NB to make this work, the add form now shows the full file path of
the main and included journal files.
- improve add form validation ([#223](http://bugs.hledger.org/223), [#234](http://bugs.hledger.org/234))
All add form errors are displayed as form errors, not internal
server errors, and when there are errors the add form is redisplayed
(form inputs are not preserved, currently).
- keep the add button right-aligned when pressing ctrl - on the add form
#### 2015/3/15 hledger 0.24.1
- timelog: show hours with 2 decimal places, not 1 ([#237](http://bugs.hledger.org/237))
- fix balance accumulation through assertions in several commodities ([#195](http://bugs.hledger.org/195))
- fix rendering of week 52 heading in weekly reports
- allow utf8-string-1 ([fpco/stackage/#426](https://github.com/fpco/stackage/issues/426))
#### 2015/3/15 hledger-lib 0.24.1
- fix JournalReader "ctx" compilation warning
- add some type signatures in Utils to help make ghci-web
#### 2015/1/10 hledger-web 0.24.1
- add missing modules to fix cabal tests ([#232](http://bugs.hledger.org/232))
## 2014/12/25 hledger 0.24
Release contributors:
Simon Michael,
Julien Moutinho,
Ryan Desfosses,
Gergely Risko,
Gwern Branwen.
***CSV export,
a non-floating point number representation,
more powerful account aliases,
speedups,
and
a streamlined web UI.***
**User-visible changes in hledger since 0.23.3:**
General:
- fix redundant compilation when cabal installing the hledger packages
- switch to Decimal for representing amounts ([#118](http://bugs.hledger.org/118))
- report interval headings (eg in balance, register reports) are shown
compactly when possible
- general speedups.
```
+--------------------------------------------++----------------+--------------+--------+
| || hledger-0.23.3 | hledger-0.24 | ledger |
+============================================++================+==============+========+
| -f data/100x100x10.journal balance || 0.05 | 0.03 | 0.01 |
| -f data/1000x1000x10.journal balance || 0.34 | 0.21 | 0.04 |
| -f data/10000x1000x10.journal balance || 2.72 | 1.48 | 0.19 |
| -f data/10000x1000x10.journal balance aa || 3.16 | 1.55 | 0.14 |
| -f data/100x100x10.journal register || 0.09 | 0.05 | 0.04 |
| -f data/1000x1000x10.journal register || 0.66 | 0.32 | 0.30 |
| -f data/10000x1000x10.journal register || 6.27 | 2.77 | 2.80 |
| -f data/10000x1000x10.journal register aa || 3.30 | 1.62 | 0.21 |
| -f data/100x100x10.journal print || 0.06 | 0.05 | 0.01 |
| -f data/1000x1000x10.journal print || 0.42 | 0.25 | 0.04 |
| -f data/10000x1000x10.journal print || 3.95 | 2.57 | 0.38 |
| -f data/10000x1000x10.journal print aa || 3.23 | 1.56 | 0.14 |
| -f data/100x100x10.journal stat || 0.04 | 0.03 | 0.01 |
| -f data/1000x1000x10.journal stat || 0.35 | 0.24 | 0.03 |
| -f data/10000x1000x10.journal stat || 14.84 | 13.29 | 0.20 |
| -f data/10000x1000x10.journal stat aa || 12.08 | 10.16 | 0.17 |
+--------------------------------------------++----------------+--------------+--------+
```
Journal format:
- detect decimal point and digit groups more robustly ([#196](http://bugs.hledger.org/196))
- check that transaction dates are followed by whitespace or newline
- check that dates use a consistent separator character
- balance assertions now are specific to a single commodity, like
Ledger ([#195](http://bugs.hledger.org/195))
- support multi-line comments using "comment", "end comment"
directives, like Ledger
CSV format:
- fix: reading CSV data from stdin now works better
- the original order of same-day transactions is now usually preserved
(if the records appear to be in reverse date order, we reverse them
before finally sorting by transaction date)
- the rules file include directive is now relative to the current
file's directory ([#198](http://bugs.hledger.org/198))
- CSV output is now built in to the balance, print, and register
commands, controlled by -O/--output-format (and -o/--output-file,
see below). This means that hledger data can be easily exported,
eg for spreadsheet reporting or to migrate to a different tool.
CLI:
- the --width and --debug options now require their argument ([#149](http://bugs.hledger.org/149))
- when an option is repeated, the last value takes precedence ([#219](http://bugs.hledger.org/219)).
This is helpful eg for customising your reporting command aliases on
the fly.
- smart dates (used in -p/-b/-e/date:/date2:) now must use a
consistent separator character, and must be parseable to the end
- output destination and format selection is now built in to the
balance, print and register commands, controlled by -o/--output-file
and -O/--output-format options. Notes:
-o - means stdout.
An output file name suffix matching a supported format will also
set the output format, unless overridden by --output-format.
Commands' supported output formats are listed in their
command-line help. Two formats are currently available:
txt (the default) and csv.
- balance assertions can be disabled with --ignore-assertions
Account aliases:
- all matching account aliases are now applied, not just one directive
and one option
- account aliases now match by case insensitive regular expressions
matching anywhere in the account name
- account aliases can replace multiple occurrences of the pattern
within an account name
- an account alias replacement pattern can reference matched groups
with \\N
Queries:
- date:/date2: with a malformed date now reports an error instead of
being ignored
- amt: now supports >= or <=
- clarify status: docs and behaviour; "*" is no longer a synonym for
"1" (fixes [#227](http://bugs.hledger.org/227))
balance:
- fix: in tree mode, --drop is ignored instead of showing empty account names
- a depth limit of 0 now shows summary items with account name "...",
instead of an empty report ([#206](http://bugs.hledger.org/206))
- in multicolumn balance reports, -E now also shows posting-less
accounts with a non-zero balance during the period (in addition to
showing leading & trailing empty columns)
- in multicolumn reports, multi-commodity amounts are rendered on one
line for better layout ([#186](http://bugs.hledger.org/186))
- multicolumn reports' title now includes the report span
register:
- runs faster with large output
- supports date2:, and date:/date2: combined with --date2, better (fixes
[#201](http://bugs.hledger.org/201), [#221](http://bugs.hledger.org/221), [#222](http://bugs.hledger.org/222))
- a depth limit of 0 now shows summary items (see balance)
- -A/--average now implies -E/--empty
- postings with multi-commodity amounts are now top-aligned, like
Ledger
**User-visible changes in hledger-web since 0.23.3:**
General:
- fix: add missing hs/js files to package
- the web UI has been streamlined, dropping the raw and entries views and
the edit form
- the help dialog has been improved
- keyboard shortcuts are now available
- the sidebar can be toggled open or closed (press s)
Journal view:
- layout tweaks for less truncation of descriptions and account names
Register view:
- fix: don't show all zero amounts when searching by account within an
account register view
- chart improvements: show zero balances with correct commodity; show
accurate balance at all dates; show transaction events & tooltips;
show zero/today lines & background colors
Add form:
- parses data more strictly and gives better errors (eg [#194](http://bugs.hledger.org/194))
- allows any number of postings, not just two
- after adding a transaction, goes back to the journal
- keyboard shortcut (a) allows quick access
Dependencies:
- allow warp 3\*, wai-handler-launch 3\*
- require yesod 1.4* (fixes [#212](http://bugs.hledger.org/212))
- js updated (jquery, bootstrap, flot), added (typeahead, cookie, hotkeys),
removed (select2)
**API-ish changes in hledger-lib since 0.23.3:**
- fix combineJournalUpdates folding order
- fix a regexReplaceCI bug
- fix a splitAtElement bug with adjacent separators
- mostly replace slow regexpr with regex-tdfa (fixes [#189](http://bugs.hledger.org/189))
- use the modern Text.Parsec API
- allow transformers 0.4*
- regexReplace now supports backreferences
- Transactions now remember their parse location in the journal file
- export Regexp types, disambiguate CsvReader's similarly-named type
- export failIfInvalidMonth/Day (closes [#216](http://bugs.hledger.org/216))
- track the commodity of zero amounts when possible
(useful eg for hledger-web's multi-commodity charts)
- show posting dates in debug output
- more debug helpers
#### 2014/9/12 hledger-web 0.23.3
- remove warp, wai-handler-launch upper bounds (fixes [#205](http://bugs.hledger.org/205))
#### 2014/9/12 hledger 0.23.3
- allow text 1.2+ (fixes [#207](http://bugs.hledger.org/207))
#### 2014/5/8 hledger 0.23.2
- register: also fix date sorting of postings ([#184](http://bugs.hledger.org/184))
#### 2014/5/7 hledger 0.23.1
- register: fix a refactoring-related regression that the tests
missed: if transactions were not ordered by date in the journal,
register could include postings before the report start date in the
output. ([#184](http://bugs.hledger.org/184))
- add: don't apply a default commodity to amounts on entry ([#138](http://bugs.hledger.org/138))
- cli: options before the add-on command name are now also passed to it ([#182](http://bugs.hledger.org/182))
- csv: allow the first name in a fields list to be empty ([#178](http://bugs.hledger.org/178))
- csv: don't validate fields count in skipped lines ([#177](http://bugs.hledger.org/177))
## 2014/5/1 hledger 0.23
[announcement](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/1028)
***command-line fixes and polish, a new accounts
command, and a number of changes to the balance command relating
to --depth, --flat, and multicolumn mode, which I find has made it much
more useful.***
Changes since 0.22.2:
Journal format:
- A # (hash) in column 0 is now also supported for starting a top-level journal comment, like Ledger.
- The "too many missing amounts" error now reminds about the 2-space rule.
- Fix: . (period) is no longer parsed as a valid amount.
- Fix: default commodity directives no longer limit the maximum display precision ([#169](http://bugs.hledger.org/169)).
- Fix: + before an amount is no longer parsed as part of the commodity ([#181](http://bugs.hledger.org/181)).
CLI:
- Command-line help cleanups, layout improvements.
- Descriptions are shown for known add-ons in the command list.
- Command aliases have been simplified.
- Add-ons can now have any of these file extensions:
none, hs, lhs, pl, py, rb, rkt, sh, bat, com, exe.
- Add-ons are displayed without their file extensions when possible.
- Add-ons with the same name as a built-in command or alias are ignored.
- Fix: add-on detection and invocation now works on windows.
- Fix: add-ons with digits in the name are now found.
- Fix: add-on arguments containing a single quote now work.
- Fix: when -- is used to hide add-on options from the main program,
it is no longer passed through as an add-on argument.
accounts:
- An accounts command has been added, similar to Ledger's, for listing account names
in flat or hierarchical mode.
add:
- Tab completion now works at all prompts, and will insert the default if the input area is empty.
- Account and amount defaults are more robust and useful.
- Transactions may also be completed by the enter key, when there are no more default postings.
- Input prompts are displayed in a different colour when supported.
balance:
- Balance reports in flat mode now always show exclusive (subaccount-excluding) balances.
- Balance reports in flat mode with --depth now aggregate deeper accounts at the depth limit instead of excluding them.
- Multicolumn reports in flat mode now support --drop.
- Multicolumn balance reports can now show the account hierarchy with --tree.
- Multicolumn report start/end dates are adjusted to encompass the displayed
report periods, so the first and last periods are "full" and comparable to the others.
- Fix: zero-balance leaf accounts below a non-zero-balance parent are no longer always shown ([#170](http://bugs.hledger.org/170)).
- Fix: multicolumn reports now support --date2 (cf [#174](http://bugs.hledger.org/174)).
balancesheet, cashflow, incomestatement:
- These commands now support --flat and --drop.
print:
- Tag queries (tag:) will now match a transaction if any of its postings match.
register:
- The --display option has been dropped. To see an accurate running total which
includes the prior starting balance, use --historical/-H (like balance).
- With a report interval, report start/end dates are adjusted to encompass the displayed
periods, so the first and last periods are "full" and comparable to the others.
- Fix: --date2 now works with report intervals (fixes [#174](http://bugs.hledger.org/174)).
Queries:
- The currency/commodity query prefix (sym:) has been renamed to cur:.
- Currency/commodity queries are applied more strongly in register and
balance reports, filtering out unwanted currencies entirely. Eg
hledger balance cur:'\$' now reports only the dollar amounts even if
there are multi-currency transactions or postings.
- Amount queries like amt:N, amt: