diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,11 +1,14 @@
 User-visible changes in hledger-web. See also hledger, hledger-lib.
 
 
-# 1.5.1 (2018/03/12)
+# 1.9 (2018/3/31)
 
-* support yesod 1.6 (#717)
+* support ghc 8.4, latest deps
 
-* restore bounds for main yesod packages to avoid breakage (#717)
+* 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)
diff --git a/Foundation.hs b/Foundation.hs
--- a/Foundation.hs
+++ b/Foundation.hs
@@ -20,7 +20,6 @@
 #endif
 import Network.HTTP.Conduit (Manager)
 -- import qualified Settings
-import Settings.Development (development)
 import Settings.StaticFiles
 import Settings (staticRoot, widgetFile, Extra (..))
 #ifndef DEVELOPMENT
@@ -93,7 +92,7 @@
 -- | A convenience alias.
 type AppRoute = Route App
 
-type Form x = Html -> MForm (HandlerT App IO) (FormResult x, Widget)
+type Form x = Html -> MForm (HandlerFor App) (FormResult x, Widget)
 
 -- Please see the documentation for the Yesod typeclass. There are a number
 -- of settings which can be configured by overriding methods here.
diff --git a/Handler/Common.hs b/Handler/Common.hs
--- a/Handler/Common.hs
+++ b/Handler/Common.hs
@@ -28,7 +28,7 @@
 -- Common page layout
 
 -- | Standard hledger-web page layout.
-hledgerLayout :: ViewData -> String -> HtmlUrl AppRoute -> HandlerT App IO Html
+hledgerLayout :: ViewData -> String -> HtmlUrl AppRoute -> HandlerFor App Html
 hledgerLayout vd title content = do
   defaultLayout $ do
       setTitle $ toHtml $ title ++ " - hledger-web"
@@ -73,7 +73,10 @@
 |]
  where
   journalcurrent = if here == JournalR then "inacct" else "" :: String
-  accounts = balanceReportAsHtml opts vd $ balanceReport (reportopts_ $ cliopts_ opts){empty_=True} am j
+  ropts = reportopts_ $ cliopts_ opts
+  -- flip the default for items with zero amounts, show them by default
+  ropts' = ropts{empty_=not $ empty_ ropts}
+  accounts = balanceReportAsHtml opts vd $ balanceReport ropts' am j
   showmd = if showsidebar then "col-md-4" else "col-any-0" :: String
   showsm = if showsidebar then "col-sm-4" else "" :: String
 
diff --git a/Import.hs b/Import.hs
--- a/Import.hs
+++ b/Import.hs
@@ -17,4 +17,6 @@
 import           Settings.Development as Import
 import           Settings.StaticFiles as Import
 
+#if !(MIN_VERSION_base(4,11,0))
 import           Data.Monoid          as Import ((<>))
+#endif
diff --git a/hledger-web.1 b/hledger-web.1
--- a/hledger-web.1
+++ b/hledger-web.1
@@ -1,5 +1,5 @@
 
-.TH "hledger\-web" "1" "March 2018" "hledger\-web 1.5.1" "hledger User Manuals"
+.TH "hledger\-web" "1" "March 2018" "hledger\-web 1.9" "hledger User Manuals"
 
 
 
@@ -227,7 +227,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
diff --git a/hledger-web.cabal b/hledger-web.cabal
--- a/hledger-web.cabal
+++ b/hledger-web.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 8981f38a42c85ba35d93927a4b2704ee3dfcf567fc0001372a20033f22daa14a
+-- hash: 9bcbee0a35b7edb9342cc7f08113385a491beb872a21b2f157a65106c4dea4dd
 
 name:           hledger-web
-version:        1.5.1
+version:        1.9
 synopsis:       Web interface for the hledger accounting tool
 description:    This is hledger's web interface.
                 It provides a more user-friendly and collaborative UI than the
@@ -36,6 +36,9 @@
     config/robots.txt
     config/routes
     config/settings.yml
+    hledger-web.1
+    hledger-web.info
+    hledger-web.txt
     messages/en.msg
     README
     static/css/bootstrap-datepicker.standalone.min.css
@@ -98,11 +101,6 @@
     templates/default-layout-wrapper.hamlet
     templates/default-layout.hamlet
 
-data-files:
-    hledger-web.1
-    hledger-web.info
-    hledger-web.txt
-
 source-repository head
   type: git
   location: https://github.com/simonmichael/hledger
@@ -124,10 +122,10 @@
 
 library
   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.1"
+  cpp-options: -DVERSION="1.9"
   build-depends:
       HUnit
-    , base >=4.8 && <5
+    , base >=4.8 && <4.12
     , base-compat >=0.8.1
     , blaze-html
     , blaze-markup
@@ -139,8 +137,8 @@
     , directory
     , filepath
     , hjsmin
-    , hledger >=1.5 && <1.6
-    , hledger-lib >=1.5 && <1.6
+    , hledger >=1.9 && <2.0
+    , hledger-lib >=1.9 && <2.0
     , http-client
     , http-conduit
     , json
@@ -192,10 +190,10 @@
   hs-source-dirs:
       app
   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.1"
+  cpp-options: -DVERSION="1.9"
   build-depends:
       HUnit
-    , base >=4.8 && <5
+    , base >=4.8 && <4.12
     , base-compat >=0.8.1
     , blaze-html
     , blaze-markup
@@ -207,8 +205,8 @@
     , directory
     , filepath
     , hjsmin
-    , hledger >=1.5 && <1.6
-    , hledger-lib >=1.5 && <1.6
+    , hledger >=1.9 && <2.0
+    , hledger-lib >=1.9 && <2.0
     , hledger-web
     , http-client
     , http-conduit
@@ -249,10 +247,10 @@
   hs-source-dirs:
       tests
   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.1"
+  cpp-options: -DVERSION="1.9"
   build-depends:
       HUnit
-    , base >=4.8 && <5
+    , base >=4.8 && <4.12
     , base-compat >=0.8.1
     , blaze-html
     , blaze-markup
@@ -264,8 +262,8 @@
     , directory
     , filepath
     , hjsmin
-    , hledger >=1.5 && <1.6
-    , hledger-lib >=1.5 && <1.6
+    , hledger >=1.9 && <2.0
+    , hledger-lib >=1.9 && <2.0
     , hledger-web
     , hspec
     , http-client
diff --git a/hledger-web.info b/hledger-web.info
--- a/hledger-web.info
+++ b/hledger-web.info
@@ -3,8 +3,8 @@
 
 File: hledger-web.info,  Node: Top,  Next: OPTIONS,  Up: (dir)
 
-hledger-web(1) hledger-web 1.5.1
-********************************
+hledger-web(1) hledger-web 1.9
+******************************
 
 hledger-web is hledger's web interface.  It starts a simple web
 application for browsing and adding transactions, and optionally opens
@@ -167,7 +167,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
@@ -208,7 +209,7 @@
 
 Tag Table:
 Node: Top72
-Node: OPTIONS3156
-Ref: #options3241
+Node: OPTIONS3152
+Ref: #options3237
 
 End Tag Table
diff --git a/hledger-web.txt b/hledger-web.txt
--- a/hledger-web.txt
+++ b/hledger-web.txt
@@ -163,20 +163,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
@@ -196,22 +197,22 @@
               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.)
 
 ENVIRONMENT
        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-web can't read from stdin).
@@ -225,7 +226,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)
 
 
@@ -239,7 +240,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)
 
@@ -247,4 +248,4 @@
 
 
 
-hledger-web 1.5.1                 March 2018                    hledger-web(1)
+hledger-web 1.9                   March 2018                    hledger-web(1)
