diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,29 @@
+## [v1.5.1.2](https://github.com/diagrams/diagrams-core/tree/v1.5.1.2) (2026-04-18)
+
+- Allow `base-4.22`, `containers-0.8`, and test on GHC 9.14
+- Fix some pattern match warnings
+- Remove `semigroups` dependency
+
+## [v1.5.1.1-r4](https://github.com/diagrams/diagrams-core/tree/v1.5.1.1-r4) (2025-05-16)
+
+- Allow `monoid-extras-0.7`
+
+## [v1.5.1.1-r3](https://github.com/diagrams/diagrams-core/tree/v1.5.1.1-r3) (2025-01-30)
+
+- Allow `base-4.21` (GHC 9.12)
+
+## [v1.5.1.1-r2](https://github.com/diagrams/diagrams-core/tree/v1.5.1.1-r2) (2024-05-20)
+
+- Allow:
+  - `base-4.20` (GHC 9.10)
+  - `lens-5.3`
+  - `containers-0.7`
+- Test on GHC 9.10
+
+## [v1.5.1.1-r1](https://github.com/diagrams/diagrams-core/tree/v1.5.1.1-r1) (2024-04-20)
+
+* Allow `linear-1.23`
+
 ## [v1.5.1.1](https://github.com/diagrams/diagrams-core/tree/v1.5.1.1) (2023-11-15)
 
 * Allow `base-4.19` and test on GHC 9.8
diff --git a/diagrams-core.cabal b/diagrams-core.cabal
--- a/diagrams-core.cabal
+++ b/diagrams-core.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-core
-Version:             1.5.1.1
+Version:             1.5.1.2
 Synopsis:            Core libraries for diagrams EDSL
 Description:         The core modules underlying diagrams,
                      an embedded domain-specific language
@@ -15,10 +15,10 @@
 Cabal-version:       1.18
 Extra-source-files:  diagrams/*.svg
 extra-doc-files:     diagrams/*.svg, CHANGELOG.md, README.markdown
-Tested-with:         GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.8 || ==9.4.7 || ==9.6.3 || ==9.8.1
+Tested-with:         GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.8 || ==9.4.8 || ==9.6.6 || ==9.8.2 || ==9.10.1 || ==9.12.1 || ==9.14.1
 Source-repository head
   type:     git
-  location: git://github.com/diagrams/diagrams-core.git
+  location: https://github.com/diagrams/diagrams-core.git
 
 Library
   Exposed-modules:     Diagrams.Core,
@@ -36,14 +36,13 @@
                        Diagrams.Core.Types,
                        Diagrams.Core.V
 
-  Build-depends:       base >= 4.11 && < 4.20,
-                       containers >= 0.4.2 && < 0.7,
+  Build-depends:       base >= 4.11 && < 4.23,
+                       containers >= 0.4.2 && < 0.9,
                        unordered-containers >= 0.2 && < 0.3,
-                       semigroups >= 0.8.4 && < 0.21,
-                       monoid-extras >= 0.6 && < 0.7,
+                       monoid-extras >= 0.6 && < 0.8,
                        dual-tree >= 0.2 && < 0.3,
-                       lens >= 4.0 && < 5.3,
-                       linear >= 1.11.3 && < 1.23,
+                       lens >= 4.0 && < 5.4,
+                       linear >= 1.11.3 && < 1.24,
                        adjunctions >= 4.0 && < 5.0,
                        distributive >=0.2.2 && < 1.0,
                        profunctors >= 5.0 && < 6.0,
diff --git a/src/Diagrams/Core/Transform.hs b/src/Diagrams/Core/Transform.hs
--- a/src/Diagrams/Core/Transform.hs
+++ b/src/Diagrams/Core/Transform.hs
@@ -231,21 +231,23 @@
 
 -- Remove the nth element from a list
 remove :: Int -> [a] -> [a]
-remove n xs = ys ++ zs
-  where
-    (ys, _ : zs) = splitAt n xs
+remove n xs | n < 0 = xs
+remove n xs = ys ++ drop 1 zs
+ where
+  (ys, zs) = splitAt n xs
 
 -- Minor matrix of cofactor C(i,j)
 minor :: Int -> Int -> [[a]] -> [[a]]
 minor i j xs = remove j $ map (remove i) xs
 
--- The determinant of a square matrix represented as a list of lists
+-- The determinant of a square matrix represented as a nonempty list of lists
 -- representing column vectors, that is [column].
 det :: Num a => [[a]] -> a
+det [] = error "determinant of empty matrix!"
 det [a : _] = a
 det m@(c1 : _) = sum [(-1) ^ i * (c1 !! i) * det (minor i 0 m) | i <- [0 .. (n - 1)]]
-  where
-    n = length m
+ where
+  n = length m
 
 -- | Convert a vector v to a list of scalars.
 listRep :: Foldable v => v n -> [n]
