hledger/CHANGES.md

831 lines
33 KiB
Markdown
Raw Normal View History

General project-related changes and major/notable all-package releases.
For package-specific changes and minor releases, see the package changelogs.
# ec4d131d2
- Merge branch 'bash-completion' (#1410)
An extensive overhaul by @zhelezov of the bash programmable
completions in shell-completions/.
"This was supposed to be just a fix for #1404 but upon visiting the source
several issues became apparent and that is why the commit grew a bit more than
expected. A complete list of changes bellow:
Fix #1404
No more orphaned temporary directories. Commands, options, etc. that used to be
stored in there are included at build-time as here documents in the source.
Fix artifacts in /tmp after build
Upon fixing the above I became aware that the build itself was leaving behind a
heap of artifacts in /tmp that were not taken care of with a make clean.
Fixed by using temporary files and directories in the build directory. Makefile
and build scripts adjusted.
Produce command aliases
Regular expressions in build scripts changed to produce all command aliases
except single letter ones (see below)
Do not propose single letters completions
It is simply not useful and adds a lot of noise. It makes completion slower as
well because you need to hit yes on the prompt:
Display all 200 possibilities? (y or n)
output-options.sh now excludes those.
Query filters simplified
Keep only the prefix of the filter with the colon in query-filters.txt. This
change has two reasons:
Single letter completions are not useful (see above)
It allows for completion suggestions specific to each
Bonus reason: it's a completion engine, not a user manual.
Fix completion impacts on global environment
The completion script was making a couple of changes to the global environment
which had an impact for the rest of the shell session.
set -o pipefail: the change is hidden from the user and could lead to subtle
errors throughout the shell session
COMP_WORDBREAKS=" ": this affects subsequent completions for us and other
programs too. I exclude the colon : from its value and use
compopt -o filenames to handle escaping of special characters for us. I would
like to find a solution without messing with COMP_WORDBREAKS but it is not
straight forward.
Fix hiding of legit subcommands
Completion was hiding all possibilities if a subcommand happens to be the prefix
of another. On typing balance, one should be proposed balancesheet and
balancesheetequity as well.
Return early
Try to complete depending on the current context and return immediately if
successful. Keep completion list relevant and as short as possible.
Context aware completion
Add handlers for option parameter completion, see _hledger_compreply_optarg()
Add handlers for query filters:, see _hledger_compreply_query()
Use --file and --rules-file arguments when proposing completions for the
above, see _hledger()
Propose only top level accounts at first. Again, keep it short and focused.
Custom compgen wrapper
compgen is fairly complicated. There is no way to feed it a word list with
literals. It will mangle your input in so many ways that we cannot trust it. To
work around this several wrappers are used: _hledger_compgen() works with
_hledger_quote_by_ref() to process and escape newline separated input which is
then fed to compgen and finally in COMPREPLY through _hledger_compreply()
and _hledger_compreply_append(). It sounds messy and I guess it is, I would like
to find a more straight forward way to do it. I think it is still a way better
and safer interface with readline than trying to grep our way through.
Replace declare with local
Again, this script is sourced by the shell -- keep variable scopes as narrow as
possible. Oops, they are actually synonymous when used in a function but
local declares our intentions explicitly.
Use compopt -o nosort
Often I resort to using it to keep different groups of completions together.
Whether this is more ergonomic or not is subjective. But our input lists are
already sorted at build-time so why not. Sort manually query-filters.txt when
editing it.
Remove irrelevant comments
And add some new ones :)
I think that is all. Give it a spin, try to abuse it, in and outside of quotes,
with some funky accounts, payees, tags, whatever, and tell me where it breaks or
behaves unexpectedly."
- stack: bump default to lts-17.4/ghc-8.10.4
- tools: Include more commodities and prices in generated journals. (Stephen Morgan)
- Rebuild completion after the rebase on upstream/master (Vladimir Zhelezov)
- `help` command's output is no longer listing help topics, so
those completions are removed.
- `check` command supersedes `check-dates`, `check-dupes`, etc.
- Disable shell expansion in here-docs (Vladimir Zhelezov)
Better be safe that sorry...
- Makefile: move all variable definitions to the top, before targets (Vladimir Zhelezov)
- README: fix syntax highlighting, quotes (Vladimir Zhelezov)
- Update README (Vladimir Zhelezov)
- BSDmakefile (Vladimir Zhelezov)
Just print a reminder to use `gmake` instead of spurting a bunch
of errors.
- Prevent unwanted m4 macro expansion + `-g` GNU compatibility flag (Vladimir Zhelezov)
Most of the included files are meant to be output literally, without any
macro processing. Using `undivert` in place of `include` achieves that.
This is a safety net against unsanitized input generated during the
build. Also, developers editing the shell code stub shouldn't be
constantly alert about triggering accidental macro expansion.
In order that `undivert` mimics GNU behaviour on BSDs, the `-g` flag is
used for the m4 invocation.
- Portability: replace GNU extension `\s` with `[[:space:]]` (Vladimir Zhelezov)
- Revert "Do not use `set -e` in helper shell scripts" (Vladimir Zhelezov)
This reverts commit 0aeb88e663b9b19e173de20b132bef2189c6d7c9.
- Install/uninstall completion for all extensions by default (Vladimir Zhelezov)
Install the symlinks unconditionally. This way the user don't need
to reinstall completion after adding an extension. Of course fine-
grained control is possible with: `make install EXTENSIONS=web` e.g.
- Exit build with an error if unable to parse hledger sub-commands (Vladimir Zhelezov)
- Do not use `set -e` in helper shell scripts (Vladimir Zhelezov)
It is not a substitute for proper error checking, it can easily cause
more trouble than good and it would be a burden for contributors and a
source for potential misbehavior. See this take on the topic for
example: http://mywiki.wooledge.org/BashFAQ/105
- Add phony clean-all build target (Vladimir Zhelezov)
A `make clean` before commit removes hledger-completion.bash and
it is supposed to be in the repository. `make clean` removes build
artifacts while keeping the latter. Do a `make clean-all` to purge
everything.
- Remove `api` from hledger extensions (Vladimir Zhelezov)
Superseded by hledger-web
- Update .gitignore (Vladimir Zhelezov)
Options/commands parsing no longer creates any temporary files
- Add basic editor configuration to shell scripts (Vladimir Zhelezov)
- Move back commands/options parsing to separate shell scripts (Vladimir Zhelezov)
It made the Makefile more difficult to read and this way we can
take advantage of `set -e`, `-o pipefail` and friends.
Clean up debugging targets
- Avoid hard-coded reference to `commands.tmp` (Vladimir Zhelezov)
- Add example usage comment for debug targets (Vladimir Zhelezov)
- Modify .gitignore (Vladimir Zhelezov)
query-filters.txt is a build dependency and shouldn't be ignored.
- Add install and uninstall build targets (Vladimir Zhelezov)
- Move commands and options parsing into the Makefile (Vladimir Zhelezov)
It is just a pipe of sed regex filters and all can be viewed/edited
in one place. Add a couple of debug targets to see easily the
effects of regex changes.
- Add stub file to m4 build target prerequisites (Vladimir Zhelezov)
And as it becomes unwieldy, put all the dependencies in a variable
- Eliminate dependency on paste and parallel (Caleb Maclennan)
- Isolate shell code in a stub file included by m4 (Vladimir Zhelezov)
This way we can easily edit m4 in m4-mode and the shell script stub
in sh-mode and prevent subtle errors coming from accidental quoting
issues or macros (mis)interpreted by m4.
- Fix build race condition (Vladimir Zhelezov)
Make `command-options` a prerequisite of `hledger-completion.bash`.
Currently the build succeeds only because the former takes less time
to finish than all the prerequisites of the latter. If you run a
`make clean && make -j 4`, the build would fail as they are built
in parallel.
- Amend installation comment (Vladimir Zhelezov)
- Add a comment with example installation instructions (Vladimir Zhelezov)
- Remove _function from function names (Vladimir Zhelezov)
- Fix _hledger_extension_completion when called by path... (Vladimir Zhelezov)
Could break if called with ./funky-path/with-dashes/hledger-ui
- return 0 (Vladimir Zhelezov)
Shame on me...
- Fix a7dc62d: set $subcommandOptions unconditionally (Vladimir Zhelezov)
- Add an automatic check for required option argument (Vladimir Zhelezov)
Get rid of manually listing unhandled long options:
Instead of listing options requiring an argument one by one in the
case statement in _hledger_compreply_optarg(), the option completion
lists are searched and if the option does require an argument an
empty COMPREPLY is send. Short options are uncounted for and still
need a manual entry.
This necessitated setting $subcommandOptions beforehand, so it is
moved back where it was -- in the sub-command loop in main().
- Remove `compopt -o nospace` from --{close,open}-acct handler (Vladimir Zhelezov)
- Delay setting `compopt -o filenames` (Vladimir Zhelezov)
...until just before query completion. It is not desired for
commands and options completion and is better used selectively
only when really needed.
- Use compopt -o nospace only for a query prefix (Vladimir Zhelezov)
Similarly to long options treatment, suspend space only when
completing what looks like a query or account prefix i.e. something
ending with a colon (:).
- White space (Vladimir Zhelezov)
- White space, fix alignment (Vladimir Zhelezov)
- Edit comments (Vladimir Zhelezov)
- Remove redundant call of _get_comp_words_by_ref() (Vladimir Zhelezov)
- Break overly long lines for better readability (Vladimir Zhelezov)
Hopefully differences are aligned and easily discernible this way
- Remove _hledger_quote(), unused. (Vladimir Zhelezov)
- Remove unnecessary quoting, a matter of consistency... (Vladimir Zhelezov)
- Add an early return from option argument completion (Vladimir Zhelezov)
Do not even enter the case statement if preceding words don't look
like an option
- White space (Vladimir Zhelezov)
- Simplify sub-command loop logic (Vladimir Zhelezov)
If the cursor is on the sub-command, just offer sub-command
completions and be done with it. It was way over complicated.
- Move sub-command options reply out of the for-loop (Vladimir Zhelezov)
It was just before the `break` statement anyways
- _hledger_compreply_query: minor refactor (Vladimir Zhelezov)
- Add a couple of sub-commands to the no-query list (Vladimir Zhelezov)
- Further refinement of option extraction regex (Vladimir Zhelezov)
- Improve option extraction (Vladimir Zhelezov)
Do not consider lines starting with anything other than white space
followed by a dash.
- Fix regular expression in output-options.sh (Vladimir Zhelezov)
Match only lines starting with white space because there are a lot
of option like strings in the discussion section that follows that
are not necessarily what we are after.
- Adjust comment obsoleted by previous commit: 4d2a4b0 (Vladimir Zhelezov)
- Append `=` to long options requiring an argument (Vladimir Zhelezov)
Make it obvious that the option expects an argument by appending
the equal sign on completion. Suspend space in this case. The
regular expression in `output-options.sh` is adjusted to take into
account this on processing option strings.
- f656ff8 made another early return possible, so do it (Vladimir Zhelezov)
Also it made a couple of statements redundant, cleaned up.
- Postpone options display until after entering a dash (Vladimir Zhelezov)
I was looking at how other programs that have an overwhelming
number of sub-commands and options deal with completion, namely
how git does it, and I liked the clean workflow not spitting every
available option until asked for. Hledger's main workflow is:
> hledger COMMAND QUERY
so I have tried to reproduce this with this change. Options are of
course still there, but not shown until you ask for them by entering
a dash on the command line. Also, the `acct:` filter proposes only top
level accounts until there is some input from the user because accounts
tend to be numerous as well.
- Rename $wordlist to $complist in _hledger_compgen() (Vladimir Zhelezov)
Keep to established conventions
- Typo in comments (Vladimir Zhelezov)
- Make sure `=` is present in COMP_WORDBREAKS (Vladimir Zhelezov)
Currently option processing logic is based on the assumption that `=` is
a word-breaking character, so make sure it is present in COMP_WORDBREAKS
- A non-recursive version of _hledger_compreply_optarg() (Vladimir Zhelezov)
Feels more streamlined and readable
- Make hard-coded completion word lists easy to find (Vladimir Zhelezov)
A quick search for `wordlist=` should be enough to find hard-coded
completions if we need to change them
- Simplify condition (Vladimir Zhelezov)
Knowing the cursor position is enough to decide whether to complete
subcommand or not, and subcommand is already known.
- Minor refactor of main function (Vladimir Zhelezov)
No functional changes except special treatment of `help` subcommand
- Revert "Refactor _hledger_compreply_optarg()" (Vladimir Zhelezov)
This reverts commit 2fd01d8ef51b897a63a2590556dbb3af7c13ffc9.
Well, I was so wrong...
- Refactor _hledger_compreply_optarg() (Vladimir Zhelezov)
It used to do a lot more work parsing the command line that is
no longer necessary. Clean up redundant code.
- Clarify comment in extension completion function (Vladimir Zhelezov)
- Refactor _hledger_extension_completion_function() (Vladimir Zhelezov)
Reduce number of instructions, remove variables used only once
- Fix extension completion (Vladimir Zhelezov)
When inserting $extensionName in $COMP_WORDS manually, $COMP_CWORD lags
behind by one. Needs a manual adjustment too.
- Fix duplicate call of _hledger_compreply_optarg() (Vladimir Zhelezov)
It was called in both conditional branches so it's moved out before
the conditional.
- Helper _hledger_debug() now accepts any number of arguments (Vladimir Zhelezov)
- Fix --long-opt= completion (Vladimir Zhelezov)
Commit #64282f3f broke that somehow so I need to force the match on
an empty string after the equal sign, not the equal sign itself.
I think that _init_completion() does a bit more than I need...
- Style: unset compopt filenames if completing command or option (Vladimir Zhelezov)
This is about the looks of the completion list -- if we have a
directory with the name of a subcommand it will be presented with
a trailing slash. This avoids that.
- Style: replace $cur with $subcommand (Vladimir Zhelezov)
It changes nothing but spells out intention more clearly
- More option argument completions (Vladimir Zhelezov)
Added handlers for:
--output-format
--close-acct
--open-acct
--debug
Added --drop to blocking list
- Add optional arguments $prefix and $match to _hledger_compgen() (Vladimir Zhelezov)
This allows more flexibility when generating completion candidates
and we don't need to resort to external help from `sed` or others.
_hledger_compgen's arguments become:
$1 -> $wordlist:
a newline separated wordlist with completion cadidates
$2 -> $prefix:
(optional) a prefix string to add to generated completions
$3 -> $match:
(optional) a word to match instead of $cur, the default.
If $match is null and $prefix is defined the match is done against $cur
stripped of $prefix. If both $prefix and $match are null we match against
$cur and no prefix is added to completions. Of course you can also pass
an empty string as $prefix and set $match to whatever you wish.
- Use _init_completion() (Vladimir Zhelezov)
This handles a lot that we have to do manually otherwise. Without
this we need to handle e.g. redirections to get completion for say:
> hledger payees > <TAB>
Also because this function assumes that we use `cur`, `prev`, `words`
and `cword` and sets them up for us, `wordToComplete`, `COMP_WORDS`
and `COMP_CWORD` are renamed accordingly. Those names are pretty much
hard-coded in bash completion so it is easier to follow the lead than
go with custom variable names.
- Fix or silence shellcheck warnings (Vladimir Zhelezov)
There are a couple of places where (un)quoting is intentionally
skipped so make those explicit.
- Query filter completion for amt, real and status; clean whitespace (Vladimir Zhelezov)
- Basic settings for major editors: prevent mixing tabs and spaces (Vladimir Zhelezov)
- Fix: pass *all* accounts and rules files to hledger calls (Vladimir Zhelezov)
_hledger_optarg() is used to parse the options on the command line
and provide their arguments for context aware completion suggestions
- Fix quoted/escaped file path handling in _hledger() (Vladimir Zhelezov)
When reading hledger (rules-)file from COMP_WORDS we need to unescape it
first. For once compgen is doing exactly what we need :)
- Fix #1404, and more... (Vladimir Zhelezov)
This was supposed to be just a fix for #1404 but upon visiting the source
several issues became apparent and that is why the commit grew a bit more than
expected. A complete list of changes bellow:
- Fix #1404
No more orphaned temporary directories. Commands, options, etc. that used to be
stored in there are included at build-time as here documents in the source.
- Fix artifacts in =/tmp= after build
Upon fixing the above I became aware that the build itself was leaving behind a
heap of artifacts in =/tmp= that were not taken care of with a ~make clean~.
Fixed by using temporary files and directories in the build directory. Makefile
and build scripts adjusted.
- Produce command aliases
Regular expressions in build scripts changed to produce all command aliases
except single letter ones (see below)
- Do not propose single letters completions
It is simply not useful and adds a lot of noise. It makes completion slower as
well because you need to hit yes on the prompt:
> Display all 200 possibilities? (y or n)
=output-options.sh= now excludes those.
- Query filters simplified
Keep only the prefix of the filter with the colon in =query-filters.txt=. This
change has two reasons:
- Single letter completions are not useful (see above)
- It allows for completion suggestions specific to each
- Bonus reason: it's a completion engine, not a user manual.
- Fix completion impacts on global environment
The completion script was making a couple of changes to the global environment
which had an impact for the rest of the shell session.
~set -o pipefail~: the change is hidden from the user and could lead to subtle
errors throughout the shell session
COMP_WORDBREAKS=" ": this affects subsequent completions for us and other
programs too. I exclude the colon =:= from its value and use
~compopt -o filenames~ to handle escaping of special characters for us. I would
like to find a solution without messing with COMP_WORDBREAKS but it is not
straight forward.
- Fix hiding of legit subcommands
Completion was hiding all possibilities if a subcommand happens to be the prefix
of another. On typing ~balance~, one should be proposed ~balancesheet~ and
~balancesheetequity~ as well.
- Return early
Try to complete depending on the current context and return immediately if
successful. Keep completion list relevant and as short as possible.
- Context aware completion
- Add handlers for option parameter completion, see _hledger_compreply_optarg()
- Add handlers for query filters:, see _hledger_compreply_query()
- Use --file and --rules-file arguments when proposing completions for the
above, see _hledger()
- Propose only top level accounts at first. Again, keep it short and focused.
- Custom ~compgen~ wrapper
~compgen~ is fairly complicated. There is no way to feed it a word list with
literals. It will mangle your input in so many ways that we cannot trust it. To
work around this several wrappers are used: _hledger_compgen() works with
_hledger_quote_by_ref() to process and escape newline separated input which is
then fed to ~compgen~ and finally in ~COMPREPLY~ through _hledger_compreply()
and _hledger_compreply_append(). It sounds messy and I guess it is, I would like
to find a more straight forward way to do it. I think it is still a way better
and safer interface with ~readline~ than trying to ~grep~ our way through.
- Replace ~declare~ with ~local~
Again, this script is sourced by the shell -- keep variable scopes as narrow as
possible.
- Use ~compopt -o nosort~
Often I resort to using it to keep different groups of completions together.
Whether this is more ergonomic or not is subjective. But our input lists are
already sorted at build-time so why not. Sort manually =query-filters.txt= when
changing it.
- Remove irrelevant comments
And add some new ones :)
I think that is all. Give it a spin, try to abuse it, in and outside of quotes,
with some funky accounts, payees, tags, whatever, and tell me where it breaks or
behaves unexpectedly.
- doc: explain roi-unrealised.ledger, reference to cookbook (Dmitry Astapov)
- roi: roi-unrealised.example now works based on price directives (Dmitry Astapov)
- bin: more robust --package syntax, comma form sometimes fails
- examples: csv: daedalus wallet csv rules
- cli: rename --infer-value to --infer-market-price
For clarity; infer-value was too vague. The old spelling remains
supported for compatibility, but is now deprecated.
When typing, --infer-market or even --infer (for now) is sufficient.
- install: 1.20.4
- install: 1.20.3
- bin: switch to "runghc", drop "env -S" (#1453)
env -S isn't a thing on linux of course. Go back to using standard
env, which means using a stack options line, which means not using
"ghc". This new setup is probably simpler anyway. I've just had to
give up on the goal of having each script's required packages being
defined in one place; now (to they extent they are required) they
must be defined both in the script header and in compile.sh.
- bin: switch scripts to "stack ghc" and "env -S" (#1453)
Using stack's script command meant that the scripts needed to be
compatible, and regularly tested, with a hledger release in stackage,
rather than the latest hledger source. This created hassles for
maintainers, contributors and sometimes for users.
To simplify things overall, we now require script users to check out
the hledger source tree and run the scripts (or, bin/compile.sh) from
there once so they compile themselves. Some notes on alternative
setups are included (in one of the scripts, and referenced by the
others). This ensures that users and our CI tests are building scripts
the same way.
Current stack does not allow a stack options line to be used with the
"stack ghc" command, unfortunately, so instead we are using env's -S
flag, which hopefully has sufficiently wide support by now, and
putting all arguments in the shebang line.
This method will probably require complete explicit --package options,
unlike "stack script", so more testing and tweaking is expected.
Probably we're going to end up with some long shebang lines.
This isn't pretty but seems like a possible way to keep things
manageable.
- ci: really add addon-building tests to CI (#1453)
- stack: 8.10: bump to latest nightly and ghc 8.10.3
- bin: Update bin scripts for new API. (Stephen Morgan)
- bin: Update bin scripts for current hledger-lib. (Stephen Morgan)
(cherry picked from commit bc4aef17b7fa13ec0754b93325e1c5e5ee04f1e7)
- ci: also test compilation of bin/ add-on scripts
- doc: merge file format manuals into the hledger manual
Also flatten the journal manual topics a bit.
- doc: rewrite commands intro
- bin: switch to "runghc", drop "env -S" (#1453)
env -S isn't a thing on linux of course. Go back to using standard
env, which means using a stack options line, which means not using
"ghc". This new setup is probably simpler anyway. I've just had to
give up on the goal of having each script's required packages being
defined in one place; now (to they extent they are required) they
must be defined both in the script header and in compile.sh.
(cherry picked from commit 32ccbba8050a26d09eb0fa8fdbc2c4b7ffe4f44c)
- bin: switch scripts to "stack ghc" and "env -S" (#1453)
Using stack's script command meant that the scripts needed to be
compatible, and regularly tested, with a hledger release in stackage,
rather than the latest hledger source. This created hassles for
maintainers, contributors and sometimes for users.
To simplify things overall, we now require script users to check out
the hledger source tree and run the scripts (or, bin/compile.sh) from
there once so they compile themselves. Some notes on alternative
setups are included (in one of the scripts, and referenced by the
others). This ensures that users and our CI tests are building scripts
the same way.
Current stack does not allow a stack options line to be used with the
"stack ghc" command, unfortunately, so instead we are using env's -S
flag, which hopefully has sufficiently wide support by now, and
putting all arguments in the shebang line.
This method will probably require complete explicit --package options,
unlike "stack script", so more testing and tweaking is expected.
Probably we're going to end up with some long shebang lines.
This isn't pretty but seems like a possible way to keep things
manageable.
(cherry picked from commit 2db87333d702d27ee45d8089ad4ad189bcb50cf2)
- ci: really add addon-building tests to CI (#1453)
(cherry picked from commit 3ae6cf3200fad46cfbfa15c89e6d06dac309d76c)
- ci: also test compilation of bin/ add-on scripts
(cherry picked from commit 06b466d847c46dc384cdef95658dade68111b173)
- bin: Update bin scripts for current hledger-lib. (Stephen Morgan)
(cherry picked from commit bc4aef17b7fa13ec0754b93325e1c5e5ee04f1e7)
(cherry picked from commit a64d1aa6d0bcaf643bbe2607238026b4d26a3637)
# 1.20.4 2021-01-29
2020-12-29 21:21:27 +03:00
# 1.20.3 2021-01-14
2020-12-29 21:21:27 +03:00
- The run/compile instructions for add-on scripts in bin/ have been
updated. The scripts now use `stack runghc` and are tested (manually
with `make functest` for now) with the corresponding hledger source,
not the hledger on stackage.
2020-12-06 04:32:56 +03:00
# 1.20 2020-12-05
2020-12-29 21:21:27 +03:00
2020-11-24 20:39:05 +03:00
- examples: clean up & add more budgeting examples
2020-11-17 21:51:57 +03:00
- examples: stripe csv
2020-11-04 07:08:47 +03:00
2020-11-17 21:51:57 +03:00
- The functional tests in tests/ have been moved into the respective
packages, eg hledger/test/ and hledger-ui/test/.
2020-11-04 07:08:47 +03:00
2020-11-17 21:51:57 +03:00
- Shake cabalfiles: now gives an error when it fails
2020-11-04 07:08:47 +03:00
2020-11-17 21:51:57 +03:00
- make bench: add some large tabular reports;
run just the slowest commands by default;
run after make (func)test
2020-11-03 21:18:14 +03:00
2020-11-17 21:51:57 +03:00
- a hie.yaml file has been added, so hledger source loads
easily in IDEs supporting haskell-language-server
2020-09-08 02:17:58 +03:00
# 2020-09-07
2020-09-07 22:30:24 +03:00
- Update shell completions (Jakob Schöttl)
2020-09-04 03:05:52 +03:00
2020-09-02 06:28:04 +03:00
# 1.19 2020-09-01
2020-07-05 19:24:16 +03:00
2020-09-02 06:23:30 +03:00
- example scripts:
2020-07-05 19:24:16 +03:00
2020-09-02 06:23:30 +03:00
- stack scripts now use stack's script command consistently
- stack scripts no longer have explicit --package lists, stack
infers them from the imports
- hledger-print-location: new script
2020-06-22 22:24:01 +03:00
2020-09-02 06:23:30 +03:00
- CI:
- always recompile all modules for robustness
- generate optimised binaries, which can be downloaded
- build a single different GHC version with each workflow, reducing
total building and carbon footprint a bit
- stop building with GHC 8.0
- the default stack file now uses lts 16.12 (ghc 8.8.4)
2020-06-22 22:24:01 +03:00
2020-06-21 17:25:51 +03:00
# 1.18.1 2020-06-21
2020-06-21 04:24:15 +03:00
- provide CI binaries for windows, mac & gnu/linux
2020-06-07 22:45:55 +03:00
# 1.18 2020-06-07
2020-04-20 00:45:07 +03:00
2020-06-07 02:53:41 +03:00
- new example scripts:
2020-04-20 00:45:07 +03:00
2020-06-07 02:53:41 +03:00
- hledger-combine-balances.hs, hledger-balance-as-budget.hs (Dmitry Astapov)
- hledger-check-tag-files.hs, hledger-check-tag-files2.hs
2020-04-07 04:38:38 +03:00
2020-06-07 02:53:41 +03:00
- more CSV rule examples: coinbase, waveapp
2020-06-06 01:18:23 +03:00
2020-06-07 02:53:41 +03:00
- new CI (continuous integration) system using Github Actions.
2020-03-19 02:17:13 +03:00
Thanks to Travis and Appveyor for their service to date.
Improvements:
- one CI service instead of several
- more closely integrated with code repo
- tests run on the three main platforms (linux, mac, windows)
- harmless commits are ignored automatically ([ci skip] no longer needed for doc commits)
2020-03-19 02:20:41 +03:00
- scheduled and on-demand testing (push to master, push to ci-* branches, pull request, weekly)
- now tested: all GHC versions, doctests, haddock building
2020-06-07 02:53:41 +03:00
- new shortcut url: http://ci.hledger.org
2020-03-19 02:17:13 +03:00
# 1.17 2020-03-01
2020-02-07 21:47:55 +03:00
2020-03-02 03:44:28 +03:00
- hledger-install: re-enable installation of hledger-iadd & hledger-interest.
2020-02-07 21:47:55 +03:00
2020-03-02 03:44:28 +03:00
- hledger-install: bump minimum stack version to 1.9.1
1.7.1 fails with deps using newer cabal file syntax I believe.
2020-02-07 21:47:55 +03:00
2020-03-02 03:44:28 +03:00
- hledger-install: always do stack update, to help ensure we get the latest packages.
https://github.com/commercialhaskell/stack/issues/5112
2020-01-14 21:08:50 +03:00
2020-03-02 03:44:28 +03:00
- examples: Add a basic example of rule parsing for the output of csb2format. (Evilham)
2020-01-14 21:08:50 +03:00
csb2format deals with the CSB43/AEB43 format, which all banks operating in
Spain must support.
Having these example rules enables easens bootstraping for users with a
Spanish bank account.
2020-03-02 03:44:28 +03:00
- doc: simpler, clearer structure in the manuals and hledger.org sidebar
2020-01-14 21:08:50 +03:00
2020-03-02 03:44:28 +03:00
- doc: a new [Quick Start](https://hledger.org/start.html) page
- doc: a new [Common Tasks](https://hledger.org/hledger.html#common-tasks) section in the hledger manual
2020-01-14 21:08:50 +03:00
2020-03-02 03:44:28 +03:00
- doc: a new invoicing how-to: https://hledger.org/invoicing.html
2020-01-14 21:08:50 +03:00
2020-03-02 03:44:28 +03:00
- doc: Fix dead pointer in contributing (Aleksandar Dimitrov)
2020-01-14 21:08:50 +03:00
2020-03-02 03:44:28 +03:00
- doc: Fix build badges for Travis and AppVeyor (Rui Chen)
2020-01-14 21:08:50 +03:00
2019-12-01 20:59:01 +03:00
# 1.16 2019-12-01
2019-12-01 20:59:01 +03:00
- add support for GHC 8.8, base-compat 0.11 (#1090)
2019-12-01 20:59:01 +03:00
- drop support for GHC 7.10
2019-09-13 18:31:54 +03:00
- add descriptions to most issue tracker labels
2019-12-01 20:59:01 +03:00
- matrix.hledger.org now redirects to a more readable/useful url
2019-09-01 18:41:33 +03:00
# 1.15 2019-09-01
2019-08-31 07:26:23 +03:00
2019-09-01 18:40:05 +03:00
- install: bump to lts-14.4, hledger 1.15, drop hledger-api
2019-08-31 07:26:23 +03:00
2019-09-01 18:40:05 +03:00
- bump versions to 1.15
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- api: drop from Shake scripts
2019-08-19 14:03:54 +03:00
- new unified website: hledger.org now has its own git repo, has
absorbed the github wiki, and is generated with Sphinx.
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- hledger-api's functionality is now included in hledger-web,
and the hledger-api package is mothballed.
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- hledger-install.sh: updated, now also works on FreeBSD 12 (zieone)
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- bin/ addon scripts: hledger-swap-dates added; hledger-check,
hledger-smooth updated. (#1072)
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- shell-completion/ scripts: updated (Jakob Schöttl)
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- github: FUNDING.yml / sponsor button configured
2019-07-25 10:45:56 +03:00
2019-09-01 18:40:05 +03:00
- site: Wine option added to download page
2019-07-11 09:22:04 +03:00
2019-09-01 18:40:05 +03:00
- tools: generatejournal updates: vary amount, make reports with fewer
zeroes, start from a fixed year to keep tests stable, also generate
P records. (#999)
2019-03-21 02:09:25 +03:00
2019-09-01 18:40:05 +03:00
- tools: make, shake, CI: misc. updates
2019-03-21 02:09:25 +03:00
2019-05-04 00:59:12 +03:00
- doc: add a README for the functional tests, linked from contrib guide
2019-03-21 02:09:25 +03:00
2019-09-01 18:40:05 +03:00
- hledger-makeitso has been renamed to hledger-flow (Andreas Pauley)
2019-03-21 02:09:25 +03:00
2019-09-01 18:40:05 +03:00
- The hledger docker image is now based on the "haskell" image (Dmitry Astapov)
2019-03-21 02:09:25 +03:00
2019-03-02 04:43:27 +03:00
# 1.14 2019-03-01
- hledger.org website: now uses https, home page updates,
download page improved package list with status badges.
Also the github wiki pages are now rendered as part of hledger.org,
like the main site pages (with pandoc markdown and tables of contents).
Building the site now requires that a copy of the wiki is checked out
under wiki/.
- bash completion support: removed duplicate options, added new
options, stopped listing -h as a command, added some completion for
external addon commands.
- release automation improvements
- makefile cleanups; make site-liverender helps with local site preview
2019-02-02 03:57:52 +03:00
# 1.13 (2019/01/02)
2019-01-28 21:45:25 +03:00
2019-02-02 03:57:52 +03:00
- packaging: A docker image providing the main hledger tools is now
linked on the download page. This is another way to get up-to-date
hledger tools without building them yourself (and, a way to run
hledger-ui on windows ?) (Dmitry Astapov, Simon Michael)
2019-02-01 02:43:08 +03:00
2019-02-02 03:57:52 +03:00
- hledger-install.sh: fix installation of stack when .local/bin is not
in PATH (Dmitry Astapov)
2019-02-01 02:43:08 +03:00
2019-02-02 03:57:52 +03:00
- doc: fixed pandoc typography conversion in web manuals. Eg `--` was
being rendered as en-dash. (#954).
2019-02-01 02:43:08 +03:00
2019-02-02 03:57:52 +03:00
Developers:
2019-02-01 02:43:08 +03:00
2019-02-02 03:57:52 +03:00
- developer docs have moved from the wiki into CONTRIBUTING.md (#920)
2019-02-02 03:57:52 +03:00
- new streamlined changelog update process. Shake targets:
./Shake changelogs
./Shake CHANGES.md
./Shake CHANGES.md-dry
./Shake PKG/CHANGES.md
./Shake PKG/CHANGES.md-dry
2019-01-26 22:30:54 +03:00
2019-02-02 03:57:52 +03:00
update the project-wide and/or package changelogs, inserting new
commits (touching the respective directory, since the tag version or
commit hash which is the first word in the changelog's previous top
heading) at the top, formatted as changelog entries.
2019-01-26 22:30:54 +03:00
2019-02-02 03:57:52 +03:00
- ./Shake PKG - builds a package plus its embedded docs.
./Shake build - builds all the packages and their embedded docs.
("stack build PKG" does not notice changes in embedded doc files.)
2019-01-26 22:30:54 +03:00
2019-02-02 03:57:52 +03:00
- make ghci-shake - loads Shake.hs in ghci
2019-01-26 22:30:54 +03:00
2019-02-02 03:57:52 +03:00
- make tags - includes doc source files, hpack/cabal files, Shake.hs
2019-01-26 22:30:54 +03:00
- make site-livereload - opens a reloading browser view on the website html
(requires `livereloadx`)
2019-02-02 03:57:52 +03:00
- added a Dockerfile and helper scripts (Dmitry Astapov)
- doc files and hpack/cabal files are included in TAGS again
2019-01-26 22:30:54 +03:00
# 1.12 (2018/12/02)