diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 For the latest version of this document, please see
 [https://github.com/DougBurke/hvega/blob/master/hvega/CHANGELOG.md](https://github.com/DougBurke/hvega/blob/master/hvega/CHANGELOG.md).
 
+## 0.12.0.4
+
+Bump to support aeson version 2.2 (tests may require building with
+the --allower-newer=aeson option).
+
 ## 0.12.0.3
 
 Bump to support aeson version 2.1.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -67,7 +67,8 @@
 at some point, and so there was
 [some speculation](https://en.wikipedia.org/wiki/Betelgeuse#2019%E2%80%932020_fading)
 that we could see a "naked-eye" supernova (even though the current models
-suggest that Betelgeuse has about 100,000 more years to go before this happens).
+suggest that Betelgeuse has about 100,000 more years to go before this happens,
+and the rapid brightening in mid 2023 has also got some people's hopes up).
 This interest lead to a lot of observations added to the
 [American Association of Variable Star Observers](https://www.aavso.org/)
 database, which we are going to look at below. This example is rather-more
diff --git a/default.nix b/default.nix
--- a/default.nix
+++ b/default.nix
@@ -1,13 +1,13 @@
 { sources ? import ../nix/sources.nix
 , pkgs ? import sources.nixpkgs {}
-, compiler ? "ghc8107"
+, compiler ? "ghc928"
 }:
 
 let
   # There must be a better way than this! I just want to avoid
   # excessive compilation when using a non-standard compiler.
   #
-  isDefaultCompiler = compiler == "ghc8107";
+  isDefaultCompiler = compiler == "ghc8107";  # drop HLS for now
 
   # since we are in a sub-directory
   # gitignore = pkgs.nix-gitignore.gitignoreSourcePure [ ./.gitignore ];
diff --git a/hvega.cabal b/hvega.cabal
--- a/hvega.cabal
+++ b/hvega.cabal
@@ -1,5 +1,5 @@
 name:                hvega
-version:             0.12.0.3
+version:             0.12.0.4
 synopsis:            Create Vega-Lite visualizations (version 4) in Haskell.
 description:         This is based on the elm-vegalite package
                      (<http://package.elm-lang.org/packages/gicentre/elm-vegalite/latest>)
@@ -10,7 +10,7 @@
 license-file:        LICENSE
 author:              Douglas Burke
 maintainer:          dburke.gw@gmail.com
-copyright:           2018-2022 Douglas Burke
+copyright:           2018-2023 Douglas Burke
 category:            Graphics
 build-type:          Simple
 extra-source-files:  README.md
@@ -159,7 +159,7 @@
                        Graphics.Vega.VegaLite.Time
                        Graphics.Vega.VegaLite.Transform
   build-depends:       base >= 4.9 && < 5
-                     , aeson >= 0.11 && < 2.2
+                     , aeson >= 0.11 && < 2.3
                      , text >= 1.2 && < 2.1
                      , unordered-containers == 0.2.*
 
@@ -215,16 +215,16 @@
                        Gallery.Scatter
                        Gallery.Table
 
-  build-depends:       aeson >= 1.4.2 && < 2.2
+  build-depends:       aeson >= 1.4.2
                      , aeson-pretty == 0.8.*
-                     , base >= 4 && < 5
+                     , base
                      , bytestring >= 0.10 && < 0.12
                      , containers >= 0.5.7 && < 0.7
                      , filepath
                      , tasty
                      , tasty-golden >= 2.2 && < 2.4
                      , text
-                     , unordered-containers >= 0.2 && < 0.3
+                     , unordered-containers
                      -- hvega is not needed with recent cabal's, but it's
                      -- not obvious if this is true with older versions
                      , hvega
diff --git a/shell.nix b/shell.nix
--- a/shell.nix
+++ b/shell.nix
@@ -1,3 +1,3 @@
-{ compiler ? "ghc8107"
+{ compiler ? "ghc928"
 }:
 (import ./default.nix { compiler = compiler; }).shell
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -5,4 +5,4 @@
 
 extra-deps: []
 
-resolver: lts-18.28
+resolver: lts-21.0
