diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,22 @@
 
 [KaC]: <https://keepachangelog.com/en/1.0.0/>
 
+## 0.3.0.0 (2026-05-24)
+
+### Breaking
+
+* Remove support for GHC 8.6, constraining lower bounds
+* Change minimal Cabal from 1.24 to 3.0
+
+### Non-Breaking
+
+* Bump `aeson` dependency version upper bound
+* Bump `base` dependency version upper bound
+* Bump `filepath` dependency version upper bound
+* Bump `optparse-applicative` dependency version upper bound
+* Bump `tasty` dependency version upper bound
+* Bump `text` dependency version upper bound
+
 ## 0.2.0.0 (2023-05-28)
 
 ### Breaking
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 The MIT License
 
-Copyright (c) 2021-2023 Travis Cardwell
+Copyright (c) 2021-2026 Travis Cardwell
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/app/LibOA.hs b/app/LibOA.hs
--- a/app/LibOA.hs
+++ b/app/LibOA.hs
@@ -2,7 +2,7 @@
 -- |
 -- Module      : LibOA
 -- Description : supplementary functions for optparse-applicative
--- Copyright   : Copyright (c) 2019-2023 Travis Cardwell
+-- Copyright   : Copyright (c) 2019-2026 Travis Cardwell
 -- License     : MIT
 --
 -- This is a collection of functions that I often use with
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -2,7 +2,7 @@
 -- |
 -- Module      : Main
 -- Description : bm: open bookmarks and queries from the command line
--- Copyright   : Copyright (c) 2021-2023 Travis Cardwell
+-- Copyright   : Copyright (c) 2021-2026 Travis Cardwell
 -- License     : MIT
 --
 -- See the README for details.
diff --git a/bm.cabal b/bm.cabal
--- a/bm.cabal
+++ b/bm.cabal
@@ -1,43 +1,44 @@
-name:           bm
-version:        0.2.0.0
-category:       Utils
-synopsis:       open bookmarks and queries from the command line
+cabal-version:      3.0
+name:               bm
+version:            0.3.0.0
+synopsis:           open bookmarks and queries from the command line
 description:
   This package provides a command-line utility that opens bookmarks and
   queries.  Please see the README on GitHub at
   <https://github.com/ExtremaIS/bm-haskell#readme>.
+homepage:           https://github.com/ExtremaIS/bm-haskell#readme
+bug-reports:        https://github.com/ExtremaIS/bm-haskell/issues
+license:            MIT
+license-file:       LICENSE
+author:             Travis Cardwell <travis.cardwell@extrema.is>
+maintainer:         Travis Cardwell <travis.cardwell@extrema.is>
+copyright:          Copyright (c) 2021-2026 Travis Cardwell
+category:           Utils
+build-type:         Simple
 
-homepage:       https://github.com/ExtremaIS/bm-haskell#readme
-bug-reports:    https://github.com/ExtremaIS/bm-haskell/issues
-author:         Travis Cardwell <travis.cardwell@extrema.is>
-maintainer:     Travis Cardwell <travis.cardwell@extrema.is>
-copyright:      Copyright (c) 2021-2023 Travis Cardwell
-license:        MIT
-license-file:   LICENSE
+extra-doc-files:
+  CHANGELOG.md
+  README.md
 
-cabal-version:  1.24
-build-type:     Simple
 tested-with:
-  GHC ==8.6.5
-   || ==8.8.4
+  GHC ==8.8.4
    || ==8.10.7
    || ==9.0.2
    || ==9.2.8
-   || ==9.4.5
-   || ==9.6.2
-
-extra-source-files:
-  CHANGELOG.md
-  README.md
+   || ==9.4.8
+   || ==9.6.7
+   || ==9.8.4
+   || ==9.10.3
+   || ==9.12.4
+   || ==9.14.1
 
 source-repository head
   type: git
   location: https://github.com/ExtremaIS/bm-haskell.git
 
--- This flag is referenced in the Stack build-constraints.yaml configuration.
 flag optparse-applicative_ge_0_18
   description: Use optparse-applicative 0.18 or newer
-  default: False
+  default: True
   manual: False
 
 library
@@ -46,15 +47,17 @@
       BM
   other-modules:
       Paths_bm
+  autogen-modules:
+      Paths_bm
   build-depends:
-      aeson >=1.4.6 && < 2.2
-    , base >=4.12 && <4.19
-    , dlist >=0.8.0.4 && <1.1
-    , network-uri >=2.6.2 && <2.7
+      aeson >=1.4.7.1 && < 2.4
+    , base >=4.13.0.0 && <4.23
+    , dlist >=0.8.0.8 && <1.1
+    , network-uri >=2.6.3.0 && <2.7
     , scientific >=0.3.6.2 && <0.4
-    , text >=1.2.3.1 && <2.1
+    , text >=1.2.4.0 && <2.2
     , transformers >=0.5.6.2 && <0.7
-    , vector >=0.12.0.1 && <0.14
+    , vector >=0.12.1.2 && <0.14
   default-language: Haskell2010
   default-extensions:
       OverloadedStrings
@@ -68,18 +71,18 @@
   build-depends:
       base
     , bm
-    , directory >=1.3.3 && <1.4
-    , filepath >=1.4.2.1 && <1.5
-    , typed-process >=0.2.6 && <0.3
-    , yaml >=0.11.2 && <0.12
+    , directory >=1.3.6.0 && <1.4
+    , filepath >=1.4.2.1 && <1.6
+    , typed-process >=0.2.6.0 && <0.3
+    , yaml >=0.11.5.0 && <0.12
   if flag(optparse-applicative_ge_0_18)
     build-depends:
-        optparse-applicative >=0.18 && <0.19
+        optparse-applicative >=0.18 && <0.20
       , prettyprinter >=1.7.1 && <1.8
   else
     build-depends:
-        ansi-wl-pprint >=0.6.8 && <1.1
-      , optparse-applicative >=0.14 && <0.18
+        ansi-wl-pprint >=0.6.9 && <1.1
+      , optparse-applicative >=0.15.1.0 && <0.18
   default-language: Haskell2010
   ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
 
@@ -92,8 +95,8 @@
   build-depends:
       base
     , bm
-    , tasty >=1.2 && <1.5
-    , tasty-hunit >=0.9 && <0.11
+    , tasty >=1.2.3 && <1.6
+    , tasty-hunit >=0.10.0.3 && <0.11
     , vector
   default-language: Haskell2010
   ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
diff --git a/src/BM.hs b/src/BM.hs
--- a/src/BM.hs
+++ b/src/BM.hs
@@ -2,7 +2,7 @@
 -- |
 -- Module      : BM
 -- Description : API
--- Copyright   : Copyright (c) 2021-2023 Travis Cardwell
+-- Copyright   : Copyright (c) 2021-2026 Travis Cardwell
 -- License     : MIT
 ------------------------------------------------------------------------------
 
@@ -148,7 +148,7 @@
 -- YAML attributes:
 --
 -- * @command@: top-level command (string, default depends on the OS)
--- * @args@: bookmarks (array of 'Bookmark')
+-- * @args@: bookmarks (array of t'Bookmark')
 --
 -- Default commands:
 --
@@ -179,8 +179,8 @@
 -- * @keyword@: bookmark keyword (string)
 -- * @command@: command for this bookmark and children (string, optional)
 -- * @url@: bookmark URL (string, optional)
--- * @query@: bookmark query definition ('Query', optional)
--- * @args@: child bookmarks (array of 'Bookmark', optional)
+-- * @query@: bookmark query definition (t'Query', optional)
+-- * @args@: child bookmarks (array of t'Bookmark', optional)
 --
 -- A command be set to override the top-level command, but this is generally
 -- not done.  If a bookmark is selected and there is no URL, the first child
@@ -219,7 +219,7 @@
 --
 -- * @action@: URL (string)
 -- * @parameter@: query parameter name (string, default: @q@)
--- * @hidden@: array of constant parameters ('Parameter')
+-- * @hidden@: array of constant parameters (t'Parameter')
 --
 -- @since 0.1.0.0
 data Query
