From 71222d75e52ccc0ba15ce588c2422496e5d79211 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Fri, 1 Dec 2023 17:11:24 -1000 Subject: [PATCH] ;doc: changelogs: edit --- CHANGES.md | 299 +++++-------------------- hledger-lib/CHANGES.md | 213 +----------------- hledger-ui/CHANGES.md | 40 +--- hledger-web/CHANGES.md | 93 ++------ hledger/CHANGES.md | 479 +++++++++++------------------------------ 5 files changed, 220 insertions(+), 904 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 7c94585ea..10d3e145d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -19,284 +19,97 @@ General changes in the hledger project. For package-specific changes, see the hledger package changelogs. -Docs +# e601adaee -- hledger manual: +Scripts/addons - - Updated: - - - Decimal marks, digit group marks - - commodity directive - - CSV > if table (#2107) - - Timedot - - - Added: - - - Amount formatting, parseability: an explanation of trailing decimal marks - and number formatting differences between reports. (#2115) +- hledger-install.sh: replaced hledger-stockquotes with pricehist -- Ledger: more notes on commodity directives, from chat. +- added gsheet-csv.hs: fetch a google sheet as CSV -- Ledger: interoperating tips updates, more about commodity directives and balance assertions. +- added hledger-report1: an example custom compound report, with haskell and bash versions -- Checking for errors: tips on enforcing account lifetimes, from reddit, - and on minimising diffs in reports, from mail list. - -- As part of Precisiongeddon, I started expanding hledger's "code docs", in the Hledger module's haddock. - I spent time learning how to navigate Haddock and producing a fast-feedback authoring workflow (`make haddock-watch`). - And documented a bunch of "jargon" terms, and how we handle precision and display styles. - -- The "Regular expressions" manual section has been rewritten and now has examples: - . - -- Unmentioned last week: I added a News page on hledger.org as a stable home - for This Week In Hledger and other news updates. - -- moved regression bounty info to - -- hledger manual > Journal > Commodity display style: rewritten - -- hledger manual > aregister, hledger-ui manual > Register screen: note how separately-dated postings get combined - -- [How to record journal entries](https://hledger.org/how-to-record.html#how-to-record-journal-entries) - -- [hledgermatic](https://hledger.org/hledgermatic.html#hledgermatic) , a simple up-to-date workflow - -- Cleanups: Common workflows, Simon's old setup - -- All hledger docs now use the `cli` class instead of `shell` for command-line examples, - avoiding inaccurate highlighting. - -- Videos: reorder hledger fan videos. - -- REGRESSIONS: cleanups, mention real names. +- justfile: updated import, time report scripts Examples -- justfile: forecast-import: show but don't consume future-dated forecast transactions - -- hledger-report1: a custom compound report script, haskell and bash versions +- Fidelity CSV rules -Tools +Docs -- tools: ghci :rmain - like :main, but reloads first, useful eg when changing --debug level +- 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. -Ops +Infrastructure -- Updated the stars.hledger.org redirect (we have reached the top 30 Haskell projects by github stars 🌟 🎉). +- hledger.org website: -- Fixed a problem with cloudflare authentication that was preventing - automatic TLS certificate renewal on hledger.org. + - 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. -- Committed hledger.org's caddy config. + - 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. -- Fixed the hledger.org webhook that was not updating the site on git push. - -- Enabled https for "code.hledger.org" and "site.hledger.org" short urls. - -- CI (continuous integration) workflows on github have been optimised a bit: +- 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. - - Haddock testing has been moved to the release workflows to save time. + + - Haddock testing now done only at release time. - - Set up a self-hosted Sandstorm server and learned how to configure it. - - - Set up a public hledger-web instance in it: sandbox.hledger.org. - Unlike , and until the spammers find it, - sandbox is fully writable - use it as a pastebin for examples, eg. + - renamed main CI workflow and branch to "ci" -- renamed main CI workflow and branch to "ci" +- Tools: -- updated and committed hledger.org's caddy config and short urls (redirects) + - .ghci: added an :rmain alias, which is like :main but reloads first - + saves typing, and is useful eg when changing --debug level. -- there's now an easy short url for trying out the hledger-web app on Sandstorm: . + - make haddock-watch is now fast Finance -- Updated project finance scripts, regenerated the project ledger with - consistent precisions in assertions, updated it with the last few - months of data from Open Collective. +- Updated project finance scripts, regenerated the journal with consistent precisions. + +- Updated reports with the last few months of data from Open Collective. -# e601adaee -- ;doc: changelogs (from TWIH) - -- ;tools: bake lastweek: drop an unnecessary report - -- ;doc: use ```cli not ```shell for command-line examples - -- ;doc:REGRESSIONS: note real name exposure - -- ;doc:REGRESSIONS: note one pending - -- ;bin:bar: cleanup - -- ;tools:bake lastweek: time percentage report - -- ;tools: bake jargon - extract Hledger.hs haddock examples to a test journal - -- ;tools: make haddock-watch etc.: new fast version, cleanups - -- ;tools:bake dbgstrs - -- ;tools:ghci :rmain - -- ci: do haddock testing less often, in the mac binaries workflow - It costs 1m+, doesn't fail that often, and is not hard to fix even if - detected late. - -- ci: really fix some redundant building of hledger-lib and hledger - -- ci: fix some redundant building of hledger-lib and hledger - -- ;ci: disable weekly scheduled builds - They also run in forks, which I don't want. - -- ci: fix tests breakage - -- ;tools:make:etags: include .test files - -- ;dev: tests: ledger-compat tests cleanup - -- ;doc: TESTS name/link - -- ;tools:bake:lastweek: improvements - -- ;bin:report1: cleanups - -- ;web:sandstorm: bump app version, tweak title - -- imp:web: cleanups; use --allow on Sandstorm (#834) - -- imp:web: access control UX cleanups (fix #834) - Changes: - - 1. rename the sandstorm "manage" permission to "edit" - (old permission names: view, add, manage; - new permission names: view, add, edit). - - Rationale: "edit" best describes this permission's current powers, to users and to operators. - If we ever added more manager-type features we'd want that to be a new permission, - not a rename of the existing one (which would change the powers of existing users). - - 2. rename the sandstorm roles for consistency with permissions - (old role names: viewer, editor, manager; - new role names: viewer, adder, editor) - - Rationale: it's needed to avoid confusion. - - 3. add a new option: --allow=view|add|edit|sandstorm (default: add). - 'sandstorm' sets permissions according to the X-Sandstorm-Permissions header. - Drop the --capabilities and --capabilities-header options. - - Rationale: it's simpler and more intuitive. - - 4. replace "capability" with "permission" in ui/docs/code. - - Rationale: consistent with the above, more familiar. - -- ;bin:report1: cleanups - -- ;bin: link hledger-report1 scripts - -- ;bin: hledger-report1: a custom compound report in haskell and bash - -- ;make: copy-exe[s]-*: fix help - vv# examples/shared-expenses.journal - -- ;feat: Upgrade Sandstorm package with permissions (Jacob Weisz) - -- ;dev:bake lastweek - -- ;examples:csv: note where to find vanguard, fidelity CSV - -- ;bin:justfile: rename forecast.journal, forecast-import refinement - -- ;dev:ci: rename usual CI branch to "ci" - -- ;dev:ci: clean up, rename main CI workflow - Back to ci.yml. - -- ;doc:REGRESSIONS: update - -- ;doc:REGRESSIONS: update - -- ;doc:REGRESSIONS: update - -- ;dev:stack: ghc 9.4 fix - -- ;doc:LINKS: updates - -- ;doc:REGRESSIONS: add 2034 - -- ;doc:REGRESSIONS: cleanup - -- ;doc:REGRESSIONS: cleanup - -- ;doc:REGRESSIONS: update - -- ;dev:stack: stack9.8.yaml - -- ;dev:stack: drop stack9.6.yaml - -- dev:stack: bump default GHC to 9.6.3 - -- ;doc:REGRESSIONS: update - -- ;doc:REGRESSIONS: update - -- ;doc:REGRESSIONS: update - -- ;doc:REGRESSIONS: cleanup, update - -- ;doc:regressions: fix link - -- ;doc: REGRESSIONS, moved from issue tracker; renamed FINANCE section - -- ;doc:examples/bin: add gsheet-csv.hs - -- ;doc:justfile: update import, time report scripts - -- ;doc:examples: fidelity csv rules - -- ci:test-linux: temporary workaround for haddock failure - -- ci:test-linux: temporary workaround for bad commit message - -- dev:cli: merge Hledger.Cli.Main with Hledger.Cli - -- make: fix haddock[-watch|-open] - -- dev:ci: cleanup - -- dev:ci: update notes - -- pkg:stack: build with nightly/ghc 9.6 by default - -- ;doc:RELEASING: updates - -- ;bin: tt,ft comment - -- ;doc:RELEASING: updates - -- ;pkg: bump version to 1.31.99 - -- ;doc: merge 1.31 changelogs - -- ;doc: announce - -- install: bump to latest versions - -- install: replace hledger-stockquotes with pricehist # 1.31 2023-09-03 + Scripts/addons - ft, tt shell scripts for collecting financial and time reports diff --git a/hledger-lib/CHANGES.md b/hledger-lib/CHANGES.md index b1158207e..dcb35a07d 100644 --- a/hledger-lib/CHANGES.md +++ b/hledger-lib/CHANGES.md @@ -14,221 +14,22 @@ Internal/api/developer-ish changes in the hledger-lib (and hledger) packages. For user-visible changes, see the hledger package changelog. # b6a46f637 -- feat:timedot: tagged time logging with letters -- ;dev: lotcostp: cleanup +Misc. changes -- imp:ledger-compat: accept lot costs with spaces after {, like Ledger +- styleAmounts is used in more places -- imp:print:beancount: conversion improvements - - omit balance assertions - - replace more currency symbols, and match within symbols like C$ - - do more account validation, and error if conversion is too hard - - backslash-escape double quotes and backslashes in payee and note +- journalApplyCommodityStyles renamed to journalStyleAmounts -- imp:print:beancount: also convert cost amounts +- "hard" and "all" rounding strategies have been added -- doc: update manuals +- debug output improvements, eg for precision handling -- ;cabal: update cabal files +- Table is now Showable, for debugging -- feat:print: add a basic beancount output format - This prints journal output more likely (but not guaranteed) to - be readable by Beancount. - All packages now require text 1.2.4.1 or greater. - -- fix: non-print-like reports no longer add trailing decimal marks (fix #2115) - That 1.31 change was advertised as being for the print command only, - but it affected all commands. Now it affects only print and other - "print-like" commands (ie all commands that show whole journal entries - that we might want to re-parse). - - Also three classes of hledger output, and how they modify the - commodity display styles' digit group marks and decimal marks - to suit different consumers, have been identified and documented - (under REPORTING CONCEPTS). - -- fix:csv: fix tag: queries on CSV data (#2114) - -- ;doc: Hledger.Read: cleanups (#2113) - -- ;doc: Hledger.Read: cleanups (#2113) - -- imp:reading: better timing of strict checks and .latest writing (#2113) - Strict checks now run only once, at end of the high level read operation, - and not for each individual file; this fixes some spurious --strict failures, - like account declarations not affecting a sibling file as they should. - - And .latest file writing now happens as the last step, after passing - strict checks. This is mainly for the import command, but it also - means that hledger print --new now does not update .latest files - if strict checks are failing. - - The file reading API has been improved and documented in more detail. - -- imp: web: round amounts to display precision as before (precisiongeddon) - -- doc:code: add Jargon section; describe styling/precision in detail (precisiongeddon) - -- ;doc: move Hledger.hs haddock to a named chunk below code - -- dev: Amount: cleanups - -- imp: roi: limit large decimals to 8 digits by default (precisiongeddon) - With valuation now preserving more decimal digits, roi could show - excessively precise decimals if there was no known display precision - for the valuation commodity. Now in that situation it limits the - precision to a maximum of 8 digits. - -- imp: more precision handling fixes, debug output, test updates (precisiongeddon) - This and the preceding commits were "work in progress" that got out of control. - There's more to do, but this one brings these precision-related improvements - (at least): - - When "infinite decimals" arise, they are now generally shown with - 8 decimal digits rather than 255. - - print and prices no longer add trailing decimal zeros unnecessarily. - - Some code has been refactored or given more debug output. - - All tests have been updated to match the recent changes. - -- imp: prices: clarify, fixes, improve semantics (precisiongeddon) - - The prices comand now more accurately lists the prices that hledger - uses when calculating value reports (similar to what you'd see with - eg `hledger bal -V --debug=2`). - - - The prices command's --infer-reverse-prices flag was confusing since - we always infer and use reverse prices; it has been renamed to --show-reverse. - - - --infer-market-prices and --show-reverse combine properly. - - - --show-reverse now ignores all zero prices rather than giving an error. - - - Reverse prices (which can be infinite decimals) are now displayed - with at most 8 decimal digits (rather than the internal precision of - 255 digits). - - - Filtering prices by cur: or amt: now works properly. - - - Price amounts are styled, but all decimal digits are shown. - -- imp: set display style, natural precision on valued amounts (fix #2105, precisiongeddon) - Cost/value conversion now applies the standard display style, and - sets the display precision equal to the internal decimal precision - (or 8 if the decimal appears to be infinite). - This means value reports and especially `print -V` now show amounts - with more accurate and standard style and precision. - - New tests have been added describing and explaining various - style/precision behaviours in print cost/value reports. - -- dev: clarify some amount operations - -- lib: Hledger.Utils.Debug: lbl_ helper, cleanups, notes - -- feat: import: interpolate regex matches in field templates (#2009) (Jonathan Dowland) - Replace occurrences of '\N' (where N is a positive number) in field - templates with the corresponding regular expression match group, if it - exists. - - E.g. Warp the date to the first of the month for the second posting - - if %date (....-..)-.. - comment2 date:\1-01 - - E.g. Strip a prefix from an imported account name - - if %account1 liabilities:jon:(.*) - account1 \1 - - Fixes #2009. - - Signed-off-by: Jonathan Dowland - -- ;dev: add Utils.Regex.regexMatchTextGroups (Jonathan Dowland) - A matcher function which returns the list of match-groups, which may - be empty. - - Signed-off-by: Jonathan Dowland - -- ;fix: import: minor typo (Jonathan Dowland) - -- fix: auto postings: detect redundant costs properly (fix #2110) - -- feat: cli: Add tsv output (#869) (Peter Sagerson) - All commands that suport csv output now also support tsv 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). - -- ;doc: haddock, comment fixes - -- ;doc:print: cleanups (#2085) - -- feat:print: add --round option for more control of precisions (#2085) - -- ;doc:internals: Precision and rounding - -- dev: refactor transactionCheckBalanced - -- lib!: use styleAmounts in more places; add rounding strategies - -- dev: journalApplyCommodityStyles -> journalStyleAmounts - -- dev:print: refactor, add AmountStyle "rounding strategy" - Changes to enable more control of "rounding" behaviour - (ie, choosing display precisions for amounts). - - This reverts 1.31's change of asprecision, making it a non-Maybe - again, and adds a new asrounding field providing more control over how - a target display precision is applied to existing amounts (two options - for now, more later). Functionality is in an interim state (reports do - no rounding). - -- fix:timedot: parse unitful quantities more accurately (fix #2096) - A quantity with a unit like "15m" was being parsed internally as - 0.249999999... rather than 0.25 (and since hledger 1.21, printed that - way also). Now we round such quantities to two places during parsing, - to get exact quarter-hour amounts. - -- lib: add Show to Table render functions for debugging - -- fix: balance-assigned amounts affect styles again (fix #2091) - -- imp: lib: include adeclarationinfo, if present, in accounts JSON (S. Zeid) - Note that this does not add the declaration info if it is not already - present. - -- feat: balance: Add summary-only flag (#1012) (Stephen Morgan) - Add a flag --summary-only for multi-column balance reports, which does - not display the main date columns for a report, but only displays the - summary columns (--row-total, --average). This is useful when there are - many columns (a weekly summary over many years) where you're only - interested in the average (or some other summary). - -- Add support for negating a Matcher (bobobo1618) - https://github.com/simonmichael/hledger/issues/2054 - -- ;cabal: update cabal files - -- ;doc: main module haddock cleanups - -- ;doc: package description cleanups - -- fix: failing balance assertions with cost show correct highlight #2083 - -- ;doc: update manuals - -- ;cabal: update cabal files - -- ;pkg: bump version to 1.31.99 - -- ;doc: merge 1.31 changelogs # 1.31 2023-09-03 + Breaking changes - There is a new consolidated API for styling amounts, and a diff --git a/hledger-ui/CHANGES.md b/hledger-ui/CHANGES.md index c4bb4a85c..6efcdc1a9 100644 --- a/hledger-ui/CHANGES.md +++ b/hledger-ui/CHANGES.md @@ -22,45 +22,17 @@ User-visible changes in hledger-ui. See also the hledger changelog. # 0c85b48d2 -- ;doc: use ```cli not ```shell for command-line examples -- doc: update manuals +Fixes -- ;cabal: update cabal files +- The V key now preserves the valuation mode specified at the command + line, if any. (#2084) -- feat:print: add a basic beancount output format - This prints journal output more likely (but not guaranteed) to - be readable by Beancount. +- The hledger-ui package no longer wastefully builds its modules + twice. - All packages now require text 1.2.4.1 or greater. - -- imp: ui: round amounts to display precision as before (precisiongeddon) - -- cabal: update cabal files - -- pkg:ui: fix wasteful double-building of hledger-ui modules - -- ;doc:areg,ui: note how separately-dated postings get combined - -- ;cabal: update cabal files - -- ;doc: main module haddock cleanups - -- ;doc: package description cleanups - -- lib!: export less from cli and web packages, and more from ui - -- fix:ui: V key preserves startup valuation, if any (fix #2084) - Also: hledger-ui cost/value doc improvement and a useful cost/value test file. - -- ;doc: update manuals - -- ;cabal: update cabal files - -- ;pkg: bump version to 1.31.99 - -- ;doc: merge 1.31 changelogs # 1.31 2023-09-03 + Improvements - Allow megaparsec 9.5 diff --git a/hledger-web/CHANGES.md b/hledger-web/CHANGES.md index 44b310996..293050dd2 100644 --- a/hledger-web/CHANGES.md +++ b/hledger-web/CHANGES.md @@ -21,90 +21,37 @@ API User-visible changes in hledger-web. See also the hledger changelog. -# 0c85b48d2 -- ;doc: use ```cli not ```shell for command-line examples +Features -- doc: update manuals +- 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) -- ;cabal: update cabal files +Improvements -- feat:print: add a basic beancount output format - This prints journal output more likely (but not guaranteed) to - be readable by Beancount. +- 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) - All packages now require text 1.2.4.1 or greater. +- The Sandstorm app's permissions and roles have been renamed for clarity. (#834) -- imp: web: round amounts to display precision as before (precisiongeddon) +- Permissions are now checked earlier, before the web app is started, + producing clearer command line errors when appropriate. -- cabal: update cabal files +- Account's `adeclarationinfo` field is now included in JSON output. (#2097) (S. Zeid) -- pkg:web: clean up some apparently redundant declarations and deps +Fixes -- dev:web: refactor permission checking +- The app can now serve on address 0.0.0.0 (exposing it on all interfaces), + which previously didn't work. + (#2099) (Philipp Klocke) -- ;cabal: update cabal files +- The broken "File format help" link in the edit form has been fixed. (#2103) -- imp:web: cleanups; use --allow on Sandstorm (#834) - -- imp:web: access control UX cleanups (fix #834) - Changes: - - 1. rename the sandstorm "manage" permission to "edit" - (old permission names: view, add, manage; - new permission names: view, add, edit). - - Rationale: "edit" best describes this permission's current powers, to users and to operators. - If we ever added more manager-type features we'd want that to be a new permission, - not a rename of the existing one (which would change the powers of existing users). - - 2. rename the sandstorm roles for consistency with permissions - (old role names: viewer, editor, manager; - new role names: viewer, adder, editor) - - Rationale: it's needed to avoid confusion. - - 3. add a new option: --allow=view|add|edit|sandstorm (default: add). - 'sandstorm' sets permissions according to the X-Sandstorm-Permissions header. - Drop the --capabilities and --capabilities-header options. - - Rationale: it's simpler and more intuitive. - - 4. replace "capability" with "permission" in ui/docs/code. - - Rationale: consistent with the above, more familiar. - -- fix:web: check options like --capabilities before starting the app - -- fix:web:edit form: fix broken "File format help" link (fix #2103) - Now not broken, https rather than http, and pointing to the "Data - formats" section, which has links to each of the file formats - (in case editing a non-journal file). - -- web: Use guessAppRootOr to enable relative root if desired (fix #2099) (Philipp Klocke) - This is useful when serving on 0.0.0.0, such that querying from any - other device with : does not fallback to 0.0.0.0:PORT, - which would fail. - - Tested: Manually - -- imp: web: include adeclarationinfo in accounts JSON (S. Zeid) - -- ;cabal: update cabal files - -- ;doc: main module haddock cleanups - -- ;doc: package description cleanups - -- lib!: export less from cli and web packages, and more from ui - -- ;doc: update manuals - -- ;cabal: update cabal files - -- ;pkg: bump version to 1.31.99 - -- ;doc: merge 1.31 changelogs # 1.31 2023-09-03 + Improvements - Allow aeson 2.2, megaparsec 9.5 diff --git a/hledger/CHANGES.md b/hledger/CHANGES.md index 7643ce9c6..b5c82c937 100644 --- a/hledger/CHANGES.md +++ b/hledger/CHANGES.md @@ -23,393 +23,176 @@ User-visible changes in the hledger command line tool and library. Breaking changes -- This week I completed the months-long yak shave that became - Precisiongeddon, and it has landed in master; see - for details. - Heads up: this can change default precisions shown especially by - cost and value reports - all for the better hopefully. +- 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 -- The `print` command has a new `beancount` output format for exporting to Beancount. +- Timedot format supports a new letters syntax for easier tagged time logging. + (#2116) -- Timedot format supports a new letters syntax for easier tagged time logging. (#2116) - -- Add tsv output (#869) (Peter Sagerson) - -- import: interpolate regex matches in field templates (#2009) (Jonathan Dowland) - -- print: add --round option for more control of precisions (#2085) - -- [feat: balance: Add only-summary flag (#1012) #2086](https://github.com/simonmichael/hledger/pull/2086) (Stephen Morgan) - -- [feat: CSV rule negation #2088](https://github.com/simonmichael/hledger/pull/2088) (bobobo1618) - - -Improvements - -- Journal format now accepts lot costs with spaces after `{`, improving Ledger compatibility. - -- A new hledger user pointed out in chat out that -s/--strict mode - didn't work with the import command. This exposed a bug (#2113) and - led to some reworking of the API in Hledger.Read. Until now, when - reading multiple files, -s/--strict checks were performed for each - individual file, causing spurious failures, with import and other - commands. Now strict checks are done only once, for the overall - journal. Also, the import command now only updates .latest files at - the end of a successful run (after successfully passing strict - checks and after updating the journal file). - -- web: access control UX cleanups: replace --capabilities and --capabilities-header with --allow, and validate it before starting the app (#834) - -- web: sandstorm web app cleanups; rename/reorder roles & permissions - -- Jacob Weisz has updated the hledger-web app on Sandstorm - -- [imp: web: include account declaration info in accounts JSON #2097](https://github.com/simonmichael/hledger/pull/2097) (S. Zeid) - - -Fixes - -- Non-print-like reports no longer add trailing decimal marks (a regression in 1.31). - Clarified the policy on number formatting adjustments made in certain reports/output formats. (#2115) -- `tag:` queries now work when reading CSV files. (#2114) -- `-o`/`--outputfile` with a .json or .sql extension now properly selects those formats. - -- amounts in value reports can sometimes be shown unstyled / with zero decimal digits, - - -- auto postings break redundant equity/cost detection and transaction balancing, - - -- demo: avoid a bug in asciinema 2.3.0, and improve the error message when asciinema fails (#2094) - -- web: fix broken "File format help" link in the edit form (#2103) - -- balance-assigned amounts affect commodity styles again (#2091, regression in 1.30) - -- timedot: parse unitful quantities more accurately (#2096) - - -Breaking changes - -Features - -Improvements - -Fixes - -- `print` now shows zeros with a commodity symbol and decimal digits when possible, preserving more information. - -- `print` now formats balance assertion costs with standard commodity styles, like other amounts. - -- `print` has a new option for rounding amounts to commodity display precisions: - - - `--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 - - **Past behaviour** - - Comparing amount styling behaviour across hledger versions can be confusing; - here's a summary (for my own sanity). - - print shows four kinds of amount: posting amounts, balance assertion amounts, and costs for each of those. - - Which amounts does print do basic styling (eg symbol placement) on ? - - | hledger | amt | cost | bal | balcost | - |-----------|-----|------|-----|---------| - | 1.1-1.14 | Y | N | N | N | - | 1.15-1.22 | Y | N | Y | N | - | 1.23-1.30 | Y | Y | Y | N | - | | | | | | - | 1.31- | Y | Y | Y | Y | - - Which kind of rounding does print do on each amount ? - - | hledger | amt | cost | bal | balcost | - |---------------------|------|------|------|---------| - | 1.0-1.20 | hard | none | none | none | - | 1.21-1.30 | soft | none | none | none | - | 1.31 | none | none | none | none | - | | | | | | - | 1.31.1 | none | none | none | none | - | 1.31.1 --round=soft | soft | none | soft | none | - | 1.31.1 --round=hard | hard | none | hard | none | - | 1.31.1 --round=all | hard | hard | hard | hard | - -Docs - -API - - -# e601adaee -- ;doc: changelogs (from TWIH) - -- ;doc: timedot: example tweak - -- ;doc: Amount formatting, parseability: improve example - -- ;doc: Amount formatting, parseability: fix link - -- ;doc: use ```cli not ```shell for command-line examples - -- ;doc: Amount formatting, parseability: fix link - -- ;doc: Amount formatting, parseability: examples, links - -- feat:timedot: tagged time logging with letters - -- ;doc:timedot: cleanups - -- imp:print:beancount: conversion improvements - - omit balance assertions - - replace more currency symbols, and match within symbols like C$ - - do more account validation, and error if conversion is too hard - - backslash-escape double quotes and backslashes in payee and note - -- imp:print:beancount: also convert cost amounts - -- doc: update manuals - -- ;doc: update command help - -- ;cabal: update cabal files - -- feat:print: add a basic beancount output format - This prints journal output more likely (but not guaranteed) to +- `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. - All packages now require text 1.2.4.1 or greater. +- 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) -- fix: -o/--outputfile with a .json or .sql extension now selects those formats +- 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) -- ;doc:commodity directive: edits +- 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). -- ;doc:commodity directive: explain why decimal mark is required -- ;doc: amount formatting: correction, csv does not force . (#2115) +Improvements -- ;doc: amount formatting: edits (#2115) +- Journal format no longer fails to parse Ledger-style lot costs with spaces + after the `{`, improving Ledger compatibility. -- ;doc: amount formatting: edits (#2115) - -- ;doc: amount formatting: edits (#2115) - -- fix: non-print-like reports no longer add trailing decimal marks (fix #2115) - That 1.31 change was advertised as being for the print command only, - but it affected all commands. Now it affects only print and other - "print-like" commands (ie all commands that show whole journal entries - that we might want to re-parse). - - Also three classes of hledger output, and how they modify the - commodity display styles' digit group marks and decimal marks - to suit different consumers, have been identified and documented - (under REPORTING CONCEPTS). - -- ;doc:csv:if table: clarify, explain why backslash won't work (#2107) - -- fix:csv: fix tag: queries on CSV data (#2114) - -- ;doc:journal: decimal marks, commodity directives: rewrites - -- imp:import: support -s/--strict properly (fix #2113) - hledger import -s now runs strict checks on an in-memory copy of the - updated journal, before updating the journal file; if strict checks - fail, nothing is written to disk. - - And hledger import now does not update any .latest files until it has - run without error (no failing strict checks, no failure while writing +- `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. -- ;doc: regular expressions: add examples (hledger_site#224) +- `print` now shows zeros with a commodity symbol and decimal digits + when possible, preserving more information. -- ;doc: More valuation examples: drop obsolete explanation (precisiongeddon) +- `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) -- imp: roi: limit large decimals to 8 digits by default (precisiongeddon) - With valuation now preserving more decimal digits, roi could show - excessively precise decimals if there was no known display precision - for the valuation commodity. Now in that situation it limits the - precision to a maximum of 8 digits. + - `--round=soft` - add/remove decimal zeros in non-cost amounts + (like 1.30 but also affects balance assertion amounts) -- imp: more precision handling fixes, debug output, test updates (precisiongeddon) - This and the preceding commits were "work in progress" that got out of control. - There's more to do, but this one brings these precision-related improvements - (at least): + - `--round=hard` - round non-cost amounts (can hide significant digits) - When "infinite decimals" arise, they are now generally shown with - 8 decimal digits rather than 255. + - `--round=all` - round all amounts and costs - print and prices no longer add trailing decimal zeros unnecessarily. + 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 | - Some code has been refactored or given more debug output. +- The `prices` command has had a number of fixes and improvements (#2111): - All tests have been updated to match the recent changes. + - 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. + -- imp: prices: clarify, fixes, improve semantics (precisiongeddon) - - The prices comand now more accurately lists the prices that hledger - uses when calculating value reports (similar to what you'd see with - eg `hledger bal -V --debug=2`). +Fixes - - The prices command's --infer-reverse-prices flag was confusing since - we always infer and use reverse prices; it has been renamed to --show-reverse. +- `print` now styles balance assertion costs consistently, like other + amounts. - - --infer-market-prices and --show-reverse combine properly. +- `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) - - --show-reverse now ignores all zero prices rather than giving an error. +- `tag:` queries now work when reading CSV files. (#2114) - - Reverse prices (which can be infinite decimals) are now displayed - with at most 8 decimal digits (rather than the internal precision of - 255 digits). +- Using a `.json` or `.sql` file extension with `-o`/`--outputfile` + now properly selects those output formats. - - Filtering prices by cur: or amt: now works properly. +- 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) - - Price amounts are styled, but all decimal digits are shown. +- 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) -- imp: set display style, natural precision on valued amounts (fix #2105, precisiongeddon) - Cost/value conversion now applies the standard display style, and - sets the display precision equal to the internal decimal precision - (or 8 if the decimal appears to be infinite). - This means value reports and especially `print -V` now show amounts - with more accurate and standard style and precision. +- 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). - New tests have been added describing and explaining various - style/precision behaviours in print cost/value reports. +- Failing balance assertions with a cost now show correct markers in + the error message. (#2083) -- ;dev: valuation.test: cleanup -- ;doc: import: document Match Groups (Jonathan Dowland) - Add a description of Match Groups to the manual; Section "Matchers". - Include two examples. +Docs - Clarify a description of regular expression features with respect - to match groups. +- New: + + - Amount formatting, parseability + - Started new code docs for developers, based in the Hledger module's haddock - Expand the description of field assignments to cover match group - interpolation, cross-referencing to Section "Matchers" for the full - description. +- Updated: + + - aregister + - commodity directive + - Commodity display style + - if table + - Decimal marks, digit group marks + - Regular expressions + - Timedot - Signed-off-by: Jonathan Dowland + -- test: import: functional tests for match group interpolation (Jonathan Dowland) - Add functional tests for matching substrings in field matchers and - interpolating them into the corresponding field assignments. Check - the following properties and use-cases: - -- Use-case 1: matching a portion of a date in a known format - (YYY-MM-DD) and writing a comment-command to warp a posting date. - Useful for credit cards. -- Use-case 2: match a portion of a CSV field and use it as an - account assignment. Useful for my byzantine setup with two - separate ledgers cross-importing to each other. -- Ensure bracketed portions of field matchers are captured. -- Ensure bracketed portions of record matchers are captured. -- Check match token numerical offset is relative to match group, - not the whole rules file. -- Check nested matches work. -- Ensure match group token expansion works with or without - surrounding text. - - Signed-off-by: Jonathan Dowland - -- ;doc: Setting LEDGER_FILE: fix a quote (hledger_site#93) - -- fix: auto postings: detect redundant costs properly (fix #2110) - -- feat: cli: Add tsv output (#869) (Peter Sagerson) - All commands that suport csv output now also support tsv 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). - -- ;doc:tests:readme - -- ;dev: tests: ledger-compat tests cleanup - -- ;dev: tests: add outshine headings for more readability (in emacs) - -- ;doc: TESTS name/link - -- ;imp:Hledger.Cli.Script: don't export main, do export CompoundBalanceCommand - -- imp:demo: improve error message when asciinema fails - -- fix:demo: avoid breaking asciinema 2.3.0 (fix #2094) - We were adding a trailing newline, which causes asciinema 2.3.0 to - show a JSON decode error. - -- ;doc:cli:Data formats: link to each format's doc - -- imp:cli:Hledger.Cli.Version: export packagemajorversion - -- ;doc:areg,ui: note how separately-dated postings get combined - -- ;doc:print: cleanups (#2085) - -- ;doc:CHANGES: document print and zero-rendering changes (#2085) - -- feat:print: add --round option for more control of precisions (#2085) - -- lib!: use styleAmounts in more places; add rounding strategies - -- dev:print: refactor, add AmountStyle "rounding strategy" - Changes to enable more control of "rounding" behaviour - (ie, choosing display precisions for amounts). - - This reverts 1.31's change of asprecision, making it a non-Maybe - again, and adds a new asrounding field providing more control over how - a target display precision is applied to existing amounts (two options - for now, more later). Functionality is in an interim state (reports do - no rounding). - -- fix:timedot: parse unitful quantities more accurately (fix #2096) - A quantity with a unit like "15m" was being parsed internally as - 0.249999999... rather than 0.25 (and since hledger 1.21, printed that - way also). Now we round such quantities to two places during parsing, - to get exact quarter-hour amounts. - -- ;doc:journal: rewrite Commodity display style - -- fix: balance-assigned amounts affect styles again (fix #2091) - -- ;doc:troubleshooting: nix locale config (#2089) - -- ;doc: csv: negative matchers (#2088) - -- feat: balance: Add summary-only flag (#1012) (Stephen Morgan) - Add a flag --summary-only for multi-column balance reports, which does - not display the main date columns for a report, but only displays the - summary columns (--row-total, --average). This is useful when there are - many columns (a weekly summary over many years) where you're only - interested in the average (or some other summary). - -- ;cabal: update cabal files - -- ;doc: main module haddock cleanups - -- lib!: export less from cli and web packages, and more from ui - -- dev:cli: merge Hledger.Cli.Main with Hledger.Cli - -- fix: failing balance assertions with cost show correct highlight #2083 - -- ;doc:journal: clarify valuation date, note bug #2084 - -- ;doc: update manuals - -- ;doc: update command help - -- ;cabal: update cabal files - -- ;pkg: bump version to 1.31.99 - -- ;doc: merge 1.31 changelogs # 1.31 2023-09-03 + Features - Multi-pivot: the --pivot option now accepts multiple arguments,