mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
566 lines
20 KiB
Plaintext
566 lines
20 KiB
Plaintext
Developer-ish changes in the hledger-lib package.
|
|
User-visible changes are noted in the hledger changelog, instead.
|
|
|
|
|
|
# 1.11.1 (2018/10/06)
|
|
|
|
* 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)
|
|
|
|
* all unit tests have been converted from HUnit+test-framework to easytest
|
|
|
|
* doctests now run quicker by default, by skipping reloading between tests.
|
|
This can be disabled by passing --slow to the doctests test suite
|
|
executable.
|
|
|
|
* doctests test suite executable now supports --verbose, which shows
|
|
progress output as tests are run if doctest 0.16.0+ is installed
|
|
(and hopefully is harmless otherwise).
|
|
|
|
* doctests now support file pattern arguments, provide more informative output.
|
|
Limiting to just the file(s) you're interested can make doctest start
|
|
much quicker. With one big caveat: you can limit the starting files,
|
|
but it always imports and tests all other local files those import.
|
|
|
|
* a bunch of custom Show instances have been replaced with defaults,
|
|
for easier troubleshooting. These were sometimes obscuring
|
|
important details, eg in test failure output. Our new policy is:
|
|
stick with default derived Show instances as far as possible, but
|
|
when necessary adjust them to valid haskell syntax so pretty-show
|
|
can pretty-print them (eg when they contain Day values, cf
|
|
https://github.com/haskell/time/issues/101). By convention, when
|
|
fields are shown in less than full detail, and/or in double-quoted
|
|
pseudo syntax, we show a double period (..) in the output.
|
|
|
|
* Amount has a new Show instance. Amount's show instance hid
|
|
important details by default, and showing more details required
|
|
increasing the debug level, which was inconvenient. Now it has a
|
|
single show instance which shows more information, is fairly
|
|
compact, and is pretty-printable.
|
|
|
|
ghci> usd 1
|
|
OLD:
|
|
Amount {acommodity="$", aquantity=1.00, ..}
|
|
NEW:
|
|
Amount {acommodity = "$", aquantity = 1.00, aprice = NoPrice, astyle = AmountStyle "L False 2 Just '.' Nothing..", amultiplier = False}
|
|
|
|
MixedAmount's show instance is unchanged, but showMixedAmountDebug
|
|
is affected by this change:
|
|
|
|
ghci> putStrLn $ showMixedAmountDebug $ Mixed [usd 1]
|
|
OLD:
|
|
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle {ascommodityside = L, ascommodityspaced = False, asprecision = 2, asdecimalpoint = Just '.', asdigitgroups = Nothing}}]
|
|
NEW:
|
|
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle "L False 2 Just '.' Nothing.."}]
|
|
|
|
* Same-line & next-line comments of transactions, postings, etc.
|
|
are now parsed a bit more precisely (followingcommentp).
|
|
Previously, parsing no comment gave the same result as an empty
|
|
comment (a single newline); now it gives an empty string.
|
|
Also, and perhaps as a consequence of the above, when there's no
|
|
same-line comment but there is a next-line comment, we'll insert an
|
|
empty first line, since otherwise next-line comments would get moved
|
|
up to the same line when rendered.
|
|
|
|
* Hledger.Utils.Test exports HasCallStack
|
|
|
|
* queryDateSpan, queryDateSpan' now intersect date AND'ed date spans
|
|
instead of unioning them, and docs are clearer.
|
|
|
|
* pushAccount -> pushDeclaredAccount
|
|
|
|
* jaccounts -> jdeclaredaccounts
|
|
|
|
* AutoTransaction.hs -> PeriodicTransaction.hs & TransactionModifier.hs
|
|
|
|
* Hledger.Utils.Debug helpers have been renamed/cleaned up
|
|
|
|
|
|
# 1.10 (2018/6/30)
|
|
|
|
* build cleanly with all supported GHC versions again (7.10 to 8.4)
|
|
|
|
* support/use latest base-compat (#794)
|
|
|
|
* support/require megaparsec 6.4+
|
|
|
|
* 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)
|
|
|
|
|
|
# 1.9.1 (2018/4/30)
|
|
|
|
* new generic PeriodicReport, and some report-related type aliases
|
|
|
|
* 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)
|
|
|
|
|
|
# 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.
|
|
|
|
* 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
|
|
|
|
* don't count periodic/modifier txns in Journal debug output
|
|
|
|
* 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.
|
|
|
|
* rename, clarify purpose of balanceReportFromMultiBalanceReport
|
|
|
|
* 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)
|
|
|
|
* 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: 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 included files, #660 (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: 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: support Ledger-style automated postings, enabled with --auto flag (Dmitry Astapov)
|
|
|
|
* journal: support Ledger-style periodic transactions, enabled with --forecast flag (Dmitry Astapov)
|
|
|
|
* period expressions: fix "nth day of {week,month}", which could generate wrong intervals (Dmitry Astapov)
|
|
|
|
* period expressions: month names are now case-insensitive (Dmitry Astapov)
|
|
|
|
* period expressions: stricter checking for invalid expressions (Mykola Orliuk)
|
|
|
|
* period expressions: support "every 11th Nov" (Dmitry Astapov)
|
|
|
|
* period expressions: support "every 2nd Thursday of month" (Dmitry Astapov)
|
|
|
|
* period expressions: support "every Tuesday", short for "every <n>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.
|
|
|
|
* 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 '
|
|
|
|
* timedot: allow a quantity of seconds, minutes, days, weeks, months
|
|
or years to be logged as Ns, Nm, Nd, Nw, Nmo, Ny
|
|
|
|
* csv: switch the order of generated postings, so account1 is first.
|
|
This simplifies things and facilitates future improvements.
|
|
|
|
* csv: show the "creating/using rules file" message only with --debug
|
|
|
|
* csv: fix multiple includes in one rules file
|
|
|
|
* csv: add "newest-first" rule for more robust same-day ordering
|
|
|
|
* deps: allow ansi-terminal 0.7
|
|
|
|
* deps: add missing parsec lower bound, possibly related to #596, fpco/stackage#2835
|
|
|
|
* deps: drop oldtime flag, require time 1.5+
|
|
|
|
* deps: remove ghc < 7.6 support, remove obsolete CPP conditionals
|
|
|
|
* deps: fix test suite with ghc 8.2
|
|
|
|
|
|
# 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)
|
|
|
|
* allow megaparsec 6 (#594)
|
|
|
|
* 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,
|
|
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)
|
|
|
|
csv: assigning to the "balance" field name creates balance
|
|
assertions (#537, Dmitry Astapov).
|
|
|
|
csv: Doubled minus signs are handled more robustly (fixes #524, Nicolas Wavrant, Simon Michael)
|
|
|
|
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`,
|
|
the two parts will be accessible as pseudo-fields/tags named `payee`
|
|
and `note`.
|
|
|
|
Some journal parse errors now show the range of lines involved, not just the first.
|
|
|
|
## ledger format
|
|
|
|
The experimental `ledger:` reader based on the WIP ledger4 project has
|
|
been disabled, reducing build dependencies.
|
|
|
|
## Misc
|
|
|
|
Fix a bug when tying the knot between postings and their parent transaction, reducing memory usage by about 10% (#483) (Mykola Orliuk)
|
|
|
|
Fix a few spaceleaks (#413) (Moritz Kiefer)
|
|
|
|
Add Ledger.Parse.Text to package.yaml, fixing a potential build failure.
|
|
|
|
Allow megaparsec 5.2 (#503)
|
|
|
|
Rename optserror -> usageError, consolidate with other error functions
|
|
|
|
|
|
# 1.1 (2016/12/31)
|
|
|
|
## journal format
|
|
|
|
- balance assignments are now supported (#438, #129, #157, #288)
|
|
|
|
This feature also brings a slight performance drop (~5%);
|
|
optimisations welcome.
|
|
|
|
- also recognise `*.hledger` files as hledger journal format
|
|
|
|
## ledger format
|
|
|
|
- use ledger-parse from the ledger4 project as an alternate reader for C++ Ledger journals
|
|
|
|
The idea is that some day we might get better compatibility with Ledger files this way.
|
|
Right now this reader is not very useful and will be used only if you explicitly select it with a `ledger:` prefix.
|
|
It parses transaction dates, descriptions, accounts and amounts, and ignores everything else.
|
|
Amount parsing is delegated to hledger's journal parser, and malformed amounts might be silently ignored.
|
|
|
|
This adds at least some of the following as new dependencies for hledger-lib:
|
|
parsers, parsec, attoparsec, trifecta.
|
|
|
|
## misc
|
|
|
|
- update base lower bound to enforce GHC 7.10+
|
|
|
|
hledger-lib had a valid install plan with GHC 7.8, but currently requires GHC 7.10 to compile.
|
|
Now we require base 4.8+ everywhere to ensure the right GHC version at the start.
|
|
|
|
- Hledger.Read api cleanups
|
|
|
|
- rename dbgIO to dbg0IO, consistent with dbg0, and document a bug in dbg*IO
|
|
|
|
- make readJournalFiles [f] equivalent to readJournalFile f (#437)
|
|
|
|
- more general parser types enabling reuse outside of IO (#439)
|
|
|
|
|
|
# 1.0.1 (2016/10/27)
|
|
|
|
- allow megaparsec 5.0 or 5.1
|
|
|
|
|
|
# 1.0 (2016/10/26)
|
|
|
|
## timedot format
|
|
|
|
- new "timedot" format for retroactive/approximate time logging.
|
|
|
|
Timedot is a plain text format for logging dated, categorised
|
|
quantities (eg time), supported by hledger. It is convenient
|
|
for approximate and retroactive time logging, eg when the
|
|
real-time clock-in/out required with a timeclock file is too
|
|
precise or too interruptive. It can be formatted like a bar
|
|
chart, making clear at a glance where time was spent.
|
|
|
|
## timeclock format
|
|
|
|
- renamed "timelog" format to "timeclock", matching the emacs package
|
|
|
|
- sessions can no longer span file boundaries (unclocked-out
|
|
|
|
sessions will be auto-closed at the end of the file).
|
|
|
|
- transaction ids now count up rather than down (#394)
|
|
|
|
- timeclock files no longer support default year directives
|
|
|
|
- removed old code for appending timeclock transactions to journal transactions.
|
|
|
|
A holdover from the days when both were allowed in one file.
|
|
|
|
## csv format
|
|
|
|
- fix empty field assignment parsing, rule parse errors after megaparsec port (#407) (Hans-Peter Deifel)
|
|
|
|
## journal format
|
|
|
|
- journal files can now include timeclock or timedot files (#320)
|
|
|
|
(but not yet CSV files).
|
|
|
|
- fixed an issue with ordering of same-date transactions included from other files
|
|
|
|
- the "commodity" directive and "format" subdirective are now supported, allowing
|
|
|
|
full control of commodity style (#295) 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.
|
|
|
|
- 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 were fragile; they worked only if you
|
|
wrote full 10-character dates. Also some semantics were a bit
|
|
unclear. Now they should be robust, and have been documented
|
|
more clearly. This is a legacy undocumented Ledger syntax, but
|
|
it improves compatibility and might be preferable to the more
|
|
verbose "date:" tags if you write posting dates often (as I do).
|
|
Internally, bracketed posting dates are no longer considered to
|
|
be tags. Journal comment, tag, and posting date parsers have
|
|
been reworked, all with doctests.
|
|
|
|
- balance assertion failure messages are clearer
|
|
|
|
- with --debug=2, more detail about balance assertions is shown.
|
|
|
|
## misc
|
|
|
|
- file parsers have been ported from Parsec to Megaparsec \o/ (#289, #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).
|
|
|
|
The journal/timeclock/timedot parsers, instead of constructing
|
|
opaque journal update functions which are later applied to build
|
|
the journal, now construct the journal directly by modifying the
|
|
parser state. This is easier to understand and debug. It also
|
|
rules out the possibility of journal updates being a space
|
|
leak. (They weren't, in fact this change increased memory usage
|
|
slightly, but that has been addressed in other ways). The
|
|
ParsedJournal type alias has been added to distinguish
|
|
"being-parsed" journals and "finalised" journals.
|
|
|
|
- file format detection is more robust.
|
|
|
|
The Journal, Timelog and Timedot readers' detectors now check
|
|
each line in the sample data, not just the first one. I think the
|
|
sample data is only about 30 chars right now, but even so this
|
|
fixed a format detection issue I was seeing.
|
|
Also, we now always try parsing stdin as journal format (not just sometimes).
|
|
|
|
- all file formats now produce transaction ids, not just journal (#394)
|
|
|
|
- git clone of the hledger repo on windows now works (#345)
|
|
|
|
- added missing benchmark file (#342)
|
|
|
|
- our stack.yaml files are more compatible across stack versions (#300)
|
|
|
|
- use newer file-embed to fix ghci working directory dependence (<https://github.com/snoyberg/file-embed/issues/18>)
|
|
|
|
- report more accurate dates in account transaction report when postings have their own dates
|
|
|
|
(affects hledger-ui and hledger-web registers).
|
|
The newly-named "transaction register date" is the date to be
|
|
displayed for that transaction in a transaction register, for
|
|
some current account and filter query. It is either the
|
|
transaction date from the journal ("transaction general date"),
|
|
or if postings to the current account and matched by the
|
|
register's filter query have their own dates, the earliest of
|
|
those posting dates.
|
|
|
|
- simplify account transactions report's running total.
|
|
|
|
The account transactions report used for hledger-ui and -web
|
|
registers now gives either the "period total" or "historical
|
|
total", depending strictly on the --historical flag. It doesn't
|
|
try to indicate whether the historical total is the accurate
|
|
historical balance (which depends on the user's report query).
|
|
|
|
- reloading a file now preserves the effect of options, query arguments etc.
|
|
|
|
- reloading a journal should now reload all included files as well.
|
|
|
|
- the Hledger.Read.\* modules have been reorganised for better reuse.
|
|
|
|
Hledger.Read.Utils has been renamed Hledger.Read.Common
|
|
and holds low-level parsers & utilities; high-level read
|
|
utilities are now in Hledger.Read.
|
|
|
|
- clarify amount display style canonicalisation code and terminology a bit.
|
|
|
|
Individual amounts still have styles; from these we derive
|
|
the standard "commodity styles". In user docs, we might call
|
|
these "commodity formats" since they can be controlled by the
|
|
"format" subdirective in journal files.
|
|
|
|
- Journal is now a monoid
|
|
|
|
- expandPath now throws a proper IO error
|
|
|
|
- more unit tests, start using doctest
|
|
|
|
|
|
|
|
|
|
0.27 (2015/10/30)
|
|
|
|
- The main hledger types now derive NFData, which makes it easier to
|
|
time things with criterion.
|
|
|
|
- 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).
|
|
|
|
- Read: parsers now use a consistent p suffix.
|
|
|
|
- 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
|
|
|
|
0.25.1 (2015/4/29)
|
|
|
|
- support/require base-compat >0.8 (#245)
|
|
|
|
0.25 (2015/4/7)
|
|
|
|
|
|
- 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
|
|
|
|
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
|
|
|
|
0.23.3 (2014/9/12)
|
|
|
|
- allow transformers 0.4*
|
|
|
|
0.23.2 (2014/5/8)
|
|
|
|
- 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)
|
|
|
|
0.23 (2014/5/1)
|
|
|
|
- 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
|
|
|
|
0.22.1 (2014/1/6) and older: see http://hledger.org/release-notes or doc/CHANGES.md.
|