diff --git a/doc/relnotes.md b/doc/relnotes.md
new file mode 100644
index 000000000..df9ace971
--- /dev/null
+++ b/doc/relnotes.md
@@ -0,0 +1,8292 @@
+
+
+# Release notes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Major releases and user-visible changes, collected from the changelogs (
+[hledger](http://hackage.haskell.org/package/hledger-1.24.1/changelog),
+[hledger-ui](http://hackage.haskell.org/package/hledger-ui-1.24.1/changelog),
+[hledger-web](http://hackage.haskell.org/package/hledger-web-1.24.1/changelog)
+).
+Changes in hledger-install.sh are shown
+[here](https://github.com/simonmichael/hledger/commits/master/hledger-install/hledger-install.sh).
+
+## 2024-01-28 hledger-1.32.3
+
+### hledger 1.32.3
+
+Fixes
+
+- A performance slowdown since 1.29, especially noticeable with many
+ accounts and transactions, has been fixed. [#2153]
+
+- Balance assertions involving mixed-cost balances are checked correctly again
+ (a regression in 1.30). [#2150]
+
+- import --catchup works again (a regression in 1.32). [#2156]
+
+- --anon is now a deprecated hidden flag that raises an error,
+ but is still usable as --obfuscate (also hidden). [#2133]
+
+- Balance assertion error messages are clearer, and show the diff again.
+
+### hledger-ui 1.32.3
+
+- Use hledger-1.32.3
+
+- Allow vty 6.2, brick 2.3
+
+### hledger-web 1.32.3
+
+- Use hledger-1.32.3
+
+### project changes 1.32.3
+
+- bin/hledger-bar: Fix an error when NO_COLOR is not defined;
+ allow color when NO_COLOR is defined but empty, per no-color spec;
+ and fix shellcheck warnings.
+ [#2159] (Colin Dean, Simon Michael)
+
+- bin/hledger-simplebal: Fix shellcheck warnings. (Colin Dean)
+
+### credits 1.32.3
+
+Simon Michael,
+Colin Dean.
+
+[#2159]: https://github.com/simonmichael/hledger/issues/2159
+[#2156]: https://github.com/simonmichael/hledger/issues/2156
+[#2153]: https://github.com/simonmichael/hledger/issues/2153
+[#2150]: https://github.com/simonmichael/hledger/issues/2150
+[#2133]: https://github.com/simonmichael/hledger/issues/2133
+
+## 2023-12-31 hledger-1.32.2
+
+### hledger 1.32.2
+
+Fixes
+
+- In CSV field assignments, %FIELD interpolation and `\n` can be used together again. [#2134]
+
+- In timedot data, numbers beginning with a decimal point are accepted again. [#2130]
+
+- In a `balance --budget` report, `--layout=tall` no longer hides commodity symbols.
+
+- Value reports seeing a pathological price chain with 1000 or more
+ steps now write their warning to the console, not a debug log file.
+
+Improvements
+
+- Allow megaparsec 9.6
+
+Docs
+
+- Updated:
+ Queries,
+ Periodic transactions,
+ Auto postings,
+ Assertions and costs,
+ Budget report
+
+### hledger-ui 1.32.2
+
+Features
+
+- hledger-ui is now available on Windows (ShrykeWindgrace)
+
+Improvements
+
+- Use Notepad as default editor on Windows (ShrykeWindgrace)
+
+- Allow brick 2.2 (Vekhir)
+
+- Allow megaparsec 9.6
+
+### hledger-web 1.32.2
+
+Fixes
+
+- The `--base-url` option works again. [#2127], [#2100]
+
+- Startup messages are more accurate and informative, eg with `--socket`. [#2127]
+
+- The non-working `--file-url` option has been dropped for now. [#2139]
+
+Improvements
+
+- Allow megaparsec 9.6
+
+- hledger-web's tests now respect and can test command line options.
+
+- hledger-web's tests now run the app at 127.0.0.1 and port 5000,
+ rather than "any of our IPv4 or IPv6 addresses" and 3000.
+
+
+[#2139]: https://github.com/simonmichael/hledger/issues/2139
+[#2134]: https://github.com/simonmichael/hledger/issues/2134
+[#2130]: https://github.com/simonmichael/hledger/issues/2130
+[#2127]: https://github.com/simonmichael/hledger/issues/2127
+[#2100]: https://github.com/simonmichael/hledger/issues/2100
+
+## 2023-12-07 hledger-1.32.1
+
+### hledger 1.32.1
+
+- Fixed: `import` with multiple files now updates .latest files correctly. ([#2125])
+
+- Fixed: `print --round=hard` now properly pads/rounds amounts with inferred costs. ([#2123])
+
+- CSV matcher syntax: mention that ! and & can't be used in the same line yet. ([#2088])
+
+- Drop the "a difference of ..." line from balance assertion failure output.
+ I feel it made the message harder to read and isn't really necessary.
+
+- Declaring the empty payee name with `payee ""` now works,
+ to let `hledger check payees` accept payee-less transactions.
+ ([#2119])
+
+- Built-in tags with special meaning like `type:` and `t:` are now implicitly declared,
+ so using type: in account declarations or generating t: with timedot letters
+ won't cause `hledger check tags` to fail.
+ ([#2119])
+
+### hledger-ui 1.32.1
+
+- Use hledger-1.32.1
+
+### hledger-web 1.32.1
+
+- Use hledger-1.32.1
+
+[#2125]: https://github.com/simonmichael/hledger/issues/2125
+[#2123]: https://github.com/simonmichael/hledger/issues/2123
+[#2119]: https://github.com/simonmichael/hledger/issues/2119
+
+
+## 2023-12-01 hledger-1.32
+
+**More precision control, beancount output, TSV output, --summary-only,
+strict/idempotent import, CSV rule enhancements, timedot letters, fixes.**
+
+### hledger 1.32
+
+Breaking changes
+
+- Display styles and display precision are now managed more carefully
+ during calculations and output, fixing a number of issues ([#2111],
+ "Precisiongeddon"). In brief:
+
+ - Cost and value reports, such as `print -V`, now (1) consistently
+ apply commodity display styles, and (2) do not add or discard
+ decimal digits unnecessarily. ([#2105])
+
+ - When "infinite decimals" arise during calculations (eg in value
+ reports, or in `prices` or `roi` output), these are now shown
+ limited to 8 decimal digits rather than 255.
+
+ - Non-print-like reports no longer add trailing decimal marks to
+ disambiguate digit group marks (this was an unintended regression
+ in 1.31). ([#2115])
+
+ - We now document number formatting adjustments made in certain
+ reports and output formats (hledger manual > REPORTING CONCEPTS >
+ Amount formatting, parseability).
+
+
+Features
+
+- Timedot format supports a new letters syntax for easier tagged time logging.
+ ([#2116])
+
+- `print` has a new `beancount` output format for exporting to Beancount.
+ This prints journal output more likely (though not guaranteed) to
+ be readable by Beancount.
+
+- In CSV rules, matchers using regular expressions can now interpolate
+ their matched texts into the values they assign to fields (field
+ assignment values can reference match groups).
+ ([#2009]) (Jonathan Dowland)
+
+- In CSV rules, matchers can be negated by prepending `!`.
+ ([#2088]) (bobobo1618)
+
+- Multi-column balance reports (from `bal`, `bs`, `is` etc.) can use
+ the new `--summary-only` flag (`--summary` also works) to display
+ just the Total and Average columns (if enabled by `--row-total` and
+ `-A/--average`) and hide the rest.
+ ([#1012]) (Stephen Morgan)
+
+- All commands that suport csv output now also support `tsv`
+ (tab-separated values) output. The data is identical, but the fields
+ are separated by tab characters and there is no quoting or
+ escaping. Tab, carriage return, and newline characters in data are
+ converted to spaces (this should rarely if ever happen in practice).
+ ([#869]) (Peter Sagerson).
+
+
+Improvements
+
+- Journal format no longer fails to parse Ledger-style lot costs with spaces
+ after the `{`, improving Ledger compatibility.
+
+- `import` now does not update any .latest files until it has run
+ without error (no failing strict checks, no failure while writing
+ the journal file). This makes it more idempotent, so you can run it
+ again after fixing problems.
+
+- `print` now shows zeros with a commodity symbol and decimal digits
+ when possible, preserving more information.
+
+- `print` has a new option for controlling amount rounding ([#2085]):
+
+ - `--round=none` - show amounts with original precisions (default;
+ like 1.31; avoids implying less or more precision than was
+ recorded)
+
+ - `--round=soft` - add/remove decimal zeros in non-cost amounts
+ (like 1.30 but also affects balance assertion amounts)
+
+ - `--round=hard` - round non-cost amounts (can hide significant digits)
+
+ - `--round=all` - round all amounts and costs
+
+ For the record:
+ `print` shows four kinds of amount: posting amounts,
+ balance assertion amounts, and costs for each of those.
+ Past hledger versions styled and rounded these inconsistently.
+ Since 1.31 they are all styled, and since 1.32 they are rounded as follows:
+
+ | hledger-1.32 print | amt | cost | bal | balcost |
+ |--------------------|------|------|------|---------|
+ | (default) | none | none | none | none |
+ | --round=soft | soft | none | soft | none |
+ | --round=hard | hard | none | hard | none |
+ | --round=all | hard | hard | hard | hard |
+
+- The `prices` command has had a number of fixes and improvements ([#2111]):
+
+ - It now more accurately lists the prices that hledger would use
+ when calculating value reports (similar to what you'd see with
+ `hledger bal -V --debug=2`).
+
+ - The --infer-reverse-prices flag was confusing, since we always
+ infer and use reverse prices; it has been renamed to `--show-reverse`.
+
+ - `--show-reverse` and `--infer-market-prices` flags now combine properly.
+
+ - `--show-reverse` now ignores zero prices rather than giving an error.
+
+ - Price amounts are now shown styled.
+
+ - Price amounts are now shown with all their decimal digits; or with
+ 8 decimal digits if they appear to be infinite decimals (which can
+ arise with reverse prices).
+
+ - Filtering prices with `cur:` or `amt:` now works properly.
+
+
+Fixes
+
+- `print` now styles balance assertion costs consistently, like other
+ amounts.
+
+- `import` now works with `-s/--strict`.
+ And more generally, when reading multiple input files, eg with
+ multiple `-f` options, strict checks are done only for the overall
+ combined journal (not for each individual file).
+ ([#2113])
+
+- `tag:` queries now work when reading CSV files. ([#2114])
+
+- Using a `.json` or `.sql` file extension with `-o`/`--outputfile`
+ now properly selects those output formats.
+
+- Auto postings no longer break redundant equity/cost detection and
+ transaction balancing. ([#2110])
+
+- Amounts set by balance assignment now affect commodity styles again.
+ ([#2091], a regression in 1.30)
+
+- Timedot quantities with units are parsed more accurately.
+ Eg a quantity like "15m" was evaluated as 0.249999999 not 0.25,
+ and since hledger 1.21, it was printed that way also.
+ Now we round such quantities to two places during parsing to get
+ exact quarter-hour amounts. ([#2096])
+
+- The `demo` command no longer triggers a JSON decode error in asciinema
+ 2.3.0. It now also shows a better error message if asciinema fails
+ ([#2094]).
+
+- Failing balance assertions with a cost now show correct markers in
+ the error message. ([#2083])
+
+
+Docs
+
+- New:
+
+ - Amount formatting, parseability
+ - Started new code docs for developers, based in the Hledger module's haddock
+
+- Updated:
+
+ - aregister
+ - commodity directive
+ - Commodity display style
+ - if table
+ - Decimal marks, digit group marks
+ - Regular expressions
+ - Timedot
+
+
+### hledger-ui 1.32
+
+Fixes
+
+- The V key now preserves the valuation mode specified at the command
+ line, if any. ([#2084])
+
+- The hledger-ui package no longer wastefully builds its modules
+ twice.
+
+
+### hledger-web 1.32
+
+Features
+
+- The hledger-web app on the Sandstorm cloud platform has been updated to
+ a recent version (Jacob Weisz, [#2102]), and now uses Sandstorm's access
+ control. (Jakub Zárybnický, [#821])
+
+Improvements
+
+- The --capabilities and --capabilities-header options have been replaced
+ with an easier `--allow=view|add|edit|sandstorm` option.
+ `add` is the default access level, while `sandstorm` is for use on Sandstorm.
+ UI and docs now speak of "permissions" rather than "capabilities".
+ ([#834])
+
+- The Sandstorm app's permissions and roles have been renamed for clarity. ([#834])
+
+- Permissions are now checked earlier, before the web app is started,
+ producing clearer command line errors when appropriate.
+
+- Account's `adeclarationinfo` field is now included in JSON output. ([#2097]) (S. Zeid)
+
+Fixes
+
+- The app can now serve on address 0.0.0.0 (exposing it on all interfaces),
+ which previously didn't work.
+ ([#2099]) (Philipp Klocke)
+
+- The broken "File format help" link in the edit form has been fixed. ([#2103])
+
+
+### project changes 1.32
+
+Scripts/addons
+
+- hledger-install.sh: replaced hledger-stockquotes with pricehist
+
+- added gsheet-csv.hs: fetch a google sheet as CSV
+
+- added hledger-report1: an example custom compound report, with haskell and bash versions
+
+- justfile: updated import, time report scripts
+
+
+Examples
+
+- New:
+
+ - Fidelity CSV rules
+
+- Updated:
+
+ - roi-unrealised.ledger (Charlie Ambrose)
+
+Docs
+
+- New:
+
+ - Started a weekly This Week In Hledger news post, inspired by Matrix.
+ - There's now a News page, for This Week In Hledger etc.
+ - hledgermatic, an up-to-date, simple journal-first workflow
+ - How to record journal entries: added
+ - Reporting version control stats: added
+ - Moved regression bounty info from the issue tracker to Developer docs > REGRESSIONS.
+
+- Updated:
+
+ - Checking for errors
+ - Common workflows
+ - Ledger
+ - Simon's old setup
+ - Videos
+ - All docs now use the `cli` class instead of `shell` for command-line examples,
+ avoiding inaccurate highlighting.
+
+
+Infrastructure
+
+- hledger.org website:
+
+ - Fixed the webhook that was not updating the site on git push.
+
+ - Fixed a problem with cloudflare authentication that was preventing
+ automatic TLS certificate renewal on hledger.org.
+
+ - Updated and committed hledger.org's caddy config and short urls (redirects)
+
+ - Enabled https for code.hledger.org and site.hledger.org short urls.
+
+ - Updated the stars.hledger.org redirect
+ (we have reached the top 30 github-starred Haskell projects 🌟 🎉).
+
+ - Set up a self-hosted Sandstorm server, and a public hledger-web
+ instance (sandbox.hledger.org) in it that is fully writable (until
+ spammers find it). Use it as a pastebin for examples, eg.
+
+- Github CI (continuous integration) workflows have been optimised somewhat:
+
+ - Scheduled weekly builds have been disabled, as they were propagating
+ to forks and running wastefully there in some cases.
+
+ - Some repeated rebuilding of the hledger-lib and hledger packages
+ that seems unnecessary has been stopped.
+
+ - hledger-ui no longer builds its modules twice.
+
+ - Haddock testing now done only at release time.
+
+ - renamed main CI workflow and branch to "ci"
+
+- Tools:
+
+ - .ghci: added an :rmain alias, which is like :main but reloads first -
+ saves typing, and is useful eg when changing --debug level.
+
+ - make haddock-watch is now fast
+
+
+Finance
+
+- Updated project finance scripts, regenerated the journal with consistent precisions.
+
+- Updated reports with the last few months of data from Open Collective.
+
+
+### credits 1.32
+
+Simon Michael,
+Jonathan Dowland,
+S. Zeid,
+Charlie Ambrose,
+Jacob Weisz,
+Peter Sagerson,
+Philipp Klocke,
+Stephen Morgan,
+bobobo1618.
+
+[#2116]: https://github.com/simonmichael/hledger/issues/2116
+[#2115]: https://github.com/simonmichael/hledger/issues/2115
+[#2114]: https://github.com/simonmichael/hledger/issues/2114
+[#2113]: https://github.com/simonmichael/hledger/issues/2113
+[#2111]: https://github.com/simonmichael/hledger/issues/2111
+[#2110]: https://github.com/simonmichael/hledger/issues/2110
+[#2105]: https://github.com/simonmichael/hledger/issues/2105
+[#2103]: https://github.com/simonmichael/hledger/issues/2103
+[#2102]: https://github.com/simonmichael/hledger/issues/2102
+[#2099]: https://github.com/simonmichael/hledger/issues/2099
+[#2097]: https://github.com/simonmichael/hledger/issues/2097
+[#2096]: https://github.com/simonmichael/hledger/issues/2096
+[#2094]: https://github.com/simonmichael/hledger/issues/2094
+[#2091]: https://github.com/simonmichael/hledger/issues/2091
+[#2088]: https://github.com/simonmichael/hledger/issues/2088
+[#2085]: https://github.com/simonmichael/hledger/issues/2085
+[#2084]: https://github.com/simonmichael/hledger/issues/2084
+[#2083]: https://github.com/simonmichael/hledger/issues/2083
+[#2079]: https://github.com/simonmichael/hledger/issues/2079
+[#2068]: https://github.com/simonmichael/hledger/issues/2068
+[#2065]: https://github.com/simonmichael/hledger/issues/2065
+[#2050]: https://github.com/simonmichael/hledger/issues/2050
+[#2045]: https://github.com/simonmichael/hledger/issues/2045
+[#2041]: https://github.com/simonmichael/hledger/issues/2041
+[#2040]: https://github.com/simonmichael/hledger/issues/2040
+[#2039]: https://github.com/simonmichael/hledger/issues/2039
+[#2034]: https://github.com/simonmichael/hledger/issues/2034
+[#2032]: https://github.com/simonmichael/hledger/issues/2032
+[#2025]: https://github.com/simonmichael/hledger/issues/2025
+[#2024]: https://github.com/simonmichael/hledger/issues/2024
+[#2023]: https://github.com/simonmichael/hledger/issues/2023
+[#2020]: https://github.com/simonmichael/hledger/issues/2020
+[#2018]: https://github.com/simonmichael/hledger/issues/2018
+[#2015]: https://github.com/simonmichael/hledger/issues/2015
+[#2012]: https://github.com/simonmichael/hledger/issues/2012
+[#2011]: https://github.com/simonmichael/hledger/issues/2011
+[#2009]: https://github.com/simonmichael/hledger/issues/2009
+[#2007]: https://github.com/simonmichael/hledger/issues/2007
+[#1997]: https://github.com/simonmichael/hledger/issues/1997
+[#1996]: https://github.com/simonmichael/hledger/issues/1996
+[#1982]: https://github.com/simonmichael/hledger/issues/1982
+[#1978]: https://github.com/simonmichael/hledger/issues/1978
+[#1977]: https://github.com/simonmichael/hledger/issues/1977
+[#1970]: https://github.com/simonmichael/hledger/issues/1970
+[#1967]: https://github.com/simonmichael/hledger/issues/1967
+[#1966]: https://github.com/simonmichael/hledger/issues/1966
+[#1965]: https://github.com/simonmichael/hledger/issues/1965
+[#1962]: https://github.com/simonmichael/hledger/issues/1962
+[#1961]: https://github.com/simonmichael/hledger/issues/1961
+[#1959]: https://github.com/simonmichael/hledger/issues/1959
+[#1953]: https://github.com/simonmichael/hledger/issues/1953
+[#1950]: https://github.com/simonmichael/hledger/issues/1950
+[#1942]: https://github.com/simonmichael/hledger/issues/1942
+[#1936]: https://github.com/simonmichael/hledger/issues/1936
+[#1933]: https://github.com/simonmichael/hledger/issues/1933
+[#1932]: https://github.com/simonmichael/hledger/issues/1932
+[#1927]: https://github.com/simonmichael/hledger/issues/1927
+[#1921]: https://github.com/simonmichael/hledger/issues/1921
+[#1919]: https://github.com/simonmichael/hledger/issues/1919
+[#1915]: https://github.com/simonmichael/hledger/issues/1915
+[#1909]: https://github.com/simonmichael/hledger/issues/1909
+[#1907]: https://github.com/simonmichael/hledger/issues/1907
+[#1905]: https://github.com/simonmichael/hledger/issues/1905
+[#1889]: https://github.com/simonmichael/hledger/issues/1889
+[#1879]: https://github.com/simonmichael/hledger/issues/1879
+[#1870]: https://github.com/simonmichael/hledger/issues/1870
+[#1839]: https://github.com/simonmichael/hledger/issues/1839
+[#1770]: https://github.com/simonmichael/hledger/issues/1770
+[#1763]: https://github.com/simonmichael/hledger/issues/1763
+[#1754]: https://github.com/simonmichael/hledger/issues/1754
+[#1562]: https://github.com/simonmichael/hledger/issues/1562
+[#1436]: https://github.com/simonmichael/hledger/issues/1436
+[#1229]: https://github.com/simonmichael/hledger/issues/1229
+[#1220]: https://github.com/simonmichael/hledger/issues/1220
+[#1012]: https://github.com/simonmichael/hledger/issues/1012
+[#869]: https://github.com/simonmichael/hledger/issues/869
+[#834]: https://github.com/simonmichael/hledger/issues/834
+[#821]: https://github.com/simonmichael/hledger/issues/821
+
+## 2023-09-03 hledger-1.31
+
+**More tolerant equity/cost matching; print amounts in original style; multi-pivot.**
+
+### hledger 1.31
+
+Features
+
+- Multi-pivot: the --pivot option now accepts multiple arguments,
+ colon-delimited, to construct account names from multiple fields.
+ ([#2050], Eric Mertens)
+
+Improvements
+
+- The `print` command now more closely replicates the original journal
+ amount styles, which is helpful when round-tripping / cleaning up
+ journal files:
+
+ - Amounts in conversion transactions could be displayed rounded to a
+ lower precision; this no longer happens.
+ ([#2079])
+
+ - Amounts could be displayed with extra zeros after the decimal mark;
+ this no longer happens.
+
+ - Amounts could display with a different precision if the journal
+ included a timedot file; this no longer happens.
+
+ - Costs in balance assertions were not displayed with standard
+ styles like other amounts; now they are.
+
+ - Zero amounts were always shown as just "0"; now they are shown
+ with their original commodity symbol and style. (And if an
+ inferred amount has multiple zeros in different commodities, a
+ posting is displayed for each of these.)
+
+- `print` no longer displays numbers with a single digit group mark
+ and no decimal mark, which are ambiguous and hard to re-parse. Now
+ if a number has digit group marks the decimal mark will always be
+ shown also. Eg `1,000` (where the comma is a thousands separator)
+ is now shown as `1,000.`.
+
+- The check command's
+ `balancedwithautoconversion` and `balancednoautoconversion` checks
+ have been renamed to `autobalanced` and `balanced`.
+
+- `hledger check recentassertions` now reports failures at the first
+ posting that's more than 7 days later than the latest balance
+ assertion (rather than at the balance assertion). This is the thing
+ actually triggering the error, and it is more likely to be visible
+ or at least closer when you are working at the end of a journal
+ file.
+
+ Also, the suggested sample balance assertion now uses the same
+ commodity symbol as in the failing posting (the first, if there are
+ more than one); and, no longer includes a cleared mark.
+
+- The import command now shows the file path being imported to.
+
+- With --pivot, `desc` is now the preferred spelling for pivoting on
+ description.
+
+- The demo command now ignores an invalid journal file, like the other
+ HELP commands.
+
+- Debug output for equity conversion postings has been improved,
+ making troubleshooting easier.
+
+- Allow aeson 2.2, megaparsec 9.5.
+
+Fixes
+
+- In journal files, valid multicommodity transactions where the
+ matching non-equity postings can't be auto-detected are no longer
+ considered an error (as they were in hledger 1.29 and 1.30). Now,
+ such transactions are accepted, and --infer-cost has no effect on
+ them. This is similar to the behaviour of --cost, --infer-equity,
+ and --infer-market-prices. ([#2045])
+
+- In journal files, equity conversion postings are now detected more
+ tolerantly, using the same precision as the conversion posting's
+ amount ([#2041]). Eg, the following transaction is now accepted:
+
+ 2023-01-01
+ Assets -84.01 USD @ 2.495 GEL
+ ; ^ 209.60495 GEL, recognised as a match for the 209.60 below
+ Equity:Conversion 84.01 USD
+ Equity:Conversion -209.60 GEL
+ Assets 209.60 GEL
+
+- The roi command now reports TWR per period and overall TWR for
+ multi-period reports.
+ ([#2068], Dmitry Astapov)
+
+- The commands list no longer shows bar when hledger-bar is not installed ([#2065]),
+ and had a few other cleanups.
+
+### hledger-ui 1.31
+
+Improvements
+
+- Allow megaparsec 9.5
+
+### hledger-web 1.31
+
+Improvements
+
+- Allow aeson 2.2, megaparsec 9.5
+
+### project changes 1.31
+
+Scripts/addons
+
+- ft, tt shell scripts for collecting financial and time reports
+
+- A justfile implementation of ft and tt
+
+Examples
+
+- self-tracking
+
+- RPG ledger (Eric Mertens)
+
+Docs
+
+Infrastructure
+
+- tools, CI: checkembeddedfiles, checkversions
+
+- Shake: avoid making empty commits
+
+- make functest-PAT: runs a subset of functional tests
+
+- Provide a ghc-tags.yaml file to make use of ghc-tags with Hledger easy.
+
+ ghc-tags is a standalone tool to replace the formerly-built-in
+ ":ctags" feature (and I presume ":etags") in GHCi. These walked over
+ the source and produced a TAGS file (in vim-compatible ctags or
+ Emacs-compatible etags format) that allows the relevant editors to
+ quickly navigate around function definitions.
+
+ ghc-tags trips over some of the CPP used in Hledger. The solution
+ is to provide ghc-tags with explicit CPP defines via a YAML file.
+ However, if a YAML file is provided, one also must specify the source
+ paths, as the tool XORs config file | paths-on-command-line.
+
+ See for more
+ information.
+ (Jonathan Dowland)
+
+### credits 1.31
+
+Simon Michael,
+Dmitry Astapov,
+Eric Mertens,
+Jay Neubrand,
+Jonathan Dowland.
+
+
+## 2023-06-02 hledger-1.30.1
+
+### hledger 1.30.1
+
+Fixes
+
+- Add missing files to Hackage release, making it buildable.
+
+Docs
+
+- Replace note about repeated options.
+
+## 2023-06-01 hledger-1.30
+
+**Boolean queries, easier CSV file management, built-in demos, hledger-ui cash accounts screen, fixes.**
+
+### hledger 1.30
+
+Breaking changes
+
+- The CSV reader now properly skips all empty lines, as specified by docs.
+ Previously, inner empty lines were not being skipped automatically.
+ You might need to adjust the `skip` count in some CSV rules files.
+ ([#2024])
+
+- Timedot format now generates a single multi-posting transaction per
+ date line, and supports comments and tags on all lines.
+ ([#1754])
+
+- Timeclock format now supports comments and tags.
+ Descriptions can no longer contain semicolons.
+ ([#1220])
+
+Features
+
+- CSV rules files can now be read directly, as in
+ `hledger -f foo.csv.rules CMD`. By default this will read data
+ from foo.csv in the same directory.
+
+- CSV rules files can use a new `source FILE` rule to specify the data file,
+ with some convenience features:
+
+ - If the data file does not exist, it is treated as empty, not an
+ error.
+
+ - If FILE is a relative path, it is relative to the rules file's
+ directory. If it is just a file name with no path, it is relative
+ to `~/Downloads/`.
+
+ - If FILE is a glob pattern, the most recently modified matched file
+ is used.
+
+ This helps remove some of the busywork of managing CSV downloads.
+ Most of your financial institutions's default CSV filenames are
+ different and can be recognised by a glob pattern. So you can put a
+ rule like `source Checking1*.csv` in foo-checking.csv.rules,
+ periodically download CSV from Foo's website accepting your browser's
+ defaults, and then run `hledger import checking.csv.rules` to import
+ any new transactions. The next time, if you have done no cleanup, your
+ browser will probably save it as something like Checking1-2.csv, and
+ hledger will still see that because of the * wild card. You can choose
+ whether to delete CSVs after import, or keep them for a while as
+ temporary backups, or archive them somewhere.
+ (Experimental)
+
+- The balance command has a new --count report type
+ which reports posting counts instead of amounts.
+
+- Full boolean queries, allowing arbitrary use of AND, OR, NOT
+ (case insensitive) and parentheses for grouping, are now supported.
+ For backward compatibility, these require an `expr:` prefix.
+ Existing queries work as before, and you can mix and match the
+ old and new styles if you like.
+ (Chris Lemaire)
+
+- demo: This new command plays brief asciinema screencasts explaining
+ various features and use cases. We will add more of these over time.
+ (Experimental)
+
+Improvements
+
+- Add-on commands can now have `.js`, `.lua`, or `.php` file extensions.
+
+- Generated and modified transactions and postings have the same hidden
+ tags (beginning with underscore) as before, but no longer have visible
+ tags added by default. Use `--verbose-tags` if you want them added.
+
+- We now try harder to ensure `less` (and its `more` mode) show our
+ ANSI formatting properly in help output.
+ If you use some other $PAGER, you may have to configure it yourself
+ to show ANSI (or disable ANSI entirely, eg by setting NO_COLOR=1).
+ This is now documented in hledger manual > Paging.
+ ([#2015])
+
+- The print command's `--match` mode has been refined.
+ Previously, similarity completely outweighed recency, so a
+ slightly-more-similar transaction would always be selected no matter
+ how old it was. Now similarity and recency are more balanced,
+ and it should produce the desired transaction more often.
+ There is also new debug output (at debug level 1) for troubleshooting.
+
+- Miscellaneous commands list updates.
+ Help has been added for all published add-on commands (like hledger-lots).
+
+- The help command's documentation now mentions an issue caused by
+ a too-old `info` program, as on mac.
+ ([#1770])
+
+Fixes
+
+- Unbalanced virtual postings with no amount always infer a zero amount.
+ This is fixing and clarifying the status quo; they always did this,
+ but print always showed them with no amount, even with -x, and
+ the behaviour was undocumented.
+
+- On windows systems with multiple drive letters, the commands list
+ could fail to show all installed add-ons.
+ ([#2040])
+
+- Balancing a transaction with a balance assignment now properly respects costs.
+ ([#2039])
+
+- The commands list no longer lists non-installed addons.
+ ([#2034])
+
+- Since hledger 1.25, "every Nth day of month" period rules with N > 28 could
+ be calculated wrongly by a couple of days when given certain forecast start dates.
+ Eg `~ every 31st day of month` with `--forecast='2023-03-30..'`.
+ This is now fixed.
+ ([#2032])
+
+- Postings are now processed in correct date order when inferring balance assignments.
+ ([#2025])
+
+- Posting comment lines no longer disrupt the underline position in error messages.
+ ([#1927])
+
+- Debug output is now formatted to fit the terminal width.
+
+Docs
+
+- Miscellaneous manual cleanups.
+
+- Rewrite introductory sections,
+ Date adjustment,
+ Directives,
+ Forecasting,
+ etc.
+
+- Add Paging section.
+
+- Remove archaic mentions of `setenv`.
+
+API
+
+- Renamed: Hledger.Cli.Commands: findCommand -> findBuiltinCommand
+
+### hledger-ui 1.30
+
+Features
+
+- A "Cash accounts" screen has been added, showing
+ accounts of the `Cash` type.
+
+Improvements
+
+- The top-level menu screen is now the default screen.
+ Power users can use the `--cash`/`--bs`/`--is`/`--all`
+ flags to start up in another screen.
+
+- "All accounts" screen has been moved to the bottom of the list.
+
+- Screens' help footers have been improved.
+
+Docs
+
+- The transaction screen's inability to update is now noted.
+
+- Miscellaneous manual cleanups.
+
+### hledger-web 1.30
+
+Fixes
+
+- A command line depth limit now works properly.
+ ([#1763])
+
+Docs
+
+- Miscellaneous manual cleanups.
+
+### project changes 1.30
+
+Scripts/addons
+
+- hledger-bar: new script for making simple bar charts in the terminal
+
+- hledger-install: also list cabal, stack, pip tool versions
+
+Examples
+
+- examples/csv: added a more up-to-date CSV makefile
+
+- examples/i18: Added sample top level account and type declarations in several languages
+
+Docs
+
+- A shorter, more example-heavy home page on the website.
+
+- Simplified website and FAQ structure.
+
+### credits 1.30
+
+Simon Michael,
+Chris Lemaire,
+Yehoshua Pesach Wallach.
+
+
+
+## 2023-04-07 hledger-1.29.2
+
+### hledger 1.29.2
+
+Breaking changes
+
+- 1.29's cleanup of the `close` command has been continued.
+ Here are all the changes to `close` since hledger 1.28:
+
+ - The default behaviour is now to print only one transaction: a closing transaction.
+
+ - To print both closing and opening transactions as before,
+ use the new `--migrate` flag.
+
+ - The accounts closed by default are now just the ALE accounts
+ (accounts declared or inferred as type `Asset`, `Liability`, or `Equity`).
+ If you don't have account types configured, or
+ to close some other set of accounts, provide query arguments that match them.
+ To close all accounts as before, use a `.` argument to match them all.
+
+ - To print a retain earnings transaction for RX accounts (accounts
+ of type `Revenue` or `Expense`), use the new `--retain` flag.
+
+ - The `equity` command alias, removed in 1.29, has been restored.
+
+ - The `--open-acct` option, removed in 1.29, has been restored.
+
+ - The `--closing` and `--opening` flags have been renamed to `--close` and `--open`.
+ (`--close` had been removed in 1.29 and is now restored.)
+
+ - The docs have been rewritten. Also the 1.29 release notes now mention
+ the breaking change.
+
+ - The command is marked experimental again.
+
+ ([#2020])
+
+Fixes
+
+- `type:` queries now "see through" account aliases and pivots,
+ as they did in hledger <1.27, and as `acct:` queries do.
+ ([#2018])
+
+- The corruption in 1.29's info manual is fixed. ([#2023])
+
+- The 1.29 release notes for periodic reports'/periodic transactions' start dates
+ have been improved. Also the hledger manual's "Date adjustment" section
+ has been corrected and clarified.
+
+### hledger-ui 1.29.2
+
+Improvements
+
+- A pager is used to show --help output when needed, as in `hledger`.
+
+Fixes
+
+- The corruption in 1.29's info manual is fixed. ([#2023])
+
+### hledger-web 1.29.2
+
+Improvements
+
+- A pager is used to show --help output when needed, as in `hledger`.
+
+Fixes
+
+- The corruption in 1.29's info manual is fixed. ([#2023])
+
+### project changes 1.29.2
+
+Scripts/addons
+
+- hledger-install: re-enable hledger-interest, hledger-iadd; add hledger-lots
+
+### credits 1.29.2
+
+Simon Michael
+
+
+## 2023-03-16 hledger-1.29.1
+
+### hledger 1.29.1
+
+Improvements
+
+- Hledger.Cli.Script now also exports
+
+ Control.Applicative
+ Control.Concurrent
+ Data.Char
+ Data.Functor
+ System.IO
+ System.IO.Error
+
+ and new string helpers
+
+ strip1Char
+ stripBy
+ strip1By
+
+- Allow building with GHC 9.6.1 ([#2011])
+
+Fixes
+
+- The stats report no longer displays "Exact" in front of dates. ([#2012])
+
+Docs
+
+- remove duplicate in `hledger close` docs (Yehoshua Pesach Wallach)
+
+### hledger-ui 1.29.1
+
+- Allow building with GHC 9.6.1 ([#2011])
+
+### hledger-web 1.29.1
+
+- Allow building with GHC 9.6.1 ([#2011])
+
+
+## 2023-03-11 hledger-1.29
+
+**Tag checking,
+flexible multi-period start dates,
+flexible cost/conversion posting combining,
+new commands list,
+hledger manual reorg,
+easier close command,
+10% more Ledger file compatible**
+
+### hledger 1.29
+
+Breaking changes
+
+- Weekly reports are no longer automatically adjusted to start on a
+ monday; in some cases you might need to adjust their start date to
+ preserve simple week headings (see below).
+
+Features
+
+- In journal format there is now a `tag` directive for declaring tag names,
+ and the check command now has a `tags` check to enforce use of declared tag names.
+
+- Periodic transactions and multi-period reports can now start on any date.
+ To enable this while still maintaining pretty good backward compatibility,
+ hledger now treats inferred dates, and dates where the day is unspecified,
+ as "flexible" (which can be automatically adjusted to interval boundaries),
+ and dates specified to the day as "exact" (which can not).
+ Eg:
+
+ - A periodic rule like `~ monthly from 2023-01-15` now works as
+ you'd expect instead of raising an error. This also improves
+ our ability to read Ledger files.
+
+ - Period options like `-p 'monthly from 2023/1/15'` or `-M -b 2023/1/15`
+ now start the report on exactly 1/15 instead of being adjusted to 1/1.
+
+ Note: periods using `in` may look partial but are considered to specify exact dates.
+ So weekly reports such as `-p 'weekly in 2023-01'`, which previously
+ were adjusted to start on a monday, will now start exactly on 2023-01-01.
+ This can also cause more verbose column headings.
+ To guarantee simple week headings, you must now start such reports
+ exactly on a monday, eg `-p 'weekly from 2022-12-26 to 2023-02'`.
+ ([#1982])
+
+- You can now freely combine @/@@ notation and conversion postings
+ in a single transaction. This can help readability, and also allows
+ more flexibility when recording cost. hledger will check that the
+ two notations are in agreement, and ignore the redundancy if they are.
+ (Conversion postings are postings to accounts with type `V`/`Conversion`
+ or name `equity:conversion`/`equity:trade`/`equity:trading`,
+ or subaccounts of these. See also COST.)
+
+Improvements
+
+- hledger's commands list has been reorganised for clarity.
+ More add-on commands are now recognised and categorised,
+ and unrecognised add-on commands are listed in a more compact
+ multi-column layout.
+ (Simon Michael, Michael Grünewald)
+
+- hledger's commands list and command line help now use ANSI (bold
+ headings) when supported.
+
+- hledger's commands list and command line help now use a pager
+ (respecting $PAGER) for long output except on MS Windows.
+
+- hledger's `--version` output no longer shows `+` for dev builds made
+ in dirty repos (it was buggy).
+
+- The add command's Description completions now also include payee names
+ (declared with `payee` or recorded in transactions with `|`),
+ not just full descriptions.
+
+- aregister now supports HTML output.
+ ([#1996]) (Jonathan Dowland)
+
+- aregister now shows a " (matching query)" hint in report title
+ when extra query args (other than date: or depth:) are used,
+ to reduce confusion.
+
+- close now has three modes, `--retain`/`--migrate`/`--open`,
+ clarifying its uses and providing more useful defaults.
+
+- register-match is now the `--match` mode of the register command.
+ (This command was used by ledger-autosync at one point; if you still
+ need it, hopefully `register --match` works similarly.)
+
+- print-unique has been dropped, because it doesn't
+ support print's options, it disorders same-day transactions, I don't
+ know of any users or use cases, and it could easily be recreated as
+ an addon script.
+
+- print's JSON output now also includes source positions for `--forecast` transactions.
+ (Chris Lemaire)
+
+- Journal format now allows the empty commodity symbol to be written
+ as `""`, so it's now possible to declare market prices for it:
+ `P 2022-01-01 "" $100`. This can be useful for timedot data.
+
+- Inferring costs from equity now happens after transaction balancing,
+ not before. As a result, `--infer-costs` now works in transactions
+ where an amount is left blank.
+
+- `account` declarations now reject parenthesised account names,
+ reducing confusion.
+ (Chris Lemaire)
+
+- Our journal reader now accepts more Ledger syntax, improving Ledger
+ file compatibility ([#1962]). We now test our ability to at least
+ read the sample journals from Ledger's baseline functional tests,
+ and our success rate has improved from 80% to 90% since 1.28.
+
+ - `since` is accepted as synonym of `from` in period expressions
+ - `apply year` and `year` are accepted as synonyms of `Y`
+ - `(lot notes)` in amounts and `((valuation expressions))` after amounts are now ignored
+ - directives
+ `A`, `assert`, `bucket`, `capture`, `check`, `define`,
+ `expr`, `eval`, `python`, `value`,
+ `apply fixed`, `apply tag`,
+ `end apply fixed`, `end apply tag`, `end apply year`
+ are now ignored
+ - subdirectives of `payee`, `tag`, and `commodity` (other than `format`) are now ignored
+ - `pop` directive is no longer supported
+
+- When reading CSV, we now check that assigned account names are valid (parseable).
+ ([#1978])
+
+Fixes
+
+- aregister now handles an extra account query correctly. ([#2007])
+
+- balance's `--help` now mentions `--layout=tidy`
+
+- Balance commands with `--layout=bare` now generate proper table
+ layout in HTML output.
+
+- register's `-w`/`--width` option no longer gives ugly parse error messages.
+
+- stats's `--help` no longer wrongly claims to support -O/--output-format.
+
+- Balance assignments with a cost now generate a correct balance assertion. ([#1965])
+
+- The CSV reader now properly skips header lines before attempting to parse records. ([#1967])
+
+Scripts/addons
+
+- Scripts can now use Hledger.Cli.Script, a convenient new prelude which
+ helps reduce import boilerplate. It currently re-exports:
+
+ Control.Monad
+ Data.Either
+ Data.List
+ Data.Maybe
+ Data.Ord
+ Data.Time
+ Text.Printf hiding (formatString)
+ Data.Text (Text, pack, unpack)
+ Safe hiding (at)
+ System.Directory
+ System.Environment
+ System.Exit
+ System.FilePath
+ System.Process
+ Hledger
+ Hledger.Cli
+ Hledger.Cli.Main (argsToCliOpts)
+
+ (Not much of Data.Text/Data.Text.IO because those need to be qualified.)
+
+Docs
+
+- chunk the hledger manual into parts, rename and rearrange sections for better structure/flow
+- add a cheatsheet demonstrating all the main journal features that I recommend
+- move a number of my not-so-recommended journal features into a less visible "Other syntax" section
+- add: payees/descriptions completion
+- areg: more advice on account-matching
+- bal: --budget: clarify use of print --forecast
+- bal: budget: compare with forecasting; add some tips
+- balance cleanups/reorder
+- check: adjacentconversionpostings was dropped
+- cli: balance: fix link to Budgeting page
+- cli: fix all links to Journal > Tags / Commands > tags
+- codes: improve example suggested by Rob Nielsen
+- csv, timeclock, timedot: clarify comment lines ([#1953])
+- csv: add new coinbase example
+- csv: clarify amount-in/amount-out docs ([#1970])
+- csv: clarify skip/valid csv semantics ([#1967])
+- csv: clarify valid CSV requirements and issues (fix [#1966])
+- csv: cleanup, reorder, CSV rules tips -> Working with CSV
+- csv: fix wrong if tables doc; rewrite several sections ([#1977])
+- csv: flatten, clean up CSV sections
+- csv: improve Amount field / Setting amounts
+- csv: note -in and -out are used together for one posting ([#1970])
+- csv: rules factoring tips
+- csv: try to clarify how CSV fields and hledger fields work
+- document --infer-market-prices with signed costs ([#1870])
+- fix duplicate market prices heading breaking info navigation
+- import: note a pitfall with multifile import
+- improve Directives summaries
+- introduction/input/output improvements
+- journal: cheatsheet: clarify date tag
+- journal: rewrite Account names, mention brackets/parentheses ([#1915])
+- mention pivoting on a tag with multiple values ([#1950])
+- more cost notation docs; describe Ledger and Beancount cost notation
+- more mention of posting order effect on inferring cost ([#1959])
+- period expressions doc updates
+- Removed redundant paragraph in documentation. (J. B. Rainsberger)
+- rename directive sections, fix many links
+- reorganise commands list, like the CLI
+- reorganise bin/README & the Scripts page, add entries for recent scripts
+- replace "transaction prices" terminology with "costs"
+- tags: discuss multi-values/overriding ([#1950])
+- update market price inference docs per sol
+- Updated section on pivoting. Used synonyms for "member" in cases where there could be confusion with the tag named "member." (Robert Nielsen)
+- use more standard and consistent boilerplate in hledger, ui, web man pages
+- virtual postings: improve wording per Robert Nielsen
+
+### hledger-ui 1.29
+
+- In the help dialog, mention that LEFT shows other screens.
+
+- In the manual, mention shift-up/down config needed for Terminal.app.
+
+### hledger-web 1.29
+
+- The add form's typeahead now shows non-ascii text correctly.
+ ([#1961]) (Arsen Arsenović)
+
+- In the manual, improve --base-url's description. ([#1562])
+
+### project changes 1.29
+
+Scripts/addons
+
+- hledger-script-example.hs: rename/cleanup
+- sortandmergepostings: new, sorts postings and merges duplicates (Caleb Maclennan, Murukesh Mohanan)
+- hledger-register-max: new, prints the posting with largest historical balance
+- hledger-git: record shows better error output, no longer force-adds ignored files
+- hledger-git: status is fixed, also shows diffs
+- hledger-git: add short command aliases r, s, l
+- hledger-git: -h is fixed
+- hledger-git: pass unrecognised commands to git
+- hledger-install: also install hledger-edit, hledger-plot
+- hledger-install: add support for installing python packages
+- hledger-install: show quieter stack/cabal output
+- hledger-install: align install status list
+- hledger-install: don't list hledger-install.sh in PATH
+- hledger-install: drop hledger-iadd for now https://github.com/hpdeifel/hledger-iadd/issues/71
+
+Docs
+
+- move most dev docs to doc/
+- Scripting hledger: move plugin types table here
+- Scripts: add hledger-plot, hledger-edit, hledger-fifo (Yann Büchau, Simon Michael)
+- update lots mockups, move to Mockups page
+- split Contributor Guide into Contributor Quick Start, LINKS, ISSUES
+- add REPOS, FILES, DECISIONS
+- CREDITS: updates, link to github contributors list
+
+Infrastructure
+
+- pr template: mention COMMITS page and prefix convention ([#1997])
+- make ghc 9.4 and current stackage nightly the default for dev builds
+- require megaparsec 9.3+ in dev builds, for its useful dbg tool
+- make site-watch: fix runaway recursion, be more verbose
+- new make rules: man-watch
+- new tools: ciwatch, push, pushdocs, gtree
+- misc process updates
+
+### credits 1.29
+
+Simon Michael, Chris Lemaire, Caleb Maclennan, Jonathan Dowland, J. B. Rainsberger, Michael Grünewald, Robert Nielsen, Yann Büchau.
+
+
+## 2022-12-01 hledger-1.28
+
+**new hledger-ui screens, better debug output;
+accounts, print, csv-reading improvements;
+new hledger-move, watchaccounts scripts**
+
+
+### hledger 1.28
+
+Features
+
+- The `accounts` command has new flags: `--undeclared` (show accounts used but not declared),
+ `--unused` (show accounts declared but not used), and `--find` (find the first account
+ matched by the first command argument, a convenience for scripts).
+ Also `-u` and `-d` short flags have been added for `--used` and `--declared`.
+
+- A new CSV rule `intra-day-reversed` helps generate transactions in correct order
+ with CSVs where records are reversed within each day.
+
+- CSV rules can now correctly convert CSV date-times with a implicit or explicit timezone
+ to dates in your local timezone. Previously, CSV date-times with a different time zone
+ from yours could convert to off-by-one dates, because the CSV's timezone was ignored.
+ Now,
+
+ 1. When a CSV has date-times with an implicit timezone different from yours,
+ you can use the `timezone` rule to declare it.
+
+ 2. CSV date-times with a known timezone (either declared by `timezone`
+ or parsed with `%Z`) will be localised to the system timezone
+ (or to the timezone set with the `TZ` environment variable).
+
+ ([#1936])
+
+Improvements
+
+- print --match now respects -o and -O.
+
+- print --match now returns a non-zero exit code when there is no acceptable match.
+
+- Support megaparsec 9.3. (Felix Yan)
+
+- Support GHC 9.4.
+
+Fixes
+
+- In CSV rules, when assigning a parenthesised account name to `accountN`,
+ extra whitespace is now ignored, allowing unbalanced postings to be detected correctly.
+
+Scripts/addons
+
+- bin/hledger-move helps record transfers involving subaccounts and costs,
+ eg when withdrawing some or all of an investment balance containing many lots and costs.
+
+- bin/hledger-git no longer uses the non-existent git record command.
+ ([#1942]) (Patrick Fiaux)
+
+- bin/watchaccounts is a small shell script for watching the account tree as you make changes.
+
+### hledger-ui 1.28
+
+Features
+
+- New "Balance sheet accounts" and "Income statement accounts" screens have been added,
+ along with a new top-level "Menu" screen for navigating between these and the
+ "All accounts" screen.
+
+- hledger-ui now starts in the "Balance sheet accounts" screen by default
+ (unless no asset/liability/equity accounts can be detected,
+ or command line account query arguments are provided).
+ This provides a more useful default view than the giant "All accounts" list.
+ Or, you can force a particular starting screen with the new --menu/--all/--bs/--is flags
+ (eg, `hledger-ui --all` to replicate the old behaviour).
+
+Improvements
+
+- The ENTER key is equivalent to RIGHT for navigation.
+
+- hledger-ui debug output is now always logged to ./hledger-ui.log rather than the console,
+ --debug with no argument is equivalent to --debug=1,
+ and debug output is much more informative.
+
+- Support GHC 9.4.
+
+- Support megaparsec 9.3 (Felix Yan)
+
+- Support (and require) brick 1.5, fsnotify 0.4.x.
+
+Fixes
+
+- Mouse-clicking in empty space below the last list item no longer navigates
+ back. It was too obtrusive, eg when you just want to focus the window.
+ You can still navigate back with the mouse by clicking the left edge of the window.
+
+- A possible bug with detecting change of date while in --watch mode has been fixed.
+
+API
+
+- hledger-ui's internal types have been changed to allow fewer invalid states\
+ and make it easier to develop and debug.
+ ([#1889], [#1919]).
+
+- Debug logging helpers have been added and cleaned up in Hledger.Ui.UIUtils:
+ dbgui
+ dbguiIO
+ dbguiEv
+ dbguiScreensEv
+ mapScreens
+ screenId
+ screenRegisterDescriptions
+
+### hledger-web 1.28
+
+Improvements
+
+- --debug with no argument is now equivalent to --debug=1.
+
+- Allow megaparsec 9.3 (Felix Yan)
+
+- Support GHC 9.4
+
+### project changes 1.28
+
+Docs
+
+- Miscellaneous improvements.
+
+Examples
+
+- Indian National Pension Service CSV rules (Pranesh Prakash)
+
+Infrastructure
+
+- make site-watch: switch from entr to watchexec.
+
+- make hoogle-setup, hoogle-serve: run a local hoogle on hledger code.
+
+- make man-watch-PROG: watch a hledger program's man page as source files change.
+
+### credits 1.28
+
+Simon Michael, Felix Yan, Patrick Fiaux.
+
+## 2022-09-18 hledger-1.27.1
+
+### hledger 1.27.1
+
+Fixes
+
+- Balance commands using `-T -O html` no longer fail with an error
+ when there is no data to report.
+ ([#1933])
+
+### hledger-ui 1.27.1
+
+- Uses hledger-1.27.1
+
+### hledger-web 1.27.1
+
+Fixes
+
+- The add form no longer gives an error when there is just a single file and no file field showing.
+ ([#1932])
+
+- Uses hledger-1.27.1
+
+
+## 2022-09-01 hledger-1.27
+
+**Infer costs from equity postings, new error checks, improved error messages, fixes.**
+
+
+### hledger 1.27
+
+Features
+
+- `hledger check recentassertions` (and flycheck-hledger in Emacs if
+ you enable this check) requires that all balance-asserted accounts
+ have a balance assertion within 7 days before their latest posting.
+
+ This helps remind you to not only record transactions, but also to
+ regularly check account balances against the real world, to catch
+ errors sooner and avoid a time-consuming hunt.
+
+- The --infer-costs general flag has been added, as the inverse
+ operation to --infer-equity. --infer-costs detects commodity
+ conversion transactions which have been written with equity
+ conversion postings (the traditional accounting notation) and adds
+ PTA cost notation (@@) to them (allowing cost reporting).
+ See https://hledger.org/hledger.html#equity-conversion-postings .
+ (Stephen Morgan)
+
+Improvements
+
+- Many error messages have been improved. Most error messages now use
+ a consistent, more informative format.
+ ([#1436])
+
+- The accounts command has a new --directives flag which makes it
+ show valid account directives which you can paste into a journal.
+
+- The accounts command has a new --positions flag which shows where
+ accounts were declared, useful for troubleshooting.
+ ([#1909])
+
+- Bump lower bounds for Diff and githash. (Andrew Lelechenko)
+
+- GHC 8.6 and 8.8 are no longer supported. Building hledger now
+ requires GHC 8.10 or greater.
+
+Fixes
+
+- Account display order is now calculated correctly even when accounts
+ are declared in multiple files.
+ ([#1909])
+
+- At --debug 5 and up, account declarations info is logged.
+ ([#1909])
+
+- hledger aregister and hledger-ui now show transactions correctly
+ when there is a type: query.
+ ([#1905])
+
+- bal: Allow cumulative gain and valuechange reports.
+ Previously, --cumulative with --gain or --valuechange would produce an
+ empty report. This fixes this issue to produce a reasonable report.
+ (Stephen Morgan)
+
+- bal: budget goal amounts now respect -c styles (fixes [#1907])
+
+- bal: budget goals now respect -H ([#1879])
+
+- bal: budget goals were ignoring rule-specified start date
+
+- cf/bs/is: Fixed non-display of child accounts when there is an
+ intervening account of another type.
+ ([#1921]) (Stephen Morgan)
+
+- roi: make sure empty cashflows are skipped when determining first cashflow (Charlotte Van Petegem)
+ Empty cashflows are added when the begin date of the report is before the first
+ transaction.
+
+Scripts/addons
+
+- https://hledger.org/scripts.html - an overview of scripts and addons in bin/.
+
+- paypaljson, paypaljson2csv - download txns from paypal API
+
+- hledger-check-postable.hs - check that no postings are made to accounts with a postable:(n|no) tag
+
+- hledger-addon-example.hs - script template
+
+### hledger-ui 1.27
+
+Improvements
+
+- At --debug=2 and up, log debug output to ./debug.log.
+
+- Use/require brick 1.0+. ([#1889])
+
+- Use hledger 1.27
+
+### hledger-web 1.27
+
+Improvements
+
+- Improve the add form's layout and space usage.
+
+- Pre-fill the add form's date field.
+
+- Highlight today in the add form's date picker.
+
+- Focus the add form's description field by default.
+
+- Allow an empty description in the add form.
+
+- Use hledger 1.27
+
+Fixes
+
+- Respect the add form's file selector again.
+ (Simon Michael, Kerstin, [#1229])
+
+### project changes 1.27
+
+Docs
+
+- https://hledger.org/ERRORS.html - an overview of hledger's error messages.
+
+- Rewrite/consolidate cost and conversion docs.
+
+- New template for github releases, with improved install instructions for binaries.
+
+- Add modern windows binary install instructions. (Lazar Lazarov, Simon Michael)
+
+- Fix tables of contents in developer documentation. (Alex Hirzel)
+
+- Update ACHIEVEMENTS. (Alex Hirzel)
+
+- Corrected the extension for the CREDITS file. (Pranesh Prakash)
+
+- Fix broken link in bin/README.md. (David D Lowe)
+
+Examples
+
+- Add example for capital one credit cards CSV. (max thomas)
+
+Process
+
+- Revive github projects, set up http://projects.hledger.org shortcut url
+
+- Many cleanups and improvements to the CI test and binary-generating
+ github actions. The CI tests for master now also include
+ hledger-lib's doctests.
+
+- All packages now disallow name shadowing in their code.
+
+- make scc gives a modern report of code line counts.
+
+- make ghci-unit-test loads hledger-lib unit tests in GHCI.
+
+### credits 1.27
+
+Simon Michael,
+Stephen Morgan,
+Alex Hirzel,
+Pranesh Prakash,
+David D Lowe,
+Charlotte Van Petegem,
+Max Thomas,
+Andrew Lelechenko.
+
+
+## 2022-07-11 hledger-1.26.1
+
+### hledger 1.26.1
+
+- require safe 0.3.19+ to avoid deprecation warning
+
+### hledger-ui 1.26.1
+
+- support doclayout 0.4, brick 0.72+
+
+- require safe 0.3.19+ to avoid deprecation warning
+
+## 2022-06-04 hledger-1.26
+
+**Miscellaneous improvements.**
+
+
+### hledger 1.26
+
+Improvements
+
+- `register` and `aregister` have been made faster, by
+
+ - considering only the first 1000 items for choosing column
+ widths. You can restore the old behaviour (guaranteed alignment
+ across all items) with the new `--align-all` flag.
+ ([#1839]](https://github.com/simonmichael/hledger/issues/1839), Stephen Morgan)
+
+ - discarding cost data more aggressively, giving big speedups for
+ large journals with many costs.
+ ([#1828](https://github.com/simonmichael/hledger/issues/1828), Stephen Morgan)
+
+- Most error messages from the journal reader and the `check` command now use
+ a consistent layout, with an "Error:" prefix, line and column numbers,
+ and an excerpt highlighting the problem. Work in progress.
+ ([#1436](https://github.com/simonmichael/hledger/issues/1436)) (Simon Michael, Stephen Morgan)
+
+- `hledger check ordereddates` now always checks all transactions
+ (previously it could be restricted by query arguments).
+
+- The `--pivot` option now supports a `status` argument, to pivot on transaction status.
+
+- Update bash completions (Jakob Schöttl)
+
+Fixes
+
+- Value reports with `--date2` and a report interval (like `hledger bal -VM --date2`)
+ were failing with a "expected all spans to have an end date" error since 1.22;
+ this is now fixed.
+ ([#1851](https://github.com/simonmichael/hledger/issues/1851), Stephen Morgan)
+
+- In CSV rules, interpolation of a non-existent field like `%999` or `%nosuchfield`
+ is now ignored (previously it inserted that literal text).
+ Note this means such an error will not be reported;
+ Simon chose this as the more convenient behaviour when converting CSV.
+ Experimental.
+ ([#1803](https://github.com/simonmichael/hledger/issues/1803), [#1814](https://github.com/simonmichael/hledger/issues/1814)) (Stephen Morgan)
+
+- `--infer-market-price` was inferring a negative price when selling.
+ ([#1813](https://github.com/simonmichael/hledger/issues/1813), Stephen Morgan)
+
+- Allow an escaped forward slash in regular expression account aliases.
+ ([#982](https://github.com/simonmichael/hledger/issues/982), Stephen Morgan)
+
+- The `tags` command now also lists tags from unused account declarations.
+ It also has improved command-line help layout.
+ ([#1857](https://github.com/simonmichael/hledger/issues/1857))
+
+- `hledger accounts` now shows its debug output at a more appropriate level (4).
+
+### hledger-ui 1.26
+
+- Uses hledger 1.26.
+
+### hledger-web 1.26
+
+Fixes
+
+- Don't add link URLs when printing.
+
+Improvements
+
+- Now builds with GHC 9.2.
+
+- Uses hledger 1.26.
+
+### project changes 1.26
+
+Scripts/addons
+
+- renamed hledger-number.sh to hledger-simplebal
+
+- added hledger-git, hledger-pijul
+
+- fin (and bin) scripts show available scripts and their help
+
+- renamed aliases.sh to bashrc
+
+- Get hledger-print-location working. (Stephen Morgan)
+
+Docs
+
+- README cleanup, inspired by feedback from README reviewer Lars Wirzenius.
+
+- Clearer sponsoring info and more complete sponsor lists on website and README.
+
+- The new repo
+ keeps track of our public finances (on Open Collective, Liberapay etc.)
+
+Examples
+
+- invoice: calculate dates accurately on last days of month
+
+Process
+
+- Stackage nightly and GHC 9.2 are now the default for dev builds.
+
+- CI workflows:
+
+ - Workflows and binaries have more consistent naming, mentioning platform and architecture.
+ - The main test workflow is now `linux-x64-test`, replacing `push` and `pull`.
+ It runs for both pushes and pull requests, and generates binaries on every run.
+ - Pushes/merges to master, including Simon's, are required to have passed
+ `linux-x64-test` on another github branch first.
+ - Mac and Windows binaries are now stripped also (if applicable).
+
+- `make buildtimes`, `make buildtimes-cabal` show GHC codegen times.
+
+### credits 1.26
+
+Simon Michael,
+Stephen Morgan,
+Jakob Schöttl,
+Patrik Keller.
+
+
+## 2022-03-04 hledger 1.25
+
+**Account type and tag querying,
+infer equity postings from @ notation,
+easily-consumed "tidy" CSV output**
+
+
+### hledger 1.25
+
+Breaking changes
+
+- Journal format's `account NAME TYPECODE` syntax, deprecated in 1.13, has been dropped.
+ Please use `account NAME ; type:TYPECODE` instead.
+ (Stephen Morgan)
+
+- The rule for auto-detecting "cash" (liquid asset) accounts in the `cashflow` report
+ has changed: it's now "all accounts under a top-level `asset` account, with
+ `cash`, `bank`, `checking` or `saving` in their name" (case insensitive, variations allowed).
+ So if you see a change in your `cashflow` reports, you might need to add
+ `account` directives with `type:C` tags, declaring your top-most cash accounts.
+
+Features
+
+- The new `type:TYPECODES` query matches accounts by their accounting type.
+ Account types are declared with a `type:` tag in account directives,
+ or inferred from common english account names, or inherited from parent accounts,
+ as described at [Declaring accounts > Account types].
+ This generalises the account type detection of `balancesheet`, `incomestatement` etc.,
+ so you can now select accounts by type without needing fragile account name regexps.
+ Also, the `accounts` command has a new `--types` flag to show account types.
+ Eg:
+
+ hledger bal type:AL # balance report showing assets and liabilities
+ hledger reg type:x # register of all expenses
+ hledger acc --types # list accounts and their types
+
+ ([#1820](https://github.com/simonmichael/hledger/issues/1820),
+ [#1822](https://github.com/simonmichael/hledger/issues/1822))
+ (Simon Michael, Stephen Morgan)
+
+- The `tag:` query can now also match account tags, as defined in account directives.
+ Subaccounts inherit tags from their parents.
+ Accounts, postings and transactions can be filtered by account tag.
+ ([#1817](https://github.com/simonmichael/hledger/issues/1817))
+
+- The new `--infer-equity` flag replaces the `@`/`@@` price notation in commodity
+ conversion transactions with more correct equity postings (when not using `-B/--cost`).
+ This makes these transactions fully balanced, and preserves the accounting equation.
+ For example:
+
+ 2000-01-01
+ a 1 AAA @@ 2 BBB
+ b -2 BBB
+
+ $ hledger print --infer-equity
+ 2000-01-01
+ a 1 AAA
+ equity:conversion:AAA-BBB:AAA -1 AAA
+ equity:conversion:AAA-BBB:BBB 2 BBB
+ b -2 BBB
+
+
+ `equity:conversion` is the account used by default. To use a different account,
+ declare it with an account directive and the new `V` (`Conversion`) account type.
+ Eg:
+
+ account Equity:Trading ; type:V
+
+ ([#1554](https://github.com/simonmichael/hledger/issues/1554)) (Stephen Morgan, Simon Michael)
+
+- Balance commands (`bal`, `bs` etc.) can now generate easy-to-process "tidy" CSV data
+ with `-O csv --layout tidy`.
+ In tidy data, every variable is a column and each row represents a single data point
+ (cf ).
+ ([#1768](https://github.com/simonmichael/hledger/issues/1768),
+ [#1773](https://github.com/simonmichael/hledger/issues/1773),
+ [#1775](https://github.com/simonmichael/hledger/issues/1775))
+ (Stephen Morgan)
+
+Improvements
+
+- Strict mode (`-s/--strict`) now also checks periodic transactions (`--forecast`)
+ and auto postings (`--auto`).
+ ([#1810](https://github.com/simonmichael/hledger/issues/1810)) (Stephen Morgan)
+
+- `hledger check commodities` now always accepts zero amounts which have no commodity symbol.
+ ([#1767](https://github.com/simonmichael/hledger/issues/1767)) (Stephen Morgan)
+
+- Relative [smart dates](hledger.md#smart-dates) may now specify an arbitrary number of some period into the future or past).
+ Some examples:
+ - `in 5 days`
+ - `in -6 months`
+ - `5 weeks ahead`
+ - `2 quarters ago`
+
+ (Stephen Morgan)
+
+- CSV output now always disables digit group marks (eg, thousands separators),
+ making it more machine readable by default.
+ ([#1771](https://github.com/simonmichael/hledger/issues/1771)) (Stephen Morgan)
+
+- Unicode may now be used in field names/references in CSV rules files.
+ ([#1809](https://github.com/simonmichael/hledger/issues/1809)) (Stephen Morgan)
+
+- Error messages improved:
+ - Balance assignments
+ - aregister
+ - Command line parsing (less "user error")
+
+Fixes
+
+- `--layout=bare` no longer shows a commodity symbol for zero amounts.
+ ([#1789](https://github.com/simonmichael/hledger/issues/1789)) (Stephen Morgan)
+
+- `balance --budget` no longer elides boring parents of unbudgeted accounts
+ if they have a budget.
+ ([#1800](https://github.com/simonmichael/hledger/issues/1800)) (Stephen Morgan)
+
+- `roi` now reports TWR correctly
+
+ - when there are several PnL changes occurring on a single day
+ - and also when investment is fully sold/withdrawn/discounted at the end of a particular reporting period.
+
+ ([#1791](https://github.com/simonmichael/hledger/issues/1791)) (Dmitry Astapov)
+
+Documentation
+
+- There is a new CONVERSION & COST section, replacing COSTING.
+ ([#1554](https://github.com/simonmichael/hledger/issues/1554))
+
+- Some problematic interactions of account aliases with other features have been noted.
+ ([#1788](https://github.com/simonmichael/hledger/issues/1788))
+
+- Updated: [Declaring accounts > Account types](https://hledger.org/hledger.html#account-types)
+
+### hledger-ui 1.25
+
+- Uses hledger 1.25.
+
+### hledger-web 1.25
+
+- Uses hledger 1.25.
+
+### project changes 1.25
+
+Scripts/addons
+
+- hledger-install.sh now also installs Pavan Rikhi's hledger-stockquotes tool.
+
+- The bin/hledger-number addon was added.
+
+- The bin/hledger-check-fancyassertions addon now shows docs in --help.
+
+- A new invoice-making script was added: examples/invoicing/invoice-script/invoice
+
+Process/tools
+
+- The RELEASING doc and release process has been updated,
+ and a new helper script added: tools/releaseprep.
+ `make hackageupload` now only works from a branch named
+ VERSION-branch or VERSION-release. Ie, making releases from master
+ is no longer allowed, a release branch is always required,
+
+- CI: The commitlint check is more robust, and now runs only in
+ the push to master and pull request workflows, and not eg when
+ building release binaries. linux-x64 binaries are now built
+ with ghc 9.0, not 8.10. Workflow, branch, and binary names
+ have been improved.
+
+- `make ghci-ui`/`make ghcid-ui` now use older ghc 8.10 to avoid
+ ghc 9.0-triggered failures.
+
+- hls support: The hie.yaml added to help hls work on mac m1
+ has been moved out of the way, since it probably makes things worse
+ on other architectures.
+
+### credits 1.25
+
+Simon Michael,
+Stephen Morgan,
+Dmitry Astapov,
+Patrik Keller.
+
+
+## 2021-12-10 hledger-1.24.1
+
+### hledger 1.24.1
+
+Fixes
+
+- `balance --declared` is now filtered correctly by a `not:ACCT` query.
+ ([#1783](https://github.com/simonmichael/hledger/issues/1783))
+
+- More reliable --version output, with commit date and without patch level.
+
+### hledger-ui 1.24.1
+
+Fixes
+
+- An extra "root" account is no longer shown (a regression in 1.24).
+ ([#1782](https://github.com/simonmichael/hledger/issues/1782))
+
+- Declared accounts are now filtered correctly by a not:ACCT query.
+ ([#1783](https://github.com/simonmichael/hledger/issues/1783))
+
+- More reliable --version output, with commit date and without patch level.
+
+### hledger-web 1.24.1
+
+Fixes
+
+- More reliable --version output, with commit date and without patch level.
+
+
+## 2021-12-01 hledger-1.24
+
+**New report layout options with less eliding,
+hledger-ui mouse support,
+misc fixes and improvements.**
+
+
+### hledger 1.24
+
+Features
+
+- balance commands provide more control over how multicommodity amounts
+ are displayed. (And they no longer elide too-wide amounts by default.)
+ The --commodity-column flag has been deprecated and replaced by a new
+ --layout option, with three values:
+
+ - wide (the default, shows amounts on one line unelided, like older hledger versions)
+ - tall (a new display mode, shows one amount per line)
+ - bare (like the old --commodity-columm, shows one commodity per line with symbols in their own column)
+
+ (Stephen Morgan)
+
+- The balance commands have a new `--declared` flag, causing them to
+ include leaf (ie, non-parent) accounts declared by account directives,
+ even if they contain no transactions yet. Together with `-E`, this shows
+ a balance for both used and declared accounts.
+ The idea is to be able to see a useful "complete" balance report, even
+ when you don't have transactions in all of your declared accounts yet.
+ ([#1765](https://github.com/simonmichael/hledger/issues/1765))
+
+- journal files now support a `decimal-mark` directive as a more
+ principled way (than `commodity` directives) to specify the decimal character
+ in use in that file, to ensure accurate number parsing.
+ ([#1670](https://github.com/simonmichael/hledger/issues/1670), Lawrence Wu)
+
+Improvements
+
+- The stats command now shows rough but useful performance stats: run
+ time and processing speed in transactions per second.
+
+- balance: support the --related flag, like register, showing the
+ other postings from the transactions. ([#1469](https://github.com/simonmichael/hledger/issues/1469), Stephen Morgan)
+
+- roi now uses posting dates when available, and honors the --date2
+ flag. This will not change the results computed for the typical
+ use-case, it just makes "roi" more thorough/consistent.
+ (Dmitry Astapov)
+
+- aregister now shows transactions' secondary date if the --date2 flag is used.
+ ([#1731](https://github.com/simonmichael/hledger/issues/1731))
+
+- timedot: a D default commodity (and style) declared in a parent
+ journal file will now be applied to timedot amounts. This means they
+ can be priced and valued/converted.
+
+- cli: The --pretty and --forecast options can now be written after the
+ command name, like other general options.
+ (Stephen Morgan)
+
+- register -V -H with no interval now values at report end date, like balance.
+ ([#1718](https://github.com/simonmichael/hledger/issues/1718), Stephen Morgan)
+
+- Allow megaparsec 9.2.
+
+- Drop the base-compat-batteries dependency. (Stephen Morgan)
+
+Fixes
+
+- prices: Do not include zero amounts when calculating amounts for balance assignments.
+ This is not usually a problem, but can get in the way of auto-inferring prices.
+ ([#1736](https://github.com/simonmichael/hledger/issues/1736), Stephen Morgan)
+
+- csv: Successfully parse an empty csv file.
+ ([#1183](https://github.com/simonmichael/hledger/issues/1183), Stephen Morgan)
+
+- balance: Balance reports with --depth=0 properly report aggregated
+ values, not zero everywhere.
+ ([#1761](https://github.com/simonmichael/hledger/issues/1761), Stephen Morgan)
+
+- prices: Do not try to generate prices when there would be a zero
+ denominator. Also correctly generate reverse prices for zero
+ amounts. (Stephen Morgan)
+
+- csv: Allow both amount-in and amount-out fields to contain a zero.
+ ([#1733](https://github.com/simonmichael/hledger/issues/1733), Stephen Morgan)
+
+- balance: Balance reports should consider date: queries when
+ calculating report span with --date2.
+ ([#1745](https://github.com/simonmichael/hledger/issues/1745), Stephen Morgan)
+
+- print: auto: The print command should always display inferred
+ amounts for --auto generated postings.
+ ([#1276](https://github.com/simonmichael/hledger/issues/1276), Stephen Morgan)
+
+### hledger-ui 1.24
+
+Features
+
+- hledger-ui can now be controlled with mouse or touchpad.
+ Click to enter things, click left margin or bottom blank area to return to
+ previous screen, and use mouse wheel / swipe to scroll.
+
+- In addition to accounts with postings, hledger-ui now also shows
+ declared accounts, even if they are empty (just leaf accounts, not
+ parents). The idea is to show a useful list of accounts out of the
+ box, when all you have is a starter file with account declarations.
+
+Improvements
+
+- The `Z` key for toggling display of zeroes is now the easier lower-case `z`.
+
+- The `--watch` feature now has a convenient short flag, `-w`.
+
+- Drop the base-compat-batteries dependency. (Stephen Morgan)
+
+- Allow megaparsec 9.2
+
+Fixes
+
+- When an invalid regular expression is entered at the `/` (filter) prompt,
+ we now display an error instead of silently ignoring it.
+ ([#1394](https://github.com/simonmichael/hledger/issues/1394), Stephen Morgan)
+
+- Entering the register screen now always positions the selection mid-screen.
+ Previously it would be at bottom of screen on the first entry.
+
+- Report layout in the terminal is now robust with more kinds of wide
+ characters, such as emoji.
+ ([#895](https://github.com/simonmichael/hledger/issues/895), Stephen Morgan)
+
+### hledger-web 1.24
+
+Improvements
+
+- Allow megaparsec 9.2
+
+### project changes 1.24
+
+Software
+
+- bin/hledger-check-fancyassertions.hs: fix ugly assertion parse errors.
+ (ShrykeWindgrace)
+
+- bin/hledger-check-tagfiles.hs: Update description, clarify wording.
+ (Pranesh Prakash)
+
+Docs
+
+- Account types: prioritise the short one-letter names, hide the deprecated
+ legacy syntax.
+
+- Directives: a more compact and accurate overview.
+
+- examples/templates/basic: A new starter file set, and a place to collect them.
+
+- Expose more developer docs as separate web pages:
+ CHANGELOGS, COMMITS, RELEASING, etc.
+
+- Fix a link to developer workflows. (Joaquin "Florius" Azcarate)
+
+Process
+
+- PR template: Fix our github PR template to use proper comment syntax,
+ and link to more relevant docs.
+ (toonn)
+
+- cabal.project: Drop obsolete compatibility comment.
+ ([#1365](https://github.com/simonmichael/hledger/issues/1365), toonn)
+
+- Bump default stackage snapshot to one avoiding buggy happy version.
+
+- bin/changelog: a new helper making changelog edits more pleasant.
+
+- make throughput{,-dev,-EXE}: reports transactions per second for a range of
+ file sizes with the hledger in PATH, hledger dev build, or named hledger
+ executable.
+
+- make install-as-FOO: build executables and save as bin/hledger*-FOO
+
+- perf: bench-ledger.sh for comparative benchmarking with Ledger.
+
+- CI: commitlint: be more forgiving when we can't figure out recent commits
+ (don't check any).
+
+- CI: commitlint: recognise any commit starting with ‘Merge’ as a merge commit
+ (and ignore it). (Stephen Morgan)
+
+### credits 1.24
+
+Simon Michael,
+Stephen Morgan,
+toonn,
+Pranesh Prakash,
+Dmitry Astapov,
+ShrykeWindgrace,
+Joaquin Azcarate,
+Lawrence Wu.
+
+
+## 2021-09-21 hledger-1.23
+
+**Capital gains report,
+separate symbol/number display,
+command line commodity styling,
+budget selection,
+weekday/weekend recurrence,
+10% speedup,
+fixes.**
+
+
+### project changes 1.23
+
+Software:
+
+- The bin/hledger-check-fancyassertions.hs addon script,
+ allowing more complex balance assertions, works again.
+ (#1464, Stephen Morgan)
+
+- Many code cleanups suggested by hlint (Stephen Morgan)
+
+Docs:
+
+- Added a public BACKLOG.org to the hledger repo and website.
+
+- Website updates:
+
+ - Reorganised site content.
+ - Improved page tables of contents.
+ - Content fixes.
+ - New docs:
+ Currency conversion.
+ hledger and Beancount/GnuCash/Ledger/Quicken.
+
+- New examples: systemd and nginx configs for hledger-web (Alan Young)
+
+Tools/process:
+
+- `make site-watch` works again
+
+- `make list-commits` and `make showauthors` show those things.
+
+- `Shake cabalfiles` now uses (and requires) hpack in $PATH, to avoid building.
+ It should be the version that's in the current stack release, to avoid commit conflicts.
+
+- shake: changelogs: A leading semicolon now means
+ "skip most CI steps", not "omit from changelog".
+
+- ci: most steps are skipped if commit message begins with ;.
+
+- hledger developers now use GHC 9.0/stackage nightly by default. (#1503)
+
+- Our doctests are disabled with GHC 9 for now to work around an
+ upstream bug.
+ ([#1503](https://github.com/simonmichael/hledger/issues/1503),
+ [#1615](https://github.com/simonmichael/hledger/issues/1615))
+
+- tools/commitlint is a new tool for hledger developers which checks and
+ describes new commit conventions which simplify maintenance of
+ change docs and releasing. It can be run locally while developing,
+ manually or as a pre-commit hook
+ (`ln -sf ../../bin/commitling .git/hooks/commit-msg`),
+ and is also run by our CI workflows to check pull requests.
+ ,
+ [tools/commitlint](https://github.com/simonmichael/hledger/blob/master/tools/commitlint)
+ (#1602)
+
+### hledger 1.23
+
+Features
+
+- The balance command has a new `--gain` report type, showing
+ unrealised capital gains/losses. Essentially, this is the difference
+ between the amounts' costs and their total present value. More
+ precisely, between the value of the amounts' costs and the value of
+ the amounts on the valuation date(s). (Ie, you can report gain in a
+ different currency.)
+ ([#1623](https://github.com/simonmichael/hledger/issues/1623),
+ [#1432](https://github.com/simonmichael/hledger/issues/1432),
+ Stephen Morgan, Charlotte Van Petegem)
+
+- The new `-c/--commodity-style` option makes it easy to override
+ commodity display styles at runtime, eg to adjust the number of
+ decimal places or change the position of the symbol.
+ ([#1593](https://github.com/simonmichael/hledger/issues/1593), Arjen Langebaerd)
+
+- The balance commands have a new `--commodity-column` flag that
+ displays commodity symbols in a dedicated column, showing one line
+ per commodity and all amounts as bare numbers.
+ ([#1559](https://github.com/simonmichael/hledger/issues/1559),
+ [#1626](https://github.com/simonmichael/hledger/issues/1626),
+ [#1654](https://github.com/simonmichael/hledger/issues/1654),
+ Lawrence Wu, Simon Michael, Stephen Morgan)
+
+- The `balance --budget` option can now take an argument,
+ a case insensitive description substring which selects a subset of
+ the journal's periodic transactions for setting budget goals.
+ This makes it possible to keep multiple named budgets in one journal,
+ and select the one you want with --budget's argument.
+ ([#1612](https://github.com/simonmichael/hledger/issues/1612))
+
+- Period expressions now support `every weekday`, `every weekendday` and
+ `every mon,wed,...` (multiple days of the week).
+ This is intended for periodic transaction rules used with
+ `--forecast` (or `bal --budget`).
+ ([#1632](https://github.com/simonmichael/hledger/issues/1632), Lawrence Wu)
+
+- The new `--today=DATE` option allows overriding today's date. This
+ can be useful in tests and examples using relative dates, to make
+ them reproducible.
+ ([#1674](https://github.com/simonmichael/hledger/issues/1674), Stephen Morgan)
+
+- In CSV rules, multi-line comments are now supported. Newlines in CSV
+ data are preserved, or newlines can be added by writing `\n` when
+ assigning to `comment`, `comment1` etc.
+ (Malte Brandy)
+
+Improvements
+
+- Incremental performance improvements; hledger 1.23 is the fastest
+ hledger yet, about 10% faster than 1.22.
+ (Stephen Morgan)
+
+- `register` no longer slows down when there are many report intervals.
+ ([#1683](https://github.com/simonmichael/hledger/issues/1683), Stephen Morgan)
+
+- Numbers in SQL output now always use decimal period (`.`),
+ independent of commodity display styles.
+ (Stephen Morgan)
+
+- `--sort` now gives a more intuitive sort oder when there are
+ multiple commodities. Negative numbers in one commodity are always
+ less than positive numbers in another commodity.
+ ([#1563](https://github.com/simonmichael/hledger/issues/1563), Stephen Morgan)
+
+- `--infer-market-price` has been renamed to `--infer-market-prices`.
+ (The old spelling still works, since we accept flag prefixes.)
+
+- Our pretty-printed JSON now orders object attributes alphabetically,
+ across all GHC and haskell lib versions.
+
+- register with a report interval starting on custom dates
+ (eg: `hledger reg -p "every 15th day of month") now makes the
+ date column wide enough to show the start and end dates.
+ It also wastes less whitespace after the column.
+ ([#1655](https://github.com/simonmichael/hledger/issues/1655), Stephen Morgan)
+
+- In JSON output, object attributes are now ordered alphabetically,
+ consistently for all GHC and haskell lib versions.
+ ([#1618](https://github.com/simonmichael/hledger/issues/1618), Stephen Morgan)
+
+- JSON output now indents with 2 spaces rather than 4.
+ (Stephen Morgan)
+
+- The balance commands' `-S/--sort-amount` flag now behaves more
+ predictably and intuitively with multiple commodities.
+ Multi-commodity amounts are sorted by comparing their amounts in
+ each commodity, with alphabetically-first commodity symbols being
+ most significant, and assuming zero when a commodity is missing.
+ ([#1563](https://github.com/simonmichael/hledger/issues/1563),
+ [#1564](https://github.com/simonmichael/hledger/issues/1564), Stephen Morgan)
+
+- The close command now uses the later of today or journal's last day
+ as default closing date, providing more intuitive behaviour when
+ closing a journal with future transactions. Docs have been improved.
+ ([#1604](https://github.com/simonmichael/hledger/issues/1604))
+
+- Rules for selecting the forecast period (within with --forecast
+ generates transactions) have been tweaked slightly, and
+ some disagreement between docs and implementation has been fixed.
+ Now, the forecast period begins on:
+ - the start date supplied to the `--forecast` argument, if any
+ - otherwise, the later of
+ - the report start date if specified with -b/-p/date:
+ - the day after the latest normal (non-periodic) transaction in the journal, if any
+ - otherwise today.
+
+ It ends on:
+ - the end date supplied to the `--forecast` argument, if any
+ - otherwise the report end date if specified with -e/-p/date:
+ - otherwise 180 days (6 months) from today.
+
+ This is more intuitive in some cases. (Eg:
+ `hledger reg --forecast -b 2020-01-01` on a journal containing
+ only periodic transaction rules now shows forecast transactions
+ starting from 2020-01-01, rather than from today.)
+ ([#1648](https://github.com/simonmichael/hledger/issues/1648),
+ [#1665](https://github.com/simonmichael/hledger/issues/1665),
+ [#1667](https://github.com/simonmichael/hledger/issues/1667),
+ Stephen Morgan, Simon Michael)
+
+- Require base >=4.11, prevent red squares on Hackage's build matrix.
+ (We officially support GHC 8.6+, which means base 4.12,
+ but Hackage shows all packages building successfully with
+ base 4.11/GHC 8.4+ somehow, so it's still allowed..)
+
+Fixes
+
+- A rare bug causing incorrect balances to be reported by the
+ cf/bs/bse/is commands, since hledger 1.19, has been fixed.
+ (cf/bs/bse/is with --tree --no-elide --begin DATE and certain
+ account directives could show wrong balances).
+ ([#1698](https://github.com/simonmichael/hledger/issues/1698), Stephen Morgan)
+
+- aregister now aligns multicommodity amounts properly (broken since 1.21).
+ ([#1656](https://github.com/simonmichael/hledger/issues/1656), Stephen Morgan)
+
+- `balance -E` (and hledger-ui Z) now correctly show zero parent accounts,
+ fixing a bug introduced in hledger 1.19.
+ ([#1688](https://github.com/simonmichael/hledger/issues/1688), Stephen Morgan)
+
+- The `roi` command no longer gives an ugly error in a certain case
+ with PnL applied on the first day of investment. (Dmitry Astapov)
+
+- `--forecast` now generates transactions up to the day before the
+ specified report end date (instead of two days before).
+ ([#1633](https://github.com/simonmichael/hledger/issues/1633), Stephen Morgan)
+
+- Certain errors in CSV conversion, such as a failing balance assertion,
+ were always being reported as line 2.
+
+### hledger-ui 1.23
+
+Improvements
+
+- Depend on hledger 1.23.
+
+- Require base >=4.11, prevent red squares on Hackage's build matrix.
+
+### hledger-web 1.23
+
+Improvements
+
+- Drop the obsolete hidden `--binary-filename` flag.
+
+- Depend on hledger 1.23.
+
+- Require base >=4.11, preventing red squares on Hackage's build matrix.
+
+Fixes
+
+- Toggle showing zero items properly even when called with --empty.
+ ([#1237](https://github.com/simonmichael/hledger/issues/1237), Stephen Morgan)
+
+- Do not hide empty accounts if they have non-empty subaccounts.
+ ([#1237](https://github.com/simonmichael/hledger/issues/1237), Stephen Morgan)
+
+- Allow unbalanced postings (parenthesised account name) in the add transaction form.
+ ([#1058](https://github.com/simonmichael/hledger/issues/1058), Stephen Morgan)
+
+- An XSS (cross-site scripting) vulnerability has been fixed.
+ Previously (since hledger-web 0.24), javascript code could be added
+ to any autocompleteable field and could be executed automatically
+ by subsequent visitors viewing the journal.
+ Thanks to Gaspard Baye and Hamidullah Muslih for reporting this vulnerability.
+ ([#1525](https://github.com/simonmichael/hledger/issues/1525), Arsen Arsenović)
+
+### credits 1.23
+
+Simon Michael,
+Stephen Morgan,
+Lawrence Wu,
+Jakob Schöttl,
+Dmitry Astapov,
+Malte Brandy,
+Arsen Arsenović,
+Arjen Langebaerd,
+Alan Young,
+Daniel Gröber.
+
+
+## 2021-08-07 hledger-1.22.2
+
+### hledger 1.22.2
+
+Breaking changes
+
+- aregister no longer hides future transactions by default.
+ This is a consequence of the fix for
+ [#1638](https://github.com/simonmichael/hledger/issues/1638).
+ It makes aregister consistent, so we think it's a reasonable change.
+ So if you have future-dated transactions in your journal which you
+ don't want reported, you now must exclude them with `-e tomorrow` or
+ `date:-tomorrow` in the command, as with other reports.
+ (Stephen Morgan)
+
+Improvements
+
+- Timedot format's doc has been rewritten.
+
+Fixes
+
+- Make balance assignments in forecasted transactions work again
+ (broken in 1.22.1).
+ Forecast transactions are now generated early and processed
+ in the same way as other transactions.
+ ([#1638](https://github.com/simonmichael/hledger/issues/1638), Stephen Morgan)
+
+- aregister preserves the order of same-day transactions again
+ (broken in 1.22.1).
+ ([#1642](https://github.com/simonmichael/hledger/issues/1642), Stephen Morgan)
+
+### hledger-ui 1.22.2
+
+- Use hledger 1.22.2.
+
+### hledger-web 1.22.2
+
+- Use hledger 1.22.2.
+
+### credits 1.22.2
+
+Simon Michael,
+Stephen Morgan.
+
+## 2021-08-02 hledger-1.22.1
+
+### hledger 1.22.1
+
+Improvements
+
+- Bash shell completions (for hledger, hledger-ui, hledger-web) are
+ now included in the hledger package's release tarballs, making them
+ more likely to be installed by system packages. (Jakob Schöttl)
+
+- roi docs now discuss how to quote multi-word queries.
+ ([#1609](https://github.com/simonmichael/hledger/issues/1609),
+ Dmitry Astapov)
+
+- Allow megaparsec 9.1
+
+Fixes
+
+- `cur:` and `amt:` queries now match the original amounts before
+ valuation and cost conversion, as they did before hledger 1.22. We
+ believe this is the more useful behaviour in practice.
+ ([#1625](https://github.com/simonmichael/hledger/issues/1625), Stephen Morgan)
+
+- Queries now work better with `register --related`, no longer showing
+ duplicate postings when more than one posting in a transaction is
+ matched.
+ ([#1629](https://github.com/simonmichael/hledger/issues/1629), Stephen Morgan)
+
+- Valuation now works with `register --related`.
+ ([#1630](https://github.com/simonmichael/hledger/issues/1630), Stephen Morgan)
+
+- Auto posting rules now also see inferred amounts,
+ not just explicit amounts.
+ ([#1412](https://github.com/simonmichael/hledger/issues/1412), Stephen Morgan)
+
+- The aregister command now properly ignores a `depth:` argument.
+ It might now also behave more correctly with valuation or `--txn-dates`.
+ ([#1634](https://github.com/simonmichael/hledger/issues/1634), Stephen Morgan)
+
+- Our info manuals now have more robust directory metadata (no
+ subdirectory path), making them more likely to be linked in your
+ top-level Info directory by system packages.
+ ([#1594](https://github.com/simonmichael/hledger/issues/1594))
+ (Simon Michael, Damien Cassou)
+
+- The error message for a non-existent input file no longer shows
+ excess double quotes.
+ ([#1601](https://github.com/simonmichael/hledger/issues/1601),
+ Stephen Morgan)
+
+- Journal format docs: The commodity directive's scope is now
+ correctly described (lasts until end of current file).
+
+### hledger-ui 1.22.1
+
+Improvements
+
+- Document watch mode and its limitations.
+ ([#1617](https://github.com/simonmichael/hledger/issues/1617),
+ [#911](https://github.com/simonmichael/hledger/issues/911),
+ [#836](https://github.com/simonmichael/hledger/issues/836))
+
+- Allow megaparsec 9.1.
+
+Fixes
+
+- Up/down keys work on the transaction screen again (broken since 1.22).
+ ([#1607](https://github.com/simonmichael/hledger/issues/1607), Stephen Morgan)
+
+- Fix a possible off-by-one bug with valuation date when using `V` key on
+ the transaction screen. (If it ever needs to use the journal's last day
+ as valuation date, use that day, not the day after.)
+
+### hledger-web 1.22.1
+
+Improvements
+
+- deps: Allow megaparsec 9.1.
+
+Fixes
+
+- The register chart works again when there are multiple commodities and
+ transaction prices (broken since 1.22).
+ ([#1597](https://github.com/simonmichael/hledger/issues/1597), Stephen Morgan)
+
+### credits 1.22.1
+
+Simon Michael,
+Stephen Morgan,
+Jakob Schöttl,
+Dmitry Astapov.
+
+## 2021-07-03 hledger-1.22
+
+**Optimisations, bugfixes.**
+([announcement](https://groups.google.com/g/hledger/c/t8-XbZBFtF0/m/tWCA8IQXAQAJ))
+
+### project changes 1.22
+
+Software:
+
+- We now provide static executables for GNU/Linux on x64 (amd64) and arm32v7
+ architectures. These are more portable and more likely to work on your linux
+ system than the dynamic Ubuntu executables we have been providing.
+ These will also be useful for Nextcloud.com users. (#1571) (Garret McGraw)
+
+- GHC 9.0 support has been added.
+ We have dropped official support for GHC 8.0/8.2/8.4; building
+ hledger now requires GHC 8.6 or newer.
+
+Docs:
+
+- The info manuals now have the proper metadata so you or your
+ packager can install them with `install-info` and they will appear
+ in info's Directory. We also provide a `dir` file making it easy
+ for developers to see the latest dev manuals in their info Directory.
+ ([#1585](https://github.com/simonmichael/hledger/issues/1585)) (Damien Cassou, Simon Michael)
+
+Chat:
+
+- The hledger IRC channels (
+ [#hledger:libera.chat](https://kiwiirc.com/nextclient/irc.libera.chat:+6697/#hledger),
+ [#hledger-bots:libera.chat](https://kiwiirc.com/nextclient/irc.libera.chat:+6697/#hledger-bots)
+ ) moved to Libera.chat.
+
+- The hledger Matrix room (
+ [#hledger:matrix.org](https://matrix.to/#/#hledger:matrix.org)
+ ), is now on at least equal "official" footing with the IRC channel.
+
+- I upgraded the matrix room to a newer version of the Matrix
+ protocol. This effectively splits it into an old (read only) room
+ and a new room. If you are joined to the old room, you might not
+ have noticed; in your matrix client, please follow the link to the
+ new room, ie #hledger:matrix.org.
+
+- I briefly bridged the IRC and matrix rooms, because having two chats
+ (four if we consider #plaintextaccounting) is a pain. I hope to try
+ the experiment again at some point.
+
+### hledger 1.22
+
+Features
+
+- check: A new `balancednoautoconversion` check requires transactions
+ to balance without the use of inferred transaction prices. (Explicit
+ transaction prices are allowed.) This check is included in `--strict`
+ mode. The old `autobalanced` check has been renamed to
+ `balancedwithautoconversion`. (Stephen Morgan)
+
+Improvements
+
+- Many internal optimisations have been applied (cf hledger-lib
+ changelog). Overall, you can expect most reports to be about 20%
+ faster. The register report is more than 2x faster and uses 4x less
+ memory. (Stephen Morgan)
+
+ ~/src/hledger$ quickbench -w hledger-1.21,hledger
+ Running 5 tests 1 times with 2 executables at 2021-06-29 13:13:26 HST:
+
+ Best times:
+ +----------------------------------------------------++--------------+---------+
+ | || hledger-1.21 | hledger |
+ +====================================================++==============+=========+
+ | -f examples/10000x1000x10.journal print || 1.18 | 0.90 |
+ | -f examples/10000x1000x10.journal register || 12.82 | 5.95 |
+ | -f examples/10000x1000x10.journal balance || 1.38 | 0.86 |
+ | -f examples/1000x1000x10.journal balance --weekly || 0.96 | 0.78 |
+ | -f examples/10000x1000x10.journal balance --weekly || 13.07 | 10.79 |
+ +----------------------------------------------------++--------------+---------+
+
+- ANSI color is now disabled automatically (on stdout) when the
+ `-o/--output-file` option is used (with a value other than `-`).
+ ([#1533](https://github.com/simonmichael/hledger/issues/1533))
+
+- ANSI color is now also available in debug output, determined in the
+ usual way by `--color`, `NO_COLOR`, and whether the output (stderr)
+ is interactive.
+
+- The --version flag shows more details of the build, when known: git
+ tag, number of commits since the tag, commit hash, platform and
+ architecture. (Stephen Morgan)
+
+- balance: Capitalisation of "account" and "total" (and lack of a
+ colon in the latter) in CSV output is now consistent for single- and
+ multi-period reports.
+
+- balance reports' CSV output now includes full account names. ([#1566](https://github.com/simonmichael/hledger/issues/1566))
+ (Stephen Morgan)
+
+- csv: We now accept spaces when parsing amounts from CSV. (Eric
+ Mertens)
+
+- json: Avoid adding unnecessary decimal places in JSON output. (Don't
+ increase them all to 10 decimal places.) (Stephen Morgan)
+
+- json: Simplify amount precision (asprecision) in JSON output.
+ It is now just the number of decimal places, rather than an object.
+ (Stephen Morgan)
+
+- GHC 9.0 is now officially supported. GHC 8.0, 8.2, 8.4 are no longer
+ supported; we now require GHC 8.6 or greater.
+
+- Added a now-required lower bound on containers. ([#1514](https://github.com/simonmichael/hledger/issues/1514))
+
+Fixes
+
+- Auto posting rules now match postings more precisely, respecting
+ `cur:` and `amt:` queries. ([#1582](https://github.com/simonmichael/hledger/issues/1582)) (Stephen Morgan)
+
+- balance reports: Fix empty cells when amounts are too wide to fit
+ (broken since 1.20) ([#1526](https://github.com/simonmichael/hledger/issues/1526)). (Stephen Morgan)
+
+- csv: Fix the escaping of double quotes in CSV output (broken in
+ 1.21). (Stephen Morgan)
+
+- register: Fix the running total when there is a report interval
+ (broken since 1.19) ([#1568](https://github.com/simonmichael/hledger/issues/1568)). (Stephen Morgan)
+
+- stats: No longer gets confused by posting dates. ([#772](https://github.com/simonmichael/hledger/issues/772)) (Stephen Morgan)
+
+- timeclock: `hledger print` shows timeclock amounts with just 2
+ decimal places again (broken in 1.21). ([#1527](https://github.com/simonmichael/hledger/issues/1527))
+
+- When all transaction amounts have the same sign, the error message
+ no longer adds an inferred price. ([#1551](https://github.com/simonmichael/hledger/issues/1551)) (Stephen Morgan)
+
+- Cleaned up some references to old man pages. (Felix Yan)
+
+### hledger-ui 1.22
+
+Improvements
+
+- Don't reset the `B`/`V` (cost, value) state when reloading with `g`
+ or `--watch`. (Stephen Morgan)
+
+- The accounts screen is a little smarter at allocating space to
+ columns. (Stephen Morgan)
+
+- Add support for the kakoune editor, and improve the invocations of
+ some other editors. (crocket)
+
+- The `--version` flag shows more detail (git tag/patchlevel/commit
+ hash, platform/architecture). (Stephen Morgan)
+
+- GHC 9.0 is now officially supported. GHC 8.0, 8.2, 8.4 are no longer
+ supported; we now require GHC 8.6 or greater.
+
+- Added a now-required lower bound on containers. ([#1514](https://github.com/simonmichael/hledger/issues/1514))
+
+Fixes
+
+- Queries in the register screen work again (broken in 1.21). ([#1523](https://github.com/simonmichael/hledger/issues/1523))
+ (Stephen Morgan)
+
+- Don't write to `./debug.log` when toggling value with `V`, or when
+ reloading with `g` or `--watch` in the Transaction screen. ([#1556](https://github.com/simonmichael/hledger/issues/1556))
+ (Simon Michael, Stephen Morgan)
+
+### hledger-web 1.22
+
+Improvements
+
+- The --version flag shows more detail (git tag/patchlevel/commit
+ hash, platform/architecture). (Stephen Morgan)
+
+- Allow yesod-form 1.7 (Felix Yan)
+
+- Add now-required lower bound on containers. ([#1514](https://github.com/simonmichael/hledger/issues/1514))
+
+- GHC 9.0 is now officially supported. GHC 8.0, 8.2, 8.4 are no longer
+ supported; we now require GHC 8.6 or greater.
+
+Fixes
+
+- In the add form, fix a bug where extra posting rows were not added
+ when needed in certain web browsers. (charukiewicz)
+
+### credits 1.22
+
+This release was brought to you by
+Simon Michael,
+Stephen Morgan,
+Felix Yan,
+crocket,
+Eric Mertens,
+Damien Cassou,
+charukiewicz,
+and Garret McGraw.
+## 2021-03-10 hledger-1.21
+
+**More speed; more cli-accessible docs; value change report; improvements to balance reports, valuation and more**
+([announcement](https://groups.google.com/g/hledger/c/xgO2ixBJcZc/m/FOxVeYGABAAJ))
+
+### project-wide changes 1.21
+
+- roi has a new cookbook doc, and example files have been updated.
+ (Dmitry Astapov)
+
+- Example CSV rules for the Daedalus wallet have been added.
+
+- The default stackage resolver/GHC version has been bumped to
+ lts-17.4/ghc-8.10.4.
+
+- tools/generatejournal now includes more commodities and prices in
+ generated journals. (Stephen Morgan)
+
+- Our functional tests now also run on BSD. ([#1434], Felix Van der Jeugt)
+
+- Addon scripts in bin/ have been updated for latest hledger API (Stephen Morgan).
+
+- Addon scripts are now compiled as part of our CI tests, and always
+ with the same version of hledger source they were shipped with. We
+ now require script users to check out the hledger source tree and
+ run the scripts (or, `bin/compile.sh`) from there. This keeps users
+ and tests in sync, making things more reliable for everyone. ([#1453])
+
+- Last but not least, hledger's bash completions (provided in ./shell-completions/)
+ have been [thoroughly updated](https://github.com/simonmichael/hledger/blob/master/CHANGES.md#121-2021-03-10)
+ ([#1404], [#1410], Vladimir Zhelezov).
+
+### hledger cli 1.21
+
+#### general
+
+- hledger is now generally about 10% more memory- and time-efficient,
+ and significantly more so in certain cases, eg journals with many
+ total transaction prices. (Stephen Morgan)
+
+- The `--help/-h` and `--version` flags are no longer position-sensitive;
+ if there is a command argument, they now always refer to the command
+ (where applicable).
+
+- The new `--info` flag opens the hledger info manual, if "info" is in $PATH.
+ `hledger COMMAND --info` will open COMMAND's info node.
+
+- The `--man` flag opens the hledger man page, if "man" is in $PATH.
+ `hledger COMMAND --man` will scroll the page to CMD's section, if "less"
+ is in $PATH. (We force the use of "less" in this case, overriding any
+ $PAGER or $MAN_PAGER setting.)
+
+- Some command aliases, considered deprecated, have been removed:
+ `txns`, `equity`, and the single-letter command aliases `a`, `b`,
+ `p`, and `r`. This was discussed at
+ https://github.com/simonmichael/hledger/pull/1423 and on the hledger
+ mail list. It might annoy some folks; please read the issue and do
+ follow up there if needed.
+
+- Notable documentation updates:
+ the separate file format manuals have been merged into the hledger manual,
+ the topic hierarchy has been simplified,
+ the `balance` command docs and "commands" section have been rewritten.
+
+#### valuation
+
+- Costing and valuation are now independent, and can be combined.
+ `--value=cost` and `--value=cost,COMM` are still supported
+ (equivalent to `--cost` and `--cost --value=then,COMM` respectively),
+ but deprecated. (Stephen Morgan)
+
+- `-V` is now always equivalent to `--value=end`. (Stephen Morgan)
+
+- `--value=end` now includes market price directives as well as
+ transactions when choosing a valuation date for single-period
+ reports. ([#1405], Stephen Morgan)
+
+- `--value=end` now picks a consistent valuation date for single- and
+ and multi-period reports. ([#1424], Stephen Morgan)
+
+- `--value=then` is now supported with all reports, not just register. (Stephen Morgan)
+
+- The too-vague `--infer-value` flag has been renamed to `--infer-market-price`.
+ Tip: typing `--infer-market` or even `--infer` is sufficient.
+ The old spelling still works, but is now deprecated.
+
+#### commands
+
+- add: Infix matches are now scored higher. If the search pattern
+ occurs in full within the other description, that match gets a +0.5
+ score boost.
+
+- add: `--debug` now shows transaction matching results, useful when
+ troubleshooting.
+
+- balance: To accomodate new report types, the
+ `--change|--cumulative|--historical|--budget` flags have been split
+ into two groups: report type (`--sum|--budget|...`) and accumulation
+ type (`--change|--cumulative|--historical`). `--sum` and `--change`
+ are the defaults, and your balance commands should still work as
+ before. (Stephen Morgan et al, [#1353])
+
+- balance: The `--valuechange` report type has been added, showing the
+ changes in period-end values. (Stephen Morgan, [#1353])
+
+- balance: With `--budget`, the first and last subperiods are enlarged
+ to whole intervals for calculating the budget goals also. (Stephen
+ Morgan)
+
+- balance: In multi-period balance reports, specifying a report period
+ now also forces leading/trailing empty columns to be displayed,
+ without having to add `-E`. This is consistent with `balancesheet`
+ etc. ([#1396], Stephen Morgan)
+
+- balancesheet, cashflow: declaring just a Cash account no longer
+ hides other Asset accounts.
+
+- check: Various improvements:
+
+ - check name arguments may be given as case-insensitive prefixes
+ - `accounts` and `commodities` may also be specified as arguments
+ - `ordereddates` now checks each file separately ([#1493])
+ - `ordereddates` no longer supports the `--unique` flag or query arguments
+ - `payees` is a new check requiring payee declarations
+ - `uniqueleafnames` now gives a fancy error message like the others
+ - the old `checkdates`/`checkdupes` commands have been dropped
+
+- help: The `help` command now shows only the hledger (CLI) manual,
+ its `--info/--man/--pager` flags have been renamed to `-i/-m/-p`,
+ and `--cat` has been dropped.
+
+- help: With a TOPIC argument (any heading or heading prefix, case
+ insensitive), it will open the manual positioned at this topic if
+ possible. (Similar to the new `--man` and `--info` flags described above.)
+
+
+
+- payees: Add `--used`/`--declared` flags, like the `accounts` command.
+
+- print: Now always shows amounts with all decimal places,
+ unconstrained by commodity display style. This ensures more
+ parseable and sensible-looking output in more cases, and behaves
+ more like Ledger's print. (There may be a cosmetic issue with
+ trailing zeroes.) ([#931], [#1465])
+
+- print: With `--match`, infix matches are now scored higher, as with
+ the add command.
+
+- print: `--match` now provides debug output useful for troubleshooting.
+
+ If you forget to give `--match` an argument, it can confusingly
+ consume a following flag. Eg if you write:
+
+ hledger print --match -x somebank # should be: hledger print --match=somebank -x
+
+ it gets quietly parsed as:
+
+ hledger print --match="-x"
+
+ Now you can at least use --debug to figure it out:
+
+ hledger print --match -x somebank --debug
+ finding best match for description: "-x"
+ similar transactions:
+ ...
+
+- roi: Now supports the valuation options ([#1417], [#1483]), and uses
+ commodity display styles. Also the manual has been simplified, with
+ some content moved to the Cookbook. (Dmitry Astapov):
+
+#### journal format
+
+- The `commodity` directive now properly sets the display style of the
+ no-symbol commodity. ([#1461])
+
+#### csv format
+
+- More kinds of malformed signed numbers are now ignored, in
+ particular just a sign without a number, which simplifies sign
+ flipping with amount-in/amount-out.
+
+### hledger-ui 1.21
+
+- Register screen: also show transactions below the depth limit, as in
+ 1.19, keeping the register balance in agreement with the balance
+ shown on the accounts screen. This regressed in 1.20. ([#1468])
+
+- Transaction screen: all decimal places are now shown. On the
+ accounts screen and register screen we round amounts according to
+ commodity display styles, but when you drill down to a transaction
+ you probably want to see the unrounded amounts. (Like print, #cf
+ [#931].)
+
+- New flags `--man` and `--info` open the man page or info manual.
+ (See hledger)
+
+### hledger-web 1.21
+
+- Register: a date range can be selected by dragging over a region on
+ the chart. (Arnout Engelen, [#1471])
+
+- Add form: the description field's autocompletions now also offer
+ declared and used payee names.
+
+- New flags `--man` and `--info` open the man page or info manual.
+ (See hledger)
+
+### credits 1.21
+
+This release was brought to you by
+Simon Michael,
+Vladimir Zhelezov,
+Stephen Morgan,
+Dmitry Astapov,
+Arnout Engelen,
+Damien Cassou,
+aragaer,
+Doug Goldstein,
+Caleb Maclennan,
+and
+Felix Van der Jeugt.
+
+[#931]: https://github.com/simonmichael/hledger/issues/931
+[#1353]: https://github.com/simonmichael/hledger/issues/1353
+[#1396]: https://github.com/simonmichael/hledger/issues/1396
+[#1404]: https://github.com/simonmichael/hledger/issues/1404
+[#1405]: https://github.com/simonmichael/hledger/issues/1405
+[#1410]: https://github.com/simonmichael/hledger/issues/1410
+[#1417]: https://github.com/simonmichael/hledger/issues/1417
+[#1424]: https://github.com/simonmichael/hledger/issues/1424
+[#1434]: https://github.com/simonmichael/hledger/issues/1434
+[#1453]: https://github.com/simonmichael/hledger/issues/1453
+[#1461]: https://github.com/simonmichael/hledger/issues/1461
+[#1465]: https://github.com/simonmichael/hledger/issues/1465
+[#1468]: https://github.com/simonmichael/hledger/issues/1468
+[#1471]: https://github.com/simonmichael/hledger/issues/1471
+[#1483]: https://github.com/simonmichael/hledger/issues/1483
+[#1493]: https://github.com/simonmichael/hledger/issues/1493
+
+## 2021-01-29 hledger-1.20.4
+
+- aregister: ignore a depth limit, as in 1.19 (#1468).
+ In 1.20-1.20.3, aregister had stopped showing transactions in subaccounts
+ below a depth limit. Now it properly shows all subaccount transactions,
+ ensuring that the register's final total matches a balance report with
+ similar arguments.
+
+## 2021-01-29 hledger-ui-1.20.4
+
+- ui: register: show all txns in/under an account at the depth limit (#1468).
+ In 1.20-1.20.3, the register screen had stopped showing transactions
+ in accounts below a depth limit. Now it properly shows all subaccount transactions,
+ even when there is a depth limit, ensuring that the register's final total
+ matches the balance shown on the account screen.
+
+## 2021-01-29 hledger-web-1.20.4
+
+- Use hledger 1.20.4.
+
+## 2021-01-14 hledger 1.20.3, hledger-ui 1.20.3, hledger-web 1.20.3
+
+- When searching for price chains during valuation/currency conversion:
+
+ - It no longer hangs when there are price loops. (And in case of
+ future bugs, it will give up rather than search forever.) (#1439)
+ - It now really finds the shortest path. (#1443)
+ - Useful progress info is displayed with `--debug=1` or `--debug=2`.
+
+- balance, incomestatement: End-valued multi-period balance change
+ reports (eg: `bal -MV`) have been reverted to show value-of-change,
+ as in previous hledger versions, rather than change-of-value, for
+ now. (#1353, #1428) (Stephen Morgan)
+
+- balance: End-valued balance change reports now choose the same final
+ valuation date and show consistent results whether single-period or
+ multi-period. (#1424) (Stephen Morgan)
+
+- balance: the `--drop` option now works with `csv` and `html` output.
+ (#1456) (Ilya Konovalov)
+
+- check: the `commodities` check, and `-s`/`--strict` mode, now ignore
+ the "AUTO" internal pseudo-commodity. (#1419) (Ilya Konovalov)
+
+- register: Then-valued multi-period register reports
+ (eg: `register -M --value=then`) now calculate the correct values.
+ (#1449) (Stephen Morgan)
+
+- roi: now shows a better error message when required prices are
+ missing. (#1446) (Dmitry Astapov)
+
+- The no-symbol commodity's input number format can now be set by a
+ `commodity` directive, like other commodities. (#1461)
+
+## 2020-12-28 hledger 1.20.2
+
+- help: Fix loss of capitalisation in part of the hledger-ui manual.
+
+- help: Fix the node structure in info manuals.
+
+- Drop unused parsec dependency.
+
+## 2020-12-28 hledger-ui 1.20.2
+
+- Fix loss of capitalisation in part of the manual.
+
+- Fix the info manual's node structure.
+
+## 2020-12-28 hledger-web 1.20.2
+
+- Fix the info manual's node structure.
+
+## 2020-12-15 hledger 1.20.1
+
+- bal, bs, cf, is: In amount-sorted balance reports, equal-balance accounts
+ are now reliably sorted by name. (Simon Michael, Stephen Morgan)
+
+- help: Fix the topic hierarchy in Info manuals.
+
+## 2020-12-15 hledger-ui 1.20.1
+
+- Fix the F key (toggle future/forecast transactions), which in 1.20
+ would only work twice. (#1411)
+
+- Fix loss of forecasted transactions when the journal was reloaded
+ while they were hidden. (#1204)
+
+## 2020-12-06 hledger-web-1.20.1
+
+- don't hang when reloading the journal, eg after adding a transaction
+ or editing the file. (#1409)
+
+## 2020-12-05 hledger-1.20
+
+**Strict mode; check command; rendering, speed, and valuation fixes**
+
+### project-wide changes 1.20
+
+- examples: clean up & add more budgeting examples; stripe csv
+
+- a hie.yaml file has been added, so hledger source loads
+ easily in IDEs supporting haskell-language-server
+
+- The functional tests in tests/ have been moved into the respective
+ packages, eg hledger/test/ and hledger-ui/test/.
+
+- Shake cabalfiles: now gives an error when it fails
+
+- make bench: add some large tabular reports;
+ run just the slowest commands by default;
+ run after make (func)test
+
+### hledger cli 1.20
+
+#### general
+
+- strict mode: with -s/--strict, hledger requires that
+ all accounts and commodities are declared with directives.
+
+- Reverted a stripAnsi change in 1.19.1 that caused a 3x slowdown of amount rendering
+ in terminal reports. (#1350)
+
+- Amount and table rendering has been improved, so that stripAnsi is no longer needed.
+ This speeds up amount rendering in the terminal, speeding up some reports by 10% or more since 1.19.
+ (Stephen Morgan)
+
+- Amount eliding no longer displays corrupted ANSI codes (#1352, Stephen Morgan)
+
+- Eliding of multicommodity amounts now makes better use of available space,
+ avoiding unnecessary eliding (showing as many amounts as possible within
+ 32 characters). (Stephen Morgan)
+
+- Command line help for --no-elide now mentions that it also disables eliding of
+ multicommodity amounts.
+
+- Query terms containing quotes (eg to match account names containing quotes)
+ now work properly. (#1368, Stephen Morgan)
+
+- cli, journal: Date range parsing is more robust, fixing failing/incorrect cases such as: (Stephen Morgan)
+
+ - a hyphenated range with just years (`2017-2018`)
+ - a hyphenated date with no day in a hyphenated range (`2017-07-2018`)
+ - a dotted date with no day in a dotted range (`2017.07..2018.02`)
+
+- Debug output is prettier (eg, in colour), using pretty-simple instead of pretty-show.
+
+- csv, timedot, timeclock files now respect command line --alias options,
+ like journal files. (#859)
+
+- Market price lookup for value reports is now more robust, fixing several bugs
+ (and debug output is more informative).
+ There has been a slight change in functionality: when chaining prices,
+ we now prefer chains of all "forward" prices, even if longer, with chains
+ involving reverse prices being the last resort.
+ (#1402)
+
+#### commands
+
+- add: number style (eg thousands separators) no longer disturbs the value
+ that is offered as default. (#1378)
+
+- bal: --invert now affects -S/--sort-amount, reversing the order. (#1283, #1379) (Stephen Morgan)
+
+- bal: --budget reports no longer insert an extra space inside the brackets. (Stephen Morgan)
+
+- bal: --budget reports now support CSV output (#1155)
+
+- bal, is, bs --change:
+ Valued multiperiod balance change reports now show changes of value,
+ rather than the value of changes. (#1353, Stephen Morgan)
+
+- bal: clearer debug output, following debug levels policy
+
+- check: A new command which consolidating the various check-* commands.
+ It runs the default, strict, or specified checks and produces
+ no output and a zero exit code if all is well.
+
+- check-dates: this command is deprecated and will be removed
+ in next release; use "hledger check ordereddates" instead.
+
+- check-dupes: this command is deprecated and will be removed
+ in next release; use "hledger check uniqueleafnames" instead.
+
+- import: The journal's commodity styles (declared or inferred) are now applied
+ to imported amounts, overriding their original number format.
+
+- roi: TWR now handles same-day pnl changes and cashflows,
+ calculation failure messages have been improved, and
+ the documentation includes more detail and examples.
+ (#1398) (Dmitry Astapov)
+
+#### journal format
+
+- The journal's commodity styles are now applied to forecasted transactions. (#1371)
+
+- journal, csv: commodity style is now inferred from the first amount, as documented,
+ not the last. This was "working wrongly" since hledger 1.12..
+
+- A zero market price no longer causes "Ratio has zero denominator" error
+ in valued reports. (#1373)
+
+#### csv format
+
+- The new `decimal-mark` rule allows reliable number parsing
+ when CSV numbers contain digit group marks (eg thousands separators).
+
+- The CSV reader's verbose "assignment" debug output is now at level 9.
+
+### hledger-ui 1.20
+
+- When entering a query with `/`, malformed queries/regular expressions
+ no longer cause the program to exit. (Stephen Morgan)
+
+- Eliding of multicommodity amounts now makes better use of available space. (Stephen Morgan)
+
+- `E` now parses the `HLEDGER_UI_EDITOR` or `EDITOR` environment variable
+ correctly on Windows (ignoring the file extension), so if you have that set
+ it should be better at opening your editor at the correct line.
+
+- `E` now supports positioning when `HLEDGER_UI_EDITOR` or `EDITOR`
+ is VS Code ("`code`") (#1359)
+
+- hledger-ui now has a (human-powered) test suite.
+
+### hledger-web 1.20
+
+- hledger-web's test suite is re-enabled, now included in the main executable.
+ hledger-web --test [-- HSPECARGS] runs it.
+
+- Fix --forecast, broken in hledger-web since 1.18 (#1390)
+
+- Fix unescaped slashes in hledger-web description on hackage (TANIGUCHI Kohei)
+
+- The hledger-web version string is now provided at /version, as JSON (#1152)
+
+- The session file (hledger-web_client_session_key.aes) is now written in
+ $XDG_DATA_DIR rather than the current directory.
+ Eg on non-Windows systems this is ~/.cache/ by default (cf
+ https://hackage.haskell.org/package/directory/docs/System-Directory.html#t:XdgDirectory).
+ (#1344) (Félix Sipma)
+
+### credits 1.20
+
+This release was brought to you by
+Simon Michael,
+Stephen Morgan,
+Dmitry Astapov,
+TANIGUCHI Kohei,
+legrostdg.
+
+
+## 2020/09/07 hledger 1.19.1
+
+### hledger cli 1.19.1
+
+- Fix alignment of coloured numbers (#1345, #1349, Stephen Morgan)
+
+- Fix a regression in account type autodetection for accounts with
+ capitalised names. (#1341)
+
+- Allow megaparsec 9
+
+### hledger-ui 1.19.1
+
+- Allow megaparsec 9
+
+### hledger-web 1.19.1
+
+- Allow megaparsec 9
+
+- Drop redundant semigroups dependency (Felix Yan)
+
+## 2020/09/01 hledger-1.19
+
+**New aregister and codes commands,
+more powerful CSV conditional rules,
+new sql output format,
+consistently default to flat mode,
+better colour control,
+cashflow report customisable like the others,
+more number/date/regexp parsing/validation,
+more speed.**
+
+### hledger cli 1.19
+
+#### new
+
+- [aregister]: a new command showing a transaction-oriented register
+ for a single account. This is like hledger-ui, hledger-web, or your
+ bank statement, and unlike the register command which shows
+ individual postings possibly spanning multiple accounts. You might
+ prefer aregister when reconciling real-world asset/liability
+ accounts, and register when reviewing detailed revenues/expenses.
+ (#1294)
+
+- [codes]: a new command for listing transaction codes
+
+- print: a new `sql` [output format] has been added (Dmitry Astapov)
+
+- A `--color/--colour` command line option, support for the `NO_COLOR`
+ environment variable, and smarter autodetection of colour terminals
+ have been added. (#1296)
+
+- In queries, you can now use q or Q to specify a year quarter, like
+ `2020q1` or `Q4`. (#1247, Henning Thieleman, Stephen Morgan)
+
+- When specifying report intervals, you can use `fortnightly` as a
+ synonym for `biweekly`. (Stephen Morgan)
+
+#### improved
+
+- Reports involving multiple commodities now show at most two
+ commodities per amount by default, making multicolumn reports less
+ wide and more readable. Use the --no-elide flag to prevent this.
+
+- Flat (AKA list) mode is now the consistent default used by all
+ balance reports and other commands showing accounts. (Stephen
+ Morgan)
+
+- All commands supporting tree/list mode now accept -t and -l as short
+ forms of the --tree and --flat flags. (#1286)
+
+- account,bal,bs,cf,is: --drop now also works in tree mode (Stephen Morgan)
+
+- bal,bs,cf,is: tabular balance reports now elide (compress) boring
+ parent accounts, like the non-tabular reports. (Stephen Morgan)
+
+- bal,bs,cf,is: monthly column headings are no longer be displayed as
+ just the month abbreviations, if multiple years are being displayed.
+
+- bal --budget: with --cumulative or --historical, column headings now
+ correctly show the period end dates rather than date spans.
+
+- bs,cf,is: --no-total now hides subtotals as well as the grand total
+ (Stephen Morgan)
+
+- bs,cf,is: -%/--percent no longer implies --no-total. (Stephen
+ Morgan)
+
+- roi: errors are now shown without a call stack
+
+- tags: the new --parsed flag causes all tags or values to be shown,
+ including duplicates, in the order they were parsed. Blank/empty
+ values are omitted by default and can be shown with -E/--empty.
+
+- Debug output is now organised better by debug level.
+ The levels are:
+
+ 0. normal command output only (no warnings)
+ 1. useful warnings & most common troubleshooting info (valuation, eg)
+ 2. common troubleshooting info, more detail
+ 3. report options selection
+ 4. report generation
+ 5. report generation, more detail
+ 6. input file reading
+ 7. input file reading, more detail
+ 8. command line parsing
+ 9. any other rarely needed or more in-depth info
+
+#### correctness/robustness
+
+- Added a missing lower bound for aeson, making cabal installs more
+ reliable. (#1268)
+
+- When parsing dates, we now require the year to have at least four
+ digits. So eg Feb 1 in the year 10 would need to be written
+ `0010-02-01`, not `10/02/01`. would need to be written `0200/1/1`.
+ This change was made for consistency and to avoid ambiguities; let
+ us know if it causes you trouble.
+
+- Command line options taking a numeric argument are now validated
+ more carefully to avoid any issues with unexpected negatives or Int
+ overflow. (Stephen Morgan)
+
+- Numbers with more than 255 decimal places, which we do not support,
+ now give an error instead of silently misparsing. (#1326)
+
+- Digit groups in numbers are now limited to at most 255 digits each.
+ (#1326)
+
+- Account aliases (on command line or in journal) containing a bad
+ regular expression now give a more detailed error message.
+
+- In the argument of `amt:` queries, whitespace around the operator,
+ sign, or number no longer causes a parse error. (#1312)
+
+- A tab character could get parsed as part of a commodity symbol, with
+ confusing results. This no longer happens. (#1301, Dmitry Astapov)
+
+- add: fixed an error in the command line help (arguments are inputs,
+ not a query)
+
+#### journal format
+
+- account directives can specify a new account type, `Cash`, for
+ accounts which should be displayed in the `cashflow` report. `Cash`
+ accounts are also `Asset` accounts.
+
+- Documentation of [account types] has been improved.
+
+#### csv format
+
+- Conditional rule patterns can now be
+ [grouped](csv.md#combining-matchers) with the `&` (AND) operator,
+ allowing more powerful matching. (Michael Sanders)
+
+- "[If tables](csv.md#if-table)", a compact bulk format for
+ conditional rules, have been added. (Dmitry Astapov)
+
+- csv conversion with a lot of conditional rules is now faster (Dmitry Astapov)
+
+- Invalid csv rules files now give clearer parse error messages.
+ (Dmitry Astapov)
+
+- Inferring the appropriate default field separator based on file
+ extension (, for .csv, ; for .ssv, \t for .tsv) now works as
+ documented.
+
+### hledger-ui 1.19
+
+- A --color/--colour command line option, support for the NO_COLOR
+ environment variable, and smarter autodetection of colour terminals
+ have been added. (#1296)
+
+- -t and -l have been added as short forms of --tree and --flat
+ command line flags.
+
+- Flat (AKA list) mode is now the default for the accounts screen.
+
+- t now toggles tree/list mode, while T sets the "today" period
+ (#1286)
+
+- register screen: multicommodity amounts containing more than two
+ commodities are now elided, unless the --no-elide flag is used.
+
+- register screen: a transaction dated outside the report period now
+ is not shown even if it has postings dated inside the report period.
+
+- ESC now restores exactly the app's state at startup, which includes
+ clearing any report period limit. (#1286)
+
+- DEL/BS no longer changes the tree/list mode.
+
+- q now exits the help dialog, if active; press q again to exit the
+ app. (#1286)
+
+- The help dialog's layout is improved.
+
+### hledger-web 1.19
+
+- Added a missing lower bound for aeson, making cabal installs more
+ reliable. (#1268)
+
+- Queries containing a malformed regular expression (eg the single
+ character `?`) now show a tidy error message instead "internal
+ server error". (Stephen Morgan, Simon Michael) (#1245)
+
+- In account registers, a transaction dated outside the report period
+ now is not shown even if it has postings dated inside the report
+ period.
+
+### credits 1.19
+
+This release was brought to you by
+Simon Michael,
+Stephen Morgan,
+Dmitry Astapov,
+Michael Sanders,
+Henning Thielemann,
+Martin Michlmayr,
+Colin Woodbury.
+
+[aregister]: hledger.html#aregister
+[codes]: hledger.html#codes
+[output format]: hledger.html#output-format
+[account types]: journal.html#account-types
+
+## 2020/06/21 hledger 1.18.1
+
+### hledger cli 1.18.1
+
+- value reports now work as in 1.17 again; inferring market prices from
+ transactions is now an option, requiring the --infer-value flag.
+ (#1239, #1253)
+
+- print: amounts in csv output now have commodity symbol, digit group
+ separators and prices removed (Dmitry Astapov)
+
+- begin more systematic level usage in --debug output
+
+- journal: document recursive wildcards
+
+### hledger-ui 1.18.1
+
+- Fix F key having no effect (#1255) (Dmitry Astapov)
+
+
+## 2020/06/07 hledger 1.18
+
+**Fixed JSON output;
+market prices inferred from transactions;
+more Ledger file compatibility;
+more flexible journal entries from CSV;
+misc. fixes and improvements.**
+
+### project-wide changes 1.18
+
+- new example scripts:
+
+ - hledger-combine-balances.hs, hledger-balance-as-budget.hs (Dmitry Astapov)
+ - hledger-check-tag-files.hs, hledger-check-tag-files2.hs
+
+- more CSV rule examples: coinbase, waveapp
+
+- new CI (continuous integration) system using Github Actions.
+ Thanks to Travis and Appveyor for their service to date.
+ Improvements:
+
+ - one CI service instead of several
+ - more closely integrated with code repo
+ - tests run on the three main platforms (linux, mac, windows)
+ - harmless commits are ignored automatically ([ci skip] no longer needed for doc commits)
+ - scheduled and on-demand testing (push to master, push to ci-* branches, pull request, weekly)
+ - now tested: all GHC versions, doctests, haddock building
+ - new shortcut url: https://ci.hledger.org
+
+### hledger cli 1.18
+
+- The --forecast flag now takes an optional argument
+ (--forecast=PERIODICEXPR), allowing periodic transactions to
+ start/end on any date and to overlap recorded transactions.
+ (#835, #1236) (Dmitry Astapov)
+
+- An upper case file extension no longer confuses file format
+ detection. (#1225)
+
+- In the commands list, redundant source scripts are now hidden
+ properly when a corresponding .com/.exe file exists. (#1225)
+
+- We now show `..` instead of `-` to indicate date ranges, eg in
+ report titles, to stand out more from hyphenated dates. (Stephen Morgan)
+
+- Period expressions (eg in -p, date:, and periodic rules) now accept
+ `to`, `until`, `-`, or `..` as synonyms. (Stephen Morgan)
+
+- When parsing amounts, whitespace between sign and number is now allowed.
+
+- A clearer error message is shown on encountering a malformed regular
+ expression.
+
+#### commands
+
+- commands allowing different output formats now list their supported
+ formats accurately in --help (#689)
+
+- commands allowing JSON output now actually produce JSON (#689)
+
+- bal, bs: show .. (not ,,) in report titles, like other reports
+
+#### journal format
+
+- We now also infer market prices from transactions, like Ledger.
+ See https://hledger.org/hledger.html#market-prices (#1239).
+
+ Upgrade note: this means value reports (-V, -X etc.) can give
+ different output compared to hledger 1.17. If needed, you can
+ prevent this by adding a P directive declaring the old price, on or
+ after the date of the transaction causing the issue.
+
+- The include directive now accepts a file format prefix, like the
+ -f/--file option. This works with glob patterns too, applying the
+ prefix to each path. This can be useful when included files don't
+ have the standard file extension, eg:
+
+ include timedot:2020*.md
+
+- We now accept (and ignore) Ledger-style lot dates
+ (`[DATE]`) and four lot price forms (`{PRICE}`, `{{PRICE}}`,
+ `{=PRICE}`, `{{=PRICE}}`), anywhere after the posting amount but
+ before any balance assertion.
+
+- We now accept Ledger-style parenthesised "virtual posting
+ costs" (`(@)`, `(@@)`). In hledger these are equivalent to the
+ unparenthesised form.
+
+- The unbalanced transaction error message is clearer, especially when
+ postings all have the same sign, and is split into multiple lines
+ for readability.
+
+#### csv format
+
+- You can now generate up to 99 postings in a transaction. (Vladimir Sorokin)
+
+- You can now generate postings with an explicit 0 amount. (#1112)
+
+- For each posting, when both numbered and unnumbered amount
+ assignments are active (eg: both `amount` and `amount1`), we ignore
+ the unnumbered ones. This makes it easier to override old `amount`
+ rules.
+
+- Fix a 1.17.1 regression involving amount-in/amount-out. (#1226)
+
+- Assigning too many non-zero or zero values to a posting amount now
+ gives a clearer error. (#1226)
+
+### hledger-ui 1.18
+
+- builds with hledger 1.18
+
+### hledger-web 1.18
+
+- The filter query is now preserved when clicking a different account
+ in the sidebar. (Henning Thielemann)
+
+- Hyperlinks are now more robust when there are multiple journal
+ files, eg links from register to journal now work properly.
+ (#1041) (Henning Thielemann)
+
+#### add form
+
+- Fixed a 2016 regression causing too many rows to be added by
+ keypresses in the last amount field or CTRL-plus (#422, #1059).
+
+- Always start with four rows when opened.
+
+- Drop unneeded C-minus/C-plus keys & related help text.
+
+### credits 1.18
+
+This release was brought to you by
+Simon Michael,
+Stephen Morgan,
+Dmitry Astapov,
+Henning Thielemann,
+Andriy Mykhaylyk,
+Pavan Rikhi,
+Vladimir Sorokin.
+
+
+## 2020/03/01 hledger 1.17
+
+**CSV single-field matching; easier SSV/TSV conversion;
+fixed/enhanced close command; undo in add command; more JSON output;
+org headline support in timedot format; GHC 8.10 support.**
+
+### project-wide changes 1.17
+
+- hledger-install tweaks
+
+- Simpler, clearer structure in the manuals and hledger.org sidebar.
+
+- A new [Quick Start](https://hledger.org/start.html) page
+
+- A new [Common Tasks](https://hledger.org/hledger.html#common-tasks) section in the hledger manual
+
+- A new [Invoicing](https://hledger.org/invoicing.html) how-to
+
+- A basic example of rule parsing for the output of csb2format. (Evilham)
+ csb2format deals with the CSB43/AEB43 format, which all banks operating in
+ Spain must support.
+
+
+### hledger cli 1.17
+
+- hledger's default date format is now ISO-8601 (YYYY-MM-DD).
+ (Brian Wignall, Jakob Schöttl, Simon Michael)
+
+- Drop the file format auto-detection feature.
+
+ For a long time hledger has auto-detected the file format when it's
+ not known, eg when reading from a file with unusual extension (like
+ .dat or .txt), or from standard input (-f-), or when using the
+ include directive (which currently ignores file extensions). This
+ was done by trying all readers until one succeeded. Recent changes
+ to timedot format have made this unreliable. So now, hledger will no
+ longer guess; when there's no file extension or reader prefix
+ available, it always assumes journal format. To specify one of the
+ other formats, you must use its standard file extension
+ (`.timeclock`, `.timedot`, `.csv`, `.ssv`, `.tsv`), or a reader
+ prefix (`-f csv:foo.txt`, `-f timedot:-`).
+ Experimental, feedback welcome.
+
+- More robust quoting of arguments for addons (#457). (Jacek Generowicz)
+ Command lines like `hledger ui 'amt:>200'` failed, because the
+ process of dispatching from `hledger` to `hledger-ui` lost the
+ quotes around `amt:>20` and the `>` character was interpreted as a
+ shell redirection operator.
+
+- --output-format now rejects invalid formats
+
+- Numbers in JSON output now provide a floating point Number
+ representation as well as our native Decimal object representation,
+ since the latter can sometimes contain 255-digit integers. The
+ floating point numbers can have up to 10 decimal digits (and an
+ unbounded number of integer digits.)
+ Experimental, suggestions needed. (#1195)
+
+- Fix finding latest date in queryEndDate Or queries and simplify
+ date comparison code. (Stephen Morgan)
+
+- Fix extra $ symbol (Mateus Furquim)
+
+
+#### commands
+
+- add: you can use `<` to undo and redo previous inputs (Gaith Hallak)
+
+- bs, cf, is, bal, print, reg: support json output
+
+- bs, cf, is: fix excess subreport columns in csv output
+
+- bs, cf, is, bal: fix an issue with border intersections in
+ --pretty-tables output. (Eric Mertens)
+
+- close: fix a rounding bug that could generate unbalanced transactions. (#1164)
+
+- close: hide cost prices by default, show them with --show-costs.
+ close no longer preserves costs (transaction prices) unless you ask
+ it to, since that can generate huge entries when there are many
+ foreign currency/investment transactions. (#1165)
+
+- close: equity amounts are omitted by default, for simpler entries;
+ -x/--explicit shows them (usually causing more postings). (#1165)
+
+- close: --interleaved generates equity postings alongside each closed
+ account, making troubleshooting easier.
+
+- close: "equity:opening/closing balances" is now the default
+ closing and opening account.
+
+- close: --close-desc/--open-desc customise the closing/opening
+ transaction descriptions. (#1165)
+
+- close: some --open*/--close* flags have been simplified for memorability:
+ ```plain
+ --closing -> --close
+ --opening -> --open
+ --close-to -> --close-acct
+ --open-from -> --open-acct
+ ```
+ The old flags are accepted as hidden aliases, and deprecated. (#1165)
+
+- print, register: a new valuation type, --value=then, shows the
+ market value at each posting's date.
+
+- print: -V/-X/--value now imply -x/--explicit, as -B/--cost does.
+ This avoids a bug where print -V of a transaction with an implicit
+ commodity conversion would convert only some of its postings to value.
+
+#### journal format
+
+- The include directive no longer tries all readers. It now picks
+ just one, based on the included file's extension, defaulting to
+ journal. (It doesn't yet handle a reader prefix.)
+
+- The default commodity (`D`) directive now limits display precision
+ too, and is fully equivalent to `commodity` directives for setting a
+ commodity's display style. (#1187)
+
+#### csv format
+
+- Conditional blocks can now match single fields. \o/
+
+- The experimental --separator command line option has been dropped,
+ replaced by a new `separator` directive in CSV rule files. (Aleksandar Dimitrov)
+
+- The `.tsv` and `.ssv` file extensions are now recognised,
+ and will set the default `separator` to TAB and semicolon respectively.
+ (#1179)
+
+- Manually assigning the "expenses:unknown" account name now works. (#1192)
+
+- CSV rule keywords are now case insensitive. (Aleksandar Dimitrov)
+
+#### timeclock format
+
+- Misc. fixes making parsing more robust. (Jakob Schöttl)
+
+#### timedot format
+
+- Org mode headlines (lines beginning with one or more `*` followed by
+ a space) can be used as date lines or timelog items (the stars are
+ ignored). Also all org headlines before the first date line are
+ ignored. This means org users can manage their timelog as an org
+ outline (eg using org-mode/orgstruct-mode in Emacs), for
+ organisation, faster navigation, controlling visibility etc.
+ Experimental.
+- You can now write a description after a date, which will be used in
+ all of that day's transactions.
+ Experimental.
+
+### hledger-ui 1.17
+
+- Don't enable --auto by default.
+
+- Don't enable --forecast by default; drop the --future flag. (#1193)
+
+ Previously, periodic transactions occurring today were always shown,
+ in both "present" and "future" modes. To fix this, generation of
+ periodic transactions and display of future transactions (all kinds)
+ have been combined as "forecast mode", which can be enabled with
+ --forecast and/or toggled with the F key. The --future flag is now a
+ hidden alias for --forecast, and deprecated.
+
+### hledger-web 1.17
+
+- Fonts have been improved on certain platforms. (David Zhang)
+
+- IPv6 is supported (Amarandus) (#1145)
+
+- The --host option can now take a local hostname (Amarandus) (#1145)
+
+- New --socket option to run hledger-web over an AF_UNIX socket file. (Carl Richard Theodor Schneider)
+ This allows running multiple instances of hledger-web on the same
+ system without having to manually choose a port for each instance,
+ which is helpful for running individual instances for multiple
+ users. In this scenario, the socket path is predictable, as it can
+ be derived from the username.
+
+- The edit and upload forms now normalise line endings, avoiding parse
+ errors (#1194). Summary of current behaviour:
+
+ - hledger add and import commands will append with (at least some)
+ unix line endings, possibly causing the file to have mixed line
+ endings
+
+ - hledger-web edit and upload forms will write the file with
+ the current system's native line endings, ie changing all
+ line endings if the file previously used foreign line endings.
+
+- Numbers in JSON output now provide a floating point Number
+ representation as well as our native Decimal object representation,
+ since the latter can sometimes contain 255-digit integers. The
+ floating point numbers can have up to 10 decimal digits (and an
+ unbounded number of integer digits.)
+ Experimental, suggestions needed. (#1195)
+
+### credits 1.17
+
+This release was brought to you by
+Simon Michael,
+Aleksandar Dimitrov,
+Brian Wignall,
+Stephen Morgan,
+Jacek Generowicz,
+Gaith Hallak,
+Eric Mertens,
+Jakob Schöttl,
+Carl Richard Theodor Schneider,
+David Zhang,
+Amarandus,
+Evilham,
+Mateus Furquim and
+Rui Chen.
+
+
+## 2019/12/01 hledger 1.16
+
+**GHC 8.8 support, much more powerful CSV conversion rules,
+percentage balance reports, misc improvements.**
+([mail](https://groups.google.com/d/topic/hledger/wiMafb11uBQ/discussion))
+
+### project-wide changes 1.16
+
+- add support for GHC 8.8, base-compat 0.11 (#1090)
+
+- drop support for GHC 7.10
+
+- add descriptions to most issue tracker labels
+
+- matrix.hledger.org now redirects to a more readable/useful url
+
+### hledger cli 1.16
+
+- The `--anon` flag now also anonymises transaction codes and account
+ names declared with account directives. (Mykola Orliuk) (#901)
+
+- The benchmark suite has been disabled.
+
+#### commands
+
+- balance/bs/cf/is: balance commands now support the `-%`/`--percent` flag
+ to show amounts as percentages of the column's total. (Michael Kainer)
+
+ If there are multiple commodities involved in a report hledger bails
+ with an error message. This can be avoided by using `-B`/`--cost`. Also note
+ that if one uses -% with the balance command the chances are high that
+ all numbers are 0. This is due to the fact that by default balance sums
+ up to zero. If one wants to use -% in a meaningful way with balance one
+ has to add a query.
+
+ In order to keep the implementation as simple as possible `--tree` has no
+ influence over how the percentages are calculated, i.e., the percentages
+ always represent the fraction of the columns total. If one wants to know
+ the percentages relative to a parent account, one has to use a query to
+ narrow down the accounts.
+
+- balance: `--budget` no longer errors when there is neither budget nor
+ transactions in the report period (Dmitry Astapov)
+
+- balance: `--budget` has improved debug output (shows budget txns)
+ (Dmitry Astapov)
+
+- check-dates: now sets the exit status code (Amitai Burstein)
+
+- close: no longer strips zeroes after the decimal mark, and preserves
+ parseable output (#1137)
+
+- close: the `--close-to`, `--open-from` options allow closing/opening
+ account names to be chosen
+
+- import: create the journal if missing, like the add command
+ Streamlines import/migration instructions.
+
+- import: `--catchup` marks all transactions imported, without importing
+
+- import: more informative output: mention the input files, also show
+ a message when nothing was imported
+
+- prices: show price amounts with proper display style; always show
+ full precision
+
+- roi: don't give an error with empty input data (Dmitry Astapov)
+
+- tests: unit tests are now run by tasty, and show coloured output by default (#1090).
+ Test running options have changed, see the command help.
+ Some unit tests have been collapsed, so the reported test count has
+ dropped a little.
+
+#### journal format
+
+- Fixed: wrong dates generated by certain periodic transaction rules,
+ eg "~ every 12 months from 2019/04". (Dmitry Astapov) (#1085)
+
+#### csv format
+
+CSV conversion is now more powerful (#1095, Dmitry Astapov, Simon Michael):
+
+- A variable number of postings can be generated, from zero to nine. (#627, #1095)
+
+- In conditional blocks, `skip` can be used to skip one or more
+ records after a pattern match, or the new `end` rule can be used to
+ skip all remaining records. (#1076)
+
+- The new `balance-type` CSV rule controls which kind of balance
+ assertions are generated (=, ==, =*, ==*)
+
+- Postings with balance assignments can be generated. (#1000)
+
+- Both the amount-in/amount-out fields having a non-empty value is now
+ accepted, as long as one of them is zero. (#570)
+
+- Line feeds/carriage returns in (quoted) CSV values are now converted
+ to spaces during conversion. (#416, #841)
+
+- Field assignments can now unset a field (eg a posting can be
+ suppressed by assigning no value to its account).
+
+- CSV records with varying lengths are now allowed; short records will
+ be padded with empty fields as needed. This allows us to handle eg
+ exported Google spreadsheets, where trailing empty fields are omitted.
+
+- Journals generated from CSV are now finalised and checked like
+ ordinary journals (#1000). So invalid transactions generated from
+ CSV will be rejected, amount styles will be standardised etc.
+
+- Fixed: we no longer add an extra (third) space between description and comment.
+
+- Fixed: whitespace on the line after an if block no longer causes misparsing. (#1120)
+
+- Fixed: an empty field assignment no longer consumes the next line. (#1001)
+
+- Fixed: interpolation of field names containing punctuation now works.
+
+- Docs have been rewritten and clarified.
+
+Migration notes:
+
+- When `print`ing from CSV, there is now one less space between
+ transaction descriptions and comments, which may generate noisy
+ diffs if you are comparing old and new reports. `diff -w`
+ (`--ignore-all-space`) will filter these out.
+
+- CSV rules now give you more freedom to generate any journal
+ entries you want, including malformed or unbalanced ones.
+ The csv reader now checks the journal after conversion,
+ so it will report any problems with the generated entries.
+
+- Balance assertions generated from CSV are not checked, currently.
+ This is appropriate when you are downloading partial CSV data to
+ be merged into your main journal. If you do need to check balance
+ assertions right away, you can pipe through hledger again:
+
+ $ hledger -f a.csv print | hledger -f- print
+
+### hledger-ui 1.16
+
+- the B and V keys toggle cost or value display (like the `-B` and `-V`
+ command line flags)
+
+- uses hledger 1.16.1
+
+### hledger-web 1.16
+
+- The `--cors` option allows simple cross-origin requests to hledger-web
+ (Alejandro García Montoro)
+
+- Weeks in the add form's date picker now start on Mondays (#1109)
+ (Timofey Zakrevskiy)
+
+- No longer depends on json (#1190) or mtl-compat.
+
+- The test suite has been disabled for now.
+
+### credits 1.16
+
+Release contributors:
+Simon Michael,
+Dmitry Astapov,
+Mykola Orliuk,
+Brian Wignall,
+Alejandro García Montoro,
+Timofey ZAKREVSKIY,
+Amitai Burstein,
+Michael Kainer.
+
+
+## 2019/09/01 hledger 1.15
+
+**new website, faster and more flexible valuation, more accurate close command,
+tags `--values`, new descriptions/payees/notes/diff commands, misc. fixes.**
+([mail](https://groups.google.com/d/topic/hledger/ZIuHR_Gv7o8/discussion))
+
+### project-wide changes 1.15
+
+- new unified website: hledger.org now has its own git repo, has
+ absorbed the github wiki, and is generated with Sphinx.
+
+- hledger-api is now mothballed. Its functionality is included in hledger-web.
+
+- hledger-install.sh: bump to lts-14.4, hledger 1.15, drop
+ hledger-api, now also works on FreeBSD 12.
+
+- Wine has been added to the list of install options.
+
+- Dmitry Astapov's hledger docker image is now based on the "haskell" image.
+
+- Andreas Pauley's hledger-makeitso has been renamed to hledger-flow.
+
+- bin/ addon scripts: hledger-swap-dates added; hledger-check,
+ hledger-smooth updated. (#1072)
+
+- shell-completion scripts: updated
+
+- github: FUNDING.yml / sponsor button configured
+
+- tools: generatejournal updates: vary amount, make reports with fewer
+ zeroes, start from a fixed year to keep tests stable, also generate
+ P records. (#999)
+
+- tools: make, shake, CI: misc. updates
+
+- doc: add a README for the functional tests, linked from contrib guide
+
+### hledger cli 1.15
+
+- There is a new valuation option `--value=TYPE[,COMM]`, with
+ backwards-compatible `-B`/`--cost`, `-V`/`--market`, `-X`/`--exchange=COMM`
+ variants. These provide control over valuation date (#329), and
+ inference of indirect market prices (similar to Ledger's `-X`) (#131).
+ Experimental.
+
+- Market valuation (`-V`/`-X`/`--value`) is now much faster (#999):
+
+ +-------------------------------------------++--------------+--------------+
+ | || hledger-1.14 | hledger-1.15 |
+ +===========================================++==============+==============+
+ | -f examples/10000x1000x10.journal bal -Y || 2.43 | 2.44 |
+ | -f examples/10000x1000x10.journal bal -YV || 44.91 | 6.48 |
+ | -f examples/10000x1000x10.journal reg -Y || 4.60 | 4.15 |
+ | -f examples/10000x1000x10.journal reg -YV || 61.09 | 7.21 |
+ +-------------------------------------------++--------------+--------------+
+
+- How date options like `-M` and `-p` interact has been updated and clarified.
+ (Jakob Schöttl) (#1008, #1009, #1011)
+
+- Restore `--aux-date` and `--effective` as `--date2` aliases (#1034).
+ These Ledger-ish spellings were dropped over the years, to improve
+ `--help`'s layout. Now we support them again, as semi-hidden flags
+ (`--help` doesn't list them, but they are mentioned in `--date2`'s help).
+
+#### commands
+
+- add, web: on Windows, trying to add transactions to a file path
+ containing trailing periods (eg `hledger add -f Documents.\.hledger.journal`)
+ now gives an error, since this could cause data loss otherwise (#1056).
+ This affects the add command and hledger-web's add form.
+
+- bal: `--budget`: don't always convert to cost.
+
+- bal: `--budget`: don't show a percentage when budgeted and actual
+ amounts are in different commodities.
+
+- bal/bs/bse: `-H`/`--historical` or `--cumulative` now disables `-T`/`--row-total` (#329).
+ Multiperiod balance reports which show end balances (eg, `bal -MH` or `bs -M`)
+ no longer show a Totals column, since summing end balances generally
+ doesn't make sense.
+
+- bs: show end date(s) in title, not transactions date span (#1078)
+ Compound balance reports showing ending balances (eg balancesheet),
+ now show the ending date (single column) or range of ending
+ dates (multi column) in their title. ,, (double comma) is used
+ rather than - (hyphen) to suggest a sequence of discrete dates
+ rather than a continuous span.
+
+- close: preserve transaction prices (costs) accurately (#1035).
+ The generated closing/opening transactions were collapsing/misreporting
+ the costs in balances involving multiple costs.
+ Now, each separately-priced amount gets its own posting.
+ (And only the last of these (for each commodity) gets a balance assertion.)
+ Also the equity posting's amount is now always shown explicitly,
+ which in multicommodity situations means that multiple equity postings are shown.
+ The upshot is that a `balance -B` report will be unchanged after
+ the closing & opening transactions generated by the close command.
+
+- descriptions, payees, notes commands added (Caleb Maclennan)
+
+- diff: Gabriel Ebner's hledger-diff is now a built in command,
+ and https://github.com/gebner/hledger-diff is deprecated.
+
+- help: don't require a journal file
+
+- print: now also canonicalises the display style of balance assertion amounts (#1042)
+
+- reg: show negative amounts in red, like balance and Ledger
+
+- reg: fix `--average`, broken since 1.12 (#1003)
+
+- stats: show count of market prices (P directives), and the commodities covered
+
+- tags: add `--values` flag to list tag values.
+
+- tags: now runs much faster when there many tags
+
+#### journal format
+
+- Transactions and postings generated/modified by periodic transaction
+ rules and/or transaction modifier rules are now marked with
+ `generated-transaction`, `generated-posting`, and `modified` tags,
+ for easier troubleshooting and filtering.
+
+#### csv format
+
+- When interpolating CSV values, outer whitespace is now stripped.
+ This removes a potential snag in amount field assignments (#1051),
+ and hopefully is harmless and acceptable otherwise.
+
+- We no longer add inter-field spaces in CSV error messages,
+ which was misleading and not valid RFC-4180 CSV format.
+
+- CSV parse errors are human-readable again (broken since 1.11) (#1038)
+
+- CSV rules now allow the amount to be left unassigned if there is an
+ assignment to "balance", which generates a balance assignment. (#1000)
+
+### hledger-ui 1.15
+
+- uses hledger 1.15
+
+### hledger-web 1.15
+
+- `--serve-api` disables the usual server-side web UI (leaving only the API routes)
+
+- register page: account names are hyperlinked
+
+- ?sidebar= now hides the sidebar, same as ?sidebar=0
+
+- fix "_create_locale could not be located" error on windows 7 (#1039)
+
+- uses hledger 1.15
+
+### credits 1.15
+
+Release contributors:
+Simon Michael,
+Caleb Maclennan,
+Jakob Schöttl,
+Henning Thielemann,
+Dmitry Astapov,
+Ben Creasy,
+zieone,
+Boyd Kelly,
+Gabriel Ebner,
+Hans-Peter Deifel,
+Andreas Pauley.
+
+
+## 2019/03/01 hledger 1.14
+
+**inclusive balance assertions, commodities command, `--invert` option,
+JSON get/add support in hledger-web**
+([mail](https://groups.google.com/d/topic/hledger/f4Mir3PLooI/discussion))
+
+### project-wide changes 1.14
+
+- hledger.org website: now uses https, home page updates,
+ download page improved package list with status badges.
+ Also the github wiki pages are now rendered as part of hledger.org,
+ like the main site pages (with pandoc markdown and tables of contents).
+ Building the site now requires that a copy of the wiki is checked out
+ under wiki/.
+
+- bash completion support: removed duplicate options, added new
+ options, stopped listing `-h` as a command, added some completion for
+ external addon commands.
+
+- release automation improvements
+
+- makefile cleanups; make site-liverender helps with local site preview
+
+### hledger cli 1.14
+
+- journal: subaccount-including balance assertions have been
+ added, with syntax =* and ==* (experimental) (#290)
+
+- new commodities command lists commodity symbols
+
+- new `--invert` option flips sign of amounts in reports
+
+### hledger-ui 1.14
+
+- use hledger 1.14
+
+### hledger-web 1.14
+
+- serve the same JSON-providing routes as in hledger-api:
+ ```
+ /accountnames
+ /transactions
+ /prices
+ /commodities
+ /accounts
+ /accounttransactions/ACCT
+ ```
+ And allow adding a new transaction by PUT'ing JSON (similar to the
+ output of /transactions) to /add. This requires the `add` capability
+ (which is enabled by default). Here's how to test with curl:
+ ```
+ $ curl -s http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @in.json; echo
+ ```
+ (#316)
+
+- fix unbalanced transaction prevention in the add form
+
+- fix transaction-showing tooltips (#927)
+
+- manual updates: document `--capabilities`/`--capabilities-header` and
+ editing/uploading/downloading.
+
+- use hledger 1.14
+
+### hledger-api 1.14
+
+- use hledger 1.14
+
+### hledger-lib 1.14
+
+- added:
+ transaction, [v]post*, balassert* constructors, for tests etc.
+
+- renamed:
+ porigin -> poriginal
+
+- refactored:
+ transaction balancing & balance assertion checking (#438)
+
+### credits 1.14
+
+Release contributors:
+Simon Michael,
+Jakob Schöttl,
+Jakub Zárybnický.
+
+## 2019/02/01 hledger 1.13
+
+**Unified command CLI help/manuals, bash completions, docker support,
+improved budget report, `--transpose`, new account types syntax,
+usability & bug fixes.**
+([mail](https://groups.google.com/d/topic/hledger/ffkwwkcHmmU/discussion))
+
+### project-wide changes 1.13
+
+- packaging: A docker image providing the main hledger tools is now
+ linked on the download page. This is another way to get up-to-date
+ hledger tools without building them yourself (and, a way to run
+ hledger-ui on windows ?) (Dmitry Astapov, Simon Michael)
+
+- doc: fixed pandoc typography conversion in web manuals. Eg `--` was
+ being rendered as en-dash. ([#954](https://github.com/simonmichael/hledger/issues/954)).
+
+Developers:
+
+- developer docs have moved from the wiki into CONTRIBUTING.md ([#920](https://github.com/simonmichael/hledger/issues/920))
+
+- new streamlined changelog update process. Shake targets:
+
+ ./Shake changelogs
+ ./Shake CHANGES.md
+ ./Shake CHANGES.md-dry
+ ./Shake PKG/CHANGES.md
+ ./Shake PKG/CHANGES.md-dry
+
+ update the project-wide and/or package changelogs, inserting new
+ commits (touching the respective directory, since the tag version or
+ commit hash which is the first word in the changelog's previous top
+ heading) at the top, formatted as changelog entries.
+
+- ./Shake PKG - builds a package plus its embedded docs.
+ ./Shake build - builds all the packages and their embedded docs.
+ ("stack build PKG" does not notice changes in embedded doc files.)
+
+- make ghci-shake - loads Shake.hs in ghci
+
+- make tags - includes doc source files, hpack/cabal files, Shake.hs
+
+- make site-livereload - opens a reloading browser view on the website html
+ (requires `livereloadx`)
+
+- added a Dockerfile and helper scripts (Dmitry Astapov)
+
+- doc files and hpack/cabal files are included in TAGS again
+
+### hledger cli 1.13
+
+- cli: reorganised commands list. Addons now have a + prefix.
+
+- cli: the command line help and manual section for all hledger's
+ commands are now consistent, and generated from the same source.
+
+- cli: comprehensive bash completion support is now provided (in
+ shell-completion/). See how-to in the Cookbook. (Jakob Schöttl)
+
+- balance `--budget`: budget amounts now aggregate hierarchically, like
+ account balances. Unbudgeted accounts can be shown with `-E`/`--empty`
+ (along with zero-balance accounts), and the `--show-budgeted` flag has
+ been dropped. (Dmitry Astapov)
+
+- balance: new `--transpose` flag switches the rows and columns of
+ tabular balance reports (in txt and csv output formats). (Dmitry
+ Astapov)
+
+- close: generated balance assertions now have exact amounts with all
+ decimal digits, ignoring display precision. Also, balance assertion
+ amounts will no longer contain prices.
+ ([#941](https://github.com/simonmichael/hledger/issues/941),
+ [#824](https://github.com/simonmichael/hledger/issues/824),
+ [#958](https://github.com/simonmichael/hledger/issues/958))
+
+- files: now shows up in the commands list
+
+- import: be silent when there's nothing to import
+
+- roi: percentages smaller than 0.01% are displayed as zero (Dmitry
+ Astapov)
+
+- stats, ui: correct file order is preserved when using `--auto`
+ ([#949](https://github.com/simonmichael/hledger/issues/949))
+
+- journal: account directive: the account name can now be followed by
+ a comment on the same line
+
+- journal: account directive: account types for the bs/bse/cf/is
+ commands can now be set with a `type:` tag, whose value is `Asset`,
+ `Liability`, `Equity`, `Revenue`, `Expense`, `A`, `L`, `E`, `R` or
+ `X` (case-insensitive). The previous syntax (`account assets A`) is
+ now deprecated.
+
+- journal: account directive: account sort codes like `account 1000`
+ (introduced in 1.9, deprecated in 1.11) are no longer supported.
+
+- journal: transaction modifiers (auto postings) can affect periodic
+ transactions (`--auto` can add postings to transactions generated with
+ `--forecast`). (Dmitry Astapov)
+
+- journal: balance assertion errors now show exact amounts with all
+ decimal digits. Previously it was possible, in case of a commodity
+ directive limiting the display precision, to have a balance
+ assertion error with asserted and actual amounts looking the
+ same. ([#941](https://github.com/simonmichael/hledger/issues/941))
+
+- journal: fixed a periodic transaction parsing failure
+ ([#942](https://github.com/simonmichael/hledger/issues/942)) (Dmitry
+ Astapov)
+
+### hledger-ui 1.13
+
+- on posix systems, control-z suspends the program
+
+- control-l now works everywhere and redraws more reliably
+
+- the top status info is clearer
+
+- use hledger 1.13
+
+### hledger-web 1.13
+
+- use hledger 1.13
+
+### hledger-api 1.13
+
+- use hledger 1.13
+
+### hledger-lib 1.13
+
+- in Journal's jtxns field, forecasted txns are appended rather than prepended
+
+- API changes:
+
+ added:
+ +setFullPrecision
+ +setMinimalPrecision
+ +expectParseStateOn
+ +embedFileRelative
+ +hereFileRelative
+
+ changed:
+ - amultiplier -> aismultiplier
+ - Amount fields reordered for clearer debug output
+ - tpreceding_comment_lines -> tprecedingcomment, reordered
+ - Hledger.Data.TransactionModifier.transactionModifierToFunction -> modifyTransactions
+ - Hledger.Read.Common.applyTransactionModifiers -> Hledger.Data.Journal.journalModifyTransactions
+
+ - HelpTemplate -> CommandDoc
+
+### credits 1.13
+
+Release contributors:
+Simon Michael,
+Jakob Schöttl,
+Dmitry Astapov.
+
+
+## 2018/12/02 hledger 1.12
+
+**Account type declarations,
+complete balance assertions,
+GHC 8.6 support,
+hledger-ui usability updates,
+misc fixes**
+([mail](https://groups.google.com/d/topic/hledger/H7NYdvo0FeQ/discussion))
+
+### hledger cli 1.12
+
+* install script: ensure a new-enough version of stack; more informative output
+
+* build with GHC 8.6/base-4.12 (Peter Simons)
+
+* add required upper bound for statistics (Samuel May)
+
+* `--anon` anonymises more thoroughly (including linked original postings) (Moritz Kiefer)
+
+* unbalanced transaction errors now include location info (Mykola Orliuk)
+
+* accounts command: `--drop` also affects the default flat output, without needing an explicit `--flat` flag
+
+* accounts command: the `--codes` flag has been dropped
+
+* accounts command: filtering by non-account-name queries now works
+
+* add command: fix transaction rendering regression during data entry and in journal file
+
+* balance command: fix wrongful eliding of zero-balance parent accounts in tree mode (Dmitry Astapov)
+
+* journal format, bs/bse/cf/is commands: account directives can declare account types ([#877](https://github.com/simonmichael/hledger/issues/877))
+ Previously you had to use one of the standard english account names
+ (assets, liabilities..) for top-level accounts, if you wanted them to
+ appear in the right place in the balancesheet, balancesheetequity,
+ cashflow or incomestatement reports.
+
+ Now you can use your preferred account names, and use account directives
+ to declare which accounting class (Asset, Liability, Equity, Revenue or
+ eXpense) an account (and its subaccounts) belongs to, by writing one of
+ the letters A, L, E, R, X after the account name, after two or more
+ spaces. This syntax may change (see issue). Experimental.
+
+ Currently we allow unlimited account type declarations anywhere in the
+ account tree. So you could declare a liability account somewhere under
+ assets, and maybe a revenue account under that, and another asset account
+ even further down. In such cases you start to see oddities like accounts
+ appearing in multiple places in a tree-mode report. I have left it this
+ way for now in case it helps with, eg, modelling contra accounts, or
+ combining multiple files each with their own account type
+ declarations. (In that scenario, if we only allowed type declarations on
+ top-level accounts, or only allowed a single account of each type,
+ complications seem likely.)
+
+* journal format: periodic transaction rules now require a double space separator.
+ In periodic transaction rules which specify a transaction description or
+ same-line transaction comment, this must be separated from the period
+ expression by two or more spaces, to prevent ambiguous parsing. Eg
+ this will parse correctly as "monthly" thanks to the double space:
+
+ ~ monthly In 2020 we'll end this monthly transaction.
+
+* journal format: exact/complete balance assertions (Samuel May).
+ A stronger kind of balance assertion, written with a double equals sign,
+ asserts an account's complete account balance, not just the balance in
+ one commodity. (But only if it is a single-commodity balance, for now.)
+ Eg:
+
+ 1/1
+ (a) A 1
+ (a) B 1
+ (a) 0 = A 1 ; commodity A balance assertion, succeeds
+ (a) 0 == A 1 ; complete balance assertion, fails
+
+* journal format: account directives now allow whitespace or a comment after the account name
+
+* journal format: using ~ for home directory in include directives now works ([#896](https://github.com/simonmichael/hledger/issues/896)) (Mykola Orliuk)
+
+* journal format: prevent misleading parse error messages with cyclic include directives ([#853](https://github.com/simonmichael/hledger/issues/853)) (Alex Chen)
+
+* journal format: transaction modifier multipliers handle total-priced amounts correctly ([#928](https://github.com/simonmichael/hledger/issues/928)).
+ Multipliers (*N) in transaction modifier rules did not multiply
+ total-priced amounts properly. Now the total prices are also multiplied,
+ keeping the transaction balanced.
+
+* journal format: do amount inference/balance assignments/assertions before transaction modifiers ([#893](https://github.com/simonmichael/hledger/issues/893), [#908](https://github.com/simonmichael/hledger/issues/908)) (Jesse Rosenthal)
+ Previously, transaction modifier (auto postings) rules were applied
+ before missing amounts were inferred. This meant amount multipliers could
+ generate too many missing-amount postings, making the transaction
+ unbalanceable ([#893](https://github.com/simonmichael/hledger/issues/893)).
+
+ Now, missing amount inference (and balance assignments, and balance
+ assertions, which are interdependent) are done earlier, before
+ transaction modifier rules are applied ([#900](https://github.com/simonmichael/hledger/issues/900), [#903](https://github.com/simonmichael/hledger/issues/903)).
+
+ Also, we now disallow the combination of balance assignments and
+ transaction modifier rules which both affect the same account, which
+ could otherwise cause confusing balance assertion failures ([#912](https://github.com/simonmichael/hledger/issues/912)).
+ (Because assignments now generate amounts to satisfy balance assertions
+ before transaction modifier rules are applied ([#908](https://github.com/simonmichael/hledger/issues/908)).)
+
+* journal format: periodic transaction rules are now aware of Y default year directives. ([#892](https://github.com/simonmichael/hledger/issues/892))
+ Ie when a default year Y is in effect, they resolve partial or relative
+ dates using Y/1/1 as the reference date, rather than today's date.
+
+### hledger-ui 1.12
+
+* fix "Any" build error with GHC < 8.4
+
+* error screen: always show error position properly ([#904](https://github.com/simonmichael/hledger/issues/904)) (Mykola Orliuk)
+
+* accounts screen: show correct balances when there's only periodic transactions
+
+* drop the `--status-toggles` flag
+
+* periodic transactions and transaction modifiers are always enabled.
+ Rule-based transactions and postings are always generated
+ (`--forecast` and `--auto` are always on).
+ Experimental.
+
+* escape key resets to flat mode.
+ Flat mode is the default at startup. Probably it should reset to tree
+ mode if `--tree` was used at startup.
+
+* tree mode tweaks: add `--tree`/`-T`/`-F` flags, make flat mode the default,
+ toggle tree mode with T, ensure a visible effect on register screen
+
+* hide future txns by default, add `--future` flag, toggle with F.
+ You may have transactions dated later than today, perhaps piped from
+ print `--forecast` or recorded in the journal, which you don't want to
+ see except when forecasting.
+
+ By default, we now hide future transactions, showing "today's balance".
+ This can be toggled with the F key, which is easier than setting a
+ date query. `--present` and `--future` flags have been added to set the
+ initial mode.
+
+ (Experimental. Interactions with date queries have not been explored.)
+
+* quick help tweaks; try to show most useful info first
+
+* reorganise help dialog, fit content into 80x25 again
+
+* styling tweaks; cyan/blue -> white/yellow
+
+* less noisy styling in horizontal borders ([#838](https://github.com/simonmichael/hledger/issues/838))
+
+* register screen: positive amounts: green -> black
+ The green/red scheme helped distinguish the changes column from the
+ black/red balance column, but the default green is hard to read on
+ the pale background in some terminals. Also the changes column is
+ non-bold now.
+
+* use hledger 1.12
+
+### hledger-web 1.12
+
+* fix duplicate package.yaml keys warned about by hpack
+
+* use hledger 1.12
+
+### hledger-api 1.12
+
+* use hledger 1.12
+
+### hledger-lib 1.12
+
+* switch to megaparsec 7 (Alex Chen)
+ We now track the stack of include files in Journal ourselves, since
+ megaparsec dropped this feature.
+
+* add 'ExceptT' layer to our parser monad again (Alex Chen)
+ This was removed under the assumption that it would be possible to
+ write our parser without this capability. However, after a hairy
+ backtracking bug, we would now prefer to have the option to prevent
+ backtracking.
+
+* more support for location-aware parse errors when re-parsing (Alex Chen)
+
+* make 'includedirectivep' an 'ErroringJournalParser' (Alex Chen)
+
+* drop Ord instance breaking GHC 8.6 build (Peter Simons)
+
+* flip the arguments of (divide|multiply)[Mixed]Amount
+
+* showTransaction: fix a case showing multiple missing amounts
+ showTransaction could sometimes hide the last posting's amount even if
+ one of the other posting amounts was already implcit, producing invalid
+ transaction output.
+
+* plog, plogAt: add missing newline
+
+* split up journalFinalise, reorder journal finalisation steps ([#893](https://github.com/simonmichael/hledger/issues/893)) (Jesse Rosenthal)
+ The `journalFinalise` function has been split up, allowing more granular
+ control.
+
+* journalSetTime --> journalSetLastReadTime
+
+* journalSetFilePath has been removed, use journalAddFile instead
+
+### credits 1.12
+
+Release contributors:
+Simon Michael,
+Alex Chen,
+Jesse Rosenthal,
+Samuel May,
+Mykola Orliuk,
+Peter Simons,
+Moritz Kiefer,
+Dmitry Astapov,
+Felix Yan,
+Aiken Cairncross,
+Nikhil Jha.
+
+
+## 2018/9/30 hledger 1.11
+
+**Customisable account display order,
+support for other delimiter-separated formats (eg semicolon-separated),
+new files and roi commands,
+fixes**
+([mail](https://groups.google.com/d/topic/hledger/V62txFLaD_U/discussion))
+
+### hledger cli 1.11
+
+* The default display order of accounts is now influenced by
+ the order of account directives. Accounts declared by account
+ directives are displayed first (top-most), in declaration order,
+ followed by undeclared accounts in alphabetical order. Numeric
+ account codes are no longer used, and are ignored and considered
+ deprecated.
+
+ So if your accounts are displaying in a weird order after upgrading,
+ and you want them alphabetical like before, just sort your account
+ directives alphabetically.
+
+* Account sorting (by name, by declaration, by amount) is now more
+ robust and supported consistently by all commands (accounts,
+ balance, bs..) in all modes (tree & flat, tabular & non-tabular).
+
+* close: new `--opening`/`--closing` flags to print only the opening or
+ closing transaction
+
+* files: a new command to list included files
+
+* prices: query arguments are now supported. Prices can be filtered by
+ date, and postings providing transaction prices can also be filtered.
+
+* rewrite: help clarifies relation to print `--auto` ([#745](https://github.com/simonmichael/hledger/issues/745))
+
+* roi: a new command to compute return on investment, based on hledger-irr
+
+* test: has more verbose output, more informative failure messages,
+ and no longer tries to read the journal
+
+* csv: We use a more robust CSV lib (cassava) and now support
+ non-comma separators, eg `--separator ';'` (experimental, this flag
+ will probably become a CSV rule) ([#829](https://github.com/simonmichael/hledger/issues/829))
+
+* csv: interpolated field names in values are now properly case insensitive, so
+ this works:
+
+ fields ...,Transaction_Date,...
+ date %Transaction_Date
+
+* journal: D (default commodity) directives no longer break multiplier
+ amounts in transaction modifiers (AKA automated postings) ([#860](https://github.com/simonmichael/hledger/issues/860))
+
+* journal: "Automated Postings" have been renamed to "Transaction Modifiers".
+
+* journal: transaction comments in transaction modifier rules are now parsed correctly. ([#745](https://github.com/simonmichael/hledger/issues/745))
+
+* journal: when include files form a cycle, we give an error instead
+ of hanging.
+
+* upper-case day/month names in period expressions no longer give an error ([#847](https://github.com/simonmichael/hledger/issues/847), [#852](https://github.com/simonmichael/hledger/issues/852))
+
+
+### hledger-ui 1.11
+
+* uses hledger-lib 1.11
+
+
+### hledger-web 1.11
+
+* uses hledger-lib 1.11
+
+
+### hledger-api 1.11
+
+* uses hledger-lib 1.11
+
+
+### hledger-lib 1.11
+
+* compilation now works when locale is unset ([#849](https://github.com/simonmichael/hledger/issues/849))
+
+* all unit tests have been converted from HUnit+test-framework to easytest
+
+* doctests now run quicker by default, by skipping reloading between tests.
+ This can be disabled by passing `--slow` to the doctests test suite
+ executable.
+
+* doctests test suite executable now supports `--verbose`, which shows
+ progress output as tests are run if doctest 0.16.0+ is installed
+ (and hopefully is harmless otherwise).
+
+* doctests now support file pattern arguments, provide more informative output.
+ Limiting to just the file(s) you're interested can make doctest start
+ much quicker. With one big caveat: you can limit the starting files,
+ but it always imports and tests all other local files those import.
+
+* a bunch of custom Show instances have been replaced with defaults,
+ for easier troubleshooting. These were sometimes obscuring
+ important details, eg in test failure output. Our new policy is:
+ stick with default derived Show instances as far as possible, but
+ when necessary adjust them to valid haskell syntax so pretty-show
+ can pretty-print them (eg when they contain Day values, cf
+ https://github.com/haskell/time/issues/101). By convention, when
+ fields are shown in less than full detail, and/or in double-quoted
+ pseudo syntax, we show a double period (..) in the output.
+
+* Amount has a new Show instance. Amount's show instance hid
+ important details by default, and showing more details required
+ increasing the debug level, which was inconvenient. Now it has a
+ single show instance which shows more information, is fairly
+ compact, and is pretty-printable.
+
+ ghci> usd 1
+ OLD:
+ Amount {acommodity="$", aquantity=1.00, ..}
+ NEW:
+ Amount {acommodity = "$", aquantity = 1.00, aprice = NoPrice, astyle = AmountStyle "L False 2 Just '.' Nothing..", amultiplier = False}
+
+ MixedAmount's show instance is unchanged, but showMixedAmountDebug
+ is affected by this change:
+
+ ghci> putStrLn $ showMixedAmountDebug $ Mixed [usd 1]
+ OLD:
+ Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle {ascommodityside = L, ascommodityspaced = False, asprecision = 2, asdecimalpoint = Just '.', asdigitgroups = Nothing}}]
+ NEW:
+ Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle "L False 2 Just '.' Nothing.."}]
+
+* Same-line & next-line comments of transactions, postings, etc.
+ are now parsed a bit more precisely (followingcommentp).
+ Previously, parsing no comment gave the same result as an empty
+ comment (a single newline); now it gives an empty string.
+ Also, and perhaps as a consequence of the above, when there's no
+ same-line comment but there is a next-line comment, we'll insert an
+ empty first line, since otherwise next-line comments would get moved
+ up to the same line when rendered.
+
+* Hledger.Utils.Test exports HasCallStack
+
+* queryDateSpan, queryDateSpan' now intersect date AND'ed date spans
+ instead of unioning them, and docs are clearer.
+
+* pushAccount -> pushDeclaredAccount
+
+* jaccounts -> jdeclaredaccounts
+
+* AutoTransaction.hs -> PeriodicTransaction.hs & TransactionModifier.hs
+
+* Hledger.Utils.Debug helpers have been renamed/cleaned up
+
+### credits 1.11
+
+Release contributors:
+Simon Michael,
+Joseph Weston,
+Dmitry Astapov,
+Gaith Hallak,
+Jakub Zárybnický,
+Luca Molteni,
+SpicyCat.
+
+
+
+## 2018/6/30 hledger 1.10
+
+**hledger-web edit/upload/download and permissions,
+more expressive periodic transactions,
+more informative parse errors,
+misc fixes**
+([mail](https://groups.google.com/forum/#!msg/hledger/SWFV2n6xMQA/Ss78nil8AQAJ))
+
+### project-wide changes 1.10
+
+* build cleanly with all supported GHC versions again (7.10 to 8.4)
+
+* support latest deps
+
+* back in Stackage LTS (12.0)
+
+
+### hledger-lib 1.10
+
+* extensive refactoring and cleanup of parsers and related types and utilities
+
+* readJournalFile(s) cleanup, these now use InputOpts
+
+* doctests now run a bit faster ([#802](https://github.com/simonmichael/hledger/issues/802))
+
+
+### hledger cli 1.10
+
+* journal: many parse error messages have become more informative, and
+ some now show the source line and error location.
+
+* journal: `;tag:` is no longer parsed as a tag named ";tag" ([#655](https://github.com/simonmichael/hledger/issues/655))
+
+* journal: transaction price amounts having their own price amounts is
+ now a parse error
+
+* journal: amounts with space as digit group separator and trailing whitespace
+ now parse correctly ([#780](https://github.com/simonmichael/hledger/issues/780))
+
+* journal: in amounts containing digits and a single space, the space
+ is now interpreted as a digit group separator, not a decimal separator ([#749](https://github.com/simonmichael/hledger/issues/749))
+
+* journal: in commodity/format/D directives, the amount must now include a decimal separator.
+
+ When more precise control is needed over number parsing, our
+ recommended solution is commodity directives. Commodity directives
+ that don't specify the decimal separator leave things ambiguous,
+ increasing the chance of misparsing numbers. In some cases it could
+ cause amounts with a decimal point to be parsed as if with a digit
+ group separator, so 1.234 became 1234.
+
+ It seems the simple and really only way to do this reliably is to require
+ an explicit decimal point character. Most folks probably do this already.
+ Unfortunately, it makes another potential incompatiblity with ledger and
+ beancount journals. But the error message will be clear and easy to
+ work around.
+
+* journal: directives currently have diverse and somewhat tricky
+ semantics, especially with multiple files. The manual now describes
+ their behaviour precisely.
+
+* journal: `alias` and `apply account` directives now affect `account` directives ([#825](https://github.com/simonmichael/hledger/issues/825))
+
+* journal: periodic transactions can now have all the usual transaction fields
+ (status mark, code, description, comment), for generating more expressive
+ forecast transactions.
+
+* journal: forecast transactions now have the generating period
+ expression attached as a tag named "recur".
+
+* journal: periodic transactions now start on the first instance of the
+ recurring date, rather than the day after the last regular transaction ([#750](https://github.com/simonmichael/hledger/issues/750))
+
+* journal: periodic transaction rules now allow period expressions relative to today's date
+
+* csv: amount-in/amount-out errors are more detailed
+
+* balance: `--drop` is now ignored when not in flat mode,
+ rather than producing a corrupted report ([#754](https://github.com/simonmichael/hledger/issues/754))
+
+* budget: `--drop` now preserves the top-level account in `--budget` reports
+
+* register: in CSV output, the code field is now included ([#746](https://github.com/simonmichael/hledger/issues/746))
+
+* smart dates now allow the YYYYMM format, and are better documented
+
+* uses hledger-lib 1.10
+
+
+### hledger-ui 1.10
+
+* the effect of `--value`, `--forecast`, and `--anon` flags is now preserved on reload ([#753](https://github.com/simonmichael/hledger/issues/753))
+
+* edit-at-transaction-position is now also supported when $EDITOR is neovim
+
+* support/require fsnotify 0.3.0.1+
+
+* uses hledger-lib 1.10
+
+
+### hledger-web 1.10
+
+* view, add, edit permissions can be set at CLI or by Sandstorm HTTP header
+
+* the edit form has been revived, for whole-journal editing
+
+* the journal can now be uploaded and downloaded
+
+* the e key toggles empty accounts in the sidebar
+
+* multiple `-f` options, and `--auto`, work again
+
+* uses hledger-lib 1.10
+
+
+### hledger-api 1.10
+
+* uses hledger-lib 1.10
+
+
+### credits 1.10
+
+Release contributors:
+Simon Michael,
+Alex Chen,
+Everett Hildenbrandt,
+Jakub Zárybnický,
+Nolan Darilek,
+Dmitry Astapov,
+Jacob Weisz,
+Peter Simons,
+Stephen Morgan,
+Pavlo Kerestey,
+Trevor Riles,
+Léo Gaspard,
+Mykola Orliuk,
+Wad,
+Nana Amfo.
+
+
+
+## 2018/3/31 hledger 1.9
+
+**Report cleanups,
+normal-positive reports,
+HTML output,
+account sort codes,
+budget improvements.**
+([mail](https://groups.google.com/forum/#!topic/hledger/DifO6UbeKnU))
+
+Release contributors:
+Simon Michael,
+Eli Flanagan,
+Peter Simons,
+Christoph Nicolai,
+agander,
+M Parker,
+Moritz Kiefer,
+Mykola Orliuk.
+* support ghc 8.4, latest deps
+
+
+### hledger-lib 1.9
+
+* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix
+found when reading files.
+
+* CompoundBalanceReport amounts are now normally positive. (experimental)
+
+### hledger cli 1.9
+
+* journal: account directives can define a numeric account code to
+customize sorting. bal/bs/cf/is will sort accounts by account code,
+if any, then account name.
+
+* journal: support scientific number notation ([#704](https://github.com/simonmichael/hledger/issues/704), [#706](https://github.com/simonmichael/hledger/issues/706))
+
+* csv: reading a CSV file containing no records is no longer an error
+
+* cli: when the system text encoding is UTF-8, ignore any UTF-8 BOM
+prefix found when reading files. (Paypal's new CSV has this BOM
+prefix, causing a confusing parse error.)
+
+* cli: tabular reports no longer have a trailing blank line added.
+(This allows omitting the ">=0" delimiters in our functional tests,
+making them easier to read and maintain.)
+
+* acc: the accounts command now has `--declared` and `--used` flags
+
+* bal: the `--invert` flag flips all signs
+
+* bal: `--drop` now works with CSV output
+
+* bal/bs/bse/cf/is: show overall report span in title
+
+* bal/bs/bse/cf/is: show short month names as headings in monthly reports
+
+* bal/bs/bse/cf/is: these commands can now generate HTML output
+
+* bal/bs/is/cf: drop short name and indent fields from multicolumn CSV
+
+* bs/bse/cf/is: these, the "financial statement" commands, now show
+normal income, liability and equity balances as positive numbers.
+Negative numbers now indicate a contra-balance (eg an overdrawn
+checking account), a net loss, or a negative net worth. This makes
+these reports more like conventional financial statements, and easier
+to read and share with others. (Other commands, like balance, have not
+changed.) (experimental)
+
+* bs/cf/is: always show a tabular report, even with no report
+interval. Previously you would get a simple borderless report like
+the original balance command. Less code, fewer bugs.
+
+* bs/bse/cf/is: in CSV output, don't repeat the headings row for each subreport
+
+* budget: warn that CSV output with bal `--budget` is unimplemented
+
+* budget: bal `--budget` shows budget goals even with no or zero actual amounts.
+Makes budget reports more intuitive, at the cost of a temporary hack
+which may misorder columns in some cases (if actual and budget
+activity occur in a different range of columns).
+
+* budget: `--budget` uses only periodic txns with the selected interval.
+Budgets with different interval, eg a daily and weekly budget, are independent.
+
+* budget: show mostly fixed-width columns for readability
+
+* budget: fix bug where a budget report could include budget goals
+ending on the day before the report start date (splitSpan issue)
+
+* close: the equity command has been renamed to close. It now ignores
+any begin date (it always closes historical end balances). It also
+ignores `--date2`.
+
+### hledger-ui 1.9
+
+* `-E`/`--empty` toggles zeroes at startup (with opposite default to cli)
+
+### hledger-web 1.9
+
+* `-E`/`--empty` toggles zeroes at startup (with opposite default to cli)
+
+### hledger-api 1.9
+
+
+
+## 2017/12/31 hledger 1.5
+
+([mail](https://groups.google.com/forum/#!topic/hledger/CyNifndzZxk))
+
+Release contributors:
+Simon Michael,
+Dmitry Astapov,
+Mykola Orliuk,
+Eli Flanagan,
+Elijah Caine,
+Sam Jeeves,
+Matthias Kauer,
+Hans-Peter Deifel,
+Mick Dekkers,
+Nadrieril,
+Alvaro Fernando García.
+
+### project-wide changes 1.5
+
+* remove upper bounds on all but hledger* and base (experimental)
+ It's rare that my deps break their api or that newer versions must
+ be avoided, and very common that they release new versions which I
+ must tediously and promptly test and release hackage revisions for
+ or risk falling out of stackage. Trying it this way for a bit.
+
+
+### hledger-lib 1.5
+
+* `-V`/`--value` uses today's market prices by default, not those of last transaction date. [#683](https://github.com/simonmichael/hledger/issues/683), [#648](https://github.com/simonmichael/hledger/issues/648))
+
+* csv: allow balance assignment (balance assertion only, no amount) in csv records (Nadrieril)
+
+* journal: allow space as digit group separator character, [#330](https://github.com/simonmichael/hledger/issues/330) (Mykola Orliuk)
+
+* journal: balance assertion errors now show line of failed assertion posting, [#481](https://github.com/simonmichael/hledger/issues/481) (Sam Jeeves)
+
+* journal: better errors for directives, [#402](https://github.com/simonmichael/hledger/issues/402) (Mykola Orliuk)
+
+* journal: better errors for included files, [#660](https://github.com/simonmichael/hledger/issues/660) (Mykola Orliuk)
+
+* journal: commodity directives in parent files are inherited by included files, [#487](https://github.com/simonmichael/hledger/issues/487) (Mykola Orliuk)
+
+* journal: commodity directives limits precision even after `-B`, [#509](https://github.com/simonmichael/hledger/issues/509) (Mykola Orliuk)
+
+* journal: decimal point/digit group separator chars are now inferred from an applicable commodity directive or default commodity directive. [#399](https://github.com/simonmichael/hledger/issues/399), [#487](https://github.com/simonmichael/hledger/issues/487) (Mykola Orliuk)
+
+* journal: numbers are parsed more strictly (Mykola Orliuk)
+
+* journal: support Ledger-style automated postings, enabled with `--auto` flag (Dmitry Astapov)
+
+* journal: support Ledger-style periodic transactions, enabled with `--forecast` flag (Dmitry Astapov)
+
+* period expressions: fix "nth day of {week,month}", which could generate wrong intervals (Dmitry Astapov)
+
+* period expressions: month names are now case-insensitive (Dmitry Astapov)
+
+* period expressions: stricter checking for invalid expressions (Mykola Orliuk)
+
+* period expressions: support "every 11th Nov" (Dmitry Astapov)
+
+* period expressions: support "every 2nd Thursday of month" (Dmitry Astapov)
+
+* period expressions: support "every Tuesday", short for "every th day of week" (Dmitry Astapov)
+
+### hledger cli 1.5
+
+* `--auto` adds Ledger-style automated postings to transactions (Dmitry Astapov, Mykola Orliuk)
+
+* `--forecast` generates Ledger-style periodic transactions in the future (Dmitry Astapov, Mykola Orliuk)
+
+* `-V`/`--value` uses today's market prices by default, not those of last transaction date. [#683](https://github.com/simonmichael/hledger/issues/683), [#648](https://github.com/simonmichael/hledger/issues/648)
+
+* add: suggest implied (parent) and declared (by account directives) account names also
+
+* bal: `--budget` shows performance compared to budget goals defined
+ with periodic transactions. Accounts with budget goals are
+ displayed folded (depth-clipped) at a depth matching the budget
+ specification. Unbudgeted accounts are hidden, or with
+ `--show-unbudgeted`, shown at their usual depth. (Dmitry Astapov)
+
+* import: the output of `--dry-run` is now valid journal format
+
+* print: `-B` shows converted amounts again, as in 1.1, even without
+ `-x`. [#551](https://github.com/simonmichael/hledger/issues/551) (Mykola Orliuk, Simon Michael)
+
+* tag: the first argument now filters tag names, additional arguments
+ filter transactions ([#261](https://github.com/simonmichael/hledger/issues/261))
+
+### hledger-ui 1.5
+
+* fix help -> view manual (on posix platforms) [#623](https://github.com/simonmichael/hledger/issues/623)
+
+* support `-V`/`--value`, `--forecast`, `--auto`
+
+### hledger-web 1.5
+
+* add form account fields now suggest implied and declared account names also
+
+* add form date field now uses a datepicker (Eli Flanagan)
+
+* don't write a session file at startup, don't require a writable working directory
+
+* support `-V`/`--value`, --forecast, `--auto`
+
+### hledger-api 1.5
+
+
+## 2017/9/30 hledger 1.4
+
+**easy install script,
+simpler help commands,
+experimental addon commands now built in,
+new balancesheetequity/tags commands,
+new import command for easy CSV merging,
+print can detect new transactions,
+balance reports can sort by amount,
+cli conveniences**
+([mail](https://groups.google.com/forum/#!topic/hledger/tdtkhchqg9k))
+
+Release contributors:
+Simon Michael,
+Nicholas Niro,
+Hans-Peter Deifel,
+Jakub Zárybnický,
+Felix Yan,
+Mark Hansen,
+Christian G. Warden,
+Nissar Chababy,
+Peter Simons.
+
+
+* update stack configs for the last three GHC versions, add "make
+test-stackage" for finding stackage build problems, switch to GHC
+8.2.1 as default for developer builds
+
+* streamline docs page
+
+* improve changelog/release notes process
+
+* improve makefile help and speed
+
+* Added a new installer script for the hledger tools, which aims to
+dodge common pitfalls and just work. Based on the stack install
+script, this bash script is cross platform, uses cabal or stack,
+installs stack and GHC if needed, and installs the latest release of
+all major hledger packages. See http://hledger.org/download for details.
+
+### hledger-lib 1.4
+
+* add readJournalFile[s]WithOpts, with simpler arguments and support
+for detecting new transactions since the last read.
+
+* query: add payee: and note: query terms, improve description/payee/note docs (Jakub Zárybnický, Simon Michael, [#598](https://github.com/simonmichael/hledger/issues/598), [#608](https://github.com/simonmichael/hledger/issues/608))
+
+* journal, cli: make trailing whitespace significant in regex account aliases
+Trailing whitespace in the replacement part of a regular expression
+account alias is now significant. Eg, converting a parent account to
+just an account name prefix: `--alias '/:acct:/=:acct '`
+
+* timedot: allow a quantity of seconds, minutes, days, weeks, months
+ or years to be logged as Ns, Nm, Nd, Nw, Nmo, Ny
+
+* csv: switch the order of generated postings, so account1 is first.
+This simplifies things and facilitates future improvements.
+
+* csv: show the "creating/using rules file" message only with `--debug`
+
+* csv: fix multiple includes in one rules file
+
+* csv: add "newest-first" rule for more robust same-day ordering
+
+* deps: allow ansi-terminal 0.7
+
+* deps: add missing parsec lower bound, possibly related to [#596](https://github.com/simonmichael/hledger/issues/596), [fpco/stackage#2835](https://github.com/fpco/stackage/issues/2835)
+
+* deps: drop oldtime flag, require time 1.5+
+
+* deps: remove ghc < 7.6 support, remove obsolete CPP conditionals
+
+* deps: fix test suite with ghc 8.2
+
+
+
+* Fix a bug with `-H` showing nothing for empty periods ([#583](https://github.com/simonmichael/hledger/issues/583), Nicholas Niro)
+This patch fixes a bug that happened when using the `-H` option on
+a period without any transaction. Previously, the behavior was no
+output at all even though it should have shown the previous ending balances
+of past transactions. (This is similar to previously using `-H` with `-E`,
+but with the extra advantage of not showing empty accounts)
+
+* allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594))
+
+* allow megaparsec-6.1 (Hans-Peter Deifel)
+
+* fix test suite with Cabal 2 ([#596](https://github.com/simonmichael/hledger/issues/596))
+
+### hledger cli 1.4
+
+* cli: a @FILE argument reads flags & args from FILE, one per line
+
+* cli: reorganized commands list, added some new command aliases:
+ accounts: a
+ balance: b
+ print: p, txns
+ register: r
+
+* cli: accept `-NUM` as a shortcut for `--depth=NUM` (eg: -2)
+
+* cli: improve command-line help for `--date2` ([#604](https://github.com/simonmichael/hledger/issues/604))
+
+* cli: make `--help` and `-h` the same, drop `--man` and `--info` for now ([#579](https://github.com/simonmichael/hledger/issues/579))
+
+* help: offers multiple formats, accepts topic substrings.
+ The separate info/man commands have been dropped. help now
+ chooses an appropriate documentation format as follows:
+ - it uses info if available,
+ - otherwise man if available,
+ - otherwise $PAGER if defined,
+ - otherwise less if available,
+ - otherwise it prints on stdout
+ - (and it always prints on stdout when piped).
+ You can override this with the `--info`/`--man`/`--pager`/`--cat` flags.
+ ([#579](https://github.com/simonmichael/hledger/issues/579))
+
+* bal/bs/cf/is: `--sort-amount`/`-S` sorts by largest amount instead of
+ account name
+
+* bs/cf/is: support `--output-file` and `--output-format=txt|csv`
+ The CSV output should be reasonably ok for dragging into a
+ spreadsheet and reformatting.
+
+* bal/bs/cf/is: consistent double space between columns, consistent
+ single final blank line. Previously, amounts wider than the column
+ headings would be separated by only a single space.
+
+* bs/is: don't let an empty subreport disable the grand totals (fixes [#588](https://github.com/simonmichael/hledger/issues/588))
+
+* cf: exclude asset accounts with ":fixed" in their name (Christian G. Warden, Simon Michael, [#584](https://github.com/simonmichael/hledger/issues/584))
+
+* new balancesheetequity command: like balancesheet but also shows
+ equity accounts (Nicholas Niro)
+
+* new import command: adds new transactions seen in one or more input
+ files to the main journal file
+
+* print: `--new` shows only transactions added since last time
+ (saves state in .latest.JOURNALFILE file)
+
+* new tags command: lists tags in matched transactions
+
+* most addons formerly shipped in bin/ are now builtin commands. These
+ include: check-dates, check-dupes, equity, prices, print-unique,
+ register-match, rewrite.
+
+* refactor: new Commands module and subdirectory.
+ Builtin commands are now gathered more tightly in a single module,
+ Hledger.Cli.Commands, facilitating change. The legacy "convert"
+ command has been dropped.
+
+* refactor: BalanceView -> CompoundBalanceCommand
+
+* deps: drop support for directory < 1.2
+
+* deps: allow ansi-terminal 0.7
+
+* deps: drop oldtime flag, require time 1.5+
+
+* deps: simplify shakespeare bounds
+
+* deps: remove ghc < 7.6 support
+
+
+
+* bs/is: don't let an empty subreport disable the grand totals ([#588](https://github.com/simonmichael/hledger/issues/588))
+
+* allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594))
+
+* allow megaparsec-6.1 (Hans-Peter Deifel)
+
+* restore upper bounds on hledger packages
+
+### hledger-ui 1.4
+
+* a @FILE argument reads flags & args from FILE, one per line
+
+* enable `--pivot` and `--anon` options, like hledger CLI ([#474](https://github.com/simonmichael/hledger/issues/474)) (Jakub Zárybnický)
+
+* accept `-NUM` as a shortcut for `--depth NUM`
+
+* deps: allow ansi-terminal 0.7
+
+* deps: drop oldtime flag, require time 1.5+
+
+
+
+* allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594), Simon Michael, Hans-Peter Deifel)
+
+* allow megaparsec-6.1 (Hans-Peter Deifel)
+
+* allow vty 5.17 (Felix Yan)
+
+* allow brick 0.24
+
+* restore upper bounds on hledger packages
+
+### hledger-web 1.4
+
+* a @FILE argument reads flags & args from FILE, one per line
+
+* enable `--pivot` and `--anon` options, like hledger CLI ([#474](https://github.com/simonmichael/hledger/issues/474)) (Jakub Zárybnický)
+
+* web: Make "Add transaction" button tabbable ([#430](https://github.com/simonmichael/hledger/issues/430)) (Jakub Zárybnický)
+
+* accept `-NUM` as a shortcut for `--depth NUM`
+
+* deps: drop oldtime flag, require time 1.5+, remove ghc < 7.6 support
+
+
+
+* remove unnecessary bound to satisfy hackage server
+
+
+
+* allow megaparsec 6 ([#594](https://github.com/simonmichael/hledger/issues/594), Simon Michael, Hans-Peter Deifel)
+
+* allow megaparsec-6.1 (Hans-Peter Deifel)
+
+* restore upper bounds on hledger packages
+
+### hledger-api 1.4
+
+* api: add support for swagger2 2.1.5+ (fixes [#612](https://github.com/simonmichael/hledger/issues/612))
+
+
+
+* require servant-server 0.10+ to fix compilation warning
+
+* restore upper bounds on hledger packages
+
+
+## 2017/6/30 hledger 1.3
+
+**terminology/UI improvements for the status field,
+selection/scrolling/movement improvements in hledger-ui,
+negative amounts shown in red,
+bugfixes.**
+([mail](https://groups.google.com/d/msg/hledger/X4iR1wpaq0E/_v5BLQIXAgAJ))
+
+Release contributors:
+Simon Michael,
+Mykola Orliuk,
+Christian G. Warden,
+Dmitry Astapov,
+Justin Le,
+Joe Horsnell,
+Nicolas Wavrant,
+afarrow,
+Carel Fellinger,
+flip111,
+David Reaver,
+Felix Yan,
+Nissar Chababy,
+Jan Zerebecki.
+
+
+
+
+
+
+
+
+#### Tools
+
+make ghci-prof starts GHCI in profiling mode, enabling stack traces with traceStack
+
+make ghci-web now also creates required symlinks
+
+make site-reload opens an auto-reloading browser on the latest site html
+
+make changelog-draft shows the commits since last tag as org nodes
+
+### hledger-lib 1.3
+
+#### journal format
+
+The "uncleared" transaction/posting status (and associated UI flags
+and keys) has been renamed to "unmarked" to remove ambiguity and
+confusion. See the issue and linked mail list discussion for more
+background. ([#564](https://github.com/simonmichael/hledger/issues/564))
+
+#### csv format
+
+In CSV conversion rules, assigning to the "balance" field name
+creates balance assertions ([#537](https://github.com/simonmichael/hledger/issues/537), Dmitry Astapov).
+
+Doubled minus signs are handled more robustly (fixes [#524](https://github.com/simonmichael/hledger/issues/524), Nicolas
+Wavrant, Simon Michael)
+
+#### Misc
+
+Multiple status: query terms are now OR'd together. ([#564](https://github.com/simonmichael/hledger/issues/564))
+
+Deps: allow megaparsec 5.3.
+
+### hledger cli 1.3
+
+#### CLI
+
+The "uncleared" transaction/posting status, and associated UI flags
+and keys, have been renamed to "unmarked" to remove ambiguity and
+confusion. This means that we have dropped the `--uncleared` flag,
+and our `-U` flag now matches only unmarked things and not pending
+ones. See the issue and linked mail list discussion for more
+background. ([#564](https://github.com/simonmichael/hledger/issues/564))
+
+Also the `-P` short flag has been added for `--pending`, and the `-U`/`-P`/`-C`
+flags can be combined.
+
+bs/is: fix "Ratio has zero denominator" error ([#535](https://github.com/simonmichael/hledger/issues/535))
+
+bs/is/cf: fix `--flat` ([#552](https://github.com/simonmichael/hledger/issues/552)) (Justin Le, Simon Michael)
+
+bal/bs/is/cf: show negative amounts in red (Simon Michael, Justin Le).
+These commands now show negative amounts in red, when hledger detects
+that ANSI codes are supported, (ie when TERM is not "dumb" and stdout
+is not being redirected or piped).
+
+print: show pending mark on postings (fixes [#563](https://github.com/simonmichael/hledger/issues/563)).
+A pending mark on postings is now displayed, just like a cleared mark.
+Also there will now be a space between the mark and account name.
+
+print: amounts are now better aligned, eg when there are posting
+status marks or virtual postings.
+
+#### Addons
+
+prices: add `--inverted-costs` flag, sort output, increase precision
+(Mykola Orliuk)
+
+rewrite: add support for rewriting multipler postings into different
+commodities. For example, postings in hours can be used to generate
+postings in USD. ([#557](https://github.com/simonmichael/hledger/issues/557)) (Christian G. Warden)
+
+`make addons` compiles the experimental add-ons.
+
+### hledger-ui 1.3
+
+The register screen now shows transaction status marks.
+
+The "uncleared" status, and associated UI flags and keys, have been
+renamed to "unmarked" to remove ambiguity and confusion. This means
+that we have dropped the `--uncleared` flag, and our `-U` flag now
+matches only unmarked things and not pending ones. See the issue and
+linked mail list discussion for more background. ([#564](https://github.com/simonmichael/hledger/issues/564))
+
+The P key toggles pending mode, consistent with U (unmarked) and C
+(cleared). There is also a temporary `--status-toggles` flag for testing
+other toggle styles; see `hledger-ui -h`. ([#564](https://github.com/simonmichael/hledger/issues/564))
+
+There is now less "warping" of selection when lists change:
+
+- When the selected account disappears, eg when toggling zero
+ accounts, the selection moves to the alphabetically preceding item,
+ instead of the first one.
+
+- When the selected transaction disappears, eg when toggling status
+ filters, the selection moves to the nearest transaction by date (and
+ if several have the same date, by journal order), instead of the
+ last one.
+
+In the accounts and register screens, you can now scroll down further
+so that the last item need not always be shown at the bottom of the
+screen. And we now try to show the selected item centered in the
+following situations:
+
+- after moving to the end with Page down/End
+- after toggling filters/display modes (status, real, historical..)
+- on pressing the control-l key (this forces a screen redraw, also)
+- on entering the register screen from the accounts screen
+ (except the first time, a known problem).
+
+Items near the top won't be centered because we don't scroll above the
+top of the list.
+
+Emacs movement keys are now supported, as well as VI keys.
+`CTRL-b/CTRL-f/CTRL-n/CTRL-p` and `hjkl` should work wherever unmodified arrow keys work.
+
+In the transaction screen, amounts are now better aligned, eg when
+there are posting status marks or virtual postings.
+
+Deps: allow brick 0.19 ([#575](https://github.com/simonmichael/hledger/issues/575), Felix Yan, Simon Michael)
+
+### hledger-web 1.3
+
+Depends on hledger 1.3.
+
+### hledger-api 1.3
+
+Depends on hledger 1.3.
+
+
+
+## 2017/3/31 hledger 1.2
+
+**new commands list,
+more powerful balancesheet/incomestatement/cashflow commands,
+more parseable print output,
+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-wide changes 1.2
+
+#### 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](https://github.com/simonmichael/hledger/issues/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.
+
+#### ledger format
+
+The experimental `ledger:` reader based on the WIP ledger4 project has
+been disabled, reducing build dependencies.
+
+#### Misc
+
+Fix a bug when tying the knot between postings and their parent transaction, reducing memory usage by about 10% ([#483](https://github.com/simonmichael/hledger/issues/483)) (Mykola Orliuk)
+
+Fix a few spaceleaks ([#413](https://github.com/simonmichael/hledger/issues/413)) (Moritz Kiefer)
+
+Add Ledger.Parse.Text to package.yaml, fixing a potential build failure.
+
+Allow megaparsec 5.2 ([#503](https://github.com/simonmichael/hledger/issues/503))
+
+Rename optserror -> usageError, consolidate with other error functions
+
+### hledger cli 1.2
+
+#### CLI
+
+"hledger" and "hledger -h" now print a better organised commands list
+and general usage message respectively ([#297](https://github.com/simonmichael/hledger/issues/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](https://github.com/simonmichael/hledger/issues/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](https://github.com/simonmichael/hledger/issues/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)
+
+balancesheet has always ignored a begin date specified with a `-b` or
+`-p` option; now it also ignores a begin date specified with a `date:`
+query. (Related discussion at [#531](https://github.com/simonmichael/hledger/issues/531))
+
+#### print
+
+The output of print is now always a valid journal (fixes [#465](https://github.com/simonmichael/hledger/issues/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](https://github.com/simonmichael/hledger/issues/442)). (Mykola Orliuk)
+
+Don't lose the commodity of zero amounts/zero balance assertions (fixes [#475](https://github.com/simonmichael/hledger/issues/475)) (Mykola Orliuk)
+
+#### Misc
+
+Fix a regression in the readability of option parsing errors ([#478](https://github.com/simonmichael/hledger/issues/478)) (Hans-Peter Deifel)
+
+Fix an example in Cli/Main.hs (Steven R. Baker)
+
+Allow megaparsec 5.2 ([#503](https://github.com/simonmichael/hledger/issues/503))
+
+### hledger-ui 1.2
+
+Fix a pattern match failure when pressing E on the transaction screen (fixes [#508](https://github.com/simonmichael/hledger/issues/508))
+
+Accounts with ? in name had empty registers (fixes [#498](https://github.com/simonmichael/hledger/issues/498)) (Bryan Richter)
+
+Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons)
+
+Allow megaparsec 5.2 (fixes [#503](https://github.com/simonmichael/hledger/issues/503))
+
+Allow text-zipper 0.10
+
+### hledger-web 1.2
+
+Accounts with ? in name had empty registers (fixes [#498](https://github.com/simonmichael/hledger/issues/498)) (Bryan Richter)
+
+Allow megaparsec 5.2 (fixes [#503](https://github.com/simonmichael/hledger/issues/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 changes 1.1
+
+#### 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 cli 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.**
+
+([mail](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.
+
+
+#### 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
+
+- 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 cli 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)
+
+
+
+## 2008-2015 Pre-1.0
+
+### 2015/10/30 hledger 0.27
+
+**New curses-style interface, market value reporting, wide characters, fast regex aliases, man pages**
+([mail](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](ui.md) 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
+ >>
+ 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
+
+**GHC 7.10 compatibility, terminal width awareness, useful averages and totals columns, and a more robust hledger-web add form.**
+
+[mail](https://groups.google.com/forum/#!topic/hledger/k2Y_NYZGGJw)
+
+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
+
+**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.**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/1028)
+
+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:N, where N is not 0, now do an unsigned
+ comparison of the amount and N. That is, they compare the absolute magnitude.
+ To do a signed comparison instead, write N with its sign (eg amt:+N, amt:<+N, amt:>-N).
+- Fix: amount queries no longer give false positives on multi-commodity amounts.
+
+Miscellaneous:
+
+- Default report dates now derive from the secondary dates when `--date2` is in effect.
+- Default report dates now notice any posting dates outside the transaction dates' span.
+- Debug output improvements.
+- New add-on example: extra/hledger-rewrite.hs, adds postings to matched entries.
+- Compatible with GHC 7.2 ([#155](http://bugs.hledger.org/155)) - GHC 7.8, shakespeare 2
+
+
+### 2014/5/1 hledger-web 0.23
+
+Changes since 0.22.8:
+
+- The `--static-root` flag has been renamed to `--file-url`.
+- hledger-web now builds with Cabal's default `-O`, not `-O2`,
+ so may be a little quicker/less memory-hungry to install.
+
+
+##### 2014/4/29 hledger-web 0.22.8
+
+- allow shakespeare 2.* ([#179](http://bugs.hledger.org/179))
+
+##### 2014/4/17 hledger-web 0.22.7
+
+- add Peter Simons' patch fixing Data.Conduit.Network HostIPv4 error ([#171](http://bugs.hledger.org/171))
+
+##### 2014/4/16 hledger-web 0.22.6
+
+- depend on hledger[-lib] 0.22.2
+
+##### 2014/4/16 hledger 0.22.2
+
+- display years before 1000 with four digits, not three
+- avoid pretty-show to build with GHC < 7.4
+- allow text 1.1, drop data-pprint to build with GHC 7.8.x
+
+##### 2014/4/15 hledger-web 0.22.5
+
+- allow http-client 0.3.*, fixing cabal install again with GHC <= 7.6 (not yet 7.8)
+- use pretty-show only with GHC 7.4+, fixing GHC 7.2 (fixes [#155](http://bugs.hledger.org/155))
+- allow warp 2.1, fixing cabal install
+
+##### 2014/2/10 hledger-web 0.22.4
+
+* web: include the right unminified version of jquery.url.js (1.1) to avoid js breakage
+
+##### 2014/2/10 hledger-web 0.22.3
+
+* web: fix version number reported by `--version`
+
+##### 2014/2/10 hledger-web 0.22.2
+
+New:
+
+* web: new option `--static-root` to set the base url for static files
+
+Improved:
+
+* web: include unminified source of all javascript to help packagers (fixes [#161](http://bugs.hledger.org/161))
+* web: work around clang-related build failures with OS X mavericks/XCode 5
+* web: allow blaze-html 0.7 (closes [#159](http://bugs.hledger.org/159))
+
+
+##### 2014/1/6 hledger 0.22.1
+
+- require the latest pretty-show so hledger installation no longer
+ needs an upgraded version of happy, and the docs build on hackage
+
+- require regex-tdfa directly instead of regex-compat-tdfa,
+ simplifying Debian packaging
+
+### 2013/12/13 hledger 0.22
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/5333)
+
+New:
+
+- balance: with a reporting interval (monthly, yearly etc.), the
+ [balance command](hledger.md#balance) will now show a multi-column report, showing either
+ the per-period changes in balance (by default),
+ the period ending balances starting from zero (`--cumulative`),
+ or the actual period ending balances (`--historical`).
+ A more detailed specification of the balance command's behaviour
+ has been added to [Hledger.Cli.Balance](http://hackage.haskell.org/package/hledger/docs/Hledger-Cli-Balance.html).
+
+- csv: rules files can now include other rules files, useful for factoring out common rules
+
+- queries: `sym:REGEXP` matches commodity symbols
+
+- register: `--average`/`-A` shows a running average, like ledger
+
+- in period expressions, `-` (hyphen) can be used as a more compact
+ synonym for `from` and `to`. Eg: `-p 2012/12/1-2013/2/1` or `date:aug-`.
+
+- the add-on script examples in extra/ have been updated; get the
+ hledger source and add .../hledger/extra/ to your PATH to make them
+ available. They include:
+
+ - `hledger-accountnames.hs` - print account names
+ - `hledger-balance-csv.hs` - print a balance report as CSV
+ - `hledger-equity.hs` - print an entry matching all account balances (like ledger)
+ - `hledger-print-unique.hs` - print only journal entries unique descriptions
+ - `hledger-register-csv.hs` - print a register report as CSV
+
+Improved:
+
+- balancesheet: now shows just assets and liabilities, not equity
+
+- print: comment positions (same line or next line) are now preserved
+
+- queries: `amt` now uses the = operator by default, eg `amt:50` is
+ equivalent to `amt:=50`
+
+- command line processing has been overhauled and made more
+ consistent, and now has tests and debug output. More flags now work
+ both before and after COMMAND: `-f`, `--rule-file`, `--alias`,
+ `--help`, `--debug`, `--version`. Command line help, command
+ aliases, API docs and code have been improved.
+
+- `--debug` now takes an optional numeric argument to set the debug level
+ higher than 1, for more verbose debug output in a few cases.
+
+Fixed:
+
+- csv: CSV data containing non-ascii characters is now supported
+
+- build with latest versions of dependencies (text, warp, http-conduit etc.)
+
+Release contributors:
+
+Marko Kocić, Max Bolingbroke, and a big welcome to first-time committer John Wiegley! :)
+
+##### 2013/7/10 hledger-web 0.21.3
+
+ - drop yesod-platform dependency, it is not worthwhile. The other
+ yesod dependencies are currently without version ranges, so cabal
+ install might require `--constraint` to restrict them in some cases.
+
+##### 2013/6/23 hledger 0.21.3
+
+ - csv: fix wrong application of multiple assignments in a conditional block
+
+##### 2013/6/4 hledger 0.21.2
+
+ - web: fix a build failure
+
+##### 2013/6/3 hledger 0.21.1
+
+ - web: show proper Y-values in register chart (fixes [#122](http://bugs.hledger.org/122))
+ - web: avoid trailing commas in register chart values, in case of trouble with IE
+
+### 2013/6/1 hledger 0.21
+
+Bugs fixed:
+
+ - parsing: don't fail when a csv amount has trailing whitespace (fixes [#113](http://bugs.hledger.org/113))
+ - web: don't show prices in the accounts sidebar (fixes [#114](http://bugs.hledger.org/114))
+ - web: show one line per commodity in charts. Needs more polish, but fixes [#109](http://bugs.hledger.org/109).
+ - web: bump yesod-platform dependency to avoid a cabal install failure
+
+Journal reading:
+
+ - balance assertions are now checked after reading a journal
+
+web command:
+
+ - web: support/require yesod 1.2
+ - web: show zero-balance accounts in the sidebar (fixes [#106](http://bugs.hledger.org/106))
+ - web: use nicer select2 autocomplete widgets in the add form
+
+Documentation and infrastructure:
+
+ - add basic cabal test suites for hledger-lib and hledger
+
+##### 2013/5/4 hledger 0.20.0.1
+
+ * web: require at least version 1.1.7 of yesod-core to avoid a potential build error
+ * Update the bug tracker and source repository links on hackage
+
+### 2013/5/1 hledger 0.20
+
+Bugs fixed:
+
+ * balance: a 0.19 regression which showed wrong total balance with `--flat` has been fixed ([#94](http://bugs.hledger.org/94))
+ * register: when `--date2` is used, the register is now sorted by the secondary date
+ * web: some missing static & template files have been added to the package, fixing cabal-dev and hackage builds ([#97](http://bugs.hledger.org/97), [#98](http://bugs.hledger.org/98))
+ * web: some hardcoded static urls have been fixed
+ * Dependencies and code have been updated to support the latest
+ libraries and GHC versions. For now, hledger requires GHC 7.2+
+ and hledger-web requires GHC 7.4+.
+
+Journal reading:
+
+ - DOS-style line-endings are now also supported in journal and rules files.
+ - `!` is now accepted in the status field as well as `*`, like ledger
+ - The *actual date* and *effective date* terminology has changed to *primary date* and *secondary date*.
+ Use `--date2` to select the secondary date for reports. (`--aux-date` or `--effective` are also accepted
+ for ledger and backwards compatibility).
+ - Per-posting dates are supported, using hledger tags or ledger's posting date syntax
+ - Comment and tag handling has been improved
+
+CSV reading:
+
+ - CSV conversion rules have a simpler, more flexible [syntax](csv.md).
+ Existing rules files will need to be updated manually:
+ - the filename is now `FILE.csv.rules` instead of `FILE.rules`
+ - `FIELD-field N` is now `FIELD %N+1` (or set them all at once with a `fields` rule)
+ - `base-currency` is now `currency`
+ - `base-account` is now `account1`
+ - account-assigning rules:
+ add `if` before the list of regexps,
+ add indented `account2 ` before the account name
+ - parenthesised amounts are parsed as negative
+
+Querying:
+
+ - Use `code:` to match the transaction code (check number) field
+ - Use `amt:` followed by `<`, `=` or `>` and a number N to match
+ amounts by magnitude. Eg `amt:<0` or `amt:=100`. This works only
+ with single-commodity amounts (multi-commodity amounts are
+ always matched).
+ - `tag:` can now match (exact, case sensitive) tag values. Eg `tag:TAG=REGEXP`.
+
+add comand:
+
+ - Transaction codes and comments (which may contain tags) can now be entered, following a date or amount respectively. ([#45](http://bugs.hledger.org/45))
+ - The current entry may be restarted by entering `<` at any prompt. ([#47](http://bugs.hledger.org/47))
+ - Entries are displayed and confirmed before they are written to the journal.
+ - Default values may be specified for the first entry by providing them as command line arguments.
+ - Miscellaneous UI cleanups
+
+register command:
+
+ - The `--related`/`-r` flag shows the other postings in each transaction, like ledger.
+ - The `--width`/`-w` option increases or sets the output width.
+
+web command:
+
+ - The web command now also starts a browser, and auto-exits when unused, by default ("local ui mode").
+ With `--server`, it keeps running and logs requests to the console ("server mode").
+ - Bootstrap is now used for styling and layout
+ - A favicon is served
+ - The search field is wider
+ - yesod devel is now supported; it uses `$LEDGER_FILE` or `~/.hledger.journal`
+ - the `blaze_html_0_5` build flag has been reversed and renamed to `blaze_html_0_4`
+
+Add-ons:
+
+ - The hledger-interest and hledger-irr commands have been released/updated.
+ - hledger-chart and hledger-vty remain unmaintained and deprecated.
+
+Documentation and infrastructure:
+
+ - The hledger docs and website have been reorganised and updated
+ - Manuals for past releases are provided as well as the latest dev version
+ - hledger has moved from darcs and darcs hub to git and github (!)
+ - The bug tracker has moved from google code to github
+ - Feature requests and project planning are now managed on trello
+ - A build bot builds against multiple GHC versions on each commit
+
+Release contributors:
+
+- Sascha Welter commissioned register enhancements (`--related` and `--width`)
+- David Patrick contributed a bounty for add enhancements
+- Joachim Breitner added support for ! in status field
+- Xinruo Sun provided hledger-web build fixes
+- Peter Simons provided hledger-web build fixes, and a build bot
+- Marko Kocić provided hledger-web fixes
+
+
+
+
+
+##### 2012/11/24 hledger-web 0.19.3
+
+ * web: fix "Prelude.read: no parse" errors with GHC >= 7.6
+ * web & lib refactoring
+
+### 2012/11/16 hledger-web 0.19
+
+ * builds with yesod 1.1.3
+ * obeys command-line query options at startup again
+ * the autogenerated session file is now a dot file
+ (.hledger-web_client_session.aes)
+
+##### 2012/11/16 hledger 0.19.1
+
+ * [87](http://bugs.hledger.org/87): fix an arithmetic and transaction balancing bug with multiple
+ total-priced amounts ( @@ PRICE )
+ * parsing: ignore ledger-style balance assertions ( = BAL ) and fixed
+ lot price declarations ( {= PRICE} )
+
+
+### 2012/10/21 hledger 0.19
+
+**a much faster balance command, and support for the latest GHC and libs.**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/4190)
+
+ * hledger, hledger-lib: support GHC 7.6 and latest cmdargs, haskeline, split
+ * balance report no longer has an O(n^2) slowdown with large numbers of accounts,
+ and is generally more speedy. Benchmark on a 2010 macbook:
+
+ ```
+ +-------------------------------------------++--------------+--------------+--------+
+ | || hledger-0.18 | hledger-0.19 | ledger |
+ +===========================================++==============+==============+========+
+ | -f data/100x100x10.journal balance || 0.21 | 0.07 | 0.09 |
+ | -f data/1000x1000x10.journal balance || 10.13 | 0.47 | 0.62 |
+ | -f data/1000x10000x10.journal balance || 40.67 | 0.67 | 1.01 |
+ | -f data/10000x1000x10.journal balance || 15.01 | 3.22 | 2.36 |
+ | -f data/10000x1000x10.journal balance aa || 4.77 | 4.40 | 2.33 |
+ +-------------------------------------------++--------------+--------------+--------+
+ ```
+
+ * build version is set with CPP instead of cabal-file-th
+
+#### 2012/7/7 hledger 0.18.2
+
+ * web: fix compilation error with -fblaze_html_0_5 flag
+ * bump base lower bound to 4.3 to enforce GHC 7 requirement
+
+#### 2012/6/29 hledger 0.18.1
+
+ * register, print: fix reverse ordering of same-day transactions
+ * balance: respect all query terms, not just acct
+ * combine command-line flags like `--depth` properly with non-flag query patterns
+ * web: don't auto-create a missing journal file at startup
+ * stats: list included journal files
+ * support tilde (~) in journal and rules file paths
+ * expose more utilities from CsvReader
+ * remove ensureRulesFile debug trace
+
+### 2012/5/29 hledger 0.18
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/3736)
+
+ * web: hledger-web is now based on yesod 1.0
+ * web: fix js error breaking second use of add form ([#72](http://bugs.hledger.org/72))
+ * web: make `yesod devel` work
+ * the command-line now supports a more powerful [query language](hledger.md#queries), consistent with the web UI
+ * hledger now fully supports [tags](journal.md#tags) (aka metadata) on both transactions and postings, and querying by tag or tag value
+ * new [commands](hledger.md#incomestatement) `incomestatement`, `balancesheet`, and `cashflow` provide basic financial statements under certain conditions
+ * format conversion is now done on demand, and the convert command has been dropped. So instead of
+ `hledger convert FILE.csv` just do `hledger -f FILE.csv print` or any other command.
+ You can also pipe any supported format into `hledger -f- CMD` and hledger will try to do the right thing.
+ * support for GHC 6.12 has been dropped; this release has been tested with GHC 7.0.4, 7.2.2, and 7.4.1
+ * unicode is now handled properly on all supported GHC versions
+ * API and internal cleanups
+
+##### 2012/3/3 hledger-web 0.17.1
+
+ * set more upper bounds to fix cabal install issues with latest packages
+
+### 2012/2/1 hledger 0.17
+
+**fixes bugs and updates dependencies**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/3149)
+
+ * support HP 2011.4.0.0
+ * support and require cmdargs 0.9
+ * allow non-threaded builds, supporting more debian architectures
+ * parsing: give a clearer error when journal file path contains ~
+ * parsing: `-B`/`--cost` now ignores P historical prices, like ledger
+ * parsing: inferred amounts now use the cost commodity if known, like ledger ([#69](http://bugs.hledger.org/69))
+ * balance: report differently-priced lots in an account as a single amount, like ledger
+ * web: support and require yesod >= 0.9.4
+ * web: use the main aeson package again
+ * web: fix a regression with dollar signs in hamlet templates
+ * web: add form allowed blank account names ([#81](http://bugs.hledger.org/81))
+ * chart, vty: hledger-chart and hledger-vty demoted to non-maintained extras for now
+
+##### 2011/10/26 hledger-web 0.16.5
+
+ * web: fix a ghc 6.12 incompatibility in Settings.hs
+
+##### 2011/10/24 hledger-web 0.16.4
+
+ * web: yet another cabal install fix, fix AppConfig name clash
+
+##### 2011/10/4 hledger-web 0.16.3
+
+ * web: another cabal install fix, disable favicon.ico since it's not easily embeddable
+
+##### 2011/10/4 hledger-web 0.16.2
+
+ * web: more cabal install fixes (remove bad path, add routes and models) ([#63](http://bugs.hledger.org/63))
+
+##### 2011/10/4 hledger 0.16.1
+
+ * parsing: show correct line number for posting parse errors ([#67](http://bugs.hledger.org/67))
+ * web: declare static files as extra-source-files to fix cabal install ([#63](http://bugs.hledger.org/63))
+ * web: add a threaded flag for debian ([#68](http://bugs.hledger.org/68))
+ * web: fewer build warnings by default
+
+### 2011/10/1 hledger 0.16
+
+**a stability/bugfix/polish release (which may become the pattern for
+even-numbered releases in future.)**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/521)
+
+ * cli: strip the -- when calling add-on commands, so their options work ([#64](http://bugs.hledger.org/64))
+ * cli: hledger ADDON `--version` now shows add-on command's version
+ * cli: only the add and web commands auto-create the journal file
+ * cli: give a non-confusing error if LEDGER_FILE contains a literal tilde
+ * add: clearer prompts, more validation, use . to end also
+ * add: use unix line endings consistently, avoiding parse error on windows ([#51](http://bugs.hledger.org/51))
+ * add: avoid excess whitespace between transactions ([#46](http://bugs.hledger.org/46))
+ * balance: ledger compatibility fix: don't elide parent accounts with multiple displayed subaccounts
+ * convert: always order converted transactions by date
+ * convert: rename currency -> base-currency, in-field, out-field -> amount-in-field, amount-out-field
+ * convert: give an error, not a zero when date or amount-in-field/amount-out-field parsing fails
+ * register: show more useful range of intervals with `--empty` and a query pattern
+ * print, web: always show both dates, ignoring `--effective` ([#42](http://bugs.hledger.org/42))
+ * web: production builds (the default with cabal) have all web content embedded (dev builds use ./static/) ([#63](http://bugs.hledger.org/63))
+ * web: update to yesod 0.9
+ * web: obey at least some of the general reporting options, like `--cost`
+ * web: adjust the default base url when a custom port is specified
+ * web: prevent an infinite redirect when custom base url has a trailing slash
+ * web: fix "not:'multi word'" patterns
+ * web: hide old title and search form when adding/editing
+ * web: adjust `--help` to indicate command-line arguments are not expected
+ * web: don't bother running cli unit tests at startup
+
+##### 2011/9/12 hledger 0.15.2, hledger-web 0.15.3
+
+ * handle multiple filter patterns on the command-line again
+ * don't pass an add-on command's name to it as an extra argument
+ * don't give a confusing error with `-f` and no command
+ * fix a regression balancing a transaction containing different prices
+ * web: fix journal edit form
+ * web: fix wrong transaction amount in account register with virtual postings
+ * web: fix some invalid html
+
+##### 2011/9/2 hledger 0.15.1, hledger-web 0.15.2
+
+ * fix a parsec 2 incompatibility
+ * web: add missing Hledger.Web.Options to cabal file
+ * web: tighten up dependencies to reduce build problems
+
+### 2011/9/1 hledger 0.15
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/2748)
+
+ * hledger's options are now modal, providing better help (using cmdargs)
+ * hledger now lists and runs any hledger-* add-ons found in the user's path
+ * case insensitivity of filter patterns has been fixed
+ * parsing: `alias`/`end aliases` directives, for renaming accounts, are supported, like ledger's but a bit more powerful; also an `--alias` option for renaming on the fly
+ * parsing: the `account` directive now preserves posting type (normal/virtual/balanced virtual)
+ * parsing: the `pop` directive is supported as an alias for `end tag`, like ledger
+ * parsing: `P` (historical price) directives can contain a (ignored) numeric time zone, like ledger
+ * parsing: the leading `!` in directives is now optional and deprecated, like ledger
+ * parsing: entries with a negative amount in the first posting now infer the correct balancing amount
+ * parsing: bad date checking is more accurate
+ * balance: collapsing of boring accounts to one line can be disabled with `--no-elide`
+ * balance: fix a wrong precision regression from last release
+ * convert: standard input can be converted
+ * convert: an alternate rules file can be specified with `--rules`
+ * convert: `account2-field` can be used when the CSV file specifies both accounts
+ * convert: `description-field` can have a custom format and combine multiple CSV fields
+ * convert: `in-field` and `out-field` support CSV files that use two amount columns
+ * convert: don't fail when there's no default journal file
+ * web: the web interface has been overhauled/cleaned up
+ * web: account register views are now transaction-based, like gnucash etc., and show accurate historical balances when possible
+ * web: simple balance charts are displayed (using flot)
+ * web: more expressive and consistent search patterns, using a new matching engine
+ * web: add form uses currently focussed account as default, redirects to itself, formats status messages better
+ * web: sidebar now shows empty/boring accounts too
+ * web: now uses warp and a newer yesod
+ * api simplifications
+ * importable Hledger, Hledger.Web, Hledger.Vty and Hledger.Chart modules
+ * the basic reports are now provided by hledger-lib for easier reuse
+ * new api use examples: `equity.hs`, `uniquify.hs`
+ * some old base 3 support has been dropped
+ * the old `-s` flag has been dropped
+
+### 2011/4/22 hledger 0.14
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/383)
+
+ * remove the specific process dependency that caused too many cabal install problems
+ * treat arguments as possibly-encoded platform strings, do not assume UTF-8
+ * hledger now always reads and writes data as UTF-8, ignoring the system locale ([#34](http://bugs.hledger.org/34))
+ * look at the LEDGER_FILE env var for the journal path, otherwise LEDGER, like ledger
+ * handle a blank LEDGER_FILE or LEDGER value more gracefully (use the default file path)
+ * the default journal file path is now ~/.hledger.journal, to avoid breaking mac filevault ([#41](http://bugs.hledger.org/41))
+ * amounts with different prices are now aggregated, like ledger
+ * zero amounts now have no sign or commodity, like ledger
+ * parsing: assume current year when transaction dates have no year and there is no default year
+ * parsing: more careful validation of eg leap years in transaction dates
+ * parsing: better international number format support, allowing comma as decimal point and flexible digit groups ([#32](http://bugs.hledger.org/32))
+ * parsing: support @@ syntax specifying total price
+ * parsing: infer the conversion price in transactions involving two unpriced commodities
+ * parsing: support per-posting cleared status
+ * parsing: more reporting interval syntax: biweekly, bimonthly, every N days/weeks/months/quarters/years, every Nst/nd/rd/th day of month/week
+ * add: avoid offering account names for completion in inappropriate contexts
+ * add: remember default account even if user submits a different amount.
+ * convert: account-field directive specifies a field containing the base account name
+ * convert: effective-date-field directive specifies a field containing the effective date
+ * convert: date-format directive specifies custom date formats
+ * convert: allow amount fields containing "AMT @@ PRICE"
+ * histogram: honour the specified start or end dates
+ * print: don't show a trailing space when description is blank
+ * web: allow filter patterns with spaces if quoted, like command line
+ * web: make edit form more cross-browser compatible, fixing it in firefox ([#38](http://bugs.hledger.org/38))
+ * web: move hidden add/edit/import forms below main content to help text-mode browsers a bit ([#33](http://bugs.hledger.org/33))
+
+Release contributors: Simon Michael, Dmitry Astapov, Eric Kow, Max Bolingbroke, Omari Norman.
+Stats:
+137 days, 113 commits, 11 end-user features and 15 end-user bugfixes since last release.
+189 unit & functional tests and 59% unit test coverage (hledger, hledger-lib packages).
+5540 lines of code (all packages).
+
+### 2010/12/6 hledger 0.13
+
+**readline editing and tab completion
+from Judah Jacobson, more ledger compatibility, a more robust and
+installable web interface, bugfixes, and a much-deliberated package split.**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/296)
+
+ * move web, vty, chart commands into separate hledger-web, hledger-vty,
+ hledger-chart packages. This both simplifies (no more build flags) and
+ complicates (more room for dependency hassles), but I hope overall it
+ will be easier and more scalable.
+ * all packages but chart are now marked "beta", ie "not finished but
+ suitable for everyday use"
+ * parsing: ledger compatibility: support D default commodity directive
+ * parsing: ledger compatibility: ignore metadata tags on transactions and postings
+ * parsing: ledger compatibility: ignore cleared flags at the start of postings
+ * parsing: ledger compatibility: ignore C commodity conversion directives
+ * parsing: price precisions no longer affect commodities' display precisions
+ * add: readline-style editing
+ * add: tab-completion for account names
+ * add: add the default commodity, if any, to commodity-less amounts ([#26](http://bugs.hledger.org/26))
+ * add: misc. commodity/precision/defaults-related bugfixes
+ * chart: give a meaningful error message for empty journals
+ * chart: update for current Chart lib (0.14)
+ * web: support files now live in ./.hledger/web/ and will be auto-created at startup
+ * web: page layout is more robust with wide content
+ * web: allow editing of included files
+ * web: handle multiple filter patterns correctly
+ * web: allow single- or double-quoted filter patterns containing spaces
+ * web: update for current yesod lib (0.6.*)
+ * transaction balancing is now based on display precision ([#23](http://bugs.hledger.org/23))
+ * briefer, more informative usage error messages
+
+##### 2010/9/6 hledger 0.12.1
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/272)
+
+ * web: fix account filtering breakage
+ * installing: tighten up utf8-string dependency
+
+### 2010/9/5 hledger 0.12
+
+ * web: new, better web ui; accounts are now a permanent sidebar; add form uses auto-completing combo fields
+ * installing: fix a build error with parsec 3 ([#22](http://bugs.hledger.org/22))
+ * installing: require exactly matching hledger-lib version for more robust builds
+ * installing: explicit data-object dependency to ensure hledger and hledger-lib use the same time version
+ * installing: explicit hamlet dependency for more robust building
+ * installing: build threaded and with warnings
+ * installing: drop -fweb610 flag
+ * installing: add gtk2hs-buildtools dependency needed to build with -fchart
+ * installing: require cabal 1.6 or greater
+ * add `-D`/`--daily` flag
+ * register: with `--depth`, clip account names or aggregate postings rather than excluding them
+ * fix !include with deeply nested directories ([#21](http://bugs.hledger.org/21))
+ * fix obscured date parse errors with parsec 3
+ * handle unicode better in errors
+ * fix a ghc 6.12.3 error when running interpreted
+
+Stats: 50 days and 90 commits since last release, now at 5741
+lines of code with 136 tests and 41% unit test coverage.
+
+##### 2010/07/17 hledger 0.11.1
+
+ * fix `--version` output
+
+### 2010/07/17 hledger 0.11
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/253)
+
+ * split `--help`, adding `--help-options` and `--help-all`/`-H`, and make
+ it the default command
+ * use "journal" instead of "ledger file"; default suffix is
+ .journal, default file is \~/.journal
+ * auto-create missing journal files rather than giving an error
+ * new format-detecting file reader (mixed journal transactions
+ and timelog entries are no longer supported)
+ * work around for first real-world rounding issue (test zero to 8
+ decimal places instead of 10)
+ * when reporting a balancing error, convert the error amount to
+ cost
+ * parsing: support double-quoted commodity symbols, containing
+ anything but a newline or double quote
+ * parsing: allow minus sign before commodity symbol as well as
+ after (also fixes a convert bug)
+ * parsing: fix wrong parse error locations within postings
+ * parsing: don't let trailing whitespace in a timelog description
+ mess up account names
+ * add: allow blank descriptions
+ * balance: `--flat` provides a simple non-hierarchical format
+ * balance: `--drop` removes leading account name components from a
+ `--flat` report
+ * print, register, balance: fix layout issues with
+ mixed-commodity amounts
+ * print: display non-simple commodity names with double-quotes
+ * stats: layout tweaks, add payee/description count
+ * stats: don't break on an empty file
+ * stats: `-p`/`--period` support; a reporting interval generates
+ multiple reports
+ * test: drop verbose test runner and testpack dependency
+ * web: a new web ui based on yesod, requires ghc 6.12; old ghc
+ 6.10-compatible version remains as -fweb610
+ * web: allow wiki-like journal editing
+ * web: warn and keep running if reloading the journal gives an
+ error
+ * web: `--port` and `--base-url` options set the webserver's tcp port
+ and base url
+ * web: slightly better browser opening on microsoft windows,
+ should find a standard firefox install now
+ * web: in a web-enabled build on microsoft windows, run the web
+ ui by default
+
+Stats: 55 days and 136 commits since last release. Now at 5552
+lines of code with 132 tests and 54% unit test coverage.
+
+### 2010/05/23 hledger 0.10
+
+**installation and bug fixes and api improvements**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/242)
+
+ * fix too-loose testpack dependency, missing safe dependency
+ * fix ghc 6.12 compatibility with -fweb
+ * fix handling of non-ascii arguments with ghc 6.12
+ * fix "0.8" in `--version` output
+ * fix an occasional stack overflow error due to infinite
+ recursion in Posting/Transaction equality tests
+ * the -fwebhappstack build flag is gone for now, to avoid a cabal
+ problem
+ * parsing: if there is no description, don't require a space
+ after the transaction date
+ * parsing: balance balanced-virtual postings separately, allow
+ them to have an implicit amount
+ * parsing: timelog entries now generate balanced transactions,
+ using virtual postings
+ * parsing: simpler high-level parse error message
+ * parsing: clearer bad date errors
+ * add: fix wrongful program exit on bad dates
+ * print: negative account patterns now exclude transactions
+ containing any posting to a matched account
+ * vty: rename the ui command to vty for consistency
+ * vty: fix restricted account scope when backing up to top level
+ * web: fix non-ascii handling with ghc 6.12
+ * web: fix a bug possibly affecting reload-on-change
+ * consolidate module namespace under Hledger, api cleanups
+
+Stats: 44 days, 81 commits since last release. Now at 4904 lines of
+code including tests, 144 tests, 53% coverage.
+
+### 2010/04/10 hledger 0.9
+
+**many bugfixes and small improvements, GHC 6.12 support, and a separate library package
+to make building (h)ledger-compatible tools easier.**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/239)
+
+ * ghc 6.12 support
+ * split off hledger-lib package, containing core types & utils
+ * parsing: ignore D, C, N, tag, end tag directives; we should now
+ accept any ledger 2.6 file
+ * parsing: allow numbers in commodities if double-quoted, like
+ ledger
+ * parsing: allow transactions with empty descriptions
+ * parsing: show a better error for illegal month/day numbers in
+ dates
+ * parsing: don't ignore trailing junk in a smart date, eg in web
+ add form
+ * parsing: don't ignore unparsed text following an amount
+ * parsing: @ was being treated as a currency symbol
+ * add: fix precision handling in default amounts ([#19](http://bugs.hledger.org/19))
+ * add: elide last amount in added transactions
+ * convert: keep original description by default, allow
+ backreferences in replace pattern
+ * convert: basic csv file checking, warn instead of dying when it
+ looks wrong
+ * convert: allow blank/comment lines at end of rules file
+ * print: always show zero amounts as 0, hiding any
+ commodity/decimal places/price, like ledger
+ * register: fix bad layout with years < 1000
+ * register: fix a Prelude.head error with reporting interval,
+ `--empty`, and `--depth`
+ * register: fix a regression, register should not show posting
+ comments
+ * register: with `--empty`, intervals should continue to ends of
+ the specified period
+ * stats: better output when last transaction is in the future
+ * stats: show commodity symbols, account tree depth, reorder
+ slightly
+ * web: -fweb now builds with simpleserver; to get happstack, use
+ -fwebhappstack instead
+ * web: pre-fill the add form with today's date
+ * web: help links, better search form wording
+ * web: show a proper error for a bad date in add form ([#17](http://bugs.hledger.org/17))
+ * web: fix for unicode search form values
+ * web: fix stack overflow caused by regexpr, and handle requests
+ faster ([#14](http://bugs.hledger.org/14))
+ * web: look for more-generic browser executables
+ * web: more robust browser starting ([#6](http://bugs.hledger.org/6))
+ * error message cleanups
+ * more tests, refactoring, docs
+
+Stats: 58 days, 2 contributors, 102 commits since last release. Now
+at 3983 lines of non-test code, 139 tests, 53% coverage.
+
+### 2010/02/11 hledger 0.8
+
+**Bug fixes, refactoring and Hi-Res Graphical Charts.**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/210)
+
+ * parsing: in date=date2, use first date's year as a default for
+ the second
+ * add: ctrl-d doesn't work on windows, suggest ctrl-c instead
+ * add: `--no-new-accounts` option disallows new accounts (Roman
+ Cheplyaka)
+ * add: re-use the previous transaction's date as default (Roman
+ Cheplyaka)
+ * add: a command-line argument now filters by account during
+ history matching (Roman Cheplyaka)
+ * chart: new command, generates balances pie chart (requires
+ -fchart flag, gtk2hs) (Roman Cheplyaka, Simon Michael)
+ * register: make reporting intervals honour a display expression
+ ([#18](http://bugs.hledger.org/18))
+ * web: fix help link
+ * web: use today as default when adding with a blank date
+ * web: re-enable account/period fields, they seem to be fixed,
+ along with file re-reading ([#16](http://bugs.hledger.org/16))
+ * web: get static files from the cabal data dir, or the current
+ dir when using make ([#13](http://bugs.hledger.org/13))
+ * web: preserve encoding during add, assuming it's utf-8 ([#15](http://bugs.hledger.org/15))
+ * fix some non-utf8-aware file handling ([#15](http://bugs.hledger.org/15))
+ * filter ledger again for each command, not just once at program
+ start
+ * refactoring, clearer data types
+
+Stats: 62 days, 2 contributors, 76 commits since last release. Now
+at 3464 lines of non-test code, 97 tests, 53% test coverage.
+
+### 2009/12/11 hledger 0.7
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/193)
+
+ * price history support (first cut): P directives now work,
+ though differently from ledger. Each posting amount takes its
+ fixed unit price from the price history (or
+ @) when available. This is simple and useful for things like
+ foreign currency expenses (but not investment tracking). Like
+ ledger, balance and register don't show amount prices any more, and
+ don't separate differently-priced amounts. Unlike ledger, print
+ shows all amount prices, and supports `-B`.
+ * `--effective` option, will use transactions' effective dates if
+ any
+ * convert: new rules file format, find/create rules file
+ automatically, more robust parsing, more useful `--debug` output
+ * print: always sort by date, fix long account name truncation,
+ align amounts, show end of line comments, show all amounts for
+ clarity (don't elide the final balancing amount)
+ * ui: use vty 4, fixes non-ascii and gnome terminal problems
+ (issues [#3](http://bugs.hledger.org/3), [#4](http://bugs.hledger.org/4))
+ * web: allow data entry, react to data file changes, better
+ layout, help links, remove histogram command and filter fields for
+ now, fix bad localhost redirect, filter form did not work in eg
+ firefox (issue [#7](http://bugs.hledger.org/7)), reset link did not work in all browsers
+ * parsing: require whitespace between date and status code, allow
+ (and ignore) a time in price records, better error messages,
+ non-zero exit code on parse failure
+ * display non-ascii error messages properly (issue [#5](http://bugs.hledger.org/5))
+ * fix an arithmetic bug that occasionally rejected valid
+ transactions
+ * fix a regex bug in showtree
+ * don't break if HOME is undefined
+ * `--debug` now implies `--verbose`
+ * add functional tests like ledger's, use test-framework for
+ speedy running, release shelltestrunner as a separate package
+ * many hlint cleanups (Marko Kocić)
+ * many site and documentation updates
+
+Stats: 60 days, 1 contributor, 50 commits since last release. Now
+at 3377 lines of non-test code, 97 tests, 53% test coverage.
+
+##### 2009/06/22 hledger 0.6.1
+
+ * avoid use of exitSuccess which was breaking ghc 6.8/base 3
+ compatibility (issue [#2](http://bugs.hledger.org/2))
+
+### 2009/06/13 hledger 0.6
+
+**Some pre-built binaries are now available. cabal install works on gnu/linux, mac and windows. Hurrah!**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/1215)
+
+ * now cabal-installable on unix, mac, and windows, with Haskell
+ Platform
+ * provide experimental platform binaries
+ * parsing: fix a silly failure to open ledger file paths
+ containing \~
+ * parsing: show better errors for unbalanced transaction and
+ missing default year
+ * parsing: allow parentheses and brackets inside account names,
+ as ledger does
+ * parsing: fail on empty account name components, don't just
+ ignore
+ * add: description passed as arguments now affects first
+ transaction only
+ * add: better handling of virtual postings and default amounts
+ * print, register: show virtual accounts bracketed/parenthesised
+ * web: improved web ui supporting full patterns & period
+ expressions
+ * new "stats" command reports some ledger statistics
+ * many dev/doc/deployment infrastructure improvements
+ * move website into darcs repo, update home page
+ * move issue tracker to google code
+
+Release stats:
+
+ * Contributors: Simon Michael
+ * Days since last release: 21
+ * Commits: 94
+ * Lines of non-test code: 2865
+ * Tests: 82
+ * Test coverage: 53% expressions
+ * Known errors: 3 (inconsistent eliding, vty-related failures)
+ * Performance: similar
+ (http://hledger.org/profs/200906131120.bench)
+
+##### 2009/05/23 hledger 0.5.1
+
+ * two fixes: really disable vty flag by default, and include
+ ConvertCommand in cabal file
+
+### 2009/05/23 hledger 0.5
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/1181)
+
+ * the vty flag is disabled by default again, to ease installation
+ on windows
+ * use ledger 3 terminology: a ledger contains transactions which
+ contain postings
+ * new "add" command prompts for transactions interactively and
+ adds them to the ledger
+ * new "convert" command transforms bank CSV exports to ledger
+ format, with rule-based cleanup
+ * new "histogram" command shows transaction counts per day or
+ other reporting interval
+ * most commands now work properly with UTF8-encoded text (Sergey
+ Astanin)
+ * invoking as "hours" is now less different: it just uses your
+ timelog, not your ledger
+ * `--quarterly`/`-Q` option summarises by quarter
+ * `--uncleared`/`-U` option looks only at uncleared transactions
+ * be more accurate about checking balanced amounts, don't rely on
+ display precision
+ * enforce balancing for bracketed virtual postings
+ * fix bug in eliding of posting amounts
+ * don't show trailing spaces on amountless postings
+ * parse null input as an empty ledger
+ * don't treat comments as part of transaction descriptions
+ * require some postings in ledger transactions
+ * require a non-empty description in ledger transactions
+ * don't fail when matching an empty pattern, as in "not:"
+ * make the web server handle the null path
+ * code, api and documentation updates
+ * add a contributor agreement/list
+
+Release stats:
+
+ * Contributors: Simon Michael, Sergey Astanin
+ * Days since last release: 51
+ * Commits: 101
+ * Lines of non-test code: 2795
+ * Tests: 76
+ * Known errors: 0
+
+### 2009/04/03 hledger 0.4
+
+**There is also a new website at hledger.org, with screenshots (textual!),
+a demo (will it survive!?), and docs (not too many!) ...
+I wrote it because I did not want to hack on c++ and because haskell seemed a good fit ...
+new happstack-based web interface.**
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/1097)
+
+ * new "web" command serves reports in a web browser (install with
+ -f happs to build this)
+ * make the vty-based curses ui a cabal build option, which will
+ be ignored on MS windows
+ * drop the `--options-anywhere` flag, that is now the default
+ * patterns now use `not:` and `desc:` prefixes instead of `^` and ``^^``
+ * patterns are now case-insensitive, like ledger
+ * `!include` directives are now relative to the including file (Tim
+ Docker)
+ * "Y2009" default year directives are now supported, allowing m/d
+ dates in ledger
+ * individual transactions now have a cleared status
+ * unbalanced entries now cause a proper warning
+ * balance report now passes all ledger compatibility tests
+ * balance report now shows subtotals by default, like ledger 3
+ * balance report shows the final zero total when `-E` is used
+ * balance report hides the final total when `--no-total` is used
+ * `--depth` affects print and register reports (aggregating with a
+ reporting interval, filtering otherwise)
+ * register report sorts transactions by date
+ * register report shows zero-amount transactions when `-E` is used
+ * provide more convenient timelog querying when invoked as
+ "hours"
+ * multi-day timelog sessions are split at midnight
+ * unterminated timelog sessions are now counted. Accurate time
+ reports at last!
+ * the test command gives better `--verbose` output
+ * `--version` gives more detailed version numbers including
+ patchlevel for dev builds
+ * new make targets include: ghci, haddocktest, doctest, unittest,
+ view-api-docs
+ * a doctest-style framework for functional/shell tests has been
+ added
+
+Release stats:
+
+ * Contributors: Simon Michael, Tim Docker; thanks to the HAppS,
+ happstack and testpack developers
+ * Days since release: 76
+ * Commits: 144
+ * Lines of non-test code: 2367
+ * Tests: 56
+ * Known errors: 0
+
+### 2009/01/17 hledger 0.3
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.hledger/67)
+
+ * count timelog sessions on the day they end, like ledger, for
+ now
+ * when options are repeated, use the last instead of the first
+ * builds with ghc 6.10 as well as 6.8
+ * a simple ui for interactive report browsing: hledger ui
+ * accept smart dates everywhere (YYYYMMDD, Y/M/D, Y, M/D, D, jan,
+ today, last week etc.)
+ * `--period`/`-p` flag accepting period expressions like "in 2008",
+ "weekly from last month"..
+ * `-W`/`-M`/`-Y` convenience flags to summarise register weekly,
+ monthly, yearly
+ * `--depth` and `-E` flags also affect summarised register reports
+ (including depth=0)
+ * `--display`/`-d` flag supporting date predicates (like "d<[DATE]",
+ "d\>=[DATE]")
+ * `!include` directive to include additional ledger files
+ * `!account` directive to set a default parent account
+ * Added support for reading historical prices from files
+ * timelog and ledger entries can be intermixed in one file
+ * modifier and periodic entries can appear anywhere (but are
+ still ignored)
+ * help and readme improvements
+ * runs much faster than 0.2
+
+Release stats:
+
+ * Contributors: Simon Michael, Nick Ingolia, Tim Docker; thanks
+ to Corey O'Connor & the vty team
+ * Lines of non-test code: 2123
+ * Tests: 58
+ * Known errors: 1
+
+### 2008/11/23 hledger 0.2
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/826)
+
+ * fix balance report totals when filtering by account
+ * fix balance report selection of accounts when filtering by
+ account
+ * fix a bug with account name eliding in balance report
+ * if we happen to be showing a not-yet-auto-balanced entry, hide
+ the AUTO marker
+ * fix print command filtering by account
+ * omit transactions with zero amount from register report
+ * Fix bug in parsing of timelogs
+ * rename `--showsubs` to `--subtotal`, like ledger
+ * drop `--usage` flag
+ * don't require quickcheck
+ * priced amounts (eg "10h @ $50") and `--basis`/`--cost`/`-B` flag to
+ show them with cost basis
+ * easy `--depth` option, equivalent to ledger's `-d 'l<=N'`
+ * smarter y/m/d date parsing for `-b` and `-e` (any number of digits,
+ month and day default to 1, separator can be / - or .)
+ * `-n` flag for balance command
+ * `--empty`/`-E` flag
+ * build a library, as well as the exe
+ * new home page url (http://joyful.com/hledger)
+ * publish html and pdf versions of README
+ * detect display preferences for each commodity like ledger
+ * support amounts with multiple currencies/commodities
+ * support `--real`/`-R` flag
+ * support `-C`/`--cleared` flag to filter by entry status (not
+ transaction status)
+ * support virtual and balanced virtual transactions
+ * parse comment lines beginning with a space, as from M-; in
+ emacs ledger-mode
+ * allow any non-whitespace in account names, perhaps avoiding
+ misleading missing amounts errors
+ * clearer error message when we can't balance an entry
+ * when we fail because of more than one missing amount in an
+ entry, show the full entry
+ * document the built-in test runner in `--help`
+ * add a `--verbose`/`-v` flag, use it to show more test-running
+ detail
+
+Release stats:
+
+ * Contributors: Simon Michael, Tim Docker
+ * Lines of non-test code: 1350
+ * Tests: 43
+ * Known errors: 0
+
+### 2008/10/15 hledger 0.1
+
+[mail](http://thread.gmane.org/gmane.comp.finance.ledger.general/775)
+**I'm pleased to announce the first release of hledger, a command-line
+accounting tool similar to John Wiegley's c++ ledger. hledger generates
+simple ledger-compatible transaction & account balance reports from a
+plain text ledger file. It's simple to use, at least for techies.
+This has been my "learning Haskell" project, but I think it's also
+useful. It is much less featureful than ledger, and not quite as fast,
+but it has the virtue of being fun for haskellers to hack on. I am
+documenting the code, the app is simple, and I'm not too far up the
+haskell learning curve, so I think other people learning haskell might
+enjoy a look. It is currently ~1100 lines of haskell excluding tests.
+My thanks to John Wiegley for help with compatibility and for his very
+useful ledger tool. I use it (and now, both of them) daily to track time
+and money. This is of course a hot topic around our planet. I hope you
+find it useful or intriguing.**
+
+Release stats:
+
+ * Contributors: Simon Michael