diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,19 +1,48 @@
-filepath-bytestring (1.4.100.3.2) unstable; urgency=medium
+filepath-bytestring (1.5.2.0.5) unstable; urgency=medium
 
-  * Relax bounds to allow base-4.19.
+  * Allow base bundled with GHC 9.14.1
 
- -- Joey Hess <id@joeyh.name>  Mon, 29 Jul 2024 19:40:51 -0400
+ -- Joey Hess <id@joeyh.name>  Mon, 20 Apr 2026 09:53:42 -0400
 
-filepath-bytestring (1.4.100.3.1) unstable; urgency=medium
+filepath-bytestring (1.5.2.0.4) unstable; urgency=medium
 
-  * Updated to filepath-1.4.100.3, which fixes a regression.
-  * Allow up to filepath-1.4.200.1.
+  * Allow filepath-bytestring 1.5.5.0 bundled by GHC 9.12.4
+  * Allow QuickCheck 2.16.*, 2.17.*, 2.18.*
 
- -- Joey Hess <id@joeyh.name>  Mon, 29 Jul 2024 19:27:57 -0400
+ -- Joey Hess <id@joeyh.name>  Mon, 16 Mar 2026 15:57:55 -0400
 
+filepath-bytestring (1.5.2.0.3) unstable; urgency=medium
+
+  * Relax bounds to allow QuickCheck-2.15
+  * Allow base and filepath bundled with GHC 9.12
+
+ -- Joey Hess <id@joeyh.name>  Mon, 04 Aug 2025 10:35:01 -0400
+
+filepath-bytestring (1.5.2.0.2) unstable; urgency=medium
+
+  * Relax bounds to allow base-4.20 (ghc 9.10.1).
+
+ -- Joey Hess <id@joeyh.name>  Mon, 20 Jan 2025 19:42:24 -0400
+
+filepath-bytestring (1.5.2.0.1) unstable; urgency=medium
+
+  * Relax bounds on filepath to all versions for which test suite passes.
+
+ -- Joey Hess <id@joeyh.name>  Mon, 20 Jan 2025 14:06:54 -0400
+
+filepath-bytestring (1.5.2.0.0) unstable; urgency=medium
+
+  * Update to correspond to filepath-1.5.2.0, which fixes a bug
+    introduced in filepath-1.4.100.2.
+  * normalise C:\\\\ to C:\
+
+ -- Joey Hess <id@joeyh.name>  Tue, 06 Feb 2024 10:33:31 -0400
+
 filepath-bytestring (1.4.2.1.13) unstable; urgency=medium
 
   * Relax bounds to allow base-4.18 and filepath-1.4.100.3 (ghc 9.6).
+    (Note that this version did not replicate a bug introduced in
+    filepath-1.4.100.2. So the test suite would sometimes fail.)
 
  -- Joey Hess <id@joeyh.name>  Tue, 20 Jun 2023 12:22:31 -0400
 
@@ -49,7 +78,7 @@
     They are approximately 2x and 3x as fast, respectively.
   * encodeFilePath and decodeFilePath used to truncate at the first
     NUL. The new implementations do not do this. Since unix filepaths
-    cannot contain NUL, this behavior change is can't cause any problems,
+    cannot contain NUL, this behavior change can't cause any problems,
     unless the functions are used for values that are not actually
     valid filepaths.
   * Support cabal bench to benchmark the library.
diff --git a/System/FilePath/Internal.hs b/System/FilePath/Internal.hs
--- a/System/FilePath/Internal.hs
+++ b/System/FilePath/Internal.hs
@@ -964,6 +964,7 @@
 -- > Posix:   normalise "./bob/fred/" == "bob/fred/"
 -- > Windows: normalise "c:\\file/bob\\" == "C:\\file\\bob\\"
 -- > Windows: normalise "c:\\" == "C:\\"
+-- > Windows: normalise "c:\\\\\\\\" == "C:\\"
 -- > Windows: normalise "C:.\\" == "C:"
 -- > Windows: normalise "\\\\server\\test" == "\\\\server\\test"
 -- > Windows: normalise "//server/test" == "\\\\server\\test"
@@ -1012,9 +1013,14 @@
 normaliseDrive :: RawFilePath -> RawFilePath
 normaliseDrive "" = ""
 normaliseDrive _ | isPosix = B.singleton pathSeparator
-normaliseDrive drive
-	| isJust (readDriveLetter x2) = upcasedriveletter x2
-	| otherwise = x2
+normaliseDrive drive =
+  case readDriveLetter x2 of
+    Nothing -> x2
+    Just (drv, _) ->
+      case B.unpack drv of
+        (x:_:[]) -> B.pack [upcasedriveletter x, colon]
+        (x:_) -> B.pack [upcasedriveletter x, colon, pathSeparator]
+        _ -> error "impossible"
   where
 	x2 = B.map repSlash drive
 
@@ -1022,7 +1028,8 @@
 
 	-- A Windows drive letter is an ascii character, so it's safe to
 	-- operate on the ByteString containing it using B8.
-	upcasedriveletter = B8.map toUpper
+	upcasedriveletter = fromIntegral . ord . toUpper . chr . fromIntegral
+	colon = fromIntegral (ord ':')
 
 -- Information for validity functions on Windows. See [1].
 isBadCharacter :: Word8 -> Bool
diff --git a/filepath-bytestring.cabal b/filepath-bytestring.cabal
--- a/filepath-bytestring.cabal
+++ b/filepath-bytestring.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name:           filepath-bytestring
-version:        1.4.100.3.2
+version:        1.5.2.0.5
 -- NOTE: Don't forget to update CHANGELOG and the filepath dependency below
 license:        BSD3
 license-file:   LICENSE
@@ -37,7 +37,7 @@
 
 source-repository head
     type:     git
-    location: git://git.joeyh.name/haskell-filepath-bytestring.git
+    location: https://git.joeyh.name/git/haskell-filepath-bytestring.git
 
 library
     default-language: Haskell2010
@@ -53,8 +53,9 @@
         System.FilePath.Windows.ByteString
 
     build-depends:
-        base >= 4 && < 4.20,
-        bytestring >= 0.11.2.0
+        base >= 4 && < 4.23,
+        bytestring >= 0.11.3.0,
+        filepath >= 1.4.100.4 && < 1.5.0.0 || >= 1.5.2.0 && <= 1.5.5.0
     if os(Windows)
         build-depends: utf8-string
     else
@@ -76,10 +77,10 @@
         filepath-bytestring,
         base,
         bytestring >= 0.11.2.0,
-        QuickCheck >= 2.7 && < 2.15,
-	-- Versions of filepath that are equvilant to this
-	-- library, for quickcheck equivilance tests.
-        filepath >= 1.4.100.3 && <= 1.4.200.1
+        QuickCheck >= 2.7 && < 2.19,
+	-- Versions of filepath that are equivalent to this
+	-- library, for quickcheck equivalence tests.
+        filepath >= 1.4.100.4 && < 1.5.0.0 || >= 1.5.2.0 && <= 1.5.5.0
 
 benchmark filepath-bench
     type: exitcode-stdio-1.0
@@ -92,4 +93,4 @@
         criterion,
         filepath-bytestring,
 	-- Version of filepath to benchmark against
-        filepath >= 1.4.100.3 && <= 1.4.200.1
+        filepath >= 1.4.2 && <= 1.4.2.1
diff --git a/tests/TestGen.hs b/tests/TestGen.hs
--- a/tests/TestGen.hs
+++ b/tests/TestGen.hs
@@ -395,6 +395,7 @@
     ,("P.normalise \"./bob/fred/\" == \"bob/fred/\"", property $ P.normalise "./bob/fred/" == "bob/fred/")
     ,("W.normalise \"c:\\\\file/bob\\\\\" == \"C:\\\\file\\\\bob\\\\\"", property $ W.normalise "c:\\file/bob\\" == "C:\\file\\bob\\")
     ,("W.normalise \"c:\\\\\" == \"C:\\\\\"", property $ W.normalise "c:\\" == "C:\\")
+    ,("W.normalise \"c:\\\\\\\\\\\\\\\\\" == \"C:\\\\\"", property $ W.normalise "c:\\\\\\\\" == "C:\\")
     ,("W.normalise \"C:.\\\\\" == \"C:\"", property $ W.normalise "C:.\\" == "C:")
     ,("W.normalise \"\\\\\\\\server\\\\test\" == \"\\\\\\\\server\\\\test\"", property $ W.normalise "\\\\server\\test" == "\\\\server\\test")
     ,("W.normalise \"//server/test\" == \"\\\\\\\\server\\\\test\"", property $ W.normalise "//server/test" == "\\\\server\\test")
