Skip to content

Releases: simonmichael/hledger

1.41

10 Dec 01:23
1.41
Compare
Choose a tag to compare

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 type E/Equity instead if any other account has been declared as type V/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, and bs/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 and aregister commands now support HTML and FODS output, and the bs/bse/cf/is commands now support FODS output. This means all of the "STANDARD REPORTS" commands, and the balance 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 (or depth: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, or more) 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). If less is used, it will be configured automatically, or you can override this by setting options in a HLEDGER_LESS environment variable.

  • The print command's beancount 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 that bean-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 as P 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 the register 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 and aregister's HTML output will now use a hledger.css file if present, like bs/bse/cf/is.

  • bs/bse/cf/is now support the --count (postings count) report type, like balance.

  • The balance commands' options help has had some cleanup.

  • The error messages from check accounts and check 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.
  • 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 now yes/y, no/n, or auto/a. always and never 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...
Read more

1.40

09 Sep 22:03
1.40
Compare
Choose a tag to compare

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 #2218
    • every 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 the tealdeer 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 also balance --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 and prices commands' help layout has been improved.
  • add's doc described the effect of D 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 scripts
  • bin/hledger-simplebal: ignore config files
  • bin/hledger-script-example: explain shebang commands better
  • bin/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),

  1. 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)
  1. 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
...
Read more

1.34

02 Jun 00:45
1.34
Compare
Choose a tag to compare

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 the tldr 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 before accounts, and tags before recentassertions. When both ordereddates and assertions checks are enabled, ordereddates now runs first, giving more useful error messages.

  • -I/--ignore-assertions is now overridden by -s/--strict (or check assertions), enabling more flexible workflows. Eg you can alias hl="hledger -I" to delay balance assertions checking until you add -s to commands.

  • --color and --pretty now also accept y or n 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 and hledger help TOPIC --man now properly scroll the man page to the TOPIC or COMMAND heading. The exact/prefix matching behaviour has been clarified in help --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 the pricehist 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 the tldr 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 the tldr 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 by Justfile.

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),

  1. 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)
  1. 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
  1. 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 ...

Read more

1.33.1

02 May 11:03
1.33.1
Compare
Choose a tag to compare

Release notes

hledger 1.33.1

  • process >=1.6.19.0 seems not strictly needed and is no longer required,
    improving installability.
    #2149

  • print and close 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

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),

  1. 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)
  1. 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
  1. 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%, like C:\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 version
  • echo # >> .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

18 Apr 23:39
1.33
Compare
Choose a tag to compare

Release notes

https://hledger.org/relnotes.html#2024-04-18-hledger-133

hledger 1.33

Breaking changes

  • expr: boolean queries, introduced in hledger 1.30 (2023),
    no longer allow date: to be used within an OR 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 special date and date2 tags,
    and the modified 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 local if 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 or retain
      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 on 2024.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 with not: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, like print.

    • examples/multi-year/ is examples/tutorial for managing multiple files with the close 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. (Try hledger 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' or 2???.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: and ssv: file name prefixes are now supported in addition to csv:.
    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 and close 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 and tag directives can't have tags in comments, unlike account.
  • 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...
Read more

1.32.3

28 Jan 12:30
1.32.3
Compare
Choose a tag to compare

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),

  1. 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)
  1. 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
  1. 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%, like C:\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 version
  • echo # >> .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

01 Jan 01:45
1.32.2
Compare
Choose a tag to compare

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

  • The --base-url option works again. #2127, #2100

  • 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.

1.32.1

07 Dec 21:23
1.32.1
Compare
Choose a tag to compare

Release notes (https://hledger.org/release-notes.html#2023-12-07-hledger-1321)

hledger 1.32.1

  • Fixed: import with multiple files now updates .latest files correctly. (#2125)

  • Fixed: print --round=hard now properly pads/rounds amounts with inferred costs. (#2123)

  • CSV matcher syntax: mention that ! and & can't be used in the same line yet. (#2088)

  • Drop the "a difference of ..." line from balance assertion failure output.
    I feel it made the message harder to read and isn't really necessary.

  • Declaring the empty payee name with payee "" now works,
    to let hledger check payees accept payee-less transactions.
    (#2119)

  • Built-in tags with special meaning like type: and t: are now implicitly declared,
    so using type: in account declarations or generating t: with timedot letters
    won't cause hledger check tags to fail.
    (#2119)

hledger-ui 1.32.1

  • Use hledger-1.32.1

hledger-web 1.32.1

  • Use hledger-1.32.1

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.1:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.32.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.32.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.32.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 64-bit Intel (or ARM, using emulation)

In a powershell window (press Windows-r, type powershell, press enter),

  1. 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)
  1. Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.32.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
  1. 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%, like C:\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 version
  • echo # >> .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

02 Dec 05:21
1.32
Compare
Choose a tag to compare

Release notes (https://hledger.org/release-notes.html#hledger-1-32)

More precision control, beancount output, TSV output, --summary-only,
strict/idempotent import, CSV rule enhancements, timedot letters, fixes.

hledger 1.32

Breaking changes

  • Display styles and display precision are now managed more carefully
    during calculations and output, fixing a number of issues (#2111,
    "Precisiongeddon"). In brief:

    • Cost and value reports, such as print -V, now (1) consistently
      apply commodity display styles, and (2) do not add or discard
      decimal digits unnecessarily. (#2105)

    • When "infinite decimals" arise during calculations (eg in value
      reports, or in prices or roi output), these are now shown
      limited to 8 decimal digits rather than 255.

    • Non-print-like reports no longer add trailing decimal marks to
      disambiguate digit group marks (this was an unintended regression
      in 1.31). (#2115)

    • We now document number formatting adjustments made in certain
      reports and output formats (hledger manual > REPORTING CONCEPTS >
      Amount formatting, parseability).

Features

  • Timedot format supports a new letters syntax for easier tagged time logging.
    (#2116)

  • print has a new beancount output format for exporting to Beancount.
    This prints journal output more likely (though not guaranteed) to
    be readable by Beancount.

  • In CSV rules, matchers using regular expressions can now interpolate
    their matched texts into the values they assign to fields (field
    assignment values can reference match groups).
    (#2009) (Jonathan Dowland)

  • In CSV rules, matchers can be negated by prepending !.
    (#2088) (bobobo1618)

  • Multi-column balance reports (from bal, bs, is etc.) can use
    the new --summary-only flag (--summary also works) to display
    just the Total and Average columns (if enabled by --row-total and
    -A/--average) and hide the rest.
    (#1012) (Stephen Morgan)

  • All commands that suport csv output now also support tsv
    (tab-separated values) output. The data is identical, but the fields
    are separated by tab characters and there is no quoting or
    escaping. Tab, carriage return, and newline characters in data are
    converted to spaces (this should rarely if ever happen in practice).
    (#869) (Peter Sagerson).

Improvements

  • Journal format no longer fails to parse Ledger-style lot costs with spaces
    after the {, improving Ledger compatibility.

  • import now does not update any .latest files until it has run
    without error (no failing strict checks, no failure while writing
    the journal file). This makes it more idempotent, so you can run it
    again after fixing problems.

  • print now shows zeros with a commodity symbol and decimal digits
    when possible, preserving more information.

  • print has a new option for controlling amount rounding (#2085):

    • --round=none - show amounts with original precisions (default;
      like 1.31; avoids implying less or more precision than was
      recorded)

    • --round=soft - add/remove decimal zeros in non-cost amounts
      (like 1.30 but also affects balance assertion amounts)

    • --round=hard - round non-cost amounts (can hide significant digits)

    • --round=all - round all amounts and costs

    For the record:
    print shows four kinds of amount: posting amounts,
    balance assertion amounts, and costs for each of those.
    Past hledger versions styled and rounded these inconsistently.
    Since 1.31 they are all styled, and since 1.32 they are rounded as follows:

    hledger-1.32 print amt cost bal balcost
    (default) none none none none
    --round=soft soft none soft none
    --round=hard hard none hard none
    --round=all hard hard hard hard
  • The prices command has had a number of fixes and improvements (#2111):

    • It now more accurately lists the prices that hledger would use
      when calculating value reports (similar to what you'd see with
      hledger bal -V --debug=2).

    • The --infer-reverse-prices flag was confusing, since we always
      infer and use reverse prices; it has been renamed to --show-reverse.

    • --show-reverse and --infer-market-prices flags now combine properly.

    • --show-reverse now ignores zero prices rather than giving an error.

    • Price amounts are now shown styled.

    • Price amounts are now shown with all their decimal digits; or with
      8 decimal digits if they appear to be infinite decimals (which can
      arise with reverse prices).

    • Filtering prices with cur: or amt: now works properly.

Fixes

  • print now styles balance assertion costs consistently, like other
    amounts.

  • import now works with -s/--strict.
    And more generally, when reading multiple input files, eg with
    multiple -f options, strict checks are done only for the overall
    combined journal (not for each individual file).
    (#2113)

  • tag: queries now work when reading CSV files. (#2114)

  • Using a .json or .sql file extension with -o/--outputfile
    now properly selects those output formats.

  • Auto postings no longer break redundant equity/cost detection and
    transaction balancing. (#2110)

  • Amounts set by balance assignment now affect commodity styles again.
    (#2091, a regression in 1.30)

  • Timedot quantities with units are parsed more accurately.
    Eg a quantity like "15m" was evaluated as 0.249999999 not 0.25,
    and since hledger 1.21, it was printed that way also.
    Now we round such quantities to two places during parsing to get
    exact quarter-hour amounts. (#2096)

  • The demo command no longer triggers a JSON decode error in asciinema
    2.3.0. It now also shows a better error message if asciinema fails
    (#2094).

  • Failing balance assertions with a cost now show correct markers in
    the error message. (#2083)

Docs

  • New:

    • Amount formatting, parseability
    • Started new code docs for developers, based in the Hledger module's haddock
  • Updated:

    • aregister
    • commodity directive
    • Commodity display style
    • if table
    • Decimal marks, digit group marks
    • Regular expressions
    • Timedot

hledger-ui 1.32

Fixes

  • The V key now preserves the valuation mode specified at the command
    line, if any. (#2084)

  • The hledger-ui package no longer wastefully builds its modules
    twice.

hledger-web 1.32

Features

  • The hledger-web app on the Sandstorm cloud platform has been updated to
    a recent version (Jacob Weisz, #2102), and now uses Sandstorm's access
    control. (Jakub Zárybnický, #821)

Improvements

  • The --capabilities and --capabilities-header options have been replaced
    with an easier --allow=view|add|edit|sandstorm option.
    add is the default access level, while sandstorm is for use on Sandstorm.
    UI and docs now speak of "permissions" rather than "capabilities".
    (#834)

  • The Sandstorm app's permissions and roles have been renamed for clarity. (#834)

  • Permissions are now checked earlier, before the web app is started,
    producing clearer command line errors when appropriate.

  • Account's adeclarationinfo field is now included in JSON output. (#2097) (S. Zeid)

Fixes

  • The app can now serve on address 0.0.0.0 (exposing it on all interfaces),
    which previously didn't work.
    (#2099) (Philipp Klocke)

  • The broken "File format help" link in the edit form has been fixed. (#2103)

project changes 1.32

Scripts/addons

  • hledger-install.sh: replaced hledger-stockquotes with pricehist

  • added gsheet-csv.hs: fetch a google sheet as CSV

  • added hledger-report1: an example custom compound report, with haskell and bash versions

  • justfile: updated import, time report scripts

Examples

  • New:

    • Fidelity CSV rules
  • Updated:

    • roi-unrealised.ledger (Charlie Ambrose)

Docs

  • New:

    • Started a weekly This Week In Hledger news post, inspired by Matrix.
    • There's now a News page, for This Week In Hledger etc.
    • hledgermatic, an up-to-date, simple journal-first workflow
    • How to record journal entries: added
    • Reporting version control stats: added
    • Moved regression bounty info from the issue tracker to Developer docs > REGRESSIONS.
  • Updated:

    • Checking for errors
    • Common workflows
    • Ledger
    • Simon's old setup
    • Videos
    • All docs now use the cli class instead of shell for command-line examples,
      avoiding inaccurate highlighting.

Infrastructure

  • hledger.org website:

    • Fixed the webhook that was not updating the site on git push.

    • Fixed a problem with cloudflare authentication that was preventing
      automatic TLS certificate renewal on hledger.org.

    • Updated and committed hledger.org's caddy config and short urls (redirects)

    • Enabled https for code.hledger.org and site.hledger.org short urls.

    • Updated the stars.hledger.org redirect
      (we have reached the top 30 github-starred Haskell projects 🌟 🎉).

    • Set up a self-hosted Sandstorm server, and a public hledger-web
      instance (sandbox.hledger.org) in it that is fully writable (until
      spammers find it). Use it as a pastebin for examples, eg.

  • Github CI (continuous integration) workflows have been optimised somewhat:

    • Scheduled weekly builds have been disabled, as they were propagating
      to forks and running wastefully there in some cases.

    • Some repeated rebuilding of the hledger-lib and hledger packages
      that seems unnecessary has been stopped.

    • hledger-ui no longer builds its modules twice.

    • Hadd...

Read more

1.31

03 Sep 08:12
1.31
Compare
Choose a tag to compare

Release notes (https://hledger.org/release-notes.html#hledger-1-31)

More tolerant equity/cost matching; print amounts in original style; multi-pivot.

hledger 1.31

Features

  • Multi-pivot: the --pivot option now accepts multiple arguments,
    colon-delimited, to construct account names from multiple fields.
    (#2050, Eric Mertens)

Improvements

  • The print command now more closely replicates the original journal
    amount styles, which is helpful when round-tripping / cleaning up
    journal files:

    • Amounts in conversion transactions could be displayed rounded to a
      lower precision; this no longer happens.
      (#2079)

    • Amounts could be displayed with extra zeros after the decimal mark;
      this no longer happens.

    • Amounts could display with a different precision if the journal
      included a timedot file; this no longer happens.

    • Costs in balance assertions were not displayed with standard
      styles like other amounts; now they are.

    • Zero amounts were always shown as just "0"; now they are shown
      with their original commodity symbol and style. (And if an
      inferred amount has multiple zeros in different commodities, a
      posting is displayed for each of these.)

  • print no longer displays numbers with a single digit group mark
    and no decimal mark, which are ambiguous and hard to re-parse. Now
    if a number has digit group marks the decimal mark will always be
    shown also. Eg 1,000 (where the comma is a thousands separator)
    is now shown as 1,000..

  • The check command's
    balancedwithautoconversion and balancednoautoconversion checks
    have been renamed to autobalanced and balanced.

  • hledger check recentassertions now reports failures at the first
    posting that's more than 7 days later than the latest balance
    assertion (rather than at the balance assertion). This is the thing
    actually triggering the error, and it is more likely to be visible
    or at least closer when you are working at the end of a journal
    file.

    Also, the suggested sample balance assertion now uses the same
    commodity symbol as in the failing posting (the first, if there are
    more than one); and, no longer includes a cleared mark.

  • The import command now shows the file path being imported to.

  • With --pivot, desc is now the preferred spelling for pivoting on
    description.

  • The demo command now ignores an invalid journal file, like the other
    HELP commands.

  • Debug output for equity conversion postings has been improved,
    making troubleshooting easier.

  • Allow aeson 2.2, megaparsec 9.5.

Fixes

  • In journal files, valid multicommodity transactions where the
    matching non-equity postings can't be auto-detected are no longer
    considered an error (as they were in hledger 1.29 and 1.30). Now,
    such transactions are accepted, and --infer-cost has no effect on
    them. This is similar to the behaviour of --cost, --infer-equity,
    and --infer-market-prices. (#2045)

  • In journal files, equity conversion postings are now detected more
    tolerantly, using the same precision as the conversion posting's
    amount (#2041). Eg, the following transaction is now accepted:

    2023-01-01
        Assets               -84.01 USD @ 2.495 GEL
          ; ^ 209.60495 GEL, recognised as a match for the 209.60 below
        Equity:Conversion     84.01 USD
        Equity:Conversion   -209.60 GEL
        Assets               209.60 GEL
    
  • The roi command now reports TWR per period and overall TWR for
    multi-period reports.
    (#2068, Dmitry Astapov)

  • The commands list no longer shows bar when hledger-bar is not installed (#2065),
    and had a few other cleanups.

hledger-ui 1.31

Improvements

  • Allow megaparsec 9.5

hledger-web 1.31

Improvements

  • Allow aeson 2.2, megaparsec 9.5

project changes 1.31

Scripts/addons

  • ft, tt shell scripts for collecting financial and time reports

  • A justfile implementation of ft and tt

Examples

  • self-tracking

  • RPG ledger (Eric Mertens)

Docs

Infrastructure

  • tools, CI: checkembeddedfiles, checkversions

  • Shake: avoid making empty commits

  • make functest-PAT: runs a subset of functional tests

  • Provide a ghc-tags.yaml file to make use of ghc-tags with Hledger easy.

    ghc-tags is a standalone tool to replace the formerly-built-in
    ":ctags" feature (and I presume ":etags") in GHCi. These walked over
    the source and produced a TAGS file (in vim-compatible ctags or
    Emacs-compatible etags format) that allows the relevant editors to
    quickly navigate around function definitions.

    ghc-tags trips over some of the CPP used in Hledger. The solution
    is to provide ghc-tags with explicit CPP defines via a YAML file.
    However, if a YAML file is provided, one also must specify the source
    paths, as the tool XORs config file | paths-on-command-line.

    See arybczak/ghc-tags#6 for more
    information.
    (Jonathan Dowland)

credits 1.31

Simon Michael,
Dmitry Astapov,
Eric Mertens,
Jay Neubrand,
Jonathan Dowland.

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.31:
git clone https://github.com/simonmichael/hledger --depth 1 -b 1.31

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.31/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.31/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),

  1. 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)
  1. Download and install the release binaries:
cd $HOME\bin
curl https://github.com/simonmichael/hledger/releases/download/1.31/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
  1. 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%, like C:\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 version
  • echo # >> .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

...

Read more