diff --git a/CHANGES.md b/CHANGES.md index be8b84b25..32792415a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,49 @@ General changes in the hledger project. For package-specific changes, see the hledger package changelogs. +# 66793251 + +Doc updates + +- FINANCE +- ISSUES +- REGRESSIONS +- RELEASING +- SCHEDULE & `just schedule` script + +Website + +- fix the "edit this page" link +- redirects: handle more old pages; fix some old redirects to #FMT-format; stop redirecting /timeclock, /timedot, /timedot.html +- set up a github issue template clarifying this repo's scope +- shortcut urls: release.hledger.org, nightly.hledger.org, regressions.hledger.org; readyprs.hledger.org excludes PRs with needs-* labels +- sidebar: reorganise +- sidebar: leave all links visible to avoid popping +- sidebar: avoid duplicate links, they're no longer allowed +- sidebar: link to the current release's manuals, not the dev version's +- Beancount: edits, new conversion tips +- Docs: consolidate all user docs onto a single Docs page +- Editors: more vs code extensions, more emacs calc notes +- Export: updates +- FAQ: updates +- Hledger By Example: start a new progressive "book", with 18 pages +- Tutorial: hledger basics -> to Tutorial: hledger add +- Home: new, shorter home page content +- Home: show a quote/testimonial, updating on the hour +- Investments: fix link (#2436) +- Invoicing: fix kairos link +- Ledger: edits + +Infrastructure/Misc + +- hledger now requires at least GHC 9.6 (and base 4.18), to ease maintenance. +- bump default build, tools to lts 24.8 / ghc 9.10.2 +- docker: sync Docker GHC version with Stack configuration, update dependencies, and replace deprecated Dockerfile syntax. (Lukas Fleischer) +- github workflows improvements +- tool updates: checkembeddedfiles, devtag, nightly-push, nightlytag, relver, test +- update github issue templates + + # 1.43.2 2025-06-13 diff --git a/hledger-lib/CHANGES.md b/hledger-lib/CHANGES.md index 0433bf2b0..e83e1417c 100644 --- a/hledger-lib/CHANGES.md +++ b/hledger-lib/CHANGES.md @@ -11,17 +11,45 @@ Fixes Improvements - - - - - - --> + Internal/api/developer-ish changes in the hledger-lib (and hledger) packages. For user-visible changes, see the hledger package changelog. +# 66793251 + +Breaking changes + +- hledger now requires at least GHC 9.6 (and base 4.18), to ease maintenance. + +Fixes + +- Fix liftA2 build error with ghc <9.6 (broken since 1.43.1). + +Improvements + +- Account now stores balances, one per date period. This enables it do + the hard work in MultiBalanceReport. + Some new types are created to enable convenient operation of accounts: + - `BalanceData` is a type which stores an exclusive balance, inclusive + balance, and number of postings. This was previously directly stored + in Account, but is now factored into a separate data type. + - `PeriodData` is a container which stores date-indexed data, as well as + pre-period data. In post cases, this represents the report spans, + along with the historical data. + - Account becomes polymorphic, allowing customisation of the type of + data it stores. This will usually be `BalanceData`, but in + `BudgetReport` it can use `These BalanceData BalanceData` to store + both actuals and budgets in the same structure. The data structure + changes to contain a `PeriodData`, allowing multiperiod accounts. + (Stephen Morgan) +- Hledger.Read: make LatestDatesForFile showable +- Hledger.Read.Common: accountnamep and modifiedaccountnamep now take a flag to allow semicolons or not +- Hledger.Utils.IO: getFlag, warnIO, rename exitOnError -> handleExit, improve doc +- Hledger.Query: matchesCommodity handles all query types, not just cur:, and doesn't match by default +- Hledger.Data.Amount: move commodityStylesFromAmounts here, drop canonicalStyleFrom + # 1.43.2 2025-06-13 - Hledger.Utils.IO: rename exitOnError -> handleExit, improve doc diff --git a/hledger-ui/CHANGES.md b/hledger-ui/CHANGES.md index fe0aed116..1b21780ff 100644 --- a/hledger-ui/CHANGES.md +++ b/hledger-ui/CHANGES.md @@ -18,10 +18,22 @@ Docs API --> + User-visible changes in hledger-ui. See also the hledger changelog. +# 66793251 + +Breaking changes + +- hledger now requires at least GHC 9.6 (and base 4.18), to ease maintenance. + +Improvements + +- Use hledger 1.50 + + # 1.43.2 2025-06-13 - Use hledger-1.43.2 diff --git a/hledger-web/CHANGES.md b/hledger-web/CHANGES.md index 1ef06b1c2..6ef2ab2e8 100644 --- a/hledger-web/CHANGES.md +++ b/hledger-web/CHANGES.md @@ -18,10 +18,29 @@ Docs API --> + User-visible changes in hledger-web. See also the hledger changelog. +# 66793251 + +Breaking changes + +- hledger now requires at least GHC 9.6 (and base 4.18), to ease maintenance. + +Fixes + +- The register chart is no longer hidden when the window is narrow. + +- Dragging on the register chart now selects date ranges more accurately. + Eg, now you can select a range including transactions at the rightmost edge of the chart. + +Improvements + +- Use hledger 1.50 + + # 1.43.2 2025-06-13 - Use hledger-1.43.2 diff --git a/hledger/CHANGES.md b/hledger/CHANGES.md index 250462eeb..c14754104 100644 --- a/hledger/CHANGES.md +++ b/hledger/CHANGES.md @@ -22,9 +22,215 @@ Scripts/addons API --> + User-visible changes in the hledger command line tool and library. +# 66793251 + +## Breaking changes + +- Transaction balancing is now done in a more robust way, using local precisions only (like Ledger) [#2402]. + Until now, a transaction was required to balance using its commodities's global display precisions. + Small imbalances were tolerated by configuring display precisions for the whole journal (with `commodity` directives). + + Now, a transaction is required to balance using the precisions in its journal entry only. + This means each entry can use the precision it needs, and balancing precision and display precision are independent. + (So eg, increasing the display precision with `-c` no longer breaks the journal.) + + In practice this requires journal entries to be more accurate, and you will probably need to fix some old entries. + There are three main ways to fix an entry: + - reduce the amounts' precision (use fewer decimal digits, so a lower balancing precision is inferred) + - make the amounts more accurate (use better decimal digits, so the amounts sum to zero more closely) + - or (easiest) add an amountless "expenses:rounding" posting (this is not a cheat, it's a more accurate record of what your bank/broker is doing). + + You can also keep the old transaction-balancing behaviour with `--txn-balancing=old`, for now. + But updating your entries is recommended. + + The old behaviour could allow small remainders to accumulate over time, + in accounts that often have an inexact posting amount or cost amount and are never reconciled - + typically equity, revenues, and expenses. + You can check for this in your old journals with a command like + + hledger bal cur:\\$ -c '$1.000000000000' | grep -E '\...0*[1-9]' + + (show $ account balances, with many decimals, which have a non-zero decimal in the 3rd place or beyond) + +- Timeclock format has had various changes: + - Timeclock syntax and parsing is now more robust (when not using --old-timeclock): + - Semicolon always starts a comment (and timeclock account names may not include semicolons). + - Trailing spaces are ignored. + - Clock-ins now require an account name. + - Clock-outs now can have a comment and tags. + - Timeclock entries are processed in parse order. + - Some order-related bugs in 1.43 have been fixed. + - Concurrent/overlapping sessions are now fully supported, even if they have the same account name. + - The timeclock doc has been rewritten. + - The --old-timeclock hidden flag has been renamed, documented, and now also affects included files. + [#2141], [#2365], [#2400], [#2417] + +- Some edge cases in balance report behaviour were changed for internal consistency: + - --declared now treats parent accounts consistently. + - --flat --empty now ensures that implied accounts with no postings are not displayed, + but accounts with zero balance and actual postings are. + (Stephen Morgan, [#2360], [#2395]) + +- hledger now requires at least GHC 9.6 (and base 4.18), to ease maintenance. + +## Fixes + +- Paging long output no longer gives an error when `LESS` is undefined and + `less` does not have mouse support (as on some FreeBSD systems). + +- The `all:` query now requires at least one posting to match. + (Previously, matching no postings at all was also considered a success.) + +- When using journal format's `include` directive, several kinds of + error (read failure, cyclic include..) could show an off-by-one line + number or excerpt, confusingly. This has been fixed. + Also, attempting to include a rules file now gives a better error message. + +- In CSV `if` rules, match group references like `\1` no longer get confused + by differing case. + (Jay Neubrand, [#2419]) + +- `add`, `commodities`, and `diff` now support the --conf and -n/--no-conf flags, + like other commands. + [#2446] + +- On Windows machines, the `add` command now properly shows green prompts instead of ANSI codes. + [#2410] + +- Balance reports now properly show the historical balance even when the report period is empty. + [#2403] + +- Balance reports' csv output, and the `balance --budget` report, now respect the --summary-only flag. + (Stephen Morgan, [#2411], [#2443]) + +- The `demo` command no longer mentions `-- ASCIINEMAOPTS` in help (that longer works). + Also it shows a better error message when asciinema is not installed. + +- `hledger help -m TOPIC` or `hledger help -i TOPIC` now show the help for TOPIC, as intended. + [#2399] + +- Since hledger 1.32.1, the `import` command, when importing multiple files at once, + would write an empty .latest file for data files with no new transactions + (causing all transactions in those data files to appear new on next import). + This is now fixed. + [#2444] + +## Features + +- CSV rules files can now run a shell command to clean the data: + + # read the latest foo*.csv file, and replace "USD" with "$" + source foo*.csv | sed -e 's/USD/$/g' + + or to generate the data: + + # fetch JSON from simplefin.org, then transform it to CSV + source | simplefinjson | simplefincsv + + Whenever hledger runs one of these commands, it will echo the command on stderr. + +- The `import` command can now automatically archive imported CSV data files, + saving a dated copy in a `data/` directory. This can be useful for troubleshooting, + or for regenerating entries later with improved rules. + To enable it, add `archive` to the rules file. + + This and the previous feature can simplify file management and reduce the need for support scripts. + +## Improvements + +- In command line help, flag group headings have been simplified. + And the help for -f/--file, `add`, and `import` is now clearer. + +- When given both an unknown command and an unknown flag, hledger now gives + a clearer error message (about the command, not the flag). + [#2388] + +- A long standing awkwardness with addon commands has been solved: + you can now use addon options freely in a hledger command line; + you don't need to write a `--` argument first. + [#458] + +- In smart dates and period expressions, quarter syntax like `2025q1` or `Q2` is now fully supported. + +- In end-value reports where the end date is unspecified, market prices + in the future can no longer influence the report end date and valuation date. + (Market prices on or before today, still can.) + [#2445] + +- A `tag:` query with the `accounts` command now only matches account tags, not posting tags. + Eg, `hledger accounts tag:t` now lists only account a from this journal: + + account a ; t: + + 2025-01-01 + a 1 + b -1 ; t: + +- Journal format's `include` directive now has more robust and convenient glob patterns: + - `**` can match both directories and filenames + - `**` now automatically ignores anything under dotted directories, like .git/, foo/.secret/, etc. + (If you do want it to search dotted directories, + you can use the --old-glob flag for now to restore the old behaviour. See also Glob#49.) + - Glob patterns with wildcards now automatically exclude the current file. + Eg `include **.journal` will include all other .journal files in this directory and below. + +- `include`'s error messages and debug messages have been improved. + Eg, the including file paths are also shown. + +- Journal format's auto posting rules can now use `%account` to insert the account name + from the matched posting. + (Stephen Morgan, [#1975], [#2412]) + +- The `aregister` command no longer abbreviates account names + when producing `csv`, `html`, or `fods` output. + (savanto, [#1995], [#2416]) + +- The `commodities`, `payees` and `tags` commands now have --used/--declared/--undeclared/--unused flags, like `accounts`. + And there has been a general cleanup of options and help across these four commands. + +- The `import` command now shows info messages on stderr, not stdout. + Its "no new transactions" output is more compact, showing file names not file paths. + And it no longer prints an extra newline. + +- The `setup` command's output has been improved. + Lack of a pager is now reported as info, not warning (there's no default pager on Windows). + Shell completions are ignored for now. + +## Docs + +- add: clarify that add is for journal format only +- addon commands: edits, drop `--` argument from all examples [#458] +- areg: clarification +- bin: README updates +- COMMANDS: mention general options +- completions: README updates +- config files: no longer experimental +- csv: date-format: mention lack of support for local time formats [#1874] +- csv: source, archive: rewrite, add examples +- Depth: fix typo +- github release docs: simplify install commands +- import: use windows-compatible quotes in watchexec example +- include directive: update docs; clarify effect, glob limitations +- note fish LEDGER_FILE setup +- options: mention that flag+value can't combine with other flags [#2059] +- print: improve --location help +- smart dates: fix typo + +## Examples + +- CSV rules for Eternl cryptocurrency wallet +- VAT example + +## Scripts/addons + +- renamed paypaljson2csv to paypaljson +- simplefinjson, simplefincsv: new helpers for downloading/converting data from simplefin.org bank aggregator + + # 1.43.2 2025-06-13 - hledger no longer shows an error message or exits with error status @@ -1355,7 +1561,7 @@ Fixes amount (#2041). Eg, the following transaction is now accepted: 2023-01-01 - Assets -84.01 USD @ 2.495 GEL + Assets -8401USD @ 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