diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,13 @@
 
 ## [Unreleased]
 
+## [0.4.0.0] - 2026-09-16
+
+### Removed
+
+- Support for GHC 9.14. A faulty CI setup incorrectly stated that we were
+  building and testing successfully on GHC 9.14.
+
 ## [0.3.0.0] - 2026-09-15
 
 ### Added
diff --git a/tricorder.cabal b/tricorder.cabal
--- a/tricorder.cabal
+++ b/tricorder.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:            tricorder
-version:         0.3.0.0
+version:         0.4.0.0
 synopsis:        Continuous Haskell build status, diagnostics, and tests via a shared daemon
 description:     tricorder rebuilds your Haskell project continuously and surfaces build status, diagnostics, test results, and documentation - for developers and LLM coding agents. Like ghcid and ghciwatch it reloads on every change, but builds run in a background daemon so multiple clients (an interactive TUI, a status CLI, an agent skill) share a single build state without triggering redundant rebuilds. It discovers components across multi-package cabal.project workspaces automatically and ships context-friendly output for agentic use via the CLI.
 category:        Development
@@ -21,7 +21,6 @@
   , GHC == 9.6.7
   , GHC == 9.8.4
   , GHC == 9.12.4
-  , GHC == 9.14.1
 extra-doc-files:
     README.md
     CHANGELOG.md
@@ -126,8 +125,8 @@
     , Cabal-syntax >=3.12 && <3.19
     , Glob ==0.10.*
     , aeson >=2.2 && <2.4
-    , atelier-core ==0.6.*
-    , atelier-prelude ==0.3.*
+    , atelier-core ==0.7.*
+    , atelier-prelude ==0.4.*
     , base >=4.18 && <4.23
     , brick >=2.10 && <2.14
     , bytestring >=0.11 && <0.13
@@ -155,7 +154,7 @@
     , text ==2.1.*
     , time >=1.12 && <1.17
     , time-units ==1.0.*
-    , tricorder-types ==0.3.*
+    , tricorder-types ==0.4.*
     , vty >=6.5 && <6.7
     , vty-crossplatform ==0.5.*
     , yaml ==0.11.*
@@ -193,7 +192,7 @@
       TypeFamilies
   ghc-options: -Weverything -Wno-unsafe -Wno-missing-safe-haskell-mode -Wno-monomorphism-restriction -Wno-missing-kind-signatures -Wno-missing-local-signatures -Wno-missing-import-lists -Wno-implicit-prelude -Wno-unticked-promoted-constructors -Wno-unused-packages -Wno-all-missed-specialisations -Wno-missed-specialisations -fplugin=Effectful.Plugin -threaded "-with-rtsopts=-N -T"
   build-depends:
-      atelier-prelude ==0.3.*
+      atelier-prelude ==0.4.*
     , base >=4.18 && <4.23
     , effectful-core ==2.7.*
     , effectful-plugin ==2.2.*
@@ -231,7 +230,7 @@
       TypeFamilies
   ghc-options: -Weverything -Wno-unsafe -Wno-missing-safe-haskell-mode -Wno-monomorphism-restriction -Wno-missing-kind-signatures -Wno-missing-local-signatures -Wno-missing-import-lists -Wno-implicit-prelude -Wno-unticked-promoted-constructors -Wno-unused-packages -Wno-all-missed-specialisations -Wno-missed-specialisations -fplugin=Effectful.Plugin -threaded "-with-rtsopts=-N -T"
   build-depends:
-      atelier-prelude ==0.3.*
+      atelier-prelude ==0.4.*
     , base >=4.18 && <4.23
     , effectful-core ==2.7.*
     , effectful-plugin ==2.2.*
@@ -299,8 +298,8 @@
   build-depends:
       Cabal-syntax >=3.12 && <3.19
     , aeson >=2.2 && <2.4
-    , atelier-core ==0.6.*
-    , atelier-prelude ==0.3.*
+    , atelier-core ==0.7.*
+    , atelier-prelude ==0.4.*
     , base >=4.18 && <4.23
     , bytestring >=0.11 && <0.13
     , containers >=0.6 && <0.9
@@ -322,7 +321,7 @@
     , time >=1.12 && <1.17
     , time-units ==1.0.*
     , tricorder-internal
-    , tricorder-types ==0.3.*
+    , tricorder-types ==0.4.*
     , typed-process ==0.2.*
     , unagi-chan ==0.4.*
     , unix ==2.8.*
