hledger-ui 1.5 → 1.9
raw patch · 12 files changed
+169/−142 lines, 12 filesdep ~basedep ~hledgerdep ~hledger-lib
Dependency ranges changed: base, hledger, hledger-lib
Files
- CHANGES +9/−0
- Hledger/UI/AccountsScreen.hs +6/−3
- Hledger/UI/ErrorScreen.hs +3/−0
- Hledger/UI/Main.hs +21/−22
- Hledger/UI/RegisterScreen.hs +3/−0
- Hledger/UI/Theme.hs +3/−0
- Hledger/UI/TransactionScreen.hs +3/−0
- Hledger/UI/UIUtils.hs +3/−0
- hledger-ui.1 +3/−2
- hledger-ui.cabal +7/−9
- hledger-ui.info +15/−14
- hledger-ui.txt +93/−92
CHANGES view
@@ -1,6 +1,15 @@ User-visible changes in hledger-ui. See also hledger, hledger-lib. +# 1.9 (2018/3/31)++* support ghc 8.4, latest deps++* when the system text encoding is UTF-8, ignore any UTF-8 BOM prefix+ found when reading files++* -E/--empty toggles zeroes at startup (with opposite default to cli)+ # 1.5 (2017/12/31) * fix help -> view manual (on posix platforms) #623
Hledger/UI/AccountsScreen.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE CPP #-} module Hledger.UI.AccountsScreen (accountsScreen@@ -18,7 +19,9 @@ import Control.Monad.IO.Class (liftIO) import Data.List import Data.Maybe+#if !(MIN_VERSION_base(4,11,0)) import Data.Monoid+#endif import qualified Data.Text as T import Data.Time.Calendar (Day) import qualified Data.Vector as V@@ -85,10 +88,10 @@ -- run the report (items,_total) = report ropts' q j where- -- still using the old balanceReport for change reports as it- -- does not include every account from before the report period- report | balancetype_ ropts == HistoricalBalance = singleBalanceReport+ report | balancetype_ ropts == HistoricalBalance = balanceReportFromMultiBalanceReport | otherwise = balanceReport+ -- still using the old balanceReport for change reports as it+ -- does not include every account from before the report period -- pre-render the list items
Hledger/UI/ErrorScreen.hs view
@@ -1,6 +1,7 @@ -- The error screen, showing a current error condition (such as a parse error after reloading the journal) {-# LANGUAGE OverloadedStrings, FlexibleContexts, RecordWildCards #-}+{-# LANGUAGE CPP #-} module Hledger.UI.ErrorScreen (errorScreen@@ -14,7 +15,9 @@ -- import Brick.Widgets.Border (borderAttr) import Control.Monad import Control.Monad.IO.Class (liftIO)+#if !(MIN_VERSION_base(4,11,0)) import Data.Monoid+#endif import Data.Time.Calendar (Day) import Graphics.Vty (Event(..),Key(..)) import Text.Megaparsec.Compat
Hledger/UI/Main.hs view
@@ -5,7 +5,6 @@ -} {-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE MultiParamTypeClasses #-} module Hledger.UI.Main where@@ -109,8 +108,8 @@ [v | (k,v) <- rawopts_ copts, k=="args", not $ any (`isPrefixOf` v) ["depth","date"]], -- always disable boring account name eliding, unlike the CLI, for a more regular tree no_elide_=True,- -- show items with zero amount by default, unlike the CLI- empty_=True,+ -- flip the default for items with zero amounts, show them by default+ empty_=not $ empty_ ropts, -- show historical balances by default, unlike the CLI balancetype_=HistoricalBalance }@@ -142,27 +141,27 @@ -- Initialising the accounts screen is awkward, requiring -- another temporary UIState value.. ascr' = aScreen $- asInit d True $- UIState{- aopts=uopts'- ,ajournal=j- ,aScreen=asSetSelectedAccount acct accountsScreen- ,aPrevScreens=[]- ,aMode=Normal- }+ asInit d True+ UIState{+ aopts=uopts'+ ,ajournal=j+ ,aScreen=asSetSelectedAccount acct accountsScreen+ ,aPrevScreens=[]+ ,aMode=Normal+ } ui = (sInit scr) d True $- (if change_ uopts' then toggleHistorical else id) $ -- XXX- UIState{- aopts=uopts'- ,ajournal=j- ,aScreen=scr- ,aPrevScreens=prevscrs- ,aMode=Normal- }+ (if change_ uopts' then toggleHistorical else id) -- XXX+ UIState{+ aopts=uopts'+ ,ajournal=j+ ,aScreen=scr+ ,aPrevScreens=prevscrs+ ,aMode=Normal+ } - brickapp :: App (UIState) AppEvent Name+ brickapp :: App UIState AppEvent Name brickapp = App { appStartEvent = return , appAttrMap = const theme@@ -194,7 +193,7 @@ withAsync (getCurrentDay >>= watchDate)- $ \_ -> do+ $ \_ -> -- start one or more background threads reporting changes in the directories of our files -- XXX many quick successive saves causes the problems listed in BUGS@@ -205,7 +204,7 @@ -- but gets tied up for ages withManager $ \mgr -> do dbg1IO "fsnotify using polling ?" $ isPollingManager mgr- files <- mapM canonicalizePath $ map fst $ jfiles j+ files <- mapM (canonicalizePath . fst) $ jfiles j let directories = nub $ sort $ map takeDirectory files dbg1IO "files" files dbg1IO "directories to watch" directories
Hledger/UI/RegisterScreen.hs view
@@ -1,6 +1,7 @@ -- The account register screen, showing transactions in an account, like hledger-web's register. {-# LANGUAGE OverloadedStrings, FlexibleContexts, RecordWildCards #-}+{-# LANGUAGE CPP #-} module Hledger.UI.RegisterScreen (registerScreen@@ -14,7 +15,9 @@ import Control.Monad.IO.Class (liftIO) import Data.List import Data.List.Split (splitOn)+#if !(MIN_VERSION_base(4,11,0)) import Data.Monoid+#endif import Data.Maybe import qualified Data.Text as T import Data.Time.Calendar
Hledger/UI/Theme.hs view
@@ -9,6 +9,7 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-} module Hledger.UI.Theme ( defaultTheme@@ -19,7 +20,9 @@ import qualified Data.Map as M import Data.Maybe+#if !(MIN_VERSION_base(4,11,0)) import Data.Monoid+#endif import Graphics.Vty import Brick import Brick.Widgets.Border
Hledger/UI/TransactionScreen.hs view
@@ -1,6 +1,7 @@ -- The transaction screen, showing a single transaction's general journal entry. {-# LANGUAGE OverloadedStrings, TupleSections, RecordWildCards #-} -- , FlexibleContexts+{-# LANGUAGE CPP #-} module Hledger.UI.TransactionScreen (transactionScreen@@ -11,7 +12,9 @@ import Control.Monad import Control.Monad.IO.Class (liftIO) import Data.List+#if !(MIN_VERSION_base(4,11,0)) import Data.Monoid+#endif import qualified Data.Text as T import Data.Time.Calendar (Day) import Graphics.Vty (Event(..),Key(..))
Hledger/UI/UIUtils.hs view
@@ -2,6 +2,7 @@ {- | Rendering & misc. helpers. -} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-} module Hledger.UI.UIUtils where@@ -16,7 +17,9 @@ import Control.Monad.IO.Class import Data.List import Data.Maybe+#if !(MIN_VERSION_base(4,11,0)) import Data.Monoid+#endif import Graphics.Vty (Event(..),Key(..),Modifier(..),Color,Attr,currentAttr) import Lens.Micro.Platform import System.Environment
hledger-ui.1 view
@@ -1,5 +1,5 @@ -.TH "hledger\-ui" "1" "December 2017" "hledger\-ui 1.5" "hledger User Manuals"+.TH "hledger\-ui" "1" "March 2018" "hledger\-ui 1.9" "hledger User Manuals" @@ -172,7 +172,8 @@ .RE .TP .B \f[C]\-E\ \-\-empty\f[]-show items with zero amount, normally hidden+show items with zero amount, normally hidden (and vice\-versa in+hledger\-ui/hledger\-web) .RS .RE .TP
hledger-ui.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 0415bc39f4fbc4cec62ff37e03c0ff513b23cd4825310c799a42177cd9245f1e+-- hash: cea777a487df72770055345666488fc9985b6adfc88526e59c3a6867e4768811 name: hledger-ui-version: 1.5+version: 1.9 synopsis: Curses-style user interface for the hledger accounting tool description: This is hledger's curses-style interface. It is simpler and more convenient for browsing data than the command-line interface,@@ -31,12 +31,10 @@ extra-source-files: CHANGES- README--data-files: hledger-ui.1 hledger-ui.info hledger-ui.txt+ README source-repository head type: git@@ -52,12 +50,12 @@ hs-source-dirs: ./. ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans- cpp-options: -DVERSION="1.5"+ cpp-options: -DVERSION="1.9" build-depends: HUnit , ansi-terminal >=0.6.2.3 , async- , base >=4.8 && <5+ , base >=4.8 && <4.12 , base-compat >=0.8.1 , cmdargs >=0.8 , containers@@ -65,8 +63,8 @@ , directory , filepath , fsnotify >=0.2- , hledger >=1.5 && <1.6- , hledger-lib >=1.5 && <1.6+ , hledger >=1.9 && <2.0+ , hledger-lib >=1.9 && <2.0 , megaparsec >=5.0 , microlens >=0.4 , microlens-platform >=0.2.3.1
hledger-ui.info view
@@ -3,7 +3,7 @@ File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir) -hledger-ui(1) hledger-ui 1.5+hledger-ui(1) hledger-ui 1.9 **************************** hledger-ui is hledger's curses-style interface, providing an efficient@@ -122,7 +122,8 @@ hide/aggregate accounts or postings more than NUM levels deep '-E --empty' - show items with zero amount, normally hidden+ show items with zero amount, normally hidden (and vice-versa in+ hledger-ui/hledger-web) '-B --cost' convert amounts to their cost at transaction time (using the@@ -378,17 +379,17 @@ Node: Top71 Node: OPTIONS821 Ref: #options918-Node: KEYS4087-Ref: #keys4182-Node: SCREENS7141-Ref: #screens7226-Node: Accounts screen7316-Ref: #accounts-screen7444-Node: Register screen9674-Ref: #register-screen9829-Node: Transaction screen11903-Ref: #transaction-screen12061-Node: Error screen12931-Ref: #error-screen13053+Node: KEYS4135+Ref: #keys4230+Node: SCREENS7189+Ref: #screens7274+Node: Accounts screen7364+Ref: #accounts-screen7492+Node: Register screen9722+Ref: #register-screen9877+Node: Transaction screen11951+Ref: #transaction-screen12109+Node: Error screen12979+Ref: #error-screen13101 End Tag Table
hledger-ui.txt view
@@ -118,20 +118,21 @@ hide/aggregate accounts or postings more than NUM levels deep -E --empty- show items with zero amount, normally hidden+ show items with zero amount, normally hidden (and vice-versa in+ hledger-ui/hledger-web) -B --cost- convert amounts to their cost at transaction time (using the+ convert amounts to their cost at transaction time (using the transaction price, if any) -V --value- convert amounts to their market value on the report end date+ convert amounts to their market value on the report end date (using the most recent applicable market price, if any) --auto apply automated posting rules to modify transactions. --forecast- apply periodic transaction rules to generate future transac-+ apply periodic transaction rules to generate future transac- tions, to 6 months from now or report end date. When a reporting option appears more than once in the command line, the@@ -151,64 +152,64 @@ show debug output (levels 1-9, default: 1) A @FILE argument will be expanded to the contents of FILE, which should- contain one command line option/argument per line. (To prevent this,+ contain one command line option/argument per line. (To prevent this, insert a -- argument before.) KEYS- ? shows a help dialog listing all keys. (Some of these also appear in+ ? shows a help dialog listing all keys. (Some of these also appear in the quick help at the bottom of each screen.) Press ? again (or ESCAPE, or LEFT) to close it. The following keys work on most screens: The cursor keys navigate: right (or enter) goes deeper, left returns to- the previous screen, up/down/page up/page down/home/end move up and- down through lists. Vi-style (h/j/k/l) and Emacs-style+ the previous screen, up/down/page up/page down/home/end move up and+ down through lists. Vi-style (h/j/k/l) and Emacs-style (CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported. A tip:- movement speed is limited by your keyboard repeat rate, to move faster- you may want to adjust it. (If you're on a mac, the Karabiner app is+ movement speed is limited by your keyboard repeat rate, to move faster+ you may want to adjust it. (If you're on a mac, the Karabiner app is one way to do that.) - With shift pressed, the cursor keys adjust the report period, limiting- the transactions to be shown (by default, all are shown).- shift-down/up steps downward and upward through these standard report+ With shift pressed, the cursor keys adjust the report period, limiting+ the transactions to be shown (by default, all are shown).+ shift-down/up steps downward and upward through these standard report period durations: year, quarter, month, week, day. Then,- shift-left/right moves to the previous/next period. t sets the report- period to today. With the --watch option, when viewing a "current"- period (the current day, week, month, quarter, or year), the period- will move automatically to track the current date. To set a non-stan-+ shift-left/right moves to the previous/next period. t sets the report+ period to today. With the --watch option, when viewing a "current"+ period (the current day, week, month, quarter, or year), the period+ will move automatically to track the current date. To set a non-stan- dard period, you can use / and a date: query. - / lets you set a general filter query limiting the data shown, using- the same query terms as in hledger and hledger-web. While editing the- query, you can use CTRL-a/e/d/k, BS, cursor keys; press ENTER to set+ / lets you set a general filter query limiting the data shown, using+ the same query terms as in hledger and hledger-web. While editing the+ query, you can use CTRL-a/e/d/k, BS, cursor keys; press ENTER to set it, or ESCAPEto cancel. There are also keys for quickly adjusting some- common filters like account depth and transaction status (see below).+ common filters like account depth and transaction status (see below). BACKSPACE or DELETE removes all filters, showing all transactions. - ESCAPE removes all filters and jumps back to the top screen. Or, it+ ESCAPE removes all filters and jumps back to the top screen. Or, it cancels a minibuffer edit or help dialog in progress. CTRL-l redraws the screen and centers the selection if possible (selec-- tions near the top won't be centered, since we don't scroll above the+ tions near the top won't be centered, since we don't scroll above the top). - g reloads from the data file(s) and updates the current screen and any- previous screens. (With large files, this could cause a noticeable+ g reloads from the data file(s) and updates the current screen and any+ previous screens. (With large files, this could cause a noticeable pause.) - I toggles balance assertion checking. Disabling balance assertions+ I toggles balance assertion checking. Disabling balance assertions temporarily can be useful for troubleshooting. - a runs command-line hledger's add command, and reloads the updated+ a runs command-line hledger's add command, and reloads the updated file. This allows some basic data entry. - A is like a, but runs the hledger-iadd tool, which provides a- curses-style interface. This key will be available if hledger-iadd is+ A is like a, but runs the hledger-iadd tool, which provides a+ curses-style interface. This key will be available if hledger-iadd is installed in $PATH. - E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emac-+ E runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default (emac- sclient -a "" -nw) on the journal file. With some editors (emacs, vi),- the cursor will be positioned at the current transaction when invoked- from the register and transaction screens, and at the error location+ the cursor will be positioned at the current transaction when invoked+ from the register and transaction screens, and at the error location (if possible) when invoked from the error screen. q quits the application.@@ -217,44 +218,44 @@ SCREENS Accounts screen- This is normally the first screen displayed. It lists accounts and- their balances, like hledger's balance command. By default, it shows- all accounts and their latest ending balances (including the balances- of subaccounts). if you specify a query on the command line, it shows+ This is normally the first screen displayed. It lists accounts and+ their balances, like hledger's balance command. By default, it shows+ all accounts and their latest ending balances (including the balances+ of subaccounts). if you specify a query on the command line, it shows just the matched accounts and the balances from matched transactions. - Account names are normally indented to show the hierarchy (tree mode).+ Account names are normally indented to show the hierarchy (tree mode). To see less detail, set a depth limit by pressing a number key, 1 to 9. 0 shows even less detail, collapsing all accounts to a single total. -- and + (or =) decrease and increase the depth limit. To remove the- depth limit, set it higher than the maximum account depth, or press+ and + (or =) decrease and increase the depth limit. To remove the+ depth limit, set it higher than the maximum account depth, or press ESCAPE. - F toggles flat mode, in which accounts are shown as a flat list, with- their full names. In this mode, account balances exclude subaccounts,- except for accounts at the depth limit (as with hledger's balance com-+ F toggles flat mode, in which accounts are shown as a flat list, with+ their full names. In this mode, account balances exclude subaccounts,+ except for accounts at the depth limit (as with hledger's balance com- mand). H toggles between showing historical balances or period balances. His-- torical balances (the default) are ending balances at the end of the- report period, taking into account all transactions before that date- (filtered by the filter query if any), including transactions before- the start of the report period. In other words, historical balances- are what you would see on a bank statement for that account (unless- disturbed by a filter query). Period balances ignore transactions+ torical balances (the default) are ending balances at the end of the+ report period, taking into account all transactions before that date+ (filtered by the filter query if any), including transactions before+ the start of the report period. In other words, historical balances+ are what you would see on a bank statement for that account (unless+ disturbed by a filter query). Period balances ignore transactions before the report start date, so they show the change in balance during the report period. They are more useful eg when viewing a time log. U toggles filtering by unmarked status, including or excluding unmarked postings in the balances. Similarly, P toggles pending postings, and C- toggles cleared postings. (By default, balances include all postings;- if you activate one or two status filters, only those postings are+ toggles cleared postings. (By default, balances include all postings;+ if you activate one or two status filters, only those postings are included; and if you activate all three, the filter is removed.) R toggles real mode, in which virtual postings are ignored. - Z toggles nonzero mode, in which only accounts with nonzero balances- are shown (hledger-ui shows zero items by default, unlike command-line+ Z toggles nonzero mode, in which only accounts with nonzero balances+ are shown (hledger-ui shows zero items by default, unlike command-line hledger). Press right or enter to view an account's transactions register.@@ -263,65 +264,65 @@ This screen shows the transactions affecting a particular account, like a check register. Each line represents one transaction and shows: - o the other account(s) involved, in abbreviated form. (If there are- both real and virtual postings, it shows only the accounts affected+ o the other account(s) involved, in abbreviated form. (If there are+ both real and virtual postings, it shows only the accounts affected by real postings.) - o the overall change to the current account's balance; positive for an+ o the overall change to the current account's balance; positive for an inflow to this account, negative for an outflow. o the running historical total or period total for the current account,- after the transaction. This can be toggled with H. Similar to the- accounts screen, the historical total is affected by transactions- (filtered by the filter query) before the report start date, while+ after the transaction. This can be toggled with H. Similar to the+ accounts screen, the historical total is affected by transactions+ (filtered by the filter query) before the report start date, while the period total is not. If the historical total is not disturbed by- a filter query, it will be the running historical balance you would+ a filter query, it will be the running historical balance you would see on a bank register for the current account. - If the accounts screen was in tree mode, the register screen will+ If the accounts screen was in tree mode, the register screen will include transactions from both the current account and its subaccounts.- If the accounts screen was in flat mode, and a non-depth-clipped- account was selected, the register screen will exclude transactions+ If the accounts screen was in flat mode, and a non-depth-clipped+ account was selected, the register screen will exclude transactions from subaccounts. In other words, the register always shows the trans-- actions responsible for the period balance shown on the accounts+ actions responsible for the period balance shown on the accounts screen. As on the accounts screen, this can be toggled with F. - U toggles filtering by unmarked status, showing or hiding unmarked+ U toggles filtering by unmarked status, showing or hiding unmarked transactions. Similarly, P toggles pending transactions, and C toggles- cleared transactions. (By default, transactions with all statuses are- shown; if you activate one or two status filters, only those transac-- tions are shown; and if you activate all three, the filter is+ cleared transactions. (By default, transactions with all statuses are+ shown; if you activate one or two status filters, only those transac-+ tions are shown; and if you activate all three, the filter is removed.)q R toggles real mode, in which virtual postings are ignored. - Z toggles nonzero mode, in which only transactions posting a nonzero- change are shown (hledger-ui shows zero items by default, unlike com-+ Z toggles nonzero mode, in which only transactions posting a nonzero+ change are shown (hledger-ui shows zero items by default, unlike com- mand-line hledger). Press right (or enter) to view the selected transaction in detail. Transaction screen- This screen shows a single transaction, as a general journal entry,- similar to hledger's print command and journal format (hledger_jour-+ This screen shows a single transaction, as a general journal entry,+ similar to hledger's print command and journal format (hledger_jour- nal(5)). - The transaction's date(s) and any cleared flag, transaction code,- description, comments, along with all of its account postings are- shown. Simple transactions have two postings, but there can be more+ The transaction's date(s) and any cleared flag, transaction code,+ description, comments, along with all of its account postings are+ shown. Simple transactions have two postings, but there can be more (or in certain cases, fewer). - up and down will step through all transactions listed in the previous- account register screen. In the title bar, the numbers in parentheses- show your position within that account register. They will vary+ up and down will step through all transactions listed in the previous+ account register screen. In the title bar, the numbers in parentheses+ show your position within that account register. They will vary depending on which account register you came from (remember most trans- actions appear in multiple account registers). The #N number preceding them is the transaction's position within the complete unfiltered jour- nal, which is a more stable id (at least until the next reload). Error screen- This screen will appear if there is a problem, such as a parse error,- when you press g to reload. Once you have fixed the problem, press g+ This screen will appear if there is a problem, such as a parse error,+ when you press g to reload. Once you have fixed the problem, press g again to reload and resume normal operation. (Or, you can press escape to cancel the reload attempt.) @@ -329,17 +330,17 @@ COLUMNS The screen width to use. Default: the full terminal width. LEDGER_FILE The journal file path when not specified with -f. Default:- ~/.hledger.journal (on windows, perhaps C:/Users/USER/.hledger.jour-+ ~/.hledger.journal (on windows, perhaps C:/Users/USER/.hledger.jour- nal). FILES- Reads data from one or more files in hledger journal, timeclock, time-- dot, or CSV format specified with -f, or $LEDGER_FILE, or- $HOME/.hledger.journal (on windows, perhaps+ Reads data from one or more files in hledger journal, timeclock, time-+ dot, or CSV format specified with -f, or $LEDGER_FILE, or+ $HOME/.hledger.journal (on windows, perhaps C:/Users/USER/.hledger.journal). BUGS- The need to precede options with -- when invoked from hledger is awk-+ The need to precede options with -- when invoked from hledger is awk- ward. -f- doesn't work (hledger-ui can't read from stdin).@@ -347,13 +348,13 @@ -V affects only the accounts screen. When you press g, the current and all previous screens are regenerated,- which may cause a noticeable pause with large files. Also there is no+ which may cause a noticeable pause with large files. Also there is no visual indication that this is in progress. - --watch is not yet fully robust. It works well for normal usage, but- many file changes in a short time (eg saving the file thousands of- times with an editor macro) can cause problems at least on OSX. Symp-- toms include: unresponsive UI, periodic resetting of the cursor posi-+ --watch is not yet fully robust. It works well for normal usage, but+ many file changes in a short time (eg saving the file thousands of+ times with an editor macro) can cause problems at least on OSX. Symp-+ toms include: unresponsive UI, periodic resetting of the cursor posi- tion, momentary display of parse errors, high CPU usage eventually sub- siding, and possibly a small but persistent build-up of CPU usage until the program is restarted.@@ -361,7 +362,7 @@ REPORTING BUGS- Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel+ Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel or hledger mail list) @@ -375,7 +376,7 @@ SEE ALSO- hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),+ hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1), hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time- dot(5), ledger(1) @@ -383,4 +384,4 @@ -hledger-ui 1.5 December 2017 hledger-ui(1)+hledger-ui 1.9 March 2018 hledger-ui(1)