diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+0.12.0 release 2024-06-03
+-------------------------
+
+* Fix rendering of .hp profiles (#191)
+* Add support for eras profiling
+
 0.11.1 release 2024-08-17
 -------------------------
 
diff --git a/eventlog2html.cabal b/eventlog2html.cabal
--- a/eventlog2html.cabal
+++ b/eventlog2html.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 Name:                eventlog2html
-Version:             0.11.1
+Version:             0.12.0
 Synopsis:            Visualise an eventlog
 Description:         eventlog2html is a library for visualising eventlogs.
                      At the moment, the intended use is to visualise eventlogs
@@ -32,7 +32,7 @@
   inline-docs/*.html
 extra-doc-files: README.md
                  CHANGELOG.md
-Tested-With:         GHC ==9.0.2, GHC ==9.2.7, GHC ==9.4.7, GHC ==9.6.2, GHC ==9.8.1, GHC==9.10.1
+Tested-With:         GHC ==9.6.7, GHC ==9.8.4, GHC==9.10.2, GHC==9.12.2
 
 Library
   Build-depends:
@@ -46,10 +46,10 @@
     containers           >= 0.5.0 && < 0.8,
     file-embed           >= 0.0.11 && < 0.1,
     filepath             >= 1.4.2 && < 1.6,
-    ghc-events           >= 0.19.0 && < 0.20,
+    ghc-events           >= 0.20.0 && < 0.21,
     ghc-heap             >= 9 && < 10,
-    hashable             >= 1.0 && < 1.5,
-    hashtables           >= 1.2.3 && < 1.4,
+    hashable             >= 1.0 && < 1.6,
+    hashtables           >= 1.2.3 && < 1.5,
     hvega                >= 0.11.0 && < 0.13,
     mtl                  >= 2.2.2 && < 2.4,
     optparse-applicative >= 0.14.3 && < 0.19,
diff --git a/src/Eventlog/Data.hs b/src/Eventlog/Data.hs
--- a/src/Eventlog/Data.hs
+++ b/src/Eventlog/Data.hs
@@ -40,11 +40,11 @@
         sortBy (flip (comparing (fst . snd))) $ Map.toList keeps
       -- Only supply the cost centre view in cost centre profiling mode.
       cc_descs = case hHeapProfileType h of
-                Just HeapProfBreakdownCostCentre -> Just (outputTree ccMap mdescs)
+                (FromEventlog (Just HeapProfBreakdownCostCentre)) -> Just (outputTree ccMap mdescs)
                 _ -> Nothing
 
       use_ipes = case hHeapProfileType h of
-                   Just HeapProfBreakdownInfoTable -> Just ipes
+                   (FromEventlog (Just HeapProfBreakdownInfoTable)) -> Just ipes
                    _ -> Nothing
 
       -- If we have IPE info, try to translate info table pointers to names
diff --git a/src/Eventlog/Events.hs b/src/Eventlog/Events.hs
--- a/src/Eventlog/Events.hs
+++ b/src/Eventlog/Events.hs
@@ -344,7 +344,7 @@
   let title = maybe "" T.unwords pargs
       date = formatDate clocktimeSec
       ppSamplingRate = T.pack . maybe "<Not available>" (show . fromNano) $ samplingRate
-  in \v -> Header title date heapProfileType ppSamplingRate "" "" v (T.unpack . head <$> pargs)
+  in \v -> Header title date (FromEventlog heapProfileType) ppSamplingRate "" "" v (T.unpack . head <$> pargs)
 
 
 elBucketMap :: EL -> BucketMap
diff --git a/src/Eventlog/HeapProf.hs b/src/Eventlog/HeapProf.hs
--- a/src/Eventlog/HeapProf.hs
+++ b/src/Eventlog/HeapProf.hs
@@ -27,7 +27,7 @@
       [job, date, smpU, valU] =
         zipWith header [sJOB, sDATE, sSAMPLE_UNIT, sVALUE_UNIT] hs
       fs = chunkSamples ss
-  in  (\v -> Header job date Nothing (pack "") smpU valU v Nothing
+  in  (\v -> Header job date FromHPFile (pack "") smpU valU v Nothing
       ,  fs
       )
 
diff --git a/src/Eventlog/HtmlTemplate.hs b/src/Eventlog/HtmlTemplate.hs
--- a/src/Eventlog/HtmlTemplate.hs
+++ b/src/Eventlog/HtmlTemplate.hs
@@ -19,7 +19,7 @@
 import Eventlog.Data
 import Eventlog.Javascript
 import Eventlog.Args
-import Eventlog.Types (Header(..), HeapProfBreakdown(..))
+import Eventlog.Types (Header(..), HeapProfBreakdown(..), ProfileType(..))
 import Eventlog.Rendering.Bootstrap
 import Eventlog.Rendering.Types
 import Eventlog.VegaTemplate
@@ -162,11 +162,15 @@
 perTabFooter header' = do
     H.div ! class_ "row" $ do
       H.div ! class_ "col" $ do
-          toHtml $ maybe "No heap profile" ppHeapProfileType (hHeapProfileType header')
+          toHtml $ render_type (hHeapProfileType header')
           ", created at "
           code $ toHtml $ hDate header'
           " by "
           code $ toHtml $ hJob header'
+  where
+    render_type FromHPFile              = "heap profile"
+    render_type (FromEventlog Nothing)  = "No heap profile"
+    render_type (FromEventlog (Just t)) = ppHeapProfileType t
 
 
 select_data :: IncludeTraceData -> ChartType -> [Text]
@@ -223,6 +227,7 @@
 ppHeapProfileType (HeapProfBreakdownBiography) = "Biographical profiling (implied by -hb)"
 ppHeapProfileType (HeapProfBreakdownClosureType) = "Basic heap profile (implied by -hT)"
 ppHeapProfileType (HeapProfBreakdownInfoTable) = "Info table profile (implied by -hi)"
+ppHeapProfileType (HeapProfBreakdownEra) = "Era profile (implied by -he)"
 
 
 allTabs :: EventlogType
@@ -248,7 +253,11 @@
             " seconds between heap samples"
 
 has_heap_profile :: Header -> Bool
-has_heap_profile h = isJust (hHeapProfileType h)
+has_heap_profile h =
+  case (hHeapProfileType h) of
+    FromHPFile -> True
+    FromEventlog t -> isJust t
+
 
 allHeapTabs :: Header -> Args -> HeapProfileData -> [TabGroup]
 allHeapTabs header' as x =
diff --git a/src/Eventlog/Types.hs b/src/Eventlog/Types.hs
--- a/src/Eventlog/Types.hs
+++ b/src/Eventlog/Types.hs
@@ -19,13 +19,15 @@
   Header
   { hJob         :: Text
   , hDate        :: Text
-  , hHeapProfileType :: Maybe HeapProfBreakdown
+  , hHeapProfileType :: ProfileType
   , hSamplingRate :: Text
   , hSampleUnit  :: Text
   , hValueUnit   :: Text
   , hCount       :: Int
   , hProgPath    :: Maybe FilePath
   } deriving Show
+
+data ProfileType = FromHPFile | FromEventlog (Maybe HeapProfBreakdown) deriving Show
 
 
 -- The bucket is a key to uniquely identify a band
