Releases: simonmichael/hledger
1.29
Release notes (https://hledger.org/release-notes.html#hledger-1-29)
Tag checking,
flexible multi-period start dates,
flexible cost/conversion posting combining,
new commands list,
hledger manual reorg,
easier close command,
10% more Ledger file compatible
hledger 1.29
Breaking changes
- Weekly reports are no longer automatically adjusted to start on a
monday; in some cases you might need to adjust their start date to
preserve simple week headings (see below).
Features
-
In journal format there is now a
tag
directive for declaring tag names,
and the check command now has atags
check to enforce use of declared tag names. -
Periodic transactions and multi-period reports can now start on any date.
To enable this while still maintaining pretty good backward compatibility,
hledger now treats inferred dates, and dates where the day is unspecified,
as "flexible" (which can be automatically adjusted to interval boundaries),
and dates specified to the day as "exact" (which can not).
Eg:-
A periodic rule like
~ monthly from 2023-01-15
now works as
you'd expect instead of raising an error. This also improves
our ability to read Ledger files. -
Period options like
-p 'monthly from 2023/1/15'
or-M -b 2023/1/15
now start the report on exactly 1/15 instead of being adjusted to 1/1.
Note: periods using
in
may look partial but are considered to specify exact dates.
So weekly reports such as-p 'weekly in 2023-01'
, which previously
were adjusted to start on a monday, will now start exactly on 2023-01-01.
This can also cause more verbose column headings.
To guarantee simple week headings, you must now start such reports
exactly on a monday, eg-p 'weekly from 2022-12-26 to 2023-02'
.
(#1982) -
-
You can now freely combine @/@@ costs and conversion postings
in a single transaction. This can help readability, and also allows
more flexibility when recording cost. hledger will check that the
two notations are in agreement, and ignore the redundancy if they are.
(Conversion postings are postings to accounts with typeV
/Conversion
or nameequity:conversion
/equity:trade
/equity:trading
,
or subaccounts of these. See also COST.)
Improvements
-
hledger's commands list has been reorganised for clarity.
More add-on commands are now recognised and categorised,
and unrecognised add-on commands are listed in a more compact
multi-column layout.
(Simon Michael, Michael Grünewald) -
hledger's commands list and command line help now use ANSI (bold
headings) when supported. -
hledger's commands list and command line help now use a pager
(respecting $PAGER) for long output except on MS Windows. -
hledger's
--version
output no longer shows+
for dev builds made
in dirty repos (it was buggy). -
The add command's Description completions now also include payee names
(declared withpayee
or recorded in transactions with|
),
not just full descriptions. -
aregister now supports HTML output.
(#1996) (Jonathan Dowland) -
aregister now shows a " (matching query)" hint in report title
when extra query args (other than date: or depth:) are used,
to reduce confusion. -
close now has three modes,
--retain
/--migrate
/--open
,
clarifying its uses and providing more useful defaults. -
register-match is now the
--match
mode of the register command.
(This command was used by ledger-autosync at one point; if you still
need it, hopefullyregister --match
works similarly.) -
print-unique has been dropped, because it doesn't
support print's options, it disorders same-day transactions, I don't
know of any users or use cases, and it could easily be recreated as
an addon script. -
print's JSON output now also includes source positions for
--forecast
transactions.
(Chris Lemaire) -
Journal format now allows the empty commodity symbol to be written
as""
, so it's now possible to declare market prices for it:
P 2022-01-01 "" $100
. This can be useful for timedot data. -
Inferring costs from equity now happens after transaction balancing,
not before. As a result,--infer-costs
now works in transactions
where an amount is left blank. -
account
declarations now reject parenthesised account names,
reducing confusion.
(Chris Lemaire) -
Our journal reader now accepts more Ledger syntax, improving Ledger
file compatibility (#1962). We now test our ability to at least
read the sample journals from Ledger's baseline functional tests,
and our success rate has improved from 80% to 90% since 1.28.since
is accepted as synonym offrom
in period expressionsapply year
andyear
are accepted as synonyms ofY
(lot notes)
in amounts and((valuation expressions))
after amounts are now ignored- directives
A
,assert
,bucket
,capture
,check
,define
,
expr
,eval
,python
,value
,
apply fixed
,apply tag
,
end apply fixed
,end apply tag
,end apply year
are now ignored - subdirectives of
payee
,tag
, andcommodity
(other thanformat
) are now ignored pop
directive is no longer supported
-
When reading CSV, we now check that assigned account names are valid (parseable).
(#1978)
Fixes
-
aregister now handles an extra account query correctly. (#2007)
-
balance's
--help
now mentions--layout=tidy
-
Balance commands with
--layout=bare
now generate proper table
layout in HTML output. -
register's
-w
/--width
option no longer gives ugly parse error messages. -
stats's
--help
no longer wrongly claims to support -O/--output-format. -
Balance assignments with a cost now generate a correct balance assertion. (#1965)
-
The CSV reader now properly skips header lines before attempting to parse records. (#1967)
Scripts/addons
-
Scripts can now use Hledger.Cli.Script, a convenient new prelude which
helps reduce import boilerplate. It currently re-exports:Control.Monad Data.Either Data.List Data.Maybe Data.Ord Data.Time Text.Printf hiding (formatString) Data.Text (Text, pack, unpack) Safe hiding (at) System.Directory System.Environment System.Exit System.FilePath System.Process Hledger Hledger.Cli Hledger.Cli.Main (argsToCliOpts)
(Not much of Data.Text/Data.Text.IO because those need to be qualified.)
Docs
- chunk the hledger manual into parts, rename and rearrange sections for better structure/flow
- add a cheatsheet demonstrating all the main journal features that I recommend
- move a number of my not-so-recommended journal features into a less visible "Other syntax" section
- add: payees/descriptions completion
- areg: more advice on account-matching
- bal: --budget: clarify use of print --forecast
- bal: budget: compare with forecasting; add some tips
- balance cleanups/reorder
- check: adjacentconversionpostings was dropped
- cli: balance: fix link to Budgeting page
- cli: fix all links to Journal > Tags / Commands > tags
- codes: improve example suggested by Rob Nielsen
- csv, timeclock, timedot: clarify comment lines (#1953)
- csv: add new coinbase example
- csv: clarify amount-in/amount-out docs (#1970)
- csv: clarify skip/valid csv semantics (#1967)
- csv: clarify valid CSV requirements and issues (fix #1966)
- csv: cleanup, reorder, CSV rules tips -> Working with CSV
- csv: fix wrong if tables doc; rewrite several sections (#1977)
- csv: flatten, clean up CSV sections
- csv: improve Amount field / Setting amounts
- csv: note -in and -out are used together for one posting (#1970)
- csv: rules factoring tips
- csv: try to clarify how CSV fields and hledger fields work
- document --infer-market-prices with signed costs (#1870)
- fix duplicate market prices heading breaking info navigation
- import: note a pitfall with multifile import
- improve Directives summaries
- introduction/input/output improvements
- journal: cheatsheet: clarify date tag
- journal: rewrite Account names, mention brackets/parentheses (#1915)
- mention pivoting on a tag with multiple values (#1950)
- more cost notation docs; describe Ledger and Beancount cost notation
- more mention of posting order effect on inferring cost (#1959)
- period expressions doc updates
- Removed redundant paragraph in documentation. (J. B. Rainsberger)
- rename directive sections, fix many links
- reorganise commands list, like the CLI
- reorganise bin/README & the Scripts page, add entries for recent scripts
- replace "transaction prices" terminology with "costs"
- tags: discuss multi-values/overriding (#1950)
- update market price inference docs per sol
- Updated section on pivoting. Used synonyms for "member" in cases where there could be confusion with the tag named "member." (Robert Nielsen)
- use more standard and consistent boilerplate in hledger, ui, web man pages
- virtual postings: improve wording per Robert Nielsen
hledger-ui 1.29
-
In the help dialog, mention that LEFT shows other screens.
-
In the manual, mention shift-up/down config needed for Terminal.app.
hledger-web 1.29
-
The add form's typeahead now shows non-ascii text correctly.
(#1961) (Arsen Arsenović) -
In the manual, improve --base-url's description. (#1562)
project changes 1.29
Scripts/addons
- hledger-script-example.hs: rename/cleanup
- sortandmergepostings: new, sorts postings and merges duplicates (Caleb Maclennan, Murukesh Mohanan)
- hledger-register-max: new, prints the posting with largest historical balance
- hledger-git: record shows better error output, no longer force-adds ignored files
- hledger-git: status is fixed, also shows diffs
- hledger-git: add short command aliases r, s, l
- hledger-git...
1.28
Release notes (https://hledger.org/release-notes.html#hledger-1-28)
new hledger-ui screens, better debug output;
accounts, print, csv-reading improvements;
new hledger-move, watchaccounts scripts
hledger 1.28
Features
-
The
accounts
command has new flags:--undeclared
(show accounts used but not declared),
--unused
(show accounts declared but not used), and--find
(find the first account
matched by the first command argument, a convenience for scripts).
Also-u
and-d
short flags have been added for--used
and--declared
. -
A new CSV rule
intra-day-reversed
helps generate transactions in correct order
with CSVs where records are reversed within each day. -
CSV rules can now correctly convert CSV date-times with a implicit or explicit timezone
to dates in your local timezone. Previously, CSV date-times with a different time zone
from yours could convert to off-by-one dates, because the CSV's timezone was ignored.
Now,-
When a CSV has date-times with an implicit timezone different from yours,
you can use thetimezone
rule to declare it. -
CSV date-times with a known timezone (either declared by
timezone
or parsed with%Z
) will be localised to the system timezone
(or to the timezone set with theTZ
environment variable).
(#1936)
-
Improvements
-
print --match now respects -o and -O.
-
print --match now returns a non-zero exit code when there is no acceptable match.
-
Support megaparsec 9.3. (Felix Yan)
-
Support GHC 9.4.
Fixes
- In CSV rules, when assigning a parenthesised account name to
accountN
,
extra whitespace is now ignored, allowing unbalanced postings to be detected correctly.
Scripts/addons
-
bin/hledger-move helps record transfers involving subaccounts and costs,
eg when withdrawing some or all of an investment balance containing many lots and costs. -
bin/hledger-git no longer uses the non-existent git record command.
(#1942) (Patrick Fiaux) -
bin/watchaccounts is a small shell script for watching the account tree as you make changes.
hledger-ui 1.28
Features
-
New "Balance sheet accounts" and "Income statement accounts" screens have been added,
along with a new top-level "Menu" screen for navigating between these and the
"All accounts" screen. -
hledger-ui now starts in the "Balance sheet accounts" screen by default
(unless no asset/liability/equity accounts can be detected,
or command line account query arguments are provided).
This provides a more useful default view than the giant "All accounts" list.
Or, you can force a particular starting screen with the new --menu/--all/--bs/--is flags
(eg,hledger-ui --all
to replicate the old behaviour).
Improvements
-
The ENTER key is equivalent to RIGHT for navigation.
-
hledger-ui debug output is now always logged to ./hledger-ui.log rather than the console,
--debug with no argument is equivalent to --debug=1,
and debug output is much more informative. -
Support GHC 9.4.
-
Support megaparsec 9.3 (Felix Yan)
-
Support (and require) brick 1.5, fsnotify 0.4.x.
Fixes
-
Mouse-clicking in empty space below the last list item no longer navigates
back. It was too obtrusive, eg when you just want to focus the window.
You can still navigate back with the mouse by clicking the left edge of the window. -
A possible bug with detecting change of date while in --watch mode has been fixed.
API
-
hledger-ui's internal types have been changed to allow fewer invalid states
and make it easier to develop and debug.
(#1889, #1919). -
Debug logging helpers have been added and cleaned up in Hledger.Ui.UIUtils:
dbgui
dbguiIO
dbguiEv
dbguiScreensEv
mapScreens
screenId
screenRegisterDescriptions
hledger-web 1.28
Improvements
-
--debug with no argument is now equivalent to --debug=1.
-
Allow megaparsec 9.3 (Felix Yan)
-
Support GHC 9.4
project changes 1.28
Docs
- Miscellaneous improvements.
Examples
- Indian National Pension Service CSV rules (Pranesh Prakash)
Infrastructure
-
make site-watch: switch from entr to watchexec.
-
make hoogle-setup, hoogle-serve: run a local hoogle on hledger code.
-
make man-watch-PROG: watch a hledger program's man page as source files change.
credits 1.28
Simon Michael, Felix Yan, Patrick Fiaux.
Installing
At https://hledger.org/install, binary packages should be available for this release within a few days (look for green badges).
Or, you can build from source as described there, after cloning at tag 1.28
:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.28
Or, if under "Assets" below there are release binaries suitable for your OS and hardware, you can use those.
Here are platform-specific instructions for the release binaries.
(You can copy & paste each block of commands as a unit to save time.):
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.28/hledger-linux-x64.zip # can rerun if interrupted
unzip hledger-linux-x64.zip; tar xvf hledger-linux-x64.tar; rm hledger-linux-x64.{zip,tar} # github workaround, preserves permissions
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Mac on 64-bit Intel
In a terminal window,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.28/hledger-mac-x64.zip
unzip hledger-mac-x64.zip && tar xvf hledger-mac-x64.tar && rm hledger-mac-x64.{zip,tar} # github workaround, preserves permissions
open .
# for the hledger, hledger-ui, hledger-web icons: right-click, Open, confirm it's ok to run
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Windows on 64-bit Intel
In a powershell window (press Windows-r, type powershell, press enter),
Make a place to keep hledger binaries, and add it to your PATH; this makes running hledger easier. You only need to do this once, not for every release:
mkdir -force $HOME\bin >$null
$ENV:PATH += ";"+$HOME+"\bin"
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::User)+";"+$HOME+"\bin", [EnvironmentVariableTarget]::User)
Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.28/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath .
rm hledger-windows-x64.zip
cd $HOME
hledger --version # should show the new version
And ensure a default journal file exists:
out-file -append -encoding ascii $HOME/.hledger.journal
Problems:
- Starting hledger/hledger-web by double-clicking their icon won't work; run them from a cmd or powershell window instead.
Windows 7 on 64-bit Intel, using Firefox
- click hledger-windows-x64.zip below
- choose Open with Windows Explorer, OK
- click Extract all files
- choose a destination folder - ideally one that appears in
echo %PATH%
, likeC:\Windows
(though that one will require administrator permission); otherwise, your home directory (C:\Users\YOURNAME
) - check "Show extracted files when complete"
- click Extract, wait for the destination folder to open
- find the hledger, hledger-web icons (if you extracted to
\Windows
, you'll need to scroll down) - for each icon: double-click, uncheck "Always ask before opening this file", click Run
- close those Explorer windows
- open a command window (press Windows-r, type CMD, press enter)
hledger --version
should show the new versionecho # >> .hledger.journal
to ensure a default journal file exists. (Important: the doubled >> is needed to avoid overwriting existing data.)
Problems:
- Starting hledger by double-clicking its icon won't work because it needs arguments; run it from the command window instead.
- Starting hledger-web by double-clicking its icon may fail eg because Explorer's command window is too small;
configure that to be larger, or run hledger-web from a command window instead. - hledger or hledger-web may fail to run if there is not enough memory available.
Next steps
1.27.1
Release notes (https://hledger.org/release-notes.html#hledger-1-27-1)
2022-09-18 hledger-1.27.1
hledger 1.27.1
Fixes
- Balance commands using
-T -O html
no longer fail with an error
when there is no data to report.
(#1933)
hledger-ui 1.27.1
- Uses hledger-1.27.1
hledger-web 1.27.1
Fixes
-
The add form no longer gives an error when there is just a single file and no file field showing.
(#1932) -
Uses hledger-1.27.1
Installing
At https://hledger.org/install, binary packages should be available for this release within a few days (look for green badges).
Or, you can build from source as described there, after cloning at tag 1.27.1
:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.27.1
Or, if under "Assets" below there are release binaries suitable for your OS and hardware, you can use those.
Here are platform-specific instructions for the release binaries.
(You can copy & paste each block of commands as a unit to save time.):
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.27.1/hledger-linux-x64.zip # can rerun if interrupted
unzip hledger-linux-x64.zip; tar xvf hledger-linux-x64.tar; rm hledger-linux-x64.{zip,tar} # github workaround, preserves permissions
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Mac on 64-bit Intel
In a terminal window,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.27.1/hledger-mac-x64.zip
unzip hledger-mac-x64.zip; tar xvf hledger-mac-x64.tar; rm hledger-mac-x64.{zip,tar} # github workaround, preserves permissions
open .
# for the hledger, hledger-ui, hledger-web icons: right-click, Open, confirm it's ok to run
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Windows on 64-bit Intel
In a powershell window (press Windows-r, type powershell, press enter),
Make a place to keep hledger binaries, and add it to your PATH; this makes running hledger easier. You only need to do this once, not for every release:
mkdir -force $HOME\bin >$null
$ENV:PATH += ";"+$HOME+"\bin"
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::User)+";"+$HOME+"\bin", [EnvironmentVariableTarget]::User)
Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.27.1/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath .
rm hledger-windows-x64.zip
cd $HOME
hledger --version # should show the new version
And ensure a default journal file exists:
out-file -append -encoding ascii $HOME/.hledger.journal
Problems:
- Starting hledger/hledger-web by double-clicking their icon won't work; run them from a cmd or powershell window instead.
Windows 7 on 64-bit Intel, using Firefox
- click hledger-windows-x64.zip below
- choose Open with Windows Explorer, OK
- click Extract all files
- choose a destination folder - ideally one that appears in
echo %PATH%
, likeC:\Windows
(though that one will require administrator permission); otherwise, your home directory (C:\Users\YOURNAME
) - check "Show extracted files when complete"
- click Extract, wait for the destination folder to open
- find the hledger, hledger-web icons (if you extracted to
\Windows
, you'll need to scroll down) - for each icon: double-click, uncheck "Always ask before opening this file", click Run
- close those Explorer windows
- open a command window (press Windows-r, type CMD, press enter)
hledger --version
should show the new versionecho # >> .hledger.journal
to ensure a default journal file exists. (Important: the doubled >> is needed to avoid overwriting existing data.)
Problems:
- Starting hledger by double-clicking its icon won't work because it needs arguments; run it from the command window instead.
- Starting hledger-web by double-clicking its icon may fail eg because Explorer's command window is too small;
configure that to be larger, or run hledger-web from a command window instead. - hledger or hledger-web may fail to run if there is not enough memory available.
Next steps
1.27
Release notes (https://hledger.org/release-notes.html#hledger-1-27)
2022-09-01 hledger-1.27
Infer costs from equity postings, new error checks, improved error messages, fixes.
hledger 1.27
Features
-
hledger check recentassertions
(and flycheck-hledger in Emacs if
you enable this check) requires that all balance-asserted accounts
have a balance assertion within 7 days before their latest posting.This helps remind you to not only record transactions, but also to
regularly check account balances against the real world, to catch
errors sooner and avoid a time-consuming hunt. -
The --infer-costs general flag has been added, as the inverse
operation to --infer-equity. --infer-costs detects commodity
conversion transactions which have been written with equity
conversion postings (the traditional accounting notation) and adds
PTA cost notation (@@) to them (allowing cost reporting).
See https://hledger.org/hledger.html#equity-conversion-postings .
(Stephen Morgan)
Improvements
-
Many error messages have been improved. Most error messages now use
a consistent, more informative format.
(#1436) -
The accounts command has a new --directives flag which makes it
show valid account directives which you can paste into a journal. -
The accounts command has a new --positions flag which shows where
accounts were declared, useful for troubleshooting.
(#1909) -
Bump lower bounds for Diff and githash. (Andrew Lelechenko)
-
GHC 8.6 and 8.8 are no longer supported. Building hledger now
requires GHC 8.10 or greater.
Fixes
-
Account display order is now calculated correctly even when accounts
are declared in multiple files.
(#1909) -
At --debug 5 and up, account declarations info is logged.
(#1909) -
hledger aregister and hledger-ui now show transactions correctly
when there is a type: query.
(#1905) -
bal: Allow cumulative gain and valuechange reports.
Previously, --cumulative with --gain or --valuechange would produce an
empty report. This fixes this issue to produce a reasonable report.
(Stephen Morgan) -
bal: budget goal amounts now respect -c styles (fixes #1907)
-
bal: budget goals now respect -H (#1879)
-
bal: budget goals were ignoring rule-specified start date
-
cf/bs/is: Fixed non-display of child accounts when there is an
intervening account of another type.
(#1921) (Stephen Morgan) -
roi: make sure empty cashflows are skipped when determining first cashflow (Charlotte Van Petegem)
Empty cashflows are added when the begin date of the report is before the first
transaction.
Scripts/addons
-
https://hledger.org/scripts.html - an overview of scripts and addons in bin/.
-
paypaljson, paypaljson2csv - download txns from paypal API
-
hledger-check-postable.hs - check that no postings are made to accounts with a postable:(n|no) tag
-
hledger-addon-example.hs - script template
hledger-ui 1.27
Improvements
-
At --debug=2 and up, log debug output to ./debug.log.
-
Use/require brick 1.0+. (#1889)
-
Use hledger 1.27
hledger-web 1.27
Improvements
-
Improve the add form's layout and space usage.
-
Pre-fill the add form's date field.
-
Highlight today in the add form's date picker.
-
Focus the add form's description field by default.
-
Allow an empty description in the add form.
-
Use hledger 1.27
Fixes
- Respect the add form's file selector again.
(Simon Michael, Kerstin, #1229)
project changes 1.27
Docs
-
https://hledger.org/ERRORS.html - an overview of hledger's error messages.
-
Rewrite/consolidate cost and conversion docs.
-
New template for github releases, with improved install instructions for binaries.
-
Add modern windows binary install instructions. (Lazar Lazarov, Simon Michael)
-
Fix tables of contents in developer documentation. (Alex Hirzel)
-
Update ACHIEVEMENTS. (Alex Hirzel)
-
Corrected the extension for the CREDITS file. (Pranesh Prakash)
-
Fix broken link in bin/README.md. (David D Lowe)
Examples
- Add example for capital one credit cards CSV. (max thomas)
Process
-
Revive github projects, set up http://projects.hledger.org shortcut url
-
Many cleanups and improvements to the CI test and binary-generating
github actions. The CI tests for master now also include
hledger-lib's doctests. -
All packages now disallow name shadowing in their code.
-
make scc gives a modern report of code line counts.
-
make ghci-unit-test loads hledger-lib unit tests in GHCI.
credits 1.27
Simon Michael,
Stephen Morgan,
Alex Hirzel,
Pranesh Prakash,
David D Lowe,
Charlotte Van Petegem,
Max Thomas,
Andrew Lelechenko.
Installing
At https://hledger.org/install, binary packages should be available for this release within a few days (look for green badges).
Or, you can build from source as described there, after cloning at tag 1.27
:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.27
Or, if under "Assets" below there are release binaries suitable for your OS and hardware, you can use those.
Here are platform-specific instructions for the release binaries.
(You can copy & paste each block of commands as a unit to save time.):
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.27/hledger-linux-x64.zip # can rerun if interrupted
unzip hledger-linux-x64.zip; tar xvf hledger-linux-x64.tar; rm hledger-linux-x64.{zip,tar} # github workaround, preserves permissions
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Mac on 64-bit Intel
In a terminal window,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.27/hledger-mac-x64.zip
unzip hledger-mac-x64.zip; tar xvf hledger-mac-x64.tar; rm hledger-mac-x64.{zip,tar} # github workaround, preserves permissions
open .
# for the hledger, hledger-ui, hledger-web icons: right-click, Open, confirm it's ok to run
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Windows on 64-bit Intel
In a powershell window (press Windows-r, type powershell, press enter),
Make a place to keep hledger binaries, and add it to your PATH; this makes running hledger easier. You only need to do this once, not for every release:
mkdir -force $HOME\bin >$null
$ENV:PATH += ";"+$HOME+"\bin"
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::User)+";"+$HOME+"\bin", [EnvironmentVariableTarget]::User)
Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.27/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath .
rm hledger-windows-x64.zip
cd $HOME
hledger --version # should show the new version
And ensure a default journal file exists:
out-file -append -encoding ascii $HOME/.hledger.journal
Problems:
- Starting hledger/hledger-web by double-clicking their icon won't work; run them from a cmd or powershell window instead.
Windows 7 on 64-bit Intel, using Firefox
- click hledger-windows-x64.zip below
- choose Open with Windows Explorer, OK
- click Extract all files
- choose a destination folder - ideally one that appears in
echo %PATH%
, likeC:\Windows
(though that one will require administrator permission); otherwise, your home directory (C:\Users\YOURNAME
) - check "Show extracted files when complete"
- click Extract, wait for the destination folder to open
- find the hledger, hledger-web icons (if you extracted to
\Windows
, you'll need to scroll down) - for each icon: double-click, uncheck "Always ask before opening this file", click Run
- close those Explorer windows
- open a command window (press Windows-r, type CMD, press enter)
hledger --version
should show the new versionecho # >> .hledger.journal
to ensure a default journal file exists. (Important: the doubled >> is needed to avoid overwriting existing data.)
Problems:
- Starting hledger by double-clicking its icon won't work because it needs arguments; run it from the command window instead.
- Starting hledger-web by double-clicking its icon may fail eg because Explorer's command window is too small;
configure that to be larger, or run hledger-web from a command window instead. - hledger or hledger-web may fail to run if there is not enough memory available.
Next steps
1.26.1
Release notes (https://hledger.org/release-notes.html#hledger-1-26-1)
hledger 1.26.1
- require safe 0.3.19+ to avoid deprecation warning
hledger-ui 1.26.1
-
support doclayout 0.4, brick 0.72+
-
require safe 0.3.19+ to avoid deprecation warning
Installing
At https://hledger.org/install, binary packages should be available for this release within a few days (look for green badges).
Or, you can build from source as described there, after cloning at tag 1.26.1
:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.26.1
Or, if there are release binaries below suitable for your OS and hardware, you can use those.
Note: release binaries have been updated:
- 2022-07-31: binaries have been generated with commit b0822c9, slightly newer than the 1.26.1 tag
to avoid a GHC bug. #1900
Here are some approximate per-platform instructions. (You can copy & paste each block of commands as a unit, to save time.)
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.26.1/hledger-linux-x64.zip # can rerun this if interrupted
unzip hledger-linux-x64.zip
chmod +x hledger hledger-ui hledger-web
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Mac on 64-bit Intel
In a terminal window,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.26.1/hledger-mac-x64.zip
unzip hledger-mac-x64.zip
chmod +x hledger hledger-ui hledger-web
open .
# for the hledger, hledger-ui, hledger-web icons: right-click the executable, Open, confirm it's ok to run
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Windows on 64-bit Intel
In a powershell window (press Windows-r, type powershell, press enter),
Make a place to keep hledger binaries, and add it to your PATH; this makes running hledger easier. You only need to do this once, not for every release.
mkdir -force $HOME\bin >$null
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::User)+";"+$HOME+"\bin", [EnvironmentVariableTarget]::User)
$ENV:PATH += ";"+$HOME+"\bin"
Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.26.1/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath .
rm hledger-windows-x64.zip
cd $HOME
hledger --version # should show the new version
And ensure a default journal file exists:
out-file -append -encoding ascii $HOME/.hledger.journal
Problems:
- Starting hledger/hledger-web by double-clicking their icon won't work; run them from a cmd or powershell window instead.
Next steps
Once installed, you could try these quick starts / tutorials:
1.26
Release notes (https://hledger.org/release-notes.html#hledger-1-26)
2022-06-04 hledger-1.26
Miscellaneous improvements.
hledger 1.26
Improvements
-
register
andaregister
have been made faster, by-
considering only the first 1000 items for choosing column
widths. You can restore the old behaviour (guaranteed alignment
across all items) with the new--align-all
flag.
(#1839, Stephen Morgan) -
discarding cost data more aggressively, giving big speedups for
large journals with many costs.
(#1828, Stephen Morgan)
-
-
Most error messages from the journal reader and the
check
command now use
a consistent layout, with an "Error:" prefix, line and column numbers,
and an excerpt highlighting the problem. Work in progress.
(#1436) (Simon Michael, Stephen Morgan) -
hledger check ordereddates
now always checks all transactions
(previously it could be restricted by query arguments). -
The
--pivot
options now supports astatus
argument, to pivot on transaction status. -
Update bash completions (Jakob Schöttl)
Fixes
-
Value reports with
--date2
and a report interval (likehledger bal -VM --date2
)
were failing with a "expected all spans to have an end date" error since 1.22;
this is now fixed.
(#1851, Stephen Morgan) -
In CSV rules, interpolation of a non-existent field like
%999
or%nosuchfield
is now ignored (previously it inserted that literal text).
Note this means such an error will not be reported;
Simon chose this as the more convenient behaviour when converting CSV.
Experimental.
(#1803, #1814) (Stephen Morgan) -
--infer-market-price
was inferring a negative price when selling.
(#1813, Stephen Morgan) -
Allow an escaped forward slash in regular expression account aliases.
(#982, Stephen Morgan) -
The
tags
command now also lists tags from unused account declarations.
It also has improved command-line help layout.
(#1857) -
hledger accounts
now shows its debug output at a more appropriate level (4).
hledger-ui 1.26
- Uses hledger 1.26.
hledger-web 1.26
Fixes
- Don't add link URLs when printing.
Improvements
-
Now builds with GHC 9.2.
-
Uses hledger 1.26.
project changes 1.26
Scripts/addons
-
renamed hledger-number.sh to hledger-simplebal
-
added hledger-git, hledger-pijul
-
fin (and bin) scripts show available scripts and their help
-
renamed aliases.sh to bashrc
-
Get hledger-print-location working. (Stephen Morgan)
Docs
-
README cleanup, inspired by feedback from README reviewer Lars Wirzenius.
-
Clearer sponsoring info and more complete sponsor lists on website and README.
-
The new https://github.com/simonmichael/hledger_finance repo
keeps track of our public finances (on Open Collective, Liberapay etc.)
Examples
- invoice: calculate dates accurately on last days of month
Process
-
Stackage nightly and GHC 9.2 are now the default for dev builds.
-
CI workflows:
- Workflows and binaries have more consistent naming, mentioning platform and architecture.
- The main test workflow is now
linux-x64-test
, replacingpush
andpull
.
It runs for both pushes and pull requests, and generates binaries on every run. - Pushes/merges to master, including Simon's, are required to have passed
linux-x64-test
on another github branch first. - Mac and Windows binaries are now stripped also (if applicable).
-
make buildtimes
,make buildtimes-cabal
show GHC codegen times.
credits 1.26
Simon Michael,
Stephen Morgan,
Jakob Schöttl,
Patrik Keller.
Installing
At https://hledger.org/install, binary packages should be available for this release within a few days (look for green badges).
Or, you can build from source as described there, after cloning at tag 1.26
:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.26
Or, if there are release binaries below suitable for your OS and hardware, you can use those.
(Release binaries have been updated:
- 2022-06-05: linux-x64 binaries updated to run at normal speed. #1867
- 2022-06-08: windows-x64 binaries fixed. #1869)
Here are some approximate per-platform instructions. (You can copy & paste each block of commands as a unit, to save time.)
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.26/hledger-linux-x64.zip # can rerun this if interrupted
unzip hledger-linux-x64.zip
chmod +x hledger hledger-ui hledger-web
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Mac on 64-bit Intel
In a terminal window,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.26/hledger-mac-x64.zip
unzip hledger-mac-x64.zip
chmod +x hledger hledger-ui hledger-web
open .
# for the hledger, hledger-ui, hledger-web icons: right-click the executable, Open, confirm it's ok to run
cd -
hledger --version # should show the new version
touch $HOME/.hledger.journal # ensure a default journal file exists
Windows on 64-bit Intel
In a powershell window (press Windows-r, type powershell, press enter),
Make a place to keep hledger binaries, and add it to your PATH; this makes running hledger easier. You only need to do this once, not for every release.
mkdir -force $HOME\bin >$null
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::User)+";"+$HOME+"\bin", [EnvironmentVariableTarget]::User)
$ENV:PATH += ";"+$HOME+"\bin"
Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.26/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath .
rm hledger-windows-x64.zip
cd $HOME
hledger --version # should show the new version
And ensure a default journal file exists:
out-file -append -encoding ascii $HOME/.hledger.journal
Problems:
- Starting hledger/hledger-web by double-clicking their icon won't work; run them from a cmd or powershell window instead.
Windows 7 on 64-bit Intel, using Firefox
- click hledger-windows-x64.zip below
- choose Open with Windows Explorer, OK
- click Extract all files
- choose a destination folder - ideally one that appears in
echo %PATH%
, likeC:\Windows
(though that one will require administrator permission); otherwise, your home directory (C:\Users\YOURNAME
) - check "Show extracted files when complete"
- click Extract, wait for the destination folder to open
- find the hledger, hledger-web icons (if you extracted to
\Windows
, you'll need to scroll down) - for each icon: double-click, uncheck "Always ask before opening this file", click Run
- close those Explorer windows
- open a command window (press Windows-r, type CMD, press enter)
hledger --version
should show the new versionecho # >> .hledger.journal
to ensure a default journal file exists
Problems:
- Starting hledger by double-clicking its icon won't work because it needs arguments; run it from the command window instead.
- Starting hledger-web by double-clicking its icon may fail because Explorer's command window is too small;
configure that to be larger, or run hledger-web from a command window. - hledger or hledger-web may fail to run if there is not enough memory available.
Next steps
Once installed, you could try these quick starts / tutorials:
1.25
Release notes (https://hledger.org/release-notes.html#hledger-1-25)
2022-03-04 hledger 1.25
Account type and tag querying, infer equity postings from @ notation, easily-consumed "tidy" CSV output.
hledger 1.25
Breaking changes
-
Journal format's
account NAME TYPECODE
syntax, deprecated in 1.13, has been dropped.
Please useaccount NAME ; type:TYPECODE
instead.
(Stephen Morgan) -
The rule for auto-detecting "cash" (liquid asset) accounts from account names
for thecashflow
report has been simplified.
If you have been using the cashflow report, without explicitly declaring Cash accounts,
you might notice a change, and might need to declare your Cash accounts explicitly
(by addingtype:C
tags to top-level cash account directives).
Features
-
The new
type:TYPECODES
query matches accounts by their accounting type.
Account types are declared with atype:
tag in account directives,
or inferred from common english account names, or inherited from parent accounts,
as described at Declaring accounts > Account types.
This generalises the account type detection ofbalancesheet
,incomestatement
etc.,
so you can now select accounts by type without needing fragile account name regexps.
Also, theaccounts
command has a new--types
flag to show account types.
Eg:hledger bal type:AL # balance report showing assets and liabilities hledger reg type:x # register of all expenses hledger acc --types # list accounts and their types
-
The
tag:
query can now also match account tags, as defined in account directives.
Subaccounts inherit tags from their parents.
Accounts, postings and transactions can be filtered by account tag.
(#1817) -
The new
--infer-equity
flag replaces the@
/@@
price notation in commodity
conversion transactions with more correct equity postings (when not using-B/--cost
).
This makes these transactions fully balanced, and preserves the accounting equation.
For example:2000-01-01 a 1 AAA @@ 2 BBB b -2 BBB $ hledger print --infer-equity 2000-01-01 a 1 AAA equity:conversion:AAA-BBB:AAA -1 AAA equity:conversion:AAA-BBB:BBB 2 BBB b -2 BBB
equity:conversion
is the account used by default. To use a different account,
declare it with an account directive and the newV
(Conversion
) account type.
Eg:account Equity:Trading ; type:V
(#1554) (Stephen Morgan, Simon Michael)
-
Normalised, easy-to-process "tidy" CSV data can now be generated with
--layout tidy -O csv
.
In tidy data, every variable is a column and each row represents a single data point
(cf https://vita.had.co.nz/papers/tidy-data.html).
(#1768,
#1773,
#1775)
(Stephen Morgan)
Improvements
-
Strict mode (
-s/--strict
) now also checks periodic transactions (--forecast
)
and auto postings (--auto
).
(#1810) (Stephen Morgan) -
hledger check commodities
now always accepts zero amounts which have no commodity symbol.
(#1767) (Stephen Morgan) -
Relative smart dates may now specify an arbitrary number of some period into the future or past).
Some examples:in 5 days
in -6 months
5 weeks ahead
2 quarters ago
(Stephen Morgan)
-
CSV output now always disables digit group marks (eg, thousands separators),
making it more machine readable by default.
(#1771) (Stephen Morgan) -
Unicode may now be used in field names/references in CSV rules files.
(#1809) (Stephen Morgan) -
Error messages improved:
- Balance assignments
- aregister
- Command line parsing (less "user error")
Fixes
-
--layout=bare
no longer shows a commodity symbol for zero amounts.
(#1789) (Stephen Morgan) -
balance --budget
no longer elides boring parents of unbudgeted accounts
if they have a budget.
(#1800) (Stephen Morgan) -
roi
now reports TWR correctly- when there are several PnL changes occurring on a single day
- and also when investment is fully sold/withdrawn/discounted at the end of a particular reporting period.
(#1791) (Dmitry Astapov)
Documentation
-
There is a new CONVERSION & COST section, replacing COSTING.
(#1554) -
Some problematic interactions of account aliases with other features have been noted.
(#1788)
hledger-ui 1.25
- Uses hledger 1.25.
hledger-web 1.25
- Uses hledger 1.25.
project changes 1.25
Scripts/addons
-
hledger-install.sh now also installs Pavan Rikhi's hledger-stockquotes tool.
-
The bin/hledger-number addon was added.
-
The bin/hledger-check-fancyassertions addon now shows docs in --help.
-
A new invoice-making script was added: examples/invoicing/invoice-script/invoice
Process/tools
-
The RELEASING doc and release process has been updated,
and a new helper script added: tools/releaseprep.
make hackageupload
now only works from a branch named
VERSION-branch or VERSION-release. Ie, making releases from master
is no longer allowed, a release branch is always required, -
CI: The commitlint check is more robust, and now runs only in
the push to master and pull request workflows, and not eg when
building release binaries. linux-x64 binaries are now built
with ghc 9.0, not 8.10. Workflow, branch, and binary names
have been improved. -
make ghci-ui
/make ghcid-ui
now use older ghc 8.10 to avoid
ghc 9.0-triggered failures. -
hls support: The hie.yaml added to help hls work on mac m1
has been moved out of the way, since it probably makes things worse
on other architectures.
credits 1.25
Simon Michael,
Stephen Morgan,
Dmitry Astapov,
Patrik Keller.
How to install
You can build this release from tag 1.25
, or try the binaries below, or see https://hledger.org/install for other install methods.
About these binaries:
Download and unzip the appropriate zip file. Unix and mac users will need to chmod +x
the binaries to make them executable. Mac users will need to mark them as trusted, eg right-click the file in Finder and option-click Open. Windows users will need to do something similar. There is no hledger-ui binary for Windows.
1.24.1
https://hledger.org/release-notes.html#hledger-1-24-1
hledger 1.24.1
Fixes
balance --declared
is now filtered correctly by anot:ACCT
query.
(#1783)- More reliable --version output, with commit date and without patch level.
hledger-ui 1.24.1
Fixes
- An extra "root" account is no longer shown (a regression in 1.24).
(#1782) - Declared accounts are now filtered correctly by a not:ACCT query.
(#1783) - More reliable --version output, with commit date and without patch level.
hledger-web 1.24.1
Fixes
- More reliable --version output, with commit date and without patch level.
Installing
This release may be packaged for your system: check https://hledger.org/install.
Or, you can try the CI binaries below. Download the appropriate "hledger-PLATFORM.zip" file below. Unzip it to get 2 or 3 hledger binaries in the current directory. On GNU/Linux, you will need to chmod +x
these files to make them executable. They should run on most GNU/Linux machines with x64 or (when provided) arm32v7 architecture. On mac machines, you will need to chmod +x
them and then mark them as trusted: in Finder, right-click the file then option-click Open. On windows machines you'll need to do something similar. There is no hledger-ui binary for Windows.
1.24
Installing
This release may be packaged for your system: check https://hledger.org/download.html#binary-packages. Or, you can try the binaries built by our github CI setup, below. Notes:
-
Download and unzip the appropriate "hledger-PLATFORM.zip" file below. This will unpack 2 or 3 hledger binaries into the current directory. On mac and unix machines, you will need to
chmod +x
these files to make them executable. -
Windows binaries are built on Windows Server 2019. There is no hledger-ui binary for Windows.
-
Mac binaries are built on macos 10.15 catalina. You will need to mark them as trusted before you can run them: run
open .
to view the current folder in Finder; control-clickhledger
; option-click "Open"; allow running it. -
Linux binaries are static and should run on most GNU/Linux machines with x64 or (when provided) arm32v7 architecture.
Release notes
New report layout options with less eliding, hledger-ui mouse support, misc fixes and improvements.
https://hledger.org/release-notes.html#hledger-1-24
1.23
Capital gains report,
separate symbol/number display,
command line commodity styling,
budget selection,
weekday/weekend recurrence,
10% speedup,
fixes.
Release notes: https://hledger.org/release-notes.html#hledger-1-23
This release may be packaged for your system: check https://hledger.org/download.html#binary-packages. Or, you can try the binaries built by our github CI setup, below. Notes:
-
Download and unzip the appropriate "hledger-PLATFORM.zip" file below. This will unpack 2 or 3 hledger binaries into the current directory. On mac and unix machines, you will need to
chmod +x
these files to make them executable. -
Windows binaries are built on Windows Server 2019. There is no hledger-ui binary for Windows.
-
Mac binaries are built on macos 10.15 catalina. You will need to mark them as trusted before you can run them: run
open .
to view the current folder in Finder; control-clickhledger
; option-click "Open"; allow running it. -
Linux binaries are static and should run on most GNU/Linux machines with x64 or (when provided) arm32v7 architecture.