diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Changelog for hackage-cli
 
+## 0.1.0.3
+
+_Andreas Abel, 2025-06-04_
+
+- Fix for `Cabal-3.14.*`.
+
+Builds with `Cabal 3.4 - 3.14` and `GHC 8.2 - 9.12`.
+
 ## 0.1.0.2
 
 _Andreas Abel, 2024-07-02_
diff --git a/hackage-cli.cabal b/hackage-cli.cabal
--- a/hackage-cli.cabal
+++ b/hackage-cli.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                hackage-cli
-version:             0.1.0.2
+version:             0.1.0.3
 
 synopsis:            CLI tool for Hackage
 description:
@@ -18,9 +18,10 @@
 -- Supported GHC versions when building with cabal:
 tested-with:
   -- Keep in descending order.
-  GHC == 9.10.1
-  GHC == 9.8.2
-  GHC == 9.6.5
+  GHC == 9.12.2
+  GHC == 9.10.2
+  GHC == 9.8.4
+  GHC == 9.6.7
   GHC == 9.4.8
   GHC == 9.2.8
   GHC == 9.0.2
@@ -38,6 +39,7 @@
   fixtures/*.diff
   fixtures/*.cabal
   -- Supported GHC versions when building with stack:
+  stack-9.10.yaml
   stack-9.8.yaml
   stack-9.6.yaml
 
@@ -54,7 +56,7 @@
   build-depends:
     , base         >= 4.10.0.0 && < 5
     , bytestring   >= 0.10.4.0 && < 0.13
-    , Cabal        >= 3.4      && < 3.13
+    , Cabal        >= 3.4      && < 3.15
     , containers   >= 0.5.0.0  && < 0.8
     , mtl          >= 2.2.2    && < 2.3   || >= 2.3.1 && < 2.4
     , pretty      ^>= 1.1.2
@@ -124,7 +126,7 @@
     , microlens-mtl          >= 0.1.11.1 && < 0.3
     , microlens-th           >= 0.4.1.3  && < 0.5
     , netrc                 ^>= 0.2.0.0
-    , optparse-applicative   >= 0.14     && < 0.19
+    , optparse-applicative   >= 0.14     && < 1
     , process-extras        ^>= 0.7.4
     , semigroups             >= 0.18.3   && < 0.21
     , stringsearch          ^>= 0.3.6
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -52,6 +52,9 @@
 #if MIN_VERSION_Cabal(3,7,0)
 import qualified Distribution.Simple.PackageDescription as C
 #endif
+#if MIN_VERSION_Cabal(3,14,0)
+import Distribution.Utils.Path (makeSymbolicPath)
+#endif
 
 import           Lens.Micro
 import           Lens.Micro.Mtl
@@ -79,9 +82,9 @@
 
 -- import Cabal
 
-import Distribution.Server.Util.CabalRevisions
-import IndexShaSum
-import CabalEdit
+import           Distribution.Server.Util.CabalRevisions  ( diffCabalRevisions, Change(Change) )
+import           IndexShaSum                              ( IndexShaSumOptions(IndexShaSumOptions), run )
+import           CabalEdit                                ( PkgRev, cabalEditXRev )
 
 type PkgName = ByteString
 type PkgVer  = ByteString
@@ -623,9 +626,9 @@
     mainWithOptions opts
 
 mainWithOptions :: Options -> IO ()
-mainWithOptions Options {..} = do
+mainWithOptions Options{ optHost, optCommand } = do
    case optCommand of
-       PullCabal (PullCOptions {..}) -> do
+       PullCabal (PullCOptions{ optPlCPkgName, optPlCIncrRev, optPlCForce, optPlCPkgVers }) -> do
            let pkgn = optPlCPkgName
 
            cs <- runHConn (fetchAllCabalFiles pkgn (fromMaybe C.anyVersion optPlCPkgVers))
@@ -652,8 +655,16 @@
 
            return ()
 
-       SyncCabal (SyncCOptions {..}) -> do
-           (pkgn,pkgv,xrev) <- pkgDescToPkgIdXrev <$> C.readGenericPackageDescription C.deafening optSyCFile
+       SyncCabal (SyncCOptions{ optSyCFile, optSyCIncrRev, optSyCForce }) -> do
+           (pkgn,pkgv,xrev) <- pkgDescToPkgIdXrev <$>
+             C.readGenericPackageDescription
+               C.deafening
+#if MIN_VERSION_Cabal(3,14,0)
+               Nothing
+               (makeSymbolicPath optSyCFile)
+#else
+               optSyCFile
+#endif
            cab0 <- BS.readFile optSyCFile
 
            BS8.putStrLn $ mconcat [ "local :  "
@@ -702,12 +713,12 @@
 
                      BS.writeFile optSyCFile cab'
                      BS8.putStrLn $ mconcat [ "local :  "
-                                            , pkgn, "-", pkgv, "-r", BS8.pack (show $ xrev')
+                                            , pkgn, "-", pkgv, "-r", BS8.pack (show xrev')
                                             , "   ('", BS8.pack optSyCFile, "')"
                                             ]
 
 
-       ListCabal (ListCOptions {..}) -> do
+       ListCabal (ListCOptions{ optLCPkgName, optNoAnn, optRevUrls }) -> do
            let pkgn = optLCPkgName
 
            vs <- runHConn (fetchVersions pkgn)
@@ -731,12 +742,20 @@
                  BS8.putStrLn $ status <> pkgn <> "-" <> v
            return ()
 
-       PushCabal (PushCOptions {..}) -> do
+       PushCabal (PushCOptions{ optPsCIncrRev, optPsCPublish, optPsCFiles }) -> do
            (username,password) <- maybe (fail "missing Hackage credentials") return =<< getHackageCreds
            putStrLn $ "Using Hackage credentials for username " ++ show username
 
            forM_ optPsCFiles $ \fn -> do
-               (pkgn, pkgv, xrev0) <- pkgDescToPkgIdXrev <$> C.readGenericPackageDescription C.deafening fn
+               (pkgn, pkgv, xrev0) <- pkgDescToPkgIdXrev <$>
+                 C.readGenericPackageDescription
+                   C.deafening
+#if MIN_VERSION_Cabal(3,14,0)
+                   Nothing
+                   (makeSymbolicPath fn)
+#else
+                   fn
+#endif
                let xrev = applyWhen optPsCIncrRev (+1) xrev0
 
                putStrLn $ concat [ "Pushing ", show fn
@@ -754,7 +773,7 @@
                BS8.putStrLn (tidyHtml tmp)
                putStrLn (replicate 80 '=')
 
-       PushCandidate (PushPCOptions {..}) -> do
+       PushCandidate (PushPCOptions{ optPPCFiles }) -> do
            (username,password) <- maybe (fail "missing Hackage credentials") return =<< getHackageCreds
            putStrLn $ "Using Hackage credentials for username " ++ show username
 
@@ -770,7 +789,7 @@
                putStrLn (replicate 80 '=')
 
 
-       CheckRevision (CheckROptions {..}) -> do
+       CheckRevision (CheckROptions{ optCRNew, optCROrig }) -> do
            old <- BS.readFile optCROrig
            new <- BS.readFile optCRNew
 
diff --git a/stack-9.10.yaml b/stack-9.10.yaml
new file mode 100644
--- /dev/null
+++ b/stack-9.10.yaml
@@ -0,0 +1,7 @@
+resolver: nightly-2025-05-28
+compiler: ghc-9.10.2
+compiler-check: match-exact
+
+flags:
+  HsOpenSSL:
+    use-pkg-config: true
diff --git a/stack-9.6.yaml b/stack-9.6.yaml
--- a/stack-9.6.yaml
+++ b/stack-9.6.yaml
@@ -1,1 +1,5 @@
-resolver: lts-22.27
+resolver: lts-22.44
+
+flags:
+  HsOpenSSL:
+    use-pkg-config: true
diff --git a/stack-9.8.yaml b/stack-9.8.yaml
--- a/stack-9.8.yaml
+++ b/stack-9.8.yaml
@@ -1,1 +1,5 @@
-resolver: nightly-2024-07-01
+resolver: lts-23.24
+
+flags:
+  HsOpenSSL:
+    use-pkg-config: true
