diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+# 1.3.23  [2026-09-28]
+
+  - dependencies: Allow hledger-lib 1.52, vty 6.6, megaparsec 9.9
+  - dependencies: Update to brick >= 3.0
+
 # 1.3.22  [2025-09-17]
 
   - feature: Add more abbreviations for weekdays ("m", "mo", ...)
diff --git a/hledger-iadd.cabal b/hledger-iadd.cabal
--- a/hledger-iadd.cabal
+++ b/hledger-iadd.cabal
@@ -1,5 +1,5 @@
 name:                hledger-iadd
-version:             1.3.22
+version:             1.3.23
 synopsis:            A terminal UI as drop-in replacement for hledger add
 description:         This is a terminal UI as drop-in replacement for hledger add.
                      .
@@ -62,9 +62,9 @@
                      , Data.Time.Ext
   default-language:    Haskell2010
   build-depends:       base >= 4.14 && < 5
-                     , hledger-lib >= 1.50 && < 1.51
-                     , brick >= 2.1 && < 2.10
-                     , vty >= 6.1 && < 6.5
+                     , hledger-lib >= 1.50 && < 1.53
+                     , brick >= 3.0 && <4
+                     , vty >= 6.1 && < 6.7
                      , text
                      , microlens
                      , microlens-th
@@ -73,7 +73,7 @@
                      , transformers >= 0.3
                      , time >= 1.5
                      , vector
-                     , megaparsec >= 7.0 && <9.8
+                     , megaparsec >= 7.0 && <9.9
                      , containers
                      , optparse-applicative
                      , directory
@@ -89,9 +89,9 @@
   default-language:    Haskell2010
   build-depends:       base >= 4.14 && < 5
                      , hledger-iadd
-                     , hledger-lib >= 1.50 && <1.51
-                     , brick >= 2.1 && < 2.10
-                     , vty >= 6.1 && < 6.5
+                     , hledger-lib >= 1.50 && <1.53
+                     , brick >= 3.0 && <4
+                     , vty >= 6.1 && < 6.7
                      , text
                      , microlens
                      , microlens-th
@@ -105,7 +105,7 @@
                      , xdg-basedir
                      , unordered-containers
                      , free >= 4.12.4
-                     , megaparsec >= 7.0 && <9.8
+                     , megaparsec >= 7.0 && <9.9
   ghc-options:         -threaded -Wall -fdefer-typed-holes -fno-warn-name-shadowing
 
 test-suite spec
@@ -119,7 +119,7 @@
   default-language:   Haskell2010
   build-depends:      base >= 4.14 && < 5
                     , hledger-iadd
-                    , hledger-lib >= 1.50 && <1.51
+                    , hledger-lib >= 1.50 && <1.53
                     , text
                     , transformers >= 0.3
                     , time >= 1.5
@@ -128,7 +128,7 @@
                     , QuickCheck
                     , quickcheck-instances
                     , free >= 4.12.4
-                    , megaparsec >= 7.0 && <9.8
+                    , megaparsec >= 7.0 && <9.9
                     , text-zipper >= 0.10
   build-tool-depends: hspec-discover:hspec-discover ==2.*
   ghc-options:        -threaded -Wall -fdefer-typed-holes -fno-warn-name-shadowing
diff --git a/src/Brick/Widgets/BetterDialog.hs b/src/Brick/Widgets/BetterDialog.hs
--- a/src/Brick/Widgets/BetterDialog.hs
+++ b/src/Brick/Widgets/BetterDialog.hs
@@ -21,7 +21,7 @@
       x = (c^.availWidthL `div` 2) - (rWidth `div` 2)
       y = (c^.availHeightL `div` 2) - (rHeight `div` 2)
 
-  render $ translateBy (Location (x,y)) $ raw (res^.imageL)
+  render $ translateLayer (Location (x,y)) $ raw (res^.imageL)
 
 dialog' :: Text -> Text -> Widget n
 dialog' title content = Widget Fixed Fixed $ do
diff --git a/src/Brick/Widgets/HelpMessage.hs b/src/Brick/Widgets/HelpMessage.hs
--- a/src/Brick/Widgets/HelpMessage.hs
+++ b/src/Brick/Widgets/HelpMessage.hs
@@ -45,7 +45,7 @@
       x = (c^.availWidthL `div` 2) - (rWidth `div` 2)
       y = (c^.availHeightL `div` 2) - (rHeight `div` 2)
 
-  render $ translateBy (Location (x,y)) $ raw (res^.imageL)
+  render $ translateLayer (Location (x,y)) $ raw (res^.imageL)
 
 renderHelpWidget' :: Name n => n -> KeyBindings -> Widget n
 renderHelpWidget' name (KeyBindings bindings) = Widget Fixed Fixed $ do
