Releases: simonmichael/hledger
Nightly
Here you can find unreleased "nightly" binaries, if any. By using these and providing feedback, eg in chat, you will be helping to make the next hledger release better.
Here's what's new since hledger 1.42.1: commits
Install
All platforms
If you have eget, that's a convenient way to download the right binaries for your machine:
eget simonmichael/hledger --pre-release --all
Otherwise:
GNU/Linux, 64-bit Intel
At the command line:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/refs/tags/1.42.99/hledger-linux-x64.tar.gz
tar xzf hledger-linux-x64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show a recent .99 version
Mac, 64-bit ARM or Intel
In a terminal window (don't use your web browser to download, it won't authorise the binaries):
For ARM macs:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/refs/tags/1.42.99/hledger-mac-arm64.tar.gz
tar xzf hledger-mac-arm64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show a recent .99 version
For Intel macs:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/refs/tags/1.42.99/hledger-mac-x64.tar.gz
tar xzf hledger-mac-x64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show a recent .99 version
Windows, 64-bit ARM or Intel
In a powershell window (press WINDOWS-R
, powershell
, ENTER
):
-
Make a place to keep installed binaries. 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/refs/tags/1.42.99/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip Expand-Archive hledger-windows-x64.zip -DestinationPath . -Force cd $HOME hledger --version; hledger-ui --version; hledger-web --version # should show refs/tags/1.42.99; if not, check why: where.exe hledger
-
Ensure a default journal file exists, and without a problematic encoding.
This will allow you to start hledger-web by double-clicking on its icon if you wish.out-file -append -encoding ascii $HOME/.hledger.journal
(I'm not sure why "ascii" is needed here - hledger likes utf8 and understands utf8 BOM headers,
but the state of our unicode support on Windows
is really unknown, your feedback is welcome.)
1.42.1
Release notes
hledger 1.42.1
Fixes
-
Fix a regression in the parsing of single ampersands (&) in csv rules.
(Thomas Miedema, #2352) -
The run and repl commands no longer cache data wrongly when using the --forecast option.
(Dmitry Astapov, #2345) -
The run and repl commands no longer miss a caching opportunity when using --forecast with a period argument.
(Stephen Morgan) -
run, repl: doc fixes (Pranesh Prakash, Simon Michael)
hledger-ui 1.42.1
- Allow vty 6.4.
hledger-web 1.42.1
project changes 1.42.1
Infrastructure/Misc
-
Tools updates
-
Fix cabalfilestest: test all cabal files before any hackage upload.
credits 1.42.1
Simon Michael (@simonmichael),
Dmitry Astapov (@adept),
Pranesh Prakash (@the-solipsist),
Stephen Morgan (@Xitian9),
Thomas Miedema (@thomie).
Install
For all install options, see hledger.org: Install.
You can install hledger from most package managers (but check for a green badge indicating it's up to date).
Or you can build it from source yourself.
Or you can install up to date binaries from this page, by following the appropriate instructions below.
If you find problems with these instructions, please let us know.
All platforms
If you have eget, that's a convenient way to download the right binaries for your machine:
eget simonmichael/hledger --all
Otherwise:
GNU/Linux, 64-bit Intel
At the command line:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/1.42.1/hledger-linux-x64.tar.gz
tar xzf hledger-linux-x64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show 1.42.1
Mac, 64-bit ARM or Intel
In a terminal window (don't use your web browser to download, it won't authorise the binaries):
On ARM macs:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/1.42.1/hledger-mac-arm64.tar.gz
tar xzf hledger-mac-arm64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show 1.42.1
On Intel macs:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/1.42.1/hledger-mac-x64.tar.gz
tar xzf hledger-mac-x64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show 1.42.1
Windows, 64-bit ARM or Intel
In a powershell window (press WINDOWS-R
, powershell
, ENTER
):
-
Make a place to keep installed binaries. 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.42.1/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip Expand-Archive hledger-windows-x64.zip -DestinationPath . -Force cd $HOME hledger --version; hledger-ui --version; hledger-web --version # should show 1.42.1; if not, check why: where.exe hledger
-
Ensure a default journal file exists, and without a problematic encoding.
This will allow you to start hledger-web by double-clicking on its icon if you wish.out-file -append -encoding ascii $HOME/.hledger.journal
(I'm not sure why "ascii" is needed here - hledger likes utf8 and understands utf8 BOM headers,
but the state of our unicode support on Windows
is really unknown, your feedback is welcome.)
Windows 7, 64-bit Intel
These instructions have not been tested recently, please let us know if they work for you:
- 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; hledger-ui --version; hledger-web --version
should show 1.42.1echo # >> .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
Once installed, run hledger
, and perhaps read hledger.org: Quick start.
1.42
Release notes
run & repl commands, non-UTF8 CSV, same-line if matchers, more pivot targets, fixes.
hledger 1.42
Fixes
-
hledger's default options for the
less
pager no longer include --use-color,
which caused older less versions (eg 551) to break. #2335 -
In balance --budget reports, costs no longer prevent display of percentages. #2327
-
In the balance command's HTML output, -H/--historical now suppresses the total heading.
-
print --help now shows the correct default for --round. #2318
-
close --infer-costs no longer implies the -x/--explicit flag. #1826
-
add: Account names provided on the command line are no longer ignored. #2305
-
bs/bse/cf/is no longer show the unsupported --budget option in their help. #2302
-
The print command now ignores --depth entirely. Previously, a depth
limit caused it to show only transactions referencing accounts as
deep or deeper than that. -
Week periods beginning in the previous year are now shown correctly.
Eg the week beginning 2024-12-30 (which is week 1 of 2025 because the
thursday falls in 2025) was previously shown as 2024-W01, and is now shown as 2025-W01.
#2304
Features
-
run
andrepl
are new commands which run multiple commands
without re-parsing data files, so they run faster.
run
runs a sequence of commands from files or command line arguments,
andrepl
provides an interactive prompt with readline-style history.
(Dmitry Astapov, Simon Michael, #2323, #2328) -
commands
is a new explicit command for showing the commands list; it's useful in the REPL.
With --builtin, it shows only the builtin commands. -
hledger can now read CSV/SSV/TSV data in encodings other than UTF8,
using the newencoding
CSV rule. (Joschua Kesper, #2319) -
if
matchers in CSV rules can now be combined on the same line,
separated by&&
(AND) or&& !
(AND NOT). This makesif
tables more expressive.
Examples:if %description amazon && %date 2025-02-22 account2 expenses:books if,account2 %description amazon && %date 2025-02-22, expenses:books
The next-line
&
operator also may now be written as&&
, for consistency.
(Thomas Miedema, #2333)
Improvements
-
Terminal width is now detected more robustly, using the POSIX API.
This means that register commands will more reliably use the proper terminal width,
eg when $TERM or $COLUMNS do not have a correct value, and on Windows.
hledger no longer uses $COLUMNS.
(gesh, #2332, #2340) -
Error messages (first line) in the terminal are now shown in red (and bold),
and warning messages are shown in yellow,
when ANSI codes are supported and permitted. -
--pivot can now also pivot on amount quantity (
amt
),
amount cost (cost
), and/or commodity symbol (comm
orcur
). -
The close command's --migrate flag has been renamed to
--clopen
.
The start: tag has been renamed toclopen:
,
and its default value now excludes the new file's extension.
And close --assign's tag has been renamed toassign:
. -
The print command now supports the --invert flag. #2314
-
The roi command is now faster:
it no longer checks every day with P directive,
and the "one period per report interval" case has been optimised.
(Dmitry Astapov) -
Two more file extensions are now recognised as possible hledger addon
commands:.osh
and.ysh
.
Docs
- aregister: Drop an inconsistent newline from options help.
- balance: improve --layout option help.
- close: doc rewrites
- shell completions: mention zsh; cleanups
- cost/lot notations: clarify
- cost, value reporting: edits
- Directive effects: fix account types link #126
- commodity styles: fix typo [hledger_site#123]
- commodity directive: clarify
- close: mention the balance assertions
- pager: mention --pager=no
- Aliases and account types: better troubleshooting command
- Beancount output: mention limitations: P and balance assignments
- Balance report output: drop outdated note about --tree and HTML #1846
Scripts/addons
-
hledger-balance-as-budget properly applies commodity styles now. (Dmitry Astapov)
-
hledger-git now runs pass-through git commands in the right repo.
-
hledger-git now checks for a git repo more robustly. (Lars Kellogg-Stedman)
-
hledger-jj is another easy CLI for keeping hledger files in version control,
using newer tech (jujutsu and oil shell's ysh). -
hledger-script-example.hs has had some cleanup.
hledger-ui 1.42
Fixes
- Startup arguments provided at the CLI are no longer passed to
add
when pressing thea
key. #2313
Improvements
- Allow vty 6.3.
- Allow brick 2.8.
hledger-web 1.42
Fixes
- Fix a test suite build issue: build it with -threaded.
project changes 1.42
Docs
- new/updated: ACHIEVEMENTS, CREDITS, FINANCE, MOCKUPS, REGRESSIONS, RELEASING, Scripts
- examples/csv: pooltool-rewards.csv.rule cleanup
- examples: some sample hledger run scripts
- examples: test files for CSV encoding #2319
Infrastructure/Misc
-
Unix bindists in github releases now include the man pages and info manuals. #2309
-
Unix bindists in github releases are now normal .tar.gz files, without the extra zip compression. [#2299]
-
Release notes and install instructions in github releases are now collapsed by default again.
This makes the sequence of dates and releases clearer.
Github automatically expands the assets of the latest release, so those will be visible by default.
For a full text search of all release notes, use the https://hledger.org/relnotes.html page. -
hledger-install: if installing third party packages fails, it now tries again with bounds relaxed.
This makes hledger-iadd and hledger-interest more likely to install successfully,
even if their bounds have not yet been updated for a new hledger release. -
just functest now fails if there are warnings.
(It does not force recompilation of already compiled modules,
but even so this should help catch more warnings before pushing them to CI.) -
new/changed recipes/tools:
bench*.sh,
changelogs-catchup,
changelogs-finalise,
changelogs-reset,
devtag,
ghrelnotes,
ghrelnotes-publish,
log-headtail,
log-push,
log-save,
modulediag,
modulediags,
modulediags-view,
packagediags,
packagediags-view,
releasediag,
relnotes
relprep -> relbranch,
reltags,
reltags-push,
showrelnotes,
site-manuals-snapshot,
site-watch,
time,
tldr-diff -
gitignore cleanups.
credits 1.42
Simon Michael (@simonmichael),
Dmitry Astapov (@adept),
gesh (@hseg),
Thomas Miedema (@thomie),
Joschua Kesper (@jokesper),
Lars Kellogg-Stedman (@larks).
Install
For all install options, see hledger.org: Install.
You can install hledger from most package managers (but check for a green badge indicating it's up to date).
Or you can build it from source yourself.
Or you can install up to date binaries from this page, by following the appropriate instructions below.
If you find problems with these instructions, please let us know.
All platforms
If you have eget, that's a convenient way to download the right binaries for your machine:
eget simonmichael/hledger --all
Otherwise:
GNU/Linux, 64-bit Intel
At the command line:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/1.42/hledger-linux-x64.tar.gz
tar xzf hledger-linux-x64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show 1.42
Mac, 64-bit ARM or Intel
In a terminal window (don't use your web browser to download, it won't authorise the binaries):
On ARM macs:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/1.42/hledger-mac-arm64.tar.gz
tar xzf hledger-mac-arm64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show 1.42
On Intel macs:
cd /usr/local/bin
curl -fLOC- https://github.com/simonmichael/hledger/releases/download/1.42/hledger-mac-x64.tar.gz
tar xzf hledger-mac-x64.tar.gz
cd
hledger --version; hledger-ui --version; hledger-web --version # should show 1.42
Windows, 64-bit ARM or Intel
In a powershell window...
1.41
Release notes
Valuation fix, improved HTML and FODS output, multiple depths, terminal pagination, robust export to Beancount, ...
hledger 1.41
Breaking changes
-
Accounts named "equity:conversion", "equity:trading", or "equity:trade(s)", which are detected as type
V
/Conversion
, will now revert to typeE
/Equity
instead if any other account has been declared as typeV
/Conversion
. -
When built with ghc 9.10.1, hledger shows two extra newlines after any error message.
Fixes
-
A somewhat severe, though hopefully rare, valuation bug has been fixed. In certain circumstances, values could be calculated inaccurately, because of display-rounding occurring inappropriately during calculations. [#2254]
Specifically: when there was no direct P price for the target commodity, so that hledger had to convert via a chain of prices, and if all of those price amounts had too few decimal places, then the result could be inaccurate. An example:
P 2000-01-01 A 10.5 B P 2000-01-01 B 100.5 C 2000-01-01 (a) 100 A $ hledger-1.40 print -X C 2000-01-01 (a) 105520 C ; wrong $ hledger-1.41 print -X C 2000-01-01 (a) 105525 C ; right
-
bs
/bse
/cf
/is
's HTML output no longer includes excess heading cells, andbs
/bse
's HTML output no longer shows an inappropriate Total heading with-T
. (balancesheet
does not support-T
.)
(Henning Thielemann) -
Balance commands' HTML, CSV and FODS output now show tree mode properly indented (using no-break spaces).
(Henning Thielemann) -
In the HTML output of
bs
/bse
/cf
/is
reports, Net amounts in the Net row are now formatted like the others.
(Bas van Dijk) -
In
bs
/bse
/cf
/is
HTML output, some unnecessary TH cells have been fixed.
[#2225] (Henning Thielemann) -
The
print
command now ignores a depth limit entirely.
Previously, a depth limit caused it to show only transactions referencing accounts as deep or deeper than that. -
In the
roi
command, a division by zero error (when all assets were sold) has been fixed.
[#2281] (Dmitry Astapov) -
In a multi-line comment generated by CSV rules, tags on all lines now work (ie, can be matched). Posting dates in comments generated from CSV also now work.
[#2241] -
hledger's bash shell completions are now up to date with the latest CLI.
[#986] -
When showing output with a pager, if
$PAGER
is set to something not found in PATH, we now ignore it instead of raising an error. -
hledger --color=yes | less -R
now shows bold headings as you'd expect.
Features
-
The
print
,register
andaregister
commands now support HTML and FODS output, and thebs
/bse
/cf
/is
commands now support FODS output. This means all of the "STANDARD REPORTS" commands, and thebalance
command, now support text, HTML, CSV, TSV, or FODS output.
(Henning Thielemann) -
When generating HTML output with the register or balance commands, the
--base-url
option will add hyperlinks to hledger-web, allowing you to view the detailed transactions if you have hledger-web running.
(Henning Thielemann) -
Reports can now specify different display depths for certain accounts, rather than showing all accounts with the same depth limit. Multiple
--depth=ACCTREGEX=DEPTH
options (ordepth:ACCTREGEX=DEPTH
arguments can be used. For example, this will clip all accounts matching "assets" to depth 3, all accounts matching "expenses" to depth 2, and all other accounts to depth 1:--depth assets=3 --depth expenses=2 --depth 1
(Stephen Morgan, #2292) -
In unix-like environments, hledger now uses a pager (
$PAGER
,less
, ormore
) for all large terminal output, not just for help. You can override this with the new--pager
option. The pager is expected to handle hledger's ANSI colour output (unless you disable that). Ifless
is used, it will be configured automatically, or you can override this by setting options in aHLEDGER_LESS
environment variable. -
The
print
command'sbeancount
output is now much more Beancount-compatible [#2295]. Other than using--alias
to provide the top-level account names Beancount requires, you should rarely have to do anything special to produce a journal thatbean-check
accepts. hledger will automatically adjust problematic names, encode unsupported characters, and so on. See hledger: Beancount output for the full details.This supersedes the
ledger2beancount
tool, and makes using Beancount tools, especially Fava, practical for hledger users. In many cases this should just work:hledger [ALIASES] print -o tmp.beancount; fava tmp.beancount
Improvements
-
if
blocks in CSV rules now allow& !
(AND NOT) on the same line. -
When reading
.latest
files, whitespace is now ignored, and any date parse failure is reported with the file and line number. -
In journal format, P directives now require a space after the first symbol, preventing surprises like
P 2024-10-31 a0 1
parsed asP 2024-10-31 a 01
.
[#2280] -
aregister
has a new--heading=YN
option, for disabling the report heading. (Henning Thielemann) -
aregister
now supports the--invert
and--cumulative
flags, like theregister
command. (Henning Thielemann) -
The balance commands' HTML and FODS output now shows table borders consistently.
(Henning Thielemann) -
In the balance commands' HTML output, row headings now span multiple rows when appropriate, rather than being repeated.
(Henning Thielemann) -
Balance commands now support
--transpose
when generating HTML output.
(Henning Thielemann) -
The
balance
command's--layout=tidy
now affects HTML and FODS output at least to some extent (not just CSV output). And it always disables the totals row. (Henning Thielemann) -
The
balance
command's FODS output now picks a report title based on the report mode: "Balance Report", "Multi-period Balance Report", or "Budget Report". (Henning Thielemann) -
balance
andaregister
's HTML output will now use a hledger.css file if present, likebs
/bse
/cf
/is
. -
bs
/bse
/cf
/is
now support the--count
(postings count) report type, likebalance
. -
The balance commands' options help has had some cleanup.
-
The error messages from
check accounts
andcheck recentassertions
are now clearer. -
The
check commodities
command now also checks commodities used in P directives. [#2280] -
The
commodities
command now also list commodities mentioned in P directives. [#2280] -
All of hledger's internal hidden (but searchable) tags can now be made visible by
print --verbose-tags
, which is useful for troubleshooting--infer-equity
,
--infer-costs
, and the detection of redundant costs and conversion postings. Also,- Some hidden tags have been renamed for clarity:
_modified
is now_modified-transaction
,
_cost-matched
is now_cost-posting
,
_conversion-matched
is now_conversion-posting
. - The
generated-posting:
tag added by--infer-equity
is now valueless. - The
modified-transaction:
tag added by--auto
now appears on its own line.
- Some hidden tags have been renamed for clarity:
-
Using the
-NUM
shortcut (for--depth NUM
) in a config file now works. -
Setting the
--color
option in a config file now works (except it does not affect--debug
output, currently). -
The
--color
option's suggested values are nowyes
/y
,no
/n
, orauto
/a
.always
andnever
are no longer documented, though still supported. -
More compact and informative
--debug=2
output during valuation. Market prices are now shown using one line each, the known prices are listed, and the status of--infer-market-prices
is shown.
[#2287] -
More informative
--debug=7
output from CSV rules. -
The hledger packages have a new
debug
build flag. Builds made with ghc 9.10+ and this flag will show some kind of stack trace if the program exits with an error. (These will improve in future ghc versions.) -
Disabled the unused
ghcdebug
build flag and ghc-debug support, for now. -
Allow megaparsec 9.7.
-
ghc 9.10 / base 4.20 are now supported.
Docs
- Windows: added tips for setting
LEDGER_FILE
(Amadeusz Wieczorek, hledger_site#119) - csv: if blocks: explain matchers and field names better [#2289]
- import: rewrite; rename "date skipping" to "overlap detection"
- import: added tips for first import
- assertions: mention their behaviour with posting status
- journal: rewrite the Tags section
- pager: note that
help -p TOPIC
uses less; link to less FAQ - query types: updates, add headings, mention tag:'s infix matching
- Regular expressions: note possible RTL/bidi limitation (?)
- Special characters: rewrite, more precision, mention some Windows differences
- Output formats: expand, document beancount and FODS output
- Text output: expand/consolidate terminal topics
- FODS output: describe the advantages over CSV (Henning Thielemann)
- Debug output: note that the --debug option doesn't work in config files.
- bal: improve --layout doc
- bal: also mention hledger.css and text encoding in balance doc
- html: note safari text encoding issue
- timedot: mention the common journal+timedot file setup [#2238]
- Install, manual: new shell completions doc. [#986]
- Config files: rewrite [#2231]
- examples/csv: an example of YNAB 4 data, and RTL text, with a workaround
- examples: hledger2beancount.conf
Scripts/addons
- bin/*: remove obsolete _FLAGS markers from --help
- examples/csv/csv-hledger-1.py: a python-based CSV converter script
API
- Hledger.Utils.IO's ansi color helpers now respect the --color option.
- Hledger.Utils.IO.rgb' now takes Float arguments instead of Word8.
- Hledger.Cli.Commands.Balance: export budgetReportAs* functions, for use in scripts.
(Dmitry Astapov)
hledger-ui 1.41
Breaking changes
- W...
1.40
Release notes
Config file support, sortable register, FODS output, prettier tables.
hledger 1.40
Fixes
- Account tags (and type declarations) declared in multiple files are now combined correctly. #2202
- Several kinds of report interval now choose a better start date:
every Nth day of month from DATE
with periodic transactions #2218every M/D from DATE
every Nth WEEKDAY from DATE
- The balance commands' html output no longer repeats the "Total" and "Net" headings when the totals row has multiple lines. And the layout has been improved and made more consistent with the text output.
- The
--tldr
flag now also works with thetealdeer
tldr client.
Features
- You can now save command line options in a config file, to be added to your hledger commands either on demand or automatically. (This supersedes the older arguments files feature.) This has been a popular feature request. It has pros and cons, and is experimental; your testing and feedback is welcome. It changes the nature of hledger somewhat, which I have marked by giving this release a more memorable version number (1.40).
- The balance commands can now output in FODS format, a spreadsheet file format accepted by LibreOffice Calc. If you use LibreOffice this is better than CSV because it works across locales (decimal point vs. decimal comma, character encoding stored in XML header), and it supports fixed header rows and columns, cell types (string vs. number vs. date), separation of number and currency, styles (bold), and borders. You can still extract CSV from FODS/ODS with the ods2csv utility from Hackage. (Henning Thielemann)
- The
register
report can now be sorted by date, description, account, amount, absolute amount, or a combination of these. (Michael Rees, #2211)
Improvements
- Command line processing has been overhauled and should be more robust in certain cases, with tweaked error messages and debug output. Command-specific flags can now optionally appear before the command name. (Though writing them afterward is usually more readable. Addon-specific flags must still come last, after
--
.) - The
--rules-file
option has been renamed to--rules
. The old spelling is still supported as a hidden option. - Weekly reports' week headings are now more compact, especially in single-year balance reports. (#2204, Victor Mihalache)
- The
balance
command with no report interval, and alsobalance --budget
, now support html output. (Henning Thielemann) - In balance commands' html and csv output, "Total:" and "Net:" headings are now capitalised consistently.
bs
/cf
/is
reports now show the report interval in their title.- The balance commands' text output with the
--pretty
flag now shows an outer table border and inter-column borders. - The
check recentassertions
error message is now more readable. - Timedot format now allows comment lines to be indented.
- When running the
tldr-node-client
client, auto-update of the tldr database is now suppressed. - When running a tldr client fails, the warning now mentions the required
--render
flag. #2201 - The error message for unsupported regular expressions like
(?:foo)
has been improved. --debug
has moved to "General help flags", making it available in more situations.- Some verbose debug output from command line processing has been demoted to level 2.
- Parsing timedot files now gives debug output at level 9.
- Allow doclayout 0.5.
Docs
- The hledger/hledger-ui/hledger-web manuals now list all command options as shown by
--help
. - Added an example config file,
hledger.conf.sample
. - The
diff
andprices
commands' help layout has been improved. add
's doc described the effect ofD
wrongly, now fixed.- Date adjustments: rewrites and corrections
- Period headings: added
- Input: clarify that multiple -f options are allowed
- Scripts and add-ons: edits, list add-ons again
- Timeclock: edits, fix
ti
/to
scripts - Fixed "hledger and Ledger" links [hledger_site#112]
- examples/csv: Monzo CSV rules added
- examples/csv: Tiller CSV rules added
- examples/csv: Nordea CSV rules added (Arto Jonsson)
Scripts/addons
bin/bashrc
updates; add years, eachyear scriptsbin/hledger-simplebal
: ignore config filesbin/hledger-script-example
: explain shebang commands betterbin/hledger-register-max
: update/fix
hledger-ui 1.40
Improvements
- The menu screen now supports the shift arrow and shift T keys, and its header shows any narrowed time period in effect, like other screens.
- Support brick 2.4.
Docs
- The description of the shift-T key (set period to today) has been fixed.
- The shift arrow keys and period narrowing have been clarified
hledger-web 1.40
Improvements
- We now guess a more robust base url when
--base-url
is not specified. Now relative links to js/css resources will use the same hostname etc. that the main page was requested from, making them work better when accessed via multiple IP addresses/hostnames without an explicit--base-url
setting. (A followup to #2099, #2100 and #2127.) - We now require a http[s] scheme in
--base-url
's value. Previously it accepted just a hostname, and generated bad links.
project changes 1.40
Docs
- In the hledger 1.29 release notes, Date adjustments has had some corrections.
- Github release notes template cleanups; fix mac, linux install commands.
- README: fixed contributors link.
- RELEASING: updates
Scripts/addons
- hledger-install: cleanups, bump versions, perhaps fix hledger-interest install
- hledger-install: clarify some stack/cabal setup messages
Infrastructure/Misc
- Shake.hs: fix partial warnings
- Shake cmdhelp: renamed to cmddocs, and it now also updates the options listed in the manuals, and shows progress output. It should be run (at some point) after changing commands' docs or options.
- Shake txtmanuals: silence all but wide table warnings
- just file cleanups; update to support just 1.28+
- just twih: date fixes
- just ghci: -fobject-code was a mistake, keep everything interpreted
- just functest: try again to reduce rebuilding/slowdowns when testing
- just installrel: update for .tar.gz
- ci scripts: cleanup, fix a macos-ism
credits 1.40
Simon Michael (@simonmichael),
Henning Thielemann (@thielema),
Michael Rees (@reesmichael1),
Arto Jonsson (@artoj),
Victor Mihalache (@victormihalache).
How to install
This release may arrive in your local packaging system soon - look for green badges at hledger.org: Install.
Or you can build it from source, as described on that page.
Or you can use the binaries below:
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.40/hledger-linux-x64.tar.gz
tar xvf hledger-linux-x64.tar.gz && rm -f hledger-linux-x64.tar.gz
cd
hledger --version # should show 1.40
Mac on 64-bit ARM or Intel
In a terminal window, run these commands to download, unpack, authorise, and install the binaries in your command line PATH.
Note, don't use your web browser; it won't authorise the binaries.
cd /usr/local/bin
# for ARM macs:
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.40/hledger-mac-arm64.tar.gz
tar xvf hledger-mac-arm64.tar.gz && rm -f hledger-mac-arm64.tar.gz
# or for Intel macs:
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.40/hledger-mac-x64.tar.gz
tar xvf hledger-mac-x64.tar.gz && rm -f hledger-mac-x64.tar.gz
cd
hledger --version # should show 1.40
Windows on 64-bit Intel or ARM
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
cp hledger.exe hledger.old.exe # keep a backup of the old executables, if you like
cp hledger-ui.exe hledger-ui.old.exe
cp hledger-web.exe hledger-web.old.exe
curl https://github.com/simonmichael/hledger/releases/download/1.40/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath . -Force
cd $HOME
hledger --version # should show 1.40
hledger-ui --version
hledger-web --version
...
1.34
Release notes
--tldr (short command examples), reorganised commands list, ghc-debug support
hledger 1.34
Breaking changes
check ordereddates
no longer supports--date2
. Also (not a breaking change):--date2
and secondary dates are now officially deprecated in hledger, though kept for compatibility.
Features
-
You can now get a quick list of example command lines for hledger or its most useful subcommands by adding the
--tldr
flag (or just--tl
). For best appearance you should install thetldr
client, though it's not required.These short "tldr pages" are a great counterbalance to verbose PTA docs. You can also use
tldr
without hledger to view the latest versions, or translations:tldr hledger[-COMMAND]
. Or you can browse tldr pages online. Consider contributing translations! More tips at https://github.com/simonmichael/hledger/tree/master/doc/tldr.
Improvements
-
The
hledger
commands list has been reorganised, with commands listed roughly in the order you'll need them. -
The general flags descriptions in
--help
have been updated and grouped. -
Correctness checks now run in a documented order.
commodities
are now checked beforeaccounts
, andtags
beforerecentassertions
. When bothordereddates
andassertions
checks are enabled,ordereddates
now runs first, giving more useful error messages. -
-I
/--ignore-assertions
is now overridden by-s
/--strict
(orcheck assertions
), enabling more flexible workflows. Eg you canalias hl="hledger -I"
to delay balance assertions checking until you add-s
to commands. -
--color
and--pretty
now also accepty
orn
as argument. -
When built with the
ghcdebug
flag and started with--debug=-1
, hledger can be controlled by ghc-debug clients like ghc-debug-brick or a ghc-debug query script, for analysing memory/profile info.
Fixes
-
hledger COMMAND --man
andhledger help TOPIC --man
now properly scroll the man page to the TOPIC or COMMAND heading. The exact/prefix matching behaviour has been clarified inhelp --help
. -
In journal files,
include
directives with trailing whitespace are now parsed correctly. -
The help command's help flags are now consistent with other commands (and it has
--debug
as a hidden flag). -
Build errors with GHC 8.10 have been fixed. #2198
Docs
- The tables of contents on hledger.org pages now just list top-level headings, (and the hledger manual structure has been adjusted for this). This makes the hledger manual on hledger.org more scannable and less scary.
- add: drop lengthy transcript, add simpler example commands (from tldr)
- Amount formatting: move down, it's not the best first topic
- balance: mention the
--summary-only
flag - check: expand check descriptions
- examples: CSV rules: vanguard, fidelity, paypal updates
- Generating data: rewrite
- JSON output: link to OpenAPI spec
- manuals: synopsis, options cleanup/consistency
- Options: correction, NO_COLOR does not override --color
- PART 4: COMMANDS: reorganise into groups, like the CLI commands list.
- Period expressions: mention last day of month adjusting #2005
- Secondary dates: expand, and declare them deprecated.
- Time periods cleanup, simplify markup
- Unicode characters: mention UTF-8 on windows
Scripts/addons
- Added
hledger-pricehist
, an alias for thepricehist
market price fetcher so that it can appear in hledger's commands list.
hledger-ui 1.34
Features
- You can now get a quick list of example command lines by running with
--tldr
(or just--tl
). For best appearance, install thetldr
client, though it's not required.
Improvements
-
The general flags in
--help
have been updated and grouped, consistent with hledger. -
When built with the
ghcdebug
flag and started with--debug=-1
, hledger-ui can be controlled by ghc-debug clients like ghc-debug-brick or a ghc-debug query script, for analysing memory/profile info.
hledger-web 1.34
Features
- You can now get a quick list of example command lines by running with
--tldr
(or just--tl
). For best appearance, install thetldr
client, though it's not required.
Improvements
-
The general flags in
--help
have been updated and grouped, consistent with hledger. -
When built with the
ghcdebug
flag and started with--debug=-1
, hledger-web can be controlled by ghc-debug clients like ghc-debug-brick or a ghc-debug query script, for analysing memory/profile info.
Docs
- A basic OpenAPI specification is provided for hledger-web's JSON-over-HTTP API. This is also applicable to
hledger print
's JSON output format.
project changes 1.34
Docs
- move release notes from the hledger_site repo to the main hledger repo
- github release notes: show the release notes, hide the install instructions by default
- github release notes: improve windows install commands
- github release notes: start mentioning github usernames, enabling the Contributors avatar list
- dev docs: new Developer FAQ, Contributor Quick Start updates
Scripts/addons
hledger-install.sh
now uses stackage nightly, and a failure on non-Windows platforms has been fixed.
Infrastructure/misc
- A new
release
workflow creates github releases, uploads release binaries and generates release notes. - Github release binaries for mac and linux are now in .tar.gz format (no longer tarred and zipped).
- There is a new
oldest
workflow for testing the oldest GHC we support (currently 8.10.7). - The
binaries-mac-x64
workflow has been bumped from GHC 9.4 to 9.8. - The master branch's
ci
workflow has been updated to Ubuntu 24.04 and uses the preinstalled GHC & stack, saving some work. md-issue-refs
helps generate markdown issue links.relnotes.hs
helps generate release notes from changelogs.- The project
Makefile
has now been fully replaced byJustfile
.
credits 1.34
Simon Michael (@simonmichael)
How to install
This release may arrive in your local packaging system soon - look for green badges at hledger.org: Install.
Or you can build it from source, as described on that page.
Or you can use the binaries below:
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.34/hledger-linux-x64.tar.gz
tar xvf hledger-linux-x64.tar.gz && rm -f hledger-linux-x64.tar.gz
cd
hledger --version # should show 1.34
Mac on 64-bit ARM or Intel
In a terminal window, run these commands to download, unpack, authorise, and install the binaries in your command line PATH.
Don't use your web browser, it won't authorise the binaries.:
cd /usr/local/bin
# for ARM macs:
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.34/hledger-mac-arm64.tar.gz
tar xvf hledger-mac-arm64.tar.gz && rm -f hledger-mac-arm64.tar.gz
# or for Intel macs:
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.34/hledger-mac-x64.tar.gz
tar xvf hledger-mac-x64.tar.gz && rm -f hledger-mac-x64.tar.gz
cd
hledger --version # should show 1.34
Windows on 64-bit Intel or ARM
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
cp hledger.exe hledger.old.exe # keep a backup of the old executables if you like
cp hledger-ui.exe hledger-ui.old.exe
cp hledger-web.exe hledger-web.old.exe
curl https://github.com/simonmichael/hledger/releases/download/1.34/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath . -Force
cd $HOME
hledger --version # should show 1.34
hledger-ui --version
hledger-web --version
- Ensure a default journal file exists, and without a problematic encoding.
(Not sure why "ascii" is needed here - hledger likes utf8 and understands utf8 BOM headers..
but the state of our unicode support on Windows
is really unknown, your input welcome.)
out-file -append -encoding ascii $HOME/.hledger.journal
Once that ...
1.33.1
Release notes
hledger 1.33.1
-
process >=1.6.19.0 seems not strictly needed and is no longer required,
improving installability.
#2149 -
print
andclose
now show a trailing decimal mark on cost amounts also,
when needed to disambiguate a digit group mark. -
The balance commands' HTML output now includes digit group marks when
appropriate (fixes a regression in 1.25).
#2196 -
The add command no longer shows ANSI escape codes in terminals that
don't support them. -
Doc updates:
- import: Skipping -> Date skipping, discuss commodity styles more
- csv: Amount decimal places: expand, note import behaviour
hledger-ui 1.33.1
-
Require vty-windows-0.2.0.2+ to avoid display problems in recent
MS Terminal on Windows. -
process >=1.6.19.0 seems not strictly needed and is no longer required,
improving installability.
#2149
hledger-web 1.33.1
- Support base64 >=1.0
credits 1.33.1
- Simon Michael (@simonmichael)
How to install
This release may arrive in your local packaging system soon - look for green badges at hledger.org: Install.
Or you can build it yourself from source, as described on that page.
Or you can use the binaries below:
GNU/Linux on 64-bit Intel
At the command line,
cd /usr/local/bin
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.33.1/hledger-linux-x64.zip # just rerun if interrupted
unzip hledger-linux-x64.zip && tar xvf hledger-linux-x64.tar && rm -f hledger-linux-x64.{zip,tar} # github workaround, preserves permissions
cd
hledger --version # should show the new version
The tar + zip packaging is a workaround to preserve file permissions.
Mac on 64-bit ARM or Intel
In a terminal window, run these commands to download, unpack, authorise, and install the binaries in your command line PATH.
Don't use your web browser, it won't authorise the binaries.:
cd /usr/local/bin
# for ARM macs:
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.33.1/hledger-mac-arm64.zip # just rerun if interrupted
unzip hledger-mac-arm64.zip && tar xvf hledger-mac-arm64.tar && rm -f hledger-mac-arm64.{zip,tar} # github workaround, preserves permissions
# or for Intel macs:
curl -LOC- https://github.com/simonmichael/hledger/releases/download/1.33.1/hledger-mac-x64.zip
unzip hledger-mac-x64.zip && tar xvf hledger-mac-x64.tar && rm -f hledger-mac-x64.{zip,tar}
cd
hledger --version # should show the new version
The tar + zip packaging is a workaround to preserve file permissions.
Windows on 64-bit Intel or ARM
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
cp hledger.exe hledger.old.exe # keep a backup of the old executables, if you care
cp hledger-ui.exe hledger-ui.old.exe
cp hledger-web.exe hledger-web.old.exe
curl https://github.com/simonmichael/hledger/releases/download/1.33.1/hledger-windows-x64.zip -OutFile hledger-windows-x64.zip
Expand-Archive hledger-windows-x64.zip -DestinationPath . -Force
cd $HOME
hledger --version # should show the new version
hledger-ui --version
hledger-web --version
- Ensure a default journal file exists, and without a problematic encoding.
(Not sure why "ascii" is needed here - hledger likes utf8 and understands utf8 BOM headers..
but the state of our unicode support on Windows
is really unknown, your input welcome.)
out-file -append -encoding ascii $HOME/.hledger.journal
Once that journal file exists, you can start hledger-web by double-clicking on the icon if you wish.
Windows 7 on 64-bit Intel
- 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.
Once installed, run hledger
, and perhaps read hledger.org: Quick start.
1.33
Release notes
hledger 1.33
Breaking changes
-
expr:
boolean queries, introduced in hledger 1.30 (2023),
no longer allowdate:
to be used within anOR
expression,
avoiding unclear semantics which confuse our reports.
If you'd like to improve this, see #2178. #2177 #2178 -
Some error messages (date parse errors, balance assertion failures) have changed,
which might affect error-parsing add-ons like flycheck-hledger.
Fixes
-
add
,import
,web
:
On MS Windows, don't allow writing to files whose name ends with a period,
since it can cause data loss; raise an error instead.
I made this change in hledger 1.15 (2019), but it never worked; now it does.
#1056 -
balance --budget
:
The budget report in tree mode was omitting parent accounts with no actual or goal amounts
and a single child, instead of showing them as a prefix of the child's name.
Now it always shows them, on a line of their own (a bit like--no-elide
).
It's not a perfect fix, but the budget report code is twisty.
#2071 -
check tags
:
The specialdate
anddate2
tags,
and themodified
and_modified
tags generated by--auto
,
are now also implicitly declared.
#2148, #2119 -
Regular expression match group references in CSV
if
rules,
added in hledger 1.32, did not work right when multiple if conditions matched a CSV record.
This is now fixed; match group references are now scoped to their localif
block.
#2158 (Jonathan Dowland) -
roi
now correctly interacts with--value
.
#2190 (Dmitry Astapov) -
hledger now requires process-1.6.19.0+ to avoid any vulnerabilities on Windows from
HSEC-2024-0003.
Features
-
close
has had some enhancements for usability (#2151):-
It now excludes equity accounts by default; and always excludes the balancing account.
-
It has new
--assert
and--assign
modes, for generating transactions which
make balance assertions or balance assignments.
There is also a--assertion-type
option for changing the assertion/assignment type. -
It adds a tag to generated transactions, named
start
,assert
orretain
depending on the mode. -
The
start
tag's value will be a guess of the new file's name,
inferred by incrementing a year number in the current file name.
Eg,hledger close --migrate
on2024.journal
will add the tag
start:2025.journal
to both transactions.
Tags like this can be helpful when reading multiple files,
for excluding closing and opening balances transactions
(eg withnot:tag:start=2025
). -
You can set different tag values by writing the mode option with an argument.
Eg:hledger close --migrate=NEWFILENAME
. -
close
now supports--round
for controlling display of decimal places, likeprint
. -
examples/multi-year/
is examples/tutorial for managing multiple files with theclose
command.
-
Improvements
-
stats
has had some improvements:-
It now also shows some information about memory usage, when hledger is built or is running
with the GHC Run Time System available. (Tryhledger stats +RTS -T
.) -
The default output is now more private, hiding file paths and commodity symbols.
Those can be added by the new-v/--verbose
flag. -
Output is now more compact and more likely to fit in 80-character lines.
-
When generating multiple outputs with a report interval, reports are now
separated by an empty line.
-
-
Several more kinds of Unicode space are allowed for separating digit groups in numbers.
We now support (my guess of the ones that might show up in real world CSV files):
space,
no-break space,
en space,
em space,
punctuation space,
thin space,
narrow no-break space,
medium mathematical space. -
Glob patterns in
$LEDGER_FILE
are now respected.
Eg, setting it to*.journal'
or2???.journal
now works as expected. -
When hledger is reading a symbolically-linked journal file,
relative paths in include directives are now evaluated
relative to the directory of the real linked file,
not the directory containing the symbolic link. -
Date parse errors are now simpler and clearer.
They no longer try to repeat (a reconstruction of) the problem date,
since the actual problem date is already visible in the highlighted file excerpt. -
Balance assertion error messages are clearer,
and show the difference between expected and actual balance again.
With --debug=2 they also show costs. -
tsv:
andssv:
file name prefixes are now supported in addition tocsv:
.
They force the file to be read as a .tsv (tab separated values) or .ssv (semicolon-separated values) file.
#2164 (Michael Rees) -
In CSV rules files, commented lines are now allowed within "if tables". (Dmitry Astapov)
-
balance --budget
's CSV and TSV output now shows zeroes instead of nothing when there's no amount. -
bs
,bse
,cf
,is
:
Report sections which are empty now show zero as their subtotal. (aragaer) -
print
andclose
add a trailing decimal mark when needed to disambiguate a single digit group mark.
They now also do this for balance assertion and balance assignment amounts.
#2176 -
hledger can now be built with GHC 9.8.
-
hledger now requires safe >=0.3.20.
Docs
- add version annotations for features added in 1.32 (hamzashezad)
- add Text encoding section, mention UTF-8 BOM support #2189
- journal: note that
payee
andtag
directives can't have tags in comments, unlikeaccount
. - journal: clarify how auto postings work.
- journal: list built-in special tag names
- journal: description/payee/note: clarify
- journal: amounts/commodities/numbers: cleanups
- journal: move intro before cheatsheet
- journal: transactions: explain transaction balancing #2135
- journal: transactions: mention debits, credits and sign
- journal: commodity directive: clarify & fix scope of effects #2135
- journal: D directive: clarify scope #2191
- journal: split Decimal marks, Digit group marks
- journal: move complex commodity styles, lot notation topics later
- journal: drop redundant/wrong Querying with cost or value section
- journal: cheatsheet: cleanups
- journal: assertions and ordering/commodities/subaccounts: cleanups
- csv: matchers: clarify, mention !/& limitation #2088
- csv: if tables: explain comments and order of application (Dmitry Astapov)
- add: document the effect of D default commodity directive #815
- balance: cleanups
- balance: budget report: moved "Budgets and subaccounts" to the Cookbook.
- bs,bse,cf,is: update sample output
- bse: note requirements for checking the accounting equation
- close: rewrite, give a better technique for excluding opening/closing balance txns #2151
- import: rename "deduplication" to "skipping", and rewrite
- examples: expand READMEs, clarify status for examples
- examples: invoicing: cleanups, renames
- examples: invoicing: pandoc-make-invoice: don't write to $LEDGER_FILE; remove the REMOVE THIS LINE line
- examples: csv: daedalus-transactions: update for current daedalus #2171
Scripts/addons
-
hledger-bar, hledger-simplebal: shellcheck fixes, cleanups (Colin Dean)
-
hledger-bar: Fix an error when NO_COLOR is not defined #2159.
Also, it's now more compliant with the no-color.org spec:Command-line software which adds ANSI color to its output by default
should check for a NO_COLOR environment variable that, when present
and not an empty string (regardless of its value), prevents the
addition of ANSI color.so one can now temporarily override $NO_COLOR=1 in the environment by
setting it empty: NO_COLOR= hledger ... -
hledger-txnsbycat: added
API
- move readFileStrictly to hledger-lib:Hledger.Utils.IO
hledger-ui 1.33
Fixes
- Require process 1.6.19.0+ to avoid any vulnerabilities on Windows from
HSEC-2024-0003.
Features
- Add a
dark
theme. (Jonathan Dowland)
Improvements
- Allow...
1.32.3
Release notes (https://hledger.org/release-notes.html#2024-01-28-hledger-1323)
hledger 1.32.3
Fixes
-
A performance slowdown since 1.29, especially noticeable with many
accounts and transactions, has been fixed. #2153 -
Balance assertions involving mixed-cost balances are checked correctly again
(a regression in 1.30). #2150 -
import --catchup works again (a regression in 1.32). #2156
-
--anon is now a deprecated hidden flag that raises an error,
but is still usable as --obfuscate (also hidden). #2133 -
Balance assertion error messages are clearer, and show the diff again.
hledger-ui 1.32.3
-
Use hledger-1.32.3
-
Allow vty 6.2, brick 2.3
hledger-web 1.32.3
- Use hledger-1.32.3
project changes 1.32.3
-
bin/hledger-bar: Fix an error when NO_COLOR is not defined;
allow color when NO_COLOR is defined but empty, per no-color spec;
and fix shellcheck warnings.
#2159 (Colin Dean, Simon Michael) -
bin/hledger-simplebal: Fix shellcheck warnings. (Colin Dean)
credits 1.32.3
Simon Michael,
Colin Dean.
Install
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.32.3
:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.32.3
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.32.3/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.32.3/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 64-bit Intel (or ARM, using emulation)
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.32.3/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
- Ensure a default journal file exists, and without a problematic encoding.
(Not sure why "ascii" is needed here - hledger likes utf8 and understands utf8 BOM headers..
but the state of our unicode support on Windows
is really unknown, your input welcome.)
out-file -append -encoding ascii $HOME/.hledger.journal
Once that journal file exists, you can start hledger-web by double-clicking on the icon if you wish.
Windows 7 on 64-bit Intel
- 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.32.2
hledger 1.32.2
Fixes
-
In CSV field assignments, %FIELD interpolation and
\n
can be used together again. #2134 -
In timedot data, numbers beginning with a decimal point are accepted again. #2130
-
In a
balance --budget
report,--layout=tall
no longer hides commodity symbols. -
Value reports seeing a pathological price chain with 1000 or more
steps now write their warning to the console, not a debug log file.
Improvements
- Allow megaparsec 9.6
Docs
- Updated:
Queries,
Periodic transactions,
Auto postings,
Assertions and costs,
Budget report
hledger-ui 1.32.2
Features
- hledger-ui is now available on Windows (ShrykeWindgrace)
Improvements
-
Use Notepad as default editor on Windows (ShrykeWindgrace)
-
Allow brick 2.2 (Vekhir)
-
Allow megaparsec 9.6
hledger-web 1.32.2
Fixes
-
Startup messages are more accurate and informative, eg with
--socket
. #2127 -
The non-working
--file-url
option has been dropped for now. #2139
Improvements
-
Allow megaparsec 9.6
-
hledger-web's tests now respect and can test command line options.
-
hledger-web's tests now run the app at 127.0.0.1 and port 5000,
rather than "any of our IPv4 or IPv6 addresses" and 3000.
2024-01-05: Windows zip file fixed to include hledger-ui.