diff --git a/hledger-api/CHANGES.md b/hledger-api/CHANGES.md index 3f66626b7..b8632bec1 100644 --- a/hledger-api/CHANGES.md +++ b/hledger-api/CHANGES.md @@ -1,81 +1,68 @@ User-visible changes in hledger-api. See also the hledger changelog. - # 1.12 (2018/12/02) -* use hledger 1.12 - +- use hledger 1.12 # 1.11.1 (2018/10/06) -* use hledger 1.11.1 - +- use hledger 1.11.1 # 1.11 (2018/9/30) -* use hledger 1.11 - +- use hledger 1.11 # 1.10 (2018/6/30) -* use hledger-lib 1.10 - +- use hledger-lib 1.10 # 1.9.1 (2018/4/30) -* use hledger-lib 1.9.1 - +- use hledger-lib 1.9.1 # 1.9 (2018/3/31) -* support ghc 8.4, latest deps - -* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix - found when reading files +- support ghc 8.4, latest deps +- when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix + found when reading files # 1.5 (2017/12/31) -* remove upper bounds on all but hledger* and base (experimental) - +- remove upper bounds on all but hledger\* and base (experimental) # 1.4 (2017/9/30) -* api: add support for swagger2 2.1.5+ (fixes #612) - +- api: add support for swagger2 2.1.5+ (fixes \#612) # 1.3.1 (2017/8/25) -* require servant-server 0.10+ to fix compilation warning - -* restore upper bounds on hledger packages +- require servant-server 0.10+ to fix compilation warning +- restore upper bounds on hledger packages # 1.3 (2017/6/30) -Depends on hledger[-lib] 1.3, see related changelogs. - +Depends on hledger\[-lib\] 1.3, see related changelogs. # 1.2 (2017/3/31) see project changes at http://hledger.org/release-notes - # 1.1 (2016/12/31) -- serves on 127.0.0.1 by default, --host option added (#432) +- serves on 127.0.0.1 by default, --host option added (\#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 - # 1.0 (2016/10/26) ## misc -- new hledger-api tool: a simple web API server with example clients (#316) +- new hledger-api tool: a simple web API server with example clients (\#316) -- start an Angular-based API example client (#316) (Thomas R. Koll) +- start an Angular-based API example client (\#316) (Thomas R. Koll) diff --git a/hledger-lib/CHANGES.md b/hledger-lib/CHANGES.md index 5d9e4351a..53d1fe01d 100644 --- a/hledger-lib/CHANGES.md +++ b/hledger-lib/CHANGES.md @@ -1,314 +1,304 @@ Developer-ish changes in the hledger-lib package. User-visible changes are noted in the hledger package changelog instead. - # 1.12 (2018/12/02) -* switch to megaparsec 7 (Alex Chen) - We now track the stack of include files in Journal ourselves, since - megaparsec dropped this feature. +- 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) - We previously had a parser type, 'type ErroringJournalParser = ExceptT - String ...' for throwing parse errors without allowing further - backtracking. This parser type 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. +- add 'ExceptT' layer to our parser monad again (Alex Chen) + We previously had a parser type, 'type ErroringJournalParser = ExceptT + String ...' for throwing parse errors without allowing further + backtracking. This parser type 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. - - Define a 'FinalParseError' type specifically for the 'ExceptT' layer - - Any parse error can be raised as a "final" parse error - - Tracks the stack of include files for parser errors, anticipating the - removal of the tracking of stacks of include files in megaparsec 7 - - Although a stack of include files is also tracked in the 'StateT - Journal' layer of the parser, it seems easier to guarantee correct - error messages in the 'ExceptT FinalParserError' layer - - This does not make the 'StateT Journal' stack redundant because the - 'ExceptT FinalParseError' stack cannot be used to detect cycles of - include files + - Define a 'FinalParseError' type specifically for the 'ExceptT' layer + - Any parse error can be raised as a "final" parse error + - Tracks the stack of include files for parser errors, anticipating the + removal of the tracking of stacks of include files in megaparsec 7 + - Although a stack of include files is also tracked in the 'StateT + Journal' layer of the parser, it seems easier to guarantee correct + error messages in the 'ExceptT FinalParserError' layer + - This does not make the 'StateT Journal' stack redundant because the + 'ExceptT FinalParseError' stack cannot be used to detect cycles of + include files -* more support for location-aware parse errors when re-parsing (Alex Chen) +- more support for location-aware parse errors when re-parsing (Alex Chen) -* make 'includedirectivep' an 'ErroringJournalParser' (Alex Chen) +- make 'includedirectivep' an 'ErroringJournalParser' (Alex Chen) -* drop Ord instance breaking GHC 8.6 build (Peter Simons) +- drop Ord instance breaking GHC 8.6 build (Peter Simons) -* flip the arguments of (divide|multiply)[Mixed]Amount +- 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. +- 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 +- plog, plogAt: add missing newline -* split up journalFinalise, reorder journal finalisation steps (#893) (Jesse Rosenthal) - The `journalFinalise` function has been split up, allowing more granular - control. +- split up journalFinalise, reorder journal finalisation steps (\#893) (Jesse Rosenthal) + The `journalFinalise` function has been split up, allowing more granular + control. -* journalSetTime --> journalSetLastReadTime - -* journalSetFilePath has been removed, use journalAddFile instead +- journalSetTime --\> journalSetLastReadTime +- journalSetFilePath has been removed, use journalAddFile instead # 1.11.1 (2018/10/06) -* add, lib: fix wrong transaction rendering in balance assertion errors - and when using the add command +- add, lib: fix wrong transaction rendering in balance assertion errors + and when using the add command # 1.11 (2018/9/30) -* compilation now works when locale is unset (#849) +- compilation now works when locale is unset (\#849) -* all unit tests have been converted from HUnit+test-framework to easytest +- 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 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 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. +- 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. +- 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. +- 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} + 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: + 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.."}] + 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. +- 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 +- Hledger.Utils.Test exports HasCallStack -* queryDateSpan, queryDateSpan' now intersect date AND'ed date spans - instead of unioning them, and docs are clearer. +- queryDateSpan, queryDateSpan' now intersect date AND'ed date spans + instead of unioning them, and docs are clearer. -* pushAccount -> pushDeclaredAccount +- pushAccount -\> pushDeclaredAccount -* jaccounts -> jdeclaredaccounts +- jaccounts -\> jdeclaredaccounts -* AutoTransaction.hs -> PeriodicTransaction.hs & TransactionModifier.hs - -* Hledger.Utils.Debug helpers have been renamed/cleaned up +- AutoTransaction.hs -\> PeriodicTransaction.hs & TransactionModifier.hs +- Hledger.Utils.Debug helpers have been renamed/cleaned up # 1.10 (2018/6/30) -* build cleanly with all supported GHC versions again (7.10 to 8.4) +- build cleanly with all supported GHC versions again (7.10 to 8.4) -* support/use latest base-compat (#794) +- support/use latest base-compat (\#794) -* support/require megaparsec 6.4+ +- support/require megaparsec 6.4+ -* extensive refactoring and cleanup of parsers and related types and utilities +- 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) +- readJournalFile(s) cleanup, these now use InputOpts +- doctests now run a bit faster (\#802) # 1.9.1 (2018/4/30) -* new generic PeriodicReport, and some report-related type aliases +- new generic PeriodicReport, and some report-related type aliases -* new BudgetReport +- new BudgetReport -* make (readJournal|tryReader)s?WithOpts the default api, dropping "WithOpts" - -* automated postings and command line account aliases happen earlier - in journal processing (see hledger changelog) +- make (readJournal\|tryReader)s?WithOpts the default api, dropping "WithOpts" +- automated postings and command line account aliases happen earlier + in journal processing (see hledger changelog) # 1.9 (2018/3/31) -* support ghc 8.4, latest deps +- support ghc 8.4, latest deps -* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix -found when reading files. +- when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix + found when reading files. -* CompoundBalanceReport amounts are now normally positive. -The bs/bse/cf/is commands now show normal income, liability and equity -balances as positive. Negative numbers now indicate a contra-balance -(eg an overdrawn checking account), a net loss, a negative net worth, -etc. This makes these reports more like conventional financial -statements, and easier to read and share with others. (experimental) +- CompoundBalanceReport amounts are now normally positive. + The bs/bse/cf/is commands now show normal income, liability and equity + balances as positive. Negative numbers now indicate a contra-balance + (eg an overdrawn checking account), a net loss, a negative net worth, + etc. This makes these reports more like conventional financial + statements, and easier to read and share with others. (experimental) -* splitSpan now returns no spans for an empty datespan +- splitSpan now returns no spans for an empty datespan -* don't count periodic/modifier txns in Journal debug output +- don't count periodic/modifier txns in Journal debug output -* lib/ui/web/api: move embedded manual files to extra-source-files +- lib/ui/web/api: move embedded manual files to extra-source-files -* Use skipMany/skipSome for parsing spacenonewline (Moritz Kiefer) -This avoids allocating the list of space characters only to then -discard it. +- Use skipMany/skipSome for parsing spacenonewline (Moritz Kiefer) + This avoids allocating the list of space characters only to then + discard it. -* rename, clarify purpose of balanceReportFromMultiBalanceReport +- rename, clarify purpose of balanceReportFromMultiBalanceReport -* fix some hlint warnings - -* add some easytest tests +- fix some hlint warnings +- add some easytest tests # 1.5 (2017/12/31) -* -V/--value uses today's market prices by default, not those of last transaction date. #683, #648) +- -V/--value uses today's market prices by default, not those of last transaction date. \#683, \#648) -* csv: allow balance assignment (balance assertion only, no amount) in csv records (Nadrieril) +- csv: allow balance assignment (balance assertion only, no amount) in csv records (Nadrieril) -* journal: allow space as digit group separator character, #330 (Mykola Orliuk) +- journal: allow space as digit group separator character, \#330 (Mykola Orliuk) -* journal: balance assertion errors now show line of failed assertion posting, #481 (Sam Jeeves) +- journal: balance assertion errors now show line of failed assertion posting, \#481 (Sam Jeeves) -* journal: better errors for directives, #402 (Mykola Orliuk) +- journal: better errors for directives, \#402 (Mykola Orliuk) -* journal: better errors for included files, #660 (Mykola Orliuk) +- journal: better errors for included files, \#660 (Mykola Orliuk) -* journal: commodity directives in parent files are inherited by included files, #487 (Mykola Orliuk) +- journal: commodity directives in parent files are inherited by included files, \#487 (Mykola Orliuk) -* journal: commodity directives limits precision even after -B, #509 (Mykola Orliuk) +- journal: commodity directives limits precision even after -B, \#509 (Mykola Orliuk) -* journal: decimal point/digit group separator chars are now inferred from an applicable commodity directive or default commodity directive. #399, #487 (Mykola Orliuk) +- journal: decimal point/digit group separator chars are now inferred from an applicable commodity directive or default commodity directive. \#399, \#487 (Mykola Orliuk) -* journal: numbers are parsed more strictly (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 automated postings, enabled with --auto flag (Dmitry Astapov) -* journal: support Ledger-style periodic transactions, enabled with --forecast 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: 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: month names are now case-insensitive (Dmitry Astapov) -* period expressions: stricter checking for invalid expressions (Mykola Orliuk) +- period expressions: stricter checking for invalid expressions (Mykola Orliuk) -* period expressions: support "every 11th Nov" (Dmitry Astapov) +- period expressions: support "every 11th Nov" (Dmitry Astapov) -* period expressions: support "every 2nd Thursday of month" (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) - -* 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. +- period expressions: support "every Tuesday", short for "every th day of week" (Dmitry Astapov) +- 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. # 1.4 (2017/9/30) -* add readJournalFile[s]WithOpts, with simpler arguments and support -for detecting new transactions since the last read. +- 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, #608) +- query: add payee: and note: query terms, improve description/payee/note docs (Jakub Zárybnický, Simon Michael, \#598, \#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 ' +- 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 +- 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: 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: show the "creating/using rules file" message only with --debug -* csv: fix multiple includes in one rules file +- csv: fix multiple includes in one rules file -* csv: add "newest-first" rule for more robust same-day ordering +- csv: add "newest-first" rule for more robust same-day ordering -* deps: allow ansi-terminal 0.7 +- deps: allow ansi-terminal 0.7 -* deps: add missing parsec lower bound, possibly related to #596, fpco/stackage#2835 +- deps: add missing parsec lower bound, possibly related to \#596, fpco/stackage\#2835 -* deps: drop oldtime flag, require time 1.5+ +- 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 +- deps: remove ghc \< 7.6 support, remove obsolete CPP conditionals +- deps: fix test suite with ghc 8.2 # 1.3.1 (2017/8/25) -* Fix a bug with -H showing nothing for empty periods (#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) +- Fix a bug with -H showing nothing for empty periods (\#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) +- allow megaparsec 6 (\#594) -* allow megaparsec-6.1 (Hans-Peter Deifel) - -* fix test suite with Cabal 2 (#596) +- allow megaparsec-6.1 (Hans-Peter Deifel) +- fix test suite with Cabal 2 (\#596) # 1.3 (2017/6/30) journal: 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, +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) +ones. See the issue and linked mail list discussion for more +background. (\#564) csv: assigning to the "balance" field name creates balance -assertions (#537, Dmitry Astapov). +assertions (\#537, Dmitry Astapov). -csv: Doubled minus signs are handled more robustly (fixes #524, Nicolas Wavrant, Simon Michael) +csv: Doubled minus signs are handled more robustly (fixes \#524, Nicolas Wavrant, Simon Michael) -Multiple "status:" query terms are now OR'd together. (#564) +Multiple "status:" query terms are now OR'd together. (\#564) deps: allow megaparsec 5.3. - # 1.2 (2017/3/31) ## 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`, +payee. Eg, for a description like `payee name | additional notes`, the two parts will be accessible as pseudo-fields/tags named `payee` and `note`. @@ -321,24 +311,23 @@ 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) (Mykola Orliuk) +Fix a bug when tying the knot between postings and their parent transaction, reducing memory usage by about 10% (\#483) (Mykola Orliuk) -Fix a few spaceleaks (#413) (Moritz Kiefer) +Fix a few spaceleaks (\#413) (Moritz Kiefer) Add Ledger.Parse.Text to package.yaml, fixing a potential build failure. -Allow megaparsec 5.2 (#503) - -Rename optserror -> usageError, consolidate with other error functions +Allow megaparsec 5.2 (\#503) +Rename optserror -\> usageError, consolidate with other error functions # 1.1 (2016/12/31) ## journal format -- balance assignments are now supported (#438, #129, #157, #288) +- balance assignments are now supported (\#438, \#129, \#157, \#288) - This feature also brings a slight performance drop (~5%); + This feature also brings a slight performance drop (\~5%); optimisations welcome. - also recognise `*.hledger` files as hledger journal format @@ -346,7 +335,7 @@ Rename optserror -> usageError, consolidate with other error functions ## 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. @@ -358,23 +347,21 @@ Rename optserror -> usageError, consolidate with other error functions ## 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 +- rename dbgIO to dbg0IO, consistent with dbg0, and document a bug in dbg\*IO -- make readJournalFiles [f] equivalent to readJournalFile f (#437) - -- more general parser types enabling reuse outside of IO (#439) +- make readJournalFiles \[f\] equivalent to readJournalFile f (\#437) +- more general parser types enabling reuse outside of IO (\#439) # 1.0.1 (2016/10/27) -- allow megaparsec 5.0 or 5.1 - +- allow megaparsec 5.0 or 5.1 # 1.0 (2016/10/26) @@ -383,10 +370,10 @@ Rename optserror -> usageError, consolidate with other error functions - 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 + 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 + precise or too interruptive. It can be formatted like a bar chart, making clear at a glance where time was spent. ## timeclock format @@ -397,7 +384,7 @@ Rename optserror -> usageError, consolidate with other error functions sessions will be auto-closed at the end of the file). -- transaction ids now count up rather than down (#394) +- transaction ids now count up rather than down (\#394) - timeclock files no longer support default year directives @@ -407,11 +394,11 @@ Rename optserror -> usageError, consolidate with other error functions ## csv format -- fix empty field assignment parsing, rule parse errors after megaparsec port (#407) (Hans-Peter Deifel) +- fix empty field assignment parsing, rule parse errors after megaparsec port (\#407) (Hans-Peter Deifel) ## journal format -- journal files can now include timeclock or timedot files (#320) +- journal files can now include timeclock or timedot files (\#320) (but not yet CSV files). @@ -419,16 +406,16 @@ Rename optserror -> usageError, consolidate with other error functions - the "commodity" directive and "format" subdirective are now supported, allowing - full control of commodity style (#295) The commodity directive's + full control of commodity style (\#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. + precision. This is at least a good workaround for \#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) +- bracketed posting dates are more robust (\#304) Bracketed posting dates were fragile; they worked only if you wrote full 10-character dates. Also some semantics were a bit @@ -437,7 +424,7 @@ Rename optserror -> usageError, consolidate with other error functions 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 + be tags. Journal comment, tag, and posting date parsers have been reworked, all with doctests. - balance assertion failure messages are clearer @@ -446,11 +433,11 @@ Rename optserror -> usageError, consolidate with other error functions ## misc -- file parsers have been ported from Parsec to Megaparsec \o/ (#289, #366) (Alexey Shmalko, Moritz Kiefer) +- file parsers have been ported from Parsec to Megaparsec \o/ (\#289, \#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). +- file parsers have been simplified for easier troubleshooting (\#275). The journal/timeclock/timedot parsers, instead of constructing opaque journal update functions which are later applied to build @@ -458,7 +445,7 @@ Rename optserror -> usageError, consolidate with other error functions 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 + slightly, but that has been addressed in other ways). The ParsedJournal type alias has been added to distinguish "being-parsed" journals and "finalised" journals. @@ -467,16 +454,16 @@ Rename optserror -> usageError, consolidate with other error functions 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. + 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) +- all file formats now produce transaction ids, not just journal (\#394) -- git clone of the hledger repo on windows now works (#345) +- git clone of the hledger repo on windows now works (\#345) -- added missing benchmark file (#342) +- added missing benchmark file (\#342) -- our stack.yaml files are more compatible across stack versions (#300) +- our stack.yaml files are more compatible across stack versions (\#300) - use newer file-embed to fix ghci working directory dependence () @@ -485,7 +472,7 @@ Rename optserror -> usageError, consolidate with other error functions (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 + 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 @@ -522,92 +509,88 @@ Rename optserror -> usageError, consolidate with other error functions - more unit tests, start using doctest - - - 0.27 (2015/10/30) -- The main hledger types now derive NFData, which makes it easier to - time things with criterion. +- The main hledger types now derive NFData, which makes it easier to + time things with criterion. -- Utils has been split up more. +- Utils has been split up more. -- Utils.Regex: regular expression compilation has been memoized, and - memoizing versions of regexReplace[CI] have been added, since - compiling regular expressions every time seems to be quite - expensive (#244). - -- Utils.String: strWidth is now aware of multi-line strings (#242). +- Utils.Regex: regular expression compilation has been memoized, and + memoizing versions of regexReplace\[CI\] have been added, since + compiling regular expressions every time seems to be quite + expensive (\#244). -- Read: parsers now use a consistent p suffix. +- Utils.String: strWidth is now aware of multi-line strings (\#242). -- New dependencies: deepseq, uglymemo. +- Read: parsers now use a consistent p suffix. -- All the hledger packages' cabal files are now generated from - simpler, less redundant yaml files by hpack, in principle. In - practice, manual fixups are still needed until hpack gets better, - but it's still a win. +- New dependencies: deepseq, uglymemo. + +- All the hledger packages' cabal files are now generated from + simpler, less redundant yaml files by hpack, in principle. In + practice, manual fixups are still needed until hpack gets better, + but it's still a win. 0.26 (2015/7/12) -- allow year parser to handle arbitrarily large years -- Journal's Show instance reported one too many accounts -- some cleanup of debug trace helpers -- tighten up some date and account name parsers (don't accept leading spaces; hadddocks) -- drop regexpr dependency +- allow year parser to handle arbitrarily large years +- Journal's Show instance reported one too many accounts +- some cleanup of debug trace helpers +- tighten up some date and account name parsers (don't accept leading spaces; hadddocks) +- drop regexpr dependency 0.25.1 (2015/4/29) -- support/require base-compat >0.8 (#245) +- support/require base-compat \>0.8 (\#245) 0.25 (2015/4/7) - -- GHC 7.10 compatibility (#239) +- GHC 7.10 compatibility (\#239) 0.24.1 (2015/3/15) -- fix JournalReader "ctx" compilation warning -- add some type signatures in Utils to help make ghci-web +- fix JournalReader "ctx" compilation warning +- add some type signatures in Utils to help make ghci-web 0.24 (2014/12/25) -- fix combineJournalUpdates folding order -- fix a regexReplaceCI bug -- fix a splitAtElement bug with adjacent separators -- mostly replace slow regexpr with regex-tdfa (fixes #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 (fixes #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 +- fix combineJournalUpdates folding order +- fix a regexReplaceCI bug +- fix a splitAtElement bug with adjacent separators +- mostly replace slow regexpr with regex-tdfa (fixes \#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 (fixes \#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 0.23.3 (2014/9/12) -- allow transformers 0.4* +- allow transformers 0.4\* 0.23.2 (2014/5/8) -- postingsReport: also fix date sorting of displayed postings (#184) +- postingsReport: also fix date sorting of displayed postings (\#184) 0.23.1 (2014/5/7) -- postingsReport: with disordered journal entries, postings before the - report start date could get wrongly included. (#184) +- postingsReport: with disordered journal entries, postings before the + report start date could get wrongly included. (\#184) 0.23 (2014/5/1) -- orDatesFrom -> spanDefaultsFrom +- orDatesFrom -\> spanDefaultsFrom 0.22.2 (2014/4/16) -- 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 +- 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 0.22.1 (2014/1/6) and older: see http://hledger.org/release-notes or doc/CHANGES.md. diff --git a/hledger-ui/CHANGES.md b/hledger-ui/CHANGES.md index ee8bcde36..d17cbc02a 100644 --- a/hledger-ui/CHANGES.md +++ b/hledger-ui/CHANGES.md @@ -1,168 +1,157 @@ User-visible changes in hledger-ui. See also the hledger changelog. - # 1.12.1 (2018/12/10) -* avoid build issue with brick 0.44+ (#935) - +- avoid build issue with brick 0.44+ (\#935) # 1.12 (2018/12/02) -* fix "Any" build error with GHC < 8.4 +- fix "Any" build error with GHC \< 8.4 -* error screen: always show error position properly (#904) (Mykola Orliuk) +- error screen: always show error position properly (\#904) (Mykola Orliuk) -* accounts screen: show correct balances when there's only periodic transactions +- accounts screen: show correct balances when there's only periodic transactions -* drop the --status-toggles flag +- 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. +- 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. +- 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 +- 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. +- 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. + 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.) + (Experimental. Interactions with date queries have not been explored.) -* quick help tweaks; try to show most useful info first +- quick help tweaks; try to show most useful info first -* reorganise help dialog, fit content into 80x25 again +- reorganise help dialog, fit content into 80x25 again -* styling tweaks; cyan/blue -> white/yellow +- styling tweaks; cyan/blue -\> white/yellow -* less noisy styling in horizontal borders (#838) +- less noisy styling in horizontal borders (\#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 +- 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 # 1.11.1 (2018/10/06) -* use hledger 1.11.1 - +- use hledger 1.11.1 # 1.11 (2018/9/30) -* use hledger 1.11 - +- use hledger 1.11 # 1.10.1 (2018/7/3) -* restore support for fsnotify 0.2.1.2, as well as 0.3.x (#833) - -* fix a vty version bound & possibly build failures with old vty (#494) +- restore support for fsnotify 0.2.1.2, as well as 0.3.x (\#833) +- fix a vty version bound & possibly build failures with old vty (\#494) # 1.10 (2018/6/30) -* the effect of --value, --forecast, and --anon flags is now preserved on reload (#753) +- the effect of --value, --forecast, and --anon flags is now preserved on reload (\#753) -* edit-at-transaction-position is now also supported when $EDITOR is neovim +- edit-at-transaction-position is now also supported when \$EDITOR is neovim -* support/require fsnotify 0.3.0.1+ - -* use hledger-lib 1.10 +- support/require fsnotify 0.3.0.1+ +- use hledger-lib 1.10 # 1.9.1 (2018/4/30) -* use hledger-lib 1.9.1 - +- use hledger-lib 1.9.1 # 1.9 (2018/3/31) -* support ghc 8.4, latest deps +- support ghc 8.4, latest deps -* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix - found when reading files +- when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix + found when reading files -* -E/--empty toggles zeroes at startup (with opposite default to cli) +- -E/--empty toggles zeroes at startup (with opposite default to cli) # 1.5 (2017/12/31) -* fix help -> view manual (on posix platforms) #623 +- fix help -\> view manual (on posix platforms) \#623 -* support -V/--value, --forecast, --auto - -* remove upper bounds on all but hledger* and base (experimental) +- support -V/--value, --forecast, --auto +- remove upper bounds on all but hledger\* and base (experimental) # 1.4 (2017/9/30) -* a @FILE argument reads flags & args from FILE, one per line +- a @FILE argument reads flags & args from FILE, one per line -* enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický) +- enable --pivot and --anon options, like hledger CLI (\#474) (Jakub Zárybnický) -* accept -NUM as a shortcut for --depth NUM +- accept -NUM as a shortcut for --depth NUM -* deps: allow ansi-terminal 0.7 - -* deps: drop oldtime flag, require time 1.5+ +- deps: allow ansi-terminal 0.7 +- deps: drop oldtime flag, require time 1.5+ # 1.3.1 (2017/8/25) -* allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel) +- allow megaparsec 6 (\#594, Simon Michael, Hans-Peter Deifel) -* allow megaparsec-6.1 (Hans-Peter Deifel) +- allow megaparsec-6.1 (Hans-Peter Deifel) -* allow vty 5.17 (Felix Yan) +- allow vty 5.17 (Felix Yan) -* allow brick 0.24 - -* restore upper bounds on hledger packages +- allow brick 0.24 +- restore upper bounds on hledger packages # 1.3 (2017/6/30) 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 +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) +linked mail list discussion for more background. (\#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) +other toggle styles; see `hledger-ui -h`. (\#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 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. +- 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 +screen. And we now try to show the selected item centered in the following situations: - after moving to the end with Page down/End @@ -180,29 +169,26 @@ hjkl and CTRL-bfnp 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, Felix Yan, Simon Michael) - +Deps: allow brick 0.19 (\#575, Felix Yan, Simon Michael) # 1.2 (2017/3/31) -Fix a pattern match failure when pressing E on the transaction screen (fixes #508) +Fix a pattern match failure when pressing E on the transaction screen (fixes \#508) -Accounts with ? in name had empty registers (fixes #498) (Bryan Richter) +Accounts with ? in name had empty registers (fixes \#498) (Bryan Richter) Allow brick 0.16 (Joshua Chia) and brick 0.17/vty 0.15 (Peter Simons) -Allow megaparsec 5.2 (fixes #503) +Allow megaparsec 5.2 (fixes \#503) Allow text-zipper 0.10 - # 1.1.1 (2017/1/20) - allow brick 0.16 (Joshua Chia) - drop obsolete --no-elide flag - # 1.1 (2016/12/31) - with --watch, the display updates automatically to show file or date changes @@ -224,26 +210,21 @@ Allow text-zipper 0.10 - allow brick 0.15, vty 5.14, text-zipper 0.9 - # 1.0.4 (2016/11/2) -- allow brick 0.13 - +- allow brick 0.13 # 1.0.3 (2016/10/31) -- use brick 0.12 - +- use brick 0.12 # 1.0.2 (2016/10/27) -- use latest brick 0.11 - +- use latest brick 0.11 # 1.0.1 (2016/10/27) -- allow megaparsec 5.0 or 5.1 - +- allow megaparsec 5.0 or 5.1 # 1.0 (2016/10/26) @@ -268,19 +249,19 @@ Allow text-zipper 0.10 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). +- register transactions are filtered by realness and status (\#354). - Two fixes for the account transactions report when --real/--cleared/real:/status: + 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 ?) @@ -293,7 +274,7 @@ Allow text-zipper 0.10 ## misc -- H toggles between showing "historical" or "period" balances (#392). +- H toggles between showing "historical" or "period" balances (\#392). By default hledger-ui now shows historical balances, which include transactions before the report start date (like hledger @@ -310,7 +291,7 @@ Allow text-zipper 0.10 - a runs the add command -- E runs $HLEDGER_UI_EDITOR or $EDITOR or a default editor (vi) on the journal file. +- E runs \$HLEDGER\_UI\_EDITOR 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. @@ -319,7 +300,7 @@ Allow text-zipper 0.10 - 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 + 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 @@ -328,7 +309,7 @@ Allow text-zipper 0.10 - I toggles balance assertions checking, useful for troubleshooting -- vi-style movement keys are now supported (for help, you must now use ? not h) (#357) +- vi-style movement keys are now supported (for help, you must now use ? not h) (\#357) - ESC cancels minibuffer/help or clears the filter query and jumps to top screen @@ -348,44 +329,40 @@ Allow text-zipper 0.10 - hledger-ui now uses the quicker-building microlens - - - 0.27.3 (2016/1/12) -- allow brick 0.4 +- allow brick 0.4 0.27.2 (2016/1/11) -- allow brick 0.3.x +- allow brick 0.3.x 0.27.1 (2015/12/3) -- allow lens 4.13 -- make reloading work on the transaction screen - +- allow lens 4.13 +- make reloading work on the transaction screen 0.27 (2015/10/30) -- hledger-ui is a new curses-style UI, intended to be a standard part - of the hledger toolset for all users (except on native MS Windows, - where the vty lib is not yet supported). +- hledger-ui is a new curses-style UI, intended to be a standard part + of the hledger toolset for all users (except on native MS Windows, + where the vty lib is not yet 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: + 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 + - 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. + on vty, making it relatively easy to grow and maintain. diff --git a/hledger-web/CHANGES.md b/hledger-web/CHANGES.md index aa1f41ecf..fb192c0c8 100644 --- a/hledger-web/CHANGES.md +++ b/hledger-web/CHANGES.md @@ -1,148 +1,132 @@ User-visible changes in hledger-web. See also the hledger changelog. - # 1.12 (2018/12/02) -* fix duplicate package.yaml keys warned about by hpack - -* use hledger 1.12 +- fix duplicate package.yaml keys warned about by hpack +- use hledger 1.12 # 1.11.1 (2018/10/06) -* use hledger 1.11.1 - +- use hledger 1.11.1 # 1.11 (2018/9/30) -* use hledger 1.11 - +- use hledger 1.11 # 1.10 (2018/6/30) -* multiple -f options, and --auto, work again +- multiple -f options, and --auto, work again -* view, add, edit permissions can be set at CLI or by Sandstorm HTTP header +- 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 edit form has been revived, for whole-journal editing -* the journal can now be uploaded and downloaded +- the journal can now be uploaded and downloaded -* the e key toggles empty accounts in the sidebar - -* use hledger-lib 1.10 +- the e key toggles empty accounts in the sidebar +- use hledger-lib 1.10 # 1.9.2 (2018/4/30) -* use hledger-lib 1.9.1 - +- use hledger-lib 1.9.1 # 1.9.1 (2018/4/13) -* fix compilation with yesod < 1.6 - +- fix compilation with yesod \< 1.6 # 1.9 (2018/3/31) -* support ghc 8.4, latest deps +- support ghc 8.4, latest deps -* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix - found when reading files - -* -E/--empty toggles zeroes at startup (with opposite default to cli) +- when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix + found when reading files +- -E/--empty toggles zeroes at startup (with opposite default to cli) # 1.5 (2017/12/31) -* add form account fields now suggest implied and declared account names also +- add form account fields now suggest implied and declared account names also -* add form date field now uses a datepicker (Eli Flanagan) +- 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 +- don't write a session file at startup, don't require a writable working directory -* support -V/--value, --forecast, --auto - -* remove upper bounds on all but hledger* and base (experimental) +- support -V/--value, --forecast, --auto +- remove upper bounds on all but hledger\* and base (experimental) # 1.4 (2017/9/30) -* a @FILE argument reads flags & args from FILE, one per line +- a @FILE argument reads flags & args from FILE, one per line -* enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický) +- enable --pivot and --anon options, like hledger CLI (\#474) (Jakub Zárybnický) -* web: Make "Add transaction" button tabbable (#430) (Jakub Zárybnický) +- web: Make "Add transaction" button tabbable (\#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 +- accept -NUM as a shortcut for --depth NUM +- deps: drop oldtime flag, require time 1.5+, remove ghc \< 7.6 support # 1.3.2 (2017/8/25) -* remove unnecessary bound to satisfy hackage server - +- remove unnecessary bound to satisfy hackage server # 1.3.1 (2017/8/25) -* allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel) +- allow megaparsec 6 (\#594, Simon Michael, Hans-Peter Deifel) -* allow megaparsec-6.1 (Hans-Peter Deifel) - -* restore upper bounds on hledger packages +- allow megaparsec-6.1 (Hans-Peter Deifel) +- restore upper bounds on hledger packages # 1.3 (2017/6/30) -Depends on hledger[-lib] 1.3, see related changelogs. - +Depends on hledger\[-lib\] 1.3, see related changelogs. # 1.2 (2017/3/31) -Accounts with ? in name had empty registers (fixes #498) (Bryan Richter) - -Allow megaparsec 5.2 (fixes #503) +Accounts with ? in name had empty registers (fixes \#498) (Bryan Richter) +Allow megaparsec 5.2 (fixes \#503) # 1.1 (2016/12/31) -- add --host option (#429) - +- add --host option (\#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. - # 1.0.1 (2016/10/27) -- allow megaparsec 5.0 or 5.1 - +- allow megaparsec 5.0 or 5.1 # 1.0 (2016/10/26) ## ui -- use full width on large screens, hide sidebar on small screens, more standard bootstrap styling (#418, #422) (Dominik Süß) +- use full width on large screens, hide sidebar on small screens, more standard bootstrap styling (\#418, \#422) (Dominik Süß) -- show the sidebar by default (#310) +- show the sidebar by default (\#310) - fix the add link's tooltip -- when the add form opens, focus the first field (#338) +- when the add form opens, focus the first field (\#338) -- leave the add form's date field blank, avoiding a problem with tab clearing it (#322) +- leave the add form's date field blank, avoiding a problem with tab clearing it (\#322) -- use transaction id instead of date in transaction urls (#308) (Thomas R. Koll) +- use transaction id instead of date in transaction urls (\#308) (Thomas R. Koll) - after following a link to a transaction, highlight it (Thomas R. Koll) @@ -150,7 +134,7 @@ Allow megaparsec 5.2 (fixes #503) ## misc -- startup is more robust (#226). +- startup is more robust (\#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. @@ -161,7 +145,7 @@ Allow megaparsec 5.2 (fixes #503) - more robust register dates and filtering in some situations (see hledger-ui notes) -- reloading the journal preserves options, arguments in effect (#314). +- reloading the journal preserves options, arguments in effect (\#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 @@ -169,65 +153,61 @@ Allow megaparsec 5.2 (fixes #503) - show a proper not found page on 404 -- document the special \`inacct:\` query (#390) - - - +- document the special \`inacct:\` query (\#390) 0.27 (2015/10/30) -- Fix keyboard shortcut for adding a transaction (Carlos Lopez-Camey) +- 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) +- 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) +- Disallow -f- (reading from standard input) which currently doesn't work (\#202) -- Fix broken links when using --base-url (#235) +- Fix broken links when using --base-url (\#235) -- Fix the --file-url option (#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. +- Fix the --file-url option (\#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. 0.26 (2015/7/12) -- 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 (#251, Carlos Lopez-Camey ) -- drop deprecated network-conduit dependency +- 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 (\#251, Carlos Lopez-Camey ) +- drop deprecated network-conduit dependency 0.25 (2015/4/7) -- GHC 7.10 compatibility (#239) +- GHC 7.10 compatibility (\#239) -- fix the add form when there are included files (#234) +- fix the add form when there are included files (\#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, #234) - +- improve add form validation (\#223, \#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 +- keep the add button right-aligned when pressing ctrl - on the add form 0.24.1 (2015/1/10) -- add missing modules to fix cabal tests (#232) +- add missing modules to fix cabal tests (\#232) 0.24 (2014/12/25) 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 edit form - the help dialog has been improved - keyboard shortcuts are now available - the sidebar can be toggled open or closed (press s) @@ -237,73 +217,73 @@ Journal view: Register view: - fix: don't show all zero amounts when searching by account within an - account register view +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 +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) +- parses data more strictly and gives better errors (eg \#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) +- require yesod 1.4\* (fixes \#212) - js updated (jquery, bootstrap, flot), added (typeahead, cookie, hotkeys), - removed (select2) +removed (select2) 0.23.3 (2014/9/12) -- remove warp, wai-handler-launch upper bounds (fixes #205) +- remove warp, wai-handler-launch upper bounds (fixes \#205) 0.23.2 (2014/5/8) -- depend on latest hledger +- depend on latest hledger 0.23.1 (2014/5/7) -- depend on latest hledger +- depend on latest hledger 0.23 (2014/5/1) -- 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. - +- 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. + 0.22.8 (2014/4/29) -- allow shakespeare 2.* (#179) +- allow shakespeare 2.\* (\#179) 0.22.7 (2014/4/17) -- add Peter Simons' patch fixing Data.Conduit.Network HostIPv4 error (#171) +- add Peter Simons' patch fixing Data.Conduit.Network HostIPv4 error (\#171) 0.22.6 (2014/4/16) -- depend on hledger[-lib] 0.22.2 +- depend on hledger\[-lib\] 0.22.2 0.22.5 (2014/4/15) -- 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) -- allow warp 2.1, fixing cabal install +- 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) +- allow warp 2.1, fixing cabal install 0.22.4 (2014/2/10) -- Fix: include the right unminified version of jquery.url.js (1.1) to avoid js breakage +- Fix: include the right unminified version of jquery.url.js (1.1) to avoid js breakage 0.22.3 (2014/2/10) -- Fix: version number reported by --version +- Fix: version number reported by --version 0.22.2 (2014/2/10) -- new option --static-root to set the base url for static files -- allow blaze-html 0.7 (#159) -- Fix: include unminified source of all javascript to help packagers (#161) -- Fix: work around clang-related build failures with OS X mavericks/XCode 5 +- new option --static-root to set the base url for static files +- allow blaze-html 0.7 (\#159) +- Fix: include unminified source of all javascript to help packagers (\#161) +- Fix: work around clang-related build failures with OS X mavericks/XCode 5 0.22.1 (2014/1/6) and older diff --git a/hledger/CHANGES.md b/hledger/CHANGES.md index e29a30a70..703359a41 100644 --- a/hledger/CHANGES.md +++ b/hledger/CHANGES.md @@ -1,503 +1,491 @@ User-visible changes in the hledger command line tool (and hledger-lib). - # 1.12.1 (2018/12/03) -* roi: use math-functions lib instead of statistics, - be more stackage nightly compatible - +- roi: use math-functions lib instead of statistics, + be more stackage nightly compatible # 1.12 (2018/12/02) -* install script: ensure a new-enough version of stack; more informative output +- install script: ensure a new-enough version of stack; more informative output -* build with GHC 8.6/base-4.12 (Peter Simons) +- build with GHC 8.6/base-4.12 (Peter Simons) -* add required upper bound for statistics (Samuel May) +- add required upper bound for statistics (Samuel May) -* --anon anonymises more thoroughly (including linked original postings) (Moritz Kiefer) +- --anon anonymises more thoroughly (including linked original postings) (Moritz Kiefer) -* unbalanced transaction errors now include location info (Mykola Orliuk) +- 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: --drop also affects the default flat output, without needing an explicit --flat flag -* accounts command: the --codes flag has been dropped +- accounts command: the --codes flag has been dropped -* accounts command: filtering by non-account-name queries now works +- accounts command: filtering by non-account-name queries now works -* add command: fix transaction rendering regression during data entry and in journal file +- 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) +- 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) - 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. +- journal format, bs/bse/cf/is commands: account directives can declare account types (\#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. + 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.) + 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: +- 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. + ~ 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: +- 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 + 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: account directives now allow whitespace or a comment after the account name -* journal format: using ~ for home directory in include directives now works (#896) (Mykola Orliuk) +- journal format: using \~ for home directory in include directives now works (\#896) (Mykola Orliuk) -* journal format: prevent misleading parse error messages with cyclic include directives (#853) (Alex Chen) +- journal format: prevent misleading parse error messages with cyclic include directives (\#853) (Alex Chen) -* journal format: transaction modifier multipliers handle total-priced amounts correctly (#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: transaction modifier multipliers handle total-priced amounts correctly (\#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, #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). +- journal format: do amount inference/balance assignments/assertions before transaction modifiers (\#893, \#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). - Now, missing amount inference (and balance assignments, and balance - assertions, which are interdependent) are done earlier, before - transaction modifier rules are applied (#900, #903). + Now, missing amount inference (and balance assignments, and balance + assertions, which are interdependent) are done earlier, before + transaction modifier rules are applied (\#900, \#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). - (Because assignments now generate amounts to satisfy balance assertions - before transaction modifier rules are applied (#908).) + 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). + (Because assignments now generate amounts to satisfy balance assertions + before transaction modifier rules are applied (\#908).) -* journal format: periodic transaction rules are now aware of Y default year directives. (#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. +- journal format: periodic transaction rules are now aware of Y default year directives. (\#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. - # 1.11.1 (2018/10/06) -* fix wrong transaction rendering in balance assertion errors and when - using the add command - +- fix wrong transaction rendering in balance assertion errors and when + using the add command # 1.11 (2018/9/30) -* 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. +- 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. + 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). +- 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 +- close: new --opening/--closing flags to print only the opening or + closing transaction -* files: a new command to list included files +- 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. +- 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) +- rewrite: help clarifies relation to print --auto (\#745) -* roi: a new command to compute return on investment, based on hledger-irr +- 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 +- 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) +- 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) -* csv: interpolated field names in values are now properly case insensitive, so - this works: +- csv: interpolated field names in values are now properly case insensitive, so + this works: - fields ...,Transaction_Date,... - date %Transaction_Date + fields ...,Transaction_Date,... + date %Transaction_Date -* journal: D (default commodity) directives no longer break multiplier - amounts in transaction modifiers (AKA automated postings) (#860) +- journal: D (default commodity) directives no longer break multiplier + amounts in transaction modifiers (AKA automated postings) (\#860) -* journal: "Automated Postings" have been renamed to "Transaction Modifiers". +- journal: "Automated Postings" have been renamed to "Transaction Modifiers". -* journal: transaction comments in transaction modifier rules are now parsed correctly. (#745) +- journal: transaction comments in transaction modifier rules are now parsed correctly. (\#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, #852) +- 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, \#852) # 1.10 (2018/6/30) -* journal: many parse error messages have become more informative, and - some now show the source line and error location. +- 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) +- journal: ;tag: is no longer parsed as a tag named ";tag" (\#655) -* journal: transaction price amounts having their own price amounts is - now a parse error +- 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) +- journal: amounts with space as digit group separator and trailing whitespace + now parse correctly (\#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) +- journal: in amounts containing digits and a single space, the space + is now interpreted as a digit group separator, not a decimal separator (\#749) -* journal: in commodity/format/D directives, the amount must now include a decimal separator. +- 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. + 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. + 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: 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) +- journal: `alias` and `apply account` directives now affect `account` directives (\#825) -* journal: periodic transactions can now have all the usual transaction fields - (status mark, code, description, comment), for generating more expressive - forecast transactions. +- 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: 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) +- journal: periodic transactions now start on the first instance of the + recurring date, rather than the day after the last regular transaction (\#750) -* journal: periodic transaction rules now allow period expressions relative to today's date +- journal: periodic transaction rules now allow period expressions relative to today's date -* csv: amount-in/amount-out errors are more detailed +- 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) +- balance: --drop is now ignored when not in flat mode, + rather than producing a corrupted report (\#754) -* budget: --drop now preserves the top-level account in --budget reports +- budget: --drop now preserves the top-level account in --budget reports -* register: in CSV output, the code field is now included (#746) +- register: in CSV output, the code field is now included (\#746) -* smart dates now allow the YYYYMM format, and are better documented - -* use hledger-lib 1.10 +- smart dates now allow the YYYYMM format, and are better documented +- use hledger-lib 1.10 # 1.9.1 (2018/4/30) -* use hledger-lib 1.9.1 +- use hledger-lib 1.9.1 -* budget (balance --budget): monthly columns are displayed in the - proper order. This fixes a regression in 1.9. +- budget (balance --budget): monthly columns are displayed in the + proper order. This fixes a regression in 1.9. -* budget: budgets can be built from periodic transactions with - different intervals again. In 1.9, budgets were restricted to a - single interval, but this was a mistake. This restores the 1.5 - behaviour. +- budget: budgets can be built from periodic transactions with + different intervals again. In 1.9, budgets were restricted to a + single interval, but this was a mistake. This restores the 1.5 + behaviour. -* budget: budget reports are more intuitive and much less likely to - produce no output. +- budget: budget reports are more intuitive and much less likely to + produce no output. -* budget: when no report interval is specified, a budget report for - the whole journal period is shown. +- budget: when no report interval is specified, a budget report for + the whole journal period is shown. -* budget: periodic transactions and the requested report period can - each have their own start/end dates, and the resulting report will - span the union of those periods, showing zeroes where data is - missing. +- budget: periodic transactions and the requested report period can + each have their own start/end dates, and the resulting report will + span the union of those periods, showing zeroes where data is + missing. -* budget: total row and total/average columns are now calculated correctly +- budget: total row and total/average columns are now calculated correctly -* budget: actual, percentage, and goal amounts are now aligned in - columns for better readability (usually, unless numbers get huge). +- budget: actual, percentage, and goal amounts are now aligned in + columns for better readability (usually, unless numbers get huge). -* budget: combining --budget and --sort-amount is not yet supported - and now gives an error. +- budget: combining --budget and --sort-amount is not yet supported + and now gives an error. -* csv: handle "-%amount" in a rule when the CSV amount is parenthesised (#736) +- csv: handle "-%amount" in a rule when the CSV amount is parenthesised (\#736) -* journal: automated postings are now generated early, before journal finalisation, - so they are present for amount inference, transaction balancing, and balance assertions - (#729) +- journal: automated postings are now generated early, before journal finalisation, + so they are present for amount inference, transaction balancing, and balance assertions + (\#729) -* journal: automated postings are now inserted right after the posting that triggered them - (#729) +- journal: automated postings are now inserted right after the posting that triggered them + (\#729) -* cli: command-line account aliases are now applied early, before journal finalisation, - so they are equivalent to alias directives in the journal (#730) +- cli: command-line account aliases are now applied early, before journal finalisation, + so they are equivalent to alias directives in the journal (\#730) -* journal: inferred amounts now have the appropriate standard amount style applied - (setting the precision correctly, eg). (#737) - -* journal: when checking for balanced transactions, amount styles declared with - commodity directives are also used (previously only inferred amount styles were). +- journal: inferred amounts now have the appropriate standard amount style applied + (setting the precision correctly, eg). (\#737) +- journal: when checking for balanced transactions, amount styles declared with + commodity directives are also used (previously only inferred amount styles were). # 1.9 (2018/3/31) -* support ghc 8.4, latest deps +- support ghc 8.4, latest deps -* 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: 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, #706) +- journal: support scientific number notation (\#704, \#706) -* csv: reading a CSV file containing no records is no longer an error +- 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: 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.) +- 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 +- acc: the accounts command now has --declared and --used flags -* bal: the --invert flag flips all signs +- bal: the --invert flag flips all signs -* bal: --drop now works with CSV output +- bal: --drop now works with CSV output -* bal/bs/bse/cf/is: show overall report span in title +- 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: show short month names as headings in monthly reports -* bal/bs/bse/cf/is: these commands can now generate HTML output +- 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 +- 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/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/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 +- 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: 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: 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: --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: 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. +- 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. # 1.5 (2017/12/31) -* --auto adds Ledger-style automated postings to transactions (Dmitry Astapov, Mykola Orliuk) +- --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) +- --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, #648 +- -V/--value uses today's market prices by default, not those of last transaction date. \#683, \#648 -* add: suggest implied (parent) and declared (by account directives) account names also +- 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) +- 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 +- 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 (Mykola Orliuk, Simon Michael) +- print: -B shows converted amounts again, as in 1.1, even without + -x. \#551 (Mykola Orliuk, Simon Michael) -* tag: the first argument now filters tag names, additional arguments - filter transactions (#261) - -* remove upper bounds on all but hledger* and base (experimental) +- tag: the first argument now filters tag names, additional arguments + filter transactions (\#261) +- remove upper bounds on all but hledger\* and base (experimental) # 1.4 (2017/9/30) -* cli: a @FILE argument reads flags & args from FILE, one per line +- cli: a @FILE argument reads flags & args from FILE, one per line -* cli: reorganized commands list, added some new command aliases: +- cli: reorganized commands list, added some new command aliases: - - accounts: a - - balance: b - - print: p, txns - - register: r + - accounts: a + - balance: b + - print: p, txns + - register: r -* cli: accept -NUM as a shortcut for --depth=NUM (eg: -2) +- cli: accept -NUM as a shortcut for --depth=NUM (eg: -2) -* cli: improve command-line help for --date2 (#604) +- cli: improve command-line help for --date2 (\#604) -* cli: make --help and -h the same, drop --man and --info for now (#579) +- cli: make --help and -h the same, drop --man and --info for now (\#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: +- 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). + - 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) + You can override this with the `--info`/`--man`/`--pager`/`--cat` flags. + (\#579) -* bal/bs/cf/is: --sort-amount/-S sorts by largest amount instead of - account name +- 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. +- 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. +- 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) +- bs/is: don't let an empty subreport disable the grand totals (fixes \#588) -* cf: exclude asset accounts with ":fixed" in their name (Christian G. Warden, Simon Michael, #584) +- cf: exclude asset accounts with ":fixed" in their name (Christian G. Warden, Simon Michael, \#584) -* new balancesheetequity command: like balancesheet but also shows - equity accounts (Nicholas Niro) +- 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 +- 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) +- print: --new shows only transactions added since last time + (saves state in .latest.JOURNALFILE file) -* new tags command: lists tags in matched transactions +- 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. +- 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: 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 +- refactor: BalanceView -\> CompoundBalanceCommand -* deps: drop support for directory < 1.2 +- deps: drop support for directory \< 1.2 -* deps: allow ansi-terminal 0.7 +- deps: allow ansi-terminal 0.7 -* deps: drop oldtime flag, require time 1.5+ +- deps: drop oldtime flag, require time 1.5+ -* deps: simplify shakespeare bounds - -* deps: remove ghc < 7.6 support +- deps: simplify shakespeare bounds +- deps: remove ghc \< 7.6 support # 1.3.1 (2017/8/25) -* bs/is: don't let an empty subreport disable the grand totals (#588) +- bs/is: don't let an empty subreport disable the grand totals (\#588) -* allow megaparsec 6 (#594) +- allow megaparsec 6 (\#594) -* allow megaparsec-6.1 (Hans-Peter Deifel) - -* restore upper bounds on hledger packages +- allow megaparsec-6.1 (Hans-Peter Deifel) +- restore upper bounds on hledger packages # 1.3 (2017/6/30) 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, +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) +background. (\#564) Also the -P short flag has been added for --pending, and the -U/-P/-C -flags can be combined. +flags can be combined. -bs/is: fix "Ratio has zero denominator" error (#535) +bs/is: fix "Ratio has zero denominator" error (\#535) -bs/is/cf: fix --flat (#552) (Justin Le, Simon Michael) +bs/is/cf: fix --flat (\#552) (Justin Le, Simon Michael) bal/bs/is/cf: show negative amounts in red (Simon Michael, Justin Le). These commands now shows 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). +print: show pending mark on postings (fixes \#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 - # 1.2 (2017/3/31) ## CLI "hledger" and "hledger -h" now print a better organised commands list -and general usage message respectively (#297). +and general usage message respectively (\#297). The common reporting flags can now be used anywhere on the command line. @@ -512,25 +500,25 @@ 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`) +- 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/, +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: +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. @@ -540,51 +528,51 @@ 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. ) +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 +- autosync - example symlink to ledger-autosync +- budget - experimental budget reporting command supporting Ledger-like periodic transactions and automated transactions (Mykola Orliuk) +- chart - pie-chart-generating prototype, a repackaging of the old hledger-chart tool +- check - more powerful balance assertions (Michael Walker) +- check-dupes - find accounts sharing the same leaf name (Stefano Rodighiero) +- prices - show all market price records (Mykola Orliuk) +- register-match - a helper for ledger-autosync's deduplication, finds best match for a transaction description The equity command now always generates a valid journal transaction, handles prices better, and adds balance assertions (Mykola Orliuk). The rewrite command is more robust and powerful (Mykola Orliuk): -- in addition to command-line rewrite options, it understands rewrite rules - defined in the journal, similar to Ledger's automated transactions (#99). - Eg: +- in addition to command-line rewrite options, it understands rewrite rules + defined in the journal, similar to Ledger's automated transactions (\#99). + Eg: - = ^income - (liabilities:tax) *.33 + = ^income + (liabilities:tax) *.33 - = expenses:gifts - budget:gifts *-1 - assets:budget *1 + = 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: +- 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 + hledger-rewrite --diff Agency --add-posting 'Expenses:Taxes *0.17' | patch -- rewrites can affect multiple postings in a transaction, not just one. +- rewrites can affect multiple postings in a transaction, not just one. -- posting-specific dates are handled better +- posting-specific dates are handled better ## balance A new --pretty-tables option uses unicode characters for rendering -table borders in multicolumn reports (#522) (Moritz Kiefer) +table borders in multicolumn reports (\#522) (Moritz Kiefer) ## balancesheet/cashflow/incomestatement @@ -593,54 +581,51 @@ 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) +query. (Related discussion at \#531) ## print -The output of print is now always a valid journal (fixes #465) (Mykola Orliuk). +The output of print is now always a valid journal (fixes \#465) (Mykola Orliuk). print now tries to preserves the format of implicit/explicit balancing amounts and prices, by default. To print with all amounts explicit, -use the new `--explicit/-x` flag (fixes #442). (Mykola Orliuk) - -Don't lose the commodity of zero amounts/zero balance assertions (fixes #475) (Mykola Orliuk) +use the new `--explicit/-x` flag (fixes \#442). (Mykola Orliuk) + +Don't lose the commodity of zero amounts/zero balance assertions (fixes \#475) (Mykola Orliuk) ## Misc -Fix a regression in the readability of option parsing errors (#478) (Hans-Peter Deifel) +Fix a regression in the readability of option parsing errors (\#478) (Hans-Peter Deifel) Fix an example in Cli/Main.hs (Steven R. Baker) -Allow megaparsec 5.2 (#503) - +Allow megaparsec 5.2 (\#503) # 1.1 (2016/12/31) ## balance -- with -V, don't ignore market prices in the future (#453, #403) +- with -V, don't ignore market prices in the future (\#453, \#403) -- with -V and multiple same-date market prices, use the last parsed not the highest price (#403) +- with -V and multiple same-date market prices, use the last parsed not the highest price (\#403) ## misc -- fix non-existent "oldtime" dependency (#431) +- fix non-existent "oldtime" dependency (\#431) - extra/hledger-equity.hs now generates valid journal format when there are multiple commodities - # 1.0.1 (2016/10/27) -- allow megaparsec 5.0 or 5.1 - -- fix benchmark build failure (#423) +- allow megaparsec 5.0 or 5.1 +- fix benchmark build failure (\#423) # 1.0 (2016/10/26) ## add -- suggest only one commodity at a time as default amount (#383) +- suggest only one commodity at a time as default amount (\#383) (since we currently can't input more than one at a time) @@ -648,15 +633,15 @@ Allow megaparsec 5.2 (#503) - added --change flag for consistency -- -H/--historical now also affects single-column balance reports with a start date (#392). +- -H/--historical now also affects single-column balance reports with a start date (\#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) +- in CSV output, render amounts in one-line format (\#336) ## balancesheet -- fix an infinite loop (#393) +- fix an infinite loop (\#393) ## print @@ -664,13 +649,13 @@ Allow megaparsec 5.2 (#503) ## register -- fix a sorting regression with --date2 (#326) +- fix a sorting regression with --date2 (\#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) +- in CSV output, include the transaction id and rename the total field (\#391) ## stats @@ -678,9 +663,9 @@ Allow megaparsec 5.2 (#503) ## misc -- --pivot option added, groups postings by tag instead of account (#323) (Malte Brandy) +- --pivot option added, groups postings by tag instead of account (\#323) (Malte Brandy) -- --anon option added, obfuscates account names and descriptions (#265) (Brian Scott) +- --anon option added, obfuscates account names and descriptions (\#265) (Brian Scott) (Only affects the hledger tool, for now.) @@ -702,7 +687,7 @@ Allow megaparsec 5.2 (#503) - a cabal.project file has been added (Moritz Kiefer) -- use hpack for maintaining cabal files (#371). +- use hpack for maintaining cabal files (\#371). Instead of editing cabal files directly, we now edit the less verbose and less redundant package.yaml files and let stack (or @@ -730,9 +715,9 @@ Allow megaparsec 5.2 (#503) - 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) + generated from the same source by a new Shake-based docs build system. (\#292) -- versioned manuals are provided on the website, covering recent releases and the latest dev version (#385, #387) +- versioned manuals are provided on the website, covering recent releases and the latest dev version (\#385, \#387) - manuals are built in to the hledger executables, allowing easy offline reading on all platforms. @@ -761,7 +746,7 @@ Allow megaparsec 5.2 (#503) When multiple -f options are provided, we now parse each file individually rather than just concatenating them, so they can - have different formats (#320). Note this also means that + have different formats (\#320). Note this also means that directives (like \`Y\` or \`alias\`) no longer carry over from one file to the next. @@ -771,204 +756,200 @@ Allow megaparsec 5.2 (#503) - parsing an argument-less --debug option is more robust - - - 0.27 (2015/10/30) 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. +- 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: -- Each hledger package now includes one or more man pages, generated - from markdown by the mighty pandoc. Currently there are six: one - for each main executable and each input file format. Currently these - somewhat duplicate the manual on the website; this will be resolved - somehow. (#282). - -- The site is now built with hakyll-std, a generic hakyll script. +- Each hledger package now includes one or more man pages, generated + from markdown by the mighty pandoc. Currently there are six: one + for each main executable and each input file format. Currently these + somewhat duplicate the manual on the website; this will be resolved + somehow. (\#282). -- hledger once again has a HCAR entry. +- The site is now built with hakyll-std, a generic hakyll script. + +- hledger once again has a HCAR entry. Tools: -- The hledger cabal files are now generated from package.yaml files by - hpack, in principle, removing a lot of error-prone duplication and - boilerplate. (In practice, both files are being updated manually - for the moment, until hpack supports flags and conditional blocks.) +- The hledger cabal files are now generated from package.yaml files by + hpack, in principle, removing a lot of error-prone duplication and + boilerplate. (In practice, both files are being updated manually + for the moment, until hpack supports flags and conditional blocks.) -- Time/allocation and heap profiling is working again, and easier: +- Time/allocation and heap profiling is working again, and easier: - - `make quickprof-CMD` generates a profile for CMD, which runs - against one of the sample journals. (CMD must be one word, - enclosing in double quotes isn't working here for some reason). + - `make quickprof-CMD` generates a profile for CMD, which runs + against one of the sample journals. (CMD must be one word, + enclosing in double quotes isn't working here for some reason). - - `make quickheap-CMD` generates a heap profile for CMD, in - hledgerprof.ps, and tries to open it in a viewer (currently the - mac-friendly "open" executable, so you may need to adjust this in - the makefile). As with quickprof, CMD must be one word and runs - against one of the sample journals. + - `make quickheap-CMD` generates a heap profile for CMD, in + hledgerprof.ps, and tries to open it in a viewer (currently the + mac-friendly "open" executable, so you may need to adjust this in + the makefile). As with quickprof, CMD must be one word and runs + against one of the sample journals. - - `make hledgerprof` builds the hledgerprof executable used for - time/allocation profiling. `make hledgercov` builds the hledgercov - executable used for coverage reports. + - `make hledgerprof` builds the hledgerprof executable used for + time/allocation profiling. `make hledgercov` builds the hledgercov + executable used for coverage reports. -- Travis CI now tests the build on each github push and announces - status changes by email and on #hledger. +- Travis CI now tests the build on each github push and announces + status changes by email and on \#hledger. Journal format: -- Dates must now begin with a digit (not /, eg). +- 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. +- 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). - -- The argument for --depth or depth: must now be positive. +- 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). + +- The argument for --depth or depth: must now be positive. add: -- Journal entries are now written with all amounts explicit, to avoid - losing price info (#283). +- Journal entries are now written with all amounts explicit, to avoid + losing price info (\#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. -- 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. - +- 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 (which are used by -B/--cost). - Also, using both -B and -V at the same time is supported. + with P directives; it does not use the "transaction prices" + recorded as part of posting amounts (which are used by -B/--cost). + Also, using both -B and -V at the same time is supported. -- Fixed a bug in amount normalization which caused amount styles - (commodity symbol placement, decimal point character, etc.) to be - lost in certain cases (#230, #276). +- Fixed a bug in amount normalization which caused amount styles + (commodity symbol placement, decimal point character, etc.) to be + lost in certain cases (\#230, \#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. +- 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. +- 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.) +- 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. - +- Amount columns now resize automatically, using more space if it's + needed and available. 0.26 (2015/7/12) Account aliases: -- Account aliases are once again non-regular-expression-based, by default. (#252) - +- Account aliases are once again non-regular-expression-based, by default. (\#252) + The regex account aliases added in 0.24 trip up people switching between hledger and Ledger. (Also they are currently slow). - + This change makes the old non-regex aliases the default; they are unsurprising, useful, and pretty close in functionality to Ledger's. - + The new regex aliases are still available; they must 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 here is my rationale: - - - 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 - - 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. +- 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 here is my rationale: -- Trailing whitespace after a `comment` directive is now ignored. + - 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 + - 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. +- 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 +- real: (no argument) is now a synonym for real:1 -- tag: now matches tag names with a regular expression, like most other queries +- 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. +- 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) -- 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. + 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 + 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. +- 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. +- 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. +- Accounts beginning with "debt" or now also recognised as liabilities. print: -- We now limit the display precision of inferred prices. (#262) - +- We now limit the display precision of inferred prices. (\#262) + When a transaction posts to two commodities without specifying the conversion price, we generate a price which makes it balance (cf - http://hledger.org/manual.html#prices). The print command showed + http://hledger.org/manual.html\#prices). The print command showed this with full precision (so that manual calculations with the displayed numbers would look right), but this sometimes meant we showed 255 digits (when there are multiple postings in the @@ -976,79 +957,77 @@ print: irrational number). In this case we now set the price's display precision to the sum of the (max) display precisions of the commodities involved. An example: - - hledgerdev -f- print - <<< - 1/1 - c C 10.00 - c C 11.00 - d D -320.00 - >>> - 2015/01/01 - c C 10.00 @ D 15.2381 - c C 11.00 @ D 15.2381 - d D -320.00 - >>>=0 - + hledgerdev -f- print + <<< + 1/1 + c C 10.00 + c C 11.00 + d D -320.00 + >>> + 2015/01/01 + c C 10.00 @ D 15.2381 + c C 11.00 @ D 15.2381 + d D -320.00 + + >>>=0 + There might still be cases where this will show more price decimal - places than necessary. + places than necessary. + +- We now show inferred unit prices with at least 2 decimal places. -- 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, + 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. +- Postings with no amounts could give a runtime error in some obscure case, now fixed. -stats: +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. +- 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 | - +--------------------------------------++--------+--------+ + +--------------------------------------++--------+--------+ + | || 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 June 30 day span was not being rendered correctly; fixed. (\#272) + +- The bench script invoked by "cabal bench" or "stack bench" now runs + some simple benchmarks. -- 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. - -- The deprecated shakespeare-text dependency has been removed more thoroughly. + "hledger" executable in \$PATH. +- The deprecated shakespeare-text dependency has been removed more thoroughly. 0.25.1 (2015/4/29) -- timelog: support the description field (#247) - +- timelog: support the description field (\#247) 0.25 (2015/4/7) -- GHC 7.10 compatibility (#239) +- GHC 7.10 compatibility (\#239) + +- build with terminfo support on POSIX systems by default -- build with terminfo support on POSIX systems by default - On non-windows systems, we now build with terminfo support by default, useful for detecting terminal width and other things. @@ -1058,278 +1037,275 @@ Miscellaneous: cabal install -f-curses ... (or cabal might try this automatically, I'm not sure). -- register: use the full terminal width, respect COLUMNS, allow column width adjustment - +- register: use the full terminal width, respect COLUMNS, allow column width adjustment + On POSIX systems, register 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. - + + 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. + Also, 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 + 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 + + <--------------------------------- 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 + $ 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 +- balance: new -T/--row-total and -A/--average options - In multicolumn balance reports, -T/--row-total now shows a row totals - column and -A/--average shows a row averages column. - This helps eg to see monthly average expenses (hledger bal ^expenses -MA). + In multicolumn balance reports, -T/--row-total now shows a row totals + column and -A/--average shows a row 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. + 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 -- 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 * - +- 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. 0.24.1 (2015/3/15) -- journal: fix balance accumulation across assertions (#195) - +- journal: fix balance accumulation across assertions (\#195) + A sequence of balance assertions asserting first one commodity, then another, then the first again, was not working. -- timelog: show hours with two decimal places instead of one (#237) -- in weekly reports, simplify week 52's heading like the others -- disallow trailing garbage in a number of parsers +- timelog: show hours with two decimal places instead of one (\#237) +- in weekly reports, simplify week 52's heading like the others +- disallow trailing garbage in a number of parsers Trailing garbage is no longer ignored when parsing the following: balance --format option, register --width option, hledger-rewrite options, hledger add's inputs, CSV amounts, posting amounts, posting dates in tags. -- allow utf8-string-1 (fpco/stackage/#426) +- allow utf8-string-1 (fpco/stackage/\#426) 0.24 (2014/12/25) General: -- fix redundant compilation when cabal installing the hledger packages -- switch to Decimal for representing amounts (#118) -- report interval headings (eg in balance, register reports) are shown - compactly when possible -- general speedups +- fix redundant compilation when cabal installing the hledger packages +- switch to Decimal for representing amounts (\#118) +- report interval headings (eg in balance, register reports) are shown + compactly when possible +- general speedups Journal format: -- detect decimal point and digit groups more robustly (#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) -- support multi-line comments using "comment", "end comment" - directives, like Ledger +- detect decimal point and digit groups more robustly (\#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) +- support multi-line comments using "comment", "end comment" + directives, like Ledger CSV format: -- reading CSV data from stdin now works better -- the rules file include directive is now relative to the current - file's directory (#198) -- 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) -- CSV output is now built in to the balance, print, and register - commands, controlled by -O/--output-format (and -o/--output-file, - see below) +- reading CSV data from stdin now works better +- the rules file include directive is now relative to the current + file's directory (\#198) +- 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) +- CSV output is now built in to the balance, print, and register + commands, controlled by -O/--output-format (and -o/--output-file, + see below) CLI: -- the --width and --debug options now require their argument (#149) -- when an option is repeated, the last value takes precedence (#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 +- the --width and --debug options now require their argument (\#149) +- when an option is repeated, the last value takes precedence (\#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 +- 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) +- 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) 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) -- 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) -- multicolumn reports' title now includes the report span +- 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) +- 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) +- 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, #221, #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 +- runs faster with large output +- supports date2:, and date:/date2: combined with --date2, better (fixes + \#201, \#221, \#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 Extra commands: -- hledger-equity: fix end date in title; print closing entry too -- hledger-check-dates: added +- hledger-equity: fix end date in title; print closing entry too +- hledger-check-dates: added 0.23.3 (2014/9/12) -- allow text 1.2+ (#207) +- allow text 1.2+ (\#207) 0.23.2 (2014/5/8) -- register: also fix date sorting of postings (#184) +- register: also fix date sorting of postings (\#184) 0.23.1 (2014/5/7) -- 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) -- add: don't apply a default commodity to amounts on entry (#138) -- cli: options before the add-on command name are now also passed to it (#182) -- csv: allow the first name in a fields list to be empty (#178) -- csv: don't validate fields count in skipped lines (#177) - +- 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) +- add: don't apply a default commodity to amounts on entry (\#138) +- cli: options before the add-on command name are now also passed to it (\#182) +- csv: allow the first name in a fields list to be empty (\#178) +- csv: don't validate fields count in skipped lines (\#177) 0.23 (2014/5/1) 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). -- Fix: + before an amount is no longer parsed as part of the commodity (#181). +- 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). +- Fix: + before an amount is no longer parsed as part of the commodity (\#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. +- 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. 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. +- 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. accounts: -- An accounts command has been added, similar to Ledger's, for listing account names - in flat or hierarchical mode. +- 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. +- 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). -- Fix: multicolumn reports now support --date2 (cf #174). +- 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). +- Fix: multicolumn reports now support --date2 (cf \#174). balancesheet, cashflow, incomestatement: -- These commands now support --flat and --drop. +- These commands now support --flat and --drop. print: -- Tag queries (tag:) will now match a transaction if any of its postings match. +- 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). +- 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). 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) - GHC 7.8, shakespeare 2 - +- 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) - GHC 7.8, shakespeare 2 0.22.2 (2014/4/16) -- 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 - +- 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 0.22.1 (2014/1/6) and older: see http://hledger.org/release-notes or doc/release-notes.md.