diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,10 @@
 Changelog for ghcid
 
+0.6.10, released 2018-02-06
+    #96, make it work even if -fdiagnostics-color is active
+    #130, pass -fno-it to reduce memory leaks
+    #132, work even if -fhide-source-paths is set
+    Add isLoading function to test the constructor
 0.6.9, released 2018-01-26
     #121, add a --poll flag to use polling instead of notifiers
     Require time-1.5 or above
diff --git a/ghcid.cabal b/ghcid.cabal
--- a/ghcid.cabal
+++ b/ghcid.cabal
@@ -1,7 +1,7 @@
 cabal-version:      >= 1.18
 build-type:         Simple
 name:               ghcid
-version:            0.6.9
+version:            0.6.10
 license:            BSD3
 license-file:       LICENSE
 category:           Development
@@ -29,7 +29,7 @@
         base >= 4,
         filepath,
         time >= 1.5,
-        directory,
+        directory >= 1.2,
         extra >= 1.2,
         process >= 1.1,
         cmdargs >= 0.10
@@ -51,7 +51,7 @@
         base == 4.*,
         filepath,
         time >= 1.5,
-        directory,
+        directory >= 1.2,
         containers,
         fsnotify,
         extra >= 1.2,
@@ -83,7 +83,7 @@
         base >= 4,
         filepath,
         time >= 1.5,
-        directory,
+        directory >= 1.2,
         process,
         containers,
         fsnotify,
diff --git a/src/Language/Haskell/Ghcid.hs b/src/Language/Haskell/Ghcid.hs
--- a/src/Language/Haskell/Ghcid.hs
+++ b/src/Language/Haskell/Ghcid.hs
@@ -160,12 +160,20 @@
                 writeInp "import qualified System.IO as INTERNAL_GHCID"
                 writeInp $ ":set prompt " ++ ghcid_prefix
                 writeInp ":set -v1 -fno-break-on-exception -fno-break-on-error" -- see #43 and #110
+                writeInp ":set -fdiagnostics-color=never" -- see #96
+                writeInp ":set -fno-hide-source-paths" -- see #132
+                    -- only works with GHC 8.2 and above, but failing isn't harmful
+                -- writeInp ":set -fno-it" -- see #130
+                    -- only works with GHC 8.6 and above, but failing isn't harmful
                 writeIORef sync =<< syncFresh
             echo0 strm s
             return Nothing
-    r <- parseLoad . reverse <$> ((++) <$> readIORef stderr <*> readIORef stdout)
+    r1 <- parseLoad . reverse <$> ((++) <$> readIORef stderr <*> readIORef stdout)
+    -- see #132, if hide-source-paths was turned on the modules didn't get printed out properly
+    -- so try a showModules to capture the information again
+    r2 <- if any isLoading r1 then return [] else map (uncurry Loading) <$> showModules ghci
     execStream ghci "" echo0
-    return (ghci, r)
+    return (ghci, r1 ++ r2)
 
 
 -- | Execute a command, calling a callback on each response.
diff --git a/src/Language/Haskell/Ghcid/Types.hs b/src/Language/Haskell/Ghcid/Types.hs
--- a/src/Language/Haskell/Ghcid/Types.hs
+++ b/src/Language/Haskell/Ghcid/Types.hs
@@ -4,7 +4,7 @@
 module Language.Haskell.Ghcid.Types(
     GhciError(..),
     Stream(..),
-    Load(..), Severity(..), isMessage
+    Load(..), Severity(..), isMessage, isLoading
     ) where
 
 import Data.Data
@@ -43,3 +43,8 @@
 isMessage :: Load -> Bool
 isMessage Message{} = True
 isMessage _ = False
+
+-- | Is a Load a module and filename?
+isLoading :: Load -> Bool
+isLoading Loading{} = True
+isLoading _ = False
diff --git a/src/Wait.hs b/src/Wait.hs
--- a/src/Wait.hs
+++ b/src/Wait.hs
@@ -47,7 +47,7 @@
 waitFiles :: Waiter -> IO ([FilePath] -> IO [String])
 waitFiles waiter = do
     base <- getCurrentTime
-    return $ \files -> handle (\(e :: IOError) -> do sleep 0.1; return [show e]) $ do
+    return $ \files -> handle (\(e :: IOError) -> do sleep 1.0; return ["Error when waiting, if this happens repeatedly, raise a ghcid bug.",show e]) $ do
         whenLoud $ outStrLn $ "%WAITING: " ++ unwords files
         files <- fmap concat $ forM files $ \file ->
             ifM (doesDirectoryExist file) (listFilesInside (return . not . isPrefixOf "." . takeFileName) file) (return [file])
@@ -92,4 +92,4 @@
 
 
 canonicalizePathSafe :: FilePath -> IO FilePath
-canonicalizePathSafe x = canonicalizePath x `catch_` const (return x)
+canonicalizePathSafe x = canonicalizePath x `catch` \(_ :: IOError) -> return x
