hledger/doc/release-notes.org
2016-07-13 09:21:42 -07:00

12 KiB
Raw Blame History

2016/mm/dd 0.28

general

docs

  • All of the hledger executables' manuals now include the full list of general and reporting options; the assumption is that these options are harmlessly ignored when not supported.
  • docs have been reorganised and are now also provided as built-in help, in plain text, man and info formats, generated from the same source by a new Shake-based docs build system. (#292)
  • misc documentation updates - layout/style cleanups, LEDGER_FILE, accounts, include directive, CSV, timeclock, how to use dotted account names
  • minor copyedits (jungle-boogie)
  • The website is simpler, clearer, and more mobile-friendly. Docs are now collected on a single page and separated by type: getting started, reference, more. Also separate web manuals are available for each executable and file format. This should make it easier to see what's available, and to read just what you need.
  • add beancount's nice example journal, hledgerised This is the synthetic, somewhat realistic example journal from Martin Blais' beancount project (of a few months ago), slightly tweaked for hledger. It makes a nice example, eg for trying out hledger-ui.

cli

  • The hledger executables have a new help system, making their manuals available for local reading.

    PROG -h              shows PROG's command-line usage
    PROG --help          shows PROG's manual (fixed width)
    PROG --man           shows PROG's manual with man (formatted/paged)
    PROG --info          shows PROG's manual with info (hypertext)
    hledger help [TOPIC] shows any manual
    hledger man  [TOPIC] shows any manual with man
    hledger info [TOPIC] shows any manual with info
    
  • When multiple files are specified with multiple -f options, we now parse each one individually, rather than just concatenating them, so they can have different formats (#320). Note this also means that directives (like `Y` or `alias`) no longer carry over from one file to the next.
  • Parsing an argument-less debug option is more robust.

hledger-lib 0.28

journal format

  • try to parse standard input as journal format always, not just most of the time
  • can now include timeclock/timedot files (#320) journal files can now include journal, timeclock or timedot files (but not yet CSV files). Also timeclock/timedot files no longer support default year directives.
  • support commodity directive and format subdirective, allowing full control of commodity style (#295) The commodity directive's format subdirective can now be used to override the inferred style for a commodity, eg to increase or decrease the precision. This is at least a good workaround for #295.
  • lib: after reloading a journal, also refilter it (#314)
  • lib: fix bracketed posting dates, parser cleanup (#304) Bracketed posting dates were fragile; they worked only if you wrote full 10-character dates. Also some semantics were a bit unclear. Now they should be robust, and have been documented more clearly. This is a legacy undocumented Ledger syntax, but it improves compatibility and might be preferable to the more verbose "date:" tags if you write posting dates often (as I do). Internally, bracketed posting dates are no longer considered to be tags. Journal comment, tag, and posting date parsers have been reworked, all with doctests.
  • parse "account" directives We now parse account directives, like Ledger's. We don't do anything with them yet. The default parent account feature must now be spelled "apply account"/"end apply account".
  • support ledger3-compatible "apply account"
  • lib: show txn's file position in assertion errors
  • lib: more ergonomic balance assertion errors
  • fixed an issue with ordering of included same-date transactions

timeclock format

  • renamed timelog format to "timeclock", matching the emacs package
  • sessions can no longer span file boundaries (unclocked-out sessions will be auto-closed at the end of the file).

timedot format

  • new "timedot" format for retroactive/approximate time logging Timedot is a plain text format for logging dated, categorised quantities (eg time), supported by hledger. It is convenient for approximate and retroactive time logging, eg when the real-time clock-in/out required with a timeclock file is too precise or too interruptive. It can be formatted like a bar chart, making clear at a glance where time was spent.

misc

  • lib: clarify balance assertion error again "calculated" is better, "actual" implies the account's actual real-world balance which might be something else again.
  • Use hpack in hledger-ui (#356)
  • always try parsing stdin as journal
  • reduced memory usage by 30%+ on large files
  • bump default stackage snapshot to lts-6.0
  • git clone of the hledger repo on windows now works (#345)
  • added missing benchmark file (#342)
  • Add pivot option with tests and docs (#323) (Malte Brandy)
  • GHC 8.0.1 compatibility (except hledger-api) Note we seem to have lost GHC 7.4 compatibility.
  • more tests, start using doctests
  • require stackage nightly, for newer pandoc/swagger Move to a newer stackage snapshot. This helps ensure a new-enough pandoc will more be available for doc building without needing extra compilation. Also we get to use the latest swagger and servant-swagger for hledger-api, but we have to go to stackage nightly. With luck there will be a lts 6 before next hledger release.
  • lib: slightly better file format detection The Journal, Timelog and Timedot readers' detectors now check each line in the sample data, not just the first one. I think the sample data is only about 30 chars right now, but even so this fixed a format detection issue I was seeing.
  • make stack config more compatible across stack versions (#300)
  • journalReloadIfChanged now reloads the full journal without filtering, like journalReload
  • Reloading a journal should now reload all included files as well.
  • lib: make Journal a monoid
  • lib: The Hledger.Read.* modules have been reorganised for better reuse. Hledger.Read.Utils has been renamed Hledger.Read.Common and holds low-level parsers & utilities; high-level read utilities have moved to Hledger.Read.
  • use new file-embed to fix ghci cwd dependence, see https://github.com/snoyberg/file-embed/issues/18
  • lib: refactor amount canonicalisation Amount display style canonicalisation code and terminology has been clarified a bit. Individual amounts still have styles; from these we derive the standard "commodity styles". In user docs, we might call these "commodity formats" since a Ledger-compatible commodity directive would use the "format" keyword.
  • Most hledger types have been converted from String to (strict) Text. This reduces maximum residency (~30-50%) on large data files and gives a slight speed increase.
  • lib: simplify parsers; cleanups (#275) The journal/timeclock/timedot parsers, instead of constructing (opaque) journal update functions which are later applied to build the journal, now construct the journal directly (by modifying the parser state). This is easier to understand and debug. It also removes any possibility of the journal updates being a space leak. (They weren't, in fact memory usage is now slightly higher, but that will be addressed in other ways.) Also:
  • Journal data and journal parse info have been merged into one type (for now), and field names are more consistent.
  • The ParsedJournal type alias has been added to distinguish being-parsed and finalised journals.
  • Journal is now a monoid.
  • expandPath now throws a proper IO error (and requires the IO monad).

hledger 0.28

balance

  • output CSV item amounts on one line #336

register

  • fix sorting regression with date2 (#326)

stats

  • fixed an issue with ordering of include files ?

hledger-ui 0.28

  • add vi-style movement keys, use ? for help (#357)
  • basic manual integration
  • E key runs editor, jumping to current txn or error location (emacs/vi) The E key (on all screens) edits the journal file using $HLEDGER_UI_EDITOR or $EDITOR or a default (emacsclient -a "" -nw).
  • flat mode affects register too; doc updates
  • at depth 0 call account "All" (and fix register)
  • 0 now limits depth to 0 instead of resetting it
  • briefer on-screen help, and a more detailed help dialog
  • a key runs the addcommand
  • ESC key cancels minibuffer/help or clears filter and jumps to top
  • / key sets the filter query; backspace/delete clears it I was planning to use this for search, but I can't help it, my hands want to use / to adjust the filter.
  • U key shows only uncleared transactions/postings
  • accounts, register: Z key toggles zero items (empty), and they are shown by default -E/empty is now the default for hledger-ui, so accounts with 0 balance and transactions posting 0 change are shown by default. The Z key toggles this, entering "nonzero" mode which hides zero items.
  • accounts, register: R key toggles real
  • register transactions are filtered by realness and status (#354)

    Two fixes for the account transactions report when real/cleared/real:/status: are in effect, affecting hledger-ui and hledger-web:

    1. exclude transactions which affect the current account via an excluded posting type. Eg when real is in effect, a transaction posting to the current account with only virtual postings will not appear in the report.
    2. when showing historical balances, don't count excluded posting types in the starting balance. Eg with real, the starting balance will be the sum of only the non-virtual prior postings.

    This is complicated and there might be some ways to confuse it still, causing wrongly included/excluded transactions or wrong historical balances/running totals (transactions with both real and virtual postings to the current account, perhaps ?)

  • ui, web: when reloading a journal, keep aliases and pivot in effect
  • preserve ignore-assertions & flags on reload
  • switch to the quicker-building microlens

hledger-web 0.28

  • update wai-handler-launch for better startup (fixes #226)
  • show a proper not found page on 404
  • focus the first field after clicking add a transaction (fixes #338)
  • fix the add a transaction link's tooltip
  • preserve initial command-line query when journal file is changed (#314) The initial query specified by command line arguments is now preserved when the journal is reloaded. This does not appear in the web UI, it's like an invisible extra filter.
  • leave date field blank, avoid problems with tab clearing it (#322)
  • exit if something is already using the specified port (#226)
  • don't open a browser page until the app is ready (#226)
  • Terminate the server thread more carefully on exit, eg on control-C in GHCI. May prevent stray background threads on windows.
  • show the sidebar by default (#310)
  • after following a link to a transaction, highlight it (Thomas R. Koll)
  • use numeric id instead of date for linking to transactions #308 (Thomas R. Koll)
  • misc. HTML/CSS/file cleanups/fixes (Thomas R. Koll)

hledger-api 0.28

  • add a web API server with examples (#316)
  • start an AngularJS API client app (#316) (Thomas R. Koll)

notes

release commits by time git ll 0.27.. release commits by component: git ll 0.27.. | sort -k3 -f, sort reverse each part